All functions:
  Elements:
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: push
      Src: /src/opendal/integrations/object_store/tests/behavior/delete.rs:26,1
    - Dst: utils::build_trail
      Src: /src/opendal/integrations/object_store/tests/behavior/delete.rs:26,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - store
    - tests
    argTypes:
    - '&OpendalStore'
    - '&mut Vec<Trial>'
    constantsTouched: []
    func_position:
      end: 27
      start: 25
    functionDepth: 39
    functionLinenumber: 25
    functionLinenumberEnd: 27
    functionName: tests
    functionSourceFile: /src/opendal/integrations/object_store/tests/behavior/delete.rs
    functionUses: 0
    functionsReached:
    - utils::build_trail
    - push
    linkageType: ''
    returnType: void
    signature: 'pub fn tests(store: &OpendalStore, tests: &mut Vec<Trial>)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: new_file
      Src: /src/opendal/core/tests/behavior/async_delete.rs:56,1
    - Dst: clone
      Src: /src/opendal/core/tests/behavior/async_delete.rs:56,1
    - Dst: write
      Src: /src/opendal/core/tests/behavior/async_delete.rs:58,1
    - Dst: expect
      Src: /src/opendal/core/tests/behavior/async_delete.rs:58,1
    - Dst: delete
      Src: /src/opendal/core/tests/behavior/async_delete.rs:60,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_delete.rs:65,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 20
    argCount: 1
    argNames:
    - op
    argTypes:
    - Operator
    constantsTouched: []
    func_position:
      end: 66
      start: 55
    functionDepth: 31
    functionLinenumber: 55
    functionLinenumberEnd: 66
    functionName: test_delete_file
    functionSourceFile: /src/opendal/core/tests/behavior/async_delete.rs
    functionUses: 0
    functionsReached:
    - expect
    - Ok
    - delete
    - clone
    - new_file
    - write
    linkageType: ''
    returnType: Result
    signature: 'pub async fn test_delete_file(op: Operator) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: info
      Src: /src/opendal/core/tests/behavior/async_delete.rs:70,1
    - Dst: ServiceInfo::capability
      Src: /src/opendal/core/tests/behavior/async_delete.rs:70,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_delete.rs:71,1
    - Dst: new_dir_path
      Src: /src/opendal/core/tests/behavior/async_delete.rs:74,1
    - Dst: create_dir
      Src: /src/opendal/core/tests/behavior/async_delete.rs:76,1
    - Dst: expect
      Src: /src/opendal/core/tests/behavior/async_delete.rs:76,1
    - Dst: delete
      Src: /src/opendal/core/tests/behavior/async_delete.rs:78,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_delete.rs:80,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 29
    argCount: 1
    argNames:
    - op
    argTypes:
    - Operator
    constantsTouched: []
    func_position:
      end: 81
      start: 69
    functionDepth: 34
    functionLinenumber: 69
    functionLinenumberEnd: 81
    functionName: test_delete_empty_dir
    functionSourceFile: /src/opendal/core/tests/behavior/async_delete.rs
    functionUses: 0
    functionsReached:
    - new_dir_path
    - info
    - expect
    - Ok
    - delete
    - ServiceInfo::capability
    - create_dir
    linkageType: ''
    returnType: Result
    signature: 'pub async fn test_delete_empty_dir(op: Operator) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: new_file_with_path
      Src: /src/opendal/core/tests/behavior/async_delete.rs:86,1
    - Dst: clone
      Src: /src/opendal/core/tests/behavior/async_delete.rs:86,1
    - Dst: write
      Src: /src/opendal/core/tests/behavior/async_delete.rs:88,1
    - Dst: expect
      Src: /src/opendal/core/tests/behavior/async_delete.rs:88,1
    - Dst: delete
      Src: /src/opendal/core/tests/behavior/async_delete.rs:90,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_delete.rs:95,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 21
    argCount: 1
    argNames:
    - op
    argTypes:
    - Operator
    constantsTouched: []
    func_position:
      end: 96
      start: 84
    functionDepth: 30
    functionLinenumber: 84
    functionLinenumberEnd: 96
    functionName: test_delete_with_special_chars
    functionSourceFile: /src/opendal/core/tests/behavior/async_delete.rs
    functionUses: 0
    functionsReached:
    - new_file_with_path
    - expect
    - delete
    - Ok
    - clone
    - write
    linkageType: ''
    returnType: Result
    signature: 'pub async fn test_delete_with_special_chars(op: Operator) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: uuid::Uuid::new_v4
      Src: /src/opendal/core/tests/behavior/async_delete.rs:100,1
    - Dst: to_string
      Src: /src/opendal/core/tests/behavior/async_delete.rs:100,1
    - Dst: delete
      Src: /src/opendal/core/tests/behavior/async_delete.rs:102,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_delete.rs:104,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 1
    argNames:
    - op
    argTypes:
    - Operator
    constantsTouched: []
    func_position:
      end: 105
      start: 99
    functionDepth: 32
    functionLinenumber: 99
    functionLinenumberEnd: 105
    functionName: test_delete_not_existing
    functionSourceFile: /src/opendal/core/tests/behavior/async_delete.rs
    functionUses: 0
    functionsReached:
    - to_string
    - uuid::Uuid::new_v4
    - Ok
    - delete
    linkageType: ''
    returnType: Result
    signature: 'pub async fn test_delete_not_existing(op: Operator) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: new_file
      Src: /src/opendal/core/tests/behavior/async_delete.rs:109,1
    - Dst: clone
      Src: /src/opendal/core/tests/behavior/async_delete.rs:109,1
    - Dst: write
      Src: /src/opendal/core/tests/behavior/async_delete.rs:111,1
    - Dst: Result::clone
      Src: /src/opendal/core/tests/behavior/async_delete.rs:111,1
    - Dst: expect
      Src: /src/opendal/core/tests/behavior/async_delete.rs:111,1
    - Dst: delete_iter
      Src: /src/opendal/core/tests/behavior/async_delete.rs:115,1
    - Dst: write
      Src: /src/opendal/core/tests/behavior/async_delete.rs:120,1
    - Dst: expect
      Src: /src/opendal/core/tests/behavior/async_delete.rs:120,1
    - Dst: delete_iter
      Src: /src/opendal/core/tests/behavior/async_delete.rs:124,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_delete.rs:129,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 34
    argCount: 1
    argNames:
    - op
    argTypes:
    - Operator
    constantsTouched: []
    func_position:
      end: 130
      start: 108
    functionDepth: 31
    functionLinenumber: 108
    functionLinenumberEnd: 130
    functionName: test_remove_one_file
    functionSourceFile: /src/opendal/core/tests/behavior/async_delete.rs
    functionUses: 0
    functionsReached:
    - Result::clone
    - expect
    - Ok
    - clone
    - delete_iter
    - new_file
    - write
    linkageType: ''
    returnType: Result
    signature: 'pub async fn test_remove_one_file(op: Operator) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: info
      Src: /src/opendal/core/tests/behavior/async_delete.rs:134,1
    - Dst: ServiceInfo::capability
      Src: /src/opendal/core/tests/behavior/async_delete.rs:134,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_delete.rs:135,1
    - Dst: info
      Src: /src/opendal/core/tests/behavior/async_delete.rs:140,1
    - Dst: ServiceInfo::scheme
      Src: /src/opendal/core/tests/behavior/async_delete.rs:140,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_delete.rs:141,1
    - Dst: uuid::Uuid::new_v4
      Src: /src/opendal/core/tests/behavior/async_delete.rs:144,1
    - Dst: to_string
      Src: /src/opendal/core/tests/behavior/async_delete.rs:144,1
    - Dst: create_dir
      Src: /src/opendal/core/tests/behavior/async_delete.rs:145,1
    - Dst: expect
      Src: /src/opendal/core/tests/behavior/async_delete.rs:145,1
    - Dst: collect
      Src: /src/opendal/core/tests/behavior/async_delete.rs:149,1
    - Dst: iter
      Src: /src/opendal/core/tests/behavior/async_delete.rs:150,1
    - Dst: write
      Src: /src/opendal/core/tests/behavior/async_delete.rs:151,1
    - Dst: deleter
      Src: /src/opendal/core/tests/behavior/async_delete.rs:154,1
    - Dst: Result::delete_iter
      Src: /src/opendal/core/tests/behavior/async_delete.rs:155,1
    - Dst: iter
      Src: /src/opendal/core/tests/behavior/async_delete.rs:156,1
    - Dst: map
      Src: /src/opendal/core/tests/behavior/async_delete.rs:156,1
    - Dst: Result::close
      Src: /src/opendal/core/tests/behavior/async_delete.rs:158,1
    - Dst: iter
      Src: /src/opendal/core/tests/behavior/async_delete.rs:161,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_delete.rs:168,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 72
    argCount: 1
    argNames:
    - op
    argTypes:
    - Operator
    constantsTouched: []
    func_position:
      end: 169
      start: 133
    functionDepth: 35
    functionLinenumber: 133
    functionLinenumberEnd: 169
    functionName: test_delete_stream
    functionSourceFile: /src/opendal/core/tests/behavior/async_delete.rs
    functionUses: 0
    functionsReached:
    - to_string
    - info
    - collect
    - iter
    - expect
    - Ok
    - ServiceInfo::capability
    - uuid::Uuid::new_v4
    - Result::delete_iter
    - Result::close
    - deleter
    - map
    - create_dir
    - ServiceInfo::scheme
    - write
    linkageType: ''
    returnType: Result
    signature: 'pub async fn test_delete_stream(op: Operator) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: gen_bytes
      Src: /src/opendal/core/tests/behavior/async_delete.rs:178,1
    - Dst: info
      Src: /src/opendal/core/tests/behavior/async_delete.rs:178,1
    - Dst: ServiceInfo::capability
      Src: /src/opendal/core/tests/behavior/async_delete.rs:178,1
    - Dst: write
      Src: /src/opendal/core/tests/behavior/async_delete.rs:179,1
    - Dst: expect
      Src: /src/opendal/core/tests/behavior/async_delete.rs:179,1
    - Dst: delete_with
      Src: /src/opendal/core/tests/behavior/async_delete.rs:182,1
    - Dst: FutureDelete::recursive
      Src: /src/opendal/core/tests/behavior/async_delete.rs:182,1
    - Dst: lister_with
      Src: /src/opendal/core/tests/behavior/async_delete.rs:184,1
    - Dst: FutureLister::recursive
      Src: /src/opendal/core/tests/behavior/async_delete.rs:184,1
    - Dst: expect
      Src: /src/opendal/core/tests/behavior/async_delete.rs:184,1
    - Dst: try_next
      Src: /src/opendal/core/tests/behavior/async_delete.rs:184,1
    - Dst: expect
      Src: /src/opendal/core/tests/behavior/async_delete.rs:184,1
    - Dst: is_some
      Src: /src/opendal/core/tests/behavior/async_delete.rs:184,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_delete.rs:196,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 40
    argCount: 3
    argNames:
    - op
    - parent
    - paths
    argTypes:
    - Operator
    - String
    - impl IntoIterator<Item = &'static str>
    constantsTouched: []
    func_position:
      end: 197
      start: 171
    functionDepth: 30
    functionLinenumber: 171
    functionLinenumberEnd: 197
    functionName: test_blocking_remove_all_with_objects
    functionSourceFile: /src/opendal/core/tests/behavior/async_delete.rs
    functionUses: 2
    functionsReached:
    - lister_with
    - info
    - expect
    - Ok
    - FutureLister::recursive
    - ServiceInfo::capability
    - gen_bytes
    - try_next
    - delete_with
    - is_some
    - FutureDelete::recursive
    - write
    linkageType: ''
    returnType: Result
    signature: 'async fn test_blocking_remove_all_with_objects(op: Operator,parent:
      String,paths: impl IntoIterator<Item = &''static str>,) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: info
      Src: /src/opendal/core/tests/behavior/async_delete.rs:203,1
    - Dst: ServiceInfo::scheme
      Src: /src/opendal/core/tests/behavior/async_delete.rs:203,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_delete.rs:206,1
    - Dst: uuid::Uuid::new_v4
      Src: /src/opendal/core/tests/behavior/async_delete.rs:210,1
    - Dst: to_string
      Src: /src/opendal/core/tests/behavior/async_delete.rs:210,1
    - Dst: test_blocking_remove_all_with_objects
      Src: /src/opendal/core/tests/behavior/async_delete.rs:211,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 18
    argCount: 1
    argNames:
    - op
    argTypes:
    - Operator
    constantsTouched: []
    func_position:
      end: 212
      start: 200
    functionDepth: 31
    functionLinenumber: 200
    functionLinenumberEnd: 212
    functionName: test_remove_all_basic
    functionSourceFile: /src/opendal/core/tests/behavior/async_delete.rs
    functionUses: 0
    functionsReached:
    - to_string
    - info
    - Ok
    - uuid::Uuid::new_v4
    - test_blocking_remove_all_with_objects
    - ServiceInfo::scheme
    linkageType: ''
    returnType: Result
    signature: 'pub async fn test_remove_all_basic(op: Operator) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: info
      Src: /src/opendal/core/tests/behavior/async_delete.rs:223,1
    - Dst: ServiceInfo::scheme
      Src: /src/opendal/core/tests/behavior/async_delete.rs:223,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_delete.rs:226,1
    - Dst: uuid::Uuid::new_v4
      Src: /src/opendal/core/tests/behavior/async_delete.rs:230,1
    - Dst: to_string
      Src: /src/opendal/core/tests/behavior/async_delete.rs:230,1
    - Dst: gen_bytes
      Src: /src/opendal/core/tests/behavior/async_delete.rs:231,1
    - Dst: info
      Src: /src/opendal/core/tests/behavior/async_delete.rs:231,1
    - Dst: ServiceInfo::capability
      Src: /src/opendal/core/tests/behavior/async_delete.rs:231,1
    - Dst: write
      Src: /src/opendal/core/tests/behavior/async_delete.rs:232,1
    - Dst: expect
      Src: /src/opendal/core/tests/behavior/async_delete.rs:232,1
    - Dst: test_blocking_remove_all_with_objects
      Src: /src/opendal/core/tests/behavior/async_delete.rs:236,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 30
    argCount: 1
    argNames:
    - op
    argTypes:
    - Operator
    constantsTouched: []
    func_position:
      end: 237
      start: 220
    functionDepth: 30
    functionLinenumber: 220
    functionLinenumberEnd: 237
    functionName: test_remove_all_with_prefix_exists
    functionSourceFile: /src/opendal/core/tests/behavior/async_delete.rs
    functionUses: 0
    functionsReached:
    - to_string
    - info
    - expect
    - Ok
    - ServiceInfo::capability
    - uuid::Uuid::new_v4
    - test_blocking_remove_all_with_objects
    - gen_bytes
    - ServiceInfo::scheme
    - write
    linkageType: ''
    returnType: Result
    signature: 'pub async fn test_remove_all_with_prefix_exists(op: Operator) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: info
      Src: /src/opendal/core/tests/behavior/async_delete.rs:240,1
    - Dst: ServiceInfo::capability
      Src: /src/opendal/core/tests/behavior/async_delete.rs:240,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_delete.rs:241,1
    - Dst: new_file
      Src: /src/opendal/core/tests/behavior/async_delete.rs:244,1
    - Dst: clone
      Src: /src/opendal/core/tests/behavior/async_delete.rs:244,1
    - Dst: write
      Src: /src/opendal/core/tests/behavior/async_delete.rs:246,1
    - Dst: as_str
      Src: /src/opendal/core/tests/behavior/async_delete.rs:246,1
    - Dst: expect
      Src: /src/opendal/core/tests/behavior/async_delete.rs:246,1
    - Dst: stat
      Src: /src/opendal/core/tests/behavior/async_delete.rs:249,1
    - Dst: as_str
      Src: /src/opendal/core/tests/behavior/async_delete.rs:249,1
    - Dst: expect
      Src: /src/opendal/core/tests/behavior/async_delete.rs:249,1
    - Dst: Result::version
      Src: /src/opendal/core/tests/behavior/async_delete.rs:250,1
    - Dst: Result::expect
      Src: /src/opendal/core/tests/behavior/async_delete.rs:250,1
    - Dst: delete
      Src: /src/opendal/core/tests/behavior/async_delete.rs:252,1
    - Dst: as_str
      Src: /src/opendal/core/tests/behavior/async_delete.rs:252,1
    - Dst: expect
      Src: /src/opendal/core/tests/behavior/async_delete.rs:252,1
    - Dst: stat_with
      Src: /src/opendal/core/tests/behavior/async_delete.rs:256,1
    - Dst: as_str
      Src: /src/opendal/core/tests/behavior/async_delete.rs:257,1
    - Dst: FutureStat::version
      Src: /src/opendal/core/tests/behavior/async_delete.rs:256,1
    - Dst: expect
      Src: /src/opendal/core/tests/behavior/async_delete.rs:256,1
    - Dst: delete_with
      Src: /src/opendal/core/tests/behavior/async_delete.rs:264,1
    - Dst: as_str
      Src: /src/opendal/core/tests/behavior/async_delete.rs:264,1
    - Dst: FutureDelete::version
      Src: /src/opendal/core/tests/behavior/async_delete.rs:264,1
    - Dst: expect
      Src: /src/opendal/core/tests/behavior/async_delete.rs:264,1
    - Dst: stat_with
      Src: /src/opendal/core/tests/behavior/async_delete.rs:268,1
    - Dst: as_str
      Src: /src/opendal/core/tests/behavior/async_delete.rs:268,1
    - Dst: FutureStat::version
      Src: /src/opendal/core/tests/behavior/async_delete.rs:268,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_delete.rs:272,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 75
    argCount: 1
    argNames:
    - op
    argTypes:
    - Operator
    constantsTouched: []
    func_position:
      end: 273
      start: 239
    functionDepth: 31
    functionLinenumber: 239
    functionLinenumberEnd: 273
    functionName: test_delete_with_version
    functionSourceFile: /src/opendal/core/tests/behavior/async_delete.rs
    functionUses: 0
    functionsReached:
    - FutureStat::version
    - info
    - expect
    - Ok
    - Result::version
    - Result::expect
    - delete
    - ServiceInfo::capability
    - clone
    - as_str
    - delete_with
    - new_file
    - FutureDelete::version
    - write
    - stat
    - stat_with
    linkageType: ''
    returnType: Result
    signature: 'pub async fn test_delete_with_version(op: Operator) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: info
      Src: /src/opendal/core/tests/behavior/async_delete.rs:276,1
    - Dst: ServiceInfo::capability
      Src: /src/opendal/core/tests/behavior/async_delete.rs:276,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_delete.rs:277,1
    - Dst: new_file
      Src: /src/opendal/core/tests/behavior/async_delete.rs:281,1
    - Dst: clone
      Src: /src/opendal/core/tests/behavior/async_delete.rs:281,1
    - Dst: write
      Src: /src/opendal/core/tests/behavior/async_delete.rs:282,1
    - Dst: as_str
      Src: /src/opendal/core/tests/behavior/async_delete.rs:282,1
    - Dst: expect
      Src: /src/opendal/core/tests/behavior/async_delete.rs:282,1
    - Dst: stat
      Src: /src/opendal/core/tests/behavior/async_delete.rs:285,1
    - Dst: as_str
      Src: /src/opendal/core/tests/behavior/async_delete.rs:286,1
    - Dst: expect
      Src: /src/opendal/core/tests/behavior/async_delete.rs:285,1
    - Dst: version
      Src: /src/opendal/core/tests/behavior/async_delete.rs:285,1
    - Dst: expect
      Src: /src/opendal/core/tests/behavior/async_delete.rs:285,1
    - Dst: to_string
      Src: /src/opendal/core/tests/behavior/async_delete.rs:285,1
    - Dst: new_file
      Src: /src/opendal/core/tests/behavior/async_delete.rs:293,1
    - Dst: clone
      Src: /src/opendal/core/tests/behavior/async_delete.rs:293,1
    - Dst: write
      Src: /src/opendal/core/tests/behavior/async_delete.rs:294,1
    - Dst: as_str
      Src: /src/opendal/core/tests/behavior/async_delete.rs:294,1
    - Dst: expect
      Src: /src/opendal/core/tests/behavior/async_delete.rs:294,1
    - Dst: delete_with
      Src: /src/opendal/core/tests/behavior/async_delete.rs:297,1
    - Dst: as_str
      Src: /src/opendal/core/tests/behavior/async_delete.rs:298,1
    - Dst: FutureDelete::version
      Src: /src/opendal/core/tests/behavior/async_delete.rs:297,1
    - Dst: Result::as_str
      Src: /src/opendal/core/tests/behavior/async_delete.rs:299,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_delete.rs:303,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 61
    argCount: 1
    argNames:
    - op
    argTypes:
    - Operator
    constantsTouched: []
    func_position:
      end: 304
      start: 275
    functionDepth: 31
    functionLinenumber: 275
    functionLinenumberEnd: 304
    functionName: test_delete_with_not_existing_version
    functionSourceFile: /src/opendal/core/tests/behavior/async_delete.rs
    functionUses: 0
    functionsReached:
    - to_string
    - info
    - expect
    - Ok
    - ServiceInfo::capability
    - clone
    - FutureDelete::version
    - as_str
    - delete_with
    - new_file
    - Result::as_str
    - version
    - write
    - stat
    linkageType: ''
    returnType: Result
    signature: 'pub async fn test_delete_with_not_existing_version(op: Operator) ->
      Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: info
      Src: /src/opendal/core/tests/behavior/async_delete.rs:307,1
    - Dst: ServiceInfo::capability
      Src: /src/opendal/core/tests/behavior/async_delete.rs:307,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_delete.rs:308,1
    - Dst: info
      Src: /src/opendal/core/tests/behavior/async_delete.rs:313,1
    - Dst: ServiceInfo::scheme
      Src: /src/opendal/core/tests/behavior/async_delete.rs:313,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_delete.rs:316,1
    - Dst: write
      Src: /src/opendal/core/tests/behavior/async_delete.rs:329,1
    - Dst: delete_with
      Src: /src/opendal/core/tests/behavior/async_delete.rs:332,1
    - Dst: FutureDelete::recursive
      Src: /src/opendal/core/tests/behavior/async_delete.rs:332,1
    - Dst: lister_with
      Src: /src/opendal/core/tests/behavior/async_delete.rs:334,1
    - Dst: FutureLister::recursive
      Src: /src/opendal/core/tests/behavior/async_delete.rs:334,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_delete.rs:344,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 55
    argCount: 1
    argNames:
    - op
    argTypes:
    - Operator
    constantsTouched: []
    func_position:
      end: 345
      start: 306
    functionDepth: 36
    functionLinenumber: 306
    functionLinenumberEnd: 345
    functionName: test_delete_with_recursive_basic
    functionSourceFile: /src/opendal/core/tests/behavior/async_delete.rs
    functionUses: 0
    functionsReached:
    - lister_with
    - info
    - Ok
    - FutureLister::recursive
    - ServiceInfo::capability
    - delete_with
    - ServiceInfo::scheme
    - FutureDelete::recursive
    - write
    linkageType: ''
    returnType: Result
    signature: 'pub async fn test_delete_with_recursive_basic(op: Operator) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: info
      Src: /src/opendal/core/tests/behavior/async_delete.rs:348,1
    - Dst: ServiceInfo::capability
      Src: /src/opendal/core/tests/behavior/async_delete.rs:348,1
    - Dst: unwrap_or
      Src: /src/opendal/core/tests/behavior/async_delete.rs:349,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_delete.rs:350,1
    - Dst: Some
      Src: /src/opendal/core/tests/behavior/async_delete.rs:353,1
    - Dst: layer
      Src: /src/opendal/core/tests/behavior/async_delete.rs:354,1
    - Dst: CapabilityOverrideLayer::new
      Src: /src/opendal/core/tests/behavior/async_delete.rs:354,1
    - Dst: Vec::new
      Src: /src/opendal/core/tests/behavior/async_delete.rs:356,1
    - Dst: new_file
      Src: /src/opendal/core/tests/behavior/async_delete.rs:358,1
    - Dst: clone
      Src: /src/opendal/core/tests/behavior/async_delete.rs:358,1
    - Dst: write
      Src: /src/opendal/core/tests/behavior/async_delete.rs:359,1
    - Dst: as_str
      Src: /src/opendal/core/tests/behavior/async_delete.rs:359,1
    - Dst: expect
      Src: /src/opendal/core/tests/behavior/async_delete.rs:359,1
    - Dst: Self::push
      Src: /src/opendal/core/tests/behavior/async_delete.rs:362,1
    - Dst: delete_iter
      Src: /src/opendal/core/tests/behavior/async_delete.rs:365,1
    - Dst: Self::clone
      Src: /src/opendal/core/tests/behavior/async_delete.rs:365,1
    - Dst: expect
      Src: /src/opendal/core/tests/behavior/async_delete.rs:365,1
    - Dst: stat
      Src: /src/opendal/core/tests/behavior/async_delete.rs:370,1
    - Dst: as_str
      Src: /src/opendal/core/tests/behavior/async_delete.rs:370,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_delete.rs:375,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 60
    argCount: 1
    argNames:
    - op
    argTypes:
    - Operator
    constantsTouched: []
    func_position:
      end: 376
      start: 347
    functionDepth: 31
    functionLinenumber: 347
    functionLinenumberEnd: 376
    functionName: test_batch_delete
    functionSourceFile: /src/opendal/core/tests/behavior/async_delete.rs
    functionUses: 0
    functionsReached:
    - info
    - expect
    - Ok
    - Self::push
    - ServiceInfo::capability
    - CapabilityOverrideLayer::new
    - clone
    - Some
    - as_str
    - delete_iter
    - new_file
    - Self::clone
    - Vec::new
    - layer
    - write
    - stat
    - unwrap_or
    linkageType: ''
    returnType: Result
    signature: 'pub async fn test_batch_delete(op: Operator) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: info
      Src: /src/opendal/core/tests/behavior/async_delete.rs:379,1
    - Dst: ServiceInfo::capability
      Src: /src/opendal/core/tests/behavior/async_delete.rs:379,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_delete.rs:381,1
    - Dst: unwrap_or
      Src: /src/opendal/core/tests/behavior/async_delete.rs:383,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_delete.rs:384,1
    - Dst: Some
      Src: /src/opendal/core/tests/behavior/async_delete.rs:387,1
    - Dst: layer
      Src: /src/opendal/core/tests/behavior/async_delete.rs:388,1
    - Dst: CapabilityOverrideLayer::new
      Src: /src/opendal/core/tests/behavior/async_delete.rs:388,1
    - Dst: Vec::new
      Src: /src/opendal/core/tests/behavior/async_delete.rs:390,1
    - Dst: new_file
      Src: /src/opendal/core/tests/behavior/async_delete.rs:392,1
    - Dst: clone
      Src: /src/opendal/core/tests/behavior/async_delete.rs:392,1
    - Dst: write
      Src: /src/opendal/core/tests/behavior/async_delete.rs:393,1
    - Dst: as_str
      Src: /src/opendal/core/tests/behavior/async_delete.rs:393,1
    - Dst: expect
      Src: /src/opendal/core/tests/behavior/async_delete.rs:393,1
    - Dst: stat
      Src: /src/opendal/core/tests/behavior/async_delete.rs:396,1
    - Dst: as_str
      Src: /src/opendal/core/tests/behavior/async_delete.rs:396,1
    - Dst: expect
      Src: /src/opendal/core/tests/behavior/async_delete.rs:396,1
    - Dst: Result::version
      Src: /src/opendal/core/tests/behavior/async_delete.rs:397,1
    - Dst: Result::expect
      Src: /src/opendal/core/tests/behavior/async_delete.rs:397,1
    - Dst: OpDelete::new
      Src: /src/opendal/core/tests/behavior/async_delete.rs:398,1
    - Dst: Self::with_version
      Src: /src/opendal/core/tests/behavior/async_delete.rs:398,1
    - Dst: Self::push
      Src: /src/opendal/core/tests/behavior/async_delete.rs:399,1
    - Dst: delete_iter
      Src: /src/opendal/core/tests/behavior/async_delete.rs:402,1
    - Dst: Self::clone
      Src: /src/opendal/core/tests/behavior/async_delete.rs:402,1
    - Dst: expect
      Src: /src/opendal/core/tests/behavior/async_delete.rs:402,1
    - Dst: stat_with
      Src: /src/opendal/core/tests/behavior/async_delete.rs:407,1
    - Dst: as_str
      Src: /src/opendal/core/tests/behavior/async_delete.rs:408,1
    - Dst: FutureStat::version
      Src: /src/opendal/core/tests/behavior/async_delete.rs:407,1
    - Dst: OpStat::version
      Src: /src/opendal/core/tests/behavior/async_delete.rs:409,1
    - Dst: Option::unwrap
      Src: /src/opendal/core/tests/behavior/async_delete.rs:409,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_delete.rs:415,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 89
    argCount: 1
    argNames:
    - op
    argTypes:
    - Operator
    constantsTouched: []
    func_position:
      end: 416
      start: 378
    functionDepth: 31
    functionLinenumber: 378
    functionLinenumberEnd: 416
    functionName: test_batch_delete_with_version
    functionSourceFile: /src/opendal/core/tests/behavior/async_delete.rs
    functionUses: 0
    functionsReached:
    - Self::with_version
    - clone
    - Self::clone
    - Vec::new
    - write
    - info
    - expect
    - Ok
    - Result::expect
    - Option::unwrap
    - ServiceInfo::capability
    - as_str
    - stat
    - unwrap_or
    - stat_with
    - Self::push
    - CapabilityOverrideLayer::new
    - Some
    - OpStat::version
    - Result::version
    - OpDelete::new
    - delete_iter
    - new_file
    - layer
    - FutureStat::version
    linkageType: ''
    returnType: Result
    signature: 'pub async fn test_batch_delete_with_version(op: Operator) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: expect
      Src: /src/opendal/core/tests/behavior/async_copy.rs:78,1
    - Dst: expect
      Src: /src/opendal/core/tests/behavior/async_copy.rs:81,1
    - Dst: Result::checked_add
      Src: /src/opendal/core/tests/behavior/async_copy.rs:89,1
    - Dst: is_some_and
      Src: /src/opendal/core/tests/behavior/async_copy.rs:91,1
    - Dst: Some
      Src: /src/opendal/core/tests/behavior/async_copy.rs:98,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 21
    argCount: 1
    argNames:
    - cap
    argTypes:
    - Capability
    constantsTouched: []
    func_position:
      end: 99
      start: 77
    functionDepth: 0
    functionLinenumber: 77
    functionLinenumberEnd: 99
    functionName: copy_multi_chunk_size
    functionSourceFile: /src/opendal/core/tests/behavior/async_copy.rs
    functionUses: 2
    functionsReached:
    - Result::checked_add
    - is_some_and
    - expect
    - Some
    linkageType: ''
    returnType: Option
    signature: 'fn copy_multi_chunk_size(cap: Capability) -> Option<(usize, usize)>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: uuid::Uuid::new_v4
      Src: /src/opendal/core/tests/behavior/async_copy.rs:103,1
    - Dst: to_string
      Src: /src/opendal/core/tests/behavior/async_copy.rs:103,1
    - Dst: gen_bytes
      Src: /src/opendal/core/tests/behavior/async_copy.rs:104,1
    - Dst: info
      Src: /src/opendal/core/tests/behavior/async_copy.rs:104,1
    - Dst: ServiceInfo::capability
      Src: /src/opendal/core/tests/behavior/async_copy.rs:104,1
    - Dst: write
      Src: /src/opendal/core/tests/behavior/async_copy.rs:106,1
    - Dst: clone
      Src: /src/opendal/core/tests/behavior/async_copy.rs:106,1
    - Dst: uuid::Uuid::new_v4
      Src: /src/opendal/core/tests/behavior/async_copy.rs:108,1
    - Dst: to_string
      Src: /src/opendal/core/tests/behavior/async_copy.rs:108,1
    - Dst: copy
      Src: /src/opendal/core/tests/behavior/async_copy.rs:110,1
    - Dst: read
      Src: /src/opendal/core/tests/behavior/async_copy.rs:112,1
    - Dst: expect
      Src: /src/opendal/core/tests/behavior/async_copy.rs:112,1
    - Dst: to_bytes
      Src: /src/opendal/core/tests/behavior/async_copy.rs:112,1
    - Dst: delete
      Src: /src/opendal/core/tests/behavior/async_copy.rs:122,1
    - Dst: expect
      Src: /src/opendal/core/tests/behavior/async_copy.rs:122,1
    - Dst: delete
      Src: /src/opendal/core/tests/behavior/async_copy.rs:123,1
    - Dst: expect
      Src: /src/opendal/core/tests/behavior/async_copy.rs:123,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_copy.rs:124,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 51
    argCount: 1
    argNames:
    - op
    argTypes:
    - Operator
    constantsTouched: []
    func_position:
      end: 125
      start: 102
    functionDepth: 30
    functionLinenumber: 102
    functionLinenumberEnd: 125
    functionName: test_copy_file_with_ascii_name
    functionSourceFile: /src/opendal/core/tests/behavior/async_copy.rs
    functionUses: 0
    functionsReached:
    - to_string
    - info
    - read
    - expect
    - Ok
    - delete
    - ServiceInfo::capability
    - uuid::Uuid::new_v4
    - gen_bytes
    - clone
    - copy
    - to_bytes
    - write
    linkageType: ''
    returnType: Result
    signature: 'pub async fn test_copy_file_with_ascii_name(op: Operator) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: info
      Src: /src/opendal/core/tests/behavior/async_copy.rs:131,1
    - Dst: ServiceInfo::scheme
      Src: /src/opendal/core/tests/behavior/async_copy.rs:131,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_copy.rs:132,1
    - Dst: gen_bytes
      Src: /src/opendal/core/tests/behavior/async_copy.rs:137,1
    - Dst: info
      Src: /src/opendal/core/tests/behavior/async_copy.rs:137,1
    - Dst: ServiceInfo::capability
      Src: /src/opendal/core/tests/behavior/async_copy.rs:137,1
    - Dst: write
      Src: /src/opendal/core/tests/behavior/async_copy.rs:139,1
    - Dst: clone
      Src: /src/opendal/core/tests/behavior/async_copy.rs:139,1
    - Dst: copy
      Src: /src/opendal/core/tests/behavior/async_copy.rs:140,1
    - Dst: read
      Src: /src/opendal/core/tests/behavior/async_copy.rs:142,1
    - Dst: expect
      Src: /src/opendal/core/tests/behavior/async_copy.rs:142,1
    - Dst: to_bytes
      Src: /src/opendal/core/tests/behavior/async_copy.rs:142,1
    - Dst: delete
      Src: /src/opendal/core/tests/behavior/async_copy.rs:152,1
    - Dst: expect
      Src: /src/opendal/core/tests/behavior/async_copy.rs:152,1
    - Dst: delete
      Src: /src/opendal/core/tests/behavior/async_copy.rs:153,1
    - Dst: expect
      Src: /src/opendal/core/tests/behavior/async_copy.rs:153,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_copy.rs:154,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 50
    argCount: 1
    argNames:
    - op
    argTypes:
    - Operator
    constantsTouched: []
    func_position:
      end: 155
      start: 128
    functionDepth: 30
    functionLinenumber: 128
    functionLinenumberEnd: 155
    functionName: test_copy_file_with_non_ascii_name
    functionSourceFile: /src/opendal/core/tests/behavior/async_copy.rs
    functionUses: 0
    functionsReached:
    - read
    - info
    - expect
    - Ok
    - delete
    - ServiceInfo::capability
    - gen_bytes
    - clone
    - copy
    - to_bytes
    - ServiceInfo::scheme
    - write
    linkageType: ''
    returnType: Result
    signature: 'pub async fn test_copy_file_with_non_ascii_name(op: Operator) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: uuid::Uuid::new_v4
      Src: /src/opendal/core/tests/behavior/async_copy.rs:159,1
    - Dst: to_string
      Src: /src/opendal/core/tests/behavior/async_copy.rs:159,1
    - Dst: uuid::Uuid::new_v4
      Src: /src/opendal/core/tests/behavior/async_copy.rs:160,1
    - Dst: to_string
      Src: /src/opendal/core/tests/behavior/async_copy.rs:160,1
    - Dst: copy
      Src: /src/opendal/core/tests/behavior/async_copy.rs:162,1
    - Dst: expect_err
      Src: /src/opendal/core/tests/behavior/async_copy.rs:162,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_copy.rs:167,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 16
    argCount: 1
    argNames:
    - op
    argTypes:
    - Operator
    constantsTouched: []
    func_position:
      end: 168
      start: 158
    functionDepth: 34
    functionLinenumber: 158
    functionLinenumberEnd: 168
    functionName: test_copy_non_existing_source
    functionSourceFile: /src/opendal/core/tests/behavior/async_copy.rs
    functionUses: 0
    functionsReached:
    - to_string
    - Ok
    - uuid::Uuid::new_v4
    - copy
    - expect_err
    linkageType: ''
    returnType: Result
    signature: 'pub async fn test_copy_non_existing_source(op: Operator) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: info
      Src: /src/opendal/core/tests/behavior/async_copy.rs:172,1
    - Dst: ServiceInfo::capability
      Src: /src/opendal/core/tests/behavior/async_copy.rs:172,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_copy.rs:173,1
    - Dst: uuid::Uuid::new_v4
      Src: /src/opendal/core/tests/behavior/async_copy.rs:177,1
    - Dst: to_string
      Src: /src/opendal/core/tests/behavior/async_copy.rs:177,1
    - Dst: create_dir
      Src: /src/opendal/core/tests/behavior/async_copy.rs:179,1
    - Dst: copy
      Src: /src/opendal/core/tests/behavior/async_copy.rs:181,1
    - Dst: expect_err
      Src: /src/opendal/core/tests/behavior/async_copy.rs:181,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_copy.rs:186,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 31
    argCount: 1
    argNames:
    - op
    argTypes:
    - Operator
    constantsTouched: []
    func_position:
      end: 187
      start: 171
    functionDepth: 35
    functionLinenumber: 171
    functionLinenumberEnd: 187
    functionName: test_copy_source_dir
    functionSourceFile: /src/opendal/core/tests/behavior/async_copy.rs
    functionUses: 0
    functionsReached:
    - to_string
    - info
    - Ok
    - ServiceInfo::capability
    - uuid::Uuid::new_v4
    - create_dir
    - copy
    - expect_err
    linkageType: ''
    returnType: Result
    signature: 'pub async fn test_copy_source_dir(op: Operator) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: info
      Src: /src/opendal/core/tests/behavior/async_copy.rs:191,1
    - Dst: ServiceInfo::capability
      Src: /src/opendal/core/tests/behavior/async_copy.rs:191,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_copy.rs:192,1
    - Dst: uuid::Uuid::new_v4
      Src: /src/opendal/core/tests/behavior/async_copy.rs:195,1
    - Dst: to_string
      Src: /src/opendal/core/tests/behavior/async_copy.rs:195,1
    - Dst: gen_bytes
      Src: /src/opendal/core/tests/behavior/async_copy.rs:196,1
    - Dst: info
      Src: /src/opendal/core/tests/behavior/async_copy.rs:196,1
    - Dst: ServiceInfo::capability
      Src: /src/opendal/core/tests/behavior/async_copy.rs:196,1
    - Dst: write
      Src: /src/opendal/core/tests/behavior/async_copy.rs:198,1
    - Dst: create_dir
      Src: /src/opendal/core/tests/behavior/async_copy.rs:202,1
    - Dst: copy
      Src: /src/opendal/core/tests/behavior/async_copy.rs:204,1
    - Dst: expect_err
      Src: /src/opendal/core/tests/behavior/async_copy.rs:204,1
    - Dst: delete
      Src: /src/opendal/core/tests/behavior/async_copy.rs:210,1
    - Dst: expect
      Src: /src/opendal/core/tests/behavior/async_copy.rs:210,1
    - Dst: delete
      Src: /src/opendal/core/tests/behavior/async_copy.rs:211,1
    - Dst: expect
      Src: /src/opendal/core/tests/behavior/async_copy.rs:211,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_copy.rs:212,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 56
    argCount: 1
    argNames:
    - op
    argTypes:
    - Operator
    constantsTouched: []
    func_position:
      end: 213
      start: 190
    functionDepth: 30
    functionLinenumber: 190
    functionLinenumberEnd: 213
    functionName: test_copy_target_dir
    functionSourceFile: /src/opendal/core/tests/behavior/async_copy.rs
    functionUses: 0
    functionsReached:
    - to_string
    - info
    - expect
    - Ok
    - delete
    - ServiceInfo::capability
    - uuid::Uuid::new_v4
    - gen_bytes
    - create_dir
    - copy
    - expect_err
    - write
    linkageType: ''
    returnType: Result
    signature: 'pub async fn test_copy_target_dir(op: Operator) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: uuid::Uuid::new_v4
      Src: /src/opendal/core/tests/behavior/async_copy.rs:217,1
    - Dst: to_string
      Src: /src/opendal/core/tests/behavior/async_copy.rs:217,1
    - Dst: gen_bytes
      Src: /src/opendal/core/tests/behavior/async_copy.rs:218,1
    - Dst: info
      Src: /src/opendal/core/tests/behavior/async_copy.rs:218,1
    - Dst: ServiceInfo::capability
      Src: /src/opendal/core/tests/behavior/async_copy.rs:218,1
    - Dst: write
      Src: /src/opendal/core/tests/behavior/async_copy.rs:220,1
    - Dst: copy
      Src: /src/opendal/core/tests/behavior/async_copy.rs:222,1
    - Dst: expect_err
      Src: /src/opendal/core/tests/behavior/async_copy.rs:222,1
    - Dst: delete
      Src: /src/opendal/core/tests/behavior/async_copy.rs:228,1
    - Dst: expect
      Src: /src/opendal/core/tests/behavior/async_copy.rs:228,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_copy.rs:229,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 31
    argCount: 1
    argNames:
    - op
    argTypes:
    - Operator
    constantsTouched: []
    func_position:
      end: 230
      start: 216
    functionDepth: 30
    functionLinenumber: 216
    functionLinenumberEnd: 230
    functionName: test_copy_self
    functionSourceFile: /src/opendal/core/tests/behavior/async_copy.rs
    functionUses: 0
    functionsReached:
    - to_string
    - info
    - expect
    - Ok
    - delete
    - ServiceInfo::capability
    - uuid::Uuid::new_v4
    - gen_bytes
    - copy
    - expect_err
    - write
    linkageType: ''
    returnType: Result
    signature: 'pub async fn test_copy_self(op: Operator) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: uuid::Uuid::new_v4
      Src: /src/opendal/core/tests/behavior/async_copy.rs:234,1
    - Dst: to_string
      Src: /src/opendal/core/tests/behavior/async_copy.rs:234,1
    - Dst: gen_bytes
      Src: /src/opendal/core/tests/behavior/async_copy.rs:235,1
    - Dst: info
      Src: /src/opendal/core/tests/behavior/async_copy.rs:235,1
    - Dst: ServiceInfo::capability
      Src: /src/opendal/core/tests/behavior/async_copy.rs:235,1
    - Dst: write
      Src: /src/opendal/core/tests/behavior/async_copy.rs:237,1
    - Dst: clone
      Src: /src/opendal/core/tests/behavior/async_copy.rs:237,1
    - Dst: copy
      Src: /src/opendal/core/tests/behavior/async_copy.rs:246,1
    - Dst: read
      Src: /src/opendal/core/tests/behavior/async_copy.rs:248,1
    - Dst: expect
      Src: /src/opendal/core/tests/behavior/async_copy.rs:248,1
    - Dst: to_bytes
      Src: /src/opendal/core/tests/behavior/async_copy.rs:248,1
    - Dst: delete
      Src: /src/opendal/core/tests/behavior/async_copy.rs:258,1
    - Dst: expect
      Src: /src/opendal/core/tests/behavior/async_copy.rs:258,1
    - Dst: delete
      Src: /src/opendal/core/tests/behavior/async_copy.rs:259,1
    - Dst: expect
      Src: /src/opendal/core/tests/behavior/async_copy.rs:259,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_copy.rs:260,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 48
    argCount: 1
    argNames:
    - op
    argTypes:
    - Operator
    constantsTouched: []
    func_position:
      end: 261
      start: 233
    functionDepth: 30
    functionLinenumber: 233
    functionLinenumberEnd: 261
    functionName: test_copy_nested
    functionSourceFile: /src/opendal/core/tests/behavior/async_copy.rs
    functionUses: 0
    functionsReached:
    - to_string
    - info
    - read
    - expect
    - Ok
    - delete
    - ServiceInfo::capability
    - uuid::Uuid::new_v4
    - gen_bytes
    - clone
    - copy
    - to_bytes
    - write
    linkageType: ''
    returnType: Result
    signature: 'pub async fn test_copy_nested(op: Operator) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: uuid::Uuid::new_v4
      Src: /src/opendal/core/tests/behavior/async_copy.rs:265,1
    - Dst: to_string
      Src: /src/opendal/core/tests/behavior/async_copy.rs:265,1
    - Dst: gen_bytes
      Src: /src/opendal/core/tests/behavior/async_copy.rs:266,1
    - Dst: info
      Src: /src/opendal/core/tests/behavior/async_copy.rs:266,1
    - Dst: ServiceInfo::capability
      Src: /src/opendal/core/tests/behavior/async_copy.rs:266,1
    - Dst: write
      Src: /src/opendal/core/tests/behavior/async_copy.rs:268,1
    - Dst: clone
      Src: /src/opendal/core/tests/behavior/async_copy.rs:268,1
    - Dst: uuid::Uuid::new_v4
      Src: /src/opendal/core/tests/behavior/async_copy.rs:270,1
    - Dst: to_string
      Src: /src/opendal/core/tests/behavior/async_copy.rs:270,1
    - Dst: gen_bytes
      Src: /src/opendal/core/tests/behavior/async_copy.rs:271,1
    - Dst: info
      Src: /src/opendal/core/tests/behavior/async_copy.rs:271,1
    - Dst: ServiceInfo::capability
      Src: /src/opendal/core/tests/behavior/async_copy.rs:271,1
    - Dst: write
      Src: /src/opendal/core/tests/behavior/async_copy.rs:274,1
    - Dst: copy
      Src: /src/opendal/core/tests/behavior/async_copy.rs:276,1
    - Dst: read
      Src: /src/opendal/core/tests/behavior/async_copy.rs:278,1
    - Dst: expect
      Src: /src/opendal/core/tests/behavior/async_copy.rs:278,1
    - Dst: to_bytes
      Src: /src/opendal/core/tests/behavior/async_copy.rs:278,1
    - Dst: delete
      Src: /src/opendal/core/tests/behavior/async_copy.rs:288,1
    - Dst: expect
      Src: /src/opendal/core/tests/behavior/async_copy.rs:288,1
    - Dst: delete
      Src: /src/opendal/core/tests/behavior/async_copy.rs:289,1
    - Dst: expect
      Src: /src/opendal/core/tests/behavior/async_copy.rs:289,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_copy.rs:290,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 63
    argCount: 1
    argNames:
    - op
    argTypes:
    - Operator
    constantsTouched: []
    func_position:
      end: 291
      start: 264
    functionDepth: 35
    functionLinenumber: 264
    functionLinenumberEnd: 291
    functionName: test_copy_overwrite
    functionSourceFile: /src/opendal/core/tests/behavior/async_copy.rs
    functionUses: 0
    functionsReached:
    - to_string
    - info
    - read
    - expect
    - Ok
    - delete
    - ServiceInfo::capability
    - uuid::Uuid::new_v4
    - gen_bytes
    - clone
    - copy
    - to_bytes
    - write
    linkageType: ''
    returnType: Result
    signature: 'pub async fn test_copy_overwrite(op: Operator) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: info
      Src: /src/opendal/core/tests/behavior/async_copy.rs:295,1
    - Dst: ServiceInfo::capability
      Src: /src/opendal/core/tests/behavior/async_copy.rs:295,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_copy.rs:296,1
    - Dst: uuid::Uuid::new_v4
      Src: /src/opendal/core/tests/behavior/async_copy.rs:299,1
    - Dst: to_string
      Src: /src/opendal/core/tests/behavior/async_copy.rs:299,1
    - Dst: gen_bytes
      Src: /src/opendal/core/tests/behavior/async_copy.rs:300,1
    - Dst: info
      Src: /src/opendal/core/tests/behavior/async_copy.rs:300,1
    - Dst: ServiceInfo::capability
      Src: /src/opendal/core/tests/behavior/async_copy.rs:300,1
    - Dst: write
      Src: /src/opendal/core/tests/behavior/async_copy.rs:302,1
    - Dst: clone
      Src: /src/opendal/core/tests/behavior/async_copy.rs:302,1
    - Dst: uuid::Uuid::new_v4
      Src: /src/opendal/core/tests/behavior/async_copy.rs:304,1
    - Dst: to_string
      Src: /src/opendal/core/tests/behavior/async_copy.rs:304,1
    - Dst: copy_with
      Src: /src/opendal/core/tests/behavior/async_copy.rs:307,1
    - Dst: FutureCopy::if_not_exists
      Src: /src/opendal/core/tests/behavior/async_copy.rs:307,1
    - Dst: read
      Src: /src/opendal/core/tests/behavior/async_copy.rs:311,1
    - Dst: expect
      Src: /src/opendal/core/tests/behavior/async_copy.rs:311,1
    - Dst: to_bytes
      Src: /src/opendal/core/tests/behavior/async_copy.rs:311,1
    - Dst: delete
      Src: /src/opendal/core/tests/behavior/async_copy.rs:321,1
    - Dst: expect
      Src: /src/opendal/core/tests/behavior/async_copy.rs:321,1
    - Dst: delete
      Src: /src/opendal/core/tests/behavior/async_copy.rs:322,1
    - Dst: expect
      Src: /src/opendal/core/tests/behavior/async_copy.rs:322,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_copy.rs:323,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 65
    argCount: 1
    argNames:
    - op
    argTypes:
    - Operator
    constantsTouched: []
    func_position:
      end: 324
      start: 294
    functionDepth: 30
    functionLinenumber: 294
    functionLinenumberEnd: 324
    functionName: test_copy_with_if_not_exists_to_new_file
    functionSourceFile: /src/opendal/core/tests/behavior/async_copy.rs
    functionUses: 0
    functionsReached:
    - to_string
    - info
    - read
    - expect
    - Ok
    - FutureCopy::if_not_exists
    - delete
    - ServiceInfo::capability
    - uuid::Uuid::new_v4
    - gen_bytes
    - clone
    - to_bytes
    - copy_with
    - write
    linkageType: ''
    returnType: Result
    signature: 'pub async fn test_copy_with_if_not_exists_to_new_file(op: Operator)
      -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: info
      Src: /src/opendal/core/tests/behavior/async_copy.rs:328,1
    - Dst: ServiceInfo::capability
      Src: /src/opendal/core/tests/behavior/async_copy.rs:328,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_copy.rs:329,1
    - Dst: uuid::Uuid::new_v4
      Src: /src/opendal/core/tests/behavior/async_copy.rs:332,1
    - Dst: to_string
      Src: /src/opendal/core/tests/behavior/async_copy.rs:332,1
    - Dst: gen_bytes
      Src: /src/opendal/core/tests/behavior/async_copy.rs:333,1
    - Dst: info
      Src: /src/opendal/core/tests/behavior/async_copy.rs:333,1
    - Dst: ServiceInfo::capability
      Src: /src/opendal/core/tests/behavior/async_copy.rs:333,1
    - Dst: write
      Src: /src/opendal/core/tests/behavior/async_copy.rs:335,1
    - Dst: clone
      Src: /src/opendal/core/tests/behavior/async_copy.rs:335,1
    - Dst: uuid::Uuid::new_v4
      Src: /src/opendal/core/tests/behavior/async_copy.rs:337,1
    - Dst: to_string
      Src: /src/opendal/core/tests/behavior/async_copy.rs:337,1
    - Dst: gen_bytes
      Src: /src/opendal/core/tests/behavior/async_copy.rs:338,1
    - Dst: info
      Src: /src/opendal/core/tests/behavior/async_copy.rs:338,1
    - Dst: ServiceInfo::capability
      Src: /src/opendal/core/tests/behavior/async_copy.rs:338,1
    - Dst: write
      Src: /src/opendal/core/tests/behavior/async_copy.rs:342,1
    - Dst: clone
      Src: /src/opendal/core/tests/behavior/async_copy.rs:342,1
    - Dst: copy_with
      Src: /src/opendal/core/tests/behavior/async_copy.rs:345,1
    - Dst: FutureCopy::if_not_exists
      Src: /src/opendal/core/tests/behavior/async_copy.rs:345,1
    - Dst: expect_err
      Src: /src/opendal/core/tests/behavior/async_copy.rs:345,1
    - Dst: read
      Src: /src/opendal/core/tests/behavior/async_copy.rs:353,1
    - Dst: expect
      Src: /src/opendal/core/tests/behavior/async_copy.rs:353,1
    - Dst: to_bytes
      Src: /src/opendal/core/tests/behavior/async_copy.rs:353,1
    - Dst: delete
      Src: /src/opendal/core/tests/behavior/async_copy.rs:363,1
    - Dst: expect
      Src: /src/opendal/core/tests/behavior/async_copy.rs:363,1
    - Dst: delete
      Src: /src/opendal/core/tests/behavior/async_copy.rs:364,1
    - Dst: expect
      Src: /src/opendal/core/tests/behavior/async_copy.rs:364,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_copy.rs:365,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 80
    argCount: 1
    argNames:
    - op
    argTypes:
    - Operator
    constantsTouched: []
    func_position:
      end: 366
      start: 327
    functionDepth: 30
    functionLinenumber: 327
    functionLinenumberEnd: 366
    functionName: test_copy_with_if_not_exists_to_existing_file
    functionSourceFile: /src/opendal/core/tests/behavior/async_copy.rs
    functionUses: 0
    functionsReached:
    - to_string
    - info
    - read
    - expect
    - Ok
    - FutureCopy::if_not_exists
    - delete
    - ServiceInfo::capability
    - uuid::Uuid::new_v4
    - to_bytes
    - gen_bytes
    - clone
    - expect_err
    - copy_with
    - write
    linkageType: ''
    returnType: Result
    signature: 'pub async fn test_copy_with_if_not_exists_to_existing_file(op: Operator)
      -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: info
      Src: /src/opendal/core/tests/behavior/async_copy.rs:370,1
    - Dst: ServiceInfo::capability
      Src: /src/opendal/core/tests/behavior/async_copy.rs:370,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_copy.rs:371,1
    - Dst: uuid::Uuid::new_v4
      Src: /src/opendal/core/tests/behavior/async_copy.rs:374,1
    - Dst: to_string
      Src: /src/opendal/core/tests/behavior/async_copy.rs:374,1
    - Dst: gen_bytes
      Src: /src/opendal/core/tests/behavior/async_copy.rs:375,1
    - Dst: info
      Src: /src/opendal/core/tests/behavior/async_copy.rs:375,1
    - Dst: ServiceInfo::capability
      Src: /src/opendal/core/tests/behavior/async_copy.rs:375,1
    - Dst: write
      Src: /src/opendal/core/tests/behavior/async_copy.rs:376,1
    - Dst: clone
      Src: /src/opendal/core/tests/behavior/async_copy.rs:376,1
    - Dst: uuid::Uuid::new_v4
      Src: /src/opendal/core/tests/behavior/async_copy.rs:378,1
    - Dst: to_string
      Src: /src/opendal/core/tests/behavior/async_copy.rs:378,1
    - Dst: gen_bytes
      Src: /src/opendal/core/tests/behavior/async_copy.rs:379,1
    - Dst: info
      Src: /src/opendal/core/tests/behavior/async_copy.rs:379,1
    - Dst: ServiceInfo::capability
      Src: /src/opendal/core/tests/behavior/async_copy.rs:379,1
    - Dst: write
      Src: /src/opendal/core/tests/behavior/async_copy.rs:381,1
    - Dst: clone
      Src: /src/opendal/core/tests/behavior/async_copy.rs:381,1
    - Dst: stat
      Src: /src/opendal/core/tests/behavior/async_copy.rs:383,1
    - Dst: etag
      Src: /src/opendal/core/tests/behavior/async_copy.rs:383,1
    - Dst: map
      Src: /src/opendal/core/tests/behavior/async_copy.rs:383,1
    - Dst: to_string
      Src: /src/opendal/core/tests/behavior/async_copy.rs:383,1
    - Dst: delete
      Src: /src/opendal/core/tests/behavior/async_copy.rs:384,1
    - Dst: expect
      Src: /src/opendal/core/tests/behavior/async_copy.rs:384,1
    - Dst: delete
      Src: /src/opendal/core/tests/behavior/async_copy.rs:385,1
    - Dst: expect
      Src: /src/opendal/core/tests/behavior/async_copy.rs:385,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_copy.rs:386,1
    - Dst: copy_with
      Src: /src/opendal/core/tests/behavior/async_copy.rs:389,1
    - Dst: FutureCopy::if_match
      Src: /src/opendal/core/tests/behavior/async_copy.rs:389,1
    - Dst: read
      Src: /src/opendal/core/tests/behavior/async_copy.rs:393,1
    - Dst: expect
      Src: /src/opendal/core/tests/behavior/async_copy.rs:393,1
    - Dst: to_bytes
      Src: /src/opendal/core/tests/behavior/async_copy.rs:393,1
    - Dst: delete
      Src: /src/opendal/core/tests/behavior/async_copy.rs:403,1
    - Dst: expect
      Src: /src/opendal/core/tests/behavior/async_copy.rs:403,1
    - Dst: delete
      Src: /src/opendal/core/tests/behavior/async_copy.rs:404,1
    - Dst: expect
      Src: /src/opendal/core/tests/behavior/async_copy.rs:404,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_copy.rs:405,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 110
    argCount: 1
    argNames:
    - op
    argTypes:
    - Operator
    constantsTouched: []
    func_position:
      end: 406
      start: 369
    functionDepth: 30
    functionLinenumber: 369
    functionLinenumberEnd: 406
    functionName: test_copy_with_if_match_match
    functionSourceFile: /src/opendal/core/tests/behavior/async_copy.rs
    functionUses: 0
    functionsReached:
    - to_string
    - info
    - etag
    - read
    - expect
    - Ok
    - delete
    - ServiceInfo::capability
    - uuid::Uuid::new_v4
    - gen_bytes
    - clone
    - map
    - FutureCopy::if_match
    - to_bytes
    - copy_with
    - write
    - stat
    linkageType: ''
    returnType: Result
    signature: 'pub async fn test_copy_with_if_match_match(op: Operator) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: info
      Src: /src/opendal/core/tests/behavior/async_copy.rs:410,1
    - Dst: ServiceInfo::capability
      Src: /src/opendal/core/tests/behavior/async_copy.rs:410,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_copy.rs:411,1
    - Dst: uuid::Uuid::new_v4
      Src: /src/opendal/core/tests/behavior/async_copy.rs:414,1
    - Dst: to_string
      Src: /src/opendal/core/tests/behavior/async_copy.rs:414,1
    - Dst: gen_bytes
      Src: /src/opendal/core/tests/behavior/async_copy.rs:415,1
    - Dst: info
      Src: /src/opendal/core/tests/behavior/async_copy.rs:415,1
    - Dst: ServiceInfo::capability
      Src: /src/opendal/core/tests/behavior/async_copy.rs:415,1
    - Dst: write
      Src: /src/opendal/core/tests/behavior/async_copy.rs:416,1
    - Dst: clone
      Src: /src/opendal/core/tests/behavior/async_copy.rs:416,1
    - Dst: uuid::Uuid::new_v4
      Src: /src/opendal/core/tests/behavior/async_copy.rs:418,1
    - Dst: to_string
      Src: /src/opendal/core/tests/behavior/async_copy.rs:418,1
    - Dst: gen_bytes
      Src: /src/opendal/core/tests/behavior/async_copy.rs:419,1
    - Dst: info
      Src: /src/opendal/core/tests/behavior/async_copy.rs:419,1
    - Dst: ServiceInfo::capability
      Src: /src/opendal/core/tests/behavior/async_copy.rs:419,1
    - Dst: write
      Src: /src/opendal/core/tests/behavior/async_copy.rs:421,1
    - Dst: clone
      Src: /src/opendal/core/tests/behavior/async_copy.rs:421,1
    - Dst: copy_with
      Src: /src/opendal/core/tests/behavior/async_copy.rs:423,1
    - Dst: FutureCopy::if_match
      Src: /src/opendal/core/tests/behavior/async_copy.rs:423,1
    - Dst: expect_err
      Src: /src/opendal/core/tests/behavior/async_copy.rs:423,1
    - Dst: read
      Src: /src/opendal/core/tests/behavior/async_copy.rs:430,1
    - Dst: expect
      Src: /src/opendal/core/tests/behavior/async_copy.rs:430,1
    - Dst: to_bytes
      Src: /src/opendal/core/tests/behavior/async_copy.rs:430,1
    - Dst: delete
      Src: /src/opendal/core/tests/behavior/async_copy.rs:440,1
    - Dst: expect
      Src: /src/opendal/core/tests/behavior/async_copy.rs:440,1
    - Dst: delete
      Src: /src/opendal/core/tests/behavior/async_copy.rs:441,1
    - Dst: expect
      Src: /src/opendal/core/tests/behavior/async_copy.rs:441,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_copy.rs:442,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 80
    argCount: 1
    argNames:
    - op
    argTypes:
    - Operator
    constantsTouched: []
    func_position:
      end: 443
      start: 409
    functionDepth: 30
    functionLinenumber: 409
    functionLinenumberEnd: 443
    functionName: test_copy_with_if_match_mismatch
    functionSourceFile: /src/opendal/core/tests/behavior/async_copy.rs
    functionUses: 0
    functionsReached:
    - to_string
    - info
    - read
    - expect
    - Ok
    - delete
    - ServiceInfo::capability
    - uuid::Uuid::new_v4
    - to_bytes
    - gen_bytes
    - clone
    - FutureCopy::if_match
    - expect_err
    - copy_with
    - write
    linkageType: ''
    returnType: Result
    signature: 'pub async fn test_copy_with_if_match_mismatch(op: Operator) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: info
      Src: /src/opendal/core/tests/behavior/async_copy.rs:447,1
    - Dst: ServiceInfo::capability
      Src: /src/opendal/core/tests/behavior/async_copy.rs:447,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_copy.rs:448,1
    - Dst: uuid::Uuid::new_v4
      Src: /src/opendal/core/tests/behavior/async_copy.rs:451,1
    - Dst: to_string
      Src: /src/opendal/core/tests/behavior/async_copy.rs:451,1
    - Dst: gen_bytes
      Src: /src/opendal/core/tests/behavior/async_copy.rs:452,1
    - Dst: info
      Src: /src/opendal/core/tests/behavior/async_copy.rs:452,1
    - Dst: ServiceInfo::capability
      Src: /src/opendal/core/tests/behavior/async_copy.rs:452,1
    - Dst: gen_bytes
      Src: /src/opendal/core/tests/behavior/async_copy.rs:453,1
    - Dst: info
      Src: /src/opendal/core/tests/behavior/async_copy.rs:453,1
    - Dst: ServiceInfo::capability
      Src: /src/opendal/core/tests/behavior/async_copy.rs:453,1
    - Dst: write
      Src: /src/opendal/core/tests/behavior/async_copy.rs:456,1
    - Dst: clone
      Src: /src/opendal/core/tests/behavior/async_copy.rs:456,1
    - Dst: stat
      Src: /src/opendal/core/tests/behavior/async_copy.rs:457,1
    - Dst: version
      Src: /src/opendal/core/tests/behavior/async_copy.rs:457,1
    - Dst: expect
      Src: /src/opendal/core/tests/behavior/async_copy.rs:457,1
    - Dst: to_string
      Src: /src/opendal/core/tests/behavior/async_copy.rs:457,1
    - Dst: write
      Src: /src/opendal/core/tests/behavior/async_copy.rs:464,1
    - Dst: uuid::Uuid::new_v4
      Src: /src/opendal/core/tests/behavior/async_copy.rs:466,1
    - Dst: to_string
      Src: /src/opendal/core/tests/behavior/async_copy.rs:466,1
    - Dst: copy_with
      Src: /src/opendal/core/tests/behavior/async_copy.rs:467,1
    - Dst: FutureCopy::source_version
      Src: /src/opendal/core/tests/behavior/async_copy.rs:467,1
    - Dst: read
      Src: /src/opendal/core/tests/behavior/async_copy.rs:471,1
    - Dst: expect
      Src: /src/opendal/core/tests/behavior/async_copy.rs:471,1
    - Dst: to_bytes
      Src: /src/opendal/core/tests/behavior/async_copy.rs:471,1
    - Dst: delete
      Src: /src/opendal/core/tests/behavior/async_copy.rs:481,1
    - Dst: expect
      Src: /src/opendal/core/tests/behavior/async_copy.rs:481,1
    - Dst: delete
      Src: /src/opendal/core/tests/behavior/async_copy.rs:482,1
    - Dst: expect
      Src: /src/opendal/core/tests/behavior/async_copy.rs:482,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_copy.rs:483,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 88
    argCount: 1
    argNames:
    - op
    argTypes:
    - Operator
    constantsTouched: []
    func_position:
      end: 484
      start: 446
    functionDepth: 30
    functionLinenumber: 446
    functionLinenumberEnd: 484
    functionName: test_copy_with_source_version_to_new_file
    functionSourceFile: /src/opendal/core/tests/behavior/async_copy.rs
    functionUses: 0
    functionsReached:
    - to_string
    - info
    - read
    - expect
    - Ok
    - delete
    - ServiceInfo::capability
    - uuid::Uuid::new_v4
    - gen_bytes
    - clone
    - FutureCopy::source_version
    - copy_with
    - to_bytes
    - version
    - write
    - stat
    linkageType: ''
    returnType: Result
    signature: 'pub async fn test_copy_with_source_version_to_new_file(op: Operator)
      -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: info
      Src: /src/opendal/core/tests/behavior/async_copy.rs:488,1
    - Dst: ServiceInfo::capability
      Src: /src/opendal/core/tests/behavior/async_copy.rs:488,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_copy.rs:489,1
    - Dst: uuid::Uuid::new_v4
      Src: /src/opendal/core/tests/behavior/async_copy.rs:492,1
    - Dst: to_string
      Src: /src/opendal/core/tests/behavior/async_copy.rs:492,1
    - Dst: gen_bytes
      Src: /src/opendal/core/tests/behavior/async_copy.rs:493,1
    - Dst: info
      Src: /src/opendal/core/tests/behavior/async_copy.rs:493,1
    - Dst: ServiceInfo::capability
      Src: /src/opendal/core/tests/behavior/async_copy.rs:493,1
    - Dst: gen_bytes
      Src: /src/opendal/core/tests/behavior/async_copy.rs:494,1
    - Dst: info
      Src: /src/opendal/core/tests/behavior/async_copy.rs:494,1
    - Dst: ServiceInfo::capability
      Src: /src/opendal/core/tests/behavior/async_copy.rs:494,1
    - Dst: write
      Src: /src/opendal/core/tests/behavior/async_copy.rs:497,1
    - Dst: clone
      Src: /src/opendal/core/tests/behavior/async_copy.rs:497,1
    - Dst: stat
      Src: /src/opendal/core/tests/behavior/async_copy.rs:498,1
    - Dst: version
      Src: /src/opendal/core/tests/behavior/async_copy.rs:498,1
    - Dst: expect
      Src: /src/opendal/core/tests/behavior/async_copy.rs:498,1
    - Dst: to_string
      Src: /src/opendal/core/tests/behavior/async_copy.rs:498,1
    - Dst: write
      Src: /src/opendal/core/tests/behavior/async_copy.rs:505,1
    - Dst: copy_with
      Src: /src/opendal/core/tests/behavior/async_copy.rs:507,1
    - Dst: FutureCopy::source_version
      Src: /src/opendal/core/tests/behavior/async_copy.rs:507,1
    - Dst: read
      Src: /src/opendal/core/tests/behavior/async_copy.rs:511,1
    - Dst: expect
      Src: /src/opendal/core/tests/behavior/async_copy.rs:511,1
    - Dst: to_bytes
      Src: /src/opendal/core/tests/behavior/async_copy.rs:511,1
    - Dst: delete
      Src: /src/opendal/core/tests/behavior/async_copy.rs:521,1
    - Dst: expect
      Src: /src/opendal/core/tests/behavior/async_copy.rs:521,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_copy.rs:522,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 78
    argCount: 1
    argNames:
    - op
    argTypes:
    - Operator
    constantsTouched: []
    func_position:
      end: 523
      start: 487
    functionDepth: 30
    functionLinenumber: 487
    functionLinenumberEnd: 523
    functionName: test_copy_with_source_version_to_same_file
    functionSourceFile: /src/opendal/core/tests/behavior/async_copy.rs
    functionUses: 0
    functionsReached:
    - to_string
    - info
    - read
    - expect
    - Ok
    - delete
    - ServiceInfo::capability
    - uuid::Uuid::new_v4
    - gen_bytes
    - clone
    - FutureCopy::source_version
    - copy_with
    - to_bytes
    - version
    - write
    - stat
    linkageType: ''
    returnType: Result
    signature: 'pub async fn test_copy_with_source_version_to_same_file(op: Operator)
      -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: info
      Src: /src/opendal/core/tests/behavior/async_copy.rs:527,1
    - Dst: ServiceInfo::capability
      Src: /src/opendal/core/tests/behavior/async_copy.rs:527,1
    - Dst: copy_multi_chunk_size
      Src: /src/opendal/core/tests/behavior/async_copy.rs:528,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_copy.rs:529,1
    - Dst: uuid::Uuid::new_v4
      Src: /src/opendal/core/tests/behavior/async_copy.rs:532,1
    - Dst: to_string
      Src: /src/opendal/core/tests/behavior/async_copy.rs:532,1
    - Dst: gen_fixed_bytes
      Src: /src/opendal/core/tests/behavior/async_copy.rs:533,1
    - Dst: write
      Src: /src/opendal/core/tests/behavior/async_copy.rs:535,1
    - Dst: Vec::clone
      Src: /src/opendal/core/tests/behavior/async_copy.rs:535,1
    - Dst: uuid::Uuid::new_v4
      Src: /src/opendal/core/tests/behavior/async_copy.rs:537,1
    - Dst: to_string
      Src: /src/opendal/core/tests/behavior/async_copy.rs:537,1
    - Dst: copy_with
      Src: /src/opendal/core/tests/behavior/async_copy.rs:538,1
    - Dst: FutureCopy::chunk
      Src: /src/opendal/core/tests/behavior/async_copy.rs:538,1
    - Dst: read
      Src: /src/opendal/core/tests/behavior/async_copy.rs:542,1
    - Dst: expect
      Src: /src/opendal/core/tests/behavior/async_copy.rs:542,1
    - Dst: to_bytes
      Src: /src/opendal/core/tests/behavior/async_copy.rs:542,1
    - Dst: delete
      Src: /src/opendal/core/tests/behavior/async_copy.rs:553,1
    - Dst: expect
      Src: /src/opendal/core/tests/behavior/async_copy.rs:553,1
    - Dst: delete
      Src: /src/opendal/core/tests/behavior/async_copy.rs:554,1
    - Dst: expect
      Src: /src/opendal/core/tests/behavior/async_copy.rs:554,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_copy.rs:555,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 59
    argCount: 1
    argNames:
    - op
    argTypes:
    - Operator
    constantsTouched: []
    func_position:
      end: 556
      start: 526
    functionDepth: 36
    functionLinenumber: 526
    functionLinenumberEnd: 556
    functionName: test_copy_with_chunk
    functionSourceFile: /src/opendal/core/tests/behavior/async_copy.rs
    functionUses: 0
    functionsReached:
    - to_string
    - info
    - read
    - expect
    - Ok
    - delete
    - copy_multi_chunk_size
    - ServiceInfo::capability
    - uuid::Uuid::new_v4
    - FutureCopy::chunk
    - gen_fixed_bytes
    - to_bytes
    - copy_with
    - write
    - Vec::clone
    linkageType: ''
    returnType: Result
    signature: 'pub async fn test_copy_with_chunk(op: Operator) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: uuid::Uuid::new_v4
      Src: /src/opendal/core/tests/behavior/async_copy.rs:560,1
    - Dst: to_string
      Src: /src/opendal/core/tests/behavior/async_copy.rs:560,1
    - Dst: gen_bytes
      Src: /src/opendal/core/tests/behavior/async_copy.rs:561,1
    - Dst: info
      Src: /src/opendal/core/tests/behavior/async_copy.rs:561,1
    - Dst: ServiceInfo::capability
      Src: /src/opendal/core/tests/behavior/async_copy.rs:561,1
    - Dst: write
      Src: /src/opendal/core/tests/behavior/async_copy.rs:563,1
    - Dst: clone
      Src: /src/opendal/core/tests/behavior/async_copy.rs:563,1
    - Dst: uuid::Uuid::new_v4
      Src: /src/opendal/core/tests/behavior/async_copy.rs:565,1
    - Dst: to_string
      Src: /src/opendal/core/tests/behavior/async_copy.rs:565,1
    - Dst: copier
      Src: /src/opendal/core/tests/behavior/async_copy.rs:566,1
    - Dst: Result::next
      Src: /src/opendal/core/tests/behavior/async_copy.rs:568,1
    - Dst: is_some
      Src: /src/opendal/core/tests/behavior/async_copy.rs:568,1
    - Dst: read
      Src: /src/opendal/core/tests/behavior/async_copy.rs:570,1
    - Dst: expect
      Src: /src/opendal/core/tests/behavior/async_copy.rs:570,1
    - Dst: to_bytes
      Src: /src/opendal/core/tests/behavior/async_copy.rs:570,1
    - Dst: delete
      Src: /src/opendal/core/tests/behavior/async_copy.rs:580,1
    - Dst: expect
      Src: /src/opendal/core/tests/behavior/async_copy.rs:580,1
    - Dst: delete
      Src: /src/opendal/core/tests/behavior/async_copy.rs:581,1
    - Dst: expect
      Src: /src/opendal/core/tests/behavior/async_copy.rs:581,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_copy.rs:582,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 58
    argCount: 1
    argNames:
    - op
    argTypes:
    - Operator
    constantsTouched: []
    func_position:
      end: 583
      start: 559
    functionDepth: 30
    functionLinenumber: 559
    functionLinenumberEnd: 583
    functionName: test_copier_file
    functionSourceFile: /src/opendal/core/tests/behavior/async_copy.rs
    functionUses: 0
    functionsReached:
    - to_string
    - info
    - read
    - expect
    - Ok
    - delete
    - ServiceInfo::capability
    - uuid::Uuid::new_v4
    - gen_bytes
    - clone
    - Result::next
    - is_some
    - to_bytes
    - write
    - copier
    linkageType: ''
    returnType: Result
    signature: 'pub async fn test_copier_file(op: Operator) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: info
      Src: /src/opendal/core/tests/behavior/async_copy.rs:587,1
    - Dst: ServiceInfo::capability
      Src: /src/opendal/core/tests/behavior/async_copy.rs:587,1
    - Dst: copy_multi_chunk_size
      Src: /src/opendal/core/tests/behavior/async_copy.rs:588,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_copy.rs:589,1
    - Dst: uuid::Uuid::new_v4
      Src: /src/opendal/core/tests/behavior/async_copy.rs:592,1
    - Dst: to_string
      Src: /src/opendal/core/tests/behavior/async_copy.rs:592,1
    - Dst: gen_fixed_bytes
      Src: /src/opendal/core/tests/behavior/async_copy.rs:593,1
    - Dst: write
      Src: /src/opendal/core/tests/behavior/async_copy.rs:595,1
    - Dst: Vec::clone
      Src: /src/opendal/core/tests/behavior/async_copy.rs:595,1
    - Dst: uuid::Uuid::new_v4
      Src: /src/opendal/core/tests/behavior/async_copy.rs:597,1
    - Dst: to_string
      Src: /src/opendal/core/tests/behavior/async_copy.rs:597,1
    - Dst: copy_with
      Src: /src/opendal/core/tests/behavior/async_copy.rs:598,1
    - Dst: FutureCopy::chunk
      Src: /src/opendal/core/tests/behavior/async_copy.rs:598,1
    - Dst: Self::concurrent
      Src: /src/opendal/core/tests/behavior/async_copy.rs:598,1
    - Dst: read
      Src: /src/opendal/core/tests/behavior/async_copy.rs:603,1
    - Dst: expect
      Src: /src/opendal/core/tests/behavior/async_copy.rs:603,1
    - Dst: to_bytes
      Src: /src/opendal/core/tests/behavior/async_copy.rs:603,1
    - Dst: delete
      Src: /src/opendal/core/tests/behavior/async_copy.rs:614,1
    - Dst: expect
      Src: /src/opendal/core/tests/behavior/async_copy.rs:614,1
    - Dst: delete
      Src: /src/opendal/core/tests/behavior/async_copy.rs:615,1
    - Dst: expect
      Src: /src/opendal/core/tests/behavior/async_copy.rs:615,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_copy.rs:616,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 61
    argCount: 1
    argNames:
    - op
    argTypes:
    - Operator
    constantsTouched: []
    func_position:
      end: 617
      start: 586
    functionDepth: 36
    functionLinenumber: 586
    functionLinenumberEnd: 617
    functionName: test_copy_with_chunk_and_concurrent
    functionSourceFile: /src/opendal/core/tests/behavior/async_copy.rs
    functionUses: 0
    functionsReached:
    - to_string
    - info
    - read
    - expect
    - Ok
    - delete
    - copy_multi_chunk_size
    - ServiceInfo::capability
    - uuid::Uuid::new_v4
    - FutureCopy::chunk
    - gen_fixed_bytes
    - Self::concurrent
    - to_bytes
    - copy_with
    - write
    - Vec::clone
    linkageType: ''
    returnType: Result
    signature: 'pub async fn test_copy_with_chunk_and_concurrent(op: Operator) ->
      Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: uuid::Uuid::new_v4
      Src: /src/opendal/core/tests/behavior/async_copy.rs:621,1
    - Dst: to_string
      Src: /src/opendal/core/tests/behavior/async_copy.rs:621,1
    - Dst: gen_bytes
      Src: /src/opendal/core/tests/behavior/async_copy.rs:622,1
    - Dst: info
      Src: /src/opendal/core/tests/behavior/async_copy.rs:622,1
    - Dst: ServiceInfo::capability
      Src: /src/opendal/core/tests/behavior/async_copy.rs:622,1
    - Dst: write
      Src: /src/opendal/core/tests/behavior/async_copy.rs:624,1
    - Dst: uuid::Uuid::new_v4
      Src: /src/opendal/core/tests/behavior/async_copy.rs:626,1
    - Dst: to_string
      Src: /src/opendal/core/tests/behavior/async_copy.rs:626,1
    - Dst: copier
      Src: /src/opendal/core/tests/behavior/async_copy.rs:627,1
    - Dst: Result::next
      Src: /src/opendal/core/tests/behavior/async_copy.rs:629,1
    - Dst: is_some
      Src: /src/opendal/core/tests/behavior/async_copy.rs:629,1
    - Dst: delete
      Src: /src/opendal/core/tests/behavior/async_copy.rs:632,1
    - Dst: expect
      Src: /src/opendal/core/tests/behavior/async_copy.rs:632,1
    - Dst: delete
      Src: /src/opendal/core/tests/behavior/async_copy.rs:633,1
    - Dst: expect
      Src: /src/opendal/core/tests/behavior/async_copy.rs:633,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_copy.rs:634,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 48
    argCount: 1
    argNames:
    - op
    argTypes:
    - Operator
    constantsTouched: []
    func_position:
      end: 635
      start: 620
    functionDepth: 30
    functionLinenumber: 620
    functionLinenumberEnd: 635
    functionName: test_copier_completion
    functionSourceFile: /src/opendal/core/tests/behavior/async_copy.rs
    functionUses: 0
    functionsReached:
    - to_string
    - info
    - expect
    - Ok
    - delete
    - ServiceInfo::capability
    - uuid::Uuid::new_v4
    - gen_bytes
    - Result::next
    - is_some
    - write
    - copier
    linkageType: ''
    returnType: Result
    signature: 'pub async fn test_copier_completion(op: Operator) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: uuid::Uuid::new_v4
      Src: /src/opendal/core/tests/behavior/async_copy.rs:639,1
    - Dst: to_string
      Src: /src/opendal/core/tests/behavior/async_copy.rs:639,1
    - Dst: gen_bytes
      Src: /src/opendal/core/tests/behavior/async_copy.rs:640,1
    - Dst: info
      Src: /src/opendal/core/tests/behavior/async_copy.rs:640,1
    - Dst: ServiceInfo::capability
      Src: /src/opendal/core/tests/behavior/async_copy.rs:640,1
    - Dst: write
      Src: /src/opendal/core/tests/behavior/async_copy.rs:642,1
    - Dst: uuid::Uuid::new_v4
      Src: /src/opendal/core/tests/behavior/async_copy.rs:644,1
    - Dst: to_string
      Src: /src/opendal/core/tests/behavior/async_copy.rs:644,1
    - Dst: copier
      Src: /src/opendal/core/tests/behavior/async_copy.rs:645,1
    - Dst: Result::abort
      Src: /src/opendal/core/tests/behavior/async_copy.rs:646,1
    - Dst: delete
      Src: /src/opendal/core/tests/behavior/async_copy.rs:648,1
    - Dst: expect
      Src: /src/opendal/core/tests/behavior/async_copy.rs:648,1
    - Dst: delete
      Src: /src/opendal/core/tests/behavior/async_copy.rs:649,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_copy.rs:650,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 41
    argCount: 1
    argNames:
    - op
    argTypes:
    - Operator
    constantsTouched: []
    func_position:
      end: 651
      start: 638
    functionDepth: 30
    functionLinenumber: 638
    functionLinenumberEnd: 651
    functionName: test_copier_abort
    functionSourceFile: /src/opendal/core/tests/behavior/async_copy.rs
    functionUses: 0
    functionsReached:
    - to_string
    - info
    - Result::abort
    - expect
    - Ok
    - delete
    - ServiceInfo::capability
    - uuid::Uuid::new_v4
    - gen_bytes
    - write
    - copier
    linkageType: ''
    returnType: Result
    signature: 'pub async fn test_copier_abort(op: Operator) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: uuid::Uuid::new_v4
      Src: /src/opendal/core/tests/behavior/async_copy.rs:655,1
    - Dst: to_string
      Src: /src/opendal/core/tests/behavior/async_copy.rs:655,1
    - Dst: gen_bytes
      Src: /src/opendal/core/tests/behavior/async_copy.rs:656,1
    - Dst: info
      Src: /src/opendal/core/tests/behavior/async_copy.rs:656,1
    - Dst: ServiceInfo::capability
      Src: /src/opendal/core/tests/behavior/async_copy.rs:656,1
    - Dst: write
      Src: /src/opendal/core/tests/behavior/async_copy.rs:658,1
    - Dst: clone
      Src: /src/opendal/core/tests/behavior/async_copy.rs:658,1
    - Dst: uuid::Uuid::new_v4
      Src: /src/opendal/core/tests/behavior/async_copy.rs:660,1
    - Dst: to_string
      Src: /src/opendal/core/tests/behavior/async_copy.rs:660,1
    - Dst: copier_with
      Src: /src/opendal/core/tests/behavior/async_copy.rs:661,1
    - Dst: FutureCopier::if_not_exists
      Src: /src/opendal/core/tests/behavior/async_copy.rs:661,1
    - Dst: Result::next
      Src: /src/opendal/core/tests/behavior/async_copy.rs:666,1
    - Dst: is_some
      Src: /src/opendal/core/tests/behavior/async_copy.rs:666,1
    - Dst: read
      Src: /src/opendal/core/tests/behavior/async_copy.rs:668,1
    - Dst: expect
      Src: /src/opendal/core/tests/behavior/async_copy.rs:668,1
    - Dst: to_bytes
      Src: /src/opendal/core/tests/behavior/async_copy.rs:668,1
    - Dst: delete
      Src: /src/opendal/core/tests/behavior/async_copy.rs:678,1
    - Dst: expect
      Src: /src/opendal/core/tests/behavior/async_copy.rs:678,1
    - Dst: delete
      Src: /src/opendal/core/tests/behavior/async_copy.rs:679,1
    - Dst: expect
      Src: /src/opendal/core/tests/behavior/async_copy.rs:679,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_copy.rs:680,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 60
    argCount: 1
    argNames:
    - op
    argTypes:
    - Operator
    constantsTouched: []
    func_position:
      end: 681
      start: 654
    functionDepth: 30
    functionLinenumber: 654
    functionLinenumberEnd: 681
    functionName: test_copier_with_if_not_exists_to_new_file
    functionSourceFile: /src/opendal/core/tests/behavior/async_copy.rs
    functionUses: 0
    functionsReached:
    - to_string
    - info
    - read
    - expect
    - Ok
    - delete
    - ServiceInfo::capability
    - uuid::Uuid::new_v4
    - copier_with
    - gen_bytes
    - clone
    - Result::next
    - is_some
    - to_bytes
    - FutureCopier::if_not_exists
    - write
    linkageType: ''
    returnType: Result
    signature: 'pub async fn test_copier_with_if_not_exists_to_new_file(op: Operator)
      -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: uuid::Uuid::new_v4
      Src: /src/opendal/core/tests/behavior/async_copy.rs:685,1
    - Dst: to_string
      Src: /src/opendal/core/tests/behavior/async_copy.rs:685,1
    - Dst: gen_bytes
      Src: /src/opendal/core/tests/behavior/async_copy.rs:686,1
    - Dst: info
      Src: /src/opendal/core/tests/behavior/async_copy.rs:686,1
    - Dst: ServiceInfo::capability
      Src: /src/opendal/core/tests/behavior/async_copy.rs:686,1
    - Dst: write
      Src: /src/opendal/core/tests/behavior/async_copy.rs:688,1
    - Dst: uuid::Uuid::new_v4
      Src: /src/opendal/core/tests/behavior/async_copy.rs:690,1
    - Dst: to_string
      Src: /src/opendal/core/tests/behavior/async_copy.rs:690,1
    - Dst: gen_bytes
      Src: /src/opendal/core/tests/behavior/async_copy.rs:691,1
    - Dst: info
      Src: /src/opendal/core/tests/behavior/async_copy.rs:691,1
    - Dst: ServiceInfo::capability
      Src: /src/opendal/core/tests/behavior/async_copy.rs:691,1
    - Dst: write
      Src: /src/opendal/core/tests/behavior/async_copy.rs:692,1
    - Dst: clone
      Src: /src/opendal/core/tests/behavior/async_copy.rs:692,1
    - Dst: copier_with
      Src: /src/opendal/core/tests/behavior/async_copy.rs:694,1
    - Dst: FutureCopier::if_not_exists
      Src: /src/opendal/core/tests/behavior/async_copy.rs:694,1
    - Dst: expect
      Src: /src/opendal/core/tests/behavior/async_copy.rs:694,1
    - Dst: Result::next
      Src: /src/opendal/core/tests/behavior/async_copy.rs:699,1
    - Dst: expect_err
      Src: /src/opendal/core/tests/behavior/async_copy.rs:699,1
    - Dst: read
      Src: /src/opendal/core/tests/behavior/async_copy.rs:702,1
    - Dst: expect
      Src: /src/opendal/core/tests/behavior/async_copy.rs:702,1
    - Dst: to_bytes
      Src: /src/opendal/core/tests/behavior/async_copy.rs:702,1
    - Dst: delete
      Src: /src/opendal/core/tests/behavior/async_copy.rs:712,1
    - Dst: expect
      Src: /src/opendal/core/tests/behavior/async_copy.rs:712,1
    - Dst: delete
      Src: /src/opendal/core/tests/behavior/async_copy.rs:713,1
    - Dst: expect
      Src: /src/opendal/core/tests/behavior/async_copy.rs:713,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_copy.rs:714,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 70
    argCount: 1
    argNames:
    - op
    argTypes:
    - Operator
    constantsTouched: []
    func_position:
      end: 715
      start: 684
    functionDepth: 30
    functionLinenumber: 684
    functionLinenumberEnd: 715
    functionName: test_copier_with_if_not_exists_to_existing_file
    functionSourceFile: /src/opendal/core/tests/behavior/async_copy.rs
    functionUses: 0
    functionsReached:
    - to_string
    - info
    - read
    - expect
    - Ok
    - delete
    - ServiceInfo::capability
    - uuid::Uuid::new_v4
    - copier_with
    - gen_bytes
    - clone
    - to_bytes
    - Result::next
    - expect_err
    - FutureCopier::if_not_exists
    - write
    linkageType: ''
    returnType: Result
    signature: 'pub async fn test_copier_with_if_not_exists_to_existing_file(op: Operator)
      -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: new_dir_path
      Src: /src/opendal/core/tests/behavior/async_create_dir.rs:32,1
    - Dst: create_dir
      Src: /src/opendal/core/tests/behavior/async_create_dir.rs:34,1
    - Dst: stat
      Src: /src/opendal/core/tests/behavior/async_create_dir.rs:36,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_create_dir.rs:38,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 1
    argNames:
    - op
    argTypes:
    - Operator
    constantsTouched: []
    func_position:
      end: 39
      start: 31
    functionDepth: 34
    functionLinenumber: 31
    functionLinenumberEnd: 39
    functionName: test_create_dir
    functionSourceFile: /src/opendal/core/tests/behavior/async_create_dir.rs
    functionUses: 0
    functionsReached:
    - new_dir_path
    - create_dir
    - stat
    - Ok
    linkageType: ''
    returnType: Result
    signature: 'pub async fn test_create_dir(op: Operator) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: new_dir_path
      Src: /src/opendal/core/tests/behavior/async_create_dir.rs:43,1
    - Dst: create_dir
      Src: /src/opendal/core/tests/behavior/async_create_dir.rs:45,1
    - Dst: create_dir
      Src: /src/opendal/core/tests/behavior/async_create_dir.rs:47,1
    - Dst: stat
      Src: /src/opendal/core/tests/behavior/async_create_dir.rs:49,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_create_dir.rs:52,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 22
    argCount: 1
    argNames:
    - op
    argTypes:
    - Operator
    constantsTouched: []
    func_position:
      end: 53
      start: 42
    functionDepth: 34
    functionLinenumber: 42
    functionLinenumberEnd: 53
    functionName: test_create_dir_existing
    functionSourceFile: /src/opendal/core/tests/behavior/async_create_dir.rs
    functionUses: 0
    functionsReached:
    - new_dir_path
    - create_dir
    - stat
    - Ok
    linkageType: ''
    returnType: Result
    signature: 'pub async fn test_create_dir_existing(op: Operator) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Sha256::digest
      Src: /src/opendal/core/testkit/src/utils.rs:36,1
    - Dst: String::with_capacity
      Src: /src/opendal/core/testkit/src/utils.rs:37,1
    - Dst: String::len
      Src: /src/opendal/core/testkit/src/utils.rs:37,1
    - Dst: expect
      Src: /src/opendal/core/testkit/src/utils.rs:39,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - data
    argTypes:
    - impl AsRef<[u8]>
    constantsTouched: []
    func_position:
      end: 42
      start: 33
    functionDepth: 3
    functionLinenumber: 33
    functionLinenumberEnd: 42
    functionName: sha256_digest
    functionSourceFile: /src/opendal/core/testkit/src/utils.rs
    functionUses: 1
    functionsReached:
    - String::with_capacity
    - Sha256::digest
    - expect
    - String::len
    linkageType: ''
    returnType: String
    signature: 'pub(crate) fn sha256_digest(data: impl AsRef<[u8]>) -> String'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: rand::rng
      Src: /src/opendal/core/tests/behavior/utils.rs:47,1
    - Dst: random_range
      Src: /src/opendal/core/tests/behavior/utils.rs:49,1
    - Dst: fill_bytes
      Src: /src/opendal/core/tests/behavior/utils.rs:51,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - range
    argTypes:
    - impl SampleRange<usize>
    constantsTouched: []
    func_position:
      end: 54
      start: 46
    functionDepth: 0
    functionLinenumber: 46
    functionLinenumberEnd: 54
    functionName: gen_bytes_with_range
    functionSourceFile: /src/opendal/core/tests/behavior/utils.rs
    functionUses: 5
    functionsReached:
    - fill_bytes
    - random_range
    - rand::rng
    linkageType: ''
    returnType: (Vec
    signature: 'pub fn gen_bytes_with_range(range: impl SampleRange<usize>) -> (Vec<u8>,
      usize)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: '&mut ThreadRng::fill_bytes'
      Src: /src/opendal/core/benches/ops/utils.rs:25,1
    - Dst: Result::into
      Src: /src/opendal/core/benches/ops/utils.rs:27,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - rng
    - size
    argTypes:
    - '&mut ThreadRng'
    - usize
    constantsTouched: []
    func_position:
      end: 28
      start: 23
    functionDepth: 29
    functionLinenumber: 23
    functionLinenumberEnd: 28
    functionName: gen_bytes
    functionSourceFile: /src/opendal/core/benches/ops/utils.rs
    functionUses: 41
    functionsReached:
    - Result::into
    - '&mut ThreadRng::fill_bytes'
    linkageType: ''
    returnType: Bytes
    signature: 'pub fn gen_bytes(rng: &mut ThreadRng, size: usize) -> Bytes'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: gen_bytes_with_range
      Src: /src/opendal/core/tests/behavior/utils.rs:61,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - size
    argTypes:
    - usize
    constantsTouched: []
    func_position:
      end: 64
      start: 60
    functionDepth: 1
    functionLinenumber: 60
    functionLinenumberEnd: 64
    functionName: gen_fixed_bytes
    functionSourceFile: /src/opendal/core/tests/behavior/utils.rs
    functionUses: 17
    functionsReached:
    - gen_bytes_with_range
    linkageType: ''
    returnType: Vec
    signature: 'pub fn gen_fixed_bytes(size: usize) -> Vec<u8>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: rand::rng
      Src: /src/opendal/core/tests/behavior/utils.rs:67,1
    - Dst: random_range
      Src: /src/opendal/core/tests/behavior/utils.rs:70,1
    - Dst: random_range
      Src: /src/opendal/core/tests/behavior/utils.rs:71,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 13
    argCount: 1
    argNames:
    - size
    argTypes:
    - usize
    constantsTouched: []
    func_position:
      end: 74
      start: 66
    functionDepth: 0
    functionLinenumber: 66
    functionLinenumberEnd: 74
    functionName: gen_offset_length
    functionSourceFile: /src/opendal/core/tests/behavior/utils.rs
    functionUses: 1
    functionsReached:
    - random_range
    - rand::rng
    linkageType: ''
    returnType: (u64, u64)
    signature: 'pub fn gen_offset_length(size: usize) -> (u64, u64)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: handle
      Src: /src/opendal/core/tests/behavior/utils.rs:82,1
    - Dst: clone
      Src: /src/opendal/core/tests/behavior/utils.rs:82,1
    - Dst: clone
      Src: /src/opendal/core/tests/behavior/utils.rs:83,1
    - Dst: Trial::test
      Src: /src/opendal/core/tests/behavior/utils.rs:85,1
    - Dst: block_on
      Src: /src/opendal/core/tests/behavior/utils.rs:86,1
    - Dst: f
      Src: /src/opendal/core/tests/behavior/utils.rs:87,1
    - Dst: F::Output::map_err
      Src: /src/opendal/core/tests/behavior/utils.rs:86,1
    - Dst: Failed::from
      Src: /src/opendal/core/tests/behavior/utils.rs:88,1
    - Dst: Error::to_string
      Src: /src/opendal/core/tests/behavior/utils.rs:88,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 17
    argCount: 3
    argNames:
    - name
    - op
    - f
    argTypes:
    - '&str'
    - '&Operator'
    - F
    constantsTouched: []
    func_position:
      end: 90
      start: 77
    functionDepth: 38
    functionLinenumber: 77
    functionLinenumberEnd: 90
    functionName: build_async_trial
    functionSourceFile: /src/opendal/core/tests/behavior/utils.rs
    functionUses: 0
    functionsReached:
    - f
    - F::Output::map_err
    - Failed::from
    - Trial::test
    - Error::to_string
    - clone
    - handle
    - block_on
    linkageType: ''
    returnType: Trial
    signature: 'pub fn build_async_trial<F, Fut>(name: &str, op: &Operator, f: F)
      -> TrialwhereF: FnOnce(Operator) -> Fut + MaybeSend + ''static,Fut: Future<Output
      = anyhow::Result<()>>,'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 99
      start: 93
    functionDepth: 0
    functionLinenumber: 93
    functionLinenumberEnd: 99
    functionName: async_trials
    functionSourceFile: /src/opendal/core/tests/behavior/utils.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: ''
    signature: ''
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self::new
      Src: /src/opendal/core/tests/behavior/utils.rs:107,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 108
      start: 106
    functionDepth: 2
    functionLinenumber: 106
    functionLinenumberEnd: 108
    functionName: Fixture::default
    functionSourceFile: /src/opendal/core/tests/behavior/utils.rs
    functionUses: 0
    functionsReached:
    - Self::new
    linkageType: ''
    returnType: Self
    signature: fn default() -> Self
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Mutex::new
      Src: /src/opendal/core/tests/behavior/utils.rs:115,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 117
      start: 113
    functionDepth: 1
    functionLinenumber: 113
    functionLinenumberEnd: 117
    functionName: Fixture::new
    functionSourceFile: /src/opendal/core/tests/behavior/utils.rs
    functionUses: 0
    functionsReached:
    - Mutex::new
    linkageType: ''
    returnType: Self
    signature: pub const fn new() -> Self
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/opendal/core/tests/behavior/utils.rs:121,1
    - Dst: unwrap
      Src: /src/opendal/core/tests/behavior/utils.rs:121,1
    - Dst: push
      Src: /src/opendal/core/tests/behavior/utils.rs:121,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - path
    argTypes:
    - String
    constantsTouched: []
    func_position:
      end: 122
      start: 120
    functionDepth: 33
    functionLinenumber: 120
    functionLinenumberEnd: 122
    functionName: Fixture::add_path
    functionSourceFile: /src/opendal/core/tests/behavior/utils.rs
    functionUses: 0
    functionsReached:
    - unwrap
    - lock
    - push
    linkageType: ''
    returnType: void
    signature: 'pub fn add_path(&self, path: String)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/opendal/core/tests/behavior/utils.rs:127,1
    - Dst: unwrap
      Src: /src/opendal/core/tests/behavior/utils.rs:127,1
    - Dst: push
      Src: /src/opendal/core/tests/behavior/utils.rs:127,1
    - Dst: clone
      Src: /src/opendal/core/tests/behavior/utils.rs:127,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 130
      start: 125
    functionDepth: 33
    functionLinenumber: 125
    functionLinenumberEnd: 130
    functionName: Fixture::new_dir_path
    functionSourceFile: /src/opendal/core/tests/behavior/utils.rs
    functionUses: 0
    functionsReached:
    - unwrap
    - clone
    - lock
    - push
    linkageType: ''
    returnType: String
    signature: pub fn new_dir_path(&self) -> String
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/opendal/core/tests/behavior/utils.rs:135,1
    - Dst: unwrap
      Src: /src/opendal/core/tests/behavior/utils.rs:135,1
    - Dst: push
      Src: /src/opendal/core/tests/behavior/utils.rs:135,1
    - Dst: clone
      Src: /src/opendal/core/tests/behavior/utils.rs:135,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 138
      start: 133
    functionDepth: 33
    functionLinenumber: 133
    functionLinenumberEnd: 138
    functionName: Fixture::new_file_path
    functionSourceFile: /src/opendal/core/tests/behavior/utils.rs
    functionUses: 0
    functionsReached:
    - unwrap
    - clone
    - lock
    - push
    linkageType: ''
    returnType: String
    signature: pub fn new_file_path(&self) -> String
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: content_max_size
      Src: /src/opendal/core/tests/behavior/utils.rs:142,1
    - Dst: into
      Src: /src/opendal/core/tests/behavior/utils.rs:142,1
    - Dst: Result::info
      Src: /src/opendal/core/tests/behavior/utils.rs:142,1
    - Dst: ServiceInfo::capability
      Src: /src/opendal/core/tests/behavior/utils.rs:142,1
    - Dst: Fixture::new_file_with_range
      Src: /src/opendal/core/tests/behavior/utils.rs:144,1
    - Dst: uuid::Uuid::new_v4
      Src: /src/opendal/core/tests/behavior/utils.rs:144,1
    - Dst: to_string
      Src: /src/opendal/core/tests/behavior/utils.rs:144,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 13
    argCount: 1
    argNames:
    - op
    argTypes:
    - impl Into<Operator>
    constantsTouched: []
    func_position:
      end: 145
      start: 141
    functionDepth: 29
    functionLinenumber: 141
    functionLinenumberEnd: 145
    functionName: Fixture::new_file
    functionSourceFile: /src/opendal/core/tests/behavior/utils.rs
    functionUses: 0
    functionsReached:
    - to_string
    - content_max_size
    - ServiceInfo::capability
    - into
    - uuid::Uuid::new_v4
    - Result::info
    - Fixture::new_file_with_range
    linkageType: ''
    returnType: (String, Vec
    signature: 'pub fn new_file(&self, op: impl Into<Operator>) -> (String, Vec<u8>,
      usize)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: content_max_size
      Src: /src/opendal/core/tests/behavior/utils.rs:152,1
    - Dst: into
      Src: /src/opendal/core/tests/behavior/utils.rs:152,1
    - Dst: Result::info
      Src: /src/opendal/core/tests/behavior/utils.rs:152,1
    - Dst: ServiceInfo::capability
      Src: /src/opendal/core/tests/behavior/utils.rs:152,1
    - Dst: Fixture::new_file_with_range
      Src: /src/opendal/core/tests/behavior/utils.rs:154,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 2
    argNames:
    - op
    - path
    argTypes:
    - impl Into<Operator>
    - '&str'
    constantsTouched: []
    func_position:
      end: 155
      start: 147
    functionDepth: 29
    functionLinenumber: 147
    functionLinenumberEnd: 155
    functionName: Fixture::new_file_with_path
    functionSourceFile: /src/opendal/core/tests/behavior/utils.rs
    functionUses: 0
    functionsReached:
    - content_max_size
    - ServiceInfo::capability
    - into
    - Result::info
    - Fixture::new_file_with_range
    linkageType: ''
    returnType: (String, Vec
    signature: 'pub fn new_file_with_path(&self,op: impl Into<Operator>,path: &str,)
      -> (String, Vec<u8>, usize)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: into
      Src: /src/opendal/core/tests/behavior/utils.rs:163,1
    - Dst: lock
      Src: /src/opendal/core/tests/behavior/utils.rs:164,1
    - Dst: unwrap
      Src: /src/opendal/core/tests/behavior/utils.rs:164,1
    - Dst: push
      Src: /src/opendal/core/tests/behavior/utils.rs:164,1
    - Dst: clone
      Src: /src/opendal/core/tests/behavior/utils.rs:164,1
    - Dst: rand::rng
      Src: /src/opendal/core/tests/behavior/utils.rs:166,1
    - Dst: random_range
      Src: /src/opendal/core/tests/behavior/utils.rs:168,1
    - Dst: fill_bytes
      Src: /src/opendal/core/tests/behavior/utils.rs:170,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 20
    argCount: 2
    argNames:
    - path
    - range
    argTypes:
    - impl Into<String>
    - impl SampleRange<usize>
    constantsTouched: []
    func_position:
      end: 173
      start: 158
    functionDepth: 29
    functionLinenumber: 158
    functionLinenumberEnd: 173
    functionName: Fixture::new_file_with_range
    functionSourceFile: /src/opendal/core/tests/behavior/utils.rs
    functionUses: 2
    functionsReached:
    - lock
    - push
    - rand::rng
    - into
    - unwrap
    - clone
    - random_range
    - fill_bytes
    linkageType: ''
    returnType: (String, Vec
    signature: 'fn new_file_with_range(&self,path: impl Into<String>,range: impl SampleRange<usize>,)
      -> (String, Vec<u8>, usize)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: into
      Src: /src/opendal/core/tests/behavior/utils.rs:177,1
    - Dst: info
      Src: /src/opendal/core/tests/behavior/utils.rs:179,1
    - Dst: ServiceInfo::capability
      Src: /src/opendal/core/tests/behavior/utils.rs:179,1
    - Dst: mem::take
      Src: /src/opendal/core/tests/behavior/utils.rs:183,1
    - Dst: lock
      Src: /src/opendal/core/tests/behavior/utils.rs:183,1
    - Dst: unwrap
      Src: /src/opendal/core/tests/behavior/utils.rs:183,1
    - Dst: as_mut
      Src: /src/opendal/core/tests/behavior/utils.rs:183,1
    - Dst: Result::is_empty
      Src: /src/opendal/core/tests/behavior/utils.rs:185,1
    - Dst: delete_iter
      Src: /src/opendal/core/tests/behavior/utils.rs:190,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 29
    argCount: 1
    argNames:
    - op
    argTypes:
    - impl Into<Operator>
    constantsTouched: []
    func_position:
      end: 191
      start: 176
    functionDepth: 29
    functionLinenumber: 176
    functionLinenumberEnd: 191
    functionName: Fixture::cleanup
    functionSourceFile: /src/opendal/core/tests/behavior/utils.rs
    functionUses: 0
    functionsReached:
    - as_mut
    - info
    - lock
    - ServiceInfo::capability
    - into
    - unwrap
    - delete_iter
    - Result::is_empty
    - mem::take
    linkageType: ''
    returnType: void
    signature: 'pub async fn cleanup(&self, op: impl Into<Operator>)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: map_or
      Src: /src/opendal/core/tests/behavior/utils.rs:195,1
    - Dst: Option::min
      Src: /src/opendal/core/tests/behavior/utils.rs:197,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - cap
    argTypes:
    - Capability
    constantsTouched: []
    func_position:
      end: 199
      start: 194
    functionDepth: 0
    functionLinenumber: 194
    functionLinenumberEnd: 199
    functionName: content_max_size
    functionSourceFile: /src/opendal/core/tests/behavior/utils.rs
    functionUses: 2
    functionsReached:
    - map_or
    - Option::min
    linkageType: ''
    returnType: usize
    signature: 'fn content_max_size(cap: Capability) -> usize'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: new_file
      Src: /src/opendal/core/tests/behavior/async_stat.rs:69,1
    - Dst: clone
      Src: /src/opendal/core/tests/behavior/async_stat.rs:69,1
    - Dst: write
      Src: /src/opendal/core/tests/behavior/async_stat.rs:71,1
    - Dst: expect
      Src: /src/opendal/core/tests/behavior/async_stat.rs:71,1
    - Dst: stat
      Src: /src/opendal/core/tests/behavior/async_stat.rs:73,1
    - Dst: info
      Src: /src/opendal/core/tests/behavior/async_stat.rs:78,1
    - Dst: ServiceInfo::capability
      Src: /src/opendal/core/tests/behavior/async_stat.rs:78,1
    - Dst: stat
      Src: /src/opendal/core/tests/behavior/async_stat.rs:79,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_stat.rs:84,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 33
    argCount: 1
    argNames:
    - op
    argTypes:
    - Operator
    constantsTouched: []
    func_position:
      end: 85
      start: 68
    functionDepth: 31
    functionLinenumber: 68
    functionLinenumberEnd: 85
    functionName: test_stat_file
    functionSourceFile: /src/opendal/core/tests/behavior/async_stat.rs
    functionUses: 0
    functionsReached:
    - info
    - expect
    - Ok
    - ServiceInfo::capability
    - clone
    - new_file
    - write
    - stat
    linkageType: ''
    returnType: Result
    signature: 'pub async fn test_stat_file(op: Operator) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: info
      Src: /src/opendal/core/tests/behavior/async_stat.rs:89,1
    - Dst: ServiceInfo::capability
      Src: /src/opendal/core/tests/behavior/async_stat.rs:89,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_stat.rs:90,1
    - Dst: new_dir_path
      Src: /src/opendal/core/tests/behavior/async_stat.rs:93,1
    - Dst: create_dir
      Src: /src/opendal/core/tests/behavior/async_stat.rs:95,1
    - Dst: expect
      Src: /src/opendal/core/tests/behavior/async_stat.rs:95,1
    - Dst: stat
      Src: /src/opendal/core/tests/behavior/async_stat.rs:97,1
    - Dst: stat
      Src: /src/opendal/core/tests/behavior/async_stat.rs:101,1
    - Dst: trim_end_matches
      Src: /src/opendal/core/tests/behavior/async_stat.rs:101,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_stat.rs:107,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 36
    argCount: 1
    argNames:
    - op
    argTypes:
    - Operator
    constantsTouched: []
    func_position:
      end: 108
      start: 88
    functionDepth: 34
    functionLinenumber: 88
    functionLinenumberEnd: 108
    functionName: test_stat_dir
    functionSourceFile: /src/opendal/core/tests/behavior/async_stat.rs
    functionUses: 0
    functionsReached:
    - new_dir_path
    - info
    - expect
    - Ok
    - ServiceInfo::capability
    - trim_end_matches
    - create_dir
    - stat
    linkageType: ''
    returnType: Result
    signature: 'pub async fn test_stat_dir(op: Operator) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: info
      Src: /src/opendal/core/tests/behavior/async_stat.rs:112,1
    - Dst: ServiceInfo::capability
      Src: /src/opendal/core/tests/behavior/async_stat.rs:112,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_stat.rs:113,1
    - Dst: new_file_with_path
      Src: /src/opendal/core/tests/behavior/async_stat.rs:119,1
    - Dst: clone
      Src: /src/opendal/core/tests/behavior/async_stat.rs:119,1
    - Dst: write
      Src: /src/opendal/core/tests/behavior/async_stat.rs:121,1
    - Dst: Result::clone
      Src: /src/opendal/core/tests/behavior/async_stat.rs:121,1
    - Dst: expect
      Src: /src/opendal/core/tests/behavior/async_stat.rs:121,1
    - Dst: stat
      Src: /src/opendal/core/tests/behavior/async_stat.rs:125,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_stat.rs:128,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 34
    argCount: 1
    argNames:
    - op
    argTypes:
    - Operator
    constantsTouched: []
    func_position:
      end: 129
      start: 111
    functionDepth: 30
    functionLinenumber: 111
    functionLinenumberEnd: 129
    functionName: test_stat_nested_parent_dir
    functionSourceFile: /src/opendal/core/tests/behavior/async_stat.rs
    functionUses: 0
    functionsReached:
    - Result::clone
    - info
    - new_file_with_path
    - Ok
    - expect
    - ServiceInfo::capability
    - clone
    - write
    - stat
    linkageType: ''
    returnType: Result
    signature: 'pub async fn test_stat_nested_parent_dir(op: Operator) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: new_file_with_path
      Src: /src/opendal/core/tests/behavior/async_stat.rs:134,1
    - Dst: clone
      Src: /src/opendal/core/tests/behavior/async_stat.rs:134,1
    - Dst: write
      Src: /src/opendal/core/tests/behavior/async_stat.rs:136,1
    - Dst: expect
      Src: /src/opendal/core/tests/behavior/async_stat.rs:136,1
    - Dst: stat
      Src: /src/opendal/core/tests/behavior/async_stat.rs:138,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_stat.rs:142,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 21
    argCount: 1
    argNames:
    - op
    argTypes:
    - Operator
    constantsTouched: []
    func_position:
      end: 143
      start: 132
    functionDepth: 30
    functionLinenumber: 132
    functionLinenumberEnd: 143
    functionName: test_stat_with_special_chars
    functionSourceFile: /src/opendal/core/tests/behavior/async_stat.rs
    functionUses: 0
    functionsReached:
    - new_file_with_path
    - expect
    - Ok
    - clone
    - write
    - stat
    linkageType: ''
    returnType: Result
    signature: 'pub async fn test_stat_with_special_chars(op: Operator) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: new_file
      Src: /src/opendal/core/tests/behavior/async_stat.rs:147,1
    - Dst: clone
      Src: /src/opendal/core/tests/behavior/async_stat.rs:147,1
    - Dst: write
      Src: /src/opendal/core/tests/behavior/async_stat.rs:149,1
    - Dst: expect
      Src: /src/opendal/core/tests/behavior/async_stat.rs:149,1
    - Dst: stat
      Src: /src/opendal/core/tests/behavior/async_stat.rs:151,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_stat.rs:155,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 20
    argCount: 1
    argNames:
    - op
    argTypes:
    - Operator
    constantsTouched: []
    func_position:
      end: 156
      start: 146
    functionDepth: 31
    functionLinenumber: 146
    functionLinenumberEnd: 156
    functionName: test_stat_not_cleaned_path
    functionSourceFile: /src/opendal/core/tests/behavior/async_stat.rs
    functionUses: 0
    functionsReached:
    - expect
    - Ok
    - clone
    - new_file
    - write
    - stat
    linkageType: ''
    returnType: Result
    signature: 'pub async fn test_stat_not_cleaned_path(op: Operator) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: uuid::Uuid::new_v4
      Src: /src/opendal/core/tests/behavior/async_stat.rs:160,1
    - Dst: to_string
      Src: /src/opendal/core/tests/behavior/async_stat.rs:160,1
    - Dst: stat
      Src: /src/opendal/core/tests/behavior/async_stat.rs:163,1
    - Dst: info
      Src: /src/opendal/core/tests/behavior/async_stat.rs:168,1
    - Dst: ServiceInfo::capability
      Src: /src/opendal/core/tests/behavior/async_stat.rs:168,1
    - Dst: stat
      Src: /src/opendal/core/tests/behavior/async_stat.rs:169,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_stat.rs:174,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 24
    argCount: 1
    argNames:
    - op
    argTypes:
    - Operator
    constantsTouched: []
    func_position:
      end: 175
      start: 159
    functionDepth: 31
    functionLinenumber: 159
    functionLinenumberEnd: 175
    functionName: test_stat_not_exist
    functionSourceFile: /src/opendal/core/tests/behavior/async_stat.rs
    functionUses: 0
    functionsReached:
    - to_string
    - info
    - Ok
    - ServiceInfo::capability
    - uuid::Uuid::new_v4
    - stat
    linkageType: ''
    returnType: Result
    signature: 'pub async fn test_stat_not_exist(op: Operator) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: info
      Src: /src/opendal/core/tests/behavior/async_stat.rs:179,1
    - Dst: ServiceInfo::capability
      Src: /src/opendal/core/tests/behavior/async_stat.rs:179,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_stat.rs:180,1
    - Dst: new_file
      Src: /src/opendal/core/tests/behavior/async_stat.rs:183,1
    - Dst: clone
      Src: /src/opendal/core/tests/behavior/async_stat.rs:183,1
    - Dst: write
      Src: /src/opendal/core/tests/behavior/async_stat.rs:185,1
    - Dst: Result::clone
      Src: /src/opendal/core/tests/behavior/async_stat.rs:185,1
    - Dst: expect
      Src: /src/opendal/core/tests/behavior/async_stat.rs:185,1
    - Dst: stat
      Src: /src/opendal/core/tests/behavior/async_stat.rs:189,1
    - Dst: stat_with
      Src: /src/opendal/core/tests/behavior/async_stat.rs:193,1
    - Dst: FutureStat::if_match
      Src: /src/opendal/core/tests/behavior/async_stat.rs:193,1
    - Dst: stat_with
      Src: /src/opendal/core/tests/behavior/async_stat.rs:197,1
    - Dst: FutureStat::if_match
      Src: /src/opendal/core/tests/behavior/async_stat.rs:197,1
    - Dst: Result::etag
      Src: /src/opendal/core/tests/behavior/async_stat.rs:199,1
    - Dst: Option::expect
      Src: /src/opendal/core/tests/behavior/async_stat.rs:199,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_stat.rs:203,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 53
    argCount: 1
    argNames:
    - op
    argTypes:
    - Operator
    constantsTouched: []
    func_position:
      end: 204
      start: 178
    functionDepth: 31
    functionLinenumber: 178
    functionLinenumberEnd: 204
    functionName: test_stat_with_if_match
    functionSourceFile: /src/opendal/core/tests/behavior/async_stat.rs
    functionUses: 0
    functionsReached:
    - Result::clone
    - info
    - Option::expect
    - expect
    - Ok
    - ServiceInfo::capability
    - Result::etag
    - clone
    - new_file
    - FutureStat::if_match
    - write
    - stat
    - stat_with
    linkageType: ''
    returnType: Result
    signature: 'pub async fn test_stat_with_if_match(op: Operator) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: info
      Src: /src/opendal/core/tests/behavior/async_stat.rs:208,1
    - Dst: ServiceInfo::capability
      Src: /src/opendal/core/tests/behavior/async_stat.rs:208,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_stat.rs:209,1
    - Dst: new_file
      Src: /src/opendal/core/tests/behavior/async_stat.rs:212,1
    - Dst: clone
      Src: /src/opendal/core/tests/behavior/async_stat.rs:212,1
    - Dst: write
      Src: /src/opendal/core/tests/behavior/async_stat.rs:214,1
    - Dst: Result::clone
      Src: /src/opendal/core/tests/behavior/async_stat.rs:214,1
    - Dst: expect
      Src: /src/opendal/core/tests/behavior/async_stat.rs:214,1
    - Dst: stat
      Src: /src/opendal/core/tests/behavior/async_stat.rs:218,1
    - Dst: stat_with
      Src: /src/opendal/core/tests/behavior/async_stat.rs:222,1
    - Dst: FutureStat::if_none_match
      Src: /src/opendal/core/tests/behavior/async_stat.rs:222,1
    - Dst: Result::etag
      Src: /src/opendal/core/tests/behavior/async_stat.rs:224,1
    - Dst: Option::expect
      Src: /src/opendal/core/tests/behavior/async_stat.rs:224,1
    - Dst: stat_with
      Src: /src/opendal/core/tests/behavior/async_stat.rs:229,1
    - Dst: FutureStat::if_none_match
      Src: /src/opendal/core/tests/behavior/async_stat.rs:229,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_stat.rs:236,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 55
    argCount: 1
    argNames:
    - op
    argTypes:
    - Operator
    constantsTouched: []
    func_position:
      end: 237
      start: 207
    functionDepth: 31
    functionLinenumber: 207
    functionLinenumberEnd: 237
    functionName: test_stat_with_if_none_match
    functionSourceFile: /src/opendal/core/tests/behavior/async_stat.rs
    functionUses: 0
    functionsReached:
    - Result::clone
    - info
    - Option::expect
    - expect
    - Ok
    - ServiceInfo::capability
    - FutureStat::if_none_match
    - Result::etag
    - clone
    - new_file
    - write
    - stat
    - stat_with
    linkageType: ''
    returnType: Result
    signature: 'pub async fn test_stat_with_if_none_match(op: Operator) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: info
      Src: /src/opendal/core/tests/behavior/async_stat.rs:241,1
    - Dst: ServiceInfo::capability
      Src: /src/opendal/core/tests/behavior/async_stat.rs:241,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_stat.rs:242,1
    - Dst: new_file
      Src: /src/opendal/core/tests/behavior/async_stat.rs:245,1
    - Dst: clone
      Src: /src/opendal/core/tests/behavior/async_stat.rs:245,1
    - Dst: write
      Src: /src/opendal/core/tests/behavior/async_stat.rs:247,1
    - Dst: Result::clone
      Src: /src/opendal/core/tests/behavior/async_stat.rs:247,1
    - Dst: expect
      Src: /src/opendal/core/tests/behavior/async_stat.rs:247,1
    - Dst: stat
      Src: /src/opendal/core/tests/behavior/async_stat.rs:251,1
    - Dst: Result::last_modified
      Src: /src/opendal/core/tests/behavior/async_stat.rs:255,1
    - Dst: Option::unwrap
      Src: /src/opendal/core/tests/behavior/async_stat.rs:255,1
    - Dst: Duration::from_secs
      Src: /src/opendal/core/tests/behavior/async_stat.rs:255,1
    - Dst: stat_with
      Src: /src/opendal/core/tests/behavior/async_stat.rs:256,1
    - Dst: FutureStat::if_modified_since
      Src: /src/opendal/core/tests/behavior/async_stat.rs:256,1
    - Dst: tokio::time::sleep
      Src: /src/opendal/core/tests/behavior/async_stat.rs:259,1
    - Dst: Duration::from_secs
      Src: /src/opendal/core/tests/behavior/async_stat.rs:259,1
    - Dst: Result::last_modified
      Src: /src/opendal/core/tests/behavior/async_stat.rs:261,1
    - Dst: Option::unwrap
      Src: /src/opendal/core/tests/behavior/async_stat.rs:261,1
    - Dst: Duration::from_secs
      Src: /src/opendal/core/tests/behavior/async_stat.rs:261,1
    - Dst: stat_with
      Src: /src/opendal/core/tests/behavior/async_stat.rs:262,1
    - Dst: FutureStat::if_modified_since
      Src: /src/opendal/core/tests/behavior/async_stat.rs:262,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_stat.rs:266,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 66
    argCount: 1
    argNames:
    - op
    argTypes:
    - Operator
    constantsTouched: []
    func_position:
      end: 267
      start: 240
    functionDepth: 31
    functionLinenumber: 240
    functionLinenumberEnd: 267
    functionName: test_stat_with_if_modified_since
    functionSourceFile: /src/opendal/core/tests/behavior/async_stat.rs
    functionUses: 0
    functionsReached:
    - Result::clone
    - info
    - Result::last_modified
    - expect
    - Ok
    - Option::unwrap
    - ServiceInfo::capability
    - clone
    - tokio::time::sleep
    - new_file
    - FutureStat::if_modified_since
    - Duration::from_secs
    - write
    - stat
    - stat_with
    linkageType: ''
    returnType: Result
    signature: 'pub async fn test_stat_with_if_modified_since(op: Operator) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: info
      Src: /src/opendal/core/tests/behavior/async_stat.rs:271,1
    - Dst: ServiceInfo::capability
      Src: /src/opendal/core/tests/behavior/async_stat.rs:271,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_stat.rs:272,1
    - Dst: new_file
      Src: /src/opendal/core/tests/behavior/async_stat.rs:275,1
    - Dst: clone
      Src: /src/opendal/core/tests/behavior/async_stat.rs:275,1
    - Dst: write
      Src: /src/opendal/core/tests/behavior/async_stat.rs:277,1
    - Dst: Result::clone
      Src: /src/opendal/core/tests/behavior/async_stat.rs:277,1
    - Dst: expect
      Src: /src/opendal/core/tests/behavior/async_stat.rs:277,1
    - Dst: stat
      Src: /src/opendal/core/tests/behavior/async_stat.rs:281,1
    - Dst: Result::last_modified
      Src: /src/opendal/core/tests/behavior/async_stat.rs:285,1
    - Dst: Option::unwrap
      Src: /src/opendal/core/tests/behavior/async_stat.rs:285,1
    - Dst: Duration::from_secs
      Src: /src/opendal/core/tests/behavior/async_stat.rs:285,1
    - Dst: stat_with
      Src: /src/opendal/core/tests/behavior/async_stat.rs:286,1
    - Dst: FutureStat::if_unmodified_since
      Src: /src/opendal/core/tests/behavior/async_stat.rs:286,1
    - Dst: tokio::time::sleep
      Src: /src/opendal/core/tests/behavior/async_stat.rs:290,1
    - Dst: Duration::from_secs
      Src: /src/opendal/core/tests/behavior/async_stat.rs:290,1
    - Dst: Result::last_modified
      Src: /src/opendal/core/tests/behavior/async_stat.rs:292,1
    - Dst: Option::unwrap
      Src: /src/opendal/core/tests/behavior/async_stat.rs:292,1
    - Dst: Duration::from_secs
      Src: /src/opendal/core/tests/behavior/async_stat.rs:292,1
    - Dst: stat_with
      Src: /src/opendal/core/tests/behavior/async_stat.rs:293,1
    - Dst: FutureStat::if_unmodified_since
      Src: /src/opendal/core/tests/behavior/async_stat.rs:293,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_stat.rs:296,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 66
    argCount: 1
    argNames:
    - op
    argTypes:
    - Operator
    constantsTouched: []
    func_position:
      end: 297
      start: 270
    functionDepth: 31
    functionLinenumber: 270
    functionLinenumberEnd: 297
    functionName: test_stat_with_if_unmodified_since
    functionSourceFile: /src/opendal/core/tests/behavior/async_stat.rs
    functionUses: 0
    functionsReached:
    - Result::clone
    - info
    - Result::last_modified
    - expect
    - Ok
    - Option::unwrap
    - ServiceInfo::capability
    - clone
    - tokio::time::sleep
    - new_file
    - Duration::from_secs
    - FutureStat::if_unmodified_since
    - write
    - stat
    - stat_with
    linkageType: ''
    returnType: Result
    signature: 'pub async fn test_stat_with_if_unmodified_since(op: Operator) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: info
      Src: /src/opendal/core/tests/behavior/async_stat.rs:301,1
    - Dst: ServiceInfo::capability
      Src: /src/opendal/core/tests/behavior/async_stat.rs:301,1
    - Dst: info
      Src: /src/opendal/core/tests/behavior/async_stat.rs:301,1
    - Dst: ServiceInfo::capability
      Src: /src/opendal/core/tests/behavior/async_stat.rs:301,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_stat.rs:303,1
    - Dst: new_file
      Src: /src/opendal/core/tests/behavior/async_stat.rs:306,1
    - Dst: clone
      Src: /src/opendal/core/tests/behavior/async_stat.rs:306,1
    - Dst: write
      Src: /src/opendal/core/tests/behavior/async_stat.rs:308,1
    - Dst: Result::clone
      Src: /src/opendal/core/tests/behavior/async_stat.rs:308,1
    - Dst: expect
      Src: /src/opendal/core/tests/behavior/async_stat.rs:308,1
    - Dst: presign_stat_with
      Src: /src/opendal/core/tests/behavior/async_stat.rs:313,1
    - Dst: Duration::from_secs
      Src: /src/opendal/core/tests/behavior/async_stat.rs:314,1
    - Dst: FuturePresignStat::override_cache_control
      Src: /src/opendal/core/tests/behavior/async_stat.rs:313,1
    - Dst: expect
      Src: /src/opendal/core/tests/behavior/async_stat.rs:313,1
    - Dst: reqwest::Client::new
      Src: /src/opendal/core/tests/behavior/async_stat.rs:319,1
    - Dst: Result::request
      Src: /src/opendal/core/tests/behavior/async_stat.rs:320,1
    - Dst: method
      Src: /src/opendal/core/tests/behavior/async_stat.rs:321,1
    - Dst: clone
      Src: /src/opendal/core/tests/behavior/async_stat.rs:321,1
    - Dst: Url::from_str
      Src: /src/opendal/core/tests/behavior/async_stat.rs:322,1
    - Dst: uri
      Src: /src/opendal/core/tests/behavior/async_stat.rs:322,1
    - Dst: to_string
      Src: /src/opendal/core/tests/behavior/async_stat.rs:322,1
    - Dst: Result::expect
      Src: /src/opendal/core/tests/behavior/async_stat.rs:322,1
    - Dst: header
      Src: /src/opendal/core/tests/behavior/async_stat.rs:324,1
    - Dst: http::Request::header
      Src: /src/opendal/core/tests/behavior/async_stat.rs:325,1
    - Dst: http::Request::send
      Src: /src/opendal/core/tests/behavior/async_stat.rs:328,1
    - Dst: expect
      Src: /src/opendal/core/tests/behavior/async_stat.rs:328,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_stat.rs:340,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 73
    argCount: 1
    argNames:
    - op
    argTypes:
    - Operator
    constantsTouched: []
    func_position:
      end: 341
      start: 300
    functionDepth: 31
    functionLinenumber: 300
    functionLinenumberEnd: 341
    functionName: test_stat_with_override_cache_control
    functionSourceFile: /src/opendal/core/tests/behavior/async_stat.rs
    functionUses: 0
    functionsReached:
    - clone
    - FuturePresignStat::override_cache_control
    - http::Request::send
    - write
    - Result::clone
    - info
    - expect
    - Ok
    - Result::expect
    - ServiceInfo::capability
    - presign_stat_with
    - Duration::from_secs
    - Result::request
    - uri
    - Url::from_str
    - to_string
    - reqwest::Client::new
    - http::Request::header
    - new_file
    - method
    - header
    linkageType: ''
    returnType: Result
    signature: 'pub async fn test_stat_with_override_cache_control(op: Operator) ->
      Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: info
      Src: /src/opendal/core/tests/behavior/async_stat.rs:345,1
    - Dst: ServiceInfo::capability
      Src: /src/opendal/core/tests/behavior/async_stat.rs:345,1
    - Dst: info
      Src: /src/opendal/core/tests/behavior/async_stat.rs:349,1
    - Dst: ServiceInfo::capability
      Src: /src/opendal/core/tests/behavior/async_stat.rs:349,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_stat.rs:351,1
    - Dst: new_file
      Src: /src/opendal/core/tests/behavior/async_stat.rs:354,1
    - Dst: clone
      Src: /src/opendal/core/tests/behavior/async_stat.rs:354,1
    - Dst: write
      Src: /src/opendal/core/tests/behavior/async_stat.rs:356,1
    - Dst: Result::clone
      Src: /src/opendal/core/tests/behavior/async_stat.rs:356,1
    - Dst: expect
      Src: /src/opendal/core/tests/behavior/async_stat.rs:356,1
    - Dst: presign_stat_with
      Src: /src/opendal/core/tests/behavior/async_stat.rs:362,1
    - Dst: Duration::from_secs
      Src: /src/opendal/core/tests/behavior/async_stat.rs:363,1
    - Dst: FuturePresignStat::override_content_disposition
      Src: /src/opendal/core/tests/behavior/async_stat.rs:362,1
    - Dst: expect
      Src: /src/opendal/core/tests/behavior/async_stat.rs:362,1
    - Dst: reqwest::Client::new
      Src: /src/opendal/core/tests/behavior/async_stat.rs:368,1
    - Dst: Result::request
      Src: /src/opendal/core/tests/behavior/async_stat.rs:369,1
    - Dst: method
      Src: /src/opendal/core/tests/behavior/async_stat.rs:370,1
    - Dst: clone
      Src: /src/opendal/core/tests/behavior/async_stat.rs:370,1
    - Dst: Url::from_str
      Src: /src/opendal/core/tests/behavior/async_stat.rs:371,1
    - Dst: uri
      Src: /src/opendal/core/tests/behavior/async_stat.rs:371,1
    - Dst: to_string
      Src: /src/opendal/core/tests/behavior/async_stat.rs:371,1
    - Dst: Result::expect
      Src: /src/opendal/core/tests/behavior/async_stat.rs:371,1
    - Dst: header
      Src: /src/opendal/core/tests/behavior/async_stat.rs:373,1
    - Dst: http::Request::header
      Src: /src/opendal/core/tests/behavior/async_stat.rs:374,1
    - Dst: http::Request::send
      Src: /src/opendal/core/tests/behavior/async_stat.rs:377,1
    - Dst: expect
      Src: /src/opendal/core/tests/behavior/async_stat.rs:377,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_stat.rs:389,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 73
    argCount: 1
    argNames:
    - op
    argTypes:
    - Operator
    constantsTouched: []
    func_position:
      end: 390
      start: 344
    functionDepth: 31
    functionLinenumber: 344
    functionLinenumberEnd: 390
    functionName: test_stat_with_override_content_disposition
    functionSourceFile: /src/opendal/core/tests/behavior/async_stat.rs
    functionUses: 0
    functionsReached:
    - clone
    - http::Request::send
    - write
    - Result::clone
    - info
    - expect
    - Ok
    - Result::expect
    - FuturePresignStat::override_content_disposition
    - ServiceInfo::capability
    - presign_stat_with
    - Duration::from_secs
    - Result::request
    - uri
    - Url::from_str
    - to_string
    - reqwest::Client::new
    - http::Request::header
    - new_file
    - method
    - header
    linkageType: ''
    returnType: Result
    signature: 'pub async fn test_stat_with_override_content_disposition(op: Operator)
      -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: info
      Src: /src/opendal/core/tests/behavior/async_stat.rs:394,1
    - Dst: ServiceInfo::capability
      Src: /src/opendal/core/tests/behavior/async_stat.rs:394,1
    - Dst: info
      Src: /src/opendal/core/tests/behavior/async_stat.rs:394,1
    - Dst: ServiceInfo::capability
      Src: /src/opendal/core/tests/behavior/async_stat.rs:394,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_stat.rs:395,1
    - Dst: new_file
      Src: /src/opendal/core/tests/behavior/async_stat.rs:398,1
    - Dst: clone
      Src: /src/opendal/core/tests/behavior/async_stat.rs:398,1
    - Dst: write
      Src: /src/opendal/core/tests/behavior/async_stat.rs:400,1
    - Dst: Result::clone
      Src: /src/opendal/core/tests/behavior/async_stat.rs:400,1
    - Dst: expect
      Src: /src/opendal/core/tests/behavior/async_stat.rs:400,1
    - Dst: presign_stat_with
      Src: /src/opendal/core/tests/behavior/async_stat.rs:406,1
    - Dst: Duration::from_secs
      Src: /src/opendal/core/tests/behavior/async_stat.rs:407,1
    - Dst: FuturePresignStat::override_content_type
      Src: /src/opendal/core/tests/behavior/async_stat.rs:406,1
    - Dst: expect
      Src: /src/opendal/core/tests/behavior/async_stat.rs:406,1
    - Dst: reqwest::Client::new
      Src: /src/opendal/core/tests/behavior/async_stat.rs:412,1
    - Dst: Result::request
      Src: /src/opendal/core/tests/behavior/async_stat.rs:413,1
    - Dst: method
      Src: /src/opendal/core/tests/behavior/async_stat.rs:414,1
    - Dst: clone
      Src: /src/opendal/core/tests/behavior/async_stat.rs:414,1
    - Dst: Url::from_str
      Src: /src/opendal/core/tests/behavior/async_stat.rs:415,1
    - Dst: uri
      Src: /src/opendal/core/tests/behavior/async_stat.rs:415,1
    - Dst: to_string
      Src: /src/opendal/core/tests/behavior/async_stat.rs:415,1
    - Dst: Result::expect
      Src: /src/opendal/core/tests/behavior/async_stat.rs:415,1
    - Dst: header
      Src: /src/opendal/core/tests/behavior/async_stat.rs:417,1
    - Dst: http::Request::header
      Src: /src/opendal/core/tests/behavior/async_stat.rs:418,1
    - Dst: http::Request::send
      Src: /src/opendal/core/tests/behavior/async_stat.rs:421,1
    - Dst: expect
      Src: /src/opendal/core/tests/behavior/async_stat.rs:421,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_stat.rs:433,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 73
    argCount: 1
    argNames:
    - op
    argTypes:
    - Operator
    constantsTouched: []
    func_position:
      end: 434
      start: 393
    functionDepth: 31
    functionLinenumber: 393
    functionLinenumberEnd: 434
    functionName: test_stat_with_override_content_type
    functionSourceFile: /src/opendal/core/tests/behavior/async_stat.rs
    functionUses: 0
    functionsReached:
    - clone
    - http::Request::send
    - write
    - Result::clone
    - info
    - expect
    - Ok
    - Result::expect
    - ServiceInfo::capability
    - presign_stat_with
    - Duration::from_secs
    - Result::request
    - uri
    - Url::from_str
    - to_string
    - FuturePresignStat::override_content_type
    - reqwest::Client::new
    - http::Request::header
    - new_file
    - method
    - header
    linkageType: ''
    returnType: Result
    signature: 'pub async fn test_stat_with_override_content_type(op: Operator) ->
      Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: stat
      Src: /src/opendal/core/tests/behavior/async_stat.rs:438,1
    - Dst: stat
      Src: /src/opendal/core/tests/behavior/async_stat.rs:441,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_stat.rs:444,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 1
    argNames:
    - op
    argTypes:
    - Operator
    constantsTouched: []
    func_position:
      end: 445
      start: 437
    functionDepth: 31
    functionLinenumber: 437
    functionLinenumberEnd: 445
    functionName: test_stat_root
    functionSourceFile: /src/opendal/core/tests/behavior/async_stat.rs
    functionUses: 0
    functionsReached:
    - stat
    - Ok
    linkageType: ''
    returnType: Result
    signature: 'pub async fn test_stat_root(op: Operator) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: stat
      Src: /src/opendal/core/tests/behavior/async_stat.rs:449,1
    - Dst: stat
      Src: /src/opendal/core/tests/behavior/async_stat.rs:453,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_stat.rs:456,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 1
    argNames:
    - op
    argTypes:
    - Operator
    constantsTouched: []
    func_position:
      end: 457
      start: 448
    functionDepth: 31
    functionLinenumber: 448
    functionLinenumberEnd: 457
    functionName: test_read_only_stat_file_and_dir
    functionSourceFile: /src/opendal/core/tests/behavior/async_stat.rs
    functionUses: 0
    functionsReached:
    - stat
    - Ok
    linkageType: ''
    returnType: Result
    signature: 'pub async fn test_read_only_stat_file_and_dir(op: Operator) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: stat
      Src: /src/opendal/core/tests/behavior/async_stat.rs:461,1
    - Dst: stat
      Src: /src/opendal/core/tests/behavior/async_stat.rs:465,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_stat.rs:468,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 1
    argNames:
    - op
    argTypes:
    - Operator
    constantsTouched: []
    func_position:
      end: 469
      start: 460
    functionDepth: 31
    functionLinenumber: 460
    functionLinenumberEnd: 469
    functionName: test_read_only_stat_special_chars
    functionSourceFile: /src/opendal/core/tests/behavior/async_stat.rs
    functionUses: 0
    functionsReached:
    - stat
    - Ok
    linkageType: ''
    returnType: Result
    signature: 'pub async fn test_read_only_stat_special_chars(op: Operator) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: stat
      Src: /src/opendal/core/tests/behavior/async_stat.rs:473,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_stat.rs:477,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - op
    argTypes:
    - Operator
    constantsTouched: []
    func_position:
      end: 478
      start: 472
    functionDepth: 31
    functionLinenumber: 472
    functionLinenumberEnd: 478
    functionName: test_read_only_stat_not_cleaned_path
    functionSourceFile: /src/opendal/core/tests/behavior/async_stat.rs
    functionUses: 0
    functionsReached:
    - stat
    - Ok
    linkageType: ''
    returnType: Result
    signature: 'pub async fn test_read_only_stat_not_cleaned_path(op: Operator) ->
      Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: uuid::Uuid::new_v4
      Src: /src/opendal/core/tests/behavior/async_stat.rs:482,1
    - Dst: to_string
      Src: /src/opendal/core/tests/behavior/async_stat.rs:482,1
    - Dst: stat
      Src: /src/opendal/core/tests/behavior/async_stat.rs:484,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_stat.rs:488,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 1
    argNames:
    - op
    argTypes:
    - Operator
    constantsTouched: []
    func_position:
      end: 489
      start: 481
    functionDepth: 31
    functionLinenumber: 481
    functionLinenumberEnd: 489
    functionName: test_read_only_stat_not_exist
    functionSourceFile: /src/opendal/core/tests/behavior/async_stat.rs
    functionUses: 0
    functionsReached:
    - to_string
    - uuid::Uuid::new_v4
    - stat
    - Ok
    linkageType: ''
    returnType: Result
    signature: 'pub async fn test_read_only_stat_not_exist(op: Operator) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: info
      Src: /src/opendal/core/tests/behavior/async_stat.rs:493,1
    - Dst: ServiceInfo::capability
      Src: /src/opendal/core/tests/behavior/async_stat.rs:493,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_stat.rs:494,1
    - Dst: stat
      Src: /src/opendal/core/tests/behavior/async_stat.rs:499,1
    - Dst: stat_with
      Src: /src/opendal/core/tests/behavior/async_stat.rs:503,1
    - Dst: FutureStat::if_match
      Src: /src/opendal/core/tests/behavior/async_stat.rs:503,1
    - Dst: stat_with
      Src: /src/opendal/core/tests/behavior/async_stat.rs:507,1
    - Dst: FutureStat::if_match
      Src: /src/opendal/core/tests/behavior/async_stat.rs:507,1
    - Dst: Result::etag
      Src: /src/opendal/core/tests/behavior/async_stat.rs:509,1
    - Dst: Option::expect
      Src: /src/opendal/core/tests/behavior/async_stat.rs:509,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_stat.rs:513,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 37
    argCount: 1
    argNames:
    - op
    argTypes:
    - Operator
    constantsTouched: []
    func_position:
      end: 514
      start: 492
    functionDepth: 31
    functionLinenumber: 492
    functionLinenumberEnd: 514
    functionName: test_read_only_stat_with_if_match
    functionSourceFile: /src/opendal/core/tests/behavior/async_stat.rs
    functionUses: 0
    functionsReached:
    - info
    - Option::expect
    - Ok
    - ServiceInfo::capability
    - Result::etag
    - FutureStat::if_match
    - stat
    - stat_with
    linkageType: ''
    returnType: Result
    signature: 'pub async fn test_read_only_stat_with_if_match(op: Operator) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: info
      Src: /src/opendal/core/tests/behavior/async_stat.rs:518,1
    - Dst: ServiceInfo::capability
      Src: /src/opendal/core/tests/behavior/async_stat.rs:518,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_stat.rs:519,1
    - Dst: stat
      Src: /src/opendal/core/tests/behavior/async_stat.rs:524,1
    - Dst: stat_with
      Src: /src/opendal/core/tests/behavior/async_stat.rs:528,1
    - Dst: FutureStat::if_none_match
      Src: /src/opendal/core/tests/behavior/async_stat.rs:528,1
    - Dst: Result::etag
      Src: /src/opendal/core/tests/behavior/async_stat.rs:530,1
    - Dst: Option::expect
      Src: /src/opendal/core/tests/behavior/async_stat.rs:530,1
    - Dst: stat_with
      Src: /src/opendal/core/tests/behavior/async_stat.rs:535,1
    - Dst: FutureStat::if_none_match
      Src: /src/opendal/core/tests/behavior/async_stat.rs:535,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_stat.rs:539,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 39
    argCount: 1
    argNames:
    - op
    argTypes:
    - Operator
    constantsTouched: []
    func_position:
      end: 540
      start: 517
    functionDepth: 31
    functionLinenumber: 517
    functionLinenumberEnd: 540
    functionName: test_read_only_stat_with_if_none_match
    functionSourceFile: /src/opendal/core/tests/behavior/async_stat.rs
    functionUses: 0
    functionsReached:
    - info
    - Option::expect
    - Ok
    - ServiceInfo::capability
    - FutureStat::if_none_match
    - Result::etag
    - stat
    - stat_with
    linkageType: ''
    returnType: Result
    signature: 'pub async fn test_read_only_stat_with_if_none_match(op: Operator)
      -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: stat
      Src: /src/opendal/core/tests/behavior/async_stat.rs:544,1
    - Dst: stat
      Src: /src/opendal/core/tests/behavior/async_stat.rs:547,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_stat.rs:550,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 1
    argNames:
    - op
    argTypes:
    - Operator
    constantsTouched: []
    func_position:
      end: 551
      start: 543
    functionDepth: 31
    functionLinenumber: 543
    functionLinenumberEnd: 551
    functionName: test_read_only_stat_root
    functionSourceFile: /src/opendal/core/tests/behavior/async_stat.rs
    functionUses: 0
    functionsReached:
    - stat
    - Ok
    linkageType: ''
    returnType: Result
    signature: 'pub async fn test_read_only_stat_root(op: Operator) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: info
      Src: /src/opendal/core/tests/behavior/async_stat.rs:554,1
    - Dst: ServiceInfo::capability
      Src: /src/opendal/core/tests/behavior/async_stat.rs:554,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_stat.rs:555,1
    - Dst: new_file
      Src: /src/opendal/core/tests/behavior/async_stat.rs:558,1
    - Dst: clone
      Src: /src/opendal/core/tests/behavior/async_stat.rs:558,1
    - Dst: write
      Src: /src/opendal/core/tests/behavior/async_stat.rs:560,1
    - Dst: as_str
      Src: /src/opendal/core/tests/behavior/async_stat.rs:560,1
    - Dst: Result::clone
      Src: /src/opendal/core/tests/behavior/async_stat.rs:560,1
    - Dst: expect
      Src: /src/opendal/core/tests/behavior/async_stat.rs:560,1
    - Dst: stat
      Src: /src/opendal/core/tests/behavior/async_stat.rs:563,1
    - Dst: as_str
      Src: /src/opendal/core/tests/behavior/async_stat.rs:563,1
    - Dst: expect
      Src: /src/opendal/core/tests/behavior/async_stat.rs:563,1
    - Dst: version
      Src: /src/opendal/core/tests/behavior/async_stat.rs:564,1
    - Dst: expect
      Src: /src/opendal/core/tests/behavior/async_stat.rs:564,1
    - Dst: stat_with
      Src: /src/opendal/core/tests/behavior/async_stat.rs:566,1
    - Dst: as_str
      Src: /src/opendal/core/tests/behavior/async_stat.rs:567,1
    - Dst: FutureStat::version
      Src: /src/opendal/core/tests/behavior/async_stat.rs:566,1
    - Dst: expect
      Src: /src/opendal/core/tests/behavior/async_stat.rs:566,1
    - Dst: write
      Src: /src/opendal/core/tests/behavior/async_stat.rs:573,1
    - Dst: as_str
      Src: /src/opendal/core/tests/behavior/async_stat.rs:573,1
    - Dst: expect
      Src: /src/opendal/core/tests/behavior/async_stat.rs:573,1
    - Dst: stat
      Src: /src/opendal/core/tests/behavior/async_stat.rs:576,1
    - Dst: as_str
      Src: /src/opendal/core/tests/behavior/async_stat.rs:576,1
    - Dst: expect
      Src: /src/opendal/core/tests/behavior/async_stat.rs:576,1
    - Dst: version
      Src: /src/opendal/core/tests/behavior/async_stat.rs:577,1
    - Dst: expect
      Src: /src/opendal/core/tests/behavior/async_stat.rs:577,1
    - Dst: stat_with
      Src: /src/opendal/core/tests/behavior/async_stat.rs:581,1
    - Dst: as_str
      Src: /src/opendal/core/tests/behavior/async_stat.rs:582,1
    - Dst: FutureStat::version
      Src: /src/opendal/core/tests/behavior/async_stat.rs:581,1
    - Dst: expect
      Src: /src/opendal/core/tests/behavior/async_stat.rs:581,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_stat.rs:588,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 79
    argCount: 1
    argNames:
    - op
    argTypes:
    - Operator
    constantsTouched: []
    func_position:
      end: 589
      start: 553
    functionDepth: 31
    functionLinenumber: 553
    functionLinenumberEnd: 589
    functionName: test_stat_with_version
    functionSourceFile: /src/opendal/core/tests/behavior/async_stat.rs
    functionUses: 0
    functionsReached:
    - Result::clone
    - FutureStat::version
    - info
    - expect
    - Ok
    - ServiceInfo::capability
    - clone
    - as_str
    - new_file
    - version
    - write
    - stat
    - stat_with
    linkageType: ''
    returnType: Result
    signature: 'pub async fn test_stat_with_version(op: Operator) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: info
      Src: /src/opendal/core/tests/behavior/async_stat.rs:592,1
    - Dst: ServiceInfo::capability
      Src: /src/opendal/core/tests/behavior/async_stat.rs:592,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_stat.rs:593,1
    - Dst: new_file
      Src: /src/opendal/core/tests/behavior/async_stat.rs:597,1
    - Dst: clone
      Src: /src/opendal/core/tests/behavior/async_stat.rs:597,1
    - Dst: write
      Src: /src/opendal/core/tests/behavior/async_stat.rs:598,1
    - Dst: as_str
      Src: /src/opendal/core/tests/behavior/async_stat.rs:598,1
    - Dst: Result::clone
      Src: /src/opendal/core/tests/behavior/async_stat.rs:598,1
    - Dst: expect
      Src: /src/opendal/core/tests/behavior/async_stat.rs:598,1
    - Dst: stat
      Src: /src/opendal/core/tests/behavior/async_stat.rs:601,1
    - Dst: as_str
      Src: /src/opendal/core/tests/behavior/async_stat.rs:602,1
    - Dst: expect
      Src: /src/opendal/core/tests/behavior/async_stat.rs:601,1
    - Dst: version
      Src: /src/opendal/core/tests/behavior/async_stat.rs:601,1
    - Dst: expect
      Src: /src/opendal/core/tests/behavior/async_stat.rs:601,1
    - Dst: to_string
      Src: /src/opendal/core/tests/behavior/async_stat.rs:601,1
    - Dst: new_file
      Src: /src/opendal/core/tests/behavior/async_stat.rs:609,1
    - Dst: clone
      Src: /src/opendal/core/tests/behavior/async_stat.rs:609,1
    - Dst: write
      Src: /src/opendal/core/tests/behavior/async_stat.rs:610,1
    - Dst: as_str
      Src: /src/opendal/core/tests/behavior/async_stat.rs:610,1
    - Dst: expect
      Src: /src/opendal/core/tests/behavior/async_stat.rs:610,1
    - Dst: stat_with
      Src: /src/opendal/core/tests/behavior/async_stat.rs:613,1
    - Dst: as_str
      Src: /src/opendal/core/tests/behavior/async_stat.rs:613,1
    - Dst: FutureStat::version
      Src: /src/opendal/core/tests/behavior/async_stat.rs:613,1
    - Dst: Result::as_str
      Src: /src/opendal/core/tests/behavior/async_stat.rs:613,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_stat.rs:617,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 64
    argCount: 1
    argNames:
    - op
    argTypes:
    - Operator
    constantsTouched: []
    func_position:
      end: 618
      start: 591
    functionDepth: 31
    functionLinenumber: 591
    functionLinenumberEnd: 618
    functionName: stat_with_not_existing_version
    functionSourceFile: /src/opendal/core/tests/behavior/async_stat.rs
    functionUses: 0
    functionsReached:
    - Result::clone
    - to_string
    - info
    - FutureStat::version
    - expect
    - Ok
    - ServiceInfo::capability
    - clone
    - as_str
    - new_file
    - Result::as_str
    - version
    - write
    - stat
    - stat_with
    linkageType: ''
    returnType: Result
    signature: 'pub async fn stat_with_not_existing_version(op: Operator) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: new_file
      Src: /src/opendal/core/tests/behavior/async_read.rs:93,1
    - Dst: clone
      Src: /src/opendal/core/tests/behavior/async_read.rs:93,1
    - Dst: write
      Src: /src/opendal/core/tests/behavior/async_read.rs:95,1
    - Dst: Result::clone
      Src: /src/opendal/core/tests/behavior/async_read.rs:95,1
    - Dst: expect
      Src: /src/opendal/core/tests/behavior/async_read.rs:95,1
    - Dst: read
      Src: /src/opendal/core/tests/behavior/async_read.rs:99,1
    - Dst: to_bytes
      Src: /src/opendal/core/tests/behavior/async_read.rs:99,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_read.rs:103,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 24
    argCount: 1
    argNames:
    - op
    argTypes:
    - Operator
    constantsTouched: []
    func_position:
      end: 104
      start: 92
    functionDepth: 31
    functionLinenumber: 92
    functionLinenumberEnd: 104
    functionName: test_read_full
    functionSourceFile: /src/opendal/core/tests/behavior/async_read.rs
    functionUses: 0
    functionsReached:
    - Result::clone
    - read
    - expect
    - Ok
    - clone
    - new_file
    - to_bytes
    - write
    linkageType: ''
    returnType: anyhow::Result
    signature: 'pub async fn test_read_full(op: Operator) -> anyhow::Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: new_file
      Src: /src/opendal/core/tests/behavior/async_read.rs:108,1
    - Dst: clone
      Src: /src/opendal/core/tests/behavior/async_read.rs:108,1
    - Dst: gen_offset_length
      Src: /src/opendal/core/tests/behavior/async_read.rs:109,1
    - Dst: write
      Src: /src/opendal/core/tests/behavior/async_read.rs:111,1
    - Dst: Result::clone
      Src: /src/opendal/core/tests/behavior/async_read.rs:111,1
    - Dst: expect
      Src: /src/opendal/core/tests/behavior/async_read.rs:111,1
    - Dst: read_with
      Src: /src/opendal/core/tests/behavior/async_read.rs:115,1
    - Dst: FutureRead::range
      Src: /src/opendal/core/tests/behavior/async_read.rs:115,1
    - Dst: to_bytes
      Src: /src/opendal/core/tests/behavior/async_read.rs:115,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_read.rs:127,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 29
    argCount: 1
    argNames:
    - op
    argTypes:
    - Operator
    constantsTouched: []
    func_position:
      end: 128
      start: 107
    functionDepth: 31
    functionLinenumber: 107
    functionLinenumberEnd: 128
    functionName: test_read_range
    functionSourceFile: /src/opendal/core/tests/behavior/async_read.rs
    functionUses: 0
    functionsReached:
    - Result::clone
    - expect
    - Ok
    - FutureRead::range
    - gen_offset_length
    - clone
    - read_with
    - new_file
    - to_bytes
    - write
    linkageType: ''
    returnType: anyhow::Result
    signature: 'pub async fn test_read_range(op: Operator) -> anyhow::Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: new_file_path
      Src: /src/opendal/core/tests/behavior/async_read.rs:132,1
    - Dst: gen_fixed_bytes
      Src: /src/opendal/core/tests/behavior/async_read.rs:133,1
    - Dst: write
      Src: /src/opendal/core/tests/behavior/async_read.rs:136,1
    - Dst: Result::clone
      Src: /src/opendal/core/tests/behavior/async_read.rs:136,1
    - Dst: expect
      Src: /src/opendal/core/tests/behavior/async_read.rs:136,1
    - Dst: read_with
      Src: /src/opendal/core/tests/behavior/async_read.rs:140,1
    - Dst: FutureRead::range
      Src: /src/opendal/core/tests/behavior/async_read.rs:140,1
    - Dst: BytesRange::suffix
      Src: /src/opendal/core/tests/behavior/async_read.rs:142,1
    - Dst: to_bytes
      Src: /src/opendal/core/tests/behavior/async_read.rs:140,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_read.rs:152,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 27
    argCount: 1
    argNames:
    - op
    argTypes:
    - Operator
    constantsTouched: []
    func_position:
      end: 153
      start: 131
    functionDepth: 36
    functionLinenumber: 131
    functionLinenumberEnd: 153
    functionName: test_read_suffix
    functionSourceFile: /src/opendal/core/tests/behavior/async_read.rs
    functionUses: 0
    functionsReached:
    - Result::clone
    - BytesRange::suffix
    - expect
    - Ok
    - FutureRead::range
    - read_with
    - new_file_path
    - gen_fixed_bytes
    - to_bytes
    - write
    linkageType: ''
    returnType: anyhow::Result
    signature: 'pub async fn test_read_suffix(op: Operator) -> anyhow::Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: new_file_path
      Src: /src/opendal/core/tests/behavior/async_read.rs:157,1
    - Dst: gen_fixed_bytes
      Src: /src/opendal/core/tests/behavior/async_read.rs:158,1
    - Dst: write
      Src: /src/opendal/core/tests/behavior/async_read.rs:160,1
    - Dst: Result::clone
      Src: /src/opendal/core/tests/behavior/async_read.rs:160,1
    - Dst: expect
      Src: /src/opendal/core/tests/behavior/async_read.rs:160,1
    - Dst: read_with
      Src: /src/opendal/core/tests/behavior/async_read.rs:164,1
    - Dst: FutureRead::range
      Src: /src/opendal/core/tests/behavior/async_read.rs:164,1
    - Dst: BytesRange::suffix
      Src: /src/opendal/core/tests/behavior/async_read.rs:166,1
    - Dst: Result::len
      Src: /src/opendal/core/tests/behavior/async_read.rs:166,1
    - Dst: to_bytes
      Src: /src/opendal/core/tests/behavior/async_read.rs:164,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_read.rs:172,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 31
    argCount: 1
    argNames:
    - op
    argTypes:
    - Operator
    constantsTouched: []
    func_position:
      end: 173
      start: 156
    functionDepth: 36
    functionLinenumber: 156
    functionLinenumberEnd: 173
    functionName: test_read_suffix_larger_than_file
    functionSourceFile: /src/opendal/core/tests/behavior/async_read.rs
    functionUses: 0
    functionsReached:
    - Result::clone
    - BytesRange::suffix
    - expect
    - Ok
    - FutureRead::range
    - read_with
    - new_file_path
    - gen_fixed_bytes
    - Result::len
    - to_bytes
    - write
    linkageType: ''
    returnType: anyhow::Result
    signature: 'pub async fn test_read_suffix_larger_than_file(op: Operator) -> anyhow::Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: new_file_path
      Src: /src/opendal/core/tests/behavior/async_read.rs:177,1
    - Dst: gen_fixed_bytes
      Src: /src/opendal/core/tests/behavior/async_read.rs:178,1
    - Dst: write
      Src: /src/opendal/core/tests/behavior/async_read.rs:180,1
    - Dst: expect
      Src: /src/opendal/core/tests/behavior/async_read.rs:180,1
    - Dst: read_with
      Src: /src/opendal/core/tests/behavior/async_read.rs:182,1
    - Dst: FutureRead::range
      Src: /src/opendal/core/tests/behavior/async_read.rs:182,1
    - Dst: BytesRange::suffix
      Src: /src/opendal/core/tests/behavior/async_read.rs:184,1
    - Dst: to_bytes
      Src: /src/opendal/core/tests/behavior/async_read.rs:182,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_read.rs:189,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 23
    argCount: 1
    argNames:
    - op
    argTypes:
    - Operator
    constantsTouched: []
    func_position:
      end: 190
      start: 176
    functionDepth: 36
    functionLinenumber: 176
    functionLinenumberEnd: 190
    functionName: test_read_suffix_zero
    functionSourceFile: /src/opendal/core/tests/behavior/async_read.rs
    functionUses: 0
    functionsReached:
    - BytesRange::suffix
    - expect
    - Ok
    - FutureRead::range
    - read_with
    - new_file_path
    - gen_fixed_bytes
    - to_bytes
    - write
    linkageType: ''
    returnType: anyhow::Result
    signature: 'pub async fn test_read_suffix_zero(op: Operator) -> anyhow::Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: new_file_path
      Src: /src/opendal/core/tests/behavior/async_read.rs:194,1
    - Dst: gen_fixed_bytes
      Src: /src/opendal/core/tests/behavior/async_read.rs:195,1
    - Dst: write
      Src: /src/opendal/core/tests/behavior/async_read.rs:198,1
    - Dst: Result::clone
      Src: /src/opendal/core/tests/behavior/async_read.rs:198,1
    - Dst: expect
      Src: /src/opendal/core/tests/behavior/async_read.rs:198,1
    - Dst: reader_with
      Src: /src/opendal/core/tests/behavior/async_read.rs:202,1
    - Dst: FutureReader::chunk
      Src: /src/opendal/core/tests/behavior/async_read.rs:202,1
    - Dst: Self::concurrent
      Src: /src/opendal/core/tests/behavior/async_read.rs:202,1
    - Dst: anyhow::Result::read
      Src: /src/opendal/core/tests/behavior/async_read.rs:203,1
    - Dst: BytesRange::suffix
      Src: /src/opendal/core/tests/behavior/async_read.rs:204,1
    - Dst: to_bytes
      Src: /src/opendal/core/tests/behavior/async_read.rs:203,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_read.rs:214,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 33
    argCount: 1
    argNames:
    - op
    argTypes:
    - Operator
    constantsTouched: []
    func_position:
      end: 215
      start: 193
    functionDepth: 36
    functionLinenumber: 193
    functionLinenumberEnd: 215
    functionName: test_reader_suffix_with_chunk
    functionSourceFile: /src/opendal/core/tests/behavior/async_read.rs
    functionUses: 0
    functionsReached:
    - Result::clone
    - BytesRange::suffix
    - expect
    - Ok
    - reader_with
    - anyhow::Result::read
    - FutureReader::chunk
    - new_file_path
    - gen_fixed_bytes
    - Self::concurrent
    - to_bytes
    - write
    linkageType: ''
    returnType: anyhow::Result
    signature: 'pub async fn test_reader_suffix_with_chunk(op: Operator) -> anyhow::Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: new_file
      Src: /src/opendal/core/tests/behavior/async_read.rs:219,1
    - Dst: clone
      Src: /src/opendal/core/tests/behavior/async_read.rs:219,1
    - Dst: write
      Src: /src/opendal/core/tests/behavior/async_read.rs:221,1
    - Dst: Result::clone
      Src: /src/opendal/core/tests/behavior/async_read.rs:221,1
    - Dst: expect
      Src: /src/opendal/core/tests/behavior/async_read.rs:221,1
    - Dst: reader
      Src: /src/opendal/core/tests/behavior/async_read.rs:226,1
    - Dst: read
      Src: /src/opendal/core/tests/behavior/async_read.rs:226,1
    - Dst: to_bytes
      Src: /src/opendal/core/tests/behavior/async_read.rs:226,1
    - Dst: reader
      Src: /src/opendal/core/tests/behavior/async_read.rs:231,1
    - Dst: into_bytes_stream
      Src: /src/opendal/core/tests/behavior/async_read.rs:231,1
    - Dst: try_fold
      Src: /src/opendal/core/tests/behavior/async_read.rs:231,1
    - Dst: Vec::new
      Src: /src/opendal/core/tests/behavior/async_read.rs:236,1
    - Dst: extend_from_slice
      Src: /src/opendal/core/tests/behavior/async_read.rs:237,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_read.rs:238,1
    - Dst: reader
      Src: /src/opendal/core/tests/behavior/async_read.rs:245,1
    - Dst: into_futures_async_read
      Src: /src/opendal/core/tests/behavior/async_read.rs:245,1
    - Dst: Vec::new
      Src: /src/opendal/core/tests/behavior/async_read.rs:250,1
    - Dst: read_to_end
      Src: /src/opendal/core/tests/behavior/async_read.rs:251,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_read.rs:255,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 73
    argCount: 1
    argNames:
    - op
    argTypes:
    - Operator
    constantsTouched: []
    func_position:
      end: 256
      start: 218
    functionDepth: 30
    functionLinenumber: 218
    functionLinenumberEnd: 256
    functionName: test_reader
    functionSourceFile: /src/opendal/core/tests/behavior/async_read.rs
    functionUses: 2
    functionsReached:
    - Result::clone
    - read
    - reader
    - expect
    - Ok
    - read_to_end
    - clone
    - try_fold
    - Vec::new
    - new_file
    - extend_from_slice
    - into_bytes_stream
    - to_bytes
    - into_futures_async_read
    - write
    linkageType: ''
    returnType: anyhow::Result
    signature: 'pub async fn test_reader(op: Operator) -> anyhow::Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: new_file_path
      Src: /src/opendal/core/tests/behavior/async_read.rs:260,1
    - Dst: gen_fixed_bytes
      Src: /src/opendal/core/tests/behavior/async_read.rs:261,1
    - Dst: write
      Src: /src/opendal/core/tests/behavior/async_read.rs:265,1
    - Dst: Result::clone
      Src: /src/opendal/core/tests/behavior/async_read.rs:265,1
    - Dst: expect
      Src: /src/opendal/core/tests/behavior/async_read.rs:265,1
    - Dst: reader
      Src: /src/opendal/core/tests/behavior/async_read.rs:269,1
    - Dst: into_stream
      Src: /src/opendal/core/tests/behavior/async_read.rs:269,1
    - Dst: Result::metadata
      Src: /src/opendal/core/tests/behavior/async_read.rs:275,1
    - Dst: Error::kind
      Src: /src/opendal/core/tests/behavior/async_read.rs:281,1
    - Dst: Err
      Src: /src/opendal/core/tests/behavior/async_read.rs:282,1
    - Dst: Error::into
      Src: /src/opendal/core/tests/behavior/async_read.rs:282,1
    - Dst: Result::try_collect
      Src: /src/opendal/core/tests/behavior/async_read.rs:285,1
    - Dst: Result::into_iter
      Src: /src/opendal/core/tests/behavior/async_read.rs:286,1
    - Dst: flatten
      Src: /src/opendal/core/tests/behavior/async_read.rs:286,1
    - Dst: collect
      Src: /src/opendal/core/tests/behavior/async_read.rs:286,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_read.rs:294,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 50
    argCount: 1
    argNames:
    - op
    argTypes:
    - Operator
    constantsTouched: []
    func_position:
      end: 295
      start: 259
    functionDepth: 36
    functionLinenumber: 259
    functionLinenumberEnd: 295
    functionName: test_buffer_stream_metadata
    functionSourceFile: /src/opendal/core/tests/behavior/async_read.rs
    functionUses: 0
    functionsReached:
    - Result::clone
    - into_stream
    - Result::metadata
    - collect
    - reader
    - expect
    - Error::into
    - Ok
    - Result::into_iter
    - Err
    - new_file_path
    - flatten
    - gen_fixed_bytes
    - Error::kind
    - Result::try_collect
    - write
    linkageType: ''
    returnType: anyhow::Result
    signature: 'pub async fn test_buffer_stream_metadata(op: Operator) -> anyhow::Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: new_file_path
      Src: /src/opendal/core/tests/behavior/async_read.rs:299,1
    - Dst: gen_fixed_bytes
      Src: /src/opendal/core/tests/behavior/async_read.rs:300,1
    - Dst: write
      Src: /src/opendal/core/tests/behavior/async_read.rs:304,1
    - Dst: Result::clone
      Src: /src/opendal/core/tests/behavior/async_read.rs:304,1
    - Dst: expect
      Src: /src/opendal/core/tests/behavior/async_read.rs:304,1
    - Dst: reader_with
      Src: /src/opendal/core/tests/behavior/async_read.rs:308,1
    - Dst: FutureReader::chunk
      Src: /src/opendal/core/tests/behavior/async_read.rs:308,1
    - Dst: Self::concurrent
      Src: /src/opendal/core/tests/behavior/async_read.rs:308,1
    - Dst: into_stream
      Src: /src/opendal/core/tests/behavior/async_read.rs:308,1
    - Dst: Result::metadata
      Src: /src/opendal/core/tests/behavior/async_read.rs:316,1
    - Dst: Error::kind
      Src: /src/opendal/core/tests/behavior/async_read.rs:322,1
    - Dst: Err
      Src: /src/opendal/core/tests/behavior/async_read.rs:323,1
    - Dst: Error::into
      Src: /src/opendal/core/tests/behavior/async_read.rs:323,1
    - Dst: Result::try_collect
      Src: /src/opendal/core/tests/behavior/async_read.rs:326,1
    - Dst: Result::into_iter
      Src: /src/opendal/core/tests/behavior/async_read.rs:327,1
    - Dst: flatten
      Src: /src/opendal/core/tests/behavior/async_read.rs:327,1
    - Dst: collect
      Src: /src/opendal/core/tests/behavior/async_read.rs:327,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_read.rs:335,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 54
    argCount: 1
    argNames:
    - op
    argTypes:
    - Operator
    constantsTouched: []
    func_position:
      end: 336
      start: 298
    functionDepth: 36
    functionLinenumber: 298
    functionLinenumberEnd: 336
    functionName: test_buffer_stream_metadata_with_concurrent
    functionSourceFile: /src/opendal/core/tests/behavior/async_read.rs
    functionUses: 0
    functionsReached:
    - Result::clone
    - into_stream
    - Result::metadata
    - collect
    - expect
    - Error::into
    - Ok
    - Result::into_iter
    - reader_with
    - FutureReader::chunk
    - Err
    - new_file_path
    - flatten
    - gen_fixed_bytes
    - Self::concurrent
    - Error::kind
    - Result::try_collect
    - write
    linkageType: ''
    returnType: anyhow::Result
    signature: 'pub async fn test_buffer_stream_metadata_with_concurrent(op: Operator)
      -> anyhow::Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: new_file_path
      Src: /src/opendal/core/tests/behavior/async_read.rs:340,1
    - Dst: gen_fixed_bytes
      Src: /src/opendal/core/tests/behavior/async_read.rs:341,1
    - Dst: write
      Src: /src/opendal/core/tests/behavior/async_read.rs:345,1
    - Dst: Result::clone
      Src: /src/opendal/core/tests/behavior/async_read.rs:345,1
    - Dst: expect
      Src: /src/opendal/core/tests/behavior/async_read.rs:345,1
    - Dst: reader
      Src: /src/opendal/core/tests/behavior/async_read.rs:349,1
    - Dst: into_bytes_stream
      Src: /src/opendal/core/tests/behavior/async_read.rs:349,1
    - Dst: Result::metadata
      Src: /src/opendal/core/tests/behavior/async_read.rs:355,1
    - Dst: Error::kind
      Src: /src/opendal/core/tests/behavior/async_read.rs:361,1
    - Dst: Err
      Src: /src/opendal/core/tests/behavior/async_read.rs:362,1
    - Dst: Error::into
      Src: /src/opendal/core/tests/behavior/async_read.rs:362,1
    - Dst: Result::try_fold
      Src: /src/opendal/core/tests/behavior/async_read.rs:365,1
    - Dst: Vec::new
      Src: /src/opendal/core/tests/behavior/async_read.rs:366,1
    - Dst: extend_from_slice
      Src: /src/opendal/core/tests/behavior/async_read.rs:367,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_read.rs:368,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_read.rs:378,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 52
    argCount: 1
    argNames:
    - op
    argTypes:
    - Operator
    constantsTouched: []
    func_position:
      end: 379
      start: 339
    functionDepth: 36
    functionLinenumber: 339
    functionLinenumberEnd: 379
    functionName: test_futures_bytes_stream_metadata
    functionSourceFile: /src/opendal/core/tests/behavior/async_read.rs
    functionUses: 0
    functionsReached:
    - Result::clone
    - Result::metadata
    - reader
    - expect
    - Error::into
    - Ok
    - Result::try_fold
    - Err
    - new_file_path
    - gen_fixed_bytes
    - Error::kind
    - extend_from_slice
    - into_bytes_stream
    - Vec::new
    - write
    linkageType: ''
    returnType: anyhow::Result
    signature: 'pub async fn test_futures_bytes_stream_metadata(op: Operator) -> anyhow::Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: new_file_path
      Src: /src/opendal/core/tests/behavior/async_read.rs:385,1
    - Dst: gen_fixed_bytes
      Src: /src/opendal/core/tests/behavior/async_read.rs:386,1
    - Dst: write
      Src: /src/opendal/core/tests/behavior/async_read.rs:390,1
    - Dst: Result::clone
      Src: /src/opendal/core/tests/behavior/async_read.rs:390,1
    - Dst: expect
      Src: /src/opendal/core/tests/behavior/async_read.rs:390,1
    - Dst: reader_with
      Src: /src/opendal/core/tests/behavior/async_read.rs:394,1
    - Dst: FutureReader::chunk
      Src: /src/opendal/core/tests/behavior/async_read.rs:394,1
    - Dst: Self::concurrent
      Src: /src/opendal/core/tests/behavior/async_read.rs:394,1
    - Dst: into_bytes_stream
      Src: /src/opendal/core/tests/behavior/async_read.rs:394,1
    - Dst: Result::metadata
      Src: /src/opendal/core/tests/behavior/async_read.rs:402,1
    - Dst: Error::kind
      Src: /src/opendal/core/tests/behavior/async_read.rs:408,1
    - Dst: Err
      Src: /src/opendal/core/tests/behavior/async_read.rs:409,1
    - Dst: Error::into
      Src: /src/opendal/core/tests/behavior/async_read.rs:409,1
    - Dst: Result::try_fold
      Src: /src/opendal/core/tests/behavior/async_read.rs:412,1
    - Dst: Vec::new
      Src: /src/opendal/core/tests/behavior/async_read.rs:413,1
    - Dst: extend_from_slice
      Src: /src/opendal/core/tests/behavior/async_read.rs:414,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_read.rs:415,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_read.rs:425,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 56
    argCount: 1
    argNames:
    - op
    argTypes:
    - Operator
    constantsTouched: []
    func_position:
      end: 426
      start: 382
    functionDepth: 36
    functionLinenumber: 382
    functionLinenumberEnd: 426
    functionName: test_futures_bytes_stream_metadata_with_concurrent
    functionSourceFile: /src/opendal/core/tests/behavior/async_read.rs
    functionUses: 0
    functionsReached:
    - Result::clone
    - Result::metadata
    - expect
    - Error::into
    - Ok
    - Result::try_fold
    - reader_with
    - FutureReader::chunk
    - Err
    - new_file_path
    - gen_fixed_bytes
    - Self::concurrent
    - Error::kind
    - extend_from_slice
    - into_bytes_stream
    - Vec::new
    - write
    linkageType: ''
    returnType: anyhow::Result
    signature: 'pub async fn test_futures_bytes_stream_metadata_with_concurrent(op:
      Operator,) -> anyhow::Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: uuid::Uuid::new_v4
      Src: /src/opendal/core/tests/behavior/async_read.rs:430,1
    - Dst: to_string
      Src: /src/opendal/core/tests/behavior/async_read.rs:430,1
    - Dst: read
      Src: /src/opendal/core/tests/behavior/async_read.rs:432,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_read.rs:436,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 1
    argNames:
    - op
    argTypes:
    - Operator
    constantsTouched: []
    func_position:
      end: 437
      start: 429
    functionDepth: 31
    functionLinenumber: 429
    functionLinenumberEnd: 437
    functionName: test_read_not_exist
    functionSourceFile: /src/opendal/core/tests/behavior/async_read.rs
    functionUses: 0
    functionsReached:
    - to_string
    - uuid::Uuid::new_v4
    - read
    - Ok
    linkageType: ''
    returnType: anyhow::Result
    signature: 'pub async fn test_read_not_exist(op: Operator) -> anyhow::Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: info
      Src: /src/opendal/core/tests/behavior/async_read.rs:441,1
    - Dst: ServiceInfo::capability
      Src: /src/opendal/core/tests/behavior/async_read.rs:441,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_read.rs:442,1
    - Dst: new_file
      Src: /src/opendal/core/tests/behavior/async_read.rs:445,1
    - Dst: clone
      Src: /src/opendal/core/tests/behavior/async_read.rs:445,1
    - Dst: write
      Src: /src/opendal/core/tests/behavior/async_read.rs:447,1
    - Dst: Result::clone
      Src: /src/opendal/core/tests/behavior/async_read.rs:447,1
    - Dst: expect
      Src: /src/opendal/core/tests/behavior/async_read.rs:447,1
    - Dst: stat
      Src: /src/opendal/core/tests/behavior/async_read.rs:451,1
    - Dst: reader_with
      Src: /src/opendal/core/tests/behavior/async_read.rs:453,1
    - Dst: FutureReader::if_match
      Src: /src/opendal/core/tests/behavior/async_read.rs:453,1
    - Dst: anyhow::Result::read
      Src: /src/opendal/core/tests/behavior/async_read.rs:454,1
    - Dst: reader_with
      Src: /src/opendal/core/tests/behavior/async_read.rs:458,1
    - Dst: FutureReader::if_match
      Src: /src/opendal/core/tests/behavior/async_read.rs:458,1
    - Dst: Result::etag
      Src: /src/opendal/core/tests/behavior/async_read.rs:460,1
    - Dst: Option::expect
      Src: /src/opendal/core/tests/behavior/async_read.rs:460,1
    - Dst: anyhow::Result::read
      Src: /src/opendal/core/tests/behavior/async_read.rs:463,1
    - Dst: expect
      Src: /src/opendal/core/tests/behavior/async_read.rs:463,1
    - Dst: to_bytes
      Src: /src/opendal/core/tests/behavior/async_read.rs:463,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_read.rs:466,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 65
    argCount: 1
    argNames:
    - op
    argTypes:
    - Operator
    constantsTouched: []
    func_position:
      end: 467
      start: 440
    functionDepth: 31
    functionLinenumber: 440
    functionLinenumberEnd: 467
    functionName: test_reader_with_if_match
    functionSourceFile: /src/opendal/core/tests/behavior/async_read.rs
    functionUses: 0
    functionsReached:
    - Result::clone
    - info
    - Option::expect
    - expect
    - Ok
    - ServiceInfo::capability
    - reader_with
    - anyhow::Result::read
    - clone
    - FutureReader::if_match
    - Result::etag
    - new_file
    - to_bytes
    - write
    - stat
    linkageType: ''
    returnType: anyhow::Result
    signature: 'pub async fn test_reader_with_if_match(op: Operator) -> anyhow::Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: info
      Src: /src/opendal/core/tests/behavior/async_read.rs:471,1
    - Dst: ServiceInfo::capability
      Src: /src/opendal/core/tests/behavior/async_read.rs:471,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_read.rs:472,1
    - Dst: new_file
      Src: /src/opendal/core/tests/behavior/async_read.rs:475,1
    - Dst: clone
      Src: /src/opendal/core/tests/behavior/async_read.rs:475,1
    - Dst: write
      Src: /src/opendal/core/tests/behavior/async_read.rs:477,1
    - Dst: Result::clone
      Src: /src/opendal/core/tests/behavior/async_read.rs:477,1
    - Dst: expect
      Src: /src/opendal/core/tests/behavior/async_read.rs:477,1
    - Dst: stat
      Src: /src/opendal/core/tests/behavior/async_read.rs:481,1
    - Dst: read_with
      Src: /src/opendal/core/tests/behavior/async_read.rs:483,1
    - Dst: FutureRead::if_match
      Src: /src/opendal/core/tests/behavior/async_read.rs:483,1
    - Dst: read_with
      Src: /src/opendal/core/tests/behavior/async_read.rs:487,1
    - Dst: FutureRead::if_match
      Src: /src/opendal/core/tests/behavior/async_read.rs:487,1
    - Dst: Result::etag
      Src: /src/opendal/core/tests/behavior/async_read.rs:489,1
    - Dst: Option::expect
      Src: /src/opendal/core/tests/behavior/async_read.rs:489,1
    - Dst: expect
      Src: /src/opendal/core/tests/behavior/async_read.rs:487,1
    - Dst: to_bytes
      Src: /src/opendal/core/tests/behavior/async_read.rs:487,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_read.rs:495,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 55
    argCount: 1
    argNames:
    - op
    argTypes:
    - Operator
    constantsTouched: []
    func_position:
      end: 496
      start: 470
    functionDepth: 31
    functionLinenumber: 470
    functionLinenumberEnd: 496
    functionName: test_read_with_if_match
    functionSourceFile: /src/opendal/core/tests/behavior/async_read.rs
    functionUses: 0
    functionsReached:
    - Result::clone
    - info
    - Option::expect
    - expect
    - Ok
    - ServiceInfo::capability
    - Result::etag
    - clone
    - read_with
    - FutureRead::if_match
    - new_file
    - to_bytes
    - write
    - stat
    linkageType: ''
    returnType: anyhow::Result
    signature: 'pub async fn test_read_with_if_match(op: Operator) -> anyhow::Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: info
      Src: /src/opendal/core/tests/behavior/async_read.rs:500,1
    - Dst: ServiceInfo::capability
      Src: /src/opendal/core/tests/behavior/async_read.rs:500,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_read.rs:501,1
    - Dst: new_file
      Src: /src/opendal/core/tests/behavior/async_read.rs:504,1
    - Dst: clone
      Src: /src/opendal/core/tests/behavior/async_read.rs:504,1
    - Dst: write
      Src: /src/opendal/core/tests/behavior/async_read.rs:506,1
    - Dst: Result::clone
      Src: /src/opendal/core/tests/behavior/async_read.rs:506,1
    - Dst: expect
      Src: /src/opendal/core/tests/behavior/async_read.rs:506,1
    - Dst: stat
      Src: /src/opendal/core/tests/behavior/async_read.rs:510,1
    - Dst: reader_with
      Src: /src/opendal/core/tests/behavior/async_read.rs:512,1
    - Dst: FutureReader::if_none_match
      Src: /src/opendal/core/tests/behavior/async_read.rs:512,1
    - Dst: Result::etag
      Src: /src/opendal/core/tests/behavior/async_read.rs:514,1
    - Dst: Option::expect
      Src: /src/opendal/core/tests/behavior/async_read.rs:514,1
    - Dst: anyhow::Result::read
      Src: /src/opendal/core/tests/behavior/async_read.rs:516,1
    - Dst: reader_with
      Src: /src/opendal/core/tests/behavior/async_read.rs:521,1
    - Dst: FutureReader::if_none_match
      Src: /src/opendal/core/tests/behavior/async_read.rs:521,1
    - Dst: anyhow::Result::read
      Src: /src/opendal/core/tests/behavior/async_read.rs:525,1
    - Dst: expect
      Src: /src/opendal/core/tests/behavior/async_read.rs:525,1
    - Dst: to_bytes
      Src: /src/opendal/core/tests/behavior/async_read.rs:525,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_read.rs:528,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 65
    argCount: 1
    argNames:
    - op
    argTypes:
    - Operator
    constantsTouched: []
    func_position:
      end: 529
      start: 499
    functionDepth: 31
    functionLinenumber: 499
    functionLinenumberEnd: 529
    functionName: test_reader_with_if_none_match
    functionSourceFile: /src/opendal/core/tests/behavior/async_read.rs
    functionUses: 0
    functionsReached:
    - Result::clone
    - info
    - Option::expect
    - expect
    - Ok
    - ServiceInfo::capability
    - reader_with
    - Result::etag
    - clone
    - anyhow::Result::read
    - new_file
    - to_bytes
    - write
    - stat
    - FutureReader::if_none_match
    linkageType: ''
    returnType: anyhow::Result
    signature: 'pub async fn test_reader_with_if_none_match(op: Operator) -> anyhow::Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: info
      Src: /src/opendal/core/tests/behavior/async_read.rs:533,1
    - Dst: ServiceInfo::capability
      Src: /src/opendal/core/tests/behavior/async_read.rs:533,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_read.rs:534,1
    - Dst: new_file
      Src: /src/opendal/core/tests/behavior/async_read.rs:537,1
    - Dst: clone
      Src: /src/opendal/core/tests/behavior/async_read.rs:537,1
    - Dst: write
      Src: /src/opendal/core/tests/behavior/async_read.rs:539,1
    - Dst: Result::clone
      Src: /src/opendal/core/tests/behavior/async_read.rs:539,1
    - Dst: expect
      Src: /src/opendal/core/tests/behavior/async_read.rs:539,1
    - Dst: stat
      Src: /src/opendal/core/tests/behavior/async_read.rs:542,1
    - Dst: last_modified
      Src: /src/opendal/core/tests/behavior/async_read.rs:542,1
    - Dst: unwrap
      Src: /src/opendal/core/tests/behavior/async_read.rs:542,1
    - Dst: Duration::from_secs
      Src: /src/opendal/core/tests/behavior/async_read.rs:544,1
    - Dst: reader_with
      Src: /src/opendal/core/tests/behavior/async_read.rs:545,1
    - Dst: FutureReader::if_modified_since
      Src: /src/opendal/core/tests/behavior/async_read.rs:545,1
    - Dst: anyhow::Result::read
      Src: /src/opendal/core/tests/behavior/async_read.rs:546,1
    - Dst: to_bytes
      Src: /src/opendal/core/tests/behavior/async_read.rs:546,1
    - Dst: tokio::time::sleep
      Src: /src/opendal/core/tests/behavior/async_read.rs:549,1
    - Dst: Duration::from_secs
      Src: /src/opendal/core/tests/behavior/async_read.rs:549,1
    - Dst: Duration::from_secs
      Src: /src/opendal/core/tests/behavior/async_read.rs:551,1
    - Dst: reader_with
      Src: /src/opendal/core/tests/behavior/async_read.rs:552,1
    - Dst: FutureReader::if_modified_since
      Src: /src/opendal/core/tests/behavior/async_read.rs:552,1
    - Dst: anyhow::Result::read
      Src: /src/opendal/core/tests/behavior/async_read.rs:553,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_read.rs:557,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 72
    argCount: 1
    argNames:
    - op
    argTypes:
    - Operator
    constantsTouched: []
    func_position:
      end: 558
      start: 532
    functionDepth: 31
    functionLinenumber: 532
    functionLinenumberEnd: 558
    functionName: test_reader_with_if_modified_since
    functionSourceFile: /src/opendal/core/tests/behavior/async_read.rs
    functionUses: 0
    functionsReached:
    - Result::clone
    - info
    - expect
    - Ok
    - ServiceInfo::capability
    - unwrap
    - reader_with
    - clone
    - last_modified
    - anyhow::Result::read
    - tokio::time::sleep
    - new_file
    - Duration::from_secs
    - to_bytes
    - FutureReader::if_modified_since
    - write
    - stat
    linkageType: ''
    returnType: anyhow::Result
    signature: 'pub async fn test_reader_with_if_modified_since(op: Operator) -> anyhow::Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: info
      Src: /src/opendal/core/tests/behavior/async_read.rs:562,1
    - Dst: ServiceInfo::capability
      Src: /src/opendal/core/tests/behavior/async_read.rs:562,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_read.rs:563,1
    - Dst: new_file
      Src: /src/opendal/core/tests/behavior/async_read.rs:566,1
    - Dst: clone
      Src: /src/opendal/core/tests/behavior/async_read.rs:566,1
    - Dst: write
      Src: /src/opendal/core/tests/behavior/async_read.rs:568,1
    - Dst: Result::clone
      Src: /src/opendal/core/tests/behavior/async_read.rs:568,1
    - Dst: expect
      Src: /src/opendal/core/tests/behavior/async_read.rs:568,1
    - Dst: stat
      Src: /src/opendal/core/tests/behavior/async_read.rs:571,1
    - Dst: last_modified
      Src: /src/opendal/core/tests/behavior/async_read.rs:571,1
    - Dst: unwrap
      Src: /src/opendal/core/tests/behavior/async_read.rs:571,1
    - Dst: Duration::from_secs
      Src: /src/opendal/core/tests/behavior/async_read.rs:573,1
    - Dst: reader_with
      Src: /src/opendal/core/tests/behavior/async_read.rs:574,1
    - Dst: FutureReader::if_unmodified_since
      Src: /src/opendal/core/tests/behavior/async_read.rs:574,1
    - Dst: anyhow::Result::read
      Src: /src/opendal/core/tests/behavior/async_read.rs:575,1
    - Dst: tokio::time::sleep
      Src: /src/opendal/core/tests/behavior/async_read.rs:579,1
    - Dst: Duration::from_secs
      Src: /src/opendal/core/tests/behavior/async_read.rs:579,1
    - Dst: Duration::from_secs
      Src: /src/opendal/core/tests/behavior/async_read.rs:581,1
    - Dst: reader_with
      Src: /src/opendal/core/tests/behavior/async_read.rs:582,1
    - Dst: FutureReader::if_unmodified_since
      Src: /src/opendal/core/tests/behavior/async_read.rs:582,1
    - Dst: anyhow::Result::read
      Src: /src/opendal/core/tests/behavior/async_read.rs:583,1
    - Dst: to_bytes
      Src: /src/opendal/core/tests/behavior/async_read.rs:583,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_read.rs:586,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 72
    argCount: 1
    argNames:
    - op
    argTypes:
    - Operator
    constantsTouched: []
    func_position:
      end: 587
      start: 561
    functionDepth: 31
    functionLinenumber: 561
    functionLinenumberEnd: 587
    functionName: test_reader_with_if_unmodified_since
    functionSourceFile: /src/opendal/core/tests/behavior/async_read.rs
    functionUses: 0
    functionsReached:
    - Result::clone
    - info
    - expect
    - Ok
    - ServiceInfo::capability
    - unwrap
    - reader_with
    - clone
    - last_modified
    - anyhow::Result::read
    - tokio::time::sleep
    - FutureReader::if_unmodified_since
    - new_file
    - Duration::from_secs
    - to_bytes
    - write
    - stat
    linkageType: ''
    returnType: anyhow::Result
    signature: 'pub async fn test_reader_with_if_unmodified_since(op: Operator) ->
      anyhow::Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: info
      Src: /src/opendal/core/tests/behavior/async_read.rs:591,1
    - Dst: ServiceInfo::capability
      Src: /src/opendal/core/tests/behavior/async_read.rs:591,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_read.rs:592,1
    - Dst: new_file
      Src: /src/opendal/core/tests/behavior/async_read.rs:595,1
    - Dst: clone
      Src: /src/opendal/core/tests/behavior/async_read.rs:595,1
    - Dst: write
      Src: /src/opendal/core/tests/behavior/async_read.rs:597,1
    - Dst: Result::clone
      Src: /src/opendal/core/tests/behavior/async_read.rs:597,1
    - Dst: expect
      Src: /src/opendal/core/tests/behavior/async_read.rs:597,1
    - Dst: stat
      Src: /src/opendal/core/tests/behavior/async_read.rs:601,1
    - Dst: read_with
      Src: /src/opendal/core/tests/behavior/async_read.rs:603,1
    - Dst: FutureRead::if_none_match
      Src: /src/opendal/core/tests/behavior/async_read.rs:603,1
    - Dst: Result::etag
      Src: /src/opendal/core/tests/behavior/async_read.rs:605,1
    - Dst: Option::expect
      Src: /src/opendal/core/tests/behavior/async_read.rs:605,1
    - Dst: read_with
      Src: /src/opendal/core/tests/behavior/async_read.rs:610,1
    - Dst: FutureRead::if_none_match
      Src: /src/opendal/core/tests/behavior/async_read.rs:610,1
    - Dst: expect
      Src: /src/opendal/core/tests/behavior/async_read.rs:610,1
    - Dst: to_bytes
      Src: /src/opendal/core/tests/behavior/async_read.rs:610,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_read.rs:618,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 55
    argCount: 1
    argNames:
    - op
    argTypes:
    - Operator
    constantsTouched: []
    func_position:
      end: 619
      start: 590
    functionDepth: 31
    functionLinenumber: 590
    functionLinenumberEnd: 619
    functionName: test_read_with_if_none_match
    functionSourceFile: /src/opendal/core/tests/behavior/async_read.rs
    functionUses: 0
    functionsReached:
    - Result::clone
    - info
    - Option::expect
    - expect
    - Ok
    - FutureRead::if_none_match
    - ServiceInfo::capability
    - Result::etag
    - clone
    - read_with
    - new_file
    - to_bytes
    - write
    - stat
    linkageType: ''
    returnType: anyhow::Result
    signature: 'pub async fn test_read_with_if_none_match(op: Operator) -> anyhow::Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: info
      Src: /src/opendal/core/tests/behavior/async_read.rs:623,1
    - Dst: ServiceInfo::capability
      Src: /src/opendal/core/tests/behavior/async_read.rs:623,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_read.rs:624,1
    - Dst: new_dir_path
      Src: /src/opendal/core/tests/behavior/async_read.rs:627,1
    - Dst: create_dir
      Src: /src/opendal/core/tests/behavior/async_read.rs:629,1
    - Dst: expect
      Src: /src/opendal/core/tests/behavior/async_read.rs:629,1
    - Dst: read
      Src: /src/opendal/core/tests/behavior/async_read.rs:631,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_read.rs:635,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 29
    argCount: 1
    argNames:
    - op
    argTypes:
    - Operator
    constantsTouched: []
    func_position:
      end: 636
      start: 622
    functionDepth: 34
    functionLinenumber: 622
    functionLinenumberEnd: 636
    functionName: test_read_with_dir_path
    functionSourceFile: /src/opendal/core/tests/behavior/async_read.rs
    functionUses: 0
    functionsReached:
    - new_dir_path
    - info
    - read
    - expect
    - Ok
    - ServiceInfo::capability
    - create_dir
    linkageType: ''
    returnType: anyhow::Result
    signature: 'pub async fn test_read_with_dir_path(op: Operator) -> anyhow::Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: new_file_with_path
      Src: /src/opendal/core/tests/behavior/async_read.rs:641,1
    - Dst: clone
      Src: /src/opendal/core/tests/behavior/async_read.rs:641,1
    - Dst: write
      Src: /src/opendal/core/tests/behavior/async_read.rs:643,1
    - Dst: Result::clone
      Src: /src/opendal/core/tests/behavior/async_read.rs:643,1
    - Dst: expect
      Src: /src/opendal/core/tests/behavior/async_read.rs:643,1
    - Dst: read
      Src: /src/opendal/core/tests/behavior/async_read.rs:647,1
    - Dst: to_bytes
      Src: /src/opendal/core/tests/behavior/async_read.rs:647,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_read.rs:651,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 25
    argCount: 1
    argNames:
    - op
    argTypes:
    - Operator
    constantsTouched: []
    func_position:
      end: 652
      start: 639
    functionDepth: 30
    functionLinenumber: 639
    functionLinenumberEnd: 652
    functionName: test_read_with_special_chars
    functionSourceFile: /src/opendal/core/tests/behavior/async_read.rs
    functionUses: 0
    functionsReached:
    - Result::clone
    - read
    - new_file_with_path
    - expect
    - Ok
    - clone
    - to_bytes
    - write
    linkageType: ''
    returnType: anyhow::Result
    signature: 'pub async fn test_read_with_special_chars(op: Operator) -> anyhow::Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: info
      Src: /src/opendal/core/tests/behavior/async_read.rs:656,1
    - Dst: ServiceInfo::capability
      Src: /src/opendal/core/tests/behavior/async_read.rs:656,1
    - Dst: info
      Src: /src/opendal/core/tests/behavior/async_read.rs:656,1
    - Dst: ServiceInfo::capability
      Src: /src/opendal/core/tests/behavior/async_read.rs:656,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_read.rs:658,1
    - Dst: new_file
      Src: /src/opendal/core/tests/behavior/async_read.rs:661,1
    - Dst: clone
      Src: /src/opendal/core/tests/behavior/async_read.rs:661,1
    - Dst: write
      Src: /src/opendal/core/tests/behavior/async_read.rs:663,1
    - Dst: Result::clone
      Src: /src/opendal/core/tests/behavior/async_read.rs:663,1
    - Dst: expect
      Src: /src/opendal/core/tests/behavior/async_read.rs:663,1
    - Dst: presign_read_with
      Src: /src/opendal/core/tests/behavior/async_read.rs:668,1
    - Dst: Duration::from_secs
      Src: /src/opendal/core/tests/behavior/async_read.rs:669,1
    - Dst: FuturePresignRead::override_cache_control
      Src: /src/opendal/core/tests/behavior/async_read.rs:668,1
    - Dst: expect
      Src: /src/opendal/core/tests/behavior/async_read.rs:668,1
    - Dst: reqwest::Client::new
      Src: /src/opendal/core/tests/behavior/async_read.rs:674,1
    - Dst: Result::request
      Src: /src/opendal/core/tests/behavior/async_read.rs:675,1
    - Dst: method
      Src: /src/opendal/core/tests/behavior/async_read.rs:676,1
    - Dst: clone
      Src: /src/opendal/core/tests/behavior/async_read.rs:676,1
    - Dst: Url::from_str
      Src: /src/opendal/core/tests/behavior/async_read.rs:677,1
    - Dst: uri
      Src: /src/opendal/core/tests/behavior/async_read.rs:677,1
    - Dst: to_string
      Src: /src/opendal/core/tests/behavior/async_read.rs:677,1
    - Dst: Result::expect
      Src: /src/opendal/core/tests/behavior/async_read.rs:677,1
    - Dst: header
      Src: /src/opendal/core/tests/behavior/async_read.rs:679,1
    - Dst: http::Request::header
      Src: /src/opendal/core/tests/behavior/async_read.rs:680,1
    - Dst: http::Request::send
      Src: /src/opendal/core/tests/behavior/async_read.rs:683,1
    - Dst: expect
      Src: /src/opendal/core/tests/behavior/async_read.rs:683,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_read.rs:695,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 73
    argCount: 1
    argNames:
    - op
    argTypes:
    - Operator
    constantsTouched: []
    func_position:
      end: 696
      start: 655
    functionDepth: 31
    functionLinenumber: 655
    functionLinenumberEnd: 696
    functionName: test_read_with_override_cache_control
    functionSourceFile: /src/opendal/core/tests/behavior/async_read.rs
    functionUses: 0
    functionsReached:
    - clone
    - http::Request::send
    - write
    - Result::clone
    - info
    - presign_read_with
    - expect
    - Ok
    - Result::expect
    - ServiceInfo::capability
    - Duration::from_secs
    - Result::request
    - uri
    - FuturePresignRead::override_cache_control
    - Url::from_str
    - to_string
    - reqwest::Client::new
    - http::Request::header
    - new_file
    - method
    - header
    linkageType: ''
    returnType: anyhow::Result
    signature: 'pub async fn test_read_with_override_cache_control(op: Operator) ->
      anyhow::Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: info
      Src: /src/opendal/core/tests/behavior/async_read.rs:700,1
    - Dst: ServiceInfo::capability
      Src: /src/opendal/core/tests/behavior/async_read.rs:700,1
    - Dst: info
      Src: /src/opendal/core/tests/behavior/async_read.rs:704,1
    - Dst: ServiceInfo::capability
      Src: /src/opendal/core/tests/behavior/async_read.rs:704,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_read.rs:706,1
    - Dst: new_file
      Src: /src/opendal/core/tests/behavior/async_read.rs:709,1
    - Dst: clone
      Src: /src/opendal/core/tests/behavior/async_read.rs:709,1
    - Dst: write
      Src: /src/opendal/core/tests/behavior/async_read.rs:711,1
    - Dst: Result::clone
      Src: /src/opendal/core/tests/behavior/async_read.rs:711,1
    - Dst: expect
      Src: /src/opendal/core/tests/behavior/async_read.rs:711,1
    - Dst: presign_read_with
      Src: /src/opendal/core/tests/behavior/async_read.rs:717,1
    - Dst: Duration::from_secs
      Src: /src/opendal/core/tests/behavior/async_read.rs:718,1
    - Dst: FuturePresignRead::override_content_disposition
      Src: /src/opendal/core/tests/behavior/async_read.rs:717,1
    - Dst: expect
      Src: /src/opendal/core/tests/behavior/async_read.rs:717,1
    - Dst: reqwest::Client::new
      Src: /src/opendal/core/tests/behavior/async_read.rs:723,1
    - Dst: Result::request
      Src: /src/opendal/core/tests/behavior/async_read.rs:724,1
    - Dst: method
      Src: /src/opendal/core/tests/behavior/async_read.rs:725,1
    - Dst: clone
      Src: /src/opendal/core/tests/behavior/async_read.rs:725,1
    - Dst: Url::from_str
      Src: /src/opendal/core/tests/behavior/async_read.rs:726,1
    - Dst: uri
      Src: /src/opendal/core/tests/behavior/async_read.rs:726,1
    - Dst: to_string
      Src: /src/opendal/core/tests/behavior/async_read.rs:726,1
    - Dst: Result::expect
      Src: /src/opendal/core/tests/behavior/async_read.rs:726,1
    - Dst: header
      Src: /src/opendal/core/tests/behavior/async_read.rs:728,1
    - Dst: http::Request::header
      Src: /src/opendal/core/tests/behavior/async_read.rs:729,1
    - Dst: http::Request::send
      Src: /src/opendal/core/tests/behavior/async_read.rs:732,1
    - Dst: expect
      Src: /src/opendal/core/tests/behavior/async_read.rs:732,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_read.rs:745,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 74
    argCount: 1
    argNames:
    - op
    argTypes:
    - Operator
    constantsTouched: []
    func_position:
      end: 746
      start: 699
    functionDepth: 31
    functionLinenumber: 699
    functionLinenumberEnd: 746
    functionName: test_read_with_override_content_disposition
    functionSourceFile: /src/opendal/core/tests/behavior/async_read.rs
    functionUses: 0
    functionsReached:
    - clone
    - http::Request::send
    - write
    - Result::clone
    - info
    - presign_read_with
    - expect
    - Ok
    - Result::expect
    - ServiceInfo::capability
    - Duration::from_secs
    - FuturePresignRead::override_content_disposition
    - Result::request
    - uri
    - Url::from_str
    - to_string
    - reqwest::Client::new
    - http::Request::header
    - new_file
    - method
    - header
    linkageType: ''
    returnType: anyhow::Result
    signature: 'pub async fn test_read_with_override_content_disposition(op: Operator)
      -> anyhow::Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: info
      Src: /src/opendal/core/tests/behavior/async_read.rs:750,1
    - Dst: ServiceInfo::capability
      Src: /src/opendal/core/tests/behavior/async_read.rs:750,1
    - Dst: info
      Src: /src/opendal/core/tests/behavior/async_read.rs:750,1
    - Dst: ServiceInfo::capability
      Src: /src/opendal/core/tests/behavior/async_read.rs:750,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_read.rs:751,1
    - Dst: new_file
      Src: /src/opendal/core/tests/behavior/async_read.rs:754,1
    - Dst: clone
      Src: /src/opendal/core/tests/behavior/async_read.rs:754,1
    - Dst: write
      Src: /src/opendal/core/tests/behavior/async_read.rs:756,1
    - Dst: Result::clone
      Src: /src/opendal/core/tests/behavior/async_read.rs:756,1
    - Dst: expect
      Src: /src/opendal/core/tests/behavior/async_read.rs:756,1
    - Dst: presign_read_with
      Src: /src/opendal/core/tests/behavior/async_read.rs:762,1
    - Dst: Duration::from_secs
      Src: /src/opendal/core/tests/behavior/async_read.rs:763,1
    - Dst: FuturePresignRead::override_content_type
      Src: /src/opendal/core/tests/behavior/async_read.rs:762,1
    - Dst: expect
      Src: /src/opendal/core/tests/behavior/async_read.rs:762,1
    - Dst: reqwest::Client::new
      Src: /src/opendal/core/tests/behavior/async_read.rs:768,1
    - Dst: Result::request
      Src: /src/opendal/core/tests/behavior/async_read.rs:769,1
    - Dst: method
      Src: /src/opendal/core/tests/behavior/async_read.rs:770,1
    - Dst: clone
      Src: /src/opendal/core/tests/behavior/async_read.rs:770,1
    - Dst: Url::from_str
      Src: /src/opendal/core/tests/behavior/async_read.rs:771,1
    - Dst: uri
      Src: /src/opendal/core/tests/behavior/async_read.rs:771,1
    - Dst: to_string
      Src: /src/opendal/core/tests/behavior/async_read.rs:771,1
    - Dst: Result::expect
      Src: /src/opendal/core/tests/behavior/async_read.rs:771,1
    - Dst: header
      Src: /src/opendal/core/tests/behavior/async_read.rs:773,1
    - Dst: http::Request::header
      Src: /src/opendal/core/tests/behavior/async_read.rs:774,1
    - Dst: http::Request::send
      Src: /src/opendal/core/tests/behavior/async_read.rs:777,1
    - Dst: expect
      Src: /src/opendal/core/tests/behavior/async_read.rs:777,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_read.rs:790,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 74
    argCount: 1
    argNames:
    - op
    argTypes:
    - Operator
    constantsTouched: []
    func_position:
      end: 791
      start: 749
    functionDepth: 31
    functionLinenumber: 749
    functionLinenumberEnd: 791
    functionName: test_read_with_override_content_type
    functionSourceFile: /src/opendal/core/tests/behavior/async_read.rs
    functionUses: 0
    functionsReached:
    - clone
    - http::Request::send
    - write
    - Result::clone
    - info
    - presign_read_with
    - expect
    - Ok
    - Result::expect
    - ServiceInfo::capability
    - Duration::from_secs
    - FuturePresignRead::override_content_type
    - Result::request
    - uri
    - Url::from_str
    - to_string
    - reqwest::Client::new
    - http::Request::header
    - new_file
    - method
    - header
    linkageType: ''
    returnType: anyhow::Result
    signature: 'pub async fn test_read_with_override_content_type(op: Operator) ->
      anyhow::Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: info
      Src: /src/opendal/core/tests/behavior/async_read.rs:795,1
    - Dst: ServiceInfo::capability
      Src: /src/opendal/core/tests/behavior/async_read.rs:795,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_read.rs:796,1
    - Dst: new_file
      Src: /src/opendal/core/tests/behavior/async_read.rs:799,1
    - Dst: clone
      Src: /src/opendal/core/tests/behavior/async_read.rs:799,1
    - Dst: write
      Src: /src/opendal/core/tests/behavior/async_read.rs:801,1
    - Dst: Result::clone
      Src: /src/opendal/core/tests/behavior/async_read.rs:801,1
    - Dst: expect
      Src: /src/opendal/core/tests/behavior/async_read.rs:801,1
    - Dst: stat
      Src: /src/opendal/core/tests/behavior/async_read.rs:804,1
    - Dst: last_modified
      Src: /src/opendal/core/tests/behavior/async_read.rs:804,1
    - Dst: unwrap
      Src: /src/opendal/core/tests/behavior/async_read.rs:804,1
    - Dst: Duration::from_secs
      Src: /src/opendal/core/tests/behavior/async_read.rs:806,1
    - Dst: read_with
      Src: /src/opendal/core/tests/behavior/async_read.rs:807,1
    - Dst: FutureRead::if_modified_since
      Src: /src/opendal/core/tests/behavior/async_read.rs:807,1
    - Dst: to_bytes
      Src: /src/opendal/core/tests/behavior/async_read.rs:807,1
    - Dst: tokio::time::sleep
      Src: /src/opendal/core/tests/behavior/async_read.rs:814,1
    - Dst: Duration::from_secs
      Src: /src/opendal/core/tests/behavior/async_read.rs:814,1
    - Dst: Duration::from_secs
      Src: /src/opendal/core/tests/behavior/async_read.rs:816,1
    - Dst: read_with
      Src: /src/opendal/core/tests/behavior/async_read.rs:817,1
    - Dst: FutureRead::if_modified_since
      Src: /src/opendal/core/tests/behavior/async_read.rs:817,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_read.rs:821,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 62
    argCount: 1
    argNames:
    - op
    argTypes:
    - Operator
    constantsTouched: []
    func_position:
      end: 822
      start: 794
    functionDepth: 31
    functionLinenumber: 794
    functionLinenumberEnd: 822
    functionName: test_read_with_if_modified_since
    functionSourceFile: /src/opendal/core/tests/behavior/async_read.rs
    functionUses: 0
    functionsReached:
    - Result::clone
    - info
    - expect
    - Ok
    - ServiceInfo::capability
    - unwrap
    - FutureRead::if_modified_since
    - clone
    - last_modified
    - read_with
    - tokio::time::sleep
    - new_file
    - Duration::from_secs
    - to_bytes
    - write
    - stat
    linkageType: ''
    returnType: anyhow::Result
    signature: 'pub async fn test_read_with_if_modified_since(op: Operator) -> anyhow::Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: info
      Src: /src/opendal/core/tests/behavior/async_read.rs:826,1
    - Dst: ServiceInfo::capability
      Src: /src/opendal/core/tests/behavior/async_read.rs:826,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_read.rs:827,1
    - Dst: new_file
      Src: /src/opendal/core/tests/behavior/async_read.rs:830,1
    - Dst: clone
      Src: /src/opendal/core/tests/behavior/async_read.rs:830,1
    - Dst: write
      Src: /src/opendal/core/tests/behavior/async_read.rs:832,1
    - Dst: Result::clone
      Src: /src/opendal/core/tests/behavior/async_read.rs:832,1
    - Dst: expect
      Src: /src/opendal/core/tests/behavior/async_read.rs:832,1
    - Dst: stat
      Src: /src/opendal/core/tests/behavior/async_read.rs:835,1
    - Dst: last_modified
      Src: /src/opendal/core/tests/behavior/async_read.rs:835,1
    - Dst: unwrap
      Src: /src/opendal/core/tests/behavior/async_read.rs:835,1
    - Dst: Duration::from_secs
      Src: /src/opendal/core/tests/behavior/async_read.rs:837,1
    - Dst: read_with
      Src: /src/opendal/core/tests/behavior/async_read.rs:838,1
    - Dst: FutureRead::if_unmodified_since
      Src: /src/opendal/core/tests/behavior/async_read.rs:838,1
    - Dst: tokio::time::sleep
      Src: /src/opendal/core/tests/behavior/async_read.rs:842,1
    - Dst: Duration::from_secs
      Src: /src/opendal/core/tests/behavior/async_read.rs:842,1
    - Dst: Duration::from_secs
      Src: /src/opendal/core/tests/behavior/async_read.rs:844,1
    - Dst: read_with
      Src: /src/opendal/core/tests/behavior/async_read.rs:845,1
    - Dst: FutureRead::if_unmodified_since
      Src: /src/opendal/core/tests/behavior/async_read.rs:845,1
    - Dst: to_bytes
      Src: /src/opendal/core/tests/behavior/async_read.rs:845,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_read.rs:852,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 62
    argCount: 1
    argNames:
    - op
    argTypes:
    - Operator
    constantsTouched: []
    func_position:
      end: 853
      start: 825
    functionDepth: 31
    functionLinenumber: 825
    functionLinenumberEnd: 853
    functionName: test_read_with_if_unmodified_since
    functionSourceFile: /src/opendal/core/tests/behavior/async_read.rs
    functionUses: 0
    functionsReached:
    - Result::clone
    - info
    - FutureRead::if_unmodified_since
    - expect
    - Ok
    - ServiceInfo::capability
    - unwrap
    - clone
    - last_modified
    - read_with
    - tokio::time::sleep
    - new_file
    - Duration::from_secs
    - to_bytes
    - write
    - stat
    linkageType: ''
    returnType: anyhow::Result
    signature: 'pub async fn test_read_with_if_unmodified_since(op: Operator) -> anyhow::Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: read
      Src: /src/opendal/core/tests/behavior/async_read.rs:857,1
    - Dst: to_bytes
      Src: /src/opendal/core/tests/behavior/async_read.rs:857,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_read.rs:865,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - op
    argTypes:
    - Operator
    constantsTouched: []
    func_position:
      end: 866
      start: 856
    functionDepth: 31
    functionLinenumber: 856
    functionLinenumberEnd: 866
    functionName: test_read_only_read_full
    functionSourceFile: /src/opendal/core/tests/behavior/async_read.rs
    functionUses: 0
    functionsReached:
    - read
    - to_bytes
    - Ok
    linkageType: ''
    returnType: anyhow::Result
    signature: 'pub async fn test_read_only_read_full(op: Operator) -> anyhow::Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: read
      Src: /src/opendal/core/tests/behavior/async_read.rs:870,1
    - Dst: to_bytes
      Src: /src/opendal/core/tests/behavior/async_read.rs:870,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_read.rs:881,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - op
    argTypes:
    - Operator
    constantsTouched: []
    func_position:
      end: 882
      start: 869
    functionDepth: 31
    functionLinenumber: 869
    functionLinenumberEnd: 882
    functionName: test_read_only_read_full_with_special_chars
    functionSourceFile: /src/opendal/core/tests/behavior/async_read.rs
    functionUses: 0
    functionsReached:
    - read
    - to_bytes
    - Ok
    linkageType: ''
    returnType: anyhow::Result
    signature: 'pub async fn test_read_only_read_full_with_special_chars(op: Operator)
      -> anyhow::Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: read_with
      Src: /src/opendal/core/tests/behavior/async_read.rs:886,1
    - Dst: FutureRead::range
      Src: /src/opendal/core/tests/behavior/async_read.rs:886,1
    - Dst: to_bytes
      Src: /src/opendal/core/tests/behavior/async_read.rs:886,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_read.rs:898,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 1
    argNames:
    - op
    argTypes:
    - Operator
    constantsTouched: []
    func_position:
      end: 899
      start: 885
    functionDepth: 35
    functionLinenumber: 885
    functionLinenumberEnd: 899
    functionName: test_read_only_read_with_range
    functionSourceFile: /src/opendal/core/tests/behavior/async_read.rs
    functionUses: 0
    functionsReached:
    - read_with
    - to_bytes
    - FutureRead::range
    - Ok
    linkageType: ''
    returnType: anyhow::Result
    signature: 'pub async fn test_read_only_read_with_range(op: Operator) -> anyhow::Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: read_with
      Src: /src/opendal/core/tests/behavior/async_read.rs:903,1
    - Dst: FutureRead::range
      Src: /src/opendal/core/tests/behavior/async_read.rs:903,1
    - Dst: BytesRange::suffix
      Src: /src/opendal/core/tests/behavior/async_read.rs:905,1
    - Dst: to_bytes
      Src: /src/opendal/core/tests/behavior/async_read.rs:903,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_read.rs:915,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 1
    argNames:
    - op
    argTypes:
    - Operator
    constantsTouched: []
    func_position:
      end: 916
      start: 902
    functionDepth: 35
    functionLinenumber: 902
    functionLinenumberEnd: 916
    functionName: test_read_only_read_with_suffix
    functionSourceFile: /src/opendal/core/tests/behavior/async_read.rs
    functionUses: 0
    functionsReached:
    - BytesRange::suffix
    - Ok
    - FutureRead::range
    - read_with
    - to_bytes
    linkageType: ''
    returnType: anyhow::Result
    signature: 'pub async fn test_read_only_read_with_suffix(op: Operator) -> anyhow::Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: uuid::Uuid::new_v4
      Src: /src/opendal/core/tests/behavior/async_read.rs:920,1
    - Dst: to_string
      Src: /src/opendal/core/tests/behavior/async_read.rs:920,1
    - Dst: read
      Src: /src/opendal/core/tests/behavior/async_read.rs:922,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_read.rs:926,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 1
    argNames:
    - op
    argTypes:
    - Operator
    constantsTouched: []
    func_position:
      end: 927
      start: 919
    functionDepth: 31
    functionLinenumber: 919
    functionLinenumberEnd: 927
    functionName: test_read_only_read_not_exist
    functionSourceFile: /src/opendal/core/tests/behavior/async_read.rs
    functionUses: 0
    functionsReached:
    - to_string
    - uuid::Uuid::new_v4
    - read
    - Ok
    linkageType: ''
    returnType: anyhow::Result
    signature: 'pub async fn test_read_only_read_not_exist(op: Operator) -> anyhow::Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: read
      Src: /src/opendal/core/tests/behavior/async_read.rs:933,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_read.rs:937,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - op
    argTypes:
    - Operator
    constantsTouched: []
    func_position:
      end: 938
      start: 930
    functionDepth: 31
    functionLinenumber: 930
    functionLinenumberEnd: 938
    functionName: test_read_only_read_with_dir_path
    functionSourceFile: /src/opendal/core/tests/behavior/async_read.rs
    functionUses: 0
    functionsReached:
    - read
    - Ok
    linkageType: ''
    returnType: anyhow::Result
    signature: 'pub async fn test_read_only_read_with_dir_path(op: Operator) -> anyhow::Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: info
      Src: /src/opendal/core/tests/behavior/async_read.rs:942,1
    - Dst: ServiceInfo::capability
      Src: /src/opendal/core/tests/behavior/async_read.rs:942,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_read.rs:943,1
    - Dst: stat
      Src: /src/opendal/core/tests/behavior/async_read.rs:948,1
    - Dst: reader_with
      Src: /src/opendal/core/tests/behavior/async_read.rs:950,1
    - Dst: FutureReader::if_match
      Src: /src/opendal/core/tests/behavior/async_read.rs:950,1
    - Dst: anyhow::Result::read
      Src: /src/opendal/core/tests/behavior/async_read.rs:951,1
    - Dst: reader_with
      Src: /src/opendal/core/tests/behavior/async_read.rs:955,1
    - Dst: FutureReader::if_match
      Src: /src/opendal/core/tests/behavior/async_read.rs:955,1
    - Dst: Result::etag
      Src: /src/opendal/core/tests/behavior/async_read.rs:957,1
    - Dst: Option::expect
      Src: /src/opendal/core/tests/behavior/async_read.rs:957,1
    - Dst: anyhow::Result::read
      Src: /src/opendal/core/tests/behavior/async_read.rs:960,1
    - Dst: expect
      Src: /src/opendal/core/tests/behavior/async_read.rs:960,1
    - Dst: to_bytes
      Src: /src/opendal/core/tests/behavior/async_read.rs:960,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_read.rs:969,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 50
    argCount: 1
    argNames:
    - op
    argTypes:
    - Operator
    constantsTouched: []
    func_position:
      end: 970
      start: 941
    functionDepth: 31
    functionLinenumber: 941
    functionLinenumberEnd: 970
    functionName: test_reader_only_read_with_if_match
    functionSourceFile: /src/opendal/core/tests/behavior/async_read.rs
    functionUses: 0
    functionsReached:
    - info
    - Option::expect
    - expect
    - Ok
    - ServiceInfo::capability
    - reader_with
    - anyhow::Result::read
    - Result::etag
    - to_bytes
    - FutureReader::if_match
    - stat
    linkageType: ''
    returnType: anyhow::Result
    signature: 'pub async fn test_reader_only_read_with_if_match(op: Operator) ->
      anyhow::Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: info
      Src: /src/opendal/core/tests/behavior/async_read.rs:974,1
    - Dst: ServiceInfo::capability
      Src: /src/opendal/core/tests/behavior/async_read.rs:974,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_read.rs:975,1
    - Dst: stat
      Src: /src/opendal/core/tests/behavior/async_read.rs:980,1
    - Dst: read_with
      Src: /src/opendal/core/tests/behavior/async_read.rs:982,1
    - Dst: FutureRead::if_match
      Src: /src/opendal/core/tests/behavior/async_read.rs:982,1
    - Dst: read_with
      Src: /src/opendal/core/tests/behavior/async_read.rs:986,1
    - Dst: FutureRead::if_match
      Src: /src/opendal/core/tests/behavior/async_read.rs:986,1
    - Dst: Result::etag
      Src: /src/opendal/core/tests/behavior/async_read.rs:988,1
    - Dst: Option::expect
      Src: /src/opendal/core/tests/behavior/async_read.rs:988,1
    - Dst: expect
      Src: /src/opendal/core/tests/behavior/async_read.rs:986,1
    - Dst: to_bytes
      Src: /src/opendal/core/tests/behavior/async_read.rs:986,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_read.rs:999,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 40
    argCount: 1
    argNames:
    - op
    argTypes:
    - Operator
    constantsTouched: []
    func_position:
      end: 1000
      start: 973
    functionDepth: 31
    functionLinenumber: 973
    functionLinenumberEnd: 1000
    functionName: test_read_only_read_with_if_match
    functionSourceFile: /src/opendal/core/tests/behavior/async_read.rs
    functionUses: 0
    functionsReached:
    - info
    - Option::expect
    - expect
    - Ok
    - ServiceInfo::capability
    - Result::etag
    - read_with
    - FutureRead::if_match
    - to_bytes
    - stat
    linkageType: ''
    returnType: anyhow::Result
    signature: 'pub async fn test_read_only_read_with_if_match(op: Operator) -> anyhow::Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: info
      Src: /src/opendal/core/tests/behavior/async_read.rs:1004,1
    - Dst: ServiceInfo::capability
      Src: /src/opendal/core/tests/behavior/async_read.rs:1004,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_read.rs:1005,1
    - Dst: stat
      Src: /src/opendal/core/tests/behavior/async_read.rs:1010,1
    - Dst: reader_with
      Src: /src/opendal/core/tests/behavior/async_read.rs:1012,1
    - Dst: FutureReader::if_none_match
      Src: /src/opendal/core/tests/behavior/async_read.rs:1012,1
    - Dst: Result::etag
      Src: /src/opendal/core/tests/behavior/async_read.rs:1014,1
    - Dst: Option::expect
      Src: /src/opendal/core/tests/behavior/async_read.rs:1014,1
    - Dst: anyhow::Result::read
      Src: /src/opendal/core/tests/behavior/async_read.rs:1017,1
    - Dst: reader_with
      Src: /src/opendal/core/tests/behavior/async_read.rs:1021,1
    - Dst: FutureReader::if_none_match
      Src: /src/opendal/core/tests/behavior/async_read.rs:1021,1
    - Dst: anyhow::Result::read
      Src: /src/opendal/core/tests/behavior/async_read.rs:1022,1
    - Dst: expect
      Src: /src/opendal/core/tests/behavior/async_read.rs:1022,1
    - Dst: to_bytes
      Src: /src/opendal/core/tests/behavior/async_read.rs:1022,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_read.rs:1031,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 50
    argCount: 1
    argNames:
    - op
    argTypes:
    - Operator
    constantsTouched: []
    func_position:
      end: 1032
      start: 1003
    functionDepth: 31
    functionLinenumber: 1003
    functionLinenumberEnd: 1032
    functionName: test_reader_only_read_with_if_none_match
    functionSourceFile: /src/opendal/core/tests/behavior/async_read.rs
    functionUses: 0
    functionsReached:
    - info
    - Option::expect
    - expect
    - Ok
    - ServiceInfo::capability
    - reader_with
    - Result::etag
    - anyhow::Result::read
    - to_bytes
    - stat
    - FutureReader::if_none_match
    linkageType: ''
    returnType: anyhow::Result
    signature: 'pub async fn test_reader_only_read_with_if_none_match(op: Operator)
      -> anyhow::Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: info
      Src: /src/opendal/core/tests/behavior/async_read.rs:1036,1
    - Dst: ServiceInfo::capability
      Src: /src/opendal/core/tests/behavior/async_read.rs:1036,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_read.rs:1037,1
    - Dst: stat
      Src: /src/opendal/core/tests/behavior/async_read.rs:1042,1
    - Dst: read_with
      Src: /src/opendal/core/tests/behavior/async_read.rs:1044,1
    - Dst: FutureRead::if_none_match
      Src: /src/opendal/core/tests/behavior/async_read.rs:1044,1
    - Dst: Result::etag
      Src: /src/opendal/core/tests/behavior/async_read.rs:1046,1
    - Dst: Option::expect
      Src: /src/opendal/core/tests/behavior/async_read.rs:1046,1
    - Dst: read_with
      Src: /src/opendal/core/tests/behavior/async_read.rs:1051,1
    - Dst: FutureRead::if_none_match
      Src: /src/opendal/core/tests/behavior/async_read.rs:1051,1
    - Dst: expect
      Src: /src/opendal/core/tests/behavior/async_read.rs:1051,1
    - Dst: to_bytes
      Src: /src/opendal/core/tests/behavior/async_read.rs:1051,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_read.rs:1064,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 40
    argCount: 1
    argNames:
    - op
    argTypes:
    - Operator
    constantsTouched: []
    func_position:
      end: 1065
      start: 1035
    functionDepth: 31
    functionLinenumber: 1035
    functionLinenumberEnd: 1065
    functionName: test_read_only_read_with_if_none_match
    functionSourceFile: /src/opendal/core/tests/behavior/async_read.rs
    functionUses: 0
    functionsReached:
    - info
    - Option::expect
    - expect
    - Ok
    - FutureRead::if_none_match
    - ServiceInfo::capability
    - Result::etag
    - read_with
    - to_bytes
    - stat
    linkageType: ''
    returnType: anyhow::Result
    signature: 'pub async fn test_read_only_read_with_if_none_match(op: Operator)
      -> anyhow::Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: info
      Src: /src/opendal/core/tests/behavior/async_read.rs:1068,1
    - Dst: ServiceInfo::capability
      Src: /src/opendal/core/tests/behavior/async_read.rs:1068,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_read.rs:1069,1
    - Dst: new_file
      Src: /src/opendal/core/tests/behavior/async_read.rs:1072,1
    - Dst: clone
      Src: /src/opendal/core/tests/behavior/async_read.rs:1072,1
    - Dst: write
      Src: /src/opendal/core/tests/behavior/async_read.rs:1073,1
    - Dst: as_str
      Src: /src/opendal/core/tests/behavior/async_read.rs:1073,1
    - Dst: Result::clone
      Src: /src/opendal/core/tests/behavior/async_read.rs:1073,1
    - Dst: expect
      Src: /src/opendal/core/tests/behavior/async_read.rs:1073,1
    - Dst: stat
      Src: /src/opendal/core/tests/behavior/async_read.rs:1076,1
    - Dst: as_str
      Src: /src/opendal/core/tests/behavior/async_read.rs:1076,1
    - Dst: expect
      Src: /src/opendal/core/tests/behavior/async_read.rs:1076,1
    - Dst: Result::version
      Src: /src/opendal/core/tests/behavior/async_read.rs:1077,1
    - Dst: Result::expect
      Src: /src/opendal/core/tests/behavior/async_read.rs:1077,1
    - Dst: read_with
      Src: /src/opendal/core/tests/behavior/async_read.rs:1079,1
    - Dst: as_str
      Src: /src/opendal/core/tests/behavior/async_read.rs:1080,1
    - Dst: FutureRead::version
      Src: /src/opendal/core/tests/behavior/async_read.rs:1079,1
    - Dst: expect
      Src: /src/opendal/core/tests/behavior/async_read.rs:1079,1
    - Dst: write
      Src: /src/opendal/core/tests/behavior/async_read.rs:1086,1
    - Dst: as_str
      Src: /src/opendal/core/tests/behavior/async_read.rs:1086,1
    - Dst: expect
      Src: /src/opendal/core/tests/behavior/async_read.rs:1086,1
    - Dst: read_with
      Src: /src/opendal/core/tests/behavior/async_read.rs:1091,1
    - Dst: as_str
      Src: /src/opendal/core/tests/behavior/async_read.rs:1092,1
    - Dst: FutureRead::version
      Src: /src/opendal/core/tests/behavior/async_read.rs:1091,1
    - Dst: expect
      Src: /src/opendal/core/tests/behavior/async_read.rs:1091,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_read.rs:1098,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 67
    argCount: 1
    argNames:
    - op
    argTypes:
    - Operator
    constantsTouched: []
    func_position:
      end: 1099
      start: 1067
    functionDepth: 31
    functionLinenumber: 1067
    functionLinenumberEnd: 1099
    functionName: test_read_with_version
    functionSourceFile: /src/opendal/core/tests/behavior/async_read.rs
    functionUses: 0
    functionsReached:
    - Result::clone
    - info
    - FutureRead::version
    - expect
    - Ok
    - Result::version
    - Result::expect
    - ServiceInfo::capability
    - clone
    - read_with
    - as_str
    - new_file
    - write
    - stat
    linkageType: ''
    returnType: anyhow::Result
    signature: 'pub async fn test_read_with_version(op: Operator) -> anyhow::Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: info
      Src: /src/opendal/core/tests/behavior/async_read.rs:1102,1
    - Dst: ServiceInfo::capability
      Src: /src/opendal/core/tests/behavior/async_read.rs:1102,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_read.rs:1103,1
    - Dst: new_file
      Src: /src/opendal/core/tests/behavior/async_read.rs:1107,1
    - Dst: clone
      Src: /src/opendal/core/tests/behavior/async_read.rs:1107,1
    - Dst: write
      Src: /src/opendal/core/tests/behavior/async_read.rs:1108,1
    - Dst: as_str
      Src: /src/opendal/core/tests/behavior/async_read.rs:1108,1
    - Dst: Result::clone
      Src: /src/opendal/core/tests/behavior/async_read.rs:1108,1
    - Dst: expect
      Src: /src/opendal/core/tests/behavior/async_read.rs:1108,1
    - Dst: stat
      Src: /src/opendal/core/tests/behavior/async_read.rs:1111,1
    - Dst: as_str
      Src: /src/opendal/core/tests/behavior/async_read.rs:1112,1
    - Dst: expect
      Src: /src/opendal/core/tests/behavior/async_read.rs:1111,1
    - Dst: version
      Src: /src/opendal/core/tests/behavior/async_read.rs:1111,1
    - Dst: expect
      Src: /src/opendal/core/tests/behavior/async_read.rs:1111,1
    - Dst: to_string
      Src: /src/opendal/core/tests/behavior/async_read.rs:1111,1
    - Dst: new_file
      Src: /src/opendal/core/tests/behavior/async_read.rs:1119,1
    - Dst: clone
      Src: /src/opendal/core/tests/behavior/async_read.rs:1119,1
    - Dst: write
      Src: /src/opendal/core/tests/behavior/async_read.rs:1120,1
    - Dst: as_str
      Src: /src/opendal/core/tests/behavior/async_read.rs:1120,1
    - Dst: expect
      Src: /src/opendal/core/tests/behavior/async_read.rs:1120,1
    - Dst: read_with
      Src: /src/opendal/core/tests/behavior/async_read.rs:1123,1
    - Dst: as_str
      Src: /src/opendal/core/tests/behavior/async_read.rs:1123,1
    - Dst: FutureRead::version
      Src: /src/opendal/core/tests/behavior/async_read.rs:1123,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_read.rs:1127,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 63
    argCount: 1
    argNames:
    - op
    argTypes:
    - Operator
    constantsTouched: []
    func_position:
      end: 1128
      start: 1101
    functionDepth: 31
    functionLinenumber: 1101
    functionLinenumberEnd: 1128
    functionName: test_read_with_not_existing_version
    functionSourceFile: /src/opendal/core/tests/behavior/async_read.rs
    functionUses: 0
    functionsReached:
    - Result::clone
    - to_string
    - info
    - FutureRead::version
    - expect
    - Ok
    - ServiceInfo::capability
    - clone
    - read_with
    - as_str
    - new_file
    - version
    - write
    - stat
    linkageType: ''
    returnType: anyhow::Result
    signature: 'pub async fn test_read_with_not_existing_version(op: Operator) ->
      anyhow::Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: new_file
      Src: /src/opendal/core/tests/behavior/async_write.rs:76,1
    - Dst: clone
      Src: /src/opendal/core/tests/behavior/async_write.rs:76,1
    - Dst: write
      Src: /src/opendal/core/tests/behavior/async_write.rs:78,1
    - Dst: stat
      Src: /src/opendal/core/tests/behavior/async_write.rs:80,1
    - Dst: expect
      Src: /src/opendal/core/tests/behavior/async_write.rs:80,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_write.rs:83,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 19
    argCount: 1
    argNames:
    - op
    argTypes:
    - Operator
    constantsTouched: []
    func_position:
      end: 84
      start: 75
    functionDepth: 31
    functionLinenumber: 75
    functionLinenumberEnd: 84
    functionName: test_write_only
    functionSourceFile: /src/opendal/core/tests/behavior/async_write.rs
    functionUses: 0
    functionsReached:
    - expect
    - Ok
    - clone
    - new_file
    - write
    - stat
    linkageType: ''
    returnType: Result
    signature: 'pub async fn test_write_only(op: Operator) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: info
      Src: /src/opendal/core/tests/behavior/async_write.rs:88,1
    - Dst: ServiceInfo::capability
      Src: /src/opendal/core/tests/behavior/async_write.rs:88,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_write.rs:89,1
    - Dst: new_file_path
      Src: /src/opendal/core/tests/behavior/async_write.rs:92,1
    - Dst: write
      Src: /src/opendal/core/tests/behavior/async_write.rs:95,1
    - Dst: stat
      Src: /src/opendal/core/tests/behavior/async_write.rs:97,1
    - Dst: expect
      Src: /src/opendal/core/tests/behavior/async_write.rs:97,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_write.rs:99,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 29
    argCount: 1
    argNames:
    - op
    argTypes:
    - Operator
    constantsTouched: []
    func_position:
      end: 100
      start: 87
    functionDepth: 36
    functionLinenumber: 87
    functionLinenumberEnd: 100
    functionName: test_write_with_empty_content
    functionSourceFile: /src/opendal/core/tests/behavior/async_write.rs
    functionUses: 0
    functionsReached:
    - info
    - expect
    - Ok
    - ServiceInfo::capability
    - new_file_path
    - write
    - stat
    linkageType: ''
    returnType: Result
    signature: 'pub async fn test_write_with_empty_content(op: Operator) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: new_dir_path
      Src: /src/opendal/core/tests/behavior/async_write.rs:104,1
    - Dst: write
      Src: /src/opendal/core/tests/behavior/async_write.rs:106,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_write.rs:110,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - op
    argTypes:
    - Operator
    constantsTouched: []
    func_position:
      end: 111
      start: 103
    functionDepth: 34
    functionLinenumber: 103
    functionLinenumberEnd: 111
    functionName: test_write_with_dir_path
    functionSourceFile: /src/opendal/core/tests/behavior/async_write.rs
    functionUses: 0
    functionsReached:
    - new_dir_path
    - write
    - Ok
    linkageType: ''
    returnType: Result
    signature: 'pub async fn test_write_with_dir_path(op: Operator) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: info
      Src: /src/opendal/core/tests/behavior/async_write.rs:117,1
    - Dst: ServiceInfo::scheme
      Src: /src/opendal/core/tests/behavior/async_write.rs:117,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_write.rs:119,1
    - Dst: new_file_with_path
      Src: /src/opendal/core/tests/behavior/async_write.rs:123,1
    - Dst: clone
      Src: /src/opendal/core/tests/behavior/async_write.rs:123,1
    - Dst: write
      Src: /src/opendal/core/tests/behavior/async_write.rs:125,1
    - Dst: stat
      Src: /src/opendal/core/tests/behavior/async_write.rs:127,1
    - Dst: expect
      Src: /src/opendal/core/tests/behavior/async_write.rs:127,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_write.rs:130,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 32
    argCount: 1
    argNames:
    - op
    argTypes:
    - Operator
    constantsTouched: []
    func_position:
      end: 131
      start: 114
    functionDepth: 30
    functionLinenumber: 114
    functionLinenumberEnd: 131
    functionName: test_write_with_special_chars
    functionSourceFile: /src/opendal/core/tests/behavior/async_write.rs
    functionUses: 0
    functionsReached:
    - info
    - new_file_with_path
    - Ok
    - expect
    - clone
    - ServiceInfo::scheme
    - write
    - stat
    linkageType: ''
    returnType: Result
    signature: 'pub async fn test_write_with_special_chars(op: Operator) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: info
      Src: /src/opendal/core/tests/behavior/async_write.rs:135,1
    - Dst: ServiceInfo::capability
      Src: /src/opendal/core/tests/behavior/async_write.rs:135,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_write.rs:136,1
    - Dst: uuid::Uuid::new_v4
      Src: /src/opendal/core/tests/behavior/async_write.rs:139,1
    - Dst: to_string
      Src: /src/opendal/core/tests/behavior/async_write.rs:139,1
    - Dst: gen_bytes
      Src: /src/opendal/core/tests/behavior/async_write.rs:140,1
    - Dst: info
      Src: /src/opendal/core/tests/behavior/async_write.rs:140,1
    - Dst: ServiceInfo::capability
      Src: /src/opendal/core/tests/behavior/async_write.rs:140,1
    - Dst: write_with
      Src: /src/opendal/core/tests/behavior/async_write.rs:143,1
    - Dst: cache_control
      Src: /src/opendal/core/tests/behavior/async_write.rs:143,1
    - Dst: stat
      Src: /src/opendal/core/tests/behavior/async_write.rs:147,1
    - Dst: expect
      Src: /src/opendal/core/tests/behavior/async_write.rs:147,1
    - Dst: delete
      Src: /src/opendal/core/tests/behavior/async_write.rs:154,1
    - Dst: expect
      Src: /src/opendal/core/tests/behavior/async_write.rs:154,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_write.rs:156,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 45
    argCount: 1
    argNames:
    - op
    argTypes:
    - Operator
    constantsTouched: []
    func_position:
      end: 157
      start: 134
    functionDepth: 30
    functionLinenumber: 134
    functionLinenumberEnd: 157
    functionName: test_write_with_cache_control
    functionSourceFile: /src/opendal/core/tests/behavior/async_write.rs
    functionUses: 0
    functionsReached:
    - to_string
    - info
    - cache_control
    - expect
    - Ok
    - delete
    - ServiceInfo::capability
    - uuid::Uuid::new_v4
    - gen_bytes
    - write_with
    - stat
    linkageType: ''
    returnType: Result
    signature: 'pub async fn test_write_with_cache_control(op: Operator) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: info
      Src: /src/opendal/core/tests/behavior/async_write.rs:161,1
    - Dst: ServiceInfo::capability
      Src: /src/opendal/core/tests/behavior/async_write.rs:161,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_write.rs:162,1
    - Dst: new_file
      Src: /src/opendal/core/tests/behavior/async_write.rs:165,1
    - Dst: clone
      Src: /src/opendal/core/tests/behavior/async_write.rs:165,1
    - Dst: write_with
      Src: /src/opendal/core/tests/behavior/async_write.rs:168,1
    - Dst: content_type
      Src: /src/opendal/core/tests/behavior/async_write.rs:168,1
    - Dst: stat
      Src: /src/opendal/core/tests/behavior/async_write.rs:172,1
    - Dst: expect
      Src: /src/opendal/core/tests/behavior/async_write.rs:172,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_write.rs:180,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 35
    argCount: 1
    argNames:
    - op
    argTypes:
    - Operator
    constantsTouched: []
    func_position:
      end: 181
      start: 160
    functionDepth: 31
    functionLinenumber: 160
    functionLinenumberEnd: 181
    functionName: test_write_with_content_type
    functionSourceFile: /src/opendal/core/tests/behavior/async_write.rs
    functionUses: 0
    functionsReached:
    - info
    - expect
    - Ok
    - ServiceInfo::capability
    - clone
    - new_file
    - content_type
    - write_with
    - stat
    linkageType: ''
    returnType: Result
    signature: 'pub async fn test_write_with_content_type(op: Operator) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: info
      Src: /src/opendal/core/tests/behavior/async_write.rs:185,1
    - Dst: ServiceInfo::capability
      Src: /src/opendal/core/tests/behavior/async_write.rs:185,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_write.rs:186,1
    - Dst: new_file
      Src: /src/opendal/core/tests/behavior/async_write.rs:189,1
    - Dst: clone
      Src: /src/opendal/core/tests/behavior/async_write.rs:189,1
    - Dst: write_with
      Src: /src/opendal/core/tests/behavior/async_write.rs:192,1
    - Dst: content_disposition
      Src: /src/opendal/core/tests/behavior/async_write.rs:192,1
    - Dst: stat
      Src: /src/opendal/core/tests/behavior/async_write.rs:196,1
    - Dst: expect
      Src: /src/opendal/core/tests/behavior/async_write.rs:196,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_write.rs:204,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 35
    argCount: 1
    argNames:
    - op
    argTypes:
    - Operator
    constantsTouched: []
    func_position:
      end: 205
      start: 184
    functionDepth: 31
    functionLinenumber: 184
    functionLinenumberEnd: 205
    functionName: test_write_with_content_disposition
    functionSourceFile: /src/opendal/core/tests/behavior/async_write.rs
    functionUses: 0
    functionsReached:
    - info
    - expect
    - Ok
    - ServiceInfo::capability
    - clone
    - content_disposition
    - new_file
    - write_with
    - stat
    linkageType: ''
    returnType: Result
    signature: 'pub async fn test_write_with_content_disposition(op: Operator) ->
      Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: info
      Src: /src/opendal/core/tests/behavior/async_write.rs:209,1
    - Dst: ServiceInfo::capability
      Src: /src/opendal/core/tests/behavior/async_write.rs:209,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_write.rs:210,1
    - Dst: new_file
      Src: /src/opendal/core/tests/behavior/async_write.rs:213,1
    - Dst: clone
      Src: /src/opendal/core/tests/behavior/async_write.rs:213,1
    - Dst: write_with
      Src: /src/opendal/core/tests/behavior/async_write.rs:216,1
    - Dst: content_encoding
      Src: /src/opendal/core/tests/behavior/async_write.rs:216,1
    - Dst: stat
      Src: /src/opendal/core/tests/behavior/async_write.rs:220,1
    - Dst: expect
      Src: /src/opendal/core/tests/behavior/async_write.rs:220,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_write.rs:226,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 33
    argCount: 1
    argNames:
    - op
    argTypes:
    - Operator
    constantsTouched: []
    func_position:
      end: 227
      start: 208
    functionDepth: 31
    functionLinenumber: 208
    functionLinenumberEnd: 227
    functionName: test_write_with_content_encoding
    functionSourceFile: /src/opendal/core/tests/behavior/async_write.rs
    functionUses: 0
    functionsReached:
    - info
    - content_encoding
    - expect
    - Ok
    - ServiceInfo::capability
    - clone
    - new_file
    - write_with
    - stat
    linkageType: ''
    returnType: Result
    signature: 'pub async fn test_write_with_content_encoding(op: Operator) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: info
      Src: /src/opendal/core/tests/behavior/async_write.rs:231,1
    - Dst: ServiceInfo::capability
      Src: /src/opendal/core/tests/behavior/async_write.rs:231,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_write.rs:232,1
    - Dst: new_file
      Src: /src/opendal/core/tests/behavior/async_write.rs:235,1
    - Dst: clone
      Src: /src/opendal/core/tests/behavior/async_write.rs:235,1
    - Dst: write_with
      Src: /src/opendal/core/tests/behavior/async_write.rs:237,1
    - Dst: user_metadata
      Src: /src/opendal/core/tests/behavior/async_write.rs:237,1
    - Dst: clone
      Src: /src/opendal/core/tests/behavior/async_write.rs:238,1
    - Dst: stat
      Src: /src/opendal/core/tests/behavior/async_write.rs:241,1
    - Dst: expect
      Src: /src/opendal/core/tests/behavior/async_write.rs:241,1
    - Dst: Result::user_metadata
      Src: /src/opendal/core/tests/behavior/async_write.rs:242,1
    - Dst: Result::expect
      Src: /src/opendal/core/tests/behavior/async_write.rs:242,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_write.rs:249,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 39
    argCount: 1
    argNames:
    - op
    argTypes:
    - Operator
    constantsTouched: []
    func_position:
      end: 250
      start: 230
    functionDepth: 31
    functionLinenumber: 230
    functionLinenumberEnd: 250
    functionName: test_write_with_user_metadata
    functionSourceFile: /src/opendal/core/tests/behavior/async_write.rs
    functionUses: 0
    functionsReached:
    - info
    - expect
    - Ok
    - Result::expect
    - Result::user_metadata
    - ServiceInfo::capability
    - clone
    - user_metadata
    - new_file
    - write_with
    - stat
    linkageType: ''
    returnType: Result
    signature: 'pub async fn test_write_with_user_metadata(op: Operator) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: new_file
      Src: /src/opendal/core/tests/behavior/async_write.rs:253,1
    - Dst: clone
      Src: /src/opendal/core/tests/behavior/async_write.rs:253,1
    - Dst: write
      Src: /src/opendal/core/tests/behavior/async_write.rs:255,1
    - Dst: stat
      Src: /src/opendal/core/tests/behavior/async_write.rs:256,1
    - Dst: assert_metadata
      Src: /src/opendal/core/tests/behavior/async_write.rs:258,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_write.rs:260,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 1
    argNames:
    - op
    argTypes:
    - Operator
    constantsTouched: []
    func_position:
      end: 261
      start: 252
    functionDepth: 31
    functionLinenumber: 252
    functionLinenumberEnd: 261
    functionName: test_write_returns_metadata
    functionSourceFile: /src/opendal/core/tests/behavior/async_write.rs
    functionUses: 0
    functionsReached:
    - Ok
    - clone
    - new_file
    - assert_metadata
    - write
    - stat
    linkageType: ''
    returnType: Result
    signature: 'pub async fn test_write_returns_metadata(op: Operator) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: new_file
      Src: /src/opendal/core/tests/behavior/async_write.rs:265,1
    - Dst: clone
      Src: /src/opendal/core/tests/behavior/async_write.rs:265,1
    - Dst: writer
      Src: /src/opendal/core/tests/behavior/async_write.rs:267,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_write.rs:271,1
    - Dst: Result::write
      Src: /src/opendal/core/tests/behavior/async_write.rs:275,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_write.rs:277,1
    - Dst: Result::abort
      Src: /src/opendal/core/tests/behavior/async_write.rs:280,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_write.rs:282,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_write.rs:287,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 37
    argCount: 1
    argNames:
    - op
    argTypes:
    - Operator
    constantsTouched: []
    func_position:
      end: 288
      start: 264
    functionDepth: 31
    functionLinenumber: 264
    functionLinenumberEnd: 288
    functionName: test_writer_abort
    functionSourceFile: /src/opendal/core/tests/behavior/async_write.rs
    functionUses: 0
    functionsReached:
    - Result::abort
    - Ok
    - clone
    - Result::write
    - writer
    - new_file
    linkageType: ''
    returnType: Result
    signature: 'pub async fn test_writer_abort(op: Operator) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: new_file
      Src: /src/opendal/core/tests/behavior/async_write.rs:292,1
    - Dst: clone
      Src: /src/opendal/core/tests/behavior/async_write.rs:292,1
    - Dst: writer_with
      Src: /src/opendal/core/tests/behavior/async_write.rs:294,1
    - Dst: concurrent
      Src: /src/opendal/core/tests/behavior/async_write.rs:294,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_write.rs:298,1
    - Dst: Result::write
      Src: /src/opendal/core/tests/behavior/async_write.rs:302,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_write.rs:304,1
    - Dst: Result::abort
      Src: /src/opendal/core/tests/behavior/async_write.rs:307,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_write.rs:309,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_write.rs:314,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 39
    argCount: 1
    argNames:
    - op
    argTypes:
    - Operator
    constantsTouched: []
    func_position:
      end: 315
      start: 291
    functionDepth: 31
    functionLinenumber: 291
    functionLinenumberEnd: 315
    functionName: test_writer_abort_with_concurrent
    functionSourceFile: /src/opendal/core/tests/behavior/async_write.rs
    functionUses: 0
    functionsReached:
    - Result::abort
    - Ok
    - clone
    - concurrent
    - writer_with
    - Result::write
    - new_file
    linkageType: ''
    returnType: Result
    signature: 'pub async fn test_writer_abort_with_concurrent(op: Operator) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: info
      Src: /src/opendal/core/tests/behavior/async_write.rs:319,1
    - Dst: ServiceInfo::capability
      Src: /src/opendal/core/tests/behavior/async_write.rs:319,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_write.rs:320,1
    - Dst: new_file_path
      Src: /src/opendal/core/tests/behavior/async_write.rs:323,1
    - Dst: gen_fixed_bytes
      Src: /src/opendal/core/tests/behavior/async_write.rs:325,1
    - Dst: gen_fixed_bytes
      Src: /src/opendal/core/tests/behavior/async_write.rs:326,1
    - Dst: writer
      Src: /src/opendal/core/tests/behavior/async_write.rs:328,1
    - Dst: Self::write
      Src: /src/opendal/core/tests/behavior/async_write.rs:329,1
    - Dst: Vec::clone
      Src: /src/opendal/core/tests/behavior/async_write.rs:329,1
    - Dst: Self::write
      Src: /src/opendal/core/tests/behavior/async_write.rs:330,1
    - Dst: Vec::clone
      Src: /src/opendal/core/tests/behavior/async_write.rs:330,1
    - Dst: Self::close
      Src: /src/opendal/core/tests/behavior/async_write.rs:331,1
    - Dst: stat
      Src: /src/opendal/core/tests/behavior/async_write.rs:333,1
    - Dst: expect
      Src: /src/opendal/core/tests/behavior/async_write.rs:333,1
    - Dst: read
      Src: /src/opendal/core/tests/behavior/async_write.rs:336,1
    - Dst: to_bytes
      Src: /src/opendal/core/tests/behavior/async_write.rs:336,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_write.rs:349,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 62
    argCount: 1
    argNames:
    - op
    argTypes:
    - Operator
    constantsTouched: []
    func_position:
      end: 350
      start: 318
    functionDepth: 36
    functionLinenumber: 318
    functionLinenumberEnd: 350
    functionName: test_writer_write
    functionSourceFile: /src/opendal/core/tests/behavior/async_write.rs
    functionUses: 0
    functionsReached:
    - read
    - info
    - expect
    - Ok
    - ServiceInfo::capability
    - Self::write
    - new_file_path
    - gen_fixed_bytes
    - writer
    - to_bytes
    - Self::close
    - stat
    - Vec::clone
    linkageType: ''
    returnType: Result
    signature: 'pub async fn test_writer_write(op: Operator) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: info
      Src: /src/opendal/core/tests/behavior/async_write.rs:354,1
    - Dst: ServiceInfo::capability
      Src: /src/opendal/core/tests/behavior/async_write.rs:354,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_write.rs:355,1
    - Dst: new_file_path
      Src: /src/opendal/core/tests/behavior/async_write.rs:358,1
    - Dst: gen_bytes_with_range
      Src: /src/opendal/core/tests/behavior/async_write.rs:360,1
    - Dst: gen_bytes_with_range
      Src: /src/opendal/core/tests/behavior/async_write.rs:361,1
    - Dst: gen_bytes_with_range
      Src: /src/opendal/core/tests/behavior/async_write.rs:362,1
    - Dst: writer_with
      Src: /src/opendal/core/tests/behavior/async_write.rs:364,1
    - Dst: concurrent
      Src: /src/opendal/core/tests/behavior/async_write.rs:364,1
    - Dst: Self::write
      Src: /src/opendal/core/tests/behavior/async_write.rs:365,1
    - Dst: clone
      Src: /src/opendal/core/tests/behavior/async_write.rs:365,1
    - Dst: Self::write
      Src: /src/opendal/core/tests/behavior/async_write.rs:366,1
    - Dst: clone
      Src: /src/opendal/core/tests/behavior/async_write.rs:366,1
    - Dst: Self::write
      Src: /src/opendal/core/tests/behavior/async_write.rs:367,1
    - Dst: clone
      Src: /src/opendal/core/tests/behavior/async_write.rs:367,1
    - Dst: Self::close
      Src: /src/opendal/core/tests/behavior/async_write.rs:368,1
    - Dst: stat
      Src: /src/opendal/core/tests/behavior/async_write.rs:370,1
    - Dst: expect
      Src: /src/opendal/core/tests/behavior/async_write.rs:370,1
    - Dst: read
      Src: /src/opendal/core/tests/behavior/async_write.rs:373,1
    - Dst: to_bytes
      Src: /src/opendal/core/tests/behavior/async_write.rs:373,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_write.rs:391,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 86
    argCount: 1
    argNames:
    - op
    argTypes:
    - Operator
    constantsTouched: []
    func_position:
      end: 392
      start: 353
    functionDepth: 33
    functionLinenumber: 353
    functionLinenumberEnd: 392
    functionName: test_writer_write_with_concurrent
    functionSourceFile: /src/opendal/core/tests/behavior/async_write.rs
    functionUses: 0
    functionsReached:
    - read
    - info
    - expect
    - Ok
    - ServiceInfo::capability
    - clone
    - gen_bytes_with_range
    - Self::write
    - new_file_path
    - writer_with
    - concurrent
    - to_bytes
    - Self::close
    - stat
    linkageType: ''
    returnType: Result
    signature: 'pub async fn test_writer_write_with_concurrent(op: Operator) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: info
      Src: /src/opendal/core/tests/behavior/async_write.rs:396,1
    - Dst: ServiceInfo::capability
      Src: /src/opendal/core/tests/behavior/async_write.rs:396,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_write.rs:398,1
    - Dst: new_file_path
      Src: /src/opendal/core/tests/behavior/async_write.rs:401,1
    - Dst: gen_fixed_bytes
      Src: /src/opendal/core/tests/behavior/async_write.rs:403,1
    - Dst: gen_fixed_bytes
      Src: /src/opendal/core/tests/behavior/async_write.rs:404,1
    - Dst: stream::iter
      Src: /src/opendal/core/tests/behavior/async_write.rs:405,1
    - Dst: map
      Src: /src/opendal/core/tests/behavior/async_write.rs:405,1
    - Dst: writer_with
      Src: /src/opendal/core/tests/behavior/async_write.rs:411,1
    - Dst: chunk
      Src: /src/opendal/core/tests/behavior/async_write.rs:411,1
    - Dst: into_bytes_sink
      Src: /src/opendal/core/tests/behavior/async_write.rs:411,1
    - Dst: Self::send_all
      Src: /src/opendal/core/tests/behavior/async_write.rs:416,1
    - Dst: Self::close
      Src: /src/opendal/core/tests/behavior/async_write.rs:417,1
    - Dst: stat
      Src: /src/opendal/core/tests/behavior/async_write.rs:419,1
    - Dst: expect
      Src: /src/opendal/core/tests/behavior/async_write.rs:419,1
    - Dst: read
      Src: /src/opendal/core/tests/behavior/async_write.rs:422,1
    - Dst: to_bytes
      Src: /src/opendal/core/tests/behavior/async_write.rs:422,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_write.rs:435,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 65
    argCount: 1
    argNames:
    - op
    argTypes:
    - Operator
    constantsTouched: []
    func_position:
      end: 436
      start: 395
    functionDepth: 33
    functionLinenumber: 395
    functionLinenumberEnd: 436
    functionName: test_writer_sink
    functionSourceFile: /src/opendal/core/tests/behavior/async_write.rs
    functionUses: 0
    functionsReached:
    - Self::send_all
    - info
    - read
    - into_bytes_sink
    - Ok
    - expect
    - ServiceInfo::capability
    - chunk
    - new_file_path
    - map
    - gen_fixed_bytes
    - writer_with
    - stat
    - to_bytes
    - Self::close
    - stream::iter
    linkageType: ''
    returnType: Result
    signature: 'pub async fn test_writer_sink(op: Operator) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: info
      Src: /src/opendal/core/tests/behavior/async_write.rs:440,1
    - Dst: ServiceInfo::capability
      Src: /src/opendal/core/tests/behavior/async_write.rs:440,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_write.rs:442,1
    - Dst: new_file_path
      Src: /src/opendal/core/tests/behavior/async_write.rs:445,1
    - Dst: gen_fixed_bytes
      Src: /src/opendal/core/tests/behavior/async_write.rs:447,1
    - Dst: gen_fixed_bytes
      Src: /src/opendal/core/tests/behavior/async_write.rs:448,1
    - Dst: stream::iter
      Src: /src/opendal/core/tests/behavior/async_write.rs:449,1
    - Dst: map
      Src: /src/opendal/core/tests/behavior/async_write.rs:449,1
    - Dst: writer_with
      Src: /src/opendal/core/tests/behavior/async_write.rs:455,1
    - Dst: chunk
      Src: /src/opendal/core/tests/behavior/async_write.rs:455,1
    - Dst: Result::concurrent
      Src: /src/opendal/core/tests/behavior/async_write.rs:455,1
    - Dst: into_bytes_sink
      Src: /src/opendal/core/tests/behavior/async_write.rs:455,1
    - Dst: Self::send_all
      Src: /src/opendal/core/tests/behavior/async_write.rs:461,1
    - Dst: Self::close
      Src: /src/opendal/core/tests/behavior/async_write.rs:462,1
    - Dst: stat
      Src: /src/opendal/core/tests/behavior/async_write.rs:464,1
    - Dst: expect
      Src: /src/opendal/core/tests/behavior/async_write.rs:464,1
    - Dst: read
      Src: /src/opendal/core/tests/behavior/async_write.rs:467,1
    - Dst: to_bytes
      Src: /src/opendal/core/tests/behavior/async_write.rs:467,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_write.rs:480,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 67
    argCount: 1
    argNames:
    - op
    argTypes:
    - Operator
    constantsTouched: []
    func_position:
      end: 481
      start: 439
    functionDepth: 33
    functionLinenumber: 439
    functionLinenumberEnd: 481
    functionName: test_writer_sink_with_concurrent
    functionSourceFile: /src/opendal/core/tests/behavior/async_write.rs
    functionUses: 0
    functionsReached:
    - Self::send_all
    - info
    - read
    - into_bytes_sink
    - Ok
    - Result::concurrent
    - expect
    - ServiceInfo::capability
    - chunk
    - new_file_path
    - map
    - gen_fixed_bytes
    - writer_with
    - stat
    - to_bytes
    - Self::close
    - stream::iter
    linkageType: ''
    returnType: Result
    signature: 'pub async fn test_writer_sink_with_concurrent(op: Operator) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: info
      Src: /src/opendal/core/tests/behavior/async_write.rs:485,1
    - Dst: ServiceInfo::capability
      Src: /src/opendal/core/tests/behavior/async_write.rs:485,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_write.rs:486,1
    - Dst: new_file_path
      Src: /src/opendal/core/tests/behavior/async_write.rs:489,1
    - Dst: gen_bytes_with_range
      Src: /src/opendal/core/tests/behavior/async_write.rs:491,1
    - Dst: writer_with
      Src: /src/opendal/core/tests/behavior/async_write.rs:493,1
    - Dst: chunk
      Src: /src/opendal/core/tests/behavior/async_write.rs:493,1
    - Dst: into_futures_async_write
      Src: /src/opendal/core/tests/behavior/async_write.rs:493,1
    - Dst: BufReader::with_capacity
      Src: /src/opendal/core/tests/behavior/async_write.rs:500,1
    - Dst: Cursor::new
      Src: /src/opendal/core/tests/behavior/async_write.rs:500,1
    - Dst: Result::clone
      Src: /src/opendal/core/tests/behavior/async_write.rs:500,1
    - Dst: futures::io::copy_buf
      Src: /src/opendal/core/tests/behavior/async_write.rs:501,1
    - Dst: Self::close
      Src: /src/opendal/core/tests/behavior/async_write.rs:502,1
    - Dst: stat
      Src: /src/opendal/core/tests/behavior/async_write.rs:504,1
    - Dst: expect
      Src: /src/opendal/core/tests/behavior/async_write.rs:504,1
    - Dst: read
      Src: /src/opendal/core/tests/behavior/async_write.rs:507,1
    - Dst: to_bytes
      Src: /src/opendal/core/tests/behavior/async_write.rs:507,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_write.rs:515,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 66
    argCount: 1
    argNames:
    - op
    argTypes:
    - Operator
    constantsTouched: []
    func_position:
      end: 516
      start: 484
    functionDepth: 33
    functionLinenumber: 484
    functionLinenumberEnd: 516
    functionName: test_writer_futures_copy
    functionSourceFile: /src/opendal/core/tests/behavior/async_write.rs
    functionUses: 0
    functionsReached:
    - Result::clone
    - read
    - info
    - into_futures_async_write
    - expect
    - Ok
    - BufReader::with_capacity
    - ServiceInfo::capability
    - gen_bytes_with_range
    - chunk
    - new_file_path
    - writer_with
    - to_bytes
    - Self::close
    - Cursor::new
    - stat
    - futures::io::copy_buf
    linkageType: ''
    returnType: Result
    signature: 'pub async fn test_writer_futures_copy(op: Operator) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: info
      Src: /src/opendal/core/tests/behavior/async_write.rs:520,1
    - Dst: ServiceInfo::capability
      Src: /src/opendal/core/tests/behavior/async_write.rs:520,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_write.rs:521,1
    - Dst: new_file_path
      Src: /src/opendal/core/tests/behavior/async_write.rs:524,1
    - Dst: gen_bytes_with_range
      Src: /src/opendal/core/tests/behavior/async_write.rs:526,1
    - Dst: writer_with
      Src: /src/opendal/core/tests/behavior/async_write.rs:528,1
    - Dst: chunk
      Src: /src/opendal/core/tests/behavior/async_write.rs:528,1
    - Dst: Result::concurrent
      Src: /src/opendal/core/tests/behavior/async_write.rs:528,1
    - Dst: into_futures_async_write
      Src: /src/opendal/core/tests/behavior/async_write.rs:528,1
    - Dst: BufReader::with_capacity
      Src: /src/opendal/core/tests/behavior/async_write.rs:536,1
    - Dst: Cursor::new
      Src: /src/opendal/core/tests/behavior/async_write.rs:536,1
    - Dst: Result::clone
      Src: /src/opendal/core/tests/behavior/async_write.rs:536,1
    - Dst: futures::io::copy_buf
      Src: /src/opendal/core/tests/behavior/async_write.rs:537,1
    - Dst: Self::close
      Src: /src/opendal/core/tests/behavior/async_write.rs:538,1
    - Dst: expect
      Src: /src/opendal/core/tests/behavior/async_write.rs:538,1
    - Dst: stat
      Src: /src/opendal/core/tests/behavior/async_write.rs:540,1
    - Dst: expect
      Src: /src/opendal/core/tests/behavior/async_write.rs:540,1
    - Dst: read
      Src: /src/opendal/core/tests/behavior/async_write.rs:543,1
    - Dst: to_bytes
      Src: /src/opendal/core/tests/behavior/async_write.rs:543,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_write.rs:551,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 69
    argCount: 1
    argNames:
    - op
    argTypes:
    - Operator
    constantsTouched: []
    func_position:
      end: 552
      start: 519
    functionDepth: 33
    functionLinenumber: 519
    functionLinenumberEnd: 552
    functionName: test_writer_futures_copy_with_concurrent
    functionSourceFile: /src/opendal/core/tests/behavior/async_write.rs
    functionUses: 0
    functionsReached:
    - Result::clone
    - read
    - info
    - into_futures_async_write
    - expect
    - Ok
    - Result::concurrent
    - BufReader::with_capacity
    - ServiceInfo::capability
    - gen_bytes_with_range
    - chunk
    - new_file_path
    - writer_with
    - to_bytes
    - Self::close
    - Cursor::new
    - stat
    - futures::io::copy_buf
    linkageType: ''
    returnType: Result
    signature: 'pub async fn test_writer_futures_copy_with_concurrent(op: Operator)
      -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: info
      Src: /src/opendal/core/tests/behavior/async_write.rs:555,1
    - Dst: ServiceInfo::capability
      Src: /src/opendal/core/tests/behavior/async_write.rs:555,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_write.rs:557,1
    - Dst: new_file_path
      Src: /src/opendal/core/tests/behavior/async_write.rs:560,1
    - Dst: gen_fixed_bytes
      Src: /src/opendal/core/tests/behavior/async_write.rs:562,1
    - Dst: gen_fixed_bytes
      Src: /src/opendal/core/tests/behavior/async_write.rs:563,1
    - Dst: writer
      Src: /src/opendal/core/tests/behavior/async_write.rs:565,1
    - Dst: Self::write
      Src: /src/opendal/core/tests/behavior/async_write.rs:566,1
    - Dst: Vec::clone
      Src: /src/opendal/core/tests/behavior/async_write.rs:566,1
    - Dst: Self::write
      Src: /src/opendal/core/tests/behavior/async_write.rs:567,1
    - Dst: Vec::clone
      Src: /src/opendal/core/tests/behavior/async_write.rs:567,1
    - Dst: Self::close
      Src: /src/opendal/core/tests/behavior/async_write.rs:568,1
    - Dst: stat
      Src: /src/opendal/core/tests/behavior/async_write.rs:570,1
    - Dst: expect
      Src: /src/opendal/core/tests/behavior/async_write.rs:570,1
    - Dst: assert_metadata
      Src: /src/opendal/core/tests/behavior/async_write.rs:572,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_write.rs:574,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 51
    argCount: 1
    argNames:
    - op
    argTypes:
    - Operator
    constantsTouched: []
    func_position:
      end: 575
      start: 554
    functionDepth: 36
    functionLinenumber: 554
    functionLinenumberEnd: 575
    functionName: test_writer_return_metadata
    functionSourceFile: /src/opendal/core/tests/behavior/async_write.rs
    functionUses: 0
    functionsReached:
    - info
    - expect
    - Ok
    - ServiceInfo::capability
    - Self::write
    - new_file_path
    - gen_fixed_bytes
    - writer
    - assert_metadata
    - Self::close
    - stat
    - Vec::clone
    linkageType: ''
    returnType: Result
    signature: 'pub async fn test_writer_return_metadata(op: Operator) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: new_file_path
      Src: /src/opendal/core/tests/behavior/async_write.rs:579,1
    - Dst: gen_bytes
      Src: /src/opendal/core/tests/behavior/async_write.rs:580,1
    - Dst: info
      Src: /src/opendal/core/tests/behavior/async_write.rs:580,1
    - Dst: ServiceInfo::capability
      Src: /src/opendal/core/tests/behavior/async_write.rs:580,1
    - Dst: gen_bytes
      Src: /src/opendal/core/tests/behavior/async_write.rs:581,1
    - Dst: info
      Src: /src/opendal/core/tests/behavior/async_write.rs:581,1
    - Dst: ServiceInfo::capability
      Src: /src/opendal/core/tests/behavior/async_write.rs:581,1
    - Dst: write_with
      Src: /src/opendal/core/tests/behavior/async_write.rs:583,1
    - Dst: clone
      Src: /src/opendal/core/tests/behavior/async_write.rs:583,1
    - Dst: append
      Src: /src/opendal/core/tests/behavior/async_write.rs:583,1
    - Dst: expect
      Src: /src/opendal/core/tests/behavior/async_write.rs:583,1
    - Dst: stat
      Src: /src/opendal/core/tests/behavior/async_write.rs:588,1
    - Dst: write_with
      Src: /src/opendal/core/tests/behavior/async_write.rs:591,1
    - Dst: clone
      Src: /src/opendal/core/tests/behavior/async_write.rs:591,1
    - Dst: append
      Src: /src/opendal/core/tests/behavior/async_write.rs:591,1
    - Dst: expect
      Src: /src/opendal/core/tests/behavior/async_write.rs:591,1
    - Dst: read
      Src: /src/opendal/core/tests/behavior/async_write.rs:596,1
    - Dst: expect
      Src: /src/opendal/core/tests/behavior/async_write.rs:596,1
    - Dst: to_bytes
      Src: /src/opendal/core/tests/behavior/async_write.rs:596,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_write.rs:606,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 53
    argCount: 1
    argNames:
    - op
    argTypes:
    - Operator
    constantsTouched: []
    func_position:
      end: 607
      start: 578
    functionDepth: 30
    functionLinenumber: 578
    functionLinenumberEnd: 607
    functionName: test_write_with_append
    functionSourceFile: /src/opendal/core/tests/behavior/async_write.rs
    functionUses: 0
    functionsReached:
    - read
    - info
    - expect
    - Ok
    - ServiceInfo::capability
    - gen_bytes
    - clone
    - new_file_path
    - append
    - to_bytes
    - write_with
    - stat
    linkageType: ''
    returnType: Result
    signature: 'pub async fn test_write_with_append(op: Operator) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: info
      Src: /src/opendal/core/tests/behavior/async_write.rs:610,1
    - Dst: ServiceInfo::capability
      Src: /src/opendal/core/tests/behavior/async_write.rs:610,1
    - Dst: new_file_path
      Src: /src/opendal/core/tests/behavior/async_write.rs:612,1
    - Dst: gen_bytes
      Src: /src/opendal/core/tests/behavior/async_write.rs:613,1
    - Dst: gen_bytes
      Src: /src/opendal/core/tests/behavior/async_write.rs:614,1
    - Dst: write_with
      Src: /src/opendal/core/tests/behavior/async_write.rs:616,1
    - Dst: clone
      Src: /src/opendal/core/tests/behavior/async_write.rs:616,1
    - Dst: append
      Src: /src/opendal/core/tests/behavior/async_write.rs:616,1
    - Dst: expect
      Src: /src/opendal/core/tests/behavior/async_write.rs:616,1
    - Dst: write_with
      Src: /src/opendal/core/tests/behavior/async_write.rs:621,1
    - Dst: clone
      Src: /src/opendal/core/tests/behavior/async_write.rs:622,1
    - Dst: append
      Src: /src/opendal/core/tests/behavior/async_write.rs:621,1
    - Dst: expect
      Src: /src/opendal/core/tests/behavior/async_write.rs:621,1
    - Dst: stat
      Src: /src/opendal/core/tests/behavior/async_write.rs:627,1
    - Dst: expect
      Src: /src/opendal/core/tests/behavior/async_write.rs:627,1
    - Dst: assert_metadata
      Src: /src/opendal/core/tests/behavior/async_write.rs:628,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_write.rs:630,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 39
    argCount: 1
    argNames:
    - op
    argTypes:
    - Operator
    constantsTouched: []
    func_position:
      end: 631
      start: 609
    functionDepth: 30
    functionLinenumber: 609
    functionLinenumberEnd: 631
    functionName: test_write_with_append_returns_metadata
    functionSourceFile: /src/opendal/core/tests/behavior/async_write.rs
    functionUses: 0
    functionsReached:
    - info
    - expect
    - Ok
    - ServiceInfo::capability
    - gen_bytes
    - clone
    - new_file_path
    - append
    - assert_metadata
    - write_with
    - stat
    linkageType: ''
    returnType: Result
    signature: 'pub async fn test_write_with_append_returns_metadata(op: Operator)
      -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::etag
      Src: /src/opendal/core/tests/behavior/async_write.rs:635,1
    - Dst: Option::is_some
      Src: /src/opendal/core/tests/behavior/async_write.rs:635,1
    - Dst: Result::last_modified
      Src: /src/opendal/core/tests/behavior/async_write.rs:638,1
    - Dst: Option::is_some
      Src: /src/opendal/core/tests/behavior/async_write.rs:638,1
    - Dst: Result::version
      Src: /src/opendal/core/tests/behavior/async_write.rs:641,1
    - Dst: Result::is_some
      Src: /src/opendal/core/tests/behavior/async_write.rs:641,1
    - Dst: Result::content_md5
      Src: /src/opendal/core/tests/behavior/async_write.rs:644,1
    - Dst: Option::is_some
      Src: /src/opendal/core/tests/behavior/async_write.rs:644,1
    - Dst: Result::content_type
      Src: /src/opendal/core/tests/behavior/async_write.rs:647,1
    - Dst: Result::is_some
      Src: /src/opendal/core/tests/behavior/async_write.rs:647,1
    - Dst: Result::content_encoding
      Src: /src/opendal/core/tests/behavior/async_write.rs:650,1
    - Dst: Result::is_some
      Src: /src/opendal/core/tests/behavior/async_write.rs:650,1
    - Dst: Result::content_disposition
      Src: /src/opendal/core/tests/behavior/async_write.rs:653,1
    - Dst: Result::is_some
      Src: /src/opendal/core/tests/behavior/async_write.rs:653,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 50
    argCount: 2
    argNames:
    - stat_meta
    - meta
    argTypes:
    - Metadata
    - Metadata
    constantsTouched: []
    func_position:
      end: 656
      start: 633
    functionDepth: 32
    functionLinenumber: 633
    functionLinenumberEnd: 656
    functionName: assert_metadata
    functionSourceFile: /src/opendal/core/tests/behavior/async_write.rs
    functionUses: 3
    functionsReached:
    - Option::is_some
    - Result::last_modified
    - Result::content_encoding
    - Result::version
    - Result::content_disposition
    - Result::etag
    - Result::content_md5
    - Result::is_some
    - Result::content_type
    linkageType: ''
    returnType: void
    signature: 'fn assert_metadata(stat_meta: Metadata, meta: Metadata)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: uuid::Uuid::new_v4
      Src: /src/opendal/core/tests/behavior/async_write.rs:660,1
    - Dst: to_string
      Src: /src/opendal/core/tests/behavior/async_write.rs:660,1
    - Dst: gen_bytes_with_range
      Src: /src/opendal/core/tests/behavior/async_write.rs:662,1
    - Dst: writer_with
      Src: /src/opendal/core/tests/behavior/async_write.rs:664,1
    - Dst: append
      Src: /src/opendal/core/tests/behavior/async_write.rs:664,1
    - Dst: into_futures_async_write
      Src: /src/opendal/core/tests/behavior/async_write.rs:664,1
    - Dst: BufReader::with_capacity
      Src: /src/opendal/core/tests/behavior/async_write.rs:671,1
    - Dst: Cursor::new
      Src: /src/opendal/core/tests/behavior/async_write.rs:671,1
    - Dst: Result::clone
      Src: /src/opendal/core/tests/behavior/async_write.rs:671,1
    - Dst: futures::io::copy_buf
      Src: /src/opendal/core/tests/behavior/async_write.rs:672,1
    - Dst: anyhow::Result::close
      Src: /src/opendal/core/tests/behavior/async_write.rs:673,1
    - Dst: stat
      Src: /src/opendal/core/tests/behavior/async_write.rs:675,1
    - Dst: expect
      Src: /src/opendal/core/tests/behavior/async_write.rs:675,1
    - Dst: read
      Src: /src/opendal/core/tests/behavior/async_write.rs:678,1
    - Dst: to_bytes
      Src: /src/opendal/core/tests/behavior/async_write.rs:678,1
    - Dst: delete
      Src: /src/opendal/core/tests/behavior/async_write.rs:686,1
    - Dst: expect
      Src: /src/opendal/core/tests/behavior/async_write.rs:686,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_write.rs:687,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 59
    argCount: 1
    argNames:
    - op
    argTypes:
    - Operator
    constantsTouched: []
    func_position:
      end: 688
      start: 659
    functionDepth: 33
    functionLinenumber: 659
    functionLinenumberEnd: 688
    functionName: test_writer_with_append
    functionSourceFile: /src/opendal/core/tests/behavior/async_write.rs
    functionUses: 0
    functionsReached:
    - Result::clone
    - to_string
    - read
    - into_futures_async_write
    - expect
    - Ok
    - delete
    - BufReader::with_capacity
    - uuid::Uuid::new_v4
    - anyhow::Result::close
    - gen_bytes_with_range
    - writer_with
    - append
    - to_bytes
    - Cursor::new
    - stat
    - futures::io::copy_buf
    linkageType: ''
    returnType: Result
    signature: 'pub async fn test_writer_with_append(op: Operator) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: info
      Src: /src/opendal/core/tests/behavior/async_write.rs:693,1
    - Dst: ServiceInfo::scheme
      Src: /src/opendal/core/tests/behavior/async_write.rs:693,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_write.rs:694,1
    - Dst: uuid::Uuid::new_v4
      Src: /src/opendal/core/tests/behavior/async_write.rs:697,1
    - Dst: to_string
      Src: /src/opendal/core/tests/behavior/async_write.rs:697,1
    - Dst: gen_bytes
      Src: /src/opendal/core/tests/behavior/async_write.rs:698,1
    - Dst: info
      Src: /src/opendal/core/tests/behavior/async_write.rs:698,1
    - Dst: ServiceInfo::capability
      Src: /src/opendal/core/tests/behavior/async_write.rs:698,1
    - Dst: gen_bytes
      Src: /src/opendal/core/tests/behavior/async_write.rs:699,1
    - Dst: info
      Src: /src/opendal/core/tests/behavior/async_write.rs:699,1
    - Dst: ServiceInfo::capability
      Src: /src/opendal/core/tests/behavior/async_write.rs:699,1
    - Dst: write
      Src: /src/opendal/core/tests/behavior/async_write.rs:701,1
    - Dst: clone
      Src: /src/opendal/core/tests/behavior/async_write.rs:701,1
    - Dst: read
      Src: /src/opendal/core/tests/behavior/async_write.rs:702,1
    - Dst: to_bytes
      Src: /src/opendal/core/tests/behavior/async_write.rs:702,1
    - Dst: write
      Src: /src/opendal/core/tests/behavior/async_write.rs:708,1
    - Dst: clone
      Src: /src/opendal/core/tests/behavior/async_write.rs:708,1
    - Dst: expect
      Src: /src/opendal/core/tests/behavior/async_write.rs:708,1
    - Dst: read
      Src: /src/opendal/core/tests/behavior/async_write.rs:711,1
    - Dst: to_bytes
      Src: /src/opendal/core/tests/behavior/async_write.rs:711,1
    - Dst: delete
      Src: /src/opendal/core/tests/behavior/async_write.rs:723,1
    - Dst: expect
      Src: /src/opendal/core/tests/behavior/async_write.rs:723,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_write.rs:724,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 67
    argCount: 1
    argNames:
    - op
    argTypes:
    - Operator
    constantsTouched: []
    func_position:
      end: 725
      start: 690
    functionDepth: 30
    functionLinenumber: 690
    functionLinenumberEnd: 725
    functionName: test_writer_write_with_overwrite
    functionSourceFile: /src/opendal/core/tests/behavior/async_write.rs
    functionUses: 0
    functionsReached:
    - to_string
    - info
    - read
    - expect
    - Ok
    - delete
    - ServiceInfo::capability
    - uuid::Uuid::new_v4
    - gen_bytes
    - clone
    - to_bytes
    - ServiceInfo::scheme
    - write
    linkageType: ''
    returnType: Result
    signature: 'pub async fn test_writer_write_with_overwrite(op: Operator) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: info
      Src: /src/opendal/core/tests/behavior/async_write.rs:729,1
    - Dst: ServiceInfo::capability
      Src: /src/opendal/core/tests/behavior/async_write.rs:729,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_write.rs:730,1
    - Dst: new_file
      Src: /src/opendal/core/tests/behavior/async_write.rs:733,1
    - Dst: clone
      Src: /src/opendal/core/tests/behavior/async_write.rs:733,1
    - Dst: write
      Src: /src/opendal/core/tests/behavior/async_write.rs:735,1
    - Dst: Result::clone
      Src: /src/opendal/core/tests/behavior/async_write.rs:735,1
    - Dst: expect
      Src: /src/opendal/core/tests/behavior/async_write.rs:735,1
    - Dst: stat
      Src: /src/opendal/core/tests/behavior/async_write.rs:739,1
    - Dst: write_with
      Src: /src/opendal/core/tests/behavior/async_write.rs:741,1
    - Dst: Result::clone
      Src: /src/opendal/core/tests/behavior/async_write.rs:742,1
    - Dst: if_none_match
      Src: /src/opendal/core/tests/behavior/async_write.rs:741,1
    - Dst: Result::etag
      Src: /src/opendal/core/tests/behavior/async_write.rs:743,1
    - Dst: Option::expect
      Src: /src/opendal/core/tests/behavior/async_write.rs:743,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_write.rs:748,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 46
    argCount: 1
    argNames:
    - op
    argTypes:
    - Operator
    constantsTouched: []
    func_position:
      end: 749
      start: 728
    functionDepth: 31
    functionLinenumber: 728
    functionLinenumberEnd: 749
    functionName: test_write_with_if_none_match
    functionSourceFile: /src/opendal/core/tests/behavior/async_write.rs
    functionUses: 0
    functionsReached:
    - Result::clone
    - info
    - Option::expect
    - expect
    - Ok
    - ServiceInfo::capability
    - Result::etag
    - clone
    - if_none_match
    - new_file
    - write_with
    - write
    - stat
    linkageType: ''
    returnType: Result
    signature: 'pub async fn test_write_with_if_none_match(op: Operator) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: info
      Src: /src/opendal/core/tests/behavior/async_write.rs:753,1
    - Dst: ServiceInfo::capability
      Src: /src/opendal/core/tests/behavior/async_write.rs:753,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_write.rs:754,1
    - Dst: new_file
      Src: /src/opendal/core/tests/behavior/async_write.rs:757,1
    - Dst: clone
      Src: /src/opendal/core/tests/behavior/async_write.rs:757,1
    - Dst: write_with
      Src: /src/opendal/core/tests/behavior/async_write.rs:759,1
    - Dst: Result::clone
      Src: /src/opendal/core/tests/behavior/async_write.rs:760,1
    - Dst: if_not_exists
      Src: /src/opendal/core/tests/behavior/async_write.rs:759,1
    - Dst: write_with
      Src: /src/opendal/core/tests/behavior/async_write.rs:765,1
    - Dst: Result::clone
      Src: /src/opendal/core/tests/behavior/async_write.rs:766,1
    - Dst: if_not_exists
      Src: /src/opendal/core/tests/behavior/async_write.rs:765,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_write.rs:772,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 37
    argCount: 1
    argNames:
    - op
    argTypes:
    - Operator
    constantsTouched: []
    func_position:
      end: 773
      start: 752
    functionDepth: 31
    functionLinenumber: 752
    functionLinenumberEnd: 773
    functionName: test_write_with_if_not_exists
    functionSourceFile: /src/opendal/core/tests/behavior/async_write.rs
    functionUses: 0
    functionsReached:
    - Result::clone
    - info
    - Ok
    - ServiceInfo::capability
    - clone
    - new_file
    - if_not_exists
    - write_with
    linkageType: ''
    returnType: Result
    signature: 'pub async fn test_write_with_if_not_exists(op: Operator) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: info
      Src: /src/opendal/core/tests/behavior/async_write.rs:777,1
    - Dst: ServiceInfo::capability
      Src: /src/opendal/core/tests/behavior/async_write.rs:777,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_write.rs:778,1
    - Dst: new_file
      Src: /src/opendal/core/tests/behavior/async_write.rs:782,1
    - Dst: clone
      Src: /src/opendal/core/tests/behavior/async_write.rs:782,1
    - Dst: new_file
      Src: /src/opendal/core/tests/behavior/async_write.rs:783,1
    - Dst: clone
      Src: /src/opendal/core/tests/behavior/async_write.rs:783,1
    - Dst: write
      Src: /src/opendal/core/tests/behavior/async_write.rs:786,1
    - Dst: clone
      Src: /src/opendal/core/tests/behavior/async_write.rs:786,1
    - Dst: write
      Src: /src/opendal/core/tests/behavior/async_write.rs:787,1
    - Dst: clone
      Src: /src/opendal/core/tests/behavior/async_write.rs:787,1
    - Dst: stat
      Src: /src/opendal/core/tests/behavior/async_write.rs:790,1
    - Dst: etag
      Src: /src/opendal/core/tests/behavior/async_write.rs:791,1
    - Dst: expect
      Src: /src/opendal/core/tests/behavior/async_write.rs:791,1
    - Dst: stat
      Src: /src/opendal/core/tests/behavior/async_write.rs:792,1
    - Dst: etag
      Src: /src/opendal/core/tests/behavior/async_write.rs:793,1
    - Dst: expect
      Src: /src/opendal/core/tests/behavior/async_write.rs:793,1
    - Dst: write_with
      Src: /src/opendal/core/tests/behavior/async_write.rs:796,1
    - Dst: clone
      Src: /src/opendal/core/tests/behavior/async_write.rs:797,1
    - Dst: if_match
      Src: /src/opendal/core/tests/behavior/async_write.rs:796,1
    - Dst: write_with
      Src: /src/opendal/core/tests/behavior/async_write.rs:803,1
    - Dst: clone
      Src: /src/opendal/core/tests/behavior/async_write.rs:804,1
    - Dst: if_match
      Src: /src/opendal/core/tests/behavior/async_write.rs:803,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_write.rs:810,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 75
    argCount: 1
    argNames:
    - op
    argTypes:
    - Operator
    constantsTouched: []
    func_position:
      end: 811
      start: 776
    functionDepth: 31
    functionLinenumber: 776
    functionLinenumberEnd: 811
    functionName: test_write_with_if_match
    functionSourceFile: /src/opendal/core/tests/behavior/async_write.rs
    functionUses: 0
    functionsReached:
    - info
    - etag
    - expect
    - Ok
    - if_match
    - ServiceInfo::capability
    - clone
    - new_file
    - write_with
    - write
    - stat
    linkageType: ''
    returnType: Result
    signature: 'pub async fn test_write_with_if_match(op: Operator) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: new_file_path
      Src: /src/opendal/core/tests/behavior/async_write.rs:814,1
    - Dst: gen_fixed_bytes
      Src: /src/opendal/core/tests/behavior/async_write.rs:816,1
    - Dst: sha256_digest
      Src: /src/opendal/core/tests/behavior/async_write.rs:817,1
    - Dst: gen_fixed_bytes
      Src: /src/opendal/core/tests/behavior/async_write.rs:818,1
    - Dst: sha256_digest
      Src: /src/opendal/core/tests/behavior/async_write.rs:819,1
    - Dst: writer
      Src: /src/opendal/core/tests/behavior/async_write.rs:821,1
    - Dst: Self::write
      Src: /src/opendal/core/tests/behavior/async_write.rs:822,1
    - Dst: Self::close
      Src: /src/opendal/core/tests/behavior/async_write.rs:824,1
    - Dst: stat
      Src: /src/opendal/core/tests/behavior/async_write.rs:826,1
    - Dst: expect
      Src: /src/opendal/core/tests/behavior/async_write.rs:826,1
    - Dst: read
      Src: /src/opendal/core/tests/behavior/async_write.rs:829,1
    - Dst: to_bytes
      Src: /src/opendal/core/tests/behavior/async_write.rs:829,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_write.rs:834,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 43
    argCount: 1
    argNames:
    - op
    argTypes:
    - Operator
    constantsTouched: []
    func_position:
      end: 835
      start: 813
    functionDepth: 36
    functionLinenumber: 813
    functionLinenumberEnd: 835
    functionName: test_writer_write_non_contiguous_data
    functionSourceFile: /src/opendal/core/tests/behavior/async_write.rs
    functionUses: 0
    functionsReached:
    - read
    - expect
    - Ok
    - Self::write
    - sha256_digest
    - new_file_path
    - gen_fixed_bytes
    - writer
    - to_bytes
    - Self::close
    - stat
    linkageType: ''
    returnType: Result
    signature: 'pub async fn test_writer_write_non_contiguous_data(op: Operator) ->
      Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: uuid::Uuid::new_v4
      Src: /src/opendal/core/tests/behavior/async_rename.rs:50,1
    - Dst: to_string
      Src: /src/opendal/core/tests/behavior/async_rename.rs:50,1
    - Dst: gen_bytes
      Src: /src/opendal/core/tests/behavior/async_rename.rs:51,1
    - Dst: info
      Src: /src/opendal/core/tests/behavior/async_rename.rs:51,1
    - Dst: ServiceInfo::capability
      Src: /src/opendal/core/tests/behavior/async_rename.rs:51,1
    - Dst: write
      Src: /src/opendal/core/tests/behavior/async_rename.rs:53,1
    - Dst: clone
      Src: /src/opendal/core/tests/behavior/async_rename.rs:53,1
    - Dst: uuid::Uuid::new_v4
      Src: /src/opendal/core/tests/behavior/async_rename.rs:55,1
    - Dst: to_string
      Src: /src/opendal/core/tests/behavior/async_rename.rs:55,1
    - Dst: rename
      Src: /src/opendal/core/tests/behavior/async_rename.rs:57,1
    - Dst: stat
      Src: /src/opendal/core/tests/behavior/async_rename.rs:59,1
    - Dst: expect_err
      Src: /src/opendal/core/tests/behavior/async_rename.rs:59,1
    - Dst: read
      Src: /src/opendal/core/tests/behavior/async_rename.rs:62,1
    - Dst: expect
      Src: /src/opendal/core/tests/behavior/async_rename.rs:62,1
    - Dst: to_bytes
      Src: /src/opendal/core/tests/behavior/async_rename.rs:62,1
    - Dst: delete
      Src: /src/opendal/core/tests/behavior/async_rename.rs:72,1
    - Dst: expect
      Src: /src/opendal/core/tests/behavior/async_rename.rs:72,1
    - Dst: delete
      Src: /src/opendal/core/tests/behavior/async_rename.rs:73,1
    - Dst: expect
      Src: /src/opendal/core/tests/behavior/async_rename.rs:73,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_rename.rs:74,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 58
    argCount: 1
    argNames:
    - op
    argTypes:
    - Operator
    constantsTouched: []
    func_position:
      end: 75
      start: 49
    functionDepth: 30
    functionLinenumber: 49
    functionLinenumberEnd: 75
    functionName: test_rename_file
    functionSourceFile: /src/opendal/core/tests/behavior/async_rename.rs
    functionUses: 0
    functionsReached:
    - to_string
    - info
    - read
    - expect
    - Ok
    - delete
    - ServiceInfo::capability
    - uuid::Uuid::new_v4
    - to_bytes
    - gen_bytes
    - clone
    - rename
    - expect_err
    - write
    - stat
    linkageType: ''
    returnType: Result
    signature: 'pub async fn test_rename_file(op: Operator) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: uuid::Uuid::new_v4
      Src: /src/opendal/core/tests/behavior/async_rename.rs:79,1
    - Dst: to_string
      Src: /src/opendal/core/tests/behavior/async_rename.rs:79,1
    - Dst: uuid::Uuid::new_v4
      Src: /src/opendal/core/tests/behavior/async_rename.rs:80,1
    - Dst: to_string
      Src: /src/opendal/core/tests/behavior/async_rename.rs:80,1
    - Dst: rename
      Src: /src/opendal/core/tests/behavior/async_rename.rs:82,1
    - Dst: expect_err
      Src: /src/opendal/core/tests/behavior/async_rename.rs:82,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_rename.rs:87,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 16
    argCount: 1
    argNames:
    - op
    argTypes:
    - Operator
    constantsTouched: []
    func_position:
      end: 88
      start: 78
    functionDepth: 2
    functionLinenumber: 78
    functionLinenumberEnd: 88
    functionName: test_rename_non_existing_source
    functionSourceFile: /src/opendal/core/tests/behavior/async_rename.rs
    functionUses: 0
    functionsReached:
    - to_string
    - Ok
    - uuid::Uuid::new_v4
    - rename
    - expect_err
    linkageType: ''
    returnType: Result
    signature: 'pub async fn test_rename_non_existing_source(op: Operator) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: info
      Src: /src/opendal/core/tests/behavior/async_rename.rs:92,1
    - Dst: ServiceInfo::capability
      Src: /src/opendal/core/tests/behavior/async_rename.rs:92,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_rename.rs:93,1
    - Dst: uuid::Uuid::new_v4
      Src: /src/opendal/core/tests/behavior/async_rename.rs:97,1
    - Dst: to_string
      Src: /src/opendal/core/tests/behavior/async_rename.rs:97,1
    - Dst: create_dir
      Src: /src/opendal/core/tests/behavior/async_rename.rs:99,1
    - Dst: rename
      Src: /src/opendal/core/tests/behavior/async_rename.rs:101,1
    - Dst: expect_err
      Src: /src/opendal/core/tests/behavior/async_rename.rs:101,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_rename.rs:106,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 31
    argCount: 1
    argNames:
    - op
    argTypes:
    - Operator
    constantsTouched: []
    func_position:
      end: 107
      start: 91
    functionDepth: 35
    functionLinenumber: 91
    functionLinenumberEnd: 107
    functionName: test_rename_source_dir
    functionSourceFile: /src/opendal/core/tests/behavior/async_rename.rs
    functionUses: 0
    functionsReached:
    - to_string
    - info
    - Ok
    - ServiceInfo::capability
    - uuid::Uuid::new_v4
    - rename
    - create_dir
    - expect_err
    linkageType: ''
    returnType: Result
    signature: 'pub async fn test_rename_source_dir(op: Operator) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: info
      Src: /src/opendal/core/tests/behavior/async_rename.rs:111,1
    - Dst: ServiceInfo::capability
      Src: /src/opendal/core/tests/behavior/async_rename.rs:111,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_rename.rs:112,1
    - Dst: uuid::Uuid::new_v4
      Src: /src/opendal/core/tests/behavior/async_rename.rs:115,1
    - Dst: to_string
      Src: /src/opendal/core/tests/behavior/async_rename.rs:115,1
    - Dst: gen_bytes
      Src: /src/opendal/core/tests/behavior/async_rename.rs:116,1
    - Dst: info
      Src: /src/opendal/core/tests/behavior/async_rename.rs:116,1
    - Dst: ServiceInfo::capability
      Src: /src/opendal/core/tests/behavior/async_rename.rs:116,1
    - Dst: write
      Src: /src/opendal/core/tests/behavior/async_rename.rs:118,1
    - Dst: create_dir
      Src: /src/opendal/core/tests/behavior/async_rename.rs:122,1
    - Dst: rename
      Src: /src/opendal/core/tests/behavior/async_rename.rs:124,1
    - Dst: expect_err
      Src: /src/opendal/core/tests/behavior/async_rename.rs:124,1
    - Dst: delete
      Src: /src/opendal/core/tests/behavior/async_rename.rs:130,1
    - Dst: expect
      Src: /src/opendal/core/tests/behavior/async_rename.rs:130,1
    - Dst: delete
      Src: /src/opendal/core/tests/behavior/async_rename.rs:131,1
    - Dst: expect
      Src: /src/opendal/core/tests/behavior/async_rename.rs:131,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_rename.rs:132,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 56
    argCount: 1
    argNames:
    - op
    argTypes:
    - Operator
    constantsTouched: []
    func_position:
      end: 133
      start: 110
    functionDepth: 30
    functionLinenumber: 110
    functionLinenumberEnd: 133
    functionName: test_rename_target_dir
    functionSourceFile: /src/opendal/core/tests/behavior/async_rename.rs
    functionUses: 0
    functionsReached:
    - to_string
    - info
    - expect
    - Ok
    - delete
    - ServiceInfo::capability
    - uuid::Uuid::new_v4
    - gen_bytes
    - rename
    - create_dir
    - expect_err
    - write
    linkageType: ''
    returnType: Result
    signature: 'pub async fn test_rename_target_dir(op: Operator) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: uuid::Uuid::new_v4
      Src: /src/opendal/core/tests/behavior/async_rename.rs:137,1
    - Dst: to_string
      Src: /src/opendal/core/tests/behavior/async_rename.rs:137,1
    - Dst: gen_bytes
      Src: /src/opendal/core/tests/behavior/async_rename.rs:138,1
    - Dst: info
      Src: /src/opendal/core/tests/behavior/async_rename.rs:138,1
    - Dst: ServiceInfo::capability
      Src: /src/opendal/core/tests/behavior/async_rename.rs:138,1
    - Dst: write
      Src: /src/opendal/core/tests/behavior/async_rename.rs:140,1
    - Dst: rename
      Src: /src/opendal/core/tests/behavior/async_rename.rs:142,1
    - Dst: expect_err
      Src: /src/opendal/core/tests/behavior/async_rename.rs:142,1
    - Dst: delete
      Src: /src/opendal/core/tests/behavior/async_rename.rs:148,1
    - Dst: expect
      Src: /src/opendal/core/tests/behavior/async_rename.rs:148,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_rename.rs:149,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 31
    argCount: 1
    argNames:
    - op
    argTypes:
    - Operator
    constantsTouched: []
    func_position:
      end: 150
      start: 136
    functionDepth: 30
    functionLinenumber: 136
    functionLinenumberEnd: 150
    functionName: test_rename_self
    functionSourceFile: /src/opendal/core/tests/behavior/async_rename.rs
    functionUses: 0
    functionsReached:
    - to_string
    - info
    - expect
    - Ok
    - delete
    - ServiceInfo::capability
    - uuid::Uuid::new_v4
    - gen_bytes
    - rename
    - expect_err
    - write
    linkageType: ''
    returnType: Result
    signature: 'pub async fn test_rename_self(op: Operator) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: uuid::Uuid::new_v4
      Src: /src/opendal/core/tests/behavior/async_rename.rs:154,1
    - Dst: to_string
      Src: /src/opendal/core/tests/behavior/async_rename.rs:154,1
    - Dst: gen_bytes
      Src: /src/opendal/core/tests/behavior/async_rename.rs:155,1
    - Dst: info
      Src: /src/opendal/core/tests/behavior/async_rename.rs:155,1
    - Dst: ServiceInfo::capability
      Src: /src/opendal/core/tests/behavior/async_rename.rs:155,1
    - Dst: write
      Src: /src/opendal/core/tests/behavior/async_rename.rs:157,1
    - Dst: clone
      Src: /src/opendal/core/tests/behavior/async_rename.rs:157,1
    - Dst: rename
      Src: /src/opendal/core/tests/behavior/async_rename.rs:166,1
    - Dst: stat
      Src: /src/opendal/core/tests/behavior/async_rename.rs:168,1
    - Dst: expect_err
      Src: /src/opendal/core/tests/behavior/async_rename.rs:168,1
    - Dst: read
      Src: /src/opendal/core/tests/behavior/async_rename.rs:171,1
    - Dst: expect
      Src: /src/opendal/core/tests/behavior/async_rename.rs:171,1
    - Dst: to_bytes
      Src: /src/opendal/core/tests/behavior/async_rename.rs:171,1
    - Dst: delete
      Src: /src/opendal/core/tests/behavior/async_rename.rs:181,1
    - Dst: expect
      Src: /src/opendal/core/tests/behavior/async_rename.rs:181,1
    - Dst: delete
      Src: /src/opendal/core/tests/behavior/async_rename.rs:182,1
    - Dst: expect
      Src: /src/opendal/core/tests/behavior/async_rename.rs:182,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_rename.rs:183,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 55
    argCount: 1
    argNames:
    - op
    argTypes:
    - Operator
    constantsTouched: []
    func_position:
      end: 184
      start: 153
    functionDepth: 30
    functionLinenumber: 153
    functionLinenumberEnd: 184
    functionName: test_rename_nested
    functionSourceFile: /src/opendal/core/tests/behavior/async_rename.rs
    functionUses: 0
    functionsReached:
    - to_string
    - info
    - read
    - expect
    - Ok
    - delete
    - ServiceInfo::capability
    - uuid::Uuid::new_v4
    - to_bytes
    - gen_bytes
    - clone
    - rename
    - expect_err
    - write
    - stat
    linkageType: ''
    returnType: Result
    signature: 'pub async fn test_rename_nested(op: Operator) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: uuid::Uuid::new_v4
      Src: /src/opendal/core/tests/behavior/async_rename.rs:188,1
    - Dst: to_string
      Src: /src/opendal/core/tests/behavior/async_rename.rs:188,1
    - Dst: gen_bytes
      Src: /src/opendal/core/tests/behavior/async_rename.rs:189,1
    - Dst: info
      Src: /src/opendal/core/tests/behavior/async_rename.rs:189,1
    - Dst: ServiceInfo::capability
      Src: /src/opendal/core/tests/behavior/async_rename.rs:189,1
    - Dst: write
      Src: /src/opendal/core/tests/behavior/async_rename.rs:191,1
    - Dst: clone
      Src: /src/opendal/core/tests/behavior/async_rename.rs:191,1
    - Dst: uuid::Uuid::new_v4
      Src: /src/opendal/core/tests/behavior/async_rename.rs:193,1
    - Dst: to_string
      Src: /src/opendal/core/tests/behavior/async_rename.rs:193,1
    - Dst: gen_bytes
      Src: /src/opendal/core/tests/behavior/async_rename.rs:194,1
    - Dst: info
      Src: /src/opendal/core/tests/behavior/async_rename.rs:194,1
    - Dst: ServiceInfo::capability
      Src: /src/opendal/core/tests/behavior/async_rename.rs:194,1
    - Dst: write
      Src: /src/opendal/core/tests/behavior/async_rename.rs:197,1
    - Dst: rename
      Src: /src/opendal/core/tests/behavior/async_rename.rs:199,1
    - Dst: stat
      Src: /src/opendal/core/tests/behavior/async_rename.rs:201,1
    - Dst: expect_err
      Src: /src/opendal/core/tests/behavior/async_rename.rs:201,1
    - Dst: read
      Src: /src/opendal/core/tests/behavior/async_rename.rs:204,1
    - Dst: expect
      Src: /src/opendal/core/tests/behavior/async_rename.rs:204,1
    - Dst: to_bytes
      Src: /src/opendal/core/tests/behavior/async_rename.rs:204,1
    - Dst: delete
      Src: /src/opendal/core/tests/behavior/async_rename.rs:214,1
    - Dst: expect
      Src: /src/opendal/core/tests/behavior/async_rename.rs:214,1
    - Dst: delete
      Src: /src/opendal/core/tests/behavior/async_rename.rs:215,1
    - Dst: expect
      Src: /src/opendal/core/tests/behavior/async_rename.rs:215,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_rename.rs:216,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 70
    argCount: 1
    argNames:
    - op
    argTypes:
    - Operator
    constantsTouched: []
    func_position:
      end: 217
      start: 187
    functionDepth: 30
    functionLinenumber: 187
    functionLinenumberEnd: 217
    functionName: test_rename_overwrite
    functionSourceFile: /src/opendal/core/tests/behavior/async_rename.rs
    functionUses: 0
    functionsReached:
    - to_string
    - info
    - read
    - expect
    - Ok
    - delete
    - ServiceInfo::capability
    - uuid::Uuid::new_v4
    - to_bytes
    - gen_bytes
    - clone
    - rename
    - expect_err
    - write
    - stat
    linkageType: ''
    returnType: Result
    signature: 'pub async fn test_rename_overwrite(op: Operator) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: uuid::Uuid::new_v4
      Src: /src/opendal/core/tests/behavior/async_rename.rs:221,1
    - Dst: to_string
      Src: /src/opendal/core/tests/behavior/async_rename.rs:221,1
    - Dst: gen_bytes
      Src: /src/opendal/core/tests/behavior/async_rename.rs:222,1
    - Dst: info
      Src: /src/opendal/core/tests/behavior/async_rename.rs:222,1
    - Dst: ServiceInfo::capability
      Src: /src/opendal/core/tests/behavior/async_rename.rs:222,1
    - Dst: write
      Src: /src/opendal/core/tests/behavior/async_rename.rs:224,1
    - Dst: clone
      Src: /src/opendal/core/tests/behavior/async_rename.rs:224,1
    - Dst: uuid::Uuid::new_v4
      Src: /src/opendal/core/tests/behavior/async_rename.rs:226,1
    - Dst: to_string
      Src: /src/opendal/core/tests/behavior/async_rename.rs:226,1
    - Dst: rename_with
      Src: /src/opendal/core/tests/behavior/async_rename.rs:228,1
    - Dst: FutureRename::if_not_exists
      Src: /src/opendal/core/tests/behavior/async_rename.rs:228,1
    - Dst: stat
      Src: /src/opendal/core/tests/behavior/async_rename.rs:232,1
    - Dst: expect_err
      Src: /src/opendal/core/tests/behavior/async_rename.rs:232,1
    - Dst: read
      Src: /src/opendal/core/tests/behavior/async_rename.rs:235,1
    - Dst: expect
      Src: /src/opendal/core/tests/behavior/async_rename.rs:235,1
    - Dst: to_bytes
      Src: /src/opendal/core/tests/behavior/async_rename.rs:235,1
    - Dst: delete
      Src: /src/opendal/core/tests/behavior/async_rename.rs:245,1
    - Dst: expect
      Src: /src/opendal/core/tests/behavior/async_rename.rs:245,1
    - Dst: delete
      Src: /src/opendal/core/tests/behavior/async_rename.rs:246,1
    - Dst: expect
      Src: /src/opendal/core/tests/behavior/async_rename.rs:246,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_rename.rs:247,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 60
    argCount: 1
    argNames:
    - op
    argTypes:
    - Operator
    constantsTouched: []
    func_position:
      end: 248
      start: 220
    functionDepth: 30
    functionLinenumber: 220
    functionLinenumberEnd: 248
    functionName: test_rename_with_if_not_exists
    functionSourceFile: /src/opendal/core/tests/behavior/async_rename.rs
    functionUses: 0
    functionsReached:
    - to_string
    - info
    - rename_with
    - FutureRename::if_not_exists
    - read
    - expect
    - delete
    - Ok
    - ServiceInfo::capability
    - uuid::Uuid::new_v4
    - to_bytes
    - gen_bytes
    - clone
    - expect_err
    - write
    - stat
    linkageType: ''
    returnType: Result
    signature: 'pub async fn test_rename_with_if_not_exists(op: Operator) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: uuid::Uuid::new_v4
      Src: /src/opendal/core/tests/behavior/async_rename.rs:252,1
    - Dst: to_string
      Src: /src/opendal/core/tests/behavior/async_rename.rs:252,1
    - Dst: gen_bytes
      Src: /src/opendal/core/tests/behavior/async_rename.rs:253,1
    - Dst: info
      Src: /src/opendal/core/tests/behavior/async_rename.rs:253,1
    - Dst: ServiceInfo::capability
      Src: /src/opendal/core/tests/behavior/async_rename.rs:253,1
    - Dst: write
      Src: /src/opendal/core/tests/behavior/async_rename.rs:255,1
    - Dst: clone
      Src: /src/opendal/core/tests/behavior/async_rename.rs:255,1
    - Dst: rename_with
      Src: /src/opendal/core/tests/behavior/async_rename.rs:264,1
    - Dst: FutureRename::if_not_exists
      Src: /src/opendal/core/tests/behavior/async_rename.rs:264,1
    - Dst: stat
      Src: /src/opendal/core/tests/behavior/async_rename.rs:268,1
    - Dst: expect_err
      Src: /src/opendal/core/tests/behavior/async_rename.rs:268,1
    - Dst: read
      Src: /src/opendal/core/tests/behavior/async_rename.rs:271,1
    - Dst: expect
      Src: /src/opendal/core/tests/behavior/async_rename.rs:271,1
    - Dst: to_bytes
      Src: /src/opendal/core/tests/behavior/async_rename.rs:271,1
    - Dst: delete
      Src: /src/opendal/core/tests/behavior/async_rename.rs:281,1
    - Dst: expect
      Src: /src/opendal/core/tests/behavior/async_rename.rs:281,1
    - Dst: delete
      Src: /src/opendal/core/tests/behavior/async_rename.rs:282,1
    - Dst: expect
      Src: /src/opendal/core/tests/behavior/async_rename.rs:282,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_rename.rs:283,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 57
    argCount: 1
    argNames:
    - op
    argTypes:
    - Operator
    constantsTouched: []
    func_position:
      end: 284
      start: 251
    functionDepth: 30
    functionLinenumber: 251
    functionLinenumberEnd: 284
    functionName: test_rename_with_if_not_exists_nested
    functionSourceFile: /src/opendal/core/tests/behavior/async_rename.rs
    functionUses: 0
    functionsReached:
    - to_string
    - info
    - rename_with
    - FutureRename::if_not_exists
    - read
    - expect
    - delete
    - Ok
    - ServiceInfo::capability
    - uuid::Uuid::new_v4
    - to_bytes
    - gen_bytes
    - clone
    - expect_err
    - write
    - stat
    linkageType: ''
    returnType: Result
    signature: 'pub async fn test_rename_with_if_not_exists_nested(op: Operator) ->
      Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: uuid::Uuid::new_v4
      Src: /src/opendal/core/tests/behavior/async_rename.rs:290,1
    - Dst: to_string
      Src: /src/opendal/core/tests/behavior/async_rename.rs:290,1
    - Dst: gen_bytes
      Src: /src/opendal/core/tests/behavior/async_rename.rs:291,1
    - Dst: info
      Src: /src/opendal/core/tests/behavior/async_rename.rs:291,1
    - Dst: ServiceInfo::capability
      Src: /src/opendal/core/tests/behavior/async_rename.rs:291,1
    - Dst: write
      Src: /src/opendal/core/tests/behavior/async_rename.rs:292,1
    - Dst: clone
      Src: /src/opendal/core/tests/behavior/async_rename.rs:292,1
    - Dst: uuid::Uuid::new_v4
      Src: /src/opendal/core/tests/behavior/async_rename.rs:294,1
    - Dst: to_string
      Src: /src/opendal/core/tests/behavior/async_rename.rs:294,1
    - Dst: gen_bytes
      Src: /src/opendal/core/tests/behavior/async_rename.rs:295,1
    - Dst: info
      Src: /src/opendal/core/tests/behavior/async_rename.rs:295,1
    - Dst: ServiceInfo::capability
      Src: /src/opendal/core/tests/behavior/async_rename.rs:295,1
    - Dst: write
      Src: /src/opendal/core/tests/behavior/async_rename.rs:297,1
    - Dst: clone
      Src: /src/opendal/core/tests/behavior/async_rename.rs:297,1
    - Dst: rename_with
      Src: /src/opendal/core/tests/behavior/async_rename.rs:299,1
    - Dst: FutureRename::if_not_exists
      Src: /src/opendal/core/tests/behavior/async_rename.rs:299,1
    - Dst: expect_err
      Src: /src/opendal/core/tests/behavior/async_rename.rs:299,1
    - Dst: read
      Src: /src/opendal/core/tests/behavior/async_rename.rs:306,1
    - Dst: expect
      Src: /src/opendal/core/tests/behavior/async_rename.rs:306,1
    - Dst: to_bytes
      Src: /src/opendal/core/tests/behavior/async_rename.rs:306,1
    - Dst: read
      Src: /src/opendal/core/tests/behavior/async_rename.rs:316,1
    - Dst: expect
      Src: /src/opendal/core/tests/behavior/async_rename.rs:316,1
    - Dst: to_bytes
      Src: /src/opendal/core/tests/behavior/async_rename.rs:316,1
    - Dst: delete
      Src: /src/opendal/core/tests/behavior/async_rename.rs:326,1
    - Dst: expect
      Src: /src/opendal/core/tests/behavior/async_rename.rs:326,1
    - Dst: delete
      Src: /src/opendal/core/tests/behavior/async_rename.rs:327,1
    - Dst: expect
      Src: /src/opendal/core/tests/behavior/async_rename.rs:327,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_rename.rs:328,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 77
    argCount: 1
    argNames:
    - op
    argTypes:
    - Operator
    constantsTouched: []
    func_position:
      end: 329
      start: 287
    functionDepth: 30
    functionLinenumber: 287
    functionLinenumberEnd: 329
    functionName: test_rename_with_if_not_exists_returns_condition_not_match
    functionSourceFile: /src/opendal/core/tests/behavior/async_rename.rs
    functionUses: 0
    functionsReached:
    - to_string
    - info
    - rename_with
    - FutureRename::if_not_exists
    - read
    - expect
    - delete
    - Ok
    - ServiceInfo::capability
    - uuid::Uuid::new_v4
    - to_bytes
    - gen_bytes
    - clone
    - expect_err
    - write
    linkageType: ''
    returnType: Result
    signature: 'pub async fn test_rename_with_if_not_exists_returns_condition_not_match(op:
      Operator,) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::info
      Src: /src/opendal/core/tests/behavior/async_list.rs:65,1
    - Dst: ServiceInfo::scheme
      Src: /src/opendal/core/tests/behavior/async_list.rs:65,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - _op
    argTypes:
    - '&Operator'
    constantsTouched: []
    func_position:
      end: 71
      start: 63
    functionDepth: 2
    functionLinenumber: 63
    functionLinenumberEnd: 71
    functionName: skip_cos_create_dir_list_check
    functionSourceFile: /src/opendal/core/tests/behavior/async_list.rs
    functionUses: 9
    functionsReached:
    - ServiceInfo::scheme
    - Result::info
    linkageType: ''
    returnType: bool
    signature: 'fn skip_cos_create_dir_list_check(_op: &Operator) -> bool'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: check
      Src: /src/opendal/core/tests/behavior/async_list.rs:75,1
    - Dst: expect
      Src: /src/opendal/core/tests/behavior/async_list.rs:75,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_list.rs:77,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - op
    argTypes:
    - Operator
    constantsTouched: []
    func_position:
      end: 78
      start: 74
    functionDepth: 3
    functionLinenumber: 74
    functionLinenumberEnd: 78
    functionName: test_check
    functionSourceFile: /src/opendal/core/tests/behavior/async_list.rs
    functionUses: 0
    functionsReached:
    - check
    - expect
    - Ok
    linkageType: ''
    returnType: Result
    signature: 'pub async fn test_check(op: Operator) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: uuid::Uuid::new_v4
      Src: /src/opendal/core/tests/behavior/async_list.rs:82,1
    - Dst: to_string
      Src: /src/opendal/core/tests/behavior/async_list.rs:82,1
    - Dst: gen_bytes
      Src: /src/opendal/core/tests/behavior/async_list.rs:85,1
    - Dst: info
      Src: /src/opendal/core/tests/behavior/async_list.rs:85,1
    - Dst: ServiceInfo::capability
      Src: /src/opendal/core/tests/behavior/async_list.rs:85,1
    - Dst: write
      Src: /src/opendal/core/tests/behavior/async_list.rs:87,1
    - Dst: expect
      Src: /src/opendal/core/tests/behavior/async_list.rs:87,1
    - Dst: lister
      Src: /src/opendal/core/tests/behavior/async_list.rs:89,1
    - Dst: Result::try_next
      Src: /src/opendal/core/tests/behavior/async_list.rs:91,1
    - Dst: std::fmt::Result::path
      Src: /src/opendal/core/tests/behavior/async_list.rs:92,1
    - Dst: std::fmt::Result::metadata
      Src: /src/opendal/core/tests/behavior/async_list.rs:93,1
    - Dst: delete
      Src: /src/opendal/core/tests/behavior/async_list.rs:102,1
    - Dst: expect
      Src: /src/opendal/core/tests/behavior/async_list.rs:102,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_list.rs:103,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 47
    argCount: 1
    argNames:
    - op
    argTypes:
    - Operator
    constantsTouched: []
    func_position:
      end: 104
      start: 81
    functionDepth: 30
    functionLinenumber: 81
    functionLinenumberEnd: 104
    functionName: test_list_dir
    functionSourceFile: /src/opendal/core/tests/behavior/async_list.rs
    functionUses: 0
    functionsReached:
    - to_string
    - info
    - Result::try_next
    - expect
    - Ok
    - delete
    - ServiceInfo::capability
    - uuid::Uuid::new_v4
    - gen_bytes
    - std::fmt::Result::metadata
    - lister
    - write
    - std::fmt::Result::path
    linkageType: ''
    returnType: Result
    signature: 'pub async fn test_list_dir(op: Operator) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: uuid::Uuid::new_v4
      Src: /src/opendal/core/tests/behavior/async_list.rs:108,1
    - Dst: to_string
      Src: /src/opendal/core/tests/behavior/async_list.rs:108,1
    - Dst: gen_bytes
      Src: /src/opendal/core/tests/behavior/async_list.rs:110,1
    - Dst: info
      Src: /src/opendal/core/tests/behavior/async_list.rs:110,1
    - Dst: ServiceInfo::capability
      Src: /src/opendal/core/tests/behavior/async_list.rs:110,1
    - Dst: write
      Src: /src/opendal/core/tests/behavior/async_list.rs:112,1
    - Dst: expect
      Src: /src/opendal/core/tests/behavior/async_list.rs:112,1
    - Dst: list
      Src: /src/opendal/core/tests/behavior/async_list.rs:114,1
    - Dst: delete
      Src: /src/opendal/core/tests/behavior/async_list.rs:119,1
    - Dst: expect
      Src: /src/opendal/core/tests/behavior/async_list.rs:119,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_list.rs:120,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 33
    argCount: 1
    argNames:
    - op
    argTypes:
    - Operator
    constantsTouched: []
    func_position:
      end: 121
      start: 107
    functionDepth: 30
    functionLinenumber: 107
    functionLinenumberEnd: 121
    functionName: test_list_prefix
    functionSourceFile: /src/opendal/core/tests/behavior/async_list.rs
    functionUses: 0
    functionsReached:
    - to_string
    - info
    - expect
    - Ok
    - delete
    - ServiceInfo::capability
    - uuid::Uuid::new_v4
    - gen_bytes
    - list
    - write
    linkageType: ''
    returnType: Result
    signature: 'pub async fn test_list_prefix(op: Operator) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: info
      Src: /src/opendal/core/tests/behavior/async_list.rs:125,1
    - Dst: ServiceInfo::capability
      Src: /src/opendal/core/tests/behavior/async_list.rs:125,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_list.rs:126,1
    - Dst: skip_cos_create_dir_list_check
      Src: /src/opendal/core/tests/behavior/async_list.rs:128,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_list.rs:129,1
    - Dst: info
      Src: /src/opendal/core/tests/behavior/async_list.rs:134,1
    - Dst: ServiceInfo::scheme
      Src: /src/opendal/core/tests/behavior/async_list.rs:134,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_list.rs:135,1
    - Dst: create_dir
      Src: /src/opendal/core/tests/behavior/async_list.rs:139,1
    - Dst: map
      Src: /src/opendal/core/tests/behavior/async_list.rs:141,1
    - Dst: collect
      Src: /src/opendal/core/tests/behavior/async_list.rs:141,1
    - Dst: iter
      Src: /src/opendal/core/tests/behavior/async_list.rs:142,1
    - Dst: write
      Src: /src/opendal/core/tests/behavior/async_list.rs:143,1
    - Dst: push
      Src: /src/opendal/core/tests/behavior/async_list.rs:145,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/tests/behavior/async_list.rs:145,1
    - Dst: lister_with
      Src: /src/opendal/core/tests/behavior/async_list.rs:147,1
    - Dst: FutureLister::limit
      Src: /src/opendal/core/tests/behavior/async_list.rs:147,1
    - Dst: Result::try_next
      Src: /src/opendal/core/tests/behavior/async_list.rs:149,1
    - Dst: anyhow::Result::path
      Src: /src/opendal/core/tests/behavior/async_list.rs:150,1
    - Dst: to_string
      Src: /src/opendal/core/tests/behavior/async_list.rs:150,1
    - Dst: push
      Src: /src/opendal/core/tests/behavior/async_list.rs:151,1
    - Dst: sort_unstable
      Src: /src/opendal/core/tests/behavior/async_list.rs:153,1
    - Dst: sort_unstable
      Src: /src/opendal/core/tests/behavior/async_list.rs:154,1
    - Dst: delete_with
      Src: /src/opendal/core/tests/behavior/async_list.rs:158,1
    - Dst: FutureDelete::recursive
      Src: /src/opendal/core/tests/behavior/async_list.rs:158,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_list.rs:159,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 91
    argCount: 1
    argNames:
    - op
    argTypes:
    - Operator
    constantsTouched: []
    func_position:
      end: 160
      start: 124
    functionDepth: 35
    functionLinenumber: 124
    functionLinenumberEnd: 160
    functionName: test_list_rich_dir
    functionSourceFile: /src/opendal/core/tests/behavior/async_list.rs
    functionUses: 0
    functionsReached:
    - skip_cos_create_dir_list_check
    - collect
    - push
    - map
    - write
    - sort_unstable
    - lister_with
    - info
    - iter
    - Result::try_next
    - Ok
    - ServiceInfo::capability
    - anyhow::Result::path
    - delete_with
    - '&str::to_string'
    - FutureLister::limit
    - create_dir
    - ServiceInfo::scheme
    - to_string
    - FutureDelete::recursive
    linkageType: ''
    returnType: Result
    signature: 'pub async fn test_list_rich_dir(op: Operator) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: info
      Src: /src/opendal/core/tests/behavior/async_list.rs:164,1
    - Dst: ServiceInfo::capability
      Src: /src/opendal/core/tests/behavior/async_list.rs:164,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_list.rs:165,1
    - Dst: skip_cos_create_dir_list_check
      Src: /src/opendal/core/tests/behavior/async_list.rs:167,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_list.rs:168,1
    - Dst: create_dir
      Src: /src/opendal/core/tests/behavior/async_list.rs:172,1
    - Dst: expect
      Src: /src/opendal/core/tests/behavior/async_list.rs:172,1
    - Dst: lister
      Src: /src/opendal/core/tests/behavior/async_list.rs:175,1
    - Dst: HashMap::new
      Src: /src/opendal/core/tests/behavior/async_list.rs:176,1
    - Dst: Result::try_next
      Src: /src/opendal/core/tests/behavior/async_list.rs:177,1
    - Dst: Result::insert
      Src: /src/opendal/core/tests/behavior/async_list.rs:178,1
    - Dst: std::fmt::Result::path
      Src: /src/opendal/core/tests/behavior/async_list.rs:178,1
    - Dst: to_string
      Src: /src/opendal/core/tests/behavior/async_list.rs:178,1
    - Dst: lister
      Src: /src/opendal/core/tests/behavior/async_list.rs:192,1
    - Dst: Result::trim_end_matches
      Src: /src/opendal/core/tests/behavior/async_list.rs:192,1
    - Dst: HashMap::new
      Src: /src/opendal/core/tests/behavior/async_list.rs:193,1
    - Dst: Result::try_next
      Src: /src/opendal/core/tests/behavior/async_list.rs:194,1
    - Dst: Result::insert
      Src: /src/opendal/core/tests/behavior/async_list.rs:195,1
    - Dst: std::fmt::Result::path
      Src: /src/opendal/core/tests/behavior/async_list.rs:195,1
    - Dst: to_string
      Src: /src/opendal/core/tests/behavior/async_list.rs:195,1
    - Dst: lister_with
      Src: /src/opendal/core/tests/behavior/async_list.rs:209,1
    - Dst: FutureLister::recursive
      Src: /src/opendal/core/tests/behavior/async_list.rs:209,1
    - Dst: HashMap::new
      Src: /src/opendal/core/tests/behavior/async_list.rs:210,1
    - Dst: Result::try_next
      Src: /src/opendal/core/tests/behavior/async_list.rs:211,1
    - Dst: Result::insert
      Src: /src/opendal/core/tests/behavior/async_list.rs:212,1
    - Dst: std::fmt::Result::path
      Src: /src/opendal/core/tests/behavior/async_list.rs:212,1
    - Dst: to_string
      Src: /src/opendal/core/tests/behavior/async_list.rs:212,1
    - Dst: lister_with
      Src: /src/opendal/core/tests/behavior/async_list.rs:226,1
    - Dst: Result::trim_end_matches
      Src: /src/opendal/core/tests/behavior/async_list.rs:227,1
    - Dst: FutureLister::recursive
      Src: /src/opendal/core/tests/behavior/async_list.rs:226,1
    - Dst: HashMap::new
      Src: /src/opendal/core/tests/behavior/async_list.rs:230,1
    - Dst: Result::try_next
      Src: /src/opendal/core/tests/behavior/async_list.rs:231,1
    - Dst: Result::insert
      Src: /src/opendal/core/tests/behavior/async_list.rs:232,1
    - Dst: std::fmt::Result::path
      Src: /src/opendal/core/tests/behavior/async_list.rs:232,1
    - Dst: to_string
      Src: /src/opendal/core/tests/behavior/async_list.rs:232,1
    - Dst: delete
      Src: /src/opendal/core/tests/behavior/async_list.rs:241,1
    - Dst: expect
      Src: /src/opendal/core/tests/behavior/async_list.rs:241,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_list.rs:242,1
    CyclomaticComplexity: 24
    EdgeCount: 24
    ICount: 126
    argCount: 1
    argNames:
    - op
    argTypes:
    - Operator
    constantsTouched: []
    func_position:
      end: 243
      start: 163
    functionDepth: 35
    functionLinenumber: 163
    functionLinenumberEnd: 243
    functionName: test_list_empty_dir
    functionSourceFile: /src/opendal/core/tests/behavior/async_list.rs
    functionUses: 0
    functionsReached:
    - skip_cos_create_dir_list_check
    - info
    - Result::try_next
    - to_string
    - expect
    - Ok
    - Result::trim_end_matches
    - lister_with
    - std::fmt::Result::path
    - ServiceInfo::capability
    - FutureLister::recursive
    - delete
    - Result::insert
    - lister
    - create_dir
    - HashMap::new
    linkageType: ''
    returnType: Result
    signature: 'pub async fn test_list_empty_dir(op: Operator) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: lister
      Src: /src/opendal/core/tests/behavior/async_list.rs:249,1
    - Dst: HashMap::new
      Src: /src/opendal/core/tests/behavior/async_list.rs:250,1
    - Dst: Result::try_next
      Src: /src/opendal/core/tests/behavior/async_list.rs:251,1
    - Dst: Result::insert
      Src: /src/opendal/core/tests/behavior/async_list.rs:252,1
    - Dst: std::fmt::Result::path
      Src: /src/opendal/core/tests/behavior/async_list.rs:252,1
    - Dst: to_string
      Src: /src/opendal/core/tests/behavior/async_list.rs:252,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_list.rs:257,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 23
    argCount: 1
    argNames:
    - op
    argTypes:
    - Operator
    constantsTouched: []
    func_position:
      end: 258
      start: 246
    functionDepth: 36
    functionLinenumber: 246
    functionLinenumberEnd: 258
    functionName: test_list_non_exist_dir
    functionSourceFile: /src/opendal/core/tests/behavior/async_list.rs
    functionUses: 0
    functionsReached:
    - Result::try_next
    - to_string
    - Ok
    - Result::insert
    - HashMap::new
    - lister
    - std::fmt::Result::path
    linkageType: ''
    returnType: Result
    signature: 'pub async fn test_list_non_exist_dir(op: Operator) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: info
      Src: /src/opendal/core/tests/behavior/async_list.rs:262,1
    - Dst: ServiceInfo::capability
      Src: /src/opendal/core/tests/behavior/async_list.rs:262,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_list.rs:263,1
    - Dst: skip_cos_create_dir_list_check
      Src: /src/opendal/core/tests/behavior/async_list.rs:265,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_list.rs:266,1
    - Dst: create_dir
      Src: /src/opendal/core/tests/behavior/async_list.rs:270,1
    - Dst: expect
      Src: /src/opendal/core/tests/behavior/async_list.rs:270,1
    - Dst: lister
      Src: /src/opendal/core/tests/behavior/async_list.rs:272,1
    - Dst: Result::try_next
      Src: /src/opendal/core/tests/behavior/async_list.rs:275,1
    - Dst: std::fmt::Result::path
      Src: /src/opendal/core/tests/behavior/async_list.rs:276,1
    - Dst: stat
      Src: /src/opendal/core/tests/behavior/async_list.rs:277,1
    - Dst: push
      Src: /src/opendal/core/tests/behavior/async_list.rs:283,1
    - Dst: delete
      Src: /src/opendal/core/tests/behavior/async_list.rs:290,1
    - Dst: expect
      Src: /src/opendal/core/tests/behavior/async_list.rs:290,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_list.rs:291,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 62
    argCount: 1
    argNames:
    - op
    argTypes:
    - Operator
    constantsTouched: []
    func_position:
      end: 292
      start: 261
    functionDepth: 35
    functionLinenumber: 261
    functionLinenumberEnd: 292
    functionName: test_list_sub_dir
    functionSourceFile: /src/opendal/core/tests/behavior/async_list.rs
    functionUses: 0
    functionsReached:
    - skip_cos_create_dir_list_check
    - info
    - Result::try_next
    - expect
    - Ok
    - push
    - delete
    - ServiceInfo::capability
    - lister
    - create_dir
    - stat
    - std::fmt::Result::path
    linkageType: ''
    returnType: Result
    signature: 'pub async fn test_list_sub_dir(op: Operator) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: info
      Src: /src/opendal/core/tests/behavior/async_list.rs:296,1
    - Dst: ServiceInfo::capability
      Src: /src/opendal/core/tests/behavior/async_list.rs:296,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_list.rs:297,1
    - Dst: skip_cos_create_dir_list_check
      Src: /src/opendal/core/tests/behavior/async_list.rs:299,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_list.rs:300,1
    - Dst: create_dir
      Src: /src/opendal/core/tests/behavior/async_list.rs:303,1
    - Dst: expect
      Src: /src/opendal/core/tests/behavior/async_list.rs:303,1
    - Dst: create_dir
      Src: /src/opendal/core/tests/behavior/async_list.rs:308,1
    - Dst: expect
      Src: /src/opendal/core/tests/behavior/async_list.rs:308,1
    - Dst: uuid::Uuid::new_v4
      Src: /src/opendal/core/tests/behavior/async_list.rs:310,1
    - Dst: to_string
      Src: /src/opendal/core/tests/behavior/async_list.rs:310,1
    - Dst: write
      Src: /src/opendal/core/tests/behavior/async_list.rs:312,1
    - Dst: expect
      Src: /src/opendal/core/tests/behavior/async_list.rs:312,1
    - Dst: create_dir
      Src: /src/opendal/core/tests/behavior/async_list.rs:318,1
    - Dst: expect
      Src: /src/opendal/core/tests/behavior/async_list.rs:318,1
    - Dst: list
      Src: /src/opendal/core/tests/behavior/async_list.rs:320,1
    - Dst: Result::iter
      Src: /src/opendal/core/tests/behavior/async_list.rs:322,1
    - Dst: map
      Src: /src/opendal/core/tests/behavior/async_list.rs:322,1
    - Dst: Result::path
      Src: /src/opendal/core/tests/behavior/async_list.rs:322,1
    - Dst: Result::collect
      Src: /src/opendal/core/tests/behavior/async_list.rs:322,1
    - Dst: lister
      Src: /src/opendal/core/tests/behavior/async_list.rs:340,1
    - Dst: HashMap::new
      Src: /src/opendal/core/tests/behavior/async_list.rs:341,1
    - Dst: Result::try_next
      Src: /src/opendal/core/tests/behavior/async_list.rs:343,1
    - Dst: Result::insert
      Src: /src/opendal/core/tests/behavior/async_list.rs:344,1
    - Dst: std::fmt::Result::path
      Src: /src/opendal/core/tests/behavior/async_list.rs:344,1
    - Dst: to_string
      Src: /src/opendal/core/tests/behavior/async_list.rs:344,1
    - Dst: stat
      Src: /src/opendal/core/tests/behavior/async_list.rs:351,1
    - Dst: Result::get
      Src: /src/opendal/core/tests/behavior/async_list.rs:353,1
    - Dst: Option::expect
      Src: /src/opendal/core/tests/behavior/async_list.rs:353,1
    - Dst: path
      Src: /src/opendal/core/tests/behavior/async_list.rs:353,1
    - Dst: stat
      Src: /src/opendal/core/tests/behavior/async_list.rs:363,1
    - Dst: Result::get
      Src: /src/opendal/core/tests/behavior/async_list.rs:365,1
    - Dst: Option::expect
      Src: /src/opendal/core/tests/behavior/async_list.rs:365,1
    - Dst: path
      Src: /src/opendal/core/tests/behavior/async_list.rs:365,1
    - Dst: delete
      Src: /src/opendal/core/tests/behavior/async_list.rs:373,1
    - Dst: expect
      Src: /src/opendal/core/tests/behavior/async_list.rs:373,1
    - Dst: delete
      Src: /src/opendal/core/tests/behavior/async_list.rs:374,1
    - Dst: expect
      Src: /src/opendal/core/tests/behavior/async_list.rs:374,1
    - Dst: delete
      Src: /src/opendal/core/tests/behavior/async_list.rs:375,1
    - Dst: expect
      Src: /src/opendal/core/tests/behavior/async_list.rs:375,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_list.rs:376,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 138
    argCount: 1
    argNames:
    - op
    argTypes:
    - Operator
    constantsTouched: []
    func_position:
      end: 377
      start: 295
    functionDepth: 35
    functionLinenumber: 295
    functionLinenumberEnd: 377
    functionName: test_list_nested_dir
    functionSourceFile: /src/opendal/core/tests/behavior/async_list.rs
    functionUses: 0
    functionsReached:
    - skip_cos_create_dir_list_check
    - map
    - write
    - Result::try_next
    - info
    - Option::expect
    - expect
    - Ok
    - delete
    - ServiceInfo::capability
    - uuid::Uuid::new_v4
    - Result::iter
    - stat
    - Result::get
    - Result::insert
    - lister
    - create_dir
    - Result::path
    - to_string
    - list
    - HashMap::new
    - Result::collect
    - path
    - std::fmt::Result::path
    linkageType: ''
    returnType: Result
    signature: 'pub async fn test_list_nested_dir(op: Operator) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: uuid::Uuid::new_v4
      Src: /src/opendal/core/tests/behavior/async_list.rs:381,1
    - Dst: to_string
      Src: /src/opendal/core/tests/behavior/async_list.rs:381,1
    - Dst: gen_bytes
      Src: /src/opendal/core/tests/behavior/async_list.rs:384,1
    - Dst: info
      Src: /src/opendal/core/tests/behavior/async_list.rs:384,1
    - Dst: ServiceInfo::capability
      Src: /src/opendal/core/tests/behavior/async_list.rs:384,1
    - Dst: write
      Src: /src/opendal/core/tests/behavior/async_list.rs:385,1
    - Dst: list
      Src: /src/opendal/core/tests/behavior/async_list.rs:387,1
    - Dst: delete
      Src: /src/opendal/core/tests/behavior/async_list.rs:392,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_list.rs:394,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 30
    argCount: 1
    argNames:
    - op
    argTypes:
    - Operator
    constantsTouched: []
    func_position:
      end: 395
      start: 380
    functionDepth: 30
    functionLinenumber: 380
    functionLinenumberEnd: 395
    functionName: test_list_dir_with_file_path
    functionSourceFile: /src/opendal/core/tests/behavior/async_list.rs
    functionUses: 0
    functionsReached:
    - to_string
    - info
    - Ok
    - delete
    - ServiceInfo::capability
    - uuid::Uuid::new_v4
    - gen_bytes
    - list
    - write
    linkageType: ''
    returnType: Result
    signature: 'pub async fn test_list_dir_with_file_path(op: Operator) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: info
      Src: /src/opendal/core/tests/behavior/async_list.rs:399,1
    - Dst: ServiceInfo::capability
      Src: /src/opendal/core/tests/behavior/async_list.rs:399,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_list.rs:400,1
    - Dst: create_dir
      Src: /src/opendal/core/tests/behavior/async_list.rs:404,1
    - Dst: iter
      Src: /src/opendal/core/tests/behavior/async_list.rs:406,1
    - Dst: map
      Src: /src/opendal/core/tests/behavior/async_list.rs:406,1
    - Dst: collect
      Src: /src/opendal/core/tests/behavior/async_list.rs:406,1
    - Dst: iter
      Src: /src/opendal/core/tests/behavior/async_list.rs:411,1
    - Dst: map
      Src: /src/opendal/core/tests/behavior/async_list.rs:411,1
    - Dst: write
      Src: /src/opendal/core/tests/behavior/async_list.rs:414,1
    - Dst: expect
      Src: /src/opendal/core/tests/behavior/async_list.rs:414,1
    - Dst: "iter()\n        .map(|name| async {\n            op.write(name, \"content\"\
        )\n                .await\n                .expect(\"create must succeed\"\
        );\n        })\n        .collect::<FuturesUnordered<_>>"
      Src: /src/opendal/core/tests/behavior/async_list.rs:411,1
    - Dst: "iter()\n        .map(|name| async {\n            op.write(name, \"content\"\
        )\n                .await\n                .expect(\"create must succeed\"\
        );\n        })\n        .collect::<FuturesUnordered<_>>()\n        .collect::<Vec<_>>"
      Src: /src/opendal/core/tests/behavior/async_list.rs:411,1
    - Dst: lister_with
      Src: /src/opendal/core/tests/behavior/async_list.rs:422,1
    - Dst: FutureLister::start_after
      Src: /src/opendal/core/tests/behavior/async_list.rs:422,1
    - Dst: Result::try_next
      Src: /src/opendal/core/tests/behavior/async_list.rs:424,1
    - Dst: anyhow::Result::path
      Src: /src/opendal/core/tests/behavior/async_list.rs:425,1
    - Dst: anyhow::Result::path
      Src: /src/opendal/core/tests/behavior/async_list.rs:426,1
    - Dst: to_string
      Src: /src/opendal/core/tests/behavior/async_list.rs:426,1
    - Dst: push
      Src: /src/opendal/core/tests/behavior/async_list.rs:427,1
    - Dst: into_iter
      Src: /src/opendal/core/tests/behavior/async_list.rs:431,1
    - Dst: skip
      Src: /src/opendal/core/tests/behavior/async_list.rs:431,1
    - Dst: collect
      Src: /src/opendal/core/tests/behavior/async_list.rs:431,1
    - Dst: delete_with
      Src: /src/opendal/core/tests/behavior/async_list.rs:435,1
    - Dst: FutureDelete::recursive
      Src: /src/opendal/core/tests/behavior/async_list.rs:435,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_list.rs:437,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 84
    argCount: 1
    argNames:
    - op
    argTypes:
    - Operator
    constantsTouched: []
    func_position:
      end: 438
      start: 398
    functionDepth: 35
    functionLinenumber: 398
    functionLinenumberEnd: 438
    functionName: test_list_with_start_after
    functionSourceFile: /src/opendal/core/tests/behavior/async_list.rs
    functionUses: 0
    functionsReached:
    - collect
    - push
    - map
    - skip
    - write
    - lister_with
    - iter
    - info
    - Result::try_next
    - expect
    - Ok
    - ServiceInfo::capability
    - FutureLister::start_after
    - anyhow::Result::path
    - delete_with
    - "iter()\n        .map(|name| async {\n            op.write(name, \"content\"\
      )\n                .await\n                .expect(\"create must succeed\");\n\
      \        })\n        .collect::<FuturesUnordered<_>>"
    - create_dir
    - to_string
    - "iter()\n        .map(|name| async {\n            op.write(name, \"content\"\
      )\n                .await\n                .expect(\"create must succeed\");\n\
      \        })\n        .collect::<FuturesUnordered<_>>()\n        .collect::<Vec<_>>"
    - into_iter
    - FutureDelete::recursive
    linkageType: ''
    returnType: Result
    signature: 'pub async fn test_list_with_start_after(op: Operator) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: lister_with
      Src: /src/opendal/core/tests/behavior/async_list.rs:443,1
    - Dst: FutureLister::recursive
      Src: /src/opendal/core/tests/behavior/async_list.rs:443,1
    - Dst: HashMap::new
      Src: /src/opendal/core/tests/behavior/async_list.rs:444,1
    - Dst: Result::try_next
      Src: /src/opendal/core/tests/behavior/async_list.rs:445,1
    - Dst: Result::insert
      Src: /src/opendal/core/tests/behavior/async_list.rs:446,1
    - Dst: std::fmt::Result::path
      Src: /src/opendal/core/tests/behavior/async_list.rs:446,1
    - Dst: to_string
      Src: /src/opendal/core/tests/behavior/async_list.rs:446,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_list.rs:451,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 25
    argCount: 1
    argNames:
    - op
    argTypes:
    - Operator
    constantsTouched: []
    func_position:
      end: 452
      start: 440
    functionDepth: 35
    functionLinenumber: 440
    functionLinenumberEnd: 452
    functionName: test_list_non_exist_dir_with_recursive
    functionSourceFile: /src/opendal/core/tests/behavior/async_list.rs
    functionUses: 0
    functionsReached:
    - lister_with
    - Result::try_next
    - to_string
    - Ok
    - FutureLister::recursive
    - std::fmt::Result::path
    - Result::insert
    - HashMap::new
    linkageType: ''
    returnType: Result
    signature: 'pub async fn test_list_non_exist_dir_with_recursive(op: Operator)
      -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: info
      Src: /src/opendal/core/tests/behavior/async_list.rs:455,1
    - Dst: ServiceInfo::capability
      Src: /src/opendal/core/tests/behavior/async_list.rs:455,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_list.rs:456,1
    - Dst: skip_cos_create_dir_list_check
      Src: /src/opendal/core/tests/behavior/async_list.rs:458,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_list.rs:459,1
    - Dst: create_dir
      Src: /src/opendal/core/tests/behavior/async_list.rs:462,1
    - Dst: lister_with
      Src: /src/opendal/core/tests/behavior/async_list.rs:464,1
    - Dst: FutureLister::recursive
      Src: /src/opendal/core/tests/behavior/async_list.rs:464,1
    - Dst: try_collect::<Vec<_>>
      Src: /src/opendal/core/tests/behavior/async_list.rs:465,1
    - Dst: into_iter
      Src: /src/opendal/core/tests/behavior/async_list.rs:465,1
    - Dst: map
      Src: /src/opendal/core/tests/behavior/async_list.rs:465,1
    - Dst: Result::path
      Src: /src/opendal/core/tests/behavior/async_list.rs:469,1
    - Dst: to_string
      Src: /src/opendal/core/tests/behavior/async_list.rs:469,1
    - Dst: "try_collect::<Vec<_>>()\n        .await?\n        .into_iter()\n     \
        \   .map(|v| v.path().to_string())\n        .collect::<HashSet<_>>"
      Src: /src/opendal/core/tests/behavior/async_list.rs:465,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_list.rs:474,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 50
    argCount: 1
    argNames:
    - op
    argTypes:
    - Operator
    constantsTouched: []
    func_position:
      end: 475
      start: 454
    functionDepth: 35
    functionLinenumber: 454
    functionLinenumberEnd: 475
    functionName: test_list_root_with_recursive
    functionSourceFile: /src/opendal/core/tests/behavior/async_list.rs
    functionUses: 0
    functionsReached:
    - skip_cos_create_dir_list_check
    - info
    - lister_with
    - to_string
    - Ok
    - FutureLister::recursive
    - "try_collect::<Vec<_>>()\n        .await?\n        .into_iter()\n        .map(|v|\
      \ v.path().to_string())\n        .collect::<HashSet<_>>"
    - ServiceInfo::capability
    - into_iter
    - map
    - create_dir
    - try_collect::<Vec<_>>
    - Result::path
    linkageType: ''
    returnType: Result
    signature: 'pub async fn test_list_root_with_recursive(op: Operator) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: info
      Src: /src/opendal/core/tests/behavior/async_list.rs:479,1
    - Dst: ServiceInfo::capability
      Src: /src/opendal/core/tests/behavior/async_list.rs:479,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_list.rs:480,1
    - Dst: skip_cos_create_dir_list_check
      Src: /src/opendal/core/tests/behavior/async_list.rs:482,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_list.rs:483,1
    - Dst: uuid::Uuid::new_v4
      Src: /src/opendal/core/tests/behavior/async_list.rs:485,1
    - Dst: to_string
      Src: /src/opendal/core/tests/behavior/async_list.rs:485,1
    - Dst: Result::iter
      Src: /src/opendal/core/tests/behavior/async_list.rs:490,1
    - Dst: ends_with
      Src: /src/opendal/core/tests/behavior/async_list.rs:491,1
    - Dst: create_dir
      Src: /src/opendal/core/tests/behavior/async_list.rs:492,1
    - Dst: write
      Src: /src/opendal/core/tests/behavior/async_list.rs:494,1
    - Dst: lister_with
      Src: /src/opendal/core/tests/behavior/async_list.rs:497,1
    - Dst: FutureLister::recursive
      Src: /src/opendal/core/tests/behavior/async_list.rs:497,1
    - Dst: try_collect::<Vec<_>>
      Src: /src/opendal/core/tests/behavior/async_list.rs:501,1
    - Dst: into_iter
      Src: /src/opendal/core/tests/behavior/async_list.rs:501,1
    - Dst: map
      Src: /src/opendal/core/tests/behavior/async_list.rs:501,1
    - Dst: Result::path
      Src: /src/opendal/core/tests/behavior/async_list.rs:506,1
    - Dst: strip_prefix
      Src: /src/opendal/core/tests/behavior/async_list.rs:506,1
    - Dst: unwrap
      Src: /src/opendal/core/tests/behavior/async_list.rs:506,1
    - Dst: to_string
      Src: /src/opendal/core/tests/behavior/async_list.rs:506,1
    - Dst: "try_collect::<Vec<_>>()\n        .await?\n        .into_iter()\n     \
        \   .map(|v| {\n            v.path()\n                .strip_prefix(&format!(\"\
        {parent}/\"))\n                .unwrap()\n                .to_string()\n \
        \       })\n        .collect::<Vec<_>>"
      Src: /src/opendal/core/tests/behavior/async_list.rs:501,1
    - Dst: sort
      Src: /src/opendal/core/tests/behavior/async_list.rs:512,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_list.rs:518,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 77
    argCount: 1
    argNames:
    - op
    argTypes:
    - Operator
    constantsTouched: []
    func_position:
      end: 519
      start: 478
    functionDepth: 35
    functionLinenumber: 478
    functionLinenumberEnd: 519
    functionName: test_list_dir_with_recursive
    functionSourceFile: /src/opendal/core/tests/behavior/async_list.rs
    functionUses: 0
    functionsReached:
    - skip_cos_create_dir_list_check
    - ends_with
    - map
    - "try_collect::<Vec<_>>()\n        .await?\n        .into_iter()\n        .map(|v|\
      \ {\n            v.path()\n                .strip_prefix(&format!(\"{parent}/\"\
      ))\n                .unwrap()\n                .to_string()\n        })\n  \
      \      .collect::<Vec<_>>"
    - write
    - lister_with
    - info
    - Ok
    - FutureLister::recursive
    - ServiceInfo::capability
    - uuid::Uuid::new_v4
    - unwrap
    - sort
    - Result::iter
    - try_collect::<Vec<_>>
    - strip_prefix
    - create_dir
    - Result::path
    - to_string
    - into_iter
    linkageType: ''
    returnType: Result
    signature: 'pub async fn test_list_dir_with_recursive(op: Operator) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: info
      Src: /src/opendal/core/tests/behavior/async_list.rs:523,1
    - Dst: ServiceInfo::capability
      Src: /src/opendal/core/tests/behavior/async_list.rs:523,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_list.rs:524,1
    - Dst: skip_cos_create_dir_list_check
      Src: /src/opendal/core/tests/behavior/async_list.rs:526,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_list.rs:527,1
    - Dst: uuid::Uuid::new_v4
      Src: /src/opendal/core/tests/behavior/async_list.rs:529,1
    - Dst: to_string
      Src: /src/opendal/core/tests/behavior/async_list.rs:529,1
    - Dst: Result::iter
      Src: /src/opendal/core/tests/behavior/async_list.rs:534,1
    - Dst: ends_with
      Src: /src/opendal/core/tests/behavior/async_list.rs:535,1
    - Dst: create_dir
      Src: /src/opendal/core/tests/behavior/async_list.rs:536,1
    - Dst: write
      Src: /src/opendal/core/tests/behavior/async_list.rs:538,1
    - Dst: lister_with
      Src: /src/opendal/core/tests/behavior/async_list.rs:541,1
    - Dst: FutureLister::recursive
      Src: /src/opendal/core/tests/behavior/async_list.rs:541,1
    - Dst: try_collect::<Vec<_>>
      Src: /src/opendal/core/tests/behavior/async_list.rs:545,1
    - Dst: into_iter
      Src: /src/opendal/core/tests/behavior/async_list.rs:545,1
    - Dst: map
      Src: /src/opendal/core/tests/behavior/async_list.rs:545,1
    - Dst: Result::path
      Src: /src/opendal/core/tests/behavior/async_list.rs:550,1
    - Dst: strip_prefix
      Src: /src/opendal/core/tests/behavior/async_list.rs:550,1
    - Dst: unwrap
      Src: /src/opendal/core/tests/behavior/async_list.rs:550,1
    - Dst: to_string
      Src: /src/opendal/core/tests/behavior/async_list.rs:550,1
    - Dst: "try_collect::<Vec<_>>()\n        .await?\n        .into_iter()\n     \
        \   .map(|v| {\n            v.path()\n                .strip_prefix(&format!(\"\
        {parent}/\"))\n                .unwrap()\n                .to_string()\n \
        \       })\n        .collect::<Vec<_>>"
      Src: /src/opendal/core/tests/behavior/async_list.rs:545,1
    - Dst: sort
      Src: /src/opendal/core/tests/behavior/async_list.rs:556,1
    - Dst: Result::to_vec
      Src: /src/opendal/core/tests/behavior/async_list.rs:558,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_list.rs:560,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 79
    argCount: 1
    argNames:
    - op
    argTypes:
    - Operator
    constantsTouched: []
    func_position:
      end: 561
      start: 522
    functionDepth: 35
    functionLinenumber: 522
    functionLinenumberEnd: 561
    functionName: test_list_dir_with_recursive_no_trailing_slash
    functionSourceFile: /src/opendal/core/tests/behavior/async_list.rs
    functionUses: 0
    functionsReached:
    - skip_cos_create_dir_list_check
    - ends_with
    - map
    - "try_collect::<Vec<_>>()\n        .await?\n        .into_iter()\n        .map(|v|\
      \ {\n            v.path()\n                .strip_prefix(&format!(\"{parent}/\"\
      ))\n                .unwrap()\n                .to_string()\n        })\n  \
      \      .collect::<Vec<_>>"
    - write
    - lister_with
    - info
    - Ok
    - FutureLister::recursive
    - ServiceInfo::capability
    - uuid::Uuid::new_v4
    - unwrap
    - Result::to_vec
    - sort
    - Result::iter
    - try_collect::<Vec<_>>
    - strip_prefix
    - create_dir
    - Result::path
    - to_string
    - into_iter
    linkageType: ''
    returnType: Result
    signature: 'pub async fn test_list_dir_with_recursive_no_trailing_slash(op: Operator)
      -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: uuid::Uuid::new_v4
      Src: /src/opendal/core/tests/behavior/async_list.rs:564,1
    - Dst: to_string
      Src: /src/opendal/core/tests/behavior/async_list.rs:564,1
    - Dst: Result::iter
      Src: /src/opendal/core/tests/behavior/async_list.rs:567,1
    - Dst: ends_with
      Src: /src/opendal/core/tests/behavior/async_list.rs:568,1
    - Dst: create_dir
      Src: /src/opendal/core/tests/behavior/async_list.rs:569,1
    - Dst: write
      Src: /src/opendal/core/tests/behavior/async_list.rs:571,1
    - Dst: lister_with
      Src: /src/opendal/core/tests/behavior/async_list.rs:574,1
    - Dst: FutureLister::recursive
      Src: /src/opendal/core/tests/behavior/async_list.rs:574,1
    - Dst: try_collect::<Vec<_>>
      Src: /src/opendal/core/tests/behavior/async_list.rs:578,1
    - Dst: into_iter
      Src: /src/opendal/core/tests/behavior/async_list.rs:578,1
    - Dst: map
      Src: /src/opendal/core/tests/behavior/async_list.rs:578,1
    - Dst: Result::path
      Src: /src/opendal/core/tests/behavior/async_list.rs:583,1
    - Dst: strip_prefix
      Src: /src/opendal/core/tests/behavior/async_list.rs:583,1
    - Dst: unwrap
      Src: /src/opendal/core/tests/behavior/async_list.rs:583,1
    - Dst: to_string
      Src: /src/opendal/core/tests/behavior/async_list.rs:583,1
    - Dst: "try_collect::<Vec<_>>()\n        .await?\n        .into_iter()\n     \
        \   .map(|v| {\n            v.path()\n                .strip_prefix(&format!(\"\
        {parent}/\"))\n                .unwrap()\n                .to_string()\n \
        \       })\n        .collect::<Vec<_>>"
      Src: /src/opendal/core/tests/behavior/async_list.rs:578,1
    - Dst: sort
      Src: /src/opendal/core/tests/behavior/async_list.rs:589,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_list.rs:593,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 57
    argCount: 1
    argNames:
    - op
    argTypes:
    - Operator
    constantsTouched: []
    func_position:
      end: 594
      start: 563
    functionDepth: 35
    functionLinenumber: 563
    functionLinenumberEnd: 594
    functionName: test_list_file_with_recursive
    functionSourceFile: /src/opendal/core/tests/behavior/async_list.rs
    functionUses: 0
    functionsReached:
    - to_string
    - lister_with
    - Ok
    - FutureLister::recursive
    - uuid::Uuid::new_v4
    - ends_with
    - unwrap
    - into_iter
    - sort
    - Result::iter
    - map
    - strip_prefix
    - create_dir
    - try_collect::<Vec<_>>
    - "try_collect::<Vec<_>>()\n        .await?\n        .into_iter()\n        .map(|v|\
      \ {\n            v.path()\n                .strip_prefix(&format!(\"{parent}/\"\
      ))\n                .unwrap()\n                .to_string()\n        })\n  \
      \      .collect::<Vec<_>>"
    - Result::path
    - write
    linkageType: ''
    returnType: Result
    signature: 'pub async fn test_list_file_with_recursive(op: Operator) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: info
      Src: /src/opendal/core/tests/behavior/async_list.rs:598,1
    - Dst: ServiceInfo::capability
      Src: /src/opendal/core/tests/behavior/async_list.rs:598,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_list.rs:599,1
    - Dst: skip_cos_create_dir_list_check
      Src: /src/opendal/core/tests/behavior/async_list.rs:601,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_list.rs:602,1
    - Dst: uuid::Uuid::new_v4
      Src: /src/opendal/core/tests/behavior/async_list.rs:604,1
    - Dst: to_string
      Src: /src/opendal/core/tests/behavior/async_list.rs:604,1
    - Dst: iter
      Src: /src/opendal/core/tests/behavior/async_list.rs:609,1
    - Dst: ends_with
      Src: /src/opendal/core/tests/behavior/async_list.rs:610,1
    - Dst: create_dir
      Src: /src/opendal/core/tests/behavior/async_list.rs:611,1
    - Dst: write
      Src: /src/opendal/core/tests/behavior/async_list.rs:613,1
    - Dst: delete_with
      Src: /src/opendal/core/tests/behavior/async_list.rs:617,1
    - Dst: FutureDelete::recursive
      Src: /src/opendal/core/tests/behavior/async_list.rs:617,1
    - Dst: iter
      Src: /src/opendal/core/tests/behavior/async_list.rs:621,1
    - Dst: ends_with
      Src: /src/opendal/core/tests/behavior/async_list.rs:622,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_list.rs:630,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 64
    argCount: 1
    argNames:
    - op
    argTypes:
    - Operator
    constantsTouched: []
    func_position:
      end: 631
      start: 597
    functionDepth: 35
    functionLinenumber: 597
    functionLinenumberEnd: 631
    functionName: test_remove_all
    functionSourceFile: /src/opendal/core/tests/behavior/async_list.rs
    functionUses: 0
    functionsReached:
    - skip_cos_create_dir_list_check
    - info
    - to_string
    - iter
    - Ok
    - ServiceInfo::capability
    - uuid::Uuid::new_v4
    - ends_with
    - delete_with
    - create_dir
    - FutureDelete::recursive
    - write
    linkageType: ''
    returnType: Result
    signature: 'pub async fn test_remove_all(op: Operator) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: HashMap::new
      Src: /src/opendal/core/tests/behavior/async_list.rs:635,1
    - Dst: lister
      Src: /src/opendal/core/tests/behavior/async_list.rs:637,1
    - Dst: try_next
      Src: /src/opendal/core/tests/behavior/async_list.rs:638,1
    - Dst: insert
      Src: /src/opendal/core/tests/behavior/async_list.rs:639,1
    - Dst: std::fmt::Result::path
      Src: /src/opendal/core/tests/behavior/async_list.rs:639,1
    - Dst: to_string
      Src: /src/opendal/core/tests/behavior/async_list.rs:639,1
    - Dst: stat
      Src: /src/opendal/core/tests/behavior/async_list.rs:639,1
    - Dst: std::fmt::Result::path
      Src: /src/opendal/core/tests/behavior/async_list.rs:639,1
    - Dst: mode
      Src: /src/opendal/core/tests/behavior/async_list.rs:639,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_list.rs:651,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 32
    argCount: 1
    argNames:
    - op
    argTypes:
    - Operator
    constantsTouched: []
    func_position:
      end: 652
      start: 634
    functionDepth: 36
    functionLinenumber: 634
    functionLinenumberEnd: 652
    functionName: test_list_only
    functionSourceFile: /src/opendal/core/tests/behavior/async_list.rs
    functionUses: 0
    functionsReached:
    - to_string
    - insert
    - Ok
    - try_next
    - mode
    - HashMap::new
    - lister
    - stat
    - std::fmt::Result::path
    linkageType: ''
    returnType: Result
    signature: 'pub async fn test_list_only(op: Operator) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: info
      Src: /src/opendal/core/tests/behavior/async_list.rs:655,1
    - Dst: ServiceInfo::capability
      Src: /src/opendal/core/tests/behavior/async_list.rs:655,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_list.rs:656,1
    - Dst: new_dir_path
      Src: /src/opendal/core/tests/behavior/async_list.rs:659,1
    - Dst: new_file_path
      Src: /src/opendal/core/tests/behavior/async_list.rs:660,1
    - Dst: write
      Src: /src/opendal/core/tests/behavior/async_list.rs:662,1
    - Dst: String::as_str
      Src: /src/opendal/core/tests/behavior/async_list.rs:662,1
    - Dst: write
      Src: /src/opendal/core/tests/behavior/async_list.rs:663,1
    - Dst: String::as_str
      Src: /src/opendal/core/tests/behavior/async_list.rs:663,1
    - Dst: list_with
      Src: /src/opendal/core/tests/behavior/async_list.rs:665,1
    - Dst: '&str::as_str'
      Src: /src/opendal/core/tests/behavior/async_list.rs:665,1
    - Dst: versions
      Src: /src/opendal/core/tests/behavior/async_list.rs:665,1
    - Dst: retain
      Src: /src/opendal/core/tests/behavior/async_list.rs:666,1
    - Dst: std::fmt::Result::path
      Src: /src/opendal/core/tests/behavior/async_list.rs:666,1
    - Dst: '&str::as_str'
      Src: /src/opendal/core/tests/behavior/async_list.rs:666,1
    - Dst: std::fmt::Result::metadata
      Src: /src/opendal/core/tests/behavior/async_list.rs:672,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_list.rs:676,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 57
    argCount: 1
    argNames:
    - op
    argTypes:
    - Operator
    constantsTouched: []
    func_position:
      end: 677
      start: 654
    functionDepth: 34
    functionLinenumber: 654
    functionLinenumberEnd: 677
    functionName: test_list_files_with_versions
    functionSourceFile: /src/opendal/core/tests/behavior/async_list.rs
    functionUses: 0
    functionsReached:
    - new_dir_path
    - info
    - Ok
    - versions
    - retain
    - ServiceInfo::capability
    - String::as_str
    - new_file_path
    - std::fmt::Result::metadata
    - list_with
    - '&str::as_str'
    - write
    - std::fmt::Result::path
    linkageType: ''
    returnType: Result
    signature: 'pub async fn test_list_files_with_versions(op: Operator) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: info
      Src: /src/opendal/core/tests/behavior/async_list.rs:680,1
    - Dst: ServiceInfo::capability
      Src: /src/opendal/core/tests/behavior/async_list.rs:680,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_list.rs:681,1
    - Dst: new_dir_path
      Src: /src/opendal/core/tests/behavior/async_list.rs:684,1
    - Dst: new_file_path
      Src: /src/opendal/core/tests/behavior/async_list.rs:685,1
    - Dst: write
      Src: /src/opendal/core/tests/behavior/async_list.rs:687,1
    - Dst: String::as_str
      Src: /src/opendal/core/tests/behavior/async_list.rs:687,1
    - Dst: list_with
      Src: /src/opendal/core/tests/behavior/async_list.rs:690,1
    - Dst: deleted
      Src: /src/opendal/core/tests/behavior/async_list.rs:690,1
    - Dst: write
      Src: /src/opendal/core/tests/behavior/async_list.rs:697,1
    - Dst: String::as_str
      Src: /src/opendal/core/tests/behavior/async_list.rs:697,1
    - Dst: delete
      Src: /src/opendal/core/tests/behavior/async_list.rs:698,1
    - Dst: String::as_str
      Src: /src/opendal/core/tests/behavior/async_list.rs:698,1
    - Dst: list_with
      Src: /src/opendal/core/tests/behavior/async_list.rs:701,1
    - Dst: deleted
      Src: /src/opendal/core/tests/behavior/async_list.rs:701,1
    - Dst: retain
      Src: /src/opendal/core/tests/behavior/async_list.rs:702,1
    - Dst: std::fmt::Result::path
      Src: /src/opendal/core/tests/behavior/async_list.rs:702,1
    - Dst: std::fmt::Result::metadata
      Src: /src/opendal/core/tests/behavior/async_list.rs:702,1
    - Dst: anyhow::Result::is_deleted
      Src: /src/opendal/core/tests/behavior/async_list.rs:702,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_list.rs:710,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 67
    argCount: 1
    argNames:
    - op
    argTypes:
    - Operator
    constantsTouched: []
    func_position:
      end: 711
      start: 679
    functionDepth: 34
    functionLinenumber: 679
    functionLinenumberEnd: 711
    functionName: test_list_files_with_deleted
    functionSourceFile: /src/opendal/core/tests/behavior/async_list.rs
    functionUses: 0
    functionsReached:
    - new_dir_path
    - info
    - Ok
    - delete
    - retain
    - deleted
    - ServiceInfo::capability
    - String::as_str
    - new_file_path
    - std::fmt::Result::metadata
    - list_with
    - anyhow::Result::is_deleted
    - write
    - std::fmt::Result::path
    linkageType: ''
    returnType: Result
    signature: 'pub async fn test_list_files_with_deleted(op: Operator) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: info
      Src: /src/opendal/core/tests/behavior/async_list.rs:718,1
    - Dst: ServiceInfo::scheme
      Src: /src/opendal/core/tests/behavior/async_list.rs:718,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_list.rs:719,1
    - Dst: info
      Src: /src/opendal/core/tests/behavior/async_list.rs:721,1
    - Dst: ServiceInfo::capability
      Src: /src/opendal/core/tests/behavior/async_list.rs:721,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_list.rs:722,1
    - Dst: skip_cos_create_dir_list_check
      Src: /src/opendal/core/tests/behavior/async_list.rs:724,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_list.rs:725,1
    - Dst: create_dir
      Src: /src/opendal/core/tests/behavior/async_list.rs:729,1
    - Dst: map
      Src: /src/opendal/core/tests/behavior/async_list.rs:731,1
    - Dst: collect
      Src: /src/opendal/core/tests/behavior/async_list.rs:731,1
    - Dst: iter
      Src: /src/opendal/core/tests/behavior/async_list.rs:732,1
    - Dst: write
      Src: /src/opendal/core/tests/behavior/async_list.rs:734,1
    - Dst: write
      Src: /src/opendal/core/tests/behavior/async_list.rs:735,1
    - Dst: into_iter
      Src: /src/opendal/core/tests/behavior/async_list.rs:737,1
    - Dst: flat_map
      Src: /src/opendal/core/tests/behavior/async_list.rs:737,1
    - Dst: std::iter::repeat_n
      Src: /src/opendal/core/tests/behavior/async_list.rs:739,1
    - Dst: collect
      Src: /src/opendal/core/tests/behavior/async_list.rs:737,1
    - Dst: push
      Src: /src/opendal/core/tests/behavior/async_list.rs:741,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/tests/behavior/async_list.rs:741,1
    - Dst: lister_with
      Src: /src/opendal/core/tests/behavior/async_list.rs:743,1
    - Dst: FutureLister::versions
      Src: /src/opendal/core/tests/behavior/async_list.rs:743,1
    - Dst: Self::limit
      Src: /src/opendal/core/tests/behavior/async_list.rs:743,1
    - Dst: Result::try_next
      Src: /src/opendal/core/tests/behavior/async_list.rs:745,1
    - Dst: anyhow::Result::path
      Src: /src/opendal/core/tests/behavior/async_list.rs:746,1
    - Dst: to_string
      Src: /src/opendal/core/tests/behavior/async_list.rs:746,1
    - Dst: push
      Src: /src/opendal/core/tests/behavior/async_list.rs:747,1
    - Dst: sort_unstable
      Src: /src/opendal/core/tests/behavior/async_list.rs:749,1
    - Dst: sort_unstable
      Src: /src/opendal/core/tests/behavior/async_list.rs:750,1
    - Dst: delete_with
      Src: /src/opendal/core/tests/behavior/async_list.rs:754,1
    - Dst: FutureDelete::recursive
      Src: /src/opendal/core/tests/behavior/async_list.rs:754,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_list.rs:755,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 106
    argCount: 1
    argNames:
    - op
    argTypes:
    - Operator
    constantsTouched: []
    func_position:
      end: 756
      start: 714
    functionDepth: 35
    functionLinenumber: 714
    functionLinenumberEnd: 756
    functionName: test_list_with_versions_and_limit
    functionSourceFile: /src/opendal/core/tests/behavior/async_list.rs
    functionUses: 0
    functionsReached:
    - skip_cos_create_dir_list_check
    - collect
    - std::iter::repeat_n
    - Self::limit
    - push
    - map
    - write
    - sort_unstable
    - lister_with
    - info
    - iter
    - Result::try_next
    - Ok
    - ServiceInfo::capability
    - anyhow::Result::path
    - FutureLister::versions
    - delete_with
    - '&str::to_string'
    - flat_map
    - create_dir
    - ServiceInfo::scheme
    - to_string
    - into_iter
    - FutureDelete::recursive
    linkageType: ''
    returnType: Result
    signature: 'pub async fn test_list_with_versions_and_limit(op: Operator) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: info
      Src: /src/opendal/core/tests/behavior/async_list.rs:759,1
    - Dst: ServiceInfo::capability
      Src: /src/opendal/core/tests/behavior/async_list.rs:759,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_list.rs:760,1
    - Dst: iter
      Src: /src/opendal/core/tests/behavior/async_list.rs:765,1
    - Dst: map
      Src: /src/opendal/core/tests/behavior/async_list.rs:765,1
    - Dst: collect
      Src: /src/opendal/core/tests/behavior/async_list.rs:765,1
    - Dst: iter
      Src: /src/opendal/core/tests/behavior/async_list.rs:770,1
    - Dst: map
      Src: /src/opendal/core/tests/behavior/async_list.rs:770,1
    - Dst: write
      Src: /src/opendal/core/tests/behavior/async_list.rs:773,1
    - Dst: expect
      Src: /src/opendal/core/tests/behavior/async_list.rs:773,1
    - Dst: write
      Src: /src/opendal/core/tests/behavior/async_list.rs:774,1
    - Dst: expect
      Src: /src/opendal/core/tests/behavior/async_list.rs:774,1
    - Dst: "iter()\n        .map(|name| async {\n            op.write(name, \"1\"\
        ).await.expect(\"write must succeed\");\n            op.write(name, \"2\"\
        ).await.expect(\"write must succeed\");\n        })\n        .collect::<FuturesUnordered<_>>"
      Src: /src/opendal/core/tests/behavior/async_list.rs:770,1
    - Dst: "iter()\n        .map(|name| async {\n            op.write(name, \"1\"\
        ).await.expect(\"write must succeed\");\n            op.write(name, \"2\"\
        ).await.expect(\"write must succeed\");\n        })\n        .collect::<FuturesUnordered<_>>()\n\
        \        .collect::<Vec<_>>"
      Src: /src/opendal/core/tests/behavior/async_list.rs:770,1
    - Dst: lister_with
      Src: /src/opendal/core/tests/behavior/async_list.rs:780,1
    - Dst: FutureLister::versions
      Src: /src/opendal/core/tests/behavior/async_list.rs:780,1
    - Dst: Self::start_after
      Src: /src/opendal/core/tests/behavior/async_list.rs:780,1
    - Dst: Result::try_next
      Src: /src/opendal/core/tests/behavior/async_list.rs:786,1
    - Dst: anyhow::Result::path
      Src: /src/opendal/core/tests/behavior/async_list.rs:787,1
    - Dst: to_string
      Src: /src/opendal/core/tests/behavior/async_list.rs:787,1
    - Dst: push
      Src: /src/opendal/core/tests/behavior/async_list.rs:788,1
    - Dst: into_iter
      Src: /src/opendal/core/tests/behavior/async_list.rs:791,1
    - Dst: skip
      Src: /src/opendal/core/tests/behavior/async_list.rs:791,1
    - Dst: collect
      Src: /src/opendal/core/tests/behavior/async_list.rs:791,1
    - Dst: into_iter
      Src: /src/opendal/core/tests/behavior/async_list.rs:792,1
    - Dst: flat_map
      Src: /src/opendal/core/tests/behavior/async_list.rs:792,1
    - Dst: std::iter::repeat_n
      Src: /src/opendal/core/tests/behavior/async_list.rs:794,1
    - Dst: collect
      Src: /src/opendal/core/tests/behavior/async_list.rs:792,1
    - Dst: sort_unstable
      Src: /src/opendal/core/tests/behavior/async_list.rs:797,1
    - Dst: sort_unstable
      Src: /src/opendal/core/tests/behavior/async_list.rs:798,1
    - Dst: delete_with
      Src: /src/opendal/core/tests/behavior/async_list.rs:801,1
    - Dst: FutureDelete::recursive
      Src: /src/opendal/core/tests/behavior/async_list.rs:801,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_list.rs:803,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 96
    argCount: 1
    argNames:
    - op
    argTypes:
    - Operator
    constantsTouched: []
    func_position:
      end: 804
      start: 758
    functionDepth: 36
    functionLinenumber: 758
    functionLinenumberEnd: 804
    functionName: test_list_with_versions_and_start_after
    functionSourceFile: /src/opendal/core/tests/behavior/async_list.rs
    functionUses: 0
    functionsReached:
    - collect
    - std::iter::repeat_n
    - push
    - map
    - "iter()\n        .map(|name| async {\n            op.write(name, \"1\").await.expect(\"\
      write must succeed\");\n            op.write(name, \"2\").await.expect(\"write\
      \ must succeed\");\n        })\n        .collect::<FuturesUnordered<_>>()\n\
      \        .collect::<Vec<_>>"
    - skip
    - write
    - sort_unstable
    - lister_with
    - info
    - iter
    - Self::start_after
    - expect
    - Ok
    - Result::try_next
    - ServiceInfo::capability
    - anyhow::Result::path
    - FutureLister::versions
    - delete_with
    - flat_map
    - to_string
    - "iter()\n        .map(|name| async {\n            op.write(name, \"1\").await.expect(\"\
      write must succeed\");\n            op.write(name, \"2\").await.expect(\"write\
      \ must succeed\");\n        })\n        .collect::<FuturesUnordered<_>>"
    - into_iter
    - FutureDelete::recursive
    linkageType: ''
    returnType: Result
    signature: 'pub async fn test_list_with_versions_and_start_after(op: Operator)
      -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: S3Config::default
      Src: /src/opendal/integrations/parquet/examples/async_reader.rs:29,1
    - Dst: Some
      Src: /src/opendal/integrations/parquet/examples/async_reader.rs:30,1
    - Dst: '&str::to_string'
      Src: /src/opendal/integrations/parquet/examples/async_reader.rs:30,1
    - Dst: Some
      Src: /src/opendal/integrations/parquet/examples/async_reader.rs:31,1
    - Dst: '&str::to_string'
      Src: /src/opendal/integrations/parquet/examples/async_reader.rs:31,1
    - Dst: Some
      Src: /src/opendal/integrations/parquet/examples/async_reader.rs:32,1
    - Dst: '&str::to_string'
      Src: /src/opendal/integrations/parquet/examples/async_reader.rs:32,1
    - Dst: Some
      Src: /src/opendal/integrations/parquet/examples/async_reader.rs:33,1
    - Dst: '&str::to_string'
      Src: /src/opendal/integrations/parquet/examples/async_reader.rs:33,1
    - Dst: '&str::to_string'
      Src: /src/opendal/integrations/parquet/examples/async_reader.rs:34,1
    - Dst: Operator::from_config
      Src: /src/opendal/integrations/parquet/examples/async_reader.rs:37,1
    - Dst: Result::unwrap
      Src: /src/opendal/integrations/parquet/examples/async_reader.rs:37,1
    - Dst: AsyncWriter::new
      Src: /src/opendal/integrations/parquet/examples/async_reader.rs:41,1
    - Dst: Result::writer_with
      Src: /src/opendal/integrations/parquet/examples/async_reader.rs:42,1
    - Dst: chunk
      Src: /src/opendal/integrations/parquet/examples/async_reader.rs:42,1
    - Dst: Result::concurrent
      Src: /src/opendal/integrations/parquet/examples/async_reader.rs:42,1
    - Dst: unwrap
      Src: /src/opendal/integrations/parquet/examples/async_reader.rs:42,1
    - Dst: Arc::new
      Src: /src/opendal/integrations/parquet/examples/async_reader.rs:50,1
    - Dst: Int64Array::from_iter_values
      Src: /src/opendal/integrations/parquet/examples/async_reader.rs:50,1
    - Dst: RecordBatch::try_from_iter
      Src: /src/opendal/integrations/parquet/examples/async_reader.rs:51,1
    - Dst: unwrap
      Src: /src/opendal/integrations/parquet/examples/async_reader.rs:51,1
    - Dst: AsyncArrowWriter::try_new
      Src: /src/opendal/integrations/parquet/examples/async_reader.rs:52,1
    - Dst: schema
      Src: /src/opendal/integrations/parquet/examples/async_reader.rs:52,1
    - Dst: Result::unwrap
      Src: /src/opendal/integrations/parquet/examples/async_reader.rs:52,1
    - Dst: Result::write
      Src: /src/opendal/integrations/parquet/examples/async_reader.rs:53,1
    - Dst: unwrap
      Src: /src/opendal/integrations/parquet/examples/async_reader.rs:53,1
    - Dst: Result::close
      Src: /src/opendal/integrations/parquet/examples/async_reader.rs:54,1
    - Dst: unwrap
      Src: /src/opendal/integrations/parquet/examples/async_reader.rs:54,1
    - Dst: Result::reader_with
      Src: /src/opendal/integrations/parquet/examples/async_reader.rs:58,1
    - Dst: FutureReader::gap
      Src: /src/opendal/integrations/parquet/examples/async_reader.rs:58,1
    - Dst: Self::chunk
      Src: /src/opendal/integrations/parquet/examples/async_reader.rs:58,1
    - Dst: Result::concurrent
      Src: /src/opendal/integrations/parquet/examples/async_reader.rs:58,1
    - Dst: unwrap
      Src: /src/opendal/integrations/parquet/examples/async_reader.rs:58,1
    - Dst: Result::stat
      Src: /src/opendal/integrations/parquet/examples/async_reader.rs:65,1
    - Dst: unwrap
      Src: /src/opendal/integrations/parquet/examples/async_reader.rs:65,1
    - Dst: content_length
      Src: /src/opendal/integrations/parquet/examples/async_reader.rs:65,1
    - Dst: AsyncReader::new
      Src: /src/opendal/integrations/parquet/examples/async_reader.rs:66,1
    - Dst: Self::with_prefetch_footer_size
      Src: /src/opendal/integrations/parquet/examples/async_reader.rs:66,1
    - Dst: ParquetRecordBatchStreamBuilder::new
      Src: /src/opendal/integrations/parquet/examples/async_reader.rs:67,1
    - Dst: unwrap
      Src: /src/opendal/integrations/parquet/examples/async_reader.rs:67,1
    - Dst: build
      Src: /src/opendal/integrations/parquet/examples/async_reader.rs:67,1
    - Dst: unwrap
      Src: /src/opendal/integrations/parquet/examples/async_reader.rs:67,1
    - Dst: Result::next
      Src: /src/opendal/integrations/parquet/examples/async_reader.rs:72,1
    - Dst: unwrap
      Src: /src/opendal/integrations/parquet/examples/async_reader.rs:72,1
    - Dst: unwrap
      Src: /src/opendal/integrations/parquet/examples/async_reader.rs:72,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 113
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 74
      start: 28
    functionDepth: 35
    functionLinenumber: 28
    functionLinenumberEnd: 74
    functionName: main
    functionSourceFile: /src/opendal/integrations/parquet/examples/async_reader.rs
    functionUses: 0
    functionsReached:
    - RecordBatch::try_from_iter
    - Result::reader_with
    - Arc::new
    - schema
    - Result::unwrap
    - FutureReader::gap
    - ParquetRecordBatchStreamBuilder::new
    - unwrap
    - Result::stat
    - Result::next
    - '&str::to_string'
    - S3Config::default
    - Result::writer_with
    - Result::concurrent
    - AsyncArrowWriter::try_new
    - AsyncReader::new
    - content_length
    - Some
    - Result::close
    - Result::write
    - Int64Array::from_iter_values
    - Self::chunk
    - AsyncWriter::new
    - build
    - Operator::from_config
    - chunk
    - Self::with_prefetch_footer_size
    linkageType: ''
    returnType: void
    signature: async fn main()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: uuid::Uuid::new_v4
      Src: /src/opendal/core/tests/behavior/async_presign.rs:45,1
    - Dst: to_string
      Src: /src/opendal/core/tests/behavior/async_presign.rs:45,1
    - Dst: gen_bytes
      Src: /src/opendal/core/tests/behavior/async_presign.rs:47,1
    - Dst: info
      Src: /src/opendal/core/tests/behavior/async_presign.rs:47,1
    - Dst: ServiceInfo::capability
      Src: /src/opendal/core/tests/behavior/async_presign.rs:47,1
    - Dst: presign_write
      Src: /src/opendal/core/tests/behavior/async_presign.rs:49,1
    - Dst: Duration::from_secs
      Src: /src/opendal/core/tests/behavior/async_presign.rs:49,1
    - Dst: reqwest::Client::new
      Src: /src/opendal/core/tests/behavior/async_presign.rs:52,1
    - Dst: Result::request
      Src: /src/opendal/core/tests/behavior/async_presign.rs:53,1
    - Dst: method
      Src: /src/opendal/core/tests/behavior/async_presign.rs:54,1
    - Dst: clone
      Src: /src/opendal/core/tests/behavior/async_presign.rs:54,1
    - Dst: Url::from_str
      Src: /src/opendal/core/tests/behavior/async_presign.rs:55,1
    - Dst: uri
      Src: /src/opendal/core/tests/behavior/async_presign.rs:55,1
    - Dst: to_string
      Src: /src/opendal/core/tests/behavior/async_presign.rs:55,1
    - Dst: Result::expect
      Src: /src/opendal/core/tests/behavior/async_presign.rs:55,1
    - Dst: http::header
      Src: /src/opendal/core/tests/behavior/async_presign.rs:57,1
    - Dst: http::Request::header
      Src: /src/opendal/core/tests/behavior/async_presign.rs:58,1
    - Dst: http::Request::header
      Src: /src/opendal/core/tests/behavior/async_presign.rs:60,1
    - Dst: Result::len
      Src: /src/opendal/core/tests/behavior/async_presign.rs:60,1
    - Dst: http::Request::body
      Src: /src/opendal/core/tests/behavior/async_presign.rs:61,1
    - Dst: reqwest::Body::from
      Src: /src/opendal/core/tests/behavior/async_presign.rs:61,1
    - Dst: http::Request::send
      Src: /src/opendal/core/tests/behavior/async_presign.rs:63,1
    - Dst: expect
      Src: /src/opendal/core/tests/behavior/async_presign.rs:63,1
    - Dst: stat
      Src: /src/opendal/core/tests/behavior/async_presign.rs:69,1
    - Dst: expect
      Src: /src/opendal/core/tests/behavior/async_presign.rs:69,1
    - Dst: delete
      Src: /src/opendal/core/tests/behavior/async_presign.rs:72,1
    - Dst: expect
      Src: /src/opendal/core/tests/behavior/async_presign.rs:72,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_presign.rs:73,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 72
    argCount: 1
    argNames:
    - op
    argTypes:
    - Operator
    constantsTouched: []
    func_position:
      end: 74
      start: 44
    functionDepth: 30
    functionLinenumber: 44
    functionLinenumberEnd: 74
    functionName: test_presign_write
    functionSourceFile: /src/opendal/core/tests/behavior/async_presign.rs
    functionUses: 0
    functionsReached:
    - gen_bytes
    - clone
    - Result::len
    - http::Request::send
    - info
    - expect
    - Ok
    - Result::expect
    - delete
    - ServiceInfo::capability
    - uuid::Uuid::new_v4
    - reqwest::Body::from
    - Duration::from_secs
    - stat
    - http::header
    - Result::request
    - presign_write
    - uri
    - to_string
    - Url::from_str
    - http::Request::body
    - reqwest::Client::new
    - http::Request::header
    - method
    linkageType: ''
    returnType: Result
    signature: 'pub async fn test_presign_write(op: Operator) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: uuid::Uuid::new_v4
      Src: /src/opendal/core/tests/behavior/async_presign.rs:77,1
    - Dst: to_string
      Src: /src/opendal/core/tests/behavior/async_presign.rs:77,1
    - Dst: gen_bytes
      Src: /src/opendal/core/tests/behavior/async_presign.rs:79,1
    - Dst: info
      Src: /src/opendal/core/tests/behavior/async_presign.rs:79,1
    - Dst: ServiceInfo::capability
      Src: /src/opendal/core/tests/behavior/async_presign.rs:79,1
    - Dst: write
      Src: /src/opendal/core/tests/behavior/async_presign.rs:80,1
    - Dst: Result::clone
      Src: /src/opendal/core/tests/behavior/async_presign.rs:80,1
    - Dst: expect
      Src: /src/opendal/core/tests/behavior/async_presign.rs:80,1
    - Dst: presign_stat
      Src: /src/opendal/core/tests/behavior/async_presign.rs:83,1
    - Dst: Duration::from_secs
      Src: /src/opendal/core/tests/behavior/async_presign.rs:83,1
    - Dst: reqwest::Client::new
      Src: /src/opendal/core/tests/behavior/async_presign.rs:85,1
    - Dst: Result::request
      Src: /src/opendal/core/tests/behavior/async_presign.rs:86,1
    - Dst: method
      Src: /src/opendal/core/tests/behavior/async_presign.rs:87,1
    - Dst: clone
      Src: /src/opendal/core/tests/behavior/async_presign.rs:87,1
    - Dst: Url::from_str
      Src: /src/opendal/core/tests/behavior/async_presign.rs:88,1
    - Dst: uri
      Src: /src/opendal/core/tests/behavior/async_presign.rs:88,1
    - Dst: to_string
      Src: /src/opendal/core/tests/behavior/async_presign.rs:88,1
    - Dst: Result::expect
      Src: /src/opendal/core/tests/behavior/async_presign.rs:88,1
    - Dst: http::header
      Src: /src/opendal/core/tests/behavior/async_presign.rs:90,1
    - Dst: http::Request::header
      Src: /src/opendal/core/tests/behavior/async_presign.rs:91,1
    - Dst: http::Request::send
      Src: /src/opendal/core/tests/behavior/async_presign.rs:93,1
    - Dst: expect
      Src: /src/opendal/core/tests/behavior/async_presign.rs:93,1
    - Dst: raw::parse_content_length
      Src: /src/opendal/core/tests/behavior/async_presign.rs:96,1
    - Dst: headers
      Src: /src/opendal/core/tests/behavior/async_presign.rs:96,1
    - Dst: Result::expect
      Src: /src/opendal/core/tests/behavior/async_presign.rs:96,1
    - Dst: expect
      Src: /src/opendal/core/tests/behavior/async_presign.rs:96,1
    - Dst: delete
      Src: /src/opendal/core/tests/behavior/async_presign.rs:101,1
    - Dst: expect
      Src: /src/opendal/core/tests/behavior/async_presign.rs:101,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_presign.rs:102,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 71
    argCount: 1
    argNames:
    - op
    argTypes:
    - Operator
    constantsTouched: []
    func_position:
      end: 103
      start: 76
    functionDepth: 30
    functionLinenumber: 76
    functionLinenumberEnd: 103
    functionName: test_presign_stat
    functionSourceFile: /src/opendal/core/tests/behavior/async_presign.rs
    functionUses: 0
    functionsReached:
    - gen_bytes
    - clone
    - http::Request::send
    - write
    - Result::clone
    - info
    - expect
    - Ok
    - Result::expect
    - delete
    - ServiceInfo::capability
    - uuid::Uuid::new_v4
    - headers
    - Duration::from_secs
    - http::header
    - Result::request
    - presign_stat
    - uri
    - to_string
    - Url::from_str
    - raw::parse_content_length
    - reqwest::Client::new
    - http::Request::header
    - method
    linkageType: ''
    returnType: Result
    signature: 'pub async fn test_presign_stat(op: Operator) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: uuid::Uuid::new_v4
      Src: /src/opendal/core/tests/behavior/async_presign.rs:107,1
    - Dst: to_string
      Src: /src/opendal/core/tests/behavior/async_presign.rs:107,1
    - Dst: gen_bytes
      Src: /src/opendal/core/tests/behavior/async_presign.rs:109,1
    - Dst: info
      Src: /src/opendal/core/tests/behavior/async_presign.rs:109,1
    - Dst: ServiceInfo::capability
      Src: /src/opendal/core/tests/behavior/async_presign.rs:109,1
    - Dst: write
      Src: /src/opendal/core/tests/behavior/async_presign.rs:111,1
    - Dst: Result::clone
      Src: /src/opendal/core/tests/behavior/async_presign.rs:111,1
    - Dst: expect
      Src: /src/opendal/core/tests/behavior/async_presign.rs:111,1
    - Dst: presign_read
      Src: /src/opendal/core/tests/behavior/async_presign.rs:115,1
    - Dst: Duration::from_secs
      Src: /src/opendal/core/tests/behavior/async_presign.rs:115,1
    - Dst: reqwest::Client::new
      Src: /src/opendal/core/tests/behavior/async_presign.rs:118,1
    - Dst: Result::request
      Src: /src/opendal/core/tests/behavior/async_presign.rs:119,1
    - Dst: method
      Src: /src/opendal/core/tests/behavior/async_presign.rs:120,1
    - Dst: clone
      Src: /src/opendal/core/tests/behavior/async_presign.rs:120,1
    - Dst: Url::from_str
      Src: /src/opendal/core/tests/behavior/async_presign.rs:121,1
    - Dst: uri
      Src: /src/opendal/core/tests/behavior/async_presign.rs:121,1
    - Dst: to_string
      Src: /src/opendal/core/tests/behavior/async_presign.rs:121,1
    - Dst: Result::expect
      Src: /src/opendal/core/tests/behavior/async_presign.rs:121,1
    - Dst: http::header
      Src: /src/opendal/core/tests/behavior/async_presign.rs:123,1
    - Dst: http::Request::header
      Src: /src/opendal/core/tests/behavior/async_presign.rs:124,1
    - Dst: http::Request::send
      Src: /src/opendal/core/tests/behavior/async_presign.rs:127,1
    - Dst: expect
      Src: /src/opendal/core/tests/behavior/async_presign.rs:127,1
    - Dst: bytes
      Src: /src/opendal/core/tests/behavior/async_presign.rs:129,1
    - Dst: expect
      Src: /src/opendal/core/tests/behavior/async_presign.rs:129,1
    - Dst: delete
      Src: /src/opendal/core/tests/behavior/async_presign.rs:133,1
    - Dst: expect
      Src: /src/opendal/core/tests/behavior/async_presign.rs:133,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_presign.rs:134,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 69
    argCount: 1
    argNames:
    - op
    argTypes:
    - Operator
    constantsTouched: []
    func_position:
      end: 135
      start: 106
    functionDepth: 30
    functionLinenumber: 106
    functionLinenumberEnd: 135
    functionName: test_presign_read
    functionSourceFile: /src/opendal/core/tests/behavior/async_presign.rs
    functionUses: 0
    functionsReached:
    - gen_bytes
    - clone
    - http::Request::send
    - write
    - Result::clone
    - presign_read
    - info
    - expect
    - Ok
    - Result::expect
    - delete
    - ServiceInfo::capability
    - uuid::Uuid::new_v4
    - Duration::from_secs
    - http::header
    - Result::request
    - uri
    - to_string
    - Url::from_str
    - reqwest::Client::new
    - http::Request::header
    - method
    - bytes
    linkageType: ''
    returnType: Result
    signature: 'pub async fn test_presign_read(op: Operator) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: info
      Src: /src/opendal/core/tests/behavior/async_presign.rs:139,1
    - Dst: ServiceInfo::capability
      Src: /src/opendal/core/tests/behavior/async_presign.rs:139,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_presign.rs:141,1
    - Dst: uuid::Uuid::new_v4
      Src: /src/opendal/core/tests/behavior/async_presign.rs:144,1
    - Dst: to_string
      Src: /src/opendal/core/tests/behavior/async_presign.rs:144,1
    - Dst: gen_bytes
      Src: /src/opendal/core/tests/behavior/async_presign.rs:146,1
    - Dst: info
      Src: /src/opendal/core/tests/behavior/async_presign.rs:146,1
    - Dst: ServiceInfo::capability
      Src: /src/opendal/core/tests/behavior/async_presign.rs:146,1
    - Dst: write
      Src: /src/opendal/core/tests/behavior/async_presign.rs:148,1
    - Dst: Result::clone
      Src: /src/opendal/core/tests/behavior/async_presign.rs:148,1
    - Dst: expect
      Src: /src/opendal/core/tests/behavior/async_presign.rs:148,1
    - Dst: presign_delete
      Src: /src/opendal/core/tests/behavior/async_presign.rs:153,1
    - Dst: Duration::from_secs
      Src: /src/opendal/core/tests/behavior/async_presign.rs:153,1
    - Dst: reqwest::Client::new
      Src: /src/opendal/core/tests/behavior/async_presign.rs:156,1
    - Dst: Result::request
      Src: /src/opendal/core/tests/behavior/async_presign.rs:157,1
    - Dst: method
      Src: /src/opendal/core/tests/behavior/async_presign.rs:158,1
    - Dst: clone
      Src: /src/opendal/core/tests/behavior/async_presign.rs:158,1
    - Dst: Url::from_str
      Src: /src/opendal/core/tests/behavior/async_presign.rs:159,1
    - Dst: uri
      Src: /src/opendal/core/tests/behavior/async_presign.rs:159,1
    - Dst: to_string
      Src: /src/opendal/core/tests/behavior/async_presign.rs:159,1
    - Dst: Result::expect
      Src: /src/opendal/core/tests/behavior/async_presign.rs:159,1
    - Dst: http::header
      Src: /src/opendal/core/tests/behavior/async_presign.rs:161,1
    - Dst: http::Request::header
      Src: /src/opendal/core/tests/behavior/async_presign.rs:162,1
    - Dst: http::Request::send
      Src: /src/opendal/core/tests/behavior/async_presign.rs:165,1
    - Dst: expect
      Src: /src/opendal/core/tests/behavior/async_presign.rs:165,1
    - Dst: Ok
      Src: /src/opendal/core/tests/behavior/async_presign.rs:168,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 68
    argCount: 1
    argNames:
    - op
    argTypes:
    - Operator
    constantsTouched: []
    func_position:
      end: 169
      start: 138
    functionDepth: 30
    functionLinenumber: 138
    functionLinenumberEnd: 169
    functionName: test_presign_delete
    functionSourceFile: /src/opendal/core/tests/behavior/async_presign.rs
    functionUses: 0
    functionsReached:
    - presign_delete
    - gen_bytes
    - clone
    - http::Request::send
    - write
    - Result::clone
    - info
    - expect
    - Ok
    - Result::expect
    - ServiceInfo::capability
    - uuid::Uuid::new_v4
    - Duration::from_secs
    - http::header
    - Result::request
    - uri
    - to_string
    - Url::from_str
    - reqwest::Client::new
    - http::Request::header
    - method
    linkageType: ''
    returnType: Result
    signature: 'pub async fn test_presign_delete(op: Operator) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - bandwidth
    - burst
    argTypes:
    - u32
    - u32
    constantsTouched: []
    func_position:
      end: 467
      start: 465
    functionDepth: 0
    functionLinenumber: 465
    functionLinenumberEnd: 467
    functionName: ThrottleLayer::new
    functionSourceFile: /src/opendal/bindings/nodejs/src/layer.rs
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(bandwidth: u32, burst: u32) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Arc::new
      Src: /src/opendal/core/layers/throttle/src/lib.rs:92,1
    - Dst: ThrottleLayer::layer
      Src: /src/opendal/core/layers/throttle/src/lib.rs:92,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - inner
    argTypes:
    - Servicer
    constantsTouched: []
    func_position:
      end: 93
      start: 91
    functionDepth: 3
    functionLinenumber: 91
    functionLinenumberEnd: 93
    functionName: ThrottleLayer::apply_service
    functionSourceFile: /src/opendal/core/layers/throttle/src/lib.rs
    functionUses: 0
    functionsReached:
    - Arc::new
    - ThrottleLayer::layer
    linkageType: ''
    returnType: Servicer
    signature: 'fn apply_service(&self, inner: Servicer) -> Servicer'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: clone
      Src: /src/opendal/core/layers/throttle/src/lib.rs:100,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - inner
    argTypes:
    - Servicer
    constantsTouched: []
    func_position:
      end: 102
      start: 97
    functionDepth: 2
    functionLinenumber: 97
    functionLinenumberEnd: 102
    functionName: ThrottleLayer::layer
    functionSourceFile: /src/opendal/core/layers/throttle/src/lib.rs
    functionUses: 1
    functionsReached:
    - clone
    linkageType: ''
    returnType: ThrottleAccessor
    signature: 'fn layer(&self, inner: Servicer) -> ThrottleAccessor'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: info
      Src: /src/opendal/core/layers/throttle/src/lib.rs:125,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 126
      start: 124
    functionDepth: 1
    functionLinenumber: 124
    functionLinenumberEnd: 126
    functionName: ThrottleAccessor::info
    functionSourceFile: /src/opendal/core/layers/throttle/src/lib.rs
    functionUses: 0
    functionsReached:
    - info
    linkageType: ''
    returnType: ServiceInfo
    signature: fn info(&self) -> ServiceInfo
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: capability
      Src: /src/opendal/core/layers/throttle/src/lib.rs:129,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 130
      start: 128
    functionDepth: 1
    functionLinenumber: 128
    functionLinenumberEnd: 130
    functionName: ThrottleAccessor::capability
    functionSourceFile: /src/opendal/core/layers/throttle/src/lib.rs
    functionUses: 0
    functionsReached:
    - capability
    linkageType: ''
    returnType: Capability
    signature: fn capability(&self) -> Capability
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: create_dir
      Src: /src/opendal/core/layers/throttle/src/lib.rs:138,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpCreateDir
    constantsTouched: []
    func_position:
      end: 139
      start: 132
    functionDepth: 35
    functionLinenumber: 132
    functionLinenumberEnd: 139
    functionName: ThrottleAccessor::create_dir
    functionSourceFile: /src/opendal/core/layers/throttle/src/lib.rs
    functionUses: 0
    functionsReached:
    - create_dir
    linkageType: ''
    returnType: Result
    signature: 'async fn create_dir(&self,ctx: &OperationContext,path: &str,args:
      OpCreateDir,) -> Result<RpCreateDir>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: stat
      Src: /src/opendal/core/layers/throttle/src/lib.rs:142,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpStat
    constantsTouched: []
    func_position:
      end: 143
      start: 141
    functionDepth: 31
    functionLinenumber: 141
    functionLinenumberEnd: 143
    functionName: ThrottleAccessor::stat
    functionSourceFile: /src/opendal/core/layers/throttle/src/lib.rs
    functionUses: 0
    functionsReached:
    - stat
    linkageType: ''
    returnType: Result
    signature: 'async fn stat(&self, ctx: &OperationContext, path: &str, args: OpStat)
      -> Result<RpStat>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: clone
      Src: /src/opendal/core/layers/throttle/src/lib.rs:146,1
    - Dst: read
      Src: /src/opendal/core/layers/throttle/src/lib.rs:148,1
    - Dst: map
      Src: /src/opendal/core/layers/throttle/src/lib.rs:148,1
    - Dst: ThrottleWrapper::new
      Src: /src/opendal/core/layers/throttle/src/lib.rs:150,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpRead
    constantsTouched: []
    func_position:
      end: 151
      start: 145
    functionDepth: 31
    functionLinenumber: 145
    functionLinenumberEnd: 151
    functionName: ThrottleAccessor::read
    functionSourceFile: /src/opendal/core/layers/throttle/src/lib.rs
    functionUses: 0
    functionsReached:
    - read
    - ThrottleWrapper::new
    - clone
    - map
    linkageType: ''
    returnType: Result
    signature: 'fn read(&self, ctx: &OperationContext, path: &str, args: OpRead) ->
      Result<Self::Reader>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: clone
      Src: /src/opendal/core/layers/throttle/src/lib.rs:154,1
    - Dst: write
      Src: /src/opendal/core/layers/throttle/src/lib.rs:156,1
    - Dst: map
      Src: /src/opendal/core/layers/throttle/src/lib.rs:156,1
    - Dst: ThrottleWrapper::new
      Src: /src/opendal/core/layers/throttle/src/lib.rs:158,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpWrite
    constantsTouched: []
    func_position:
      end: 159
      start: 153
    functionDepth: 36
    functionLinenumber: 153
    functionLinenumberEnd: 159
    functionName: ThrottleAccessor::write
    functionSourceFile: /src/opendal/core/layers/throttle/src/lib.rs
    functionUses: 1
    functionsReached:
    - map
    - ThrottleWrapper::new
    - write
    - clone
    linkageType: ''
    returnType: Result
    signature: 'fn write(&self, ctx: &OperationContext, path: &str, args: OpWrite)
      -> Result<Self::Writer>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: copy
      Src: /src/opendal/core/layers/throttle/src/lib.rs:169,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 5
    argNames:
    - ctx
    - from
    - to
    - args
    - opts
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    - OpCopy
    - OpCopier
    constantsTouched: []
    func_position:
      end: 170
      start: 161
    functionDepth: 34
    functionLinenumber: 161
    functionLinenumberEnd: 170
    functionName: ThrottleAccessor::copy
    functionSourceFile: /src/opendal/core/layers/throttle/src/lib.rs
    functionUses: 1
    functionsReached:
    - copy
    linkageType: ''
    returnType: Result
    signature: 'fn copy(&self,ctx: &OperationContext,from: &str,to: &str,args: OpCopy,opts:
      OpCopier,) -> Result<Self::Copier>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: delete
      Src: /src/opendal/core/layers/throttle/src/lib.rs:173,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - '&OperationContext'
    constantsTouched: []
    func_position:
      end: 174
      start: 172
    functionDepth: 32
    functionLinenumber: 172
    functionLinenumberEnd: 174
    functionName: ThrottleAccessor::delete
    functionSourceFile: /src/opendal/core/layers/throttle/src/lib.rs
    functionUses: 0
    functionsReached:
    - delete
    linkageType: ''
    returnType: Result
    signature: 'fn delete(&self, ctx: &OperationContext) -> Result<Self::Deleter>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: rename
      Src: /src/opendal/core/layers/throttle/src/lib.rs:183,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 4
    argNames:
    - ctx
    - from
    - to
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    - OpRename
    constantsTouched: []
    func_position:
      end: 184
      start: 176
    functionDepth: 1
    functionLinenumber: 176
    functionLinenumberEnd: 184
    functionName: ThrottleAccessor::rename
    functionSourceFile: /src/opendal/core/layers/throttle/src/lib.rs
    functionUses: 1
    functionsReached:
    - rename
    linkageType: ''
    returnType: Result
    signature: 'async fn rename(&self,ctx: &OperationContext,from: &str,to: &str,args:
      OpRename,) -> Result<RpRename>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: list
      Src: /src/opendal/core/layers/throttle/src/lib.rs:187,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpList
    constantsTouched: []
    func_position:
      end: 188
      start: 186
    functionDepth: 1
    functionLinenumber: 186
    functionLinenumberEnd: 188
    functionName: ThrottleAccessor::list
    functionSourceFile: /src/opendal/core/layers/throttle/src/lib.rs
    functionUses: 0
    functionsReached:
    - list
    linkageType: ''
    returnType: Result
    signature: 'fn list(&self, ctx: &OperationContext, path: &str, args: OpList) ->
      Result<Self::Lister>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: presign
      Src: /src/opendal/core/layers/throttle/src/lib.rs:196,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpPresign
    constantsTouched: []
    func_position:
      end: 197
      start: 190
    functionDepth: 1
    functionLinenumber: 190
    functionLinenumberEnd: 197
    functionName: ThrottleAccessor::presign
    functionSourceFile: /src/opendal/core/layers/throttle/src/lib.rs
    functionUses: 0
    functionsReached:
    - presign
    linkageType: ''
    returnType: Result
    signature: 'async fn presign(&self,ctx: &OperationContext,path: &str,args: OpPresign,)
      -> Result<RpPresign>'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - inner
    - rate_limiter
    argTypes:
    - R
    - SharedRateLimiter
    constantsTouched: []
    func_position:
      end: 212
      start: 207
    functionDepth: 0
    functionLinenumber: 207
    functionLinenumberEnd: 212
    functionName: ThrottleWrapper::new
    functionSourceFile: /src/opendal/core/layers/throttle/src/lib.rs
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: 'fn new(inner: R, rate_limiter: SharedRateLimiter) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: read
      Src: /src/opendal/core/layers/throttle/src/lib.rs:232,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - range
    argTypes:
    - BytesRange
    constantsTouched: []
    func_position:
      end: 233
      start: 231
    functionDepth: 31
    functionLinenumber: 231
    functionLinenumberEnd: 233
    functionName: ThrottleWrapper::read
    functionSourceFile: /src/opendal/core/layers/throttle/src/lib.rs
    functionUses: 0
    functionsReached:
    - read
    linkageType: ''
    returnType: Result
    signature: 'async fn read(&self, range: BytesRange) -> Result<(RpRead, Buffer)>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: open
      Src: /src/opendal/core/layers/throttle/src/lib.rs:223,1
    - Dst: Ok
      Src: /src/opendal/core/layers/throttle/src/lib.rs:224,1
    - Dst: Box::new
      Src: /src/opendal/core/layers/throttle/src/lib.rs:226,1
    - Dst: ThrottleWrapper::new
      Src: /src/opendal/core/layers/throttle/src/lib.rs:226,1
    - Dst: clone
      Src: /src/opendal/core/layers/throttle/src/lib.rs:226,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 1
    argNames:
    - range
    argTypes:
    - BytesRange
    constantsTouched: []
    func_position:
      end: 229
      start: 222
    functionDepth: 2
    functionLinenumber: 222
    functionLinenumberEnd: 229
    functionName: ThrottleWrapper::open
    functionSourceFile: /src/opendal/core/layers/throttle/src/lib.rs
    functionUses: 0
    functionsReached:
    - Ok
    - Box::new
    - ThrottleWrapper::new
    - clone
    - open
    linkageType: ''
    returnType: Result
    signature: 'async fn open(&self, range: BytesRange) -> Result<(RpRead, Box<dyn
      oio::ReadStreamDyn>)>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::len
      Src: /src/opendal/core/layers/throttle/src/lib.rs:238,1
    - Dst: write
      Src: /src/opendal/core/layers/throttle/src/lib.rs:240,1
    - Dst: Err
      Src: /src/opendal/core/layers/throttle/src/lib.rs:244,1
    - Dst: Error::new
      Src: /src/opendal/core/layers/throttle/src/lib.rs:244,1
    - Dst: NonZeroU32::new
      Src: /src/opendal/core/layers/throttle/src/lib.rs:251,1
    - Dst: Self::expect
      Src: /src/opendal/core/layers/throttle/src/lib.rs:251,1
    - Dst: until_n_ready
      Src: /src/opendal/core/layers/throttle/src/lib.rs:253,1
    - Dst: map_err
      Src: /src/opendal/core/layers/throttle/src/lib.rs:253,1
    - Dst: Error::new
      Src: /src/opendal/core/layers/throttle/src/lib.rs:254,1
    - Dst: write
      Src: /src/opendal/core/layers/throttle/src/lib.rs:260,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 37
    argCount: 1
    argNames:
    - bs
    argTypes:
    - Buffer
    constantsTouched: []
    func_position:
      end: 261
      start: 237
    functionDepth: 36
    functionLinenumber: 237
    functionLinenumberEnd: 261
    functionName: ThrottleWrapper::write
    functionSourceFile: /src/opendal/core/layers/throttle/src/lib.rs
    functionUses: 0
    functionsReached:
    - map_err
    - Self::expect
    - Error::new
    - NonZeroU32::new
    - Err
    - Result::len
    - until_n_ready
    - write
    linkageType: ''
    returnType: Result
    signature: 'async fn write(&mut self, bs: Buffer) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: close
      Src: /src/opendal/core/layers/throttle/src/lib.rs:264,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 265
      start: 263
    functionDepth: 1
    functionLinenumber: 263
    functionLinenumberEnd: 265
    functionName: ThrottleWrapper::close
    functionSourceFile: /src/opendal/core/layers/throttle/src/lib.rs
    functionUses: 0
    functionsReached:
    - close
    linkageType: ''
    returnType: Result
    signature: async fn close(&mut self) -> Result<Metadata>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: abort
      Src: /src/opendal/core/layers/throttle/src/lib.rs:268,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 269
      start: 267
    functionDepth: 31
    functionLinenumber: 267
    functionLinenumberEnd: 269
    functionName: ThrottleWrapper::abort
    functionSourceFile: /src/opendal/core/layers/throttle/src/lib.rs
    functionUses: 0
    functionsReached:
    - abort
    linkageType: ''
    returnType: Result
    signature: async fn abort(&mut self) -> Result<()>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self::default
      Src: /src/opendal/core/layers/await-tree/src/lib.rs:58,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 59
      start: 57
    functionDepth: 3
    functionLinenumber: 57
    functionLinenumberEnd: 59
    functionName: AwaitTreeLayer::new
    functionSourceFile: /src/opendal/core/layers/await-tree/src/lib.rs
    functionUses: 0
    functionsReached:
    - Self::default
    linkageType: ''
    returnType: Self
    signature: pub fn new() -> Self
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Arc::new
      Src: /src/opendal/core/layers/await-tree/src/lib.rs:64,1
    - Dst: AwaitTreeLayer::layer
      Src: /src/opendal/core/layers/await-tree/src/lib.rs:64,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - inner
    argTypes:
    - Servicer
    constantsTouched: []
    func_position:
      end: 65
      start: 63
    functionDepth: 2
    functionLinenumber: 63
    functionLinenumberEnd: 65
    functionName: AwaitTreeLayer::apply_service
    functionSourceFile: /src/opendal/core/layers/await-tree/src/lib.rs
    functionUses: 0
    functionsReached:
    - Arc::new
    - AwaitTreeLayer::layer
    linkageType: ''
    returnType: Servicer
    signature: 'fn apply_service(&self, inner: Servicer) -> Servicer'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - inner
    argTypes:
    - Servicer
    constantsTouched: []
    func_position:
      end: 71
      start: 69
    functionDepth: 0
    functionLinenumber: 69
    functionLinenumberEnd: 71
    functionName: AwaitTreeLayer::layer
    functionSourceFile: /src/opendal/core/layers/await-tree/src/lib.rs
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: AwaitTreeAccessor
    signature: 'fn layer(&self, inner: Servicer) -> AwaitTreeAccessor'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: info
      Src: /src/opendal/core/layers/await-tree/src/lib.rs:88,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 89
      start: 87
    functionDepth: 2
    functionLinenumber: 87
    functionLinenumberEnd: 89
    functionName: AwaitTreeAccessor::info
    functionSourceFile: /src/opendal/core/layers/await-tree/src/lib.rs
    functionUses: 0
    functionsReached:
    - info
    linkageType: ''
    returnType: ServiceInfo
    signature: fn info(&self) -> ServiceInfo
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: capability
      Src: /src/opendal/core/layers/await-tree/src/lib.rs:92,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 93
      start: 91
    functionDepth: 2
    functionLinenumber: 91
    functionLinenumberEnd: 93
    functionName: AwaitTreeAccessor::capability
    functionSourceFile: /src/opendal/core/layers/await-tree/src/lib.rs
    functionUses: 0
    functionsReached:
    - capability
    linkageType: ''
    returnType: Capability
    signature: fn capability(&self) -> Capability
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: create_dir
      Src: /src/opendal/core/layers/await-tree/src/lib.rs:101,1
    - Dst: instrument_await
      Src: /src/opendal/core/layers/await-tree/src/lib.rs:101,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpCreateDir
    constantsTouched: []
    func_position:
      end: 105
      start: 95
    functionDepth: 35
    functionLinenumber: 95
    functionLinenumberEnd: 105
    functionName: AwaitTreeAccessor::create_dir
    functionSourceFile: /src/opendal/core/layers/await-tree/src/lib.rs
    functionUses: 0
    functionsReached:
    - create_dir
    - instrument_await
    linkageType: ''
    returnType: Result
    signature: 'async fn create_dir(&self,ctx: &OperationContext,path: &str,args:
      OpCreateDir,) -> Result<RpCreateDir>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: read
      Src: /src/opendal/core/layers/await-tree/src/lib.rs:108,1
    - Dst: map
      Src: /src/opendal/core/layers/await-tree/src/lib.rs:108,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpRead
    constantsTouched: []
    func_position:
      end: 109
      start: 107
    functionDepth: 31
    functionLinenumber: 107
    functionLinenumberEnd: 109
    functionName: AwaitTreeAccessor::read
    functionSourceFile: /src/opendal/core/layers/await-tree/src/lib.rs
    functionUses: 0
    functionsReached:
    - read
    - map
    linkageType: ''
    returnType: Result
    signature: 'fn read(&self, ctx: &OperationContext, path: &str, args: OpRead) ->
      Result<Self::Reader>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: write
      Src: /src/opendal/core/layers/await-tree/src/lib.rs:112,1
    - Dst: map
      Src: /src/opendal/core/layers/await-tree/src/lib.rs:112,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpWrite
    constantsTouched: []
    func_position:
      end: 113
      start: 111
    functionDepth: 36
    functionLinenumber: 111
    functionLinenumberEnd: 113
    functionName: AwaitTreeAccessor::write
    functionSourceFile: /src/opendal/core/layers/await-tree/src/lib.rs
    functionUses: 0
    functionsReached:
    - map
    - write
    linkageType: ''
    returnType: Result
    signature: 'fn write(&self, ctx: &OperationContext, path: &str, args: OpWrite)
      -> Result<Self::Writer>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: copy
      Src: /src/opendal/core/layers/await-tree/src/lib.rs:123,1
    - Dst: map
      Src: /src/opendal/core/layers/await-tree/src/lib.rs:123,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 5
    argNames:
    - ctx
    - from
    - to
    - args
    - opts
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    - OpCopy
    - OpCopier
    constantsTouched: []
    func_position:
      end: 126
      start: 115
    functionDepth: 34
    functionLinenumber: 115
    functionLinenumberEnd: 126
    functionName: AwaitTreeAccessor::copy
    functionSourceFile: /src/opendal/core/layers/await-tree/src/lib.rs
    functionUses: 0
    functionsReached:
    - map
    - copy
    linkageType: ''
    returnType: Result
    signature: 'fn copy(&self,ctx: &OperationContext,from: &str,to: &str,args: OpCopy,opts:
      OpCopier,) -> Result<Self::Copier>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: rename
      Src: /src/opendal/core/layers/await-tree/src/lib.rs:135,1
    - Dst: instrument_await
      Src: /src/opendal/core/layers/await-tree/src/lib.rs:135,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 4
    argNames:
    - ctx
    - from
    - to
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    - OpRename
    constantsTouched: []
    func_position:
      end: 139
      start: 128
    functionDepth: 2
    functionLinenumber: 128
    functionLinenumberEnd: 139
    functionName: AwaitTreeAccessor::rename
    functionSourceFile: /src/opendal/core/layers/await-tree/src/lib.rs
    functionUses: 0
    functionsReached:
    - rename
    - instrument_await
    linkageType: ''
    returnType: Result
    signature: 'async fn rename(&self,ctx: &OperationContext,from: &str,to: &str,args:
      OpRename,) -> Result<RpRename>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: stat
      Src: /src/opendal/core/layers/await-tree/src/lib.rs:142,1
    - Dst: instrument_await
      Src: /src/opendal/core/layers/await-tree/src/lib.rs:142,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpStat
    constantsTouched: []
    func_position:
      end: 146
      start: 141
    functionDepth: 31
    functionLinenumber: 141
    functionLinenumberEnd: 146
    functionName: AwaitTreeAccessor::stat
    functionSourceFile: /src/opendal/core/layers/await-tree/src/lib.rs
    functionUses: 0
    functionsReached:
    - instrument_await
    - stat
    linkageType: ''
    returnType: Result
    signature: 'async fn stat(&self, ctx: &OperationContext, path: &str, args: OpStat)
      -> Result<RpStat>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: delete
      Src: /src/opendal/core/layers/await-tree/src/lib.rs:149,1
    - Dst: map
      Src: /src/opendal/core/layers/await-tree/src/lib.rs:149,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - '&OperationContext'
    constantsTouched: []
    func_position:
      end: 150
      start: 148
    functionDepth: 32
    functionLinenumber: 148
    functionLinenumberEnd: 150
    functionName: AwaitTreeAccessor::delete
    functionSourceFile: /src/opendal/core/layers/await-tree/src/lib.rs
    functionUses: 0
    functionsReached:
    - map
    - delete
    linkageType: ''
    returnType: Result
    signature: 'fn delete(&self, ctx: &OperationContext) -> Result<Self::Deleter>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: list
      Src: /src/opendal/core/layers/await-tree/src/lib.rs:153,1
    - Dst: map
      Src: /src/opendal/core/layers/await-tree/src/lib.rs:153,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpList
    constantsTouched: []
    func_position:
      end: 154
      start: 152
    functionDepth: 2
    functionLinenumber: 152
    functionLinenumberEnd: 154
    functionName: AwaitTreeAccessor::list
    functionSourceFile: /src/opendal/core/layers/await-tree/src/lib.rs
    functionUses: 0
    functionsReached:
    - list
    - map
    linkageType: ''
    returnType: Result
    signature: 'fn list(&self, ctx: &OperationContext, path: &str, args: OpList) ->
      Result<Self::Lister>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: presign
      Src: /src/opendal/core/layers/await-tree/src/lib.rs:162,1
    - Dst: instrument_await
      Src: /src/opendal/core/layers/await-tree/src/lib.rs:162,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpPresign
    constantsTouched: []
    func_position:
      end: 166
      start: 156
    functionDepth: 2
    functionLinenumber: 156
    functionLinenumberEnd: 166
    functionName: AwaitTreeAccessor::presign
    functionSourceFile: /src/opendal/core/layers/await-tree/src/lib.rs
    functionUses: 0
    functionsReached:
    - instrument_await
    - presign
    linkageType: ''
    returnType: Result
    signature: 'async fn presign(&self,ctx: &OperationContext,path: &str,args: OpPresign,)
      -> Result<RpPresign>'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - inner
    argTypes:
    - R
    constantsTouched: []
    func_position:
      end: 177
      start: 175
    functionDepth: 0
    functionLinenumber: 175
    functionLinenumberEnd: 177
    functionName: AwaitTreeWrapper::new
    functionSourceFile: /src/opendal/core/layers/await-tree/src/lib.rs
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: 'fn new(inner: R) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: read
      Src: /src/opendal/core/layers/await-tree/src/lib.rs:203,1
    - Dst: instrument_await
      Src: /src/opendal/core/layers/await-tree/src/lib.rs:203,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - range
    argTypes:
    - BytesRange
    constantsTouched: []
    func_position:
      end: 207
      start: 202
    functionDepth: 31
    functionLinenumber: 202
    functionLinenumberEnd: 207
    functionName: AwaitTreeWrapper::read
    functionSourceFile: /src/opendal/core/layers/await-tree/src/lib.rs
    functionUses: 0
    functionsReached:
    - read
    - instrument_await
    linkageType: ''
    returnType: Result
    signature: 'async fn read(&self, range: BytesRange) -> Result<(RpRead, Buffer)>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: open
      Src: /src/opendal/core/layers/await-tree/src/lib.rs:191,1
    - Dst: instrument_await
      Src: /src/opendal/core/layers/await-tree/src/lib.rs:191,1
    - Dst: Ok
      Src: /src/opendal/core/layers/await-tree/src/lib.rs:196,1
    - Dst: Box::new
      Src: /src/opendal/core/layers/await-tree/src/lib.rs:198,1
    - Dst: AwaitTreeWrapper::new
      Src: /src/opendal/core/layers/await-tree/src/lib.rs:198,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 1
    argNames:
    - range
    argTypes:
    - BytesRange
    constantsTouched: []
    func_position:
      end: 200
      start: 190
    functionDepth: 3
    functionLinenumber: 190
    functionLinenumberEnd: 200
    functionName: AwaitTreeWrapper::open
    functionSourceFile: /src/opendal/core/layers/await-tree/src/lib.rs
    functionUses: 0
    functionsReached:
    - Ok
    - Box::new
    - instrument_await
    - AwaitTreeWrapper::new
    - open
    linkageType: ''
    returnType: Result
    signature: 'async fn open(&self, range: BytesRange) -> Result<(RpRead, Box<dyn
      oio::ReadStreamDyn>)>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: write
      Src: /src/opendal/core/layers/await-tree/src/lib.rs:212,1
    - Dst: instrument_await
      Src: /src/opendal/core/layers/await-tree/src/lib.rs:212,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - bs
    argTypes:
    - Buffer
    constantsTouched: []
    func_position:
      end: 216
      start: 211
    functionDepth: 36
    functionLinenumber: 211
    functionLinenumberEnd: 216
    functionName: AwaitTreeWrapper::write
    functionSourceFile: /src/opendal/core/layers/await-tree/src/lib.rs
    functionUses: 0
    functionsReached:
    - write
    - instrument_await
    linkageType: ''
    returnType: Result
    signature: 'async fn write(&mut self, bs: Buffer) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: abort
      Src: /src/opendal/core/layers/await-tree/src/lib.rs:271,1
    - Dst: instrument_await
      Src: /src/opendal/core/layers/await-tree/src/lib.rs:271,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 275
      start: 270
    functionDepth: 31
    functionLinenumber: 270
    functionLinenumberEnd: 275
    functionName: AwaitTreeWrapper::abort
    functionSourceFile: /src/opendal/core/layers/await-tree/src/lib.rs
    functionUses: 0
    functionsReached:
    - instrument_await
    - abort
    linkageType: ''
    returnType: Result
    signature: async fn abort(&mut self) -> Result<()>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: close
      Src: /src/opendal/core/layers/await-tree/src/lib.rs:264,1
    - Dst: instrument_await
      Src: /src/opendal/core/layers/await-tree/src/lib.rs:264,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 268
      start: 263
    functionDepth: 2
    functionLinenumber: 263
    functionLinenumberEnd: 268
    functionName: AwaitTreeWrapper::close
    functionSourceFile: /src/opendal/core/layers/await-tree/src/lib.rs
    functionUses: 0
    functionsReached:
    - instrument_await
    - close
    linkageType: ''
    returnType: Result
    signature: async fn close(&mut self) -> Result<Metadata>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: next
      Src: /src/opendal/core/layers/await-tree/src/lib.rs:257,1
    - Dst: instrument_await
      Src: /src/opendal/core/layers/await-tree/src/lib.rs:257,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 261
      start: 256
    functionDepth: 1
    functionLinenumber: 256
    functionLinenumberEnd: 261
    functionName: AwaitTreeWrapper::next
    functionSourceFile: /src/opendal/core/layers/await-tree/src/lib.rs
    functionUses: 0
    functionsReached:
    - next
    - instrument_await
    linkageType: ''
    returnType: Result
    signature: async fn next(&mut self) -> Result<Option<usize>>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: delete
      Src: /src/opendal/core/layers/await-tree/src/lib.rs:244,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - path
    - args
    argTypes:
    - '&str'
    - OpDelete
    constantsTouched: []
    func_position:
      end: 245
      start: 243
    functionDepth: 32
    functionLinenumber: 243
    functionLinenumberEnd: 245
    functionName: AwaitTreeWrapper::delete
    functionSourceFile: /src/opendal/core/layers/await-tree/src/lib.rs
    functionUses: 0
    functionsReached:
    - delete
    linkageType: ''
    returnType: Result
    signature: 'async fn delete(&mut self, path: &str, args: OpDelete) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: OtelMetricsLayerBuilder::default
      Src: /src/opendal/core/layers/otelmetrics/src/lib.rs:76,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 77
      start: 75
    functionDepth: 5
    functionLinenumber: 75
    functionLinenumberEnd: 77
    functionName: OtelMetricsLayer::builder
    functionSourceFile: /src/opendal/core/layers/otelmetrics/src/lib.rs
    functionUses: 0
    functionsReached:
    - OtelMetricsLayerBuilder::default
    linkageType: ''
    returnType: OtelMetricsLayerBuilder
    signature: pub fn builder() -> OtelMetricsLayerBuilder
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: to_vec
      Src: /src/opendal/core/layers/otelmetrics/src/lib.rs:93,1
    - Dst: to_vec
      Src: /src/opendal/core/layers/otelmetrics/src/lib.rs:94,1
    - Dst: to_vec
      Src: /src/opendal/core/layers/otelmetrics/src/lib.rs:95,1
    - Dst: to_vec
      Src: /src/opendal/core/layers/otelmetrics/src/lib.rs:96,1
    - Dst: to_vec
      Src: /src/opendal/core/layers/otelmetrics/src/lib.rs:97,1
    - Dst: to_vec
      Src: /src/opendal/core/layers/otelmetrics/src/lib.rs:98,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 100
      start: 91
    functionDepth: 4
    functionLinenumber: 91
    functionLinenumberEnd: 100
    functionName: OtelMetricsLayerBuilder::default
    functionSourceFile: /src/opendal/core/layers/otelmetrics/src/lib.rs
    functionUses: 1
    functionsReached:
    - to_vec
    linkageType: ''
    returnType: Self
    signature: fn default() -> Self
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self::is_empty
      Src: /src/opendal/core/layers/otelmetrics/src/lib.rs:106,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - boundaries
    argTypes:
    - Vec<f64>
    constantsTouched: []
    func_position:
      end: 110
      start: 105
    functionDepth: 4
    functionLinenumber: 105
    functionLinenumberEnd: 110
    functionName: OtelMetricsLayerBuilder::bytes_boundaries
    functionSourceFile: /src/opendal/core/layers/otelmetrics/src/lib.rs
    functionUses: 0
    functionsReached:
    - Self::is_empty
    linkageType: ''
    returnType: Self
    signature: 'pub fn bytes_boundaries(mut self, boundaries: Vec<f64>) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self::is_empty
      Src: /src/opendal/core/layers/otelmetrics/src/lib.rs:114,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - boundaries
    argTypes:
    - Vec<f64>
    constantsTouched: []
    func_position:
      end: 118
      start: 113
    functionDepth: 4
    functionLinenumber: 113
    functionLinenumberEnd: 118
    functionName: OtelMetricsLayerBuilder::bytes_rate_boundaries
    functionSourceFile: /src/opendal/core/layers/otelmetrics/src/lib.rs
    functionUses: 0
    functionsReached:
    - Self::is_empty
    linkageType: ''
    returnType: Self
    signature: 'pub fn bytes_rate_boundaries(mut self, boundaries: Vec<f64>) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self::is_empty
      Src: /src/opendal/core/layers/otelmetrics/src/lib.rs:122,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - boundaries
    argTypes:
    - Vec<f64>
    constantsTouched: []
    func_position:
      end: 126
      start: 121
    functionDepth: 4
    functionLinenumber: 121
    functionLinenumberEnd: 126
    functionName: OtelMetricsLayerBuilder::entries_boundaries
    functionSourceFile: /src/opendal/core/layers/otelmetrics/src/lib.rs
    functionUses: 0
    functionsReached:
    - Self::is_empty
    linkageType: ''
    returnType: Self
    signature: 'pub fn entries_boundaries(mut self, boundaries: Vec<f64>) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self::is_empty
      Src: /src/opendal/core/layers/otelmetrics/src/lib.rs:130,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - boundaries
    argTypes:
    - Vec<f64>
    constantsTouched: []
    func_position:
      end: 134
      start: 129
    functionDepth: 4
    functionLinenumber: 129
    functionLinenumberEnd: 134
    functionName: OtelMetricsLayerBuilder::entries_rate_boundaries
    functionSourceFile: /src/opendal/core/layers/otelmetrics/src/lib.rs
    functionUses: 0
    functionsReached:
    - Self::is_empty
    linkageType: ''
    returnType: Self
    signature: 'pub fn entries_rate_boundaries(mut self, boundaries: Vec<f64>) ->
      Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self::is_empty
      Src: /src/opendal/core/layers/otelmetrics/src/lib.rs:138,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - boundaries
    argTypes:
    - Vec<f64>
    constantsTouched: []
    func_position:
      end: 142
      start: 137
    functionDepth: 4
    functionLinenumber: 137
    functionLinenumberEnd: 142
    functionName: OtelMetricsLayerBuilder::duration_seconds_boundaries
    functionSourceFile: /src/opendal/core/layers/otelmetrics/src/lib.rs
    functionUses: 0
    functionsReached:
    - Self::is_empty
    linkageType: ''
    returnType: Self
    signature: 'pub fn duration_seconds_boundaries(mut self, boundaries: Vec<f64>)
      -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self::is_empty
      Src: /src/opendal/core/layers/otelmetrics/src/lib.rs:146,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - boundaries
    argTypes:
    - Vec<f64>
    constantsTouched: []
    func_position:
      end: 150
      start: 145
    functionDepth: 4
    functionLinenumber: 145
    functionLinenumberEnd: 150
    functionName: OtelMetricsLayerBuilder::ttfb_boundaries
    functionSourceFile: /src/opendal/core/layers/otelmetrics/src/lib.rs
    functionUses: 0
    functionsReached:
    - Self::is_empty
    linkageType: ''
    returnType: Self
    signature: 'pub fn ttfb_boundaries(mut self, boundaries: Vec<f64>) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: observe::MetricValue::OperationBytes
      Src: /src/opendal/core/layers/otelmetrics/src/lib.rs:171,1
    - Dst: register_u64_histogram_meter
      Src: /src/opendal/core/layers/otelmetrics/src/lib.rs:172,1
    - Dst: clone
      Src: /src/opendal/core/layers/otelmetrics/src/lib.rs:176,1
    - Dst: observe::MetricValue::OperationBytesRate
      Src: /src/opendal/core/layers/otelmetrics/src/lib.rs:180,1
    - Dst: register_f64_histogram_meter
      Src: /src/opendal/core/layers/otelmetrics/src/lib.rs:181,1
    - Dst: clone
      Src: /src/opendal/core/layers/otelmetrics/src/lib.rs:185,1
    - Dst: observe::MetricValue::OperationEntries
      Src: /src/opendal/core/layers/otelmetrics/src/lib.rs:189,1
    - Dst: register_u64_histogram_meter
      Src: /src/opendal/core/layers/otelmetrics/src/lib.rs:190,1
    - Dst: clone
      Src: /src/opendal/core/layers/otelmetrics/src/lib.rs:194,1
    - Dst: observe::MetricValue::OperationEntriesRate
      Src: /src/opendal/core/layers/otelmetrics/src/lib.rs:198,1
    - Dst: register_f64_histogram_meter
      Src: /src/opendal/core/layers/otelmetrics/src/lib.rs:199,1
    - Dst: clone
      Src: /src/opendal/core/layers/otelmetrics/src/lib.rs:203,1
    - Dst: observe::MetricValue::OperationDurationSeconds
      Src: /src/opendal/core/layers/otelmetrics/src/lib.rs:207,1
    - Dst: Duration::default
      Src: /src/opendal/core/layers/otelmetrics/src/lib.rs:207,1
    - Dst: register_f64_histogram_meter
      Src: /src/opendal/core/layers/otelmetrics/src/lib.rs:208,1
    - Dst: clone
      Src: /src/opendal/core/layers/otelmetrics/src/lib.rs:212,1
    - Dst: Histogram::u64_counter
      Src: /src/opendal/core/layers/otelmetrics/src/lib.rs:217,1
    - Dst: with_description
      Src: /src/opendal/core/layers/otelmetrics/src/lib.rs:217,1
    - Dst: Histogram::help
      Src: /src/opendal/core/layers/otelmetrics/src/lib.rs:219,1
    - Dst: build
      Src: /src/opendal/core/layers/otelmetrics/src/lib.rs:217,1
    - Dst: observe::MetricValue::OperationExecuting
      Src: /src/opendal/core/layers/otelmetrics/src/lib.rs:223,1
    - Dst: Histogram::i64_up_down_counter
      Src: /src/opendal/core/layers/otelmetrics/src/lib.rs:224,1
    - Dst: with_description
      Src: /src/opendal/core/layers/otelmetrics/src/lib.rs:224,1
    - Dst: Histogram::help
      Src: /src/opendal/core/layers/otelmetrics/src/lib.rs:226,1
    - Dst: build
      Src: /src/opendal/core/layers/otelmetrics/src/lib.rs:224,1
    - Dst: observe::MetricValue::OperationTtfbSeconds
      Src: /src/opendal/core/layers/otelmetrics/src/lib.rs:230,1
    - Dst: Duration::default
      Src: /src/opendal/core/layers/otelmetrics/src/lib.rs:230,1
    - Dst: register_f64_histogram_meter
      Src: /src/opendal/core/layers/otelmetrics/src/lib.rs:231,1
    - Dst: clone
      Src: /src/opendal/core/layers/otelmetrics/src/lib.rs:235,1
    - Dst: observe::MetricValue::HttpExecuting
      Src: /src/opendal/core/layers/otelmetrics/src/lib.rs:240,1
    - Dst: Histogram::i64_up_down_counter
      Src: /src/opendal/core/layers/otelmetrics/src/lib.rs:241,1
    - Dst: with_description
      Src: /src/opendal/core/layers/otelmetrics/src/lib.rs:241,1
    - Dst: Histogram::help
      Src: /src/opendal/core/layers/otelmetrics/src/lib.rs:243,1
    - Dst: build
      Src: /src/opendal/core/layers/otelmetrics/src/lib.rs:241,1
    - Dst: observe::MetricValue::HttpRequestBytes
      Src: /src/opendal/core/layers/otelmetrics/src/lib.rs:247,1
    - Dst: register_u64_histogram_meter
      Src: /src/opendal/core/layers/otelmetrics/src/lib.rs:248,1
    - Dst: clone
      Src: /src/opendal/core/layers/otelmetrics/src/lib.rs:252,1
    - Dst: observe::MetricValue::HttpRequestBytesRate
      Src: /src/opendal/core/layers/otelmetrics/src/lib.rs:256,1
    - Dst: register_f64_histogram_meter
      Src: /src/opendal/core/layers/otelmetrics/src/lib.rs:257,1
    - Dst: clone
      Src: /src/opendal/core/layers/otelmetrics/src/lib.rs:261,1
    - Dst: observe::MetricValue::HttpRequestDurationSeconds
      Src: /src/opendal/core/layers/otelmetrics/src/lib.rs:265,1
    - Dst: Duration::default
      Src: /src/opendal/core/layers/otelmetrics/src/lib.rs:265,1
    - Dst: register_f64_histogram_meter
      Src: /src/opendal/core/layers/otelmetrics/src/lib.rs:266,1
    - Dst: clone
      Src: /src/opendal/core/layers/otelmetrics/src/lib.rs:270,1
    - Dst: observe::MetricValue::HttpResponseBytes
      Src: /src/opendal/core/layers/otelmetrics/src/lib.rs:274,1
    - Dst: register_u64_histogram_meter
      Src: /src/opendal/core/layers/otelmetrics/src/lib.rs:275,1
    - Dst: clone
      Src: /src/opendal/core/layers/otelmetrics/src/lib.rs:279,1
    - Dst: observe::MetricValue::HttpResponseBytesRate
      Src: /src/opendal/core/layers/otelmetrics/src/lib.rs:283,1
    - Dst: register_f64_histogram_meter
      Src: /src/opendal/core/layers/otelmetrics/src/lib.rs:284,1
    - Dst: clone
      Src: /src/opendal/core/layers/otelmetrics/src/lib.rs:288,1
    - Dst: observe::MetricValue::HttpResponseDurationSeconds
      Src: /src/opendal/core/layers/otelmetrics/src/lib.rs:292,1
    - Dst: Duration::default
      Src: /src/opendal/core/layers/otelmetrics/src/lib.rs:292,1
    - Dst: register_f64_histogram_meter
      Src: /src/opendal/core/layers/otelmetrics/src/lib.rs:293,1
    - Dst: clone
      Src: /src/opendal/core/layers/otelmetrics/src/lib.rs:297,1
    - Dst: Histogram::u64_counter
      Src: /src/opendal/core/layers/otelmetrics/src/lib.rs:302,1
    - Dst: with_description
      Src: /src/opendal/core/layers/otelmetrics/src/lib.rs:302,1
    - Dst: Histogram::help
      Src: /src/opendal/core/layers/otelmetrics/src/lib.rs:304,1
    - Dst: build
      Src: /src/opendal/core/layers/otelmetrics/src/lib.rs:302,1
    - Dst: Histogram::u64_counter
      Src: /src/opendal/core/layers/otelmetrics/src/lib.rs:309,1
    - Dst: with_description
      Src: /src/opendal/core/layers/otelmetrics/src/lib.rs:309,1
    - Dst: Histogram::help
      Src: /src/opendal/core/layers/otelmetrics/src/lib.rs:311,1
    - Dst: build
      Src: /src/opendal/core/layers/otelmetrics/src/lib.rs:309,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 108
    argCount: 1
    argNames:
    - meter
    argTypes:
    - '&Meter'
    constantsTouched: []
    func_position:
      end: 337
      start: 169
    functionDepth: 38
    functionLinenumber: 169
    functionLinenumberEnd: 337
    functionName: OtelMetricsLayerBuilder::register
    functionSourceFile: /src/opendal/core/layers/otelmetrics/src/lib.rs
    functionUses: 0
    functionsReached:
    - register_f64_histogram_meter
    - clone
    - observe::MetricValue::HttpRequestBytes
    - observe::MetricValue::HttpRequestBytesRate
    - Histogram::i64_up_down_counter
    - observe::MetricValue::OperationBytes
    - observe::MetricValue::OperationDurationSeconds
    - observe::MetricValue::OperationExecuting
    - observe::MetricValue::HttpResponseBytes
    - Duration::default
    - observe::MetricValue::HttpResponseDurationSeconds
    - Histogram::u64_counter
    - observe::MetricValue::HttpResponseBytesRate
    - observe::MetricValue::OperationTtfbSeconds
    - observe::MetricValue::HttpExecuting
    - with_description
    - observe::MetricValue::OperationEntriesRate
    - register_u64_histogram_meter
    - observe::MetricValue::HttpRequestDurationSeconds
    - build
    - observe::MetricValue::OperationEntries
    - Histogram::help
    - observe::MetricValue::OperationBytesRate
    linkageType: ''
    returnType: OtelMetricsLayer
    signature: 'pub fn register(self, meter: &Meter) -> OtelMetricsLayer'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: observe::MetricsLayer::new
      Src: /src/opendal/core/layers/otelmetrics/src/lib.rs:343,1
    - Dst: clone
      Src: /src/opendal/core/layers/otelmetrics/src/lib.rs:343,1
    - Dst: Self::apply_service
      Src: /src/opendal/core/layers/otelmetrics/src/lib.rs:343,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - inner
    argTypes:
    - Servicer
    constantsTouched: []
    func_position:
      end: 344
      start: 342
    functionDepth: 3
    functionLinenumber: 342
    functionLinenumberEnd: 344
    functionName: OtelMetricsLayer::apply_service
    functionSourceFile: /src/opendal/core/layers/otelmetrics/src/lib.rs
    functionUses: 0
    functionsReached:
    - observe::MetricsLayer::new
    - Self::apply_service
    - clone
    linkageType: ''
    returnType: Servicer
    signature: 'fn apply_service(&self, inner: Servicer) -> Servicer'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: observe::MetricsLayer::new
      Src: /src/opendal/core/layers/otelmetrics/src/lib.rs:347,1
    - Dst: clone
      Src: /src/opendal/core/layers/otelmetrics/src/lib.rs:347,1
    - Dst: Self::apply_context
      Src: /src/opendal/core/layers/otelmetrics/src/lib.rs:347,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - srv
    - inner
    argTypes:
    - Servicer
    - OperationContext
    constantsTouched: []
    func_position:
      end: 348
      start: 346
    functionDepth: 2
    functionLinenumber: 346
    functionLinenumberEnd: 348
    functionName: OtelMetricsLayer::apply_context
    functionSourceFile: /src/opendal/core/layers/otelmetrics/src/lib.rs
    functionUses: 0
    functionsReached:
    - observe::MetricsLayer::new
    - Self::apply_context
    - clone
    linkageType: ''
    returnType: OperationContext
    signature: 'fn apply_context(&self, srv: Servicer, inner: OperationContext) ->
      OperationContext'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: OtelMetricsInterceptor::create_attributes
      Src: /src/opendal/core/layers/otelmetrics/src/lib.rs:376,1
    - Dst: record
      Src: /src/opendal/core/layers/otelmetrics/src/lib.rs:379,1
    - Dst: record
      Src: /src/opendal/core/layers/otelmetrics/src/lib.rs:381,1
    - Dst: record
      Src: /src/opendal/core/layers/otelmetrics/src/lib.rs:384,1
    - Dst: record
      Src: /src/opendal/core/layers/otelmetrics/src/lib.rs:387,1
    - Dst: record
      Src: /src/opendal/core/layers/otelmetrics/src/lib.rs:389,1
    - Dst: Result::as_secs_f64
      Src: /src/opendal/core/layers/otelmetrics/src/lib.rs:391,1
    - Dst: add
      Src: /src/opendal/core/layers/otelmetrics/src/lib.rs:393,1
    - Dst: add
      Src: /src/opendal/core/layers/otelmetrics/src/lib.rs:396,1
    - Dst: record
      Src: /src/opendal/core/layers/otelmetrics/src/lib.rs:398,1
    - Dst: Result::as_secs_f64
      Src: /src/opendal/core/layers/otelmetrics/src/lib.rs:400,1
    - Dst: add
      Src: /src/opendal/core/layers/otelmetrics/src/lib.rs:403,1
    - Dst: record
      Src: /src/opendal/core/layers/otelmetrics/src/lib.rs:406,1
    - Dst: record
      Src: /src/opendal/core/layers/otelmetrics/src/lib.rs:409,1
    - Dst: record
      Src: /src/opendal/core/layers/otelmetrics/src/lib.rs:411,1
    - Dst: Result::as_secs_f64
      Src: /src/opendal/core/layers/otelmetrics/src/lib.rs:413,1
    - Dst: record
      Src: /src/opendal/core/layers/otelmetrics/src/lib.rs:415,1
    - Dst: record
      Src: /src/opendal/core/layers/otelmetrics/src/lib.rs:418,1
    - Dst: record
      Src: /src/opendal/core/layers/otelmetrics/src/lib.rs:420,1
    - Dst: Result::as_secs_f64
      Src: /src/opendal/core/layers/otelmetrics/src/lib.rs:422,1
    - Dst: add
      Src: /src/opendal/core/layers/otelmetrics/src/lib.rs:424,1
    - Dst: add
      Src: /src/opendal/core/layers/otelmetrics/src/lib.rs:427,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 82
    argCount: 2
    argNames:
    - labels
    - value
    argTypes:
    - observe::MetricLabels
    - observe::MetricValue
    constantsTouched: []
    func_position:
      end: 431
      start: 375
    functionDepth: 31
    functionLinenumber: 375
    functionLinenumberEnd: 431
    functionName: OtelMetricsInterceptor::observe
    functionSourceFile: /src/opendal/core/layers/otelmetrics/src/lib.rs
    functionUses: 0
    functionsReached:
    - OtelMetricsInterceptor::create_attributes
    - Result::as_secs_f64
    - record
    - add
    linkageType: ''
    returnType: void
    signature: 'fn observe(&self, labels: observe::MetricLabels, value: observe::MetricValue)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Vec::with_capacity
      Src: /src/opendal/core/layers/otelmetrics/src/lib.rs:436,1
    - Dst: Vec::extend
      Src: /src/opendal/core/layers/otelmetrics/src/lib.rs:438,1
    - Dst: KeyValue::new
      Src: /src/opendal/core/layers/otelmetrics/src/lib.rs:439,1
    - Dst: KeyValue::new
      Src: /src/opendal/core/layers/otelmetrics/src/lib.rs:440,1
    - Dst: KeyValue::new
      Src: /src/opendal/core/layers/otelmetrics/src/lib.rs:441,1
    - Dst: KeyValue::new
      Src: /src/opendal/core/layers/otelmetrics/src/lib.rs:442,1
    - Dst: Vec::push
      Src: /src/opendal/core/layers/otelmetrics/src/lib.rs:446,1
    - Dst: KeyValue::new
      Src: /src/opendal/core/layers/otelmetrics/src/lib.rs:446,1
    - Dst: Self::into_static
      Src: /src/opendal/core/layers/otelmetrics/src/lib.rs:446,1
    - Dst: Vec::push
      Src: /src/opendal/core/layers/otelmetrics/src/lib.rs:450,1
    - Dst: KeyValue::new
      Src: /src/opendal/core/layers/otelmetrics/src/lib.rs:450,1
    - Dst: Self::as_u16
      Src: /src/opendal/core/layers/otelmetrics/src/lib.rs:452,1
    - Dst: Vec::push
      Src: /src/opendal/core/layers/otelmetrics/src/lib.rs:457,1
    - Dst: KeyValue::new
      Src: /src/opendal/core/layers/otelmetrics/src/lib.rs:457,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 39
    argCount: 1
    argNames:
    - attrs
    argTypes:
    - observe::MetricLabels
    constantsTouched: []
    func_position:
      end: 464
      start: 435
    functionDepth: 30
    functionLinenumber: 435
    functionLinenumberEnd: 464
    functionName: OtelMetricsInterceptor::create_attributes
    functionSourceFile: /src/opendal/core/layers/otelmetrics/src/lib.rs
    functionUses: 1
    functionsReached:
    - Self::into_static
    - Vec::with_capacity
    - Vec::push
    - KeyValue::new
    - Self::as_u16
    - Vec::extend
    linkageType: ''
    returnType: Vec
    signature: 'fn create_attributes(&self, attrs: observe::MetricLabels) -> Vec<KeyValue>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Histogram::name_with_unit
      Src: /src/opendal/core/layers/otelmetrics/src/lib.rs:473,1
    - Dst: Histogram::help
      Src: /src/opendal/core/layers/otelmetrics/src/lib.rs:474,1
    - Dst: Histogram::u64_histogram
      Src: /src/opendal/core/layers/otelmetrics/src/lib.rs:476,1
    - Dst: with_description
      Src: /src/opendal/core/layers/otelmetrics/src/lib.rs:476,1
    - Dst: with_boundaries
      Src: /src/opendal/core/layers/otelmetrics/src/lib.rs:476,1
    - Dst: OtelMetricsLayerBuilder::with_unit
      Src: /src/opendal/core/layers/otelmetrics/src/lib.rs:482,1
    - Dst: (&'static str, Option::build
      Src: /src/opendal/core/layers/otelmetrics/src/lib.rs:482,1
    - Dst: OtelMetricsLayerBuilder::build
      Src: /src/opendal/core/layers/otelmetrics/src/lib.rs:484,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 18
    argCount: 4
    argNames:
    - meter
    - name
    - metric
    - boundaries
    argTypes:
    - '&Meter'
    - '&''static str'
    - observe::MetricValue
    - Vec<f64>
    constantsTouched: []
    func_position:
      end: 486
      start: 467
    functionDepth: 37
    functionLinenumber: 467
    functionLinenumberEnd: 486
    functionName: register_u64_histogram_meter
    functionSourceFile: /src/opendal/core/layers/otelmetrics/src/lib.rs
    functionUses: 1
    functionsReached:
    - with_description
    - Histogram::help
    - Histogram::u64_histogram
    - with_boundaries
    - (&'static str, Option::build
    - Histogram::name_with_unit
    - OtelMetricsLayerBuilder::with_unit
    - OtelMetricsLayerBuilder::build
    linkageType: ''
    returnType: Histogram
    signature: 'fn register_u64_histogram_meter(meter: &Meter,name: &''static str,metric:
      observe::MetricValue,boundaries: Vec<f64>,) -> Histogram<u64>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Histogram::name_with_unit
      Src: /src/opendal/core/layers/otelmetrics/src/lib.rs:494,1
    - Dst: Histogram::help
      Src: /src/opendal/core/layers/otelmetrics/src/lib.rs:495,1
    - Dst: Histogram::f64_histogram
      Src: /src/opendal/core/layers/otelmetrics/src/lib.rs:497,1
    - Dst: with_description
      Src: /src/opendal/core/layers/otelmetrics/src/lib.rs:497,1
    - Dst: with_boundaries
      Src: /src/opendal/core/layers/otelmetrics/src/lib.rs:497,1
    - Dst: OtelMetricsLayerBuilder::with_unit
      Src: /src/opendal/core/layers/otelmetrics/src/lib.rs:503,1
    - Dst: (&'static str, Option::build
      Src: /src/opendal/core/layers/otelmetrics/src/lib.rs:503,1
    - Dst: OtelMetricsLayerBuilder::build
      Src: /src/opendal/core/layers/otelmetrics/src/lib.rs:505,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 18
    argCount: 4
    argNames:
    - meter
    - name
    - metric
    - boundaries
    argTypes:
    - '&Meter'
    - '&''static str'
    - observe::MetricValue
    - Vec<f64>
    constantsTouched: []
    func_position:
      end: 507
      start: 488
    functionDepth: 37
    functionLinenumber: 488
    functionLinenumberEnd: 507
    functionName: register_f64_histogram_meter
    functionSourceFile: /src/opendal/core/layers/otelmetrics/src/lib.rs
    functionUses: 1
    functionsReached:
    - Histogram::f64_histogram
    - with_description
    - Histogram::help
    - with_boundaries
    - (&'static str, Option::build
    - Histogram::name_with_unit
    - OtelMetricsLayerBuilder::with_unit
    - OtelMetricsLayerBuilder::build
    linkageType: ''
    returnType: Histogram
    signature: 'fn register_f64_histogram_meter(meter: &Meter,name: &''static str,metric:
      observe::MetricValue,boundaries: Vec<f64>,) -> Histogram<f64>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Duration::from_secs
      Src: /src/opendal/core/layers/timeout/src/lib.rs:131,1
    - Dst: Duration::from_secs
      Src: /src/opendal/core/layers/timeout/src/lib.rs:132,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 134
      start: 129
    functionDepth: 0
    functionLinenumber: 129
    functionLinenumberEnd: 134
    functionName: TimeoutLayer::default
    functionSourceFile: /src/opendal/core/layers/timeout/src/lib.rs
    functionUses: 6
    functionsReached:
    - Duration::from_secs
    linkageType: ''
    returnType: Self
    signature: fn default() -> Self
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self::default
      Src: /src/opendal/bindings/nodejs/src/layer.rs:315,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 316
      start: 314
    functionDepth: 3
    functionLinenumber: 314
    functionLinenumberEnd: 316
    functionName: TimeoutLayer::new
    functionSourceFile: /src/opendal/bindings/nodejs/src/layer.rs
    functionUses: 4
    functionsReached:
    - Self::default
    linkageType: ''
    returnType: Self
    signature: pub fn new() -> Self
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - timeout
    argTypes:
    - Duration
    constantsTouched: []
    func_position:
      end: 149
      start: 146
    functionDepth: 0
    functionLinenumber: 146
    functionLinenumberEnd: 149
    functionName: TimeoutLayer::with_timeout
    functionSourceFile: /src/opendal/core/layers/timeout/src/lib.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: 'pub fn with_timeout(mut self, timeout: Duration) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - timeout
    argTypes:
    - Duration
    constantsTouched: []
    func_position:
      end: 157
      start: 154
    functionDepth: 0
    functionLinenumber: 154
    functionLinenumberEnd: 157
    functionName: TimeoutLayer::with_io_timeout
    functionSourceFile: /src/opendal/core/layers/timeout/src/lib.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: 'pub fn with_io_timeout(mut self, timeout: Duration) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Arc::new
      Src: /src/opendal/core/layers/timeout/src/lib.rs:162,1
    - Dst: TimeoutLayer::layer
      Src: /src/opendal/core/layers/timeout/src/lib.rs:162,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - inner
    argTypes:
    - Servicer
    constantsTouched: []
    func_position:
      end: 163
      start: 161
    functionDepth: 2
    functionLinenumber: 161
    functionLinenumberEnd: 163
    functionName: TimeoutLayer::apply_service
    functionSourceFile: /src/opendal/core/layers/timeout/src/lib.rs
    functionUses: 0
    functionsReached:
    - TimeoutLayer::layer
    - Arc::new
    linkageType: ''
    returnType: Servicer
    signature: 'fn apply_service(&self, inner: Servicer) -> Servicer'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Executor::with
      Src: /src/opendal/core/layers/timeout/src/lib.rs:167,1
    - Dst: TimeoutExecutor::new
      Src: /src/opendal/core/layers/timeout/src/lib.rs:167,1
    - Dst: Arc::executor
      Src: /src/opendal/core/layers/timeout/src/lib.rs:168,1
    - Dst: Self::clone
      Src: /src/opendal/core/layers/timeout/src/lib.rs:168,1
    - Dst: Self::into_inner
      Src: /src/opendal/core/layers/timeout/src/lib.rs:168,1
    - Dst: Arc::with_executor
      Src: /src/opendal/core/layers/timeout/src/lib.rs:171,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 2
    argNames:
    - _srv
    - inner
    argTypes:
    - Servicer
    - OperationContext
    constantsTouched: []
    func_position:
      end: 172
      start: 165
    functionDepth: 3
    functionLinenumber: 165
    functionLinenumberEnd: 172
    functionName: TimeoutLayer::apply_context
    functionSourceFile: /src/opendal/core/layers/timeout/src/lib.rs
    functionUses: 0
    functionsReached:
    - Arc::with_executor
    - Executor::with
    - Self::into_inner
    - Self::clone
    - Arc::executor
    - TimeoutExecutor::new
    linkageType: ''
    returnType: OperationContext
    signature: 'fn apply_context(&self, _srv: Servicer, inner: OperationContext) ->
      OperationContext'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - inner
    argTypes:
    - Servicer
    constantsTouched: []
    func_position:
      end: 182
      start: 176
    functionDepth: 0
    functionLinenumber: 176
    functionLinenumberEnd: 182
    functionName: TimeoutLayer::layer
    functionSourceFile: /src/opendal/core/layers/timeout/src/lib.rs
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: TimeoutService
    signature: 'fn layer(&self, inner: Servicer) -> TimeoutService'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: tokio::time::timeout
      Src: /src/opendal/core/layers/timeout/src/lib.rs:195,1
    - Dst: map_err
      Src: /src/opendal/core/layers/timeout/src/lib.rs:195,1
    - Dst: Error::new
      Src: /src/opendal/core/layers/timeout/src/lib.rs:196,1
    - Dst: Self::with_operation
      Src: /src/opendal/core/layers/timeout/src/lib.rs:196,1
    - Dst: Self::with_context
      Src: /src/opendal/core/layers/timeout/src/lib.rs:196,1
    - Dst: as_secs_f64
      Src: /src/opendal/core/layers/timeout/src/lib.rs:198,1
    - Dst: to_string
      Src: /src/opendal/core/layers/timeout/src/lib.rs:198,1
    - Dst: Self::set_temporary
      Src: /src/opendal/core/layers/timeout/src/lib.rs:196,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 19
    argCount: 2
    argNames:
    - op
    - fut
    argTypes:
    - Operation
    - F
    constantsTouched: []
    func_position:
      end: 201
      start: 194
    functionDepth: 36
    functionLinenumber: 194
    functionLinenumberEnd: 201
    functionName: TimeoutService::timeout
    functionSourceFile: /src/opendal/core/layers/timeout/src/lib.rs
    functionUses: 4
    functionsReached:
    - map_err
    - as_secs_f64
    - to_string
    - Error::new
    - Self::set_temporary
    - Self::with_operation
    - tokio::time::timeout
    - Self::with_context
    linkageType: ''
    returnType: Result
    signature: 'async fn timeout<F: Future<Output = Result<T>>, T>(&self, op: Operation,
      fut: F) -> Result<T>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: info
      Src: /src/opendal/core/layers/timeout/src/lib.rs:212,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 213
      start: 211
    functionDepth: 2
    functionLinenumber: 211
    functionLinenumberEnd: 213
    functionName: TimeoutService::info
    functionSourceFile: /src/opendal/core/layers/timeout/src/lib.rs
    functionUses: 0
    functionsReached:
    - info
    linkageType: ''
    returnType: ServiceInfo
    signature: fn info(&self) -> ServiceInfo
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: capability
      Src: /src/opendal/core/layers/timeout/src/lib.rs:216,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 217
      start: 215
    functionDepth: 2
    functionLinenumber: 215
    functionLinenumberEnd: 217
    functionName: TimeoutService::capability
    functionSourceFile: /src/opendal/core/layers/timeout/src/lib.rs
    functionUses: 0
    functionsReached:
    - capability
    linkageType: ''
    returnType: Capability
    signature: fn capability(&self) -> Capability
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: TimeoutService::timeout
      Src: /src/opendal/core/layers/timeout/src/lib.rs:225,1
    - Dst: create_dir
      Src: /src/opendal/core/layers/timeout/src/lib.rs:225,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpCreateDir
    constantsTouched: []
    func_position:
      end: 227
      start: 219
    functionDepth: 37
    functionLinenumber: 219
    functionLinenumberEnd: 227
    functionName: TimeoutService::create_dir
    functionSourceFile: /src/opendal/core/layers/timeout/src/lib.rs
    functionUses: 0
    functionsReached:
    - TimeoutService::timeout
    - create_dir
    linkageType: ''
    returnType: Result
    signature: 'async fn create_dir(&self,ctx: &OperationContext,path: &str,args:
      OpCreateDir,) -> Result<RpCreateDir>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: read
      Src: /src/opendal/core/layers/timeout/src/lib.rs:230,1
    - Dst: map
      Src: /src/opendal/core/layers/timeout/src/lib.rs:230,1
    - Dst: TimeoutWrapper::new
      Src: /src/opendal/core/layers/timeout/src/lib.rs:232,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpRead
    constantsTouched: []
    func_position:
      end: 233
      start: 229
    functionDepth: 31
    functionLinenumber: 229
    functionLinenumberEnd: 233
    functionName: TimeoutService::read
    functionSourceFile: /src/opendal/core/layers/timeout/src/lib.rs
    functionUses: 0
    functionsReached:
    - read
    - TimeoutWrapper::new
    - map
    linkageType: ''
    returnType: Result
    signature: 'fn read(&self, ctx: &OperationContext, path: &str, args: OpRead) ->
      Result<Self::Reader>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: write
      Src: /src/opendal/core/layers/timeout/src/lib.rs:236,1
    - Dst: map
      Src: /src/opendal/core/layers/timeout/src/lib.rs:236,1
    - Dst: TimeoutWrapper::new
      Src: /src/opendal/core/layers/timeout/src/lib.rs:238,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpWrite
    constantsTouched: []
    func_position:
      end: 239
      start: 235
    functionDepth: 36
    functionLinenumber: 235
    functionLinenumberEnd: 239
    functionName: TimeoutService::write
    functionSourceFile: /src/opendal/core/layers/timeout/src/lib.rs
    functionUses: 0
    functionsReached:
    - map
    - TimeoutWrapper::new
    - write
    linkageType: ''
    returnType: Result
    signature: 'fn write(&self, ctx: &OperationContext, path: &str, args: OpWrite)
      -> Result<Self::Writer>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: copy
      Src: /src/opendal/core/layers/timeout/src/lib.rs:249,1
    - Dst: map
      Src: /src/opendal/core/layers/timeout/src/lib.rs:249,1
    - Dst: TimeoutWrapper::new
      Src: /src/opendal/core/layers/timeout/src/lib.rs:251,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 5
    argNames:
    - ctx
    - from
    - to
    - args
    - opts
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    - OpCopy
    - OpCopier
    constantsTouched: []
    func_position:
      end: 252
      start: 241
    functionDepth: 34
    functionLinenumber: 241
    functionLinenumberEnd: 252
    functionName: TimeoutService::copy
    functionSourceFile: /src/opendal/core/layers/timeout/src/lib.rs
    functionUses: 0
    functionsReached:
    - map
    - TimeoutWrapper::new
    - copy
    linkageType: ''
    returnType: Result
    signature: 'fn copy(&self,ctx: &OperationContext,from: &str,to: &str,args: OpCopy,opts:
      OpCopier,) -> Result<Self::Copier>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: TimeoutService::timeout
      Src: /src/opendal/core/layers/timeout/src/lib.rs:261,1
    - Dst: rename
      Src: /src/opendal/core/layers/timeout/src/lib.rs:261,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 4
    argNames:
    - ctx
    - from
    - to
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    - OpRename
    constantsTouched: []
    func_position:
      end: 263
      start: 254
    functionDepth: 37
    functionLinenumber: 254
    functionLinenumberEnd: 263
    functionName: TimeoutService::rename
    functionSourceFile: /src/opendal/core/layers/timeout/src/lib.rs
    functionUses: 0
    functionsReached:
    - rename
    - TimeoutService::timeout
    linkageType: ''
    returnType: Result
    signature: 'async fn rename(&self,ctx: &OperationContext,from: &str,to: &str,args:
      OpRename,) -> Result<RpRename>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: TimeoutService::timeout
      Src: /src/opendal/core/layers/timeout/src/lib.rs:266,1
    - Dst: stat
      Src: /src/opendal/core/layers/timeout/src/lib.rs:266,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpStat
    constantsTouched: []
    func_position:
      end: 268
      start: 265
    functionDepth: 37
    functionLinenumber: 265
    functionLinenumberEnd: 268
    functionName: TimeoutService::stat
    functionSourceFile: /src/opendal/core/layers/timeout/src/lib.rs
    functionUses: 0
    functionsReached:
    - TimeoutService::timeout
    - stat
    linkageType: ''
    returnType: Result
    signature: 'async fn stat(&self, ctx: &OperationContext, path: &str, args: OpStat)
      -> Result<RpStat>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: delete
      Src: /src/opendal/core/layers/timeout/src/lib.rs:271,1
    - Dst: map
      Src: /src/opendal/core/layers/timeout/src/lib.rs:271,1
    - Dst: TimeoutWrapper::new
      Src: /src/opendal/core/layers/timeout/src/lib.rs:273,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - '&OperationContext'
    constantsTouched: []
    func_position:
      end: 274
      start: 270
    functionDepth: 32
    functionLinenumber: 270
    functionLinenumberEnd: 274
    functionName: TimeoutService::delete
    functionSourceFile: /src/opendal/core/layers/timeout/src/lib.rs
    functionUses: 0
    functionsReached:
    - map
    - TimeoutWrapper::new
    - delete
    linkageType: ''
    returnType: Result
    signature: 'fn delete(&self, ctx: &OperationContext) -> Result<Self::Deleter>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: list
      Src: /src/opendal/core/layers/timeout/src/lib.rs:277,1
    - Dst: map
      Src: /src/opendal/core/layers/timeout/src/lib.rs:277,1
    - Dst: TimeoutWrapper::new
      Src: /src/opendal/core/layers/timeout/src/lib.rs:279,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpList
    constantsTouched: []
    func_position:
      end: 280
      start: 276
    functionDepth: 2
    functionLinenumber: 276
    functionLinenumberEnd: 280
    functionName: TimeoutService::list
    functionSourceFile: /src/opendal/core/layers/timeout/src/lib.rs
    functionUses: 0
    functionsReached:
    - list
    - TimeoutWrapper::new
    - map
    linkageType: ''
    returnType: Result
    signature: 'fn list(&self, ctx: &OperationContext, path: &str, args: OpList) ->
      Result<Self::Lister>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: TimeoutService::timeout
      Src: /src/opendal/core/layers/timeout/src/lib.rs:288,1
    - Dst: presign
      Src: /src/opendal/core/layers/timeout/src/lib.rs:288,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpPresign
    constantsTouched: []
    func_position:
      end: 290
      start: 282
    functionDepth: 37
    functionLinenumber: 282
    functionLinenumberEnd: 290
    functionName: TimeoutService::presign
    functionSourceFile: /src/opendal/core/layers/timeout/src/lib.rs
    functionUses: 0
    functionsReached:
    - TimeoutService::timeout
    - presign
    linkageType: ''
    returnType: Result
    signature: 'async fn presign(&self,ctx: &OperationContext,path: &str,args: OpPresign,)
      -> Result<RpPresign>'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - exec
    - timeout
    argTypes:
    - Arc<dyn Execute>
    - Duration
    constantsTouched: []
    func_position:
      end: 301
      start: 299
    functionDepth: 0
    functionLinenumber: 299
    functionLinenumberEnd: 301
    functionName: TimeoutExecutor::new
    functionSourceFile: /src/opendal/core/layers/timeout/src/lib.rs
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: 'fn new(exec: Arc<dyn Execute>, timeout: Duration) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: execute
      Src: /src/opendal/core/layers/timeout/src/lib.rs:306,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - f
    argTypes:
    - BoxedStaticFuture<()>
    constantsTouched: []
    func_position:
      end: 307
      start: 305
    functionDepth: 1
    functionLinenumber: 305
    functionLinenumberEnd: 307
    functionName: TimeoutExecutor::execute
    functionSourceFile: /src/opendal/core/layers/timeout/src/lib.rs
    functionUses: 0
    functionsReached:
    - execute
    linkageType: ''
    returnType: void
    signature: 'fn execute(&self, f: BoxedStaticFuture<()>)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Some
      Src: /src/opendal/core/layers/timeout/src/lib.rs:310,1
    - Dst: Box::pin
      Src: /src/opendal/core/layers/timeout/src/lib.rs:310,1
    - Dst: tokio::time::sleep
      Src: /src/opendal/core/layers/timeout/src/lib.rs:310,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 311
      start: 309
    functionDepth: 0
    functionLinenumber: 309
    functionLinenumberEnd: 311
    functionName: TimeoutExecutor::timeout
    functionSourceFile: /src/opendal/core/layers/timeout/src/lib.rs
    functionUses: 0
    functionsReached:
    - Box::pin
    - tokio::time::sleep
    - Some
    linkageType: ''
    returnType: Option
    signature: fn timeout(&self) -> Option<BoxedStaticFuture<()>>
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - inner
    - timeout
    argTypes:
    - R
    - Duration
    constantsTouched: []
    func_position:
      end: 324
      start: 322
    functionDepth: 0
    functionLinenumber: 322
    functionLinenumberEnd: 324
    functionName: TimeoutWrapper::new
    functionSourceFile: /src/opendal/core/layers/timeout/src/lib.rs
    functionUses: 7
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: 'fn new(inner: R, timeout: Duration) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: tokio::time::timeout
      Src: /src/opendal/core/layers/timeout/src/lib.rs:332,1
    - Dst: map_err
      Src: /src/opendal/core/layers/timeout/src/lib.rs:332,1
    - Dst: Error::new
      Src: /src/opendal/core/layers/timeout/src/lib.rs:333,1
    - Dst: Self::with_operation
      Src: /src/opendal/core/layers/timeout/src/lib.rs:333,1
    - Dst: Self::with_context
      Src: /src/opendal/core/layers/timeout/src/lib.rs:333,1
    - Dst: Self::as_secs_f64
      Src: /src/opendal/core/layers/timeout/src/lib.rs:335,1
    - Dst: to_string
      Src: /src/opendal/core/layers/timeout/src/lib.rs:335,1
    - Dst: Self::set_temporary
      Src: /src/opendal/core/layers/timeout/src/lib.rs:333,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 17
    argCount: 3
    argNames:
    - timeout
    - op
    - fut
    argTypes:
    - Duration
    - '&''static str'
    - F
    constantsTouched: []
    func_position:
      end: 338
      start: 327
    functionDepth: 36
    functionLinenumber: 327
    functionLinenumberEnd: 338
    functionName: TimeoutWrapper::io_timeout
    functionSourceFile: /src/opendal/core/layers/timeout/src/lib.rs
    functionUses: 0
    functionsReached:
    - map_err
    - to_string
    - Self::as_secs_f64
    - Error::new
    - Self::set_temporary
    - Self::with_operation
    - tokio::time::timeout
    - Self::with_context
    linkageType: ''
    returnType: Result
    signature: 'async fn io_timeout<F: Future<Output = Result<T>>, T>(timeout: Duration,op:
      &''static str,fut: F,) -> Result<T>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self::io_timeout
      Src: /src/opendal/core/layers/timeout/src/lib.rs:363,1
    - Dst: jlong::into_static
      Src: /src/opendal/core/layers/timeout/src/lib.rs:365,1
    - Dst: read
      Src: /src/opendal/core/layers/timeout/src/lib.rs:366,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - range
    argTypes:
    - BytesRange
    constantsTouched: []
    func_position:
      end: 369
      start: 362
    functionDepth: 30
    functionLinenumber: 362
    functionLinenumberEnd: 369
    functionName: TimeoutWrapper::read
    functionSourceFile: /src/opendal/core/layers/timeout/src/lib.rs
    functionUses: 0
    functionsReached:
    - Self::io_timeout
    - read
    - jlong::into_static
    linkageType: ''
    returnType: Result
    signature: 'async fn read(&self, range: BytesRange) -> Result<(RpRead, Buffer)>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self::io_timeout
      Src: /src/opendal/core/layers/timeout/src/lib.rs:350,1
    - Dst: jlong::into_static
      Src: /src/opendal/core/layers/timeout/src/lib.rs:352,1
    - Dst: open
      Src: /src/opendal/core/layers/timeout/src/lib.rs:353,1
    - Dst: Ok
      Src: /src/opendal/core/layers/timeout/src/lib.rs:356,1
    - Dst: Box::new
      Src: /src/opendal/core/layers/timeout/src/lib.rs:358,1
    - Dst: TimeoutWrapper::new
      Src: /src/opendal/core/layers/timeout/src/lib.rs:358,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 15
    argCount: 1
    argNames:
    - range
    argTypes:
    - BytesRange
    constantsTouched: []
    func_position:
      end: 360
      start: 349
    functionDepth: 30
    functionLinenumber: 349
    functionLinenumberEnd: 360
    functionName: TimeoutWrapper::open
    functionSourceFile: /src/opendal/core/layers/timeout/src/lib.rs
    functionUses: 0
    functionsReached:
    - TimeoutWrapper::new
    - Ok
    - Box::new
    - Self::io_timeout
    - jlong::into_static
    - open
    linkageType: ''
    returnType: Result
    signature: 'async fn open(&self, range: BytesRange) -> Result<(RpRead, Box<dyn
      oio::ReadStreamDyn>)>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: write
      Src: /src/opendal/core/layers/timeout/src/lib.rs:374,1
    - Dst: Self::io_timeout
      Src: /src/opendal/core/layers/timeout/src/lib.rs:375,1
    - Dst: jlong::into_static
      Src: /src/opendal/core/layers/timeout/src/lib.rs:375,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - bs
    argTypes:
    - Buffer
    constantsTouched: []
    func_position:
      end: 376
      start: 373
    functionDepth: 36
    functionLinenumber: 373
    functionLinenumberEnd: 376
    functionName: TimeoutWrapper::write
    functionSourceFile: /src/opendal/core/layers/timeout/src/lib.rs
    functionUses: 0
    functionsReached:
    - Self::io_timeout
    - write
    - jlong::into_static
    linkageType: ''
    returnType: Result
    signature: 'async fn write(&mut self, bs: Buffer) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: close
      Src: /src/opendal/core/layers/timeout/src/lib.rs:415,1
    - Dst: Self::io_timeout
      Src: /src/opendal/core/layers/timeout/src/lib.rs:416,1
    - Dst: into_static
      Src: /src/opendal/core/layers/timeout/src/lib.rs:416,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 417
      start: 414
    functionDepth: 30
    functionLinenumber: 414
    functionLinenumberEnd: 417
    functionName: TimeoutWrapper::close
    functionSourceFile: /src/opendal/core/layers/timeout/src/lib.rs
    functionUses: 0
    functionsReached:
    - Self::io_timeout
    - into_static
    - close
    linkageType: ''
    returnType: Result
    signature: async fn close(&mut self) -> Result<Metadata>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: abort
      Src: /src/opendal/core/layers/timeout/src/lib.rs:420,1
    - Dst: Self::io_timeout
      Src: /src/opendal/core/layers/timeout/src/lib.rs:421,1
    - Dst: into_static
      Src: /src/opendal/core/layers/timeout/src/lib.rs:421,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 422
      start: 419
    functionDepth: 31
    functionLinenumber: 419
    functionLinenumberEnd: 422
    functionName: TimeoutWrapper::abort
    functionSourceFile: /src/opendal/core/layers/timeout/src/lib.rs
    functionUses: 0
    functionsReached:
    - Self::io_timeout
    - into_static
    - abort
    linkageType: ''
    returnType: Result
    signature: async fn abort(&mut self) -> Result<()>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: next
      Src: /src/opendal/core/layers/timeout/src/lib.rs:410,1
    - Dst: Self::io_timeout
      Src: /src/opendal/core/layers/timeout/src/lib.rs:411,1
    - Dst: into_static
      Src: /src/opendal/core/layers/timeout/src/lib.rs:411,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 412
      start: 409
    functionDepth: 30
    functionLinenumber: 409
    functionLinenumberEnd: 412
    functionName: TimeoutWrapper::next
    functionSourceFile: /src/opendal/core/layers/timeout/src/lib.rs
    functionUses: 0
    functionsReached:
    - next
    - Self::io_timeout
    - into_static
    linkageType: ''
    returnType: Result
    signature: async fn next(&mut self) -> Result<Option<usize>>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: delete
      Src: /src/opendal/core/layers/timeout/src/lib.rs:398,1
    - Dst: Self::io_timeout
      Src: /src/opendal/core/layers/timeout/src/lib.rs:399,1
    - Dst: into_static
      Src: /src/opendal/core/layers/timeout/src/lib.rs:399,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - path
    - args
    argTypes:
    - '&str'
    - OpDelete
    constantsTouched: []
    func_position:
      end: 400
      start: 397
    functionDepth: 32
    functionLinenumber: 397
    functionLinenumberEnd: 400
    functionName: TimeoutWrapper::delete
    functionSourceFile: /src/opendal/core/layers/timeout/src/lib.rs
    functionUses: 0
    functionsReached:
    - Self::io_timeout
    - into_static
    - delete
    linkageType: ''
    returnType: Result
    signature: 'async fn delete(&mut self, path: &str, args: OpDelete) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Operator::from_parts
      Src: /src/opendal/core/layers/timeout/src/lib.rs:585,1
    - Dst: OperationContext::default
      Src: /src/opendal/core/layers/timeout/src/lib.rs:585,1
    - Dst: Arc::new
      Src: /src/opendal/core/layers/timeout/src/lib.rs:585,1
    - Dst: Self::layer
      Src: /src/opendal/core/layers/timeout/src/lib.rs:585,1
    - Dst: TimeoutLayer::default
      Src: /src/opendal/core/layers/timeout/src/lib.rs:586,1
    - Dst: Self::with_io_timeout
      Src: /src/opendal/core/layers/timeout/src/lib.rs:586,1
    - Dst: Duration::from_secs
      Src: /src/opendal/core/layers/timeout/src/lib.rs:586,1
    - Dst: delete
      Src: /src/opendal/core/layers/timeout/src/lib.rs:589,1
    - Dst: unwrap_err
      Src: /src/opendal/core/layers/timeout/src/lib.rs:591,1
    - Dst: timeout
      Src: /src/opendal/core/layers/timeout/src/lib.rs:596,1
    - Dst: Duration::from_secs
      Src: /src/opendal/core/layers/timeout/src/lib.rs:596,1
    - Dst: expect
      Src: /src/opendal/core/layers/timeout/src/lib.rs:596,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 21
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 599
      start: 583
    functionDepth: 32
    functionLinenumber: 583
    functionLinenumberEnd: 599
    functionName: tests::test_delete_timeout
    functionSourceFile: /src/opendal/core/layers/timeout/src/lib.rs
    functionUses: 0
    functionsReached:
    - Operator::from_parts
    - TimeoutLayer::default
    - expect
    - unwrap_err
    - delete
    - Arc::new
    - Self::with_io_timeout
    - timeout
    - Duration::from_secs
    - OperationContext::default
    - Self::layer
    linkageType: ''
    returnType: void
    signature: async fn test_delete_timeout()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Operator::from_parts
      Src: /src/opendal/core/layers/timeout/src/lib.rs:604,1
    - Dst: OperationContext::default
      Src: /src/opendal/core/layers/timeout/src/lib.rs:604,1
    - Dst: Arc::new
      Src: /src/opendal/core/layers/timeout/src/lib.rs:604,1
    - Dst: Self::layer
      Src: /src/opendal/core/layers/timeout/src/lib.rs:604,1
    - Dst: TimeoutLayer::default
      Src: /src/opendal/core/layers/timeout/src/lib.rs:605,1
    - Dst: Self::with_io_timeout
      Src: /src/opendal/core/layers/timeout/src/lib.rs:605,1
    - Dst: Duration::from_secs
      Src: /src/opendal/core/layers/timeout/src/lib.rs:605,1
    - Dst: reader
      Src: /src/opendal/core/layers/timeout/src/lib.rs:607,1
    - Dst: unwrap
      Src: /src/opendal/core/layers/timeout/src/lib.rs:607,1
    - Dst: anyhow::Result::read
      Src: /src/opendal/core/layers/timeout/src/lib.rs:609,1
    - Dst: unwrap_err
      Src: /src/opendal/core/layers/timeout/src/lib.rs:611,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 22
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 614
      start: 602
    functionDepth: 31
    functionLinenumber: 602
    functionLinenumberEnd: 614
    functionName: tests::test_io_timeout
    functionSourceFile: /src/opendal/core/layers/timeout/src/lib.rs
    functionUses: 0
    functionsReached:
    - Operator::from_parts
    - TimeoutLayer::default
    - reader
    - unwrap_err
    - Arc::new
    - Self::with_io_timeout
    - unwrap
    - anyhow::Result::read
    - Duration::from_secs
    - OperationContext::default
    - Self::layer
    linkageType: ''
    returnType: void
    signature: async fn test_io_timeout()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Operator::from_parts
      Src: /src/opendal/core/layers/timeout/src/lib.rs:619,1
    - Dst: OperationContext::default
      Src: /src/opendal/core/layers/timeout/src/lib.rs:619,1
    - Dst: Arc::new
      Src: /src/opendal/core/layers/timeout/src/lib.rs:619,1
    - Dst: Self::layer
      Src: /src/opendal/core/layers/timeout/src/lib.rs:619,1
    - Dst: TimeoutLayer::default
      Src: /src/opendal/core/layers/timeout/src/lib.rs:620,1
    - Dst: Self::with_timeout
      Src: /src/opendal/core/layers/timeout/src/lib.rs:620,1
    - Dst: Duration::from_secs
      Src: /src/opendal/core/layers/timeout/src/lib.rs:621,1
    - Dst: Self::with_io_timeout
      Src: /src/opendal/core/layers/timeout/src/lib.rs:620,1
    - Dst: Duration::from_secs
      Src: /src/opendal/core/layers/timeout/src/lib.rs:622,1
    - Dst: lister
      Src: /src/opendal/core/layers/timeout/src/lib.rs:625,1
    - Dst: unwrap
      Src: /src/opendal/core/layers/timeout/src/lib.rs:625,1
    - Dst: Result::next
      Src: /src/opendal/core/layers/timeout/src/lib.rs:627,1
    - Dst: unwrap
      Src: /src/opendal/core/layers/timeout/src/lib.rs:627,1
    - Dst: unwrap_err
      Src: /src/opendal/core/layers/timeout/src/lib.rs:629,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 26
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 632
      start: 617
    functionDepth: 36
    functionLinenumber: 617
    functionLinenumberEnd: 632
    functionName: tests::test_list_timeout
    functionSourceFile: /src/opendal/core/layers/timeout/src/lib.rs
    functionUses: 0
    functionsReached:
    - Operator::from_parts
    - TimeoutLayer::default
    - unwrap_err
    - Self::with_timeout
    - Arc::new
    - Self::with_io_timeout
    - unwrap
    - lister
    - Result::next
    - Duration::from_secs
    - OperationContext::default
    - Self::layer
    linkageType: ''
    returnType: void
    signature: async fn test_list_timeout()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: TimeoutWrapper::new
      Src: /src/opendal/core/layers/timeout/src/lib.rs:638,1
    - Dst: Duration::from_secs
      Src: /src/opendal/core/layers/timeout/src/lib.rs:638,1
    - Dst: Result::delete
      Src: /src/opendal/core/layers/timeout/src/lib.rs:640,1
    - Dst: OpDelete::default
      Src: /src/opendal/core/layers/timeout/src/lib.rs:640,1
    - Dst: unwrap_err
      Src: /src/opendal/core/layers/timeout/src/lib.rs:642,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 645
      start: 635
    functionDepth: 32
    functionLinenumber: 635
    functionLinenumberEnd: 645
    functionName: tests::test_delete_io_timeout
    functionSourceFile: /src/opendal/core/layers/timeout/src/lib.rs
    functionUses: 0
    functionsReached:
    - TimeoutWrapper::new
    - unwrap_err
    - Duration::from_secs
    - OpDelete::default
    - Result::delete
    linkageType: ''
    returnType: void
    signature: async fn test_delete_io_timeout()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: TimeoutLayer::default
      Src: /src/opendal/core/layers/timeout/src/lib.rs:651,1
    - Dst: Self::with_io_timeout
      Src: /src/opendal/core/layers/timeout/src/lib.rs:651,1
    - Dst: Duration::from_millis
      Src: /src/opendal/core/layers/timeout/src/lib.rs:652,1
    - Dst: Self::apply_service
      Src: /src/opendal/core/layers/timeout/src/lib.rs:651,1
    - Dst: Arc::new
      Src: /src/opendal/core/layers/timeout/src/lib.rs:653,1
    - Dst: OperationContext::new
      Src: /src/opendal/core/layers/timeout/src/lib.rs:654,1
    - Dst: Servicer::copy
      Src: /src/opendal/core/layers/timeout/src/lib.rs:655,1
    - Dst: OpCopy::default
      Src: /src/opendal/core/layers/timeout/src/lib.rs:656,1
    - Dst: OpCopier::default
      Src: /src/opendal/core/layers/timeout/src/lib.rs:656,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/layers/timeout/src/lib.rs:655,1
    - Dst: Result::next
      Src: /src/opendal/core/layers/timeout/src/lib.rs:659,1
    - Dst: unwrap_err
      Src: /src/opendal/core/layers/timeout/src/lib.rs:659,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 21
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 661
      start: 648
    functionDepth: 34
    functionLinenumber: 648
    functionLinenumberEnd: 661
    functionName: tests::test_copy_io_timeout
    functionSourceFile: /src/opendal/core/layers/timeout/src/lib.rs
    functionUses: 0
    functionsReached:
    - TimeoutLayer::default
    - unwrap_err
    - OpCopy::default
    - Arc::new
    - Self::with_io_timeout
    - Servicer::copy
    - OperationContext::new
    - Result::next
    - Self::apply_service
    - OpCopier::default
    - Result::unwrap
    - Duration::from_millis
    linkageType: ''
    returnType: void
    signature: async fn test_copy_io_timeout()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: TimeoutLayer::default
      Src: /src/opendal/core/layers/timeout/src/lib.rs:667,1
    - Dst: Self::with_timeout
      Src: /src/opendal/core/layers/timeout/src/lib.rs:667,1
    - Dst: Duration::from_secs
      Src: /src/opendal/core/layers/timeout/src/lib.rs:668,1
    - Dst: Self::with_io_timeout
      Src: /src/opendal/core/layers/timeout/src/lib.rs:667,1
    - Dst: Duration::from_secs
      Src: /src/opendal/core/layers/timeout/src/lib.rs:669,1
    - Dst: Self::apply_service
      Src: /src/opendal/core/layers/timeout/src/lib.rs:670,1
    - Dst: Arc::new
      Src: /src/opendal/core/layers/timeout/src/lib.rs:670,1
    - Dst: OperationContext::new
      Src: /src/opendal/core/layers/timeout/src/lib.rs:671,1
    - Dst: Servicer::list
      Src: /src/opendal/core/layers/timeout/src/lib.rs:673,1
    - Dst: OpList::default
      Src: /src/opendal/core/layers/timeout/src/lib.rs:673,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/layers/timeout/src/lib.rs:673,1
    - Dst: Result::next
      Src: /src/opendal/core/layers/timeout/src/lib.rs:675,1
    - Dst: unwrap_err
      Src: /src/opendal/core/layers/timeout/src/lib.rs:677,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 25
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 680
      start: 664
    functionDepth: 35
    functionLinenumber: 664
    functionLinenumberEnd: 680
    functionName: tests::test_list_timeout_raw
    functionSourceFile: /src/opendal/core/layers/timeout/src/lib.rs
    functionUses: 0
    functionsReached:
    - TimeoutLayer::default
    - unwrap_err
    - Self::with_timeout
    - Self::with_io_timeout
    - Arc::new
    - OpList::default
    - OperationContext::new
    - Result::next
    - Servicer::list
    - Self::apply_service
    - Result::unwrap
    - Duration::from_secs
    linkageType: ''
    returnType: void
    signature: async fn test_list_timeout_raw()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Arc::new
      Src: /src/opendal/core/layers/chaos/src/lib.rs:80,1
    - Dst: Mutex::new
      Src: /src/opendal/core/layers/chaos/src/lib.rs:80,1
    - Dst: StdRng::from_rng
      Src: /src/opendal/core/layers/chaos/src/lib.rs:80,1
    - Dst: rand::rng
      Src: /src/opendal/core/layers/chaos/src/lib.rs:80,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - error_ratio
    argTypes:
    - f64
    constantsTouched: []
    func_position:
      end: 83
      start: 74
    functionDepth: 2
    functionLinenumber: 74
    functionLinenumberEnd: 83
    functionName: ChaosLayer::new
    functionSourceFile: /src/opendal/core/layers/chaos/src/lib.rs
    functionUses: 0
    functionsReached:
    - StdRng::from_rng
    - Arc::new
    - Mutex::new
    - rand::rng
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(error_ratio: f64) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Arc::new
      Src: /src/opendal/core/layers/chaos/src/lib.rs:88,1
    - Dst: ChaosLayer::layer
      Src: /src/opendal/core/layers/chaos/src/lib.rs:88,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - inner
    argTypes:
    - Servicer
    constantsTouched: []
    func_position:
      end: 89
      start: 87
    functionDepth: 3
    functionLinenumber: 87
    functionLinenumberEnd: 89
    functionName: ChaosLayer::apply_service
    functionSourceFile: /src/opendal/core/layers/chaos/src/lib.rs
    functionUses: 0
    functionsReached:
    - ChaosLayer::layer
    - Arc::new
    linkageType: ''
    returnType: Servicer
    signature: 'fn apply_service(&self, inner: Servicer) -> Servicer'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: clone
      Src: /src/opendal/core/layers/chaos/src/lib.rs:96,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - inner
    argTypes:
    - Servicer
    constantsTouched: []
    func_position:
      end: 99
      start: 93
    functionDepth: 2
    functionLinenumber: 93
    functionLinenumberEnd: 99
    functionName: ChaosLayer::layer
    functionSourceFile: /src/opendal/core/layers/chaos/src/lib.rs
    functionUses: 1
    functionsReached:
    - clone
    linkageType: ''
    returnType: ChaosService
    signature: 'fn layer(&self, inner: Servicer) -> ChaosService'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: info
      Src: /src/opendal/core/layers/chaos/src/lib.rs:118,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 119
      start: 117
    functionDepth: 2
    functionLinenumber: 117
    functionLinenumberEnd: 119
    functionName: ChaosService::info
    functionSourceFile: /src/opendal/core/layers/chaos/src/lib.rs
    functionUses: 0
    functionsReached:
    - info
    linkageType: ''
    returnType: ServiceInfo
    signature: fn info(&self) -> ServiceInfo
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: capability
      Src: /src/opendal/core/layers/chaos/src/lib.rs:122,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 123
      start: 121
    functionDepth: 2
    functionLinenumber: 121
    functionLinenumberEnd: 123
    functionName: ChaosService::capability
    functionSourceFile: /src/opendal/core/layers/chaos/src/lib.rs
    functionUses: 0
    functionsReached:
    - capability
    linkageType: ''
    returnType: Capability
    signature: fn capability(&self) -> Capability
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: create_dir
      Src: /src/opendal/core/layers/chaos/src/lib.rs:131,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpCreateDir
    constantsTouched: []
    func_position:
      end: 132
      start: 125
    functionDepth: 35
    functionLinenumber: 125
    functionLinenumberEnd: 132
    functionName: ChaosService::create_dir
    functionSourceFile: /src/opendal/core/layers/chaos/src/lib.rs
    functionUses: 0
    functionsReached:
    - create_dir
    linkageType: ''
    returnType: Result
    signature: 'async fn create_dir(&self,ctx: &OperationContext,path: &str,args:
      OpCreateDir,) -> Result<RpCreateDir>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: stat
      Src: /src/opendal/core/layers/chaos/src/lib.rs:135,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpStat
    constantsTouched: []
    func_position:
      end: 136
      start: 134
    functionDepth: 31
    functionLinenumber: 134
    functionLinenumberEnd: 136
    functionName: ChaosService::stat
    functionSourceFile: /src/opendal/core/layers/chaos/src/lib.rs
    functionUses: 0
    functionsReached:
    - stat
    linkageType: ''
    returnType: Result
    signature: 'async fn stat(&self, ctx: &OperationContext, path: &str, args: OpStat)
      -> Result<RpStat>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: read
      Src: /src/opendal/core/layers/chaos/src/lib.rs:139,1
    - Dst: map
      Src: /src/opendal/core/layers/chaos/src/lib.rs:139,1
    - Dst: ChaosReader::new
      Src: /src/opendal/core/layers/chaos/src/lib.rs:141,1
    - Dst: Arc::clone
      Src: /src/opendal/core/layers/chaos/src/lib.rs:141,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpRead
    constantsTouched: []
    func_position:
      end: 142
      start: 138
    functionDepth: 31
    functionLinenumber: 138
    functionLinenumberEnd: 142
    functionName: ChaosService::read
    functionSourceFile: /src/opendal/core/layers/chaos/src/lib.rs
    functionUses: 0
    functionsReached:
    - read
    - ChaosReader::new
    - map
    - Arc::clone
    linkageType: ''
    returnType: Result
    signature: 'fn read(&self, ctx: &OperationContext, path: &str, args: OpRead) ->
      Result<Self::Reader>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: write
      Src: /src/opendal/core/layers/chaos/src/lib.rs:145,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpWrite
    constantsTouched: []
    func_position:
      end: 146
      start: 144
    functionDepth: 36
    functionLinenumber: 144
    functionLinenumberEnd: 146
    functionName: ChaosService::write
    functionSourceFile: /src/opendal/core/layers/chaos/src/lib.rs
    functionUses: 0
    functionsReached:
    - write
    linkageType: ''
    returnType: Result
    signature: 'fn write(&self, ctx: &OperationContext, path: &str, args: OpWrite)
      -> Result<Self::Writer>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: copy
      Src: /src/opendal/core/layers/chaos/src/lib.rs:156,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 5
    argNames:
    - ctx
    - from
    - to
    - args
    - opts
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    - OpCopy
    - OpCopier
    constantsTouched: []
    func_position:
      end: 157
      start: 148
    functionDepth: 34
    functionLinenumber: 148
    functionLinenumberEnd: 157
    functionName: ChaosService::copy
    functionSourceFile: /src/opendal/core/layers/chaos/src/lib.rs
    functionUses: 0
    functionsReached:
    - copy
    linkageType: ''
    returnType: Result
    signature: 'fn copy(&self,ctx: &OperationContext,from: &str,to: &str,args: OpCopy,opts:
      OpCopier,) -> Result<Self::Copier>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: list
      Src: /src/opendal/core/layers/chaos/src/lib.rs:160,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpList
    constantsTouched: []
    func_position:
      end: 161
      start: 159
    functionDepth: 2
    functionLinenumber: 159
    functionLinenumberEnd: 161
    functionName: ChaosService::list
    functionSourceFile: /src/opendal/core/layers/chaos/src/lib.rs
    functionUses: 0
    functionsReached:
    - list
    linkageType: ''
    returnType: Result
    signature: 'fn list(&self, ctx: &OperationContext, path: &str, args: OpList) ->
      Result<Self::Lister>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: delete
      Src: /src/opendal/core/layers/chaos/src/lib.rs:164,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - '&OperationContext'
    constantsTouched: []
    func_position:
      end: 165
      start: 163
    functionDepth: 32
    functionLinenumber: 163
    functionLinenumberEnd: 165
    functionName: ChaosService::delete
    functionSourceFile: /src/opendal/core/layers/chaos/src/lib.rs
    functionUses: 0
    functionsReached:
    - delete
    linkageType: ''
    returnType: Result
    signature: 'fn delete(&self, ctx: &OperationContext) -> Result<Self::Deleter>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: rename
      Src: /src/opendal/core/layers/chaos/src/lib.rs:174,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 4
    argNames:
    - ctx
    - from
    - to
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    - OpRename
    constantsTouched: []
    func_position:
      end: 175
      start: 167
    functionDepth: 2
    functionLinenumber: 167
    functionLinenumberEnd: 175
    functionName: ChaosService::rename
    functionSourceFile: /src/opendal/core/layers/chaos/src/lib.rs
    functionUses: 0
    functionsReached:
    - rename
    linkageType: ''
    returnType: Result
    signature: 'async fn rename(&self,ctx: &OperationContext,from: &str,to: &str,args:
      OpRename,) -> Result<RpRename>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: presign
      Src: /src/opendal/core/layers/chaos/src/lib.rs:183,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpPresign
    constantsTouched: []
    func_position:
      end: 184
      start: 177
    functionDepth: 2
    functionLinenumber: 177
    functionLinenumberEnd: 184
    functionName: ChaosService::presign
    functionSourceFile: /src/opendal/core/layers/chaos/src/lib.rs
    functionUses: 0
    functionsReached:
    - presign
    linkageType: ''
    returnType: Result
    signature: 'async fn presign(&self,ctx: &OperationContext,path: &str,args: OpPresign,)
      -> Result<RpPresign>'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 3
    argNames:
    - inner
    - rng
    - error_ratio
    argTypes:
    - R
    - Arc<Mutex<StdRng>>
    - f64
    constantsTouched: []
    func_position:
      end: 202
      start: 196
    functionDepth: 0
    functionLinenumber: 196
    functionLinenumberEnd: 202
    functionName: ChaosReader::new
    functionSourceFile: /src/opendal/core/layers/chaos/src/lib.rs
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: 'fn new(inner: R, rng: Arc<Mutex<StdRng>>, error_ratio: f64) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/opendal/core/layers/chaos/src/lib.rs:207,1
    - Dst: unwrap
      Src: /src/opendal/core/layers/chaos/src/lib.rs:207,1
    - Dst: random_range
      Src: /src/opendal/core/layers/chaos/src/lib.rs:207,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 209
      start: 206
    functionDepth: 33
    functionLinenumber: 206
    functionLinenumberEnd: 209
    functionName: ChaosReader::i_feel_lucky
    functionSourceFile: /src/opendal/core/layers/chaos/src/lib.rs
    functionUses: 2
    functionsReached:
    - random_range
    - unwrap
    - lock
    linkageType: ''
    returnType: bool
    signature: fn i_feel_lucky(&self) -> bool
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Error::new
      Src: /src/opendal/core/layers/chaos/src/lib.rs:212,1
    - Dst: Self::with_operation
      Src: /src/opendal/core/layers/chaos/src/lib.rs:212,1
    - Dst: Self::set_temporary
      Src: /src/opendal/core/layers/chaos/src/lib.rs:212,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 215
      start: 211
    functionDepth: 36
    functionLinenumber: 211
    functionLinenumberEnd: 215
    functionName: ChaosReader::unexpected_eof
    functionSourceFile: /src/opendal/core/layers/chaos/src/lib.rs
    functionUses: 0
    functionsReached:
    - Self::with_operation
    - Self::set_temporary
    - Error::new
    linkageType: ''
    returnType: Error
    signature: fn unexpected_eof() -> Error
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: ChaosReader::i_feel_lucky
      Src: /src/opendal/core/layers/chaos/src/lib.rs:243,1
    - Dst: read
      Src: /src/opendal/core/layers/chaos/src/lib.rs:244,1
    - Dst: Err
      Src: /src/opendal/core/layers/chaos/src/lib.rs:246,1
    - Dst: Self::unexpected_eof
      Src: /src/opendal/core/layers/chaos/src/lib.rs:246,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - range
    argTypes:
    - BytesRange
    constantsTouched: []
    func_position:
      end: 248
      start: 242
    functionDepth: 34
    functionLinenumber: 242
    functionLinenumberEnd: 248
    functionName: ChaosReader::read
    functionSourceFile: /src/opendal/core/layers/chaos/src/lib.rs
    functionUses: 0
    functionsReached:
    - Self::unexpected_eof
    - read
    - ChaosReader::i_feel_lucky
    - Err
    linkageType: ''
    returnType: Result
    signature: 'async fn read(&self, range: BytesRange) -> Result<(RpRead, Buffer)>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: ChaosReader::i_feel_lucky
      Src: /src/opendal/core/layers/chaos/src/lib.rs:230,1
    - Dst: open
      Src: /src/opendal/core/layers/chaos/src/lib.rs:231,1
    - Dst: Ok
      Src: /src/opendal/core/layers/chaos/src/lib.rs:232,1
    - Dst: Box::new
      Src: /src/opendal/core/layers/chaos/src/lib.rs:234,1
    - Dst: ChaosReader::new
      Src: /src/opendal/core/layers/chaos/src/lib.rs:234,1
    - Dst: clone
      Src: /src/opendal/core/layers/chaos/src/lib.rs:234,1
    - Dst: Err
      Src: /src/opendal/core/layers/chaos/src/lib.rs:238,1
    - Dst: Self::unexpected_eof
      Src: /src/opendal/core/layers/chaos/src/lib.rs:238,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 20
    argCount: 1
    argNames:
    - range
    argTypes:
    - BytesRange
    constantsTouched: []
    func_position:
      end: 240
      start: 229
    functionDepth: 34
    functionLinenumber: 229
    functionLinenumberEnd: 240
    functionName: ChaosReader::open
    functionSourceFile: /src/opendal/core/layers/chaos/src/lib.rs
    functionUses: 0
    functionsReached:
    - Ok
    - Box::new
    - clone
    - Err
    - ChaosReader::new
    - ChaosReader::i_feel_lucky
    - open
    - Self::unexpected_eof
    linkageType: ''
    returnType: Result
    signature: 'async fn open(&self, range: BytesRange) -> Result<(RpRead, Box<dyn
      oio::ReadStreamDyn>)>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: FastmetricsLayerBuilder::default
      Src: /src/opendal/core/layers/fastmetrics/src/lib.rs:143,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 144
      start: 142
    functionDepth: 5
    functionLinenumber: 142
    functionLinenumberEnd: 144
    functionName: FastmetricsLayer::builder
    functionSourceFile: /src/opendal/core/layers/fastmetrics/src/lib.rs
    functionUses: 0
    functionsReached:
    - FastmetricsLayerBuilder::default
    linkageType: ''
    returnType: FastmetricsLayerBuilder
    signature: pub fn builder() -> FastmetricsLayerBuilder
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: observe::MetricsLayer::new
      Src: /src/opendal/core/layers/fastmetrics/src/lib.rs:149,1
    - Dst: clone
      Src: /src/opendal/core/layers/fastmetrics/src/lib.rs:149,1
    - Dst: Self::apply_service
      Src: /src/opendal/core/layers/fastmetrics/src/lib.rs:149,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - inner
    argTypes:
    - Servicer
    constantsTouched: []
    func_position:
      end: 150
      start: 148
    functionDepth: 3
    functionLinenumber: 148
    functionLinenumberEnd: 150
    functionName: FastmetricsLayer::apply_service
    functionSourceFile: /src/opendal/core/layers/fastmetrics/src/lib.rs
    functionUses: 0
    functionsReached:
    - observe::MetricsLayer::new
    - Self::apply_service
    - clone
    linkageType: ''
    returnType: Servicer
    signature: 'fn apply_service(&self, inner: Servicer) -> Servicer'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: observe::MetricsLayer::new
      Src: /src/opendal/core/layers/fastmetrics/src/lib.rs:154,1
    - Dst: clone
      Src: /src/opendal/core/layers/fastmetrics/src/lib.rs:154,1
    - Dst: Self::apply_context
      Src: /src/opendal/core/layers/fastmetrics/src/lib.rs:154,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - srv
    - inner
    argTypes:
    - Servicer
    - OperationContext
    constantsTouched: []
    func_position:
      end: 155
      start: 153
    functionDepth: 2
    functionLinenumber: 153
    functionLinenumberEnd: 155
    functionName: FastmetricsLayer::apply_context
    functionSourceFile: /src/opendal/core/layers/fastmetrics/src/lib.rs
    functionUses: 0
    functionsReached:
    - observe::MetricsLayer::new
    - Self::apply_context
    - clone
    linkageType: ''
    returnType: OperationContext
    signature: 'fn apply_context(&self, srv: Servicer, inner: OperationContext) ->
      OperationContext'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: to_vec
      Src: /src/opendal/core/layers/fastmetrics/src/lib.rs:172,1
    - Dst: to_vec
      Src: /src/opendal/core/layers/fastmetrics/src/lib.rs:173,1
    - Dst: to_vec
      Src: /src/opendal/core/layers/fastmetrics/src/lib.rs:174,1
    - Dst: to_vec
      Src: /src/opendal/core/layers/fastmetrics/src/lib.rs:175,1
    - Dst: to_vec
      Src: /src/opendal/core/layers/fastmetrics/src/lib.rs:176,1
    - Dst: to_vec
      Src: /src/opendal/core/layers/fastmetrics/src/lib.rs:177,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 180
      start: 170
    functionDepth: 4
    functionLinenumber: 170
    functionLinenumberEnd: 180
    functionName: FastmetricsLayerBuilder::default
    functionSourceFile: /src/opendal/core/layers/fastmetrics/src/lib.rs
    functionUses: 1
    functionsReached:
    - to_vec
    linkageType: ''
    returnType: Self
    signature: fn default() -> Self
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self::is_empty
      Src: /src/opendal/core/layers/fastmetrics/src/lib.rs:186,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - buckets
    argTypes:
    - Vec<f64>
    constantsTouched: []
    func_position:
      end: 190
      start: 185
    functionDepth: 4
    functionLinenumber: 185
    functionLinenumberEnd: 190
    functionName: FastmetricsLayerBuilder::bytes_buckets
    functionSourceFile: /src/opendal/core/layers/fastmetrics/src/lib.rs
    functionUses: 0
    functionsReached:
    - Self::is_empty
    linkageType: ''
    returnType: Self
    signature: 'pub fn bytes_buckets(mut self, buckets: Vec<f64>) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self::is_empty
      Src: /src/opendal/core/layers/fastmetrics/src/lib.rs:194,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - buckets
    argTypes:
    - Vec<f64>
    constantsTouched: []
    func_position:
      end: 198
      start: 193
    functionDepth: 4
    functionLinenumber: 193
    functionLinenumberEnd: 198
    functionName: FastmetricsLayerBuilder::bytes_rate_buckets
    functionSourceFile: /src/opendal/core/layers/fastmetrics/src/lib.rs
    functionUses: 0
    functionsReached:
    - Self::is_empty
    linkageType: ''
    returnType: Self
    signature: 'pub fn bytes_rate_buckets(mut self, buckets: Vec<f64>) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self::is_empty
      Src: /src/opendal/core/layers/fastmetrics/src/lib.rs:202,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - buckets
    argTypes:
    - Vec<f64>
    constantsTouched: []
    func_position:
      end: 206
      start: 201
    functionDepth: 4
    functionLinenumber: 201
    functionLinenumberEnd: 206
    functionName: FastmetricsLayerBuilder::entries_buckets
    functionSourceFile: /src/opendal/core/layers/fastmetrics/src/lib.rs
    functionUses: 0
    functionsReached:
    - Self::is_empty
    linkageType: ''
    returnType: Self
    signature: 'pub fn entries_buckets(mut self, buckets: Vec<f64>) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self::is_empty
      Src: /src/opendal/core/layers/fastmetrics/src/lib.rs:210,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - buckets
    argTypes:
    - Vec<f64>
    constantsTouched: []
    func_position:
      end: 214
      start: 209
    functionDepth: 4
    functionLinenumber: 209
    functionLinenumberEnd: 214
    functionName: FastmetricsLayerBuilder::entries_rate_buckets
    functionSourceFile: /src/opendal/core/layers/fastmetrics/src/lib.rs
    functionUses: 0
    functionsReached:
    - Self::is_empty
    linkageType: ''
    returnType: Self
    signature: 'pub fn entries_rate_buckets(mut self, buckets: Vec<f64>) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self::is_empty
      Src: /src/opendal/core/layers/fastmetrics/src/lib.rs:218,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - buckets
    argTypes:
    - Vec<f64>
    constantsTouched: []
    func_position:
      end: 222
      start: 217
    functionDepth: 4
    functionLinenumber: 217
    functionLinenumberEnd: 222
    functionName: FastmetricsLayerBuilder::duration_seconds_buckets
    functionSourceFile: /src/opendal/core/layers/fastmetrics/src/lib.rs
    functionUses: 0
    functionsReached:
    - Self::is_empty
    linkageType: ''
    returnType: Self
    signature: 'pub fn duration_seconds_buckets(mut self, buckets: Vec<f64>) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self::is_empty
      Src: /src/opendal/core/layers/fastmetrics/src/lib.rs:226,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - buckets
    argTypes:
    - Vec<f64>
    constantsTouched: []
    func_position:
      end: 230
      start: 225
    functionDepth: 4
    functionLinenumber: 225
    functionLinenumberEnd: 230
    functionName: FastmetricsLayerBuilder::ttfb_buckets
    functionSourceFile: /src/opendal/core/layers/fastmetrics/src/lib.rs
    functionUses: 0
    functionsReached:
    - Self::is_empty
    linkageType: ''
    returnType: Self
    signature: 'pub fn ttfb_buckets(mut self, buckets: Vec<f64>) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - disable
    argTypes:
    - bool
    constantsTouched: []
    func_position:
      end: 237
      start: 234
    functionDepth: 0
    functionLinenumber: 234
    functionLinenumberEnd: 237
    functionName: FastmetricsLayerBuilder::disable_label_root
    functionSourceFile: /src/opendal/core/layers/fastmetrics/src/lib.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: 'pub fn disable_label_root(mut self, disable: bool) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Family::new
      Src: /src/opendal/core/layers/fastmetrics/src/lib.rs:271,1
    - Dst: Histogram::new
      Src: /src/opendal/core/layers/fastmetrics/src/lib.rs:271,1
    - Dst: Self::iter
      Src: /src/opendal/core/layers/fastmetrics/src/lib.rs:271,1
    - Dst: copied
      Src: /src/opendal/core/layers/fastmetrics/src/lib.rs:271,1
    - Dst: new_hist_family
      Src: /src/opendal/core/layers/fastmetrics/src/lib.rs:274,1
    - Dst: Self::clone
      Src: /src/opendal/core/layers/fastmetrics/src/lib.rs:274,1
    - Dst: new_hist_family
      Src: /src/opendal/core/layers/fastmetrics/src/lib.rs:275,1
    - Dst: Self::clone
      Src: /src/opendal/core/layers/fastmetrics/src/lib.rs:275,1
    - Dst: new_hist_family
      Src: /src/opendal/core/layers/fastmetrics/src/lib.rs:276,1
    - Dst: new_hist_family
      Src: /src/opendal/core/layers/fastmetrics/src/lib.rs:277,1
    - Dst: new_hist_family
      Src: /src/opendal/core/layers/fastmetrics/src/lib.rs:278,1
    - Dst: Self::clone
      Src: /src/opendal/core/layers/fastmetrics/src/lib.rs:278,1
    - Dst: Family::default
      Src: /src/opendal/core/layers/fastmetrics/src/lib.rs:279,1
    - Dst: Family::default
      Src: /src/opendal/core/layers/fastmetrics/src/lib.rs:280,1
    - Dst: new_hist_family
      Src: /src/opendal/core/layers/fastmetrics/src/lib.rs:281,1
    - Dst: Family::default
      Src: /src/opendal/core/layers/fastmetrics/src/lib.rs:283,1
    - Dst: new_hist_family
      Src: /src/opendal/core/layers/fastmetrics/src/lib.rs:284,1
    - Dst: Self::clone
      Src: /src/opendal/core/layers/fastmetrics/src/lib.rs:284,1
    - Dst: new_hist_family
      Src: /src/opendal/core/layers/fastmetrics/src/lib.rs:285,1
    - Dst: Self::clone
      Src: /src/opendal/core/layers/fastmetrics/src/lib.rs:285,1
    - Dst: new_hist_family
      Src: /src/opendal/core/layers/fastmetrics/src/lib.rs:286,1
    - Dst: Self::clone
      Src: /src/opendal/core/layers/fastmetrics/src/lib.rs:286,1
    - Dst: new_hist_family
      Src: /src/opendal/core/layers/fastmetrics/src/lib.rs:287,1
    - Dst: new_hist_family
      Src: /src/opendal/core/layers/fastmetrics/src/lib.rs:288,1
    - Dst: new_hist_family
      Src: /src/opendal/core/layers/fastmetrics/src/lib.rs:289,1
    - Dst: Family::default
      Src: /src/opendal/core/layers/fastmetrics/src/lib.rs:290,1
    - Dst: Family::default
      Src: /src/opendal/core/layers/fastmetrics/src/lib.rs:291,1
    - Dst: register
      Src: /src/opendal/core/layers/fastmetrics/src/lib.rs:315,1
    - Dst: map_err
      Src: /src/opendal/core/layers/fastmetrics/src/lib.rs:315,1
    - Dst: Error::new
      Src: /src/opendal/core/layers/fastmetrics/src/lib.rs:317,1
    - Dst: Error::to_string
      Src: /src/opendal/core/layers/fastmetrics/src/lib.rs:317,1
    - Dst: Self::set_source
      Src: /src/opendal/core/layers/fastmetrics/src/lib.rs:317,1
    - Dst: Ok
      Src: /src/opendal/core/layers/fastmetrics/src/lib.rs:319,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 52
    argCount: 1
    argNames:
    - registry
    argTypes:
    - '&mut Registry'
    constantsTouched: []
    func_position:
      end: 320
      start: 259
    functionDepth: 39
    functionLinenumber: 259
    functionLinenumberEnd: 320
    functionName: FastmetricsLayerBuilder::register
    functionSourceFile: /src/opendal/core/layers/fastmetrics/src/lib.rs
    functionUses: 1
    functionsReached:
    - map_err
    - new_hist_family
    - Family::default
    - Ok
    - Error::to_string
    - copied
    - Error::new
    - Family::new
    - Histogram::new
    - register
    - Self::clone
    - Self::set_source
    - Self::iter
    linkageType: ''
    returnType: Result
    signature: 'pub fn register(self, registry: &mut Registry) -> Result<FastmetricsLayer>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: fastmetrics::registry::with_global_registry_mut
      Src: /src/opendal/core/layers/fastmetrics/src/lib.rs:341,1
    - Dst: FastmetricsLayerBuilder::register
      Src: /src/opendal/core/layers/fastmetrics/src/lib.rs:341,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 342
      start: 340
    functionDepth: 40
    functionLinenumber: 340
    functionLinenumberEnd: 342
    functionName: FastmetricsLayerBuilder::register_global
    functionSourceFile: /src/opendal/core/layers/fastmetrics/src/lib.rs
    functionUses: 0
    functionsReached:
    - FastmetricsLayerBuilder::register
    - fastmetrics::registry::with_global_registry_mut
    linkageType: ''
    returnType: Result
    signature: pub fn register_global(self) -> Result<FastmetricsLayer>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/core/layers/fastmetrics/src/lib.rs:406,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - registry
    argTypes:
    - '&mut Registry'
    constantsTouched: []
    func_position:
      end: 407
      start: 371
    functionDepth: 0
    functionLinenumber: 371
    functionLinenumberEnd: 407
    functionName: FastmetricsInterceptor::register
    functionSourceFile: /src/opendal/core/layers/fastmetrics/src/lib.rs
    functionUses: 0
    functionsReached:
    - Ok
    linkageType: ''
    returnType: fastmetrics::error::Result
    signature: 'fn register(&self, registry: &mut Registry) -> fastmetrics::error::Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: with_or_new
      Src: /src/opendal/core/layers/fastmetrics/src/lib.rs:418,1
    - Dst: observe
      Src: /src/opendal/core/layers/fastmetrics/src/lib.rs:419,1
    - Dst: with_or_new
      Src: /src/opendal/core/layers/fastmetrics/src/lib.rs:422,1
    - Dst: observe
      Src: /src/opendal/core/layers/fastmetrics/src/lib.rs:423,1
    - Dst: with_or_new
      Src: /src/opendal/core/layers/fastmetrics/src/lib.rs:426,1
    - Dst: observe
      Src: /src/opendal/core/layers/fastmetrics/src/lib.rs:427,1
    - Dst: with_or_new
      Src: /src/opendal/core/layers/fastmetrics/src/lib.rs:430,1
    - Dst: observe
      Src: /src/opendal/core/layers/fastmetrics/src/lib.rs:431,1
    - Dst: with_or_new
      Src: /src/opendal/core/layers/fastmetrics/src/lib.rs:434,1
    - Dst: observe
      Src: /src/opendal/core/layers/fastmetrics/src/lib.rs:435,1
    - Dst: Result::as_secs_f64
      Src: /src/opendal/core/layers/fastmetrics/src/lib.rs:435,1
    - Dst: with_or_new
      Src: /src/opendal/core/layers/fastmetrics/src/lib.rs:438,1
    - Dst: '&''static Mutex::inc'
      Src: /src/opendal/core/layers/fastmetrics/src/lib.rs:439,1
    - Dst: with_or_new
      Src: /src/opendal/core/layers/fastmetrics/src/lib.rs:442,1
    - Dst: inc_by
      Src: /src/opendal/core/layers/fastmetrics/src/lib.rs:443,1
    - Dst: with_or_new
      Src: /src/opendal/core/layers/fastmetrics/src/lib.rs:446,1
    - Dst: observe
      Src: /src/opendal/core/layers/fastmetrics/src/lib.rs:447,1
    - Dst: Result::as_secs_f64
      Src: /src/opendal/core/layers/fastmetrics/src/lib.rs:447,1
    - Dst: with_or_new
      Src: /src/opendal/core/layers/fastmetrics/src/lib.rs:451,1
    - Dst: inc_by
      Src: /src/opendal/core/layers/fastmetrics/src/lib.rs:452,1
    - Dst: with_or_new
      Src: /src/opendal/core/layers/fastmetrics/src/lib.rs:455,1
    - Dst: observe
      Src: /src/opendal/core/layers/fastmetrics/src/lib.rs:456,1
    - Dst: with_or_new
      Src: /src/opendal/core/layers/fastmetrics/src/lib.rs:459,1
    - Dst: observe
      Src: /src/opendal/core/layers/fastmetrics/src/lib.rs:460,1
    - Dst: with_or_new
      Src: /src/opendal/core/layers/fastmetrics/src/lib.rs:463,1
    - Dst: observe
      Src: /src/opendal/core/layers/fastmetrics/src/lib.rs:464,1
    - Dst: Result::as_secs_f64
      Src: /src/opendal/core/layers/fastmetrics/src/lib.rs:464,1
    - Dst: with_or_new
      Src: /src/opendal/core/layers/fastmetrics/src/lib.rs:467,1
    - Dst: observe
      Src: /src/opendal/core/layers/fastmetrics/src/lib.rs:468,1
    - Dst: with_or_new
      Src: /src/opendal/core/layers/fastmetrics/src/lib.rs:471,1
    - Dst: observe
      Src: /src/opendal/core/layers/fastmetrics/src/lib.rs:472,1
    - Dst: with_or_new
      Src: /src/opendal/core/layers/fastmetrics/src/lib.rs:475,1
    - Dst: observe
      Src: /src/opendal/core/layers/fastmetrics/src/lib.rs:476,1
    - Dst: Result::as_secs_f64
      Src: /src/opendal/core/layers/fastmetrics/src/lib.rs:476,1
    - Dst: with_or_new
      Src: /src/opendal/core/layers/fastmetrics/src/lib.rs:479,1
    - Dst: '&''static Mutex::inc'
      Src: /src/opendal/core/layers/fastmetrics/src/lib.rs:480,1
    - Dst: with_or_new
      Src: /src/opendal/core/layers/fastmetrics/src/lib.rs:483,1
    - Dst: '&''static Mutex::inc'
      Src: /src/opendal/core/layers/fastmetrics/src/lib.rs:484,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 154
    argCount: 2
    argNames:
    - labels
    - value
    argTypes:
    - observe::MetricLabels
    - observe::MetricValue
    constantsTouched: []
    func_position:
      end: 488
      start: 411
    functionDepth: 32
    functionLinenumber: 411
    functionLinenumberEnd: 488
    functionName: FastmetricsInterceptor::observe
    functionSourceFile: /src/opendal/core/layers/fastmetrics/src/lib.rs
    functionUses: 0
    functionsReached:
    - Result::as_secs_f64
    - '&''static Mutex::inc'
    - inc_by
    - with_or_new
    - observe
    linkageType: ''
    returnType: void
    signature: 'fn observe(&self, labels: observe::MetricLabels, value: observe::MetricValue)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: OperationLabelNames
      Src: /src/opendal/core/layers/prometheus/src/lib.rs:668,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 674
      start: 667
    functionDepth: 0
    functionLinenumber: 667
    functionLinenumberEnd: 674
    functionName: OperationLabels::names
    functionSourceFile: /src/opendal/core/layers/prometheus/src/lib.rs
    functionUses: 1
    functionsReached:
    - OperationLabelNames
    linkageType: ''
    returnType: OperationLabelNames
    signature: fn names() -> OperationLabelNames
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: encode
      Src: /src/opendal/core/layers/prometheus-client/src/lib.rs:497,1
    - Dst: '&mut LabelSetEncoder<''_>::encode_label'
      Src: /src/opendal/core/layers/prometheus-client/src/lib.rs:497,1
    - Dst: as_ref
      Src: /src/opendal/core/layers/prometheus-client/src/lib.rs:498,1
    - Dst: encode
      Src: /src/opendal/core/layers/prometheus-client/src/lib.rs:498,1
    - Dst: '&mut LabelSetEncoder<''_>::encode_label'
      Src: /src/opendal/core/layers/prometheus-client/src/lib.rs:499,1
    - Dst: as_ref
      Src: /src/opendal/core/layers/prometheus-client/src/lib.rs:501,1
    - Dst: encode
      Src: /src/opendal/core/layers/prometheus-client/src/lib.rs:501,1
    - Dst: '&mut LabelSetEncoder<''_>::encode_label'
      Src: /src/opendal/core/layers/prometheus-client/src/lib.rs:501,1
    - Dst: encode
      Src: /src/opendal/core/layers/prometheus-client/src/lib.rs:503,1
    - Dst: '&mut LabelSetEncoder<''_>::encode_label'
      Src: /src/opendal/core/layers/prometheus-client/src/lib.rs:503,1
    - Dst: Self::into_static
      Src: /src/opendal/core/layers/prometheus-client/src/lib.rs:506,1
    - Dst: encode
      Src: /src/opendal/core/layers/prometheus-client/src/lib.rs:506,1
    - Dst: '&mut LabelSetEncoder<''_>::encode_label'
      Src: /src/opendal/core/layers/prometheus-client/src/lib.rs:506,1
    - Dst: std::fmt::Result::as_str
      Src: /src/opendal/core/layers/prometheus-client/src/lib.rs:509,1
    - Dst: encode
      Src: /src/opendal/core/layers/prometheus-client/src/lib.rs:509,1
    - Dst: '&mut LabelSetEncoder<''_>::encode_label'
      Src: /src/opendal/core/layers/prometheus-client/src/lib.rs:509,1
    - Dst: encode
      Src: /src/opendal/core/layers/prometheus-client/src/lib.rs:512,1
    - Dst: '&mut LabelSetEncoder<''_>::encode_label'
      Src: /src/opendal/core/layers/prometheus-client/src/lib.rs:512,1
    - Dst: Ok
      Src: /src/opendal/core/layers/prometheus-client/src/lib.rs:514,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 85
    argCount: 1
    argNames:
    - encoder
    argTypes:
    - '&mut LabelSetEncoder<''_>'
    constantsTouched: []
    func_position:
      end: 515
      start: 496
    functionDepth: 30
    functionLinenumber: 496
    functionLinenumberEnd: 515
    functionName: OperationLabels::encode
    functionSourceFile: /src/opendal/core/layers/prometheus-client/src/lib.rs
    functionUses: 0
    functionsReached:
    - Self::into_static
    - Ok
    - encode
    - as_ref
    - std::fmt::Result::as_str
    - '&mut LabelSetEncoder<''_>::encode_label'
    linkageType: ''
    returnType: std::fmt::Result
    signature: 'fn encode(&self, encoder: &mut LabelSetEncoder<''_>) -> std::fmt::Result'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self::new
      Src: /src/opendal/bindings/nodejs/src/layer.rs:397,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 398
      start: 396
    functionDepth: 2
    functionLinenumber: 396
    functionLinenumberEnd: 398
    functionName: LoggingLayer::default
    functionSourceFile: /src/opendal/bindings/nodejs/src/layer.rs
    functionUses: 6
    functionsReached:
    - Self::new
    linkageType: ''
    returnType: Self
    signature: fn default() -> Self
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 406
      start: 404
    functionDepth: 0
    functionLinenumber: 404
    functionLinenumberEnd: 406
    functionName: LoggingLayer::new
    functionSourceFile: /src/opendal/bindings/nodejs/src/layer.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: pub fn new() -> Self
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Arc::new
      Src: /src/opendal/core/layers/logging/src/lib.rs:135,1
    - Dst: LoggingLayer::layer
      Src: /src/opendal/core/layers/logging/src/lib.rs:135,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - inner
    argTypes:
    - Servicer
    constantsTouched: []
    func_position:
      end: 136
      start: 134
    functionDepth: 5
    functionLinenumber: 134
    functionLinenumberEnd: 136
    functionName: LoggingLayer::apply_service
    functionSourceFile: /src/opendal/core/layers/logging/src/lib.rs
    functionUses: 0
    functionsReached:
    - Arc::new
    - LoggingLayer::layer
    linkageType: ''
    returnType: Servicer
    signature: 'fn apply_service(&self, inner: Servicer) -> Servicer'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Arc::info
      Src: /src/opendal/core/layers/logging/src/lib.rs:141,1
    - Dst: clone
      Src: /src/opendal/core/layers/logging/src/lib.rs:145,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - inner
    argTypes:
    - Servicer
    constantsTouched: []
    func_position:
      end: 147
      start: 140
    functionDepth: 4
    functionLinenumber: 140
    functionLinenumberEnd: 147
    functionName: LoggingLayer::layer
    functionSourceFile: /src/opendal/core/layers/logging/src/lib.rs
    functionUses: 1
    functionsReached:
    - clone
    - Arc::info
    linkageType: ''
    returnType: LoggingService
    signature: 'fn layer(&self, inner: Servicer) -> LoggingService<I>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Error::kind
      Src: /src/opendal/core/layers/logging/src/lib.rs:192,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 5
    argNames:
    - info
    - operation
    - context
    - message
    - err
    argTypes:
    - '&ServiceInfo'
    - Operation
    - '&[(&str, &str)]'
    - '&str'
    - Option<&Error>
    constantsTouched: []
    func_position:
      end: 223
      start: 181
    functionDepth: 1
    functionLinenumber: 181
    functionLinenumberEnd: 223
    functionName: DefaultLoggingInterceptor::log
    functionSourceFile: /src/opendal/core/layers/logging/src/lib.rs
    functionUses: 0
    functionsReached:
    - Error::kind
    linkageType: ''
    returnType: void
    signature: 'fn log(&self,info: &ServiceInfo,operation: Operation,context: &[(&str,
      &str)],message: &str,err: Option<&Error>,)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: iter
      Src: /src/opendal/core/layers/logging/src/lib.rs:230,1
    - Dst: Ok
      Src: /src/opendal/core/layers/logging/src/lib.rs:233,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - f
    argTypes:
    - '&mut std::fmt::Formatter<''_>'
    constantsTouched: []
    func_position:
      end: 234
      start: 229
    functionDepth: 1
    functionLinenumber: 229
    functionLinenumberEnd: 234
    functionName: LoggingContext::fmt
    functionSourceFile: /src/opendal/core/layers/logging/src/lib.rs
    functionUses: 0
    functionsReached:
    - iter
    - Ok
    linkageType: ''
    returnType: std::fmt::Result
    signature: 'fn fmt(&self, f: &mut std::fmt::Formatter<''_>) -> std::fmt::Result'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::debug_struct
      Src: /src/opendal/core/layers/logging/src/lib.rs:246,1
    - Dst: field
      Src: /src/opendal/core/layers/logging/src/lib.rs:246,1
    - Dst: field
      Src: /src/opendal/core/layers/logging/src/lib.rs:246,1
    - Dst: finish_non_exhaustive
      Src: /src/opendal/core/layers/logging/src/lib.rs:246,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 1
    argNames:
    - f
    argTypes:
    - '&mut std::fmt::Formatter<''_>'
    constantsTouched: []
    func_position:
      end: 250
      start: 245
    functionDepth: 5
    functionLinenumber: 245
    functionLinenumberEnd: 250
    functionName: LoggingService::fmt
    functionSourceFile: /src/opendal/core/layers/logging/src/lib.rs
    functionUses: 0
    functionsReached:
    - field
    - Result::debug_struct
    - finish_non_exhaustive
    linkageType: ''
    returnType: std::fmt::Result
    signature: 'fn fmt(&self, f: &mut std::fmt::Formatter<''_>) -> std::fmt::Result'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: log::log
      Src: /src/opendal/core/layers/logging/src/lib.rs:255,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - op
    - context
    argTypes:
    - Operation
    - '&[(&str, &str)]'
    constantsTouched: []
    func_position:
      end: 256
      start: 254
    functionDepth: 2
    functionLinenumber: 254
    functionLinenumberEnd: 256
    functionName: LoggingService::log_start
    functionSourceFile: /src/opendal/core/layers/logging/src/lib.rs
    functionUses: 9
    functionsReached:
    - log::log
    linkageType: ''
    returnType: void
    signature: 'fn log_start(&self, op: Operation, context: &[(&str, &str)])'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Error::is_some
      Src: /src/opendal/core/layers/logging/src/lib.rs:259,1
    - Dst: log::log
      Src: /src/opendal/core/layers/logging/src/lib.rs:260,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 3
    argNames:
    - op
    - context
    - err
    argTypes:
    - Operation
    - '&[(&str, &str)]'
    - Option<&Error>
    constantsTouched: []
    func_position:
      end: 261
      start: 258
    functionDepth: 2
    functionLinenumber: 258
    functionLinenumberEnd: 261
    functionName: LoggingService::log_finish
    functionSourceFile: /src/opendal/core/layers/logging/src/lib.rs
    functionUses: 4
    functionsReached:
    - log::log
    - Error::is_some
    linkageType: ''
    returnType: void
    signature: 'fn log_finish(&self, op: Operation, context: &[(&str, &str)], err:
      Option<&Error>)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: clone
      Src: /src/opendal/core/layers/logging/src/lib.rs:272,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 273
      start: 271
    functionDepth: 2
    functionLinenumber: 271
    functionLinenumberEnd: 273
    functionName: LoggingService::info
    functionSourceFile: /src/opendal/core/layers/logging/src/lib.rs
    functionUses: 0
    functionsReached:
    - clone
    linkageType: ''
    returnType: ServiceInfo
    signature: fn info(&self) -> ServiceInfo
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: capability
      Src: /src/opendal/core/layers/logging/src/lib.rs:276,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 277
      start: 275
    functionDepth: 2
    functionLinenumber: 275
    functionLinenumberEnd: 277
    functionName: LoggingService::capability
    functionSourceFile: /src/opendal/core/layers/logging/src/lib.rs
    functionUses: 0
    functionsReached:
    - capability
    linkageType: ''
    returnType: Capability
    signature: fn capability(&self) -> Capability
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: LoggingService::log_start
      Src: /src/opendal/core/layers/logging/src/lib.rs:285,1
    - Dst: create_dir
      Src: /src/opendal/core/layers/logging/src/lib.rs:286,1
    - Dst: LoggingService::log_finish
      Src: /src/opendal/core/layers/logging/src/lib.rs:287,1
    - Dst: bool::as_ref
      Src: /src/opendal/core/layers/logging/src/lib.rs:290,1
    - Dst: '&[&''static str]::err'
      Src: /src/opendal/core/layers/logging/src/lib.rs:290,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 20
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpCreateDir
    constantsTouched: []
    func_position:
      end: 293
      start: 279
    functionDepth: 35
    functionLinenumber: 279
    functionLinenumberEnd: 293
    functionName: LoggingService::create_dir
    functionSourceFile: /src/opendal/core/layers/logging/src/lib.rs
    functionUses: 0
    functionsReached:
    - LoggingService::log_finish
    - bool::as_ref
    - LoggingService::log_start
    - create_dir
    - '&[&''static str]::err'
    linkageType: ''
    returnType: Result
    signature: 'async fn create_dir(&self,ctx: &OperationContext,path: &str,args:
      OpCreateDir,) -> Result<RpCreateDir>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: LoggingService::log_start
      Src: /src/opendal/core/layers/logging/src/lib.rs:296,1
    - Dst: read
      Src: /src/opendal/core/layers/logging/src/lib.rs:297,1
    - Dst: map
      Src: /src/opendal/core/layers/logging/src/lib.rs:297,1
    - Dst: log::log
      Src: /src/opendal/core/layers/logging/src/lib.rs:300,1
    - Dst: LoggingReader::new
      Src: /src/opendal/core/layers/logging/src/lib.rs:307,1
    - Dst: clone
      Src: /src/opendal/core/layers/logging/src/lib.rs:307,1
    - Dst: clone
      Src: /src/opendal/core/layers/logging/src/lib.rs:307,1
    - Dst: inspect_err
      Src: /src/opendal/core/layers/logging/src/lib.rs:297,1
    - Dst: log::log
      Src: /src/opendal/core/layers/logging/src/lib.rs:310,1
    - Dst: Some
      Src: /src/opendal/core/layers/logging/src/lib.rs:315,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 41
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpRead
    constantsTouched: []
    func_position:
      end: 318
      start: 295
    functionDepth: 31
    functionLinenumber: 295
    functionLinenumberEnd: 318
    functionName: LoggingService::read
    functionSourceFile: /src/opendal/core/layers/logging/src/lib.rs
    functionUses: 0
    functionsReached:
    - read
    - log::log
    - clone
    - Some
    - map
    - LoggingService::log_start
    - LoggingReader::new
    - inspect_err
    linkageType: ''
    returnType: Result
    signature: 'fn read(&self, ctx: &OperationContext, path: &str, args: OpRead) ->
      Result<Self::Reader>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: LoggingService::log_start
      Src: /src/opendal/core/layers/logging/src/lib.rs:321,1
    - Dst: write
      Src: /src/opendal/core/layers/logging/src/lib.rs:322,1
    - Dst: map
      Src: /src/opendal/core/layers/logging/src/lib.rs:322,1
    - Dst: log::log
      Src: /src/opendal/core/layers/logging/src/lib.rs:325,1
    - Dst: LoggingWriter::new
      Src: /src/opendal/core/layers/logging/src/lib.rs:332,1
    - Dst: clone
      Src: /src/opendal/core/layers/logging/src/lib.rs:332,1
    - Dst: clone
      Src: /src/opendal/core/layers/logging/src/lib.rs:332,1
    - Dst: inspect_err
      Src: /src/opendal/core/layers/logging/src/lib.rs:322,1
    - Dst: log::log
      Src: /src/opendal/core/layers/logging/src/lib.rs:335,1
    - Dst: Some
      Src: /src/opendal/core/layers/logging/src/lib.rs:340,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 41
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpWrite
    constantsTouched: []
    func_position:
      end: 343
      start: 320
    functionDepth: 36
    functionLinenumber: 320
    functionLinenumberEnd: 343
    functionName: LoggingService::write
    functionSourceFile: /src/opendal/core/layers/logging/src/lib.rs
    functionUses: 0
    functionsReached:
    - log::log
    - clone
    - Some
    - map
    - LoggingService::log_start
    - inspect_err
    - LoggingWriter::new
    - write
    linkageType: ''
    returnType: Result
    signature: 'fn write(&self, ctx: &OperationContext, path: &str, args: OpWrite)
      -> Result<Self::Writer>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: LoggingService::log_start
      Src: /src/opendal/core/layers/logging/src/lib.rs:346,1
    - Dst: stat
      Src: /src/opendal/core/layers/logging/src/lib.rs:347,1
    - Dst: LoggingService::log_finish
      Src: /src/opendal/core/layers/logging/src/lib.rs:348,1
    - Dst: bool::as_ref
      Src: /src/opendal/core/layers/logging/src/lib.rs:348,1
    - Dst: '&[&''static str]::err'
      Src: /src/opendal/core/layers/logging/src/lib.rs:348,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 20
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpStat
    constantsTouched: []
    func_position:
      end: 350
      start: 345
    functionDepth: 31
    functionLinenumber: 345
    functionLinenumberEnd: 350
    functionName: LoggingService::stat
    functionSourceFile: /src/opendal/core/layers/logging/src/lib.rs
    functionUses: 0
    functionsReached:
    - LoggingService::log_finish
    - bool::as_ref
    - LoggingService::log_start
    - '&[&''static str]::err'
    - stat
    linkageType: ''
    returnType: Result
    signature: 'async fn stat(&self, ctx: &OperationContext, path: &str, args: OpStat)
      -> Result<RpStat>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: LoggingService::log_start
      Src: /src/opendal/core/layers/logging/src/lib.rs:353,1
    - Dst: delete
      Src: /src/opendal/core/layers/logging/src/lib.rs:354,1
    - Dst: map
      Src: /src/opendal/core/layers/logging/src/lib.rs:354,1
    - Dst: log::log
      Src: /src/opendal/core/layers/logging/src/lib.rs:357,1
    - Dst: LoggingDeleter::new
      Src: /src/opendal/core/layers/logging/src/lib.rs:359,1
    - Dst: clone
      Src: /src/opendal/core/layers/logging/src/lib.rs:359,1
    - Dst: clone
      Src: /src/opendal/core/layers/logging/src/lib.rs:359,1
    - Dst: inspect_err
      Src: /src/opendal/core/layers/logging/src/lib.rs:354,1
    - Dst: log::log
      Src: /src/opendal/core/layers/logging/src/lib.rs:362,1
    - Dst: Some
      Src: /src/opendal/core/layers/logging/src/lib.rs:363,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 38
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - '&OperationContext'
    constantsTouched: []
    func_position:
      end: 365
      start: 352
    functionDepth: 32
    functionLinenumber: 352
    functionLinenumberEnd: 365
    functionName: LoggingService::delete
    functionSourceFile: /src/opendal/core/layers/logging/src/lib.rs
    functionUses: 0
    functionsReached:
    - log::log
    - delete
    - clone
    - Some
    - map
    - LoggingService::log_start
    - inspect_err
    - LoggingDeleter::new
    linkageType: ''
    returnType: Result
    signature: 'fn delete(&self, ctx: &OperationContext) -> Result<Self::Deleter>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: LoggingService::log_start
      Src: /src/opendal/core/layers/logging/src/lib.rs:375,1
    - Dst: copy
      Src: /src/opendal/core/layers/logging/src/lib.rs:376,1
    - Dst: map
      Src: /src/opendal/core/layers/logging/src/lib.rs:376,1
    - Dst: log::log
      Src: /src/opendal/core/layers/logging/src/lib.rs:379,1
    - Dst: LoggingCopier::new
      Src: /src/opendal/core/layers/logging/src/lib.rs:386,1
    - Dst: clone
      Src: /src/opendal/core/layers/logging/src/lib.rs:386,1
    - Dst: clone
      Src: /src/opendal/core/layers/logging/src/lib.rs:386,1
    - Dst: inspect_err
      Src: /src/opendal/core/layers/logging/src/lib.rs:376,1
    - Dst: log::log
      Src: /src/opendal/core/layers/logging/src/lib.rs:389,1
    - Dst: Some
      Src: /src/opendal/core/layers/logging/src/lib.rs:394,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 44
    argCount: 5
    argNames:
    - ctx
    - from
    - to
    - args
    - opts
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    - OpCopy
    - OpCopier
    constantsTouched: []
    func_position:
      end: 397
      start: 367
    functionDepth: 34
    functionLinenumber: 367
    functionLinenumberEnd: 397
    functionName: LoggingService::copy
    functionSourceFile: /src/opendal/core/layers/logging/src/lib.rs
    functionUses: 0
    functionsReached:
    - log::log
    - LoggingCopier::new
    - clone
    - Some
    - map
    - LoggingService::log_start
    - inspect_err
    - copy
    linkageType: ''
    returnType: Result
    signature: 'fn copy(&self,ctx: &OperationContext,from: &str,to: &str,args: OpCopy,opts:
      OpCopier,) -> Result<Self::Copier>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: LoggingService::log_start
      Src: /src/opendal/core/layers/logging/src/lib.rs:406,1
    - Dst: rename
      Src: /src/opendal/core/layers/logging/src/lib.rs:407,1
    - Dst: LoggingService::log_finish
      Src: /src/opendal/core/layers/logging/src/lib.rs:408,1
    - Dst: bool::as_ref
      Src: /src/opendal/core/layers/logging/src/lib.rs:411,1
    - Dst: '&[&''static str]::err'
      Src: /src/opendal/core/layers/logging/src/lib.rs:411,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 22
    argCount: 4
    argNames:
    - ctx
    - from
    - to
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    - OpRename
    constantsTouched: []
    func_position:
      end: 414
      start: 399
    functionDepth: 37
    functionLinenumber: 399
    functionLinenumberEnd: 414
    functionName: LoggingService::rename
    functionSourceFile: /src/opendal/core/layers/logging/src/lib.rs
    functionUses: 0
    functionsReached:
    - LoggingService::log_finish
    - bool::as_ref
    - rename
    - LoggingService::log_start
    - '&[&''static str]::err'
    linkageType: ''
    returnType: Result
    signature: 'async fn rename(&self,ctx: &OperationContext,from: &str,to: &str,args:
      OpRename,) -> Result<RpRename>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: LoggingService::log_start
      Src: /src/opendal/core/layers/logging/src/lib.rs:417,1
    - Dst: list
      Src: /src/opendal/core/layers/logging/src/lib.rs:418,1
    - Dst: map
      Src: /src/opendal/core/layers/logging/src/lib.rs:418,1
    - Dst: log::log
      Src: /src/opendal/core/layers/logging/src/lib.rs:421,1
    - Dst: LoggingLister::new
      Src: /src/opendal/core/layers/logging/src/lib.rs:428,1
    - Dst: clone
      Src: /src/opendal/core/layers/logging/src/lib.rs:428,1
    - Dst: clone
      Src: /src/opendal/core/layers/logging/src/lib.rs:428,1
    - Dst: inspect_err
      Src: /src/opendal/core/layers/logging/src/lib.rs:418,1
    - Dst: log::log
      Src: /src/opendal/core/layers/logging/src/lib.rs:431,1
    - Dst: Some
      Src: /src/opendal/core/layers/logging/src/lib.rs:436,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 41
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpList
    constantsTouched: []
    func_position:
      end: 439
      start: 416
    functionDepth: 3
    functionLinenumber: 416
    functionLinenumberEnd: 439
    functionName: LoggingService::list
    functionSourceFile: /src/opendal/core/layers/logging/src/lib.rs
    functionUses: 0
    functionsReached:
    - log::log
    - LoggingLister::new
    - clone
    - Some
    - list
    - map
    - LoggingService::log_start
    - inspect_err
    linkageType: ''
    returnType: Result
    signature: 'fn list(&self, ctx: &OperationContext, path: &str, args: OpList) ->
      Result<Self::Lister>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: LoggingService::log_start
      Src: /src/opendal/core/layers/logging/src/lib.rs:447,1
    - Dst: presign
      Src: /src/opendal/core/layers/logging/src/lib.rs:448,1
    - Dst: LoggingService::log_finish
      Src: /src/opendal/core/layers/logging/src/lib.rs:449,1
    - Dst: bool::as_ref
      Src: /src/opendal/core/layers/logging/src/lib.rs:449,1
    - Dst: '&[&''static str]::err'
      Src: /src/opendal/core/layers/logging/src/lib.rs:449,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 20
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpPresign
    constantsTouched: []
    func_position:
      end: 451
      start: 441
    functionDepth: 37
    functionLinenumber: 441
    functionLinenumberEnd: 451
    functionName: LoggingService::presign
    functionSourceFile: /src/opendal/core/layers/logging/src/lib.rs
    functionUses: 0
    functionsReached:
    - LoggingService::log_finish
    - bool::as_ref
    - LoggingService::log_start
    - '&[&''static str]::err'
    - presign
    linkageType: ''
    returnType: Result
    signature: 'async fn presign(&self,ctx: &OperationContext,path: &str,args: OpPresign,)
      -> Result<RpPresign>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self::with_range
      Src: /src/opendal/core/layers/logging/src/lib.rs:467,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 4
    argNames:
    - info
    - logger
    - path
    - reader
    argTypes:
    - ServiceInfo
    - I
    - '&str'
    - R
    constantsTouched: []
    func_position:
      end: 468
      start: 466
    functionDepth: 1
    functionLinenumber: 466
    functionLinenumberEnd: 468
    functionName: LoggingReader::new
    functionSourceFile: /src/opendal/core/layers/logging/src/lib.rs
    functionUses: 1
    functionsReached:
    - Self::with_range
    linkageType: ''
    returnType: Self
    signature: 'fn new(info: ServiceInfo, logger: I, path: &str, reader: R) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: to_string
      Src: /src/opendal/core/layers/logging/src/lib.rs:480,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 5
    argNames:
    - info
    - logger
    - path
    - range
    - reader
    argTypes:
    - ServiceInfo
    - I
    - '&str'
    - Option<BytesRange>
    - R
    constantsTouched: []
    func_position:
      end: 486
      start: 470
    functionDepth: 2
    functionLinenumber: 470
    functionLinenumberEnd: 486
    functionName: LoggingReader::with_range
    functionSourceFile: /src/opendal/core/layers/logging/src/lib.rs
    functionUses: 1
    functionsReached:
    - to_string
    linkageType: ''
    returnType: Self
    signature: 'fn with_range(info: ServiceInfo,logger: I,path: &str,range: Option<BytesRange>,reader:
      R,) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: map
      Src: /src/opendal/core/layers/logging/src/lib.rs:489,1
    - Dst: (Vec::to_string
      Src: /src/opendal/core/layers/logging/src/lib.rs:490,1
    - Dst: unwrap_or_default
      Src: /src/opendal/core/layers/logging/src/lib.rs:489,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 492
      start: 488
    functionDepth: 2
    functionLinenumber: 488
    functionLinenumberEnd: 492
    functionName: LoggingReader::range_label
    functionSourceFile: /src/opendal/core/layers/logging/src/lib.rs
    functionUses: 0
    functionsReached:
    - map
    - (Vec::to_string
    - unwrap_or_default
    linkageType: ''
    returnType: String
    signature: fn range_label(&self) -> String
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: read
      Src: /src/opendal/core/layers/logging/src/lib.rs:564,1
    - Dst: log::log
      Src: /src/opendal/core/layers/logging/src/lib.rs:566,1
    - Dst: (Vec::to_string
      Src: /src/opendal/core/layers/logging/src/lib.rs:571,1
    - Dst: len
      Src: /src/opendal/core/layers/logging/src/lib.rs:572,1
    - Dst: usize::to_string
      Src: /src/opendal/core/layers/logging/src/lib.rs:572,1
    - Dst: Ok
      Src: /src/opendal/core/layers/logging/src/lib.rs:577,1
    - Dst: log::log
      Src: /src/opendal/core/layers/logging/src/lib.rs:580,1
    - Dst: (Vec::to_string
      Src: /src/opendal/core/layers/logging/src/lib.rs:583,1
    - Dst: Some
      Src: /src/opendal/core/layers/logging/src/lib.rs:585,1
    - Dst: Err
      Src: /src/opendal/core/layers/logging/src/lib.rs:587,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 47
    argCount: 1
    argNames:
    - range
    argTypes:
    - BytesRange
    constantsTouched: []
    func_position:
      end: 590
      start: 563
    functionDepth: 31
    functionLinenumber: 563
    functionLinenumberEnd: 590
    functionName: LoggingReader::read
    functionSourceFile: /src/opendal/core/layers/logging/src/lib.rs
    functionUses: 0
    functionsReached:
    - read
    - log::log
    - Ok
    - (Vec::to_string
    - Some
    - Err
    - len
    - usize::to_string
    linkageType: ''
    returnType: Result
    signature: 'async fn read(&self, range: BytesRange) -> Result<(RpRead, Buffer)>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: open
      Src: /src/opendal/core/layers/logging/src/lib.rs:539,1
    - Dst: Ok
      Src: /src/opendal/core/layers/logging/src/lib.rs:540,1
    - Dst: Box::new
      Src: /src/opendal/core/layers/logging/src/lib.rs:542,1
    - Dst: LoggingReader::with_range
      Src: /src/opendal/core/layers/logging/src/lib.rs:542,1
    - Dst: clone
      Src: /src/opendal/core/layers/logging/src/lib.rs:543,1
    - Dst: clone
      Src: /src/opendal/core/layers/logging/src/lib.rs:544,1
    - Dst: Some
      Src: /src/opendal/core/layers/logging/src/lib.rs:546,1
    - Dst: log::log
      Src: /src/opendal/core/layers/logging/src/lib.rs:551,1
    - Dst: (Vec::to_string
      Src: /src/opendal/core/layers/logging/src/lib.rs:554,1
    - Dst: Some
      Src: /src/opendal/core/layers/logging/src/lib.rs:556,1
    - Dst: Err
      Src: /src/opendal/core/layers/logging/src/lib.rs:558,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 38
    argCount: 1
    argNames:
    - range
    argTypes:
    - BytesRange
    constantsTouched: []
    func_position:
      end: 561
      start: 538
    functionDepth: 3
    functionLinenumber: 538
    functionLinenumberEnd: 561
    functionName: LoggingReader::open
    functionSourceFile: /src/opendal/core/layers/logging/src/lib.rs
    functionUses: 0
    functionsReached:
    - log::log
    - Ok
    - Box::new
    - (Vec::to_string
    - clone
    - Some
    - LoggingReader::with_range
    - Err
    - open
    linkageType: ''
    returnType: Result
    signature: 'async fn open(&self, range: BytesRange) -> Result<(RpRead, Box<dyn
      oio::ReadStreamDyn>)>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: to_string
      Src: /src/opendal/core/layers/logging/src/lib.rs:608,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 4
    argNames:
    - info
    - logger
    - path
    - writer
    argTypes:
    - ServiceInfo
    - I
    - '&str'
    - W
    constantsTouched: []
    func_position:
      end: 613
      start: 604
    functionDepth: 2
    functionLinenumber: 604
    functionLinenumberEnd: 613
    functionName: LoggingWriter::new
    functionSourceFile: /src/opendal/core/layers/logging/src/lib.rs
    functionUses: 1
    functionsReached:
    - to_string
    linkageType: ''
    returnType: Self
    signature: 'fn new(info: ServiceInfo, logger: I, path: &str, writer: W) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::len
      Src: /src/opendal/core/layers/logging/src/lib.rs:618,1
    - Dst: write
      Src: /src/opendal/core/layers/logging/src/lib.rs:620,1
    - Dst: Ok
      Src: /src/opendal/core/layers/logging/src/lib.rs:623,1
    - Dst: log::log
      Src: /src/opendal/core/layers/logging/src/lib.rs:626,1
    - Dst: to_string
      Src: /src/opendal/core/layers/logging/src/lib.rs:631,1
    - Dst: Option::to_string
      Src: /src/opendal/core/layers/logging/src/lib.rs:632,1
    - Dst: Some
      Src: /src/opendal/core/layers/logging/src/lib.rs:635,1
    - Dst: Err
      Src: /src/opendal/core/layers/logging/src/lib.rs:637,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 36
    argCount: 1
    argNames:
    - bs
    argTypes:
    - Buffer
    constantsTouched: []
    func_position:
      end: 640
      start: 617
    functionDepth: 36
    functionLinenumber: 617
    functionLinenumberEnd: 640
    functionName: LoggingWriter::write
    functionSourceFile: /src/opendal/core/layers/logging/src/lib.rs
    functionUses: 0
    functionsReached:
    - to_string
    - log::log
    - Option::to_string
    - Ok
    - Some
    - Err
    - Result::len
    - write
    linkageType: ''
    returnType: Result
    signature: 'async fn write(&mut self, bs: Buffer) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: abort
      Src: /src/opendal/core/layers/logging/src/lib.rs:643,1
    - Dst: log::log
      Src: /src/opendal/core/layers/logging/src/lib.rs:645,1
    - Dst: to_string
      Src: /src/opendal/core/layers/logging/src/lib.rs:648,1
    - Dst: Ok
      Src: /src/opendal/core/layers/logging/src/lib.rs:652,1
    - Dst: log::log
      Src: /src/opendal/core/layers/logging/src/lib.rs:655,1
    - Dst: to_string
      Src: /src/opendal/core/layers/logging/src/lib.rs:658,1
    - Dst: Some
      Src: /src/opendal/core/layers/logging/src/lib.rs:660,1
    - Dst: Err
      Src: /src/opendal/core/layers/logging/src/lib.rs:662,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 43
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 665
      start: 642
    functionDepth: 31
    functionLinenumber: 642
    functionLinenumberEnd: 665
    functionName: LoggingWriter::abort
    functionSourceFile: /src/opendal/core/layers/logging/src/lib.rs
    functionUses: 0
    functionsReached:
    - to_string
    - log::log
    - Ok
    - Some
    - Err
    - abort
    linkageType: ''
    returnType: Result
    signature: async fn abort(&mut self) -> Result<()>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: close
      Src: /src/opendal/core/layers/logging/src/lib.rs:668,1
    - Dst: log::log
      Src: /src/opendal/core/layers/logging/src/lib.rs:670,1
    - Dst: to_string
      Src: /src/opendal/core/layers/logging/src/lib.rs:673,1
    - Dst: Ok
      Src: /src/opendal/core/layers/logging/src/lib.rs:677,1
    - Dst: log::log
      Src: /src/opendal/core/layers/logging/src/lib.rs:680,1
    - Dst: to_string
      Src: /src/opendal/core/layers/logging/src/lib.rs:683,1
    - Dst: Some
      Src: /src/opendal/core/layers/logging/src/lib.rs:685,1
    - Dst: Err
      Src: /src/opendal/core/layers/logging/src/lib.rs:687,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 42
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 690
      start: 667
    functionDepth: 2
    functionLinenumber: 667
    functionLinenumberEnd: 690
    functionName: LoggingWriter::close
    functionSourceFile: /src/opendal/core/layers/logging/src/lib.rs
    functionUses: 0
    functionsReached:
    - to_string
    - log::log
    - close
    - Ok
    - Some
    - Err
    linkageType: ''
    returnType: Result
    signature: async fn close(&mut self) -> Result<Metadata>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: to_string
      Src: /src/opendal/core/layers/logging/src/lib.rs:708,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 4
    argNames:
    - info
    - logger
    - path
    - inner
    argTypes:
    - ServiceInfo
    - I
    - '&str'
    - P
    constantsTouched: []
    func_position:
      end: 713
      start: 704
    functionDepth: 2
    functionLinenumber: 704
    functionLinenumberEnd: 713
    functionName: LoggingLister::new
    functionSourceFile: /src/opendal/core/layers/logging/src/lib.rs
    functionUses: 1
    functionsReached:
    - to_string
    linkageType: ''
    returnType: Self
    signature: 'fn new(info: ServiceInfo, logger: I, path: &str, inner: P) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: next
      Src: /src/opendal/core/layers/logging/src/lib.rs:718,1
    - Dst: log::log
      Src: /src/opendal/core/layers/logging/src/lib.rs:725,1
    - Dst: to_string
      Src: /src/opendal/core/layers/logging/src/lib.rs:728,1
    - Dst: log::log
      Src: /src/opendal/core/layers/logging/src/lib.rs:734,1
    - Dst: to_string
      Src: /src/opendal/core/layers/logging/src/lib.rs:737,1
    - Dst: Some
      Src: /src/opendal/core/layers/logging/src/lib.rs:739,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 42
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 745
      start: 717
    functionDepth: 2
    functionLinenumber: 717
    functionLinenumberEnd: 745
    functionName: LoggingLister::next
    functionSourceFile: /src/opendal/core/layers/logging/src/lib.rs
    functionUses: 0
    functionsReached:
    - next
    - to_string
    - log::log
    - Some
    linkageType: ''
    returnType: Result
    signature: async fn next(&mut self) -> Result<Option<oio::Entry>>
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 3
    argNames:
    - info
    - logger
    - inner
    argTypes:
    - ServiceInfo
    - I
    - D
    constantsTouched: []
    func_position:
      end: 766
      start: 758
    functionDepth: 0
    functionLinenumber: 758
    functionLinenumberEnd: 766
    functionName: LoggingDeleter::new
    functionSourceFile: /src/opendal/core/layers/logging/src/lib.rs
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: 'fn new(info: ServiceInfo, logger: I, inner: D) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: OpStat::version
      Src: /src/opendal/core/layers/logging/src/lib.rs:771,1
    - Dst: Option::map
      Src: /src/opendal/core/layers/logging/src/lib.rs:771,1
    - Dst: Result::to_string
      Src: /src/opendal/core/layers/logging/src/lib.rs:773,1
    - Dst: Result::unwrap_or_else
      Src: /src/opendal/core/layers/logging/src/lib.rs:771,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/layers/logging/src/lib.rs:774,1
    - Dst: delete
      Src: /src/opendal/core/layers/logging/src/lib.rs:776,1
    - Dst: log::log
      Src: /src/opendal/core/layers/logging/src/lib.rs:783,1
    - Dst: to_string
      Src: /src/opendal/core/layers/logging/src/lib.rs:789,1
    - Dst: Some
      Src: /src/opendal/core/layers/logging/src/lib.rs:792,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 38
    argCount: 2
    argNames:
    - path
    - args
    argTypes:
    - '&str'
    - OpDelete
    constantsTouched: []
    func_position:
      end: 798
      start: 770
    functionDepth: 32
    functionLinenumber: 770
    functionLinenumberEnd: 798
    functionName: LoggingDeleter::delete
    functionSourceFile: /src/opendal/core/layers/logging/src/lib.rs
    functionUses: 0
    functionsReached:
    - OpStat::version
    - to_string
    - log::log
    - Result::to_string
    - delete
    - Option::map
    - Result::unwrap_or_else
    - Some
    - '&str::to_string'
    linkageType: ''
    returnType: Result
    signature: 'async fn delete(&mut self, path: &str, args: OpDelete) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: close
      Src: /src/opendal/core/layers/logging/src/lib.rs:801,1
    - Dst: log::log
      Src: /src/opendal/core/layers/logging/src/lib.rs:805,1
    - Dst: to_string
      Src: /src/opendal/core/layers/logging/src/lib.rs:808,1
    - Dst: log::log
      Src: /src/opendal/core/layers/logging/src/lib.rs:814,1
    - Dst: to_string
      Src: /src/opendal/core/layers/logging/src/lib.rs:817,1
    - Dst: Some
      Src: /src/opendal/core/layers/logging/src/lib.rs:819,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 34
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 825
      start: 800
    functionDepth: 2
    functionLinenumber: 800
    functionLinenumberEnd: 825
    functionName: LoggingDeleter::close
    functionSourceFile: /src/opendal/core/layers/logging/src/lib.rs
    functionUses: 0
    functionsReached:
    - to_string
    - log::log
    - close
    - Some
    linkageType: ''
    returnType: Result
    signature: async fn close(&mut self) -> Result<()>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::to_string
      Src: /src/opendal/core/layers/logging/src/lib.rs:844,1
    - Dst: Result::to_string
      Src: /src/opendal/core/layers/logging/src/lib.rs:845,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 5
    argNames:
    - info
    - logger
    - from
    - to
    - inner
    argTypes:
    - ServiceInfo
    - I
    - '&str'
    - '&str'
    - C
    constantsTouched: []
    func_position:
      end: 850
      start: 840
    functionDepth: 2
    functionLinenumber: 840
    functionLinenumberEnd: 850
    functionName: LoggingCopier::new
    functionSourceFile: /src/opendal/core/layers/logging/src/lib.rs
    functionUses: 1
    functionsReached:
    - Result::to_string
    linkageType: ''
    returnType: Self
    signature: 'fn new(info: ServiceInfo, logger: I, from: &str, to: &str, inner:
      C) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: next
      Src: /src/opendal/core/layers/logging/src/lib.rs:855,1
    - Dst: Ok
      Src: /src/opendal/core/layers/logging/src/lib.rs:858,1
    - Dst: Some
      Src: /src/opendal/core/layers/logging/src/lib.rs:858,1
    - Dst: log::log
      Src: /src/opendal/core/layers/logging/src/lib.rs:861,1
    - Dst: to_string
      Src: /src/opendal/core/layers/logging/src/lib.rs:867,1
    - Dst: Ok
      Src: /src/opendal/core/layers/logging/src/lib.rs:872,1
    - Dst: log::log
      Src: /src/opendal/core/layers/logging/src/lib.rs:875,1
    - Dst: to_string
      Src: /src/opendal/core/layers/logging/src/lib.rs:881,1
    - Dst: Some
      Src: /src/opendal/core/layers/logging/src/lib.rs:884,1
    - Dst: Err
      Src: /src/opendal/core/layers/logging/src/lib.rs:886,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 53
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 889
      start: 854
    functionDepth: 2
    functionLinenumber: 854
    functionLinenumberEnd: 889
    functionName: LoggingCopier::next
    functionSourceFile: /src/opendal/core/layers/logging/src/lib.rs
    functionUses: 0
    functionsReached:
    - next
    - to_string
    - log::log
    - Ok
    - Some
    - Err
    linkageType: ''
    returnType: Result
    signature: async fn next(&mut self) -> Result<Option<usize>>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: close
      Src: /src/opendal/core/layers/logging/src/lib.rs:892,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 893
      start: 891
    functionDepth: 2
    functionLinenumber: 891
    functionLinenumberEnd: 893
    functionName: LoggingCopier::close
    functionSourceFile: /src/opendal/core/layers/logging/src/lib.rs
    functionUses: 0
    functionsReached:
    - close
    linkageType: ''
    returnType: Result
    signature: async fn close(&mut self) -> Result<Metadata>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: abort
      Src: /src/opendal/core/layers/logging/src/lib.rs:896,1
    - Dst: log::log
      Src: /src/opendal/core/layers/logging/src/lib.rs:898,1
    - Dst: to_string
      Src: /src/opendal/core/layers/logging/src/lib.rs:904,1
    - Dst: Ok
      Src: /src/opendal/core/layers/logging/src/lib.rs:909,1
    - Dst: log::log
      Src: /src/opendal/core/layers/logging/src/lib.rs:912,1
    - Dst: to_string
      Src: /src/opendal/core/layers/logging/src/lib.rs:918,1
    - Dst: Some
      Src: /src/opendal/core/layers/logging/src/lib.rs:921,1
    - Dst: Err
      Src: /src/opendal/core/layers/logging/src/lib.rs:923,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 49
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 926
      start: 895
    functionDepth: 31
    functionLinenumber: 895
    functionLinenumberEnd: 926
    functionName: LoggingCopier::abort
    functionSourceFile: /src/opendal/core/layers/logging/src/lib.rs
    functionUses: 0
    functionsReached:
    - to_string
    - log::log
    - Ok
    - Some
    - Err
    - abort
    linkageType: ''
    returnType: Result
    signature: async fn abort(&mut self) -> Result<()>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self::default
      Src: /src/opendal/core/layers/fastrace/src/lib.rs:114,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 115
      start: 113
    functionDepth: 3
    functionLinenumber: 113
    functionLinenumberEnd: 115
    functionName: FastraceLayer::new
    functionSourceFile: /src/opendal/core/layers/fastrace/src/lib.rs
    functionUses: 0
    functionsReached:
    - Self::default
    linkageType: ''
    returnType: Self
    signature: pub fn new() -> Self
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Arc::new
      Src: /src/opendal/core/layers/fastrace/src/lib.rs:120,1
    - Dst: FastraceLayer::layer
      Src: /src/opendal/core/layers/fastrace/src/lib.rs:120,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - inner
    argTypes:
    - Servicer
    constantsTouched: []
    func_position:
      end: 121
      start: 119
    functionDepth: 2
    functionLinenumber: 119
    functionLinenumberEnd: 121
    functionName: FastraceLayer::apply_service
    functionSourceFile: /src/opendal/core/layers/fastrace/src/lib.rs
    functionUses: 0
    functionsReached:
    - Arc::new
    - FastraceLayer::layer
    linkageType: ''
    returnType: Servicer
    signature: 'fn apply_service(&self, inner: Servicer) -> Servicer'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - inner
    argTypes:
    - Servicer
    constantsTouched: []
    func_position:
      end: 127
      start: 125
    functionDepth: 0
    functionLinenumber: 125
    functionLinenumberEnd: 127
    functionName: FastraceLayer::layer
    functionSourceFile: /src/opendal/core/layers/fastrace/src/lib.rs
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: FastraceAccessor
    signature: 'fn layer(&self, inner: Servicer) -> FastraceAccessor'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: info
      Src: /src/opendal/core/layers/fastrace/src/lib.rs:146,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 147
      start: 145
    functionDepth: 2
    functionLinenumber: 145
    functionLinenumberEnd: 147
    functionName: FastraceAccessor::info
    functionSourceFile: /src/opendal/core/layers/fastrace/src/lib.rs
    functionUses: 0
    functionsReached:
    - info
    linkageType: ''
    returnType: ServiceInfo
    signature: fn info(&self) -> ServiceInfo
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: capability
      Src: /src/opendal/core/layers/fastrace/src/lib.rs:150,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 151
      start: 149
    functionDepth: 2
    functionLinenumber: 149
    functionLinenumberEnd: 151
    functionName: FastraceAccessor::capability
    functionSourceFile: /src/opendal/core/layers/fastrace/src/lib.rs
    functionUses: 0
    functionsReached:
    - capability
    linkageType: ''
    returnType: Capability
    signature: fn capability(&self) -> Capability
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Span::enter_with_local_parent
      Src: /src/opendal/core/layers/fastrace/src/lib.rs:159,1
    - Dst: into_static
      Src: /src/opendal/core/layers/fastrace/src/lib.rs:159,1
    - Dst: create_dir
      Src: /src/opendal/core/layers/fastrace/src/lib.rs:160,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpCreateDir
    constantsTouched: []
    func_position:
      end: 161
      start: 153
    functionDepth: 30
    functionLinenumber: 153
    functionLinenumberEnd: 161
    functionName: FastraceAccessor::create_dir
    functionSourceFile: /src/opendal/core/layers/fastrace/src/lib.rs
    functionUses: 0
    functionsReached:
    - into_static
    - create_dir
    - Span::enter_with_local_parent
    linkageType: ''
    returnType: Result
    signature: 'async fn create_dir(&self,ctx: &OperationContext,path: &str,args:
      OpCreateDir,) -> Result<RpCreateDir>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Span::enter_with_local_parent
      Src: /src/opendal/core/layers/fastrace/src/lib.rs:164,1
    - Dst: jlong::into_static
      Src: /src/opendal/core/layers/fastrace/src/lib.rs:164,1
    - Dst: read
      Src: /src/opendal/core/layers/fastrace/src/lib.rs:165,1
    - Dst: map
      Src: /src/opendal/core/layers/fastrace/src/lib.rs:165,1
    - Dst: FastraceWrapper::new
      Src: /src/opendal/core/layers/fastrace/src/lib.rs:166,1
    - Dst: Span::enter_with_local_parent
      Src: /src/opendal/core/layers/fastrace/src/lib.rs:167,1
    - Dst: jlong::into_static
      Src: /src/opendal/core/layers/fastrace/src/lib.rs:167,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 13
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpRead
    constantsTouched: []
    func_position:
      end: 171
      start: 163
    functionDepth: 30
    functionLinenumber: 163
    functionLinenumberEnd: 171
    functionName: FastraceAccessor::read
    functionSourceFile: /src/opendal/core/layers/fastrace/src/lib.rs
    functionUses: 0
    functionsReached:
    - read
    - FastraceWrapper::new
    - map
    - jlong::into_static
    - Span::enter_with_local_parent
    linkageType: ''
    returnType: Result
    signature: 'fn read(&self, ctx: &OperationContext, path: &str, args: OpRead) ->
      Result<Self::Reader>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Span::enter_with_local_parent
      Src: /src/opendal/core/layers/fastrace/src/lib.rs:174,1
    - Dst: jlong::into_static
      Src: /src/opendal/core/layers/fastrace/src/lib.rs:174,1
    - Dst: write
      Src: /src/opendal/core/layers/fastrace/src/lib.rs:175,1
    - Dst: map
      Src: /src/opendal/core/layers/fastrace/src/lib.rs:175,1
    - Dst: FastraceWrapper::new
      Src: /src/opendal/core/layers/fastrace/src/lib.rs:176,1
    - Dst: Span::enter_with_local_parent
      Src: /src/opendal/core/layers/fastrace/src/lib.rs:177,1
    - Dst: jlong::into_static
      Src: /src/opendal/core/layers/fastrace/src/lib.rs:177,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 13
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpWrite
    constantsTouched: []
    func_position:
      end: 181
      start: 173
    functionDepth: 30
    functionLinenumber: 173
    functionLinenumberEnd: 181
    functionName: FastraceAccessor::write
    functionSourceFile: /src/opendal/core/layers/fastrace/src/lib.rs
    functionUses: 0
    functionsReached:
    - FastraceWrapper::new
    - map
    - jlong::into_static
    - Span::enter_with_local_parent
    - write
    linkageType: ''
    returnType: Result
    signature: 'fn write(&self, ctx: &OperationContext, path: &str, args: OpWrite)
      -> Result<Self::Writer>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Span::enter_with_local_parent
      Src: /src/opendal/core/layers/fastrace/src/lib.rs:191,1
    - Dst: into_static
      Src: /src/opendal/core/layers/fastrace/src/lib.rs:191,1
    - Dst: copy
      Src: /src/opendal/core/layers/fastrace/src/lib.rs:192,1
    - Dst: map
      Src: /src/opendal/core/layers/fastrace/src/lib.rs:192,1
    - Dst: FastraceWrapper::new
      Src: /src/opendal/core/layers/fastrace/src/lib.rs:193,1
    - Dst: Span::enter_with_local_parent
      Src: /src/opendal/core/layers/fastrace/src/lib.rs:194,1
    - Dst: into_static
      Src: /src/opendal/core/layers/fastrace/src/lib.rs:194,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 13
    argCount: 5
    argNames:
    - ctx
    - from
    - to
    - args
    - opts
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    - OpCopy
    - OpCopier
    constantsTouched: []
    func_position:
      end: 198
      start: 183
    functionDepth: 30
    functionLinenumber: 183
    functionLinenumberEnd: 198
    functionName: FastraceAccessor::copy
    functionSourceFile: /src/opendal/core/layers/fastrace/src/lib.rs
    functionUses: 0
    functionsReached:
    - FastraceWrapper::new
    - into_static
    - map
    - Span::enter_with_local_parent
    - copy
    linkageType: ''
    returnType: Result
    signature: 'fn copy(&self,ctx: &OperationContext,from: &str,to: &str,args: OpCopy,opts:
      OpCopier,) -> Result<Self::Copier>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Span::enter_with_local_parent
      Src: /src/opendal/core/layers/fastrace/src/lib.rs:207,1
    - Dst: into_static
      Src: /src/opendal/core/layers/fastrace/src/lib.rs:207,1
    - Dst: rename
      Src: /src/opendal/core/layers/fastrace/src/lib.rs:208,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 4
    argNames:
    - ctx
    - from
    - to
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    - OpRename
    constantsTouched: []
    func_position:
      end: 209
      start: 200
    functionDepth: 30
    functionLinenumber: 200
    functionLinenumberEnd: 209
    functionName: FastraceAccessor::rename
    functionSourceFile: /src/opendal/core/layers/fastrace/src/lib.rs
    functionUses: 0
    functionsReached:
    - rename
    - into_static
    - Span::enter_with_local_parent
    linkageType: ''
    returnType: Result
    signature: 'async fn rename(&self,ctx: &OperationContext,from: &str,to: &str,args:
      OpRename,) -> Result<RpRename>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Span::enter_with_local_parent
      Src: /src/opendal/core/layers/fastrace/src/lib.rs:212,1
    - Dst: jlong::into_static
      Src: /src/opendal/core/layers/fastrace/src/lib.rs:212,1
    - Dst: stat
      Src: /src/opendal/core/layers/fastrace/src/lib.rs:213,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpStat
    constantsTouched: []
    func_position:
      end: 214
      start: 211
    functionDepth: 30
    functionLinenumber: 211
    functionLinenumberEnd: 214
    functionName: FastraceAccessor::stat
    functionSourceFile: /src/opendal/core/layers/fastrace/src/lib.rs
    functionUses: 0
    functionsReached:
    - jlong::into_static
    - Span::enter_with_local_parent
    - stat
    linkageType: ''
    returnType: Result
    signature: 'async fn stat(&self, ctx: &OperationContext, path: &str, args: OpStat)
      -> Result<RpStat>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Span::enter_with_local_parent
      Src: /src/opendal/core/layers/fastrace/src/lib.rs:217,1
    - Dst: into_static
      Src: /src/opendal/core/layers/fastrace/src/lib.rs:217,1
    - Dst: delete
      Src: /src/opendal/core/layers/fastrace/src/lib.rs:218,1
    - Dst: map
      Src: /src/opendal/core/layers/fastrace/src/lib.rs:218,1
    - Dst: FastraceWrapper::new
      Src: /src/opendal/core/layers/fastrace/src/lib.rs:219,1
    - Dst: Span::enter_with_local_parent
      Src: /src/opendal/core/layers/fastrace/src/lib.rs:220,1
    - Dst: into_static
      Src: /src/opendal/core/layers/fastrace/src/lib.rs:220,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 13
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - '&OperationContext'
    constantsTouched: []
    func_position:
      end: 224
      start: 216
    functionDepth: 30
    functionLinenumber: 216
    functionLinenumberEnd: 224
    functionName: FastraceAccessor::delete
    functionSourceFile: /src/opendal/core/layers/fastrace/src/lib.rs
    functionUses: 0
    functionsReached:
    - delete
    - FastraceWrapper::new
    - into_static
    - map
    - Span::enter_with_local_parent
    linkageType: ''
    returnType: Result
    signature: 'fn delete(&self, ctx: &OperationContext) -> Result<Self::Deleter>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Span::enter_with_local_parent
      Src: /src/opendal/core/layers/fastrace/src/lib.rs:227,1
    - Dst: into_static
      Src: /src/opendal/core/layers/fastrace/src/lib.rs:227,1
    - Dst: list
      Src: /src/opendal/core/layers/fastrace/src/lib.rs:228,1
    - Dst: map
      Src: /src/opendal/core/layers/fastrace/src/lib.rs:228,1
    - Dst: FastraceWrapper::new
      Src: /src/opendal/core/layers/fastrace/src/lib.rs:229,1
    - Dst: Span::enter_with_local_parent
      Src: /src/opendal/core/layers/fastrace/src/lib.rs:230,1
    - Dst: into_static
      Src: /src/opendal/core/layers/fastrace/src/lib.rs:230,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 13
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpList
    constantsTouched: []
    func_position:
      end: 234
      start: 226
    functionDepth: 30
    functionLinenumber: 226
    functionLinenumberEnd: 234
    functionName: FastraceAccessor::list
    functionSourceFile: /src/opendal/core/layers/fastrace/src/lib.rs
    functionUses: 0
    functionsReached:
    - FastraceWrapper::new
    - into_static
    - list
    - map
    - Span::enter_with_local_parent
    linkageType: ''
    returnType: Result
    signature: 'fn list(&self, ctx: &OperationContext, path: &str, args: OpList) ->
      Result<Self::Lister>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Span::enter_with_local_parent
      Src: /src/opendal/core/layers/fastrace/src/lib.rs:242,1
    - Dst: into_static
      Src: /src/opendal/core/layers/fastrace/src/lib.rs:242,1
    - Dst: presign
      Src: /src/opendal/core/layers/fastrace/src/lib.rs:243,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpPresign
    constantsTouched: []
    func_position:
      end: 244
      start: 236
    functionDepth: 30
    functionLinenumber: 236
    functionLinenumberEnd: 244
    functionName: FastraceAccessor::presign
    functionSourceFile: /src/opendal/core/layers/fastrace/src/lib.rs
    functionUses: 0
    functionsReached:
    - into_static
    - presign
    - Span::enter_with_local_parent
    linkageType: ''
    returnType: Result
    signature: 'async fn presign(&self,ctx: &OperationContext,path: &str,args: OpPresign,)
      -> Result<RpPresign>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Arc::new
      Src: /src/opendal/core/layers/fastrace/src/lib.rs:258,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - span
    - inner
    argTypes:
    - Span
    - R
    constantsTouched: []
    func_position:
      end: 261
      start: 256
    functionDepth: 2
    functionLinenumber: 256
    functionLinenumberEnd: 261
    functionName: FastraceWrapper::new
    functionSourceFile: /src/opendal/core/layers/fastrace/src/lib.rs
    functionUses: 5
    functionsReached:
    - Arc::new
    linkageType: ''
    returnType: Self
    signature: 'fn new(span: Span, inner: R) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - span
    - inner
    argTypes:
    - Arc<Span>
    - R
    constantsTouched: []
    func_position:
      end: 265
      start: 263
    functionDepth: 0
    functionLinenumber: 263
    functionLinenumberEnd: 265
    functionName: FastraceWrapper::with_span
    functionSourceFile: /src/opendal/core/layers/fastrace/src/lib.rs
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: 'fn with_span(span: Arc<Span>, inner: R) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: set_local_parent
      Src: /src/opendal/core/layers/fastrace/src/lib.rs:297,1
    - Dst: LocalSpan::enter_with_local_parent
      Src: /src/opendal/core/layers/fastrace/src/lib.rs:298,1
    - Dst: jlong::into_static
      Src: /src/opendal/core/layers/fastrace/src/lib.rs:298,1
    - Dst: read
      Src: /src/opendal/core/layers/fastrace/src/lib.rs:299,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 1
    argNames:
    - range
    argTypes:
    - BytesRange
    constantsTouched: []
    func_position:
      end: 300
      start: 293
    functionDepth: 30
    functionLinenumber: 293
    functionLinenumberEnd: 300
    functionName: FastraceWrapper::read
    functionSourceFile: /src/opendal/core/layers/fastrace/src/lib.rs
    functionUses: 0
    functionsReached:
    - read
    - set_local_parent
    - LocalSpan::enter_with_local_parent
    - jlong::into_static
    linkageType: ''
    returnType: impl Future
    signature: 'fn read(&self,range: BytesRange,) -> impl Future<Output = Result<(RpRead,
      Buffer)>> + MaybeSend'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: set_local_parent
      Src: /src/opendal/core/layers/fastrace/src/lib.rs:281,1
    - Dst: clone
      Src: /src/opendal/core/layers/fastrace/src/lib.rs:282,1
    - Dst: open
      Src: /src/opendal/core/layers/fastrace/src/lib.rs:283,1
    - Dst: Ok
      Src: /src/opendal/core/layers/fastrace/src/lib.rs:286,1
    - Dst: Box::new
      Src: /src/opendal/core/layers/fastrace/src/lib.rs:288,1
    - Dst: FastraceWrapper::with_span
      Src: /src/opendal/core/layers/fastrace/src/lib.rs:288,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 1
    argNames:
    - range
    argTypes:
    - BytesRange
    constantsTouched: []
    func_position:
      end: 291
      start: 277
    functionDepth: 3
    functionLinenumber: 277
    functionLinenumberEnd: 291
    functionName: FastraceWrapper::open
    functionSourceFile: /src/opendal/core/layers/fastrace/src/lib.rs
    functionUses: 0
    functionsReached:
    - Ok
    - Box::new
    - clone
    - set_local_parent
    - FastraceWrapper::with_span
    - open
    linkageType: ''
    returnType: impl Future
    signature: 'fn open(&self,range: BytesRange,) -> impl Future<Output = Result<(RpRead,
      Box<dyn oio::ReadStreamDyn>)>> + MaybeSend'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: set_local_parent
      Src: /src/opendal/core/layers/fastrace/src/lib.rs:305,1
    - Dst: LocalSpan::enter_with_local_parent
      Src: /src/opendal/core/layers/fastrace/src/lib.rs:306,1
    - Dst: jlong::into_static
      Src: /src/opendal/core/layers/fastrace/src/lib.rs:306,1
    - Dst: write
      Src: /src/opendal/core/layers/fastrace/src/lib.rs:307,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 1
    argNames:
    - bs
    argTypes:
    - Buffer
    constantsTouched: []
    func_position:
      end: 308
      start: 304
    functionDepth: 30
    functionLinenumber: 304
    functionLinenumberEnd: 308
    functionName: FastraceWrapper::write
    functionSourceFile: /src/opendal/core/layers/fastrace/src/lib.rs
    functionUses: 0
    functionsReached:
    - set_local_parent
    - LocalSpan::enter_with_local_parent
    - jlong::into_static
    - write
    linkageType: ''
    returnType: impl Future
    signature: 'fn write(&mut self, bs: Buffer) -> impl Future<Output = Result<()>>
      + MaybeSend'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: set_local_parent
      Src: /src/opendal/core/layers/fastrace/src/lib.rs:363,1
    - Dst: LocalSpan::enter_with_local_parent
      Src: /src/opendal/core/layers/fastrace/src/lib.rs:364,1
    - Dst: into_static
      Src: /src/opendal/core/layers/fastrace/src/lib.rs:364,1
    - Dst: abort
      Src: /src/opendal/core/layers/fastrace/src/lib.rs:365,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 366
      start: 362
    functionDepth: 30
    functionLinenumber: 362
    functionLinenumberEnd: 366
    functionName: FastraceWrapper::abort
    functionSourceFile: /src/opendal/core/layers/fastrace/src/lib.rs
    functionUses: 0
    functionsReached:
    - set_local_parent
    - LocalSpan::enter_with_local_parent
    - into_static
    - abort
    linkageType: ''
    returnType: impl Future
    signature: fn abort(&mut self) -> impl Future<Output = Result<()>> + MaybeSend
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: set_local_parent
      Src: /src/opendal/core/layers/fastrace/src/lib.rs:357,1
    - Dst: LocalSpan::enter_with_local_parent
      Src: /src/opendal/core/layers/fastrace/src/lib.rs:358,1
    - Dst: into_static
      Src: /src/opendal/core/layers/fastrace/src/lib.rs:358,1
    - Dst: close
      Src: /src/opendal/core/layers/fastrace/src/lib.rs:359,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 360
      start: 356
    functionDepth: 30
    functionLinenumber: 356
    functionLinenumberEnd: 360
    functionName: FastraceWrapper::close
    functionSourceFile: /src/opendal/core/layers/fastrace/src/lib.rs
    functionUses: 0
    functionsReached:
    - set_local_parent
    - LocalSpan::enter_with_local_parent
    - into_static
    - close
    linkageType: ''
    returnType: impl Future
    signature: fn close(&mut self) -> impl Future<Output = Result<Metadata>> + MaybeSend
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: set_local_parent
      Src: /src/opendal/core/layers/fastrace/src/lib.rs:351,1
    - Dst: LocalSpan::enter_with_local_parent
      Src: /src/opendal/core/layers/fastrace/src/lib.rs:352,1
    - Dst: into_static
      Src: /src/opendal/core/layers/fastrace/src/lib.rs:352,1
    - Dst: next
      Src: /src/opendal/core/layers/fastrace/src/lib.rs:353,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 354
      start: 350
    functionDepth: 30
    functionLinenumber: 350
    functionLinenumberEnd: 354
    functionName: FastraceWrapper::next
    functionSourceFile: /src/opendal/core/layers/fastrace/src/lib.rs
    functionUses: 0
    functionsReached:
    - next
    - set_local_parent
    - LocalSpan::enter_with_local_parent
    - into_static
    linkageType: ''
    returnType: impl Future
    signature: fn next(&mut self) -> impl Future<Output = Result<Option<usize>>> +
      MaybeSend
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: set_local_parent
      Src: /src/opendal/core/layers/fastrace/src/lib.rs:337,1
    - Dst: LocalSpan::enter_with_local_parent
      Src: /src/opendal/core/layers/fastrace/src/lib.rs:338,1
    - Dst: into_static
      Src: /src/opendal/core/layers/fastrace/src/lib.rs:338,1
    - Dst: delete
      Src: /src/opendal/core/layers/fastrace/src/lib.rs:339,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 2
    argNames:
    - path
    - args
    argTypes:
    - '&''a str'
    - OpDelete
    constantsTouched: []
    func_position:
      end: 340
      start: 332
    functionDepth: 30
    functionLinenumber: 332
    functionLinenumberEnd: 340
    functionName: FastraceWrapper::delete
    functionSourceFile: /src/opendal/core/layers/fastrace/src/lib.rs
    functionUses: 0
    functionsReached:
    - set_local_parent
    - LocalSpan::enter_with_local_parent
    - into_static
    - delete
    linkageType: ''
    returnType: impl Future
    signature: 'fn delete<''a>(&''a mut self,path: &''a str,args: OpDelete,) -> impl
      Future<Output = Result<()>> + MaybeSend + ''a'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Arc::clone
      Src: /src/opendal/core/layers/concurrent-limit/src/lib.rs:51,1
    - Dst: Self::acquire_owned
      Src: /src/opendal/core/layers/concurrent-limit/src/lib.rs:51,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 52
      start: 50
    functionDepth: 2
    functionLinenumber: 50
    functionLinenumberEnd: 52
    functionName: Arc::acquire
    functionSourceFile: /src/opendal/core/layers/concurrent-limit/src/lib.rs
    functionUses: 0
    functionsReached:
    - Self::acquire_owned
    - Arc::clone
    linkageType: ''
    returnType: Self::Permit
    signature: async fn acquire(&self) -> Self::Permit
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::debug_struct
      Src: /src/opendal/core/layers/concurrent-limit/src/lib.rs:110,1
    - Dst: field
      Src: /src/opendal/core/layers/concurrent-limit/src/lib.rs:110,1
    - Dst: is_some
      Src: /src/opendal/core/layers/concurrent-limit/src/lib.rs:111,1
    - Dst: finish_non_exhaustive
      Src: /src/opendal/core/layers/concurrent-limit/src/lib.rs:110,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 1
    argNames:
    - f
    argTypes:
    - '&mut std::fmt::Formatter<''_>'
    constantsTouched: []
    func_position:
      end: 113
      start: 109
    functionDepth: 5
    functionLinenumber: 109
    functionLinenumberEnd: 113
    functionName: ConcurrentLimitLayer::fmt
    functionSourceFile: /src/opendal/core/layers/concurrent-limit/src/lib.rs
    functionUses: 0
    functionsReached:
    - field
    - Result::debug_struct
    - is_some
    - finish_non_exhaustive
    linkageType: ''
    returnType: std::fmt::Result
    signature: 'fn fmt(&self, f: &mut std::fmt::Formatter<''_>) -> std::fmt::Result'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - permits
    argTypes:
    - i64
    constantsTouched: []
    func_position:
      end: 239
      start: 234
    functionDepth: 0
    functionLinenumber: 234
    functionLinenumberEnd: 239
    functionName: ConcurrentLimitLayer::new
    functionSourceFile: /src/opendal/bindings/nodejs/src/layer.rs
    functionUses: 6
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(permits: i64) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: ConcurrentLimitLayer::with_http_semaphore
      Src: /src/opendal/core/layers/concurrent-limit/src/lib.rs:132,1
    - Dst: Arc::new
      Src: /src/opendal/core/layers/concurrent-limit/src/lib.rs:132,1
    - Dst: Semaphore::new
      Src: /src/opendal/core/layers/concurrent-limit/src/lib.rs:132,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - permits
    argTypes:
    - usize
    constantsTouched: []
    func_position:
      end: 133
      start: 131
    functionDepth: 2
    functionLinenumber: 131
    functionLinenumberEnd: 133
    functionName: ConcurrentLimitLayer::with_http_concurrent_limit
    functionSourceFile: /src/opendal/core/layers/concurrent-limit/src/lib.rs
    functionUses: 0
    functionsReached:
    - Semaphore::new
    - Arc::new
    - ConcurrentLimitLayer::with_http_semaphore
    linkageType: ''
    returnType: Self
    signature: 'pub fn with_http_concurrent_limit(self, permits: usize) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - operation_semaphore
    argTypes:
    - S
    constantsTouched: []
    func_position:
      end: 151
      start: 146
    functionDepth: 0
    functionLinenumber: 146
    functionLinenumberEnd: 151
    functionName: ConcurrentLimitLayer::with_semaphore
    functionSourceFile: /src/opendal/core/layers/concurrent-limit/src/lib.rs
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: 'pub fn with_semaphore(operation_semaphore: S) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Some
      Src: /src/opendal/core/layers/concurrent-limit/src/lib.rs:155,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - semaphore
    argTypes:
    - S
    constantsTouched: []
    func_position:
      end: 157
      start: 154
    functionDepth: 0
    functionLinenumber: 154
    functionLinenumberEnd: 157
    functionName: ConcurrentLimitLayer::with_http_semaphore
    functionSourceFile: /src/opendal/core/layers/concurrent-limit/src/lib.rs
    functionUses: 1
    functionsReached:
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn with_http_semaphore(mut self, semaphore: S) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Arc::new
      Src: /src/opendal/core/layers/concurrent-limit/src/lib.rs:165,1
    - Dst: ConcurrentLimitLayer::layer
      Src: /src/opendal/core/layers/concurrent-limit/src/lib.rs:165,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - inner
    argTypes:
    - Servicer
    constantsTouched: []
    func_position:
      end: 166
      start: 164
    functionDepth: 4
    functionLinenumber: 164
    functionLinenumberEnd: 166
    functionName: ConcurrentLimitLayer::apply_service
    functionSourceFile: /src/opendal/core/layers/concurrent-limit/src/lib.rs
    functionUses: 0
    functionsReached:
    - Arc::new
    - ConcurrentLimitLayer::layer
    linkageType: ''
    returnType: Servicer
    signature: 'fn apply_service(&self, inner: Servicer) -> Servicer'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: HttpTransporter::new
      Src: /src/opendal/core/layers/concurrent-limit/src/lib.rs:171,1
    - Dst: Arc::http_transport
      Src: /src/opendal/core/layers/concurrent-limit/src/lib.rs:172,1
    - Dst: Self::clone
      Src: /src/opendal/core/layers/concurrent-limit/src/lib.rs:172,1
    - Dst: clone
      Src: /src/opendal/core/layers/concurrent-limit/src/lib.rs:173,1
    - Dst: Arc::with_http_transport
      Src: /src/opendal/core/layers/concurrent-limit/src/lib.rs:175,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 2
    argNames:
    - _srv
    - inner
    argTypes:
    - Servicer
    - OperationContext
    constantsTouched: []
    func_position:
      end: 176
      start: 168
    functionDepth: 3
    functionLinenumber: 168
    functionLinenumberEnd: 176
    functionName: ConcurrentLimitLayer::apply_context
    functionSourceFile: /src/opendal/core/layers/concurrent-limit/src/lib.rs
    functionUses: 0
    functionsReached:
    - HttpTransporter::new
    - clone
    - Self::clone
    - Arc::with_http_transport
    - Arc::http_transport
    linkageType: ''
    returnType: OperationContext
    signature: 'fn apply_context(&self, _srv: Servicer, inner: OperationContext) ->
      OperationContext'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: layer
      Src: /src/opendal/bindings/python/src/layers/concurrent_limit.rs:37,1
    - Dst: clone
      Src: /src/opendal/bindings/python/src/layers/concurrent_limit.rs:37,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - op
    argTypes:
    - Operator
    constantsTouched: []
    func_position:
      end: 38
      start: 36
    functionDepth: 3
    functionLinenumber: 36
    functionLinenumberEnd: 38
    functionName: ConcurrentLimitLayer::layer
    functionSourceFile: /src/opendal/bindings/python/src/layers/concurrent_limit.rs
    functionUses: 1
    functionsReached:
    - layer
    - clone
    linkageType: ''
    returnType: Operator
    signature: 'fn layer(&self, op: Operator) -> Operator'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: clone
      Src: /src/opendal/core/layers/concurrent-limit/src/lib.rs:202,1
    - Dst: fetch
      Src: /src/opendal/core/layers/concurrent-limit/src/lib.rs:203,1
    - Dst: Self::acquire
      Src: /src/opendal/core/layers/concurrent-limit/src/lib.rs:206,1
    - Dst: fetch
      Src: /src/opendal/core/layers/concurrent-limit/src/lib.rs:208,1
    - Dst: into_parts
      Src: /src/opendal/core/layers/concurrent-limit/src/lib.rs:209,1
    - Dst: map_inner
      Src: /src/opendal/core/layers/concurrent-limit/src/lib.rs:210,1
    - Dst: Box::new
      Src: /src/opendal/core/layers/concurrent-limit/src/lib.rs:211,1
    - Dst: Ok
      Src: /src/opendal/core/layers/concurrent-limit/src/lib.rs:216,1
    - Dst: http::Response::from_parts
      Src: /src/opendal/core/layers/concurrent-limit/src/lib.rs:216,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 26
    argCount: 1
    argNames:
    - req
    argTypes:
    - http::Request<Buffer>
    constantsTouched: []
    func_position:
      end: 217
      start: 201
    functionDepth: 2
    functionLinenumber: 201
    functionLinenumberEnd: 217
    functionName: ConcurrentLimitHttpTransport::fetch
    functionSourceFile: /src/opendal/core/layers/concurrent-limit/src/lib.rs
    functionUses: 0
    functionsReached:
    - map_inner
    - Ok
    - Box::new
    - clone
    - http::Response::from_parts
    - into_parts
    - fetch
    - Self::acquire
    linkageType: ''
    returnType: Result
    signature: 'async fn fetch(&self, req: http::Request<Buffer>) -> Result<http::Response<HttpBody>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: ConcurrentLimitStream::get_mut
      Src: /src/opendal/core/layers/concurrent-limit/src/lib.rs:235,1
    - Dst: poll_next_unpin
      Src: /src/opendal/core/layers/concurrent-limit/src/lib.rs:236,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - cx
    argTypes:
    - Pin<&mut Self>
    - '&mut Context<''_>'
    constantsTouched: []
    func_position:
      end: 237
      start: 233
    functionDepth: 0
    functionLinenumber: 233
    functionLinenumberEnd: 237
    functionName: ConcurrentLimitStream::poll_next
    functionSourceFile: /src/opendal/core/layers/concurrent-limit/src/lib.rs
    functionUses: 0
    functionsReached:
    - poll_next_unpin
    - ConcurrentLimitStream::get_mut
    linkageType: ''
    returnType: Poll
    signature: 'fn poll_next(self: Pin<&mut Self>, cx: &mut Context<''_>) -> Poll<Option<Self::Item>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::debug_struct
      Src: /src/opendal/core/layers/concurrent-limit/src/lib.rs:249,1
    - Dst: field
      Src: /src/opendal/core/layers/concurrent-limit/src/lib.rs:249,1
    - Dst: finish_non_exhaustive
      Src: /src/opendal/core/layers/concurrent-limit/src/lib.rs:249,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - f
    argTypes:
    - '&mut std::fmt::Formatter<''_>'
    constantsTouched: []
    func_position:
      end: 252
      start: 248
    functionDepth: 5
    functionLinenumber: 248
    functionLinenumberEnd: 252
    functionName: ConcurrentLimitService::fmt
    functionSourceFile: /src/opendal/core/layers/concurrent-limit/src/lib.rs
    functionUses: 0
    functionsReached:
    - field
    - Result::debug_struct
    - finish_non_exhaustive
    linkageType: ''
    returnType: std::fmt::Result
    signature: 'fn fmt(&self, f: &mut std::fmt::Formatter<''_>) -> std::fmt::Result'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: info
      Src: /src/opendal/core/layers/concurrent-limit/src/lib.rs:266,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 267
      start: 265
    functionDepth: 2
    functionLinenumber: 265
    functionLinenumberEnd: 267
    functionName: ConcurrentLimitService::info
    functionSourceFile: /src/opendal/core/layers/concurrent-limit/src/lib.rs
    functionUses: 0
    functionsReached:
    - info
    linkageType: ''
    returnType: ServiceInfo
    signature: fn info(&self) -> ServiceInfo
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: capability
      Src: /src/opendal/core/layers/concurrent-limit/src/lib.rs:270,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 271
      start: 269
    functionDepth: 2
    functionLinenumber: 269
    functionLinenumberEnd: 271
    functionName: ConcurrentLimitService::capability
    functionSourceFile: /src/opendal/core/layers/concurrent-limit/src/lib.rs
    functionUses: 0
    functionsReached:
    - capability
    linkageType: ''
    returnType: Capability
    signature: fn capability(&self) -> Capability
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: acquire
      Src: /src/opendal/core/layers/concurrent-limit/src/lib.rs:279,1
    - Dst: create_dir
      Src: /src/opendal/core/layers/concurrent-limit/src/lib.rs:280,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpCreateDir
    constantsTouched: []
    func_position:
      end: 281
      start: 273
    functionDepth: 35
    functionLinenumber: 273
    functionLinenumberEnd: 281
    functionName: ConcurrentLimitService::create_dir
    functionSourceFile: /src/opendal/core/layers/concurrent-limit/src/lib.rs
    functionUses: 0
    functionsReached:
    - acquire
    - create_dir
    linkageType: ''
    returnType: Result
    signature: 'async fn create_dir(&self,ctx: &OperationContext,path: &str,args:
      OpCreateDir,) -> Result<RpCreateDir>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: read
      Src: /src/opendal/core/layers/concurrent-limit/src/lib.rs:284,1
    - Dst: map
      Src: /src/opendal/core/layers/concurrent-limit/src/lib.rs:284,1
    - Dst: ConcurrentLimitReader::new
      Src: /src/opendal/core/layers/concurrent-limit/src/lib.rs:286,1
    - Dst: clone
      Src: /src/opendal/core/layers/concurrent-limit/src/lib.rs:286,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpRead
    constantsTouched: []
    func_position:
      end: 287
      start: 283
    functionDepth: 31
    functionLinenumber: 283
    functionLinenumberEnd: 287
    functionName: ConcurrentLimitService::read
    functionSourceFile: /src/opendal/core/layers/concurrent-limit/src/lib.rs
    functionUses: 0
    functionsReached:
    - read
    - ConcurrentLimitReader::new
    - clone
    - map
    linkageType: ''
    returnType: Result
    signature: 'fn read(&self, ctx: &OperationContext, path: &str, args: OpRead) ->
      Result<Self::Reader>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: write
      Src: /src/opendal/core/layers/concurrent-limit/src/lib.rs:290,1
    - Dst: map
      Src: /src/opendal/core/layers/concurrent-limit/src/lib.rs:290,1
    - Dst: ConcurrentLimitWrapper::new
      Src: /src/opendal/core/layers/concurrent-limit/src/lib.rs:292,1
    - Dst: clone
      Src: /src/opendal/core/layers/concurrent-limit/src/lib.rs:292,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpWrite
    constantsTouched: []
    func_position:
      end: 293
      start: 289
    functionDepth: 36
    functionLinenumber: 289
    functionLinenumberEnd: 293
    functionName: ConcurrentLimitService::write
    functionSourceFile: /src/opendal/core/layers/concurrent-limit/src/lib.rs
    functionUses: 0
    functionsReached:
    - map
    - ConcurrentLimitWrapper::new
    - write
    - clone
    linkageType: ''
    returnType: Result
    signature: 'fn write(&self, ctx: &OperationContext, path: &str, args: OpWrite)
      -> Result<Self::Writer>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: copy
      Src: /src/opendal/core/layers/concurrent-limit/src/lib.rs:303,1
    - Dst: map
      Src: /src/opendal/core/layers/concurrent-limit/src/lib.rs:303,1
    - Dst: ConcurrentLimitWrapper::new
      Src: /src/opendal/core/layers/concurrent-limit/src/lib.rs:305,1
    - Dst: clone
      Src: /src/opendal/core/layers/concurrent-limit/src/lib.rs:305,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 5
    argNames:
    - ctx
    - from
    - to
    - args
    - opts
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    - OpCopy
    - OpCopier
    constantsTouched: []
    func_position:
      end: 306
      start: 295
    functionDepth: 34
    functionLinenumber: 295
    functionLinenumberEnd: 306
    functionName: ConcurrentLimitService::copy
    functionSourceFile: /src/opendal/core/layers/concurrent-limit/src/lib.rs
    functionUses: 0
    functionsReached:
    - map
    - ConcurrentLimitWrapper::new
    - clone
    - copy
    linkageType: ''
    returnType: Result
    signature: 'fn copy(&self,ctx: &OperationContext,from: &str,to: &str,args: OpCopy,opts:
      OpCopier,) -> Result<Self::Copier>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: acquire
      Src: /src/opendal/core/layers/concurrent-limit/src/lib.rs:315,1
    - Dst: rename
      Src: /src/opendal/core/layers/concurrent-limit/src/lib.rs:316,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 4
    argNames:
    - ctx
    - from
    - to
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    - OpRename
    constantsTouched: []
    func_position:
      end: 317
      start: 308
    functionDepth: 3
    functionLinenumber: 308
    functionLinenumberEnd: 317
    functionName: ConcurrentLimitService::rename
    functionSourceFile: /src/opendal/core/layers/concurrent-limit/src/lib.rs
    functionUses: 0
    functionsReached:
    - rename
    - acquire
    linkageType: ''
    returnType: Result
    signature: 'async fn rename(&self,ctx: &OperationContext,from: &str,to: &str,args:
      OpRename,) -> Result<RpRename>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: acquire
      Src: /src/opendal/core/layers/concurrent-limit/src/lib.rs:320,1
    - Dst: stat
      Src: /src/opendal/core/layers/concurrent-limit/src/lib.rs:321,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpStat
    constantsTouched: []
    func_position:
      end: 322
      start: 319
    functionDepth: 31
    functionLinenumber: 319
    functionLinenumberEnd: 322
    functionName: ConcurrentLimitService::stat
    functionSourceFile: /src/opendal/core/layers/concurrent-limit/src/lib.rs
    functionUses: 0
    functionsReached:
    - acquire
    - stat
    linkageType: ''
    returnType: Result
    signature: 'async fn stat(&self, ctx: &OperationContext, path: &str, args: OpStat)
      -> Result<RpStat>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: delete
      Src: /src/opendal/core/layers/concurrent-limit/src/lib.rs:325,1
    - Dst: map
      Src: /src/opendal/core/layers/concurrent-limit/src/lib.rs:325,1
    - Dst: ConcurrentLimitWrapper::new
      Src: /src/opendal/core/layers/concurrent-limit/src/lib.rs:327,1
    - Dst: clone
      Src: /src/opendal/core/layers/concurrent-limit/src/lib.rs:327,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - '&OperationContext'
    constantsTouched: []
    func_position:
      end: 328
      start: 324
    functionDepth: 32
    functionLinenumber: 324
    functionLinenumberEnd: 328
    functionName: ConcurrentLimitService::delete
    functionSourceFile: /src/opendal/core/layers/concurrent-limit/src/lib.rs
    functionUses: 0
    functionsReached:
    - map
    - ConcurrentLimitWrapper::new
    - clone
    - delete
    linkageType: ''
    returnType: Result
    signature: 'fn delete(&self, ctx: &OperationContext) -> Result<Self::Deleter>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: list
      Src: /src/opendal/core/layers/concurrent-limit/src/lib.rs:331,1
    - Dst: map
      Src: /src/opendal/core/layers/concurrent-limit/src/lib.rs:331,1
    - Dst: ConcurrentLimitWrapper::new
      Src: /src/opendal/core/layers/concurrent-limit/src/lib.rs:333,1
    - Dst: clone
      Src: /src/opendal/core/layers/concurrent-limit/src/lib.rs:333,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpList
    constantsTouched: []
    func_position:
      end: 334
      start: 330
    functionDepth: 2
    functionLinenumber: 330
    functionLinenumberEnd: 334
    functionName: ConcurrentLimitService::list
    functionSourceFile: /src/opendal/core/layers/concurrent-limit/src/lib.rs
    functionUses: 0
    functionsReached:
    - list
    - ConcurrentLimitWrapper::new
    - clone
    - map
    linkageType: ''
    returnType: Result
    signature: 'fn list(&self, ctx: &OperationContext, path: &str, args: OpList) ->
      Result<Self::Lister>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: acquire
      Src: /src/opendal/core/layers/concurrent-limit/src/lib.rs:342,1
    - Dst: presign
      Src: /src/opendal/core/layers/concurrent-limit/src/lib.rs:343,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpPresign
    constantsTouched: []
    func_position:
      end: 344
      start: 336
    functionDepth: 3
    functionLinenumber: 336
    functionLinenumberEnd: 344
    functionName: ConcurrentLimitService::presign
    functionSourceFile: /src/opendal/core/layers/concurrent-limit/src/lib.rs
    functionUses: 0
    functionsReached:
    - acquire
    - presign
    linkageType: ''
    returnType: Result
    signature: 'async fn presign(&self,ctx: &OperationContext,path: &str,args: OpPresign,)
      -> Result<RpPresign>'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - inner
    - semaphore
    argTypes:
    - R
    - S
    constantsTouched: []
    func_position:
      end: 356
      start: 354
    functionDepth: 0
    functionLinenumber: 354
    functionLinenumberEnd: 356
    functionName: ConcurrentLimitReader::new
    functionSourceFile: /src/opendal/core/layers/concurrent-limit/src/lib.rs
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: 'fn new(inner: R, semaphore: S) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: acquire
      Src: /src/opendal/core/layers/concurrent-limit/src/lib.rs:364,1
    - Dst: open
      Src: /src/opendal/core/layers/concurrent-limit/src/lib.rs:365,1
    - Dst: Ok
      Src: /src/opendal/core/layers/concurrent-limit/src/lib.rs:366,1
    - Dst: Box::new
      Src: /src/opendal/core/layers/concurrent-limit/src/lib.rs:368,1
    - Dst: ConcurrentLimitWrapper::new_with_permit
      Src: /src/opendal/core/layers/concurrent-limit/src/lib.rs:368,1
    - Dst: clone
      Src: /src/opendal/core/layers/concurrent-limit/src/lib.rs:370,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 1
    argNames:
    - range
    argTypes:
    - BytesRange
    constantsTouched: []
    func_position:
      end: 374
      start: 363
    functionDepth: 3
    functionLinenumber: 363
    functionLinenumberEnd: 374
    functionName: ConcurrentLimitReader::open
    functionSourceFile: /src/opendal/core/layers/concurrent-limit/src/lib.rs
    functionUses: 0
    functionsReached:
    - acquire
    - Ok
    - Box::new
    - clone
    - ConcurrentLimitWrapper::new_with_permit
    - open
    linkageType: ''
    returnType: Result
    signature: 'async fn open(&self, range: BytesRange) -> Result<(RpRead, Box<dyn
      oio::ReadStreamDyn>)>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: acquire
      Src: /src/opendal/core/layers/concurrent-limit/src/lib.rs:377,1
    - Dst: read
      Src: /src/opendal/core/layers/concurrent-limit/src/lib.rs:378,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - range
    argTypes:
    - BytesRange
    constantsTouched: []
    func_position:
      end: 379
      start: 376
    functionDepth: 31
    functionLinenumber: 376
    functionLinenumberEnd: 379
    functionName: ConcurrentLimitReader::read
    functionSourceFile: /src/opendal/core/layers/concurrent-limit/src/lib.rs
    functionUses: 0
    functionsReached:
    - read
    - acquire
    linkageType: ''
    returnType: Result
    signature: 'async fn read(&self, range: BytesRange) -> Result<(RpRead, Buffer)>'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - inner
    - semaphore
    argTypes:
    - R
    - S
    constantsTouched: []
    func_position:
      end: 397
      start: 391
    functionDepth: 0
    functionLinenumber: 391
    functionLinenumberEnd: 397
    functionName: ConcurrentLimitWrapper::new
    functionSourceFile: /src/opendal/core/layers/concurrent-limit/src/lib.rs
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: 'fn new(inner: R, semaphore: S) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Some
      Src: /src/opendal/core/layers/concurrent-limit/src/lib.rs:403,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - inner
    - semaphore
    - permit
    argTypes:
    - R
    - S
    - S::Permit
    constantsTouched: []
    func_position:
      end: 405
      start: 399
    functionDepth: 0
    functionLinenumber: 399
    functionLinenumberEnd: 405
    functionName: ConcurrentLimitWrapper::new_with_permit
    functionSourceFile: /src/opendal/core/layers/concurrent-limit/src/lib.rs
    functionUses: 1
    functionsReached:
    - Some
    linkageType: ''
    returnType: Self
    signature: 'fn new_with_permit(inner: R, semaphore: S, permit: S::Permit) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: is_none
      Src: /src/opendal/core/layers/concurrent-limit/src/lib.rs:408,1
    - Dst: Some
      Src: /src/opendal/core/layers/concurrent-limit/src/lib.rs:409,1
    - Dst: acquire
      Src: /src/opendal/core/layers/concurrent-limit/src/lib.rs:409,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 411
      start: 407
    functionDepth: 3
    functionLinenumber: 407
    functionLinenumberEnd: 411
    functionName: ConcurrentLimitWrapper::acquire
    functionSourceFile: /src/opendal/core/layers/concurrent-limit/src/lib.rs
    functionUses: 5
    functionsReached:
    - is_none
    - acquire
    - Some
    linkageType: ''
    returnType: void
    signature: async fn acquire(&mut self)
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: read
      Src: /src/opendal/core/layers/concurrent-limit/src/lib.rs:434,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - range
    argTypes:
    - BytesRange
    constantsTouched: []
    func_position:
      end: 435
      start: 433
    functionDepth: 31
    functionLinenumber: 433
    functionLinenumberEnd: 435
    functionName: ConcurrentLimitWrapper::read
    functionSourceFile: /src/opendal/core/layers/concurrent-limit/src/lib.rs
    functionUses: 0
    functionsReached:
    - read
    linkageType: ''
    returnType: Result
    signature: 'async fn read(&self, range: BytesRange) -> Result<(RpRead, Buffer)>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: open
      Src: /src/opendal/core/layers/concurrent-limit/src/lib.rs:430,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - range
    argTypes:
    - BytesRange
    constantsTouched: []
    func_position:
      end: 431
      start: 429
    functionDepth: 3
    functionLinenumber: 429
    functionLinenumberEnd: 431
    functionName: ConcurrentLimitWrapper::open
    functionSourceFile: /src/opendal/core/layers/concurrent-limit/src/lib.rs
    functionUses: 0
    functionsReached:
    - open
    linkageType: ''
    returnType: Result
    signature: 'async fn open(&self, range: BytesRange) -> Result<(RpRead, Box<dyn
      oio::ReadStreamDyn>)>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: ConcurrentLimitWrapper::acquire
      Src: /src/opendal/core/layers/concurrent-limit/src/lib.rs:443,1
    - Dst: write
      Src: /src/opendal/core/layers/concurrent-limit/src/lib.rs:444,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - bs
    argTypes:
    - Buffer
    constantsTouched: []
    func_position:
      end: 445
      start: 442
    functionDepth: 36
    functionLinenumber: 442
    functionLinenumberEnd: 445
    functionName: ConcurrentLimitWrapper::write
    functionSourceFile: /src/opendal/core/layers/concurrent-limit/src/lib.rs
    functionUses: 0
    functionsReached:
    - ConcurrentLimitWrapper::acquire
    - write
    linkageType: ''
    returnType: Result
    signature: 'async fn write(&mut self, bs: Buffer) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: ConcurrentLimitWrapper::acquire
      Src: /src/opendal/core/layers/concurrent-limit/src/lib.rs:493,1
    - Dst: close
      Src: /src/opendal/core/layers/concurrent-limit/src/lib.rs:494,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 495
      start: 492
    functionDepth: 4
    functionLinenumber: 492
    functionLinenumberEnd: 495
    functionName: ConcurrentLimitWrapper::close
    functionSourceFile: /src/opendal/core/layers/concurrent-limit/src/lib.rs
    functionUses: 0
    functionsReached:
    - ConcurrentLimitWrapper::acquire
    - close
    linkageType: ''
    returnType: Result
    signature: async fn close(&mut self) -> Result<Metadata>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: ConcurrentLimitWrapper::acquire
      Src: /src/opendal/core/layers/concurrent-limit/src/lib.rs:498,1
    - Dst: abort
      Src: /src/opendal/core/layers/concurrent-limit/src/lib.rs:499,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 500
      start: 497
    functionDepth: 31
    functionLinenumber: 497
    functionLinenumberEnd: 500
    functionName: ConcurrentLimitWrapper::abort
    functionSourceFile: /src/opendal/core/layers/concurrent-limit/src/lib.rs
    functionUses: 0
    functionsReached:
    - ConcurrentLimitWrapper::acquire
    - abort
    linkageType: ''
    returnType: Result
    signature: async fn abort(&mut self) -> Result<()>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: ConcurrentLimitWrapper::acquire
      Src: /src/opendal/core/layers/concurrent-limit/src/lib.rs:488,1
    - Dst: next
      Src: /src/opendal/core/layers/concurrent-limit/src/lib.rs:489,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 490
      start: 487
    functionDepth: 4
    functionLinenumber: 487
    functionLinenumberEnd: 490
    functionName: ConcurrentLimitWrapper::next
    functionSourceFile: /src/opendal/core/layers/concurrent-limit/src/lib.rs
    functionUses: 0
    functionsReached:
    - next
    - ConcurrentLimitWrapper::acquire
    linkageType: ''
    returnType: Result
    signature: async fn next(&mut self) -> Result<Option<usize>>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: ConcurrentLimitWrapper::acquire
      Src: /src/opendal/core/layers/concurrent-limit/src/lib.rs:473,1
    - Dst: delete
      Src: /src/opendal/core/layers/concurrent-limit/src/lib.rs:474,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - path
    - args
    argTypes:
    - '&str'
    - OpDelete
    constantsTouched: []
    func_position:
      end: 475
      start: 472
    functionDepth: 32
    functionLinenumber: 472
    functionLinenumberEnd: 475
    functionName: ConcurrentLimitWrapper::delete
    functionSourceFile: /src/opendal/core/layers/concurrent-limit/src/lib.rs
    functionUses: 0
    functionsReached:
    - ConcurrentLimitWrapper::acquire
    - delete
    linkageType: ''
    returnType: Result
    signature: 'async fn delete(&mut self, path: &str, args: OpDelete) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Arc::new
      Src: /src/opendal/core/layers/concurrent-limit/src/lib.rs:518,1
    - Dst: Semaphore::new
      Src: /src/opendal/core/layers/concurrent-limit/src/lib.rs:518,1
    - Dst: ConcurrentLimitLayer::with_semaphore
      Src: /src/opendal/core/layers/concurrent-limit/src/lib.rs:519,1
    - Dst: Self::clone
      Src: /src/opendal/core/layers/concurrent-limit/src/lib.rs:519,1
    - Dst: Self::clone
      Src: /src/opendal/core/layers/concurrent-limit/src/lib.rs:521,1
    - Dst: Self::acquire_owned
      Src: /src/opendal/core/layers/concurrent-limit/src/lib.rs:521,1
    - Dst: Operator::new
      Src: /src/opendal/core/layers/concurrent-limit/src/lib.rs:523,1
    - Dst: services::Memory::default
      Src: /src/opendal/core/layers/concurrent-limit/src/lib.rs:523,1
    - Dst: Result::expect
      Src: /src/opendal/core/layers/concurrent-limit/src/lib.rs:523,1
    - Dst: layer
      Src: /src/opendal/core/layers/concurrent-limit/src/lib.rs:523,1
    - Dst: timeout
      Src: /src/opendal/core/layers/concurrent-limit/src/lib.rs:527,1
    - Dst: Duration::from_millis
      Src: /src/opendal/core/layers/concurrent-limit/src/lib.rs:527,1
    - Dst: stat
      Src: /src/opendal/core/layers/concurrent-limit/src/lib.rs:527,1
    - Dst: drop
      Src: /src/opendal/core/layers/concurrent-limit/src/lib.rs:533,1
    - Dst: timeout
      Src: /src/opendal/core/layers/concurrent-limit/src/lib.rs:535,1
    - Dst: Duration::from_millis
      Src: /src/opendal/core/layers/concurrent-limit/src/lib.rs:535,1
    - Dst: stat
      Src: /src/opendal/core/layers/concurrent-limit/src/lib.rs:535,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 30
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 540
      start: 517
    functionDepth: 31
    functionLinenumber: 517
    functionLinenumberEnd: 540
    functionName: tests::operation_semaphore_can_be_shared
    functionSourceFile: /src/opendal/core/layers/concurrent-limit/src/lib.rs
    functionUses: 0
    functionsReached:
    - Semaphore::new
    - Operator::new
    - drop
    - Result::expect
    - Arc::new
    - timeout
    - ConcurrentLimitLayer::with_semaphore
    - Self::acquire_owned
    - Self::clone
    - services::Memory::default
    - layer
    - stat
    - Duration::from_millis
    linkageType: ''
    returnType: void
    signature: async fn operation_semaphore_can_be_shared()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Arc::new
      Src: /src/opendal/core/layers/concurrent-limit/src/lib.rs:646,1
    - Dst: Semaphore::new
      Src: /src/opendal/core/layers/concurrent-limit/src/lib.rs:646,1
    - Dst: ConcurrentLimitLayer::with_semaphore
      Src: /src/opendal/core/layers/concurrent-limit/src/lib.rs:647,1
    - Dst: Self::clone
      Src: /src/opendal/core/layers/concurrent-limit/src/lib.rs:647,1
    - Dst: Default::default
      Src: /src/opendal/core/layers/concurrent-limit/src/lib.rs:651,1
    - Dst: Operator::from_parts
      Src: /src/opendal/core/layers/concurrent-limit/src/lib.rs:653,1
    - Dst: OperationContext::default
      Src: /src/opendal/core/layers/concurrent-limit/src/lib.rs:654,1
    - Dst: Arc::new
      Src: /src/opendal/core/layers/concurrent-limit/src/lib.rs:655,1
    - Dst: ServiceInfo::with_scheme
      Src: /src/opendal/core/layers/concurrent-limit/src/lib.rs:656,1
    - Dst: Self::layer
      Src: /src/opendal/core/layers/concurrent-limit/src/lib.rs:653,1
    - Dst: Self::clone
      Src: /src/opendal/core/layers/concurrent-limit/src/lib.rs:662,1
    - Dst: Self::acquire_owned
      Src: /src/opendal/core/layers/concurrent-limit/src/lib.rs:662,1
    - Dst: timeout
      Src: /src/opendal/core/layers/concurrent-limit/src/lib.rs:664,1
    - Dst: Duration::from_millis
      Src: /src/opendal/core/layers/concurrent-limit/src/lib.rs:664,1
    - Dst: copy
      Src: /src/opendal/core/layers/concurrent-limit/src/lib.rs:664,1
    - Dst: timeout
      Src: /src/opendal/core/layers/concurrent-limit/src/lib.rs:667,1
    - Dst: Duration::from_millis
      Src: /src/opendal/core/layers/concurrent-limit/src/lib.rs:667,1
    - Dst: rename
      Src: /src/opendal/core/layers/concurrent-limit/src/lib.rs:667,1
    - Dst: drop
      Src: /src/opendal/core/layers/concurrent-limit/src/lib.rs:673,1
    - Dst: timeout
      Src: /src/opendal/core/layers/concurrent-limit/src/lib.rs:675,1
    - Dst: Duration::from_millis
      Src: /src/opendal/core/layers/concurrent-limit/src/lib.rs:675,1
    - Dst: copy
      Src: /src/opendal/core/layers/concurrent-limit/src/lib.rs:675,1
    - Dst: expect
      Src: /src/opendal/core/layers/concurrent-limit/src/lib.rs:675,1
    - Dst: expect
      Src: /src/opendal/core/layers/concurrent-limit/src/lib.rs:675,1
    - Dst: timeout
      Src: /src/opendal/core/layers/concurrent-limit/src/lib.rs:679,1
    - Dst: Duration::from_millis
      Src: /src/opendal/core/layers/concurrent-limit/src/lib.rs:679,1
    - Dst: rename
      Src: /src/opendal/core/layers/concurrent-limit/src/lib.rs:679,1
    - Dst: expect
      Src: /src/opendal/core/layers/concurrent-limit/src/lib.rs:679,1
    - Dst: expect
      Src: /src/opendal/core/layers/concurrent-limit/src/lib.rs:679,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 75
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 683
      start: 543
    functionDepth: 34
    functionLinenumber: 543
    functionLinenumberEnd: 683
    functionName: tests::operation_semaphore_limits_copy_and_rename
    functionSourceFile: /src/opendal/core/layers/concurrent-limit/src/lib.rs
    functionUses: 0
    functionsReached:
    - Operator::from_parts
    - Semaphore::new
    - drop
    - expect
    - Arc::new
    - Default::default
    - timeout
    - rename
    - ConcurrentLimitLayer::with_semaphore
    - Self::acquire_owned
    - Self::clone
    - copy
    - ServiceInfo::with_scheme
    - OperationContext::default
    - Self::layer
    - Duration::from_millis
    linkageType: ''
    returnType: void
    signature: async fn operation_semaphore_limits_copy_and_rename()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Arc::new
      Src: /src/opendal/core/layers/concurrent-limit/src/lib.rs:806,1
    - Dst: Semaphore::new
      Src: /src/opendal/core/layers/concurrent-limit/src/lib.rs:806,1
    - Dst: ConcurrentLimitLayer::with_semaphore
      Src: /src/opendal/core/layers/concurrent-limit/src/lib.rs:807,1
    - Dst: Self::clone
      Src: /src/opendal/core/layers/concurrent-limit/src/lib.rs:807,1
    - Dst: Default::default
      Src: /src/opendal/core/layers/concurrent-limit/src/lib.rs:811,1
    - Dst: Operator::from_parts
      Src: /src/opendal/core/layers/concurrent-limit/src/lib.rs:813,1
    - Dst: OperationContext::default
      Src: /src/opendal/core/layers/concurrent-limit/src/lib.rs:814,1
    - Dst: Arc::new
      Src: /src/opendal/core/layers/concurrent-limit/src/lib.rs:815,1
    - Dst: ServiceInfo::with_scheme
      Src: /src/opendal/core/layers/concurrent-limit/src/lib.rs:816,1
    - Dst: Self::layer
      Src: /src/opendal/core/layers/concurrent-limit/src/lib.rs:813,1
    - Dst: timeout
      Src: /src/opendal/core/layers/concurrent-limit/src/lib.rs:822,1
    - Dst: Duration::from_millis
      Src: /src/opendal/core/layers/concurrent-limit/src/lib.rs:822,1
    - Dst: copier
      Src: /src/opendal/core/layers/concurrent-limit/src/lib.rs:822,1
    - Dst: expect
      Src: /src/opendal/core/layers/concurrent-limit/src/lib.rs:822,1
    - Dst: expect
      Src: /src/opendal/core/layers/concurrent-limit/src/lib.rs:822,1
    - Dst: timeout
      Src: /src/opendal/core/layers/concurrent-limit/src/lib.rs:827,1
    - Dst: Duration::from_millis
      Src: /src/opendal/core/layers/concurrent-limit/src/lib.rs:827,1
    - Dst: Result::next
      Src: /src/opendal/core/layers/concurrent-limit/src/lib.rs:827,1
    - Dst: timeout
      Src: /src/opendal/core/layers/concurrent-limit/src/lib.rs:832,1
    - Dst: Duration::from_millis
      Src: /src/opendal/core/layers/concurrent-limit/src/lib.rs:832,1
    - Dst: stat
      Src: /src/opendal/core/layers/concurrent-limit/src/lib.rs:832,1
    - Dst: drop
      Src: /src/opendal/core/layers/concurrent-limit/src/lib.rs:838,1
    - Dst: timeout
      Src: /src/opendal/core/layers/concurrent-limit/src/lib.rs:840,1
    - Dst: Duration::from_millis
      Src: /src/opendal/core/layers/concurrent-limit/src/lib.rs:840,1
    - Dst: stat
      Src: /src/opendal/core/layers/concurrent-limit/src/lib.rs:840,1
    - Dst: expect
      Src: /src/opendal/core/layers/concurrent-limit/src/lib.rs:840,1
    - Dst: expect
      Src: /src/opendal/core/layers/concurrent-limit/src/lib.rs:840,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 75
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 844
      start: 686
    functionDepth: 36
    functionLinenumber: 686
    functionLinenumberEnd: 844
    functionName: tests::operation_semaphore_held_until_copier_dropped
    functionSourceFile: /src/opendal/core/layers/concurrent-limit/src/lib.rs
    functionUses: 0
    functionsReached:
    - Operator::from_parts
    - Semaphore::new
    - drop
    - expect
    - Arc::new
    - Default::default
    - timeout
    - copier
    - ConcurrentLimitLayer::with_semaphore
    - Result::next
    - Self::clone
    - ServiceInfo::with_scheme
    - OperationContext::default
    - stat
    - Self::layer
    - Duration::from_millis
    linkageType: ''
    returnType: void
    signature: async fn operation_semaphore_held_until_copier_dropped()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Buffer::from
      Src: /src/opendal/core/layers/concurrent-limit/src/lib.rs:1012,1
    - Dst: Operator::from_parts
      Src: /src/opendal/core/layers/concurrent-limit/src/lib.rs:1013,1
    - Dst: OperationContext::default
      Src: /src/opendal/core/layers/concurrent-limit/src/lib.rs:1014,1
    - Dst: Arc::new
      Src: /src/opendal/core/layers/concurrent-limit/src/lib.rs:1015,1
    - Dst: ServiceInfo::with_scheme
      Src: /src/opendal/core/layers/concurrent-limit/src/lib.rs:1016,1
    - Dst: Default::default
      Src: /src/opendal/core/layers/concurrent-limit/src/lib.rs:1020,1
    - Dst: Result::clone
      Src: /src/opendal/core/layers/concurrent-limit/src/lib.rs:1022,1
    - Dst: Self::with_context
      Src: /src/opendal/core/layers/concurrent-limit/src/lib.rs:1013,1
    - Dst: OperationContext::new
      Src: /src/opendal/core/layers/concurrent-limit/src/lib.rs:1026,1
    - Dst: Self::with_http_transport
      Src: /src/opendal/core/layers/concurrent-limit/src/lib.rs:1026,1
    - Dst: HttpTransporter::new
      Src: /src/opendal/core/layers/concurrent-limit/src/lib.rs:1026,1
    - Dst: Self::layer
      Src: /src/opendal/core/layers/concurrent-limit/src/lib.rs:1013,1
    - Dst: ConcurrentLimitLayer::new
      Src: /src/opendal/core/layers/concurrent-limit/src/lib.rs:1028,1
    - Dst: Self::with_http_concurrent_limit
      Src: /src/opendal/core/layers/concurrent-limit/src/lib.rs:1028,1
    - Dst: timeout
      Src: /src/opendal/core/layers/concurrent-limit/src/lib.rs:1031,1
    - Dst: Duration::from_secs
      Src: /src/opendal/core/layers/concurrent-limit/src/lib.rs:1031,1
    - Dst: reader_with
      Src: /src/opendal/core/layers/concurrent-limit/src/lib.rs:1032,1
    - Dst: FutureReader::chunk
      Src: /src/opendal/core/layers/concurrent-limit/src/lib.rs:1032,1
    - Dst: Self::concurrent
      Src: /src/opendal/core/layers/concurrent-limit/src/lib.rs:1032,1
    - Dst: expect
      Src: /src/opendal/core/layers/concurrent-limit/src/lib.rs:1032,1
    - Dst: read
      Src: /src/opendal/core/layers/concurrent-limit/src/lib.rs:1032,1
    - Dst: bool::expect
      Src: /src/opendal/core/layers/concurrent-limit/src/lib.rs:1042,1
    - Dst: expect
      Src: /src/opendal/core/layers/concurrent-limit/src/lib.rs:1042,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 135
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 1046
      start: 847
    functionDepth: 40
    functionLinenumber: 847
    functionLinenumberEnd: 1046
    functionName: tests::concurrent_chunked_read_with_http_limit
    functionSourceFile: /src/opendal/core/layers/concurrent-limit/src/lib.rs
    functionUses: 0
    functionsReached:
    - Arc::new
    - Default::default
    - OperationContext::new
    - Self::concurrent
    - ConcurrentLimitLayer::new
    - Self::with_context
    - OperationContext::default
    - Result::clone
    - HttpTransporter::new
    - expect
    - reader_with
    - Self::with_http_transport
    - Duration::from_secs
    - ServiceInfo::with_scheme
    - Buffer::from
    - read
    - timeout
    - FutureReader::chunk
    - Self::layer
    - Operator::from_parts
    - bool::expect
    - Self::with_http_concurrent_limit
    linkageType: ''
    returnType: void
    signature: async fn concurrent_chunked_read_with_http_limit()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Arc::new
      Src: /src/opendal/core/layers/concurrent-limit/src/lib.rs:1062,1
    - Dst: Semaphore::new
      Src: /src/opendal/core/layers/concurrent-limit/src/lib.rs:1062,1
    - Dst: ConcurrentLimitLayer::new
      Src: /src/opendal/core/layers/concurrent-limit/src/lib.rs:1063,1
    - Dst: Self::with_http_semaphore
      Src: /src/opendal/core/layers/concurrent-limit/src/lib.rs:1063,1
    - Dst: Self::clone
      Src: /src/opendal/core/layers/concurrent-limit/src/lib.rs:1063,1
    - Dst: HttpTransporter::new
      Src: /src/opendal/core/layers/concurrent-limit/src/lib.rs:1065,1
    - Dst: clone
      Src: /src/opendal/core/layers/concurrent-limit/src/lib.rs:1066,1
    - Dst: http::Request::builder
      Src: /src/opendal/core/layers/concurrent-limit/src/lib.rs:1069,1
    - Dst: OtelMetricsLayerBuilder::uri
      Src: /src/opendal/core/layers/concurrent-limit/src/lib.rs:1069,1
    - Dst: Result::body
      Src: /src/opendal/core/layers/concurrent-limit/src/lib.rs:1069,1
    - Dst: Buffer::new
      Src: /src/opendal/core/layers/concurrent-limit/src/lib.rs:1071,1
    - Dst: expect
      Src: /src/opendal/core/layers/concurrent-limit/src/lib.rs:1069,1
    - Dst: MetricsHttpTransport::fetch
      Src: /src/opendal/core/layers/concurrent-limit/src/lib.rs:1073,1
    - Dst: expect
      Src: /src/opendal/core/layers/concurrent-limit/src/lib.rs:1073,1
    - Dst: http::Request::builder
      Src: /src/opendal/core/layers/concurrent-limit/src/lib.rs:1078,1
    - Dst: OtelMetricsLayerBuilder::uri
      Src: /src/opendal/core/layers/concurrent-limit/src/lib.rs:1078,1
    - Dst: Result::body
      Src: /src/opendal/core/layers/concurrent-limit/src/lib.rs:1078,1
    - Dst: Buffer::new
      Src: /src/opendal/core/layers/concurrent-limit/src/lib.rs:1080,1
    - Dst: expect
      Src: /src/opendal/core/layers/concurrent-limit/src/lib.rs:1078,1
    - Dst: timeout
      Src: /src/opendal/core/layers/concurrent-limit/src/lib.rs:1082,1
    - Dst: Duration::from_millis
      Src: /src/opendal/core/layers/concurrent-limit/src/lib.rs:1082,1
    - Dst: MetricsHttpTransport::fetch
      Src: /src/opendal/core/layers/concurrent-limit/src/lib.rs:1082,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 49
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 1087
      start: 1049
    functionDepth: 33
    functionLinenumber: 1049
    functionLinenumberEnd: 1087
    functionName: tests::http_semaphore_holds_until_body_dropped
    functionSourceFile: /src/opendal/core/layers/concurrent-limit/src/lib.rs
    functionUses: 0
    functionsReached:
    - Semaphore::new
    - HttpTransporter::new
    - Buffer::new
    - Self::with_http_semaphore
    - expect
    - Duration::from_millis
    - http::Request::builder
    - Arc::new
    - timeout
    - clone
    - OtelMetricsLayerBuilder::uri
    - ConcurrentLimitLayer::new
    - Self::clone
    - Result::body
    - MetricsHttpTransport::fetch
    linkageType: ''
    returnType: void
    signature: async fn http_semaphore_holds_until_body_dropped()
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - interceptor
    argTypes:
    - I
    constantsTouched: []
    func_position:
      end: 454
      start: 452
    functionDepth: 0
    functionLinenumber: 452
    functionLinenumberEnd: 454
    functionName: MetricsLayer::new
    functionSourceFile: /src/opendal/core/layers/observe-metrics-common/src/lib.rs
    functionUses: 8
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(interceptor: I) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Arc::new
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:459,1
    - Dst: MetricsLayer::layer
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:459,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - inner
    argTypes:
    - Servicer
    constantsTouched: []
    func_position:
      end: 460
      start: 458
    functionDepth: 5
    functionLinenumber: 458
    functionLinenumberEnd: 460
    functionName: MetricsLayer::apply_service
    functionSourceFile: /src/opendal/core/layers/observe-metrics-common/src/lib.rs
    functionUses: 0
    functionsReached:
    - Arc::new
    - MetricsLayer::layer
    linkageType: ''
    returnType: Servicer
    signature: 'fn apply_service(&self, inner: Servicer) -> Servicer'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: HttpTransporter::new
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:464,1
    - Dst: Arc::http_transport
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:465,1
    - Dst: Self::clone
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:465,1
    - Dst: Servicer::info
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:466,1
    - Dst: clone
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:467,1
    - Dst: Arc::with_http_transport
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:469,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 13
    argCount: 2
    argNames:
    - srv
    - inner
    argTypes:
    - Servicer
    - OperationContext
    constantsTouched: []
    func_position:
      end: 470
      start: 462
    functionDepth: 3
    functionLinenumber: 462
    functionLinenumberEnd: 470
    functionName: MetricsLayer::apply_context
    functionSourceFile: /src/opendal/core/layers/observe-metrics-common/src/lib.rs
    functionUses: 0
    functionsReached:
    - HttpTransporter::new
    - Servicer::info
    - clone
    - Self::clone
    - Arc::with_http_transport
    - Arc::http_transport
    linkageType: ''
    returnType: OperationContext
    signature: 'fn apply_context(&self, srv: Servicer, inner: OperationContext) ->
      OperationContext'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: OperationLabels
      Src: /src/opendal/core/layers/metrics/src/lib.rs:112,1
    - Dst: into_labels
      Src: /src/opendal/core/layers/metrics/src/lib.rs:112,1
    - Dst: record
      Src: /src/opendal/core/layers/metrics/src/lib.rs:116,1
    - Dst: record
      Src: /src/opendal/core/layers/metrics/src/lib.rs:119,1
    - Dst: record
      Src: /src/opendal/core/layers/metrics/src/lib.rs:122,1
    - Dst: record
      Src: /src/opendal/core/layers/metrics/src/lib.rs:125,1
    - Dst: record
      Src: /src/opendal/core/layers/metrics/src/lib.rs:128,1
    - Dst: increment
      Src: /src/opendal/core/layers/metrics/src/lib.rs:131,1
    - Dst: increment
      Src: /src/opendal/core/layers/metrics/src/lib.rs:134,1
    - Dst: record
      Src: /src/opendal/core/layers/metrics/src/lib.rs:137,1
    - Dst: increment
      Src: /src/opendal/core/layers/metrics/src/lib.rs:141,1
    - Dst: record
      Src: /src/opendal/core/layers/metrics/src/lib.rs:144,1
    - Dst: record
      Src: /src/opendal/core/layers/metrics/src/lib.rs:147,1
    - Dst: record
      Src: /src/opendal/core/layers/metrics/src/lib.rs:150,1
    - Dst: record
      Src: /src/opendal/core/layers/metrics/src/lib.rs:153,1
    - Dst: record
      Src: /src/opendal/core/layers/metrics/src/lib.rs:156,1
    - Dst: record
      Src: /src/opendal/core/layers/metrics/src/lib.rs:159,1
    - Dst: increment
      Src: /src/opendal/core/layers/metrics/src/lib.rs:162,1
    - Dst: increment
      Src: /src/opendal/core/layers/metrics/src/lib.rs:165,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 45
    argCount: 2
    argNames:
    - labels
    - value
    argTypes:
    - observe::MetricLabels
    - observe::MetricValue
    constantsTouched: []
    func_position:
      end: 169
      start: 111
    functionDepth: 31
    functionLinenumber: 111
    functionLinenumberEnd: 169
    functionName: MetricsInterceptor::observe
    functionSourceFile: /src/opendal/core/layers/metrics/src/lib.rs
    functionUses: 0
    functionsReached:
    - into_labels
    - record
    - increment
    - OperationLabels
    linkageType: ''
    returnType: void
    signature: 'fn observe(&self, labels: observe::MetricLabels, value: observe::MetricValue)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Vec::with_capacity
      Src: /src/opendal/core/layers/metrics/src/lib.rs:177,1
    - Dst: Vec::extend
      Src: /src/opendal/core/layers/metrics/src/lib.rs:179,1
    - Dst: Label::new
      Src: /src/opendal/core/layers/metrics/src/lib.rs:180,1
    - Dst: Label::new
      Src: /src/opendal/core/layers/metrics/src/lib.rs:181,1
    - Dst: Label::new
      Src: /src/opendal/core/layers/metrics/src/lib.rs:182,1
    - Dst: Label::new
      Src: /src/opendal/core/layers/metrics/src/lib.rs:183,1
    - Dst: Vec::push
      Src: /src/opendal/core/layers/metrics/src/lib.rs:187,1
    - Dst: Label::new
      Src: /src/opendal/core/layers/metrics/src/lib.rs:187,1
    - Dst: Self::into_static
      Src: /src/opendal/core/layers/metrics/src/lib.rs:187,1
    - Dst: Vec::push
      Src: /src/opendal/core/layers/metrics/src/lib.rs:191,1
    - Dst: Label::new
      Src: /src/opendal/core/layers/metrics/src/lib.rs:191,1
    - Dst: Self::as_str
      Src: /src/opendal/core/layers/metrics/src/lib.rs:193,1
    - Dst: '&''static str::to_owned'
      Src: /src/opendal/core/layers/metrics/src/lib.rs:193,1
    - Dst: Vec::push
      Src: /src/opendal/core/layers/metrics/src/lib.rs:198,1
    - Dst: Label::new
      Src: /src/opendal/core/layers/metrics/src/lib.rs:198,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 47
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 205
      start: 176
    functionDepth: 30
    functionLinenumber: 176
    functionLinenumberEnd: 205
    functionName: OperationLabels::into_labels
    functionSourceFile: /src/opendal/core/layers/metrics/src/lib.rs
    functionUses: 0
    functionsReached:
    - Self::into_static
    - Label::new
    - Vec::with_capacity
    - Vec::push
    - '&''static str::to_owned'
    - Vec::extend
    - Self::as_str
    linkageType: ''
    returnType: Vec
    signature: fn into_labels(self) -> Vec<Label>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self::default
      Src: /src/opendal/core/layers/dtrace/src/lib.rs:134,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 135
      start: 133
    functionDepth: 3
    functionLinenumber: 133
    functionLinenumberEnd: 135
    functionName: DtraceLayer::new
    functionSourceFile: /src/opendal/core/layers/dtrace/src/lib.rs
    functionUses: 0
    functionsReached:
    - Self::default
    linkageType: ''
    returnType: Self
    signature: pub fn new() -> Self
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Arc::new
      Src: /src/opendal/core/layers/dtrace/src/lib.rs:140,1
    - Dst: DtraceLayer::layer
      Src: /src/opendal/core/layers/dtrace/src/lib.rs:140,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - inner
    argTypes:
    - Servicer
    constantsTouched: []
    func_position:
      end: 141
      start: 139
    functionDepth: 2
    functionLinenumber: 139
    functionLinenumberEnd: 141
    functionName: DtraceLayer::apply_service
    functionSourceFile: /src/opendal/core/layers/dtrace/src/lib.rs
    functionUses: 0
    functionsReached:
    - Arc::new
    - DtraceLayer::layer
    linkageType: ''
    returnType: Servicer
    signature: 'fn apply_service(&self, inner: Servicer) -> Servicer'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - inner
    argTypes:
    - Servicer
    constantsTouched: []
    func_position:
      end: 147
      start: 145
    functionDepth: 0
    functionLinenumber: 145
    functionLinenumberEnd: 147
    functionName: DtraceLayer::layer
    functionSourceFile: /src/opendal/core/layers/dtrace/src/lib.rs
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: DTraceService
    signature: 'fn layer(&self, inner: Servicer) -> DTraceService'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: info
      Src: /src/opendal/core/layers/dtrace/src/lib.rs:164,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 165
      start: 163
    functionDepth: 2
    functionLinenumber: 163
    functionLinenumberEnd: 165
    functionName: DTraceService::info
    functionSourceFile: /src/opendal/core/layers/dtrace/src/lib.rs
    functionUses: 0
    functionsReached:
    - info
    linkageType: ''
    returnType: ServiceInfo
    signature: fn info(&self) -> ServiceInfo
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: capability
      Src: /src/opendal/core/layers/dtrace/src/lib.rs:168,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 169
      start: 167
    functionDepth: 2
    functionLinenumber: 167
    functionLinenumberEnd: 169
    functionName: DTraceService::capability
    functionSourceFile: /src/opendal/core/layers/dtrace/src/lib.rs
    functionUses: 0
    functionsReached:
    - capability
    linkageType: ''
    returnType: Capability
    signature: fn capability(&self) -> Capability
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: CString::new
      Src: /src/opendal/core/layers/dtrace/src/lib.rs:177,1
    - Dst: Self::unwrap
      Src: /src/opendal/core/layers/dtrace/src/lib.rs:177,1
    - Dst: create_dir
      Src: /src/opendal/core/layers/dtrace/src/lib.rs:179,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpCreateDir
    constantsTouched: []
    func_position:
      end: 182
      start: 171
    functionDepth: 35
    functionLinenumber: 171
    functionLinenumberEnd: 182
    functionName: DTraceService::create_dir
    functionSourceFile: /src/opendal/core/layers/dtrace/src/lib.rs
    functionUses: 0
    functionsReached:
    - CString::new
    - create_dir
    - Self::unwrap
    linkageType: ''
    returnType: Result
    signature: 'async fn create_dir(&self,ctx: &OperationContext,path: &str,args:
      OpCreateDir,) -> Result<RpCreateDir>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: CString::new
      Src: /src/opendal/core/layers/dtrace/src/lib.rs:185,1
    - Dst: Self::unwrap
      Src: /src/opendal/core/layers/dtrace/src/lib.rs:185,1
    - Dst: read
      Src: /src/opendal/core/layers/dtrace/src/lib.rs:187,1
    - Dst: map
      Src: /src/opendal/core/layers/dtrace/src/lib.rs:187,1
    - Dst: DtraceLayerWrapper::new
      Src: /src/opendal/core/layers/dtrace/src/lib.rs:190,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpRead
    constantsTouched: []
    func_position:
      end: 193
      start: 184
    functionDepth: 35
    functionLinenumber: 184
    functionLinenumberEnd: 193
    functionName: DTraceService::read
    functionSourceFile: /src/opendal/core/layers/dtrace/src/lib.rs
    functionUses: 0
    functionsReached:
    - read
    - Self::unwrap
    - CString::new
    - DtraceLayerWrapper::new
    - map
    linkageType: ''
    returnType: Result
    signature: 'fn read(&self, ctx: &OperationContext, path: &str, args: OpRead) ->
      Result<Self::Reader>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: CString::new
      Src: /src/opendal/core/layers/dtrace/src/lib.rs:196,1
    - Dst: Self::unwrap
      Src: /src/opendal/core/layers/dtrace/src/lib.rs:196,1
    - Dst: write
      Src: /src/opendal/core/layers/dtrace/src/lib.rs:198,1
    - Dst: map
      Src: /src/opendal/core/layers/dtrace/src/lib.rs:198,1
    - Dst: DtraceLayerWrapper::new
      Src: /src/opendal/core/layers/dtrace/src/lib.rs:201,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpWrite
    constantsTouched: []
    func_position:
      end: 205
      start: 195
    functionDepth: 35
    functionLinenumber: 195
    functionLinenumberEnd: 205
    functionName: DTraceService::write
    functionSourceFile: /src/opendal/core/layers/dtrace/src/lib.rs
    functionUses: 0
    functionsReached:
    - Self::unwrap
    - CString::new
    - DtraceLayerWrapper::new
    - map
    - write
    linkageType: ''
    returnType: Result
    signature: 'fn write(&self, ctx: &OperationContext, path: &str, args: OpWrite)
      -> Result<Self::Writer>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: CString::new
      Src: /src/opendal/core/layers/dtrace/src/lib.rs:215,1
    - Dst: Self::unwrap
      Src: /src/opendal/core/layers/dtrace/src/lib.rs:215,1
    - Dst: copy
      Src: /src/opendal/core/layers/dtrace/src/lib.rs:217,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 5
    argNames:
    - ctx
    - from
    - to
    - args
    - opts
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    - OpCopy
    - OpCopier
    constantsTouched: []
    func_position:
      end: 220
      start: 207
    functionDepth: 35
    functionLinenumber: 207
    functionLinenumberEnd: 220
    functionName: DTraceService::copy
    functionSourceFile: /src/opendal/core/layers/dtrace/src/lib.rs
    functionUses: 0
    functionsReached:
    - CString::new
    - Self::unwrap
    - copy
    linkageType: ''
    returnType: Result
    signature: 'fn copy(&self,ctx: &OperationContext,from: &str,to: &str,args: OpCopy,opts:
      OpCopier,) -> Result<Self::Copier>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: rename
      Src: /src/opendal/core/layers/dtrace/src/lib.rs:229,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 4
    argNames:
    - ctx
    - from
    - to
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    - OpRename
    constantsTouched: []
    func_position:
      end: 230
      start: 222
    functionDepth: 2
    functionLinenumber: 222
    functionLinenumberEnd: 230
    functionName: DTraceService::rename
    functionSourceFile: /src/opendal/core/layers/dtrace/src/lib.rs
    functionUses: 0
    functionsReached:
    - rename
    linkageType: ''
    returnType: Result
    signature: 'async fn rename(&self,ctx: &OperationContext,from: &str,to: &str,args:
      OpRename,) -> Result<RpRename>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: CString::new
      Src: /src/opendal/core/layers/dtrace/src/lib.rs:233,1
    - Dst: Self::unwrap
      Src: /src/opendal/core/layers/dtrace/src/lib.rs:233,1
    - Dst: stat
      Src: /src/opendal/core/layers/dtrace/src/lib.rs:235,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpStat
    constantsTouched: []
    func_position:
      end: 238
      start: 232
    functionDepth: 35
    functionLinenumber: 232
    functionLinenumberEnd: 238
    functionName: DTraceService::stat
    functionSourceFile: /src/opendal/core/layers/dtrace/src/lib.rs
    functionUses: 0
    functionsReached:
    - CString::new
    - stat
    - Self::unwrap
    linkageType: ''
    returnType: Result
    signature: 'async fn stat(&self, ctx: &OperationContext, path: &str, args: OpStat)
      -> Result<RpStat>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: delete
      Src: /src/opendal/core/layers/dtrace/src/lib.rs:241,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - '&OperationContext'
    constantsTouched: []
    func_position:
      end: 242
      start: 240
    functionDepth: 32
    functionLinenumber: 240
    functionLinenumberEnd: 242
    functionName: DTraceService::delete
    functionSourceFile: /src/opendal/core/layers/dtrace/src/lib.rs
    functionUses: 0
    functionsReached:
    - delete
    linkageType: ''
    returnType: Result
    signature: 'fn delete(&self, ctx: &OperationContext) -> Result<Self::Deleter>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: CString::new
      Src: /src/opendal/core/layers/dtrace/src/lib.rs:245,1
    - Dst: Self::unwrap
      Src: /src/opendal/core/layers/dtrace/src/lib.rs:245,1
    - Dst: list
      Src: /src/opendal/core/layers/dtrace/src/lib.rs:247,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpList
    constantsTouched: []
    func_position:
      end: 250
      start: 244
    functionDepth: 35
    functionLinenumber: 244
    functionLinenumberEnd: 250
    functionName: DTraceService::list
    functionSourceFile: /src/opendal/core/layers/dtrace/src/lib.rs
    functionUses: 0
    functionsReached:
    - list
    - CString::new
    - Self::unwrap
    linkageType: ''
    returnType: Result
    signature: 'fn list(&self, ctx: &OperationContext, path: &str, args: OpList) ->
      Result<Self::Lister>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: CString::new
      Src: /src/opendal/core/layers/dtrace/src/lib.rs:258,1
    - Dst: Self::unwrap
      Src: /src/opendal/core/layers/dtrace/src/lib.rs:258,1
    - Dst: presign
      Src: /src/opendal/core/layers/dtrace/src/lib.rs:260,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpPresign
    constantsTouched: []
    func_position:
      end: 263
      start: 252
    functionDepth: 35
    functionLinenumber: 252
    functionLinenumberEnd: 263
    functionName: DTraceService::presign
    functionSourceFile: /src/opendal/core/layers/dtrace/src/lib.rs
    functionUses: 0
    functionsReached:
    - CString::new
    - presign
    - Self::unwrap
    linkageType: ''
    returnType: Result
    signature: 'async fn presign(&self,ctx: &OperationContext,path: &str,args: OpPresign,)
      -> Result<RpPresign>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self::with_range
      Src: /src/opendal/core/layers/dtrace/src/lib.rs:275,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - inner
    - path
    argTypes:
    - R
    - '&str'
    constantsTouched: []
    func_position:
      end: 276
      start: 274
    functionDepth: 1
    functionLinenumber: 274
    functionLinenumberEnd: 276
    functionName: DtraceLayerWrapper::new
    functionSourceFile: /src/opendal/core/layers/dtrace/src/lib.rs
    functionUses: 2
    functionsReached:
    - Self::with_range
    linkageType: ''
    returnType: Self
    signature: 'fn new(inner: R, path: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: to_string
      Src: /src/opendal/core/layers/dtrace/src/lib.rs:281,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - inner
    - path
    - range
    argTypes:
    - R
    - '&str'
    - Option<BytesRange>
    constantsTouched: []
    func_position:
      end: 284
      start: 278
    functionDepth: 2
    functionLinenumber: 278
    functionLinenumberEnd: 284
    functionName: DtraceLayerWrapper::with_range
    functionSourceFile: /src/opendal/core/layers/dtrace/src/lib.rs
    functionUses: 1
    functionsReached:
    - to_string
    linkageType: ''
    returnType: Self
    signature: 'fn with_range(inner: R, path: &str, range: Option<BytesRange>) ->
      Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: map
      Src: /src/opendal/core/layers/dtrace/src/lib.rs:287,1
    - Dst: (Vec::to_string
      Src: /src/opendal/core/layers/dtrace/src/lib.rs:288,1
    - Dst: unwrap_or_default
      Src: /src/opendal/core/layers/dtrace/src/lib.rs:287,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 290
      start: 286
    functionDepth: 2
    functionLinenumber: 286
    functionLinenumberEnd: 290
    functionName: DtraceLayerWrapper::range_label
    functionSourceFile: /src/opendal/core/layers/dtrace/src/lib.rs
    functionUses: 0
    functionsReached:
    - map
    - (Vec::to_string
    - unwrap_or_default
    linkageType: ''
    returnType: String
    signature: fn range_label(&self) -> String
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: CString::new
      Src: /src/opendal/core/layers/dtrace/src/lib.rs:368,1
    - Dst: clone
      Src: /src/opendal/core/layers/dtrace/src/lib.rs:368,1
    - Dst: Self::unwrap
      Src: /src/opendal/core/layers/dtrace/src/lib.rs:368,1
    - Dst: CString::new
      Src: /src/opendal/core/layers/dtrace/src/lib.rs:369,1
    - Dst: (Vec::to_string
      Src: /src/opendal/core/layers/dtrace/src/lib.rs:369,1
    - Dst: Self::unwrap
      Src: /src/opendal/core/layers/dtrace/src/lib.rs:369,1
    - Dst: read
      Src: /src/opendal/core/layers/dtrace/src/lib.rs:376,1
    - Dst: Ok
      Src: /src/opendal/core/layers/dtrace/src/lib.rs:385,1
    - Dst: Err
      Src: /src/opendal/core/layers/dtrace/src/lib.rs:394,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 23
    argCount: 1
    argNames:
    - range
    argTypes:
    - BytesRange
    constantsTouched: []
    func_position:
      end: 397
      start: 367
    functionDepth: 35
    functionLinenumber: 367
    functionLinenumberEnd: 397
    functionName: DtraceLayerWrapper::read
    functionSourceFile: /src/opendal/core/layers/dtrace/src/lib.rs
    functionUses: 0
    functionsReached:
    - read
    - Self::unwrap
    - Ok
    - CString::new
    - (Vec::to_string
    - clone
    - Err
    linkageType: ''
    returnType: Result
    signature: 'async fn read(&self, range: BytesRange) -> Result<(RpRead, Buffer)>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: CString::new
      Src: /src/opendal/core/layers/dtrace/src/lib.rs:329,1
    - Dst: clone
      Src: /src/opendal/core/layers/dtrace/src/lib.rs:329,1
    - Dst: Self::unwrap
      Src: /src/opendal/core/layers/dtrace/src/lib.rs:329,1
    - Dst: CString::new
      Src: /src/opendal/core/layers/dtrace/src/lib.rs:330,1
    - Dst: (Vec::to_string
      Src: /src/opendal/core/layers/dtrace/src/lib.rs:330,1
    - Dst: Self::unwrap
      Src: /src/opendal/core/layers/dtrace/src/lib.rs:330,1
    - Dst: open
      Src: /src/opendal/core/layers/dtrace/src/lib.rs:337,1
    - Dst: Ok
      Src: /src/opendal/core/layers/dtrace/src/lib.rs:346,1
    - Dst: Box::new
      Src: /src/opendal/core/layers/dtrace/src/lib.rs:348,1
    - Dst: DtraceLayerWrapper::with_range
      Src: /src/opendal/core/layers/dtrace/src/lib.rs:348,1
    - Dst: Some
      Src: /src/opendal/core/layers/dtrace/src/lib.rs:351,1
    - Dst: Err
      Src: /src/opendal/core/layers/dtrace/src/lib.rs:362,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 29
    argCount: 1
    argNames:
    - range
    argTypes:
    - BytesRange
    constantsTouched: []
    func_position:
      end: 365
      start: 328
    functionDepth: 35
    functionLinenumber: 328
    functionLinenumberEnd: 365
    functionName: DtraceLayerWrapper::open
    functionSourceFile: /src/opendal/core/layers/dtrace/src/lib.rs
    functionUses: 0
    functionsReached:
    - Self::unwrap
    - Ok
    - DtraceLayerWrapper::with_range
    - Box::new
    - CString::new
    - (Vec::to_string
    - clone
    - Some
    - Err
    - open
    linkageType: ''
    returnType: Result
    signature: 'async fn open(&self, range: BytesRange) -> Result<(RpRead, Box<dyn
      oio::ReadStreamDyn>)>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: CString::new
      Src: /src/opendal/core/layers/dtrace/src/lib.rs:402,1
    - Dst: clone
      Src: /src/opendal/core/layers/dtrace/src/lib.rs:402,1
    - Dst: Self::unwrap
      Src: /src/opendal/core/layers/dtrace/src/lib.rs:402,1
    - Dst: write
      Src: /src/opendal/core/layers/dtrace/src/lib.rs:404,1
    - Dst: map
      Src: /src/opendal/core/layers/dtrace/src/lib.rs:404,1
    - Dst: inspect_err
      Src: /src/opendal/core/layers/dtrace/src/lib.rs:404,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 19
    argCount: 1
    argNames:
    - bs
    argTypes:
    - Buffer
    constantsTouched: []
    func_position:
      end: 413
      start: 401
    functionDepth: 35
    functionLinenumber: 401
    functionLinenumberEnd: 413
    functionName: DtraceLayerWrapper::write
    functionSourceFile: /src/opendal/core/layers/dtrace/src/lib.rs
    functionUses: 0
    functionsReached:
    - Self::unwrap
    - CString::new
    - clone
    - map
    - inspect_err
    - write
    linkageType: ''
    returnType: Result
    signature: 'async fn write(&mut self, bs: Buffer) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: CString::new
      Src: /src/opendal/core/layers/dtrace/src/lib.rs:416,1
    - Dst: clone
      Src: /src/opendal/core/layers/dtrace/src/lib.rs:416,1
    - Dst: Self::unwrap
      Src: /src/opendal/core/layers/dtrace/src/lib.rs:416,1
    - Dst: abort
      Src: /src/opendal/core/layers/dtrace/src/lib.rs:418,1
    - Dst: map
      Src: /src/opendal/core/layers/dtrace/src/lib.rs:418,1
    - Dst: inspect_err
      Src: /src/opendal/core/layers/dtrace/src/lib.rs:418,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 19
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 427
      start: 415
    functionDepth: 35
    functionLinenumber: 415
    functionLinenumberEnd: 427
    functionName: DtraceLayerWrapper::abort
    functionSourceFile: /src/opendal/core/layers/dtrace/src/lib.rs
    functionUses: 0
    functionsReached:
    - Self::unwrap
    - CString::new
    - clone
    - map
    - inspect_err
    - abort
    linkageType: ''
    returnType: Result
    signature: async fn abort(&mut self) -> Result<()>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: CString::new
      Src: /src/opendal/core/layers/dtrace/src/lib.rs:430,1
    - Dst: clone
      Src: /src/opendal/core/layers/dtrace/src/lib.rs:430,1
    - Dst: Self::unwrap
      Src: /src/opendal/core/layers/dtrace/src/lib.rs:430,1
    - Dst: close
      Src: /src/opendal/core/layers/dtrace/src/lib.rs:432,1
    - Dst: inspect
      Src: /src/opendal/core/layers/dtrace/src/lib.rs:432,1
    - Dst: inspect_err
      Src: /src/opendal/core/layers/dtrace/src/lib.rs:432,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 19
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 441
      start: 429
    functionDepth: 35
    functionLinenumber: 429
    functionLinenumberEnd: 441
    functionName: DtraceLayerWrapper::close
    functionSourceFile: /src/opendal/core/layers/dtrace/src/lib.rs
    functionUses: 0
    functionsReached:
    - close
    - Self::unwrap
    - CString::new
    - clone
    - inspect
    - inspect_err
    linkageType: ''
    returnType: Result
    signature: async fn close(&mut self) -> Result<Metadata>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: PrometheusClientLayerBuilder::default
      Src: /src/opendal/core/layers/prometheus-client/src/lib.rs:87,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 88
      start: 86
    functionDepth: 5
    functionLinenumber: 86
    functionLinenumberEnd: 88
    functionName: PrometheusClientLayer::builder
    functionSourceFile: /src/opendal/core/layers/prometheus-client/src/lib.rs
    functionUses: 0
    functionsReached:
    - PrometheusClientLayerBuilder::default
    linkageType: ''
    returnType: PrometheusClientLayerBuilder
    signature: pub fn builder() -> PrometheusClientLayerBuilder
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: observe::MetricsLayer::new
      Src: /src/opendal/core/layers/prometheus-client/src/lib.rs:93,1
    - Dst: clone
      Src: /src/opendal/core/layers/prometheus-client/src/lib.rs:93,1
    - Dst: Self::apply_service
      Src: /src/opendal/core/layers/prometheus-client/src/lib.rs:93,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - inner
    argTypes:
    - Servicer
    constantsTouched: []
    func_position:
      end: 94
      start: 92
    functionDepth: 3
    functionLinenumber: 92
    functionLinenumberEnd: 94
    functionName: PrometheusClientLayer::apply_service
    functionSourceFile: /src/opendal/core/layers/prometheus-client/src/lib.rs
    functionUses: 0
    functionsReached:
    - observe::MetricsLayer::new
    - Self::apply_service
    - clone
    linkageType: ''
    returnType: Servicer
    signature: 'fn apply_service(&self, inner: Servicer) -> Servicer'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: observe::MetricsLayer::new
      Src: /src/opendal/core/layers/prometheus-client/src/lib.rs:98,1
    - Dst: clone
      Src: /src/opendal/core/layers/prometheus-client/src/lib.rs:98,1
    - Dst: Self::apply_context
      Src: /src/opendal/core/layers/prometheus-client/src/lib.rs:98,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - srv
    - inner
    argTypes:
    - Servicer
    - OperationContext
    constantsTouched: []
    func_position:
      end: 99
      start: 97
    functionDepth: 2
    functionLinenumber: 97
    functionLinenumberEnd: 99
    functionName: PrometheusClientLayer::apply_context
    functionSourceFile: /src/opendal/core/layers/prometheus-client/src/lib.rs
    functionUses: 0
    functionsReached:
    - observe::MetricsLayer::new
    - Self::apply_context
    - clone
    linkageType: ''
    returnType: OperationContext
    signature: 'fn apply_context(&self, srv: Servicer, inner: OperationContext) ->
      OperationContext'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: to_vec
      Src: /src/opendal/core/layers/prometheus-client/src/lib.rs:116,1
    - Dst: to_vec
      Src: /src/opendal/core/layers/prometheus-client/src/lib.rs:117,1
    - Dst: to_vec
      Src: /src/opendal/core/layers/prometheus-client/src/lib.rs:118,1
    - Dst: to_vec
      Src: /src/opendal/core/layers/prometheus-client/src/lib.rs:119,1
    - Dst: to_vec
      Src: /src/opendal/core/layers/prometheus-client/src/lib.rs:120,1
    - Dst: to_vec
      Src: /src/opendal/core/layers/prometheus-client/src/lib.rs:121,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 124
      start: 114
    functionDepth: 4
    functionLinenumber: 114
    functionLinenumberEnd: 124
    functionName: PrometheusClientLayerBuilder::default
    functionSourceFile: /src/opendal/core/layers/prometheus-client/src/lib.rs
    functionUses: 1
    functionsReached:
    - to_vec
    linkageType: ''
    returnType: Self
    signature: fn default() -> Self
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self::is_empty
      Src: /src/opendal/core/layers/prometheus-client/src/lib.rs:130,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - buckets
    argTypes:
    - Vec<f64>
    constantsTouched: []
    func_position:
      end: 134
      start: 129
    functionDepth: 4
    functionLinenumber: 129
    functionLinenumberEnd: 134
    functionName: PrometheusClientLayerBuilder::bytes_buckets
    functionSourceFile: /src/opendal/core/layers/prometheus-client/src/lib.rs
    functionUses: 0
    functionsReached:
    - Self::is_empty
    linkageType: ''
    returnType: Self
    signature: 'pub fn bytes_buckets(mut self, buckets: Vec<f64>) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self::is_empty
      Src: /src/opendal/core/layers/prometheus-client/src/lib.rs:138,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - buckets
    argTypes:
    - Vec<f64>
    constantsTouched: []
    func_position:
      end: 142
      start: 137
    functionDepth: 4
    functionLinenumber: 137
    functionLinenumberEnd: 142
    functionName: PrometheusClientLayerBuilder::bytes_rate_buckets
    functionSourceFile: /src/opendal/core/layers/prometheus-client/src/lib.rs
    functionUses: 0
    functionsReached:
    - Self::is_empty
    linkageType: ''
    returnType: Self
    signature: 'pub fn bytes_rate_buckets(mut self, buckets: Vec<f64>) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self::is_empty
      Src: /src/opendal/core/layers/prometheus-client/src/lib.rs:146,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - buckets
    argTypes:
    - Vec<f64>
    constantsTouched: []
    func_position:
      end: 150
      start: 145
    functionDepth: 4
    functionLinenumber: 145
    functionLinenumberEnd: 150
    functionName: PrometheusClientLayerBuilder::entries_buckets
    functionSourceFile: /src/opendal/core/layers/prometheus-client/src/lib.rs
    functionUses: 0
    functionsReached:
    - Self::is_empty
    linkageType: ''
    returnType: Self
    signature: 'pub fn entries_buckets(mut self, buckets: Vec<f64>) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self::is_empty
      Src: /src/opendal/core/layers/prometheus-client/src/lib.rs:154,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - buckets
    argTypes:
    - Vec<f64>
    constantsTouched: []
    func_position:
      end: 158
      start: 153
    functionDepth: 4
    functionLinenumber: 153
    functionLinenumberEnd: 158
    functionName: PrometheusClientLayerBuilder::entries_rate_buckets
    functionSourceFile: /src/opendal/core/layers/prometheus-client/src/lib.rs
    functionUses: 0
    functionsReached:
    - Self::is_empty
    linkageType: ''
    returnType: Self
    signature: 'pub fn entries_rate_buckets(mut self, buckets: Vec<f64>) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self::is_empty
      Src: /src/opendal/core/layers/prometheus-client/src/lib.rs:162,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - buckets
    argTypes:
    - Vec<f64>
    constantsTouched: []
    func_position:
      end: 166
      start: 161
    functionDepth: 4
    functionLinenumber: 161
    functionLinenumberEnd: 166
    functionName: PrometheusClientLayerBuilder::duration_seconds_buckets
    functionSourceFile: /src/opendal/core/layers/prometheus-client/src/lib.rs
    functionUses: 0
    functionsReached:
    - Self::is_empty
    linkageType: ''
    returnType: Self
    signature: 'pub fn duration_seconds_buckets(mut self, buckets: Vec<f64>) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self::is_empty
      Src: /src/opendal/core/layers/prometheus-client/src/lib.rs:170,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - buckets
    argTypes:
    - Vec<f64>
    constantsTouched: []
    func_position:
      end: 174
      start: 169
    functionDepth: 4
    functionLinenumber: 169
    functionLinenumberEnd: 174
    functionName: PrometheusClientLayerBuilder::ttfb_buckets
    functionSourceFile: /src/opendal/core/layers/prometheus-client/src/lib.rs
    functionUses: 0
    functionsReached:
    - Self::is_empty
    linkageType: ''
    returnType: Self
    signature: 'pub fn ttfb_buckets(mut self, buckets: Vec<f64>) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - disable
    argTypes:
    - bool
    constantsTouched: []
    func_position:
      end: 181
      start: 178
    functionDepth: 0
    functionLinenumber: 178
    functionLinenumberEnd: 181
    functionName: PrometheusClientLayerBuilder::disable_label_root
    functionSourceFile: /src/opendal/core/layers/prometheus-client/src/lib.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: 'pub fn disable_label_root(mut self, disable: bool) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Family::<OperationLabels, Histogram, _>::new_with_constructor
      Src: /src/opendal/core/layers/prometheus-client/src/lib.rs:206,1
    - Dst: clone
      Src: /src/opendal/core/layers/prometheus-client/src/lib.rs:207,1
    - Dst: Family::<OperationLabels, Histogram, _>::new_with_constructor
      Src: /src/opendal/core/layers/prometheus-client/src/lib.rs:210,1
    - Dst: clone
      Src: /src/opendal/core/layers/prometheus-client/src/lib.rs:211,1
    - Dst: Family::<OperationLabels, Histogram, _>::new_with_constructor
      Src: /src/opendal/core/layers/prometheus-client/src/lib.rs:214,1
    - Dst: clone
      Src: /src/opendal/core/layers/prometheus-client/src/lib.rs:215,1
    - Dst: Family::<OperationLabels, Histogram, _>::new_with_constructor
      Src: /src/opendal/core/layers/prometheus-client/src/lib.rs:218,1
    - Dst: clone
      Src: /src/opendal/core/layers/prometheus-client/src/lib.rs:219,1
    - Dst: Family::<OperationLabels, Histogram, _>::new_with_constructor
      Src: /src/opendal/core/layers/prometheus-client/src/lib.rs:222,1
    - Dst: clone
      Src: /src/opendal/core/layers/prometheus-client/src/lib.rs:223,1
    - Dst: Family::<OperationLabels, Counter>::default
      Src: /src/opendal/core/layers/prometheus-client/src/lib.rs:225,1
    - Dst: Family::<OperationLabels, Gauge>::default
      Src: /src/opendal/core/layers/prometheus-client/src/lib.rs:226,1
    - Dst: Family::<OperationLabels, Histogram, _>::new_with_constructor
      Src: /src/opendal/core/layers/prometheus-client/src/lib.rs:228,1
    - Dst: clone
      Src: /src/opendal/core/layers/prometheus-client/src/lib.rs:229,1
    - Dst: Family::<OperationLabels, Gauge>::default
      Src: /src/opendal/core/layers/prometheus-client/src/lib.rs:232,1
    - Dst: Family::<OperationLabels, Histogram, _>::new_with_constructor
      Src: /src/opendal/core/layers/prometheus-client/src/lib.rs:234,1
    - Dst: clone
      Src: /src/opendal/core/layers/prometheus-client/src/lib.rs:235,1
    - Dst: Family::<OperationLabels, Histogram, _>::new_with_constructor
      Src: /src/opendal/core/layers/prometheus-client/src/lib.rs:238,1
    - Dst: clone
      Src: /src/opendal/core/layers/prometheus-client/src/lib.rs:239,1
    - Dst: Family::<OperationLabels, Histogram, _>::new_with_constructor
      Src: /src/opendal/core/layers/prometheus-client/src/lib.rs:242,1
    - Dst: clone
      Src: /src/opendal/core/layers/prometheus-client/src/lib.rs:243,1
    - Dst: Family::<OperationLabels, Histogram, _>::new_with_constructor
      Src: /src/opendal/core/layers/prometheus-client/src/lib.rs:246,1
    - Dst: clone
      Src: /src/opendal/core/layers/prometheus-client/src/lib.rs:247,1
    - Dst: Family::<OperationLabels, Histogram, _>::new_with_constructor
      Src: /src/opendal/core/layers/prometheus-client/src/lib.rs:250,1
    - Dst: clone
      Src: /src/opendal/core/layers/prometheus-client/src/lib.rs:251,1
    - Dst: Family::<OperationLabels, Histogram, _>::new_with_constructor
      Src: /src/opendal/core/layers/prometheus-client/src/lib.rs:254,1
    - Dst: clone
      Src: /src/opendal/core/layers/prometheus-client/src/lib.rs:255,1
    - Dst: Family::<OperationLabels, Counter>::default
      Src: /src/opendal/core/layers/prometheus-client/src/lib.rs:257,1
    - Dst: Family::<OperationLabels, Counter>::default
      Src: /src/opendal/core/layers/prometheus-client/src/lib.rs:258,1
    - Dst: register_metric
      Src: /src/opendal/core/layers/prometheus-client/src/lib.rs:260,1
    - Dst: clone
      Src: /src/opendal/core/layers/prometheus-client/src/lib.rs:262,1
    - Dst: observe::MetricValue::OperationBytes
      Src: /src/opendal/core/layers/prometheus-client/src/lib.rs:263,1
    - Dst: register_metric
      Src: /src/opendal/core/layers/prometheus-client/src/lib.rs:265,1
    - Dst: clone
      Src: /src/opendal/core/layers/prometheus-client/src/lib.rs:267,1
    - Dst: observe::MetricValue::OperationBytesRate
      Src: /src/opendal/core/layers/prometheus-client/src/lib.rs:268,1
    - Dst: register_metric
      Src: /src/opendal/core/layers/prometheus-client/src/lib.rs:270,1
    - Dst: clone
      Src: /src/opendal/core/layers/prometheus-client/src/lib.rs:272,1
    - Dst: observe::MetricValue::OperationEntries
      Src: /src/opendal/core/layers/prometheus-client/src/lib.rs:273,1
    - Dst: register_metric
      Src: /src/opendal/core/layers/prometheus-client/src/lib.rs:275,1
    - Dst: clone
      Src: /src/opendal/core/layers/prometheus-client/src/lib.rs:277,1
    - Dst: observe::MetricValue::OperationEntriesRate
      Src: /src/opendal/core/layers/prometheus-client/src/lib.rs:278,1
    - Dst: register_metric
      Src: /src/opendal/core/layers/prometheus-client/src/lib.rs:280,1
    - Dst: clone
      Src: /src/opendal/core/layers/prometheus-client/src/lib.rs:282,1
    - Dst: observe::MetricValue::OperationDurationSeconds
      Src: /src/opendal/core/layers/prometheus-client/src/lib.rs:283,1
    - Dst: Duration::default
      Src: /src/opendal/core/layers/prometheus-client/src/lib.rs:283,1
    - Dst: register_metric
      Src: /src/opendal/core/layers/prometheus-client/src/lib.rs:285,1
    - Dst: Self::clone
      Src: /src/opendal/core/layers/prometheus-client/src/lib.rs:287,1
    - Dst: register_metric
      Src: /src/opendal/core/layers/prometheus-client/src/lib.rs:290,1
    - Dst: Self::clone
      Src: /src/opendal/core/layers/prometheus-client/src/lib.rs:292,1
    - Dst: observe::MetricValue::OperationExecuting
      Src: /src/opendal/core/layers/prometheus-client/src/lib.rs:293,1
    - Dst: register_metric
      Src: /src/opendal/core/layers/prometheus-client/src/lib.rs:295,1
    - Dst: clone
      Src: /src/opendal/core/layers/prometheus-client/src/lib.rs:297,1
    - Dst: observe::MetricValue::OperationTtfbSeconds
      Src: /src/opendal/core/layers/prometheus-client/src/lib.rs:298,1
    - Dst: Duration::default
      Src: /src/opendal/core/layers/prometheus-client/src/lib.rs:298,1
    - Dst: register_metric
      Src: /src/opendal/core/layers/prometheus-client/src/lib.rs:301,1
    - Dst: Self::clone
      Src: /src/opendal/core/layers/prometheus-client/src/lib.rs:303,1
    - Dst: observe::MetricValue::HttpExecuting
      Src: /src/opendal/core/layers/prometheus-client/src/lib.rs:304,1
    - Dst: register_metric
      Src: /src/opendal/core/layers/prometheus-client/src/lib.rs:306,1
    - Dst: clone
      Src: /src/opendal/core/layers/prometheus-client/src/lib.rs:308,1
    - Dst: observe::MetricValue::HttpRequestBytes
      Src: /src/opendal/core/layers/prometheus-client/src/lib.rs:309,1
    - Dst: register_metric
      Src: /src/opendal/core/layers/prometheus-client/src/lib.rs:311,1
    - Dst: clone
      Src: /src/opendal/core/layers/prometheus-client/src/lib.rs:313,1
    - Dst: observe::MetricValue::HttpRequestBytesRate
      Src: /src/opendal/core/layers/prometheus-client/src/lib.rs:314,1
    - Dst: register_metric
      Src: /src/opendal/core/layers/prometheus-client/src/lib.rs:316,1
    - Dst: clone
      Src: /src/opendal/core/layers/prometheus-client/src/lib.rs:318,1
    - Dst: observe::MetricValue::HttpRequestDurationSeconds
      Src: /src/opendal/core/layers/prometheus-client/src/lib.rs:319,1
    - Dst: Duration::default
      Src: /src/opendal/core/layers/prometheus-client/src/lib.rs:319,1
    - Dst: register_metric
      Src: /src/opendal/core/layers/prometheus-client/src/lib.rs:321,1
    - Dst: clone
      Src: /src/opendal/core/layers/prometheus-client/src/lib.rs:323,1
    - Dst: observe::MetricValue::HttpResponseBytes
      Src: /src/opendal/core/layers/prometheus-client/src/lib.rs:324,1
    - Dst: register_metric
      Src: /src/opendal/core/layers/prometheus-client/src/lib.rs:326,1
    - Dst: clone
      Src: /src/opendal/core/layers/prometheus-client/src/lib.rs:328,1
    - Dst: observe::MetricValue::HttpResponseBytesRate
      Src: /src/opendal/core/layers/prometheus-client/src/lib.rs:329,1
    - Dst: register_metric
      Src: /src/opendal/core/layers/prometheus-client/src/lib.rs:331,1
    - Dst: clone
      Src: /src/opendal/core/layers/prometheus-client/src/lib.rs:333,1
    - Dst: observe::MetricValue::HttpResponseDurationSeconds
      Src: /src/opendal/core/layers/prometheus-client/src/lib.rs:334,1
    - Dst: Duration::default
      Src: /src/opendal/core/layers/prometheus-client/src/lib.rs:334,1
    - Dst: register_metric
      Src: /src/opendal/core/layers/prometheus-client/src/lib.rs:336,1
    - Dst: Self::clone
      Src: /src/opendal/core/layers/prometheus-client/src/lib.rs:338,1
    - Dst: register_metric
      Src: /src/opendal/core/layers/prometheus-client/src/lib.rs:341,1
    - Dst: Self::clone
      Src: /src/opendal/core/layers/prometheus-client/src/lib.rs:343,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 154
    argCount: 1
    argNames:
    - registry
    argTypes:
    - '&mut Registry'
    constantsTouched: []
    func_position:
      end: 371
      start: 204
    functionDepth: 40
    functionLinenumber: 204
    functionLinenumberEnd: 371
    functionName: PrometheusClientLayerBuilder::register
    functionSourceFile: /src/opendal/core/layers/prometheus-client/src/lib.rs
    functionUses: 0
    functionsReached:
    - clone
    - observe::MetricValue::HttpRequestBytes
    - observe::MetricValue::HttpRequestBytesRate
    - observe::MetricValue::OperationBytes
    - register_metric
    - Self::clone
    - observe::MetricValue::OperationDurationSeconds
    - observe::MetricValue::HttpResponseBytes
    - observe::MetricValue::OperationExecuting
    - Duration::default
    - observe::MetricValue::HttpResponseDurationSeconds
    - observe::MetricValue::HttpResponseBytesRate
    - observe::MetricValue::OperationTtfbSeconds
    - observe::MetricValue::HttpExecuting
    - observe::MetricValue::OperationEntriesRate
    - Family::<OperationLabels, Counter>::default
    - Family::<OperationLabels, Gauge>::default
    - Family::<OperationLabels, Histogram, _>::new_with_constructor
    - observe::MetricValue::HttpRequestDurationSeconds
    - observe::MetricValue::OperationEntries
    - observe::MetricValue::OperationBytesRate
    linkageType: ''
    returnType: PrometheusClientLayer
    signature: 'pub fn register(self, registry: &mut Registry) -> PrometheusClientLayer'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Histogram::new
      Src: /src/opendal/core/layers/prometheus-client/src/lib.rs:381,1
    - Dst: iter
      Src: /src/opendal/core/layers/prometheus-client/src/lib.rs:381,1
    - Dst: cloned
      Src: /src/opendal/core/layers/prometheus-client/src/lib.rs:381,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 382
      start: 380
    functionDepth: 39
    functionLinenumber: 380
    functionLinenumberEnd: 382
    functionName: HistogramConstructor::new_metric
    functionSourceFile: /src/opendal/core/layers/prometheus-client/src/lib.rs
    functionUses: 0
    functionsReached:
    - iter
    - Histogram::new
    - cloned
    linkageType: ''
    returnType: Histogram
    signature: fn new_metric(&self) -> Histogram
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: get_or_create
      Src: /src/opendal/core/layers/prometheus-client/src/lib.rs:417,1
    - Dst: observe
      Src: /src/opendal/core/layers/prometheus-client/src/lib.rs:417,1
    - Dst: get_or_create
      Src: /src/opendal/core/layers/prometheus-client/src/lib.rs:422,1
    - Dst: observe
      Src: /src/opendal/core/layers/prometheus-client/src/lib.rs:422,1
    - Dst: get_or_create
      Src: /src/opendal/core/layers/prometheus-client/src/lib.rs:424,1
    - Dst: observe
      Src: /src/opendal/core/layers/prometheus-client/src/lib.rs:424,1
    - Dst: get_or_create
      Src: /src/opendal/core/layers/prometheus-client/src/lib.rs:428,1
    - Dst: observe
      Src: /src/opendal/core/layers/prometheus-client/src/lib.rs:428,1
    - Dst: get_or_create
      Src: /src/opendal/core/layers/prometheus-client/src/lib.rs:432,1
    - Dst: observe
      Src: /src/opendal/core/layers/prometheus-client/src/lib.rs:432,1
    - Dst: Result::as_secs_f64
      Src: /src/opendal/core/layers/prometheus-client/src/lib.rs:435,1
    - Dst: get_or_create
      Src: /src/opendal/core/layers/prometheus-client/src/lib.rs:437,1
    - Dst: inc
      Src: /src/opendal/core/layers/prometheus-client/src/lib.rs:437,1
    - Dst: get_or_create
      Src: /src/opendal/core/layers/prometheus-client/src/lib.rs:440,1
    - Dst: inc_by
      Src: /src/opendal/core/layers/prometheus-client/src/lib.rs:440,1
    - Dst: get_or_create
      Src: /src/opendal/core/layers/prometheus-client/src/lib.rs:444,1
    - Dst: observe
      Src: /src/opendal/core/layers/prometheus-client/src/lib.rs:444,1
    - Dst: Result::as_secs_f64
      Src: /src/opendal/core/layers/prometheus-client/src/lib.rs:447,1
    - Dst: get_or_create
      Src: /src/opendal/core/layers/prometheus-client/src/lib.rs:450,1
    - Dst: inc_by
      Src: /src/opendal/core/layers/prometheus-client/src/lib.rs:450,1
    - Dst: get_or_create
      Src: /src/opendal/core/layers/prometheus-client/src/lib.rs:452,1
    - Dst: observe
      Src: /src/opendal/core/layers/prometheus-client/src/lib.rs:452,1
    - Dst: get_or_create
      Src: /src/opendal/core/layers/prometheus-client/src/lib.rs:456,1
    - Dst: observe
      Src: /src/opendal/core/layers/prometheus-client/src/lib.rs:456,1
    - Dst: get_or_create
      Src: /src/opendal/core/layers/prometheus-client/src/lib.rs:460,1
    - Dst: observe
      Src: /src/opendal/core/layers/prometheus-client/src/lib.rs:460,1
    - Dst: Result::as_secs_f64
      Src: /src/opendal/core/layers/prometheus-client/src/lib.rs:463,1
    - Dst: get_or_create
      Src: /src/opendal/core/layers/prometheus-client/src/lib.rs:464,1
    - Dst: observe
      Src: /src/opendal/core/layers/prometheus-client/src/lib.rs:464,1
    - Dst: get_or_create
      Src: /src/opendal/core/layers/prometheus-client/src/lib.rs:468,1
    - Dst: observe
      Src: /src/opendal/core/layers/prometheus-client/src/lib.rs:468,1
    - Dst: get_or_create
      Src: /src/opendal/core/layers/prometheus-client/src/lib.rs:472,1
    - Dst: observe
      Src: /src/opendal/core/layers/prometheus-client/src/lib.rs:472,1
    - Dst: Result::as_secs_f64
      Src: /src/opendal/core/layers/prometheus-client/src/lib.rs:475,1
    - Dst: get_or_create
      Src: /src/opendal/core/layers/prometheus-client/src/lib.rs:477,1
    - Dst: inc
      Src: /src/opendal/core/layers/prometheus-client/src/lib.rs:477,1
    - Dst: get_or_create
      Src: /src/opendal/core/layers/prometheus-client/src/lib.rs:482,1
    - Dst: inc
      Src: /src/opendal/core/layers/prometheus-client/src/lib.rs:482,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 125
    argCount: 2
    argNames:
    - labels
    - value
    argTypes:
    - observe::MetricLabels
    - observe::MetricValue
    constantsTouched: []
    func_position:
      end: 486
      start: 411
    functionDepth: 32
    functionLinenumber: 411
    functionLinenumberEnd: 486
    functionName: PrometheusClientInterceptor::observe
    functionSourceFile: /src/opendal/core/layers/prometheus-client/src/lib.rs
    functionUses: 0
    functionsReached:
    - get_or_create
    - Result::as_secs_f64
    - inc_by
    - inc
    - observe
    linkageType: ''
    returnType: void
    signature: 'fn observe(&self, labels: observe::MetricLabels, value: observe::MetricValue)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Vec::name_with_unit
      Src: /src/opendal/core/layers/prometheus-client/src/lib.rs:519,1
    - Dst: Vec::help
      Src: /src/opendal/core/layers/prometheus-client/src/lib.rs:519,1
    - Dst: register_with_unit
      Src: /src/opendal/core/layers/prometheus-client/src/lib.rs:522,1
    - Dst: Unit::Other
      Src: /src/opendal/core/layers/prometheus-client/src/lib.rs:522,1
    - Dst: (&'static str, Option::to_string
      Src: /src/opendal/core/layers/prometheus-client/src/lib.rs:522,1
    - Dst: register
      Src: /src/opendal/core/layers/prometheus-client/src/lib.rs:524,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 16
    argCount: 3
    argNames:
    - registry
    - metric
    - value
    argTypes:
    - '&mut Registry'
    - impl Metric
    - observe::MetricValue
    constantsTouched: []
    func_position:
      end: 526
      start: 518
    functionDepth: 39
    functionLinenumber: 518
    functionLinenumberEnd: 526
    functionName: register_metric
    functionSourceFile: /src/opendal/core/layers/prometheus-client/src/lib.rs
    functionUses: 1
    functionsReached:
    - register_with_unit
    - Vec::help
    - Unit::Other
    - register
    - (&'static str, Option::to_string
    - Vec::name_with_unit
    linkageType: ''
    returnType: void
    signature: 'fn register_metric(registry: &mut Registry, metric: impl Metric, value:
      observe::MetricValue)'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - deleter
    - inner
    argTypes:
    - D
    - Arc<Inner>
    constantsTouched: []
    func_position:
      end: 40
      start: 34
    functionDepth: 0
    functionLinenumber: 34
    functionLinenumberEnd: 40
    functionName: Deleter::new
    functionSourceFile: /src/opendal/core/layers/foyer/src/deleter.rs
    functionUses: 67
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: 'pub(crate) fn new(deleter: D, inner: Arc<Inner>) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: DeleteInput::into_delete_input
      Src: /src/opendal/core/core/src/types/delete/deleter.rs:97,1
    - Dst: OpDelete::default
      Src: /src/opendal/core/core/src/types/delete/deleter.rs:98,1
    - Dst: with_version
      Src: /src/opendal/core/core/src/types/delete/deleter.rs:100,1
    - Dst: with_recursive
      Src: /src/opendal/core/core/src/types/delete/deleter.rs:103,1
    - Dst: delete
      Src: /src/opendal/core/core/src/types/delete/deleter.rs:106,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/types/delete/deleter.rs:107,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 28
    argCount: 1
    argNames:
    - input
    argTypes:
    - impl IntoDeleteInput
    constantsTouched: []
    func_position:
      end: 108
      start: 96
    functionDepth: 32
    functionLinenumber: 96
    functionLinenumberEnd: 108
    functionName: Deleter::delete
    functionSourceFile: /src/opendal/core/core/src/types/delete/deleter.rs
    functionUses: 4
    functionsReached:
    - with_recursive
    - Ok
    - delete
    - with_version
    - OpDelete::default
    - DeleteInput::into_delete_input
    linkageType: ''
    returnType: Result
    signature: 'pub async fn delete(&mut self, input: impl IntoDeleteInput) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: close
      Src: /src/opendal/core/core/src/types/delete/deleter.rs:189,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 190
      start: 188
    functionDepth: 2
    functionLinenumber: 188
    functionLinenumberEnd: 190
    functionName: Deleter::close
    functionSourceFile: /src/opendal/core/core/src/types/delete/deleter.rs
    functionUses: 0
    functionsReached:
    - close
    linkageType: ''
    returnType: Result
    signature: pub async fn close(&mut self) -> Result<()>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Error::kind
      Src: /src/opendal/core/layers/foyer/src/error.rs:32,1
    - Dst: Error::to_string
      Src: /src/opendal/core/layers/foyer/src/error.rs:33,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - err
    argTypes:
    - Error
    constantsTouched: []
    func_position:
      end: 35
      start: 30
    functionDepth: 2
    functionLinenumber: 30
    functionLinenumberEnd: 35
    functionName: FetchError::from_error
    functionSourceFile: /src/opendal/core/layers/foyer/src/error.rs
    functionUses: 0
    functionsReached:
    - Error::to_string
    - Error::kind
    linkageType: ''
    returnType: Self
    signature: 'pub(crate) fn from_error(err: Error) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - f
    argTypes:
    - '&mut std::fmt::Formatter<''_>'
    constantsTouched: []
    func_position:
      end: 44
      start: 39
    functionDepth: 0
    functionLinenumber: 39
    functionLinenumberEnd: 44
    functionName: FetchError::fmt
    functionSourceFile: /src/opendal/core/layers/foyer/src/error.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: std::fmt::Result
    signature: 'fn fmt(&self, f: &mut std::fmt::Formatter<''_>) -> std::fmt::Result'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: downcast_ref::<Error>
      Src: /src/opendal/core/layers/foyer/src/error.rs:50,1
    - Dst: Error::new
      Src: /src/opendal/core/layers/foyer/src/error.rs:51,1
    - Dst: Result::kind
      Src: /src/opendal/core/layers/foyer/src/error.rs:51,1
    - Dst: Result::to_string
      Src: /src/opendal/core/layers/foyer/src/error.rs:51,1
    - Dst: downcast_ref::<FetchError>
      Src: /src/opendal/core/layers/foyer/src/error.rs:53,1
    - Dst: Error::new
      Src: /src/opendal/core/layers/foyer/src/error.rs:55,1
    - Dst: Error::new
      Src: /src/opendal/core/layers/foyer/src/error.rs:59,1
    - Dst: '&str::clone'
      Src: /src/opendal/core/layers/foyer/src/error.rs:59,1
    - Dst: Error::new
      Src: /src/opendal/core/layers/foyer/src/error.rs:62,1
    - Dst: Self::set_source
      Src: /src/opendal/core/layers/foyer/src/error.rs:62,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 26
    argCount: 1
    argNames:
    - e
    argTypes:
    - FoyerError
    constantsTouched: []
    func_position:
      end: 63
      start: 49
    functionDepth: 36
    functionLinenumber: 49
    functionLinenumberEnd: 63
    functionName: extract_err
    functionSourceFile: /src/opendal/core/layers/foyer/src/error.rs
    functionUses: 2
    functionsReached:
    - downcast_ref::<FetchError>
    - Result::to_string
    - Error::new
    - '&str::clone'
    - Result::kind
    - Self::set_source
    - downcast_ref::<Error>
    linkageType: ''
    returnType: Error
    signature: 'pub(crate) fn extract_err(e: FoyerError) -> Error'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Arc::new
      Src: /src/opendal/core/core/src/types/write/writer.rs:109,1
    - Dst: std::future::ready
      Src: /src/opendal/core/core/src/types/write/writer.rs:110,1
    - Dst: WriteGenerator::create
      Src: /src/opendal/core/core/src/types/write/writer.rs:110,1
    - Dst: Result::clone
      Src: /src/opendal/core/core/src/types/write/writer.rs:110,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/types/write/writer.rs:112,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - WriteContext
    constantsTouched: []
    func_position:
      end: 113
      start: 108
    functionDepth: 39
    functionLinenumber: 108
    functionLinenumberEnd: 113
    functionName: Writer::new
    functionSourceFile: /src/opendal/core/core/src/types/write/writer.rs
    functionUses: 121
    functionsReached:
    - Result::clone
    - Ok
    - Arc::new
    - WriteGenerator::create
    - std::future::ready
    linkageType: ''
    returnType: Result
    signature: 'pub(crate) async fn new(ctx: WriteContext) -> Result<Self>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: io::Result::as_ref
      Src: /src/opendal/bindings/nodejs/src/lib.rs:1105,1
    - Dst: '&[&''static str]::to_owned'
      Src: /src/opendal/bindings/nodejs/src/lib.rs:1105,1
    - Dst: into_bytes
      Src: /src/opendal/bindings/nodejs/src/lib.rs:1106,1
    - Dst: write
      Src: /src/opendal/bindings/nodejs/src/lib.rs:1108,1
    - Dst: map_err
      Src: /src/opendal/bindings/nodejs/src/lib.rs:1108,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 1
    argNames:
    - content
    argTypes:
    - Either<Buffer, String>
    constantsTouched: []
    func_position:
      end: 1109
      start: 1103
    functionDepth: 36
    functionLinenumber: 1103
    functionLinenumberEnd: 1109
    functionName: Writer::write
    functionSourceFile: /src/opendal/bindings/nodejs/src/lib.rs
    functionUses: 2
    functionsReached:
    - map_err
    - '&[&''static str]::to_owned'
    - into_bytes
    - io::Result::as_ref
    - write
    linkageType: ''
    returnType: Result
    signature: 'pub async unsafe fn write(&mut self, content: Either<Buffer, String>)
      -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: close
      Src: /src/opendal/bindings/nodejs/src/lib.rs:1125,1
    - Dst: map
      Src: /src/opendal/bindings/nodejs/src/lib.rs:1125,1
    - Dst: map_err
      Src: /src/opendal/bindings/nodejs/src/lib.rs:1125,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 1126
      start: 1124
    functionDepth: 2
    functionLinenumber: 1124
    functionLinenumberEnd: 1126
    functionName: Writer::close
    functionSourceFile: /src/opendal/bindings/nodejs/src/lib.rs
    functionUses: 0
    functionsReached:
    - map_err
    - map
    - close
    linkageType: ''
    returnType: Result
    signature: pub async unsafe fn close(&mut self) -> Result<()>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: abort
      Src: /src/opendal/core/core/src/types/write/writer.rs:192,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 193
      start: 191
    functionDepth: 31
    functionLinenumber: 191
    functionLinenumberEnd: 193
    functionName: Writer::abort
    functionSourceFile: /src/opendal/core/core/src/types/write/writer.rs
    functionUses: 0
    functionsReached:
    - abort
    linkageType: ''
    returnType: Result
    signature: pub async fn abort(&mut self) -> Result<()>
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 4
    argNames:
    - inner
    - size_limit
    - path
    - args
    argTypes:
    - Arc<Inner>
    - std::ops::Range<usize>
    - String
    - OpRead
    constantsTouched: []
    func_position:
      end: 59
      start: 47
    functionDepth: 0
    functionLinenumber: 47
    functionLinenumberEnd: 59
    functionName: FullReader::new
    functionSourceFile: /src/opendal/core/layers/foyer/src/full.rs
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: 'pub(crate) fn new(inner: Arc<Inner>,size_limit: std::ops::Range<usize>,path:
      String,args: OpRead,) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: clone
      Src: /src/opendal/core/layers/foyer/src/full.rs:63,1
    - Dst: version
      Src: /src/opendal/core/layers/foyer/src/full.rs:64,1
    - Dst: map
      Src: /src/opendal/core/layers/foyer/src/full.rs:64,1
    - Dst: Result::to_string
      Src: /src/opendal/core/layers/foyer/src/full.rs:64,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 66
      start: 61
    functionDepth: 32
    functionLinenumber: 61
    functionLinenumberEnd: 66
    functionName: FullReader::cache_key
    functionSourceFile: /src/opendal/core/layers/foyer/src/full.rs
    functionUses: 1
    functionsReached:
    - map
    - version
    - Result::to_string
    - clone
    linkageType: ''
    returnType: FoyerKey
    signature: fn cache_key(&self) -> FoyerKey
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: RpRead::new
      Src: /src/opendal/core/layers/foyer/src/full.rs:69,1
    - Dst: Metadata::new
      Src: /src/opendal/core/layers/foyer/src/full.rs:69,1
    - Dst: Self::with_content_length
      Src: /src/opendal/core/layers/foyer/src/full.rs:69,1
    - Dst: len
      Src: /src/opendal/core/layers/foyer/src/full.rs:69,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - buffer
    argTypes:
    - '&Buffer'
    constantsTouched: []
    func_position:
      end: 70
      start: 68
    functionDepth: 3
    functionLinenumber: 68
    functionLinenumberEnd: 70
    functionName: FullReader::full_object_rp
    functionSourceFile: /src/opendal/core/layers/foyer/src/full.rs
    functionUses: 0
    functionsReached:
    - RpRead::new
    - Metadata::new
    - Self::with_content_length
    - len
    linkageType: ''
    returnType: RpRead
    signature: 'fn full_object_rp(buffer: &Buffer) -> RpRead'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: slice
      Src: /src/opendal/core/layers/foyer/src/full.rs:73,1
    - Dst: (Vec::to_range_as_usize
      Src: /src/opendal/core/layers/foyer/src/full.rs:73,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - buffer
    - range
    argTypes:
    - '&Buffer'
    - BytesRange
    constantsTouched: []
    func_position:
      end: 74
      start: 72
    functionDepth: 4
    functionLinenumber: 72
    functionLinenumberEnd: 74
    functionName: FullReader::slice_full_object
    functionSourceFile: /src/opendal/core/layers/foyer/src/full.rs
    functionUses: 0
    functionsReached:
    - (Vec::to_range_as_usize
    - slice
    linkageType: ''
    returnType: Buffer
    signature: 'fn slice_full_object(buffer: &Buffer, range: BytesRange) -> Buffer'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/opendal/core/layers/foyer/src/full.rs:77,1
    - Dst: expect
      Src: /src/opendal/core/layers/foyer/src/full.rs:77,1
    - Dst: contains
      Src: /src/opendal/core/layers/foyer/src/full.rs:77,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - key
    argTypes:
    - '&FoyerKey'
    constantsTouched: []
    func_position:
      end: 82
      start: 76
    functionDepth: 33
    functionLinenumber: 76
    functionLinenumberEnd: 82
    functionName: FullReader::is_deleted
    functionSourceFile: /src/opendal/core/layers/foyer/src/full.rs
    functionUses: 1
    functionsReached:
    - contains
    - expect
    - lock
    linkageType: ''
    returnType: bool
    signature: 'fn is_deleted(&self, key: &FoyerKey) -> bool'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: OpStat::new
      Src: /src/opendal/core/layers/foyer/src/full.rs:87,1
    - Dst: version
      Src: /src/opendal/core/layers/foyer/src/full.rs:88,1
    - Dst: with_version
      Src: /src/opendal/core/layers/foyer/src/full.rs:89,1
    - Dst: if_match
      Src: /src/opendal/core/layers/foyer/src/full.rs:91,1
    - Dst: with_if_match
      Src: /src/opendal/core/layers/foyer/src/full.rs:92,1
    - Dst: if_none_match
      Src: /src/opendal/core/layers/foyer/src/full.rs:94,1
    - Dst: with_if_none_match
      Src: /src/opendal/core/layers/foyer/src/full.rs:95,1
    - Dst: if_modified_since
      Src: /src/opendal/core/layers/foyer/src/full.rs:97,1
    - Dst: with_if_modified_since
      Src: /src/opendal/core/layers/foyer/src/full.rs:98,1
    - Dst: if_unmodified_since
      Src: /src/opendal/core/layers/foyer/src/full.rs:100,1
    - Dst: with_if_unmodified_since
      Src: /src/opendal/core/layers/foyer/src/full.rs:101,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 46
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 104
      start: 86
    functionDepth: 32
    functionLinenumber: 86
    functionLinenumberEnd: 104
    functionName: FullReader::stat_args
    functionSourceFile: /src/opendal/core/layers/foyer/src/full.rs
    functionUses: 1
    functionsReached:
    - with_if_match
    - with_if_unmodified_since
    - with_if_none_match
    - if_modified_since
    - with_version
    - OpStat::new
    - if_none_match
    - with_if_modified_since
    - version
    - if_unmodified_since
    - if_match
    linkageType: ''
    returnType: OpStat
    signature: fn stat_args(&self) -> OpStat
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: read
      Src: /src/opendal/core/layers/foyer/src/full.rs:110,1
    - Dst: clone
      Src: /src/opendal/core/layers/foyer/src/full.rs:113,1
    - Dst: anyhow::Result::open
      Src: /src/opendal/core/layers/foyer/src/full.rs:114,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 16
    argCount: 1
    argNames:
    - range
    argTypes:
    - BytesRange
    constantsTouched: []
    func_position:
      end: 115
      start: 106
    functionDepth: 31
    functionLinenumber: 106
    functionLinenumberEnd: 115
    functionName: FullReader::fallback_open
    functionSourceFile: /src/opendal/core/layers/foyer/src/full.rs
    functionUses: 1
    functionsReached:
    - read
    - clone
    - anyhow::Result::open
    linkageType: ''
    returnType: Result
    signature: 'async fn fallback_open(&self,range: BytesRange,) -> Result<(RpRead,
      Box<dyn oio::ReadStreamDyn>)>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: read
      Src: /src/opendal/core/layers/foyer/src/full.rs:118,1
    - Dst: clone
      Src: /src/opendal/core/layers/foyer/src/full.rs:121,1
    - Dst: anyhow::Result::read
      Src: /src/opendal/core/layers/foyer/src/full.rs:122,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 16
    argCount: 1
    argNames:
    - range
    argTypes:
    - BytesRange
    constantsTouched: []
    func_position:
      end: 123
      start: 117
    functionDepth: 31
    functionLinenumber: 117
    functionLinenumberEnd: 123
    functionName: FullReader::fallback_read
    functionSourceFile: /src/opendal/core/layers/foyer/src/full.rs
    functionUses: 1
    functionsReached:
    - read
    - anyhow::Result::read
    - clone
    linkageType: ''
    returnType: Result
    signature: 'async fn fallback_read(&self, range: BytesRange) -> Result<(RpRead,
      Buffer)>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: clone
      Src: /src/opendal/core/layers/foyer/src/full.rs:126,1
    - Dst: FullReader::cache_key
      Src: /src/opendal/core/layers/foyer/src/full.rs:135,1
    - Dst: FullReader::is_deleted
      Src: /src/opendal/core/layers/foyer/src/full.rs:137,1
    - Dst: Ok
      Src: /src/opendal/core/layers/foyer/src/full.rs:138,1
    - Dst: get_or_fetch
      Src: /src/opendal/core/layers/foyer/src/full.rs:141,1
    - Dst: clone
      Src: /src/opendal/core/layers/foyer/src/full.rs:145,1
    - Dst: clone
      Src: /src/opendal/core/layers/foyer/src/full.rs:146,1
    - Dst: clone
      Src: /src/opendal/core/layers/foyer/src/full.rs:147,1
    - Dst: FullReader::stat_args
      Src: /src/opendal/core/layers/foyer/src/full.rs:148,1
    - Dst: clone
      Src: /src/opendal/core/layers/foyer/src/full.rs:149,1
    - Dst: stat
      Src: /src/opendal/core/layers/foyer/src/full.rs:152,1
    - Dst: map_err
      Src: /src/opendal/core/layers/foyer/src/full.rs:152,1
    - Dst: into_metadata
      Src: /src/opendal/core/layers/foyer/src/full.rs:152,1
    - Dst: anyhow::Result::content_length
      Src: /src/opendal/core/layers/foyer/src/full.rs:159,1
    - Dst: Self::contains
      Src: /src/opendal/core/layers/foyer/src/full.rs:160,1
    - Dst: Err
      Src: /src/opendal/core/layers/foyer/src/full.rs:161,1
    - Dst: read
      Src: /src/opendal/core/layers/foyer/src/full.rs:165,1
    - Dst: map_err
      Src: /src/opendal/core/layers/foyer/src/full.rs:165,1
    - Dst: anyhow::Result::open
      Src: /src/opendal/core/layers/foyer/src/full.rs:169,1
    - Dst: BytesRange::new
      Src: /src/opendal/core/layers/foyer/src/full.rs:170,1
    - Dst: map_err
      Src: /src/opendal/core/layers/foyer/src/full.rs:169,1
    - Dst: Result::read_all
      Src: /src/opendal/core/layers/foyer/src/full.rs:173,1
    - Dst: map_err
      Src: /src/opendal/core/layers/foyer/src/full.rs:173,1
    - Dst: Ok
      Src: /src/opendal/core/layers/foyer/src/full.rs:175,1
    - Dst: FoyerValue
      Src: /src/opendal/core/layers/foyer/src/full.rs:175,1
    - Dst: Ok
      Src: /src/opendal/core/layers/foyer/src/full.rs:181,1
    - Dst: Some
      Src: /src/opendal/core/layers/foyer/src/full.rs:181,1
    - Dst: clone
      Src: /src/opendal/core/layers/foyer/src/full.rs:181,1
    - Dst: downcast_ref::<FetchError>
      Src: /src/opendal/core/layers/foyer/src/full.rs:182,1
    - Dst: Ok
      Src: /src/opendal/core/layers/foyer/src/full.rs:183,1
    - Dst: Err
      Src: /src/opendal/core/layers/foyer/src/full.rs:185,1
    - Dst: Error::new
      Src: /src/opendal/core/layers/foyer/src/full.rs:185,1
    - Dst: '&str::clone'
      Src: /src/opendal/core/layers/foyer/src/full.rs:185,1
    - Dst: Err
      Src: /src/opendal/core/layers/foyer/src/full.rs:187,1
    - Dst: error::extract_err
      Src: /src/opendal/core/layers/foyer/src/full.rs:187,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 100
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 190
      start: 125
    functionDepth: 33
    functionLinenumber: 125
    functionLinenumberEnd: 190
    functionName: FullReader::read_full_object
    functionSourceFile: /src/opendal/core/layers/foyer/src/full.rs
    functionUses: 2
    functionsReached:
    - into_metadata
    - downcast_ref::<FetchError>
    - clone
    - anyhow::Result::open
    - FullReader::is_deleted
    - get_or_fetch
    - map_err
    - FoyerValue
    - FullReader::cache_key
    - Ok
    - '&str::clone'
    - Result::read_all
    - FullReader::stat_args
    - BytesRange::new
    - stat
    - read
    - anyhow::Result::content_length
    - Some
    - error::extract_err
    - Err
    - Error::new
    - Self::contains
    linkageType: ''
    returnType: Result
    signature: async fn read_full_object(&self) -> Result<Option<Buffer>>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: FullReader::read_full_object
      Src: /src/opendal/core/layers/foyer/src/full.rs:195,1
    - Dst: Self::full_object_rp
      Src: /src/opendal/core/layers/foyer/src/full.rs:197,1
    - Dst: Self::slice_full_object
      Src: /src/opendal/core/layers/foyer/src/full.rs:198,1
    - Dst: Ok
      Src: /src/opendal/core/layers/foyer/src/full.rs:199,1
    - Dst: FullReader::fallback_read
      Src: /src/opendal/core/layers/foyer/src/full.rs:201,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 1
    argNames:
    - range
    argTypes:
    - BytesRange
    constantsTouched: []
    func_position:
      end: 203
      start: 194
    functionDepth: 34
    functionLinenumber: 194
    functionLinenumberEnd: 203
    functionName: FullReader::read_range
    functionSourceFile: /src/opendal/core/layers/foyer/src/full.rs
    functionUses: 1
    functionsReached:
    - Self::full_object_rp
    - Ok
    - FullReader::read_full_object
    - FullReader::fallback_read
    - Self::slice_full_object
    linkageType: ''
    returnType: Result
    signature: 'async fn read_range(&self, range: BytesRange) -> Result<(RpRead, Buffer)>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: FullReader::read_full_object
      Src: /src/opendal/core/layers/foyer/src/full.rs:208,1
    - Dst: Self::full_object_rp
      Src: /src/opendal/core/layers/foyer/src/full.rs:210,1
    - Dst: Self::slice_full_object
      Src: /src/opendal/core/layers/foyer/src/full.rs:211,1
    - Dst: Ok
      Src: /src/opendal/core/layers/foyer/src/full.rs:212,1
    - Dst: Box::new
      Src: /src/opendal/core/layers/foyer/src/full.rs:212,1
    - Dst: FullReader::fallback_open
      Src: /src/opendal/core/layers/foyer/src/full.rs:214,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 1
    argNames:
    - range
    argTypes:
    - BytesRange
    constantsTouched: []
    func_position:
      end: 216
      start: 207
    functionDepth: 34
    functionLinenumber: 207
    functionLinenumberEnd: 216
    functionName: FullReader::open
    functionSourceFile: /src/opendal/core/layers/foyer/src/full.rs
    functionUses: 0
    functionsReached:
    - FullReader::fallback_open
    - Self::full_object_rp
    - Ok
    - Box::new
    - FullReader::read_full_object
    - Self::slice_full_object
    linkageType: ''
    returnType: Result
    signature: 'async fn open(&self, range: BytesRange) -> Result<(RpRead, Box<dyn
      oio::ReadStreamDyn>)>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: FullReader::read_range
      Src: /src/opendal/core/layers/foyer/src/full.rs:219,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - range
    argTypes:
    - BytesRange
    constantsTouched: []
    func_position:
      end: 220
      start: 218
    functionDepth: 35
    functionLinenumber: 218
    functionLinenumberEnd: 220
    functionName: FullReader::read
    functionSourceFile: /src/opendal/core/layers/foyer/src/full.rs
    functionUses: 0
    functionsReached:
    - FullReader::read_range
    linkageType: ''
    returnType: Result
    signature: 'async fn read(&self, range: BytesRange) -> Result<(RpRead, Buffer)>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: as_bytes
      Src: /src/opendal/core/services/foyer/src/lib.rs:62,1
    - Dst: Result::write_all
      Src: /src/opendal/core/services/foyer/src/lib.rs:63,1
    - Dst: len
      Src: /src/opendal/core/services/foyer/src/lib.rs:63,1
    - Dst: to_le_bytes
      Src: /src/opendal/core/services/foyer/src/lib.rs:63,1
    - Dst: Result::write_all
      Src: /src/opendal/core/services/foyer/src/lib.rs:64,1
    - Dst: Ok
      Src: /src/opendal/core/services/foyer/src/lib.rs:65,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 20
    argCount: 1
    argNames:
    - writer
    argTypes:
    - '&mut impl std::io::Write'
    constantsTouched: []
    func_position:
      end: 66
      start: 61
    functionDepth: 3
    functionLinenumber: 61
    functionLinenumberEnd: 66
    functionName: FoyerKey::encode
    functionSourceFile: /src/opendal/core/services/foyer/src/lib.rs
    functionUses: 0
    functionsReached:
    - as_bytes
    - Ok
    - to_le_bytes
    - len
    - Result::write_all
    linkageType: ''
    returnType: FoyerResult
    signature: 'fn encode(&self, writer: &mut impl std::io::Write) -> FoyerResult<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: anyhow::Result::read_exact
      Src: /src/opendal/core/services/foyer/src/lib.rs:73,1
    - Dst: u64::from_le_bytes
      Src: /src/opendal/core/services/foyer/src/lib.rs:74,1
    - Dst: anyhow::Result::read_exact
      Src: /src/opendal/core/services/foyer/src/lib.rs:76,1
    - Dst: String::from_utf8
      Src: /src/opendal/core/services/foyer/src/lib.rs:77,1
    - Dst: map_err
      Src: /src/opendal/core/services/foyer/src/lib.rs:77,1
    - Dst: std::io::Error::new
      Src: /src/opendal/core/services/foyer/src/lib.rs:78,1
    - Dst: Ok
      Src: /src/opendal/core/services/foyer/src/lib.rs:79,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 21
    argCount: 1
    argNames:
    - reader
    argTypes:
    - '&mut impl std::io::Read'
    constantsTouched: []
    func_position:
      end: 80
      start: 68
    functionDepth: 0
    functionLinenumber: 68
    functionLinenumberEnd: 80
    functionName: FoyerKey::decode
    functionSourceFile: /src/opendal/core/services/foyer/src/lib.rs
    functionUses: 2
    functionsReached:
    - map_err
    - String::from_utf8
    - u64::from_le_bytes
    - Ok
    - anyhow::Result::read_exact
    - std::io::Error::new
    linkageType: ''
    returnType: FoyerResult
    signature: 'fn decode(reader: &mut impl std::io::Read) -> FoyerResult<Self>whereSelf:
      Sized,'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: len
      Src: /src/opendal/core/services/foyer/src/lib.rs:83,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 84
      start: 82
    functionDepth: 3
    functionLinenumber: 82
    functionLinenumberEnd: 84
    functionName: FoyerKey::estimated_size
    functionSourceFile: /src/opendal/core/services/foyer/src/lib.rs
    functionUses: 0
    functionsReached:
    - len
    linkageType: ''
    returnType: usize
    signature: fn estimated_size(&self) -> usize
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::write_all
      Src: /src/opendal/core/layers/foyer/src/lib.rs:89,1
    - Dst: Bytes::len
      Src: /src/opendal/core/layers/foyer/src/lib.rs:89,1
    - Dst: to_le_bytes
      Src: /src/opendal/core/layers/foyer/src/lib.rs:89,1
    - Dst: Result::write_all
      Src: /src/opendal/core/layers/foyer/src/lib.rs:90,1
    - Dst: Ok
      Src: /src/opendal/core/layers/foyer/src/lib.rs:91,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 17
    argCount: 2
    argNames:
    - writer
    - bytes
    argTypes:
    - '&mut impl std::io::Write'
    - '&[u8]'
    constantsTouched: []
    func_position:
      end: 92
      start: 88
    functionDepth: 3
    functionLinenumber: 88
    functionLinenumberEnd: 92
    functionName: write_bytes
    functionSourceFile: /src/opendal/core/layers/foyer/src/lib.rs
    functionUses: 2
    functionsReached:
    - to_le_bytes
    - Ok
    - Bytes::len
    - Result::write_all
    linkageType: ''
    returnType: FoyerResult
    signature: 'fn write_bytes(writer: &mut impl std::io::Write, bytes: &[u8]) ->
      FoyerResult<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: anyhow::Result::read_exact
      Src: /src/opendal/core/layers/foyer/src/lib.rs:96,1
    - Dst: u64::from_le_bytes
      Src: /src/opendal/core/layers/foyer/src/lib.rs:97,1
    - Dst: anyhow::Result::read_exact
      Src: /src/opendal/core/layers/foyer/src/lib.rs:99,1
    - Dst: String::from_utf8
      Src: /src/opendal/core/layers/foyer/src/lib.rs:100,1
    - Dst: map_err
      Src: /src/opendal/core/layers/foyer/src/lib.rs:100,1
    - Dst: std::io::Error::new
      Src: /src/opendal/core/layers/foyer/src/lib.rs:101,1
    - Dst: Self::into
      Src: /src/opendal/core/layers/foyer/src/lib.rs:101,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 20
    argCount: 1
    argNames:
    - reader
    argTypes:
    - '&mut impl std::io::Read'
    constantsTouched: []
    func_position:
      end: 102
      start: 94
    functionDepth: 29
    functionLinenumber: 94
    functionLinenumberEnd: 102
    functionName: read_string
    functionSourceFile: /src/opendal/core/layers/foyer/src/lib.rs
    functionUses: 0
    functionsReached:
    - map_err
    - String::from_utf8
    - u64::from_le_bytes
    - anyhow::Result::read_exact
    - std::io::Error::new
    - Self::into
    linkageType: ''
    returnType: FoyerResult
    signature: 'fn read_string(reader: &mut impl std::io::Read) -> FoyerResult<String>'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 96
      start: 94
    functionDepth: 0
    functionLinenumber: 94
    functionLinenumberEnd: 96
    functionName: FoyerValue::deref
    functionSourceFile: /src/opendal/core/services/foyer/src/lib.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: '&Self::Target'
    signature: fn deref(&self) -> &Self::Target
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: len
      Src: /src/opendal/core/services/foyer/src/lib.rs:101,1
    - Dst: Result::write_all
      Src: /src/opendal/core/services/foyer/src/lib.rs:102,1
    - Dst: usize::to_le_bytes
      Src: /src/opendal/core/services/foyer/src/lib.rs:102,1
    - Dst: std::io::copy
      Src: /src/opendal/core/services/foyer/src/lib.rs:103,1
    - Dst: clone
      Src: /src/opendal/core/services/foyer/src/lib.rs:103,1
    - Dst: Ok
      Src: /src/opendal/core/services/foyer/src/lib.rs:104,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 20
    argCount: 1
    argNames:
    - writer
    argTypes:
    - '&mut impl std::io::Write'
    constantsTouched: []
    func_position:
      end: 105
      start: 100
    functionDepth: 3
    functionLinenumber: 100
    functionLinenumberEnd: 105
    functionName: FoyerValue::encode
    functionSourceFile: /src/opendal/core/services/foyer/src/lib.rs
    functionUses: 0
    functionsReached:
    - std::io::copy
    - Ok
    - clone
    - len
    - usize::to_le_bytes
    - Result::write_all
    linkageType: ''
    returnType: FoyerResult
    signature: 'fn encode(&self, writer: &mut impl std::io::Write) -> FoyerResult<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: anyhow::Result::read_exact
      Src: /src/opendal/core/services/foyer/src/lib.rs:112,1
    - Dst: u64::from_le_bytes
      Src: /src/opendal/core/services/foyer/src/lib.rs:113,1
    - Dst: anyhow::Result::read_exact
      Src: /src/opendal/core/services/foyer/src/lib.rs:115,1
    - Dst: Ok
      Src: /src/opendal/core/services/foyer/src/lib.rs:116,1
    - Dst: FoyerValue
      Src: /src/opendal/core/services/foyer/src/lib.rs:116,1
    - Dst: into
      Src: /src/opendal/core/services/foyer/src/lib.rs:116,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 19
    argCount: 1
    argNames:
    - reader
    argTypes:
    - '&mut impl std::io::Read'
    constantsTouched: []
    func_position:
      end: 117
      start: 107
    functionDepth: 29
    functionLinenumber: 107
    functionLinenumberEnd: 117
    functionName: FoyerValue::decode
    functionSourceFile: /src/opendal/core/services/foyer/src/lib.rs
    functionUses: 0
    functionsReached:
    - FoyerValue
    - u64::from_le_bytes
    - Ok
    - into
    - anyhow::Result::read_exact
    linkageType: ''
    returnType: FoyerResult
    signature: 'fn decode(reader: &mut impl std::io::Read) -> FoyerResult<Self>whereSelf:
      Sized,'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: len
      Src: /src/opendal/core/services/foyer/src/lib.rs:120,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 121
      start: 119
    functionDepth: 3
    functionLinenumber: 119
    functionLinenumberEnd: 121
    functionName: FoyerValue::estimated_size
    functionSourceFile: /src/opendal/core/services/foyer/src/lib.rs
    functionUses: 0
    functionsReached:
    - len
    linkageType: ''
    returnType: usize
    signature: fn estimated_size(&self) -> usize
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Arc::default
      Src: /src/opendal/core/layers/foyer/src/lib.rs:186,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - cache
    argTypes:
    - HybridCache<FoyerKey, FoyerValue>
    constantsTouched: []
    func_position:
      end: 188
      start: 182
    functionDepth: 3
    functionLinenumber: 182
    functionLinenumberEnd: 188
    functionName: FoyerLayer::new
    functionSourceFile: /src/opendal/core/layers/foyer/src/lib.rs
    functionUses: 5
    functionsReached:
    - Arc::default
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(cache: HybridCache<FoyerKey, FoyerValue>) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self::start_bound
      Src: /src/opendal/core/layers/foyer/src/lib.rs:194,1
    - Dst: Self::end_bound
      Src: /src/opendal/core/layers/foyer/src/lib.rs:199,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 16
    argCount: 1
    argNames:
    - size_limit
    argTypes:
    - R
    constantsTouched: []
    func_position:
      end: 206
      start: 193
    functionDepth: 0
    functionLinenumber: 193
    functionLinenumberEnd: 206
    functionName: FoyerLayer::with_size_limit
    functionSourceFile: /src/opendal/core/layers/foyer/src/lib.rs
    functionUses: 0
    functionsReached:
    - Self::end_bound
    - Self::start_bound
    linkageType: ''
    returnType: Self
    signature: 'pub fn with_size_limit<R: RangeBounds<usize>>(mut self, size_limit:
      R) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Arc::new
      Src: /src/opendal/core/layers/foyer/src/lib.rs:211,1
    - Dst: FoyerLayer::layer
      Src: /src/opendal/core/layers/foyer/src/lib.rs:211,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - inner
    argTypes:
    - Servicer
    constantsTouched: []
    func_position:
      end: 212
      start: 210
    functionDepth: 3
    functionLinenumber: 210
    functionLinenumberEnd: 212
    functionName: FoyerLayer::apply_service
    functionSourceFile: /src/opendal/core/layers/foyer/src/lib.rs
    functionUses: 0
    functionsReached:
    - Arc::new
    - FoyerLayer::layer
    linkageType: ''
    returnType: Servicer
    signature: 'fn apply_service(&self, inner: Servicer) -> Servicer'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: clone
      Src: /src/opendal/core/layers/foyer/src/lib.rs:219,1
    - Dst: clone
      Src: /src/opendal/core/layers/foyer/src/lib.rs:220,1
    - Dst: clone
      Src: /src/opendal/core/layers/foyer/src/lib.rs:221,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 1
    argNames:
    - inner
    argTypes:
    - Servicer
    constantsTouched: []
    func_position:
      end: 223
      start: 216
    functionDepth: 2
    functionLinenumber: 216
    functionLinenumberEnd: 223
    functionName: FoyerLayer::layer
    functionSourceFile: /src/opendal/core/layers/foyer/src/lib.rs
    functionUses: 1
    functionsReached:
    - clone
    linkageType: ''
    returnType: FoyerService
    signature: 'fn layer(&self, inner: Servicer) -> FoyerService'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Arc::new
      Src: /src/opendal/core/layers/foyer/src/lib.rs:244,1
    - Dst: clone
      Src: /src/opendal/core/layers/foyer/src/lib.rs:245,1
    - Dst: Result::clone
      Src: /src/opendal/core/layers/foyer/src/lib.rs:246,1
    - Dst: clone
      Src: /src/opendal/core/layers/foyer/src/lib.rs:247,1
    - Dst: clone
      Src: /src/opendal/core/layers/foyer/src/lib.rs:248,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 13
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - '&OperationContext'
    constantsTouched: []
    func_position:
      end: 250
      start: 243
    functionDepth: 2
    functionLinenumber: 243
    functionLinenumberEnd: 250
    functionName: FoyerService::operation_inner
    functionSourceFile: /src/opendal/core/layers/foyer/src/lib.rs
    functionUses: 3
    functionsReached:
    - Result::clone
    - Arc::new
    - clone
    linkageType: ''
    returnType: Arc
    signature: 'fn operation_inner(&self, ctx: &OperationContext) -> Arc<Inner>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: info
      Src: /src/opendal/core/layers/foyer/src/lib.rs:261,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 262
      start: 260
    functionDepth: 2
    functionLinenumber: 260
    functionLinenumberEnd: 262
    functionName: FoyerService::info
    functionSourceFile: /src/opendal/core/layers/foyer/src/lib.rs
    functionUses: 0
    functionsReached:
    - info
    linkageType: ''
    returnType: ServiceInfo
    signature: fn info(&self) -> ServiceInfo
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: capability
      Src: /src/opendal/core/layers/foyer/src/lib.rs:265,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 266
      start: 264
    functionDepth: 2
    functionLinenumber: 264
    functionLinenumberEnd: 266
    functionName: FoyerService::capability
    functionSourceFile: /src/opendal/core/layers/foyer/src/lib.rs
    functionUses: 0
    functionsReached:
    - capability
    linkageType: ''
    returnType: Capability
    signature: fn capability(&self) -> Capability
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/core/layers/foyer/src/lib.rs:269,1
    - Dst: full::FullReader::new
      Src: /src/opendal/core/layers/foyer/src/lib.rs:269,1
    - Dst: FoyerService::operation_inner
      Src: /src/opendal/core/layers/foyer/src/lib.rs:270,1
    - Dst: clone
      Src: /src/opendal/core/layers/foyer/src/lib.rs:271,1
    - Dst: to_string
      Src: /src/opendal/core/layers/foyer/src/lib.rs:272,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpRead
    constantsTouched: []
    func_position:
      end: 275
      start: 268
    functionDepth: 3
    functionLinenumber: 268
    functionLinenumberEnd: 275
    functionName: FoyerService::read
    functionSourceFile: /src/opendal/core/layers/foyer/src/lib.rs
    functionUses: 0
    functionsReached:
    - to_string
    - Ok
    - clone
    - full::FullReader::new
    - FoyerService::operation_inner
    linkageType: ''
    returnType: Result
    signature: 'fn read(&self, ctx: &OperationContext, path: &str, args: OpRead) ->
      Result<Self::Reader>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: FoyerService::operation_inner
      Src: /src/opendal/core/layers/foyer/src/lib.rs:278,1
    - Dst: clone
      Src: /src/opendal/core/layers/foyer/src/lib.rs:279,1
    - Dst: to_string
      Src: /src/opendal/core/layers/foyer/src/lib.rs:280,1
    - Dst: write
      Src: /src/opendal/core/layers/foyer/src/lib.rs:281,1
    - Dst: Ok
      Src: /src/opendal/core/layers/foyer/src/lib.rs:282,1
    - Dst: Writer::new
      Src: /src/opendal/core/layers/foyer/src/lib.rs:282,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 16
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpWrite
    constantsTouched: []
    func_position:
      end: 283
      start: 277
    functionDepth: 36
    functionLinenumber: 277
    functionLinenumberEnd: 283
    functionName: FoyerService::write
    functionSourceFile: /src/opendal/core/layers/foyer/src/lib.rs
    functionUses: 0
    functionsReached:
    - to_string
    - Ok
    - clone
    - FoyerService::operation_inner
    - write
    - Writer::new
    linkageType: ''
    returnType: Result
    signature: 'fn write(&self, ctx: &OperationContext, path: &str, args: OpWrite)
      -> Result<Self::Writer>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: FoyerService::operation_inner
      Src: /src/opendal/core/layers/foyer/src/lib.rs:286,1
    - Dst: delete
      Src: /src/opendal/core/layers/foyer/src/lib.rs:287,1
    - Dst: Ok
      Src: /src/opendal/core/layers/foyer/src/lib.rs:288,1
    - Dst: Deleter::new
      Src: /src/opendal/core/layers/foyer/src/lib.rs:288,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - '&OperationContext'
    constantsTouched: []
    func_position:
      end: 289
      start: 285
    functionDepth: 32
    functionLinenumber: 285
    functionLinenumberEnd: 289
    functionName: FoyerService::delete
    functionSourceFile: /src/opendal/core/layers/foyer/src/lib.rs
    functionUses: 0
    functionsReached:
    - FoyerService::operation_inner
    - Deleter::new
    - Ok
    - delete
    linkageType: ''
    returnType: Result
    signature: 'fn delete(&self, ctx: &OperationContext) -> Result<Self::Deleter>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: copy
      Src: /src/opendal/core/layers/foyer/src/lib.rs:299,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 5
    argNames:
    - ctx
    - from
    - to
    - args
    - opts
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    - OpCopy
    - OpCopier
    constantsTouched: []
    func_position:
      end: 300
      start: 291
    functionDepth: 34
    functionLinenumber: 291
    functionLinenumberEnd: 300
    functionName: FoyerService::copy
    functionSourceFile: /src/opendal/core/layers/foyer/src/lib.rs
    functionUses: 0
    functionsReached:
    - copy
    linkageType: ''
    returnType: Result
    signature: 'fn copy(&self,ctx: &OperationContext,from: &str,to: &str,args: OpCopy,opts:
      OpCopier,) -> Result<Self::Copier>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: list
      Src: /src/opendal/core/layers/foyer/src/lib.rs:303,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpList
    constantsTouched: []
    func_position:
      end: 304
      start: 302
    functionDepth: 2
    functionLinenumber: 302
    functionLinenumberEnd: 304
    functionName: FoyerService::list
    functionSourceFile: /src/opendal/core/layers/foyer/src/lib.rs
    functionUses: 0
    functionsReached:
    - list
    linkageType: ''
    returnType: Result
    signature: 'fn list(&self, ctx: &OperationContext, path: &str, args: OpList) ->
      Result<Self::Lister>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: create_dir
      Src: /src/opendal/core/layers/foyer/src/lib.rs:312,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpCreateDir
    constantsTouched: []
    func_position:
      end: 313
      start: 306
    functionDepth: 35
    functionLinenumber: 306
    functionLinenumberEnd: 313
    functionName: FoyerService::create_dir
    functionSourceFile: /src/opendal/core/layers/foyer/src/lib.rs
    functionUses: 0
    functionsReached:
    - create_dir
    linkageType: ''
    returnType: Result
    signature: 'async fn create_dir(&self,ctx: &OperationContext,path: &str,args:
      OpCreateDir,) -> Result<RpCreateDir>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: stat
      Src: /src/opendal/core/layers/foyer/src/lib.rs:316,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpStat
    constantsTouched: []
    func_position:
      end: 317
      start: 315
    functionDepth: 31
    functionLinenumber: 315
    functionLinenumberEnd: 317
    functionName: FoyerService::stat
    functionSourceFile: /src/opendal/core/layers/foyer/src/lib.rs
    functionUses: 0
    functionsReached:
    - stat
    linkageType: ''
    returnType: Result
    signature: 'async fn stat(&self, ctx: &OperationContext, path: &str, args: OpStat)
      -> Result<RpStat>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: rename
      Src: /src/opendal/core/layers/foyer/src/lib.rs:326,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 4
    argNames:
    - ctx
    - from
    - to
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    - OpRename
    constantsTouched: []
    func_position:
      end: 327
      start: 319
    functionDepth: 2
    functionLinenumber: 319
    functionLinenumberEnd: 327
    functionName: FoyerService::rename
    functionSourceFile: /src/opendal/core/layers/foyer/src/lib.rs
    functionUses: 0
    functionsReached:
    - rename
    linkageType: ''
    returnType: Result
    signature: 'async fn rename(&self,ctx: &OperationContext,from: &str,to: &str,args:
      OpRename,) -> Result<RpRename>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: presign
      Src: /src/opendal/core/layers/foyer/src/lib.rs:335,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpPresign
    constantsTouched: []
    func_position:
      end: 336
      start: 329
    functionDepth: 2
    functionLinenumber: 329
    functionLinenumberEnd: 336
    functionName: FoyerService::presign
    functionSourceFile: /src/opendal/core/layers/foyer/src/lib.rs
    functionUses: 0
    functionsReached:
    - presign
    linkageType: ''
    returnType: Result
    signature: 'async fn presign(&self,ctx: &OperationContext,path: &str,args: OpPresign,)
      -> Result<RpPresign>'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 1
    argNames:
    - i
    argTypes:
    - u8
    constantsTouched: []
    func_position:
      end: 142
      start: 140
    functionDepth: 0
    functionLinenumber: 140
    functionLinenumberEnd: 142
    functionName: tests::key
    functionSourceFile: /src/opendal/core/services/foyer/src/lib.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: String
    signature: 'fn key(i: u8) -> String'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 1
    argNames:
    - i
    argTypes:
    - u8
    constantsTouched: []
    func_position:
      end: 146
      start: 144
    functionDepth: 0
    functionLinenumber: 144
    functionLinenumberEnd: 146
    functionName: tests::value
    functionSourceFile: /src/opendal/core/services/foyer/src/lib.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Vec
    signature: 'fn value(i: u8) -> Vec<u8>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: HybridCacheBuilder::new
      Src: /src/opendal/core/layers/foyer/src/lib.rs:369,1
    - Dst: Self::memory
      Src: /src/opendal/core/layers/foyer/src/lib.rs:369,1
    - Dst: with_shards
      Src: /src/opendal/core/layers/foyer/src/lib.rs:369,1
    - Dst: storage
      Src: /src/opendal/core/layers/foyer/src/lib.rs:369,1
    - Dst: with_recover_mode
      Src: /src/opendal/core/layers/foyer/src/lib.rs:369,1
    - Dst: build
      Src: /src/opendal/core/layers/foyer/src/lib.rs:369,1
    - Dst: unwrap
      Src: /src/opendal/core/layers/foyer/src/lib.rs:369,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 15
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 377
      start: 368
    functionDepth: 30
    functionLinenumber: 368
    functionLinenumberEnd: 377
    functionName: tests::memory_cache
    functionSourceFile: /src/opendal/core/layers/foyer/src/lib.rs
    functionUses: 0
    functionsReached:
    - storage
    - with_recover_mode
    - with_shards
    - build
    - unwrap
    - Self::memory
    - HybridCacheBuilder::new
    linkageType: ''
    returnType: HybridCache
    signature: async fn memory_cache() -> HybridCache<FoyerKey, FoyerValue>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: OperationContext::new
      Src: /src/opendal/core/layers/foyer/src/lib.rs:556,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames: []
    argTypes:
    - '&Servicer'
    constantsTouched: []
    func_position:
      end: 557
      start: 555
    functionDepth: 4
    functionLinenumber: 555
    functionLinenumberEnd: 557
    functionName: tests::service_context
    functionSourceFile: /src/opendal/core/layers/foyer/src/lib.rs
    functionUses: 0
    functionsReached:
    - OperationContext::new
    linkageType: ''
    returnType: OperationContext
    signature: 'fn service_context(_: &Servicer) -> OperationContext'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: memory_cache
      Src: /src/opendal/core/layers/foyer/src/lib.rs:561,1
    - Dst: Arc::new
      Src: /src/opendal/core/layers/foyer/src/lib.rs:562,1
    - Dst: MockReadService::new
      Src: /src/opendal/core/layers/foyer/src/lib.rs:562,1
    - Dst: clone
      Src: /src/opendal/core/layers/foyer/src/lib.rs:563,1
    - Dst: FoyerLayer::new
      Src: /src/opendal/core/layers/foyer/src/lib.rs:564,1
    - Dst: Self::with_size_limit
      Src: /src/opendal/core/layers/foyer/src/lib.rs:564,1
    - Dst: Self::apply_service
      Src: /src/opendal/core/layers/foyer/src/lib.rs:564,1
    - Dst: service_context
      Src: /src/opendal/core/layers/foyer/src/lib.rs:567,1
    - Dst: Servicer::read
      Src: /src/opendal/core/layers/foyer/src/lib.rs:569,1
    - Dst: OpRead::default
      Src: /src/opendal/core/layers/foyer/src/lib.rs:569,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/layers/foyer/src/lib.rs:569,1
    - Dst: anyhow::Result::open
      Src: /src/opendal/core/layers/foyer/src/lib.rs:570,1
    - Dst: BytesRange::new
      Src: /src/opendal/core/layers/foyer/src/lib.rs:570,1
    - Dst: unwrap
      Src: /src/opendal/core/layers/foyer/src/lib.rs:570,1
    - Dst: Result::read_all
      Src: /src/opendal/core/layers/foyer/src/lib.rs:571,1
    - Dst: unwrap
      Src: /src/opendal/core/layers/foyer/src/lib.rs:571,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 36
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 577
      start: 560
    functionDepth: 31
    functionLinenumber: 560
    functionLinenumberEnd: 577
    functionName: tests::test_full_reader_open_fallback_preserves_stream
    functionSourceFile: /src/opendal/core/layers/foyer/src/lib.rs
    functionUses: 0
    functionsReached:
    - OpRead::default
    - Self::with_size_limit
    - Arc::new
    - FoyerLayer::new
    - unwrap
    - clone
    - service_context
    - Servicer::read
    - memory_cache
    - Self::apply_service
    - Result::unwrap
    - anyhow::Result::open
    - Result::read_all
    - BytesRange::new
    - MockReadService::new
    linkageType: ''
    returnType: void
    signature: async fn test_full_reader_open_fallback_preserves_stream()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: memory_cache
      Src: /src/opendal/core/layers/foyer/src/lib.rs:581,1
    - Dst: Arc::new
      Src: /src/opendal/core/layers/foyer/src/lib.rs:582,1
    - Dst: MockReadService::new
      Src: /src/opendal/core/layers/foyer/src/lib.rs:582,1
    - Dst: clone
      Src: /src/opendal/core/layers/foyer/src/lib.rs:583,1
    - Dst: FoyerLayer::new
      Src: /src/opendal/core/layers/foyer/src/lib.rs:584,1
    - Dst: Self::with_size_limit
      Src: /src/opendal/core/layers/foyer/src/lib.rs:584,1
    - Dst: Self::apply_service
      Src: /src/opendal/core/layers/foyer/src/lib.rs:584,1
    - Dst: service_context
      Src: /src/opendal/core/layers/foyer/src/lib.rs:587,1
    - Dst: Servicer::read
      Src: /src/opendal/core/layers/foyer/src/lib.rs:589,1
    - Dst: OpRead::default
      Src: /src/opendal/core/layers/foyer/src/lib.rs:589,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/layers/foyer/src/lib.rs:589,1
    - Dst: anyhow::Result::open
      Src: /src/opendal/core/layers/foyer/src/lib.rs:590,1
    - Dst: BytesRange::from
      Src: /src/opendal/core/layers/foyer/src/lib.rs:590,1
    - Dst: unwrap
      Src: /src/opendal/core/layers/foyer/src/lib.rs:590,1
    - Dst: Result::read_all
      Src: /src/opendal/core/layers/foyer/src/lib.rs:591,1
    - Dst: unwrap
      Src: /src/opendal/core/layers/foyer/src/lib.rs:591,1
    - Dst: Servicer::read
      Src: /src/opendal/core/layers/foyer/src/lib.rs:598,1
    - Dst: OpRead::default
      Src: /src/opendal/core/layers/foyer/src/lib.rs:598,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/layers/foyer/src/lib.rs:598,1
    - Dst: anyhow::Result::open
      Src: /src/opendal/core/layers/foyer/src/lib.rs:599,1
    - Dst: BytesRange::from
      Src: /src/opendal/core/layers/foyer/src/lib.rs:599,1
    - Dst: unwrap
      Src: /src/opendal/core/layers/foyer/src/lib.rs:599,1
    - Dst: Result::read_all
      Src: /src/opendal/core/layers/foyer/src/lib.rs:600,1
    - Dst: unwrap
      Src: /src/opendal/core/layers/foyer/src/lib.rs:600,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 59
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 606
      start: 580
    functionDepth: 31
    functionLinenumber: 580
    functionLinenumberEnd: 606
    functionName: tests::test_full_reader_open_fills_cache
    functionSourceFile: /src/opendal/core/layers/foyer/src/lib.rs
    functionUses: 0
    functionsReached:
    - OpRead::default
    - Self::with_size_limit
    - BytesRange::from
    - Arc::new
    - FoyerLayer::new
    - unwrap
    - clone
    - service_context
    - Servicer::read
    - memory_cache
    - Self::apply_service
    - Result::unwrap
    - anyhow::Result::open
    - Result::read_all
    - MockReadService::new
    linkageType: ''
    returnType: void
    signature: async fn test_full_reader_open_fills_cache()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: memory_cache
      Src: /src/opendal/core/layers/foyer/src/lib.rs:610,1
    - Dst: Arc::new
      Src: /src/opendal/core/layers/foyer/src/lib.rs:611,1
    - Dst: MockReadService::new
      Src: /src/opendal/core/layers/foyer/src/lib.rs:611,1
    - Dst: clone
      Src: /src/opendal/core/layers/foyer/src/lib.rs:612,1
    - Dst: FoyerLayer::new
      Src: /src/opendal/core/layers/foyer/src/lib.rs:613,1
    - Dst: Self::with_size_limit
      Src: /src/opendal/core/layers/foyer/src/lib.rs:613,1
    - Dst: Self::apply_service
      Src: /src/opendal/core/layers/foyer/src/lib.rs:613,1
    - Dst: service_context
      Src: /src/opendal/core/layers/foyer/src/lib.rs:616,1
    - Dst: OpRead::default
      Src: /src/opendal/core/layers/foyer/src/lib.rs:618,1
    - Dst: Self::with_version
      Src: /src/opendal/core/layers/foyer/src/lib.rs:618,1
    - Dst: Result::with_if_match
      Src: /src/opendal/core/layers/foyer/src/lib.rs:618,1
    - Dst: Servicer::read
      Src: /src/opendal/core/layers/foyer/src/lib.rs:619,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/layers/foyer/src/lib.rs:619,1
    - Dst: anyhow::Result::open
      Src: /src/opendal/core/layers/foyer/src/lib.rs:620,1
    - Dst: BytesRange::new
      Src: /src/opendal/core/layers/foyer/src/lib.rs:620,1
    - Dst: unwrap
      Src: /src/opendal/core/layers/foyer/src/lib.rs:620,1
    - Dst: Result::read_all
      Src: /src/opendal/core/layers/foyer/src/lib.rs:621,1
    - Dst: unwrap
      Src: /src/opendal/core/layers/foyer/src/lib.rs:621,1
    - Dst: lock
      Src: /src/opendal/core/layers/foyer/src/lib.rs:623,1
    - Dst: unwrap
      Src: /src/opendal/core/layers/foyer/src/lib.rs:623,1
    - Dst: clone
      Src: /src/opendal/core/layers/foyer/src/lib.rs:623,1
    - Dst: unwrap
      Src: /src/opendal/core/layers/foyer/src/lib.rs:623,1
    - Dst: lock
      Src: /src/opendal/core/layers/foyer/src/lib.rs:627,1
    - Dst: unwrap
      Src: /src/opendal/core/layers/foyer/src/lib.rs:627,1
    - Dst: clone
      Src: /src/opendal/core/layers/foyer/src/lib.rs:627,1
    - Dst: unwrap
      Src: /src/opendal/core/layers/foyer/src/lib.rs:627,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 59
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 630
      start: 609
    functionDepth: 31
    functionLinenumber: 609
    functionLinenumberEnd: 630
    functionName: tests::test_cache_fill_preserves_read_args
    functionSourceFile: /src/opendal/core/layers/foyer/src/lib.rs
    functionUses: 0
    functionsReached:
    - OpRead::default
    - Self::with_version
    - Self::with_size_limit
    - lock
    - Arc::new
    - FoyerLayer::new
    - unwrap
    - clone
    - service_context
    - Servicer::read
    - memory_cache
    - Self::apply_service
    - Result::unwrap
    - anyhow::Result::open
    - Result::read_all
    - Result::with_if_match
    - BytesRange::new
    - MockReadService::new
    linkageType: ''
    returnType: void
    signature: async fn test_cache_fill_preserves_read_args()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: tempfile::tempdir
      Src: /src/opendal/core/layers/foyer/src/lib.rs:634,1
    - Dst: unwrap
      Src: /src/opendal/core/layers/foyer/src/lib.rs:634,1
    - Dst: HybridCacheBuilder::new
      Src: /src/opendal/core/layers/foyer/src/lib.rs:636,1
    - Dst: Self::memory
      Src: /src/opendal/core/layers/foyer/src/lib.rs:636,1
    - Dst: with_shards
      Src: /src/opendal/core/layers/foyer/src/lib.rs:636,1
    - Dst: storage
      Src: /src/opendal/core/layers/foyer/src/lib.rs:636,1
    - Dst: with_engine_config
      Src: /src/opendal/core/layers/foyer/src/lib.rs:636,1
    - Dst: BlockEngineConfig::new
      Src: /src/opendal/core/layers/foyer/src/lib.rs:641,1
    - Dst: FsDeviceBuilder::new
      Src: /src/opendal/core/layers/foyer/src/lib.rs:642,1
    - Dst: Result::path
      Src: /src/opendal/core/layers/foyer/src/lib.rs:642,1
    - Dst: Self::with_capacity
      Src: /src/opendal/core/layers/foyer/src/lib.rs:642,1
    - Dst: build
      Src: /src/opendal/core/layers/foyer/src/lib.rs:642,1
    - Dst: unwrap
      Src: /src/opendal/core/layers/foyer/src/lib.rs:642,1
    - Dst: Self::with_block_size
      Src: /src/opendal/core/layers/foyer/src/lib.rs:641,1
    - Dst: with_recover_mode
      Src: /src/opendal/core/layers/foyer/src/lib.rs:636,1
    - Dst: build
      Src: /src/opendal/core/layers/foyer/src/lib.rs:636,1
    - Dst: unwrap
      Src: /src/opendal/core/layers/foyer/src/lib.rs:636,1
    - Dst: Operator::new
      Src: /src/opendal/core/layers/foyer/src/lib.rs:654,1
    - Dst: Memory::default
      Src: /src/opendal/core/layers/foyer/src/lib.rs:654,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/layers/foyer/src/lib.rs:654,1
    - Dst: T::layer
      Src: /src/opendal/core/layers/foyer/src/lib.rs:654,1
    - Dst: FoyerLayer::new
      Src: /src/opendal/core/layers/foyer/src/lib.rs:656,1
    - Dst: HybridCache::clone
      Src: /src/opendal/core/layers/foyer/src/lib.rs:656,1
    - Dst: write
      Src: /src/opendal/core/layers/foyer/src/lib.rs:661,1
    - Dst: key
      Src: /src/opendal/core/layers/foyer/src/lib.rs:661,1
    - Dst: value
      Src: /src/opendal/core/layers/foyer/src/lib.rs:661,1
    - Dst: unwrap
      Src: /src/opendal/core/layers/foyer/src/lib.rs:661,1
    - Dst: read
      Src: /src/opendal/core/layers/foyer/src/lib.rs:667,1
    - Dst: key
      Src: /src/opendal/core/layers/foyer/src/lib.rs:667,1
    - Dst: unwrap
      Src: /src/opendal/core/layers/foyer/src/lib.rs:667,1
    - Dst: HybridCache::clear
      Src: /src/opendal/core/layers/foyer/src/lib.rs:671,1
    - Dst: unwrap
      Src: /src/opendal/core/layers/foyer/src/lib.rs:671,1
    - Dst: read
      Src: /src/opendal/core/layers/foyer/src/lib.rs:674,1
    - Dst: key
      Src: /src/opendal/core/layers/foyer/src/lib.rs:674,1
    - Dst: unwrap
      Src: /src/opendal/core/layers/foyer/src/lib.rs:674,1
    - Dst: delete
      Src: /src/opendal/core/layers/foyer/src/lib.rs:679,1
    - Dst: key
      Src: /src/opendal/core/layers/foyer/src/lib.rs:679,1
    - Dst: unwrap
      Src: /src/opendal/core/layers/foyer/src/lib.rs:679,1
    - Dst: read
      Src: /src/opendal/core/layers/foyer/src/lib.rs:685,1
    - Dst: key
      Src: /src/opendal/core/layers/foyer/src/lib.rs:685,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 106
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 688
      start: 633
    functionDepth: 35
    functionLinenumber: 633
    functionLinenumberEnd: 688
    functionName: tests::test
    functionSourceFile: /src/opendal/core/layers/foyer/src/lib.rs
    functionUses: 0
    functionsReached:
    - Memory::default
    - FoyerLayer::new
    - HybridCache::clone
    - Result::unwrap
    - HybridCacheBuilder::new
    - value
    - write
    - delete
    - unwrap
    - Self::memory
    - T::layer
    - with_engine_config
    - read
    - storage
    - FsDeviceBuilder::new
    - with_recover_mode
    - with_shards
    - Self::with_block_size
    - Result::path
    - key
    - Operator::new
    - tempfile::tempdir
    - Self::with_capacity
    - build
    - BlockEngineConfig::new
    - HybridCache::clear
    linkageType: ''
    returnType: void
    signature: async fn test()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: tempfile::tempdir
      Src: /src/opendal/core/layers/foyer/src/lib.rs:692,1
    - Dst: unwrap
      Src: /src/opendal/core/layers/foyer/src/lib.rs:692,1
    - Dst: HybridCacheBuilder::new
      Src: /src/opendal/core/layers/foyer/src/lib.rs:694,1
    - Dst: Self::memory
      Src: /src/opendal/core/layers/foyer/src/lib.rs:694,1
    - Dst: with_shards
      Src: /src/opendal/core/layers/foyer/src/lib.rs:694,1
    - Dst: storage
      Src: /src/opendal/core/layers/foyer/src/lib.rs:694,1
    - Dst: with_engine_config
      Src: /src/opendal/core/layers/foyer/src/lib.rs:694,1
    - Dst: BlockEngineConfig::new
      Src: /src/opendal/core/layers/foyer/src/lib.rs:699,1
    - Dst: FsDeviceBuilder::new
      Src: /src/opendal/core/layers/foyer/src/lib.rs:700,1
    - Dst: Result::path
      Src: /src/opendal/core/layers/foyer/src/lib.rs:700,1
    - Dst: Self::with_capacity
      Src: /src/opendal/core/layers/foyer/src/lib.rs:700,1
    - Dst: build
      Src: /src/opendal/core/layers/foyer/src/lib.rs:700,1
    - Dst: unwrap
      Src: /src/opendal/core/layers/foyer/src/lib.rs:700,1
    - Dst: Self::with_block_size
      Src: /src/opendal/core/layers/foyer/src/lib.rs:699,1
    - Dst: with_recover_mode
      Src: /src/opendal/core/layers/foyer/src/lib.rs:694,1
    - Dst: build
      Src: /src/opendal/core/layers/foyer/src/lib.rs:694,1
    - Dst: unwrap
      Src: /src/opendal/core/layers/foyer/src/lib.rs:694,1
    - Dst: Operator::new
      Src: /src/opendal/core/layers/foyer/src/lib.rs:713,1
    - Dst: Memory::default
      Src: /src/opendal/core/layers/foyer/src/lib.rs:713,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/layers/foyer/src/lib.rs:713,1
    - Dst: T::layer
      Src: /src/opendal/core/layers/foyer/src/lib.rs:713,1
    - Dst: FoyerLayer::new
      Src: /src/opendal/core/layers/foyer/src/lib.rs:715,1
    - Dst: HybridCache::clone
      Src: /src/opendal/core/layers/foyer/src/lib.rs:715,1
    - Dst: Self::with_size_limit
      Src: /src/opendal/core/layers/foyer/src/lib.rs:715,1
    - Dst: write
      Src: /src/opendal/core/layers/foyer/src/lib.rs:722,1
    - Dst: clone
      Src: /src/opendal/core/layers/foyer/src/lib.rs:722,1
    - Dst: unwrap
      Src: /src/opendal/core/layers/foyer/src/lib.rs:722,1
    - Dst: write
      Src: /src/opendal/core/layers/foyer/src/lib.rs:723,1
    - Dst: clone
      Src: /src/opendal/core/layers/foyer/src/lib.rs:723,1
    - Dst: unwrap
      Src: /src/opendal/core/layers/foyer/src/lib.rs:723,1
    - Dst: write
      Src: /src/opendal/core/layers/foyer/src/lib.rs:724,1
    - Dst: clone
      Src: /src/opendal/core/layers/foyer/src/lib.rs:724,1
    - Dst: unwrap
      Src: /src/opendal/core/layers/foyer/src/lib.rs:724,1
    - Dst: read
      Src: /src/opendal/core/layers/foyer/src/lib.rs:727,1
    - Dst: unwrap
      Src: /src/opendal/core/layers/foyer/src/lib.rs:727,1
    - Dst: read
      Src: /src/opendal/core/layers/foyer/src/lib.rs:730,1
    - Dst: unwrap
      Src: /src/opendal/core/layers/foyer/src/lib.rs:730,1
    - Dst: read
      Src: /src/opendal/core/layers/foyer/src/lib.rs:733,1
    - Dst: unwrap
      Src: /src/opendal/core/layers/foyer/src/lib.rs:733,1
    - Dst: HybridCache::clear
      Src: /src/opendal/core/layers/foyer/src/lib.rs:737,1
    - Dst: unwrap
      Src: /src/opendal/core/layers/foyer/src/lib.rs:737,1
    - Dst: read
      Src: /src/opendal/core/layers/foyer/src/lib.rs:740,1
    - Dst: unwrap
      Src: /src/opendal/core/layers/foyer/src/lib.rs:740,1
    - Dst: read
      Src: /src/opendal/core/layers/foyer/src/lib.rs:743,1
    - Dst: unwrap
      Src: /src/opendal/core/layers/foyer/src/lib.rs:743,1
    - Dst: read
      Src: /src/opendal/core/layers/foyer/src/lib.rs:746,1
    - Dst: unwrap
      Src: /src/opendal/core/layers/foyer/src/lib.rs:746,1
    - Dst: read_with
      Src: /src/opendal/core/layers/foyer/src/lib.rs:751,1
    - Dst: FutureRead::range
      Src: /src/opendal/core/layers/foyer/src/lib.rs:751,1
    - Dst: unwrap
      Src: /src/opendal/core/layers/foyer/src/lib.rs:751,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 124
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 754
      start: 691
    functionDepth: 35
    functionLinenumber: 691
    functionLinenumberEnd: 754
    functionName: tests::test_size_limit
    functionSourceFile: /src/opendal/core/layers/foyer/src/lib.rs
    functionUses: 0
    functionsReached:
    - Self::with_size_limit
    - Memory::default
    - FoyerLayer::new
    - HybridCache::clone
    - clone
    - read_with
    - Result::unwrap
    - HybridCacheBuilder::new
    - write
    - FutureRead::range
    - unwrap
    - Self::memory
    - T::layer
    - with_engine_config
    - read
    - storage
    - FsDeviceBuilder::new
    - with_recover_mode
    - with_shards
    - Self::with_block_size
    - Result::path
    - Operator::new
    - tempfile::tempdir
    - Self::with_capacity
    - build
    - BlockEngineConfig::new
    - HybridCache::clear
    linkageType: ''
    returnType: void
    signature: async fn test_size_limit()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Error::new
      Src: /src/opendal/core/layers/foyer/src/lib.rs:758,1
    - Dst: FoyerError::new
      Src: /src/opendal/core/layers/foyer/src/lib.rs:759,1
    - Dst: Self::with_source
      Src: /src/opendal/core/layers/foyer/src/lib.rs:759,1
    - Dst: extract_err
      Src: /src/opendal/core/layers/foyer/src/lib.rs:760,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 762
      start: 757
    functionDepth: 36
    functionLinenumber: 757
    functionLinenumberEnd: 762
    functionName: tests::test_error
    functionSourceFile: /src/opendal/core/layers/foyer/src/lib.rs
    functionUses: 0
    functionsReached:
    - extract_err
    - Self::with_source
    - FoyerError::new
    - Error::new
    linkageType: ''
    returnType: void
    signature: fn test_error()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: '&str::to_string'
      Src: /src/opendal/core/layers/foyer/src/lib.rs:767,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/layers/foyer/src/lib.rs:772,1
    - Dst: Some
      Src: /src/opendal/core/layers/foyer/src/lib.rs:773,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/layers/foyer/src/lib.rs:773,1
    - Dst: Vec::new
      Src: /src/opendal/core/layers/foyer/src/lib.rs:776,1
    - Dst: encode
      Src: /src/opendal/core/layers/foyer/src/lib.rs:777,1
    - Dst: unwrap
      Src: /src/opendal/core/layers/foyer/src/lib.rs:777,1
    - Dst: Vec::new
      Src: /src/opendal/core/layers/foyer/src/lib.rs:779,1
    - Dst: encode
      Src: /src/opendal/core/layers/foyer/src/lib.rs:780,1
    - Dst: unwrap
      Src: /src/opendal/core/layers/foyer/src/lib.rs:780,1
    - Dst: FoyerKey::decode
      Src: /src/opendal/core/layers/foyer/src/lib.rs:787,1
    - Dst: Cursor::new
      Src: /src/opendal/core/layers/foyer/src/lib.rs:787,1
    - Dst: FoyerResult::unwrap
      Src: /src/opendal/core/layers/foyer/src/lib.rs:787,1
    - Dst: FoyerKey::decode
      Src: /src/opendal/core/layers/foyer/src/lib.rs:789,1
    - Dst: Cursor::new
      Src: /src/opendal/core/layers/foyer/src/lib.rs:789,1
    - Dst: FoyerResult::unwrap
      Src: /src/opendal/core/layers/foyer/src/lib.rs:789,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 38
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 791
      start: 765
    functionDepth: 31
    functionLinenumber: 765
    functionLinenumberEnd: 791
    functionName: tests::test_foyer_key_version_none_vs_empty
    functionSourceFile: /src/opendal/core/layers/foyer/src/lib.rs
    functionUses: 0
    functionsReached:
    - encode
    - unwrap
    - FoyerKey::decode
    - Some
    - '&str::to_string'
    - FoyerResult::unwrap
    - Vec::new
    - Cursor::new
    linkageType: ''
    returnType: void
    signature: fn test_foyer_key_version_none_vs_empty()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Vec::new
      Src: /src/opendal/core/layers/foyer/src/lib.rs:829,1
    - Dst: encode
      Src: /src/opendal/core/layers/foyer/src/lib.rs:830,1
    - Dst: expect
      Src: /src/opendal/core/layers/foyer/src/lib.rs:830,1
    - Dst: FoyerKey::decode
      Src: /src/opendal/core/layers/foyer/src/lib.rs:835,1
    - Dst: Cursor::new
      Src: /src/opendal/core/layers/foyer/src/lib.rs:835,1
    - Dst: FoyerResult::expect
      Src: /src/opendal/core/layers/foyer/src/lib.rs:835,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 16
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 842
      start: 794
    functionDepth: 31
    functionLinenumber: 794
    functionLinenumberEnd: 842
    functionName: tests::test_foyer_key_serde
    functionSourceFile: /src/opendal/core/layers/foyer/src/lib.rs
    functionUses: 0
    functionsReached:
    - expect
    - encode
    - FoyerKey::decode
    - FoyerResult::expect
    - Vec::new
    - Cursor::new
    linkageType: ''
    returnType: void
    signature: fn test_foyer_key_serde()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self::default
      Src: /src/opendal/core/layers/async-backtrace/src/lib.rs:56,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 57
      start: 55
    functionDepth: 3
    functionLinenumber: 55
    functionLinenumberEnd: 57
    functionName: AsyncBacktraceLayer::new
    functionSourceFile: /src/opendal/core/layers/async-backtrace/src/lib.rs
    functionUses: 0
    functionsReached:
    - Self::default
    linkageType: ''
    returnType: Self
    signature: pub fn new() -> Self
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Arc::new
      Src: /src/opendal/core/layers/async-backtrace/src/lib.rs:62,1
    - Dst: AsyncBacktraceLayer::layer
      Src: /src/opendal/core/layers/async-backtrace/src/lib.rs:62,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - inner
    argTypes:
    - Servicer
    constantsTouched: []
    func_position:
      end: 63
      start: 61
    functionDepth: 2
    functionLinenumber: 61
    functionLinenumberEnd: 63
    functionName: AsyncBacktraceLayer::apply_service
    functionSourceFile: /src/opendal/core/layers/async-backtrace/src/lib.rs
    functionUses: 0
    functionsReached:
    - Arc::new
    - AsyncBacktraceLayer::layer
    linkageType: ''
    returnType: Servicer
    signature: 'fn apply_service(&self, inner: Servicer) -> Servicer'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - inner
    argTypes:
    - Servicer
    constantsTouched: []
    func_position:
      end: 69
      start: 67
    functionDepth: 0
    functionLinenumber: 67
    functionLinenumberEnd: 69
    functionName: AsyncBacktraceLayer::layer
    functionSourceFile: /src/opendal/core/layers/async-backtrace/src/lib.rs
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: AsyncBacktraceAccessor
    signature: 'fn layer(&self, inner: Servicer) -> AsyncBacktraceAccessor'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: info
      Src: /src/opendal/core/layers/async-backtrace/src/lib.rs:86,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 87
      start: 85
    functionDepth: 2
    functionLinenumber: 85
    functionLinenumberEnd: 87
    functionName: AsyncBacktraceAccessor::info
    functionSourceFile: /src/opendal/core/layers/async-backtrace/src/lib.rs
    functionUses: 0
    functionsReached:
    - info
    linkageType: ''
    returnType: ServiceInfo
    signature: fn info(&self) -> ServiceInfo
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: capability
      Src: /src/opendal/core/layers/async-backtrace/src/lib.rs:90,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 91
      start: 89
    functionDepth: 2
    functionLinenumber: 89
    functionLinenumberEnd: 91
    functionName: AsyncBacktraceAccessor::capability
    functionSourceFile: /src/opendal/core/layers/async-backtrace/src/lib.rs
    functionUses: 0
    functionsReached:
    - capability
    linkageType: ''
    returnType: Capability
    signature: fn capability(&self) -> Capability
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: create_dir
      Src: /src/opendal/core/layers/async-backtrace/src/lib.rs:100,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpCreateDir
    constantsTouched: []
    func_position:
      end: 101
      start: 94
    functionDepth: 35
    functionLinenumber: 94
    functionLinenumberEnd: 101
    functionName: AsyncBacktraceAccessor::create_dir
    functionSourceFile: /src/opendal/core/layers/async-backtrace/src/lib.rs
    functionUses: 0
    functionsReached:
    - create_dir
    linkageType: ''
    returnType: Result
    signature: 'async fn create_dir(&self,ctx: &OperationContext,path: &str,args:
      OpCreateDir,) -> Result<RpCreateDir>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: read
      Src: /src/opendal/core/layers/async-backtrace/src/lib.rs:104,1
    - Dst: map
      Src: /src/opendal/core/layers/async-backtrace/src/lib.rs:104,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpRead
    constantsTouched: []
    func_position:
      end: 107
      start: 103
    functionDepth: 31
    functionLinenumber: 103
    functionLinenumberEnd: 107
    functionName: AsyncBacktraceAccessor::read
    functionSourceFile: /src/opendal/core/layers/async-backtrace/src/lib.rs
    functionUses: 0
    functionsReached:
    - read
    - map
    linkageType: ''
    returnType: Result
    signature: 'fn read(&self, ctx: &OperationContext, path: &str, args: OpRead) ->
      Result<Self::Reader>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: write
      Src: /src/opendal/core/layers/async-backtrace/src/lib.rs:110,1
    - Dst: map
      Src: /src/opendal/core/layers/async-backtrace/src/lib.rs:110,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpWrite
    constantsTouched: []
    func_position:
      end: 113
      start: 109
    functionDepth: 36
    functionLinenumber: 109
    functionLinenumberEnd: 113
    functionName: AsyncBacktraceAccessor::write
    functionSourceFile: /src/opendal/core/layers/async-backtrace/src/lib.rs
    functionUses: 0
    functionsReached:
    - map
    - write
    linkageType: ''
    returnType: Result
    signature: 'fn write(&self, ctx: &OperationContext, path: &str, args: OpWrite)
      -> Result<Self::Writer>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: copy
      Src: /src/opendal/core/layers/async-backtrace/src/lib.rs:123,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 5
    argNames:
    - ctx
    - from
    - to
    - args
    - opts
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    - OpCopy
    - OpCopier
    constantsTouched: []
    func_position:
      end: 124
      start: 115
    functionDepth: 34
    functionLinenumber: 115
    functionLinenumberEnd: 124
    functionName: AsyncBacktraceAccessor::copy
    functionSourceFile: /src/opendal/core/layers/async-backtrace/src/lib.rs
    functionUses: 0
    functionsReached:
    - copy
    linkageType: ''
    returnType: Result
    signature: 'fn copy(&self,ctx: &OperationContext,from: &str,to: &str,args: OpCopy,opts:
      OpCopier,) -> Result<Self::Copier>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: rename
      Src: /src/opendal/core/layers/async-backtrace/src/lib.rs:134,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 4
    argNames:
    - ctx
    - from
    - to
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    - OpRename
    constantsTouched: []
    func_position:
      end: 135
      start: 127
    functionDepth: 2
    functionLinenumber: 127
    functionLinenumberEnd: 135
    functionName: AsyncBacktraceAccessor::rename
    functionSourceFile: /src/opendal/core/layers/async-backtrace/src/lib.rs
    functionUses: 0
    functionsReached:
    - rename
    linkageType: ''
    returnType: Result
    signature: 'async fn rename(&self,ctx: &OperationContext,from: &str,to: &str,args:
      OpRename,) -> Result<RpRename>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: stat
      Src: /src/opendal/core/layers/async-backtrace/src/lib.rs:139,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpStat
    constantsTouched: []
    func_position:
      end: 140
      start: 138
    functionDepth: 31
    functionLinenumber: 138
    functionLinenumberEnd: 140
    functionName: AsyncBacktraceAccessor::stat
    functionSourceFile: /src/opendal/core/layers/async-backtrace/src/lib.rs
    functionUses: 0
    functionsReached:
    - stat
    linkageType: ''
    returnType: Result
    signature: 'async fn stat(&self, ctx: &OperationContext, path: &str, args: OpStat)
      -> Result<RpStat>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: delete
      Src: /src/opendal/core/layers/async-backtrace/src/lib.rs:143,1
    - Dst: map
      Src: /src/opendal/core/layers/async-backtrace/src/lib.rs:143,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - '&OperationContext'
    constantsTouched: []
    func_position:
      end: 144
      start: 142
    functionDepth: 32
    functionLinenumber: 142
    functionLinenumberEnd: 144
    functionName: AsyncBacktraceAccessor::delete
    functionSourceFile: /src/opendal/core/layers/async-backtrace/src/lib.rs
    functionUses: 0
    functionsReached:
    - map
    - delete
    linkageType: ''
    returnType: Result
    signature: 'fn delete(&self, ctx: &OperationContext) -> Result<Self::Deleter>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: list
      Src: /src/opendal/core/layers/async-backtrace/src/lib.rs:147,1
    - Dst: map
      Src: /src/opendal/core/layers/async-backtrace/src/lib.rs:147,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpList
    constantsTouched: []
    func_position:
      end: 150
      start: 146
    functionDepth: 2
    functionLinenumber: 146
    functionLinenumberEnd: 150
    functionName: AsyncBacktraceAccessor::list
    functionSourceFile: /src/opendal/core/layers/async-backtrace/src/lib.rs
    functionUses: 0
    functionsReached:
    - list
    - map
    linkageType: ''
    returnType: Result
    signature: 'fn list(&self, ctx: &OperationContext, path: &str, args: OpList) ->
      Result<Self::Lister>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: presign
      Src: /src/opendal/core/layers/async-backtrace/src/lib.rs:159,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpPresign
    constantsTouched: []
    func_position:
      end: 160
      start: 153
    functionDepth: 2
    functionLinenumber: 153
    functionLinenumberEnd: 160
    functionName: AsyncBacktraceAccessor::presign
    functionSourceFile: /src/opendal/core/layers/async-backtrace/src/lib.rs
    functionUses: 0
    functionsReached:
    - presign
    linkageType: ''
    returnType: Result
    signature: 'async fn presign(&self,ctx: &OperationContext,path: &str,args: OpPresign,)
      -> Result<RpPresign>'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - inner
    argTypes:
    - R
    constantsTouched: []
    func_position:
      end: 171
      start: 169
    functionDepth: 0
    functionLinenumber: 169
    functionLinenumberEnd: 171
    functionName: AsyncBacktraceWrapper::new
    functionSourceFile: /src/opendal/core/layers/async-backtrace/src/lib.rs
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: 'fn new(inner: R) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: read
      Src: /src/opendal/core/layers/async-backtrace/src/lib.rs:193,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - range
    argTypes:
    - BytesRange
    constantsTouched: []
    func_position:
      end: 194
      start: 192
    functionDepth: 31
    functionLinenumber: 192
    functionLinenumberEnd: 194
    functionName: AsyncBacktraceWrapper::read
    functionSourceFile: /src/opendal/core/layers/async-backtrace/src/lib.rs
    functionUses: 0
    functionsReached:
    - read
    linkageType: ''
    returnType: Result
    signature: 'async fn read(&self, range: BytesRange) -> Result<(RpRead, Buffer)>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: open
      Src: /src/opendal/core/layers/async-backtrace/src/lib.rs:184,1
    - Dst: Ok
      Src: /src/opendal/core/layers/async-backtrace/src/lib.rs:185,1
    - Dst: Box::new
      Src: /src/opendal/core/layers/async-backtrace/src/lib.rs:187,1
    - Dst: AsyncBacktraceWrapper::new
      Src: /src/opendal/core/layers/async-backtrace/src/lib.rs:187,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - range
    argTypes:
    - BytesRange
    constantsTouched: []
    func_position:
      end: 189
      start: 183
    functionDepth: 3
    functionLinenumber: 183
    functionLinenumberEnd: 189
    functionName: AsyncBacktraceWrapper::open
    functionSourceFile: /src/opendal/core/layers/async-backtrace/src/lib.rs
    functionUses: 0
    functionsReached:
    - Box::new
    - AsyncBacktraceWrapper::new
    - Ok
    - open
    linkageType: ''
    returnType: Result
    signature: 'async fn open(&self, range: BytesRange) -> Result<(RpRead, Box<dyn
      oio::ReadStreamDyn>)>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: write
      Src: /src/opendal/core/layers/async-backtrace/src/lib.rs:200,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - bs
    argTypes:
    - Buffer
    constantsTouched: []
    func_position:
      end: 201
      start: 199
    functionDepth: 36
    functionLinenumber: 199
    functionLinenumberEnd: 201
    functionName: AsyncBacktraceWrapper::write
    functionSourceFile: /src/opendal/core/layers/async-backtrace/src/lib.rs
    functionUses: 0
    functionsReached:
    - write
    linkageType: ''
    returnType: Result
    signature: 'async fn write(&mut self, bs: Buffer) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: close
      Src: /src/opendal/core/layers/async-backtrace/src/lib.rs:229,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 230
      start: 228
    functionDepth: 2
    functionLinenumber: 228
    functionLinenumberEnd: 230
    functionName: AsyncBacktraceWrapper::close
    functionSourceFile: /src/opendal/core/layers/async-backtrace/src/lib.rs
    functionUses: 0
    functionsReached:
    - close
    linkageType: ''
    returnType: Result
    signature: async fn close(&mut self) -> Result<()>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: abort
      Src: /src/opendal/core/layers/async-backtrace/src/lib.rs:210,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 211
      start: 209
    functionDepth: 31
    functionLinenumber: 209
    functionLinenumberEnd: 211
    functionName: AsyncBacktraceWrapper::abort
    functionSourceFile: /src/opendal/core/layers/async-backtrace/src/lib.rs
    functionUses: 0
    functionsReached:
    - abort
    linkageType: ''
    returnType: Result
    signature: async fn abort(&mut self) -> Result<()>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: next
      Src: /src/opendal/core/layers/async-backtrace/src/lib.rs:217,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 218
      start: 216
    functionDepth: 2
    functionLinenumber: 216
    functionLinenumberEnd: 218
    functionName: AsyncBacktraceWrapper::next
    functionSourceFile: /src/opendal/core/layers/async-backtrace/src/lib.rs
    functionUses: 0
    functionsReached:
    - next
    linkageType: ''
    returnType: Result
    signature: async fn next(&mut self) -> Result<Option<oio::Entry>>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: delete
      Src: /src/opendal/core/layers/async-backtrace/src/lib.rs:224,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - path
    - args
    argTypes:
    - '&str'
    - OpDelete
    constantsTouched: []
    func_position:
      end: 225
      start: 223
    functionDepth: 32
    functionLinenumber: 223
    functionLinenumberEnd: 225
    functionName: AsyncBacktraceWrapper::delete
    functionSourceFile: /src/opendal/core/layers/async-backtrace/src/lib.rs
    functionUses: 0
    functionsReached:
    - delete
    linkageType: ''
    returnType: Result
    signature: 'async fn delete(&mut self, path: &str, args: OpDelete) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: RouteLayerBuilder::default
      Src: /src/opendal/core/layers/route/src/lib.rs:42,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 43
      start: 41
    functionDepth: 3
    functionLinenumber: 41
    functionLinenumberEnd: 43
    functionName: RouteLayer::builder
    functionSourceFile: /src/opendal/core/layers/route/src/lib.rs
    functionUses: 4
    functionsReached:
    - RouteLayerBuilder::default
    linkageType: ''
    returnType: RouteLayerBuilder
    signature: pub fn builder() -> RouteLayerBuilder
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: into_parts
      Src: /src/opendal/core/layers/route/src/lib.rs:55,1
    - Dst: push
      Src: /src/opendal/core/layers/route/src/lib.rs:56,1
    - Dst: impl AsRef<str>::as_ref
      Src: /src/opendal/core/layers/route/src/lib.rs:57,1
    - Dst: '&[&''static str]::to_string'
      Src: /src/opendal/core/layers/route/src/lib.rs:57,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 2
    argNames:
    - pattern
    - op
    argTypes:
    - impl AsRef<str>
    - Operator
    constantsTouched: []
    func_position:
      end: 61
      start: 54
    functionDepth: 5
    functionLinenumber: 54
    functionLinenumberEnd: 61
    functionName: RouteLayerBuilder::route
    functionSourceFile: /src/opendal/core/layers/route/src/lib.rs
    functionUses: 4
    functionsReached:
    - '&[&''static str]::to_string'
    - into_parts
    - push
    - impl AsRef<str>::as_ref
    linkageType: ''
    returnType: Self
    signature: 'pub fn route(mut self, pattern: impl AsRef<str>, op: Operator) ->
      Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: GlobSetBuilder::new
      Src: /src/opendal/core/layers/route/src/lib.rs:67,1
    - Dst: Vec::with_capacity
      Src: /src/opendal/core/layers/route/src/lib.rs:68,1
    - Dst: len
      Src: /src/opendal/core/layers/route/src/lib.rs:68,1
    - Dst: Glob::new
      Src: /src/opendal/core/layers/route/src/lib.rs:71,1
    - Dst: Self::map_err
      Src: /src/opendal/core/layers/route/src/lib.rs:71,1
    - Dst: Error::new
      Src: /src/opendal/core/layers/route/src/lib.rs:72,1
    - Dst: Self::with_context
      Src: /src/opendal/core/layers/route/src/lib.rs:72,1
    - Dst: clone
      Src: /src/opendal/core/layers/route/src/lib.rs:73,1
    - Dst: Self::with_context
      Src: /src/opendal/core/layers/route/src/lib.rs:72,1
    - Dst: Error::to_string
      Src: /src/opendal/core/layers/route/src/lib.rs:74,1
    - Dst: OtelMetricsLayerBuilder::add
      Src: /src/opendal/core/layers/route/src/lib.rs:76,1
    - Dst: push
      Src: /src/opendal/core/layers/route/src/lib.rs:77,1
    - Dst: OtelMetricsLayerBuilder::build
      Src: /src/opendal/core/layers/route/src/lib.rs:80,1
    - Dst: Result::map_err
      Src: /src/opendal/core/layers/route/src/lib.rs:80,1
    - Dst: Error::new
      Src: /src/opendal/core/layers/route/src/lib.rs:81,1
    - Dst: Self::with_context
      Src: /src/opendal/core/layers/route/src/lib.rs:81,1
    - Dst: Error::to_string
      Src: /src/opendal/core/layers/route/src/lib.rs:82,1
    - Dst: Ok
      Src: /src/opendal/core/layers/route/src/lib.rs:85,1
    - Dst: Arc::new
      Src: /src/opendal/core/layers/route/src/lib.rs:86,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 47
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 88
      start: 66
    functionDepth: 36
    functionLinenumber: 66
    functionLinenumberEnd: 88
    functionName: RouteLayerBuilder::build
    functionSourceFile: /src/opendal/core/layers/route/src/lib.rs
    functionUses: 0
    functionsReached:
    - Result::map_err
    - Glob::new
    - Vec::with_capacity
    - push
    - Ok
    - Arc::new
    - GlobSetBuilder::new
    - Error::to_string
    - clone
    - Error::new
    - OtelMetricsLayerBuilder::add
    - len
    - Self::with_context
    - Self::map_err
    - OtelMetricsLayerBuilder::build
    linkageType: ''
    returnType: Result
    signature: pub fn build(self) -> Result<RouteLayer>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: matches
      Src: /src/opendal/core/layers/route/src/lib.rs:115,1
    - Dst: into_iter
      Src: /src/opendal/core/layers/route/src/lib.rs:115,1
    - Dst: min
      Src: /src/opendal/core/layers/route/src/lib.rs:115,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - path
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 116
      start: 114
    functionDepth: 0
    functionLinenumber: 114
    functionLinenumberEnd: 116
    functionName: RouteRouter::match_index
    functionSourceFile: /src/opendal/core/layers/route/src/lib.rs
    functionUses: 1
    functionsReached:
    - into_iter
    - min
    - matches
    linkageType: ''
    returnType: Option
    signature: 'fn match_index(&self, path: &str) -> Option<usize>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: RouteRouter::match_index
      Src: /src/opendal/core/layers/route/src/lib.rs:119,1
    - Dst: Option::and_then
      Src: /src/opendal/core/layers/route/src/lib.rs:119,1
    - Dst: get
      Src: /src/opendal/core/layers/route/src/lib.rs:120,1
    - Dst: cloned
      Src: /src/opendal/core/layers/route/src/lib.rs:120,1
    - Dst: map
      Src: /src/opendal/core/layers/route/src/lib.rs:119,1
    - Dst: unwrap_or_else
      Src: /src/opendal/core/layers/route/src/lib.rs:119,1
    - Dst: RouteSelected::Default
      Src: /src/opendal/core/layers/route/src/lib.rs:122,1
    - Dst: Self::clone
      Src: /src/opendal/core/layers/route/src/lib.rs:122,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 18
    argCount: 2
    argNames:
    - path
    - default
    argTypes:
    - '&str'
    - '&Servicer'
    constantsTouched: []
    func_position:
      end: 123
      start: 118
    functionDepth: 2
    functionLinenumber: 118
    functionLinenumberEnd: 123
    functionName: RouteRouter::select
    functionSourceFile: /src/opendal/core/layers/route/src/lib.rs
    functionUses: 0
    functionsReached:
    - get
    - RouteSelected::Default
    - Option::and_then
    - map
    - RouteRouter::match_index
    - Self::clone
    - cloned
    - unwrap_or_else
    linkageType: ''
    returnType: RouteSelected
    signature: 'fn select(&self, path: &str, default: &Servicer) -> RouteSelected'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: get
      Src: /src/opendal/core/layers/route/src/lib.rs:126,1
    - Dst: cloned
      Src: /src/opendal/core/layers/route/src/lib.rs:126,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - idx
    argTypes:
    - usize
    constantsTouched: []
    func_position:
      end: 127
      start: 125
    functionDepth: 1
    functionLinenumber: 125
    functionLinenumberEnd: 127
    functionName: RouteRouter::target
    functionSourceFile: /src/opendal/core/layers/route/src/lib.rs
    functionUses: 0
    functionsReached:
    - get
    - cloned
    linkageType: ''
    returnType: Option
    signature: 'fn target(&self, idx: usize) -> Option<RouteTarget>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Arc::new
      Src: /src/opendal/core/layers/route/src/lib.rs:132,1
    - Dst: RouteLayer::layer
      Src: /src/opendal/core/layers/route/src/lib.rs:132,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - inner
    argTypes:
    - Servicer
    constantsTouched: []
    func_position:
      end: 133
      start: 131
    functionDepth: 3
    functionLinenumber: 131
    functionLinenumberEnd: 133
    functionName: RouteLayer::apply_service
    functionSourceFile: /src/opendal/core/layers/route/src/lib.rs
    functionUses: 0
    functionsReached:
    - Arc::new
    - RouteLayer::layer
    linkageType: ''
    returnType: Servicer
    signature: 'fn apply_service(&self, inner: Servicer) -> Servicer'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Arc::new
      Src: /src/opendal/core/layers/route/src/lib.rs:139,1
    - Dst: clone
      Src: /src/opendal/core/layers/route/src/lib.rs:140,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - inner
    argTypes:
    - Servicer
    constantsTouched: []
    func_position:
      end: 142
      start: 137
    functionDepth: 2
    functionLinenumber: 137
    functionLinenumberEnd: 142
    functionName: RouteLayer::layer
    functionSourceFile: /src/opendal/core/layers/route/src/lib.rs
    functionUses: 1
    functionsReached:
    - Arc::new
    - clone
    linkageType: ''
    returnType: RouteAccessor
    signature: 'fn layer(&self, inner: Servicer) -> RouteAccessor'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: fmt
      Src: /src/opendal/core/layers/route/src/lib.rs:153,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - f
    argTypes:
    - '&mut Formatter<''_>'
    constantsTouched: []
    func_position:
      end: 154
      start: 152
    functionDepth: 2
    functionLinenumber: 152
    functionLinenumberEnd: 154
    functionName: RouteAccessor::fmt
    functionSourceFile: /src/opendal/core/layers/route/src/lib.rs
    functionUses: 0
    functionsReached:
    - fmt
    linkageType: ''
    returnType: std::fmt::Result
    signature: 'fn fmt(&self, f: &mut Formatter<''_>) -> std::fmt::Result'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: select
      Src: /src/opendal/core/layers/route/src/lib.rs:159,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - path
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 160
      start: 158
    functionDepth: 3
    functionLinenumber: 158
    functionLinenumberEnd: 160
    functionName: RouteAccessor::select
    functionSourceFile: /src/opendal/core/layers/route/src/lib.rs
    functionUses: 8
    functionsReached:
    - select
    linkageType: ''
    returnType: RouteSelected
    signature: 'fn select(&self, path: &str) -> RouteSelected'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: info
      Src: /src/opendal/core/layers/route/src/lib.rs:171,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 172
      start: 170
    functionDepth: 2
    functionLinenumber: 170
    functionLinenumberEnd: 172
    functionName: RouteAccessor::info
    functionSourceFile: /src/opendal/core/layers/route/src/lib.rs
    functionUses: 0
    functionsReached:
    - info
    linkageType: ''
    returnType: ServiceInfo
    signature: fn info(&self) -> ServiceInfo
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: capability
      Src: /src/opendal/core/layers/route/src/lib.rs:175,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 176
      start: 174
    functionDepth: 2
    functionLinenumber: 174
    functionLinenumberEnd: 176
    functionName: RouteAccessor::capability
    functionSourceFile: /src/opendal/core/layers/route/src/lib.rs
    functionUses: 0
    functionsReached:
    - capability
    linkageType: ''
    returnType: Capability
    signature: fn capability(&self) -> Capability
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: RouteAccessor::select
      Src: /src/opendal/core/layers/route/src/lib.rs:184,1
    - Dst: create_dir
      Src: /src/opendal/core/layers/route/src/lib.rs:185,1
    - Dst: create_dir
      Src: /src/opendal/core/layers/route/src/lib.rs:186,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpCreateDir
    constantsTouched: []
    func_position:
      end: 188
      start: 178
    functionDepth: 35
    functionLinenumber: 178
    functionLinenumberEnd: 188
    functionName: RouteAccessor::create_dir
    functionSourceFile: /src/opendal/core/layers/route/src/lib.rs
    functionUses: 0
    functionsReached:
    - RouteAccessor::select
    - create_dir
    linkageType: ''
    returnType: Result
    signature: 'async fn create_dir(&self,ctx: &OperationContext,path: &str,args:
      OpCreateDir,) -> Result<RpCreateDir>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: RouteAccessor::select
      Src: /src/opendal/core/layers/route/src/lib.rs:191,1
    - Dst: read
      Src: /src/opendal/core/layers/route/src/lib.rs:192,1
    - Dst: read
      Src: /src/opendal/core/layers/route/src/lib.rs:193,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpRead
    constantsTouched: []
    func_position:
      end: 195
      start: 190
    functionDepth: 31
    functionLinenumber: 190
    functionLinenumberEnd: 195
    functionName: RouteAccessor::read
    functionSourceFile: /src/opendal/core/layers/route/src/lib.rs
    functionUses: 0
    functionsReached:
    - read
    - RouteAccessor::select
    linkageType: ''
    returnType: Result
    signature: 'fn read(&self, ctx: &OperationContext, path: &str, args: OpRead) ->
      Result<oio::Reader>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: RouteAccessor::select
      Src: /src/opendal/core/layers/route/src/lib.rs:198,1
    - Dst: write
      Src: /src/opendal/core/layers/route/src/lib.rs:199,1
    - Dst: write
      Src: /src/opendal/core/layers/route/src/lib.rs:200,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpWrite
    constantsTouched: []
    func_position:
      end: 202
      start: 197
    functionDepth: 36
    functionLinenumber: 197
    functionLinenumberEnd: 202
    functionName: RouteAccessor::write
    functionSourceFile: /src/opendal/core/layers/route/src/lib.rs
    functionUses: 0
    functionsReached:
    - RouteAccessor::select
    - write
    linkageType: ''
    returnType: Result
    signature: 'fn write(&self, ctx: &OperationContext, path: &str, args: OpWrite)
      -> Result<oio::Writer>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: RouteAccessor::select
      Src: /src/opendal/core/layers/route/src/lib.rs:212,1
    - Dst: copy
      Src: /src/opendal/core/layers/route/src/lib.rs:213,1
    - Dst: copy
      Src: /src/opendal/core/layers/route/src/lib.rs:214,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 5
    argNames:
    - ctx
    - from
    - to
    - args
    - opts
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    - OpCopy
    - OpCopier
    constantsTouched: []
    func_position:
      end: 216
      start: 204
    functionDepth: 34
    functionLinenumber: 204
    functionLinenumberEnd: 216
    functionName: RouteAccessor::copy
    functionSourceFile: /src/opendal/core/layers/route/src/lib.rs
    functionUses: 0
    functionsReached:
    - RouteAccessor::select
    - copy
    linkageType: ''
    returnType: Result
    signature: 'fn copy(&self,ctx: &OperationContext,from: &str,to: &str,args: OpCopy,opts:
      OpCopier,) -> Result<oio::Copier>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: RouteAccessor::select
      Src: /src/opendal/core/layers/route/src/lib.rs:225,1
    - Dst: rename
      Src: /src/opendal/core/layers/route/src/lib.rs:226,1
    - Dst: rename
      Src: /src/opendal/core/layers/route/src/lib.rs:227,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 4
    argNames:
    - ctx
    - from
    - to
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    - OpRename
    constantsTouched: []
    func_position:
      end: 229
      start: 218
    functionDepth: 4
    functionLinenumber: 218
    functionLinenumberEnd: 229
    functionName: RouteAccessor::rename
    functionSourceFile: /src/opendal/core/layers/route/src/lib.rs
    functionUses: 0
    functionsReached:
    - rename
    - RouteAccessor::select
    linkageType: ''
    returnType: Result
    signature: 'async fn rename(&self,ctx: &OperationContext,from: &str,to: &str,args:
      OpRename,) -> Result<RpRename>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: RouteAccessor::select
      Src: /src/opendal/core/layers/route/src/lib.rs:232,1
    - Dst: stat
      Src: /src/opendal/core/layers/route/src/lib.rs:233,1
    - Dst: stat
      Src: /src/opendal/core/layers/route/src/lib.rs:234,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpStat
    constantsTouched: []
    func_position:
      end: 236
      start: 231
    functionDepth: 31
    functionLinenumber: 231
    functionLinenumberEnd: 236
    functionName: RouteAccessor::stat
    functionSourceFile: /src/opendal/core/layers/route/src/lib.rs
    functionUses: 0
    functionsReached:
    - RouteAccessor::select
    - stat
    linkageType: ''
    returnType: Result
    signature: 'async fn stat(&self, ctx: &OperationContext, path: &str, args: OpStat)
      -> Result<RpStat>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/core/layers/route/src/lib.rs:239,1
    - Dst: Box::new
      Src: /src/opendal/core/layers/route/src/lib.rs:239,1
    - Dst: RouteDeleter::new
      Src: /src/opendal/core/layers/route/src/lib.rs:239,1
    - Dst: clone
      Src: /src/opendal/core/layers/route/src/lib.rs:240,1
    - Dst: clone
      Src: /src/opendal/core/layers/route/src/lib.rs:241,1
    - Dst: Result::clone
      Src: /src/opendal/core/layers/route/src/lib.rs:242,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - '&OperationContext'
    constantsTouched: []
    func_position:
      end: 244
      start: 238
    functionDepth: 4
    functionLinenumber: 238
    functionLinenumberEnd: 244
    functionName: RouteAccessor::delete
    functionSourceFile: /src/opendal/core/layers/route/src/lib.rs
    functionUses: 0
    functionsReached:
    - Result::clone
    - Ok
    - Box::new
    - clone
    - RouteDeleter::new
    linkageType: ''
    returnType: Result
    signature: 'fn delete(&self, ctx: &OperationContext) -> Result<oio::Deleter>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: RouteAccessor::select
      Src: /src/opendal/core/layers/route/src/lib.rs:247,1
    - Dst: list
      Src: /src/opendal/core/layers/route/src/lib.rs:248,1
    - Dst: list
      Src: /src/opendal/core/layers/route/src/lib.rs:249,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpList
    constantsTouched: []
    func_position:
      end: 251
      start: 246
    functionDepth: 4
    functionLinenumber: 246
    functionLinenumberEnd: 251
    functionName: RouteAccessor::list
    functionSourceFile: /src/opendal/core/layers/route/src/lib.rs
    functionUses: 0
    functionsReached:
    - list
    - RouteAccessor::select
    linkageType: ''
    returnType: Result
    signature: 'fn list(&self, ctx: &OperationContext, path: &str, args: OpList) ->
      Result<oio::Lister>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: RouteAccessor::select
      Src: /src/opendal/core/layers/route/src/lib.rs:259,1
    - Dst: presign
      Src: /src/opendal/core/layers/route/src/lib.rs:260,1
    - Dst: presign
      Src: /src/opendal/core/layers/route/src/lib.rs:261,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpPresign
    constantsTouched: []
    func_position:
      end: 263
      start: 253
    functionDepth: 4
    functionLinenumber: 253
    functionLinenumberEnd: 263
    functionName: RouteAccessor::presign
    functionSourceFile: /src/opendal/core/layers/route/src/lib.rs
    functionUses: 0
    functionsReached:
    - RouteAccessor::select
    - presign
    linkageType: ''
    returnType: Result
    signature: 'async fn presign(&self,ctx: &OperationContext,path: &str,args: OpPresign,)
      -> Result<RpPresign>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Vec::with_capacity
      Src: /src/opendal/core/layers/route/src/lib.rs:277,1
    - Dst: len
      Src: /src/opendal/core/layers/route/src/lib.rs:277,1
    - Dst: resize_with
      Src: /src/opendal/core/layers/route/src/lib.rs:278,1
    - Dst: len
      Src: /src/opendal/core/layers/route/src/lib.rs:278,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 3
    argNames:
    - default
    - router
    - ctx
    argTypes:
    - Servicer
    - Arc<RouteRouter>
    - OperationContext
    constantsTouched: []
    func_position:
      end: 286
      start: 276
    functionDepth: 3
    functionLinenumber: 276
    functionLinenumberEnd: 286
    functionName: RouteDeleter::new
    functionSourceFile: /src/opendal/core/layers/route/src/lib.rs
    functionUses: 1
    functionsReached:
    - len
    - resize_with
    - Vec::with_capacity
    linkageType: ''
    returnType: Self
    signature: 'fn new(default: Servicer, router: Arc<RouteRouter>, ctx: OperationContext)
      -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: is_none
      Src: /src/opendal/core/layers/route/src/lib.rs:291,1
    - Dst: delete
      Src: /src/opendal/core/layers/route/src/lib.rs:292,1
    - Dst: Some
      Src: /src/opendal/core/layers/route/src/lib.rs:293,1
    - Dst: Ok
      Src: /src/opendal/core/layers/route/src/lib.rs:295,1
    - Dst: as_mut
      Src: /src/opendal/core/layers/route/src/lib.rs:295,1
    - Dst: expect
      Src: /src/opendal/core/layers/route/src/lib.rs:295,1
    - Dst: len
      Src: /src/opendal/core/layers/route/src/lib.rs:301,1
    - Dst: is_none
      Src: /src/opendal/core/layers/route/src/lib.rs:302,1
    - Dst: delete
      Src: /src/opendal/core/layers/route/src/lib.rs:303,1
    - Dst: Some
      Src: /src/opendal/core/layers/route/src/lib.rs:304,1
    - Dst: Ok
      Src: /src/opendal/core/layers/route/src/lib.rs:306,1
    - Dst: as_mut
      Src: /src/opendal/core/layers/route/src/lib.rs:306,1
    - Dst: expect
      Src: /src/opendal/core/layers/route/src/lib.rs:306,1
    - Dst: is_none
      Src: /src/opendal/core/layers/route/src/lib.rs:311,1
    - Dst: target
      Src: /src/opendal/core/layers/route/src/lib.rs:312,1
    - Dst: delete
      Src: /src/opendal/core/layers/route/src/lib.rs:313,1
    - Dst: Some
      Src: /src/opendal/core/layers/route/src/lib.rs:314,1
    - Dst: Ok
      Src: /src/opendal/core/layers/route/src/lib.rs:315,1
    - Dst: as_mut
      Src: /src/opendal/core/layers/route/src/lib.rs:315,1
    - Dst: expect
      Src: /src/opendal/core/layers/route/src/lib.rs:315,1
    - Dst: delete
      Src: /src/opendal/core/layers/route/src/lib.rs:320,1
    - Dst: Some
      Src: /src/opendal/core/layers/route/src/lib.rs:321,1
    - Dst: Ok
      Src: /src/opendal/core/layers/route/src/lib.rs:323,1
    - Dst: as_mut
      Src: /src/opendal/core/layers/route/src/lib.rs:323,1
    - Dst: expect
      Src: /src/opendal/core/layers/route/src/lib.rs:323,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 97
    argCount: 1
    argNames:
    - key
    argTypes:
    - RouteKey
    constantsTouched: []
    func_position:
      end: 328
      start: 288
    functionDepth: 32
    functionLinenumber: 288
    functionLinenumberEnd: 328
    functionName: RouteDeleter::get_deleter
    functionSourceFile: /src/opendal/core/layers/route/src/lib.rs
    functionUses: 1
    functionsReached:
    - is_none
    - as_mut
    - target
    - expect
    - Ok
    - delete
    - Some
    - len
    linkageType: ''
    returnType: Result
    signature: 'async fn get_deleter(&mut self, key: RouteKey) -> Result<&mut oio::Deleter>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: match_index
      Src: /src/opendal/core/layers/route/src/lib.rs:333,1
    - Dst: RouteKey::Target
      Src: /src/opendal/core/layers/route/src/lib.rs:334,1
    - Dst: RouteDeleter::get_deleter
      Src: /src/opendal/core/layers/route/src/lib.rs:337,1
    - Dst: Result::delete
      Src: /src/opendal/core/layers/route/src/lib.rs:338,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 2
    argNames:
    - path
    - args
    argTypes:
    - '&str'
    - OpDelete
    constantsTouched: []
    func_position:
      end: 339
      start: 332
    functionDepth: 33
    functionLinenumber: 332
    functionLinenumberEnd: 339
    functionName: RouteDeleter::delete
    functionSourceFile: /src/opendal/core/layers/route/src/lib.rs
    functionUses: 0
    functionsReached:
    - RouteKey::Target
    - RouteDeleter::get_deleter
    - match_index
    - Result::delete
    linkageType: ''
    returnType: Result
    signature: 'async fn delete(&mut self, path: &str, args: OpDelete) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: as_mut
      Src: /src/opendal/core/layers/route/src/lib.rs:343,1
    - Dst: Result::close
      Src: /src/opendal/core/layers/route/src/lib.rs:344,1
    - Dst: Some
      Src: /src/opendal/core/layers/route/src/lib.rs:346,1
    - Dst: iter_mut
      Src: /src/opendal/core/layers/route/src/lib.rs:348,1
    - Dst: flatten
      Src: /src/opendal/core/layers/route/src/lib.rs:348,1
    - Dst: Result::close
      Src: /src/opendal/core/layers/route/src/lib.rs:349,1
    - Dst: None::is_none
      Src: /src/opendal/core/layers/route/src/lib.rs:350,1
    - Dst: Some
      Src: /src/opendal/core/layers/route/src/lib.rs:352,1
    - Dst: Err
      Src: /src/opendal/core/layers/route/src/lib.rs:357,1
    - Dst: Ok
      Src: /src/opendal/core/layers/route/src/lib.rs:358,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 33
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 360
      start: 341
    functionDepth: 2
    functionLinenumber: 341
    functionLinenumberEnd: 360
    functionName: RouteDeleter::close
    functionSourceFile: /src/opendal/core/layers/route/src/lib.rs
    functionUses: 0
    functionsReached:
    - as_mut
    - iter_mut
    - Ok
    - Some
    - Result::close
    - flatten
    - Err
    - None::is_none
    linkageType: ''
    returnType: Result
    signature: async fn close(&mut self) -> Result<()>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Operator::new
      Src: /src/opendal/core/layers/route/src/lib.rs:383,1
    - Dst: services::Memory::default
      Src: /src/opendal/core/layers/route/src/lib.rs:383,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 384
      start: 382
    functionDepth: 7
    functionLinenumber: 382
    functionLinenumberEnd: 384
    functionName: tests::build_memory_operator
    functionSourceFile: /src/opendal/core/layers/route/src/lib.rs
    functionUses: 0
    functionsReached:
    - services::Memory::default
    - Operator::new
    linkageType: ''
    returnType: Result
    signature: fn build_memory_operator() -> Result<Operator>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Operator::from_parts
      Src: /src/opendal/core/layers/route/src/lib.rs:387,1
    - Dst: OperationContext::default
      Src: /src/opendal/core/layers/route/src/lib.rs:388,1
    - Dst: Arc::new
      Src: /src/opendal/core/layers/route/src/lib.rs:389,1
    - Dst: ServiceInfo::new
      Src: /src/opendal/core/layers/route/src/lib.rs:390,1
    - Dst: Arc::new
      Src: /src/opendal/core/layers/route/src/lib.rs:391,1
    - Dst: Mutex::new
      Src: /src/opendal/core/layers/route/src/lib.rs:391,1
    - Dst: HashSet::new
      Src: /src/opendal/core/layers/route/src/lib.rs:391,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - name
    argTypes:
    - '&''static str'
    constantsTouched: []
    func_position:
      end: 394
      start: 386
    functionDepth: 33
    functionLinenumber: 386
    functionLinenumberEnd: 394
    functionName: tests::build_mock_operator
    functionSourceFile: /src/opendal/core/layers/route/src/lib.rs
    functionUses: 0
    functionsReached:
    - Operator::from_parts
    - ServiceInfo::new
    - Arc::new
    - HashSet::new
    - OperationContext::default
    - Mutex::new
    linkageType: ''
    returnType: Operator
    signature: 'fn build_mock_operator(name: &''static str) -> Operator'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: fs_root
      Src: /src/opendal/core/layers/route/src/lib.rs:397,1
    - Dst: tokio::fs::create_dir_all
      Src: /src/opendal/core/layers/route/src/lib.rs:398,1
    - Dst: map_err
      Src: /src/opendal/core/layers/route/src/lib.rs:398,1
    - Dst: Operator::new
      Src: /src/opendal/core/layers/route/src/lib.rs:401,1
    - Dst: Fs::default
      Src: /src/opendal/core/layers/route/src/lib.rs:401,1
    - Dst: Self::root
      Src: /src/opendal/core/layers/route/src/lib.rs:401,1
    - Dst: Result::to_string_lossy
      Src: /src/opendal/core/layers/route/src/lib.rs:401,1
    - Dst: Ok
      Src: /src/opendal/core/layers/route/src/lib.rs:402,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 18
    argCount: 1
    argNames:
    - label
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 403
      start: 396
    functionDepth: 32
    functionLinenumber: 396
    functionLinenumberEnd: 403
    functionName: tests::build_fs_operator
    functionSourceFile: /src/opendal/core/layers/route/src/lib.rs
    functionUses: 0
    functionsReached:
    - map_err
    - Operator::new
    - Ok
    - tokio::fs::create_dir_all
    - Result::to_string_lossy
    - Fs::default
    - Self::root
    - fs_root
    linkageType: ''
    returnType: Result
    signature: 'async fn build_fs_operator(label: &str) -> Result<(Operator, PathBuf)>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: SystemTime::now
      Src: /src/opendal/core/layers/route/src/lib.rs:406,1
    - Dst: Self::duration_since
      Src: /src/opendal/core/layers/route/src/lib.rs:406,1
    - Dst: expect
      Src: /src/opendal/core/layers/route/src/lib.rs:406,1
    - Dst: as_nanos
      Src: /src/opendal/core/layers/route/src/lib.rs:406,1
    - Dst: std::env::temp_dir
      Src: /src/opendal/core/layers/route/src/lib.rs:410,1
    - Dst: Result::push
      Src: /src/opendal/core/layers/route/src/lib.rs:411,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 1
    argNames:
    - label
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 416
      start: 405
    functionDepth: 5
    functionLinenumber: 405
    functionLinenumberEnd: 416
    functionName: tests::fs_root
    functionSourceFile: /src/opendal/core/layers/route/src/lib.rs
    functionUses: 0
    functionsReached:
    - Self::duration_since
    - expect
    - SystemTime::now
    - as_nanos
    - Result::push
    - std::env::temp_dir
    linkageType: ''
    returnType: PathBuf
    signature: 'fn fs_root(label: &str) -> PathBuf'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: tokio::fs::remove_dir_all
      Src: /src/opendal/core/layers/route/src/lib.rs:419,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - root
    argTypes:
    - '&Path'
    constantsTouched: []
    func_position:
      end: 420
      start: 418
    functionDepth: 0
    functionLinenumber: 418
    functionLinenumberEnd: 420
    functionName: tests::cleanup_fs_root
    functionSourceFile: /src/opendal/core/layers/route/src/lib.rs
    functionUses: 0
    functionsReached:
    - tokio::fs::remove_dir_all
    linkageType: ''
    returnType: void
    signature: 'async fn cleanup_fs_root(root: &Path)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: stat
      Src: /src/opendal/core/layers/route/src/lib.rs:423,1
    - Dst: unwrap_err
      Src: /src/opendal/core/layers/route/src/lib.rs:423,1
    - Dst: Ok
      Src: /src/opendal/core/layers/route/src/lib.rs:425,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - op
    - path
    argTypes:
    - '&Operator'
    - '&str'
    constantsTouched: []
    func_position:
      end: 426
      start: 422
    functionDepth: 31
    functionLinenumber: 422
    functionLinenumberEnd: 426
    functionName: tests::assert_missing
    functionSourceFile: /src/opendal/core/layers/route/src/lib.rs
    functionUses: 0
    functionsReached:
    - Ok
    - stat
    - unwrap_err
    linkageType: ''
    returnType: Result
    signature: 'async fn assert_missing(op: &Operator, path: &str) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_memory_operator
      Src: /src/opendal/core/layers/route/src/lib.rs:563,1
    - Dst: build_fs_operator
      Src: /src/opendal/core/layers/route/src/lib.rs:564,1
    - Dst: build_memory_operator
      Src: /src/opendal/core/layers/route/src/lib.rs:565,1
    - Dst: clone
      Src: /src/opendal/core/layers/route/src/lib.rs:567,1
    - Dst: layer
      Src: /src/opendal/core/layers/route/src/lib.rs:567,1
    - Dst: RouteLayer::builder
      Src: /src/opendal/core/layers/route/src/lib.rs:568,1
    - Dst: RouteLayerBuilder::route
      Src: /src/opendal/core/layers/route/src/lib.rs:568,1
    - Dst: clone
      Src: /src/opendal/core/layers/route/src/lib.rs:569,1
    - Dst: Self::route
      Src: /src/opendal/core/layers/route/src/lib.rs:568,1
    - Dst: clone
      Src: /src/opendal/core/layers/route/src/lib.rs:570,1
    - Dst: Self::build
      Src: /src/opendal/core/layers/route/src/lib.rs:568,1
    - Dst: write
      Src: /src/opendal/core/layers/route/src/lib.rs:574,1
    - Dst: assert_missing
      Src: /src/opendal/core/layers/route/src/lib.rs:577,1
    - Dst: assert_missing
      Src: /src/opendal/core/layers/route/src/lib.rs:578,1
    - Dst: cleanup_fs_root
      Src: /src/opendal/core/layers/route/src/lib.rs:580,1
    - Dst: Ok
      Src: /src/opendal/core/layers/route/src/lib.rs:581,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 45
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 582
      start: 562
    functionDepth: 33
    functionLinenumber: 562
    functionLinenumberEnd: 582
    functionName: tests::test_first_match_wins
    functionSourceFile: /src/opendal/core/layers/route/src/lib.rs
    functionUses: 0
    functionsReached:
    - Self::build
    - build_memory_operator
    - Ok
    - Self::route
    - cleanup_fs_root
    - build_fs_operator
    - clone
    - write
    - assert_missing
    - RouteLayerBuilder::route
    - layer
    - RouteLayer::builder
    linkageType: ''
    returnType: Result
    signature: async fn test_first_match_wins() -> Result<()>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_memory_operator
      Src: /src/opendal/core/layers/route/src/lib.rs:586,1
    - Dst: build_fs_operator
      Src: /src/opendal/core/layers/route/src/lib.rs:587,1
    - Dst: clone
      Src: /src/opendal/core/layers/route/src/lib.rs:589,1
    - Dst: layer
      Src: /src/opendal/core/layers/route/src/lib.rs:589,1
    - Dst: RouteLayer::builder
      Src: /src/opendal/core/layers/route/src/lib.rs:590,1
    - Dst: RouteLayerBuilder::route
      Src: /src/opendal/core/layers/route/src/lib.rs:590,1
    - Dst: clone
      Src: /src/opendal/core/layers/route/src/lib.rs:591,1
    - Dst: Self::build
      Src: /src/opendal/core/layers/route/src/lib.rs:590,1
    - Dst: write
      Src: /src/opendal/core/layers/route/src/lib.rs:595,1
    - Dst: assert_missing
      Src: /src/opendal/core/layers/route/src/lib.rs:598,1
    - Dst: cleanup_fs_root
      Src: /src/opendal/core/layers/route/src/lib.rs:600,1
    - Dst: Ok
      Src: /src/opendal/core/layers/route/src/lib.rs:601,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 34
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 602
      start: 585
    functionDepth: 33
    functionLinenumber: 585
    functionLinenumberEnd: 602
    functionName: tests::test_fallback_to_default
    functionSourceFile: /src/opendal/core/layers/route/src/lib.rs
    functionUses: 0
    functionsReached:
    - Self::build
    - build_memory_operator
    - Ok
    - cleanup_fs_root
    - build_fs_operator
    - clone
    - write
    - assert_missing
    - RouteLayerBuilder::route
    - layer
    - RouteLayer::builder
    linkageType: ''
    returnType: Result
    signature: async fn test_fallback_to_default() -> Result<()>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_mock_operator
      Src: /src/opendal/core/layers/route/src/lib.rs:606,1
    - Dst: build_mock_operator
      Src: /src/opendal/core/layers/route/src/lib.rs:607,1
    - Dst: Operator::clone
      Src: /src/opendal/core/layers/route/src/lib.rs:609,1
    - Dst: Self::layer
      Src: /src/opendal/core/layers/route/src/lib.rs:609,1
    - Dst: RouteLayer::builder
      Src: /src/opendal/core/layers/route/src/lib.rs:610,1
    - Dst: RouteLayerBuilder::route
      Src: /src/opendal/core/layers/route/src/lib.rs:610,1
    - Dst: Operator::clone
      Src: /src/opendal/core/layers/route/src/lib.rs:611,1
    - Dst: Self::build
      Src: /src/opendal/core/layers/route/src/lib.rs:610,1
    - Dst: ThrottleAccessor::write
      Src: /src/opendal/core/layers/route/src/lib.rs:615,1
    - Dst: ThrottleAccessor::copy
      Src: /src/opendal/core/layers/route/src/lib.rs:616,1
    - Dst: assert_missing
      Src: /src/opendal/core/layers/route/src/lib.rs:620,1
    - Dst: ThrottleAccessor::write
      Src: /src/opendal/core/layers/route/src/lib.rs:622,1
    - Dst: ThrottleAccessor::rename
      Src: /src/opendal/core/layers/route/src/lib.rs:623,1
    - Dst: assert_missing
      Src: /src/opendal/core/layers/route/src/lib.rs:625,1
    - Dst: assert_missing
      Src: /src/opendal/core/layers/route/src/lib.rs:627,1
    - Dst: Ok
      Src: /src/opendal/core/layers/route/src/lib.rs:629,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 54
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 630
      start: 605
    functionDepth: 31
    functionLinenumber: 605
    functionLinenumberEnd: 630
    functionName: tests::test_copy_and_rename_route_by_from
    functionSourceFile: /src/opendal/core/layers/route/src/lib.rs
    functionUses: 0
    functionsReached:
    - Self::build
    - ThrottleAccessor::rename
    - Ok
    - assert_missing
    - Operator::clone
    - ThrottleAccessor::copy
    - build_mock_operator
    - RouteLayerBuilder::route
    - ThrottleAccessor::write
    - RouteLayer::builder
    - Self::layer
    linkageType: ''
    returnType: Result
    signature: async fn test_copy_and_rename_route_by_from() -> Result<()>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_memory_operator
      Src: /src/opendal/core/layers/route/src/lib.rs:634,1
    - Dst: build_fs_operator
      Src: /src/opendal/core/layers/route/src/lib.rs:635,1
    - Dst: clone
      Src: /src/opendal/core/layers/route/src/lib.rs:637,1
    - Dst: layer
      Src: /src/opendal/core/layers/route/src/lib.rs:637,1
    - Dst: RouteLayer::builder
      Src: /src/opendal/core/layers/route/src/lib.rs:638,1
    - Dst: RouteLayerBuilder::route
      Src: /src/opendal/core/layers/route/src/lib.rs:638,1
    - Dst: clone
      Src: /src/opendal/core/layers/route/src/lib.rs:639,1
    - Dst: Self::build
      Src: /src/opendal/core/layers/route/src/lib.rs:638,1
    - Dst: write
      Src: /src/opendal/core/layers/route/src/lib.rs:643,1
    - Dst: write
      Src: /src/opendal/core/layers/route/src/lib.rs:644,1
    - Dst: delete_iter
      Src: /src/opendal/core/layers/route/src/lib.rs:646,1
    - Dst: assert_missing
      Src: /src/opendal/core/layers/route/src/lib.rs:648,1
    - Dst: assert_missing
      Src: /src/opendal/core/layers/route/src/lib.rs:649,1
    - Dst: cleanup_fs_root
      Src: /src/opendal/core/layers/route/src/lib.rs:651,1
    - Dst: Ok
      Src: /src/opendal/core/layers/route/src/lib.rs:652,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 49
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 653
      start: 633
    functionDepth: 33
    functionLinenumber: 633
    functionLinenumberEnd: 653
    functionName: tests::test_delete_iter_routes_per_path
    functionSourceFile: /src/opendal/core/layers/route/src/lib.rs
    functionUses: 0
    functionsReached:
    - Self::build
    - build_memory_operator
    - Ok
    - cleanup_fs_root
    - build_fs_operator
    - clone
    - write
    - assert_missing
    - delete_iter
    - RouteLayerBuilder::route
    - layer
    - RouteLayer::builder
    linkageType: ''
    returnType: Result
    signature: async fn test_delete_iter_routes_per_path() -> Result<()>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Duration::from_secs
      Src: /src/opendal/core/layers/tail-cut/src/lib.rs:71,1
    - Dst: Duration::from_millis
      Src: /src/opendal/core/layers/tail-cut/src/lib.rs:73,1
    - Dst: Duration::from_secs
      Src: /src/opendal/core/layers/tail-cut/src/lib.rs:74,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 76
      start: 67
    functionDepth: 0
    functionLinenumber: 67
    functionLinenumberEnd: 76
    functionName: TailCutLayerBuilder::default
    functionSourceFile: /src/opendal/core/layers/tail-cut/src/lib.rs
    functionUses: 1
    functionsReached:
    - Duration::from_millis
    - Duration::from_secs
    linkageType: ''
    returnType: Self
    signature: fn default() -> Self
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self::default
      Src: /src/opendal/core/layers/tail-cut/src/lib.rs:82,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 83
      start: 81
    functionDepth: 3
    functionLinenumber: 81
    functionLinenumberEnd: 83
    functionName: TailCutLayerBuilder::new
    functionSourceFile: /src/opendal/core/layers/tail-cut/src/lib.rs
    functionUses: 0
    functionsReached:
    - Self::default
    linkageType: ''
    returnType: Self
    signature: pub fn new() -> Self
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - percentile
    argTypes:
    - u8
    constantsTouched: []
    func_position:
      end: 101
      start: 94
    functionDepth: 0
    functionLinenumber: 94
    functionLinenumberEnd: 101
    functionName: TailCutLayerBuilder::percentile
    functionSourceFile: /src/opendal/core/layers/tail-cut/src/lib.rs
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: 'pub fn percentile(mut self, percentile: u8) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - factor
    argTypes:
    - f64
    constantsTouched: []
    func_position:
      end: 120
      start: 113
    functionDepth: 0
    functionLinenumber: 113
    functionLinenumberEnd: 120
    functionName: TailCutLayerBuilder::safety_factor
    functionSourceFile: /src/opendal/core/layers/tail-cut/src/lib.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: 'pub fn safety_factor(mut self, factor: f64) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - window
    argTypes:
    - Duration
    constantsTouched: []
    func_position:
      end: 139
      start: 132
    functionDepth: 0
    functionLinenumber: 132
    functionLinenumberEnd: 139
    functionName: TailCutLayerBuilder::window
    functionSourceFile: /src/opendal/core/layers/tail-cut/src/lib.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: 'pub fn window(mut self, window: Duration) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - min_samples
    argTypes:
    - usize
    constantsTouched: []
    func_position:
      end: 150
      start: 147
    functionDepth: 0
    functionLinenumber: 147
    functionLinenumberEnd: 150
    functionName: TailCutLayerBuilder::min_samples
    functionSourceFile: /src/opendal/core/layers/tail-cut/src/lib.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: 'pub fn min_samples(mut self, min_samples: usize) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - deadline
    argTypes:
    - Duration
    constantsTouched: []
    func_position:
      end: 161
      start: 158
    functionDepth: 0
    functionLinenumber: 158
    functionLinenumberEnd: 161
    functionName: TailCutLayerBuilder::min_deadline
    functionSourceFile: /src/opendal/core/layers/tail-cut/src/lib.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: 'pub fn min_deadline(mut self, deadline: Duration) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - deadline
    argTypes:
    - Duration
    constantsTouched: []
    func_position:
      end: 172
      start: 169
    functionDepth: 0
    functionLinenumber: 169
    functionLinenumberEnd: 172
    functionName: TailCutLayerBuilder::max_deadline
    functionSourceFile: /src/opendal/core/layers/tail-cut/src/lib.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: 'pub fn max_deadline(mut self, deadline: Duration) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Arc::new
      Src: /src/opendal/core/layers/tail-cut/src/lib.rs:206,1
    - Dst: Arc::new
      Src: /src/opendal/core/layers/tail-cut/src/lib.rs:214,1
    - Dst: TailCutStats::new
      Src: /src/opendal/core/layers/tail-cut/src/lib.rs:214,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 216
      start: 204
    functionDepth: 2
    functionLinenumber: 204
    functionLinenumberEnd: 216
    functionName: TailCutLayerBuilder::build
    functionSourceFile: /src/opendal/core/layers/tail-cut/src/lib.rs
    functionUses: 0
    functionsReached:
    - Arc::new
    - TailCutStats::new
    linkageType: ''
    returnType: TailCutLayer
    signature: pub fn build(self) -> TailCutLayer
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::debug_struct
      Src: /src/opendal/core/layers/tail-cut/src/lib.rs:268,1
    - Dst: field
      Src: /src/opendal/core/layers/tail-cut/src/lib.rs:268,1
    - Dst: finish_non_exhaustive
      Src: /src/opendal/core/layers/tail-cut/src/lib.rs:268,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - f
    argTypes:
    - '&mut std::fmt::Formatter<''_>'
    constantsTouched: []
    func_position:
      end: 271
      start: 267
    functionDepth: 5
    functionLinenumber: 267
    functionLinenumberEnd: 271
    functionName: TailCutLayer::fmt
    functionSourceFile: /src/opendal/core/layers/tail-cut/src/lib.rs
    functionUses: 0
    functionsReached:
    - field
    - Result::debug_struct
    - finish_non_exhaustive
    linkageType: ''
    returnType: std::fmt::Result
    signature: 'fn fmt(&self, f: &mut std::fmt::Formatter<''_>) -> std::fmt::Result'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self::builder
      Src: /src/opendal/core/layers/tail-cut/src/lib.rs:276,1
    - Dst: OtelMetricsLayerBuilder::build
      Src: /src/opendal/core/layers/tail-cut/src/lib.rs:276,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 277
      start: 275
    functionDepth: 37
    functionLinenumber: 275
    functionLinenumberEnd: 277
    functionName: TailCutLayer::default
    functionSourceFile: /src/opendal/core/layers/tail-cut/src/lib.rs
    functionUses: 0
    functionsReached:
    - Self::builder
    - OtelMetricsLayerBuilder::build
    linkageType: ''
    returnType: Self
    signature: fn default() -> Self
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: TailCutLayerBuilder::default
      Src: /src/opendal/core/layers/tail-cut/src/lib.rs:283,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 284
      start: 282
    functionDepth: 1
    functionLinenumber: 282
    functionLinenumberEnd: 284
    functionName: TailCutLayer::builder
    functionSourceFile: /src/opendal/core/layers/tail-cut/src/lib.rs
    functionUses: 1
    functionsReached:
    - TailCutLayerBuilder::default
    linkageType: ''
    returnType: TailCutLayerBuilder
    signature: pub fn builder() -> TailCutLayerBuilder
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self::default
      Src: /src/opendal/core/layers/tail-cut/src/lib.rs:290,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 291
      start: 289
    functionDepth: 3
    functionLinenumber: 289
    functionLinenumberEnd: 291
    functionName: TailCutLayer::new
    functionSourceFile: /src/opendal/core/layers/tail-cut/src/lib.rs
    functionUses: 1
    functionsReached:
    - Self::default
    linkageType: ''
    returnType: Self
    signature: pub fn new() -> Self
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Arc::new
      Src: /src/opendal/core/layers/tail-cut/src/lib.rs:296,1
    - Dst: TailCutLayer::layer
      Src: /src/opendal/core/layers/tail-cut/src/lib.rs:296,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - inner
    argTypes:
    - Servicer
    constantsTouched: []
    func_position:
      end: 297
      start: 295
    functionDepth: 3
    functionLinenumber: 295
    functionLinenumberEnd: 297
    functionName: TailCutLayer::apply_service
    functionSourceFile: /src/opendal/core/layers/tail-cut/src/lib.rs
    functionUses: 0
    functionsReached:
    - Arc::new
    - TailCutLayer::layer
    linkageType: ''
    returnType: Servicer
    signature: 'fn apply_service(&self, inner: Servicer) -> Servicer'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: clone
      Src: /src/opendal/core/layers/tail-cut/src/lib.rs:304,1
    - Dst: clone
      Src: /src/opendal/core/layers/tail-cut/src/lib.rs:305,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - inner
    argTypes:
    - Servicer
    constantsTouched: []
    func_position:
      end: 307
      start: 301
    functionDepth: 2
    functionLinenumber: 301
    functionLinenumberEnd: 307
    functionName: TailCutLayer::layer
    functionSourceFile: /src/opendal/core/layers/tail-cut/src/lib.rs
    functionUses: 1
    functionsReached:
    - clone
    linkageType: ''
    returnType: TailCutService
    signature: 'fn layer(&self, inner: Servicer) -> TailCutService'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::debug_struct
      Src: /src/opendal/core/layers/tail-cut/src/lib.rs:320,1
    - Dst: field
      Src: /src/opendal/core/layers/tail-cut/src/lib.rs:320,1
    - Dst: finish_non_exhaustive
      Src: /src/opendal/core/layers/tail-cut/src/lib.rs:320,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - f
    argTypes:
    - '&mut std::fmt::Formatter<''_>'
    constantsTouched: []
    func_position:
      end: 323
      start: 319
    functionDepth: 5
    functionLinenumber: 319
    functionLinenumberEnd: 323
    functionName: TailCutService::fmt
    functionSourceFile: /src/opendal/core/layers/tail-cut/src/lib.rs
    functionUses: 0
    functionsReached:
    - field
    - Result::debug_struct
    - finish_non_exhaustive
    linkageType: ''
    returnType: std::fmt::Result
    signature: 'fn fmt(&self, f: &mut std::fmt::Formatter<''_>) -> std::fmt::Result'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: stats_for
      Src: /src/opendal/core/layers/tail-cut/src/lib.rs:329,1
    - Dst: total_samples
      Src: /src/opendal/core/layers/tail-cut/src/lib.rs:331,1
    - Dst: quantile
      Src: /src/opendal/core/layers/tail-cut/src/lib.rs:336,1
    - Dst: Duration::from_secs_f64
      Src: /src/opendal/core/layers/tail-cut/src/lib.rs:338,1
    - Dst: as_secs_f64
      Src: /src/opendal/core/layers/tail-cut/src/lib.rs:338,1
    - Dst: Some
      Src: /src/opendal/core/layers/tail-cut/src/lib.rs:339,1
    - Dst: Self::clamp
      Src: /src/opendal/core/layers/tail-cut/src/lib.rs:339,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 36
    argCount: 2
    argNames:
    - op
    - size
    argTypes:
    - Operation
    - Option<u64>
    constantsTouched: []
    func_position:
      end: 340
      start: 328
    functionDepth: 5
    functionLinenumber: 328
    functionLinenumberEnd: 340
    functionName: TailCutService::calculate_deadline
    functionSourceFile: /src/opendal/core/layers/tail-cut/src/lib.rs
    functionUses: 1
    functionsReached:
    - as_secs_f64
    - total_samples
    - Some
    - Duration::from_secs_f64
    - stats_for
    - Self::clamp
    - quantile
    linkageType: ''
    returnType: Option
    signature: 'fn calculate_deadline(&self, op: Operation, size: Option<u64>) ->
      Option<Duration>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Instant::now
      Src: /src/opendal/core/layers/tail-cut/src/lib.rs:346,1
    - Dst: TailCutService::calculate_deadline
      Src: /src/opendal/core/layers/tail-cut/src/lib.rs:348,1
    - Dst: tokio::time::timeout
      Src: /src/opendal/core/layers/tail-cut/src/lib.rs:349,1
    - Dst: Err
      Src: /src/opendal/core/layers/tail-cut/src/lib.rs:351,1
    - Dst: Error::new
      Src: /src/opendal/core/layers/tail-cut/src/lib.rs:351,1
    - Dst: Self::with_operation
      Src: /src/opendal/core/layers/tail-cut/src/lib.rs:351,1
    - Dst: Self::with_context
      Src: /src/opendal/core/layers/tail-cut/src/lib.rs:351,1
    - Dst: Self::with_context
      Src: /src/opendal/core/layers/tail-cut/src/lib.rs:351,1
    - Dst: Self::set_temporary
      Src: /src/opendal/core/layers/tail-cut/src/lib.rs:351,1
    - Dst: bool::is_ok
      Src: /src/opendal/core/layers/tail-cut/src/lib.rs:361,1
    - Dst: elapsed
      Src: /src/opendal/core/layers/tail-cut/src/lib.rs:362,1
    - Dst: stats_for
      Src: /src/opendal/core/layers/tail-cut/src/lib.rs:363,1
    - Dst: record
      Src: /src/opendal/core/layers/tail-cut/src/lib.rs:363,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 31
    argCount: 3
    argNames:
    - op
    - size
    - fut
    argTypes:
    - Operation
    - Option<u64>
    - F
    constantsTouched: []
    func_position:
      end: 367
      start: 342
    functionDepth: 36
    functionLinenumber: 342
    functionLinenumberEnd: 367
    functionName: TailCutService::with_deadline
    functionSourceFile: /src/opendal/core/layers/tail-cut/src/lib.rs
    functionUses: 4
    functionsReached:
    - TailCutService::calculate_deadline
    - Instant::now
    - Error::new
    - Err
    - Self::set_temporary
    - Self::with_operation
    - elapsed
    - stats_for
    - record
    - tokio::time::timeout
    - Self::with_context
    - bool::is_ok
    linkageType: ''
    returnType: Result
    signature: 'async fn with_deadline<F, T>(&self, op: Operation, size: Option<u64>,
      fut: F) -> Result<T>whereF: Future<Output = Result<T>>,'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: info
      Src: /src/opendal/core/layers/tail-cut/src/lib.rs:378,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 379
      start: 377
    functionDepth: 2
    functionLinenumber: 377
    functionLinenumberEnd: 379
    functionName: TailCutService::info
    functionSourceFile: /src/opendal/core/layers/tail-cut/src/lib.rs
    functionUses: 0
    functionsReached:
    - info
    linkageType: ''
    returnType: ServiceInfo
    signature: fn info(&self) -> ServiceInfo
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: capability
      Src: /src/opendal/core/layers/tail-cut/src/lib.rs:382,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 383
      start: 381
    functionDepth: 2
    functionLinenumber: 381
    functionLinenumberEnd: 383
    functionName: TailCutService::capability
    functionSourceFile: /src/opendal/core/layers/tail-cut/src/lib.rs
    functionUses: 0
    functionsReached:
    - capability
    linkageType: ''
    returnType: Capability
    signature: fn capability(&self) -> Capability
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: TailCutService::with_deadline
      Src: /src/opendal/core/layers/tail-cut/src/lib.rs:391,1
    - Dst: create_dir
      Src: /src/opendal/core/layers/tail-cut/src/lib.rs:394,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpCreateDir
    constantsTouched: []
    func_position:
      end: 397
      start: 385
    functionDepth: 37
    functionLinenumber: 385
    functionLinenumberEnd: 397
    functionName: TailCutService::create_dir
    functionSourceFile: /src/opendal/core/layers/tail-cut/src/lib.rs
    functionUses: 0
    functionsReached:
    - create_dir
    - TailCutService::with_deadline
    linkageType: ''
    returnType: Result
    signature: 'async fn create_dir(&self,ctx: &OperationContext,path: &str,args:
      OpCreateDir,) -> Result<RpCreateDir>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: read
      Src: /src/opendal/core/layers/tail-cut/src/lib.rs:400,1
    - Dst: map
      Src: /src/opendal/core/layers/tail-cut/src/lib.rs:400,1
    - Dst: TailCutWrapper::new
      Src: /src/opendal/core/layers/tail-cut/src/lib.rs:402,1
    - Dst: clone
      Src: /src/opendal/core/layers/tail-cut/src/lib.rs:402,1
    - Dst: clone
      Src: /src/opendal/core/layers/tail-cut/src/lib.rs:402,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 13
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpRead
    constantsTouched: []
    func_position:
      end: 403
      start: 399
    functionDepth: 31
    functionLinenumber: 399
    functionLinenumberEnd: 403
    functionName: TailCutService::read
    functionSourceFile: /src/opendal/core/layers/tail-cut/src/lib.rs
    functionUses: 0
    functionsReached:
    - read
    - clone
    - TailCutWrapper::new
    - map
    linkageType: ''
    returnType: Result
    signature: 'fn read(&self, ctx: &OperationContext, path: &str, args: OpRead) ->
      Result<Self::Reader>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: write
      Src: /src/opendal/core/layers/tail-cut/src/lib.rs:406,1
    - Dst: map
      Src: /src/opendal/core/layers/tail-cut/src/lib.rs:406,1
    - Dst: TailCutWrapper::new
      Src: /src/opendal/core/layers/tail-cut/src/lib.rs:408,1
    - Dst: clone
      Src: /src/opendal/core/layers/tail-cut/src/lib.rs:408,1
    - Dst: clone
      Src: /src/opendal/core/layers/tail-cut/src/lib.rs:408,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 13
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpWrite
    constantsTouched: []
    func_position:
      end: 409
      start: 405
    functionDepth: 36
    functionLinenumber: 405
    functionLinenumberEnd: 409
    functionName: TailCutService::write
    functionSourceFile: /src/opendal/core/layers/tail-cut/src/lib.rs
    functionUses: 0
    functionsReached:
    - map
    - clone
    - write
    - TailCutWrapper::new
    linkageType: ''
    returnType: Result
    signature: 'fn write(&self, ctx: &OperationContext, path: &str, args: OpWrite)
      -> Result<Self::Writer>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: copy
      Src: /src/opendal/core/layers/tail-cut/src/lib.rs:419,1
    - Dst: map
      Src: /src/opendal/core/layers/tail-cut/src/lib.rs:419,1
    - Dst: TailCutWrapper::new
      Src: /src/opendal/core/layers/tail-cut/src/lib.rs:421,1
    - Dst: clone
      Src: /src/opendal/core/layers/tail-cut/src/lib.rs:421,1
    - Dst: clone
      Src: /src/opendal/core/layers/tail-cut/src/lib.rs:421,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 13
    argCount: 5
    argNames:
    - ctx
    - from
    - to
    - args
    - opts
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    - OpCopy
    - OpCopier
    constantsTouched: []
    func_position:
      end: 422
      start: 411
    functionDepth: 34
    functionLinenumber: 411
    functionLinenumberEnd: 422
    functionName: TailCutService::copy
    functionSourceFile: /src/opendal/core/layers/tail-cut/src/lib.rs
    functionUses: 0
    functionsReached:
    - map
    - clone
    - TailCutWrapper::new
    - copy
    linkageType: ''
    returnType: Result
    signature: 'fn copy(&self,ctx: &OperationContext,from: &str,to: &str,args: OpCopy,opts:
      OpCopier,) -> Result<Self::Copier>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: TailCutService::with_deadline
      Src: /src/opendal/core/layers/tail-cut/src/lib.rs:431,1
    - Dst: rename
      Src: /src/opendal/core/layers/tail-cut/src/lib.rs:434,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 4
    argNames:
    - ctx
    - from
    - to
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    - OpRename
    constantsTouched: []
    func_position:
      end: 437
      start: 424
    functionDepth: 37
    functionLinenumber: 424
    functionLinenumberEnd: 437
    functionName: TailCutService::rename
    functionSourceFile: /src/opendal/core/layers/tail-cut/src/lib.rs
    functionUses: 0
    functionsReached:
    - rename
    - TailCutService::with_deadline
    linkageType: ''
    returnType: Result
    signature: 'async fn rename(&self,ctx: &OperationContext,from: &str,to: &str,args:
      OpRename,) -> Result<RpRename>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: TailCutService::with_deadline
      Src: /src/opendal/core/layers/tail-cut/src/lib.rs:440,1
    - Dst: stat
      Src: /src/opendal/core/layers/tail-cut/src/lib.rs:440,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpStat
    constantsTouched: []
    func_position:
      end: 442
      start: 439
    functionDepth: 37
    functionLinenumber: 439
    functionLinenumberEnd: 442
    functionName: TailCutService::stat
    functionSourceFile: /src/opendal/core/layers/tail-cut/src/lib.rs
    functionUses: 0
    functionsReached:
    - TailCutService::with_deadline
    - stat
    linkageType: ''
    returnType: Result
    signature: 'async fn stat(&self, ctx: &OperationContext, path: &str, args: OpStat)
      -> Result<RpStat>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: delete
      Src: /src/opendal/core/layers/tail-cut/src/lib.rs:445,1
    - Dst: map
      Src: /src/opendal/core/layers/tail-cut/src/lib.rs:445,1
    - Dst: TailCutWrapper::new
      Src: /src/opendal/core/layers/tail-cut/src/lib.rs:447,1
    - Dst: clone
      Src: /src/opendal/core/layers/tail-cut/src/lib.rs:447,1
    - Dst: clone
      Src: /src/opendal/core/layers/tail-cut/src/lib.rs:447,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 13
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - '&OperationContext'
    constantsTouched: []
    func_position:
      end: 448
      start: 444
    functionDepth: 32
    functionLinenumber: 444
    functionLinenumberEnd: 448
    functionName: TailCutService::delete
    functionSourceFile: /src/opendal/core/layers/tail-cut/src/lib.rs
    functionUses: 0
    functionsReached:
    - map
    - clone
    - TailCutWrapper::new
    - delete
    linkageType: ''
    returnType: Result
    signature: 'fn delete(&self, ctx: &OperationContext) -> Result<Self::Deleter>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: list
      Src: /src/opendal/core/layers/tail-cut/src/lib.rs:451,1
    - Dst: map
      Src: /src/opendal/core/layers/tail-cut/src/lib.rs:451,1
    - Dst: TailCutWrapper::new
      Src: /src/opendal/core/layers/tail-cut/src/lib.rs:453,1
    - Dst: clone
      Src: /src/opendal/core/layers/tail-cut/src/lib.rs:453,1
    - Dst: clone
      Src: /src/opendal/core/layers/tail-cut/src/lib.rs:453,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 13
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpList
    constantsTouched: []
    func_position:
      end: 454
      start: 450
    functionDepth: 2
    functionLinenumber: 450
    functionLinenumberEnd: 454
    functionName: TailCutService::list
    functionSourceFile: /src/opendal/core/layers/tail-cut/src/lib.rs
    functionUses: 0
    functionsReached:
    - list
    - clone
    - TailCutWrapper::new
    - map
    linkageType: ''
    returnType: Result
    signature: 'fn list(&self, ctx: &OperationContext, path: &str, args: OpList) ->
      Result<Self::Lister>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: TailCutService::with_deadline
      Src: /src/opendal/core/layers/tail-cut/src/lib.rs:462,1
    - Dst: presign
      Src: /src/opendal/core/layers/tail-cut/src/lib.rs:465,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpPresign
    constantsTouched: []
    func_position:
      end: 468
      start: 456
    functionDepth: 37
    functionLinenumber: 456
    functionLinenumberEnd: 468
    functionName: TailCutService::presign
    functionSourceFile: /src/opendal/core/layers/tail-cut/src/lib.rs
    functionUses: 0
    functionsReached:
    - presign
    - TailCutService::with_deadline
    linkageType: ''
    returnType: Result
    signature: 'async fn presign(&self,ctx: &OperationContext,path: &str,args: OpPresign,)
      -> Result<RpPresign>'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 4
    argNames:
    - inner
    - size
    - config
    - stats
    argTypes:
    - R
    - Option<u64>
    - Arc<TailCutConfig>
    - Arc<TailCutStats>
    constantsTouched: []
    func_position:
      end: 493
      start: 481
    functionDepth: 0
    functionLinenumber: 481
    functionLinenumberEnd: 493
    functionName: TailCutWrapper::new
    functionSourceFile: /src/opendal/core/layers/tail-cut/src/lib.rs
    functionUses: 6
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: 'fn new(inner: R,size: Option<u64>,config: Arc<TailCutConfig>,stats:
      Arc<TailCutStats>,) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: TailCutWrapper::calculate_deadline_for
      Src: /src/opendal/core/layers/tail-cut/src/lib.rs:496,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - op
    argTypes:
    - Operation
    constantsTouched: []
    func_position:
      end: 497
      start: 495
    functionDepth: 6
    functionLinenumber: 495
    functionLinenumberEnd: 497
    functionName: TailCutWrapper::calculate_deadline
    functionSourceFile: /src/opendal/core/layers/tail-cut/src/lib.rs
    functionUses: 4
    functionsReached:
    - TailCutWrapper::calculate_deadline_for
    linkageType: ''
    returnType: Option
    signature: 'fn calculate_deadline(&self, op: Operation) -> Option<Duration>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: stats_for
      Src: /src/opendal/core/layers/tail-cut/src/lib.rs:500,1
    - Dst: total_samples
      Src: /src/opendal/core/layers/tail-cut/src/lib.rs:502,1
    - Dst: quantile
      Src: /src/opendal/core/layers/tail-cut/src/lib.rs:507,1
    - Dst: Duration::from_secs_f64
      Src: /src/opendal/core/layers/tail-cut/src/lib.rs:509,1
    - Dst: as_secs_f64
      Src: /src/opendal/core/layers/tail-cut/src/lib.rs:509,1
    - Dst: Some
      Src: /src/opendal/core/layers/tail-cut/src/lib.rs:510,1
    - Dst: Self::clamp
      Src: /src/opendal/core/layers/tail-cut/src/lib.rs:510,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 36
    argCount: 2
    argNames:
    - op
    - size
    argTypes:
    - Operation
    - Option<u64>
    constantsTouched: []
    func_position:
      end: 511
      start: 499
    functionDepth: 5
    functionLinenumber: 499
    functionLinenumberEnd: 511
    functionName: TailCutWrapper::calculate_deadline_for
    functionSourceFile: /src/opendal/core/layers/tail-cut/src/lib.rs
    functionUses: 3
    functionsReached:
    - as_secs_f64
    - total_samples
    - Some
    - Duration::from_secs_f64
    - stats_for
    - Self::clamp
    - quantile
    linkageType: ''
    returnType: Option
    signature: 'fn calculate_deadline_for(&self, op: Operation, size: Option<u64>)
      -> Option<Duration>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Instant::now
      Src: /src/opendal/core/layers/tail-cut/src/lib.rs:525,1
    - Dst: tokio::time::timeout
      Src: /src/opendal/core/layers/tail-cut/src/lib.rs:528,1
    - Dst: Err
      Src: /src/opendal/core/layers/tail-cut/src/lib.rs:530,1
    - Dst: Error::new
      Src: /src/opendal/core/layers/tail-cut/src/lib.rs:531,1
    - Dst: Self::with_operation
      Src: /src/opendal/core/layers/tail-cut/src/lib.rs:531,1
    - Dst: Self::with_context
      Src: /src/opendal/core/layers/tail-cut/src/lib.rs:531,1
    - Dst: Self::with_context
      Src: /src/opendal/core/layers/tail-cut/src/lib.rs:531,1
    - Dst: Self::set_temporary
      Src: /src/opendal/core/layers/tail-cut/src/lib.rs:531,1
    - Dst: bool::is_ok
      Src: /src/opendal/core/layers/tail-cut/src/lib.rs:542,1
    - Dst: elapsed
      Src: /src/opendal/core/layers/tail-cut/src/lib.rs:543,1
    - Dst: stats_for
      Src: /src/opendal/core/layers/tail-cut/src/lib.rs:544,1
    - Dst: '&Arc::record'
      Src: /src/opendal/core/layers/tail-cut/src/lib.rs:544,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 28
    argCount: 6
    argNames:
    - deadline
    - percentile
    - stats
    - size
    - op
    - fut
    argTypes:
    - Option<Duration>
    - u8
    - '&Arc<TailCutStats>'
    - Option<u64>
    - Operation
    - F
    constantsTouched: []
    func_position:
      end: 548
      start: 514
    functionDepth: 36
    functionLinenumber: 514
    functionLinenumberEnd: 548
    functionName: TailCutWrapper::with_io_deadline
    functionSourceFile: /src/opendal/core/layers/tail-cut/src/lib.rs
    functionUses: 0
    functionsReached:
    - '&Arc::record'
    - Instant::now
    - Error::new
    - Err
    - Self::set_temporary
    - Self::with_operation
    - elapsed
    - stats_for
    - tokio::time::timeout
    - Self::with_context
    - bool::is_ok
    linkageType: ''
    returnType: Result
    signature: 'async fn with_io_deadline<F, T>(deadline: Option<Duration>,percentile:
      u8,stats: &Arc<TailCutStats>,size: Option<u64>,op: Operation,fut: F,) -> Result<T>whereF:
      std::future::Future<Output = Result<T>>,'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: (Vec::size
      Src: /src/opendal/core/layers/tail-cut/src/lib.rs:592,1
    - Dst: TailCutWrapper::calculate_deadline_for
      Src: /src/opendal/core/layers/tail-cut/src/lib.rs:593,1
    - Dst: Self::with_io_deadline
      Src: /src/opendal/core/layers/tail-cut/src/lib.rs:594,1
    - Dst: read
      Src: /src/opendal/core/layers/tail-cut/src/lib.rs:600,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 1
    argNames:
    - range
    argTypes:
    - BytesRange
    constantsTouched: []
    func_position:
      end: 603
      start: 591
    functionDepth: 37
    functionLinenumber: 591
    functionLinenumberEnd: 603
    functionName: TailCutWrapper::read
    functionSourceFile: /src/opendal/core/layers/tail-cut/src/lib.rs
    functionUses: 0
    functionsReached:
    - read
    - TailCutWrapper::calculate_deadline_for
    - Self::with_io_deadline
    - (Vec::size
    linkageType: ''
    returnType: Result
    signature: 'async fn read(&self, range: BytesRange) -> Result<(RpRead, Buffer)>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: (Vec::size
      Src: /src/opendal/core/layers/tail-cut/src/lib.rs:568,1
    - Dst: TailCutWrapper::calculate_deadline_for
      Src: /src/opendal/core/layers/tail-cut/src/lib.rs:569,1
    - Dst: Self::with_io_deadline
      Src: /src/opendal/core/layers/tail-cut/src/lib.rs:570,1
    - Dst: open
      Src: /src/opendal/core/layers/tail-cut/src/lib.rs:576,1
    - Dst: Ok
      Src: /src/opendal/core/layers/tail-cut/src/lib.rs:580,1
    - Dst: Box::new
      Src: /src/opendal/core/layers/tail-cut/src/lib.rs:582,1
    - Dst: TailCutWrapper::new
      Src: /src/opendal/core/layers/tail-cut/src/lib.rs:582,1
    - Dst: clone
      Src: /src/opendal/core/layers/tail-cut/src/lib.rs:585,1
    - Dst: clone
      Src: /src/opendal/core/layers/tail-cut/src/lib.rs:586,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 25
    argCount: 1
    argNames:
    - range
    argTypes:
    - BytesRange
    constantsTouched: []
    func_position:
      end: 589
      start: 567
    functionDepth: 37
    functionLinenumber: 567
    functionLinenumberEnd: 589
    functionName: TailCutWrapper::open
    functionSourceFile: /src/opendal/core/layers/tail-cut/src/lib.rs
    functionUses: 0
    functionsReached:
    - TailCutWrapper::calculate_deadline_for
    - Ok
    - (Vec::size
    - Box::new
    - clone
    - TailCutWrapper::new
    - open
    - Self::with_io_deadline
    linkageType: ''
    returnType: Result
    signature: 'async fn open(&self, range: BytesRange) -> Result<(RpRead, Box<dyn
      oio::ReadStreamDyn>)>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: TailCutWrapper::calculate_deadline
      Src: /src/opendal/core/layers/tail-cut/src/lib.rs:608,1
    - Dst: Self::with_io_deadline
      Src: /src/opendal/core/layers/tail-cut/src/lib.rs:609,1
    - Dst: write
      Src: /src/opendal/core/layers/tail-cut/src/lib.rs:615,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 1
    argNames:
    - bs
    argTypes:
    - Buffer
    constantsTouched: []
    func_position:
      end: 618
      start: 607
    functionDepth: 37
    functionLinenumber: 607
    functionLinenumberEnd: 618
    functionName: TailCutWrapper::write
    functionSourceFile: /src/opendal/core/layers/tail-cut/src/lib.rs
    functionUses: 0
    functionsReached:
    - TailCutWrapper::calculate_deadline
    - write
    - Self::with_io_deadline
    linkageType: ''
    returnType: Result
    signature: 'async fn write(&mut self, bs: Buffer) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: TailCutWrapper::calculate_deadline
      Src: /src/opendal/core/layers/tail-cut/src/lib.rs:696,1
    - Dst: Self::with_io_deadline
      Src: /src/opendal/core/layers/tail-cut/src/lib.rs:697,1
    - Dst: close
      Src: /src/opendal/core/layers/tail-cut/src/lib.rs:703,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 706
      start: 695
    functionDepth: 37
    functionLinenumber: 695
    functionLinenumberEnd: 706
    functionName: TailCutWrapper::close
    functionSourceFile: /src/opendal/core/layers/tail-cut/src/lib.rs
    functionUses: 0
    functionsReached:
    - close
    - TailCutWrapper::calculate_deadline
    - Self::with_io_deadline
    linkageType: ''
    returnType: Result
    signature: async fn close(&mut self) -> Result<Metadata>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: TailCutWrapper::calculate_deadline
      Src: /src/opendal/core/layers/tail-cut/src/lib.rs:709,1
    - Dst: Self::with_io_deadline
      Src: /src/opendal/core/layers/tail-cut/src/lib.rs:710,1
    - Dst: abort
      Src: /src/opendal/core/layers/tail-cut/src/lib.rs:716,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 719
      start: 708
    functionDepth: 37
    functionLinenumber: 708
    functionLinenumberEnd: 719
    functionName: TailCutWrapper::abort
    functionSourceFile: /src/opendal/core/layers/tail-cut/src/lib.rs
    functionUses: 0
    functionsReached:
    - TailCutWrapper::calculate_deadline
    - Self::with_io_deadline
    - abort
    linkageType: ''
    returnType: Result
    signature: async fn abort(&mut self) -> Result<()>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: TailCutWrapper::calculate_deadline
      Src: /src/opendal/core/layers/tail-cut/src/lib.rs:683,1
    - Dst: Self::with_io_deadline
      Src: /src/opendal/core/layers/tail-cut/src/lib.rs:684,1
    - Dst: next
      Src: /src/opendal/core/layers/tail-cut/src/lib.rs:690,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 693
      start: 682
    functionDepth: 37
    functionLinenumber: 682
    functionLinenumberEnd: 693
    functionName: TailCutWrapper::next
    functionSourceFile: /src/opendal/core/layers/tail-cut/src/lib.rs
    functionUses: 0
    functionsReached:
    - next
    - TailCutWrapper::calculate_deadline
    - Self::with_io_deadline
    linkageType: ''
    returnType: Result
    signature: async fn next(&mut self) -> Result<Option<usize>>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: delete
      Src: /src/opendal/core/layers/tail-cut/src/lib.rs:664,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - path
    - args
    argTypes:
    - '&str'
    - OpDelete
    constantsTouched: []
    func_position:
      end: 665
      start: 663
    functionDepth: 32
    functionLinenumber: 663
    functionLinenumberEnd: 665
    functionName: TailCutWrapper::delete
    functionSourceFile: /src/opendal/core/layers/tail-cut/src/lib.rs
    functionUses: 0
    functionsReached:
    - delete
    linkageType: ''
    returnType: Result
    signature: 'async fn delete(&mut self, path: &str, args: OpDelete) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: std::array::from_fn
      Src: /src/opendal/core/layers/tail-cut/src/lib.rs:731,1
    - Dst: Arc::new
      Src: /src/opendal/core/layers/tail-cut/src/lib.rs:731,1
    - Dst: OperationStats::new
      Src: /src/opendal/core/layers/tail-cut/src/lib.rs:731,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 733
      start: 729
    functionDepth: 2
    functionLinenumber: 729
    functionLinenumberEnd: 733
    functionName: TailCutStats::new
    functionSourceFile: /src/opendal/core/layers/tail-cut/src/lib.rs
    functionUses: 1
    functionsReached:
    - OperationStats::new
    - std::array::from_fn
    - Arc::new
    linkageType: ''
    returnType: Self
    signature: fn new() -> Self
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - op
    argTypes:
    - Operation
    constantsTouched: []
    func_position:
      end: 747
      start: 735
    functionDepth: 0
    functionLinenumber: 735
    functionLinenumberEnd: 747
    functionName: TailCutStats::stats_for
    functionSourceFile: /src/opendal/core/layers/tail-cut/src/lib.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: '&Arc'
    signature: 'fn stats_for(&self, op: Operation) -> &Arc<OperationStats>'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 767
      start: 756
    functionDepth: 0
    functionLinenumber: 756
    functionLinenumberEnd: 767
    functionName: OperationStats::new
    functionSourceFile: /src/opendal/core/layers/tail-cut/src/lib.rs
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: fn new() -> Self
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Option::unwrap_or
      Src: /src/opendal/core/layers/tail-cut/src/lib.rs:770,1
    - Dst: iter
      Src: /src/opendal/core/layers/tail-cut/src/lib.rs:772,1
    - Dst: find
      Src: /src/opendal/core/layers/tail-cut/src/lib.rs:772,1
    - Dst: Timestamp::contains
      Src: /src/opendal/core/layers/tail-cut/src/lib.rs:774,1
    - Dst: unwrap_or
      Src: /src/opendal/core/layers/tail-cut/src/lib.rs:772,1
    - Dst: len
      Src: /src/opendal/core/layers/tail-cut/src/lib.rs:775,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 19
    argCount: 1
    argNames:
    - size
    argTypes:
    - Option<u64>
    constantsTouched: []
    func_position:
      end: 776
      start: 769
    functionDepth: 3
    functionLinenumber: 769
    functionLinenumberEnd: 776
    functionName: OperationStats::bucket_for
    functionSourceFile: /src/opendal/core/layers/tail-cut/src/lib.rs
    functionUses: 3
    functionsReached:
    - iter
    - find
    - Timestamp::contains
    - Option::unwrap_or
    - len
    - unwrap_or
    linkageType: ''
    returnType: '&SizeBucket'
    signature: 'fn bucket_for(&self, size: Option<u64>) -> &SizeBucket'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: OperationStats::bucket_for
      Src: /src/opendal/core/layers/tail-cut/src/lib.rs:779,1
    - Dst: record
      Src: /src/opendal/core/layers/tail-cut/src/lib.rs:779,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - size
    - latency
    argTypes:
    - Option<u64>
    - Duration
    constantsTouched: []
    func_position:
      end: 780
      start: 778
    functionDepth: 4
    functionLinenumber: 778
    functionLinenumberEnd: 780
    functionName: OperationStats::record
    functionSourceFile: /src/opendal/core/layers/tail-cut/src/lib.rs
    functionUses: 0
    functionsReached:
    - record
    - OperationStats::bucket_for
    linkageType: ''
    returnType: void
    signature: 'fn record(&self, size: Option<u64>, latency: Duration)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: OperationStats::bucket_for
      Src: /src/opendal/core/layers/tail-cut/src/lib.rs:783,1
    - Dst: quantile
      Src: /src/opendal/core/layers/tail-cut/src/lib.rs:783,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - size
    - q
    - window
    argTypes:
    - Option<u64>
    - f64
    - Duration
    constantsTouched: []
    func_position:
      end: 784
      start: 782
    functionDepth: 4
    functionLinenumber: 782
    functionLinenumberEnd: 784
    functionName: OperationStats::quantile
    functionSourceFile: /src/opendal/core/layers/tail-cut/src/lib.rs
    functionUses: 0
    functionsReached:
    - quantile
    - OperationStats::bucket_for
    linkageType: ''
    returnType: Option
    signature: 'fn quantile(&self, size: Option<u64>, q: f64, window: Duration) ->
      Option<Duration>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: OperationStats::bucket_for
      Src: /src/opendal/core/layers/tail-cut/src/lib.rs:787,1
    - Dst: total_samples
      Src: /src/opendal/core/layers/tail-cut/src/lib.rs:787,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - size
    - window
    argTypes:
    - Option<u64>
    - Duration
    constantsTouched: []
    func_position:
      end: 788
      start: 786
    functionDepth: 4
    functionLinenumber: 786
    functionLinenumberEnd: 788
    functionName: OperationStats::total_samples
    functionSourceFile: /src/opendal/core/layers/tail-cut/src/lib.rs
    functionUses: 0
    functionsReached:
    - total_samples
    - OperationStats::bucket_for
    linkageType: ''
    returnType: usize
    signature: 'fn total_samples(&self, size: Option<u64>, window: Duration) -> usize'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: WindowedHistogram::new
      Src: /src/opendal/core/layers/tail-cut/src/lib.rs:803,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - min_size
    - max_size
    argTypes:
    - u64
    - Option<u64>
    constantsTouched: []
    func_position:
      end: 805
      start: 799
    functionDepth: 39
    functionLinenumber: 799
    functionLinenumberEnd: 805
    functionName: SizeBucket::new
    functionSourceFile: /src/opendal/core/layers/tail-cut/src/lib.rs
    functionUses: 1
    functionsReached:
    - WindowedHistogram::new
    linkageType: ''
    returnType: Self
    signature: 'fn new(min_size: u64, max_size: Option<u64>) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: is_none_or
      Src: /src/opendal/core/layers/tail-cut/src/lib.rs:808,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - size
    argTypes:
    - u64
    constantsTouched: []
    func_position:
      end: 809
      start: 807
    functionDepth: 0
    functionLinenumber: 807
    functionLinenumberEnd: 809
    functionName: SizeBucket::contains
    functionSourceFile: /src/opendal/core/layers/tail-cut/src/lib.rs
    functionUses: 0
    functionsReached:
    - is_none_or
    linkageType: ''
    returnType: bool
    signature: 'fn contains(&self, size: u64) -> bool'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Box::new
      Src: /src/opendal/core/layers/tail-cut/src/lib.rs:826,1
    - Dst: std::array::from_fn
      Src: /src/opendal/core/layers/tail-cut/src/lib.rs:826,1
    - Dst: TimeSlice::new
      Src: /src/opendal/core/layers/tail-cut/src/lib.rs:826,1
    - Dst: AtomicUsize::new
      Src: /src/opendal/core/layers/tail-cut/src/lib.rs:827,1
    - Dst: AtomicU64::new
      Src: /src/opendal/core/layers/tail-cut/src/lib.rs:828,1
    - Dst: Self::now_ms
      Src: /src/opendal/core/layers/tail-cut/src/lib.rs:828,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 830
      start: 824
    functionDepth: 38
    functionLinenumber: 824
    functionLinenumberEnd: 830
    functionName: WindowedHistogram::new
    functionSourceFile: /src/opendal/core/layers/tail-cut/src/lib.rs
    functionUses: 2
    functionsReached:
    - AtomicUsize::new
    - Box::new
    - std::array::from_fn
    - AtomicU64::new
    - TimeSlice::new
    - Self::now_ms
    linkageType: ''
    returnType: Self
    signature: fn new() -> Self
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: WindowedHistogram::maybe_rotate
      Src: /src/opendal/core/layers/tail-cut/src/lib.rs:833,1
    - Dst: Self::latency_to_bucket
      Src: /src/opendal/core/layers/tail-cut/src/lib.rs:835,1
    - Dst: load
      Src: /src/opendal/core/layers/tail-cut/src/lib.rs:836,1
    - Dst: fetch_add
      Src: /src/opendal/core/layers/tail-cut/src/lib.rs:838,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 14
    argCount: 1
    argNames:
    - latency
    argTypes:
    - Duration
    constantsTouched: []
    func_position:
      end: 839
      start: 832
    functionDepth: 39
    functionLinenumber: 832
    functionLinenumberEnd: 839
    functionName: WindowedHistogram::record
    functionSourceFile: /src/opendal/core/layers/tail-cut/src/lib.rs
    functionUses: 0
    functionsReached:
    - load
    - WindowedHistogram::maybe_rotate
    - fetch_add
    - Self::latency_to_bucket
    linkageType: ''
    returnType: void
    signature: 'fn record(&self, latency: Duration)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: WindowedHistogram::snapshot
      Src: /src/opendal/core/layers/tail-cut/src/lib.rs:844,1
    - Dst: '[u64; NUM_BUCKETS]::iter'
      Src: /src/opendal/core/layers/tail-cut/src/lib.rs:845,1
    - Dst: sum
      Src: /src/opendal/core/layers/tail-cut/src/lib.rs:845,1
    - Dst: ceil
      Src: /src/opendal/core/layers/tail-cut/src/lib.rs:851,1
    - Dst: '[u64; NUM_BUCKETS]::iter'
      Src: /src/opendal/core/layers/tail-cut/src/lib.rs:854,1
    - Dst: enumerate
      Src: /src/opendal/core/layers/tail-cut/src/lib.rs:854,1
    - Dst: Some
      Src: /src/opendal/core/layers/tail-cut/src/lib.rs:857,1
    - Dst: Self::bucket_to_latency
      Src: /src/opendal/core/layers/tail-cut/src/lib.rs:857,1
    - Dst: Some
      Src: /src/opendal/core/layers/tail-cut/src/lib.rs:861,1
    - Dst: Self::bucket_to_latency
      Src: /src/opendal/core/layers/tail-cut/src/lib.rs:861,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 35
    argCount: 2
    argNames:
    - q
    - window
    argTypes:
    - f64
    - Duration
    constantsTouched: []
    func_position:
      end: 862
      start: 841
    functionDepth: 39
    functionLinenumber: 841
    functionLinenumberEnd: 862
    functionName: WindowedHistogram::quantile
    functionSourceFile: /src/opendal/core/layers/tail-cut/src/lib.rs
    functionUses: 0
    functionsReached:
    - WindowedHistogram::snapshot
    - ceil
    - Self::bucket_to_latency
    - Some
    - enumerate
    - '[u64; NUM_BUCKETS]::iter'
    - sum
    linkageType: ''
    returnType: Option
    signature: 'fn quantile(&self, q: f64, window: Duration) -> Option<Duration>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: WindowedHistogram::snapshot
      Src: /src/opendal/core/layers/tail-cut/src/lib.rs:865,1
    - Dst: '[u64; NUM_BUCKETS]::iter'
      Src: /src/opendal/core/layers/tail-cut/src/lib.rs:865,1
    - Dst: map
      Src: /src/opendal/core/layers/tail-cut/src/lib.rs:865,1
    - Dst: Result::sum
      Src: /src/opendal/core/layers/tail-cut/src/lib.rs:865,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 1
    argNames:
    - window
    argTypes:
    - Duration
    constantsTouched: []
    func_position:
      end: 866
      start: 864
    functionDepth: 39
    functionLinenumber: 864
    functionLinenumberEnd: 866
    functionName: WindowedHistogram::total_samples
    functionSourceFile: /src/opendal/core/layers/tail-cut/src/lib.rs
    functionUses: 0
    functionsReached:
    - WindowedHistogram::snapshot
    - map
    - '[u64; NUM_BUCKETS]::iter'
    - Result::sum
    linkageType: ''
    returnType: usize
    signature: 'fn total_samples(&self, window: Duration) -> usize'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self::now_ms
      Src: /src/opendal/core/layers/tail-cut/src/lib.rs:870,1
    - Dst: Self::as_millis
      Src: /src/opendal/core/layers/tail-cut/src/lib.rs:871,1
    - Dst: iter
      Src: /src/opendal/core/layers/tail-cut/src/lib.rs:873,1
    - Dst: load
      Src: /src/opendal/core/layers/tail-cut/src/lib.rs:874,1
    - Dst: u64::saturating_sub
      Src: /src/opendal/core/layers/tail-cut/src/lib.rs:876,1
    - Dst: iter
      Src: /src/opendal/core/layers/tail-cut/src/lib.rs:877,1
    - Dst: enumerate
      Src: /src/opendal/core/layers/tail-cut/src/lib.rs:877,1
    - Dst: usize::load
      Src: /src/opendal/core/layers/tail-cut/src/lib.rs:878,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 32
    argCount: 1
    argNames:
    - window
    argTypes:
    - Duration
    constantsTouched: []
    func_position:
      end: 884
      start: 868
    functionDepth: 38
    functionLinenumber: 868
    functionLinenumberEnd: 884
    functionName: WindowedHistogram::snapshot
    functionSourceFile: /src/opendal/core/layers/tail-cut/src/lib.rs
    functionUses: 2
    functionsReached:
    - iter
    - usize::load
    - u64::saturating_sub
    - load
    - enumerate
    - Self::now_ms
    - Self::as_millis
    linkageType: ''
    returnType: '[u64; NUM_BUCKETS]'
    signature: 'fn snapshot(&self, window: Duration) -> [u64; NUM_BUCKETS]'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self::now_ms
      Src: /src/opendal/core/layers/tail-cut/src/lib.rs:887,1
    - Dst: load
      Src: /src/opendal/core/layers/tail-cut/src/lib.rs:888,1
    - Dst: compare_exchange
      Src: /src/opendal/core/layers/tail-cut/src/lib.rs:891,1
    - Dst: is_ok
      Src: /src/opendal/core/layers/tail-cut/src/lib.rs:891,1
    - Dst: load
      Src: /src/opendal/core/layers/tail-cut/src/lib.rs:896,1
    - Dst: store
      Src: /src/opendal/core/layers/tail-cut/src/lib.rs:900,1
    - Dst: usize::store
      Src: /src/opendal/core/layers/tail-cut/src/lib.rs:902,1
    - Dst: store
      Src: /src/opendal/core/layers/tail-cut/src/lib.rs:905,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 38
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 907
      start: 886
    functionDepth: 38
    functionLinenumber: 886
    functionLinenumberEnd: 907
    functionName: WindowedHistogram::maybe_rotate
    functionSourceFile: /src/opendal/core/layers/tail-cut/src/lib.rs
    functionUses: 1
    functionsReached:
    - is_ok
    - usize::store
    - store
    - Self::now_ms
    - load
    - compare_exchange
    linkageType: ''
    returnType: void
    signature: fn maybe_rotate(&self)
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Duration::as_millis
      Src: /src/opendal/core/layers/tail-cut/src/lib.rs:910,1
    - Dst: u64::leading_zeros
      Src: /src/opendal/core/layers/tail-cut/src/lib.rs:916,1
    - Dst: min
      Src: /src/opendal/core/layers/tail-cut/src/lib.rs:917,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 16
    argCount: 1
    argNames:
    - latency
    argTypes:
    - Duration
    constantsTouched: []
    func_position:
      end: 918
      start: 909
    functionDepth: 0
    functionLinenumber: 909
    functionLinenumberEnd: 918
    functionName: WindowedHistogram::latency_to_bucket
    functionSourceFile: /src/opendal/core/layers/tail-cut/src/lib.rs
    functionUses: 0
    functionsReached:
    - Duration::as_millis
    - min
    - u64::leading_zeros
    linkageType: ''
    returnType: usize
    signature: 'fn latency_to_bucket(latency: Duration) -> usize'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Duration::from_millis
      Src: /src/opendal/core/layers/tail-cut/src/lib.rs:922,1
    - Dst: Duration::from_secs
      Src: /src/opendal/core/layers/tail-cut/src/lib.rs:924,1
    - Dst: Duration::from_millis
      Src: /src/opendal/core/layers/tail-cut/src/lib.rs:926,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - bucket_idx
    argTypes:
    - usize
    constantsTouched: []
    func_position:
      end: 928
      start: 920
    functionDepth: 0
    functionLinenumber: 920
    functionLinenumberEnd: 928
    functionName: WindowedHistogram::bucket_to_latency
    functionSourceFile: /src/opendal/core/layers/tail-cut/src/lib.rs
    functionUses: 0
    functionsReached:
    - Duration::from_secs
    - Duration::from_millis
    linkageType: ''
    returnType: Duration
    signature: 'fn bucket_to_latency(bucket_idx: usize) -> Duration'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: u64::try_from
      Src: /src/opendal/core/layers/tail-cut/src/lib.rs:932,1
    - Dst: Timestamp::now
      Src: /src/opendal/core/layers/tail-cut/src/lib.rs:932,1
    - Dst: Self::into_inner
      Src: /src/opendal/core/layers/tail-cut/src/lib.rs:932,1
    - Dst: Arc::as_millisecond
      Src: /src/opendal/core/layers/tail-cut/src/lib.rs:932,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/layers/tail-cut/src/lib.rs:932,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 933
      start: 930
    functionDepth: 37
    functionLinenumber: 930
    functionLinenumberEnd: 933
    functionName: WindowedHistogram::now_ms
    functionSourceFile: /src/opendal/core/layers/tail-cut/src/lib.rs
    functionUses: 1
    functionsReached:
    - Timestamp::now
    - Arc::as_millisecond
    - Self::into_inner
    - Result::unwrap
    - u64::try_from
    linkageType: ''
    returnType: u64
    signature: fn now_ms() -> u64
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: std::array::from_fn
      Src: /src/opendal/core/layers/tail-cut/src/lib.rs:946,1
    - Dst: AtomicU64::new
      Src: /src/opendal/core/layers/tail-cut/src/lib.rs:946,1
    - Dst: AtomicU64::new
      Src: /src/opendal/core/layers/tail-cut/src/lib.rs:947,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 949
      start: 944
    functionDepth: 2
    functionLinenumber: 944
    functionLinenumberEnd: 949
    functionName: TimeSlice::new
    functionSourceFile: /src/opendal/core/layers/tail-cut/src/lib.rs
    functionUses: 1
    functionsReached:
    - std::array::from_fn
    - AtomicU64::new
    linkageType: ''
    returnType: Self
    signature: fn new() -> Self
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 998
      start: 957
    functionDepth: 0
    functionLinenumber: 957
    functionLinenumberEnd: 998
    functionName: tests::test_latency_to_bucket
    functionSourceFile: /src/opendal/core/layers/tail-cut/src/lib.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: fn test_latency_to_bucket()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: SizeBucket::new
      Src: /src/opendal/core/layers/tail-cut/src/lib.rs:1002,1
    - Dst: Some
      Src: /src/opendal/core/layers/tail-cut/src/lib.rs:1002,1
    - Dst: SizeBucket::new
      Src: /src/opendal/core/layers/tail-cut/src/lib.rs:1007,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 1011
      start: 1001
    functionDepth: 40
    functionLinenumber: 1001
    functionLinenumberEnd: 1011
    functionName: tests::test_size_bucket_contains
    functionSourceFile: /src/opendal/core/layers/tail-cut/src/lib.rs
    functionUses: 0
    functionsReached:
    - SizeBucket::new
    - Some
    linkageType: ''
    returnType: void
    signature: fn test_size_bucket_contains()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: WindowedHistogram::new
      Src: /src/opendal/core/layers/tail-cut/src/lib.rs:1015,1
    - Dst: WindowedHistogram::now_ms
      Src: /src/opendal/core/layers/tail-cut/src/lib.rs:1016,1
    - Dst: store
      Src: /src/opendal/core/layers/tail-cut/src/lib.rs:1017,1
    - Dst: Self::record
      Src: /src/opendal/core/layers/tail-cut/src/lib.rs:1019,1
    - Dst: Duration::from_millis
      Src: /src/opendal/core/layers/tail-cut/src/lib.rs:1019,1
    - Dst: Self::record
      Src: /src/opendal/core/layers/tail-cut/src/lib.rs:1020,1
    - Dst: Duration::from_millis
      Src: /src/opendal/core/layers/tail-cut/src/lib.rs:1020,1
    - Dst: Self::record
      Src: /src/opendal/core/layers/tail-cut/src/lib.rs:1021,1
    - Dst: Duration::from_millis
      Src: /src/opendal/core/layers/tail-cut/src/lib.rs:1021,1
    - Dst: Self::total_samples
      Src: /src/opendal/core/layers/tail-cut/src/lib.rs:1023,1
    - Dst: Duration::from_secs
      Src: /src/opendal/core/layers/tail-cut/src/lib.rs:1023,1
    - Dst: Self::quantile
      Src: /src/opendal/core/layers/tail-cut/src/lib.rs:1026,1
    - Dst: Duration::from_secs
      Src: /src/opendal/core/layers/tail-cut/src/lib.rs:1026,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 28
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 1028
      start: 1014
    functionDepth: 39
    functionLinenumber: 1014
    functionLinenumberEnd: 1028
    functionName: tests::test_histogram_basic
    functionSourceFile: /src/opendal/core/layers/tail-cut/src/lib.rs
    functionUses: 0
    functionsReached:
    - Self::quantile
    - WindowedHistogram::now_ms
    - store
    - Self::total_samples
    - WindowedHistogram::new
    - Duration::from_secs
    - Self::record
    - Duration::from_millis
    linkageType: ''
    returnType: void
    signature: async fn test_histogram_basic()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: TailCutLayer::builder
      Src: /src/opendal/core/layers/tail-cut/src/lib.rs:1032,1
    - Dst: TailCutLayerBuilder::percentile
      Src: /src/opendal/core/layers/tail-cut/src/lib.rs:1032,1
    - Dst: Self::safety_factor
      Src: /src/opendal/core/layers/tail-cut/src/lib.rs:1032,1
    - Dst: Self::window
      Src: /src/opendal/core/layers/tail-cut/src/lib.rs:1032,1
    - Dst: Duration::from_secs
      Src: /src/opendal/core/layers/tail-cut/src/lib.rs:1035,1
    - Dst: Self::min_samples
      Src: /src/opendal/core/layers/tail-cut/src/lib.rs:1032,1
    - Dst: Self::min_deadline
      Src: /src/opendal/core/layers/tail-cut/src/lib.rs:1032,1
    - Dst: Duration::from_millis
      Src: /src/opendal/core/layers/tail-cut/src/lib.rs:1037,1
    - Dst: Self::max_deadline
      Src: /src/opendal/core/layers/tail-cut/src/lib.rs:1032,1
    - Dst: Duration::from_secs
      Src: /src/opendal/core/layers/tail-cut/src/lib.rs:1038,1
    - Dst: Self::build
      Src: /src/opendal/core/layers/tail-cut/src/lib.rs:1032,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 24
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 1047
      start: 1031
    functionDepth: 37
    functionLinenumber: 1031
    functionLinenumberEnd: 1047
    functionName: tests::test_tail_cut_layer_build
    functionSourceFile: /src/opendal/core/layers/tail-cut/src/lib.rs
    functionUses: 0
    functionsReached:
    - TailCutLayerBuilder::percentile
    - Self::window
    - Self::max_deadline
    - TailCutLayer::builder
    - Self::min_samples
    - Self::min_deadline
    - Duration::from_secs
    - Self::safety_factor
    - Self::build
    - Duration::from_millis
    linkageType: ''
    returnType: void
    signature: async fn test_tail_cut_layer_build()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: TailCutLayer::new
      Src: /src/opendal/core/layers/tail-cut/src/lib.rs:1051,1
    - Dst: ThrottleAccessor::clone
      Src: /src/opendal/core/layers/tail-cut/src/lib.rs:1052,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 1055
      start: 1050
    functionDepth: 4
    functionLinenumber: 1050
    functionLinenumberEnd: 1055
    functionName: tests::test_layer_clone_shares_stats
    functionSourceFile: /src/opendal/core/layers/tail-cut/src/lib.rs
    functionUses: 0
    functionsReached:
    - ThrottleAccessor::clone
    - TailCutLayer::new
    linkageType: ''
    returnType: void
    signature: async fn test_layer_clone_shares_stats()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self::default
      Src: /src/opendal/core/layers/oteltrace/src/lib.rs:60,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 61
      start: 59
    functionDepth: 3
    functionLinenumber: 59
    functionLinenumberEnd: 61
    functionName: OtelTraceLayer::new
    functionSourceFile: /src/opendal/core/layers/oteltrace/src/lib.rs
    functionUses: 0
    functionsReached:
    - Self::default
    linkageType: ''
    returnType: Self
    signature: pub fn new() -> Self
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Arc::new
      Src: /src/opendal/core/layers/oteltrace/src/lib.rs:66,1
    - Dst: OtelTraceLayer::layer
      Src: /src/opendal/core/layers/oteltrace/src/lib.rs:66,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - inner
    argTypes:
    - Servicer
    constantsTouched: []
    func_position:
      end: 67
      start: 65
    functionDepth: 2
    functionLinenumber: 65
    functionLinenumberEnd: 67
    functionName: OtelTraceLayer::apply_service
    functionSourceFile: /src/opendal/core/layers/oteltrace/src/lib.rs
    functionUses: 0
    functionsReached:
    - Arc::new
    - OtelTraceLayer::layer
    linkageType: ''
    returnType: Servicer
    signature: 'fn apply_service(&self, inner: Servicer) -> Servicer'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - inner
    argTypes:
    - Servicer
    constantsTouched: []
    func_position:
      end: 73
      start: 71
    functionDepth: 0
    functionLinenumber: 71
    functionLinenumberEnd: 73
    functionName: OtelTraceLayer::layer
    functionSourceFile: /src/opendal/core/layers/oteltrace/src/lib.rs
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: OtelTraceService
    signature: 'fn layer(&self, inner: Servicer) -> OtelTraceService'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: global::tracer
      Src: /src/opendal/core/layers/oteltrace/src/lib.rs:90,1
    - Dst: in_span
      Src: /src/opendal/core/layers/oteltrace/src/lib.rs:91,1
    - Dst: info
      Src: /src/opendal/core/layers/oteltrace/src/lib.rs:91,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 92
      start: 89
    functionDepth: 2
    functionLinenumber: 89
    functionLinenumberEnd: 92
    functionName: OtelTraceService::info
    functionSourceFile: /src/opendal/core/layers/oteltrace/src/lib.rs
    functionUses: 0
    functionsReached:
    - info
    - in_span
    - global::tracer
    linkageType: ''
    returnType: ServiceInfo
    signature: fn info(&self) -> ServiceInfo
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: capability
      Src: /src/opendal/core/layers/oteltrace/src/lib.rs:95,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 96
      start: 94
    functionDepth: 2
    functionLinenumber: 94
    functionLinenumberEnd: 96
    functionName: OtelTraceService::capability
    functionSourceFile: /src/opendal/core/layers/oteltrace/src/lib.rs
    functionUses: 0
    functionsReached:
    - capability
    linkageType: ''
    returnType: Capability
    signature: fn capability(&self) -> Capability
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: global::tracer
      Src: /src/opendal/core/layers/oteltrace/src/lib.rs:104,1
    - Dst: start
      Src: /src/opendal/core/layers/oteltrace/src/lib.rs:105,1
    - Dst: Self::set_attribute
      Src: /src/opendal/core/layers/oteltrace/src/lib.rs:106,1
    - Dst: KeyValue::new
      Src: /src/opendal/core/layers/oteltrace/src/lib.rs:106,1
    - Dst: to_string
      Src: /src/opendal/core/layers/oteltrace/src/lib.rs:106,1
    - Dst: Self::set_attribute
      Src: /src/opendal/core/layers/oteltrace/src/lib.rs:107,1
    - Dst: KeyValue::new
      Src: /src/opendal/core/layers/oteltrace/src/lib.rs:107,1
    - Dst: TraceContext::current_with_span
      Src: /src/opendal/core/layers/oteltrace/src/lib.rs:108,1
    - Dst: create_dir
      Src: /src/opendal/core/layers/oteltrace/src/lib.rs:109,1
    - Dst: with_context
      Src: /src/opendal/core/layers/oteltrace/src/lib.rs:109,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 20
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpCreateDir
    constantsTouched: []
    func_position:
      end: 113
      start: 98
    functionDepth: 35
    functionLinenumber: 98
    functionLinenumberEnd: 113
    functionName: OtelTraceService::create_dir
    functionSourceFile: /src/opendal/core/layers/oteltrace/src/lib.rs
    functionUses: 0
    functionsReached:
    - to_string
    - TraceContext::current_with_span
    - KeyValue::new
    - global::tracer
    - with_context
    - start
    - create_dir
    - Self::set_attribute
    linkageType: ''
    returnType: Result
    signature: 'async fn create_dir(&self,ctx: &OperationContext,path: &str,args:
      OpCreateDir,) -> Result<RpCreateDir>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: global::tracer
      Src: /src/opendal/core/layers/oteltrace/src/lib.rs:116,1
    - Dst: start
      Src: /src/opendal/core/layers/oteltrace/src/lib.rs:117,1
    - Dst: Self::set_attribute
      Src: /src/opendal/core/layers/oteltrace/src/lib.rs:118,1
    - Dst: KeyValue::new
      Src: /src/opendal/core/layers/oteltrace/src/lib.rs:118,1
    - Dst: to_string
      Src: /src/opendal/core/layers/oteltrace/src/lib.rs:118,1
    - Dst: Self::set_attribute
      Src: /src/opendal/core/layers/oteltrace/src/lib.rs:119,1
    - Dst: KeyValue::new
      Src: /src/opendal/core/layers/oteltrace/src/lib.rs:119,1
    - Dst: TraceContext::current_with_span
      Src: /src/opendal/core/layers/oteltrace/src/lib.rs:120,1
    - Dst: read
      Src: /src/opendal/core/layers/oteltrace/src/lib.rs:121,1
    - Dst: map
      Src: /src/opendal/core/layers/oteltrace/src/lib.rs:121,1
    - Dst: OtelTraceWrapper::new
      Src: /src/opendal/core/layers/oteltrace/src/lib.rs:123,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 21
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpRead
    constantsTouched: []
    func_position:
      end: 124
      start: 115
    functionDepth: 31
    functionLinenumber: 115
    functionLinenumberEnd: 124
    functionName: OtelTraceService::read
    functionSourceFile: /src/opendal/core/layers/oteltrace/src/lib.rs
    functionUses: 0
    functionsReached:
    - to_string
    - read
    - TraceContext::current_with_span
    - KeyValue::new
    - global::tracer
    - map
    - start
    - OtelTraceWrapper::new
    - Self::set_attribute
    linkageType: ''
    returnType: Result
    signature: 'fn read(&self, ctx: &OperationContext, path: &str, args: OpRead) ->
      Result<Self::Reader>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: global::tracer
      Src: /src/opendal/core/layers/oteltrace/src/lib.rs:127,1
    - Dst: start
      Src: /src/opendal/core/layers/oteltrace/src/lib.rs:128,1
    - Dst: Self::set_attribute
      Src: /src/opendal/core/layers/oteltrace/src/lib.rs:129,1
    - Dst: KeyValue::new
      Src: /src/opendal/core/layers/oteltrace/src/lib.rs:129,1
    - Dst: to_string
      Src: /src/opendal/core/layers/oteltrace/src/lib.rs:129,1
    - Dst: Self::set_attribute
      Src: /src/opendal/core/layers/oteltrace/src/lib.rs:130,1
    - Dst: KeyValue::new
      Src: /src/opendal/core/layers/oteltrace/src/lib.rs:130,1
    - Dst: TraceContext::current_with_span
      Src: /src/opendal/core/layers/oteltrace/src/lib.rs:131,1
    - Dst: write
      Src: /src/opendal/core/layers/oteltrace/src/lib.rs:132,1
    - Dst: map
      Src: /src/opendal/core/layers/oteltrace/src/lib.rs:132,1
    - Dst: OtelTraceWrapper::new
      Src: /src/opendal/core/layers/oteltrace/src/lib.rs:134,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 21
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpWrite
    constantsTouched: []
    func_position:
      end: 135
      start: 126
    functionDepth: 36
    functionLinenumber: 126
    functionLinenumberEnd: 135
    functionName: OtelTraceService::write
    functionSourceFile: /src/opendal/core/layers/oteltrace/src/lib.rs
    functionUses: 0
    functionsReached:
    - to_string
    - TraceContext::current_with_span
    - KeyValue::new
    - global::tracer
    - map
    - start
    - OtelTraceWrapper::new
    - write
    - Self::set_attribute
    linkageType: ''
    returnType: Result
    signature: 'fn write(&self, ctx: &OperationContext, path: &str, args: OpWrite)
      -> Result<Self::Writer>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: global::tracer
      Src: /src/opendal/core/layers/oteltrace/src/lib.rs:145,1
    - Dst: start
      Src: /src/opendal/core/layers/oteltrace/src/lib.rs:146,1
    - Dst: Self::set_attribute
      Src: /src/opendal/core/layers/oteltrace/src/lib.rs:147,1
    - Dst: KeyValue::new
      Src: /src/opendal/core/layers/oteltrace/src/lib.rs:147,1
    - Dst: Result::to_string
      Src: /src/opendal/core/layers/oteltrace/src/lib.rs:147,1
    - Dst: Self::set_attribute
      Src: /src/opendal/core/layers/oteltrace/src/lib.rs:148,1
    - Dst: KeyValue::new
      Src: /src/opendal/core/layers/oteltrace/src/lib.rs:148,1
    - Dst: Result::to_string
      Src: /src/opendal/core/layers/oteltrace/src/lib.rs:148,1
    - Dst: Self::set_attribute
      Src: /src/opendal/core/layers/oteltrace/src/lib.rs:149,1
    - Dst: KeyValue::new
      Src: /src/opendal/core/layers/oteltrace/src/lib.rs:149,1
    - Dst: TraceContext::current_with_span
      Src: /src/opendal/core/layers/oteltrace/src/lib.rs:150,1
    - Dst: attach
      Src: /src/opendal/core/layers/oteltrace/src/lib.rs:151,1
    - Dst: copy
      Src: /src/opendal/core/layers/oteltrace/src/lib.rs:152,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 25
    argCount: 5
    argNames:
    - ctx
    - from
    - to
    - args
    - opts
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    - OpCopy
    - OpCopier
    constantsTouched: []
    func_position:
      end: 153
      start: 137
    functionDepth: 34
    functionLinenumber: 137
    functionLinenumberEnd: 153
    functionName: OtelTraceService::copy
    functionSourceFile: /src/opendal/core/layers/oteltrace/src/lib.rs
    functionUses: 0
    functionsReached:
    - Result::to_string
    - TraceContext::current_with_span
    - KeyValue::new
    - global::tracer
    - attach
    - start
    - copy
    - Self::set_attribute
    linkageType: ''
    returnType: Result
    signature: 'fn copy(&self,ctx: &OperationContext,from: &str,to: &str,args: OpCopy,opts:
      OpCopier,) -> Result<Self::Copier>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: global::tracer
      Src: /src/opendal/core/layers/oteltrace/src/lib.rs:162,1
    - Dst: start
      Src: /src/opendal/core/layers/oteltrace/src/lib.rs:163,1
    - Dst: Self::set_attribute
      Src: /src/opendal/core/layers/oteltrace/src/lib.rs:164,1
    - Dst: KeyValue::new
      Src: /src/opendal/core/layers/oteltrace/src/lib.rs:164,1
    - Dst: Result::to_string
      Src: /src/opendal/core/layers/oteltrace/src/lib.rs:164,1
    - Dst: Self::set_attribute
      Src: /src/opendal/core/layers/oteltrace/src/lib.rs:165,1
    - Dst: KeyValue::new
      Src: /src/opendal/core/layers/oteltrace/src/lib.rs:165,1
    - Dst: Result::to_string
      Src: /src/opendal/core/layers/oteltrace/src/lib.rs:165,1
    - Dst: Self::set_attribute
      Src: /src/opendal/core/layers/oteltrace/src/lib.rs:166,1
    - Dst: KeyValue::new
      Src: /src/opendal/core/layers/oteltrace/src/lib.rs:166,1
    - Dst: TraceContext::current_with_span
      Src: /src/opendal/core/layers/oteltrace/src/lib.rs:167,1
    - Dst: rename
      Src: /src/opendal/core/layers/oteltrace/src/lib.rs:168,1
    - Dst: with_context
      Src: /src/opendal/core/layers/oteltrace/src/lib.rs:168,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 26
    argCount: 4
    argNames:
    - ctx
    - from
    - to
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    - OpRename
    constantsTouched: []
    func_position:
      end: 172
      start: 155
    functionDepth: 6
    functionLinenumber: 155
    functionLinenumberEnd: 172
    functionName: OtelTraceService::rename
    functionSourceFile: /src/opendal/core/layers/oteltrace/src/lib.rs
    functionUses: 0
    functionsReached:
    - Result::to_string
    - TraceContext::current_with_span
    - KeyValue::new
    - global::tracer
    - rename
    - with_context
    - start
    - Self::set_attribute
    linkageType: ''
    returnType: Result
    signature: 'async fn rename(&self,ctx: &OperationContext,from: &str,to: &str,args:
      OpRename,) -> Result<RpRename>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: global::tracer
      Src: /src/opendal/core/layers/oteltrace/src/lib.rs:175,1
    - Dst: start
      Src: /src/opendal/core/layers/oteltrace/src/lib.rs:176,1
    - Dst: Self::set_attribute
      Src: /src/opendal/core/layers/oteltrace/src/lib.rs:177,1
    - Dst: KeyValue::new
      Src: /src/opendal/core/layers/oteltrace/src/lib.rs:177,1
    - Dst: to_string
      Src: /src/opendal/core/layers/oteltrace/src/lib.rs:177,1
    - Dst: Self::set_attribute
      Src: /src/opendal/core/layers/oteltrace/src/lib.rs:178,1
    - Dst: KeyValue::new
      Src: /src/opendal/core/layers/oteltrace/src/lib.rs:178,1
    - Dst: TraceContext::current_with_span
      Src: /src/opendal/core/layers/oteltrace/src/lib.rs:179,1
    - Dst: stat
      Src: /src/opendal/core/layers/oteltrace/src/lib.rs:180,1
    - Dst: with_context
      Src: /src/opendal/core/layers/oteltrace/src/lib.rs:180,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 20
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpStat
    constantsTouched: []
    func_position:
      end: 181
      start: 174
    functionDepth: 31
    functionLinenumber: 174
    functionLinenumberEnd: 181
    functionName: OtelTraceService::stat
    functionSourceFile: /src/opendal/core/layers/oteltrace/src/lib.rs
    functionUses: 0
    functionsReached:
    - to_string
    - TraceContext::current_with_span
    - KeyValue::new
    - global::tracer
    - with_context
    - start
    - stat
    - Self::set_attribute
    linkageType: ''
    returnType: Result
    signature: 'async fn stat(&self, ctx: &OperationContext, path: &str, args: OpStat)
      -> Result<RpStat>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: delete
      Src: /src/opendal/core/layers/oteltrace/src/lib.rs:184,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - '&OperationContext'
    constantsTouched: []
    func_position:
      end: 185
      start: 183
    functionDepth: 32
    functionLinenumber: 183
    functionLinenumberEnd: 185
    functionName: OtelTraceService::delete
    functionSourceFile: /src/opendal/core/layers/oteltrace/src/lib.rs
    functionUses: 0
    functionsReached:
    - delete
    linkageType: ''
    returnType: Result
    signature: 'fn delete(&self, ctx: &OperationContext) -> Result<Self::Deleter>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: global::tracer
      Src: /src/opendal/core/layers/oteltrace/src/lib.rs:188,1
    - Dst: start
      Src: /src/opendal/core/layers/oteltrace/src/lib.rs:189,1
    - Dst: Self::set_attribute
      Src: /src/opendal/core/layers/oteltrace/src/lib.rs:190,1
    - Dst: KeyValue::new
      Src: /src/opendal/core/layers/oteltrace/src/lib.rs:190,1
    - Dst: to_string
      Src: /src/opendal/core/layers/oteltrace/src/lib.rs:190,1
    - Dst: Self::set_attribute
      Src: /src/opendal/core/layers/oteltrace/src/lib.rs:191,1
    - Dst: KeyValue::new
      Src: /src/opendal/core/layers/oteltrace/src/lib.rs:191,1
    - Dst: TraceContext::current_with_span
      Src: /src/opendal/core/layers/oteltrace/src/lib.rs:192,1
    - Dst: list
      Src: /src/opendal/core/layers/oteltrace/src/lib.rs:193,1
    - Dst: map
      Src: /src/opendal/core/layers/oteltrace/src/lib.rs:193,1
    - Dst: OtelTraceWrapper::new
      Src: /src/opendal/core/layers/oteltrace/src/lib.rs:195,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 21
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpList
    constantsTouched: []
    func_position:
      end: 196
      start: 187
    functionDepth: 3
    functionLinenumber: 187
    functionLinenumberEnd: 196
    functionName: OtelTraceService::list
    functionSourceFile: /src/opendal/core/layers/oteltrace/src/lib.rs
    functionUses: 0
    functionsReached:
    - to_string
    - TraceContext::current_with_span
    - KeyValue::new
    - global::tracer
    - list
    - map
    - start
    - OtelTraceWrapper::new
    - Self::set_attribute
    linkageType: ''
    returnType: Result
    signature: 'fn list(&self, ctx: &OperationContext, path: &str, args: OpList) ->
      Result<Self::Lister>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: global::tracer
      Src: /src/opendal/core/layers/oteltrace/src/lib.rs:204,1
    - Dst: start
      Src: /src/opendal/core/layers/oteltrace/src/lib.rs:205,1
    - Dst: Self::set_attribute
      Src: /src/opendal/core/layers/oteltrace/src/lib.rs:206,1
    - Dst: KeyValue::new
      Src: /src/opendal/core/layers/oteltrace/src/lib.rs:206,1
    - Dst: to_string
      Src: /src/opendal/core/layers/oteltrace/src/lib.rs:206,1
    - Dst: Self::set_attribute
      Src: /src/opendal/core/layers/oteltrace/src/lib.rs:207,1
    - Dst: KeyValue::new
      Src: /src/opendal/core/layers/oteltrace/src/lib.rs:207,1
    - Dst: TraceContext::current_with_span
      Src: /src/opendal/core/layers/oteltrace/src/lib.rs:208,1
    - Dst: presign
      Src: /src/opendal/core/layers/oteltrace/src/lib.rs:209,1
    - Dst: with_context
      Src: /src/opendal/core/layers/oteltrace/src/lib.rs:209,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 20
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpPresign
    constantsTouched: []
    func_position:
      end: 210
      start: 198
    functionDepth: 6
    functionLinenumber: 198
    functionLinenumberEnd: 210
    functionName: OtelTraceService::presign
    functionSourceFile: /src/opendal/core/layers/oteltrace/src/lib.rs
    functionUses: 0
    functionsReached:
    - to_string
    - TraceContext::current_with_span
    - KeyValue::new
    - global::tracer
    - with_context
    - start
    - presign
    - Self::set_attribute
    linkageType: ''
    returnType: Result
    signature: 'async fn presign(&self,ctx: &OperationContext,path: &str,args: OpPresign,)
      -> Result<RpPresign>'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - cx
    - inner
    argTypes:
    - TraceContext
    - R
    constantsTouched: []
    func_position:
      end: 222
      start: 220
    functionDepth: 0
    functionLinenumber: 220
    functionLinenumberEnd: 222
    functionName: OtelTraceWrapper::new
    functionSourceFile: /src/opendal/core/layers/oteltrace/src/lib.rs
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: 'fn new(cx: TraceContext, inner: R) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: global::tracer
      Src: /src/opendal/core/layers/oteltrace/src/lib.rs:225,1
    - Dst: start_with_context
      Src: /src/opendal/core/layers/oteltrace/src/lib.rs:226,1
    - Dst: Self::set_attribute
      Src: /src/opendal/core/layers/oteltrace/src/lib.rs:227,1
    - Dst: KeyValue::new
      Src: /src/opendal/core/layers/oteltrace/src/lib.rs:227,1
    - Dst: (Vec::to_string
      Src: /src/opendal/core/layers/oteltrace/src/lib.rs:227,1
    - Dst: with_span
      Src: /src/opendal/core/layers/oteltrace/src/lib.rs:228,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 14
    argCount: 2
    argNames:
    - name
    - range
    argTypes:
    - '&''static str'
    - BytesRange
    constantsTouched: []
    func_position:
      end: 229
      start: 224
    functionDepth: 2
    functionLinenumber: 224
    functionLinenumberEnd: 229
    functionName: OtelTraceWrapper::child_context
    functionSourceFile: /src/opendal/core/layers/oteltrace/src/lib.rs
    functionUses: 2
    functionsReached:
    - start_with_context
    - KeyValue::new
    - with_span
    - (Vec::to_string
    - global::tracer
    - Self::set_attribute
    linkageType: ''
    returnType: TraceContext
    signature: 'fn child_context(&self, name: &''static str, range: BytesRange) ->
      TraceContext'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: OtelTraceWrapper::child_context
      Src: /src/opendal/core/layers/oteltrace/src/lib.rs:249,1
    - Dst: read
      Src: /src/opendal/core/layers/oteltrace/src/lib.rs:250,1
    - Dst: with_context
      Src: /src/opendal/core/layers/oteltrace/src/lib.rs:250,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - range
    argTypes:
    - BytesRange
    constantsTouched: []
    func_position:
      end: 251
      start: 248
    functionDepth: 31
    functionLinenumber: 248
    functionLinenumberEnd: 251
    functionName: OtelTraceWrapper::read
    functionSourceFile: /src/opendal/core/layers/oteltrace/src/lib.rs
    functionUses: 0
    functionsReached:
    - with_context
    - read
    - OtelTraceWrapper::child_context
    linkageType: ''
    returnType: Result
    signature: 'async fn read(&self, range: BytesRange) -> Result<(RpRead, Buffer)>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: OtelTraceWrapper::child_context
      Src: /src/opendal/core/layers/oteltrace/src/lib.rs:240,1
    - Dst: open
      Src: /src/opendal/core/layers/oteltrace/src/lib.rs:241,1
    - Dst: with_context
      Src: /src/opendal/core/layers/oteltrace/src/lib.rs:241,1
    - Dst: TraceContext::clone
      Src: /src/opendal/core/layers/oteltrace/src/lib.rs:241,1
    - Dst: Ok
      Src: /src/opendal/core/layers/oteltrace/src/lib.rs:242,1
    - Dst: Box::new
      Src: /src/opendal/core/layers/oteltrace/src/lib.rs:244,1
    - Dst: OtelTraceWrapper::new
      Src: /src/opendal/core/layers/oteltrace/src/lib.rs:244,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 16
    argCount: 1
    argNames:
    - range
    argTypes:
    - BytesRange
    constantsTouched: []
    func_position:
      end: 246
      start: 239
    functionDepth: 6
    functionLinenumber: 239
    functionLinenumberEnd: 246
    functionName: OtelTraceWrapper::open
    functionSourceFile: /src/opendal/core/layers/oteltrace/src/lib.rs
    functionUses: 0
    functionsReached:
    - Ok
    - OtelTraceWrapper::child_context
    - TraceContext::clone
    - Box::new
    - with_context
    - OtelTraceWrapper::new
    - open
    linkageType: ''
    returnType: Result
    signature: 'async fn open(&self, range: BytesRange) -> Result<(RpRead, Box<dyn
      oio::ReadStreamDyn>)>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: write
      Src: /src/opendal/core/layers/oteltrace/src/lib.rs:256,1
    - Dst: with_context
      Src: /src/opendal/core/layers/oteltrace/src/lib.rs:256,1
    - Dst: clone
      Src: /src/opendal/core/layers/oteltrace/src/lib.rs:256,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - bs
    argTypes:
    - Buffer
    constantsTouched: []
    func_position:
      end: 257
      start: 255
    functionDepth: 36
    functionLinenumber: 255
    functionLinenumberEnd: 257
    functionName: OtelTraceWrapper::write
    functionSourceFile: /src/opendal/core/layers/oteltrace/src/lib.rs
    functionUses: 0
    functionsReached:
    - with_context
    - write
    - clone
    linkageType: ''
    returnType: Result
    signature: 'async fn write(&mut self, bs: Buffer) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: abort
      Src: /src/opendal/core/layers/oteltrace/src/lib.rs:260,1
    - Dst: with_context
      Src: /src/opendal/core/layers/oteltrace/src/lib.rs:260,1
    - Dst: clone
      Src: /src/opendal/core/layers/oteltrace/src/lib.rs:260,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 261
      start: 259
    functionDepth: 31
    functionLinenumber: 259
    functionLinenumberEnd: 261
    functionName: OtelTraceWrapper::abort
    functionSourceFile: /src/opendal/core/layers/oteltrace/src/lib.rs
    functionUses: 0
    functionsReached:
    - with_context
    - clone
    - abort
    linkageType: ''
    returnType: Result
    signature: async fn abort(&mut self) -> Result<()>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: close
      Src: /src/opendal/core/layers/oteltrace/src/lib.rs:264,1
    - Dst: with_context
      Src: /src/opendal/core/layers/oteltrace/src/lib.rs:264,1
    - Dst: clone
      Src: /src/opendal/core/layers/oteltrace/src/lib.rs:264,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 265
      start: 263
    functionDepth: 6
    functionLinenumber: 263
    functionLinenumberEnd: 265
    functionName: OtelTraceWrapper::close
    functionSourceFile: /src/opendal/core/layers/oteltrace/src/lib.rs
    functionUses: 0
    functionsReached:
    - with_context
    - clone
    - close
    linkageType: ''
    returnType: Result
    signature: async fn close(&mut self) -> Result<Metadata>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: next
      Src: /src/opendal/core/layers/oteltrace/src/lib.rs:270,1
    - Dst: with_context
      Src: /src/opendal/core/layers/oteltrace/src/lib.rs:270,1
    - Dst: clone
      Src: /src/opendal/core/layers/oteltrace/src/lib.rs:270,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 271
      start: 269
    functionDepth: 6
    functionLinenumber: 269
    functionLinenumberEnd: 271
    functionName: OtelTraceWrapper::next
    functionSourceFile: /src/opendal/core/layers/oteltrace/src/lib.rs
    functionUses: 0
    functionsReached:
    - next
    - with_context
    - clone
    linkageType: ''
    returnType: Result
    signature: async fn next(&mut self) -> Result<Option<oio::Entry>>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: PrometheusLayerBuilder::default
      Src: /src/opendal/core/layers/prometheus/src/lib.rs:176,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 177
      start: 175
    functionDepth: 5
    functionLinenumber: 175
    functionLinenumberEnd: 177
    functionName: PrometheusLayer::builder
    functionSourceFile: /src/opendal/core/layers/prometheus/src/lib.rs
    functionUses: 0
    functionsReached:
    - PrometheusLayerBuilder::default
    linkageType: ''
    returnType: PrometheusLayerBuilder
    signature: pub fn builder() -> PrometheusLayerBuilder
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: observe::MetricsLayer::new
      Src: /src/opendal/core/layers/prometheus/src/lib.rs:182,1
    - Dst: clone
      Src: /src/opendal/core/layers/prometheus/src/lib.rs:182,1
    - Dst: Self::apply_service
      Src: /src/opendal/core/layers/prometheus/src/lib.rs:182,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - inner
    argTypes:
    - Servicer
    constantsTouched: []
    func_position:
      end: 183
      start: 181
    functionDepth: 3
    functionLinenumber: 181
    functionLinenumberEnd: 183
    functionName: PrometheusLayer::apply_service
    functionSourceFile: /src/opendal/core/layers/prometheus/src/lib.rs
    functionUses: 0
    functionsReached:
    - observe::MetricsLayer::new
    - Self::apply_service
    - clone
    linkageType: ''
    returnType: Servicer
    signature: 'fn apply_service(&self, inner: Servicer) -> Servicer'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: observe::MetricsLayer::new
      Src: /src/opendal/core/layers/prometheus/src/lib.rs:187,1
    - Dst: clone
      Src: /src/opendal/core/layers/prometheus/src/lib.rs:187,1
    - Dst: Self::apply_context
      Src: /src/opendal/core/layers/prometheus/src/lib.rs:187,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - srv
    - inner
    argTypes:
    - Servicer
    - OperationContext
    constantsTouched: []
    func_position:
      end: 188
      start: 186
    functionDepth: 2
    functionLinenumber: 186
    functionLinenumberEnd: 188
    functionName: PrometheusLayer::apply_context
    functionSourceFile: /src/opendal/core/layers/prometheus/src/lib.rs
    functionUses: 0
    functionsReached:
    - observe::MetricsLayer::new
    - Self::apply_context
    - clone
    linkageType: ''
    returnType: OperationContext
    signature: 'fn apply_context(&self, srv: Servicer, inner: OperationContext) ->
      OperationContext'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: to_vec
      Src: /src/opendal/core/layers/prometheus/src/lib.rs:204,1
    - Dst: to_vec
      Src: /src/opendal/core/layers/prometheus/src/lib.rs:205,1
    - Dst: to_vec
      Src: /src/opendal/core/layers/prometheus/src/lib.rs:206,1
    - Dst: to_vec
      Src: /src/opendal/core/layers/prometheus/src/lib.rs:207,1
    - Dst: to_vec
      Src: /src/opendal/core/layers/prometheus/src/lib.rs:208,1
    - Dst: to_vec
      Src: /src/opendal/core/layers/prometheus/src/lib.rs:209,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 211
      start: 202
    functionDepth: 4
    functionLinenumber: 202
    functionLinenumberEnd: 211
    functionName: PrometheusLayerBuilder::default
    functionSourceFile: /src/opendal/core/layers/prometheus/src/lib.rs
    functionUses: 1
    functionsReached:
    - to_vec
    linkageType: ''
    returnType: Self
    signature: fn default() -> Self
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self::is_empty
      Src: /src/opendal/core/layers/prometheus/src/lib.rs:217,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - buckets
    argTypes:
    - Vec<f64>
    constantsTouched: []
    func_position:
      end: 221
      start: 216
    functionDepth: 4
    functionLinenumber: 216
    functionLinenumberEnd: 221
    functionName: PrometheusLayerBuilder::bytes_buckets
    functionSourceFile: /src/opendal/core/layers/prometheus/src/lib.rs
    functionUses: 0
    functionsReached:
    - Self::is_empty
    linkageType: ''
    returnType: Self
    signature: 'pub fn bytes_buckets(mut self, buckets: Vec<f64>) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self::is_empty
      Src: /src/opendal/core/layers/prometheus/src/lib.rs:225,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - buckets
    argTypes:
    - Vec<f64>
    constantsTouched: []
    func_position:
      end: 229
      start: 224
    functionDepth: 4
    functionLinenumber: 224
    functionLinenumberEnd: 229
    functionName: PrometheusLayerBuilder::bytes_rate_buckets
    functionSourceFile: /src/opendal/core/layers/prometheus/src/lib.rs
    functionUses: 0
    functionsReached:
    - Self::is_empty
    linkageType: ''
    returnType: Self
    signature: 'pub fn bytes_rate_buckets(mut self, buckets: Vec<f64>) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self::is_empty
      Src: /src/opendal/core/layers/prometheus/src/lib.rs:233,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - buckets
    argTypes:
    - Vec<f64>
    constantsTouched: []
    func_position:
      end: 237
      start: 232
    functionDepth: 4
    functionLinenumber: 232
    functionLinenumberEnd: 237
    functionName: PrometheusLayerBuilder::entries_buckets
    functionSourceFile: /src/opendal/core/layers/prometheus/src/lib.rs
    functionUses: 0
    functionsReached:
    - Self::is_empty
    linkageType: ''
    returnType: Self
    signature: 'pub fn entries_buckets(mut self, buckets: Vec<f64>) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self::is_empty
      Src: /src/opendal/core/layers/prometheus/src/lib.rs:241,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - buckets
    argTypes:
    - Vec<f64>
    constantsTouched: []
    func_position:
      end: 245
      start: 240
    functionDepth: 4
    functionLinenumber: 240
    functionLinenumberEnd: 245
    functionName: PrometheusLayerBuilder::entries_rate_buckets
    functionSourceFile: /src/opendal/core/layers/prometheus/src/lib.rs
    functionUses: 0
    functionsReached:
    - Self::is_empty
    linkageType: ''
    returnType: Self
    signature: 'pub fn entries_rate_buckets(mut self, buckets: Vec<f64>) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self::is_empty
      Src: /src/opendal/core/layers/prometheus/src/lib.rs:249,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - buckets
    argTypes:
    - Vec<f64>
    constantsTouched: []
    func_position:
      end: 253
      start: 248
    functionDepth: 4
    functionLinenumber: 248
    functionLinenumberEnd: 253
    functionName: PrometheusLayerBuilder::duration_seconds_buckets
    functionSourceFile: /src/opendal/core/layers/prometheus/src/lib.rs
    functionUses: 0
    functionsReached:
    - Self::is_empty
    linkageType: ''
    returnType: Self
    signature: 'pub fn duration_seconds_buckets(mut self, buckets: Vec<f64>) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self::is_empty
      Src: /src/opendal/core/layers/prometheus/src/lib.rs:257,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - buckets
    argTypes:
    - Vec<f64>
    constantsTouched: []
    func_position:
      end: 261
      start: 256
    functionDepth: 4
    functionLinenumber: 256
    functionLinenumberEnd: 261
    functionName: PrometheusLayerBuilder::ttfb_buckets
    functionSourceFile: /src/opendal/core/layers/prometheus/src/lib.rs
    functionUses: 0
    functionsReached:
    - Self::is_empty
    linkageType: ''
    returnType: Self
    signature: 'pub fn ttfb_buckets(mut self, buckets: Vec<f64>) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: OperationLabels::names
      Src: /src/opendal/core/layers/prometheus/src/lib.rs:287,1
    - Dst: observe::MetricValue::OperationBytes
      Src: /src/opendal/core/layers/prometheus/src/lib.rs:289,1
    - Dst: map_err
      Src: /src/opendal/core/layers/prometheus/src/lib.rs:290,1
    - Dst: observe::MetricValue::OperationBytesRate
      Src: /src/opendal/core/layers/prometheus/src/lib.rs:300,1
    - Dst: map_err
      Src: /src/opendal/core/layers/prometheus/src/lib.rs:301,1
    - Dst: observe::MetricValue::OperationEntries
      Src: /src/opendal/core/layers/prometheus/src/lib.rs:311,1
    - Dst: map_err
      Src: /src/opendal/core/layers/prometheus/src/lib.rs:312,1
    - Dst: observe::MetricValue::OperationEntriesRate
      Src: /src/opendal/core/layers/prometheus/src/lib.rs:322,1
    - Dst: map_err
      Src: /src/opendal/core/layers/prometheus/src/lib.rs:323,1
    - Dst: observe::MetricValue::OperationDurationSeconds
      Src: /src/opendal/core/layers/prometheus/src/lib.rs:333,1
    - Dst: Duration::default
      Src: /src/opendal/core/layers/prometheus/src/lib.rs:333,1
    - Dst: map_err
      Src: /src/opendal/core/layers/prometheus/src/lib.rs:334,1
    - Dst: observe::MetricValue::OperationExecuting
      Src: /src/opendal/core/layers/prometheus/src/lib.rs:344,1
    - Dst: map_err
      Src: /src/opendal/core/layers/prometheus/src/lib.rs:345,1
    - Dst: observe::MetricValue::OperationTtfbSeconds
      Src: /src/opendal/core/layers/prometheus/src/lib.rs:354,1
    - Dst: Duration::default
      Src: /src/opendal/core/layers/prometheus/src/lib.rs:354,1
    - Dst: map_err
      Src: /src/opendal/core/layers/prometheus/src/lib.rs:355,1
    - Dst: OperationLabels::names
      Src: /src/opendal/core/layers/prometheus/src/lib.rs:365,1
    - Dst: OperationLabelNames::with_error
      Src: /src/opendal/core/layers/prometheus/src/lib.rs:365,1
    - Dst: map_err
      Src: /src/opendal/core/layers/prometheus/src/lib.rs:368,1
    - Dst: OperationLabels::names
      Src: /src/opendal/core/layers/prometheus/src/lib.rs:377,1
    - Dst: OperationLabelNames::with_service_operation
      Src: /src/opendal/core/layers/prometheus/src/lib.rs:377,1
    - Dst: observe::MetricValue::HttpExecuting
      Src: /src/opendal/core/layers/prometheus/src/lib.rs:379,1
    - Dst: map_err
      Src: /src/opendal/core/layers/prometheus/src/lib.rs:380,1
    - Dst: observe::MetricValue::HttpRequestBytes
      Src: /src/opendal/core/layers/prometheus/src/lib.rs:389,1
    - Dst: map_err
      Src: /src/opendal/core/layers/prometheus/src/lib.rs:390,1
    - Dst: observe::MetricValue::HttpRequestBytesRate
      Src: /src/opendal/core/layers/prometheus/src/lib.rs:400,1
    - Dst: map_err
      Src: /src/opendal/core/layers/prometheus/src/lib.rs:401,1
    - Dst: observe::MetricValue::HttpRequestDurationSeconds
      Src: /src/opendal/core/layers/prometheus/src/lib.rs:411,1
    - Dst: Duration::default
      Src: /src/opendal/core/layers/prometheus/src/lib.rs:411,1
    - Dst: map_err
      Src: /src/opendal/core/layers/prometheus/src/lib.rs:412,1
    - Dst: observe::MetricValue::HttpResponseBytes
      Src: /src/opendal/core/layers/prometheus/src/lib.rs:422,1
    - Dst: map_err
      Src: /src/opendal/core/layers/prometheus/src/lib.rs:423,1
    - Dst: observe::MetricValue::HttpResponseBytesRate
      Src: /src/opendal/core/layers/prometheus/src/lib.rs:433,1
    - Dst: map_err
      Src: /src/opendal/core/layers/prometheus/src/lib.rs:434,1
    - Dst: observe::MetricValue::HttpResponseDurationSeconds
      Src: /src/opendal/core/layers/prometheus/src/lib.rs:444,1
    - Dst: Duration::default
      Src: /src/opendal/core/layers/prometheus/src/lib.rs:444,1
    - Dst: map_err
      Src: /src/opendal/core/layers/prometheus/src/lib.rs:445,1
    - Dst: map_err
      Src: /src/opendal/core/layers/prometheus/src/lib.rs:456,1
    - Dst: OperationLabels::names
      Src: /src/opendal/core/layers/prometheus/src/lib.rs:465,1
    - Dst: OperationLabelNames::with_service_operation
      Src: /src/opendal/core/layers/prometheus/src/lib.rs:465,1
    - Dst: Self::with_status_code
      Src: /src/opendal/core/layers/prometheus/src/lib.rs:465,1
    - Dst: map_err
      Src: /src/opendal/core/layers/prometheus/src/lib.rs:470,1
    - Dst: Ok
      Src: /src/opendal/core/layers/prometheus/src/lib.rs:479,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 84
    argCount: 1
    argNames:
    - registry
    argTypes:
    - '&Registry'
    constantsTouched: []
    func_position:
      end: 501
      start: 286
    functionDepth: 6
    functionLinenumber: 286
    functionLinenumberEnd: 501
    functionName: PrometheusLayerBuilder::register
    functionSourceFile: /src/opendal/core/layers/prometheus/src/lib.rs
    functionUses: 1
    functionsReached:
    - observe::MetricValue::HttpRequestBytes
    - observe::MetricValue::HttpRequestBytesRate
    - observe::MetricValue::OperationBytes
    - observe::MetricValue::OperationDurationSeconds
    - observe::MetricValue::HttpResponseBytes
    - map_err
    - Duration::default
    - observe::MetricValue::OperationExecuting
    - Ok
    - observe::MetricValue::HttpResponseDurationSeconds
    - observe::MetricValue::HttpResponseBytesRate
    - Self::with_status_code
    - observe::MetricValue::OperationTtfbSeconds
    - observe::MetricValue::HttpExecuting
    - observe::MetricValue::OperationEntriesRate
    - OperationLabelNames::with_service_operation
    - observe::MetricValue::HttpRequestDurationSeconds
    - observe::MetricValue::OperationEntries
    - OperationLabelNames::with_error
    - OperationLabels::names
    - observe::MetricValue::OperationBytesRate
    linkageType: ''
    returnType: Result
    signature: 'pub fn register(self, registry: &Registry) -> Result<PrometheusLayer>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: prometheus::default_registry
      Src: /src/opendal/core/layers/prometheus/src/lib.rs:527,1
    - Dst: PrometheusLayerBuilder::register
      Src: /src/opendal/core/layers/prometheus/src/lib.rs:528,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 529
      start: 526
    functionDepth: 7
    functionLinenumber: 526
    functionLinenumberEnd: 529
    functionName: PrometheusLayerBuilder::register_default
    functionSourceFile: /src/opendal/core/layers/prometheus/src/lib.rs
    functionUses: 0
    functionsReached:
    - prometheus::default_registry
    - PrometheusLayerBuilder::register
    linkageType: ''
    returnType: Result
    signature: pub fn register_default(self) -> Result<PrometheusLayer>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Error::new
      Src: /src/opendal/core/layers/prometheus/src/lib.rs:534,1
    - Dst: Error::to_string
      Src: /src/opendal/core/layers/prometheus/src/lib.rs:534,1
    - Dst: Self::set_source
      Src: /src/opendal/core/layers/prometheus/src/lib.rs:534,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - err
    argTypes:
    - prometheus::Error
    constantsTouched: []
    func_position:
      end: 535
      start: 533
    functionDepth: 36
    functionLinenumber: 533
    functionLinenumberEnd: 535
    functionName: parse_prometheus_error
    functionSourceFile: /src/opendal/core/layers/prometheus/src/lib.rs
    functionUses: 0
    functionsReached:
    - Self::set_source
    - Error::to_string
    - Error::new
    linkageType: ''
    returnType: Error
    signature: 'fn parse_prometheus_error(err: prometheus::Error) -> Error'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: OperationLabels
      Src: /src/opendal/core/layers/prometheus/src/lib.rs:562,1
    - Dst: with_label_values
      Src: /src/opendal/core/layers/prometheus/src/lib.rs:564,1
    - Dst: Vec::op_values
      Src: /src/opendal/core/layers/prometheus/src/lib.rs:566,1
    - Dst: observe
      Src: /src/opendal/core/layers/prometheus/src/lib.rs:564,1
    - Dst: with_label_values
      Src: /src/opendal/core/layers/prometheus/src/lib.rs:568,1
    - Dst: Vec::op_values
      Src: /src/opendal/core/layers/prometheus/src/lib.rs:570,1
    - Dst: observe
      Src: /src/opendal/core/layers/prometheus/src/lib.rs:568,1
    - Dst: with_label_values
      Src: /src/opendal/core/layers/prometheus/src/lib.rs:572,1
    - Dst: Vec::op_values
      Src: /src/opendal/core/layers/prometheus/src/lib.rs:574,1
    - Dst: observe
      Src: /src/opendal/core/layers/prometheus/src/lib.rs:572,1
    - Dst: with_label_values
      Src: /src/opendal/core/layers/prometheus/src/lib.rs:576,1
    - Dst: Vec::op_values
      Src: /src/opendal/core/layers/prometheus/src/lib.rs:578,1
    - Dst: observe
      Src: /src/opendal/core/layers/prometheus/src/lib.rs:576,1
    - Dst: with_label_values
      Src: /src/opendal/core/layers/prometheus/src/lib.rs:580,1
    - Dst: Vec::op_values
      Src: /src/opendal/core/layers/prometheus/src/lib.rs:582,1
    - Dst: observe
      Src: /src/opendal/core/layers/prometheus/src/lib.rs:580,1
    - Dst: Result::as_secs_f64
      Src: /src/opendal/core/layers/prometheus/src/lib.rs:583,1
    - Dst: with_label_values
      Src: /src/opendal/core/layers/prometheus/src/lib.rs:584,1
    - Dst: Vec::op_values
      Src: /src/opendal/core/layers/prometheus/src/lib.rs:586,1
    - Dst: inc
      Src: /src/opendal/core/layers/prometheus/src/lib.rs:584,1
    - Dst: with_label_values
      Src: /src/opendal/core/layers/prometheus/src/lib.rs:588,1
    - Dst: Vec::op_values
      Src: /src/opendal/core/layers/prometheus/src/lib.rs:590,1
    - Dst: add
      Src: /src/opendal/core/layers/prometheus/src/lib.rs:588,1
    - Dst: with_label_values
      Src: /src/opendal/core/layers/prometheus/src/lib.rs:592,1
    - Dst: Vec::op_values
      Src: /src/opendal/core/layers/prometheus/src/lib.rs:594,1
    - Dst: observe
      Src: /src/opendal/core/layers/prometheus/src/lib.rs:592,1
    - Dst: Result::as_secs_f64
      Src: /src/opendal/core/layers/prometheus/src/lib.rs:595,1
    - Dst: with_label_values
      Src: /src/opendal/core/layers/prometheus/src/lib.rs:597,1
    - Dst: Vec::http_values
      Src: /src/opendal/core/layers/prometheus/src/lib.rs:599,1
    - Dst: add
      Src: /src/opendal/core/layers/prometheus/src/lib.rs:597,1
    - Dst: with_label_values
      Src: /src/opendal/core/layers/prometheus/src/lib.rs:601,1
    - Dst: Vec::http_values
      Src: /src/opendal/core/layers/prometheus/src/lib.rs:603,1
    - Dst: observe
      Src: /src/opendal/core/layers/prometheus/src/lib.rs:601,1
    - Dst: with_label_values
      Src: /src/opendal/core/layers/prometheus/src/lib.rs:605,1
    - Dst: Vec::http_values
      Src: /src/opendal/core/layers/prometheus/src/lib.rs:607,1
    - Dst: observe
      Src: /src/opendal/core/layers/prometheus/src/lib.rs:605,1
    - Dst: with_label_values
      Src: /src/opendal/core/layers/prometheus/src/lib.rs:609,1
    - Dst: Vec::http_values
      Src: /src/opendal/core/layers/prometheus/src/lib.rs:611,1
    - Dst: observe
      Src: /src/opendal/core/layers/prometheus/src/lib.rs:609,1
    - Dst: Result::as_secs_f64
      Src: /src/opendal/core/layers/prometheus/src/lib.rs:612,1
    - Dst: with_label_values
      Src: /src/opendal/core/layers/prometheus/src/lib.rs:613,1
    - Dst: Vec::http_values
      Src: /src/opendal/core/layers/prometheus/src/lib.rs:615,1
    - Dst: observe
      Src: /src/opendal/core/layers/prometheus/src/lib.rs:613,1
    - Dst: with_label_values
      Src: /src/opendal/core/layers/prometheus/src/lib.rs:617,1
    - Dst: Vec::http_values
      Src: /src/opendal/core/layers/prometheus/src/lib.rs:619,1
    - Dst: observe
      Src: /src/opendal/core/layers/prometheus/src/lib.rs:617,1
    - Dst: with_label_values
      Src: /src/opendal/core/layers/prometheus/src/lib.rs:621,1
    - Dst: Vec::http_values
      Src: /src/opendal/core/layers/prometheus/src/lib.rs:623,1
    - Dst: observe
      Src: /src/opendal/core/layers/prometheus/src/lib.rs:621,1
    - Dst: Result::as_secs_f64
      Src: /src/opendal/core/layers/prometheus/src/lib.rs:624,1
    - Dst: with_label_values
      Src: /src/opendal/core/layers/prometheus/src/lib.rs:625,1
    - Dst: Vec::http_values
      Src: /src/opendal/core/layers/prometheus/src/lib.rs:627,1
    - Dst: inc
      Src: /src/opendal/core/layers/prometheus/src/lib.rs:625,1
    - Dst: with_label_values
      Src: /src/opendal/core/layers/prometheus/src/lib.rs:629,1
    - Dst: Vec::http_values
      Src: /src/opendal/core/layers/prometheus/src/lib.rs:631,1
    - Dst: inc
      Src: /src/opendal/core/layers/prometheus/src/lib.rs:629,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 153
    argCount: 2
    argNames:
    - labels
    - value
    argTypes:
    - observe::MetricLabels
    - observe::MetricValue
    constantsTouched: []
    func_position:
      end: 635
      start: 561
    functionDepth: 31
    functionLinenumber: 561
    functionLinenumberEnd: 635
    functionName: PrometheusInterceptor::observe
    functionSourceFile: /src/opendal/core/layers/prometheus/src/lib.rs
    functionUses: 0
    functionsReached:
    - Result::as_secs_f64
    - Vec::http_values
    - Vec::op_values
    - inc
    - observe
    - with_label_values
    - add
    - OperationLabels
    linkageType: ''
    returnType: void
    signature: 'fn observe(&self, labels: observe::MetricLabels, value: observe::MetricValue)'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 643
      start: 641
    functionDepth: 0
    functionLinenumber: 641
    functionLinenumberEnd: 643
    functionName: OperationLabelNames::as_ref
    functionSourceFile: /src/opendal/core/layers/prometheus/src/lib.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: '&[&''static str]'
    signature: fn as_ref(&self) -> &[&'static str]
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: push
      Src: /src/opendal/core/layers/prometheus/src/lib.rs:648,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 650
      start: 647
    functionDepth: 5
    functionLinenumber: 647
    functionLinenumberEnd: 650
    functionName: OperationLabelNames::with_error
    functionSourceFile: /src/opendal/core/layers/prometheus/src/lib.rs
    functionUses: 1
    functionsReached:
    - push
    linkageType: ''
    returnType: Self
    signature: fn with_error(mut self) -> Self
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: push
      Src: /src/opendal/core/layers/prometheus/src/lib.rs:653,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 655
      start: 652
    functionDepth: 5
    functionLinenumber: 652
    functionLinenumberEnd: 655
    functionName: OperationLabelNames::with_status_code
    functionSourceFile: /src/opendal/core/layers/prometheus/src/lib.rs
    functionUses: 0
    functionsReached:
    - push
    linkageType: ''
    returnType: Self
    signature: fn with_status_code(mut self) -> Self
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: push
      Src: /src/opendal/core/layers/prometheus/src/lib.rs:658,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 660
      start: 657
    functionDepth: 5
    functionLinenumber: 657
    functionLinenumberEnd: 660
    functionName: OperationLabelNames::with_service_operation
    functionSourceFile: /src/opendal/core/layers/prometheus/src/lib.rs
    functionUses: 1
    functionsReached:
    - push
    linkageType: ''
    returnType: Self
    signature: fn with_service_operation(mut self) -> Self
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Vec::push
      Src: /src/opendal/core/layers/prometheus/src/lib.rs:685,1
    - Dst: Self::into_static
      Src: /src/opendal/core/layers/prometheus/src/lib.rs:685,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 689
      start: 676
    functionDepth: 30
    functionLinenumber: 676
    functionLinenumberEnd: 689
    functionName: OperationLabels::op_values
    functionSourceFile: /src/opendal/core/layers/prometheus/src/lib.rs
    functionUses: 0
    functionsReached:
    - Vec::push
    - Self::into_static
    linkageType: ''
    returnType: Vec
    signature: fn op_values(&self) -> Vec<&str>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Vec::push
      Src: /src/opendal/core/layers/prometheus/src/lib.rs:701,1
    - Dst: Self::into_static
      Src: /src/opendal/core/layers/prometheus/src/lib.rs:701,1
    - Dst: Vec::push
      Src: /src/opendal/core/layers/prometheus/src/lib.rs:705,1
    - Dst: Self::as_str
      Src: /src/opendal/core/layers/prometheus/src/lib.rs:705,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 19
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 709
      start: 691
    functionDepth: 30
    functionLinenumber: 691
    functionLinenumberEnd: 709
    functionName: OperationLabels::http_values
    functionSourceFile: /src/opendal/core/layers/prometheus/src/lib.rs
    functionUses: 0
    functionsReached:
    - Vec::push
    - Self::into_static
    - Self::as_str
    linkageType: ''
    returnType: Vec
    signature: fn http_values(&self) -> Vec<&str>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self::default
      Src: /src/opendal/core/layers/immutable-index/src/lib.rs:64,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 65
      start: 63
    functionDepth: 3
    functionLinenumber: 63
    functionLinenumberEnd: 65
    functionName: ImmutableIndexLayer::new
    functionSourceFile: /src/opendal/core/layers/immutable-index/src/lib.rs
    functionUses: 0
    functionsReached:
    - Self::default
    linkageType: ''
    returnType: Self
    signature: pub fn new() -> Self
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: push
      Src: /src/opendal/core/layers/immutable-index/src/lib.rs:71,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - key
    argTypes:
    - String
    constantsTouched: []
    func_position:
      end: 72
      start: 70
    functionDepth: 5
    functionLinenumber: 70
    functionLinenumberEnd: 72
    functionName: ImmutableIndexLayer::insert
    functionSourceFile: /src/opendal/core/layers/immutable-index/src/lib.rs
    functionUses: 0
    functionsReached:
    - push
    linkageType: ''
    returnType: void
    signature: 'pub fn insert(&mut self, key: String)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: extend
      Src: /src/opendal/core/layers/immutable-index/src/lib.rs:79,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - iter
    argTypes:
    - I
    constantsTouched: []
    func_position:
      end: 80
      start: 75
    functionDepth: 0
    functionLinenumber: 75
    functionLinenumberEnd: 80
    functionName: ImmutableIndexLayer::extend_iter
    functionSourceFile: /src/opendal/core/layers/immutable-index/src/lib.rs
    functionUses: 0
    functionsReached:
    - extend
    linkageType: ''
    returnType: void
    signature: 'pub fn extend_iter<I>(&mut self, iter: I)whereI: IntoIterator<Item
      = String>,'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Arc::new
      Src: /src/opendal/core/layers/immutable-index/src/lib.rs:85,1
    - Dst: ImmutableIndexLayer::layer
      Src: /src/opendal/core/layers/immutable-index/src/lib.rs:85,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - inner
    argTypes:
    - Servicer
    constantsTouched: []
    func_position:
      end: 86
      start: 84
    functionDepth: 3
    functionLinenumber: 84
    functionLinenumberEnd: 86
    functionName: ImmutableIndexLayer::apply_service
    functionSourceFile: /src/opendal/core/layers/immutable-index/src/lib.rs
    functionUses: 0
    functionsReached:
    - Arc::new
    - ImmutableIndexLayer::layer
    linkageType: ''
    returnType: Servicer
    signature: 'fn apply_service(&self, inner: Servicer) -> Servicer'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: clone
      Src: /src/opendal/core/layers/immutable-index/src/lib.rs:93,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - inner
    argTypes:
    - Servicer
    constantsTouched: []
    func_position:
      end: 95
      start: 90
    functionDepth: 2
    functionLinenumber: 90
    functionLinenumberEnd: 95
    functionName: ImmutableIndexLayer::layer
    functionSourceFile: /src/opendal/core/layers/immutable-index/src/lib.rs
    functionUses: 1
    functionsReached:
    - clone
    linkageType: ''
    returnType: ImmutableIndexService
    signature: 'fn layer(&self, inner: Servicer) -> ImmutableIndexService'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: iter
      Src: /src/opendal/core/layers/immutable-index/src/lib.rs:107,1
    - Dst: filter
      Src: /src/opendal/core/layers/immutable-index/src/lib.rs:107,1
    - Dst: Result::starts_with
      Src: /src/opendal/core/layers/immutable-index/src/lib.rs:109,1
    - Dst: Result::as_str
      Src: /src/opendal/core/layers/immutable-index/src/lib.rs:109,1
    - Dst: cloned
      Src: /src/opendal/core/layers/immutable-index/src/lib.rs:107,1
    - Dst: collect
      Src: /src/opendal/core/layers/immutable-index/src/lib.rs:107,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 16
    argCount: 1
    argNames:
    - path
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 112
      start: 106
    functionDepth: 36
    functionLinenumber: 106
    functionLinenumberEnd: 112
    functionName: ImmutableIndexService::children_flat
    functionSourceFile: /src/opendal/core/layers/immutable-index/src/lib.rs
    functionUses: 1
    functionsReached:
    - collect
    - iter
    - filter
    - Result::starts_with
    - Result::as_str
    - cloned
    linkageType: ''
    returnType: Vec
    signature: 'fn children_flat(&self, path: &str) -> Vec<String>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: HashSet::new
      Src: /src/opendal/core/layers/immutable-index/src/lib.rs:115,1
    - Dst: iter
      Src: /src/opendal/core/layers/immutable-index/src/lib.rs:117,1
    - Dst: Result::starts_with
      Src: /src/opendal/core/layers/immutable-index/src/lib.rs:119,1
    - Dst: len
      Src: /src/opendal/core/layers/immutable-index/src/lib.rs:128,1
    - Dst: find
      Src: /src/opendal/core/layers/immutable-index/src/lib.rs:128,1
    - Dst: Self::insert
      Src: /src/opendal/core/layers/immutable-index/src/lib.rs:131,1
    - Dst: Result::to_string
      Src: /src/opendal/core/layers/immutable-index/src/lib.rs:131,1
    - Dst: len
      Src: /src/opendal/core/layers/immutable-index/src/lib.rs:135,1
    - Dst: Result::len
      Src: /src/opendal/core/layers/immutable-index/src/lib.rs:137,1
    - Dst: Self::insert
      Src: /src/opendal/core/layers/immutable-index/src/lib.rs:139,1
    - Dst: Result::to_string
      Src: /src/opendal/core/layers/immutable-index/src/lib.rs:139,1
    - Dst: Self::insert
      Src: /src/opendal/core/layers/immutable-index/src/lib.rs:143,1
    - Dst: to_string
      Src: /src/opendal/core/layers/immutable-index/src/lib.rs:143,1
    - Dst: Self::into_iter
      Src: /src/opendal/core/layers/immutable-index/src/lib.rs:149,1
    - Dst: collect
      Src: /src/opendal/core/layers/immutable-index/src/lib.rs:149,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 56
    argCount: 1
    argNames:
    - path
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 150
      start: 114
    functionDepth: 36
    functionLinenumber: 114
    functionLinenumberEnd: 150
    functionName: ImmutableIndexService::children_hierarchy
    functionSourceFile: /src/opendal/core/layers/immutable-index/src/lib.rs
    functionUses: 1
    functionsReached:
    - to_string
    - iter
    - collect
    - find
    - Result::to_string
    - Self::into_iter
    - Self::insert
    - Result::len
    - Result::starts_with
    - len
    - HashSet::new
    linkageType: ''
    returnType: Vec
    signature: 'fn children_hierarchy(&self, path: &str) -> Vec<String>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: info
      Src: /src/opendal/core/layers/immutable-index/src/lib.rs:161,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 162
      start: 160
    functionDepth: 2
    functionLinenumber: 160
    functionLinenumberEnd: 162
    functionName: ImmutableIndexService::info
    functionSourceFile: /src/opendal/core/layers/immutable-index/src/lib.rs
    functionUses: 0
    functionsReached:
    - info
    linkageType: ''
    returnType: ServiceInfo
    signature: fn info(&self) -> ServiceInfo
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: capability
      Src: /src/opendal/core/layers/immutable-index/src/lib.rs:165,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 169
      start: 164
    functionDepth: 2
    functionLinenumber: 164
    functionLinenumberEnd: 169
    functionName: ImmutableIndexService::capability
    functionSourceFile: /src/opendal/core/layers/immutable-index/src/lib.rs
    functionUses: 0
    functionsReached:
    - capability
    linkageType: ''
    returnType: Capability
    signature: fn capability(&self) -> Capability
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: create_dir
      Src: /src/opendal/core/layers/immutable-index/src/lib.rs:177,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpCreateDir
    constantsTouched: []
    func_position:
      end: 178
      start: 171
    functionDepth: 35
    functionLinenumber: 171
    functionLinenumberEnd: 178
    functionName: ImmutableIndexService::create_dir
    functionSourceFile: /src/opendal/core/layers/immutable-index/src/lib.rs
    functionUses: 0
    functionsReached:
    - create_dir
    linkageType: ''
    returnType: Result
    signature: 'async fn create_dir(&self,ctx: &OperationContext,path: &str,args:
      OpCreateDir,) -> Result<RpCreateDir>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: stat
      Src: /src/opendal/core/layers/immutable-index/src/lib.rs:181,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpStat
    constantsTouched: []
    func_position:
      end: 182
      start: 180
    functionDepth: 31
    functionLinenumber: 180
    functionLinenumberEnd: 182
    functionName: ImmutableIndexService::stat
    functionSourceFile: /src/opendal/core/layers/immutable-index/src/lib.rs
    functionUses: 0
    functionsReached:
    - stat
    linkageType: ''
    returnType: Result
    signature: 'async fn stat(&self, ctx: &OperationContext, path: &str, args: OpStat)
      -> Result<RpStat>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: read
      Src: /src/opendal/core/layers/immutable-index/src/lib.rs:185,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpRead
    constantsTouched: []
    func_position:
      end: 186
      start: 184
    functionDepth: 31
    functionLinenumber: 184
    functionLinenumberEnd: 186
    functionName: ImmutableIndexService::read
    functionSourceFile: /src/opendal/core/layers/immutable-index/src/lib.rs
    functionUses: 0
    functionsReached:
    - read
    linkageType: ''
    returnType: Result
    signature: 'fn read(&self, ctx: &OperationContext, path: &str, args: OpRead) ->
      Result<Self::Reader>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: write
      Src: /src/opendal/core/layers/immutable-index/src/lib.rs:189,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpWrite
    constantsTouched: []
    func_position:
      end: 190
      start: 188
    functionDepth: 36
    functionLinenumber: 188
    functionLinenumberEnd: 190
    functionName: ImmutableIndexService::write
    functionSourceFile: /src/opendal/core/layers/immutable-index/src/lib.rs
    functionUses: 0
    functionsReached:
    - write
    linkageType: ''
    returnType: Result
    signature: 'fn write(&self, ctx: &OperationContext, path: &str, args: OpWrite)
      -> Result<Self::Writer>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: copy
      Src: /src/opendal/core/layers/immutable-index/src/lib.rs:200,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 5
    argNames:
    - ctx
    - from
    - to
    - args
    - opts
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    - OpCopy
    - OpCopier
    constantsTouched: []
    func_position:
      end: 201
      start: 192
    functionDepth: 34
    functionLinenumber: 192
    functionLinenumberEnd: 201
    functionName: ImmutableIndexService::copy
    functionSourceFile: /src/opendal/core/layers/immutable-index/src/lib.rs
    functionUses: 0
    functionsReached:
    - copy
    linkageType: ''
    returnType: Result
    signature: 'fn copy(&self,ctx: &OperationContext,from: &str,to: &str,args: OpCopy,opts:
      OpCopier,) -> Result<Self::Copier>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: OpStat::recursive
      Src: /src/opendal/core/layers/immutable-index/src/lib.rs:209,1
    - Dst: ImmutableIndexService::children_flat
      Src: /src/opendal/core/layers/immutable-index/src/lib.rs:210,1
    - Dst: ImmutableIndexService::children_hierarchy
      Src: /src/opendal/core/layers/immutable-index/src/lib.rs:212,1
    - Dst: Ok
      Src: /src/opendal/core/layers/immutable-index/src/lib.rs:215,1
    - Dst: ImmutableDir::new
      Src: /src/opendal/core/layers/immutable-index/src/lib.rs:215,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 3
    argNames:
    - _ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpList
    constantsTouched: []
    func_position:
      end: 216
      start: 203
    functionDepth: 36
    functionLinenumber: 203
    functionLinenumberEnd: 216
    functionName: ImmutableIndexService::list
    functionSourceFile: /src/opendal/core/layers/immutable-index/src/lib.rs
    functionUses: 0
    functionsReached:
    - Ok
    - ImmutableIndexService::children_flat
    - ImmutableDir::new
    - ImmutableIndexService::children_hierarchy
    - OpStat::recursive
    linkageType: ''
    returnType: Result
    signature: 'fn list(&self, _ctx: &OperationContext, path: &str, args: OpList)
      -> Result<Self::Lister>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: delete
      Src: /src/opendal/core/layers/immutable-index/src/lib.rs:219,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - '&OperationContext'
    constantsTouched: []
    func_position:
      end: 220
      start: 218
    functionDepth: 32
    functionLinenumber: 218
    functionLinenumberEnd: 220
    functionName: ImmutableIndexService::delete
    functionSourceFile: /src/opendal/core/layers/immutable-index/src/lib.rs
    functionUses: 0
    functionsReached:
    - delete
    linkageType: ''
    returnType: Result
    signature: 'fn delete(&self, ctx: &OperationContext) -> Result<Self::Deleter>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: rename
      Src: /src/opendal/core/layers/immutable-index/src/lib.rs:229,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 4
    argNames:
    - ctx
    - from
    - to
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    - OpRename
    constantsTouched: []
    func_position:
      end: 230
      start: 222
    functionDepth: 2
    functionLinenumber: 222
    functionLinenumberEnd: 230
    functionName: ImmutableIndexService::rename
    functionSourceFile: /src/opendal/core/layers/immutable-index/src/lib.rs
    functionUses: 0
    functionsReached:
    - rename
    linkageType: ''
    returnType: Result
    signature: 'async fn rename(&self,ctx: &OperationContext,from: &str,to: &str,args:
      OpRename,) -> Result<RpRename>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: presign
      Src: /src/opendal/core/layers/immutable-index/src/lib.rs:238,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpPresign
    constantsTouched: []
    func_position:
      end: 239
      start: 232
    functionDepth: 2
    functionLinenumber: 232
    functionLinenumberEnd: 239
    functionName: ImmutableIndexService::presign
    functionSourceFile: /src/opendal/core/layers/immutable-index/src/lib.rs
    functionUses: 0
    functionsReached:
    - presign
    linkageType: ''
    returnType: Result
    signature: 'async fn presign(&self,ctx: &OperationContext,path: &str,args: OpPresign,)
      -> Result<RpPresign>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Vec<String>::into_iter
      Src: /src/opendal/core/layers/immutable-index/src/lib.rs:250,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - idx
    argTypes:
    - Vec<String>
    constantsTouched: []
    func_position:
      end: 252
      start: 248
    functionDepth: 0
    functionLinenumber: 248
    functionLinenumberEnd: 252
    functionName: ImmutableDir::new
    functionSourceFile: /src/opendal/core/layers/immutable-index/src/lib.rs
    functionUses: 1
    functionsReached:
    - Vec<String>::into_iter
    linkageType: ''
    returnType: Self
    signature: 'fn new(idx: Vec<String>) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: next
      Src: /src/opendal/core/layers/immutable-index/src/lib.rs:255,1
    - Dst: map
      Src: /src/opendal/core/layers/immutable-index/src/lib.rs:255,1
    - Dst: Result::ends_with
      Src: /src/opendal/core/layers/immutable-index/src/lib.rs:256,1
    - Dst: Metadata::new
      Src: /src/opendal/core/layers/immutable-index/src/lib.rs:261,1
    - Dst: oio::Entry::with
      Src: /src/opendal/core/layers/immutable-index/src/lib.rs:262,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 264
      start: 254
    functionDepth: 5
    functionLinenumber: 254
    functionLinenumberEnd: 264
    functionName: ImmutableDir::inner_next
    functionSourceFile: /src/opendal/core/layers/immutable-index/src/lib.rs
    functionUses: 1
    functionsReached:
    - next
    - Metadata::new
    - Result::ends_with
    - map
    - oio::Entry::with
    linkageType: ''
    returnType: Option
    signature: fn inner_next(&mut self) -> Option<oio::Entry>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/core/layers/immutable-index/src/lib.rs:269,1
    - Dst: ImmutableDir::inner_next
      Src: /src/opendal/core/layers/immutable-index/src/lib.rs:269,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 270
      start: 268
    functionDepth: 6
    functionLinenumber: 268
    functionLinenumberEnd: 270
    functionName: ImmutableDir::next
    functionSourceFile: /src/opendal/core/layers/immutable-index/src/lib.rs
    functionUses: 0
    functionsReached:
    - ImmutableDir::inner_next
    - Ok
    linkageType: ''
    returnType: Result
    signature: async fn next(&mut self) -> Result<Option<oio::Entry>>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Operator::from_parts
      Src: /src/opendal/core/layers/immutable-index/src/lib.rs:390,1
    - Dst: OperationContext::default
      Src: /src/opendal/core/layers/immutable-index/src/lib.rs:390,1
    - Dst: Arc::new
      Src: /src/opendal/core/layers/immutable-index/src/lib.rs:390,1
    - Dst: Self::layer
      Src: /src/opendal/core/layers/immutable-index/src/lib.rs:390,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - layer
    argTypes:
    - ImmutableIndexLayer
    constantsTouched: []
    func_position:
      end: 391
      start: 389
    functionDepth: 3
    functionLinenumber: 389
    functionLinenumberEnd: 391
    functionName: tests::build_operator
    functionSourceFile: /src/opendal/core/layers/immutable-index/src/lib.rs
    functionUses: 0
    functionsReached:
    - Operator::from_parts
    - Arc::new
    - OperationContext::default
    - Self::layer
    linkageType: ''
    returnType: Operator
    signature: 'fn build_operator(layer: ImmutableIndexLayer) -> Operator'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: logforth::starter_log::builder
      Src: /src/opendal/core/core/src/types/context/write.rs:267,1
    - Dst: OtelMetricsLayerBuilder::dispatch
      Src: /src/opendal/core/core/src/types/context/write.rs:267,1
    - Dst: Result::filter
      Src: /src/opendal/core/core/src/types/context/write.rs:269,1
    - Dst: RustLogFilterBuilder::from_default_env
      Src: /src/opendal/core/core/src/types/context/write.rs:269,1
    - Dst: build
      Src: /src/opendal/core/core/src/types/context/write.rs:269,1
    - Dst: append
      Src: /src/opendal/core/core/src/types/context/write.rs:269,1
    - Dst: Testing::default
      Src: /src/opendal/core/core/src/types/context/write.rs:270,1
    - Dst: Self::with_layout
      Src: /src/opendal/core/core/src/types/context/write.rs:270,1
    - Dst: TextLayout::default
      Src: /src/opendal/core/core/src/types/context/write.rs:270,1
    - Dst: T::try_apply
      Src: /src/opendal/core/core/src/types/context/write.rs:267,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 17
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 273
      start: 266
    functionDepth: 33
    functionLinenumber: 266
    functionLinenumberEnd: 273
    functionName: tests::setup
    functionSourceFile: /src/opendal/core/core/src/types/context/write.rs
    functionUses: 0
    functionsReached:
    - T::try_apply
    - RustLogFilterBuilder::from_default_env
    - Result::filter
    - build
    - Testing::default
    - Self::with_layout
    - logforth::starter_log::builder
    - OtelMetricsLayerBuilder::dispatch
    - append
    - TextLayout::default
    linkageType: ''
    returnType: void
    signature: fn setup()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: create_test_object_store
      Src: /src/opendal/integrations/object_store/src/store.rs:938,1
    - Dst: '&str::into'
      Src: /src/opendal/integrations/object_store/src/store.rs:939,1
    - Dst: Arc::list
      Src: /src/opendal/integrations/object_store/src/store.rs:940,1
    - Dst: Some
      Src: /src/opendal/integrations/object_store/src/store.rs:940,1
    - Dst: list(Some(&path)).collect::<Vec<_>>
      Src: /src/opendal/integrations/object_store/src/store.rs:940,1
    - Dst: iter
      Src: /src/opendal/integrations/object_store/src/store.rs:942,1
    - Dst: map
      Src: /src/opendal/integrations/object_store/src/store.rs:942,1
    - Dst: anyhow::Result::as_ref
      Src: /src/opendal/integrations/object_store/src/store.rs:944,1
    - Dst: '&[&''static str]::unwrap'
      Src: /src/opendal/integrations/object_store/src/store.rs:944,1
    - Dst: as_ref
      Src: /src/opendal/integrations/object_store/src/store.rs:944,1
    - Dst: "iter()\n            .map(|x| x.as_ref().unwrap().location.as_ref())\n\
        \            .collect::<Vec<_>>"
      Src: /src/opendal/integrations/object_store/src/store.rs:942,1
    - Dst: iter
      Src: /src/opendal/integrations/object_store/src/store.rs:955,1
    - Dst: map
      Src: /src/opendal/integrations/object_store/src/store.rs:955,1
    - Dst: iter().map(|x| x.0).collect::<Vec<&str>>
      Src: /src/opendal/integrations/object_store/src/store.rs:955,1
    - Dst: sort
      Src: /src/opendal/integrations/object_store/src/store.rs:957,1
    - Dst: Result::into
      Src: /src/opendal/integrations/object_store/src/store.rs:961,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 43
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 973
      start: 937
    functionDepth: 36
    functionLinenumber: 937
    functionLinenumberEnd: 973
    functionName: tests::test_list
    functionSourceFile: /src/opendal/integrations/object_store/src/store.rs
    functionUses: 0
    functionsReached:
    - anyhow::Result::as_ref
    - iter
    - "iter()\n            .map(|x| x.as_ref().unwrap().location.as_ref())\n     \
      \       .collect::<Vec<_>>"
    - '&[&''static str]::unwrap'
    - list(Some(&path)).collect::<Vec<_>>
    - Some
    - Arc::list
    - map
    - iter().map(|x| x.0).collect::<Vec<&str>>
    - as_ref
    - sort
    - Result::into
    - create_test_object_store
    - '&str::into'
    linkageType: ''
    returnType: void
    signature: async fn test_list()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: setup
      Src: /src/opendal/core/layers/immutable-index/src/lib.rs:434,1
    - Dst: ImmutableIndexLayer::default
      Src: /src/opendal/core/layers/immutable-index/src/lib.rs:436,1
    - Dst: Self::insert
      Src: /src/opendal/core/layers/immutable-index/src/lib.rs:438,1
    - Dst: Result::to_string
      Src: /src/opendal/core/layers/immutable-index/src/lib.rs:438,1
    - Dst: build_operator
      Src: /src/opendal/core/layers/immutable-index/src/lib.rs:441,1
    - Dst: lister_with
      Src: /src/opendal/core/layers/immutable-index/src/lib.rs:443,1
    - Dst: FutureLister::recursive
      Src: /src/opendal/core/layers/immutable-index/src/lib.rs:443,1
    - Dst: HashSet::new
      Src: /src/opendal/core/layers/immutable-index/src/lib.rs:444,1
    - Dst: HashMap::new
      Src: /src/opendal/core/layers/immutable-index/src/lib.rs:445,1
    - Dst: try_next
      Src: /src/opendal/core/layers/immutable-index/src/lib.rs:446,1
    - Dst: Result::insert
      Src: /src/opendal/core/layers/immutable-index/src/lib.rs:453,1
    - Dst: crate::Entry::path
      Src: /src/opendal/core/layers/immutable-index/src/lib.rs:453,1
    - Dst: String::to_string
      Src: /src/opendal/core/layers/immutable-index/src/lib.rs:453,1
    - Dst: crate::Entry::metadata
      Src: /src/opendal/core/layers/immutable-index/src/lib.rs:453,1
    - Dst: Metadata::mode
      Src: /src/opendal/core/layers/immutable-index/src/lib.rs:453,1
    - Dst: Ok
      Src: /src/opendal/core/layers/immutable-index/src/lib.rs:461,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 44
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 462
      start: 433
    functionDepth: 34
    functionLinenumber: 433
    functionLinenumberEnd: 462
    functionName: tests::test_scan
    functionSourceFile: /src/opendal/core/layers/immutable-index/src/lib.rs
    functionUses: 0
    functionsReached:
    - crate::Entry::path
    - lister_with
    - Result::to_string
    - Ok
    - FutureLister::recursive
    - Self::insert
    - Result::insert
    - try_next
    - HashMap::new
    - crate::Entry::metadata
    - HashSet::new
    - String::to_string
    - build_operator
    - ImmutableIndexLayer::default
    - setup
    - Metadata::mode
    linkageType: ''
    returnType: Result
    signature: async fn test_scan() -> Result<()>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: setup
      Src: /src/opendal/core/layers/immutable-index/src/lib.rs:466,1
    - Dst: ImmutableIndexLayer::default
      Src: /src/opendal/core/layers/immutable-index/src/lib.rs:468,1
    - Dst: Self::insert
      Src: /src/opendal/core/layers/immutable-index/src/lib.rs:474,1
    - Dst: Result::to_string
      Src: /src/opendal/core/layers/immutable-index/src/lib.rs:474,1
    - Dst: build_operator
      Src: /src/opendal/core/layers/immutable-index/src/lib.rs:477,1
    - Dst: HashMap::new
      Src: /src/opendal/core/layers/immutable-index/src/lib.rs:480,1
    - Dst: HashSet::new
      Src: /src/opendal/core/layers/immutable-index/src/lib.rs:481,1
    - Dst: lister
      Src: /src/opendal/core/layers/immutable-index/src/lib.rs:482,1
    - Dst: try_next
      Src: /src/opendal/core/layers/immutable-index/src/lib.rs:483,1
    - Dst: Result::insert
      Src: /src/opendal/core/layers/immutable-index/src/lib.rs:489,1
    - Dst: crate::Entry::path
      Src: /src/opendal/core/layers/immutable-index/src/lib.rs:489,1
    - Dst: String::to_string
      Src: /src/opendal/core/layers/immutable-index/src/lib.rs:489,1
    - Dst: crate::Entry::metadata
      Src: /src/opendal/core/layers/immutable-index/src/lib.rs:489,1
    - Dst: Metadata::mode
      Src: /src/opendal/core/layers/immutable-index/src/lib.rs:489,1
    - Dst: HashMap::new
      Src: /src/opendal/core/layers/immutable-index/src/lib.rs:496,1
    - Dst: HashSet::new
      Src: /src/opendal/core/layers/immutable-index/src/lib.rs:497,1
    - Dst: lister
      Src: /src/opendal/core/layers/immutable-index/src/lib.rs:498,1
    - Dst: try_next
      Src: /src/opendal/core/layers/immutable-index/src/lib.rs:499,1
    - Dst: Result::insert
      Src: /src/opendal/core/layers/immutable-index/src/lib.rs:505,1
    - Dst: crate::Entry::path
      Src: /src/opendal/core/layers/immutable-index/src/lib.rs:505,1
    - Dst: String::to_string
      Src: /src/opendal/core/layers/immutable-index/src/lib.rs:505,1
    - Dst: crate::Entry::metadata
      Src: /src/opendal/core/layers/immutable-index/src/lib.rs:505,1
    - Dst: Metadata::mode
      Src: /src/opendal/core/layers/immutable-index/src/lib.rs:505,1
    - Dst: Ok
      Src: /src/opendal/core/layers/immutable-index/src/lib.rs:511,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 66
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 512
      start: 465
    functionDepth: 34
    functionLinenumber: 465
    functionLinenumberEnd: 512
    functionName: tests::test_list_dir
    functionSourceFile: /src/opendal/core/layers/immutable-index/src/lib.rs
    functionUses: 0
    functionsReached:
    - crate::Entry::path
    - Result::to_string
    - Ok
    - Self::insert
    - Result::insert
    - try_next
    - HashMap::new
    - lister
    - crate::Entry::metadata
    - HashSet::new
    - String::to_string
    - build_operator
    - ImmutableIndexLayer::default
    - setup
    - Metadata::mode
    linkageType: ''
    returnType: Result
    signature: async fn test_list_dir() -> Result<()>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: setup
      Src: /src/opendal/core/layers/immutable-index/src/lib.rs:516,1
    - Dst: ImmutableIndexLayer::default
      Src: /src/opendal/core/layers/immutable-index/src/lib.rs:518,1
    - Dst: Self::insert
      Src: /src/opendal/core/layers/immutable-index/src/lib.rs:524,1
    - Dst: Result::to_string
      Src: /src/opendal/core/layers/immutable-index/src/lib.rs:524,1
    - Dst: build_operator
      Src: /src/opendal/core/layers/immutable-index/src/lib.rs:527,1
    - Dst: lister_with
      Src: /src/opendal/core/layers/immutable-index/src/lib.rs:529,1
    - Dst: FutureLister::recursive
      Src: /src/opendal/core/layers/immutable-index/src/lib.rs:529,1
    - Dst: HashMap::new
      Src: /src/opendal/core/layers/immutable-index/src/lib.rs:531,1
    - Dst: HashSet::new
      Src: /src/opendal/core/layers/immutable-index/src/lib.rs:532,1
    - Dst: try_next
      Src: /src/opendal/core/layers/immutable-index/src/lib.rs:533,1
    - Dst: Result::insert
      Src: /src/opendal/core/layers/immutable-index/src/lib.rs:539,1
    - Dst: crate::Entry::path
      Src: /src/opendal/core/layers/immutable-index/src/lib.rs:539,1
    - Dst: String::to_string
      Src: /src/opendal/core/layers/immutable-index/src/lib.rs:539,1
    - Dst: crate::Entry::metadata
      Src: /src/opendal/core/layers/immutable-index/src/lib.rs:539,1
    - Dst: Metadata::mode
      Src: /src/opendal/core/layers/immutable-index/src/lib.rs:539,1
    - Dst: Ok
      Src: /src/opendal/core/layers/immutable-index/src/lib.rs:547,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 43
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 548
      start: 515
    functionDepth: 34
    functionLinenumber: 515
    functionLinenumberEnd: 548
    functionName: tests::test_walk_top_down_dir
    functionSourceFile: /src/opendal/core/layers/immutable-index/src/lib.rs
    functionUses: 0
    functionsReached:
    - crate::Entry::path
    - lister_with
    - Result::to_string
    - Ok
    - FutureLister::recursive
    - Self::insert
    - Result::insert
    - try_next
    - HashMap::new
    - crate::Entry::metadata
    - HashSet::new
    - String::to_string
    - build_operator
    - ImmutableIndexLayer::default
    - setup
    - Metadata::mode
    linkageType: ''
    returnType: Result
    signature: async fn test_walk_top_down_dir() -> Result<()>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self::default
      Src: /src/opendal/core/layers/capability-check/src/lib.rs:65,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 66
      start: 64
    functionDepth: 3
    functionLinenumber: 64
    functionLinenumberEnd: 66
    functionName: CapabilityCheckLayer::new
    functionSourceFile: /src/opendal/core/layers/capability-check/src/lib.rs
    functionUses: 0
    functionsReached:
    - Self::default
    linkageType: ''
    returnType: Self
    signature: pub fn new() -> Self
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Arc::new
      Src: /src/opendal/core/layers/capability-check/src/lib.rs:71,1
    - Dst: CapabilityCheckLayer::layer
      Src: /src/opendal/core/layers/capability-check/src/lib.rs:71,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - inner
    argTypes:
    - Servicer
    constantsTouched: []
    func_position:
      end: 72
      start: 70
    functionDepth: 2
    functionLinenumber: 70
    functionLinenumberEnd: 72
    functionName: CapabilityCheckLayer::apply_service
    functionSourceFile: /src/opendal/core/layers/capability-check/src/lib.rs
    functionUses: 0
    functionsReached:
    - Arc::new
    - CapabilityCheckLayer::layer
    linkageType: ''
    returnType: Servicer
    signature: 'fn apply_service(&self, inner: Servicer) -> Servicer'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - inner
    argTypes:
    - Servicer
    constantsTouched: []
    func_position:
      end: 78
      start: 76
    functionDepth: 0
    functionLinenumber: 76
    functionLinenumberEnd: 78
    functionName: CapabilityCheckLayer::layer
    functionSourceFile: /src/opendal/core/layers/capability-check/src/lib.rs
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: CapabilityCheckService
    signature: 'fn layer(&self, inner: Servicer) -> CapabilityCheckService'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: into_static
      Src: /src/opendal/core/core/src/layers/correctness_check.rs:64,1
    - Dst: Error::new
      Src: /src/opendal/core/core/src/layers/correctness_check.rs:66,1
    - Dst: Self::with_operation
      Src: /src/opendal/core/core/src/layers/correctness_check.rs:66,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - scheme
    - op
    - args
    argTypes:
    - '&''static str'
    - Operation
    - '&str'
    constantsTouched: []
    func_position:
      end: 71
      start: 63
    functionDepth: 30
    functionLinenumber: 63
    functionLinenumberEnd: 71
    functionName: new_unsupported_error
    functionSourceFile: /src/opendal/core/core/src/layers/correctness_check.rs
    functionUses: 9
    functionsReached:
    - Self::with_operation
    - into_static
    - Error::new
    linkageType: ''
    returnType: Error
    signature: 'pub(crate) fn new_unsupported_error(scheme: &''static str, op: Operation,
      args: &str) -> Error'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: info
      Src: /src/opendal/core/layers/capability-check/src/lib.rs:106,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 107
      start: 105
    functionDepth: 2
    functionLinenumber: 105
    functionLinenumberEnd: 107
    functionName: CapabilityCheckService::info
    functionSourceFile: /src/opendal/core/layers/capability-check/src/lib.rs
    functionUses: 3
    functionsReached:
    - info
    linkageType: ''
    returnType: ServiceInfo
    signature: fn info(&self) -> ServiceInfo
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: capability
      Src: /src/opendal/core/layers/capability-check/src/lib.rs:110,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 111
      start: 109
    functionDepth: 2
    functionLinenumber: 109
    functionLinenumberEnd: 111
    functionName: CapabilityCheckService::capability
    functionSourceFile: /src/opendal/core/layers/capability-check/src/lib.rs
    functionUses: 3
    functionsReached:
    - capability
    linkageType: ''
    returnType: Capability
    signature: fn capability(&self) -> Capability
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: create_dir
      Src: /src/opendal/core/layers/capability-check/src/lib.rs:119,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpCreateDir
    constantsTouched: []
    func_position:
      end: 120
      start: 113
    functionDepth: 35
    functionLinenumber: 113
    functionLinenumberEnd: 120
    functionName: CapabilityCheckService::create_dir
    functionSourceFile: /src/opendal/core/layers/capability-check/src/lib.rs
    functionUses: 0
    functionsReached:
    - create_dir
    linkageType: ''
    returnType: Result
    signature: 'async fn create_dir(&self,ctx: &OperationContext,path: &str,args:
      OpCreateDir,) -> Result<RpCreateDir>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: stat
      Src: /src/opendal/core/layers/capability-check/src/lib.rs:123,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpStat
    constantsTouched: []
    func_position:
      end: 124
      start: 122
    functionDepth: 31
    functionLinenumber: 122
    functionLinenumberEnd: 124
    functionName: CapabilityCheckService::stat
    functionSourceFile: /src/opendal/core/layers/capability-check/src/lib.rs
    functionUses: 0
    functionsReached:
    - stat
    linkageType: ''
    returnType: Result
    signature: 'async fn stat(&self, ctx: &OperationContext, path: &str, args: OpStat)
      -> Result<RpStat>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: read
      Src: /src/opendal/core/layers/capability-check/src/lib.rs:127,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpRead
    constantsTouched: []
    func_position:
      end: 128
      start: 126
    functionDepth: 31
    functionLinenumber: 126
    functionLinenumberEnd: 128
    functionName: CapabilityCheckService::read
    functionSourceFile: /src/opendal/core/layers/capability-check/src/lib.rs
    functionUses: 0
    functionsReached:
    - read
    linkageType: ''
    returnType: Result
    signature: 'fn read(&self, ctx: &OperationContext, path: &str, args: OpRead) ->
      Result<Self::Reader>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: CapabilityCheckService::capability
      Src: /src/opendal/core/layers/capability-check/src/lib.rs:131,1
    - Dst: CapabilityCheckService::info
      Src: /src/opendal/core/layers/capability-check/src/lib.rs:132,1
    - Dst: OpStat::content_type
      Src: /src/opendal/core/layers/capability-check/src/lib.rs:133,1
    - Dst: Result::is_some
      Src: /src/opendal/core/layers/capability-check/src/lib.rs:133,1
    - Dst: Err
      Src: /src/opendal/core/layers/capability-check/src/lib.rs:134,1
    - Dst: new_unsupported_error
      Src: /src/opendal/core/layers/capability-check/src/lib.rs:134,1
    - Dst: OpStat::cache_control
      Src: /src/opendal/core/layers/capability-check/src/lib.rs:140,1
    - Dst: Result::is_some
      Src: /src/opendal/core/layers/capability-check/src/lib.rs:140,1
    - Dst: Err
      Src: /src/opendal/core/layers/capability-check/src/lib.rs:141,1
    - Dst: new_unsupported_error
      Src: /src/opendal/core/layers/capability-check/src/lib.rs:141,1
    - Dst: OpStat::content_disposition
      Src: /src/opendal/core/layers/capability-check/src/lib.rs:147,1
    - Dst: Result::is_some
      Src: /src/opendal/core/layers/capability-check/src/lib.rs:147,1
    - Dst: Err
      Src: /src/opendal/core/layers/capability-check/src/lib.rs:148,1
    - Dst: new_unsupported_error
      Src: /src/opendal/core/layers/capability-check/src/lib.rs:148,1
    - Dst: write
      Src: /src/opendal/core/layers/capability-check/src/lib.rs:155,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 49
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpWrite
    constantsTouched: []
    func_position:
      end: 156
      start: 130
    functionDepth: 32
    functionLinenumber: 130
    functionLinenumberEnd: 156
    functionName: CapabilityCheckService::write
    functionSourceFile: /src/opendal/core/layers/capability-check/src/lib.rs
    functionUses: 0
    functionsReached:
    - CapabilityCheckService::capability
    - new_unsupported_error
    - OpStat::content_disposition
    - OpStat::cache_control
    - Err
    - CapabilityCheckService::info
    - Result::is_some
    - write
    - OpStat::content_type
    linkageType: ''
    returnType: Result
    signature: 'fn write(&self, ctx: &OperationContext, path: &str, args: OpWrite)
      -> Result<Self::Writer>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: CapabilityCheckService::capability
      Src: /src/opendal/core/layers/capability-check/src/lib.rs:166,1
    - Dst: CapabilityCheckService::info
      Src: /src/opendal/core/layers/capability-check/src/lib.rs:167,1
    - Dst: OpStat::if_not_exists
      Src: /src/opendal/core/layers/capability-check/src/lib.rs:168,1
    - Dst: Err
      Src: /src/opendal/core/layers/capability-check/src/lib.rs:169,1
    - Dst: new_unsupported_error
      Src: /src/opendal/core/layers/capability-check/src/lib.rs:169,1
    - Dst: OpStat::if_match
      Src: /src/opendal/core/layers/capability-check/src/lib.rs:175,1
    - Dst: Option::is_some
      Src: /src/opendal/core/layers/capability-check/src/lib.rs:175,1
    - Dst: Err
      Src: /src/opendal/core/layers/capability-check/src/lib.rs:176,1
    - Dst: new_unsupported_error
      Src: /src/opendal/core/layers/capability-check/src/lib.rs:176,1
    - Dst: OpStat::source_version
      Src: /src/opendal/core/layers/capability-check/src/lib.rs:178,1
    - Dst: Self::is_some
      Src: /src/opendal/core/layers/capability-check/src/lib.rs:178,1
    - Dst: Err
      Src: /src/opendal/core/layers/capability-check/src/lib.rs:179,1
    - Dst: new_unsupported_error
      Src: /src/opendal/core/layers/capability-check/src/lib.rs:179,1
    - Dst: copy
      Src: /src/opendal/core/layers/capability-check/src/lib.rs:186,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 47
    argCount: 5
    argNames:
    - ctx
    - from
    - to
    - args
    - opts
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    - OpCopy
    - OpCopier
    constantsTouched: []
    func_position:
      end: 187
      start: 158
    functionDepth: 32
    functionLinenumber: 158
    functionLinenumberEnd: 187
    functionName: CapabilityCheckService::copy
    functionSourceFile: /src/opendal/core/layers/capability-check/src/lib.rs
    functionUses: 0
    functionsReached:
    - Option::is_some
    - CapabilityCheckService::capability
    - new_unsupported_error
    - Err
    - CapabilityCheckService::info
    - copy
    - OpStat::source_version
    - Self::is_some
    - OpStat::if_match
    - OpStat::if_not_exists
    linkageType: ''
    returnType: Result
    signature: 'fn copy(&self,ctx: &OperationContext,from: &str,to: &str,args: OpCopy,opts:
      OpCopier,) -> Result<Self::Copier>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: delete
      Src: /src/opendal/core/layers/capability-check/src/lib.rs:190,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - '&OperationContext'
    constantsTouched: []
    func_position:
      end: 191
      start: 189
    functionDepth: 32
    functionLinenumber: 189
    functionLinenumberEnd: 191
    functionName: CapabilityCheckService::delete
    functionSourceFile: /src/opendal/core/layers/capability-check/src/lib.rs
    functionUses: 0
    functionsReached:
    - delete
    linkageType: ''
    returnType: Result
    signature: 'fn delete(&self, ctx: &OperationContext) -> Result<Self::Deleter>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: CapabilityCheckService::capability
      Src: /src/opendal/core/layers/capability-check/src/lib.rs:194,1
    - Dst: OpStat::versions
      Src: /src/opendal/core/layers/capability-check/src/lib.rs:195,1
    - Dst: CapabilityCheckService::info
      Src: /src/opendal/core/layers/capability-check/src/lib.rs:196,1
    - Dst: Err
      Src: /src/opendal/core/layers/capability-check/src/lib.rs:197,1
    - Dst: new_unsupported_error
      Src: /src/opendal/core/layers/capability-check/src/lib.rs:197,1
    - Dst: list
      Src: /src/opendal/core/layers/capability-check/src/lib.rs:200,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 19
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpList
    constantsTouched: []
    func_position:
      end: 201
      start: 193
    functionDepth: 35
    functionLinenumber: 193
    functionLinenumberEnd: 201
    functionName: CapabilityCheckService::list
    functionSourceFile: /src/opendal/core/layers/capability-check/src/lib.rs
    functionUses: 0
    functionsReached:
    - CapabilityCheckService::capability
    - OpStat::versions
    - new_unsupported_error
    - Err
    - list
    - CapabilityCheckService::info
    linkageType: ''
    returnType: Result
    signature: 'fn list(&self, ctx: &OperationContext, path: &str, args: OpList) ->
      Result<Self::Lister>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: rename
      Src: /src/opendal/core/layers/capability-check/src/lib.rs:210,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 4
    argNames:
    - ctx
    - from
    - to
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    - OpRename
    constantsTouched: []
    func_position:
      end: 211
      start: 203
    functionDepth: 2
    functionLinenumber: 203
    functionLinenumberEnd: 211
    functionName: CapabilityCheckService::rename
    functionSourceFile: /src/opendal/core/layers/capability-check/src/lib.rs
    functionUses: 0
    functionsReached:
    - rename
    linkageType: ''
    returnType: Result
    signature: 'async fn rename(&self,ctx: &OperationContext,from: &str,to: &str,args:
      OpRename,) -> Result<RpRename>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: presign
      Src: /src/opendal/core/layers/capability-check/src/lib.rs:219,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpPresign
    constantsTouched: []
    func_position:
      end: 220
      start: 213
    functionDepth: 2
    functionLinenumber: 213
    functionLinenumberEnd: 220
    functionName: CapabilityCheckService::presign
    functionSourceFile: /src/opendal/core/layers/capability-check/src/lib.rs
    functionUses: 0
    functionsReached:
    - presign
    linkageType: ''
    returnType: Result
    signature: 'async fn presign(&self,ctx: &OperationContext,path: &str,args: OpPresign,)
      -> Result<RpPresign>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Operator::from_parts
      Src: /src/opendal/core/core/src/layers/correctness_check.rs:463,1
    - Dst: OperationContext::default
      Src: /src/opendal/core/core/src/layers/correctness_check.rs:463,1
    - Dst: Arc::new
      Src: /src/opendal/core/core/src/layers/correctness_check.rs:463,1
    - Dst: Self::layer
      Src: /src/opendal/core/core/src/layers/correctness_check.rs:463,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - capability
    argTypes:
    - Capability
    constantsTouched: []
    func_position:
      end: 465
      start: 460
    functionDepth: 3
    functionLinenumber: 460
    functionLinenumberEnd: 465
    functionName: tests::new_test_operator
    functionSourceFile: /src/opendal/core/core/src/layers/correctness_check.rs
    functionUses: 0
    functionsReached:
    - Operator::from_parts
    - Arc::new
    - OperationContext::default
    - Self::layer
    linkageType: ''
    returnType: Operator
    signature: 'fn new_test_operator(capability: Capability) -> Operator'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: new_test_operator
      Src: /src/opendal/core/layers/capability-check/src/lib.rs:332,1
    - Dst: Default::default
      Src: /src/opendal/core/layers/capability-check/src/lib.rs:334,1
    - Dst: writer_with
      Src: /src/opendal/core/layers/capability-check/src/lib.rs:336,1
    - Dst: content_type
      Src: /src/opendal/core/layers/capability-check/src/lib.rs:336,1
    - Dst: writer_with
      Src: /src/opendal/core/layers/capability-check/src/lib.rs:339,1
    - Dst: cache_control
      Src: /src/opendal/core/layers/capability-check/src/lib.rs:339,1
    - Dst: writer_with
      Src: /src/opendal/core/layers/capability-check/src/lib.rs:342,1
    - Dst: content_disposition
      Src: /src/opendal/core/layers/capability-check/src/lib.rs:342,1
    - Dst: new_test_operator
      Src: /src/opendal/core/layers/capability-check/src/lib.rs:348,1
    - Dst: Default::default
      Src: /src/opendal/core/layers/capability-check/src/lib.rs:353,1
    - Dst: writer_with
      Src: /src/opendal/core/layers/capability-check/src/lib.rs:355,1
    - Dst: content_type
      Src: /src/opendal/core/layers/capability-check/src/lib.rs:355,1
    - Dst: writer_with
      Src: /src/opendal/core/layers/capability-check/src/lib.rs:358,1
    - Dst: cache_control
      Src: /src/opendal/core/layers/capability-check/src/lib.rs:358,1
    - Dst: writer_with
      Src: /src/opendal/core/layers/capability-check/src/lib.rs:361,1
    - Dst: content_disposition
      Src: /src/opendal/core/layers/capability-check/src/lib.rs:361,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 42
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 366
      start: 331
    functionDepth: 32
    functionLinenumber: 331
    functionLinenumberEnd: 366
    functionName: tests::test_writer_with
    functionSourceFile: /src/opendal/core/layers/capability-check/src/lib.rs
    functionUses: 0
    functionsReached:
    - new_test_operator
    - cache_control
    - Default::default
    - writer_with
    - content_disposition
    - content_type
    linkageType: ''
    returnType: void
    signature: async fn test_writer_with()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: new_test_operator
      Src: /src/opendal/core/layers/capability-check/src/lib.rs:370,1
    - Dst: Default::default
      Src: /src/opendal/core/layers/capability-check/src/lib.rs:372,1
    - Dst: list_with
      Src: /src/opendal/core/layers/capability-check/src/lib.rs:374,1
    - Dst: versions
      Src: /src/opendal/core/layers/capability-check/src/lib.rs:374,1
    - Dst: new_test_operator
      Src: /src/opendal/core/layers/capability-check/src/lib.rs:378,1
    - Dst: Default::default
      Src: /src/opendal/core/layers/capability-check/src/lib.rs:381,1
    - Dst: lister_with
      Src: /src/opendal/core/layers/capability-check/src/lib.rs:383,1
    - Dst: FutureLister::versions
      Src: /src/opendal/core/layers/capability-check/src/lib.rs:383,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 18
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 385
      start: 369
    functionDepth: 35
    functionLinenumber: 369
    functionLinenumberEnd: 385
    functionName: tests::test_list_with
    functionSourceFile: /src/opendal/core/layers/capability-check/src/lib.rs
    functionUses: 0
    functionsReached:
    - lister_with
    - new_test_operator
    - versions
    - Default::default
    - FutureLister::versions
    - list_with
    linkageType: ''
    returnType: void
    signature: async fn test_list_with()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self
      Src: /src/opendal/bindings/python/src/layers/mime_guess.rs:55,1
    - Dst: ocore::layers::MimeGuessLayer::default
      Src: /src/opendal/bindings/python/src/layers/mime_guess.rs:55,1
    - Dst: PyClassInitializer::from
      Src: /src/opendal/bindings/python/src/layers/mime_guess.rs:57,1
    - Dst: super::Layer
      Src: /src/opendal/bindings/python/src/layers/mime_guess.rs:57,1
    - Dst: Box::new
      Src: /src/opendal/bindings/python/src/layers/mime_guess.rs:57,1
    - Dst: clone
      Src: /src/opendal/bindings/python/src/layers/mime_guess.rs:57,1
    - Dst: Result::add_subclass
      Src: /src/opendal/bindings/python/src/layers/mime_guess.rs:57,1
    - Dst: Ok
      Src: /src/opendal/bindings/python/src/layers/mime_guess.rs:58,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 59
      start: 54
    functionDepth: 32
    functionLinenumber: 54
    functionLinenumberEnd: 59
    functionName: MimeGuessLayer::new
    functionSourceFile: /src/opendal/bindings/python/src/layers/mime_guess.rs
    functionUses: 1
    functionsReached:
    - Ok
    - Box::new
    - clone
    - Self
    - PyClassInitializer::from
    - Result::add_subclass
    - super::Layer
    - ocore::layers::MimeGuessLayer::default
    linkageType: ''
    returnType: PyResult
    signature: fn new() -> PyResult<PyClassInitializer<Self>>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Arc::new
      Src: /src/opendal/core/layers/mime-guess/src/lib.rs:79,1
    - Dst: MimeGuessLayer::layer
      Src: /src/opendal/core/layers/mime-guess/src/lib.rs:79,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - inner
    argTypes:
    - Servicer
    constantsTouched: []
    func_position:
      end: 80
      start: 78
    functionDepth: 4
    functionLinenumber: 78
    functionLinenumberEnd: 80
    functionName: MimeGuessLayer::apply_service
    functionSourceFile: /src/opendal/core/layers/mime-guess/src/lib.rs
    functionUses: 0
    functionsReached:
    - Arc::new
    - MimeGuessLayer::layer
    linkageType: ''
    returnType: Servicer
    signature: 'fn apply_service(&self, inner: Servicer) -> Servicer'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: layer
      Src: /src/opendal/bindings/python/src/layers/mime_guess.rs:43,1
    - Dst: clone
      Src: /src/opendal/bindings/python/src/layers/mime_guess.rs:43,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - op
    argTypes:
    - Operator
    constantsTouched: []
    func_position:
      end: 44
      start: 42
    functionDepth: 3
    functionLinenumber: 42
    functionLinenumberEnd: 44
    functionName: MimeGuessLayer::layer
    functionSourceFile: /src/opendal/bindings/python/src/layers/mime_guess.rs
    functionUses: 1
    functionsReached:
    - layer
    - clone
    linkageType: ''
    returnType: Operator
    signature: 'fn layer(&self, op: Operator) -> Operator'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: mime_guess::from_path
      Src: /src/opendal/core/layers/mime-guess/src/lib.rs:94,1
    - Dst: Option::first_raw
      Src: /src/opendal/core/layers/mime-guess/src/lib.rs:94,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - path
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 95
      start: 93
    functionDepth: 1
    functionLinenumber: 93
    functionLinenumberEnd: 95
    functionName: mime_from_path
    functionSourceFile: /src/opendal/core/layers/mime-guess/src/lib.rs
    functionUses: 2
    functionsReached:
    - mime_guess::from_path
    - Option::first_raw
    linkageType: ''
    returnType: Option
    signature: 'fn mime_from_path(path: &str) -> Option<&str>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: content_type
      Src: /src/opendal/core/layers/mime-guess/src/lib.rs:98,1
    - Dst: Result::is_some
      Src: /src/opendal/core/layers/mime-guess/src/lib.rs:98,1
    - Dst: mime_from_path
      Src: /src/opendal/core/layers/mime-guess/src/lib.rs:102,1
    - Dst: with_content_type
      Src: /src/opendal/core/layers/mime-guess/src/lib.rs:103,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 15
    argCount: 2
    argNames:
    - path
    - op
    argTypes:
    - '&str'
    - OpWrite
    constantsTouched: []
    func_position:
      end: 107
      start: 97
    functionDepth: 32
    functionLinenumber: 97
    functionLinenumberEnd: 107
    functionName: opwrite_with_mime
    functionSourceFile: /src/opendal/core/layers/mime-guess/src/lib.rs
    functionUses: 1
    functionsReached:
    - with_content_type
    - Result::is_some
    - mime_from_path
    - content_type
    linkageType: ''
    returnType: OpWrite
    signature: 'fn opwrite_with_mime(path: &str, op: OpWrite) -> OpWrite'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: RpRead::map_metadata
      Src: /src/opendal/core/layers/mime-guess/src/lib.rs:110,1
    - Dst: anyhow::Result::content_type
      Src: /src/opendal/core/layers/mime-guess/src/lib.rs:111,1
    - Dst: Result::is_some
      Src: /src/opendal/core/layers/mime-guess/src/lib.rs:111,1
    - Dst: mime_from_path
      Src: /src/opendal/core/layers/mime-guess/src/lib.rs:115,1
    - Dst: anyhow::Result::with_content_type
      Src: /src/opendal/core/layers/mime-guess/src/lib.rs:116,1
    - Dst: OpWrite::into
      Src: /src/opendal/core/layers/mime-guess/src/lib.rs:116,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 20
    argCount: 2
    argNames:
    - path
    - rp
    argTypes:
    - '&str'
    - RpStat
    constantsTouched: []
    func_position:
      end: 121
      start: 109
    functionDepth: 29
    functionLinenumber: 109
    functionLinenumberEnd: 121
    functionName: rpstat_with_mime
    functionSourceFile: /src/opendal/core/layers/mime-guess/src/lib.rs
    functionUses: 1
    functionsReached:
    - mime_from_path
    - anyhow::Result::content_type
    - OpWrite::into
    - anyhow::Result::with_content_type
    - Result::is_some
    - RpRead::map_metadata
    linkageType: ''
    returnType: RpStat
    signature: 'fn rpstat_with_mime(path: &str, rp: RpStat) -> RpStat'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: info
      Src: /src/opendal/core/layers/mime-guess/src/lib.rs:131,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 132
      start: 130
    functionDepth: 2
    functionLinenumber: 130
    functionLinenumberEnd: 132
    functionName: MimeGuessAccessor::info
    functionSourceFile: /src/opendal/core/layers/mime-guess/src/lib.rs
    functionUses: 0
    functionsReached:
    - info
    linkageType: ''
    returnType: ServiceInfo
    signature: fn info(&self) -> ServiceInfo
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: capability
      Src: /src/opendal/core/layers/mime-guess/src/lib.rs:135,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 136
      start: 134
    functionDepth: 2
    functionLinenumber: 134
    functionLinenumberEnd: 136
    functionName: MimeGuessAccessor::capability
    functionSourceFile: /src/opendal/core/layers/mime-guess/src/lib.rs
    functionUses: 0
    functionsReached:
    - capability
    linkageType: ''
    returnType: Capability
    signature: fn capability(&self) -> Capability
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: create_dir
      Src: /src/opendal/core/layers/mime-guess/src/lib.rs:144,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpCreateDir
    constantsTouched: []
    func_position:
      end: 145
      start: 138
    functionDepth: 35
    functionLinenumber: 138
    functionLinenumberEnd: 145
    functionName: MimeGuessAccessor::create_dir
    functionSourceFile: /src/opendal/core/layers/mime-guess/src/lib.rs
    functionUses: 0
    functionsReached:
    - create_dir
    linkageType: ''
    returnType: Result
    signature: 'async fn create_dir(&self,ctx: &OperationContext,path: &str,args:
      OpCreateDir,) -> Result<RpCreateDir>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: read
      Src: /src/opendal/core/layers/mime-guess/src/lib.rs:148,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpRead
    constantsTouched: []
    func_position:
      end: 149
      start: 147
    functionDepth: 31
    functionLinenumber: 147
    functionLinenumberEnd: 149
    functionName: MimeGuessAccessor::read
    functionSourceFile: /src/opendal/core/layers/mime-guess/src/lib.rs
    functionUses: 0
    functionsReached:
    - read
    linkageType: ''
    returnType: Result
    signature: 'fn read(&self, ctx: &OperationContext, path: &str, args: OpRead) ->
      Result<Self::Reader>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: write
      Src: /src/opendal/core/layers/mime-guess/src/lib.rs:152,1
    - Dst: opwrite_with_mime
      Src: /src/opendal/core/layers/mime-guess/src/lib.rs:152,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpWrite
    constantsTouched: []
    func_position:
      end: 153
      start: 151
    functionDepth: 36
    functionLinenumber: 151
    functionLinenumberEnd: 153
    functionName: MimeGuessAccessor::write
    functionSourceFile: /src/opendal/core/layers/mime-guess/src/lib.rs
    functionUses: 0
    functionsReached:
    - opwrite_with_mime
    - write
    linkageType: ''
    returnType: Result
    signature: 'fn write(&self, ctx: &OperationContext, path: &str, args: OpWrite)
      -> Result<Self::Writer>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: copy
      Src: /src/opendal/core/layers/mime-guess/src/lib.rs:163,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 5
    argNames:
    - ctx
    - from
    - to
    - args
    - opts
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    - OpCopy
    - OpCopier
    constantsTouched: []
    func_position:
      end: 164
      start: 155
    functionDepth: 34
    functionLinenumber: 155
    functionLinenumberEnd: 164
    functionName: MimeGuessAccessor::copy
    functionSourceFile: /src/opendal/core/layers/mime-guess/src/lib.rs
    functionUses: 0
    functionsReached:
    - copy
    linkageType: ''
    returnType: Result
    signature: 'fn copy(&self,ctx: &OperationContext,from: &str,to: &str,args: OpCopy,opts:
      OpCopier,) -> Result<Self::Copier>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: stat
      Src: /src/opendal/core/layers/mime-guess/src/lib.rs:167,1
    - Dst: map
      Src: /src/opendal/core/layers/mime-guess/src/lib.rs:167,1
    - Dst: rpstat_with_mime
      Src: /src/opendal/core/layers/mime-guess/src/lib.rs:170,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpStat
    constantsTouched: []
    func_position:
      end: 171
      start: 166
    functionDepth: 31
    functionLinenumber: 166
    functionLinenumberEnd: 171
    functionName: MimeGuessAccessor::stat
    functionSourceFile: /src/opendal/core/layers/mime-guess/src/lib.rs
    functionUses: 0
    functionsReached:
    - map
    - rpstat_with_mime
    - stat
    linkageType: ''
    returnType: Result
    signature: 'async fn stat(&self, ctx: &OperationContext, path: &str, args: OpStat)
      -> Result<RpStat>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: rename
      Src: /src/opendal/core/layers/mime-guess/src/lib.rs:180,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 4
    argNames:
    - ctx
    - from
    - to
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    - OpRename
    constantsTouched: []
    func_position:
      end: 181
      start: 173
    functionDepth: 2
    functionLinenumber: 173
    functionLinenumberEnd: 181
    functionName: MimeGuessAccessor::rename
    functionSourceFile: /src/opendal/core/layers/mime-guess/src/lib.rs
    functionUses: 0
    functionsReached:
    - rename
    linkageType: ''
    returnType: Result
    signature: 'async fn rename(&self,ctx: &OperationContext,from: &str,to: &str,args:
      OpRename,) -> Result<RpRename>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: delete
      Src: /src/opendal/core/layers/mime-guess/src/lib.rs:184,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - '&OperationContext'
    constantsTouched: []
    func_position:
      end: 185
      start: 183
    functionDepth: 32
    functionLinenumber: 183
    functionLinenumberEnd: 185
    functionName: MimeGuessAccessor::delete
    functionSourceFile: /src/opendal/core/layers/mime-guess/src/lib.rs
    functionUses: 0
    functionsReached:
    - delete
    linkageType: ''
    returnType: Result
    signature: 'fn delete(&self, ctx: &OperationContext) -> Result<Self::Deleter>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: list
      Src: /src/opendal/core/layers/mime-guess/src/lib.rs:188,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpList
    constantsTouched: []
    func_position:
      end: 189
      start: 187
    functionDepth: 2
    functionLinenumber: 187
    functionLinenumberEnd: 189
    functionName: MimeGuessAccessor::list
    functionSourceFile: /src/opendal/core/layers/mime-guess/src/lib.rs
    functionUses: 0
    functionsReached:
    - list
    linkageType: ''
    returnType: Result
    signature: 'fn list(&self, ctx: &OperationContext, path: &str, args: OpList) ->
      Result<Self::Lister>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: presign
      Src: /src/opendal/core/layers/mime-guess/src/lib.rs:197,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpPresign
    constantsTouched: []
    func_position:
      end: 198
      start: 191
    functionDepth: 2
    functionLinenumber: 191
    functionLinenumberEnd: 198
    functionName: MimeGuessAccessor::presign
    functionSourceFile: /src/opendal/core/layers/mime-guess/src/lib.rs
    functionUses: 0
    functionsReached:
    - presign
    linkageType: ''
    returnType: Result
    signature: 'async fn presign(&self,ctx: &OperationContext,path: &str,args: OpPresign,)
      -> Result<RpPresign>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Operator::new
      Src: /src/opendal/core/layers/mime-guess/src/lib.rs:213,1
    - Dst: services::Memory::default
      Src: /src/opendal/core/layers/mime-guess/src/lib.rs:213,1
    - Dst: layer
      Src: /src/opendal/core/layers/mime-guess/src/lib.rs:213,1
    - Dst: MimeGuessLayer::new
      Src: /src/opendal/core/layers/mime-guess/src/lib.rs:213,1
    - Dst: write
      Src: /src/opendal/core/layers/mime-guess/src/lib.rs:215,1
    - Dst: write
      Src: /src/opendal/core/layers/mime-guess/src/lib.rs:218,1
    - Dst: write_with
      Src: /src/opendal/core/layers/mime-guess/src/lib.rs:221,1
    - Dst: content_type
      Src: /src/opendal/core/layers/mime-guess/src/lib.rs:221,1
    - Dst: lister_with
      Src: /src/opendal/core/layers/mime-guess/src/lib.rs:226,1
    - Dst: and_then
      Src: /src/opendal/core/layers/mime-guess/src/lib.rs:226,1
    - Dst: clone
      Src: /src/opendal/core/layers/mime-guess/src/lib.rs:230,1
    - Dst: stat
      Src: /src/opendal/core/layers/mime-guess/src/lib.rs:231,1
    - Dst: crate::Entry::path
      Src: /src/opendal/core/layers/mime-guess/src/lib.rs:231,1
    - Dst: "lister_with(\"\")\n            .await?\n            .and_then(|entry|\
        \ {\n                let op = op.clone();\n                async move { op.stat(entry.path()).await\
        \ }\n            })\n            .try_collect::<Vec<_>>"
      Src: /src/opendal/core/layers/mime-guess/src/lib.rs:226,1
    - Dst: Ok
      Src: /src/opendal/core/layers/mime-guess/src/lib.rs:239,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 50
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 240
      start: 212
    functionDepth: 33
    functionLinenumber: 212
    functionLinenumberEnd: 240
    functionName: tests::test_async
    functionSourceFile: /src/opendal/core/layers/mime-guess/src/lib.rs
    functionUses: 0
    functionsReached:
    - crate::Entry::path
    - lister_with
    - Operator::new
    - and_then
    - Ok
    - clone
    - MimeGuessLayer::new
    - "lister_with(\"\")\n            .await?\n            .and_then(|entry| {\n \
      \               let op = op.clone();\n                async move { op.stat(entry.path()).await\
      \ }\n            })\n            .try_collect::<Vec<_>>"
    - content_type
    - services::Memory::default
    - write_with
    - layer
    - write
    - stat
    linkageType: ''
    returnType: Result
    signature: async fn test_async() -> Result<()>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self::default
      Src: /src/opendal/core/layers/hotpath/src/lib.rs:84,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 85
      start: 83
    functionDepth: 3
    functionLinenumber: 83
    functionLinenumberEnd: 85
    functionName: HotpathLayer::new
    functionSourceFile: /src/opendal/core/layers/hotpath/src/lib.rs
    functionUses: 0
    functionsReached:
    - Self::default
    linkageType: ''
    returnType: Self
    signature: pub fn new() -> Self
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Arc::new
      Src: /src/opendal/core/layers/hotpath/src/lib.rs:90,1
    - Dst: HotpathLayer::layer
      Src: /src/opendal/core/layers/hotpath/src/lib.rs:90,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - inner
    argTypes:
    - Servicer
    constantsTouched: []
    func_position:
      end: 91
      start: 89
    functionDepth: 2
    functionLinenumber: 89
    functionLinenumberEnd: 91
    functionName: HotpathLayer::apply_service
    functionSourceFile: /src/opendal/core/layers/hotpath/src/lib.rs
    functionUses: 0
    functionsReached:
    - Arc::new
    - HotpathLayer::layer
    linkageType: ''
    returnType: Servicer
    signature: 'fn apply_service(&self, inner: Servicer) -> Servicer'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: HttpTransporter::new
      Src: /src/opendal/core/layers/hotpath/src/lib.rs:94,1
    - Dst: Arc::http_transport
      Src: /src/opendal/core/layers/hotpath/src/lib.rs:95,1
    - Dst: Self::clone
      Src: /src/opendal/core/layers/hotpath/src/lib.rs:95,1
    - Dst: Arc::with_http_transport
      Src: /src/opendal/core/layers/hotpath/src/lib.rs:97,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 2
    argNames:
    - _srv
    - inner
    argTypes:
    - Servicer
    - OperationContext
    constantsTouched: []
    func_position:
      end: 98
      start: 93
    functionDepth: 3
    functionLinenumber: 93
    functionLinenumberEnd: 98
    functionName: HotpathLayer::apply_context
    functionSourceFile: /src/opendal/core/layers/hotpath/src/lib.rs
    functionUses: 0
    functionsReached:
    - Arc::with_http_transport
    - HttpTransporter::new
    - Self::clone
    - Arc::http_transport
    linkageType: ''
    returnType: OperationContext
    signature: 'fn apply_context(&self, _srv: Servicer, inner: OperationContext) ->
      OperationContext'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - inner
    argTypes:
    - Servicer
    constantsTouched: []
    func_position:
      end: 104
      start: 102
    functionDepth: 0
    functionLinenumber: 102
    functionLinenumberEnd: 104
    functionName: HotpathLayer::layer
    functionSourceFile: /src/opendal/core/layers/hotpath/src/lib.rs
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: HotpathAccessor
    signature: 'fn layer(&self, inner: Servicer) -> HotpathAccessor'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: info
      Src: /src/opendal/core/layers/hotpath/src/lib.rs:121,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 122
      start: 120
    functionDepth: 2
    functionLinenumber: 120
    functionLinenumberEnd: 122
    functionName: HotpathAccessor::info
    functionSourceFile: /src/opendal/core/layers/hotpath/src/lib.rs
    functionUses: 0
    functionsReached:
    - info
    linkageType: ''
    returnType: ServiceInfo
    signature: fn info(&self) -> ServiceInfo
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: capability
      Src: /src/opendal/core/layers/hotpath/src/lib.rs:125,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 126
      start: 124
    functionDepth: 2
    functionLinenumber: 124
    functionLinenumberEnd: 126
    functionName: HotpathAccessor::capability
    functionSourceFile: /src/opendal/core/layers/hotpath/src/lib.rs
    functionUses: 0
    functionsReached:
    - capability
    linkageType: ''
    returnType: Capability
    signature: fn capability(&self) -> Capability
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: hotpath::measure_async
      Src: /src/opendal/core/layers/hotpath/src/lib.rs:134,1
    - Dst: create_dir
      Src: /src/opendal/core/layers/hotpath/src/lib.rs:134,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpCreateDir
    constantsTouched: []
    func_position:
      end: 135
      start: 128
    functionDepth: 35
    functionLinenumber: 128
    functionLinenumberEnd: 135
    functionName: HotpathAccessor::create_dir
    functionSourceFile: /src/opendal/core/layers/hotpath/src/lib.rs
    functionUses: 0
    functionsReached:
    - hotpath::measure_async
    - create_dir
    linkageType: ''
    returnType: Result
    signature: 'async fn create_dir(&self,ctx: &OperationContext,path: &str,args:
      OpCreateDir,) -> Result<RpCreateDir>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: read
      Src: /src/opendal/core/layers/hotpath/src/lib.rs:138,1
    - Dst: map
      Src: /src/opendal/core/layers/hotpath/src/lib.rs:138,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpRead
    constantsTouched: []
    func_position:
      end: 139
      start: 137
    functionDepth: 31
    functionLinenumber: 137
    functionLinenumberEnd: 139
    functionName: HotpathAccessor::read
    functionSourceFile: /src/opendal/core/layers/hotpath/src/lib.rs
    functionUses: 0
    functionsReached:
    - read
    - map
    linkageType: ''
    returnType: Result
    signature: 'fn read(&self, ctx: &OperationContext, path: &str, args: OpRead) ->
      Result<Self::Reader>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: write
      Src: /src/opendal/core/layers/hotpath/src/lib.rs:142,1
    - Dst: map
      Src: /src/opendal/core/layers/hotpath/src/lib.rs:142,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpWrite
    constantsTouched: []
    func_position:
      end: 143
      start: 141
    functionDepth: 36
    functionLinenumber: 141
    functionLinenumberEnd: 143
    functionName: HotpathAccessor::write
    functionSourceFile: /src/opendal/core/layers/hotpath/src/lib.rs
    functionUses: 0
    functionsReached:
    - map
    - write
    linkageType: ''
    returnType: Result
    signature: 'fn write(&self, ctx: &OperationContext, path: &str, args: OpWrite)
      -> Result<Self::Writer>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: copy
      Src: /src/opendal/core/layers/hotpath/src/lib.rs:153,1
    - Dst: map
      Src: /src/opendal/core/layers/hotpath/src/lib.rs:153,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 5
    argNames:
    - ctx
    - from
    - to
    - args
    - opts
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    - OpCopy
    - OpCopier
    constantsTouched: []
    func_position:
      end: 156
      start: 145
    functionDepth: 34
    functionLinenumber: 145
    functionLinenumberEnd: 156
    functionName: HotpathAccessor::copy
    functionSourceFile: /src/opendal/core/layers/hotpath/src/lib.rs
    functionUses: 0
    functionsReached:
    - map
    - copy
    linkageType: ''
    returnType: Result
    signature: 'fn copy(&self,ctx: &OperationContext,from: &str,to: &str,args: OpCopy,opts:
      OpCopier,) -> Result<Self::Copier>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: hotpath::measure_async
      Src: /src/opendal/core/layers/hotpath/src/lib.rs:165,1
    - Dst: rename
      Src: /src/opendal/core/layers/hotpath/src/lib.rs:165,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 4
    argNames:
    - ctx
    - from
    - to
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    - OpRename
    constantsTouched: []
    func_position:
      end: 166
      start: 158
    functionDepth: 2
    functionLinenumber: 158
    functionLinenumberEnd: 166
    functionName: HotpathAccessor::rename
    functionSourceFile: /src/opendal/core/layers/hotpath/src/lib.rs
    functionUses: 0
    functionsReached:
    - rename
    - hotpath::measure_async
    linkageType: ''
    returnType: Result
    signature: 'async fn rename(&self,ctx: &OperationContext,from: &str,to: &str,args:
      OpRename,) -> Result<RpRename>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: hotpath::measure_async
      Src: /src/opendal/core/layers/hotpath/src/lib.rs:169,1
    - Dst: stat
      Src: /src/opendal/core/layers/hotpath/src/lib.rs:169,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpStat
    constantsTouched: []
    func_position:
      end: 170
      start: 168
    functionDepth: 31
    functionLinenumber: 168
    functionLinenumberEnd: 170
    functionName: HotpathAccessor::stat
    functionSourceFile: /src/opendal/core/layers/hotpath/src/lib.rs
    functionUses: 0
    functionsReached:
    - hotpath::measure_async
    - stat
    linkageType: ''
    returnType: Result
    signature: 'async fn stat(&self, ctx: &OperationContext, path: &str, args: OpStat)
      -> Result<RpStat>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: delete
      Src: /src/opendal/core/layers/hotpath/src/lib.rs:173,1
    - Dst: map
      Src: /src/opendal/core/layers/hotpath/src/lib.rs:173,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - '&OperationContext'
    constantsTouched: []
    func_position:
      end: 174
      start: 172
    functionDepth: 32
    functionLinenumber: 172
    functionLinenumberEnd: 174
    functionName: HotpathAccessor::delete
    functionSourceFile: /src/opendal/core/layers/hotpath/src/lib.rs
    functionUses: 0
    functionsReached:
    - map
    - delete
    linkageType: ''
    returnType: Result
    signature: 'fn delete(&self, ctx: &OperationContext) -> Result<Self::Deleter>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: list
      Src: /src/opendal/core/layers/hotpath/src/lib.rs:177,1
    - Dst: map
      Src: /src/opendal/core/layers/hotpath/src/lib.rs:177,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpList
    constantsTouched: []
    func_position:
      end: 178
      start: 176
    functionDepth: 2
    functionLinenumber: 176
    functionLinenumberEnd: 178
    functionName: HotpathAccessor::list
    functionSourceFile: /src/opendal/core/layers/hotpath/src/lib.rs
    functionUses: 0
    functionsReached:
    - list
    - map
    linkageType: ''
    returnType: Result
    signature: 'fn list(&self, ctx: &OperationContext, path: &str, args: OpList) ->
      Result<Self::Lister>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: hotpath::measure_async
      Src: /src/opendal/core/layers/hotpath/src/lib.rs:186,1
    - Dst: presign
      Src: /src/opendal/core/layers/hotpath/src/lib.rs:186,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpPresign
    constantsTouched: []
    func_position:
      end: 187
      start: 180
    functionDepth: 2
    functionLinenumber: 180
    functionLinenumberEnd: 187
    functionName: HotpathAccessor::presign
    functionSourceFile: /src/opendal/core/layers/hotpath/src/lib.rs
    functionUses: 0
    functionsReached:
    - hotpath::measure_async
    - presign
    linkageType: ''
    returnType: Result
    signature: 'async fn presign(&self,ctx: &OperationContext,path: &str,args: OpPresign,)
      -> Result<RpPresign>'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - inner
    argTypes:
    - R
    constantsTouched: []
    func_position:
      end: 198
      start: 196
    functionDepth: 0
    functionLinenumber: 196
    functionLinenumberEnd: 198
    functionName: HotpathWrapper::new
    functionSourceFile: /src/opendal/core/layers/hotpath/src/lib.rs
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: 'fn new(inner: R) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: hotpath::measure_async
      Src: /src/opendal/core/layers/hotpath/src/lib.rs:217,1
    - Dst: read
      Src: /src/opendal/core/layers/hotpath/src/lib.rs:217,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - range
    argTypes:
    - BytesRange
    constantsTouched: []
    func_position:
      end: 218
      start: 216
    functionDepth: 31
    functionLinenumber: 216
    functionLinenumberEnd: 218
    functionName: HotpathWrapper::read
    functionSourceFile: /src/opendal/core/layers/hotpath/src/lib.rs
    functionUses: 0
    functionsReached:
    - read
    - hotpath::measure_async
    linkageType: ''
    returnType: Result
    signature: 'async fn read(&self, range: BytesRange) -> Result<(RpRead, Buffer)>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: hotpath::measure_async
      Src: /src/opendal/core/layers/hotpath/src/lib.rs:209,1
    - Dst: open
      Src: /src/opendal/core/layers/hotpath/src/lib.rs:209,1
    - Dst: Ok
      Src: /src/opendal/core/layers/hotpath/src/lib.rs:210,1
    - Dst: Box::new
      Src: /src/opendal/core/layers/hotpath/src/lib.rs:212,1
    - Dst: HotpathWrapper::new
      Src: /src/opendal/core/layers/hotpath/src/lib.rs:212,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 1
    argNames:
    - range
    argTypes:
    - BytesRange
    constantsTouched: []
    func_position:
      end: 214
      start: 208
    functionDepth: 3
    functionLinenumber: 208
    functionLinenumberEnd: 214
    functionName: HotpathWrapper::open
    functionSourceFile: /src/opendal/core/layers/hotpath/src/lib.rs
    functionUses: 0
    functionsReached:
    - hotpath::measure_async
    - Ok
    - Box::new
    - HotpathWrapper::new
    - open
    linkageType: ''
    returnType: Result
    signature: 'async fn open(&self, range: BytesRange) -> Result<(RpRead, Box<dyn
      oio::ReadStreamDyn>)>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: hotpath::measure_async
      Src: /src/opendal/core/layers/hotpath/src/lib.rs:223,1
    - Dst: write
      Src: /src/opendal/core/layers/hotpath/src/lib.rs:223,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - bs
    argTypes:
    - Buffer
    constantsTouched: []
    func_position:
      end: 224
      start: 222
    functionDepth: 36
    functionLinenumber: 222
    functionLinenumberEnd: 224
    functionName: HotpathWrapper::write
    functionSourceFile: /src/opendal/core/layers/hotpath/src/lib.rs
    functionUses: 0
    functionsReached:
    - hotpath::measure_async
    - write
    linkageType: ''
    returnType: Result
    signature: 'async fn write(&mut self, bs: Buffer) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: hotpath::measure_async
      Src: /src/opendal/core/layers/hotpath/src/lib.rs:257,1
    - Dst: close
      Src: /src/opendal/core/layers/hotpath/src/lib.rs:257,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 258
      start: 256
    functionDepth: 2
    functionLinenumber: 256
    functionLinenumberEnd: 258
    functionName: HotpathWrapper::close
    functionSourceFile: /src/opendal/core/layers/hotpath/src/lib.rs
    functionUses: 0
    functionsReached:
    - hotpath::measure_async
    - close
    linkageType: ''
    returnType: Result
    signature: async fn close(&mut self) -> Result<Metadata>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: hotpath::measure_async
      Src: /src/opendal/core/layers/hotpath/src/lib.rs:261,1
    - Dst: abort
      Src: /src/opendal/core/layers/hotpath/src/lib.rs:261,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 262
      start: 260
    functionDepth: 31
    functionLinenumber: 260
    functionLinenumberEnd: 262
    functionName: HotpathWrapper::abort
    functionSourceFile: /src/opendal/core/layers/hotpath/src/lib.rs
    functionUses: 0
    functionsReached:
    - hotpath::measure_async
    - abort
    linkageType: ''
    returnType: Result
    signature: async fn abort(&mut self) -> Result<()>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: hotpath::measure_async
      Src: /src/opendal/core/layers/hotpath/src/lib.rs:253,1
    - Dst: next
      Src: /src/opendal/core/layers/hotpath/src/lib.rs:253,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 254
      start: 252
    functionDepth: 2
    functionLinenumber: 252
    functionLinenumberEnd: 254
    functionName: HotpathWrapper::next
    functionSourceFile: /src/opendal/core/layers/hotpath/src/lib.rs
    functionUses: 0
    functionsReached:
    - next
    - hotpath::measure_async
    linkageType: ''
    returnType: Result
    signature: async fn next(&mut self) -> Result<Option<usize>>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: hotpath::measure_async
      Src: /src/opendal/core/layers/hotpath/src/lib.rs:243,1
    - Dst: delete
      Src: /src/opendal/core/layers/hotpath/src/lib.rs:243,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - path
    - args
    argTypes:
    - '&str'
    - OpDelete
    constantsTouched: []
    func_position:
      end: 244
      start: 242
    functionDepth: 32
    functionLinenumber: 242
    functionLinenumberEnd: 244
    functionName: HotpathWrapper::delete
    functionSourceFile: /src/opendal/core/layers/hotpath/src/lib.rs
    functionUses: 0
    functionsReached:
    - hotpath::measure_async
    - delete
    linkageType: ''
    returnType: Result
    signature: 'async fn delete(&mut self, path: &str, args: OpDelete) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: hotpath::measure_async
      Src: /src/opendal/core/layers/hotpath/src/lib.rs:271,1
    - Dst: fetch
      Src: /src/opendal/core/layers/hotpath/src/lib.rs:271,1
    - Dst: into_parts
      Src: /src/opendal/core/layers/hotpath/src/lib.rs:272,1
    - Dst: map_inner
      Src: /src/opendal/core/layers/hotpath/src/lib.rs:273,1
    - Dst: Box::new
      Src: /src/opendal/core/layers/hotpath/src/lib.rs:273,1
    - Dst: Ok
      Src: /src/opendal/core/layers/hotpath/src/lib.rs:274,1
    - Dst: http::Response::from_parts
      Src: /src/opendal/core/layers/hotpath/src/lib.rs:274,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 15
    argCount: 1
    argNames:
    - req
    argTypes:
    - http::Request<Buffer>
    constantsTouched: []
    func_position:
      end: 275
      start: 270
    functionDepth: 3
    functionLinenumber: 270
    functionLinenumberEnd: 275
    functionName: HotpathHttpTransport::fetch
    functionSourceFile: /src/opendal/core/layers/hotpath/src/lib.rs
    functionUses: 0
    functionsReached:
    - map_inner
    - hotpath::measure_async
    - Ok
    - Box::new
    - http::Response::from_parts
    - into_parts
    - fetch
    linkageType: ''
    returnType: Result
    signature: 'async fn fetch(&self, req: http::Request<Buffer>) -> Result<http::Response<HttpBody>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 2
    argNames:
    - cx
    argTypes:
    - Pin<&mut Self>
    - '&mut Context<''_>'
    constantsTouched: []
    func_position:
      end: 291
      start: 288
    functionDepth: 0
    functionLinenumber: 288
    functionLinenumberEnd: 291
    functionName: HotpathStream::poll_next
    functionSourceFile: /src/opendal/core/layers/hotpath/src/lib.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Poll
    signature: 'fn poll_next(mut self: Pin<&mut Self>, cx: &mut Context<''_>) -> Poll<Option<Self::Item>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self::default
      Src: /src/opendal/core/layers/tracing/src/lib.rs:138,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 139
      start: 137
    functionDepth: 3
    functionLinenumber: 137
    functionLinenumberEnd: 139
    functionName: TracingLayer::new
    functionSourceFile: /src/opendal/core/layers/tracing/src/lib.rs
    functionUses: 0
    functionsReached:
    - Self::default
    linkageType: ''
    returnType: Self
    signature: pub fn new() -> Self
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Arc::new
      Src: /src/opendal/core/layers/tracing/src/lib.rs:144,1
    - Dst: TracingLayer::layer
      Src: /src/opendal/core/layers/tracing/src/lib.rs:144,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - inner
    argTypes:
    - Servicer
    constantsTouched: []
    func_position:
      end: 145
      start: 143
    functionDepth: 2
    functionLinenumber: 143
    functionLinenumberEnd: 145
    functionName: TracingLayer::apply_service
    functionSourceFile: /src/opendal/core/layers/tracing/src/lib.rs
    functionUses: 0
    functionsReached:
    - TracingLayer::layer
    - Arc::new
    linkageType: ''
    returnType: Servicer
    signature: 'fn apply_service(&self, inner: Servicer) -> Servicer'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: HttpTransporter::new
      Src: /src/opendal/core/layers/tracing/src/lib.rs:149,1
    - Dst: Arc::http_transport
      Src: /src/opendal/core/layers/tracing/src/lib.rs:150,1
    - Dst: Self::clone
      Src: /src/opendal/core/layers/tracing/src/lib.rs:150,1
    - Dst: Executor::with
      Src: /src/opendal/core/layers/tracing/src/lib.rs:152,1
    - Dst: Arc::executor
      Src: /src/opendal/core/layers/tracing/src/lib.rs:153,1
    - Dst: Self::clone
      Src: /src/opendal/core/layers/tracing/src/lib.rs:153,1
    - Dst: Self::into_inner
      Src: /src/opendal/core/layers/tracing/src/lib.rs:153,1
    - Dst: Arc::with_http_transport
      Src: /src/opendal/core/layers/tracing/src/lib.rs:156,1
    - Dst: Self::with_executor
      Src: /src/opendal/core/layers/tracing/src/lib.rs:156,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 18
    argCount: 2
    argNames:
    - _srv
    - inner
    argTypes:
    - Servicer
    - OperationContext
    constantsTouched: []
    func_position:
      end: 157
      start: 147
    functionDepth: 3
    functionLinenumber: 147
    functionLinenumberEnd: 157
    functionName: TracingLayer::apply_context
    functionSourceFile: /src/opendal/core/layers/tracing/src/lib.rs
    functionUses: 0
    functionsReached:
    - HttpTransporter::new
    - Executor::with
    - Self::into_inner
    - Self::with_executor
    - Self::clone
    - Arc::with_http_transport
    - Arc::executor
    - Arc::http_transport
    linkageType: ''
    returnType: OperationContext
    signature: 'fn apply_context(&self, _srv: Servicer, inner: OperationContext) ->
      OperationContext'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - inner
    argTypes:
    - Servicer
    constantsTouched: []
    func_position:
      end: 163
      start: 161
    functionDepth: 0
    functionLinenumber: 161
    functionLinenumberEnd: 163
    functionName: TracingLayer::layer
    functionSourceFile: /src/opendal/core/layers/tracing/src/lib.rs
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: TracingService
    signature: 'fn layer(&self, inner: Servicer) -> TracingService'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: fetch
      Src: /src/opendal/core/layers/tracing/src/lib.rs:174,1
    - Dst: instrument
      Src: /src/opendal/core/layers/tracing/src/lib.rs:174,1
    - Dst: Self::clone
      Src: /src/opendal/core/layers/tracing/src/lib.rs:174,1
    - Dst: into_parts
      Src: /src/opendal/core/layers/tracing/src/lib.rs:176,1
    - Dst: map_inner
      Src: /src/opendal/core/layers/tracing/src/lib.rs:178,1
    - Dst: Box::new
      Src: /src/opendal/core/layers/tracing/src/lib.rs:178,1
    - Dst: Ok
      Src: /src/opendal/core/layers/tracing/src/lib.rs:179,1
    - Dst: http::Response::from_parts
      Src: /src/opendal/core/layers/tracing/src/lib.rs:179,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 18
    argCount: 1
    argNames:
    - req
    argTypes:
    - http::Request<Buffer>
    constantsTouched: []
    func_position:
      end: 180
      start: 171
    functionDepth: 3
    functionLinenumber: 171
    functionLinenumberEnd: 180
    functionName: TracingHttpTransport::fetch
    functionSourceFile: /src/opendal/core/layers/tracing/src/lib.rs
    functionUses: 0
    functionsReached:
    - map_inner
    - Ok
    - Box::new
    - http::Response::from_parts
    - into_parts
    - Self::clone
    - fetch
    - instrument
    linkageType: ''
    returnType: Result
    signature: 'async fn fetch(&self, req: http::Request<Buffer>) -> Result<http::Response<HttpBody>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: execute
      Src: /src/opendal/core/layers/tracing/src/lib.rs:189,1
    - Dst: Box::pin
      Src: /src/opendal/core/layers/tracing/src/lib.rs:190,1
    - Dst: Result::instrument
      Src: /src/opendal/core/layers/tracing/src/lib.rs:190,1
    - Dst: Span::current
      Src: /src/opendal/core/layers/tracing/src/lib.rs:190,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - f
    argTypes:
    - BoxedStaticFuture<()>
    constantsTouched: []
    func_position:
      end: 191
      start: 188
    functionDepth: 37
    functionLinenumber: 188
    functionLinenumberEnd: 191
    functionName: TracingExecutor::execute
    functionSourceFile: /src/opendal/core/layers/tracing/src/lib.rs
    functionUses: 0
    functionsReached:
    - execute
    - Box::pin
    - Result::instrument
    - Span::current
    linkageType: ''
    returnType: void
    signature: 'fn execute(&self, f: BoxedStaticFuture<()>)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: timeout
      Src: /src/opendal/core/layers/tracing/src/lib.rs:194,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 195
      start: 193
    functionDepth: 1
    functionLinenumber: 193
    functionLinenumberEnd: 195
    functionName: TracingExecutor::timeout
    functionSourceFile: /src/opendal/core/layers/tracing/src/lib.rs
    functionUses: 0
    functionsReached:
    - timeout
    linkageType: ''
    returnType: Option
    signature: fn timeout(&self) -> Option<BoxedStaticFuture<()>>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: clone
      Src: /src/opendal/core/layers/tracing/src/lib.rs:210,1
    - Dst: entered
      Src: /src/opendal/core/layers/tracing/src/lib.rs:210,1
    - Dst: poll_next_unpin
      Src: /src/opendal/core/layers/tracing/src/lib.rs:211,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 2
    argNames:
    - cx
    argTypes:
    - Pin<&mut Self>
    - '&mut Context<''_>'
    constantsTouched: []
    func_position:
      end: 212
      start: 209
    functionDepth: 2
    functionLinenumber: 209
    functionLinenumberEnd: 212
    functionName: TracingStream::poll_next
    functionSourceFile: /src/opendal/core/layers/tracing/src/lib.rs
    functionUses: 0
    functionsReached:
    - poll_next_unpin
    - clone
    - entered
    linkageType: ''
    returnType: Poll
    signature: 'fn poll_next(mut self: Pin<&mut Self>, cx: &mut Context<''_>) -> Poll<Option<Self::Item>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: info
      Src: /src/opendal/core/layers/tracing/src/lib.rs:229,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 230
      start: 228
    functionDepth: 2
    functionLinenumber: 228
    functionLinenumberEnd: 230
    functionName: TracingService::info
    functionSourceFile: /src/opendal/core/layers/tracing/src/lib.rs
    functionUses: 0
    functionsReached:
    - info
    linkageType: ''
    returnType: ServiceInfo
    signature: fn info(&self) -> ServiceInfo
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: capability
      Src: /src/opendal/core/layers/tracing/src/lib.rs:233,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 234
      start: 232
    functionDepth: 2
    functionLinenumber: 232
    functionLinenumberEnd: 234
    functionName: TracingService::capability
    functionSourceFile: /src/opendal/core/layers/tracing/src/lib.rs
    functionUses: 0
    functionsReached:
    - capability
    linkageType: ''
    returnType: Capability
    signature: fn capability(&self) -> Capability
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: create_dir
      Src: /src/opendal/core/layers/tracing/src/lib.rs:243,1
    - Dst: instrument
      Src: /src/opendal/core/layers/tracing/src/lib.rs:243,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpCreateDir
    constantsTouched: []
    func_position:
      end: 247
      start: 236
    functionDepth: 35
    functionLinenumber: 236
    functionLinenumberEnd: 247
    functionName: TracingService::create_dir
    functionSourceFile: /src/opendal/core/layers/tracing/src/lib.rs
    functionUses: 0
    functionsReached:
    - create_dir
    - instrument
    linkageType: ''
    returnType: Result
    signature: 'async fn create_dir(&self,ctx: &OperationContext,path: &str,args:
      OpCreateDir,) -> Result<RpCreateDir>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: read
      Src: /src/opendal/core/layers/tracing/src/lib.rs:251,1
    - Dst: map
      Src: /src/opendal/core/layers/tracing/src/lib.rs:251,1
    - Dst: TracingWrapper::new
      Src: /src/opendal/core/layers/tracing/src/lib.rs:253,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpRead
    constantsTouched: []
    func_position:
      end: 254
      start: 249
    functionDepth: 31
    functionLinenumber: 249
    functionLinenumberEnd: 254
    functionName: TracingService::read
    functionSourceFile: /src/opendal/core/layers/tracing/src/lib.rs
    functionUses: 0
    functionsReached:
    - read
    - TracingWrapper::new
    - map
    linkageType: ''
    returnType: Result
    signature: 'fn read(&self, ctx: &OperationContext, path: &str, args: OpRead) ->
      Result<Self::Reader>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: write
      Src: /src/opendal/core/layers/tracing/src/lib.rs:258,1
    - Dst: map
      Src: /src/opendal/core/layers/tracing/src/lib.rs:258,1
    - Dst: TracingWrapper::new
      Src: /src/opendal/core/layers/tracing/src/lib.rs:260,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpWrite
    constantsTouched: []
    func_position:
      end: 261
      start: 256
    functionDepth: 36
    functionLinenumber: 256
    functionLinenumberEnd: 261
    functionName: TracingService::write
    functionSourceFile: /src/opendal/core/layers/tracing/src/lib.rs
    functionUses: 0
    functionsReached:
    - map
    - TracingWrapper::new
    - write
    linkageType: ''
    returnType: Result
    signature: 'fn write(&self, ctx: &OperationContext, path: &str, args: OpWrite)
      -> Result<Self::Writer>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self::enter
      Src: /src/opendal/core/layers/tracing/src/lib.rs:272,1
    - Dst: copy
      Src: /src/opendal/core/layers/tracing/src/lib.rs:273,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 5
    argNames:
    - ctx
    - from
    - to
    - args
    - opts
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    - OpCopy
    - OpCopier
    constantsTouched: []
    func_position:
      end: 274
      start: 263
    functionDepth: 34
    functionLinenumber: 263
    functionLinenumberEnd: 274
    functionName: TracingService::copy
    functionSourceFile: /src/opendal/core/layers/tracing/src/lib.rs
    functionUses: 0
    functionsReached:
    - Self::enter
    - copy
    linkageType: ''
    returnType: Result
    signature: 'fn copy(&self,ctx: &OperationContext,from: &str,to: &str,args: OpCopy,opts:
      OpCopier,) -> Result<Self::Copier>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: rename
      Src: /src/opendal/core/layers/tracing/src/lib.rs:284,1
    - Dst: instrument
      Src: /src/opendal/core/layers/tracing/src/lib.rs:284,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 4
    argNames:
    - ctx
    - from
    - to
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    - OpRename
    constantsTouched: []
    func_position:
      end: 288
      start: 276
    functionDepth: 2
    functionLinenumber: 276
    functionLinenumberEnd: 288
    functionName: TracingService::rename
    functionSourceFile: /src/opendal/core/layers/tracing/src/lib.rs
    functionUses: 0
    functionsReached:
    - rename
    - instrument
    linkageType: ''
    returnType: Result
    signature: 'async fn rename(&self,ctx: &OperationContext,from: &str,to: &str,args:
      OpRename,) -> Result<RpRename>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: stat
      Src: /src/opendal/core/layers/tracing/src/lib.rs:292,1
    - Dst: instrument
      Src: /src/opendal/core/layers/tracing/src/lib.rs:292,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpStat
    constantsTouched: []
    func_position:
      end: 293
      start: 290
    functionDepth: 31
    functionLinenumber: 290
    functionLinenumberEnd: 293
    functionName: TracingService::stat
    functionSourceFile: /src/opendal/core/layers/tracing/src/lib.rs
    functionUses: 0
    functionsReached:
    - instrument
    - stat
    linkageType: ''
    returnType: Result
    signature: 'async fn stat(&self, ctx: &OperationContext, path: &str, args: OpStat)
      -> Result<RpStat>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: delete
      Src: /src/opendal/core/layers/tracing/src/lib.rs:297,1
    - Dst: map
      Src: /src/opendal/core/layers/tracing/src/lib.rs:297,1
    - Dst: TracingWrapper::new
      Src: /src/opendal/core/layers/tracing/src/lib.rs:297,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - '&OperationContext'
    constantsTouched: []
    func_position:
      end: 298
      start: 295
    functionDepth: 32
    functionLinenumber: 295
    functionLinenumberEnd: 298
    functionName: TracingService::delete
    functionSourceFile: /src/opendal/core/layers/tracing/src/lib.rs
    functionUses: 0
    functionsReached:
    - map
    - TracingWrapper::new
    - delete
    linkageType: ''
    returnType: Result
    signature: 'fn delete(&self, ctx: &OperationContext) -> Result<Self::Deleter>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: list
      Src: /src/opendal/core/layers/tracing/src/lib.rs:302,1
    - Dst: map
      Src: /src/opendal/core/layers/tracing/src/lib.rs:302,1
    - Dst: TracingWrapper::new
      Src: /src/opendal/core/layers/tracing/src/lib.rs:304,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpList
    constantsTouched: []
    func_position:
      end: 305
      start: 300
    functionDepth: 2
    functionLinenumber: 300
    functionLinenumberEnd: 305
    functionName: TracingService::list
    functionSourceFile: /src/opendal/core/layers/tracing/src/lib.rs
    functionUses: 0
    functionsReached:
    - list
    - TracingWrapper::new
    - map
    linkageType: ''
    returnType: Result
    signature: 'fn list(&self, ctx: &OperationContext, path: &str, args: OpList) ->
      Result<Self::Lister>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: presign
      Src: /src/opendal/core/layers/tracing/src/lib.rs:314,1
    - Dst: instrument
      Src: /src/opendal/core/layers/tracing/src/lib.rs:314,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpPresign
    constantsTouched: []
    func_position:
      end: 315
      start: 307
    functionDepth: 2
    functionLinenumber: 307
    functionLinenumberEnd: 315
    functionName: TracingService::presign
    functionSourceFile: /src/opendal/core/layers/tracing/src/lib.rs
    functionUses: 0
    functionsReached:
    - instrument
    - presign
    linkageType: ''
    returnType: Result
    signature: 'async fn presign(&self,ctx: &OperationContext,path: &str,args: OpPresign,)
      -> Result<RpPresign>'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - span
    - inner
    argTypes:
    - Span
    - R
    constantsTouched: []
    func_position:
      end: 327
      start: 325
    functionDepth: 0
    functionLinenumber: 325
    functionLinenumberEnd: 327
    functionName: TracingWrapper::new
    functionSourceFile: /src/opendal/core/layers/tracing/src/lib.rs
    functionUses: 5
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: 'fn new(span: Span, inner: R) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: read
      Src: /src/opendal/core/layers/tracing/src/lib.rs:348,1
    - Dst: instrument
      Src: /src/opendal/core/layers/tracing/src/lib.rs:348,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - range
    argTypes:
    - BytesRange
    constantsTouched: []
    func_position:
      end: 349
      start: 346
    functionDepth: 31
    functionLinenumber: 346
    functionLinenumberEnd: 349
    functionName: TracingWrapper::read
    functionSourceFile: /src/opendal/core/layers/tracing/src/lib.rs
    functionUses: 0
    functionsReached:
    - read
    - instrument
    linkageType: ''
    returnType: Result
    signature: 'async fn read(&self, range: BytesRange) -> Result<(RpRead, Buffer)>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: open
      Src: /src/opendal/core/layers/tracing/src/lib.rs:339,1
    - Dst: instrument
      Src: /src/opendal/core/layers/tracing/src/lib.rs:339,1
    - Dst: Self::clone
      Src: /src/opendal/core/layers/tracing/src/lib.rs:339,1
    - Dst: Ok
      Src: /src/opendal/core/layers/tracing/src/lib.rs:340,1
    - Dst: Box::new
      Src: /src/opendal/core/layers/tracing/src/lib.rs:342,1
    - Dst: TracingWrapper::new
      Src: /src/opendal/core/layers/tracing/src/lib.rs:342,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 1
    argNames:
    - range
    argTypes:
    - BytesRange
    constantsTouched: []
    func_position:
      end: 344
      start: 337
    functionDepth: 3
    functionLinenumber: 337
    functionLinenumberEnd: 344
    functionName: TracingWrapper::open
    functionSourceFile: /src/opendal/core/layers/tracing/src/lib.rs
    functionUses: 0
    functionsReached:
    - Ok
    - Box::new
    - TracingWrapper::new
    - Self::clone
    - open
    - instrument
    linkageType: ''
    returnType: Result
    signature: 'async fn open(&self, range: BytesRange) -> Result<(RpRead, Box<dyn
      oio::ReadStreamDyn>)>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: write
      Src: /src/opendal/core/layers/tracing/src/lib.rs:354,1
    - Dst: instrument
      Src: /src/opendal/core/layers/tracing/src/lib.rs:354,1
    - Dst: clone
      Src: /src/opendal/core/layers/tracing/src/lib.rs:354,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - bs
    argTypes:
    - Buffer
    constantsTouched: []
    func_position:
      end: 355
      start: 353
    functionDepth: 36
    functionLinenumber: 353
    functionLinenumberEnd: 355
    functionName: TracingWrapper::write
    functionSourceFile: /src/opendal/core/layers/tracing/src/lib.rs
    functionUses: 0
    functionsReached:
    - clone
    - write
    - instrument
    linkageType: ''
    returnType: Result
    signature: 'async fn write(&mut self, bs: Buffer) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: abort
      Src: /src/opendal/core/layers/tracing/src/lib.rs:358,1
    - Dst: instrument
      Src: /src/opendal/core/layers/tracing/src/lib.rs:358,1
    - Dst: clone
      Src: /src/opendal/core/layers/tracing/src/lib.rs:358,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 359
      start: 357
    functionDepth: 31
    functionLinenumber: 357
    functionLinenumberEnd: 359
    functionName: TracingWrapper::abort
    functionSourceFile: /src/opendal/core/layers/tracing/src/lib.rs
    functionUses: 0
    functionsReached:
    - clone
    - instrument
    - abort
    linkageType: ''
    returnType: Result
    signature: async fn abort(&mut self) -> Result<()>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: close
      Src: /src/opendal/core/layers/tracing/src/lib.rs:381,1
    - Dst: instrument
      Src: /src/opendal/core/layers/tracing/src/lib.rs:381,1
    - Dst: clone
      Src: /src/opendal/core/layers/tracing/src/lib.rs:381,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 382
      start: 380
    functionDepth: 2
    functionLinenumber: 380
    functionLinenumberEnd: 382
    functionName: TracingWrapper::close
    functionSourceFile: /src/opendal/core/layers/tracing/src/lib.rs
    functionUses: 0
    functionsReached:
    - clone
    - instrument
    - close
    linkageType: ''
    returnType: Result
    signature: async fn close(&mut self) -> Result<()>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: next
      Src: /src/opendal/core/layers/tracing/src/lib.rs:368,1
    - Dst: instrument
      Src: /src/opendal/core/layers/tracing/src/lib.rs:368,1
    - Dst: clone
      Src: /src/opendal/core/layers/tracing/src/lib.rs:368,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 369
      start: 367
    functionDepth: 2
    functionLinenumber: 367
    functionLinenumberEnd: 369
    functionName: TracingWrapper::next
    functionSourceFile: /src/opendal/core/layers/tracing/src/lib.rs
    functionUses: 0
    functionsReached:
    - next
    - clone
    - instrument
    linkageType: ''
    returnType: Result
    signature: async fn next(&mut self) -> Result<Option<oio::Entry>>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: delete
      Src: /src/opendal/core/layers/tracing/src/lib.rs:374,1
    - Dst: instrument
      Src: /src/opendal/core/layers/tracing/src/lib.rs:374,1
    - Dst: clone
      Src: /src/opendal/core/layers/tracing/src/lib.rs:376,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 2
    argNames:
    - path
    - args
    argTypes:
    - '&str'
    - OpDelete
    constantsTouched: []
    func_position:
      end: 378
      start: 373
    functionDepth: 32
    functionLinenumber: 373
    functionLinenumberEnd: 378
    functionName: TracingWrapper::delete
    functionSourceFile: /src/opendal/core/layers/tracing/src/lib.rs
    functionUses: 0
    functionsReached:
    - clone
    - instrument
    - delete
    linkageType: ''
    returnType: Result
    signature: 'async fn delete(&mut self, path: &str, args: OpDelete) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: ServiceInfo::scheme
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:243,1
    - Dst: ServiceInfo::name
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:244,1
    - Dst: ServiceInfo::root
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:245,1
    - Dst: MetricLabels::default
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:247,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 2
    argNames:
    - info
    - op
    argTypes:
    - ServiceInfo
    - '&''static str'
    constantsTouched: []
    func_position:
      end: 249
      start: 241
    functionDepth: 3
    functionLinenumber: 241
    functionLinenumberEnd: 249
    functionName: MetricLabels::new
    functionSourceFile: /src/opendal/core/layers/observe-metrics-common/src/lib.rs
    functionUses: 16
    functionsReached:
    - ServiceInfo::scheme
    - MetricLabels::default
    - ServiceInfo::root
    - ServiceInfo::name
    linkageType: ''
    returnType: Self
    signature: 'fn new(info: ServiceInfo, op: &''static str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Some
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:253,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - err
    argTypes:
    - ErrorKind
    constantsTouched: []
    func_position:
      end: 255
      start: 252
    functionDepth: 0
    functionLinenumber: 252
    functionLinenumberEnd: 255
    functionName: MetricLabels::with_error
    functionSourceFile: /src/opendal/core/layers/observe-metrics-common/src/lib.rs
    functionUses: 0
    functionsReached:
    - Some
    linkageType: ''
    returnType: Self
    signature: 'fn with_error(mut self, err: ErrorKind) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Some
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:259,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - code
    argTypes:
    - StatusCode
    constantsTouched: []
    func_position:
      end: 261
      start: 258
    functionDepth: 0
    functionLinenumber: 258
    functionLinenumberEnd: 261
    functionName: MetricLabels::with_status_code
    functionSourceFile: /src/opendal/core/layers/observe-metrics-common/src/lib.rs
    functionUses: 0
    functionsReached:
    - Some
    linkageType: ''
    returnType: Self
    signature: 'fn with_status_code(mut self, code: StatusCode) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 349
      start: 328
    functionDepth: 0
    functionLinenumber: 328
    functionLinenumberEnd: 349
    functionName: MetricValue::name
    functionSourceFile: /src/opendal/core/layers/observe-metrics-common/src/lib.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: '&''static str'
    signature: pub fn name(&self) -> &'static str
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Some
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:358,1
    - Dst: Some
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:363,1
    - Dst: Some
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:367,1
    - Dst: Some
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:372,1
    - Dst: Some
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:375,1
    - Dst: Some
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:377,1
    - Dst: Some
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:380,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 26
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 383
      start: 356
    functionDepth: 0
    functionLinenumber: 356
    functionLinenumberEnd: 383
    functionName: MetricValue::name_with_unit
    functionSourceFile: /src/opendal/core/layers/observe-metrics-common/src/lib.rs
    functionUses: 0
    functionsReached:
    - Some
    linkageType: ''
    returnType: (&'static str, Option
    signature: pub fn name_with_unit(&self) -> (&'static str, Option<&'static str>)
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 431
      start: 386
    functionDepth: 0
    functionLinenumber: 386
    functionLinenumberEnd: 431
    functionName: MetricValue::help
    functionSourceFile: /src/opendal/core/layers/observe-metrics-common/src/lib.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: '&''static str'
    signature: pub fn help(&self) -> &'static str
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - labels
    - value
    argTypes:
    - MetricLabels
    - MetricValue
    constantsTouched: []
    func_position:
      end: 441
      start: 439
    functionDepth: 0
    functionLinenumber: 439
    functionLinenumberEnd: 441
    functionName: MetricsIntercept::observe
    functionSourceFile: /src/opendal/core/layers/observe-metrics-common/src/lib.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: 'fn observe(&self, labels: MetricLabels, value: MetricValue)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Arc::info
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:475,1
    - Dst: clone
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:479,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - inner
    argTypes:
    - Servicer
    constantsTouched: []
    func_position:
      end: 481
      start: 474
    functionDepth: 4
    functionLinenumber: 474
    functionLinenumberEnd: 481
    functionName: MetricsLayer::layer
    functionSourceFile: /src/opendal/core/layers/observe-metrics-common/src/lib.rs
    functionUses: 1
    functionsReached:
    - clone
    - Arc::info
    linkageType: ''
    returnType: MetricsAccessor
    signature: 'fn layer(&self, inner: Servicer) -> MetricsAccessor<I>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Some
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:509,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - interceptor
    - labels
    - start
    argTypes:
    - I
    - MetricLabels
    - Instant
    constantsTouched: []
    func_position:
      end: 515
      start: 507
    functionDepth: 0
    functionLinenumber: 507
    functionLinenumberEnd: 515
    functionName: ExecutingGuard::new_http
    functionSourceFile: /src/opendal/core/layers/observe-metrics-common/src/lib.rs
    functionUses: 4
    functionsReached:
    - Some
    linkageType: ''
    returnType: Self
    signature: 'fn new_http(interceptor: I, labels: MetricLabels, start: Instant)
      -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Some
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:519,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - interceptor
    - labels
    - start
    argTypes:
    - I
    - MetricLabels
    - Instant
    constantsTouched: []
    func_position:
      end: 525
      start: 517
    functionDepth: 0
    functionLinenumber: 517
    functionLinenumberEnd: 525
    functionName: ExecutingGuard::new_operation
    functionSourceFile: /src/opendal/core/layers/observe-metrics-common/src/lib.rs
    functionUses: 12
    functionsReached:
    - Some
    linkageType: ''
    returnType: Self
    signature: 'fn new_operation(interceptor: I, labels: MetricLabels, start: Instant)
      -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 529
      start: 527
    functionDepth: 0
    functionLinenumber: 527
    functionLinenumberEnd: 529
    functionName: ExecutingGuard::complete
    functionSourceFile: /src/opendal/core/layers/observe-metrics-common/src/lib.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: fn complete(&mut self)
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 533
      start: 531
    functionDepth: 0
    functionLinenumber: 531
    functionLinenumberEnd: 533
    functionName: ExecutingGuard::defuse
    functionSourceFile: /src/opendal/core/layers/observe-metrics-common/src/lib.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: fn defuse(&mut self)
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: observe
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:545,1
    - Dst: clone
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:546,1
    - Dst: observe
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:547,1
    - Dst: clone
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:548,1
    - Dst: MetricValue::HttpRequestDurationSeconds
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:549,1
    - Dst: elapsed
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:549,1
    - Dst: observe
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:553,1
    - Dst: clone
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:554,1
    - Dst: with_error
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:554,1
    - Dst: observe
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:557,1
    - Dst: clone
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:558,1
    - Dst: MetricValue::OperationDurationSeconds
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:559,1
    - Dst: elapsed
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:559,1
    - Dst: observe
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:567,1
    - Dst: std::mem::take
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:568,1
    - Dst: MetricValue::HttpExecuting
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:569,1
    - Dst: observe
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:573,1
    - Dst: std::mem::take
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:574,1
    - Dst: MetricValue::OperationExecuting
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:575,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 63
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 579
      start: 537
    functionDepth: 32
    functionLinenumber: 537
    functionLinenumberEnd: 579
    functionName: ExecutingGuard::drop
    functionSourceFile: /src/opendal/core/layers/observe-metrics-common/src/lib.rs
    functionUses: 0
    functionsReached:
    - MetricValue::OperationDurationSeconds
    - clone
    - MetricValue::HttpExecuting
    - MetricValue::OperationExecuting
    - elapsed
    - with_error
    - MetricValue::HttpRequestDurationSeconds
    - observe
    - std::mem::take
    linkageType: ''
    returnType: void
    signature: fn drop(&mut self)
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: MetricLabels::new
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:584,1
    - Dst: clone
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:585,1
    - Dst: http::Request<Buffer>::extensions
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:586,1
    - Dst: "extensions()\n                .get::<Operation>"
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:586,1
    - Dst: copied
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:586,1
    - Dst: map
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:586,1
    - Dst: unwrap_or
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:586,1
    - Dst: http::Request<Buffer>::extensions
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:592,1
    - Dst: extensions().get::<ServiceOperation>
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:592,1
    - Dst: map
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:592,1
    - Dst: Instant::now
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:594,1
    - Dst: http::Request<Buffer>::body
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:595,1
    - Dst: len
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:595,1
    - Dst: observe
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:597,1
    - Dst: Vec::clone
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:598,1
    - Dst: MetricValue::HttpExecuting
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:598,1
    - Dst: ExecutingGuard::new_http
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:599,1
    - Dst: clone
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:599,1
    - Dst: Vec::clone
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:599,1
    - Dst: fetch
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:601,1
    - Dst: Self::complete
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:602,1
    - Dst: elapsed
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:603,1
    - Dst: observe
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:607,1
    - Dst: Err
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:609,1
    - Dst: status
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:611,1
    - Dst: is_client_error
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:611,1
    - Dst: status
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:611,1
    - Dst: is_server_error
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:611,1
    - Dst: observe
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:612,1
    - Dst: Vec::with_status_code
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:613,1
    - Dst: status
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:613,1
    - Dst: Ok
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:616,1
    - Dst: Self::defuse
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:619,1
    - Dst: observe
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:620,1
    - Dst: Vec::clone
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:621,1
    - Dst: MetricValue::HttpRequestBytes
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:622,1
    - Dst: observe
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:624,1
    - Dst: Vec::clone
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:625,1
    - Dst: MetricValue::HttpRequestBytesRate
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:626,1
    - Dst: as_secs_f64
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:626,1
    - Dst: observe
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:628,1
    - Dst: Vec::clone
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:629,1
    - Dst: MetricValue::HttpRequestDurationSeconds
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:630,1
    - Dst: into_parts
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:633,1
    - Dst: map_inner
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:634,1
    - Dst: Box::new
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:635,1
    - Dst: clone
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:637,1
    - Dst: Vec::clone
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:638,1
    - Dst: Instant::now
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:640,1
    - Dst: Ok
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:645,1
    - Dst: http::Response::from_parts
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:645,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 121
    argCount: 1
    argNames:
    - req
    argTypes:
    - http::Request<Buffer>
    constantsTouched: []
    func_position:
      end: 648
      start: 583
    functionDepth: 32
    functionLinenumber: 583
    functionLinenumberEnd: 648
    functionName: MetricsHttpTransport::fetch
    functionSourceFile: /src/opendal/core/layers/observe-metrics-common/src/lib.rs
    functionUses: 6
    functionsReached:
    - as_secs_f64
    - map_inner
    - extensions().get::<ServiceOperation>
    - status
    - Box::new
    - clone
    - map
    - http::Response::from_parts
    - is_server_error
    - ExecutingGuard::new_http
    - Self::complete
    - observe
    - Instant::now
    - Ok
    - MetricValue::HttpRequestBytesRate
    - http::Request<Buffer>::body
    - MetricValue::HttpRequestBytes
    - fetch
    - len
    - unwrap_or
    - http::Request<Buffer>::extensions
    - Vec::with_status_code
    - MetricValue::HttpExecuting
    - elapsed
    - is_client_error
    - "extensions()\n                .get::<Operation>"
    - MetricLabels::new
    - copied
    - Err
    - Self::defuse
    - MetricValue::HttpRequestDurationSeconds
    - into_parts
    - Vec::clone
    linkageType: ''
    returnType: Result
    signature: 'async fn fetch(&self, req: http::Request<Buffer>) -> Result<http::Response<HttpBody>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::len
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:671,1
    - Dst: Poll::Ready
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:672,1
    - Dst: Some
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:672,1
    - Dst: Ok
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:672,1
    - Dst: Poll::Ready
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:674,1
    - Dst: Some
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:674,1
    - Dst: Err
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:674,1
    - Dst: Poll::Ready
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:677,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 17
    argCount: 2
    argNames:
    - cx
    argTypes:
    - Pin<&mut Self>
    - '&mut Context<''_>'
    constantsTouched: []
    func_position:
      end: 680
      start: 668
    functionDepth: 3
    functionLinenumber: 668
    functionLinenumberEnd: 680
    functionName: MetricsStream::poll_next
    functionSourceFile: /src/opendal/core/layers/observe-metrics-common/src/lib.rs
    functionUses: 0
    functionsReached:
    - Ok
    - Poll::Ready
    - Err
    - Some
    - Result::len
    linkageType: ''
    returnType: Poll
    signature: 'fn poll_next(mut self: Pin<&mut Self>, cx: &mut Context<''_>) -> Poll<Option<Self::Item>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: elapsed
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:686,1
    - Dst: observe
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:689,1
    - Dst: clone
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:690,1
    - Dst: observe
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:693,1
    - Dst: clone
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:694,1
    - Dst: MetricValue::HttpResponseBytes
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:695,1
    - Dst: observe
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:697,1
    - Dst: clone
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:698,1
    - Dst: MetricValue::HttpResponseBytesRate
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:699,1
    - Dst: as_secs_f64
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:699,1
    - Dst: observe
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:701,1
    - Dst: clone
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:702,1
    - Dst: MetricValue::HttpResponseDurationSeconds
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:703,1
    - Dst: observe
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:705,1
    - Dst: clone
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:706,1
    - Dst: MetricValue::HttpExecuting
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:706,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 52
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 707
      start: 684
    functionDepth: 32
    functionLinenumber: 684
    functionLinenumberEnd: 707
    functionName: MetricsStream::drop
    functionSourceFile: /src/opendal/core/layers/observe-metrics-common/src/lib.rs
    functionUses: 0
    functionsReached:
    - as_secs_f64
    - MetricValue::HttpResponseBytesRate
    - MetricValue::HttpResponseBytes
    - clone
    - MetricValue::HttpExecuting
    - MetricValue::HttpResponseDurationSeconds
    - elapsed
    - observe
    linkageType: ''
    returnType: void
    signature: fn drop(&mut self)
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::debug_struct
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:719,1
    - Dst: field
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:719,1
    - Dst: finish_non_exhaustive
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:719,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - f
    argTypes:
    - '&mut Formatter<''_>'
    constantsTouched: []
    func_position:
      end: 722
      start: 718
    functionDepth: 5
    functionLinenumber: 718
    functionLinenumberEnd: 722
    functionName: MetricsAccessor::fmt
    functionSourceFile: /src/opendal/core/layers/observe-metrics-common/src/lib.rs
    functionUses: 0
    functionsReached:
    - field
    - Result::debug_struct
    - finish_non_exhaustive
    linkageType: ''
    returnType: std::fmt::Result
    signature: 'fn fmt(&self, f: &mut Formatter<''_>) -> std::fmt::Result'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: clone
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:733,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 734
      start: 732
    functionDepth: 2
    functionLinenumber: 732
    functionLinenumberEnd: 734
    functionName: MetricsAccessor::info
    functionSourceFile: /src/opendal/core/layers/observe-metrics-common/src/lib.rs
    functionUses: 0
    functionsReached:
    - clone
    linkageType: ''
    returnType: ServiceInfo
    signature: fn info(&self) -> ServiceInfo
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: capability
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:737,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 738
      start: 736
    functionDepth: 2
    functionLinenumber: 736
    functionLinenumberEnd: 738
    functionName: MetricsAccessor::capability
    functionSourceFile: /src/opendal/core/layers/observe-metrics-common/src/lib.rs
    functionUses: 0
    functionsReached:
    - capability
    linkageType: ''
    returnType: Capability
    signature: fn capability(&self) -> Capability
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: MetricLabels::new
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:746,1
    - Dst: clone
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:746,1
    - Dst: into_static
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:746,1
    - Dst: Instant::now
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:748,1
    - Dst: observe
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:750,1
    - Dst: Vec::clone
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:751,1
    - Dst: MetricValue::OperationExecuting
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:751,1
    - Dst: ExecutingGuard::new_operation
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:753,1
    - Dst: clone
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:753,1
    - Dst: Vec::clone
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:753,1
    - Dst: create_dir
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:755,1
    - Dst: inspect
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:755,1
    - Dst: observe
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:760,1
    - Dst: Vec::clone
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:761,1
    - Dst: MetricValue::OperationDurationSeconds
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:762,1
    - Dst: elapsed
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:762,1
    - Dst: inspect_err
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:755,1
    - Dst: observe
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:766,1
    - Dst: Vec::clone
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:767,1
    - Dst: Self::with_error
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:767,1
    - Dst: Error::kind
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:767,1
    - Dst: Self::complete
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:772,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 52
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpCreateDir
    constantsTouched: []
    func_position:
      end: 774
      start: 740
    functionDepth: 30
    functionLinenumber: 740
    functionLinenumberEnd: 774
    functionName: MetricsAccessor::create_dir
    functionSourceFile: /src/opendal/core/layers/observe-metrics-common/src/lib.rs
    functionUses: 0
    functionsReached:
    - MetricValue::OperationDurationSeconds
    - Instant::now
    - MetricLabels::new
    - ExecutingGuard::new_operation
    - into_static
    - clone
    - inspect
    - inspect_err
    - create_dir
    - elapsed
    - Error::kind
    - MetricValue::OperationExecuting
    - observe
    - Self::with_error
    - Self::complete
    - Vec::clone
    linkageType: ''
    returnType: Result
    signature: 'async fn create_dir(&self,ctx: &OperationContext,path: &str,args:
      OpCreateDir,) -> Result<RpCreateDir>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: MetricLabels::new
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:777,1
    - Dst: clone
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:777,1
    - Dst: jlong::into_static
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:777,1
    - Dst: Instant::now
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:779,1
    - Dst: observe
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:781,1
    - Dst: Vec::clone
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:782,1
    - Dst: MetricValue::OperationExecuting
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:782,1
    - Dst: ExecutingGuard::new_operation
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:784,1
    - Dst: clone
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:784,1
    - Dst: Vec::clone
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:784,1
    - Dst: read
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:786,1
    - Dst: Self::complete
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:788,1
    - Dst: Ok
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:789,1
    - Dst: MetricsReader::new
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:789,1
    - Dst: clone
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:789,1
    - Dst: observe
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:792,1
    - Dst: Vec::clone
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:793,1
    - Dst: Self::with_error
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:793,1
    - Dst: Error::kind
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:793,1
    - Dst: Self::complete
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:796,1
    - Dst: Err
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:797,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 47
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpRead
    constantsTouched: []
    func_position:
      end: 800
      start: 776
    functionDepth: 30
    functionLinenumber: 776
    functionLinenumberEnd: 800
    functionName: MetricsAccessor::read
    functionSourceFile: /src/opendal/core/layers/observe-metrics-common/src/lib.rs
    functionUses: 0
    functionsReached:
    - read
    - Instant::now
    - MetricLabels::new
    - ExecutingGuard::new_operation
    - Ok
    - clone
    - Err
    - MetricsReader::new
    - jlong::into_static
    - Self::complete
    - Error::kind
    - MetricValue::OperationExecuting
    - observe
    - Self::with_error
    - Vec::clone
    linkageType: ''
    returnType: Result
    signature: 'fn read(&self, ctx: &OperationContext, path: &str, args: OpRead) ->
      Result<Self::Reader>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: MetricLabels::new
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:803,1
    - Dst: clone
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:803,1
    - Dst: jlong::into_static
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:803,1
    - Dst: Instant::now
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:805,1
    - Dst: observe
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:807,1
    - Dst: Vec::clone
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:808,1
    - Dst: MetricValue::OperationExecuting
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:808,1
    - Dst: ExecutingGuard::new_operation
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:810,1
    - Dst: clone
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:810,1
    - Dst: Vec::clone
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:810,1
    - Dst: write
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:812,1
    - Dst: Self::defuse
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:814,1
    - Dst: Ok
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:815,1
    - Dst: MetricsWrapper::new
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:815,1
    - Dst: clone
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:817,1
    - Dst: observe
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:823,1
    - Dst: Vec::clone
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:824,1
    - Dst: Self::with_error
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:824,1
    - Dst: Error::kind
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:824,1
    - Dst: Self::complete
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:827,1
    - Dst: Err
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:828,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 47
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpWrite
    constantsTouched: []
    func_position:
      end: 831
      start: 802
    functionDepth: 30
    functionLinenumber: 802
    functionLinenumberEnd: 831
    functionName: MetricsAccessor::write
    functionSourceFile: /src/opendal/core/layers/observe-metrics-common/src/lib.rs
    functionUses: 0
    functionsReached:
    - Instant::now
    - MetricLabels::new
    - ExecutingGuard::new_operation
    - Ok
    - clone
    - Err
    - Self::defuse
    - jlong::into_static
    - Error::kind
    - Self::complete
    - MetricValue::OperationExecuting
    - observe
    - Self::with_error
    - MetricsWrapper::new
    - write
    - Vec::clone
    linkageType: ''
    returnType: Result
    signature: 'fn write(&self, ctx: &OperationContext, path: &str, args: OpWrite)
      -> Result<Self::Writer>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: MetricLabels::new
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:841,1
    - Dst: clone
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:841,1
    - Dst: into_static
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:841,1
    - Dst: Instant::now
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:843,1
    - Dst: observe
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:845,1
    - Dst: Vec::clone
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:846,1
    - Dst: MetricValue::OperationExecuting
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:846,1
    - Dst: ExecutingGuard::new_operation
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:848,1
    - Dst: clone
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:848,1
    - Dst: Vec::clone
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:848,1
    - Dst: copy
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:850,1
    - Dst: object_store::Result::clone
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:850,1
    - Dst: Self::defuse
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:852,1
    - Dst: Ok
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:853,1
    - Dst: MetricsWrapper::new
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:853,1
    - Dst: clone
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:855,1
    - Dst: observe
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:861,1
    - Dst: Vec::clone
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:862,1
    - Dst: Self::with_error
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:862,1
    - Dst: Error::kind
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:862,1
    - Dst: Self::complete
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:865,1
    - Dst: Err
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:866,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 49
    argCount: 5
    argNames:
    - ctx
    - from
    - to
    - args
    - opts
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    - OpCopy
    - OpCopier
    constantsTouched: []
    func_position:
      end: 869
      start: 833
    functionDepth: 30
    functionLinenumber: 833
    functionLinenumberEnd: 869
    functionName: MetricsAccessor::copy
    functionSourceFile: /src/opendal/core/layers/observe-metrics-common/src/lib.rs
    functionUses: 0
    functionsReached:
    - Instant::now
    - MetricLabels::new
    - ExecutingGuard::new_operation
    - Ok
    - into_static
    - clone
    - Err
    - Self::defuse
    - copy
    - object_store::Result::clone
    - Error::kind
    - Self::complete
    - MetricValue::OperationExecuting
    - observe
    - Self::with_error
    - MetricsWrapper::new
    - Vec::clone
    linkageType: ''
    returnType: Result
    signature: 'fn copy(&self,ctx: &OperationContext,from: &str,to: &str,args: OpCopy,opts:
      OpCopier,) -> Result<Self::Copier>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: MetricLabels::new
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:878,1
    - Dst: clone
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:878,1
    - Dst: into_static
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:878,1
    - Dst: Instant::now
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:880,1
    - Dst: observe
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:882,1
    - Dst: Vec::clone
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:883,1
    - Dst: MetricValue::OperationExecuting
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:883,1
    - Dst: ExecutingGuard::new_operation
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:885,1
    - Dst: clone
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:885,1
    - Dst: Vec::clone
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:885,1
    - Dst: rename
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:887,1
    - Dst: inspect
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:887,1
    - Dst: observe
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:892,1
    - Dst: Vec::clone
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:893,1
    - Dst: MetricValue::OperationDurationSeconds
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:894,1
    - Dst: elapsed
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:894,1
    - Dst: inspect_err
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:887,1
    - Dst: observe
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:898,1
    - Dst: Vec::clone
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:899,1
    - Dst: Self::with_error
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:899,1
    - Dst: Error::kind
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:899,1
    - Dst: Self::complete
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:904,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 52
    argCount: 4
    argNames:
    - ctx
    - from
    - to
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    - OpRename
    constantsTouched: []
    func_position:
      end: 906
      start: 871
    functionDepth: 30
    functionLinenumber: 871
    functionLinenumberEnd: 906
    functionName: MetricsAccessor::rename
    functionSourceFile: /src/opendal/core/layers/observe-metrics-common/src/lib.rs
    functionUses: 0
    functionsReached:
    - MetricValue::OperationDurationSeconds
    - Instant::now
    - MetricLabels::new
    - ExecutingGuard::new_operation
    - into_static
    - clone
    - rename
    - inspect
    - inspect_err
    - Error::kind
    - elapsed
    - Self::complete
    - MetricValue::OperationExecuting
    - observe
    - Self::with_error
    - Vec::clone
    linkageType: ''
    returnType: Result
    signature: 'async fn rename(&self,ctx: &OperationContext,from: &str,to: &str,args:
      OpRename,) -> Result<RpRename>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: MetricLabels::new
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:909,1
    - Dst: clone
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:909,1
    - Dst: jlong::into_static
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:909,1
    - Dst: Instant::now
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:911,1
    - Dst: observe
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:913,1
    - Dst: Vec::clone
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:914,1
    - Dst: MetricValue::OperationExecuting
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:914,1
    - Dst: ExecutingGuard::new_operation
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:916,1
    - Dst: clone
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:916,1
    - Dst: Vec::clone
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:916,1
    - Dst: stat
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:918,1
    - Dst: inspect
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:918,1
    - Dst: observe
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:923,1
    - Dst: Vec::clone
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:924,1
    - Dst: MetricValue::OperationDurationSeconds
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:925,1
    - Dst: elapsed
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:925,1
    - Dst: inspect_err
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:918,1
    - Dst: observe
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:929,1
    - Dst: Vec::clone
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:930,1
    - Dst: Self::with_error
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:930,1
    - Dst: Error::kind
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:930,1
    - Dst: Self::complete
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:935,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 52
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpStat
    constantsTouched: []
    func_position:
      end: 937
      start: 908
    functionDepth: 30
    functionLinenumber: 908
    functionLinenumberEnd: 937
    functionName: MetricsAccessor::stat
    functionSourceFile: /src/opendal/core/layers/observe-metrics-common/src/lib.rs
    functionUses: 0
    functionsReached:
    - MetricValue::OperationDurationSeconds
    - Instant::now
    - MetricLabels::new
    - ExecutingGuard::new_operation
    - clone
    - inspect
    - inspect_err
    - jlong::into_static
    - elapsed
    - Error::kind
    - MetricValue::OperationExecuting
    - observe
    - Self::with_error
    - Self::complete
    - stat
    - Vec::clone
    linkageType: ''
    returnType: Result
    signature: 'async fn stat(&self, ctx: &OperationContext, path: &str, args: OpStat)
      -> Result<RpStat>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: MetricLabels::new
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:940,1
    - Dst: clone
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:940,1
    - Dst: into_static
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:940,1
    - Dst: Instant::now
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:942,1
    - Dst: observe
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:944,1
    - Dst: Vec::clone
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:945,1
    - Dst: MetricValue::OperationExecuting
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:945,1
    - Dst: ExecutingGuard::new_operation
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:947,1
    - Dst: clone
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:947,1
    - Dst: Vec::clone
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:947,1
    - Dst: delete
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:949,1
    - Dst: Self::defuse
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:951,1
    - Dst: Ok
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:952,1
    - Dst: MetricsWrapper::new
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:952,1
    - Dst: clone
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:954,1
    - Dst: observe
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:960,1
    - Dst: Vec::clone
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:961,1
    - Dst: Self::with_error
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:961,1
    - Dst: Error::kind
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:961,1
    - Dst: Self::complete
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:964,1
    - Dst: Err
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:965,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 47
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - '&OperationContext'
    constantsTouched: []
    func_position:
      end: 968
      start: 939
    functionDepth: 30
    functionLinenumber: 939
    functionLinenumberEnd: 968
    functionName: MetricsAccessor::delete
    functionSourceFile: /src/opendal/core/layers/observe-metrics-common/src/lib.rs
    functionUses: 0
    functionsReached:
    - Instant::now
    - MetricLabels::new
    - ExecutingGuard::new_operation
    - delete
    - Ok
    - into_static
    - clone
    - Err
    - Self::defuse
    - Error::kind
    - Self::complete
    - MetricValue::OperationExecuting
    - observe
    - Self::with_error
    - MetricsWrapper::new
    - Vec::clone
    linkageType: ''
    returnType: Result
    signature: 'fn delete(&self, ctx: &OperationContext) -> Result<Self::Deleter>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: MetricLabels::new
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:971,1
    - Dst: clone
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:971,1
    - Dst: into_static
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:971,1
    - Dst: Instant::now
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:973,1
    - Dst: observe
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:975,1
    - Dst: Vec::clone
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:976,1
    - Dst: MetricValue::OperationExecuting
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:976,1
    - Dst: ExecutingGuard::new_operation
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:978,1
    - Dst: clone
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:978,1
    - Dst: Vec::clone
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:978,1
    - Dst: list
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:980,1
    - Dst: Self::defuse
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:982,1
    - Dst: Ok
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:983,1
    - Dst: MetricsWrapper::new
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:983,1
    - Dst: clone
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:985,1
    - Dst: observe
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:991,1
    - Dst: Vec::clone
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:992,1
    - Dst: Self::with_error
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:992,1
    - Dst: Error::kind
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:992,1
    - Dst: Self::complete
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:995,1
    - Dst: Err
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:996,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 47
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpList
    constantsTouched: []
    func_position:
      end: 999
      start: 970
    functionDepth: 30
    functionLinenumber: 970
    functionLinenumberEnd: 999
    functionName: MetricsAccessor::list
    functionSourceFile: /src/opendal/core/layers/observe-metrics-common/src/lib.rs
    functionUses: 0
    functionsReached:
    - Instant::now
    - MetricLabels::new
    - ExecutingGuard::new_operation
    - Ok
    - into_static
    - clone
    - Err
    - list
    - Self::defuse
    - Error::kind
    - Self::complete
    - MetricValue::OperationExecuting
    - observe
    - Self::with_error
    - MetricsWrapper::new
    - Vec::clone
    linkageType: ''
    returnType: Result
    signature: 'fn list(&self, ctx: &OperationContext, path: &str, args: OpList) ->
      Result<Self::Lister>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: MetricLabels::new
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1007,1
    - Dst: clone
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1007,1
    - Dst: into_static
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1007,1
    - Dst: Instant::now
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1009,1
    - Dst: observe
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1011,1
    - Dst: Vec::clone
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1012,1
    - Dst: MetricValue::OperationExecuting
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1012,1
    - Dst: ExecutingGuard::new_operation
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1014,1
    - Dst: clone
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1014,1
    - Dst: Vec::clone
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1014,1
    - Dst: presign
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1016,1
    - Dst: inspect
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1016,1
    - Dst: observe
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1021,1
    - Dst: Vec::clone
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1022,1
    - Dst: MetricValue::OperationDurationSeconds
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1023,1
    - Dst: elapsed
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1023,1
    - Dst: inspect_err
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1016,1
    - Dst: observe
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1027,1
    - Dst: Vec::clone
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1028,1
    - Dst: Self::with_error
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1028,1
    - Dst: Error::kind
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1028,1
    - Dst: Self::complete
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1033,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 52
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpPresign
    constantsTouched: []
    func_position:
      end: 1035
      start: 1001
    functionDepth: 30
    functionLinenumber: 1001
    functionLinenumberEnd: 1035
    functionName: MetricsAccessor::presign
    functionSourceFile: /src/opendal/core/layers/observe-metrics-common/src/lib.rs
    functionUses: 0
    functionsReached:
    - MetricValue::OperationDurationSeconds
    - Instant::now
    - MetricLabels::new
    - ExecutingGuard::new_operation
    - into_static
    - clone
    - inspect
    - inspect_err
    - Error::kind
    - elapsed
    - Self::complete
    - MetricValue::OperationExecuting
    - observe
    - Self::with_error
    - presign
    - Vec::clone
    linkageType: ''
    returnType: Result
    signature: 'async fn presign(&self,ctx: &OperationContext,path: &str,args: OpPresign,)
      -> Result<RpPresign>'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 3
    argNames:
    - inner
    - interceptor
    - labels
    argTypes:
    - R
    - I
    - MetricLabels
    constantsTouched: []
    func_position:
      end: 1052
      start: 1046
    functionDepth: 0
    functionLinenumber: 1046
    functionLinenumberEnd: 1052
    functionName: MetricsReader::new
    functionSourceFile: /src/opendal/core/layers/observe-metrics-common/src/lib.rs
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: 'fn new(inner: R, interceptor: I, labels: MetricLabels) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: clone
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1057,1
    - Dst: Instant::now
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1058,1
    - Dst: observe
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1060,1
    - Dst: Vec::clone
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1061,1
    - Dst: MetricValue::OperationExecuting
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1061,1
    - Dst: ExecutingGuard::new_operation
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1063,1
    - Dst: clone
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1063,1
    - Dst: Vec::clone
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1063,1
    - Dst: open
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1065,1
    - Dst: observe
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1067,1
    - Dst: Vec::clone
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1068,1
    - Dst: MetricValue::OperationTtfbSeconds
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1069,1
    - Dst: elapsed
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1069,1
    - Dst: Self::defuse
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1071,1
    - Dst: Ok
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1072,1
    - Dst: Box::new
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1074,1
    - Dst: MetricsWrapper::new
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1074,1
    - Dst: clone
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1076,1
    - Dst: observe
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1083,1
    - Dst: Vec::clone
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1084,1
    - Dst: Self::with_error
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1084,1
    - Dst: Error::kind
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1084,1
    - Dst: Self::complete
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1087,1
    - Dst: Err
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1088,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 57
    argCount: 1
    argNames:
    - range
    argTypes:
    - BytesRange
    constantsTouched: []
    func_position:
      end: 1091
      start: 1056
    functionDepth: 32
    functionLinenumber: 1056
    functionLinenumberEnd: 1091
    functionName: MetricsReader::open
    functionSourceFile: /src/opendal/core/layers/observe-metrics-common/src/lib.rs
    functionUses: 0
    functionsReached:
    - MetricValue::OperationTtfbSeconds
    - open
    - Instant::now
    - ExecutingGuard::new_operation
    - Ok
    - Box::new
    - clone
    - Err
    - Self::defuse
    - Error::kind
    - elapsed
    - Self::complete
    - MetricValue::OperationExecuting
    - observe
    - Self::with_error
    - MetricsWrapper::new
    - Vec::clone
    linkageType: ''
    returnType: Result
    signature: 'async fn open(&self, range: BytesRange) -> Result<(RpRead, Box<dyn
      oio::ReadStreamDyn>)>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: clone
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1094,1
    - Dst: Instant::now
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1095,1
    - Dst: observe
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1097,1
    - Dst: Vec::clone
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1098,1
    - Dst: MetricValue::OperationExecuting
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1098,1
    - Dst: MetricsWrapper::new
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1099,1
    - Dst: clone
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1099,1
    - Dst: read
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1101,1
    - Dst: inspect_err
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1101,1
    - Dst: record_error
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1102,1
    - Dst: len
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1105,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 38
    argCount: 1
    argNames:
    - range
    argTypes:
    - BytesRange
    constantsTouched: []
    func_position:
      end: 1109
      start: 1093
    functionDepth: 32
    functionLinenumber: 1093
    functionLinenumberEnd: 1109
    functionName: MetricsReader::read
    functionSourceFile: /src/opendal/core/layers/observe-metrics-common/src/lib.rs
    functionUses: 0
    functionsReached:
    - read
    - record_error
    - Instant::now
    - clone
    - inspect_err
    - MetricValue::OperationExecuting
    - observe
    - len
    - MetricsWrapper::new
    - Vec::clone
    linkageType: ''
    returnType: Result
    signature: 'async fn read(&self, range: BytesRange) -> Result<(RpRead, Buffer)>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: elapsed
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1126,1
    - Dst: observe
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1129,1
    - Dst: clone
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1130,1
    - Dst: with_error
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1130,1
    - Dst: jlong::into_static
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1135,1
    - Dst: jlong::into_static
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1136,1
    - Dst: into_static
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1137,1
    - Dst: observe
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1139,1
    - Dst: clone
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1140,1
    - Dst: MetricValue::OperationBytes
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1140,1
    - Dst: observe
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1141,1
    - Dst: clone
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1142,1
    - Dst: MetricValue::OperationBytesRate
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1143,1
    - Dst: Result::as_secs_f64
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1143,1
    - Dst: observe
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1146,1
    - Dst: clone
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1147,1
    - Dst: MetricValue::OperationEntries
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1148,1
    - Dst: observe
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1150,1
    - Dst: clone
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1151,1
    - Dst: MetricValue::OperationEntriesRate
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1152,1
    - Dst: Result::as_secs_f64
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1152,1
    - Dst: observe
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1156,1
    - Dst: clone
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1157,1
    - Dst: MetricValue::OperationDurationSeconds
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1158,1
    - Dst: observe
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1160,1
    - Dst: clone
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1161,1
    - Dst: MetricValue::OperationExecuting
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1161,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 95
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 1162
      start: 1124
    functionDepth: 32
    functionLinenumber: 1124
    functionLinenumberEnd: 1162
    functionName: MetricsWrapper::drop
    functionSourceFile: /src/opendal/core/layers/observe-metrics-common/src/lib.rs
    functionUses: 0
    functionsReached:
    - Result::as_secs_f64
    - MetricValue::OperationDurationSeconds
    - clone
    - into_static
    - MetricValue::OperationExecuting
    - jlong::into_static
    - elapsed
    - with_error
    - MetricValue::OperationEntries
    - observe
    - MetricValue::OperationEntriesRate
    - MetricValue::OperationBytesRate
    - MetricValue::OperationBytes
    linkageType: ''
    returnType: void
    signature: fn drop(&mut self)
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 4
    argNames:
    - inner
    - interceptor
    - labels
    - start
    argTypes:
    - R
    - I
    - MetricLabels
    - Instant
    constantsTouched: []
    func_position:
      end: 1175
      start: 1166
    functionDepth: 0
    functionLinenumber: 1166
    functionLinenumberEnd: 1175
    functionName: MetricsWrapper::new
    functionSourceFile: /src/opendal/core/layers/observe-metrics-common/src/lib.rs
    functionUses: 6
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: 'fn new(inner: R, interceptor: I, labels: MetricLabels, start: Instant)
      -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: observe
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1179,1
    - Dst: clone
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1180,1
    - Dst: with_error
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1180,1
    - Dst: Error::kind
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1180,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 14
    argCount: 1
    argNames:
    - err
    argTypes:
    - '&Error'
    constantsTouched: []
    func_position:
      end: 1183
      start: 1177
    functionDepth: 32
    functionLinenumber: 1177
    functionLinenumberEnd: 1183
    functionName: MetricsWrapper::record_error
    functionSourceFile: /src/opendal/core/layers/observe-metrics-common/src/lib.rs
    functionUses: 6
    functionsReached:
    - observe
    - Error::kind
    - clone
    - with_error
    linkageType: ''
    returnType: void
    signature: 'fn record_error(&mut self, err: &Error)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: read
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1188,1
    - Dst: inspect
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1188,1
    - Dst: Result::is_empty
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1192,1
    - Dst: Result::len
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1195,1
    - Dst: inspect_err
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1188,1
    - Dst: MetricsWrapper::record_error
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1197,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 24
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 1198
      start: 1187
    functionDepth: 31
    functionLinenumber: 1187
    functionLinenumberEnd: 1198
    functionName: MetricsWrapper::read
    functionSourceFile: /src/opendal/core/layers/observe-metrics-common/src/lib.rs
    functionUses: 0
    functionsReached:
    - read
    - MetricsWrapper::record_error
    - inspect
    - Result::is_empty
    - inspect_err
    - Result::len
    linkageType: ''
    returnType: Result
    signature: async fn read(&mut self) -> Result<Buffer>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::len
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1203,1
    - Dst: write
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1205,1
    - Dst: inspect
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1205,1
    - Dst: inspect_err
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1205,1
    - Dst: MetricsWrapper::record_error
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1211,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 17
    argCount: 1
    argNames:
    - bs
    argTypes:
    - Buffer
    constantsTouched: []
    func_position:
      end: 1212
      start: 1202
    functionDepth: 36
    functionLinenumber: 1202
    functionLinenumberEnd: 1212
    functionName: MetricsWrapper::write
    functionSourceFile: /src/opendal/core/layers/observe-metrics-common/src/lib.rs
    functionUses: 0
    functionsReached:
    - MetricsWrapper::record_error
    - inspect
    - inspect_err
    - Result::len
    - write
    linkageType: ''
    returnType: Result
    signature: 'async fn write(&mut self, bs: Buffer) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: close
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1286,1
    - Dst: inspect_err
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1286,1
    - Dst: MetricsWrapper::record_error
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1290,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 1293
      start: 1285
    functionDepth: 33
    functionLinenumber: 1285
    functionLinenumberEnd: 1293
    functionName: MetricsWrapper::close
    functionSourceFile: /src/opendal/core/layers/observe-metrics-common/src/lib.rs
    functionUses: 0
    functionsReached:
    - inspect_err
    - MetricsWrapper::record_error
    - close
    linkageType: ''
    returnType: Result
    signature: async fn close(&mut self) -> Result<Metadata>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: abort
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1296,1
    - Dst: inspect_err
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1296,1
    - Dst: MetricsWrapper::record_error
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1300,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 1303
      start: 1295
    functionDepth: 31
    functionLinenumber: 1295
    functionLinenumberEnd: 1303
    functionName: MetricsWrapper::abort
    functionSourceFile: /src/opendal/core/layers/observe-metrics-common/src/lib.rs
    functionUses: 0
    functionsReached:
    - inspect_err
    - MetricsWrapper::record_error
    - abort
    linkageType: ''
    returnType: Result
    signature: async fn abort(&mut self) -> Result<()>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: next
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1275,1
    - Dst: inspect
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1275,1
    - Dst: inspect_err
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1275,1
    - Dst: MetricsWrapper::record_error
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1282,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 18
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 1283
      start: 1274
    functionDepth: 33
    functionLinenumber: 1274
    functionLinenumberEnd: 1283
    functionName: MetricsWrapper::next
    functionSourceFile: /src/opendal/core/layers/observe-metrics-common/src/lib.rs
    functionUses: 0
    functionsReached:
    - next
    - inspect
    - inspect_err
    - MetricsWrapper::record_error
    linkageType: ''
    returnType: Result
    signature: async fn next(&mut self) -> Result<Option<usize>>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: delete
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1253,1
    - Dst: inspect
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1253,1
    - Dst: inspect_err
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1253,1
    - Dst: MetricsWrapper::record_error
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1259,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 14
    argCount: 2
    argNames:
    - path
    - args
    argTypes:
    - '&str'
    - OpDelete
    constantsTouched: []
    func_position:
      end: 1260
      start: 1252
    functionDepth: 32
    functionLinenumber: 1252
    functionLinenumberEnd: 1260
    functionName: MetricsWrapper::delete
    functionSourceFile: /src/opendal/core/layers/observe-metrics-common/src/lib.rs
    functionUses: 0
    functionsReached:
    - inspect
    - inspect_err
    - MetricsWrapper::record_error
    - delete
    linkageType: ''
    returnType: Result
    signature: 'async fn delete(&mut self, path: &str, args: OpDelete) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: ServiceInfo::new
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1400,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 1401
      start: 1399
    functionDepth: 33
    functionLinenumber: 1399
    functionLinenumberEnd: 1401
    functionName: tests::test_info
    functionSourceFile: /src/opendal/core/layers/observe-metrics-common/src/lib.rs
    functionUses: 0
    functionsReached:
    - ServiceInfo::new
    linkageType: ''
    returnType: ServiceInfo
    signature: fn test_info() -> ServiceInfo
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: MetricLabels::new
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1404,1
    - Dst: test_info
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1404,1
    - Dst: jlong::into_static
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1404,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 1405
      start: 1403
    functionDepth: 34
    functionLinenumber: 1403
    functionLinenumberEnd: 1405
    functionName: tests::test_labels
    functionSourceFile: /src/opendal/core/layers/observe-metrics-common/src/lib.rs
    functionUses: 0
    functionsReached:
    - test_info
    - jlong::into_static
    - MetricLabels::new
    linkageType: ''
    returnType: MetricLabels
    signature: fn test_labels() -> MetricLabels
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Mutex::new
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1452,1
    - Dst: HttpTransporter::new
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1455,1
    - Dst: test_info
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1456,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - mock
    - behavior
    argTypes:
    - MockInterceptor
    - MockFetchBehavior
    constantsTouched: []
    func_position:
      end: 1459
      start: 1447
    functionDepth: 34
    functionLinenumber: 1447
    functionLinenumberEnd: 1459
    functionName: tests::build_metrics_http_fetcher
    functionSourceFile: /src/opendal/core/layers/observe-metrics-common/src/lib.rs
    functionUses: 0
    functionsReached:
    - HttpTransporter::new
    - Mutex::new
    - test_info
    linkageType: ''
    returnType: MetricsHttpTransport
    signature: 'fn build_metrics_http_fetcher(mock: MockInterceptor,behavior: MockFetchBehavior,)
      -> MetricsHttpTransport<MockInterceptor>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: http::Request::new
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1462,1
    - Dst: Buffer::new
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1462,1
    - Dst: Self::uri_mut
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1463,1
    - Dst: '&str::parse'
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1463,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1463,1
    - Dst: Self::extensions_mut
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1464,1
    - Dst: insert
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1464,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 16
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 1466
      start: 1461
    functionDepth: 38
    functionLinenumber: 1461
    functionLinenumberEnd: 1466
    functionName: tests::build_http_request
    functionSourceFile: /src/opendal/core/layers/observe-metrics-common/src/lib.rs
    functionUses: 0
    functionsReached:
    - http::Request::new
    - Buffer::new
    - insert
    - '&str::parse'
    - Self::extensions_mut
    - Self::uri_mut
    - Result::unwrap
    linkageType: ''
    returnType: http::Request
    signature: fn build_http_request() -> http::Request<Buffer>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: MockInterceptor::default
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1534,1
    - Dst: build_metrics_http_fetcher
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1535,1
    - Dst: Self::clone
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1536,1
    - Dst: MockFetchBehavior::Respond
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1537,1
    - Dst: MetricsHttpTransport::fetch
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1540,1
    - Dst: build_http_request
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1540,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 1550
      start: 1533
    functionDepth: 35
    functionLinenumber: 1533
    functionLinenumberEnd: 1550
    functionName: tests::test_http_transport_error_records_status_error
    functionSourceFile: /src/opendal/core/layers/observe-metrics-common/src/lib.rs
    functionUses: 0
    functionsReached:
    - build_http_request
    - MockFetchBehavior::Respond
    - Self::clone
    - MockInterceptor::default
    - build_metrics_http_fetcher
    - MetricsHttpTransport::fetch
    linkageType: ''
    returnType: void
    signature: async fn test_http_transport_error_records_status_error()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: MockInterceptor::default
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1554,1
    - Dst: build_metrics_http_fetcher
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1555,1
    - Dst: Self::clone
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1556,1
    - Dst: MockFetchBehavior::Respond
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1557,1
    - Dst: MetricsHttpTransport::fetch
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1560,1
    - Dst: build_http_request
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1560,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 1570
      start: 1553
    functionDepth: 35
    functionLinenumber: 1553
    functionLinenumberEnd: 1570
    functionName: tests::test_http_server_error_records_status_error
    functionSourceFile: /src/opendal/core/layers/observe-metrics-common/src/lib.rs
    functionUses: 0
    functionsReached:
    - build_http_request
    - MockFetchBehavior::Respond
    - Self::clone
    - MockInterceptor::default
    - build_metrics_http_fetcher
    - MetricsHttpTransport::fetch
    linkageType: ''
    returnType: void
    signature: async fn test_http_server_error_records_status_error()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: MockInterceptor::default
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1574,1
    - Dst: build_metrics_http_fetcher
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1575,1
    - Dst: Self::clone
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1576,1
    - Dst: MockFetchBehavior::StreamBody
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1577,1
    - Dst: MetricsHttpTransport::fetch
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1583,1
    - Dst: build_http_request
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1583,1
    - Dst: unwrap
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1583,1
    - Dst: into_parts
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1586,1
    - Dst: to_buffer
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1587,1
    - Dst: unwrap
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1587,1
    - Dst: drop
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1589,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 29
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 1606
      start: 1573
    functionDepth: 35
    functionLinenumber: 1573
    functionLinenumberEnd: 1606
    functionName: tests::test_http_success_records_full_metrics
    functionSourceFile: /src/opendal/core/layers/observe-metrics-common/src/lib.rs
    functionUses: 0
    functionsReached:
    - build_http_request
    - to_buffer
    - MockFetchBehavior::StreamBody
    - unwrap
    - into_parts
    - Self::clone
    - drop
    - MockInterceptor::default
    - build_metrics_http_fetcher
    - MetricsHttpTransport::fetch
    linkageType: ''
    returnType: void
    signature: async fn test_http_success_records_full_metrics()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: MockInterceptor::default
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1610,1
    - Dst: build_metrics_http_fetcher
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1611,1
    - Dst: Self::clone
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1611,1
    - Dst: MetricsHttpTransport::fetch
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1613,1
    - Dst: build_http_request
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1613,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 1619
      start: 1609
    functionDepth: 35
    functionLinenumber: 1609
    functionLinenumberEnd: 1619
    functionName: tests::test_http_connection_error_records_connection_error
    functionSourceFile: /src/opendal/core/layers/observe-metrics-common/src/lib.rs
    functionUses: 0
    functionsReached:
    - build_http_request
    - Self::clone
    - MockInterceptor::default
    - build_metrics_http_fetcher
    - MetricsHttpTransport::fetch
    linkageType: ''
    returnType: void
    signature: async fn test_http_connection_error_records_connection_error()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: MockInterceptor::default
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1623,1
    - Dst: build_metrics_http_fetcher
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1624,1
    - Dst: Self::clone
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1625,1
    - Dst: MockFetchBehavior::StreamBody
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1626,1
    - Dst: MetricsHttpTransport::fetch
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1632,1
    - Dst: build_http_request
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1632,1
    - Dst: unwrap
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1632,1
    - Dst: into_parts
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1635,1
    - Dst: to_buffer
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1636,1
    - Dst: drop
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1638,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 23
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 1643
      start: 1622
    functionDepth: 35
    functionLinenumber: 1622
    functionLinenumberEnd: 1643
    functionName: tests::test_http_body_read_failure_records_metrics
    functionSourceFile: /src/opendal/core/layers/observe-metrics-common/src/lib.rs
    functionUses: 0
    functionsReached:
    - build_http_request
    - to_buffer
    - MockFetchBehavior::StreamBody
    - unwrap
    - into_parts
    - Self::clone
    - drop
    - MockInterceptor::default
    - build_metrics_http_fetcher
    - MetricsHttpTransport::fetch
    linkageType: ''
    returnType: void
    signature: async fn test_http_body_read_failure_records_metrics()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: MockInterceptor::default
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1647,1
    - Dst: test_labels
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1648,1
    - Dst: Self::observe
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1649,1
    - Dst: Vec::clone
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1649,1
    - Dst: MetricValue::HttpExecuting
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1649,1
    - Dst: stream::iter
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1650,1
    - Dst: Self::clone
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1654,1
    - Dst: Instant::now
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1657,1
    - Dst: next
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1661,1
    - Dst: is_some
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1661,1
    - Dst: drop
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1662,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 25
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 1667
      start: 1646
    functionDepth: 35
    functionLinenumber: 1646
    functionLinenumberEnd: 1667
    functionName: tests::test_stream_completed_records_response_metrics
    functionSourceFile: /src/opendal/core/layers/observe-metrics-common/src/lib.rs
    functionUses: 0
    functionsReached:
    - next
    - Instant::now
    - MetricValue::HttpExecuting
    - Self::observe
    - test_labels
    - is_some
    - Self::clone
    - drop
    - MockInterceptor::default
    - stream::iter
    - Vec::clone
    linkageType: ''
    returnType: void
    signature: async fn test_stream_completed_records_response_metrics()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: MockInterceptor::default
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1671,1
    - Dst: test_labels
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1672,1
    - Dst: Self::observe
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1673,1
    - Dst: Vec::clone
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1673,1
    - Dst: MetricValue::HttpExecuting
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1673,1
    - Dst: stream::iter
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1674,1
    - Dst: Self::clone
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1678,1
    - Dst: Instant::now
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1681,1
    - Dst: next
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1685,1
    - Dst: drop
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1686,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 21
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 1691
      start: 1670
    functionDepth: 35
    functionLinenumber: 1670
    functionLinenumberEnd: 1691
    functionName: tests::test_stream_dropped_early_records_response_metrics
    functionSourceFile: /src/opendal/core/layers/observe-metrics-common/src/lib.rs
    functionUses: 0
    functionsReached:
    - next
    - Instant::now
    - MetricValue::HttpExecuting
    - Self::observe
    - test_labels
    - Self::clone
    - drop
    - MockInterceptor::default
    - stream::iter
    - Vec::clone
    linkageType: ''
    returnType: void
    signature: async fn test_stream_dropped_early_records_response_metrics()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: MockInterceptor::default
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1695,1
    - Dst: test_labels
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1696,1
    - Dst: Self::observe
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1697,1
    - Dst: Vec::clone
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1697,1
    - Dst: MetricValue::HttpExecuting
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1697,1
    - Dst: stream::iter
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1698,1
    - Dst: Self::clone
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1705,1
    - Dst: Instant::now
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1708,1
    - Dst: next
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1712,1
    - Dst: is_err
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1713,1
    - Dst: drop
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1717,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 29
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 1722
      start: 1694
    functionDepth: 35
    functionLinenumber: 1694
    functionLinenumberEnd: 1722
    functionName: tests::test_stream_error_records_response_metrics
    functionSourceFile: /src/opendal/core/layers/observe-metrics-common/src/lib.rs
    functionUses: 0
    functionsReached:
    - next
    - is_err
    - Instant::now
    - MetricValue::HttpExecuting
    - Self::observe
    - test_labels
    - Self::clone
    - drop
    - MockInterceptor::default
    - stream::iter
    - Vec::clone
    linkageType: ''
    returnType: void
    signature: async fn test_stream_error_records_response_metrics()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: MockInterceptor::default
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1726,1
    - Dst: test_labels
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1727,1
    - Dst: Self::observe
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1728,1
    - Dst: Vec::clone
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1728,1
    - Dst: MetricValue::HttpExecuting
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1728,1
    - Dst: ExecutingGuard::new_http
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1729,1
    - Dst: Self::clone
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1729,1
    - Dst: Instant::now
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1729,1
    - Dst: drop
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1730,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 17
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 1735
      start: 1725
    functionDepth: 35
    functionLinenumber: 1725
    functionLinenumberEnd: 1735
    functionName: tests::test_http_guard_cancelled_records_connection_error
    functionSourceFile: /src/opendal/core/layers/observe-metrics-common/src/lib.rs
    functionUses: 0
    functionsReached:
    - Instant::now
    - MetricValue::HttpExecuting
    - Self::observe
    - test_labels
    - ExecutingGuard::new_http
    - Self::clone
    - drop
    - MockInterceptor::default
    - Vec::clone
    linkageType: ''
    returnType: void
    signature: fn test_http_guard_cancelled_records_connection_error()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: MockInterceptor::default
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1739,1
    - Dst: test_labels
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1740,1
    - Dst: Self::observe
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1741,1
    - Dst: Vec::clone
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1741,1
    - Dst: MetricValue::HttpExecuting
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1741,1
    - Dst: ExecutingGuard::new_http
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1742,1
    - Dst: Self::clone
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1742,1
    - Dst: Instant::now
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1742,1
    - Dst: Self::complete
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1743,1
    - Dst: drop
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1744,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 19
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 1748
      start: 1738
    functionDepth: 35
    functionLinenumber: 1738
    functionLinenumberEnd: 1748
    functionName: tests::test_http_guard_completed_only_decrements_executing
    functionSourceFile: /src/opendal/core/layers/observe-metrics-common/src/lib.rs
    functionUses: 0
    functionsReached:
    - Instant::now
    - MetricValue::HttpExecuting
    - Self::observe
    - test_labels
    - ExecutingGuard::new_http
    - Self::clone
    - Self::complete
    - drop
    - MockInterceptor::default
    - Vec::clone
    linkageType: ''
    returnType: void
    signature: fn test_http_guard_completed_only_decrements_executing()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: MockInterceptor::default
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1752,1
    - Dst: test_labels
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1753,1
    - Dst: Self::observe
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1754,1
    - Dst: Vec::clone
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1754,1
    - Dst: MetricValue::HttpExecuting
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1754,1
    - Dst: ExecutingGuard::new_http
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1755,1
    - Dst: Self::clone
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1755,1
    - Dst: Instant::now
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1755,1
    - Dst: Self::complete
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1756,1
    - Dst: Self::defuse
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1757,1
    - Dst: drop
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1758,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 22
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 1762
      start: 1751
    functionDepth: 35
    functionLinenumber: 1751
    functionLinenumberEnd: 1762
    functionName: tests::test_http_guard_defused_records_nothing
    functionSourceFile: /src/opendal/core/layers/observe-metrics-common/src/lib.rs
    functionUses: 0
    functionsReached:
    - Instant::now
    - MetricValue::HttpExecuting
    - Self::observe
    - Self::defuse
    - test_labels
    - ExecutingGuard::new_http
    - Self::clone
    - Self::complete
    - drop
    - MockInterceptor::default
    - Vec::clone
    linkageType: ''
    returnType: void
    signature: fn test_http_guard_defused_records_nothing()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: MockInterceptor::default
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1766,1
    - Dst: test_labels
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1767,1
    - Dst: Self::observe
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1768,1
    - Dst: Vec::clone
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1768,1
    - Dst: MetricValue::OperationExecuting
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1768,1
    - Dst: ExecutingGuard::new_operation
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1769,1
    - Dst: Self::clone
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1769,1
    - Dst: Instant::now
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1769,1
    - Dst: drop
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1770,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 17
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 1775
      start: 1765
    functionDepth: 35
    functionLinenumber: 1765
    functionLinenumberEnd: 1775
    functionName: tests::test_operation_guard_cancelled_records_operation_error
    functionSourceFile: /src/opendal/core/layers/observe-metrics-common/src/lib.rs
    functionUses: 0
    functionsReached:
    - Instant::now
    - ExecutingGuard::new_operation
    - Self::observe
    - test_labels
    - Self::clone
    - MetricValue::OperationExecuting
    - drop
    - MockInterceptor::default
    - Vec::clone
    linkageType: ''
    returnType: void
    signature: fn test_operation_guard_cancelled_records_operation_error()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: MockInterceptor::default
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1779,1
    - Dst: test_labels
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1780,1
    - Dst: Self::observe
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1781,1
    - Dst: Vec::clone
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1781,1
    - Dst: MetricValue::OperationExecuting
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1781,1
    - Dst: ExecutingGuard::new_operation
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1782,1
    - Dst: Self::clone
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1782,1
    - Dst: Instant::now
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1782,1
    - Dst: Self::complete
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1783,1
    - Dst: drop
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1784,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 19
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 1788
      start: 1778
    functionDepth: 35
    functionLinenumber: 1778
    functionLinenumberEnd: 1788
    functionName: tests::test_operation_guard_completed_only_decrements_executing
    functionSourceFile: /src/opendal/core/layers/observe-metrics-common/src/lib.rs
    functionUses: 0
    functionsReached:
    - Instant::now
    - ExecutingGuard::new_operation
    - Self::observe
    - test_labels
    - Self::complete
    - Self::clone
    - MetricValue::OperationExecuting
    - drop
    - MockInterceptor::default
    - Vec::clone
    linkageType: ''
    returnType: void
    signature: fn test_operation_guard_completed_only_decrements_executing()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: MockInterceptor::default
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1792,1
    - Dst: MetricLabels::new
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1793,1
    - Dst: test_info
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1793,1
    - Dst: jlong::into_static
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1793,1
    - Dst: MetricsReader::new
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1795,1
    - Dst: MockRawReader::with_read
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1796,1
    - Dst: Buffer::new
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1796,1
    - Dst: Self::clone
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1797,1
    - Dst: drop
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1800,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 15
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 1805
      start: 1791
    functionDepth: 34
    functionLinenumber: 1791
    functionLinenumberEnd: 1805
    functionName: tests::test_reader_drop_records_no_operation_metrics
    functionSourceFile: /src/opendal/core/layers/observe-metrics-common/src/lib.rs
    functionUses: 0
    functionsReached:
    - Buffer::new
    - MetricLabels::new
    - test_info
    - MetricsReader::new
    - jlong::into_static
    - Self::clone
    - MockRawReader::with_read
    - drop
    - MockInterceptor::default
    linkageType: ''
    returnType: void
    signature: fn test_reader_drop_records_no_operation_metrics()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: MockInterceptor::default
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1809,1
    - Dst: MetricLabels::new
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1810,1
    - Dst: test_info
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1810,1
    - Dst: jlong::into_static
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1810,1
    - Dst: MetricsReader::new
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1811,1
    - Dst: MockRawReader::with_open
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1812,1
    - Dst: Self::clone
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1813,1
    - Dst: oio::Read::open
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1817,1
    - Dst: BytesRange::from
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1817,1
    - Dst: unwrap
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1817,1
    - Dst: oio::ReadStream::read
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1822,1
    - Dst: unwrap
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1822,1
    - Dst: oio::ReadStream::read
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1824,1
    - Dst: unwrap
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1824,1
    - Dst: drop
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1826,1
    - Dst: drop
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1827,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 37
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 1833
      start: 1808
    functionDepth: 34
    functionLinenumber: 1808
    functionLinenumberEnd: 1833
    functionName: tests::test_reader_open_stream_records_operation_metrics_on_stream_drop
    functionSourceFile: /src/opendal/core/layers/observe-metrics-common/src/lib.rs
    functionUses: 0
    functionsReached:
    - MockRawReader::with_open
    - MetricLabels::new
    - BytesRange::from
    - unwrap
    - test_info
    - oio::Read::open
    - MetricsReader::new
    - jlong::into_static
    - Self::clone
    - drop
    - MockInterceptor::default
    - oio::ReadStream::read
    linkageType: ''
    returnType: void
    signature: async fn test_reader_open_stream_records_operation_metrics_on_stream_drop()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: MockInterceptor::default
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1837,1
    - Dst: MetricLabels::new
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1838,1
    - Dst: test_info
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1838,1
    - Dst: jlong::into_static
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1838,1
    - Dst: MetricsReader::new
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1839,1
    - Dst: MockRawReader::with_read
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1840,1
    - Dst: Buffer::from
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1840,1
    - Dst: Self::clone
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1841,1
    - Dst: oio::Read::read
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1845,1
    - Dst: BytesRange::from
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1845,1
    - Dst: unwrap
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1845,1
    - Dst: drop
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1848,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 23
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 1854
      start: 1836
    functionDepth: 34
    functionLinenumber: 1836
    functionLinenumberEnd: 1854
    functionName: tests::test_reader_read_records_operation_metrics
    functionSourceFile: /src/opendal/core/layers/observe-metrics-common/src/lib.rs
    functionUses: 0
    functionsReached:
    - MetricLabels::new
    - BytesRange::from
    - unwrap
    - test_info
    - MetricsReader::new
    - jlong::into_static
    - Self::clone
    - MockRawReader::with_read
    - drop
    - MockInterceptor::default
    - Buffer::from
    - oio::Read::read
    linkageType: ''
    returnType: void
    signature: async fn test_reader_read_records_operation_metrics()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: MockInterceptor::default
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1858,1
    - Dst: MetricLabels::new
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1859,1
    - Dst: test_info
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1859,1
    - Dst: into_static
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1859,1
    - Dst: Self::observe
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1860,1
    - Dst: Vec::clone
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1860,1
    - Dst: MetricValue::OperationExecuting
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1860,1
    - Dst: Self::clone
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1864,1
    - Dst: Instant::now
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1866,1
    - Dst: drop
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1871,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 25
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 1877
      start: 1857
    functionDepth: 34
    functionLinenumber: 1857
    functionLinenumberEnd: 1877
    functionName: tests::test_list_wrapper_drop_records_operation_entries
    functionSourceFile: /src/opendal/core/layers/observe-metrics-common/src/lib.rs
    functionUses: 0
    functionsReached:
    - MetricLabels::new
    - Instant::now
    - into_static
    - test_info
    - Self::observe
    - Self::clone
    - MetricValue::OperationExecuting
    - drop
    - MockInterceptor::default
    - Vec::clone
    linkageType: ''
    returnType: void
    signature: fn test_list_wrapper_drop_records_operation_entries()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: MockInterceptor::default
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1881,1
    - Dst: MetricLabels::new
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1882,1
    - Dst: test_info
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1882,1
    - Dst: jlong::into_static
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1882,1
    - Dst: Self::observe
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1883,1
    - Dst: Vec::clone
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1883,1
    - Dst: MetricValue::OperationExecuting
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1883,1
    - Dst: Self::clone
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1887,1
    - Dst: Instant::now
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1889,1
    - Dst: drop
      Src: /src/opendal/core/layers/observe-metrics-common/src/lib.rs:1893,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 20
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 1897
      start: 1880
    functionDepth: 34
    functionLinenumber: 1880
    functionLinenumberEnd: 1897
    functionName: tests::test_wrapper_cancelled_records_operation_error
    functionSourceFile: /src/opendal/core/layers/observe-metrics-common/src/lib.rs
    functionUses: 0
    functionsReached:
    - MetricLabels::new
    - Instant::now
    - test_info
    - Self::observe
    - jlong::into_static
    - Self::clone
    - MetricValue::OperationExecuting
    - drop
    - MockInterceptor::default
    - Vec::clone
    linkageType: ''
    returnType: void
    signature: fn test_wrapper_cancelled_records_operation_error()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::debug_struct
      Src: /src/opendal/core/layers/retry/src/lib.rs:124,1
    - Dst: field
      Src: /src/opendal/core/layers/retry/src/lib.rs:124,1
    - Dst: finish_non_exhaustive
      Src: /src/opendal/core/layers/retry/src/lib.rs:124,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - f
    argTypes:
    - '&mut std::fmt::Formatter<''_>'
    constantsTouched: []
    func_position:
      end: 127
      start: 123
    functionDepth: 5
    functionLinenumber: 123
    functionLinenumberEnd: 127
    functionName: RetryLayer::fmt
    functionSourceFile: /src/opendal/core/layers/retry/src/lib.rs
    functionUses: 0
    functionsReached:
    - field
    - Result::debug_struct
    - finish_non_exhaustive
    linkageType: ''
    returnType: std::fmt::Result
    signature: 'fn fmt(&self, f: &mut std::fmt::Formatter<''_>) -> std::fmt::Result'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: clone
      Src: /src/opendal/core/layers/retry/src/lib.rs:134,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 136
      start: 131
    functionDepth: 1
    functionLinenumber: 131
    functionLinenumberEnd: 136
    functionName: RetryLayer::clone
    functionSourceFile: /src/opendal/core/layers/retry/src/lib.rs
    functionUses: 1
    functionsReached:
    - clone
    linkageType: ''
    returnType: Self
    signature: fn clone(&self) -> Self
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: ExponentialBuilder::default
      Src: /src/opendal/core/layers/retry/src/lib.rs:142,1
    - Dst: Arc::new
      Src: /src/opendal/core/layers/retry/src/lib.rs:143,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 145
      start: 140
    functionDepth: 3
    functionLinenumber: 140
    functionLinenumberEnd: 145
    functionName: RetryLayer::default
    functionSourceFile: /src/opendal/core/layers/retry/src/lib.rs
    functionUses: 8
    functionsReached:
    - Arc::new
    - ExponentialBuilder::default
    linkageType: ''
    returnType: Self
    signature: fn default() -> Self
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self::default
      Src: /src/opendal/bindings/nodejs/src/layer.rs:109,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 110
      start: 108
    functionDepth: 3
    functionLinenumber: 108
    functionLinenumberEnd: 110
    functionName: RetryLayer::new
    functionSourceFile: /src/opendal/bindings/nodejs/src/layer.rs
    functionUses: 5
    functionsReached:
    - Self::default
    linkageType: ''
    returnType: Self
    signature: pub fn new() -> Self
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Arc::new
      Src: /src/opendal/core/layers/retry/src/lib.rs:172,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - notify
    argTypes:
    - NI
    constantsTouched: []
    func_position:
      end: 174
      start: 169
    functionDepth: 2
    functionLinenumber: 169
    functionLinenumberEnd: 174
    functionName: RetryLayer::with_notify
    functionSourceFile: /src/opendal/core/layers/retry/src/lib.rs
    functionUses: 0
    functionsReached:
    - Arc::new
    linkageType: ''
    returnType: RetryLayer
    signature: 'pub fn with_notify<NI: RetryInterceptor>(self, notify: NI) -> RetryLayer<NI>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: with_jitter
      Src: /src/opendal/core/layers/retry/src/lib.rs:181,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 183
      start: 180
    functionDepth: 1
    functionLinenumber: 180
    functionLinenumberEnd: 183
    functionName: RetryLayer::with_jitter
    functionSourceFile: /src/opendal/core/layers/retry/src/lib.rs
    functionUses: 0
    functionsReached:
    - with_jitter
    linkageType: ''
    returnType: Self
    signature: pub fn with_jitter(mut self) -> Self
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: with_factor
      Src: /src/opendal/core/layers/retry/src/lib.rs:191,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - factor
    argTypes:
    - f32
    constantsTouched: []
    func_position:
      end: 193
      start: 190
    functionDepth: 1
    functionLinenumber: 190
    functionLinenumberEnd: 193
    functionName: RetryLayer::with_factor
    functionSourceFile: /src/opendal/core/layers/retry/src/lib.rs
    functionUses: 0
    functionsReached:
    - with_factor
    linkageType: ''
    returnType: Self
    signature: 'pub fn with_factor(mut self, factor: f32) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: with_min_delay
      Src: /src/opendal/core/layers/retry/src/lib.rs:197,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - min_delay
    argTypes:
    - Duration
    constantsTouched: []
    func_position:
      end: 199
      start: 196
    functionDepth: 1
    functionLinenumber: 196
    functionLinenumberEnd: 199
    functionName: RetryLayer::with_min_delay
    functionSourceFile: /src/opendal/core/layers/retry/src/lib.rs
    functionUses: 0
    functionsReached:
    - with_min_delay
    linkageType: ''
    returnType: Self
    signature: 'pub fn with_min_delay(mut self, min_delay: Duration) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: with_max_delay
      Src: /src/opendal/core/layers/retry/src/lib.rs:205,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - max_delay
    argTypes:
    - Duration
    constantsTouched: []
    func_position:
      end: 207
      start: 204
    functionDepth: 1
    functionLinenumber: 204
    functionLinenumberEnd: 207
    functionName: RetryLayer::with_max_delay
    functionSourceFile: /src/opendal/core/layers/retry/src/lib.rs
    functionUses: 0
    functionsReached:
    - with_max_delay
    linkageType: ''
    returnType: Self
    signature: 'pub fn with_max_delay(mut self, max_delay: Duration) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: with_max_times
      Src: /src/opendal/core/layers/retry/src/lib.rs:213,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - max_times
    argTypes:
    - usize
    constantsTouched: []
    func_position:
      end: 215
      start: 212
    functionDepth: 1
    functionLinenumber: 212
    functionLinenumberEnd: 215
    functionName: RetryLayer::with_max_times
    functionSourceFile: /src/opendal/core/layers/retry/src/lib.rs
    functionUses: 0
    functionsReached:
    - with_max_times
    linkageType: ''
    returnType: Self
    signature: 'pub fn with_max_times(mut self, max_times: usize) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Arc::new
      Src: /src/opendal/core/layers/retry/src/lib.rs:220,1
    - Dst: RetryLayer::layer
      Src: /src/opendal/core/layers/retry/src/lib.rs:220,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - inner
    argTypes:
    - Servicer
    constantsTouched: []
    func_position:
      end: 221
      start: 219
    functionDepth: 4
    functionLinenumber: 219
    functionLinenumberEnd: 221
    functionName: RetryLayer::apply_service
    functionSourceFile: /src/opendal/core/layers/retry/src/lib.rs
    functionUses: 0
    functionsReached:
    - RetryLayer::layer
    - Arc::new
    linkageType: ''
    returnType: Servicer
    signature: 'fn apply_service(&self, inner: Servicer) -> Servicer'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: layer
      Src: /src/opendal/bindings/python/src/layers/retry.rs:42,1
    - Dst: clone
      Src: /src/opendal/bindings/python/src/layers/retry.rs:42,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - op
    argTypes:
    - Operator
    constantsTouched: []
    func_position:
      end: 43
      start: 41
    functionDepth: 3
    functionLinenumber: 41
    functionLinenumberEnd: 43
    functionName: RetryLayer::layer
    functionSourceFile: /src/opendal/bindings/python/src/layers/retry.rs
    functionUses: 1
    functionsReached:
    - layer
    - clone
    linkageType: ''
    returnType: Operator
    signature: 'fn layer(&self, op: Operator) -> Operator'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - event
    argTypes:
    - RetryEvent<'_>
    constantsTouched: []
    func_position:
      end: 265
      start: 263
    functionDepth: 0
    functionLinenumber: 263
    functionLinenumberEnd: 265
    functionName: F::intercept
    functionSourceFile: /src/opendal/core/layers/retry/src/lib.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: 'fn intercept(&self, event: RetryEvent<''_>)'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - event
    argTypes:
    - RetryEvent<'_>
    constantsTouched: []
    func_position:
      end: 278
      start: 272
    functionDepth: 0
    functionLinenumber: 272
    functionLinenumberEnd: 278
    functionName: DefaultRetryInterceptor::intercept
    functionSourceFile: /src/opendal/core/layers/retry/src/lib.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: 'fn intercept(&self, event: RetryEvent<''_>)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::debug_struct
      Src: /src/opendal/core/layers/retry/src/lib.rs:290,1
    - Dst: field
      Src: /src/opendal/core/layers/retry/src/lib.rs:290,1
    - Dst: finish_non_exhaustive
      Src: /src/opendal/core/layers/retry/src/lib.rs:290,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - f
    argTypes:
    - '&mut std::fmt::Formatter<''_>'
    constantsTouched: []
    func_position:
      end: 293
      start: 289
    functionDepth: 5
    functionLinenumber: 289
    functionLinenumberEnd: 293
    functionName: RetryService::fmt
    functionSourceFile: /src/opendal/core/layers/retry/src/lib.rs
    functionUses: 0
    functionsReached:
    - field
    - Result::debug_struct
    - finish_non_exhaustive
    linkageType: ''
    returnType: std::fmt::Result
    signature: 'fn fmt(&self, f: &mut std::fmt::Formatter<''_>) -> std::fmt::Result'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: info
      Src: /src/opendal/core/layers/retry/src/lib.rs:304,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 305
      start: 303
    functionDepth: 2
    functionLinenumber: 303
    functionLinenumberEnd: 305
    functionName: RetryService::info
    functionSourceFile: /src/opendal/core/layers/retry/src/lib.rs
    functionUses: 0
    functionsReached:
    - info
    linkageType: ''
    returnType: ServiceInfo
    signature: fn info(&self) -> ServiceInfo
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: capability
      Src: /src/opendal/core/layers/retry/src/lib.rs:308,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 309
      start: 307
    functionDepth: 2
    functionLinenumber: 307
    functionLinenumberEnd: 309
    functionName: RetryService::capability
    functionSourceFile: /src/opendal/core/layers/retry/src/lib.rs
    functionUses: 0
    functionsReached:
    - capability
    linkageType: ''
    returnType: Capability
    signature: fn capability(&self) -> Capability
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: create_dir
      Src: /src/opendal/core/layers/retry/src/lib.rs:318,1
    - Dst: OpStat::clone
      Src: /src/opendal/core/layers/retry/src/lib.rs:318,1
    - Dst: retry
      Src: /src/opendal/core/layers/retry/src/lib.rs:318,1
    - Dst: when
      Src: /src/opendal/core/layers/retry/src/lib.rs:318,1
    - Dst: Result::is_temporary
      Src: /src/opendal/core/layers/retry/src/lib.rs:320,1
    - Dst: notify
      Src: /src/opendal/core/layers/retry/src/lib.rs:318,1
    - Dst: intercept
      Src: /src/opendal/core/layers/retry/src/lib.rs:323,1
    - Dst: map_err
      Src: /src/opendal/core/layers/retry/src/lib.rs:318,1
    - Dst: Error::set_persistent
      Src: /src/opendal/core/layers/retry/src/lib.rs:331,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 28
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpCreateDir
    constantsTouched: []
    func_position:
      end: 332
      start: 311
    functionDepth: 35
    functionLinenumber: 311
    functionLinenumberEnd: 332
    functionName: RetryService::create_dir
    functionSourceFile: /src/opendal/core/layers/retry/src/lib.rs
    functionUses: 0
    functionsReached:
    - OpStat::clone
    - map_err
    - Result::is_temporary
    - retry
    - create_dir
    - notify
    - Error::set_persistent
    - when
    - intercept
    linkageType: ''
    returnType: Result
    signature: 'async fn create_dir(&self,ctx: &OperationContext,path: &str,args:
      OpCreateDir,) -> Result<RpCreateDir>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: read
      Src: /src/opendal/core/layers/retry/src/lib.rs:336,1
    - Dst: OpStat::clone
      Src: /src/opendal/core/layers/retry/src/lib.rs:336,1
    - Dst: retry
      Src: /src/opendal/core/layers/retry/src/lib.rs:336,1
    - Dst: when
      Src: /src/opendal/core/layers/retry/src/lib.rs:336,1
    - Dst: Result::is_temporary
      Src: /src/opendal/core/layers/retry/src/lib.rs:338,1
    - Dst: notify
      Src: /src/opendal/core/layers/retry/src/lib.rs:336,1
    - Dst: intercept
      Src: /src/opendal/core/layers/retry/src/lib.rs:341,1
    - Dst: call
      Src: /src/opendal/core/layers/retry/src/lib.rs:336,1
    - Dst: map_err
      Src: /src/opendal/core/layers/retry/src/lib.rs:336,1
    - Dst: Error::set_persistent
      Src: /src/opendal/core/layers/retry/src/lib.rs:349,1
    - Dst: Ok
      Src: /src/opendal/core/layers/retry/src/lib.rs:351,1
    - Dst: RetryReader::new
      Src: /src/opendal/core/layers/retry/src/lib.rs:351,1
    - Dst: clone
      Src: /src/opendal/core/layers/retry/src/lib.rs:351,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 36
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpRead
    constantsTouched: []
    func_position:
      end: 352
      start: 334
    functionDepth: 31
    functionLinenumber: 334
    functionLinenumberEnd: 352
    functionName: RetryService::read
    functionSourceFile: /src/opendal/core/layers/retry/src/lib.rs
    functionUses: 0
    functionsReached:
    - OpStat::clone
    - read
    - call
    - Result::is_temporary
    - map_err
    - RetryReader::new
    - Ok
    - clone
    - retry
    - Error::set_persistent
    - notify
    - when
    - intercept
    linkageType: ''
    returnType: Result
    signature: 'fn read(&self, ctx: &OperationContext, path: &str, args: OpRead) ->
      Result<Self::Reader>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: write
      Src: /src/opendal/core/layers/retry/src/lib.rs:356,1
    - Dst: OpStat::clone
      Src: /src/opendal/core/layers/retry/src/lib.rs:356,1
    - Dst: retry
      Src: /src/opendal/core/layers/retry/src/lib.rs:356,1
    - Dst: when
      Src: /src/opendal/core/layers/retry/src/lib.rs:356,1
    - Dst: Result::is_temporary
      Src: /src/opendal/core/layers/retry/src/lib.rs:358,1
    - Dst: notify
      Src: /src/opendal/core/layers/retry/src/lib.rs:356,1
    - Dst: intercept
      Src: /src/opendal/core/layers/retry/src/lib.rs:361,1
    - Dst: call
      Src: /src/opendal/core/layers/retry/src/lib.rs:356,1
    - Dst: map_err
      Src: /src/opendal/core/layers/retry/src/lib.rs:356,1
    - Dst: Error::set_persistent
      Src: /src/opendal/core/layers/retry/src/lib.rs:369,1
    - Dst: Ok
      Src: /src/opendal/core/layers/retry/src/lib.rs:371,1
    - Dst: RetryWrapper::new
      Src: /src/opendal/core/layers/retry/src/lib.rs:371,1
    - Dst: clone
      Src: /src/opendal/core/layers/retry/src/lib.rs:371,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 36
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpWrite
    constantsTouched: []
    func_position:
      end: 372
      start: 354
    functionDepth: 36
    functionLinenumber: 354
    functionLinenumberEnd: 372
    functionName: RetryService::write
    functionSourceFile: /src/opendal/core/layers/retry/src/lib.rs
    functionUses: 0
    functionsReached:
    - OpStat::clone
    - call
    - map_err
    - Result::is_temporary
    - Ok
    - clone
    - retry
    - Error::set_persistent
    - notify
    - when
    - RetryWrapper::new
    - intercept
    - write
    linkageType: ''
    returnType: Result
    signature: 'fn write(&self, ctx: &OperationContext, path: &str, args: OpWrite)
      -> Result<Self::Writer>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: stat
      Src: /src/opendal/core/layers/retry/src/lib.rs:376,1
    - Dst: OpStat::clone
      Src: /src/opendal/core/layers/retry/src/lib.rs:376,1
    - Dst: retry
      Src: /src/opendal/core/layers/retry/src/lib.rs:376,1
    - Dst: when
      Src: /src/opendal/core/layers/retry/src/lib.rs:376,1
    - Dst: Result::is_temporary
      Src: /src/opendal/core/layers/retry/src/lib.rs:378,1
    - Dst: notify
      Src: /src/opendal/core/layers/retry/src/lib.rs:376,1
    - Dst: intercept
      Src: /src/opendal/core/layers/retry/src/lib.rs:381,1
    - Dst: map_err
      Src: /src/opendal/core/layers/retry/src/lib.rs:376,1
    - Dst: Error::set_persistent
      Src: /src/opendal/core/layers/retry/src/lib.rs:389,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 28
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpStat
    constantsTouched: []
    func_position:
      end: 390
      start: 374
    functionDepth: 31
    functionLinenumber: 374
    functionLinenumberEnd: 390
    functionName: RetryService::stat
    functionSourceFile: /src/opendal/core/layers/retry/src/lib.rs
    functionUses: 0
    functionsReached:
    - OpStat::clone
    - map_err
    - Result::is_temporary
    - retry
    - Error::set_persistent
    - notify
    - when
    - intercept
    - stat
    linkageType: ''
    returnType: Result
    signature: 'async fn stat(&self, ctx: &OperationContext, path: &str, args: OpStat)
      -> Result<RpStat>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: delete
      Src: /src/opendal/core/layers/retry/src/lib.rs:394,1
    - Dst: retry
      Src: /src/opendal/core/layers/retry/src/lib.rs:394,1
    - Dst: when
      Src: /src/opendal/core/layers/retry/src/lib.rs:394,1
    - Dst: Result::is_temporary
      Src: /src/opendal/core/layers/retry/src/lib.rs:396,1
    - Dst: notify
      Src: /src/opendal/core/layers/retry/src/lib.rs:394,1
    - Dst: intercept
      Src: /src/opendal/core/layers/retry/src/lib.rs:399,1
    - Dst: call
      Src: /src/opendal/core/layers/retry/src/lib.rs:394,1
    - Dst: map_err
      Src: /src/opendal/core/layers/retry/src/lib.rs:394,1
    - Dst: Error::set_persistent
      Src: /src/opendal/core/layers/retry/src/lib.rs:407,1
    - Dst: Ok
      Src: /src/opendal/core/layers/retry/src/lib.rs:409,1
    - Dst: RetryWrapper::new
      Src: /src/opendal/core/layers/retry/src/lib.rs:409,1
    - Dst: clone
      Src: /src/opendal/core/layers/retry/src/lib.rs:411,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 34
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - '&OperationContext'
    constantsTouched: []
    func_position:
      end: 414
      start: 392
    functionDepth: 32
    functionLinenumber: 392
    functionLinenumberEnd: 414
    functionName: RetryService::delete
    functionSourceFile: /src/opendal/core/layers/retry/src/lib.rs
    functionUses: 0
    functionsReached:
    - map_err
    - call
    - Result::is_temporary
    - Ok
    - delete
    - clone
    - retry
    - Error::set_persistent
    - notify
    - when
    - RetryWrapper::new
    - intercept
    linkageType: ''
    returnType: Result
    signature: 'fn delete(&self, ctx: &OperationContext) -> Result<Self::Deleter>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: copy
      Src: /src/opendal/core/layers/retry/src/lib.rs:425,1
    - Dst: OpStat::clone
      Src: /src/opendal/core/layers/retry/src/lib.rs:425,1
    - Dst: object_store::Result::clone
      Src: /src/opendal/core/layers/retry/src/lib.rs:425,1
    - Dst: retry
      Src: /src/opendal/core/layers/retry/src/lib.rs:425,1
    - Dst: when
      Src: /src/opendal/core/layers/retry/src/lib.rs:425,1
    - Dst: Result::is_temporary
      Src: /src/opendal/core/layers/retry/src/lib.rs:427,1
    - Dst: notify
      Src: /src/opendal/core/layers/retry/src/lib.rs:425,1
    - Dst: intercept
      Src: /src/opendal/core/layers/retry/src/lib.rs:430,1
    - Dst: call
      Src: /src/opendal/core/layers/retry/src/lib.rs:425,1
    - Dst: map_err
      Src: /src/opendal/core/layers/retry/src/lib.rs:425,1
    - Dst: Error::set_persistent
      Src: /src/opendal/core/layers/retry/src/lib.rs:438,1
    - Dst: Ok
      Src: /src/opendal/core/layers/retry/src/lib.rs:440,1
    - Dst: RetryWrapper::new
      Src: /src/opendal/core/layers/retry/src/lib.rs:440,1
    - Dst: clone
      Src: /src/opendal/core/layers/retry/src/lib.rs:440,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 38
    argCount: 5
    argNames:
    - ctx
    - from
    - to
    - args
    - opts
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    - OpCopy
    - OpCopier
    constantsTouched: []
    func_position:
      end: 441
      start: 416
    functionDepth: 34
    functionLinenumber: 416
    functionLinenumberEnd: 441
    functionName: RetryService::copy
    functionSourceFile: /src/opendal/core/layers/retry/src/lib.rs
    functionUses: 0
    functionsReached:
    - OpStat::clone
    - call
    - map_err
    - Result::is_temporary
    - Ok
    - clone
    - retry
    - copy
    - object_store::Result::clone
    - notify
    - Error::set_persistent
    - when
    - RetryWrapper::new
    - intercept
    linkageType: ''
    returnType: Result
    signature: 'fn copy(&self,ctx: &OperationContext,from: &str,to: &str,args: OpCopy,opts:
      OpCopier,) -> Result<Self::Copier>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: rename
      Src: /src/opendal/core/layers/retry/src/lib.rs:451,1
    - Dst: OpStat::clone
      Src: /src/opendal/core/layers/retry/src/lib.rs:451,1
    - Dst: retry
      Src: /src/opendal/core/layers/retry/src/lib.rs:451,1
    - Dst: when
      Src: /src/opendal/core/layers/retry/src/lib.rs:451,1
    - Dst: Result::is_temporary
      Src: /src/opendal/core/layers/retry/src/lib.rs:453,1
    - Dst: notify
      Src: /src/opendal/core/layers/retry/src/lib.rs:451,1
    - Dst: intercept
      Src: /src/opendal/core/layers/retry/src/lib.rs:456,1
    - Dst: map_err
      Src: /src/opendal/core/layers/retry/src/lib.rs:451,1
    - Dst: Error::set_persistent
      Src: /src/opendal/core/layers/retry/src/lib.rs:464,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 28
    argCount: 4
    argNames:
    - ctx
    - from
    - to
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    - OpRename
    constantsTouched: []
    func_position:
      end: 465
      start: 443
    functionDepth: 6
    functionLinenumber: 443
    functionLinenumberEnd: 465
    functionName: RetryService::rename
    functionSourceFile: /src/opendal/core/layers/retry/src/lib.rs
    functionUses: 0
    functionsReached:
    - OpStat::clone
    - map_err
    - Result::is_temporary
    - rename
    - retry
    - Error::set_persistent
    - notify
    - when
    - intercept
    linkageType: ''
    returnType: Result
    signature: 'async fn rename(&self,ctx: &OperationContext,from: &str,to: &str,args:
      OpRename,) -> Result<RpRename>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: list
      Src: /src/opendal/core/layers/retry/src/lib.rs:469,1
    - Dst: OpStat::clone
      Src: /src/opendal/core/layers/retry/src/lib.rs:469,1
    - Dst: retry
      Src: /src/opendal/core/layers/retry/src/lib.rs:469,1
    - Dst: when
      Src: /src/opendal/core/layers/retry/src/lib.rs:469,1
    - Dst: Result::is_temporary
      Src: /src/opendal/core/layers/retry/src/lib.rs:471,1
    - Dst: notify
      Src: /src/opendal/core/layers/retry/src/lib.rs:469,1
    - Dst: intercept
      Src: /src/opendal/core/layers/retry/src/lib.rs:474,1
    - Dst: call
      Src: /src/opendal/core/layers/retry/src/lib.rs:469,1
    - Dst: map_err
      Src: /src/opendal/core/layers/retry/src/lib.rs:469,1
    - Dst: Error::set_persistent
      Src: /src/opendal/core/layers/retry/src/lib.rs:482,1
    - Dst: Ok
      Src: /src/opendal/core/layers/retry/src/lib.rs:484,1
    - Dst: RetryWrapper::new
      Src: /src/opendal/core/layers/retry/src/lib.rs:484,1
    - Dst: clone
      Src: /src/opendal/core/layers/retry/src/lib.rs:484,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 36
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpList
    constantsTouched: []
    func_position:
      end: 485
      start: 467
    functionDepth: 6
    functionLinenumber: 467
    functionLinenumberEnd: 485
    functionName: RetryService::list
    functionSourceFile: /src/opendal/core/layers/retry/src/lib.rs
    functionUses: 0
    functionsReached:
    - OpStat::clone
    - call
    - map_err
    - Result::is_temporary
    - Ok
    - clone
    - retry
    - list
    - Error::set_persistent
    - notify
    - when
    - RetryWrapper::new
    - intercept
    linkageType: ''
    returnType: Result
    signature: 'fn list(&self, ctx: &OperationContext, path: &str, args: OpList) ->
      Result<Self::Lister>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: presign
      Src: /src/opendal/core/layers/retry/src/lib.rs:494,1
    - Dst: OpStat::clone
      Src: /src/opendal/core/layers/retry/src/lib.rs:494,1
    - Dst: retry
      Src: /src/opendal/core/layers/retry/src/lib.rs:494,1
    - Dst: when
      Src: /src/opendal/core/layers/retry/src/lib.rs:494,1
    - Dst: Result::is_temporary
      Src: /src/opendal/core/layers/retry/src/lib.rs:496,1
    - Dst: notify
      Src: /src/opendal/core/layers/retry/src/lib.rs:494,1
    - Dst: intercept
      Src: /src/opendal/core/layers/retry/src/lib.rs:499,1
    - Dst: map_err
      Src: /src/opendal/core/layers/retry/src/lib.rs:494,1
    - Dst: Error::set_persistent
      Src: /src/opendal/core/layers/retry/src/lib.rs:507,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 28
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpPresign
    constantsTouched: []
    func_position:
      end: 508
      start: 487
    functionDepth: 6
    functionLinenumber: 487
    functionLinenumberEnd: 508
    functionName: RetryService::presign
    functionSourceFile: /src/opendal/core/layers/retry/src/lib.rs
    functionUses: 0
    functionsReached:
    - OpStat::clone
    - map_err
    - Result::is_temporary
    - retry
    - Error::set_persistent
    - notify
    - when
    - intercept
    - presign
    linkageType: ''
    returnType: Result
    signature: 'async fn presign(&self,ctx: &OperationContext,path: &str,args: OpPresign,)
      -> Result<RpPresign>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Arc::new
      Src: /src/opendal/core/layers/retry/src/lib.rs:521,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - inner
    - notify
    - builder
    argTypes:
    - R
    - Arc<I>
    - ExponentialBuilder
    constantsTouched: []
    func_position:
      end: 525
      start: 519
    functionDepth: 2
    functionLinenumber: 519
    functionLinenumberEnd: 525
    functionName: RetryReader::new
    functionSourceFile: /src/opendal/core/layers/retry/src/lib.rs
    functionUses: 2
    functionsReached:
    - Arc::new
    linkageType: ''
    returnType: Self
    signature: 'fn new(inner: R, notify: Arc<I>, builder: ExponentialBuilder) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: open
      Src: /src/opendal/core/layers/retry/src/lib.rs:533,1
    - Dst: retry
      Src: /src/opendal/core/layers/retry/src/lib.rs:533,1
    - Dst: when
      Src: /src/opendal/core/layers/retry/src/lib.rs:533,1
    - Dst: Result::is_temporary
      Src: /src/opendal/core/layers/retry/src/lib.rs:535,1
    - Dst: notify
      Src: /src/opendal/core/layers/retry/src/lib.rs:533,1
    - Dst: intercept
      Src: /src/opendal/core/layers/retry/src/lib.rs:538,1
    - Dst: map_err
      Src: /src/opendal/core/layers/retry/src/lib.rs:533,1
    - Dst: Result::set_persistent
      Src: /src/opendal/core/layers/retry/src/lib.rs:546,1
    - Dst: Ok
      Src: /src/opendal/core/layers/retry/src/lib.rs:548,1
    - Dst: Box::new
      Src: /src/opendal/core/layers/retry/src/lib.rs:550,1
    - Dst: RetryReadStream::new
      Src: /src/opendal/core/layers/retry/src/lib.rs:550,1
    - Dst: clone
      Src: /src/opendal/core/layers/retry/src/lib.rs:551,1
    - Dst: clone
      Src: /src/opendal/core/layers/retry/src/lib.rs:554,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 39
    argCount: 1
    argNames:
    - range
    argTypes:
    - BytesRange
    constantsTouched: []
    func_position:
      end: 558
      start: 529
    functionDepth: 6
    functionLinenumber: 529
    functionLinenumberEnd: 558
    functionName: RetryReader::open
    functionSourceFile: /src/opendal/core/layers/retry/src/lib.rs
    functionUses: 0
    functionsReached:
    - map_err
    - Result::is_temporary
    - open
    - Ok
    - RetryReadStream::new
    - Box::new
    - clone
    - retry
    - notify
    - when
    - intercept
    - Result::set_persistent
    linkageType: ''
    returnType: Result
    signature: 'async fn open(&self, range: BytesRange) -> Result<(RpRead, Box<dyn
      oio::ReadStreamDyn>)>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: read
      Src: /src/opendal/core/layers/retry/src/lib.rs:564,1
    - Dst: retry
      Src: /src/opendal/core/layers/retry/src/lib.rs:564,1
    - Dst: when
      Src: /src/opendal/core/layers/retry/src/lib.rs:564,1
    - Dst: Result::is_temporary
      Src: /src/opendal/core/layers/retry/src/lib.rs:566,1
    - Dst: notify
      Src: /src/opendal/core/layers/retry/src/lib.rs:564,1
    - Dst: intercept
      Src: /src/opendal/core/layers/retry/src/lib.rs:569,1
    - Dst: map_err
      Src: /src/opendal/core/layers/retry/src/lib.rs:564,1
    - Dst: Result::set_persistent
      Src: /src/opendal/core/layers/retry/src/lib.rs:577,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 26
    argCount: 1
    argNames:
    - range
    argTypes:
    - BytesRange
    constantsTouched: []
    func_position:
      end: 578
      start: 560
    functionDepth: 31
    functionLinenumber: 560
    functionLinenumberEnd: 578
    functionName: RetryReader::read
    functionSourceFile: /src/opendal/core/layers/retry/src/lib.rs
    functionUses: 0
    functionsReached:
    - map_err
    - read
    - Result::is_temporary
    - retry
    - notify
    - when
    - intercept
    - Result::set_persistent
    linkageType: ''
    returnType: Result
    signature: 'async fn read(&self, range: BytesRange) -> Result<(RpRead, Buffer)>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Some
      Src: /src/opendal/core/layers/retry/src/lib.rs:601,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 5
    argNames:
    - reader
    - stream
    - range
    - notify
    - builder
    argTypes:
    - Arc<R>
    - Box<dyn oio::ReadStreamDyn>
    - BytesRange
    - Arc<I>
    - ExponentialBuilder
    constantsTouched: []
    func_position:
      end: 607
      start: 592
    functionDepth: 0
    functionLinenumber: 592
    functionLinenumberEnd: 607
    functionName: RetryReadStream::new
    functionSourceFile: /src/opendal/core/layers/retry/src/lib.rs
    functionUses: 1
    functionsReached:
    - Some
    linkageType: ''
    returnType: Self
    signature: 'fn new(reader: Arc<R>,stream: Box<dyn oio::ReadStreamDyn>,range: BytesRange,notify:
      Arc<I>,builder: ExponentialBuilder,) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: clone
      Src: /src/opendal/core/layers/retry/src/lib.rs:614,1
    - Dst: take
      Src: /src/opendal/core/layers/retry/src/lib.rs:615,1
    - Dst: anyhow::Result::clone
      Src: /src/opendal/core/layers/retry/src/lib.rs:626,1
    - Dst: (Vec::advance
      Src: /src/opendal/core/layers/retry/src/lib.rs:631,1
    - Dst: anyhow::Result::open
      Src: /src/opendal/core/layers/retry/src/lib.rs:634,1
    - Dst: Err
      Src: /src/opendal/core/layers/retry/src/lib.rs:636,1
    - Dst: Result::read
      Src: /src/opendal/core/layers/retry/src/lib.rs:641,1
    - Dst: io::Result::is_empty
      Src: /src/opendal/core/layers/retry/src/lib.rs:643,1
    - Dst: io::Result::len
      Src: /src/opendal/core/layers/retry/src/lib.rs:644,1
    - Dst: Some
      Src: /src/opendal/core/layers/retry/src/lib.rs:646,1
    - Dst: Ok
      Src: /src/opendal/core/layers/retry/src/lib.rs:646,1
    - Dst: Err
      Src: /src/opendal/core/layers/retry/src/lib.rs:648,1
    - Dst: retry
      Src: /src/opendal/core/layers/retry/src/lib.rs:620,1
    - Dst: when
      Src: /src/opendal/core/layers/retry/src/lib.rs:620,1
    - Dst: Result::is_temporary
      Src: /src/opendal/core/layers/retry/src/lib.rs:656,1
    - Dst: context
      Src: /src/opendal/core/layers/retry/src/lib.rs:620,1
    - Dst: notify
      Src: /src/opendal/core/layers/retry/src/lib.rs:620,1
    - Dst: intercept
      Src: /src/opendal/core/layers/retry/src/lib.rs:660,1
    - Dst: map_err
      Src: /src/opendal/core/layers/retry/src/lib.rs:673,1
    - Dst: Error::set_persistent
      Src: /src/opendal/core/layers/retry/src/lib.rs:673,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 83
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 674
      start: 611
    functionDepth: 31
    functionLinenumber: 611
    functionLinenumberEnd: 674
    functionName: RetryReadStream::read
    functionSourceFile: /src/opendal/core/layers/retry/src/lib.rs
    functionUses: 0
    functionsReached:
    - io::Result::len
    - clone
    - notify
    - anyhow::Result::open
    - map_err
    - Result::is_temporary
    - Result::read
    - Ok
    - take
    - when
    - context
    - Some
    - retry
    - io::Result::is_empty
    - (Vec::advance
    - Err
    - anyhow::Result::clone
    - Error::set_persistent
    - intercept
    linkageType: ''
    returnType: Result
    signature: async fn read(&mut self) -> Result<Buffer>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Some
      Src: /src/opendal/core/layers/retry/src/lib.rs:688,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - inner
    - notify
    - backoff
    argTypes:
    - R
    - Arc<I>
    - ExponentialBuilder
    constantsTouched: []
    func_position:
      end: 692
      start: 686
    functionDepth: 0
    functionLinenumber: 686
    functionLinenumberEnd: 692
    functionName: RetryWrapper::new
    functionSourceFile: /src/opendal/core/layers/retry/src/lib.rs
    functionUses: 4
    functionsReached:
    - Some
    linkageType: ''
    returnType: Self
    signature: 'fn new(inner: R, notify: Arc<I>, backoff: ExponentialBuilder) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: take
      Src: /src/opendal/core/layers/retry/src/lib.rs:695,1
    - Dst: ok_or_else
      Src: /src/opendal/core/layers/retry/src/lib.rs:695,1
    - Dst: Error::new
      Src: /src/opendal/core/layers/retry/src/lib.rs:696,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 701
      start: 694
    functionDepth: 36
    functionLinenumber: 694
    functionLinenumberEnd: 701
    functionName: RetryWrapper::take_inner
    functionSourceFile: /src/opendal/core/layers/retry/src/lib.rs
    functionUses: 6
    functionsReached:
    - take
    - ok_or_else
    - Error::new
    linkageType: ''
    returnType: Result
    signature: fn take_inner(&mut self) -> Result<R>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: RetryWrapper::take_inner
      Src: /src/opendal/core/layers/retry/src/lib.rs:708,1
    - Dst: Result::read
      Src: /src/opendal/core/layers/retry/src/lib.rs:713,1
    - Dst: retry
      Src: /src/opendal/core/layers/retry/src/lib.rs:711,1
    - Dst: when
      Src: /src/opendal/core/layers/retry/src/lib.rs:711,1
    - Dst: Result::is_temporary
      Src: /src/opendal/core/layers/retry/src/lib.rs:719,1
    - Dst: context
      Src: /src/opendal/core/layers/retry/src/lib.rs:711,1
    - Dst: notify
      Src: /src/opendal/core/layers/retry/src/lib.rs:711,1
    - Dst: intercept
      Src: /src/opendal/core/layers/retry/src/lib.rs:723,1
    - Dst: Some
      Src: /src/opendal/core/layers/retry/src/lib.rs:732,1
    - Dst: map_err
      Src: /src/opendal/core/layers/retry/src/lib.rs:733,1
    - Dst: Error::set_persistent
      Src: /src/opendal/core/layers/retry/src/lib.rs:733,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 36
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 734
      start: 705
    functionDepth: 37
    functionLinenumber: 705
    functionLinenumberEnd: 734
    functionName: RetryWrapper::read
    functionSourceFile: /src/opendal/core/layers/retry/src/lib.rs
    functionUses: 0
    functionsReached:
    - context
    - map_err
    - Result::is_temporary
    - Result::read
    - RetryWrapper::take_inner
    - Some
    - retry
    - Error::set_persistent
    - notify
    - when
    - intercept
    linkageType: ''
    returnType: Result
    signature: async fn read(&mut self) -> Result<Buffer>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: RetryWrapper::take_inner
      Src: /src/opendal/core/layers/retry/src/lib.rs:741,1
    - Dst: Result::write
      Src: /src/opendal/core/layers/retry/src/lib.rs:746,1
    - Dst: Result::clone
      Src: /src/opendal/core/layers/retry/src/lib.rs:746,1
    - Dst: retry
      Src: /src/opendal/core/layers/retry/src/lib.rs:744,1
    - Dst: when
      Src: /src/opendal/core/layers/retry/src/lib.rs:744,1
    - Dst: Result::is_temporary
      Src: /src/opendal/core/layers/retry/src/lib.rs:752,1
    - Dst: context
      Src: /src/opendal/core/layers/retry/src/lib.rs:744,1
    - Dst: notify
      Src: /src/opendal/core/layers/retry/src/lib.rs:744,1
    - Dst: intercept
      Src: /src/opendal/core/layers/retry/src/lib.rs:756,1
    - Dst: Some
      Src: /src/opendal/core/layers/retry/src/lib.rs:765,1
    - Dst: map_err
      Src: /src/opendal/core/layers/retry/src/lib.rs:766,1
    - Dst: Error::set_persistent
      Src: /src/opendal/core/layers/retry/src/lib.rs:766,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 40
    argCount: 1
    argNames:
    - bs
    argTypes:
    - Buffer
    constantsTouched: []
    func_position:
      end: 767
      start: 738
    functionDepth: 37
    functionLinenumber: 738
    functionLinenumberEnd: 767
    functionName: RetryWrapper::write
    functionSourceFile: /src/opendal/core/layers/retry/src/lib.rs
    functionUses: 0
    functionsReached:
    - Result::clone
    - context
    - map_err
    - Result::is_temporary
    - RetryWrapper::take_inner
    - Some
    - retry
    - Result::write
    - Error::set_persistent
    - notify
    - when
    - intercept
    linkageType: ''
    returnType: Result
    signature: 'async fn write(&mut self, bs: Buffer) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: RetryWrapper::take_inner
      Src: /src/opendal/core/layers/retry/src/lib.rs:1000,1
    - Dst: Result::abort
      Src: /src/opendal/core/layers/retry/src/lib.rs:1005,1
    - Dst: retry
      Src: /src/opendal/core/layers/retry/src/lib.rs:1003,1
    - Dst: when
      Src: /src/opendal/core/layers/retry/src/lib.rs:1003,1
    - Dst: Result::is_temporary
      Src: /src/opendal/core/layers/retry/src/lib.rs:1011,1
    - Dst: context
      Src: /src/opendal/core/layers/retry/src/lib.rs:1003,1
    - Dst: notify
      Src: /src/opendal/core/layers/retry/src/lib.rs:1003,1
    - Dst: intercept
      Src: /src/opendal/core/layers/retry/src/lib.rs:1015,1
    - Dst: Some
      Src: /src/opendal/core/layers/retry/src/lib.rs:1024,1
    - Dst: map_err
      Src: /src/opendal/core/layers/retry/src/lib.rs:1025,1
    - Dst: Error::set_persistent
      Src: /src/opendal/core/layers/retry/src/lib.rs:1025,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 36
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 1026
      start: 997
    functionDepth: 37
    functionLinenumber: 997
    functionLinenumberEnd: 1026
    functionName: RetryWrapper::abort
    functionSourceFile: /src/opendal/core/layers/retry/src/lib.rs
    functionUses: 0
    functionsReached:
    - context
    - map_err
    - Result::abort
    - Result::is_temporary
    - RetryWrapper::take_inner
    - Some
    - retry
    - Error::set_persistent
    - notify
    - when
    - intercept
    linkageType: ''
    returnType: Result
    signature: async fn abort(&mut self) -> Result<()>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: RetryWrapper::take_inner
      Src: /src/opendal/core/layers/retry/src/lib.rs:969,1
    - Dst: Result::close
      Src: /src/opendal/core/layers/retry/src/lib.rs:974,1
    - Dst: retry
      Src: /src/opendal/core/layers/retry/src/lib.rs:972,1
    - Dst: when
      Src: /src/opendal/core/layers/retry/src/lib.rs:972,1
    - Dst: Result::is_temporary
      Src: /src/opendal/core/layers/retry/src/lib.rs:980,1
    - Dst: context
      Src: /src/opendal/core/layers/retry/src/lib.rs:972,1
    - Dst: notify
      Src: /src/opendal/core/layers/retry/src/lib.rs:972,1
    - Dst: intercept
      Src: /src/opendal/core/layers/retry/src/lib.rs:984,1
    - Dst: Some
      Src: /src/opendal/core/layers/retry/src/lib.rs:993,1
    - Dst: map_err
      Src: /src/opendal/core/layers/retry/src/lib.rs:994,1
    - Dst: Error::set_persistent
      Src: /src/opendal/core/layers/retry/src/lib.rs:994,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 36
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 995
      start: 966
    functionDepth: 37
    functionLinenumber: 966
    functionLinenumberEnd: 995
    functionName: RetryWrapper::close
    functionSourceFile: /src/opendal/core/layers/retry/src/lib.rs
    functionUses: 0
    functionsReached:
    - context
    - map_err
    - Result::is_temporary
    - RetryWrapper::take_inner
    - Some
    - Result::close
    - retry
    - Error::set_persistent
    - notify
    - when
    - intercept
    linkageType: ''
    returnType: Result
    signature: async fn close(&mut self) -> Result<Metadata>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: RetryWrapper::take_inner
      Src: /src/opendal/core/layers/retry/src/lib.rs:938,1
    - Dst: Result::next
      Src: /src/opendal/core/layers/retry/src/lib.rs:943,1
    - Dst: retry
      Src: /src/opendal/core/layers/retry/src/lib.rs:941,1
    - Dst: when
      Src: /src/opendal/core/layers/retry/src/lib.rs:941,1
    - Dst: Result::is_temporary
      Src: /src/opendal/core/layers/retry/src/lib.rs:949,1
    - Dst: context
      Src: /src/opendal/core/layers/retry/src/lib.rs:941,1
    - Dst: notify
      Src: /src/opendal/core/layers/retry/src/lib.rs:941,1
    - Dst: intercept
      Src: /src/opendal/core/layers/retry/src/lib.rs:953,1
    - Dst: Some
      Src: /src/opendal/core/layers/retry/src/lib.rs:962,1
    - Dst: map_err
      Src: /src/opendal/core/layers/retry/src/lib.rs:963,1
    - Dst: Error::set_persistent
      Src: /src/opendal/core/layers/retry/src/lib.rs:963,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 36
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 964
      start: 935
    functionDepth: 37
    functionLinenumber: 935
    functionLinenumberEnd: 964
    functionName: RetryWrapper::next
    functionSourceFile: /src/opendal/core/layers/retry/src/lib.rs
    functionUses: 0
    functionsReached:
    - context
    - map_err
    - Result::is_temporary
    - RetryWrapper::take_inner
    - Some
    - retry
    - Result::next
    - Error::set_persistent
    - notify
    - when
    - intercept
    linkageType: ''
    returnType: Result
    signature: async fn next(&mut self) -> Result<Option<usize>>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: RetryWrapper::take_inner
      Src: /src/opendal/core/layers/retry/src/lib.rs:869,1
    - Dst: to_string
      Src: /src/opendal/core/layers/retry/src/lib.rs:870,1
    - Dst: OpStat::clone
      Src: /src/opendal/core/layers/retry/src/lib.rs:871,1
    - Dst: clone
      Src: /src/opendal/core/layers/retry/src/lib.rs:876,1
    - Dst: Self::clone
      Src: /src/opendal/core/layers/retry/src/lib.rs:877,1
    - Dst: delete
      Src: /src/opendal/core/layers/retry/src/lib.rs:879,1
    - Dst: retry
      Src: /src/opendal/core/layers/retry/src/lib.rs:874,1
    - Dst: when
      Src: /src/opendal/core/layers/retry/src/lib.rs:874,1
    - Dst: Result::is_temporary
      Src: /src/opendal/core/layers/retry/src/lib.rs:885,1
    - Dst: context
      Src: /src/opendal/core/layers/retry/src/lib.rs:874,1
    - Dst: notify
      Src: /src/opendal/core/layers/retry/src/lib.rs:874,1
    - Dst: intercept
      Src: /src/opendal/core/layers/retry/src/lib.rs:889,1
    - Dst: Some
      Src: /src/opendal/core/layers/retry/src/lib.rs:898,1
    - Dst: map_err
      Src: /src/opendal/core/layers/retry/src/lib.rs:899,1
    - Dst: Result::set_persistent
      Src: /src/opendal/core/layers/retry/src/lib.rs:899,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 47
    argCount: 2
    argNames:
    - path
    - args
    argTypes:
    - '&str'
    - OpDelete
    constantsTouched: []
    func_position:
      end: 900
      start: 866
    functionDepth: 37
    functionLinenumber: 866
    functionLinenumberEnd: 900
    functionName: RetryWrapper::delete
    functionSourceFile: /src/opendal/core/layers/retry/src/lib.rs
    functionUses: 0
    functionsReached:
    - OpStat::clone
    - to_string
    - context
    - Result::is_temporary
    - map_err
    - RetryWrapper::take_inner
    - delete
    - clone
    - Some
    - retry
    - notify
    - Self::clone
    - when
    - intercept
    - Result::set_persistent
    linkageType: ''
    returnType: Result
    signature: 'async fn delete(&mut self, path: &str, args: OpDelete) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: setup
      Src: /src/opendal/core/layers/retry/src/lib.rs:1377,1
    - Dst: MockBuilder::default
      Src: /src/opendal/core/layers/retry/src/lib.rs:1379,1
    - Dst: Operator::new
      Src: /src/opendal/core/layers/retry/src/lib.rs:1380,1
    - Dst: OtelMetricsLayerBuilder::clone
      Src: /src/opendal/core/layers/retry/src/lib.rs:1380,1
    - Dst: layer
      Src: /src/opendal/core/layers/retry/src/lib.rs:1380,1
    - Dst: LoggingLayer::default
      Src: /src/opendal/core/layers/retry/src/lib.rs:1381,1
    - Dst: layer
      Src: /src/opendal/core/layers/retry/src/lib.rs:1380,1
    - Dst: RetryLayer::default
      Src: /src/opendal/core/layers/retry/src/lib.rs:1382,1
    - Dst: reader
      Src: /src/opendal/core/layers/retry/src/lib.rs:1384,1
    - Dst: Vec::new
      Src: /src/opendal/core/layers/retry/src/lib.rs:1385,1
    - Dst: Result::read_into
      Src: /src/opendal/core/layers/retry/src/lib.rs:1386,1
    - Dst: expect
      Src: /src/opendal/core/layers/retry/src/lib.rs:1386,1
    - Dst: Ok
      Src: /src/opendal/core/layers/retry/src/lib.rs:1394,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 30
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 1395
      start: 1376
    functionDepth: 34
    functionLinenumber: 1376
    functionLinenumberEnd: 1395
    functionName: tests::test_retry_read
    functionSourceFile: /src/opendal/core/layers/retry/src/lib.rs
    functionUses: 0
    functionsReached:
    - OtelMetricsLayerBuilder::clone
    - Operator::new
    - reader
    - expect
    - Ok
    - MockBuilder::default
    - Result::read_into
    - LoggingLayer::default
    - RetryLayer::default
    - Vec::new
    - layer
    - setup
    linkageType: ''
    returnType: Result
    signature: async fn test_retry_read() -> Result<()>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: setup
      Src: /src/opendal/core/layers/retry/src/lib.rs:1400,1
    - Dst: MockBuilder::default
      Src: /src/opendal/core/layers/retry/src/lib.rs:1402,1
    - Dst: Operator::new
      Src: /src/opendal/core/layers/retry/src/lib.rs:1403,1
    - Dst: OtelMetricsLayerBuilder::clone
      Src: /src/opendal/core/layers/retry/src/lib.rs:1403,1
    - Dst: layer
      Src: /src/opendal/core/layers/retry/src/lib.rs:1403,1
    - Dst: RetryLayer::default
      Src: /src/opendal/core/layers/retry/src/lib.rs:1405,1
    - Dst: Self::with_min_delay
      Src: /src/opendal/core/layers/retry/src/lib.rs:1405,1
    - Dst: Duration::from_millis
      Src: /src/opendal/core/layers/retry/src/lib.rs:1406,1
    - Dst: Self::with_max_delay
      Src: /src/opendal/core/layers/retry/src/lib.rs:1405,1
    - Dst: Duration::from_millis
      Src: /src/opendal/core/layers/retry/src/lib.rs:1407,1
    - Dst: Self::with_jitter
      Src: /src/opendal/core/layers/retry/src/lib.rs:1405,1
    - Dst: layer
      Src: /src/opendal/core/layers/retry/src/lib.rs:1403,1
    - Dst: LoggingLayer::default
      Src: /src/opendal/core/layers/retry/src/lib.rs:1412,1
    - Dst: writer
      Src: /src/opendal/core/layers/retry/src/lib.rs:1414,1
    - Dst: Self::write
      Src: /src/opendal/core/layers/retry/src/lib.rs:1415,1
    - Dst: Self::write
      Src: /src/opendal/core/layers/retry/src/lib.rs:1416,1
    - Dst: Self::close
      Src: /src/opendal/core/layers/retry/src/lib.rs:1417,1
    - Dst: Self::abort
      Src: /src/opendal/core/layers/retry/src/lib.rs:1420,1
    - Dst: Ok
      Src: /src/opendal/core/layers/retry/src/lib.rs:1423,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 48
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 1424
      start: 1399
    functionDepth: 34
    functionLinenumber: 1399
    functionLinenumberEnd: 1424
    functionName: tests::test_retry_write_fail_on_close
    functionSourceFile: /src/opendal/core/layers/retry/src/lib.rs
    functionUses: 0
    functionsReached:
    - OtelMetricsLayerBuilder::clone
    - Operator::new
    - Ok
    - MockBuilder::default
    - Self::with_max_delay
    - RetryLayer::default
    - Self::with_jitter
    - LoggingLayer::default
    - Self::write
    - Self::abort
    - Self::with_min_delay
    - writer
    - Self::close
    - layer
    - setup
    - Duration::from_millis
    linkageType: ''
    returnType: Result
    signature: async fn test_retry_write_fail_on_close() -> Result<()>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: setup
      Src: /src/opendal/core/layers/retry/src/lib.rs:1428,1
    - Dst: MockBuilder::default
      Src: /src/opendal/core/layers/retry/src/lib.rs:1430,1
    - Dst: Operator::new
      Src: /src/opendal/core/layers/retry/src/lib.rs:1431,1
    - Dst: OtelMetricsLayerBuilder::clone
      Src: /src/opendal/core/layers/retry/src/lib.rs:1431,1
    - Dst: layer
      Src: /src/opendal/core/layers/retry/src/lib.rs:1431,1
    - Dst: RetryLayer::default
      Src: /src/opendal/core/layers/retry/src/lib.rs:1431,1
    - Dst: lister
      Src: /src/opendal/core/layers/retry/src/lib.rs:1435,1
    - Dst: expect
      Src: /src/opendal/core/layers/retry/src/lib.rs:1435,1
    - Dst: Vec::new
      Src: /src/opendal/core/layers/retry/src/lib.rs:1439,1
    - Dst: Result::try_next
      Src: /src/opendal/core/layers/retry/src/lib.rs:1440,1
    - Dst: expect
      Src: /src/opendal/core/layers/retry/src/lib.rs:1440,1
    - Dst: Self::push
      Src: /src/opendal/core/layers/retry/src/lib.rs:1441,1
    - Dst: name
      Src: /src/opendal/core/layers/retry/src/lib.rs:1441,1
    - Dst: to_owned
      Src: /src/opendal/core/layers/retry/src/lib.rs:1441,1
    - Dst: Ok
      Src: /src/opendal/core/layers/retry/src/lib.rs:1445,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 33
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 1446
      start: 1427
    functionDepth: 34
    functionLinenumber: 1427
    functionLinenumberEnd: 1446
    functionName: tests::test_retry_list
    functionSourceFile: /src/opendal/core/layers/retry/src/lib.rs
    functionUses: 0
    functionsReached:
    - Result::try_next
    - OtelMetricsLayerBuilder::clone
    - Operator::new
    - expect
    - Ok
    - Self::push
    - MockBuilder::default
    - name
    - RetryLayer::default
    - lister
    - to_owned
    - Vec::new
    - layer
    - setup
    linkageType: ''
    returnType: Result
    signature: async fn test_retry_list() -> Result<()>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: setup
      Src: /src/opendal/core/layers/retry/src/lib.rs:1450,1
    - Dst: Recorder::default
      Src: /src/opendal/core/layers/retry/src/lib.rs:1463,1
    - Dst: MockBuilder::default
      Src: /src/opendal/core/layers/retry/src/lib.rs:1464,1
    - Dst: Operator::new
      Src: /src/opendal/core/layers/retry/src/lib.rs:1465,1
    - Dst: OtelMetricsLayerBuilder::clone
      Src: /src/opendal/core/layers/retry/src/lib.rs:1465,1
    - Dst: layer
      Src: /src/opendal/core/layers/retry/src/lib.rs:1465,1
    - Dst: RetryLayer::default
      Src: /src/opendal/core/layers/retry/src/lib.rs:1466,1
    - Dst: Self::with_min_delay
      Src: /src/opendal/core/layers/retry/src/lib.rs:1466,1
    - Dst: Duration::from_millis
      Src: /src/opendal/core/layers/retry/src/lib.rs:1467,1
    - Dst: Self::with_max_delay
      Src: /src/opendal/core/layers/retry/src/lib.rs:1466,1
    - Dst: Duration::from_millis
      Src: /src/opendal/core/layers/retry/src/lib.rs:1468,1
    - Dst: Self::with_notify
      Src: /src/opendal/core/layers/retry/src/lib.rs:1466,1
    - Dst: Self::clone
      Src: /src/opendal/core/layers/retry/src/lib.rs:1469,1
    - Dst: reader
      Src: /src/opendal/core/layers/retry/src/lib.rs:1472,1
    - Dst: Vec::new
      Src: /src/opendal/core/layers/retry/src/lib.rs:1473,1
    - Dst: Result::read_into
      Src: /src/opendal/core/layers/retry/src/lib.rs:1474,1
    - Dst: lock
      Src: /src/opendal/core/layers/retry/src/lib.rs:1476,1
    - Dst: unwrap
      Src: /src/opendal/core/layers/retry/src/lib.rs:1476,1
    - Dst: clone
      Src: /src/opendal/core/layers/retry/src/lib.rs:1476,1
    - Dst: Ok
      Src: /src/opendal/core/layers/retry/src/lib.rs:1485,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 53
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 1486
      start: 1449
    functionDepth: 34
    functionLinenumber: 1449
    functionLinenumberEnd: 1486
    functionName: tests::test_retry_event_attempt_and_op
    functionSourceFile: /src/opendal/core/layers/retry/src/lib.rs
    functionUses: 0
    functionsReached:
    - MockBuilder::default
    - Result::read_into
    - clone
    - Self::clone
    - Vec::new
    - Duration::from_millis
    - reader
    - Ok
    - unwrap
    - OtelMetricsLayerBuilder::clone
    - Self::with_max_delay
    - RetryLayer::default
    - Self::with_min_delay
    - Recorder::default
    - Operator::new
    - Self::with_notify
    - lock
    - layer
    - setup
    linkageType: ''
    returnType: Result
    signature: async fn test_retry_event_attempt_and_op() -> Result<()>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: setup
      Src: /src/opendal/core/layers/retry/src/lib.rs:1490,1
    - Dst: Recorder::default
      Src: /src/opendal/core/layers/retry/src/lib.rs:1503,1
    - Dst: MockService::default
      Src: /src/opendal/core/layers/retry/src/lib.rs:1504,1
    - Dst: RetryReader::new
      Src: /src/opendal/core/layers/retry/src/lib.rs:1505,1
    - Dst: oio::StreamReader::new
      Src: /src/opendal/core/layers/retry/src/lib.rs:1506,1
    - Dst: MockReader::new
      Src: /src/opendal/core/layers/retry/src/lib.rs:1506,1
    - Dst: SqliteBackend::clone
      Src: /src/opendal/core/layers/retry/src/lib.rs:1507,1
    - Dst: OpRead::default
      Src: /src/opendal/core/layers/retry/src/lib.rs:1509,1
    - Dst: Arc::new
      Src: /src/opendal/core/layers/retry/src/lib.rs:1511,1
    - Dst: Self::clone
      Src: /src/opendal/core/layers/retry/src/lib.rs:1511,1
    - Dst: ExponentialBuilder::default
      Src: /src/opendal/core/layers/retry/src/lib.rs:1512,1
    - Dst: Self::with_min_delay
      Src: /src/opendal/core/layers/retry/src/lib.rs:1512,1
    - Dst: Duration::from_millis
      Src: /src/opendal/core/layers/retry/src/lib.rs:1513,1
    - Dst: Self::with_max_delay
      Src: /src/opendal/core/layers/retry/src/lib.rs:1512,1
    - Dst: Duration::from_millis
      Src: /src/opendal/core/layers/retry/src/lib.rs:1514,1
    - Dst: oio::Read::open
      Src: /src/opendal/core/layers/retry/src/lib.rs:1517,1
    - Dst: BytesRange::default
      Src: /src/opendal/core/layers/retry/src/lib.rs:1517,1
    - Dst: oio::ReadStream::read_all
      Src: /src/opendal/core/layers/retry/src/lib.rs:1518,1
    - Dst: lock
      Src: /src/opendal/core/layers/retry/src/lib.rs:1523,1
    - Dst: unwrap
      Src: /src/opendal/core/layers/retry/src/lib.rs:1523,1
    - Dst: clone
      Src: /src/opendal/core/layers/retry/src/lib.rs:1523,1
    - Dst: Ok
      Src: /src/opendal/core/layers/retry/src/lib.rs:1532,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 52
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 1533
      start: 1489
    functionDepth: 34
    functionLinenumber: 1489
    functionLinenumberEnd: 1533
    functionName: tests::test_retry_read_stream_error_enters_retry_budget
    functionSourceFile: /src/opendal/core/layers/retry/src/lib.rs
    functionUses: 0
    functionsReached:
    - SqliteBackend::clone
    - Arc::new
    - clone
    - Self::clone
    - Duration::from_millis
    - BytesRange::default
    - Ok
    - ExponentialBuilder::default
    - unwrap
    - oio::Read::open
    - MockReader::new
    - oio::StreamReader::new
    - Self::with_max_delay
    - Self::with_min_delay
    - Recorder::default
    - oio::ReadStream::read_all
    - RetryReader::new
    - lock
    - MockService::default
    - OpRead::default
    - setup
    linkageType: ''
    returnType: Result
    signature: async fn test_retry_read_stream_error_enters_retry_budget() -> Result<()>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: setup
      Src: /src/opendal/core/layers/retry/src/lib.rs:1537,1
    - Dst: MockBuilder::default
      Src: /src/opendal/core/layers/retry/src/lib.rs:1539,1
    - Dst: Operator::new
      Src: /src/opendal/core/layers/retry/src/lib.rs:1541,1
    - Dst: OtelMetricsLayerBuilder::clone
      Src: /src/opendal/core/layers/retry/src/lib.rs:1541,1
    - Dst: layer
      Src: /src/opendal/core/layers/retry/src/lib.rs:1541,1
    - Dst: RetryLayer::default
      Src: /src/opendal/core/layers/retry/src/lib.rs:1542,1
    - Dst: Self::with_min_delay
      Src: /src/opendal/core/layers/retry/src/lib.rs:1542,1
    - Dst: Duration::from_secs_f32
      Src: /src/opendal/core/layers/retry/src/lib.rs:1543,1
    - Dst: Self::with_max_times
      Src: /src/opendal/core/layers/retry/src/lib.rs:1542,1
    - Dst: delete_stream
      Src: /src/opendal/core/layers/retry/src/lib.rs:1548,1
    - Dst: stream::iter
      Src: /src/opendal/core/layers/retry/src/lib.rs:1548,1
    - Dst: Ok
      Src: /src/opendal/core/layers/retry/src/lib.rs:1550,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 24
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 1551
      start: 1536
    functionDepth: 34
    functionLinenumber: 1536
    functionLinenumberEnd: 1551
    functionName: tests::test_retry_batch
    functionSourceFile: /src/opendal/core/layers/retry/src/lib.rs
    functionUses: 0
    functionsReached:
    - Self::with_max_times
    - OtelMetricsLayerBuilder::clone
    - Operator::new
    - Ok
    - MockBuilder::default
    - Duration::from_secs_f32
    - RetryLayer::default
    - Self::with_min_delay
    - layer
    - delete_stream
    - stream::iter
    - setup
    linkageType: ''
    returnType: Result
    signature: async fn test_retry_batch() -> Result<()>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: setup
      Src: /src/opendal/core/layers/retry/src/lib.rs:1555,1
    - Dst: Recorder::default
      Src: /src/opendal/core/layers/retry/src/lib.rs:1568,1
    - Dst: MockBuilder::default
      Src: /src/opendal/core/layers/retry/src/lib.rs:1569,1
    - Dst: Operator::new
      Src: /src/opendal/core/layers/retry/src/lib.rs:1570,1
    - Dst: OtelMetricsLayerBuilder::clone
      Src: /src/opendal/core/layers/retry/src/lib.rs:1570,1
    - Dst: layer
      Src: /src/opendal/core/layers/retry/src/lib.rs:1570,1
    - Dst: RetryLayer::default
      Src: /src/opendal/core/layers/retry/src/lib.rs:1571,1
    - Dst: Self::with_min_delay
      Src: /src/opendal/core/layers/retry/src/lib.rs:1571,1
    - Dst: Duration::from_millis
      Src: /src/opendal/core/layers/retry/src/lib.rs:1572,1
    - Dst: Self::with_max_delay
      Src: /src/opendal/core/layers/retry/src/lib.rs:1571,1
    - Dst: Duration::from_millis
      Src: /src/opendal/core/layers/retry/src/lib.rs:1573,1
    - Dst: Self::with_notify
      Src: /src/opendal/core/layers/retry/src/lib.rs:1571,1
    - Dst: Self::clone
      Src: /src/opendal/core/layers/retry/src/lib.rs:1574,1
    - Dst: copy
      Src: /src/opendal/core/layers/retry/src/lib.rs:1577,1
    - Dst: expect
      Src: /src/opendal/core/layers/retry/src/lib.rs:1577,1
    - Dst: lock
      Src: /src/opendal/core/layers/retry/src/lib.rs:1584,1
    - Dst: unwrap
      Src: /src/opendal/core/layers/retry/src/lib.rs:1584,1
    - Dst: clone
      Src: /src/opendal/core/layers/retry/src/lib.rs:1584,1
    - Dst: Ok
      Src: /src/opendal/core/layers/retry/src/lib.rs:1593,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 49
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 1594
      start: 1554
    functionDepth: 34
    functionLinenumber: 1554
    functionLinenumberEnd: 1594
    functionName: tests::test_retry_copy
    functionSourceFile: /src/opendal/core/layers/retry/src/lib.rs
    functionUses: 0
    functionsReached:
    - OtelMetricsLayerBuilder::clone
    - Operator::new
    - Self::with_notify
    - expect
    - lock
    - Ok
    - MockBuilder::default
    - Self::with_max_delay
    - RetryLayer::default
    - unwrap
    - clone
    - Self::with_min_delay
    - Recorder::default
    - Self::clone
    - copy
    - layer
    - setup
    - Duration::from_millis
    linkageType: ''
    returnType: Result
    signature: async fn test_retry_copy() -> Result<()>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: opendal::install_default
      Src: /src/opendal/core/edge/s3_read_on_wasm/src/lib.rs:24,1
    - Dst: S3::default
      Src: /src/opendal/core/edge/s3_read_on_wasm/src/lib.rs:26,1
    - Dst: Self::endpoint
      Src: /src/opendal/core/edge/s3_read_on_wasm/src/lib.rs:26,1
    - Dst: Self::access_key_id
      Src: /src/opendal/core/edge/s3_read_on_wasm/src/lib.rs:26,1
    - Dst: Self::secret_access_key
      Src: /src/opendal/core/edge/s3_read_on_wasm/src/lib.rs:26,1
    - Dst: Self::bucket
      Src: /src/opendal/core/edge/s3_read_on_wasm/src/lib.rs:26,1
    - Dst: usize::region
      Src: /src/opendal/core/edge/s3_read_on_wasm/src/lib.rs:26,1
    - Dst: Operator::new
      Src: /src/opendal/core/edge/s3_read_on_wasm/src/lib.rs:33,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/edge/s3_read_on_wasm/src/lib.rs:33,1
    - Dst: write
      Src: /src/opendal/core/edge/s3_read_on_wasm/src/lib.rs:34,1
    - Dst: '&str::as_bytes'
      Src: /src/opendal/core/edge/s3_read_on_wasm/src/lib.rs:36,1
    - Dst: to_vec
      Src: /src/opendal/core/edge/s3_read_on_wasm/src/lib.rs:36,1
    - Dst: unwrap
      Src: /src/opendal/core/edge/s3_read_on_wasm/src/lib.rs:34,1
    - Dst: read
      Src: /src/opendal/core/edge/s3_read_on_wasm/src/lib.rs:42,1
    - Dst: unwrap
      Src: /src/opendal/core/edge/s3_read_on_wasm/src/lib.rs:42,1
    - Dst: to_bytes
      Src: /src/opendal/core/edge/s3_read_on_wasm/src/lib.rs:42,1
    - Dst: String::from_utf8_lossy
      Src: /src/opendal/core/edge/s3_read_on_wasm/src/lib.rs:43,1
    - Dst: to_string
      Src: /src/opendal/core/edge/s3_read_on_wasm/src/lib.rs:43,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 37
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 44
      start: 23
    functionDepth: 35
    functionLinenumber: 23
    functionLinenumberEnd: 44
    functionName: hello_world
    functionSourceFile: /src/opendal/core/edge/s3_read_on_wasm/src/lib.rs
    functionUses: 1
    functionsReached:
    - read
    - Operator::new
    - to_string
    - Self::secret_access_key
    - Self::endpoint
    - usize::region
    - unwrap
    - Self::access_key_id
    - to_vec
    - Result::unwrap
    - '&str::as_bytes'
    - Self::bucket
    - opendal::install_default
    - to_bytes
    - String::from_utf8_lossy
    - write
    - S3::default
    linkageType: ''
    returnType: String
    signature: pub async fn hello_world() -> String
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: hello_world
      Src: /src/opendal/core/edge/s3_read_on_wasm/src/lib.rs:59,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 61
      start: 58
    functionDepth: 36
    functionLinenumber: 58
    functionLinenumberEnd: 61
    functionName: tests::test_hello_world
    functionSourceFile: /src/opendal/core/edge/s3_read_on_wasm/src/lib.rs
    functionUses: 0
    functionsReached:
    - hello_world
    linkageType: ''
    returnType: void
    signature: async fn test_hello_world()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Operator::from_config
      Src: /src/opendal/core/edge/opfs_wasm32/src/lib.rs:39,1
    - Dst: OpfsConfig::default
      Src: /src/opendal/core/edge/opfs_wasm32/src/lib.rs:39,1
    - Dst: Result::expect
      Src: /src/opendal/core/edge/opfs_wasm32/src/lib.rs:39,1
    - Dst: finish
      Src: /src/opendal/core/edge/opfs_wasm32/src/lib.rs:39,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 42
      start: 38
    functionDepth: 8
    functionLinenumber: 38
    functionLinenumberEnd: 42
    functionName: tests::new_operator
    functionSourceFile: /src/opendal/core/edge/opfs_wasm32/src/lib.rs
    functionUses: 0
    functionsReached:
    - Result::expect
    - finish
    - OpfsConfig::default
    - Operator::from_config
    linkageType: ''
    returnType: Operator
    signature: fn new_operator() -> Operator
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: new_operator
      Src: /src/opendal/core/edge/opfs_wasm32/src/lib.rs:46,1
    - Dst: create_dir
      Src: /src/opendal/core/edge/opfs_wasm32/src/lib.rs:47,1
    - Dst: expect
      Src: /src/opendal/core/edge/opfs_wasm32/src/lib.rs:47,1
    - Dst: create_dir
      Src: /src/opendal/core/edge/opfs_wasm32/src/lib.rs:48,1
    - Dst: expect
      Src: /src/opendal/core/edge/opfs_wasm32/src/lib.rs:48,1
    - Dst: create_dir
      Src: /src/opendal/core/edge/opfs_wasm32/src/lib.rs:49,1
    - Dst: expect
      Src: /src/opendal/core/edge/opfs_wasm32/src/lib.rs:49,1
    - Dst: create_dir
      Src: /src/opendal/core/edge/opfs_wasm32/src/lib.rs:50,1
    - Dst: expect
      Src: /src/opendal/core/edge/opfs_wasm32/src/lib.rs:50,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 26
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 57
      start: 45
    functionDepth: 37
    functionLinenumber: 45
    functionLinenumberEnd: 57
    functionName: tests::test_create_directory_handle
    functionSourceFile: /src/opendal/core/edge/opfs_wasm32/src/lib.rs
    functionUses: 0
    functionsReached:
    - new_operator
    - create_dir
    - expect
    linkageType: ''
    returnType: void
    signature: async fn test_create_directory_handle()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Operator::new
      Src: /src/opendal/core/edge/opfs_wasm32/src/lib.rs:64,1
    - Dst: Opfs::default
      Src: /src/opendal/core/edge/opfs_wasm32/src/lib.rs:64,1
    - Dst: Self::root
      Src: /src/opendal/core/edge/opfs_wasm32/src/lib.rs:64,1
    - Dst: Result::expect
      Src: /src/opendal/core/edge/opfs_wasm32/src/lib.rs:64,1
    - Dst: write
      Src: /src/opendal/core/edge/opfs_wasm32/src/lib.rs:65,1
    - Dst: expect
      Src: /src/opendal/core/edge/opfs_wasm32/src/lib.rs:65,1
    - Dst: stat
      Src: /src/opendal/core/edge/opfs_wasm32/src/lib.rs:70,1
    - Dst: expect
      Src: /src/opendal/core/edge/opfs_wasm32/src/lib.rs:70,1
    - Dst: new_operator
      Src: /src/opendal/core/edge/opfs_wasm32/src/lib.rs:72,1
    - Dst: stat
      Src: /src/opendal/core/edge/opfs_wasm32/src/lib.rs:73,1
    - Dst: expect
      Src: /src/opendal/core/edge/opfs_wasm32/src/lib.rs:73,1
    - Dst: stat
      Src: /src/opendal/core/edge/opfs_wasm32/src/lib.rs:78,1
    - Dst: expect
      Src: /src/opendal/core/edge/opfs_wasm32/src/lib.rs:78,1
    - Dst: new_operator
      Src: /src/opendal/core/edge/opfs_wasm32/src/lib.rs:87,1
    - Dst: lister
      Src: /src/opendal/core/edge/opfs_wasm32/src/lib.rs:88,1
    - Dst: expect
      Src: /src/opendal/core/edge/opfs_wasm32/src/lib.rs:88,1
    - Dst: try_next
      Src: /src/opendal/core/edge/opfs_wasm32/src/lib.rs:89,1
    - Dst: expect
      Src: /src/opendal/core/edge/opfs_wasm32/src/lib.rs:89,1
    - Dst: new_operator
      Src: /src/opendal/core/edge/opfs_wasm32/src/lib.rs:97,1
    - Dst: lister
      Src: /src/opendal/core/edge/opfs_wasm32/src/lib.rs:98,1
    - Dst: expect
      Src: /src/opendal/core/edge/opfs_wasm32/src/lib.rs:98,1
    - Dst: try_next
      Src: /src/opendal/core/edge/opfs_wasm32/src/lib.rs:99,1
    - Dst: expect
      Src: /src/opendal/core/edge/opfs_wasm32/src/lib.rs:99,1
    - Dst: new_operator
      Src: /src/opendal/core/edge/opfs_wasm32/src/lib.rs:106,1
    - Dst: lister_with
      Src: /src/opendal/core/edge/opfs_wasm32/src/lib.rs:107,1
    - Dst: FutureLister::recursive
      Src: /src/opendal/core/edge/opfs_wasm32/src/lib.rs:107,1
    - Dst: expect
      Src: /src/opendal/core/edge/opfs_wasm32/src/lib.rs:107,1
    - Dst: try_next
      Src: /src/opendal/core/edge/opfs_wasm32/src/lib.rs:112,1
    - Dst: expect
      Src: /src/opendal/core/edge/opfs_wasm32/src/lib.rs:112,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 78
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 116
      start: 60
    functionDepth: 32
    functionLinenumber: 60
    functionLinenumberEnd: 116
    functionName: tests::test_create_directory_handle_with_root_and_list
    functionSourceFile: /src/opendal/core/edge/opfs_wasm32/src/lib.rs
    functionUses: 0
    functionsReached:
    - lister_with
    - Operator::new
    - expect
    - Result::expect
    - FutureLister::recursive
    - try_next
    - lister
    - stat
    - Opfs::default
    - new_operator
    - write
    - Self::root
    linkageType: ''
    returnType: void
    signature: async fn test_create_directory_handle_with_root_and_list()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: new_operator
      Src: /src/opendal/core/edge/opfs_wasm32/src/lib.rs:120,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 127
      start: 119
    functionDepth: 37
    functionLinenumber: 119
    functionLinenumberEnd: 127
    functionName: tests::test_write
    functionSourceFile: /src/opendal/core/edge/opfs_wasm32/src/lib.rs
    functionUses: 0
    functionsReached:
    - new_operator
    linkageType: ''
    returnType: void
    signature: async fn test_write()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: new_operator
      Src: /src/opendal/core/edge/opfs_wasm32/src/lib.rs:134,1
    - Dst: write
      Src: /src/opendal/core/edge/opfs_wasm32/src/lib.rs:135,1
    - Dst: expect
      Src: /src/opendal/core/edge/opfs_wasm32/src/lib.rs:135,1
    - Dst: stat
      Src: /src/opendal/core/edge/opfs_wasm32/src/lib.rs:142,1
    - Dst: expect
      Src: /src/opendal/core/edge/opfs_wasm32/src/lib.rs:142,1
    - Dst: new_operator
      Src: /src/opendal/core/edge/opfs_wasm32/src/lib.rs:151,1
    - Dst: read
      Src: /src/opendal/core/edge/opfs_wasm32/src/lib.rs:152,1
    - Dst: expect
      Src: /src/opendal/core/edge/opfs_wasm32/src/lib.rs:152,1
    - Dst: delete
      Src: /src/opendal/core/edge/opfs_wasm32/src/lib.rs:155,1
    - Dst: expect
      Src: /src/opendal/core/edge/opfs_wasm32/src/lib.rs:155,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 34
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 157
      start: 130
    functionDepth: 37
    functionLinenumber: 130
    functionLinenumberEnd: 157
    functionName: tests::test_write_read_simple
    functionSourceFile: /src/opendal/core/edge/opfs_wasm32/src/lib.rs
    functionUses: 0
    functionsReached:
    - read
    - expect
    - delete
    - new_operator
    - write
    - stat
    linkageType: ''
    returnType: void
    signature: async fn test_write_read_simple()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: new_operator
      Src: /src/opendal/core/edge/opfs_wasm32/src/lib.rs:161,1
    - Dst: write
      Src: /src/opendal/core/edge/opfs_wasm32/src/lib.rs:164,1
    - Dst: expect
      Src: /src/opendal/core/edge/opfs_wasm32/src/lib.rs:164,1
    - Dst: write
      Src: /src/opendal/core/edge/opfs_wasm32/src/lib.rs:165,1
    - Dst: expect
      Src: /src/opendal/core/edge/opfs_wasm32/src/lib.rs:165,1
    - Dst: delete
      Src: /src/opendal/core/edge/opfs_wasm32/src/lib.rs:168,1
    - Dst: expect
      Src: /src/opendal/core/edge/opfs_wasm32/src/lib.rs:168,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 19
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 169
      start: 160
    functionDepth: 37
    functionLinenumber: 160
    functionLinenumberEnd: 169
    functionName: tests::test_write_write_twice_same_file
    functionSourceFile: /src/opendal/core/edge/opfs_wasm32/src/lib.rs
    functionUses: 0
    functionsReached:
    - new_operator
    - write
    - expect
    - delete
    linkageType: ''
    returnType: void
    signature: async fn test_write_write_twice_same_file()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: new_operator
      Src: /src/opendal/core/edge/opfs_wasm32/src/lib.rs:173,1
    - Dst: writer
      Src: /src/opendal/core/edge/opfs_wasm32/src/lib.rs:176,1
    - Dst: expect
      Src: /src/opendal/core/edge/opfs_wasm32/src/lib.rs:176,1
    - Dst: Self::write
      Src: /src/opendal/core/edge/opfs_wasm32/src/lib.rs:177,1
    - Dst: expect
      Src: /src/opendal/core/edge/opfs_wasm32/src/lib.rs:177,1
    - Dst: Self::write
      Src: /src/opendal/core/edge/opfs_wasm32/src/lib.rs:178,1
    - Dst: expect
      Src: /src/opendal/core/edge/opfs_wasm32/src/lib.rs:178,1
    - Dst: Self::write
      Src: /src/opendal/core/edge/opfs_wasm32/src/lib.rs:179,1
    - Dst: expect
      Src: /src/opendal/core/edge/opfs_wasm32/src/lib.rs:179,1
    - Dst: Self::close
      Src: /src/opendal/core/edge/opfs_wasm32/src/lib.rs:180,1
    - Dst: expect
      Src: /src/opendal/core/edge/opfs_wasm32/src/lib.rs:180,1
    - Dst: Result::len
      Src: /src/opendal/core/edge/opfs_wasm32/src/lib.rs:181,1
    - Dst: stat
      Src: /src/opendal/core/edge/opfs_wasm32/src/lib.rs:184,1
    - Dst: expect
      Src: /src/opendal/core/edge/opfs_wasm32/src/lib.rs:184,1
    - Dst: delete
      Src: /src/opendal/core/edge/opfs_wasm32/src/lib.rs:186,1
    - Dst: expect
      Src: /src/opendal/core/edge/opfs_wasm32/src/lib.rs:186,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 48
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 187
      start: 172
    functionDepth: 37
    functionLinenumber: 172
    functionLinenumberEnd: 187
    functionName: tests::test_write_like_append_three_times
    functionSourceFile: /src/opendal/core/edge/opfs_wasm32/src/lib.rs
    functionUses: 0
    functionsReached:
    - expect
    - delete
    - Self::write
    - Self::close
    - writer
    - Result::len
    - new_operator
    - stat
    linkageType: ''
    returnType: void
    signature: async fn test_write_like_append_three_times()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: new_operator
      Src: /src/opendal/core/edge/opfs_wasm32/src/lib.rs:192,1
    - Dst: writer
      Src: /src/opendal/core/edge/opfs_wasm32/src/lib.rs:194,1
    - Dst: expect
      Src: /src/opendal/core/edge/opfs_wasm32/src/lib.rs:194,1
    - Dst: Self::write
      Src: /src/opendal/core/edge/opfs_wasm32/src/lib.rs:197,1
    - Dst: Result::clone
      Src: /src/opendal/core/edge/opfs_wasm32/src/lib.rs:197,1
    - Dst: Self::close
      Src: /src/opendal/core/edge/opfs_wasm32/src/lib.rs:213,1
    - Dst: expect
      Src: /src/opendal/core/edge/opfs_wasm32/src/lib.rs:213,1
    - Dst: stat
      Src: /src/opendal/core/edge/opfs_wasm32/src/lib.rs:215,1
    - Dst: expect
      Src: /src/opendal/core/edge/opfs_wasm32/src/lib.rs:215,1
    - Dst: new_operator
      Src: /src/opendal/core/edge/opfs_wasm32/src/lib.rs:220,1
    - Dst: read
      Src: /src/opendal/core/edge/opfs_wasm32/src/lib.rs:221,1
    - Dst: expect
      Src: /src/opendal/core/edge/opfs_wasm32/src/lib.rs:221,1
    - Dst: delete
      Src: /src/opendal/core/edge/opfs_wasm32/src/lib.rs:224,1
    - Dst: expect
      Src: /src/opendal/core/edge/opfs_wasm32/src/lib.rs:224,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 50
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 225
      start: 190
    functionDepth: 37
    functionLinenumber: 190
    functionLinenumberEnd: 225
    functionName: tests::test_write_large_file_quota
    functionSourceFile: /src/opendal/core/edge/opfs_wasm32/src/lib.rs
    functionUses: 0
    functionsReached:
    - Result::clone
    - read
    - expect
    - delete
    - Self::write
    - Self::close
    - writer
    - new_operator
    - stat
    linkageType: ''
    returnType: void
    signature: async fn test_write_large_file_quota()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: new_operator
      Src: /src/opendal/core/edge/opfs_wasm32/src/lib.rs:229,1
    - Dst: write
      Src: /src/opendal/core/edge/opfs_wasm32/src/lib.rs:232,1
    - Dst: expect
      Src: /src/opendal/core/edge/opfs_wasm32/src/lib.rs:232,1
    - Dst: read_with
      Src: /src/opendal/core/edge/opfs_wasm32/src/lib.rs:233,1
    - Dst: FutureRead::range
      Src: /src/opendal/core/edge/opfs_wasm32/src/lib.rs:233,1
    - Dst: expect
      Src: /src/opendal/core/edge/opfs_wasm32/src/lib.rs:233,1
    - Dst: delete
      Src: /src/opendal/core/edge/opfs_wasm32/src/lib.rs:235,1
    - Dst: expect
      Src: /src/opendal/core/edge/opfs_wasm32/src/lib.rs:235,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 21
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 236
      start: 228
    functionDepth: 37
    functionLinenumber: 228
    functionLinenumberEnd: 236
    functionName: tests::test_write_and_read_with_range
    functionSourceFile: /src/opendal/core/edge/opfs_wasm32/src/lib.rs
    functionUses: 0
    functionsReached:
    - expect
    - delete
    - FutureRead::range
    - read_with
    - new_operator
    - write
    linkageType: ''
    returnType: void
    signature: async fn test_write_and_read_with_range()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Operator::via_iter
      Src: /src/opendal/core/core/src/types/read/futures_async_reader.rs:213,1
    - Dst: context
      Src: /src/opendal/core/core/src/types/read/futures_async_reader.rs:214,1
    - Dst: OperationContext::clone
      Src: /src/opendal/core/core/src/types/read/futures_async_reader.rs:214,1
    - Dst: service
      Src: /src/opendal/core/core/src/types/read/futures_async_reader.rs:215,1
    - Dst: Servicer::clone
      Src: /src/opendal/core/core/src/types/read/futures_async_reader.rs:215,1
    - Dst: Arc::new
      Src: /src/opendal/core/core/src/types/read/futures_async_reader.rs:216,1
    - Dst: new_read_context
      Src: /src/opendal/core/core/src/types/read/futures_async_reader.rs:216,1
    - Dst: OpReader::new
      Src: /src/opendal/core/core/src/types/read/futures_async_reader.rs:216,1
    - Dst: FuturesAsyncReader::new
      Src: /src/opendal/core/core/src/types/read/futures_async_reader.rs:218,1
    - Dst: Box::new
      Src: /src/opendal/core/core/src/types/read/futures_async_reader.rs:220,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/types/read/futures_async_reader.rs:221,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 20
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 222
      start: 212
    functionDepth: 32
    functionLinenumber: 212
    functionLinenumberEnd: 222
    functionName: tests::test_trait
    functionSourceFile: /src/opendal/core/core/src/types/read/futures_async_reader.rs
    functionUses: 0
    functionsReached:
    - context
    - Ok
    - OpReader::new
    - Box::new
    - Arc::new
    - OperationContext::clone
    - service
    - new_read_context
    - FuturesAsyncReader::new
    - Servicer::clone
    - Operator::via_iter
    linkageType: ''
    returnType: Result
    signature: async fn test_trait() -> Result<()>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self
      Src: /src/opendal/bindings/ruby/src/lister.rs:108,1
    - Dst: Arc::new
      Src: /src/opendal/bindings/ruby/src/lister.rs:108,1
    - Dst: Mutex::new
      Src: /src/opendal/bindings/ruby/src/lister.rs:108,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - inner
    argTypes:
    - ocore::blocking::Lister
    constantsTouched: []
    func_position:
      end: 109
      start: 107
    functionDepth: 2
    functionLinenumber: 107
    functionLinenumberEnd: 109
    functionName: Lister::new
    functionSourceFile: /src/opendal/bindings/ruby/src/lister.rs
    functionUses: 64
    functionsReached:
    - Self
    - Arc::new
    - Mutex::new
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(inner: ocore::blocking::Lister) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/bindings/nodejs/src/lib.rs:1144,1
    - Dst: try_next
      Src: /src/opendal/bindings/nodejs/src/lib.rs:1144,1
    - Dst: map_err
      Src: /src/opendal/bindings/nodejs/src/lib.rs:1144,1
    - Dst: map
      Src: /src/opendal/bindings/nodejs/src/lib.rs:1144,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 1150
      start: 1143
    functionDepth: 1
    functionLinenumber: 1143
    functionLinenumberEnd: 1150
    functionName: Lister::next
    functionSourceFile: /src/opendal/bindings/nodejs/src/lib.rs
    functionUses: 1
    functionsReached:
    - map_err
    - map
    - Ok
    - try_next
    linkageType: ''
    returnType: Result
    signature: pub async unsafe fn next(&mut self) -> Result<Option<Entry>>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: take
      Src: /src/opendal/core/core/src/blocking/list.rs:67,1
    - Dst: block_on
      Src: /src/opendal/core/core/src/blocking/list.rs:68,1
    - Dst: drop
      Src: /src/opendal/core/core/src/blocking/list.rs:68,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 70
      start: 66
    functionDepth: 33
    functionLinenumber: 66
    functionLinenumberEnd: 70
    functionName: Lister::drop
    functionSourceFile: /src/opendal/core/core/src/blocking/list.rs
    functionUses: 0
    functionsReached:
    - take
    - drop
    - block_on
    linkageType: ''
    returnType: void
    signature: fn drop(&mut self)
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::unwrap_or_default
      Src: /src/opendal/bindings/nodejs/src/lib.rs:53,1
    - Dst: opendal::Operator::via_iter
      Src: /src/opendal/bindings/nodejs/src/lib.rs:55,1
    - Dst: Result::map_err
      Src: /src/opendal/bindings/nodejs/src/lib.rs:55,1
    - Dst: opendal::blocking::Operator::new
      Src: /src/opendal/bindings/nodejs/src/lib.rs:58,1
    - Dst: clone
      Src: /src/opendal/bindings/nodejs/src/lib.rs:58,1
    - Dst: Result::map_err
      Src: /src/opendal/bindings/nodejs/src/lib.rs:58,1
    - Dst: Ok
      Src: /src/opendal/bindings/nodejs/src/lib.rs:60,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 2
    argNames:
    - scheme
    - options
    argTypes:
    - String
    - Option<HashMap<String, String>>
    constantsTouched: []
    func_position:
      end: 64
      start: 52
    functionDepth: 6
    functionLinenumber: 52
    functionLinenumberEnd: 64
    functionName: Operator::new
    functionSourceFile: /src/opendal/bindings/nodejs/src/lib.rs
    functionUses: 64
    functionsReached:
    - Result::unwrap_or_default
    - Result::map_err
    - Ok
    - clone
    - opendal::blocking::Operator::new
    - opendal::Operator::via_iter
    linkageType: ''
    returnType: Result
    signature: 'pub fn new(scheme: String, options: Option<HashMap<String, String>>)
      -> Result<Self>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: block_on
      Src: /src/opendal/core/core/src/blocking/operator.rs:156,1
    - Dst: spawn
      Src: /src/opendal/core/core/src/blocking/operator.rs:156,1
    - Dst: map_err
      Src: /src/opendal/core/core/src/blocking/operator.rs:156,1
    - Dst: Error::new
      Src: /src/opendal/core/core/src/blocking/operator.rs:157,1
    - Dst: Self::set_source
      Src: /src/opendal/core/core/src/blocking/operator.rs:157,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 1
    argNames:
    - f
    argTypes:
    - F
    constantsTouched: []
    func_position:
      end: 159
      start: 151
    functionDepth: 32
    functionLinenumber: 151
    functionLinenumberEnd: 159
    functionName: Operator::spawn_block
    functionSourceFile: /src/opendal/core/core/src/blocking/operator.rs
    functionUses: 0
    functionsReached:
    - map_err
    - Error::new
    - spawn
    - Self::set_source
    - block_on
    linkageType: ''
    returnType: Result
    signature: 'fn spawn_block<F>(&self, f: F) -> Result<F::Output>whereF: std::future::Future
      + Send + ''static,F::Output: Send + ''static,'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::unwrap_or_default
      Src: /src/opendal/bindings/nodejs/src/lib.rs:82,1
    - Dst: Result::is_empty
      Src: /src/opendal/bindings/nodejs/src/lib.rs:83,1
    - Dst: opendal::Operator::from_uri
      Src: /src/opendal/bindings/nodejs/src/lib.rs:84,1
    - Dst: Result::map_err
      Src: /src/opendal/bindings/nodejs/src/lib.rs:84,1
    - Dst: opendal::Operator::from_uri
      Src: /src/opendal/bindings/nodejs/src/lib.rs:86,1
    - Dst: Result::as_str
      Src: /src/opendal/bindings/nodejs/src/lib.rs:86,1
    - Dst: Result::map_err
      Src: /src/opendal/bindings/nodejs/src/lib.rs:86,1
    - Dst: opendal::blocking::Operator::new
      Src: /src/opendal/bindings/nodejs/src/lib.rs:90,1
    - Dst: clone
      Src: /src/opendal/bindings/nodejs/src/lib.rs:90,1
    - Dst: Result::map_err
      Src: /src/opendal/bindings/nodejs/src/lib.rs:90,1
    - Dst: Ok
      Src: /src/opendal/bindings/nodejs/src/lib.rs:92,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 24
    argCount: 2
    argNames:
    - uri
    - options
    argTypes:
    - String
    - Option<HashMap<String, String>>
    constantsTouched: []
    func_position:
      end: 96
      start: 81
    functionDepth: 4
    functionLinenumber: 81
    functionLinenumberEnd: 96
    functionName: Operator::from_uri
    functionSourceFile: /src/opendal/bindings/nodejs/src/lib.rs
    functionUses: 5
    functionsReached:
    - Result::unwrap_or_default
    - Result::map_err
    - Ok
    - clone
    - Result::is_empty
    - Result::as_str
    - opendal::blocking::Operator::new
    - opendal::Operator::from_uri
    linkageType: ''
    returnType: Result
    signature: 'pub fn from_uri(uri: String, options: Option<HashMap<String, String>>)
      -> Result<Self>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: info
      Src: /src/opendal/bindings/cpp/src/lib.rs:261,1
    - Dst: ServiceInfo::capability
      Src: /src/opendal/bindings/cpp/src/lib.rs:262,1
    - Dst: Ok
      Src: /src/opendal/bindings/cpp/src/lib.rs:264,1
    - Dst: unwrap_or
      Src: /src/opendal/bindings/cpp/src/lib.rs:281,1
    - Dst: unwrap_or
      Src: /src/opendal/bindings/cpp/src/lib.rs:282,1
    - Dst: unwrap_or
      Src: /src/opendal/bindings/cpp/src/lib.rs:283,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 45
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 298
      start: 260
    functionDepth: 2
    functionLinenumber: 260
    functionLinenumberEnd: 298
    functionName: Operator::info
    functionSourceFile: /src/opendal/bindings/cpp/src/lib.rs
    functionUses: 0
    functionsReached:
    - ServiceInfo::capability
    - info
    - Ok
    - unwrap_or
    linkageType: ''
    returnType: Result
    signature: fn info(&self) -> Result<ffi::Capability>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: presign_stat
      Src: /src/opendal/bindings/nodejs/src/lib.rs:826,1
    - Dst: Duration::from_secs
      Src: /src/opendal/bindings/nodejs/src/lib.rs:828,1
    - Dst: map_err
      Src: /src/opendal/bindings/nodejs/src/lib.rs:826,1
    - Dst: Ok
      Src: /src/opendal/bindings/nodejs/src/lib.rs:831,1
    - Dst: PresignedRequest::new
      Src: /src/opendal/bindings/nodejs/src/lib.rs:831,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 2
    argNames:
    - path
    - expires
    argTypes:
    - String
    - u32
    constantsTouched: []
    func_position:
      end: 832
      start: 825
    functionDepth: 31
    functionLinenumber: 825
    functionLinenumberEnd: 832
    functionName: Operator::presign_stat
    functionSourceFile: /src/opendal/bindings/nodejs/src/lib.rs
    functionUses: 0
    functionsReached:
    - map_err
    - Ok
    - PresignedRequest::new
    - Duration::from_secs
    - presign_stat
    linkageType: ''
    returnType: Result
    signature: 'pub async fn presign_stat(&self, path: String, expires: u32) -> Result<PresignedRequest>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: normalize_path
      Src: /src/opendal/core/core/src/types/operator/operator.rs:2132,1
    - Dst: Self::presign_stat_inner
      Src: /src/opendal/core/core/src/types/operator/operator.rs:2133,1
    - Dst: Operator::context
      Src: /src/opendal/core/core/src/types/operator/operator.rs:2134,1
    - Dst: '&OperationContext::clone'
      Src: /src/opendal/core/core/src/types/operator/operator.rs:2134,1
    - Dst: Operator::service
      Src: /src/opendal/core/core/src/types/operator/operator.rs:2135,1
    - Dst: '&Servicer::clone'
      Src: /src/opendal/core/core/src/types/operator/operator.rs:2135,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 3
    argNames:
    - path
    - expire
    - opts
    argTypes:
    - '&str'
    - Duration
    - options::StatOptions
    constantsTouched: []
    func_position:
      end: 2140
      start: 2126
    functionDepth: 34
    functionLinenumber: 2126
    functionLinenumberEnd: 2140
    functionName: Operator::presign_stat_options
    functionSourceFile: /src/opendal/core/core/src/types/operator/operator.rs
    functionUses: 0
    functionsReached:
    - Operator::context
    - normalize_path
    - '&OperationContext::clone'
    - '&Servicer::clone'
    - Self::presign_stat_inner
    - Operator::service
    linkageType: ''
    returnType: Result
    signature: 'pub async fn presign_stat_options(&self,path: &str,expire: Duration,opts:
      options::StatOptions,) -> Result<PresignedRequest>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: presign_read
      Src: /src/opendal/bindings/nodejs/src/lib.rs:780,1
    - Dst: Duration::from_secs
      Src: /src/opendal/bindings/nodejs/src/lib.rs:782,1
    - Dst: map_err
      Src: /src/opendal/bindings/nodejs/src/lib.rs:780,1
    - Dst: Ok
      Src: /src/opendal/bindings/nodejs/src/lib.rs:785,1
    - Dst: PresignedRequest::new
      Src: /src/opendal/bindings/nodejs/src/lib.rs:785,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 2
    argNames:
    - path
    - expires
    argTypes:
    - String
    - u32
    constantsTouched: []
    func_position:
      end: 786
      start: 779
    functionDepth: 31
    functionLinenumber: 779
    functionLinenumberEnd: 786
    functionName: Operator::presign_read
    functionSourceFile: /src/opendal/bindings/nodejs/src/lib.rs
    functionUses: 0
    functionsReached:
    - presign_read
    - map_err
    - Ok
    - PresignedRequest::new
    - Duration::from_secs
    linkageType: ''
    returnType: Result
    signature: 'pub async fn presign_read(&self, path: String, expires: u32) -> Result<PresignedRequest>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: normalize_path
      Src: /src/opendal/core/core/src/types/operator/operator.rs:2267,1
    - Dst: Self::presign_read_inner
      Src: /src/opendal/core/core/src/types/operator/operator.rs:2268,1
    - Dst: Operator::context
      Src: /src/opendal/core/core/src/types/operator/operator.rs:2269,1
    - Dst: '&OperationContext::clone'
      Src: /src/opendal/core/core/src/types/operator/operator.rs:2269,1
    - Dst: Operator::service
      Src: /src/opendal/core/core/src/types/operator/operator.rs:2270,1
    - Dst: '&Servicer::clone'
      Src: /src/opendal/core/core/src/types/operator/operator.rs:2270,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 3
    argNames:
    - path
    - expire
    - opts
    argTypes:
    - '&str'
    - Duration
    - options::ReadOptions
    constantsTouched: []
    func_position:
      end: 2275
      start: 2261
    functionDepth: 34
    functionLinenumber: 2261
    functionLinenumberEnd: 2275
    functionName: Operator::presign_read_options
    functionSourceFile: /src/opendal/core/core/src/types/operator/operator.rs
    functionUses: 0
    functionsReached:
    - Operator::context
    - normalize_path
    - '&OperationContext::clone'
    - '&Servicer::clone'
    - Self::presign_read_inner
    - Operator::service
    linkageType: ''
    returnType: Result
    signature: 'pub async fn presign_read_options(&self,path: &str,expire: Duration,opts:
      options::ReadOptions,) -> Result<PresignedRequest>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: presign_write
      Src: /src/opendal/bindings/nodejs/src/lib.rs:803,1
    - Dst: Duration::from_secs
      Src: /src/opendal/bindings/nodejs/src/lib.rs:805,1
    - Dst: map_err
      Src: /src/opendal/bindings/nodejs/src/lib.rs:803,1
    - Dst: Ok
      Src: /src/opendal/bindings/nodejs/src/lib.rs:808,1
    - Dst: PresignedRequest::new
      Src: /src/opendal/bindings/nodejs/src/lib.rs:808,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 2
    argNames:
    - path
    - expires
    argTypes:
    - String
    - u32
    constantsTouched: []
    func_position:
      end: 809
      start: 802
    functionDepth: 31
    functionLinenumber: 802
    functionLinenumberEnd: 809
    functionName: Operator::presign_write
    functionSourceFile: /src/opendal/bindings/nodejs/src/lib.rs
    functionUses: 0
    functionsReached:
    - map_err
    - Ok
    - presign_write
    - PresignedRequest::new
    - Duration::from_secs
    linkageType: ''
    returnType: Result
    signature: 'pub async fn presign_write(&self, path: String, expires: u32) -> Result<PresignedRequest>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: normalize_path
      Src: /src/opendal/core/core/src/types/operator/operator.rs:2411,1
    - Dst: Self::presign_write_inner
      Src: /src/opendal/core/core/src/types/operator/operator.rs:2412,1
    - Dst: Operator::context
      Src: /src/opendal/core/core/src/types/operator/operator.rs:2413,1
    - Dst: '&OperationContext::clone'
      Src: /src/opendal/core/core/src/types/operator/operator.rs:2413,1
    - Dst: Operator::service
      Src: /src/opendal/core/core/src/types/operator/operator.rs:2414,1
    - Dst: '&Servicer::clone'
      Src: /src/opendal/core/core/src/types/operator/operator.rs:2414,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 3
    argNames:
    - path
    - expire
    - opts
    argTypes:
    - '&str'
    - Duration
    - options::WriteOptions
    constantsTouched: []
    func_position:
      end: 2419
      start: 2405
    functionDepth: 34
    functionLinenumber: 2405
    functionLinenumberEnd: 2419
    functionName: Operator::presign_write_options
    functionSourceFile: /src/opendal/core/core/src/types/operator/operator.rs
    functionUses: 0
    functionsReached:
    - Operator::context
    - normalize_path
    - Self::presign_write_inner
    - '&OperationContext::clone'
    - '&Servicer::clone'
    - Operator::service
    linkageType: ''
    returnType: Result
    signature: 'pub async fn presign_write_options(&self,path: &str,expire: Duration,opts:
      options::WriteOptions,) -> Result<PresignedRequest>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: presign_delete
      Src: /src/opendal/bindings/nodejs/src/lib.rs:849,1
    - Dst: Duration::from_secs
      Src: /src/opendal/bindings/nodejs/src/lib.rs:851,1
    - Dst: map_err
      Src: /src/opendal/bindings/nodejs/src/lib.rs:849,1
    - Dst: Ok
      Src: /src/opendal/bindings/nodejs/src/lib.rs:854,1
    - Dst: PresignedRequest::new
      Src: /src/opendal/bindings/nodejs/src/lib.rs:854,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 2
    argNames:
    - path
    - expires
    argTypes:
    - String
    - u32
    constantsTouched: []
    func_position:
      end: 855
      start: 848
    functionDepth: 31
    functionLinenumber: 848
    functionLinenumberEnd: 855
    functionName: Operator::presign_delete
    functionSourceFile: /src/opendal/bindings/nodejs/src/lib.rs
    functionUses: 0
    functionsReached:
    - map_err
    - Ok
    - presign_delete
    - PresignedRequest::new
    - Duration::from_secs
    linkageType: ''
    returnType: Result
    signature: 'pub async fn presign_delete(&self, path: String, expires: u32) ->
      Result<PresignedRequest>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: normalize_path
      Src: /src/opendal/core/core/src/types/operator/operator.rs:2524,1
    - Dst: Self::presign_delete_inner
      Src: /src/opendal/core/core/src/types/operator/operator.rs:2525,1
    - Dst: Operator::context
      Src: /src/opendal/core/core/src/types/operator/operator.rs:2526,1
    - Dst: '&OperationContext::clone'
      Src: /src/opendal/core/core/src/types/operator/operator.rs:2526,1
    - Dst: Operator::service
      Src: /src/opendal/core/core/src/types/operator/operator.rs:2527,1
    - Dst: '&Servicer::clone'
      Src: /src/opendal/core/core/src/types/operator/operator.rs:2527,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 3
    argNames:
    - path
    - expire
    - opts
    argTypes:
    - '&str'
    - Duration
    - options::DeleteOptions
    constantsTouched: []
    func_position:
      end: 2532
      start: 2518
    functionDepth: 34
    functionLinenumber: 2518
    functionLinenumberEnd: 2532
    functionName: Operator::presign_delete_options
    functionSourceFile: /src/opendal/core/core/src/types/operator/operator.rs
    functionUses: 0
    functionsReached:
    - Operator::context
    - normalize_path
    - '&OperationContext::clone'
    - '&Servicer::clone'
    - Self::presign_delete_inner
    - Operator::service
    linkageType: ''
    returnType: Result
    signature: 'pub async fn presign_delete_options(&self,path: &str,expire: Duration,opts:
      options::DeleteOptions,) -> Result<PresignedRequest>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::map_or_else
      Src: /src/opendal/bindings/nodejs/src/lib.rs:129,1
    - Dst: stat_options
      Src: /src/opendal/bindings/nodejs/src/lib.rs:130,1
    - Dst: map_err
      Src: /src/opendal/bindings/nodejs/src/lib.rs:130,1
    - Dst: Ok
      Src: /src/opendal/bindings/nodejs/src/lib.rs:136,1
    - Dst: Metadata
      Src: /src/opendal/bindings/nodejs/src/lib.rs:136,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 2
    argNames:
    - path
    - options
    argTypes:
    - String
    - Option<options::StatOptions>
    constantsTouched: []
    func_position:
      end: 137
      start: 124
    functionDepth: 35
    functionLinenumber: 124
    functionLinenumberEnd: 137
    functionName: Operator::stat
    functionSourceFile: /src/opendal/bindings/nodejs/src/lib.rs
    functionUses: 1
    functionsReached:
    - map_err
    - stat_options
    - Ok
    - Result::map_or_else
    - Metadata
    linkageType: ''
    returnType: Result
    signature: 'pub async fn stat(&self,path: String,options: Option<options::StatOptions>,)
      -> Result<Metadata>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: normalize_path
      Src: /src/opendal/core/core/src/types/operator/operator.rs:479,1
    - Dst: Self::stat_inner
      Src: /src/opendal/core/core/src/types/operator/operator.rs:480,1
    - Dst: Operator::context
      Src: /src/opendal/core/core/src/types/operator/operator.rs:480,1
    - Dst: '&OperationContext::clone'
      Src: /src/opendal/core/core/src/types/operator/operator.rs:480,1
    - Dst: Operator::service
      Src: /src/opendal/core/core/src/types/operator/operator.rs:480,1
    - Dst: '&Servicer::clone'
      Src: /src/opendal/core/core/src/types/operator/operator.rs:480,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 2
    argNames:
    - path
    - opts
    argTypes:
    - '&str'
    - options::StatOptions
    constantsTouched: []
    func_position:
      end: 481
      start: 478
    functionDepth: 34
    functionLinenumber: 478
    functionLinenumberEnd: 481
    functionName: Operator::stat_options
    functionSourceFile: /src/opendal/core/core/src/types/operator/operator.rs
    functionUses: 0
    functionsReached:
    - Operator::context
    - normalize_path
    - '&OperationContext::clone'
    - '&Servicer::clone'
    - Operator::service
    - Self::stat_inner
    linkageType: ''
    returnType: Result
    signature: 'pub async fn stat_options(&self, path: &str, opts: options::StatOptions)
      -> Result<Metadata>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: exists
      Src: /src/opendal/bindings/nodejs/src/lib.rs:195,1
    - Dst: map_err
      Src: /src/opendal/bindings/nodejs/src/lib.rs:195,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - path
    argTypes:
    - String
    constantsTouched: []
    func_position:
      end: 196
      start: 194
    functionDepth: 31
    functionLinenumber: 194
    functionLinenumberEnd: 196
    functionName: Operator::exists
    functionSourceFile: /src/opendal/bindings/nodejs/src/lib.rs
    functionUses: 1
    functionsReached:
    - exists
    - map_err
    linkageType: ''
    returnType: Result
    signature: 'pub async fn exists(&self, path: String) -> Result<bool>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: create_dir
      Src: /src/opendal/bindings/nodejs/src/lib.rs:217,1
    - Dst: map_err
      Src: /src/opendal/bindings/nodejs/src/lib.rs:217,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - path
    argTypes:
    - String
    constantsTouched: []
    func_position:
      end: 221
      start: 216
    functionDepth: 35
    functionLinenumber: 216
    functionLinenumberEnd: 221
    functionName: Operator::create_dir
    functionSourceFile: /src/opendal/bindings/nodejs/src/lib.rs
    functionUses: 1
    functionsReached:
    - map_err
    - create_dir
    linkageType: ''
    returnType: Result
    signature: 'pub async fn create_dir(&self, path: String) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::map_or_else
      Src: /src/opendal/bindings/nodejs/src/lib.rs:248,1
    - Dst: read_options
      Src: /src/opendal/bindings/nodejs/src/lib.rs:249,1
    - Dst: map_err
      Src: /src/opendal/bindings/nodejs/src/lib.rs:249,1
    - Dst: to_vec
      Src: /src/opendal/bindings/nodejs/src/lib.rs:249,1
    - Dst: Ok
      Src: /src/opendal/bindings/nodejs/src/lib.rs:255,1
    - Dst: into
      Src: /src/opendal/bindings/nodejs/src/lib.rs:255,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 15
    argCount: 2
    argNames:
    - path
    - options
    argTypes:
    - String
    - Option<options::ReadOptions>
    constantsTouched: []
    func_position:
      end: 256
      start: 243
    functionDepth: 35
    functionLinenumber: 243
    functionLinenumberEnd: 256
    functionName: Operator::read
    functionSourceFile: /src/opendal/bindings/nodejs/src/lib.rs
    functionUses: 1
    functionsReached:
    - map_err
    - Ok
    - into
    - Result::map_or_else
    - to_vec
    - read_options
    linkageType: ''
    returnType: Result
    signature: 'pub async fn read(&self,path: String,options: Option<options::ReadOptions>,)
      -> Result<Buffer>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: normalize_path
      Src: /src/opendal/core/core/src/types/operator/operator.rs:651,1
    - Dst: Self::read_inner
      Src: /src/opendal/core/core/src/types/operator/operator.rs:652,1
    - Dst: Operator::context
      Src: /src/opendal/core/core/src/types/operator/operator.rs:652,1
    - Dst: '&OperationContext::clone'
      Src: /src/opendal/core/core/src/types/operator/operator.rs:652,1
    - Dst: Operator::service
      Src: /src/opendal/core/core/src/types/operator/operator.rs:652,1
    - Dst: '&Servicer::clone'
      Src: /src/opendal/core/core/src/types/operator/operator.rs:652,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 2
    argNames:
    - path
    - opts
    argTypes:
    - '&str'
    - options::ReadOptions
    constantsTouched: []
    func_position:
      end: 653
      start: 650
    functionDepth: 34
    functionLinenumber: 650
    functionLinenumberEnd: 653
    functionName: Operator::read_options
    functionSourceFile: /src/opendal/core/core/src/types/operator/operator.rs
    functionUses: 0
    functionsReached:
    - Operator::context
    - normalize_path
    - '&OperationContext::clone'
    - '&Servicer::clone'
    - Self::read_inner
    - Operator::service
    linkageType: ''
    returnType: Result
    signature: 'pub async fn read_options(&self, path: &str, opts: options::ReadOptions)
      -> Result<Buffer>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::map_or_else
      Src: /src/opendal/bindings/nodejs/src/lib.rs:267,1
    - Dst: reader_options
      Src: /src/opendal/bindings/nodejs/src/lib.rs:268,1
    - Dst: map_err
      Src: /src/opendal/bindings/nodejs/src/lib.rs:268,1
    - Dst: Ok
      Src: /src/opendal/bindings/nodejs/src/lib.rs:273,1
    - Dst: Result::into_futures_async_read
      Src: /src/opendal/bindings/nodejs/src/lib.rs:274,1
    - Dst: map_err
      Src: /src/opendal/bindings/nodejs/src/lib.rs:274,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 2
    argNames:
    - path
    - options
    argTypes:
    - String
    - Option<options::ReaderOptions>
    constantsTouched: []
    func_position:
      end: 279
      start: 262
    functionDepth: 35
    functionLinenumber: 262
    functionLinenumberEnd: 279
    functionName: Operator::reader
    functionSourceFile: /src/opendal/bindings/nodejs/src/lib.rs
    functionUses: 0
    functionsReached:
    - map_err
    - Ok
    - Result::into_futures_async_read
    - reader_options
    - Result::map_or_else
    linkageType: ''
    returnType: Result
    signature: 'pub async fn reader(&self,path: String,options: Option<options::ReaderOptions>,)
      -> Result<Reader>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: normalize_path
      Src: /src/opendal/core/core/src/types/operator/operator.rs:759,1
    - Dst: Self::reader_inner
      Src: /src/opendal/core/core/src/types/operator/operator.rs:760,1
    - Dst: Operator::context
      Src: /src/opendal/core/core/src/types/operator/operator.rs:760,1
    - Dst: '&OperationContext::clone'
      Src: /src/opendal/core/core/src/types/operator/operator.rs:760,1
    - Dst: Operator::service
      Src: /src/opendal/core/core/src/types/operator/operator.rs:760,1
    - Dst: '&Servicer::clone'
      Src: /src/opendal/core/core/src/types/operator/operator.rs:760,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 2
    argNames:
    - path
    - opts
    argTypes:
    - '&str'
    - options::ReaderOptions
    constantsTouched: []
    func_position:
      end: 761
      start: 758
    functionDepth: 34
    functionLinenumber: 758
    functionLinenumberEnd: 761
    functionName: Operator::reader_options
    functionSourceFile: /src/opendal/core/core/src/types/operator/operator.rs
    functionUses: 0
    functionsReached:
    - Self::reader_inner
    - Operator::context
    - normalize_path
    - '&OperationContext::clone'
    - '&Servicer::clone'
    - Operator::service
    linkageType: ''
    returnType: Result
    signature: 'pub async fn reader_options(&self, path: &str, opts: options::ReaderOptions)
      -> Result<Reader>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: io::Result::as_ref
      Src: /src/opendal/bindings/nodejs/src/lib.rs:336,1
    - Dst: '&[&''static str]::to_owned'
      Src: /src/opendal/bindings/nodejs/src/lib.rs:336,1
    - Dst: into_bytes
      Src: /src/opendal/bindings/nodejs/src/lib.rs:337,1
    - Dst: Result::map_or_else
      Src: /src/opendal/bindings/nodejs/src/lib.rs:339,1
    - Dst: write_options
      Src: /src/opendal/bindings/nodejs/src/lib.rs:340,1
    - Dst: map_err
      Src: /src/opendal/bindings/nodejs/src/lib.rs:340,1
    - Dst: Ok
      Src: /src/opendal/bindings/nodejs/src/lib.rs:345,1
    - Dst: Metadata
      Src: /src/opendal/bindings/nodejs/src/lib.rs:345,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 19
    argCount: 3
    argNames:
    - path
    - content
    - options
    argTypes:
    - String
    - Either<Buffer, String>
    - Option<options::WriteOptions>
    constantsTouched: []
    func_position:
      end: 346
      start: 329
    functionDepth: 35
    functionLinenumber: 329
    functionLinenumberEnd: 346
    functionName: Operator::write
    functionSourceFile: /src/opendal/bindings/nodejs/src/lib.rs
    functionUses: 1
    functionsReached:
    - map_err
    - write_options
    - Ok
    - '&[&''static str]::to_owned'
    - into_bytes
    - Result::map_or_else
    - io::Result::as_ref
    - Metadata
    linkageType: ''
    returnType: Result
    signature: 'pub async fn write(&self,path: String,content: Either<Buffer, String>,options:
      Option<options::WriteOptions>,) -> Result<Metadata>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: normalize_path
      Src: /src/opendal/core/core/src/types/operator/operator.rs:926,1
    - Dst: Self::write_inner
      Src: /src/opendal/core/core/src/types/operator/operator.rs:927,1
    - Dst: Operator::context
      Src: /src/opendal/core/core/src/types/operator/operator.rs:928,1
    - Dst: '&OperationContext::clone'
      Src: /src/opendal/core/core/src/types/operator/operator.rs:928,1
    - Dst: Operator::service
      Src: /src/opendal/core/core/src/types/operator/operator.rs:929,1
    - Dst: '&Servicer::clone'
      Src: /src/opendal/core/core/src/types/operator/operator.rs:929,1
    - Dst: Result::into
      Src: /src/opendal/core/core/src/types/operator/operator.rs:931,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 3
    argNames:
    - path
    - bs
    - opts
    argTypes:
    - '&str'
    - impl Into<Buffer>
    - options::WriteOptions
    constantsTouched: []
    func_position:
      end: 935
      start: 920
    functionDepth: 34
    functionLinenumber: 920
    functionLinenumberEnd: 935
    functionName: Operator::write_options
    functionSourceFile: /src/opendal/core/core/src/types/operator/operator.rs
    functionUses: 0
    functionsReached:
    - Operator::context
    - normalize_path
    - '&OperationContext::clone'
    - '&Servicer::clone'
    - Result::into
    - Self::write_inner
    - Operator::service
    linkageType: ''
    returnType: Result
    signature: 'pub async fn write_options(&self,path: &str,bs: impl Into<Buffer>,opts:
      options::WriteOptions,) -> Result<Metadata>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::unwrap_or_default
      Src: /src/opendal/bindings/nodejs/src/lib.rs:358,1
    - Dst: writer_options
      Src: /src/opendal/bindings/nodejs/src/lib.rs:359,1
    - Dst: Result::into
      Src: /src/opendal/bindings/nodejs/src/lib.rs:361,1
    - Dst: map_err
      Src: /src/opendal/bindings/nodejs/src/lib.rs:359,1
    - Dst: Ok
      Src: /src/opendal/bindings/nodejs/src/lib.rs:364,1
    - Dst: Writer
      Src: /src/opendal/bindings/nodejs/src/lib.rs:364,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 2
    argNames:
    - path
    - options
    argTypes:
    - String
    - Option<options::WriteOptions>
    constantsTouched: []
    func_position:
      end: 365
      start: 353
    functionDepth: 35
    functionLinenumber: 353
    functionLinenumberEnd: 365
    functionName: Operator::writer
    functionSourceFile: /src/opendal/bindings/nodejs/src/lib.rs
    functionUses: 0
    functionsReached:
    - Result::unwrap_or_default
    - map_err
    - Ok
    - Result::into
    - Writer
    - writer_options
    linkageType: ''
    returnType: Result
    signature: 'pub async fn writer(&self,path: String,options: Option<options::WriteOptions>,)
      -> Result<Writer>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: normalize_path
      Src: /src/opendal/core/core/src/types/operator/operator.rs:1102,1
    - Dst: Self::writer_inner
      Src: /src/opendal/core/core/src/types/operator/operator.rs:1103,1
    - Dst: Operator::context
      Src: /src/opendal/core/core/src/types/operator/operator.rs:1103,1
    - Dst: '&OperationContext::clone'
      Src: /src/opendal/core/core/src/types/operator/operator.rs:1103,1
    - Dst: Operator::service
      Src: /src/opendal/core/core/src/types/operator/operator.rs:1103,1
    - Dst: '&Servicer::clone'
      Src: /src/opendal/core/core/src/types/operator/operator.rs:1103,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 2
    argNames:
    - path
    - opts
    argTypes:
    - '&str'
    - options::WriteOptions
    constantsTouched: []
    func_position:
      end: 1104
      start: 1101
    functionDepth: 34
    functionLinenumber: 1101
    functionLinenumberEnd: 1104
    functionName: Operator::writer_options
    functionSourceFile: /src/opendal/core/core/src/types/operator/operator.rs
    functionUses: 0
    functionsReached:
    - Operator::context
    - Self::writer_inner
    - normalize_path
    - '&OperationContext::clone'
    - '&Servicer::clone'
    - Operator::service
    linkageType: ''
    returnType: Result
    signature: 'pub async fn writer_options(&self, path: &str, opts: options::WriteOptions)
      -> Result<Writer>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: copy
      Src: /src/opendal/bindings/nodejs/src/lib.rs:422,1
    - Dst: map
      Src: /src/opendal/bindings/nodejs/src/lib.rs:422,1
    - Dst: map_err
      Src: /src/opendal/bindings/nodejs/src/lib.rs:422,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 2
    argNames:
    - from
    - to
    argTypes:
    - String
    - String
    constantsTouched: []
    func_position:
      end: 427
      start: 421
    functionDepth: 34
    functionLinenumber: 421
    functionLinenumberEnd: 427
    functionName: Operator::copy
    functionSourceFile: /src/opendal/bindings/nodejs/src/lib.rs
    functionUses: 0
    functionsReached:
    - map_err
    - map
    - copy
    linkageType: ''
    returnType: Result
    signature: 'pub async fn copy(&self, from: String, to: String) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: normalize_path
      Src: /src/opendal/core/core/src/types/operator/operator.rs:1257,1
    - Dst: normalize_path
      Src: /src/opendal/core/core/src/types/operator/operator.rs:1258,1
    - Dst: object_store::Result::into
      Src: /src/opendal/core/core/src/types/operator/operator.rs:1259,1
    - Dst: Self::copy_inner
      Src: /src/opendal/core/core/src/types/operator/operator.rs:1261,1
    - Dst: Operator::context
      Src: /src/opendal/core/core/src/types/operator/operator.rs:1262,1
    - Dst: '&OperationContext::clone'
      Src: /src/opendal/core/core/src/types/operator/operator.rs:1262,1
    - Dst: Operator::service
      Src: /src/opendal/core/core/src/types/operator/operator.rs:1263,1
    - Dst: '&Servicer::clone'
      Src: /src/opendal/core/core/src/types/operator/operator.rs:1263,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 15
    argCount: 3
    argNames:
    - from
    - to
    - opts
    argTypes:
    - '&str'
    - '&str'
    - impl Into<options::CopyOptions>
    constantsTouched: []
    func_position:
      end: 1268
      start: 1251
    functionDepth: 34
    functionLinenumber: 1251
    functionLinenumberEnd: 1268
    functionName: Operator::copy_options
    functionSourceFile: /src/opendal/core/core/src/types/operator/operator.rs
    functionUses: 0
    functionsReached:
    - Operator::context
    - normalize_path
    - object_store::Result::into
    - '&OperationContext::clone'
    - '&Servicer::clone'
    - Operator::service
    - Self::copy_inner
    linkageType: ''
    returnType: Result
    signature: 'pub async fn copy_options(&self,from: &str,to: &str,opts: impl Into<options::CopyOptions>,)
      -> Result<Metadata>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Operator::copier_options
      Src: /src/opendal/core/core/src/types/operator/operator.rs:1155,1
    - Dst: options::CopyOptions::default
      Src: /src/opendal/core/core/src/types/operator/operator.rs:1155,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - from
    - to
    argTypes:
    - '&str'
    - '&str'
    constantsTouched: []
    func_position:
      end: 1157
      start: 1154
    functionDepth: 35
    functionLinenumber: 1154
    functionLinenumberEnd: 1157
    functionName: Operator::copier
    functionSourceFile: /src/opendal/core/core/src/types/operator/operator.rs
    functionUses: 0
    functionsReached:
    - options::CopyOptions::default
    - Operator::copier_options
    linkageType: ''
    returnType: Result
    signature: 'pub async fn copier(&self, from: &str, to: &str) -> Result<Copier>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: normalize_path
      Src: /src/opendal/core/core/src/types/operator/operator.rs:1277,1
    - Dst: normalize_path
      Src: /src/opendal/core/core/src/types/operator/operator.rs:1278,1
    - Dst: object_store::Result::into
      Src: /src/opendal/core/core/src/types/operator/operator.rs:1279,1
    - Dst: Self::copier_inner
      Src: /src/opendal/core/core/src/types/operator/operator.rs:1281,1
    - Dst: Operator::context
      Src: /src/opendal/core/core/src/types/operator/operator.rs:1282,1
    - Dst: '&OperationContext::clone'
      Src: /src/opendal/core/core/src/types/operator/operator.rs:1282,1
    - Dst: Operator::service
      Src: /src/opendal/core/core/src/types/operator/operator.rs:1283,1
    - Dst: '&Servicer::clone'
      Src: /src/opendal/core/core/src/types/operator/operator.rs:1283,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 15
    argCount: 3
    argNames:
    - from
    - to
    - opts
    argTypes:
    - '&str'
    - '&str'
    - impl Into<options::CopyOptions>
    constantsTouched: []
    func_position:
      end: 1288
      start: 1271
    functionDepth: 34
    functionLinenumber: 1271
    functionLinenumberEnd: 1288
    functionName: Operator::copier_options
    functionSourceFile: /src/opendal/core/core/src/types/operator/operator.rs
    functionUses: 1
    functionsReached:
    - Operator::context
    - normalize_path
    - object_store::Result::into
    - '&OperationContext::clone'
    - '&Servicer::clone'
    - Self::copier_inner
    - Operator::service
    linkageType: ''
    returnType: Result
    signature: 'pub async fn copier_options(&self,from: &str,to: &str,opts: impl Into<options::CopyOptions>,)
      -> Result<Copier>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: rename
      Src: /src/opendal/bindings/nodejs/src/lib.rs:453,1
    - Dst: map_err
      Src: /src/opendal/bindings/nodejs/src/lib.rs:453,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - from
    - to
    argTypes:
    - String
    - String
    constantsTouched: []
    func_position:
      end: 457
      start: 452
    functionDepth: 2
    functionLinenumber: 452
    functionLinenumberEnd: 457
    functionName: Operator::rename
    functionSourceFile: /src/opendal/bindings/nodejs/src/lib.rs
    functionUses: 1
    functionsReached:
    - rename
    - map_err
    linkageType: ''
    returnType: Result
    signature: 'pub async fn rename(&self, from: String, to: String) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: normalize_path
      Src: /src/opendal/core/core/src/types/operator/operator.rs:1464,1
    - Dst: normalize_path
      Src: /src/opendal/core/core/src/types/operator/operator.rs:1465,1
    - Dst: object_store::Result::into
      Src: /src/opendal/core/core/src/types/operator/operator.rs:1466,1
    - Dst: Self::rename_inner
      Src: /src/opendal/core/core/src/types/operator/operator.rs:1468,1
    - Dst: Operator::context
      Src: /src/opendal/core/core/src/types/operator/operator.rs:1469,1
    - Dst: '&OperationContext::clone'
      Src: /src/opendal/core/core/src/types/operator/operator.rs:1469,1
    - Dst: Operator::service
      Src: /src/opendal/core/core/src/types/operator/operator.rs:1470,1
    - Dst: '&Servicer::clone'
      Src: /src/opendal/core/core/src/types/operator/operator.rs:1470,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 15
    argCount: 3
    argNames:
    - from
    - to
    - opts
    argTypes:
    - '&str'
    - '&str'
    - impl Into<options::RenameOptions>
    constantsTouched: []
    func_position:
      end: 1475
      start: 1458
    functionDepth: 34
    functionLinenumber: 1458
    functionLinenumberEnd: 1475
    functionName: Operator::rename_options
    functionSourceFile: /src/opendal/core/core/src/types/operator/operator.rs
    functionUses: 0
    functionsReached:
    - Operator::context
    - Self::rename_inner
    - normalize_path
    - object_store::Result::into
    - '&OperationContext::clone'
    - '&Servicer::clone'
    - Operator::service
    linkageType: ''
    returnType: Result
    signature: 'pub async fn rename_options(&self,from: &str,to: &str,opts: impl Into<options::RenameOptions>,)
      -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::map_or_else
      Src: /src/opendal/bindings/nodejs/src/lib.rs:489,1
    - Dst: delete_options
      Src: /src/opendal/bindings/nodejs/src/lib.rs:490,1
    - Dst: map_err
      Src: /src/opendal/bindings/nodejs/src/lib.rs:490,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 2
    argNames:
    - path
    - options
    argTypes:
    - String
    - Option<options::DeleteOptions>
    constantsTouched: []
    func_position:
      end: 494
      start: 484
    functionDepth: 35
    functionLinenumber: 484
    functionLinenumberEnd: 494
    functionName: Operator::delete
    functionSourceFile: /src/opendal/bindings/nodejs/src/lib.rs
    functionUses: 1
    functionsReached:
    - map_err
    - Result::map_or_else
    - delete_options
    linkageType: ''
    returnType: Result
    signature: 'pub async fn delete(&self,path: String,options: Option<options::DeleteOptions>,)
      -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: normalize_path
      Src: /src/opendal/core/core/src/types/operator/operator.rs:1597,1
    - Dst: Self::delete_inner
      Src: /src/opendal/core/core/src/types/operator/operator.rs:1598,1
    - Dst: Operator::context
      Src: /src/opendal/core/core/src/types/operator/operator.rs:1598,1
    - Dst: '&OperationContext::clone'
      Src: /src/opendal/core/core/src/types/operator/operator.rs:1598,1
    - Dst: Operator::service
      Src: /src/opendal/core/core/src/types/operator/operator.rs:1598,1
    - Dst: '&Servicer::clone'
      Src: /src/opendal/core/core/src/types/operator/operator.rs:1598,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 2
    argNames:
    - path
    - opts
    argTypes:
    - '&str'
    - options::DeleteOptions
    constantsTouched: []
    func_position:
      end: 1599
      start: 1596
    functionDepth: 34
    functionLinenumber: 1596
    functionLinenumberEnd: 1599
    functionName: Operator::delete_options
    functionSourceFile: /src/opendal/core/core/src/types/operator/operator.rs
    functionUses: 0
    functionsReached:
    - Operator::context
    - normalize_path
    - '&OperationContext::clone'
    - '&Servicer::clone'
    - Self::delete_inner
    - Operator::service
    linkageType: ''
    returnType: Result
    signature: 'pub async fn delete_options(&self, path: &str, opts: options::DeleteOptions)
      -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Operator::deleter
      Src: /src/opendal/core/core/src/types/operator/operator.rs:1626,1
    - Dst: Result::delete_iter
      Src: /src/opendal/core/core/src/types/operator/operator.rs:1627,1
    - Dst: Result::close
      Src: /src/opendal/core/core/src/types/operator/operator.rs:1628,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/types/operator/operator.rs:1629,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 16
    argCount: 1
    argNames:
    - iter
    argTypes:
    - I
    constantsTouched: []
    func_position:
      end: 1630
      start: 1621
    functionDepth: 34
    functionLinenumber: 1621
    functionLinenumberEnd: 1630
    functionName: Operator::delete_iter
    functionSourceFile: /src/opendal/core/core/src/types/operator/operator.rs
    functionUses: 0
    functionsReached:
    - Result::close
    - Ok
    - Result::delete_iter
    - Operator::deleter
    linkageType: ''
    returnType: Result
    signature: 'pub async fn delete_iter<I, D>(&self, iter: I) -> Result<()>whereI:
      IntoIterator<Item = D>,D: IntoDeleteInput,'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Operator::deleter
      Src: /src/opendal/core/core/src/types/operator/operator.rs:1644,1
    - Dst: Result::delete_try_iter
      Src: /src/opendal/core/core/src/types/operator/operator.rs:1645,1
    - Dst: Result::close
      Src: /src/opendal/core/core/src/types/operator/operator.rs:1646,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/types/operator/operator.rs:1647,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 16
    argCount: 1
    argNames:
    - try_iter
    argTypes:
    - I
    constantsTouched: []
    func_position:
      end: 1648
      start: 1639
    functionDepth: 34
    functionLinenumber: 1639
    functionLinenumberEnd: 1648
    functionName: Operator::delete_try_iter
    functionSourceFile: /src/opendal/core/core/src/types/operator/operator.rs
    functionUses: 0
    functionsReached:
    - Result::close
    - Ok
    - Result::delete_try_iter
    - Operator::deleter
    linkageType: ''
    returnType: Result
    signature: 'pub async fn delete_try_iter<I, D>(&self, try_iter: I) -> Result<()>whereI:
      IntoIterator<Item = Result<D>>,D: IntoDeleteInput,'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: std::future::ready
      Src: /src/opendal/core/core/src/types/operator/operator.rs:1692,1
    - Dst: Deleter::create
      Src: /src/opendal/core/core/src/types/operator/operator.rs:1692,1
    - Dst: Operator::context
      Src: /src/opendal/core/core/src/types/operator/operator.rs:1693,1
    - Dst: '&OperationContext::clone'
      Src: /src/opendal/core/core/src/types/operator/operator.rs:1693,1
    - Dst: Operator::service
      Src: /src/opendal/core/core/src/types/operator/operator.rs:1694,1
    - Dst: '&Servicer::clone'
      Src: /src/opendal/core/core/src/types/operator/operator.rs:1694,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 1697
      start: 1691
    functionDepth: 33
    functionLinenumber: 1691
    functionLinenumberEnd: 1697
    functionName: Operator::deleter
    functionSourceFile: /src/opendal/core/core/src/types/operator/operator.rs
    functionUses: 4
    functionsReached:
    - Operator::context
    - Deleter::create
    - '&OperationContext::clone'
    - '&Servicer::clone'
    - std::future::ready
    - Operator::service
    linkageType: ''
    returnType: Result
    signature: pub async fn deleter(&self) -> Result<Deleter>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: delete_with
      Src: /src/opendal/bindings/nodejs/src/lib.rs:554,1
    - Dst: recursive
      Src: /src/opendal/bindings/nodejs/src/lib.rs:554,1
    - Dst: map_err
      Src: /src/opendal/bindings/nodejs/src/lib.rs:554,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - path
    argTypes:
    - String
    constantsTouched: []
    func_position:
      end: 559
      start: 553
    functionDepth: 35
    functionLinenumber: 553
    functionLinenumberEnd: 559
    functionName: Operator::remove_all
    functionSourceFile: /src/opendal/bindings/nodejs/src/lib.rs
    functionUses: 0
    functionsReached:
    - map_err
    - delete_with
    - recursive
    linkageType: ''
    returnType: Result
    signature: 'pub async fn remove_all(&self, path: String) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::map_or
      Src: /src/opendal/bindings/nodejs/src/lib.rs:621,1
    - Dst: ListOptions::default
      Src: /src/opendal/bindings/nodejs/src/lib.rs:621,1
    - Dst: list_options
      Src: /src/opendal/bindings/nodejs/src/lib.rs:622,1
    - Dst: map_err
      Src: /src/opendal/bindings/nodejs/src/lib.rs:622,1
    - Dst: Ok
      Src: /src/opendal/bindings/nodejs/src/lib.rs:628,1
    - Dst: Trial::into_iter
      Src: /src/opendal/bindings/nodejs/src/lib.rs:628,1
    - Dst: map
      Src: /src/opendal/bindings/nodejs/src/lib.rs:628,1
    - Dst: collect
      Src: /src/opendal/bindings/nodejs/src/lib.rs:628,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 18
    argCount: 2
    argNames:
    - path
    - options
    argTypes:
    - String
    - Option<options::ListOptions>
    constantsTouched: []
    func_position:
      end: 629
      start: 616
    functionDepth: 35
    functionLinenumber: 616
    functionLinenumberEnd: 629
    functionName: Operator::list
    functionSourceFile: /src/opendal/bindings/nodejs/src/lib.rs
    functionUses: 2
    functionsReached:
    - ListOptions::default
    - map_err
    - collect
    - Ok
    - map
    - Result::map_or
    - list_options
    - Trial::into_iter
    linkageType: ''
    returnType: Result
    signature: 'pub async fn list(&self,path: String,options: Option<options::ListOptions>,)
      -> Result<Vec<Entry>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: normalize_path
      Src: /src/opendal/core/core/src/types/operator/operator.rs:1883,1
    - Dst: Self::list_inner
      Src: /src/opendal/core/core/src/types/operator/operator.rs:1884,1
    - Dst: Operator::context
      Src: /src/opendal/core/core/src/types/operator/operator.rs:1884,1
    - Dst: '&OperationContext::clone'
      Src: /src/opendal/core/core/src/types/operator/operator.rs:1884,1
    - Dst: Operator::service
      Src: /src/opendal/core/core/src/types/operator/operator.rs:1884,1
    - Dst: '&Servicer::clone'
      Src: /src/opendal/core/core/src/types/operator/operator.rs:1884,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 2
    argNames:
    - path
    - opts
    argTypes:
    - '&str'
    - options::ListOptions
    constantsTouched: []
    func_position:
      end: 1885
      start: 1882
    functionDepth: 34
    functionLinenumber: 1882
    functionLinenumberEnd: 1885
    functionName: Operator::list_options
    functionSourceFile: /src/opendal/core/core/src/types/operator/operator.rs
    functionUses: 0
    functionsReached:
    - Operator::context
    - normalize_path
    - '&OperationContext::clone'
    - Self::list_inner
    - '&Servicer::clone'
    - Operator::service
    linkageType: ''
    returnType: Result
    signature: 'pub async fn list_options(&self, path: &str, opts: options::ListOptions)
      -> Result<Vec<Entry>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::map_or
      Src: /src/opendal/bindings/nodejs/src/lib.rs:712,1
    - Dst: ListOptions::default
      Src: /src/opendal/bindings/nodejs/src/lib.rs:712,1
    - Dst: lister_options
      Src: /src/opendal/bindings/nodejs/src/lib.rs:713,1
    - Dst: map_err
      Src: /src/opendal/bindings/nodejs/src/lib.rs:713,1
    - Dst: Ok
      Src: /src/opendal/bindings/nodejs/src/lib.rs:719,1
    - Dst: Lister
      Src: /src/opendal/bindings/nodejs/src/lib.rs:719,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 2
    argNames:
    - path
    - options
    argTypes:
    - String
    - Option<options::ListOptions>
    constantsTouched: []
    func_position:
      end: 720
      start: 707
    functionDepth: 35
    functionLinenumber: 707
    functionLinenumberEnd: 720
    functionName: Operator::lister
    functionSourceFile: /src/opendal/bindings/nodejs/src/lib.rs
    functionUses: 0
    functionsReached:
    - ListOptions::default
    - map_err
    - lister_options
    - Ok
    - Lister
    - Result::map_or
    linkageType: ''
    returnType: Result
    signature: 'pub async fn lister(&self,path: String,options: Option<options::ListOptions>,)
      -> Result<Lister>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: normalize_path
      Src: /src/opendal/core/core/src/types/operator/operator.rs:2022,1
    - Dst: Self::lister_inner
      Src: /src/opendal/core/core/src/types/operator/operator.rs:2023,1
    - Dst: Operator::context
      Src: /src/opendal/core/core/src/types/operator/operator.rs:2023,1
    - Dst: '&OperationContext::clone'
      Src: /src/opendal/core/core/src/types/operator/operator.rs:2023,1
    - Dst: Operator::service
      Src: /src/opendal/core/core/src/types/operator/operator.rs:2023,1
    - Dst: '&Servicer::clone'
      Src: /src/opendal/core/core/src/types/operator/operator.rs:2023,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 2
    argNames:
    - path
    - opts
    argTypes:
    - '&str'
    - options::ListOptions
    constantsTouched: []
    func_position:
      end: 2024
      start: 2021
    functionDepth: 34
    functionLinenumber: 2021
    functionLinenumberEnd: 2024
    functionName: Operator::lister_options
    functionSourceFile: /src/opendal/core/core/src/types/operator/operator.rs
    functionUses: 0
    functionsReached:
    - Operator::context
    - normalize_path
    - Self::lister_inner
    - '&OperationContext::clone'
    - '&Servicer::clone'
    - Operator::service
    linkageType: ''
    returnType: Result
    signature: 'pub async fn lister_options(&self, path: &str, opts: options::ListOptions)
      -> Result<Lister>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: check
      Src: /src/opendal/bindings/nodejs/src/lib.rs:173,1
    - Dst: map_err
      Src: /src/opendal/bindings/nodejs/src/lib.rs:173,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 174
      start: 172
    functionDepth: 3
    functionLinenumber: 172
    functionLinenumberEnd: 174
    functionName: Operator::check
    functionSourceFile: /src/opendal/bindings/nodejs/src/lib.rs
    functionUses: 1
    functionsReached:
    - map_err
    - check
    linkageType: ''
    returnType: Result
    signature: pub async fn check(&self) -> Result<()>
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - val
    argTypes:
    - Operator
    constantsTouched: []
    func_position:
      end: 927
      start: 925
    functionDepth: 0
    functionLinenumber: 925
    functionLinenumberEnd: 927
    functionName: AsyncOperator::from
    functionSourceFile: /src/opendal/core/core/src/blocking/operator.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: 'fn from(val: Operator) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Some
      Src: /src/opendal/core/core/src/blocking/copy.rs:38,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - handle
    - copier
    argTypes:
    - tokio::runtime::Handle
    - AsyncCopier
    constantsTouched: []
    func_position:
      end: 40
      start: 35
    functionDepth: 0
    functionLinenumber: 35
    functionLinenumberEnd: 40
    functionName: Copier::new
    functionSourceFile: /src/opendal/core/core/src/blocking/copy.rs
    functionUses: 29
    functionsReached:
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub(crate) fn new(handle: tokio::runtime::Handle, copier: AsyncCopier)
      -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: as_mut
      Src: /src/opendal/core/core/src/types/copy.rs:103,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/types/copy.rs:104,1
    - Dst: Result::abort_dyn
      Src: /src/opendal/core/core/src/types/copy.rs:107,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 108
      start: 102
    functionDepth: 32
    functionLinenumber: 102
    functionLinenumberEnd: 108
    functionName: Copier::abort
    functionSourceFile: /src/opendal/core/core/src/types/copy.rs
    functionUses: 1
    functionsReached:
    - as_mut
    - Result::abort_dyn
    - Ok
    linkageType: ''
    returnType: Result
    signature: pub async fn abort(&mut self) -> Result<()>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/core/core/src/types/copy.rs:80,1
    - Dst: as_mut
      Src: /src/opendal/core/core/src/types/copy.rs:83,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/types/copy.rs:84,1
    - Dst: Result::next_dyn
      Src: /src/opendal/core/core/src/types/copy.rs:87,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/types/copy.rs:88,1
    - Dst: Some
      Src: /src/opendal/core/core/src/types/copy.rs:88,1
    - Dst: Some
      Src: /src/opendal/core/core/src/types/copy.rs:90,1
    - Dst: Result::close_dyn
      Src: /src/opendal/core/core/src/types/copy.rs:90,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/types/copy.rs:92,1
    - Dst: Err
      Src: /src/opendal/core/core/src/types/copy.rs:96,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 35
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 99
      start: 78
    functionDepth: 3
    functionLinenumber: 78
    functionLinenumberEnd: 99
    functionName: Copier::next
    functionSourceFile: /src/opendal/core/core/src/types/copy.rs
    functionUses: 5
    functionsReached:
    - as_mut
    - Ok
    - Some
    - Err
    - Result::next_dyn
    - Result::close_dyn
    linkageType: ''
    returnType: Result
    signature: pub async fn next(&mut self) -> Result<Option<usize>>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: take
      Src: /src/opendal/core/core/src/blocking/copy.rs:71,1
    - Dst: block_on
      Src: /src/opendal/core/core/src/blocking/copy.rs:72,1
    - Dst: drop
      Src: /src/opendal/core/core/src/blocking/copy.rs:72,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 74
      start: 70
    functionDepth: 33
    functionLinenumber: 70
    functionLinenumberEnd: 74
    functionName: Copier::drop
    functionSourceFile: /src/opendal/core/core/src/blocking/copy.rs
    functionUses: 0
    functionsReached:
    - take
    - drop
    - block_on
    linkageType: ''
    returnType: void
    signature: fn drop(&mut self)
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Servicer::delete
      Src: /src/opendal/core/core/src/types/delete/deleter.rs:90,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/types/delete/deleter.rs:92,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - ctx
    - srv
    argTypes:
    - OperationContext
    - Servicer
    constantsTouched: []
    func_position:
      end: 93
      start: 89
    functionDepth: 32
    functionLinenumber: 89
    functionLinenumberEnd: 93
    functionName: Deleter::create
    functionSourceFile: /src/opendal/core/core/src/types/delete/deleter.rs
    functionUses: 1
    functionsReached:
    - Servicer::delete
    - Ok
    linkageType: ''
    returnType: Result
    signature: 'pub(crate) fn create(ctx: OperationContext, srv: Servicer) -> Result<Self>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Deleter::delete
      Src: /src/opendal/core/core/src/types/delete/deleter.rs:123,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/types/delete/deleter.rs:125,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 1
    argNames:
    - iter
    argTypes:
    - I
    constantsTouched: []
    func_position:
      end: 126
      start: 117
    functionDepth: 33
    functionLinenumber: 117
    functionLinenumberEnd: 126
    functionName: Deleter::delete_iter
    functionSourceFile: /src/opendal/core/core/src/types/delete/deleter.rs
    functionUses: 0
    functionsReached:
    - Deleter::delete
    - Ok
    linkageType: ''
    returnType: Result
    signature: 'pub async fn delete_iter<I, D>(&mut self, iter: I) -> Result<()>whereI:
      IntoIterator<Item = D>,D: IntoDeleteInput,'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Deleter::delete
      Src: /src/opendal/core/core/src/types/delete/deleter.rs:141,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/types/delete/deleter.rs:144,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 1
    argNames:
    - try_iter
    argTypes:
    - I
    constantsTouched: []
    func_position:
      end: 145
      start: 135
    functionDepth: 33
    functionLinenumber: 135
    functionLinenumberEnd: 145
    functionName: Deleter::delete_try_iter
    functionSourceFile: /src/opendal/core/core/src/types/delete/deleter.rs
    functionUses: 0
    functionsReached:
    - Deleter::delete
    - Ok
    linkageType: ''
    returnType: Result
    signature: 'pub async fn delete_try_iter<I, D>(&mut self, try_iter: I) -> Result<()>whereI:
      IntoIterator<Item = Result<D>>,D: IntoDeleteInput,'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: take
      Src: /src/opendal/core/core/src/blocking/write/writer.rs:92,1
    - Dst: ok_or_else
      Src: /src/opendal/core/core/src/blocking/write/writer.rs:92,1
    - Dst: Error::new
      Src: /src/opendal/core/core/src/blocking/write/writer.rs:95,1
    - Dst: expect
      Src: /src/opendal/core/core/src/blocking/write/writer.rs:92,1
    - Dst: StdWriter::new
      Src: /src/opendal/core/core/src/blocking/write/writer.rs:98,1
    - Dst: clone
      Src: /src/opendal/core/core/src/blocking/write/writer.rs:98,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 99
      start: 91
    functionDepth: 36
    functionLinenumber: 91
    functionLinenumberEnd: 99
    functionName: Writer::into_std_write
    functionSourceFile: /src/opendal/core/core/src/blocking/write/writer.rs
    functionUses: 0
    functionsReached:
    - expect
    - StdWriter::new
    - clone
    - Error::new
    - take
    - ok_or_else
    linkageType: ''
    returnType: StdWriter
    signature: pub fn into_std_write(mut self) -> StdWriter
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: take
      Src: /src/opendal/core/core/src/blocking/write/writer.rs:105,1
    - Dst: block_on
      Src: /src/opendal/core/core/src/blocking/write/writer.rs:106,1
    - Dst: drop
      Src: /src/opendal/core/core/src/blocking/write/writer.rs:106,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 108
      start: 104
    functionDepth: 33
    functionLinenumber: 104
    functionLinenumberEnd: 108
    functionName: Writer::drop
    functionSourceFile: /src/opendal/core/core/src/blocking/write/writer.rs
    functionUses: 0
    functionsReached:
    - take
    - drop
    - block_on
    linkageType: ''
    returnType: void
    signature: fn drop(&mut self)
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Some
      Src: /src/opendal/core/core/src/blocking/write/std_writer.rs:43,1
    - Dst: Self::into_futures_async_write
      Src: /src/opendal/core/core/src/blocking/write/std_writer.rs:43,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - handle
    - w
    argTypes:
    - tokio::runtime::Handle
    - Writer
    constantsTouched: []
    func_position:
      end: 45
      start: 40
    functionDepth: 4
    functionLinenumber: 40
    functionLinenumberEnd: 45
    functionName: StdWriter::new
    functionSourceFile: /src/opendal/core/core/src/blocking/write/std_writer.rs
    functionUses: 1
    functionsReached:
    - Self::into_futures_async_write
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub(crate) fn new(handle: tokio::runtime::Handle, w: Writer) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: as_mut
      Src: /src/opendal/core/core/src/blocking/write/std_writer.rs:49,1
    - Dst: Err
      Src: /src/opendal/core/core/src/blocking/write/std_writer.rs:50,1
    - Dst: Error::new
      Src: /src/opendal/core/core/src/blocking/write/std_writer.rs:50,1
    - Dst: Self::into
      Src: /src/opendal/core/core/src/blocking/write/std_writer.rs:50,1
    - Dst: block_on
      Src: /src/opendal/core/core/src/blocking/write/std_writer.rs:53,1
    - Dst: Self::close
      Src: /src/opendal/core/core/src/blocking/write/std_writer.rs:53,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 54
      start: 48
    functionDepth: 36
    functionLinenumber: 48
    functionLinenumberEnd: 54
    functionName: StdWriter::close
    functionSourceFile: /src/opendal/core/core/src/blocking/write/std_writer.rs
    functionUses: 0
    functionsReached:
    - as_mut
    - Error::new
    - Err
    - Self::into
    - Self::close
    - block_on
    linkageType: ''
    returnType: std::io::Result
    signature: pub fn close(&mut self) -> std::io::Result<()>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: as_mut
      Src: /src/opendal/core/core/src/blocking/write/std_writer.rs:59,1
    - Dst: Err
      Src: /src/opendal/core/core/src/blocking/write/std_writer.rs:60,1
    - Dst: Error::new
      Src: /src/opendal/core/core/src/blocking/write/std_writer.rs:60,1
    - Dst: Self::into
      Src: /src/opendal/core/core/src/blocking/write/std_writer.rs:60,1
    - Dst: block_on
      Src: /src/opendal/core/core/src/blocking/write/std_writer.rs:63,1
    - Dst: Self::write
      Src: /src/opendal/core/core/src/blocking/write/std_writer.rs:63,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 14
    argCount: 1
    argNames:
    - buf
    argTypes:
    - '&[u8]'
    constantsTouched: []
    func_position:
      end: 64
      start: 58
    functionDepth: 36
    functionLinenumber: 58
    functionLinenumberEnd: 64
    functionName: StdWriter::write
    functionSourceFile: /src/opendal/core/core/src/blocking/write/std_writer.rs
    functionUses: 0
    functionsReached:
    - as_mut
    - Error::new
    - Err
    - Self::write
    - Self::into
    - block_on
    linkageType: ''
    returnType: std::io::Result
    signature: 'fn write(&mut self, buf: &[u8]) -> std::io::Result<usize>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: as_mut
      Src: /src/opendal/core/core/src/blocking/write/std_writer.rs:67,1
    - Dst: Err
      Src: /src/opendal/core/core/src/blocking/write/std_writer.rs:68,1
    - Dst: Error::new
      Src: /src/opendal/core/core/src/blocking/write/std_writer.rs:68,1
    - Dst: Self::into
      Src: /src/opendal/core/core/src/blocking/write/std_writer.rs:68,1
    - Dst: block_on
      Src: /src/opendal/core/core/src/blocking/write/std_writer.rs:71,1
    - Dst: Self::flush
      Src: /src/opendal/core/core/src/blocking/write/std_writer.rs:71,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 72
      start: 66
    functionDepth: 36
    functionLinenumber: 66
    functionLinenumberEnd: 72
    functionName: StdWriter::flush
    functionSourceFile: /src/opendal/core/core/src/blocking/write/std_writer.rs
    functionUses: 0
    functionsReached:
    - as_mut
    - Self::flush
    - Error::new
    - Err
    - Self::into
    - block_on
    linkageType: ''
    returnType: std::io::Result
    signature: fn flush(&mut self) -> std::io::Result<()>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: take
      Src: /src/opendal/core/core/src/blocking/write/std_writer.rs:78,1
    - Dst: block_on
      Src: /src/opendal/core/core/src/blocking/write/std_writer.rs:79,1
    - Dst: drop
      Src: /src/opendal/core/core/src/blocking/write/std_writer.rs:79,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 81
      start: 77
    functionDepth: 33
    functionLinenumber: 77
    functionLinenumberEnd: 81
    functionName: StdWriter::drop
    functionSourceFile: /src/opendal/core/core/src/blocking/write/std_writer.rs
    functionUses: 0
    functionsReached:
    - take
    - drop
    - block_on
    linkageType: ''
    returnType: void
    signature: fn drop(&mut self)
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Arc::new
      Src: /src/opendal/core/core/src/types/read/reader.rs:120,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - ReadContext
    constantsTouched: []
    func_position:
      end: 121
      start: 119
    functionDepth: 2
    functionLinenumber: 119
    functionLinenumberEnd: 121
    functionName: Reader::new
    functionSourceFile: /src/opendal/core/core/src/types/read/reader.rs
    functionUses: 111
    functionsReached:
    - Arc::new
    linkageType: ''
    returnType: Self
    signature: 'pub(crate) fn new(ctx: ReadContext) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: io::Result::as_mut
      Src: /src/opendal/bindings/nodejs/src/lib.rs:1030,1
    - Dst: read
      Src: /src/opendal/bindings/nodejs/src/lib.rs:1031,1
    - Dst: map_err
      Src: /src/opendal/bindings/nodejs/src/lib.rs:1031,1
    - Dst: Ok
      Src: /src/opendal/bindings/nodejs/src/lib.rs:1032,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - buf
    argTypes:
    - Buffer
    constantsTouched: []
    func_position:
      end: 1033
      start: 1029
    functionDepth: 31
    functionLinenumber: 1029
    functionLinenumberEnd: 1033
    functionName: Reader::read
    functionSourceFile: /src/opendal/bindings/nodejs/src/lib.rs
    functionUses: 1
    functionsReached:
    - map_err
    - read
    - io::Result::as_mut
    - Ok
    linkageType: ''
    returnType: Result
    signature: 'pub async unsafe fn read(&mut self, mut buf: Buffer) -> Result<usize>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Reader::clone
      Src: /src/opendal/core/core/src/types/read/reader.rs:150,1
    - Dst: Self::into_stream
      Src: /src/opendal/core/core/src/types/read/reader.rs:150,1
    - Dst: Result::try_next
      Src: /src/opendal/core/core/src/types/read/reader.rs:154,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/types/read/reader.rs:155,1
    - Dst: Result::len
      Src: /src/opendal/core/core/src/types/read/reader.rs:157,1
    - Dst: io::Result::put
      Src: /src/opendal/core/core/src/types/read/reader.rs:158,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 21
    argCount: 2
    argNames:
    - buf
    - range
    argTypes:
    - '&mut impl BufMut'
    - impl Into<BytesRange>
    constantsTouched: []
    func_position:
      end: 160
      start: 145
    functionDepth: 28
    functionLinenumber: 145
    functionLinenumberEnd: 160
    functionName: Reader::read_into
    functionSourceFile: /src/opendal/core/core/src/types/read/reader.rs
    functionUses: 0
    functionsReached:
    - Result::try_next
    - Ok
    - io::Result::put
    - Reader::clone
    - Result::len
    - Self::into_stream
    linkageType: ''
    returnType: Result
    signature: 'pub async fn read_into(&self,buf: &mut impl BufMut,range: impl Into<BytesRange>,)
      -> Result<usize>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: take
      Src: /src/opendal/core/core/src/blocking/read/reader.rs:79,1
    - Dst: ok_or_else
      Src: /src/opendal/core/core/src/blocking/read/reader.rs:79,1
    - Dst: Error::new
      Src: /src/opendal/core/core/src/blocking/read/reader.rs:82,1
    - Dst: block_on
      Src: /src/opendal/core/core/src/blocking/read/reader.rs:83,1
    - Dst: Arc::into_stream
      Src: /src/opendal/core/core/src/blocking/read/reader.rs:83,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/blocking/read/reader.rs:85,1
    - Dst: BufferIterator::new
      Src: /src/opendal/core/core/src/blocking/read/reader.rs:85,1
    - Dst: clone
      Src: /src/opendal/core/core/src/blocking/read/reader.rs:85,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 19
    argCount: 1
    argNames:
    - range
    argTypes:
    - impl Into<BytesRange>
    constantsTouched: []
    func_position:
      end: 86
      start: 78
    functionDepth: 36
    functionLinenumber: 78
    functionLinenumberEnd: 86
    functionName: Reader::into_iterator
    functionSourceFile: /src/opendal/core/core/src/blocking/read/reader.rs
    functionUses: 0
    functionsReached:
    - Ok
    - BufferIterator::new
    - clone
    - Error::new
    - take
    - Arc::into_stream
    - block_on
    - ok_or_else
    linkageType: ''
    returnType: Result
    signature: 'pub fn into_iterator(mut self, range: impl Into<BytesRange>) -> Result<BufferIterator>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: take
      Src: /src/opendal/core/core/src/blocking/read/reader.rs:92,1
    - Dst: ok_or_else
      Src: /src/opendal/core/core/src/blocking/read/reader.rs:92,1
    - Dst: Error::new
      Src: /src/opendal/core/core/src/blocking/read/reader.rs:95,1
    - Dst: block_on
      Src: /src/opendal/core/core/src/blocking/read/reader.rs:97,1
    - Dst: Arc::into_futures_async_read
      Src: /src/opendal/core/core/src/blocking/read/reader.rs:97,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/blocking/read/reader.rs:99,1
    - Dst: StdReader::new
      Src: /src/opendal/core/core/src/blocking/read/reader.rs:99,1
    - Dst: clone
      Src: /src/opendal/core/core/src/blocking/read/reader.rs:99,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 19
    argCount: 1
    argNames:
    - range
    argTypes:
    - impl Into<BytesRange>
    constantsTouched: []
    func_position:
      end: 100
      start: 91
    functionDepth: 36
    functionLinenumber: 91
    functionLinenumberEnd: 100
    functionName: Reader::into_std_read
    functionSourceFile: /src/opendal/core/core/src/blocking/read/reader.rs
    functionUses: 0
    functionsReached:
    - Ok
    - Arc::into_futures_async_read
    - StdReader::new
    - clone
    - Error::new
    - take
    - block_on
    - ok_or_else
    linkageType: ''
    returnType: Result
    signature: 'pub fn into_std_read(mut self, range: impl Into<BytesRange>) -> Result<StdReader>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: take
      Src: /src/opendal/core/core/src/blocking/read/reader.rs:105,1
    - Dst: ok_or_else
      Src: /src/opendal/core/core/src/blocking/read/reader.rs:105,1
    - Dst: Error::new
      Src: /src/opendal/core/core/src/blocking/read/reader.rs:108,1
    - Dst: block_on
      Src: /src/opendal/core/core/src/blocking/read/reader.rs:110,1
    - Dst: Arc::into_bytes_stream
      Src: /src/opendal/core/core/src/blocking/read/reader.rs:110,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/blocking/read/reader.rs:111,1
    - Dst: StdBytesIterator::new
      Src: /src/opendal/core/core/src/blocking/read/reader.rs:111,1
    - Dst: clone
      Src: /src/opendal/core/core/src/blocking/read/reader.rs:111,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 19
    argCount: 1
    argNames:
    - range
    argTypes:
    - impl Into<BytesRange>
    constantsTouched: []
    func_position:
      end: 112
      start: 104
    functionDepth: 36
    functionLinenumber: 104
    functionLinenumberEnd: 112
    functionName: Reader::into_bytes_iterator
    functionSourceFile: /src/opendal/core/core/src/blocking/read/reader.rs
    functionUses: 0
    functionsReached:
    - Ok
    - Arc::into_bytes_stream
    - clone
    - Error::new
    - take
    - StdBytesIterator::new
    - block_on
    - ok_or_else
    linkageType: ''
    returnType: Result
    signature: 'pub fn into_bytes_iterator(mut self, range: impl Into<BytesRange>)
      -> Result<StdBytesIterator>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: take
      Src: /src/opendal/core/core/src/blocking/read/reader.rs:118,1
    - Dst: block_on
      Src: /src/opendal/core/core/src/blocking/read/reader.rs:119,1
    - Dst: drop
      Src: /src/opendal/core/core/src/blocking/read/reader.rs:119,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 121
      start: 117
    functionDepth: 33
    functionLinenumber: 117
    functionLinenumberEnd: 121
    functionName: Reader::drop
    functionSourceFile: /src/opendal/core/core/src/blocking/read/reader.rs
    functionUses: 0
    functionsReached:
    - take
    - drop
    - block_on
    linkageType: ''
    returnType: void
    signature: fn drop(&mut self)
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Some
      Src: /src/opendal/core/core/src/blocking/read/std_bytes_iterator.rs:41,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - handle
    - inner
    argTypes:
    - tokio::runtime::Handle
    - FuturesBytesStream
    constantsTouched: []
    func_position:
      end: 43
      start: 38
    functionDepth: 0
    functionLinenumber: 38
    functionLinenumberEnd: 43
    functionName: StdBytesIterator::new
    functionSourceFile: /src/opendal/core/core/src/blocking/read/std_bytes_iterator.rs
    functionUses: 1
    functionsReached:
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub(crate) fn new(handle: tokio::runtime::Handle, inner: FuturesBytesStream)
      -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: as_mut
      Src: /src/opendal/core/core/src/blocking/read/std_bytes_iterator.rs:50,1
    - Dst: Some
      Src: /src/opendal/core/core/src/blocking/read/std_bytes_iterator.rs:51,1
    - Dst: Err
      Src: /src/opendal/core/core/src/blocking/read/std_bytes_iterator.rs:51,1
    - Dst: Error::new
      Src: /src/opendal/core/core/src/blocking/read/std_bytes_iterator.rs:51,1
    - Dst: Self::into
      Src: /src/opendal/core/core/src/blocking/read/std_bytes_iterator.rs:51,1
    - Dst: block_on
      Src: /src/opendal/core/core/src/blocking/read/std_bytes_iterator.rs:58,1
    - Dst: Arc::next
      Src: /src/opendal/core/core/src/blocking/read/std_bytes_iterator.rs:58,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 15
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 59
      start: 49
    functionDepth: 36
    functionLinenumber: 49
    functionLinenumberEnd: 59
    functionName: StdBytesIterator::next
    functionSourceFile: /src/opendal/core/core/src/blocking/read/std_bytes_iterator.rs
    functionUses: 0
    functionsReached:
    - as_mut
    - Arc::next
    - Err
    - Error::new
    - Some
    - Self::into
    - block_on
    linkageType: ''
    returnType: Option
    signature: fn next(&mut self) -> Option<Self::Item>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: take
      Src: /src/opendal/core/core/src/blocking/read/std_bytes_iterator.rs:65,1
    - Dst: block_on
      Src: /src/opendal/core/core/src/blocking/read/std_bytes_iterator.rs:66,1
    - Dst: drop
      Src: /src/opendal/core/core/src/blocking/read/std_bytes_iterator.rs:66,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 68
      start: 64
    functionDepth: 33
    functionLinenumber: 64
    functionLinenumberEnd: 68
    functionName: StdBytesIterator::drop
    functionSourceFile: /src/opendal/core/core/src/blocking/read/std_bytes_iterator.rs
    functionUses: 0
    functionsReached:
    - take
    - drop
    - block_on
    linkageType: ''
    returnType: void
    signature: fn drop(&mut self)
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Some
      Src: /src/opendal/core/core/src/blocking/read/buffer_iterator.rs:39,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - handle
    - inner
    argTypes:
    - tokio::runtime::Handle
    - BufferStream
    constantsTouched: []
    func_position:
      end: 41
      start: 36
    functionDepth: 0
    functionLinenumber: 36
    functionLinenumberEnd: 41
    functionName: BufferIterator::new
    functionSourceFile: /src/opendal/core/core/src/blocking/read/buffer_iterator.rs
    functionUses: 1
    functionsReached:
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub(crate) fn new(handle: tokio::runtime::Handle, inner: BufferStream)
      -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: as_mut
      Src: /src/opendal/core/core/src/blocking/read/buffer_iterator.rs:48,1
    - Dst: Some
      Src: /src/opendal/core/core/src/blocking/read/buffer_iterator.rs:49,1
    - Dst: Err
      Src: /src/opendal/core/core/src/blocking/read/buffer_iterator.rs:49,1
    - Dst: Error::new
      Src: /src/opendal/core/core/src/blocking/read/buffer_iterator.rs:49,1
    - Dst: block_on
      Src: /src/opendal/core/core/src/blocking/read/buffer_iterator.rs:55,1
    - Dst: Arc::next
      Src: /src/opendal/core/core/src/blocking/read/buffer_iterator.rs:55,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 56
      start: 47
    functionDepth: 36
    functionLinenumber: 47
    functionLinenumberEnd: 56
    functionName: BufferIterator::next
    functionSourceFile: /src/opendal/core/core/src/blocking/read/buffer_iterator.rs
    functionUses: 0
    functionsReached:
    - as_mut
    - Arc::next
    - Err
    - Error::new
    - Some
    - block_on
    linkageType: ''
    returnType: Option
    signature: fn next(&mut self) -> Option<Self::Item>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: take
      Src: /src/opendal/core/core/src/blocking/read/buffer_iterator.rs:62,1
    - Dst: block_on
      Src: /src/opendal/core/core/src/blocking/read/buffer_iterator.rs:63,1
    - Dst: drop
      Src: /src/opendal/core/core/src/blocking/read/buffer_iterator.rs:63,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 65
      start: 61
    functionDepth: 33
    functionLinenumber: 61
    functionLinenumberEnd: 65
    functionName: BufferIterator::drop
    functionSourceFile: /src/opendal/core/core/src/blocking/read/buffer_iterator.rs
    functionUses: 0
    functionsReached:
    - take
    - drop
    - block_on
    linkageType: ''
    returnType: void
    signature: fn drop(&mut self)
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Some
      Src: /src/opendal/core/core/src/blocking/read/std_reader.rs:44,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - handle
    - r
    argTypes:
    - tokio::runtime::Handle
    - FuturesAsyncReader
    constantsTouched: []
    func_position:
      end: 45
      start: 43
    functionDepth: 0
    functionLinenumber: 43
    functionLinenumberEnd: 45
    functionName: StdReader::new
    functionSourceFile: /src/opendal/core/core/src/blocking/read/std_reader.rs
    functionUses: 1
    functionsReached:
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub(super) fn new(handle: tokio::runtime::Handle, r: FuturesAsyncReader)
      -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: as_mut
      Src: /src/opendal/core/core/src/blocking/read/std_reader.rs:50,1
    - Dst: Err
      Src: /src/opendal/core/core/src/blocking/read/std_reader.rs:51,1
    - Dst: Error::new
      Src: /src/opendal/core/core/src/blocking/read/std_reader.rs:51,1
    - Dst: Self::into
      Src: /src/opendal/core/core/src/blocking/read/std_reader.rs:51,1
    - Dst: block_on
      Src: /src/opendal/core/core/src/blocking/read/std_reader.rs:54,1
    - Dst: Result::fill_buf
      Src: /src/opendal/core/core/src/blocking/read/std_reader.rs:54,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 55
      start: 49
    functionDepth: 36
    functionLinenumber: 49
    functionLinenumberEnd: 55
    functionName: StdReader::fill_buf
    functionSourceFile: /src/opendal/core/core/src/blocking/read/std_reader.rs
    functionUses: 0
    functionsReached:
    - as_mut
    - Error::new
    - Err
    - Result::fill_buf
    - Self::into
    - block_on
    linkageType: ''
    returnType: io::Result
    signature: fn fill_buf(&mut self) -> io::Result<&[u8]>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: as_mut
      Src: /src/opendal/core/core/src/blocking/read/std_reader.rs:58,1
    - Dst: Result::consume_unpin
      Src: /src/opendal/core/core/src/blocking/read/std_reader.rs:62,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - amt
    argTypes:
    - usize
    constantsTouched: []
    func_position:
      end: 63
      start: 57
    functionDepth: 0
    functionLinenumber: 57
    functionLinenumberEnd: 63
    functionName: StdReader::consume
    functionSourceFile: /src/opendal/core/core/src/blocking/read/std_reader.rs
    functionUses: 0
    functionsReached:
    - as_mut
    - Result::consume_unpin
    linkageType: ''
    returnType: void
    signature: 'fn consume(&mut self, amt: usize)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: as_mut
      Src: /src/opendal/core/core/src/blocking/read/std_reader.rs:69,1
    - Dst: Err
      Src: /src/opendal/core/core/src/blocking/read/std_reader.rs:70,1
    - Dst: Error::new
      Src: /src/opendal/core/core/src/blocking/read/std_reader.rs:70,1
    - Dst: Self::into
      Src: /src/opendal/core/core/src/blocking/read/std_reader.rs:70,1
    - Dst: block_on
      Src: /src/opendal/core/core/src/blocking/read/std_reader.rs:73,1
    - Dst: Result::read
      Src: /src/opendal/core/core/src/blocking/read/std_reader.rs:73,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 14
    argCount: 1
    argNames:
    - buf
    argTypes:
    - '&mut [u8]'
    constantsTouched: []
    func_position:
      end: 74
      start: 68
    functionDepth: 36
    functionLinenumber: 68
    functionLinenumberEnd: 74
    functionName: StdReader::read
    functionSourceFile: /src/opendal/core/core/src/blocking/read/std_reader.rs
    functionUses: 1
    functionsReached:
    - as_mut
    - Result::read
    - Error::new
    - Err
    - Self::into
    - block_on
    linkageType: ''
    returnType: io::Result
    signature: 'fn read(&mut self, buf: &mut [u8]) -> io::Result<usize>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: as_mut
      Src: /src/opendal/core/core/src/blocking/read/std_reader.rs:80,1
    - Dst: Err
      Src: /src/opendal/core/core/src/blocking/read/std_reader.rs:81,1
    - Dst: Error::new
      Src: /src/opendal/core/core/src/blocking/read/std_reader.rs:81,1
    - Dst: Self::into
      Src: /src/opendal/core/core/src/blocking/read/std_reader.rs:81,1
    - Dst: block_on
      Src: /src/opendal/core/core/src/blocking/read/std_reader.rs:84,1
    - Dst: Result::seek
      Src: /src/opendal/core/core/src/blocking/read/std_reader.rs:84,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 14
    argCount: 1
    argNames:
    - pos
    argTypes:
    - SeekFrom
    constantsTouched: []
    func_position:
      end: 85
      start: 79
    functionDepth: 36
    functionLinenumber: 79
    functionLinenumberEnd: 85
    functionName: StdReader::seek
    functionSourceFile: /src/opendal/core/core/src/blocking/read/std_reader.rs
    functionUses: 1
    functionsReached:
    - as_mut
    - Error::new
    - Err
    - Result::seek
    - Self::into
    - block_on
    linkageType: ''
    returnType: io::Result
    signature: 'fn seek(&mut self, pos: SeekFrom) -> io::Result<u64>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: take
      Src: /src/opendal/core/core/src/blocking/read/std_reader.rs:91,1
    - Dst: block_on
      Src: /src/opendal/core/core/src/blocking/read/std_reader.rs:92,1
    - Dst: drop
      Src: /src/opendal/core/core/src/blocking/read/std_reader.rs:92,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 94
      start: 90
    functionDepth: 33
    functionLinenumber: 90
    functionLinenumberEnd: 94
    functionName: StdReader::drop
    functionSourceFile: /src/opendal/core/core/src/blocking/read/std_reader.rs
    functionUses: 0
    functionsReached:
    - take
    - drop
    - block_on
    linkageType: ''
    returnType: void
    signature: fn drop(&mut self)
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::debug_struct
      Src: /src/opendal/core/core/src/layers/capability_override.rs:61,1
    - Dst: finish_non_exhaustive
      Src: /src/opendal/core/core/src/layers/capability_override.rs:61,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - f
    argTypes:
    - '&mut fmt::Formatter<''_>'
    constantsTouched: []
    func_position:
      end: 63
      start: 60
    functionDepth: 0
    functionLinenumber: 60
    functionLinenumberEnd: 63
    functionName: CapabilityOverrideLayer::fmt
    functionSourceFile: /src/opendal/core/core/src/layers/capability_override.rs
    functionUses: 0
    functionsReached:
    - Result::debug_struct
    - finish_non_exhaustive
    linkageType: ''
    returnType: fmt::Result
    signature: 'fn fmt(&self, f: &mut fmt::Formatter<''_>) -> fmt::Result'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - overrides
    argTypes:
    - String
    constantsTouched: []
    func_position:
      end: 59
      start: 57
    functionDepth: 0
    functionLinenumber: 57
    functionLinenumberEnd: 59
    functionName: CapabilityOverrideLayer::new
    functionSourceFile: /src/opendal/bindings/nodejs/src/layer.rs
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(overrides: String) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: CapabilityOverrides::parse
      Src: /src/opendal/core/core/src/layers/capability_override.rs:83,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/layers/capability_override.rs:84,1
    - Dst: Self::new
      Src: /src/opendal/core/core/src/layers/capability_override.rs:84,1
    - Dst: Result::apply
      Src: /src/opendal/core/core/src/layers/capability_override.rs:84,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - input
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 85
      start: 82
    functionDepth: 33
    functionLinenumber: 82
    functionLinenumberEnd: 85
    functionName: CapabilityOverrideLayer::from_overrides
    functionSourceFile: /src/opendal/core/core/src/layers/capability_override.rs
    functionUses: 9
    functionsReached:
    - Result::apply
    - CapabilityOverrides::parse
    - Ok
    - Self::new
    linkageType: ''
    returnType: Result
    signature: 'pub fn from_overrides(input: &str) -> Result<Self>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Arc::new
      Src: /src/opendal/core/core/src/layers/capability_override.rs:90,1
    - Dst: CapabilityOverrideLayer::layer
      Src: /src/opendal/core/core/src/layers/capability_override.rs:90,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - inner
    argTypes:
    - Servicer
    constantsTouched: []
    func_position:
      end: 91
      start: 89
    functionDepth: 4
    functionLinenumber: 89
    functionLinenumberEnd: 91
    functionName: CapabilityOverrideLayer::apply_service
    functionSourceFile: /src/opendal/core/core/src/layers/capability_override.rs
    functionUses: 0
    functionsReached:
    - Arc::new
    - CapabilityOverrideLayer::layer
    linkageType: ''
    returnType: Servicer
    signature: 'fn apply_service(&self, inner: Servicer) -> Servicer'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: layer
      Src: /src/opendal/bindings/python/src/layers/capability_override.rs:30,1
    - Dst: clone
      Src: /src/opendal/bindings/python/src/layers/capability_override.rs:30,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - op
    argTypes:
    - Operator
    constantsTouched: []
    func_position:
      end: 31
      start: 29
    functionDepth: 3
    functionLinenumber: 29
    functionLinenumberEnd: 31
    functionName: CapabilityOverrideLayer::layer
    functionSourceFile: /src/opendal/bindings/python/src/layers/capability_override.rs
    functionUses: 1
    functionsReached:
    - layer
    - clone
    linkageType: ''
    returnType: Operator
    signature: 'fn layer(&self, op: Operator) -> Operator'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::debug_struct
      Src: /src/opendal/core/core/src/layers/capability_override.rs:110,1
    - Dst: field
      Src: /src/opendal/core/core/src/layers/capability_override.rs:110,1
    - Dst: finish_non_exhaustive
      Src: /src/opendal/core/core/src/layers/capability_override.rs:110,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - f
    argTypes:
    - '&mut fmt::Formatter<''_>'
    constantsTouched: []
    func_position:
      end: 113
      start: 109
    functionDepth: 5
    functionLinenumber: 109
    functionLinenumberEnd: 113
    functionName: CapabilityOverrideService::fmt
    functionSourceFile: /src/opendal/core/core/src/layers/capability_override.rs
    functionUses: 0
    functionsReached:
    - field
    - Result::debug_struct
    - finish_non_exhaustive
    linkageType: ''
    returnType: fmt::Result
    signature: 'fn fmt(&self, f: &mut fmt::Formatter<''_>) -> fmt::Result'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: info
      Src: /src/opendal/core/core/src/layers/capability_override.rs:124,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 125
      start: 123
    functionDepth: 2
    functionLinenumber: 123
    functionLinenumberEnd: 125
    functionName: CapabilityOverrideService::info
    functionSourceFile: /src/opendal/core/core/src/layers/capability_override.rs
    functionUses: 0
    functionsReached:
    - info
    linkageType: ''
    returnType: ServiceInfo
    signature: fn info(&self) -> ServiceInfo
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: capability
      Src: /src/opendal/core/core/src/layers/capability_override.rs:128,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 129
      start: 127
    functionDepth: 2
    functionLinenumber: 127
    functionLinenumberEnd: 129
    functionName: CapabilityOverrideService::capability
    functionSourceFile: /src/opendal/core/core/src/layers/capability_override.rs
    functionUses: 0
    functionsReached:
    - capability
    linkageType: ''
    returnType: Capability
    signature: fn capability(&self) -> Capability
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: create_dir
      Src: /src/opendal/core/core/src/layers/capability_override.rs:137,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpCreateDir
    constantsTouched: []
    func_position:
      end: 138
      start: 131
    functionDepth: 35
    functionLinenumber: 131
    functionLinenumberEnd: 138
    functionName: CapabilityOverrideService::create_dir
    functionSourceFile: /src/opendal/core/core/src/layers/capability_override.rs
    functionUses: 0
    functionsReached:
    - create_dir
    linkageType: ''
    returnType: Result
    signature: 'async fn create_dir(&self,ctx: &OperationContext,path: &str,args:
      OpCreateDir,) -> Result<RpCreateDir>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: stat
      Src: /src/opendal/core/core/src/layers/capability_override.rs:141,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpStat
    constantsTouched: []
    func_position:
      end: 142
      start: 140
    functionDepth: 31
    functionLinenumber: 140
    functionLinenumberEnd: 142
    functionName: CapabilityOverrideService::stat
    functionSourceFile: /src/opendal/core/core/src/layers/capability_override.rs
    functionUses: 0
    functionsReached:
    - stat
    linkageType: ''
    returnType: Result
    signature: 'async fn stat(&self, ctx: &OperationContext, path: &str, args: OpStat)
      -> Result<RpStat>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: read
      Src: /src/opendal/core/core/src/layers/capability_override.rs:145,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpRead
    constantsTouched: []
    func_position:
      end: 146
      start: 144
    functionDepth: 31
    functionLinenumber: 144
    functionLinenumberEnd: 146
    functionName: CapabilityOverrideService::read
    functionSourceFile: /src/opendal/core/core/src/layers/capability_override.rs
    functionUses: 0
    functionsReached:
    - read
    linkageType: ''
    returnType: Result
    signature: 'fn read(&self, ctx: &OperationContext, path: &str, args: OpRead) ->
      Result<Self::Reader>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: write
      Src: /src/opendal/core/core/src/layers/capability_override.rs:149,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpWrite
    constantsTouched: []
    func_position:
      end: 150
      start: 148
    functionDepth: 36
    functionLinenumber: 148
    functionLinenumberEnd: 150
    functionName: CapabilityOverrideService::write
    functionSourceFile: /src/opendal/core/core/src/layers/capability_override.rs
    functionUses: 0
    functionsReached:
    - write
    linkageType: ''
    returnType: Result
    signature: 'fn write(&self, ctx: &OperationContext, path: &str, args: OpWrite)
      -> Result<Self::Writer>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: delete
      Src: /src/opendal/core/core/src/layers/capability_override.rs:153,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - '&OperationContext'
    constantsTouched: []
    func_position:
      end: 154
      start: 152
    functionDepth: 32
    functionLinenumber: 152
    functionLinenumberEnd: 154
    functionName: CapabilityOverrideService::delete
    functionSourceFile: /src/opendal/core/core/src/layers/capability_override.rs
    functionUses: 0
    functionsReached:
    - delete
    linkageType: ''
    returnType: Result
    signature: 'fn delete(&self, ctx: &OperationContext) -> Result<Self::Deleter>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: list
      Src: /src/opendal/core/core/src/layers/capability_override.rs:157,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpList
    constantsTouched: []
    func_position:
      end: 158
      start: 156
    functionDepth: 2
    functionLinenumber: 156
    functionLinenumberEnd: 158
    functionName: CapabilityOverrideService::list
    functionSourceFile: /src/opendal/core/core/src/layers/capability_override.rs
    functionUses: 0
    functionsReached:
    - list
    linkageType: ''
    returnType: Result
    signature: 'fn list(&self, ctx: &OperationContext, path: &str, args: OpList) ->
      Result<Self::Lister>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: copy
      Src: /src/opendal/core/core/src/layers/capability_override.rs:168,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 5
    argNames:
    - ctx
    - from
    - to
    - args
    - opts
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    - OpCopy
    - OpCopier
    constantsTouched: []
    func_position:
      end: 169
      start: 160
    functionDepth: 34
    functionLinenumber: 160
    functionLinenumberEnd: 169
    functionName: CapabilityOverrideService::copy
    functionSourceFile: /src/opendal/core/core/src/layers/capability_override.rs
    functionUses: 0
    functionsReached:
    - copy
    linkageType: ''
    returnType: Result
    signature: 'fn copy(&self,ctx: &OperationContext,from: &str,to: &str,args: OpCopy,opts:
      OpCopier,) -> Result<Self::Copier>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: rename
      Src: /src/opendal/core/core/src/layers/capability_override.rs:178,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 4
    argNames:
    - ctx
    - from
    - to
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    - OpRename
    constantsTouched: []
    func_position:
      end: 179
      start: 171
    functionDepth: 2
    functionLinenumber: 171
    functionLinenumberEnd: 179
    functionName: CapabilityOverrideService::rename
    functionSourceFile: /src/opendal/core/core/src/layers/capability_override.rs
    functionUses: 0
    functionsReached:
    - rename
    linkageType: ''
    returnType: Result
    signature: 'async fn rename(&self,ctx: &OperationContext,from: &str,to: &str,args:
      OpRename,) -> Result<RpRename>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: presign
      Src: /src/opendal/core/core/src/layers/capability_override.rs:187,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpPresign
    constantsTouched: []
    func_position:
      end: 188
      start: 181
    functionDepth: 2
    functionLinenumber: 181
    functionLinenumberEnd: 188
    functionName: CapabilityOverrideService::presign
    functionSourceFile: /src/opendal/core/core/src/layers/capability_override.rs
    functionUses: 0
    functionsReached:
    - presign
    linkageType: ''
    returnType: Result
    signature: 'async fn presign(&self,ctx: &OperationContext,path: &str,args: OpPresign,)
      -> Result<RpPresign>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self::default
      Src: /src/opendal/core/core/src/layers/capability_override.rs:198,1
    - Dst: DeleteInput::split
      Src: /src/opendal/core/core/src/layers/capability_override.rs:200,1
    - Dst: map
      Src: /src/opendal/core/core/src/layers/capability_override.rs:200,1
    - Dst: filter
      Src: /src/opendal/core/core/src/layers/capability_override.rs:200,1
    - Dst: Result::is_empty
      Src: /src/opendal/core/core/src/layers/capability_override.rs:200,1
    - Dst: parse_capability_override
      Src: /src/opendal/core/core/src/layers/capability_override.rs:201,1
    - Dst: insert
      Src: /src/opendal/core/core/src/layers/capability_override.rs:202,1
    - Dst: Result::to_string
      Src: /src/opendal/core/core/src/layers/capability_override.rs:202,1
    - Dst: Result::try_apply
      Src: /src/opendal/core/core/src/layers/capability_override.rs:203,1
    - Dst: Capability::default
      Src: /src/opendal/core/core/src/layers/capability_override.rs:203,1
    - Dst: Result::map_err
      Src: /src/opendal/core/core/src/layers/capability_override.rs:203,1
    - Dst: invalid_capability_override
      Src: /src/opendal/core/core/src/layers/capability_override.rs:204,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/layers/capability_override.rs:208,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 32
    argCount: 1
    argNames:
    - input
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 209
      start: 197
    functionDepth: 32
    functionLinenumber: 197
    functionLinenumberEnd: 209
    functionName: CapabilityOverrides::parse
    functionSourceFile: /src/opendal/core/core/src/layers/capability_override.rs
    functionUses: 1
    functionsReached:
    - DeleteInput::split
    - Result::map_err
    - filter
    - insert
    - invalid_capability_override
    - Result::to_string
    - Ok
    - Self::default
    - Result::try_apply
    - map
    - Capability::default
    - Result::is_empty
    - parse_capability_override
    linkageType: ''
    returnType: Result
    signature: 'fn parse(input: &str) -> Result<Self>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: CapabilityOverrides::try_apply
      Src: /src/opendal/core/core/src/layers/capability_override.rs:212,1
    - Dst: Result::expect
      Src: /src/opendal/core/core/src/layers/capability_override.rs:212,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - cap
    argTypes:
    - Capability
    constantsTouched: []
    func_position:
      end: 214
      start: 211
    functionDepth: 37
    functionLinenumber: 211
    functionLinenumberEnd: 214
    functionName: CapabilityOverrides::apply
    functionSourceFile: /src/opendal/core/core/src/layers/capability_override.rs
    functionUses: 0
    functionsReached:
    - CapabilityOverrides::try_apply
    - Result::expect
    linkageType: ''
    returnType: Capability
    signature: 'fn apply(&self, cap: Capability) -> Capability'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: serde_json::to_value
      Src: /src/opendal/core/core/src/layers/capability_override.rs:217,1
    - Dst: map_err
      Src: /src/opendal/core/core/src/layers/capability_override.rs:217,1
    - Dst: Error::new
      Src: /src/opendal/core/core/src/layers/capability_override.rs:218,1
    - Dst: Vec::as_object_mut
      Src: /src/opendal/core/core/src/layers/capability_override.rs:223,1
    - Dst: ok_or_else
      Src: /src/opendal/core/core/src/layers/capability_override.rs:223,1
    - Dst: Error::new
      Src: /src/opendal/core/core/src/layers/capability_override.rs:224,1
    - Dst: Buffer::extend
      Src: /src/opendal/core/core/src/layers/capability_override.rs:229,1
    - Dst: clone
      Src: /src/opendal/core/core/src/layers/capability_override.rs:229,1
    - Dst: serde_json::from_value
      Src: /src/opendal/core/core/src/layers/capability_override.rs:231,1
    - Dst: map_err
      Src: /src/opendal/core/core/src/layers/capability_override.rs:231,1
    - Dst: Error::new
      Src: /src/opendal/core/core/src/layers/capability_override.rs:232,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 24
    argCount: 1
    argNames:
    - cap
    argTypes:
    - Capability
    constantsTouched: []
    func_position:
      end: 237
      start: 216
    functionDepth: 36
    functionLinenumber: 216
    functionLinenumberEnd: 237
    functionName: CapabilityOverrides::try_apply
    functionSourceFile: /src/opendal/core/core/src/layers/capability_override.rs
    functionUses: 1
    functionsReached:
    - map_err
    - serde_json::to_value
    - Vec::as_object_mut
    - Buffer::extend
    - clone
    - Error::new
    - serde_json::from_value
    - ok_or_else
    linkageType: ''
    returnType: Result
    signature: 'fn try_apply(&self, cap: Capability) -> Result<Capability>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self::split_once
      Src: /src/opendal/core/core/src/layers/capability_override.rs:241,1
    - Dst: Err
      Src: /src/opendal/core/core/src/layers/capability_override.rs:242,1
    - Dst: invalid_capability_override
      Src: /src/opendal/core/core/src/layers/capability_override.rs:242,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/layers/capability_override.rs:248,1
    - Dst: Result::trim
      Src: /src/opendal/core/core/src/layers/capability_override.rs:249,1
    - Dst: parse_capability_value
      Src: /src/opendal/core/core/src/layers/capability_override.rs:250,1
    - Dst: Vec::trim
      Src: /src/opendal/core/core/src/layers/capability_override.rs:250,1
    - Dst: Result::map_err
      Src: /src/opendal/core/core/src/layers/capability_override.rs:250,1
    - Dst: invalid_capability_override
      Src: /src/opendal/core/core/src/layers/capability_override.rs:251,1
    - Dst: Error::to_string
      Src: /src/opendal/core/core/src/layers/capability_override.rs:251,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 21
    argCount: 1
    argNames:
    - token
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 253
      start: 240
    functionDepth: 31
    functionLinenumber: 240
    functionLinenumberEnd: 253
    functionName: parse_capability_override
    functionSourceFile: /src/opendal/core/core/src/layers/capability_override.rs
    functionUses: 1
    functionsReached:
    - Result::map_err
    - Self::split_once
    - invalid_capability_override
    - Ok
    - Error::to_string
    - Err
    - Vec::trim
    - parse_capability_value
    - Result::trim
    linkageType: ''
    returnType: Result
    signature: 'fn parse_capability_override(token: &str) -> Result<(&str, Value)>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Error::new
      Src: /src/opendal/core/core/src/layers/capability_override.rs:256,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - token
    - reason
    argTypes:
    - '&str'
    - '&str'
    constantsTouched: []
    func_position:
      end: 260
      start: 255
    functionDepth: 36
    functionLinenumber: 255
    functionLinenumberEnd: 260
    functionName: invalid_capability_override
    functionSourceFile: /src/opendal/core/core/src/layers/capability_override.rs
    functionUses: 2
    functionsReached:
    - Error::new
    linkageType: ''
    returnType: Error
    signature: 'fn invalid_capability_override(token: &str, reason: &str) -> Error'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/core/core/src/layers/capability_override.rs:264,1
    - Dst: Value::Bool
      Src: /src/opendal/core/core/src/layers/capability_override.rs:264,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/layers/capability_override.rs:265,1
    - Dst: Value::Bool
      Src: /src/opendal/core/core/src/layers/capability_override.rs:265,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/layers/capability_override.rs:266,1
    - Dst: parse::<usize>
      Src: /src/opendal/core/core/src/layers/capability_override.rs:267,1
    - Dst: map
      Src: /src/opendal/core/core/src/layers/capability_override.rs:267,1
    - Dst: Value::Number
      Src: /src/opendal/core/core/src/layers/capability_override.rs:269,1
    - Dst: Number::from
      Src: /src/opendal/core/core/src/layers/capability_override.rs:269,1
    - Dst: map_err
      Src: /src/opendal/core/core/src/layers/capability_override.rs:267,1
    - Dst: Error::new
      Src: /src/opendal/core/core/src/layers/capability_override.rs:271,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 18
    argCount: 1
    argNames:
    - value
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 277
      start: 262
    functionDepth: 32
    functionLinenumber: 262
    functionLinenumberEnd: 277
    functionName: parse_capability_value
    functionSourceFile: /src/opendal/core/core/src/layers/capability_override.rs
    functionUses: 1
    functionsReached:
    - map_err
    - Number::from
    - Value::Number
    - Ok
    - Value::Bool
    - Error::new
    - map
    - parse::<usize>
    linkageType: ''
    returnType: Result
    signature: 'fn parse_capability_value(value: &str) -> Result<Value>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Operator::new
      Src: /src/opendal/core/core/src/layers/capability_override.rs:287,1
    - Dst: services::Memory::default
      Src: /src/opendal/core/core/src/layers/capability_override.rs:287,1
    - Dst: layer
      Src: /src/opendal/core/core/src/layers/capability_override.rs:287,1
    - Dst: CapabilityOverrideLayer::new
      Src: /src/opendal/core/core/src/layers/capability_override.rs:287,1
    - Dst: Some
      Src: /src/opendal/core/core/src/layers/capability_override.rs:290,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/layers/capability_override.rs:298,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 18
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 299
      start: 286
    functionDepth: 7
    functionLinenumber: 286
    functionLinenumberEnd: 299
    functionName: tests::capability_override_updates_capability
    functionSourceFile: /src/opendal/core/core/src/layers/capability_override.rs
    functionUses: 0
    functionsReached:
    - Operator::new
    - Ok
    - CapabilityOverrideLayer::new
    - Some
    - services::Memory::default
    - layer
    linkageType: ''
    returnType: Result
    signature: fn capability_override_updates_capability() -> Result<()>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: CapabilityOverrideLayer::from_overrides
      Src: /src/opendal/core/core/src/layers/capability_override.rs:303,1
    - Dst: Operator::new
      Src: /src/opendal/core/core/src/layers/capability_override.rs:306,1
    - Dst: services::Memory::default
      Src: /src/opendal/core/core/src/layers/capability_override.rs:306,1
    - Dst: layer
      Src: /src/opendal/core/core/src/layers/capability_override.rs:306,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/layers/capability_override.rs:312,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 313
      start: 302
    functionDepth: 34
    functionLinenumber: 302
    functionLinenumberEnd: 313
    functionName: tests::parse_capability_overrides
    functionSourceFile: /src/opendal/core/core/src/layers/capability_override.rs
    functionUses: 0
    functionsReached:
    - Operator::new
    - Ok
    - CapabilityOverrideLayer::from_overrides
    - services::Memory::default
    - layer
    linkageType: ''
    returnType: Result
    signature: fn parse_capability_overrides() -> Result<()>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: CapabilityOverrideLayer::from_overrides
      Src: /src/opendal/core/core/src/layers/capability_override.rs:318,1
    - Dst: Operator::new
      Src: /src/opendal/core/core/src/layers/capability_override.rs:319,1
    - Dst: services::Memory::default
      Src: /src/opendal/core/core/src/layers/capability_override.rs:319,1
    - Dst: layer
      Src: /src/opendal/core/core/src/layers/capability_override.rs:319,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/layers/capability_override.rs:325,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 326
      start: 316
    functionDepth: 34
    functionLinenumber: 316
    functionLinenumberEnd: 326
    functionName: tests::parse_bool_assignments_and_unset_sizes
    functionSourceFile: /src/opendal/core/core/src/layers/capability_override.rs
    functionUses: 0
    functionsReached:
    - Operator::new
    - Ok
    - CapabilityOverrideLayer::from_overrides
    - services::Memory::default
    - layer
    linkageType: ''
    returnType: Result
    signature: fn parse_bool_assignments_and_unset_sizes() -> Result<()>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: CapabilityOverrideLayer::from_overrides
      Src: /src/opendal/core/core/src/layers/capability_override.rs:330,1
    - Dst: Result::unwrap_err
      Src: /src/opendal/core/core/src/layers/capability_override.rs:330,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 332
      start: 329
    functionDepth: 34
    functionLinenumber: 329
    functionLinenumberEnd: 332
    functionName: tests::reject_unknown_capability
    functionSourceFile: /src/opendal/core/core/src/layers/capability_override.rs
    functionUses: 0
    functionsReached:
    - CapabilityOverrideLayer::from_overrides
    - Result::unwrap_err
    linkageType: ''
    returnType: void
    signature: fn reject_unknown_capability()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: CapabilityOverrideLayer::from_overrides
      Src: /src/opendal/core/core/src/layers/capability_override.rs:336,1
    - Dst: Result::unwrap_err
      Src: /src/opendal/core/core/src/layers/capability_override.rs:336,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 338
      start: 335
    functionDepth: 34
    functionLinenumber: 335
    functionLinenumberEnd: 338
    functionName: tests::reject_capability_shorthand
    functionSourceFile: /src/opendal/core/core/src/layers/capability_override.rs
    functionUses: 0
    functionsReached:
    - CapabilityOverrideLayer::from_overrides
    - Result::unwrap_err
    linkageType: ''
    returnType: void
    signature: fn reject_capability_shorthand()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: CapabilityOverrideLayer::from_overrides
      Src: /src/opendal/core/core/src/layers/capability_override.rs:342,1
    - Dst: Result::unwrap_err
      Src: /src/opendal/core/core/src/layers/capability_override.rs:342,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 344
      start: 341
    functionDepth: 34
    functionLinenumber: 341
    functionLinenumberEnd: 344
    functionName: tests::reject_invalid_capability_type
    functionSourceFile: /src/opendal/core/core/src/layers/capability_override.rs
    functionUses: 0
    functionsReached:
    - CapabilityOverrideLayer::from_overrides
    - Result::unwrap_err
    linkageType: ''
    returnType: void
    signature: fn reject_invalid_capability_type()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::debug_struct
      Src: /src/opendal/core/core/src/layers/complete.rs:31,1
    - Dst: finish
      Src: /src/opendal/core/core/src/layers/complete.rs:31,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - f
    argTypes:
    - '&mut Formatter<''_>'
    constantsTouched: []
    func_position:
      end: 32
      start: 30
    functionDepth: 3
    functionLinenumber: 30
    functionLinenumberEnd: 32
    functionName: CompleteLayer::fmt
    functionSourceFile: /src/opendal/core/core/src/layers/complete.rs
    functionUses: 0
    functionsReached:
    - finish
    - Result::debug_struct
    linkageType: ''
    returnType: std::fmt::Result
    signature: 'fn fmt(&self, f: &mut Formatter<''_>) -> std::fmt::Result'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Arc::new
      Src: /src/opendal/core/core/src/layers/complete.rs:37,1
    - Dst: CompleteLayer::layer
      Src: /src/opendal/core/core/src/layers/complete.rs:37,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - inner
    argTypes:
    - Servicer
    constantsTouched: []
    func_position:
      end: 38
      start: 36
    functionDepth: 2
    functionLinenumber: 36
    functionLinenumberEnd: 38
    functionName: CompleteLayer::apply_service
    functionSourceFile: /src/opendal/core/core/src/layers/complete.rs
    functionUses: 0
    functionsReached:
    - Arc::new
    - CompleteLayer::layer
    linkageType: ''
    returnType: Servicer
    signature: 'fn apply_service(&self, inner: Servicer) -> Servicer'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - inner
    argTypes:
    - Servicer
    constantsTouched: []
    func_position:
      end: 44
      start: 42
    functionDepth: 0
    functionLinenumber: 42
    functionLinenumberEnd: 44
    functionName: CompleteLayer::layer
    functionSourceFile: /src/opendal/core/core/src/layers/complete.rs
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: CompleteService
    signature: 'fn layer(&self, inner: Servicer) -> CompleteService'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: fmt
      Src: /src/opendal/core/core/src/layers/complete.rs:54,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - f
    argTypes:
    - '&mut Formatter<''_>'
    constantsTouched: []
    func_position:
      end: 55
      start: 53
    functionDepth: 2
    functionLinenumber: 53
    functionLinenumberEnd: 55
    functionName: CompleteService::fmt
    functionSourceFile: /src/opendal/core/core/src/layers/complete.rs
    functionUses: 0
    functionsReached:
    - fmt
    linkageType: ''
    returnType: std::fmt::Result
    signature: 'fn fmt(&self, f: &mut Formatter<''_>) -> std::fmt::Result'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: info
      Src: /src/opendal/core/core/src/layers/complete.rs:66,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 67
      start: 65
    functionDepth: 2
    functionLinenumber: 65
    functionLinenumberEnd: 67
    functionName: CompleteService::info
    functionSourceFile: /src/opendal/core/core/src/layers/complete.rs
    functionUses: 0
    functionsReached:
    - info
    linkageType: ''
    returnType: ServiceInfo
    signature: fn info(&self) -> ServiceInfo
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: capability
      Src: /src/opendal/core/core/src/layers/complete.rs:70,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 71
      start: 69
    functionDepth: 2
    functionLinenumber: 69
    functionLinenumberEnd: 71
    functionName: CompleteService::capability
    functionSourceFile: /src/opendal/core/core/src/layers/complete.rs
    functionUses: 0
    functionsReached:
    - capability
    linkageType: ''
    returnType: Capability
    signature: fn capability(&self) -> Capability
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: create_dir
      Src: /src/opendal/core/core/src/layers/complete.rs:79,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpCreateDir
    constantsTouched: []
    func_position:
      end: 80
      start: 73
    functionDepth: 35
    functionLinenumber: 73
    functionLinenumberEnd: 80
    functionName: CompleteService::create_dir
    functionSourceFile: /src/opendal/core/core/src/layers/complete.rs
    functionUses: 0
    functionsReached:
    - create_dir
    linkageType: ''
    returnType: Result
    signature: 'async fn create_dir(&self,ctx: &OperationContext,path: &str,args:
      OpCreateDir,) -> Result<RpCreateDir>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: read
      Src: /src/opendal/core/core/src/layers/complete.rs:83,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/layers/complete.rs:84,1
    - Dst: CompleteReader::new
      Src: /src/opendal/core/core/src/layers/complete.rs:84,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpRead
    constantsTouched: []
    func_position:
      end: 85
      start: 82
    functionDepth: 31
    functionLinenumber: 82
    functionLinenumberEnd: 85
    functionName: CompleteService::read
    functionSourceFile: /src/opendal/core/core/src/layers/complete.rs
    functionUses: 0
    functionsReached:
    - CompleteReader::new
    - read
    - Ok
    linkageType: ''
    returnType: Result
    signature: 'fn read(&self, ctx: &OperationContext, path: &str, args: OpRead) ->
      Result<Self::Reader>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: OpStat::append
      Src: /src/opendal/core/core/src/layers/complete.rs:88,1
    - Dst: write
      Src: /src/opendal/core/core/src/layers/complete.rs:89,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/layers/complete.rs:90,1
    - Dst: CompleteWriter::new
      Src: /src/opendal/core/core/src/layers/complete.rs:90,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpWrite
    constantsTouched: []
    func_position:
      end: 91
      start: 87
    functionDepth: 31
    functionLinenumber: 87
    functionLinenumberEnd: 91
    functionName: CompleteService::write
    functionSourceFile: /src/opendal/core/core/src/layers/complete.rs
    functionUses: 0
    functionsReached:
    - CompleteWriter::new
    - OpStat::append
    - write
    - Ok
    linkageType: ''
    returnType: Result
    signature: 'fn write(&self, ctx: &OperationContext, path: &str, args: OpWrite)
      -> Result<Self::Writer>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: copy
      Src: /src/opendal/core/core/src/layers/complete.rs:101,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 5
    argNames:
    - ctx
    - from
    - to
    - args
    - opts
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    - OpCopy
    - OpCopier
    constantsTouched: []
    func_position:
      end: 102
      start: 93
    functionDepth: 34
    functionLinenumber: 93
    functionLinenumberEnd: 102
    functionName: CompleteService::copy
    functionSourceFile: /src/opendal/core/core/src/layers/complete.rs
    functionUses: 0
    functionsReached:
    - copy
    linkageType: ''
    returnType: Result
    signature: 'fn copy(&self,ctx: &OperationContext,from: &str,to: &str,args: OpCopy,opts:
      OpCopier,) -> Result<Self::Copier>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: rename
      Src: /src/opendal/core/core/src/layers/complete.rs:111,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 4
    argNames:
    - ctx
    - from
    - to
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    - OpRename
    constantsTouched: []
    func_position:
      end: 112
      start: 104
    functionDepth: 2
    functionLinenumber: 104
    functionLinenumberEnd: 112
    functionName: CompleteService::rename
    functionSourceFile: /src/opendal/core/core/src/layers/complete.rs
    functionUses: 0
    functionsReached:
    - rename
    linkageType: ''
    returnType: Result
    signature: 'async fn rename(&self,ctx: &OperationContext,from: &str,to: &str,args:
      OpRename,) -> Result<RpRename>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: stat
      Src: /src/opendal/core/core/src/layers/complete.rs:115,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpStat
    constantsTouched: []
    func_position:
      end: 116
      start: 114
    functionDepth: 31
    functionLinenumber: 114
    functionLinenumberEnd: 116
    functionName: CompleteService::stat
    functionSourceFile: /src/opendal/core/core/src/layers/complete.rs
    functionUses: 0
    functionsReached:
    - stat
    linkageType: ''
    returnType: Result
    signature: 'async fn stat(&self, ctx: &OperationContext, path: &str, args: OpStat)
      -> Result<RpStat>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: delete
      Src: /src/opendal/core/core/src/layers/complete.rs:119,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - '&OperationContext'
    constantsTouched: []
    func_position:
      end: 120
      start: 118
    functionDepth: 32
    functionLinenumber: 118
    functionLinenumberEnd: 120
    functionName: CompleteService::delete
    functionSourceFile: /src/opendal/core/core/src/layers/complete.rs
    functionUses: 0
    functionsReached:
    - delete
    linkageType: ''
    returnType: Result
    signature: 'fn delete(&self, ctx: &OperationContext) -> Result<Self::Deleter>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: list
      Src: /src/opendal/core/core/src/layers/complete.rs:123,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/layers/complete.rs:124,1
    - Dst: CompleteLister::new
      Src: /src/opendal/core/core/src/layers/complete.rs:124,1
    - Dst: Result::clone
      Src: /src/opendal/core/core/src/layers/complete.rs:124,1
    - Dst: clone
      Src: /src/opendal/core/core/src/layers/complete.rs:124,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpList
    constantsTouched: []
    func_position:
      end: 125
      start: 122
    functionDepth: 2
    functionLinenumber: 122
    functionLinenumberEnd: 125
    functionName: CompleteService::list
    functionSourceFile: /src/opendal/core/core/src/layers/complete.rs
    functionUses: 0
    functionsReached:
    - Result::clone
    - Ok
    - clone
    - list
    - CompleteLister::new
    linkageType: ''
    returnType: Result
    signature: 'fn list(&self, ctx: &OperationContext, path: &str, args: OpList) ->
      Result<Self::Lister>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: presign
      Src: /src/opendal/core/core/src/layers/complete.rs:133,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpPresign
    constantsTouched: []
    func_position:
      end: 134
      start: 127
    functionDepth: 2
    functionLinenumber: 127
    functionLinenumberEnd: 134
    functionName: CompleteService::presign
    functionSourceFile: /src/opendal/core/core/src/layers/complete.rs
    functionUses: 0
    functionsReached:
    - presign
    linkageType: ''
    returnType: Result
    signature: 'async fn presign(&self,ctx: &OperationContext,path: &str,args: OpPresign,)
      -> Result<RpPresign>'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 3
    argNames:
    - ctx
    - srv
    - inner
    argTypes:
    - OperationContext
    - Servicer
    - oio::Lister
    constantsTouched: []
    func_position:
      end: 146
      start: 144
    functionDepth: 0
    functionLinenumber: 144
    functionLinenumberEnd: 146
    functionName: CompleteLister::new
    functionSourceFile: /src/opendal/core/core/src/layers/complete.rs
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: 'fn new(ctx: OperationContext, srv: Servicer, inner: oio::Lister) ->
      Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: crate::Entry::path
      Src: /src/opendal/core/core/src/layers/complete.rs:149,1
    - Dst: String::to_string
      Src: /src/opendal/core/core/src/layers/complete.rs:149,1
    - Dst: crate::Entry::metadata
      Src: /src/opendal/core/core/src/layers/complete.rs:150,1
    - Dst: Metadata::version
      Src: /src/opendal/core/core/src/layers/complete.rs:150,1
    - Dst: Option::map
      Src: /src/opendal/core/core/src/layers/complete.rs:150,1
    - Dst: OpStat::new
      Src: /src/opendal/core/core/src/layers/complete.rs:151,1
    - Dst: Result::as_deref
      Src: /src/opendal/core/core/src/layers/complete.rs:152,1
    - Dst: with_version
      Src: /src/opendal/core/core/src/layers/complete.rs:153,1
    - Dst: stat
      Src: /src/opendal/core/core/src/layers/complete.rs:156,1
    - Dst: into_metadata
      Src: /src/opendal/core/core/src/layers/complete.rs:156,1
    - Dst: Result::has_content_length
      Src: /src/opendal/core/core/src/layers/complete.rs:157,1
    - Dst: Err
      Src: /src/opendal/core/core/src/layers/complete.rs:158,1
    - Dst: Error::new
      Src: /src/opendal/core/core/src/layers/complete.rs:158,1
    - Dst: Self::with_operation
      Src: /src/opendal/core/core/src/layers/complete.rs:158,1
    - Dst: Self::with_context
      Src: /src/opendal/core/core/src/layers/complete.rs:158,1
    - Dst: info
      Src: /src/opendal/core/core/src/layers/complete.rs:163,1
    - Dst: scheme
      Src: /src/opendal/core/core/src/layers/complete.rs:163,1
    - Dst: to_string
      Src: /src/opendal/core/core/src/layers/complete.rs:163,1
    - Dst: Self::with_context
      Src: /src/opendal/core/core/src/layers/complete.rs:158,1
    - Dst: crate::Entry::metadata_mut
      Src: /src/opendal/core/core/src/layers/complete.rs:167,1
    - Dst: '&mut Metadata::set_content_length'
      Src: /src/opendal/core/core/src/layers/complete.rs:167,1
    - Dst: Result::content_length
      Src: /src/opendal/core/core/src/layers/complete.rs:169,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/layers/complete.rs:170,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 60
    argCount: 1
    argNames:
    - entry
    argTypes:
    - '&mut oio::Entry'
    constantsTouched: []
    func_position:
      end: 171
      start: 148
    functionDepth: 35
    functionLinenumber: 148
    functionLinenumberEnd: 171
    functionName: CompleteLister::ensure_file_content_length
    functionSourceFile: /src/opendal/core/core/src/layers/complete.rs
    functionUses: 1
    functionsReached:
    - crate::Entry::path
    - into_metadata
    - Result::has_content_length
    - crate::Entry::metadata
    - Self::with_context
    - Result::content_length
    - info
    - Ok
    - scheme
    - crate::Entry::metadata_mut
    - stat
    - Result::as_deref
    - String::to_string
    - to_string
    - '&mut Metadata::set_content_length'
    - Option::map
    - with_version
    - OpStat::new
    - Err
    - Error::new
    - Self::with_operation
    - Metadata::version
    linkageType: ''
    returnType: Result
    signature: 'async fn ensure_file_content_length(&self, entry: &mut oio::Entry)
      -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: next
      Src: /src/opendal/core/core/src/layers/complete.rs:177,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/layers/complete.rs:178,1
    - Dst: crate::Entry::mode
      Src: /src/opendal/core/core/src/layers/complete.rs:181,1
    - Dst: EntryMode::is_file
      Src: /src/opendal/core/core/src/layers/complete.rs:181,1
    - Dst: crate::Entry::metadata
      Src: /src/opendal/core/core/src/layers/complete.rs:182,1
    - Dst: Metadata::is_deleted
      Src: /src/opendal/core/core/src/layers/complete.rs:182,1
    - Dst: crate::Entry::metadata
      Src: /src/opendal/core/core/src/layers/complete.rs:183,1
    - Dst: Metadata::has_content_length
      Src: /src/opendal/core/core/src/layers/complete.rs:183,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/layers/complete.rs:185,1
    - Dst: Some
      Src: /src/opendal/core/core/src/layers/complete.rs:185,1
    - Dst: CompleteLister::ensure_file_content_length
      Src: /src/opendal/core/core/src/layers/complete.rs:188,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/layers/complete.rs:189,1
    - Dst: Some
      Src: /src/opendal/core/core/src/layers/complete.rs:189,1
    - Dst: Error::kind
      Src: /src/opendal/core/core/src/layers/complete.rs:190,1
    - Dst: Err
      Src: /src/opendal/core/core/src/layers/complete.rs:191,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 46
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 194
      start: 175
    functionDepth: 31
    functionLinenumber: 175
    functionLinenumberEnd: 194
    functionName: CompleteLister::next
    functionSourceFile: /src/opendal/core/core/src/layers/complete.rs
    functionUses: 0
    functionsReached:
    - next
    - CompleteLister::ensure_file_content_length
    - Metadata::has_content_length
    - Ok
    - crate::Entry::mode
    - Metadata::is_deleted
    - Some
    - crate::Entry::metadata
    - EntryMode::is_file
    - Err
    - Error::kind
    linkageType: ''
    returnType: Result
    signature: async fn next(&mut self) -> Result<Option<oio::Entry>>
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - inner
    argTypes:
    - R
    constantsTouched: []
    func_position:
      end: 204
      start: 202
    functionDepth: 0
    functionLinenumber: 202
    functionLinenumberEnd: 204
    functionName: CompleteReader::new
    functionSourceFile: /src/opendal/core/core/src/layers/complete.rs
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(inner: R) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: (Vec::is_suffix
      Src: /src/opendal/core/core/src/layers/complete.rs:209,1
    - Dst: (Vec::size
      Src: /src/opendal/core/core/src/layers/complete.rs:212,1
    - Dst: open
      Src: /src/opendal/core/core/src/layers/complete.rs:214,1
    - Dst: map
      Src: /src/opendal/core/core/src/layers/complete.rs:214,1
    - Dst: Box::new
      Src: /src/opendal/core/core/src/layers/complete.rs:217,1
    - Dst: CompleteReadStream::new
      Src: /src/opendal/core/core/src/layers/complete.rs:217,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 16
    argCount: 1
    argNames:
    - range
    argTypes:
    - BytesRange
    constantsTouched: []
    func_position:
      end: 220
      start: 208
    functionDepth: 3
    functionLinenumber: 208
    functionLinenumberEnd: 220
    functionName: CompleteReader::open
    functionSourceFile: /src/opendal/core/core/src/layers/complete.rs
    functionUses: 0
    functionsReached:
    - (Vec::size
    - Box::new
    - map
    - CompleteReadStream::new
    - open
    - (Vec::is_suffix
    linkageType: ''
    returnType: Result
    signature: 'async fn open(&self, range: BytesRange) -> Result<(RpRead, Box<dyn
      oio::ReadStreamDyn>)>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: (Vec::is_suffix
      Src: /src/opendal/core/core/src/layers/complete.rs:223,1
    - Dst: (Vec::size
      Src: /src/opendal/core/core/src/layers/complete.rs:226,1
    - Dst: read
      Src: /src/opendal/core/core/src/layers/complete.rs:228,1
    - Dst: check_complete
      Src: /src/opendal/core/core/src/layers/complete.rs:229,1
    - Dst: len
      Src: /src/opendal/core/core/src/layers/complete.rs:229,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/layers/complete.rs:230,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 1
    argNames:
    - range
    argTypes:
    - BytesRange
    constantsTouched: []
    func_position:
      end: 231
      start: 222
    functionDepth: 31
    functionLinenumber: 222
    functionLinenumberEnd: 231
    functionName: CompleteReader::read
    functionSourceFile: /src/opendal/core/core/src/layers/complete.rs
    functionUses: 0
    functionsReached:
    - read
    - check_complete
    - Ok
    - (Vec::size
    - len
    - (Vec::is_suffix
    linkageType: ''
    returnType: Result
    signature: 'async fn read(&self, range: BytesRange) -> Result<(RpRead, Buffer)>'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - inner
    - size
    argTypes:
    - R
    - Option<u64>
    constantsTouched: []
    func_position:
      end: 247
      start: 241
    functionDepth: 0
    functionLinenumber: 241
    functionLinenumberEnd: 247
    functionName: CompleteReadStream::new
    functionSourceFile: /src/opendal/core/core/src/layers/complete.rs
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(inner: R, size: Option<u64>) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: check_complete
      Src: /src/opendal/core/core/src/layers/complete.rs:250,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 251
      start: 249
    functionDepth: 37
    functionLinenumber: 249
    functionLinenumberEnd: 251
    functionName: CompleteReadStream::check
    functionSourceFile: /src/opendal/core/core/src/layers/complete.rs
    functionUses: 1
    functionsReached:
    - check_complete
    linkageType: ''
    returnType: Result
    signature: pub fn check(&self) -> Result<()>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: read
      Src: /src/opendal/core/core/src/layers/complete.rs:256,1
    - Dst: io::Result::is_empty
      Src: /src/opendal/core/core/src/layers/complete.rs:258,1
    - Dst: CompleteReadStream::check
      Src: /src/opendal/core/core/src/layers/complete.rs:259,1
    - Dst: io::Result::len
      Src: /src/opendal/core/core/src/layers/complete.rs:261,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/layers/complete.rs:264,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 19
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 265
      start: 255
    functionDepth: 31
    functionLinenumber: 255
    functionLinenumberEnd: 265
    functionName: CompleteReadStream::read
    functionSourceFile: /src/opendal/core/core/src/layers/complete.rs
    functionUses: 0
    functionsReached:
    - read
    - CompleteReadStream::check
    - Ok
    - io::Result::is_empty
    - io::Result::len
    linkageType: ''
    returnType: Result
    signature: async fn read(&mut self) -> Result<Buffer>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/core/core/src/layers/complete.rs:270,1
    - Dst: u64::cmp
      Src: /src/opendal/core/core/src/layers/complete.rs:273,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/layers/complete.rs:274,1
    - Dst: Err
      Src: /src/opendal/core/core/src/layers/complete.rs:275,1
    - Dst: Error::new
      Src: /src/opendal/core/core/src/layers/complete.rs:276,1
    - Dst: Self::with_context
      Src: /src/opendal/core/core/src/layers/complete.rs:276,1
    - Dst: Self::with_context
      Src: /src/opendal/core/core/src/layers/complete.rs:276,1
    - Dst: Err
      Src: /src/opendal/core/core/src/layers/complete.rs:280,1
    - Dst: Error::new
      Src: /src/opendal/core/core/src/layers/complete.rs:281,1
    - Dst: Self::with_context
      Src: /src/opendal/core/core/src/layers/complete.rs:281,1
    - Dst: Self::with_context
      Src: /src/opendal/core/core/src/layers/complete.rs:281,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 23
    argCount: 2
    argNames:
    - size
    - actual
    argTypes:
    - Option<u64>
    - u64
    constantsTouched: []
    func_position:
      end: 286
      start: 268
    functionDepth: 36
    functionLinenumber: 268
    functionLinenumberEnd: 286
    functionName: check_complete
    functionSourceFile: /src/opendal/core/core/src/layers/complete.rs
    functionUses: 2
    functionsReached:
    - Ok
    - Error::new
    - Err
    - Self::with_context
    - u64::cmp
    linkageType: ''
    returnType: Result
    signature: 'fn check_complete(size: Option<u64>, actual: u64) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - destination
    argTypes:
    - CompleteState
    constantsTouched: []
    func_position:
      end: 306
      start: 302
    functionDepth: 0
    functionLinenumber: 302
    functionLinenumberEnd: 306
    functionName: CompleteState::transition
    functionSourceFile: /src/opendal/core/core/src/layers/complete.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: 'fn transition(&mut self, destination: CompleteState)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Some
      Src: /src/opendal/core/core/src/layers/complete.rs:319,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - inner
    - append
    argTypes:
    - W
    - bool
    constantsTouched: []
    func_position:
      end: 324
      start: 317
    functionDepth: 0
    functionLinenumber: 317
    functionLinenumberEnd: 324
    functionName: CompleteWriter::new
    functionSourceFile: /src/opendal/core/core/src/layers/complete.rs
    functionUses: 1
    functionsReached:
    - Some
    linkageType: ''
    returnType: CompleteWriter
    signature: 'pub fn new(inner: W, append: bool) -> CompleteWriter<W>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/core/core/src/layers/complete.rs:328,1
    - Dst: cmp
      Src: /src/opendal/core/core/src/layers/complete.rs:331,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/layers/complete.rs:332,1
    - Dst: Err
      Src: /src/opendal/core/core/src/layers/complete.rs:333,1
    - Dst: Error::new
      Src: /src/opendal/core/core/src/layers/complete.rs:334,1
    - Dst: Self::with_context
      Src: /src/opendal/core/core/src/layers/complete.rs:334,1
    - Dst: Self::with_context
      Src: /src/opendal/core/core/src/layers/complete.rs:334,1
    - Dst: Err
      Src: /src/opendal/core/core/src/layers/complete.rs:338,1
    - Dst: Error::new
      Src: /src/opendal/core/core/src/layers/complete.rs:339,1
    - Dst: Self::with_context
      Src: /src/opendal/core/core/src/layers/complete.rs:339,1
    - Dst: Self::with_context
      Src: /src/opendal/core/core/src/layers/complete.rs:339,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 31
    argCount: 1
    argNames:
    - content_length
    argTypes:
    - u64
    constantsTouched: []
    func_position:
      end: 344
      start: 326
    functionDepth: 36
    functionLinenumber: 326
    functionLinenumberEnd: 344
    functionName: CompleteWriter::check
    functionSourceFile: /src/opendal/core/core/src/layers/complete.rs
    functionUses: 1
    functionsReached:
    - cmp
    - Ok
    - Error::new
    - Err
    - Self::with_context
    linkageType: ''
    returnType: Result
    signature: 'fn check(&self, content_length: u64) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 357
      start: 351
    functionDepth: 0
    functionLinenumber: 351
    functionLinenumberEnd: 357
    functionName: CompleteWriter::drop
    functionSourceFile: /src/opendal/core/core/src/layers/complete.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: fn drop(&mut self)
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: as_mut
      Src: /src/opendal/core/core/src/layers/complete.rs:365,1
    - Dst: ok_or_else
      Src: /src/opendal/core/core/src/layers/complete.rs:365,1
    - Dst: Error::new
      Src: /src/opendal/core/core/src/layers/complete.rs:371,1
    - Dst: Result::len
      Src: /src/opendal/core/core/src/layers/complete.rs:374,1
    - Dst: Self::write
      Src: /src/opendal/core/core/src/layers/complete.rs:375,1
    - Dst: inspect_err
      Src: /src/opendal/core/core/src/layers/complete.rs:375,1
    - Dst: transition
      Src: /src/opendal/core/core/src/layers/complete.rs:377,1
    - Dst: transition
      Src: /src/opendal/core/core/src/layers/complete.rs:379,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/layers/complete.rs:381,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 31
    argCount: 1
    argNames:
    - bs
    argTypes:
    - Buffer
    constantsTouched: []
    func_position:
      end: 382
      start: 364
    functionDepth: 36
    functionLinenumber: 364
    functionLinenumberEnd: 382
    functionName: CompleteWriter::write
    functionSourceFile: /src/opendal/core/core/src/layers/complete.rs
    functionUses: 0
    functionsReached:
    - as_mut
    - Ok
    - Self::write
    - Error::new
    - inspect_err
    - transition
    - Result::len
    - ok_or_else
    linkageType: ''
    returnType: Result
    signature: 'async fn write(&mut self, bs: Buffer) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: as_mut
      Src: /src/opendal/core/core/src/layers/complete.rs:385,1
    - Dst: ok_or_else
      Src: /src/opendal/core/core/src/layers/complete.rs:385,1
    - Dst: Error::new
      Src: /src/opendal/core/core/src/layers/complete.rs:391,1
    - Dst: Self::close
      Src: /src/opendal/core/core/src/layers/complete.rs:396,1
    - Dst: inspect_err
      Src: /src/opendal/core/core/src/layers/complete.rs:396,1
    - Dst: transition
      Src: /src/opendal/core/core/src/layers/complete.rs:399,1
    - Dst: CompleteWriter::check
      Src: /src/opendal/core/core/src/layers/complete.rs:400,1
    - Dst: Self::content_length
      Src: /src/opendal/core/core/src/layers/complete.rs:400,1
    - Dst: Result::inspect_err
      Src: /src/opendal/core/core/src/layers/complete.rs:400,1
    - Dst: transition
      Src: /src/opendal/core/core/src/layers/complete.rs:401,1
    - Dst: Self::content_length
      Src: /src/opendal/core/core/src/layers/complete.rs:402,1
    - Dst: Self::with_content_length
      Src: /src/opendal/core/core/src/layers/complete.rs:403,1
    - Dst: transition
      Src: /src/opendal/core/core/src/layers/complete.rs:406,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/layers/complete.rs:408,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 49
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 409
      start: 384
    functionDepth: 36
    functionLinenumber: 384
    functionLinenumberEnd: 409
    functionName: CompleteWriter::close
    functionSourceFile: /src/opendal/core/core/src/layers/complete.rs
    functionUses: 0
    functionsReached:
    - as_mut
    - CompleteWriter::check
    - Ok
    - Result::inspect_err
    - Self::content_length
    - Self::with_content_length
    - Error::new
    - inspect_err
    - transition
    - Self::close
    - ok_or_else
    linkageType: ''
    returnType: Result
    signature: async fn close(&mut self) -> Result<Metadata>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: as_mut
      Src: /src/opendal/core/core/src/layers/complete.rs:412,1
    - Dst: ok_or_else
      Src: /src/opendal/core/core/src/layers/complete.rs:412,1
    - Dst: Error::new
      Src: /src/opendal/core/core/src/layers/complete.rs:413,1
    - Dst: Self::abort
      Src: /src/opendal/core/core/src/layers/complete.rs:416,1
    - Dst: inspect_err
      Src: /src/opendal/core/core/src/layers/complete.rs:416,1
    - Dst: transition
      Src: /src/opendal/core/core/src/layers/complete.rs:418,1
    - Dst: transition
      Src: /src/opendal/core/core/src/layers/complete.rs:420,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/layers/complete.rs:422,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 28
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 423
      start: 411
    functionDepth: 36
    functionLinenumber: 411
    functionLinenumberEnd: 423
    functionName: CompleteWriter::abort
    functionSourceFile: /src/opendal/core/core/src/layers/complete.rs
    functionUses: 0
    functionsReached:
    - as_mut
    - Ok
    - Self::abort
    - Error::new
    - inspect_err
    - transition
    - ok_or_else
    linkageType: ''
    returnType: Result
    signature: async fn abort(&mut self) -> Result<()>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: CompleteReader::new
      Src: /src/opendal/core/core/src/layers/complete.rs:450,1
    - Dst: into
      Src: /src/opendal/core/core/src/layers/complete.rs:451,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - buffer
    argTypes:
    - impl Into<Buffer>
    constantsTouched: []
    func_position:
      end: 453
      start: 449
    functionDepth: 29
    functionLinenumber: 449
    functionLinenumberEnd: 453
    functionName: tests::new_test_reader
    functionSourceFile: /src/opendal/core/core/src/layers/complete.rs
    functionUses: 0
    functionsReached:
    - CompleteReader::new
    - into
    linkageType: ''
    returnType: CompleteReader
    signature: 'fn new_test_reader(buffer: impl Into<Buffer>) -> CompleteReader<MockReadReader>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: new_test_reader
      Src: /src/opendal/core/core/src/layers/complete.rs:457,1
    - Dst: oio::Read::read
      Src: /src/opendal/core/core/src/layers/complete.rs:459,1
    - Dst: BytesRange::from
      Src: /src/opendal/core/core/src/layers/complete.rs:459,1
    - Dst: expect_err
      Src: /src/opendal/core/core/src/layers/complete.rs:459,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 464
      start: 456
    functionDepth: 30
    functionLinenumber: 456
    functionLinenumberEnd: 464
    functionName: tests::test_read_rejects_short_buffer
    functionSourceFile: /src/opendal/core/core/src/layers/complete.rs
    functionUses: 0
    functionsReached:
    - new_test_reader
    - BytesRange::from
    - expect_err
    - oio::Read::read
    linkageType: ''
    returnType: void
    signature: async fn test_read_rejects_short_buffer()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: new_test_reader
      Src: /src/opendal/core/core/src/layers/complete.rs:468,1
    - Dst: oio::Read::read
      Src: /src/opendal/core/core/src/layers/complete.rs:470,1
    - Dst: BytesRange::from
      Src: /src/opendal/core/core/src/layers/complete.rs:470,1
    - Dst: expect_err
      Src: /src/opendal/core/core/src/layers/complete.rs:470,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 475
      start: 467
    functionDepth: 30
    functionLinenumber: 467
    functionLinenumberEnd: 475
    functionName: tests::test_read_rejects_extra_buffer
    functionSourceFile: /src/opendal/core/core/src/layers/complete.rs
    functionUses: 0
    functionsReached:
    - new_test_reader
    - BytesRange::from
    - expect_err
    - oio::Read::read
    linkageType: ''
    returnType: void
    signature: async fn test_read_rejects_extra_buffer()
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 47
      start: 39
    functionDepth: 0
    functionLinenumber: 39
    functionLinenumberEnd: 47
    functionName: SimulateLayer::default
    functionSourceFile: /src/opendal/core/core/src/layers/simulate.rs
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: fn default() -> Self
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - enabled
    argTypes:
    - bool
    constantsTouched: []
    func_position:
      end: 55
      start: 52
    functionDepth: 0
    functionLinenumber: 52
    functionLinenumberEnd: 55
    functionName: SimulateLayer::with_read_with_suffix
    functionSourceFile: /src/opendal/core/core/src/layers/simulate.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: 'pub fn with_read_with_suffix(mut self, enabled: bool) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - enabled
    argTypes:
    - bool
    constantsTouched: []
    func_position:
      end: 61
      start: 58
    functionDepth: 0
    functionLinenumber: 58
    functionLinenumberEnd: 61
    functionName: SimulateLayer::with_list_recursive
    functionSourceFile: /src/opendal/core/core/src/layers/simulate.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: 'pub fn with_list_recursive(mut self, enabled: bool) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - enabled
    argTypes:
    - bool
    constantsTouched: []
    func_position:
      end: 67
      start: 64
    functionDepth: 0
    functionLinenumber: 64
    functionLinenumberEnd: 67
    functionName: SimulateLayer::with_stat_dir
    functionSourceFile: /src/opendal/core/core/src/layers/simulate.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: 'pub fn with_stat_dir(mut self, enabled: bool) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - enabled
    argTypes:
    - bool
    constantsTouched: []
    func_position:
      end: 73
      start: 70
    functionDepth: 0
    functionLinenumber: 70
    functionLinenumberEnd: 73
    functionName: SimulateLayer::with_create_dir
    functionSourceFile: /src/opendal/core/core/src/layers/simulate.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: 'pub fn with_create_dir(mut self, enabled: bool) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - enabled
    argTypes:
    - bool
    constantsTouched: []
    func_position:
      end: 79
      start: 76
    functionDepth: 0
    functionLinenumber: 76
    functionLinenumberEnd: 79
    functionName: SimulateLayer::with_delete_recursive
    functionSourceFile: /src/opendal/core/core/src/layers/simulate.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: 'pub fn with_delete_recursive(mut self, enabled: bool) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Arc::new
      Src: /src/opendal/core/core/src/layers/simulate.rs:84,1
    - Dst: SimulateLayer::layer
      Src: /src/opendal/core/core/src/layers/simulate.rs:84,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - srv
    argTypes:
    - Servicer
    constantsTouched: []
    func_position:
      end: 85
      start: 83
    functionDepth: 3
    functionLinenumber: 83
    functionLinenumberEnd: 85
    functionName: SimulateLayer::apply_service
    functionSourceFile: /src/opendal/core/core/src/layers/simulate.rs
    functionUses: 0
    functionsReached:
    - Arc::new
    - SimulateLayer::layer
    linkageType: ''
    returnType: Servicer
    signature: 'fn apply_service(&self, srv: Servicer) -> Servicer'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: SimulateLayer::clone
      Src: /src/opendal/core/core/src/layers/simulate.rs:92,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - srv
    argTypes:
    - Servicer
    constantsTouched: []
    func_position:
      end: 94
      start: 89
    functionDepth: 2
    functionLinenumber: 89
    functionLinenumberEnd: 94
    functionName: SimulateLayer::layer
    functionSourceFile: /src/opendal/core/core/src/layers/simulate.rs
    functionUses: 1
    functionsReached:
    - SimulateLayer::clone
    linkageType: ''
    returnType: SimulateService
    signature: 'fn layer(&self, srv: Servicer) -> SimulateService'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: fmt
      Src: /src/opendal/core/core/src/layers/simulate.rs:105,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - f
    argTypes:
    - '&mut Formatter<''_>'
    constantsTouched: []
    func_position:
      end: 106
      start: 104
    functionDepth: 2
    functionLinenumber: 104
    functionLinenumberEnd: 106
    functionName: SimulateService::fmt
    functionSourceFile: /src/opendal/core/core/src/layers/simulate.rs
    functionUses: 0
    functionsReached:
    - fmt
    linkageType: ''
    returnType: std::fmt::Result
    signature: 'fn fmt(&self, f: &mut Formatter<''_>) -> std::fmt::Result'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 31
    argCount: 1
    argNames:
    - cap
    argTypes:
    - Capability
    constantsTouched: []
    func_position:
      end: 121
      start: 110
    functionDepth: 0
    functionLinenumber: 110
    functionLinenumberEnd: 121
    functionName: SimulateService::simulate_capability
    functionSourceFile: /src/opendal/core/core/src/layers/simulate.rs
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: Capability
    signature: 'fn simulate_capability(&self, mut cap: Capability) -> Capability'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: capability
      Src: /src/opendal/core/core/src/layers/simulate.rs:129,1
    - Dst: create_dir
      Src: /src/opendal/core/core/src/layers/simulate.rs:132,1
    - Dst: write
      Src: /src/opendal/core/core/src/layers/simulate.rs:136,1
    - Dst: OpWrite::default
      Src: /src/opendal/core/core/src/layers/simulate.rs:136,1
    - Dst: oio::Write::close
      Src: /src/opendal/core/core/src/layers/simulate.rs:137,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/layers/simulate.rs:138,1
    - Dst: RpCreateDir::default
      Src: /src/opendal/core/core/src/layers/simulate.rs:138,1
    - Dst: create_dir
      Src: /src/opendal/core/core/src/layers/simulate.rs:141,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 39
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpCreateDir
    constantsTouched: []
    func_position:
      end: 142
      start: 123
    functionDepth: 35
    functionLinenumber: 123
    functionLinenumberEnd: 142
    functionName: SimulateService::simulate_create_dir
    functionSourceFile: /src/opendal/core/core/src/layers/simulate.rs
    functionUses: 1
    functionsReached:
    - oio::Write::close
    - Ok
    - RpCreateDir::default
    - OpWrite::default
    - create_dir
    - capability
    - write
    linkageType: ''
    returnType: Result
    signature: 'async fn simulate_create_dir(&self,ctx: &OperationContext,path: &str,args:
      OpCreateDir,) -> Result<RpCreateDir>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: capability
      Src: /src/opendal/core/core/src/layers/simulate.rs:150,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/layers/simulate.rs:153,1
    - Dst: RpStat::new
      Src: /src/opendal/core/core/src/layers/simulate.rs:153,1
    - Dst: Metadata::new
      Src: /src/opendal/core/core/src/layers/simulate.rs:153,1
    - Dst: ends_with
      Src: /src/opendal/core/core/src/layers/simulate.rs:156,1
    - Dst: stat
      Src: /src/opendal/core/core/src/layers/simulate.rs:158,1
    - Dst: OpStat::clone
      Src: /src/opendal/core/core/src/layers/simulate.rs:160,1
    - Dst: into_metadata
      Src: /src/opendal/core/core/src/layers/simulate.rs:158,1
    - Dst: Result::is_file
      Src: /src/opendal/core/core/src/layers/simulate.rs:164,1
    - Dst: Err
      Src: /src/opendal/core/core/src/layers/simulate.rs:165,1
    - Dst: Error::new
      Src: /src/opendal/core/core/src/layers/simulate.rs:165,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/layers/simulate.rs:171,1
    - Dst: RpStat::new
      Src: /src/opendal/core/core/src/layers/simulate.rs:171,1
    - Dst: list
      Src: /src/opendal/core/core/src/layers/simulate.rs:175,1
    - Dst: OpList::default
      Src: /src/opendal/core/core/src/layers/simulate.rs:178,1
    - Dst: Self::with_recursive
      Src: /src/opendal/core/core/src/layers/simulate.rs:178,1
    - Dst: Result::with_limit
      Src: /src/opendal/core/core/src/layers/simulate.rs:178,1
    - Dst: Trial::next
      Src: /src/opendal/core/core/src/layers/simulate.rs:181,1
    - Dst: is_some
      Src: /src/opendal/core/core/src/layers/simulate.rs:181,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/layers/simulate.rs:182,1
    - Dst: RpStat::new
      Src: /src/opendal/core/core/src/layers/simulate.rs:182,1
    - Dst: Metadata::new
      Src: /src/opendal/core/core/src/layers/simulate.rs:182,1
    - Dst: Err
      Src: /src/opendal/core/core/src/layers/simulate.rs:184,1
    - Dst: Error::new
      Src: /src/opendal/core/core/src/layers/simulate.rs:184,1
    - Dst: stat
      Src: /src/opendal/core/core/src/layers/simulate.rs:192,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 72
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpStat
    constantsTouched: []
    func_position:
      end: 193
      start: 144
    functionDepth: 31
    functionLinenumber: 144
    functionLinenumberEnd: 193
    functionName: SimulateService::simulate_stat
    functionSourceFile: /src/opendal/core/core/src/layers/simulate.rs
    functionUses: 1
    functionsReached:
    - OpStat::clone
    - into_metadata
    - Metadata::new
    - Ok
    - Trial::next
    - ends_with
    - RpStat::new
    - OpList::default
    - Result::is_file
    - Err
    - Error::new
    - list
    - is_some
    - capability
    - Result::with_limit
    - Self::with_recursive
    - stat
    linkageType: ''
    returnType: Result
    signature: 'async fn simulate_stat(&self,ctx: &OperationContext,path: &str,args:
      OpStat,) -> Result<RpStat>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: capability
      Src: /src/opendal/core/core/src/layers/simulate.rs:201,1
    - Dst: OpStat::recursive
      Src: /src/opendal/core/core/src/layers/simulate.rs:203,1
    - Dst: list
      Src: /src/opendal/core/core/src/layers/simulate.rs:213,1
    - Dst: SimulateLister::One
      Src: /src/opendal/core/core/src/layers/simulate.rs:214,1
    - Dst: ends_with
      Src: /src/opendal/core/core/src/layers/simulate.rs:218,1
    - Dst: ServicerFlatLister::new
      Src: /src/opendal/core/core/src/layers/simulate.rs:219,1
    - Dst: Result::clone
      Src: /src/opendal/core/core/src/layers/simulate.rs:219,1
    - Dst: clone
      Src: /src/opendal/core/core/src/layers/simulate.rs:219,1
    - Dst: SimulateLister::Two
      Src: /src/opendal/core/core/src/layers/simulate.rs:220,1
    - Dst: get_parent
      Src: /src/opendal/core/core/src/layers/simulate.rs:222,1
    - Dst: ServicerFlatLister::new
      Src: /src/opendal/core/core/src/layers/simulate.rs:223,1
    - Dst: Result::clone
      Src: /src/opendal/core/core/src/layers/simulate.rs:223,1
    - Dst: clone
      Src: /src/opendal/core/core/src/layers/simulate.rs:223,1
    - Dst: PrefixLister::new
      Src: /src/opendal/core/core/src/layers/simulate.rs:224,1
    - Dst: SimulateLister::Four
      Src: /src/opendal/core/core/src/layers/simulate.rs:225,1
    - Dst: list
      Src: /src/opendal/core/core/src/layers/simulate.rs:230,1
    - Dst: SimulateLister::One
      Src: /src/opendal/core/core/src/layers/simulate.rs:231,1
    - Dst: ends_with
      Src: /src/opendal/core/core/src/layers/simulate.rs:235,1
    - Dst: list
      Src: /src/opendal/core/core/src/layers/simulate.rs:236,1
    - Dst: SimulateLister::One
      Src: /src/opendal/core/core/src/layers/simulate.rs:237,1
    - Dst: get_parent
      Src: /src/opendal/core/core/src/layers/simulate.rs:239,1
    - Dst: list
      Src: /src/opendal/core/core/src/layers/simulate.rs:240,1
    - Dst: PrefixLister::new
      Src: /src/opendal/core/core/src/layers/simulate.rs:241,1
    - Dst: SimulateLister::Three
      Src: /src/opendal/core/core/src/layers/simulate.rs:242,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/layers/simulate.rs:247,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 57
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpList
    constantsTouched: []
    func_position:
      end: 248
      start: 195
    functionDepth: 36
    functionLinenumber: 195
    functionLinenumberEnd: 248
    functionName: SimulateService::simulate_list
    functionSourceFile: /src/opendal/core/core/src/layers/simulate.rs
    functionUses: 2
    functionsReached:
    - Result::clone
    - ServicerFlatLister::new
    - get_parent
    - SimulateLister::Four
    - PrefixLister::new
    - SimulateLister::Three
    - Ok
    - ends_with
    - SimulateLister::One
    - clone
    - list
    - capability
    - SimulateLister::Two
    - OpStat::recursive
    linkageType: ''
    returnType: Result
    signature: 'fn simulate_list(&self,ctx: &OperationContext,path: &str,args: OpList,)
      -> Result<SimulateLister>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: SimulateService::capability
      Src: /src/opendal/core/core/src/layers/simulate.rs:257,1
    - Dst: Err
      Src: /src/opendal/core/core/src/layers/simulate.rs:258,1
    - Dst: Error::new
      Src: /src/opendal/core/core/src/layers/simulate.rs:258,1
    - Dst: OpStat::clone
      Src: /src/opendal/core/core/src/layers/simulate.rs:264,1
    - Dst: Self::with_recursive
      Src: /src/opendal/core/core/src/layers/simulate.rs:264,1
    - Dst: SimulateService::simulate_list
      Src: /src/opendal/core/core/src/layers/simulate.rs:266,1
    - Dst: OpList::new
      Src: /src/opendal/core/core/src/layers/simulate.rs:266,1
    - Dst: Self::with_recursive
      Src: /src/opendal/core/core/src/layers/simulate.rs:266,1
    - Dst: Result::next
      Src: /src/opendal/core/core/src/layers/simulate.rs:268,1
    - Dst: crate::Entry::into_entry
      Src: /src/opendal/core/core/src/layers/simulate.rs:269,1
    - Dst: Result::clone
      Src: /src/opendal/core/core/src/layers/simulate.rs:270,1
    - Dst: crate::Entry::metadata
      Src: /src/opendal/core/core/src/layers/simulate.rs:271,1
    - Dst: Metadata::version
      Src: /src/opendal/core/core/src/layers/simulate.rs:271,1
    - Dst: Self::with_version
      Src: /src/opendal/core/core/src/layers/simulate.rs:272,1
    - Dst: Result::delete
      Src: /src/opendal/core/core/src/layers/simulate.rs:274,1
    - Dst: crate::Entry::path
      Src: /src/opendal/core/core/src/layers/simulate.rs:274,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/layers/simulate.rs:277,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 49
    argCount: 4
    argNames:
    - ctx
    - path
    - args
    - deleter
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpDelete
    - '&mut oio::Deleter'
    constantsTouched: []
    func_position:
      end: 278
      start: 250
    functionDepth: 36
    functionLinenumber: 250
    functionLinenumberEnd: 278
    functionName: SimulateService::simulate_delete_with_recursive
    functionSourceFile: /src/opendal/core/core/src/layers/simulate.rs
    functionUses: 0
    functionsReached:
    - OpStat::clone
    - crate::Entry::into_entry
    - Result::clone
    - Self::with_version
    - crate::Entry::path
    - Ok
    - SimulateService::capability
    - OpList::new
    - Error::new
    - Err
    - crate::Entry::metadata
    - Result::next
    - Self::with_recursive
    - SimulateService::simulate_list
    - Result::delete
    - Metadata::version
    linkageType: ''
    returnType: Result
    signature: 'async fn simulate_delete_with_recursive(&self,ctx: &OperationContext,path:
      &str,args: OpDelete,deleter: &mut oio::Deleter,) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: info
      Src: /src/opendal/core/core/src/layers/simulate.rs:289,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 290
      start: 288
    functionDepth: 2
    functionLinenumber: 288
    functionLinenumberEnd: 290
    functionName: SimulateService::info
    functionSourceFile: /src/opendal/core/core/src/layers/simulate.rs
    functionUses: 0
    functionsReached:
    - info
    linkageType: ''
    returnType: ServiceInfo
    signature: fn info(&self) -> ServiceInfo
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: SimulateService::simulate_capability
      Src: /src/opendal/core/core/src/layers/simulate.rs:293,1
    - Dst: capability
      Src: /src/opendal/core/core/src/layers/simulate.rs:293,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 294
      start: 292
    functionDepth: 2
    functionLinenumber: 292
    functionLinenumberEnd: 294
    functionName: SimulateService::capability
    functionSourceFile: /src/opendal/core/core/src/layers/simulate.rs
    functionUses: 1
    functionsReached:
    - SimulateService::simulate_capability
    - capability
    linkageType: ''
    returnType: Capability
    signature: fn capability(&self) -> Capability
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: SimulateService::simulate_create_dir
      Src: /src/opendal/core/core/src/layers/simulate.rs:302,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpCreateDir
    constantsTouched: []
    func_position:
      end: 303
      start: 296
    functionDepth: 36
    functionLinenumber: 296
    functionLinenumberEnd: 303
    functionName: SimulateService::create_dir
    functionSourceFile: /src/opendal/core/core/src/layers/simulate.rs
    functionUses: 0
    functionsReached:
    - SimulateService::simulate_create_dir
    linkageType: ''
    returnType: Result
    signature: 'async fn create_dir(&self,ctx: &OperationContext,path: &str,args:
      OpCreateDir,) -> Result<RpCreateDir>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: capability
      Src: /src/opendal/core/core/src/layers/simulate.rs:306,1
    - Dst: read
      Src: /src/opendal/core/core/src/layers/simulate.rs:309,1
    - Dst: OpStat::clone
      Src: /src/opendal/core/core/src/layers/simulate.rs:309,1
    - Dst: SimulateReader::new
      Src: /src/opendal/core/core/src/layers/simulate.rs:310,1
    - Dst: Result::clone
      Src: /src/opendal/core/core/src/layers/simulate.rs:311,1
    - Dst: clone
      Src: /src/opendal/core/core/src/layers/simulate.rs:312,1
    - Dst: to_string
      Src: /src/opendal/core/core/src/layers/simulate.rs:313,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/layers/simulate.rs:318,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 25
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpRead
    constantsTouched: []
    func_position:
      end: 319
      start: 305
    functionDepth: 31
    functionLinenumber: 305
    functionLinenumberEnd: 319
    functionName: SimulateService::read
    functionSourceFile: /src/opendal/core/core/src/layers/simulate.rs
    functionUses: 0
    functionsReached:
    - OpStat::clone
    - read
    - Result::clone
    - to_string
    - Ok
    - clone
    - SimulateReader::new
    - capability
    linkageType: ''
    returnType: Result
    signature: 'fn read(&self, ctx: &OperationContext, path: &str, args: OpRead) ->
      Result<Self::Reader>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: write
      Src: /src/opendal/core/core/src/layers/simulate.rs:322,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpWrite
    constantsTouched: []
    func_position:
      end: 323
      start: 321
    functionDepth: 36
    functionLinenumber: 321
    functionLinenumberEnd: 323
    functionName: SimulateService::write
    functionSourceFile: /src/opendal/core/core/src/layers/simulate.rs
    functionUses: 0
    functionsReached:
    - write
    linkageType: ''
    returnType: Result
    signature: 'fn write(&self, ctx: &OperationContext, path: &str, args: OpWrite)
      -> Result<Self::Writer>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: copy
      Src: /src/opendal/core/core/src/layers/simulate.rs:333,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 5
    argNames:
    - ctx
    - from
    - to
    - args
    - opts
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    - OpCopy
    - OpCopier
    constantsTouched: []
    func_position:
      end: 334
      start: 325
    functionDepth: 34
    functionLinenumber: 325
    functionLinenumberEnd: 334
    functionName: SimulateService::copy
    functionSourceFile: /src/opendal/core/core/src/layers/simulate.rs
    functionUses: 0
    functionsReached:
    - copy
    linkageType: ''
    returnType: Result
    signature: 'fn copy(&self,ctx: &OperationContext,from: &str,to: &str,args: OpCopy,opts:
      OpCopier,) -> Result<Self::Copier>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: rename
      Src: /src/opendal/core/core/src/layers/simulate.rs:343,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 4
    argNames:
    - ctx
    - from
    - to
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    - OpRename
    constantsTouched: []
    func_position:
      end: 344
      start: 336
    functionDepth: 2
    functionLinenumber: 336
    functionLinenumberEnd: 344
    functionName: SimulateService::rename
    functionSourceFile: /src/opendal/core/core/src/layers/simulate.rs
    functionUses: 0
    functionsReached:
    - rename
    linkageType: ''
    returnType: Result
    signature: 'async fn rename(&self,ctx: &OperationContext,from: &str,to: &str,args:
      OpRename,) -> Result<RpRename>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: SimulateService::simulate_stat
      Src: /src/opendal/core/core/src/layers/simulate.rs:347,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpStat
    constantsTouched: []
    func_position:
      end: 348
      start: 346
    functionDepth: 32
    functionLinenumber: 346
    functionLinenumberEnd: 348
    functionName: SimulateService::stat
    functionSourceFile: /src/opendal/core/core/src/layers/simulate.rs
    functionUses: 0
    functionsReached:
    - SimulateService::simulate_stat
    linkageType: ''
    returnType: Result
    signature: 'async fn stat(&self, ctx: &OperationContext, path: &str, args: OpStat)
      -> Result<RpStat>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: delete
      Src: /src/opendal/core/core/src/layers/simulate.rs:351,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/layers/simulate.rs:352,1
    - Dst: SimulateDeleter::new
      Src: /src/opendal/core/core/src/layers/simulate.rs:352,1
    - Dst: Result::clone
      Src: /src/opendal/core/core/src/layers/simulate.rs:353,1
    - Dst: clone
      Src: /src/opendal/core/core/src/layers/simulate.rs:354,1
    - Dst: clone
      Src: /src/opendal/core/core/src/layers/simulate.rs:355,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 14
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - '&OperationContext'
    constantsTouched: []
    func_position:
      end: 358
      start: 350
    functionDepth: 32
    functionLinenumber: 350
    functionLinenumberEnd: 358
    functionName: SimulateService::delete
    functionSourceFile: /src/opendal/core/core/src/layers/simulate.rs
    functionUses: 0
    functionsReached:
    - Result::clone
    - Ok
    - delete
    - clone
    - SimulateDeleter::new
    linkageType: ''
    returnType: Result
    signature: 'fn delete(&self, ctx: &OperationContext) -> Result<Self::Deleter>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: SimulateService::simulate_list
      Src: /src/opendal/core/core/src/layers/simulate.rs:361,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpList
    constantsTouched: []
    func_position:
      end: 362
      start: 360
    functionDepth: 37
    functionLinenumber: 360
    functionLinenumberEnd: 362
    functionName: SimulateService::list
    functionSourceFile: /src/opendal/core/core/src/layers/simulate.rs
    functionUses: 0
    functionsReached:
    - SimulateService::simulate_list
    linkageType: ''
    returnType: Result
    signature: 'fn list(&self, ctx: &OperationContext, path: &str, args: OpList) ->
      Result<Self::Lister>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: presign
      Src: /src/opendal/core/core/src/layers/simulate.rs:370,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpPresign
    constantsTouched: []
    func_position:
      end: 371
      start: 364
    functionDepth: 2
    functionLinenumber: 364
    functionLinenumberEnd: 371
    functionName: SimulateService::presign
    functionSourceFile: /src/opendal/core/core/src/layers/simulate.rs
    functionUses: 0
    functionsReached:
    - presign
    linkageType: ''
    returnType: Result
    signature: 'async fn presign(&self,ctx: &OperationContext,path: &str,args: OpPresign,)
      -> Result<RpPresign>'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 6
    argNames:
    - ctx
    - srv
    - path
    - args
    - inner
    - simulate_read_with_suffix
    argTypes:
    - OperationContext
    - Servicer
    - String
    - OpRead
    - oio::Reader
    - bool
    constantsTouched: []
    func_position:
      end: 407
      start: 391
    functionDepth: 0
    functionLinenumber: 391
    functionLinenumberEnd: 407
    functionName: SimulateReader::new
    functionSourceFile: /src/opendal/core/core/src/layers/simulate.rs
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: 'fn new(ctx: OperationContext,srv: Servicer,path: String,args: OpRead,inner:
      oio::Reader,simulate_read_with_suffix: bool,) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: content_length_hint
      Src: /src/opendal/core/core/src/layers/simulate.rs:410,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/layers/simulate.rs:411,1
    - Dst: OpStat::new
      Src: /src/opendal/core/core/src/layers/simulate.rs:414,1
    - Dst: version
      Src: /src/opendal/core/core/src/layers/simulate.rs:415,1
    - Dst: with_version
      Src: /src/opendal/core/core/src/layers/simulate.rs:416,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/layers/simulate.rs:419,1
    - Dst: stat
      Src: /src/opendal/core/core/src/layers/simulate.rs:419,1
    - Dst: into_metadata
      Src: /src/opendal/core/core/src/layers/simulate.rs:419,1
    - Dst: content_length
      Src: /src/opendal/core/core/src/layers/simulate.rs:419,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 32
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 425
      start: 409
    functionDepth: 32
    functionLinenumber: 409
    functionLinenumberEnd: 425
    functionName: SimulateReader::content_length
    functionSourceFile: /src/opendal/core/core/src/layers/simulate.rs
    functionUses: 1
    functionsReached:
    - into_metadata
    - Ok
    - content_length_hint
    - with_version
    - content_length
    - OpStat::new
    - version
    - stat
    linkageType: ''
    returnType: Result
    signature: async fn content_length(&self) -> Result<u64>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: (Vec::is_suffix
      Src: /src/opendal/core/core/src/layers/simulate.rs:428,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/layers/simulate.rs:429,1
    - Dst: SimulateReader::content_length
      Src: /src/opendal/core/core/src/layers/simulate.rs:436,1
    - Dst: Result::saturating_sub
      Src: /src/opendal/core/core/src/layers/simulate.rs:437,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/layers/simulate.rs:438,1
    - Dst: BytesRange::new
      Src: /src/opendal/core/core/src/layers/simulate.rs:438,1
    - Dst: Some
      Src: /src/opendal/core/core/src/layers/simulate.rs:438,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 21
    argCount: 1
    argNames:
    - range
    argTypes:
    - BytesRange
    constantsTouched: []
    func_position:
      end: 439
      start: 427
    functionDepth: 33
    functionLinenumber: 427
    functionLinenumberEnd: 439
    functionName: SimulateReader::resolve_range
    functionSourceFile: /src/opendal/core/core/src/layers/simulate.rs
    functionUses: 2
    functionsReached:
    - Result::saturating_sub
    - SimulateReader::content_length
    - Ok
    - Some
    - (Vec::is_suffix
    - BytesRange::new
    linkageType: ''
    returnType: Result
    signature: 'async fn resolve_range(&self, range: BytesRange) -> Result<BytesRange>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: SimulateReader::resolve_range
      Src: /src/opendal/core/core/src/layers/simulate.rs:444,1
    - Dst: open
      Src: /src/opendal/core/core/src/layers/simulate.rs:445,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 1
    argNames:
    - range
    argTypes:
    - BytesRange
    constantsTouched: []
    func_position:
      end: 446
      start: 443
    functionDepth: 34
    functionLinenumber: 443
    functionLinenumberEnd: 446
    functionName: SimulateReader::open
    functionSourceFile: /src/opendal/core/core/src/layers/simulate.rs
    functionUses: 0
    functionsReached:
    - SimulateReader::resolve_range
    - open
    linkageType: ''
    returnType: Result
    signature: 'async fn open(&self, range: BytesRange) -> Result<(RpRead, Box<dyn
      oio::ReadStreamDyn>)>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: SimulateReader::resolve_range
      Src: /src/opendal/core/core/src/layers/simulate.rs:449,1
    - Dst: read
      Src: /src/opendal/core/core/src/layers/simulate.rs:450,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 1
    argNames:
    - range
    argTypes:
    - BytesRange
    constantsTouched: []
    func_position:
      end: 451
      start: 448
    functionDepth: 34
    functionLinenumber: 448
    functionLinenumberEnd: 451
    functionName: SimulateReader::read
    functionSourceFile: /src/opendal/core/core/src/layers/simulate.rs
    functionUses: 0
    functionsReached:
    - read
    - SimulateReader::resolve_range
    linkageType: ''
    returnType: Result
    signature: 'async fn read(&self, range: BytesRange) -> Result<(RpRead, Buffer)>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Some
      Src: /src/opendal/core/core/src/layers/simulate.rs:466,1
    - Dst: oio::Entry::new
      Src: /src/opendal/core/core/src/layers/simulate.rs:466,1
    - Dst: Metadata::new
      Src: /src/opendal/core/core/src/layers/simulate.rs:466,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - ctx
    - srv
    - path
    argTypes:
    - OperationContext
    - Servicer
    - '&str'
    constantsTouched: []
    func_position:
      end: 469
      start: 462
    functionDepth: 1
    functionLinenumber: 462
    functionLinenumberEnd: 469
    functionName: ServicerFlatLister::new
    functionSourceFile: /src/opendal/core/core/src/layers/simulate.rs
    functionUses: 1
    functionsReached:
    - Metadata::new
    - oio::Entry::new
    - Some
    linkageType: ''
    returnType: Self
    signature: 'fn new(ctx: OperationContext, srv: Servicer, path: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: take
      Src: /src/opendal/core/core/src/layers/simulate.rs:475,1
    - Dst: list
      Src: /src/opendal/core/core/src/layers/simulate.rs:476,1
    - Dst: std::fmt::Result::path
      Src: /src/opendal/core/core/src/layers/simulate.rs:476,1
    - Dst: OpList::new
      Src: /src/opendal/core/core/src/layers/simulate.rs:476,1
    - Dst: Result::kind
      Src: /src/opendal/core/core/src/layers/simulate.rs:478,1
    - Dst: Result::kind
      Src: /src/opendal/core/core/src/layers/simulate.rs:485,1
    - Dst: Err
      Src: /src/opendal/core/core/src/layers/simulate.rs:492,1
    - Dst: Trial::next
      Src: /src/opendal/core/core/src/layers/simulate.rs:495,1
    - Dst: Result::kind
      Src: /src/opendal/core/core/src/layers/simulate.rs:497,1
    - Dst: Err
      Src: /src/opendal/core/core/src/layers/simulate.rs:504,1
    - Dst: push
      Src: /src/opendal/core/core/src/layers/simulate.rs:508,1
    - Dst: Some
      Src: /src/opendal/core/core/src/layers/simulate.rs:508,1
    - Dst: std::fmt::Result::clone
      Src: /src/opendal/core/core/src/layers/simulate.rs:508,1
    - Dst: Result::mode
      Src: /src/opendal/core/core/src/layers/simulate.rs:510,1
    - Dst: Option::is_dir
      Src: /src/opendal/core/core/src/layers/simulate.rs:510,1
    - Dst: Result::path
      Src: /src/opendal/core/core/src/layers/simulate.rs:511,1
    - Dst: std::fmt::Result::path
      Src: /src/opendal/core/core/src/layers/simulate.rs:511,1
    - Dst: Some
      Src: /src/opendal/core/core/src/layers/simulate.rs:512,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/layers/simulate.rs:516,1
    - Dst: Some
      Src: /src/opendal/core/core/src/layers/simulate.rs:516,1
    - Dst: pop
      Src: /src/opendal/core/core/src/layers/simulate.rs:522,1
    - Dst: last_mut
      Src: /src/opendal/core/core/src/layers/simulate.rs:526,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/layers/simulate.rs:528,1
    - Dst: Result::next
      Src: /src/opendal/core/core/src/layers/simulate.rs:531,1
    - Dst: Result::kind
      Src: /src/opendal/core/core/src/layers/simulate.rs:532,1
    - Dst: std::fmt::Result::as_ref
      Src: /src/opendal/core/core/src/layers/simulate.rs:533,1
    - Dst: '&[&''static str]::map'
      Src: /src/opendal/core/core/src/layers/simulate.rs:533,1
    - Dst: crate::Entry::path
      Src: /src/opendal/core/core/src/layers/simulate.rs:533,1
    - Dst: Result::unwrap_or
      Src: /src/opendal/core/core/src/layers/simulate.rs:533,1
    - Dst: Err
      Src: /src/opendal/core/core/src/layers/simulate.rs:540,1
    - Dst: Result::mode
      Src: /src/opendal/core/core/src/layers/simulate.rs:541,1
    - Dst: Option::is_dir
      Src: /src/opendal/core/core/src/layers/simulate.rs:541,1
    - Dst: Result::path
      Src: /src/opendal/core/core/src/layers/simulate.rs:542,1
    - Dst: std::fmt::Result::as_ref
      Src: /src/opendal/core/core/src/layers/simulate.rs:543,1
    - Dst: '&[&''static str]::expect'
      Src: /src/opendal/core/core/src/layers/simulate.rs:543,1
    - Dst: path
      Src: /src/opendal/core/core/src/layers/simulate.rs:543,1
    - Dst: Some
      Src: /src/opendal/core/core/src/layers/simulate.rs:548,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/layers/simulate.rs:552,1
    - Dst: Some
      Src: /src/opendal/core/core/src/layers/simulate.rs:552,1
    - Dst: std::fmt::Result::take
      Src: /src/opendal/core/core/src/layers/simulate.rs:553,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/layers/simulate.rs:554,1
    - Dst: Some
      Src: /src/opendal/core/core/src/layers/simulate.rs:554,1
    - Dst: pop
      Src: /src/opendal/core/core/src/layers/simulate.rs:556,1
    CyclomaticComplexity: 24
    EdgeCount: 24
    ICount: 149
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 562
      start: 473
    functionDepth: 30
    functionLinenumber: 473
    functionLinenumberEnd: 562
    functionName: ServicerFlatLister::next
    functionSourceFile: /src/opendal/core/core/src/layers/simulate.rs
    functionUses: 0
    functionsReached:
    - crate::Entry::path
    - push
    - Result::unwrap_or
    - std::fmt::Result::take
    - std::fmt::Result::as_ref
    - Ok
    - Option::is_dir
    - take
    - Result::next
    - pop
    - Result::mode
    - '&[&''static str]::map'
    - Some
    - Result::kind
    - Trial::next
    - Result::path
    - last_mut
    - '&[&''static str]::expect'
    - OpList::new
    - Err
    - list
    - path
    - std::fmt::Result::clone
    - std::fmt::Result::path
    linkageType: ''
    returnType: Result
    signature: async fn next(&mut self) -> Result<Option<oio::Entry>>
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 4
    argNames:
    - ctx
    - srv
    - config
    - inner
    argTypes:
    - OperationContext
    - Servicer
    - SimulateLayer
    - oio::Deleter
    constantsTouched: []
    func_position:
      end: 586
      start: 574
    functionDepth: 0
    functionLinenumber: 574
    functionLinenumberEnd: 586
    functionName: SimulateDeleter::new
    functionSourceFile: /src/opendal/core/core/src/layers/simulate.rs
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(ctx: OperationContext,srv: Servicer,config: SimulateLayer,inner:
      oio::Deleter,) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: OpStat::recursive
      Src: /src/opendal/core/core/src/layers/simulate.rs:591,1
    - Dst: capability
      Src: /src/opendal/core/core/src/layers/simulate.rs:592,1
    - Dst: delete
      Src: /src/opendal/core/core/src/layers/simulate.rs:595,1
    - Dst: clone
      Src: /src/opendal/core/core/src/layers/simulate.rs:600,1
    - Dst: clone
      Src: /src/opendal/core/core/src/layers/simulate.rs:601,1
    - Dst: Servicer::simulate_delete_with_recursive
      Src: /src/opendal/core/core/src/layers/simulate.rs:603,1
    - Dst: delete
      Src: /src/opendal/core/core/src/layers/simulate.rs:609,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 40
    argCount: 2
    argNames:
    - path
    - args
    argTypes:
    - '&str'
    - OpDelete
    constantsTouched: []
    func_position:
      end: 610
      start: 590
    functionDepth: 36
    functionLinenumber: 590
    functionLinenumberEnd: 610
    functionName: SimulateDeleter::delete
    functionSourceFile: /src/opendal/core/core/src/layers/simulate.rs
    functionUses: 0
    functionsReached:
    - Servicer::simulate_delete_with_recursive
    - delete
    - clone
    - capability
    - OpStat::recursive
    linkageType: ''
    returnType: Result
    signature: 'async fn delete(&mut self, path: &str, args: OpDelete) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: close
      Src: /src/opendal/core/core/src/layers/simulate.rs:613,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 614
      start: 612
    functionDepth: 2
    functionLinenumber: 612
    functionLinenumberEnd: 614
    functionName: SimulateDeleter::close
    functionSourceFile: /src/opendal/core/core/src/layers/simulate.rs
    functionUses: 0
    functionsReached:
    - close
    linkageType: ''
    returnType: Result
    signature: async fn close(&mut self) -> Result<()>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Default::default
      Src: /src/opendal/core/core/src/layers/simulate.rs:752,1
    - Dst: Arc::new
      Src: /src/opendal/core/core/src/layers/simulate.rs:754,1
    - Dst: SimulateLayer::default
      Src: /src/opendal/core/core/src/layers/simulate.rs:756,1
    - Dst: Self::apply_service
      Src: /src/opendal/core/core/src/layers/simulate.rs:756,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 759
      start: 748
    functionDepth: 4
    functionLinenumber: 748
    functionLinenumberEnd: 759
    functionName: tests::simulate_layer_exposes_read_with_suffix
    functionSourceFile: /src/opendal/core/core/src/layers/simulate.rs
    functionUses: 0
    functionsReached:
    - Default::default
    - Self::apply_service
    - SimulateLayer::default
    - Arc::new
    linkageType: ''
    returnType: void
    signature: fn simulate_layer_exposes_read_with_suffix()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Default::default
      Src: /src/opendal/core/core/src/layers/simulate.rs:766,1
    - Dst: Arc::new
      Src: /src/opendal/core/core/src/layers/simulate.rs:768,1
    - Dst: SimulateLayer::default
      Src: /src/opendal/core/core/src/layers/simulate.rs:770,1
    - Dst: Self::with_read_with_suffix
      Src: /src/opendal/core/core/src/layers/simulate.rs:770,1
    - Dst: Self::apply_service
      Src: /src/opendal/core/core/src/layers/simulate.rs:770,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 775
      start: 762
    functionDepth: 4
    functionLinenumber: 762
    functionLinenumberEnd: 775
    functionName: tests::simulate_layer_can_disable_read_with_suffix
    functionSourceFile: /src/opendal/core/core/src/layers/simulate.rs
    functionUses: 0
    functionsReached:
    - Self::with_read_with_suffix
    - Default::default
    - Arc::new
    - Self::apply_service
    - SimulateLayer::default
    linkageType: ''
    returnType: void
    signature: fn simulate_layer_can_disable_read_with_suffix()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Arc::new
      Src: /src/opendal/core/core/src/layers/simulate.rs:779,1
    - Dst: Mutex::new
      Src: /src/opendal/core/core/src/layers/simulate.rs:779,1
    - Dst: Some
      Src: /src/opendal/core/core/src/layers/simulate.rs:781,1
    - Dst: Default::default
      Src: /src/opendal/core/core/src/layers/simulate.rs:782,1
    - Dst: into
      Src: /src/opendal/core/core/src/layers/simulate.rs:780,1
    - Dst: SimulateReader::new
      Src: /src/opendal/core/core/src/layers/simulate.rs:785,1
    - Dst: OperationContext::new
      Src: /src/opendal/core/core/src/layers/simulate.rs:786,1
    - Dst: Arc::new
      Src: /src/opendal/core/core/src/layers/simulate.rs:787,1
    - Dst: Capability::default
      Src: /src/opendal/core/core/src/layers/simulate.rs:788,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/core/src/layers/simulate.rs:790,1
    - Dst: Box::new
      Src: /src/opendal/core/core/src/layers/simulate.rs:792,1
    - Dst: Self::clone
      Src: /src/opendal/core/core/src/layers/simulate.rs:793,1
    - Dst: oio::Read::read
      Src: /src/opendal/core/core/src/layers/simulate.rs:798,1
    - Dst: BytesRange::suffix
      Src: /src/opendal/core/core/src/layers/simulate.rs:798,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/layers/simulate.rs:805,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 27
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 806
      start: 778
    functionDepth: 29
    functionLinenumber: 778
    functionLinenumberEnd: 806
    functionName: tests::simulate_reader_uses_content_length_hint_for_suffix
    functionSourceFile: /src/opendal/core/core/src/layers/simulate.rs
    functionUses: 0
    functionsReached:
    - BytesRange::suffix
    - Ok
    - Box::new
    - Arc::new
    - Default::default
    - into
    - Some
    - OperationContext::new
    - Capability::default
    - SimulateReader::new
    - '&str::to_string'
    - Self::clone
    - Mutex::new
    - oio::Read::read
    linkageType: ''
    returnType: Result
    signature: async fn simulate_reader_uses_content_length_hint_for_suffix() -> Result<()>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::debug_struct
      Src: /src/opendal/core/core/src/layers/error_context.rs:46,1
    - Dst: finish
      Src: /src/opendal/core/core/src/layers/error_context.rs:46,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - f
    argTypes:
    - '&mut Formatter<''_>'
    constantsTouched: []
    func_position:
      end: 47
      start: 45
    functionDepth: 3
    functionLinenumber: 45
    functionLinenumberEnd: 47
    functionName: ErrorContextLayer::fmt
    functionSourceFile: /src/opendal/core/core/src/layers/error_context.rs
    functionUses: 0
    functionsReached:
    - finish
    - Result::debug_struct
    linkageType: ''
    returnType: std::fmt::Result
    signature: 'fn fmt(&self, f: &mut Formatter<''_>) -> std::fmt::Result'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Arc::new
      Src: /src/opendal/core/core/src/layers/error_context.rs:52,1
    - Dst: ErrorContextLayer::layer
      Src: /src/opendal/core/core/src/layers/error_context.rs:52,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - inner
    argTypes:
    - Servicer
    constantsTouched: []
    func_position:
      end: 53
      start: 51
    functionDepth: 2
    functionLinenumber: 51
    functionLinenumberEnd: 53
    functionName: ErrorContextLayer::apply_service
    functionSourceFile: /src/opendal/core/core/src/layers/error_context.rs
    functionUses: 0
    functionsReached:
    - Arc::new
    - ErrorContextLayer::layer
    linkageType: ''
    returnType: Servicer
    signature: 'fn apply_service(&self, inner: Servicer) -> Servicer'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - inner
    argTypes:
    - Servicer
    constantsTouched: []
    func_position:
      end: 59
      start: 57
    functionDepth: 0
    functionLinenumber: 57
    functionLinenumberEnd: 59
    functionName: ErrorContextLayer::layer
    functionSourceFile: /src/opendal/core/core/src/layers/error_context.rs
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: ErrorContextService
    signature: 'fn layer(&self, inner: Servicer) -> ErrorContextService'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: fmt
      Src: /src/opendal/core/core/src/layers/error_context.rs:69,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - f
    argTypes:
    - '&mut Formatter<''_>'
    constantsTouched: []
    func_position:
      end: 70
      start: 68
    functionDepth: 2
    functionLinenumber: 68
    functionLinenumberEnd: 70
    functionName: ErrorContextService::fmt
    functionSourceFile: /src/opendal/core/core/src/layers/error_context.rs
    functionUses: 0
    functionsReached:
    - fmt
    linkageType: ''
    returnType: std::fmt::Result
    signature: 'fn fmt(&self, f: &mut Formatter<''_>) -> std::fmt::Result'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: info
      Src: /src/opendal/core/core/src/layers/error_context.rs:81,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 82
      start: 80
    functionDepth: 2
    functionLinenumber: 80
    functionLinenumberEnd: 82
    functionName: ErrorContextService::info
    functionSourceFile: /src/opendal/core/core/src/layers/error_context.rs
    functionUses: 9
    functionsReached:
    - info
    linkageType: ''
    returnType: ServiceInfo
    signature: fn info(&self) -> ServiceInfo
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: capability
      Src: /src/opendal/core/core/src/layers/error_context.rs:85,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 86
      start: 84
    functionDepth: 2
    functionLinenumber: 84
    functionLinenumberEnd: 86
    functionName: ErrorContextService::capability
    functionSourceFile: /src/opendal/core/core/src/layers/error_context.rs
    functionUses: 0
    functionsReached:
    - capability
    linkageType: ''
    returnType: Capability
    signature: fn capability(&self) -> Capability
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: create_dir
      Src: /src/opendal/core/core/src/layers/error_context.rs:94,1
    - Dst: map_err
      Src: /src/opendal/core/core/src/layers/error_context.rs:94,1
    - Dst: Error::with_operation
      Src: /src/opendal/core/core/src/layers/error_context.rs:95,1
    - Dst: Self::with_context
      Src: /src/opendal/core/core/src/layers/error_context.rs:95,1
    - Dst: ErrorContextService::info
      Src: /src/opendal/core/core/src/layers/error_context.rs:96,1
    - Dst: ServiceInfo::scheme
      Src: /src/opendal/core/core/src/layers/error_context.rs:96,1
    - Dst: Self::with_context
      Src: /src/opendal/core/core/src/layers/error_context.rs:95,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 17
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpCreateDir
    constantsTouched: []
    func_position:
      end: 99
      start: 88
    functionDepth: 35
    functionLinenumber: 88
    functionLinenumberEnd: 99
    functionName: ErrorContextService::create_dir
    functionSourceFile: /src/opendal/core/core/src/layers/error_context.rs
    functionUses: 0
    functionsReached:
    - map_err
    - Error::with_operation
    - ErrorContextService::info
    - create_dir
    - ServiceInfo::scheme
    - Self::with_context
    linkageType: ''
    returnType: Result
    signature: 'async fn create_dir(&self,ctx: &OperationContext,path: &str,args:
      OpCreateDir,) -> Result<RpCreateDir>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: read
      Src: /src/opendal/core/core/src/layers/error_context.rs:102,1
    - Dst: map
      Src: /src/opendal/core/core/src/layers/error_context.rs:102,1
    - Dst: ErrorContextWrapper::new
      Src: /src/opendal/core/core/src/layers/error_context.rs:104,1
    - Dst: ErrorContextService::info
      Src: /src/opendal/core/core/src/layers/error_context.rs:104,1
    - Dst: ServiceInfo::scheme
      Src: /src/opendal/core/core/src/layers/error_context.rs:104,1
    - Dst: map_err
      Src: /src/opendal/core/core/src/layers/error_context.rs:102,1
    - Dst: Error::with_operation
      Src: /src/opendal/core/core/src/layers/error_context.rs:106,1
    - Dst: Self::with_context
      Src: /src/opendal/core/core/src/layers/error_context.rs:106,1
    - Dst: ErrorContextService::info
      Src: /src/opendal/core/core/src/layers/error_context.rs:107,1
    - Dst: ServiceInfo::scheme
      Src: /src/opendal/core/core/src/layers/error_context.rs:107,1
    - Dst: Self::with_context
      Src: /src/opendal/core/core/src/layers/error_context.rs:106,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 24
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpRead
    constantsTouched: []
    func_position:
      end: 110
      start: 101
    functionDepth: 31
    functionLinenumber: 101
    functionLinenumberEnd: 110
    functionName: ErrorContextService::read
    functionSourceFile: /src/opendal/core/core/src/layers/error_context.rs
    functionUses: 0
    functionsReached:
    - map_err
    - read
    - Error::with_operation
    - ErrorContextService::info
    - map
    - ErrorContextWrapper::new
    - ServiceInfo::scheme
    - Self::with_context
    linkageType: ''
    returnType: Result
    signature: 'fn read(&self, ctx: &OperationContext, path: &str, args: OpRead) ->
      Result<Self::Reader>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: write
      Src: /src/opendal/core/core/src/layers/error_context.rs:113,1
    - Dst: map
      Src: /src/opendal/core/core/src/layers/error_context.rs:113,1
    - Dst: ErrorContextWrapper::new
      Src: /src/opendal/core/core/src/layers/error_context.rs:115,1
    - Dst: ErrorContextService::info
      Src: /src/opendal/core/core/src/layers/error_context.rs:115,1
    - Dst: ServiceInfo::scheme
      Src: /src/opendal/core/core/src/layers/error_context.rs:115,1
    - Dst: map_err
      Src: /src/opendal/core/core/src/layers/error_context.rs:113,1
    - Dst: Error::with_operation
      Src: /src/opendal/core/core/src/layers/error_context.rs:117,1
    - Dst: Self::with_context
      Src: /src/opendal/core/core/src/layers/error_context.rs:117,1
    - Dst: ErrorContextService::info
      Src: /src/opendal/core/core/src/layers/error_context.rs:118,1
    - Dst: ServiceInfo::scheme
      Src: /src/opendal/core/core/src/layers/error_context.rs:118,1
    - Dst: Self::with_context
      Src: /src/opendal/core/core/src/layers/error_context.rs:117,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 24
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpWrite
    constantsTouched: []
    func_position:
      end: 121
      start: 112
    functionDepth: 36
    functionLinenumber: 112
    functionLinenumberEnd: 121
    functionName: ErrorContextService::write
    functionSourceFile: /src/opendal/core/core/src/layers/error_context.rs
    functionUses: 0
    functionsReached:
    - map_err
    - Error::with_operation
    - ErrorContextService::info
    - map
    - ErrorContextWrapper::new
    - ServiceInfo::scheme
    - Self::with_context
    - write
    linkageType: ''
    returnType: Result
    signature: 'fn write(&self, ctx: &OperationContext, path: &str, args: OpWrite)
      -> Result<Self::Writer>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: copy
      Src: /src/opendal/core/core/src/layers/error_context.rs:131,1
    - Dst: map
      Src: /src/opendal/core/core/src/layers/error_context.rs:131,1
    - Dst: ErrorContextWrapper::new
      Src: /src/opendal/core/core/src/layers/error_context.rs:133,1
    - Dst: ErrorContextService::info
      Src: /src/opendal/core/core/src/layers/error_context.rs:133,1
    - Dst: ServiceInfo::scheme
      Src: /src/opendal/core/core/src/layers/error_context.rs:133,1
    - Dst: map_err
      Src: /src/opendal/core/core/src/layers/error_context.rs:131,1
    - Dst: Error::with_operation
      Src: /src/opendal/core/core/src/layers/error_context.rs:135,1
    - Dst: Self::with_context
      Src: /src/opendal/core/core/src/layers/error_context.rs:135,1
    - Dst: ErrorContextService::info
      Src: /src/opendal/core/core/src/layers/error_context.rs:136,1
    - Dst: ServiceInfo::scheme
      Src: /src/opendal/core/core/src/layers/error_context.rs:136,1
    - Dst: Self::with_context
      Src: /src/opendal/core/core/src/layers/error_context.rs:135,1
    - Dst: Self::with_context
      Src: /src/opendal/core/core/src/layers/error_context.rs:135,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 26
    argCount: 5
    argNames:
    - ctx
    - from
    - to
    - args
    - opts
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    - OpCopy
    - OpCopier
    constantsTouched: []
    func_position:
      end: 140
      start: 123
    functionDepth: 34
    functionLinenumber: 123
    functionLinenumberEnd: 140
    functionName: ErrorContextService::copy
    functionSourceFile: /src/opendal/core/core/src/layers/error_context.rs
    functionUses: 0
    functionsReached:
    - map_err
    - Error::with_operation
    - ErrorContextService::info
    - map
    - ErrorContextWrapper::new
    - copy
    - ServiceInfo::scheme
    - Self::with_context
    linkageType: ''
    returnType: Result
    signature: 'fn copy(&self,ctx: &OperationContext,from: &str,to: &str,args: OpCopy,opts:
      OpCopier,) -> Result<Self::Copier>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: rename
      Src: /src/opendal/core/core/src/layers/error_context.rs:149,1
    - Dst: map_err
      Src: /src/opendal/core/core/src/layers/error_context.rs:149,1
    - Dst: Error::with_operation
      Src: /src/opendal/core/core/src/layers/error_context.rs:150,1
    - Dst: Self::with_context
      Src: /src/opendal/core/core/src/layers/error_context.rs:150,1
    - Dst: ErrorContextService::info
      Src: /src/opendal/core/core/src/layers/error_context.rs:151,1
    - Dst: ServiceInfo::scheme
      Src: /src/opendal/core/core/src/layers/error_context.rs:151,1
    - Dst: Self::with_context
      Src: /src/opendal/core/core/src/layers/error_context.rs:150,1
    - Dst: Self::with_context
      Src: /src/opendal/core/core/src/layers/error_context.rs:150,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 19
    argCount: 4
    argNames:
    - ctx
    - from
    - to
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    - OpRename
    constantsTouched: []
    func_position:
      end: 155
      start: 142
    functionDepth: 30
    functionLinenumber: 142
    functionLinenumberEnd: 155
    functionName: ErrorContextService::rename
    functionSourceFile: /src/opendal/core/core/src/layers/error_context.rs
    functionUses: 0
    functionsReached:
    - map_err
    - Error::with_operation
    - ErrorContextService::info
    - rename
    - ServiceInfo::scheme
    - Self::with_context
    linkageType: ''
    returnType: Result
    signature: 'async fn rename(&self,ctx: &OperationContext,from: &str,to: &str,args:
      OpRename,) -> Result<RpRename>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: stat
      Src: /src/opendal/core/core/src/layers/error_context.rs:158,1
    - Dst: map_err
      Src: /src/opendal/core/core/src/layers/error_context.rs:158,1
    - Dst: Error::with_operation
      Src: /src/opendal/core/core/src/layers/error_context.rs:159,1
    - Dst: Self::with_context
      Src: /src/opendal/core/core/src/layers/error_context.rs:159,1
    - Dst: ErrorContextService::info
      Src: /src/opendal/core/core/src/layers/error_context.rs:160,1
    - Dst: ServiceInfo::scheme
      Src: /src/opendal/core/core/src/layers/error_context.rs:160,1
    - Dst: Self::with_context
      Src: /src/opendal/core/core/src/layers/error_context.rs:159,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 17
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpStat
    constantsTouched: []
    func_position:
      end: 163
      start: 157
    functionDepth: 31
    functionLinenumber: 157
    functionLinenumberEnd: 163
    functionName: ErrorContextService::stat
    functionSourceFile: /src/opendal/core/core/src/layers/error_context.rs
    functionUses: 0
    functionsReached:
    - map_err
    - Error::with_operation
    - ErrorContextService::info
    - ServiceInfo::scheme
    - Self::with_context
    - stat
    linkageType: ''
    returnType: Result
    signature: 'async fn stat(&self, ctx: &OperationContext, path: &str, args: OpStat)
      -> Result<RpStat>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: delete
      Src: /src/opendal/core/core/src/layers/error_context.rs:166,1
    - Dst: map
      Src: /src/opendal/core/core/src/layers/error_context.rs:166,1
    - Dst: ErrorContextWrapper::new
      Src: /src/opendal/core/core/src/layers/error_context.rs:168,1
    - Dst: ErrorContextService::info
      Src: /src/opendal/core/core/src/layers/error_context.rs:168,1
    - Dst: ServiceInfo::scheme
      Src: /src/opendal/core/core/src/layers/error_context.rs:168,1
    - Dst: map_err
      Src: /src/opendal/core/core/src/layers/error_context.rs:166,1
    - Dst: Error::with_operation
      Src: /src/opendal/core/core/src/layers/error_context.rs:170,1
    - Dst: Self::with_context
      Src: /src/opendal/core/core/src/layers/error_context.rs:170,1
    - Dst: ErrorContextService::info
      Src: /src/opendal/core/core/src/layers/error_context.rs:171,1
    - Dst: ServiceInfo::scheme
      Src: /src/opendal/core/core/src/layers/error_context.rs:171,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 22
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - '&OperationContext'
    constantsTouched: []
    func_position:
      end: 173
      start: 165
    functionDepth: 32
    functionLinenumber: 165
    functionLinenumberEnd: 173
    functionName: ErrorContextService::delete
    functionSourceFile: /src/opendal/core/core/src/layers/error_context.rs
    functionUses: 0
    functionsReached:
    - map_err
    - Error::with_operation
    - delete
    - ErrorContextService::info
    - map
    - ErrorContextWrapper::new
    - ServiceInfo::scheme
    - Self::with_context
    linkageType: ''
    returnType: Result
    signature: 'fn delete(&self, ctx: &OperationContext) -> Result<Self::Deleter>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: list
      Src: /src/opendal/core/core/src/layers/error_context.rs:176,1
    - Dst: map
      Src: /src/opendal/core/core/src/layers/error_context.rs:176,1
    - Dst: ErrorContextWrapper::new
      Src: /src/opendal/core/core/src/layers/error_context.rs:178,1
    - Dst: ErrorContextService::info
      Src: /src/opendal/core/core/src/layers/error_context.rs:178,1
    - Dst: ServiceInfo::scheme
      Src: /src/opendal/core/core/src/layers/error_context.rs:178,1
    - Dst: map_err
      Src: /src/opendal/core/core/src/layers/error_context.rs:176,1
    - Dst: Error::with_operation
      Src: /src/opendal/core/core/src/layers/error_context.rs:180,1
    - Dst: Self::with_context
      Src: /src/opendal/core/core/src/layers/error_context.rs:180,1
    - Dst: ErrorContextService::info
      Src: /src/opendal/core/core/src/layers/error_context.rs:181,1
    - Dst: ServiceInfo::scheme
      Src: /src/opendal/core/core/src/layers/error_context.rs:181,1
    - Dst: Self::with_context
      Src: /src/opendal/core/core/src/layers/error_context.rs:180,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 24
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpList
    constantsTouched: []
    func_position:
      end: 184
      start: 175
    functionDepth: 30
    functionLinenumber: 175
    functionLinenumberEnd: 184
    functionName: ErrorContextService::list
    functionSourceFile: /src/opendal/core/core/src/layers/error_context.rs
    functionUses: 0
    functionsReached:
    - map_err
    - Error::with_operation
    - ErrorContextService::info
    - list
    - ErrorContextWrapper::new
    - map
    - ServiceInfo::scheme
    - Self::with_context
    linkageType: ''
    returnType: Result
    signature: 'fn list(&self, ctx: &OperationContext, path: &str, args: OpList) ->
      Result<Self::Lister>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: presign
      Src: /src/opendal/core/core/src/layers/error_context.rs:192,1
    - Dst: map_err
      Src: /src/opendal/core/core/src/layers/error_context.rs:192,1
    - Dst: Error::with_operation
      Src: /src/opendal/core/core/src/layers/error_context.rs:193,1
    - Dst: Self::with_context
      Src: /src/opendal/core/core/src/layers/error_context.rs:193,1
    - Dst: ErrorContextService::info
      Src: /src/opendal/core/core/src/layers/error_context.rs:194,1
    - Dst: ServiceInfo::scheme
      Src: /src/opendal/core/core/src/layers/error_context.rs:194,1
    - Dst: Self::with_context
      Src: /src/opendal/core/core/src/layers/error_context.rs:193,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 17
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpPresign
    constantsTouched: []
    func_position:
      end: 197
      start: 186
    functionDepth: 30
    functionLinenumber: 186
    functionLinenumberEnd: 197
    functionName: ErrorContextService::presign
    functionSourceFile: /src/opendal/core/core/src/layers/error_context.rs
    functionUses: 0
    functionsReached:
    - map_err
    - Error::with_operation
    - ErrorContextService::info
    - ServiceInfo::scheme
    - Self::with_context
    - presign
    linkageType: ''
    returnType: Result
    signature: 'async fn presign(&self,ctx: &OperationContext,path: &str,args: OpPresign,)
      -> Result<RpPresign>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: into
      Src: /src/opendal/core/core/src/layers/error_context.rs:212,1
    - Dst: BytesRange::default
      Src: /src/opendal/core/core/src/layers/error_context.rs:214,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - scheme
    - path
    - inner
    argTypes:
    - '&''static str'
    - impl Into<String>
    - T
    constantsTouched: []
    func_position:
      end: 217
      start: 209
    functionDepth: 29
    functionLinenumber: 209
    functionLinenumberEnd: 217
    functionName: ErrorContextWrapper::new
    functionSourceFile: /src/opendal/core/core/src/layers/error_context.rs
    functionUses: 6
    functionsReached:
    - BytesRange::default
    - into
    linkageType: ''
    returnType: Self
    signature: 'fn new(scheme: &''static str, path: impl Into<String>, inner: T) ->
      Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - range
    argTypes:
    - BytesRange
    constantsTouched: []
    func_position:
      end: 222
      start: 219
    functionDepth: 0
    functionLinenumber: 219
    functionLinenumberEnd: 222
    functionName: ErrorContextWrapper::with_range
    functionSourceFile: /src/opendal/core/core/src/layers/error_context.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: 'fn with_range(mut self, range: BytesRange) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Error::with_operation
      Src: /src/opendal/core/core/src/layers/error_context.rs:225,1
    - Dst: Self::with_context
      Src: /src/opendal/core/core/src/layers/error_context.rs:225,1
    - Dst: Self::with_context
      Src: /src/opendal/core/core/src/layers/error_context.rs:225,1
    - Dst: Self::with_context
      Src: /src/opendal/core/core/src/layers/error_context.rs:225,1
    - Dst: to_string
      Src: /src/opendal/core/core/src/layers/error_context.rs:228,1
    - Dst: Self::with_context
      Src: /src/opendal/core/core/src/layers/error_context.rs:225,1
    - Dst: to_string
      Src: /src/opendal/core/core/src/layers/error_context.rs:229,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 19
    argCount: 1
    argNames:
    - err
    argTypes:
    - Error
    constantsTouched: []
    func_position:
      end: 230
      start: 224
    functionDepth: 30
    functionLinenumber: 224
    functionLinenumberEnd: 230
    functionName: ErrorContextWrapper::read_error
    functionSourceFile: /src/opendal/core/core/src/layers/error_context.rs
    functionUses: 1
    functionsReached:
    - to_string
    - Self::with_context
    - Error::with_operation
    linkageType: ''
    returnType: Error
    signature: 'fn read_error(&self, err: Error) -> Error'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: open
      Src: /src/opendal/core/core/src/layers/error_context.rs:235,1
    - Dst: map
      Src: /src/opendal/core/core/src/layers/error_context.rs:235,1
    - Dst: Box::new
      Src: /src/opendal/core/core/src/layers/error_context.rs:241,1
    - Dst: ErrorContextWrapper::new
      Src: /src/opendal/core/core/src/layers/error_context.rs:242,1
    - Dst: clone
      Src: /src/opendal/core/core/src/layers/error_context.rs:242,1
    - Dst: Self::with_range
      Src: /src/opendal/core/core/src/layers/error_context.rs:242,1
    - Dst: map_err
      Src: /src/opendal/core/core/src/layers/error_context.rs:235,1
    - Dst: Error::with_operation
      Src: /src/opendal/core/core/src/layers/error_context.rs:248,1
    - Dst: Self::with_context
      Src: /src/opendal/core/core/src/layers/error_context.rs:248,1
    - Dst: Self::with_context
      Src: /src/opendal/core/core/src/layers/error_context.rs:248,1
    - Dst: Self::with_context
      Src: /src/opendal/core/core/src/layers/error_context.rs:248,1
    - Dst: (Vec::to_string
      Src: /src/opendal/core/core/src/layers/error_context.rs:251,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 33
    argCount: 1
    argNames:
    - range
    argTypes:
    - BytesRange
    constantsTouched: []
    func_position:
      end: 253
      start: 234
    functionDepth: 30
    functionLinenumber: 234
    functionLinenumberEnd: 253
    functionName: ErrorContextWrapper::open
    functionSourceFile: /src/opendal/core/core/src/layers/error_context.rs
    functionUses: 0
    functionsReached:
    - map_err
    - Error::with_operation
    - Box::new
    - (Vec::to_string
    - clone
    - Self::with_range
    - map
    - ErrorContextWrapper::new
    - open
    - Self::with_context
    linkageType: ''
    returnType: Result
    signature: 'async fn open(&self, range: BytesRange) -> Result<(RpRead, Box<dyn
      oio::ReadStreamDyn>)>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: read
      Src: /src/opendal/core/core/src/layers/error_context.rs:267,1
    - Dst: inspect
      Src: /src/opendal/core/core/src/layers/error_context.rs:267,1
    - Dst: Result::len
      Src: /src/opendal/core/core/src/layers/error_context.rs:271,1
    - Dst: map_err
      Src: /src/opendal/core/core/src/layers/error_context.rs:267,1
    - Dst: ErrorContextWrapper::read_error
      Src: /src/opendal/core/core/src/layers/error_context.rs:273,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 17
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 274
      start: 266
    functionDepth: 31
    functionLinenumber: 266
    functionLinenumberEnd: 274
    functionName: ErrorContextWrapper::read
    functionSourceFile: /src/opendal/core/core/src/layers/error_context.rs
    functionUses: 0
    functionsReached:
    - map_err
    - read
    - ErrorContextWrapper::read_error
    - inspect
    - Result::len
    linkageType: ''
    returnType: Result
    signature: async fn read(&mut self) -> Result<Buffer>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::len
      Src: /src/opendal/core/core/src/layers/error_context.rs:279,1
    - Dst: write
      Src: /src/opendal/core/core/src/layers/error_context.rs:280,1
    - Dst: map
      Src: /src/opendal/core/core/src/layers/error_context.rs:280,1
    - Dst: map_err
      Src: /src/opendal/core/core/src/layers/error_context.rs:280,1
    - Dst: Error::with_operation
      Src: /src/opendal/core/core/src/layers/error_context.rs:287,1
    - Dst: Self::with_context
      Src: /src/opendal/core/core/src/layers/error_context.rs:287,1
    - Dst: Self::with_context
      Src: /src/opendal/core/core/src/layers/error_context.rs:287,1
    - Dst: Self::with_context
      Src: /src/opendal/core/core/src/layers/error_context.rs:287,1
    - Dst: Option::to_string
      Src: /src/opendal/core/core/src/layers/error_context.rs:290,1
    - Dst: Self::with_context
      Src: /src/opendal/core/core/src/layers/error_context.rs:287,1
    - Dst: to_string
      Src: /src/opendal/core/core/src/layers/error_context.rs:291,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 33
    argCount: 1
    argNames:
    - bs
    argTypes:
    - Buffer
    constantsTouched: []
    func_position:
      end: 293
      start: 278
    functionDepth: 36
    functionLinenumber: 278
    functionLinenumberEnd: 293
    functionName: ErrorContextWrapper::write
    functionSourceFile: /src/opendal/core/core/src/layers/error_context.rs
    functionUses: 0
    functionsReached:
    - map_err
    - to_string
    - Error::with_operation
    - Option::to_string
    - map
    - Result::len
    - Self::with_context
    - write
    linkageType: ''
    returnType: Result
    signature: 'async fn write(&mut self, bs: Buffer) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: close
      Src: /src/opendal/core/core/src/layers/error_context.rs:367,1
    - Dst: map_err
      Src: /src/opendal/core/core/src/layers/error_context.rs:367,1
    - Dst: Error::with_operation
      Src: /src/opendal/core/core/src/layers/error_context.rs:368,1
    - Dst: Self::with_context
      Src: /src/opendal/core/core/src/layers/error_context.rs:368,1
    - Dst: Self::with_context
      Src: /src/opendal/core/core/src/layers/error_context.rs:368,1
    - Dst: Self::with_context
      Src: /src/opendal/core/core/src/layers/error_context.rs:368,1
    - Dst: to_string
      Src: /src/opendal/core/core/src/layers/error_context.rs:371,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 21
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 373
      start: 366
    functionDepth: 30
    functionLinenumber: 366
    functionLinenumberEnd: 373
    functionName: ErrorContextWrapper::close
    functionSourceFile: /src/opendal/core/core/src/layers/error_context.rs
    functionUses: 0
    functionsReached:
    - map_err
    - to_string
    - Error::with_operation
    - close
    - Self::with_context
    linkageType: ''
    returnType: Result
    signature: async fn close(&mut self) -> Result<Metadata>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: abort
      Src: /src/opendal/core/core/src/layers/error_context.rs:376,1
    - Dst: map_err
      Src: /src/opendal/core/core/src/layers/error_context.rs:376,1
    - Dst: Error::with_operation
      Src: /src/opendal/core/core/src/layers/error_context.rs:377,1
    - Dst: Self::with_context
      Src: /src/opendal/core/core/src/layers/error_context.rs:377,1
    - Dst: Self::with_context
      Src: /src/opendal/core/core/src/layers/error_context.rs:377,1
    - Dst: Self::with_context
      Src: /src/opendal/core/core/src/layers/error_context.rs:377,1
    - Dst: to_string
      Src: /src/opendal/core/core/src/layers/error_context.rs:380,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 21
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 382
      start: 375
    functionDepth: 31
    functionLinenumber: 375
    functionLinenumberEnd: 382
    functionName: ErrorContextWrapper::abort
    functionSourceFile: /src/opendal/core/core/src/layers/error_context.rs
    functionUses: 0
    functionsReached:
    - map_err
    - to_string
    - Error::with_operation
    - Self::with_context
    - abort
    linkageType: ''
    returnType: Result
    signature: async fn abort(&mut self) -> Result<()>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: next
      Src: /src/opendal/core/core/src/layers/error_context.rs:352,1
    - Dst: inspect
      Src: /src/opendal/core/core/src/layers/error_context.rs:352,1
    - Dst: Option::unwrap_or_default
      Src: /src/opendal/core/core/src/layers/error_context.rs:356,1
    - Dst: map_err
      Src: /src/opendal/core/core/src/layers/error_context.rs:352,1
    - Dst: Error::with_operation
      Src: /src/opendal/core/core/src/layers/error_context.rs:359,1
    - Dst: Self::with_context
      Src: /src/opendal/core/core/src/layers/error_context.rs:359,1
    - Dst: Self::with_context
      Src: /src/opendal/core/core/src/layers/error_context.rs:359,1
    - Dst: Self::with_context
      Src: /src/opendal/core/core/src/layers/error_context.rs:359,1
    - Dst: to_string
      Src: /src/opendal/core/core/src/layers/error_context.rs:362,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 29
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 364
      start: 351
    functionDepth: 30
    functionLinenumber: 351
    functionLinenumberEnd: 364
    functionName: ErrorContextWrapper::next
    functionSourceFile: /src/opendal/core/core/src/layers/error_context.rs
    functionUses: 0
    functionsReached:
    - next
    - map_err
    - to_string
    - Error::with_operation
    - Option::unwrap_or_default
    - inspect
    - Self::with_context
    linkageType: ''
    returnType: Result
    signature: async fn next(&mut self) -> Result<Option<usize>>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: delete
      Src: /src/opendal/core/core/src/layers/error_context.rs:333,1
    - Dst: map_err
      Src: /src/opendal/core/core/src/layers/error_context.rs:333,1
    - Dst: Error::with_operation
      Src: /src/opendal/core/core/src/layers/error_context.rs:334,1
    - Dst: Self::with_context
      Src: /src/opendal/core/core/src/layers/error_context.rs:334,1
    - Dst: Self::with_context
      Src: /src/opendal/core/core/src/layers/error_context.rs:334,1
    - Dst: Self::with_context
      Src: /src/opendal/core/core/src/layers/error_context.rs:334,1
    - Dst: to_string
      Src: /src/opendal/core/core/src/layers/error_context.rs:337,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 19
    argCount: 2
    argNames:
    - path
    - args
    argTypes:
    - '&str'
    - OpDelete
    constantsTouched: []
    func_position:
      end: 339
      start: 332
    functionDepth: 32
    functionLinenumber: 332
    functionLinenumberEnd: 339
    functionName: ErrorContextWrapper::delete
    functionSourceFile: /src/opendal/core/core/src/layers/error_context.rs
    functionUses: 0
    functionsReached:
    - map_err
    - to_string
    - Error::with_operation
    - delete
    - Self::with_context
    linkageType: ''
    returnType: Result
    signature: 'async fn delete(&mut self, path: &str, args: OpDelete) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::debug_struct
      Src: /src/opendal/core/core/src/layers/correctness_check.rs:43,1
    - Dst: finish
      Src: /src/opendal/core/core/src/layers/correctness_check.rs:43,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - f
    argTypes:
    - '&mut Formatter<''_>'
    constantsTouched: []
    func_position:
      end: 44
      start: 42
    functionDepth: 3
    functionLinenumber: 42
    functionLinenumberEnd: 44
    functionName: CorrectnessCheckLayer::fmt
    functionSourceFile: /src/opendal/core/core/src/layers/correctness_check.rs
    functionUses: 0
    functionsReached:
    - finish
    - Result::debug_struct
    linkageType: ''
    returnType: std::fmt::Result
    signature: 'fn fmt(&self, f: &mut Formatter<''_>) -> std::fmt::Result'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Arc::new
      Src: /src/opendal/core/core/src/layers/correctness_check.rs:49,1
    - Dst: CorrectnessCheckLayer::layer
      Src: /src/opendal/core/core/src/layers/correctness_check.rs:49,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - inner
    argTypes:
    - Servicer
    constantsTouched: []
    func_position:
      end: 50
      start: 48
    functionDepth: 2
    functionLinenumber: 48
    functionLinenumberEnd: 50
    functionName: CorrectnessCheckLayer::apply_service
    functionSourceFile: /src/opendal/core/core/src/layers/correctness_check.rs
    functionUses: 0
    functionsReached:
    - CorrectnessCheckLayer::layer
    - Arc::new
    linkageType: ''
    returnType: Servicer
    signature: 'fn apply_service(&self, inner: Servicer) -> Servicer'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - inner
    argTypes:
    - Servicer
    constantsTouched: []
    func_position:
      end: 56
      start: 54
    functionDepth: 0
    functionLinenumber: 54
    functionLinenumberEnd: 56
    functionName: CorrectnessCheckLayer::layer
    functionSourceFile: /src/opendal/core/core/src/layers/correctness_check.rs
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: CorrectnessService
    signature: 'fn layer(&self, inner: Servicer) -> CorrectnessService'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::debug_struct
      Src: /src/opendal/core/core/src/layers/correctness_check.rs:75,1
    - Dst: field
      Src: /src/opendal/core/core/src/layers/correctness_check.rs:75,1
    - Dst: finish_non_exhaustive
      Src: /src/opendal/core/core/src/layers/correctness_check.rs:75,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - f
    argTypes:
    - '&mut Formatter<''_>'
    constantsTouched: []
    func_position:
      end: 78
      start: 74
    functionDepth: 5
    functionLinenumber: 74
    functionLinenumberEnd: 78
    functionName: CorrectnessService::fmt
    functionSourceFile: /src/opendal/core/core/src/layers/correctness_check.rs
    functionUses: 0
    functionsReached:
    - field
    - Result::debug_struct
    - finish_non_exhaustive
    linkageType: ''
    returnType: std::fmt::Result
    signature: 'fn fmt(&self, f: &mut Formatter<''_>) -> std::fmt::Result'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: info
      Src: /src/opendal/core/core/src/layers/correctness_check.rs:89,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 90
      start: 88
    functionDepth: 2
    functionLinenumber: 88
    functionLinenumberEnd: 90
    functionName: CorrectnessService::info
    functionSourceFile: /src/opendal/core/core/src/layers/correctness_check.rs
    functionUses: 6
    functionsReached:
    - info
    linkageType: ''
    returnType: ServiceInfo
    signature: fn info(&self) -> ServiceInfo
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: capability
      Src: /src/opendal/core/core/src/layers/correctness_check.rs:93,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 94
      start: 92
    functionDepth: 2
    functionLinenumber: 92
    functionLinenumberEnd: 94
    functionName: CorrectnessService::capability
    functionSourceFile: /src/opendal/core/core/src/layers/correctness_check.rs
    functionUses: 6
    functionsReached:
    - capability
    linkageType: ''
    returnType: Capability
    signature: fn capability(&self) -> Capability
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: CorrectnessService::capability
      Src: /src/opendal/core/core/src/layers/correctness_check.rs:97,1
    - Dst: CorrectnessService::info
      Src: /src/opendal/core/core/src/layers/correctness_check.rs:98,1
    - Dst: ServiceInfo::scheme
      Src: /src/opendal/core/core/src/layers/correctness_check.rs:98,1
    - Dst: OpStat::version
      Src: /src/opendal/core/core/src/layers/correctness_check.rs:99,1
    - Dst: Option::is_some
      Src: /src/opendal/core/core/src/layers/correctness_check.rs:99,1
    - Dst: Err
      Src: /src/opendal/core/core/src/layers/correctness_check.rs:100,1
    - Dst: new_unsupported_error
      Src: /src/opendal/core/core/src/layers/correctness_check.rs:100,1
    - Dst: OpStat::if_match
      Src: /src/opendal/core/core/src/layers/correctness_check.rs:102,1
    - Dst: Option::is_some
      Src: /src/opendal/core/core/src/layers/correctness_check.rs:102,1
    - Dst: Err
      Src: /src/opendal/core/core/src/layers/correctness_check.rs:103,1
    - Dst: new_unsupported_error
      Src: /src/opendal/core/core/src/layers/correctness_check.rs:103,1
    - Dst: OpStat::if_none_match
      Src: /src/opendal/core/core/src/layers/correctness_check.rs:105,1
    - Dst: Option::is_some
      Src: /src/opendal/core/core/src/layers/correctness_check.rs:105,1
    - Dst: Err
      Src: /src/opendal/core/core/src/layers/correctness_check.rs:106,1
    - Dst: new_unsupported_error
      Src: /src/opendal/core/core/src/layers/correctness_check.rs:106,1
    - Dst: OpStat::if_modified_since
      Src: /src/opendal/core/core/src/layers/correctness_check.rs:112,1
    - Dst: Option::is_some
      Src: /src/opendal/core/core/src/layers/correctness_check.rs:112,1
    - Dst: Err
      Src: /src/opendal/core/core/src/layers/correctness_check.rs:113,1
    - Dst: new_unsupported_error
      Src: /src/opendal/core/core/src/layers/correctness_check.rs:113,1
    - Dst: OpStat::if_unmodified_since
      Src: /src/opendal/core/core/src/layers/correctness_check.rs:119,1
    - Dst: Option::is_some
      Src: /src/opendal/core/core/src/layers/correctness_check.rs:119,1
    - Dst: Err
      Src: /src/opendal/core/core/src/layers/correctness_check.rs:120,1
    - Dst: new_unsupported_error
      Src: /src/opendal/core/core/src/layers/correctness_check.rs:120,1
    - Dst: read
      Src: /src/opendal/core/core/src/layers/correctness_check.rs:127,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 74
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpRead
    constantsTouched: []
    func_position:
      end: 128
      start: 96
    functionDepth: 31
    functionLinenumber: 96
    functionLinenumberEnd: 128
    functionName: CorrectnessService::read
    functionSourceFile: /src/opendal/core/core/src/layers/correctness_check.rs
    functionUses: 0
    functionsReached:
    - OpStat::version
    - read
    - Option::is_some
    - CorrectnessService::capability
    - OpStat::if_modified_since
    - OpStat::if_unmodified_since
    - new_unsupported_error
    - CorrectnessService::info
    - Err
    - OpStat::if_none_match
    - ServiceInfo::scheme
    - OpStat::if_match
    linkageType: ''
    returnType: Result
    signature: 'fn read(&self, ctx: &OperationContext, path: &str, args: OpRead) ->
      Result<Self::Reader>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: CorrectnessService::capability
      Src: /src/opendal/core/core/src/layers/correctness_check.rs:131,1
    - Dst: CorrectnessService::info
      Src: /src/opendal/core/core/src/layers/correctness_check.rs:132,1
    - Dst: ServiceInfo::scheme
      Src: /src/opendal/core/core/src/layers/correctness_check.rs:132,1
    - Dst: OpStat::append
      Src: /src/opendal/core/core/src/layers/correctness_check.rs:133,1
    - Dst: Err
      Src: /src/opendal/core/core/src/layers/correctness_check.rs:134,1
    - Dst: new_unsupported_error
      Src: /src/opendal/core/core/src/layers/correctness_check.rs:134,1
    - Dst: OpStat::if_not_exists
      Src: /src/opendal/core/core/src/layers/correctness_check.rs:136,1
    - Dst: Err
      Src: /src/opendal/core/core/src/layers/correctness_check.rs:137,1
    - Dst: new_unsupported_error
      Src: /src/opendal/core/core/src/layers/correctness_check.rs:137,1
    - Dst: OpStat::if_match
      Src: /src/opendal/core/core/src/layers/correctness_check.rs:143,1
    - Dst: Option::is_some
      Src: /src/opendal/core/core/src/layers/correctness_check.rs:143,1
    - Dst: Err
      Src: /src/opendal/core/core/src/layers/correctness_check.rs:144,1
    - Dst: new_unsupported_error
      Src: /src/opendal/core/core/src/layers/correctness_check.rs:144,1
    - Dst: OpStat::if_none_match
      Src: /src/opendal/core/core/src/layers/correctness_check.rs:146,1
    - Dst: new_unsupported_error
      Src: /src/opendal/core/core/src/layers/correctness_check.rs:149,1
    - Dst: Error::with_context
      Src: /src/opendal/core/core/src/layers/correctness_check.rs:151,1
    - Dst: Err
      Src: /src/opendal/core/core/src/layers/correctness_check.rs:154,1
    - Dst: write
      Src: /src/opendal/core/core/src/layers/correctness_check.rs:157,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 63
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpWrite
    constantsTouched: []
    func_position:
      end: 158
      start: 130
    functionDepth: 31
    functionLinenumber: 130
    functionLinenumberEnd: 158
    functionName: CorrectnessService::write
    functionSourceFile: /src/opendal/core/core/src/layers/correctness_check.rs
    functionUses: 0
    functionsReached:
    - Option::is_some
    - CorrectnessService::capability
    - new_unsupported_error
    - write
    - CorrectnessService::info
    - Err
    - OpStat::if_none_match
    - Error::with_context
    - OpStat::append
    - ServiceInfo::scheme
    - OpStat::if_match
    - OpStat::if_not_exists
    linkageType: ''
    returnType: Result
    signature: 'fn write(&self, ctx: &OperationContext, path: &str, args: OpWrite)
      -> Result<Self::Writer>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: CorrectnessService::capability
      Src: /src/opendal/core/core/src/layers/correctness_check.rs:161,1
    - Dst: CorrectnessService::info
      Src: /src/opendal/core/core/src/layers/correctness_check.rs:162,1
    - Dst: ServiceInfo::scheme
      Src: /src/opendal/core/core/src/layers/correctness_check.rs:162,1
    - Dst: OpStat::version
      Src: /src/opendal/core/core/src/layers/correctness_check.rs:163,1
    - Dst: Option::is_some
      Src: /src/opendal/core/core/src/layers/correctness_check.rs:163,1
    - Dst: Err
      Src: /src/opendal/core/core/src/layers/correctness_check.rs:164,1
    - Dst: new_unsupported_error
      Src: /src/opendal/core/core/src/layers/correctness_check.rs:164,1
    - Dst: OpStat::if_match
      Src: /src/opendal/core/core/src/layers/correctness_check.rs:166,1
    - Dst: Option::is_some
      Src: /src/opendal/core/core/src/layers/correctness_check.rs:166,1
    - Dst: Err
      Src: /src/opendal/core/core/src/layers/correctness_check.rs:167,1
    - Dst: new_unsupported_error
      Src: /src/opendal/core/core/src/layers/correctness_check.rs:167,1
    - Dst: OpStat::if_none_match
      Src: /src/opendal/core/core/src/layers/correctness_check.rs:169,1
    - Dst: Option::is_some
      Src: /src/opendal/core/core/src/layers/correctness_check.rs:169,1
    - Dst: Err
      Src: /src/opendal/core/core/src/layers/correctness_check.rs:170,1
    - Dst: new_unsupported_error
      Src: /src/opendal/core/core/src/layers/correctness_check.rs:170,1
    - Dst: OpStat::if_modified_since
      Src: /src/opendal/core/core/src/layers/correctness_check.rs:176,1
    - Dst: Option::is_some
      Src: /src/opendal/core/core/src/layers/correctness_check.rs:176,1
    - Dst: Err
      Src: /src/opendal/core/core/src/layers/correctness_check.rs:177,1
    - Dst: new_unsupported_error
      Src: /src/opendal/core/core/src/layers/correctness_check.rs:177,1
    - Dst: OpStat::if_unmodified_since
      Src: /src/opendal/core/core/src/layers/correctness_check.rs:183,1
    - Dst: Option::is_some
      Src: /src/opendal/core/core/src/layers/correctness_check.rs:183,1
    - Dst: Err
      Src: /src/opendal/core/core/src/layers/correctness_check.rs:184,1
    - Dst: new_unsupported_error
      Src: /src/opendal/core/core/src/layers/correctness_check.rs:184,1
    - Dst: stat
      Src: /src/opendal/core/core/src/layers/correctness_check.rs:191,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 75
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpStat
    constantsTouched: []
    func_position:
      end: 192
      start: 160
    functionDepth: 31
    functionLinenumber: 160
    functionLinenumberEnd: 192
    functionName: CorrectnessService::stat
    functionSourceFile: /src/opendal/core/core/src/layers/correctness_check.rs
    functionUses: 0
    functionsReached:
    - OpStat::version
    - Option::is_some
    - CorrectnessService::capability
    - OpStat::if_modified_since
    - OpStat::if_unmodified_since
    - new_unsupported_error
    - CorrectnessService::info
    - Err
    - OpStat::if_none_match
    - ServiceInfo::scheme
    - OpStat::if_match
    - stat
    linkageType: ''
    returnType: Result
    signature: 'async fn stat(&self, ctx: &OperationContext, path: &str, args: OpStat)
      -> Result<RpStat>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: delete
      Src: /src/opendal/core/core/src/layers/correctness_check.rs:195,1
    - Dst: map
      Src: /src/opendal/core/core/src/layers/correctness_check.rs:195,1
    - Dst: CheckWrapper::new
      Src: /src/opendal/core/core/src/layers/correctness_check.rs:197,1
    - Dst: CorrectnessService::info
      Src: /src/opendal/core/core/src/layers/correctness_check.rs:197,1
    - Dst: ServiceInfo::scheme
      Src: /src/opendal/core/core/src/layers/correctness_check.rs:197,1
    - Dst: CorrectnessService::capability
      Src: /src/opendal/core/core/src/layers/correctness_check.rs:197,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 13
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - '&OperationContext'
    constantsTouched: []
    func_position:
      end: 198
      start: 194
    functionDepth: 32
    functionLinenumber: 194
    functionLinenumberEnd: 198
    functionName: CorrectnessService::delete
    functionSourceFile: /src/opendal/core/core/src/layers/correctness_check.rs
    functionUses: 0
    functionsReached:
    - CheckWrapper::new
    - CorrectnessService::capability
    - delete
    - CorrectnessService::info
    - map
    - ServiceInfo::scheme
    linkageType: ''
    returnType: Result
    signature: 'fn delete(&self, ctx: &OperationContext) -> Result<Self::Deleter>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: CorrectnessService::capability
      Src: /src/opendal/core/core/src/layers/correctness_check.rs:208,1
    - Dst: CorrectnessService::info
      Src: /src/opendal/core/core/src/layers/correctness_check.rs:209,1
    - Dst: ServiceInfo::scheme
      Src: /src/opendal/core/core/src/layers/correctness_check.rs:209,1
    - Dst: OpStat::if_not_exists
      Src: /src/opendal/core/core/src/layers/correctness_check.rs:210,1
    - Dst: Err
      Src: /src/opendal/core/core/src/layers/correctness_check.rs:211,1
    - Dst: new_unsupported_error
      Src: /src/opendal/core/core/src/layers/correctness_check.rs:211,1
    - Dst: OpStat::if_match
      Src: /src/opendal/core/core/src/layers/correctness_check.rs:217,1
    - Dst: Option::is_some
      Src: /src/opendal/core/core/src/layers/correctness_check.rs:217,1
    - Dst: Err
      Src: /src/opendal/core/core/src/layers/correctness_check.rs:218,1
    - Dst: new_unsupported_error
      Src: /src/opendal/core/core/src/layers/correctness_check.rs:218,1
    - Dst: OpStat::source_version
      Src: /src/opendal/core/core/src/layers/correctness_check.rs:220,1
    - Dst: Self::is_some
      Src: /src/opendal/core/core/src/layers/correctness_check.rs:220,1
    - Dst: Err
      Src: /src/opendal/core/core/src/layers/correctness_check.rs:221,1
    - Dst: new_unsupported_error
      Src: /src/opendal/core/core/src/layers/correctness_check.rs:221,1
    - Dst: copy
      Src: /src/opendal/core/core/src/layers/correctness_check.rs:228,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 46
    argCount: 5
    argNames:
    - ctx
    - from
    - to
    - args
    - opts
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    - OpCopy
    - OpCopier
    constantsTouched: []
    func_position:
      end: 229
      start: 200
    functionDepth: 32
    functionLinenumber: 200
    functionLinenumberEnd: 229
    functionName: CorrectnessService::copy
    functionSourceFile: /src/opendal/core/core/src/layers/correctness_check.rs
    functionUses: 0
    functionsReached:
    - Option::is_some
    - CorrectnessService::capability
    - new_unsupported_error
    - Self::is_some
    - CorrectnessService::info
    - Err
    - copy
    - OpStat::source_version
    - ServiceInfo::scheme
    - OpStat::if_match
    - OpStat::if_not_exists
    linkageType: ''
    returnType: Result
    signature: 'fn copy(&self,ctx: &OperationContext,from: &str,to: &str,args: OpCopy,opts:
      OpCopier,) -> Result<Self::Copier>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: list
      Src: /src/opendal/core/core/src/layers/correctness_check.rs:232,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpList
    constantsTouched: []
    func_position:
      end: 233
      start: 231
    functionDepth: 2
    functionLinenumber: 231
    functionLinenumberEnd: 233
    functionName: CorrectnessService::list
    functionSourceFile: /src/opendal/core/core/src/layers/correctness_check.rs
    functionUses: 0
    functionsReached:
    - list
    linkageType: ''
    returnType: Result
    signature: 'fn list(&self, ctx: &OperationContext, path: &str, args: OpList) ->
      Result<Self::Lister>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: create_dir
      Src: /src/opendal/core/core/src/layers/correctness_check.rs:241,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpCreateDir
    constantsTouched: []
    func_position:
      end: 242
      start: 235
    functionDepth: 35
    functionLinenumber: 235
    functionLinenumberEnd: 242
    functionName: CorrectnessService::create_dir
    functionSourceFile: /src/opendal/core/core/src/layers/correctness_check.rs
    functionUses: 0
    functionsReached:
    - create_dir
    linkageType: ''
    returnType: Result
    signature: 'async fn create_dir(&self,ctx: &OperationContext,path: &str,args:
      OpCreateDir,) -> Result<RpCreateDir>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: CorrectnessService::capability
      Src: /src/opendal/core/core/src/layers/correctness_check.rs:251,1
    - Dst: CorrectnessService::info
      Src: /src/opendal/core/core/src/layers/correctness_check.rs:252,1
    - Dst: ServiceInfo::scheme
      Src: /src/opendal/core/core/src/layers/correctness_check.rs:252,1
    - Dst: OpStat::if_not_exists
      Src: /src/opendal/core/core/src/layers/correctness_check.rs:253,1
    - Dst: Err
      Src: /src/opendal/core/core/src/layers/correctness_check.rs:254,1
    - Dst: new_unsupported_error
      Src: /src/opendal/core/core/src/layers/correctness_check.rs:254,1
    - Dst: rename
      Src: /src/opendal/core/core/src/layers/correctness_check.rs:261,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 21
    argCount: 4
    argNames:
    - ctx
    - from
    - to
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    - OpRename
    constantsTouched: []
    func_position:
      end: 262
      start: 244
    functionDepth: 32
    functionLinenumber: 244
    functionLinenumberEnd: 262
    functionName: CorrectnessService::rename
    functionSourceFile: /src/opendal/core/core/src/layers/correctness_check.rs
    functionUses: 0
    functionsReached:
    - CorrectnessService::capability
    - new_unsupported_error
    - CorrectnessService::info
    - Err
    - rename
    - ServiceInfo::scheme
    - OpStat::if_not_exists
    linkageType: ''
    returnType: Result
    signature: 'async fn rename(&self,ctx: &OperationContext,from: &str,to: &str,args:
      OpRename,) -> Result<RpRename>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: presign
      Src: /src/opendal/core/core/src/layers/correctness_check.rs:270,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpPresign
    constantsTouched: []
    func_position:
      end: 271
      start: 264
    functionDepth: 2
    functionLinenumber: 264
    functionLinenumberEnd: 271
    functionName: CorrectnessService::presign
    functionSourceFile: /src/opendal/core/core/src/layers/correctness_check.rs
    functionUses: 0
    functionsReached:
    - presign
    linkageType: ''
    returnType: Result
    signature: 'async fn presign(&self,ctx: &OperationContext,path: &str,args: OpPresign,)
      -> Result<RpPresign>'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 3
    argNames:
    - inner
    - scheme
    - capability
    argTypes:
    - T
    - '&''static str'
    - Capability
    constantsTouched: []
    func_position:
      end: 287
      start: 281
    functionDepth: 0
    functionLinenumber: 281
    functionLinenumberEnd: 287
    functionName: CheckWrapper::new
    functionSourceFile: /src/opendal/core/core/src/layers/correctness_check.rs
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: 'fn new(inner: T, scheme: &''static str, capability: Capability) ->
      Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: OpStat::version
      Src: /src/opendal/core/core/src/layers/correctness_check.rs:290,1
    - Dst: Option::is_some
      Src: /src/opendal/core/core/src/layers/correctness_check.rs:290,1
    - Dst: Err
      Src: /src/opendal/core/core/src/layers/correctness_check.rs:291,1
    - Dst: new_unsupported_error
      Src: /src/opendal/core/core/src/layers/correctness_check.rs:291,1
    - Dst: OpStat::recursive
      Src: /src/opendal/core/core/src/layers/correctness_check.rs:298,1
    - Dst: Err
      Src: /src/opendal/core/core/src/layers/correctness_check.rs:299,1
    - Dst: new_unsupported_error
      Src: /src/opendal/core/core/src/layers/correctness_check.rs:299,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/layers/correctness_check.rs:306,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 30
    argCount: 1
    argNames:
    - args
    argTypes:
    - '&OpDelete'
    constantsTouched: []
    func_position:
      end: 307
      start: 289
    functionDepth: 31
    functionLinenumber: 289
    functionLinenumberEnd: 307
    functionName: CheckWrapper::check_delete
    functionSourceFile: /src/opendal/core/core/src/layers/correctness_check.rs
    functionUses: 1
    functionsReached:
    - OpStat::version
    - Option::is_some
    - Ok
    - new_unsupported_error
    - Err
    - OpStat::recursive
    linkageType: ''
    returnType: Result
    signature: 'fn check_delete(&self, args: &OpDelete) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: CheckWrapper::check_delete
      Src: /src/opendal/core/core/src/layers/correctness_check.rs:312,1
    - Dst: delete
      Src: /src/opendal/core/core/src/layers/correctness_check.rs:313,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - path
    - args
    argTypes:
    - '&str'
    - OpDelete
    constantsTouched: []
    func_position:
      end: 314
      start: 311
    functionDepth: 32
    functionLinenumber: 311
    functionLinenumberEnd: 314
    functionName: CheckWrapper::delete
    functionSourceFile: /src/opendal/core/core/src/layers/correctness_check.rs
    functionUses: 0
    functionsReached:
    - CheckWrapper::check_delete
    - delete
    linkageType: ''
    returnType: Result
    signature: 'async fn delete(&mut self, path: &str, args: OpDelete) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: close
      Src: /src/opendal/core/core/src/layers/correctness_check.rs:317,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 318
      start: 316
    functionDepth: 2
    functionLinenumber: 316
    functionLinenumberEnd: 318
    functionName: CheckWrapper::close
    functionSourceFile: /src/opendal/core/core/src/layers/correctness_check.rs
    functionUses: 0
    functionsReached:
    - close
    linkageType: ''
    returnType: Result
    signature: async fn close(&mut self) -> Result<()>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: new_test_operator
      Src: /src/opendal/core/core/src/layers/correctness_check.rs:469,1
    - Dst: Default::default
      Src: /src/opendal/core/core/src/layers/correctness_check.rs:471,1
    - Dst: read_with
      Src: /src/opendal/core/core/src/layers/correctness_check.rs:473,1
    - Dst: FutureRead::version
      Src: /src/opendal/core/core/src/layers/correctness_check.rs:473,1
    - Dst: new_test_operator
      Src: /src/opendal/core/core/src/layers/correctness_check.rs:477,1
    - Dst: Default::default
      Src: /src/opendal/core/core/src/layers/correctness_check.rs:480,1
    - Dst: read_with
      Src: /src/opendal/core/core/src/layers/correctness_check.rs:482,1
    - Dst: FutureRead::version
      Src: /src/opendal/core/core/src/layers/correctness_check.rs:482,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 19
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 484
      start: 468
    functionDepth: 35
    functionLinenumber: 468
    functionLinenumberEnd: 484
    functionName: tests::test_read
    functionSourceFile: /src/opendal/core/core/src/layers/correctness_check.rs
    functionUses: 0
    functionsReached:
    - read_with
    - new_test_operator
    - FutureRead::version
    - Default::default
    linkageType: ''
    returnType: void
    signature: async fn test_read()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: new_test_operator
      Src: /src/opendal/core/core/src/layers/correctness_check.rs:488,1
    - Dst: Default::default
      Src: /src/opendal/core/core/src/layers/correctness_check.rs:490,1
    - Dst: stat_with
      Src: /src/opendal/core/core/src/layers/correctness_check.rs:492,1
    - Dst: FutureStat::version
      Src: /src/opendal/core/core/src/layers/correctness_check.rs:492,1
    - Dst: new_test_operator
      Src: /src/opendal/core/core/src/layers/correctness_check.rs:496,1
    - Dst: Default::default
      Src: /src/opendal/core/core/src/layers/correctness_check.rs:499,1
    - Dst: stat_with
      Src: /src/opendal/core/core/src/layers/correctness_check.rs:501,1
    - Dst: FutureStat::version
      Src: /src/opendal/core/core/src/layers/correctness_check.rs:501,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 19
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 503
      start: 487
    functionDepth: 35
    functionLinenumber: 487
    functionLinenumberEnd: 503
    functionName: tests::test_stat
    functionSourceFile: /src/opendal/core/core/src/layers/correctness_check.rs
    functionUses: 0
    functionsReached:
    - new_test_operator
    - FutureStat::version
    - stat_with
    - Default::default
    linkageType: ''
    returnType: void
    signature: async fn test_stat()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: new_test_operator
      Src: /src/opendal/core/core/src/layers/correctness_check.rs:507,1
    - Dst: Default::default
      Src: /src/opendal/core/core/src/layers/correctness_check.rs:510,1
    - Dst: write_with
      Src: /src/opendal/core/core/src/layers/correctness_check.rs:512,1
    - Dst: '&str::as_bytes'
      Src: /src/opendal/core/core/src/layers/correctness_check.rs:512,1
    - Dst: append
      Src: /src/opendal/core/core/src/layers/correctness_check.rs:512,1
    - Dst: write_with
      Src: /src/opendal/core/core/src/layers/correctness_check.rs:516,1
    - Dst: '&str::as_bytes'
      Src: /src/opendal/core/core/src/layers/correctness_check.rs:517,1
    - Dst: if_none_match
      Src: /src/opendal/core/core/src/layers/correctness_check.rs:516,1
    - Dst: write_with
      Src: /src/opendal/core/core/src/layers/correctness_check.rs:527,1
    - Dst: '&str::as_bytes'
      Src: /src/opendal/core/core/src/layers/correctness_check.rs:528,1
    - Dst: if_none_match
      Src: /src/opendal/core/core/src/layers/correctness_check.rs:527,1
    - Dst: write_with
      Src: /src/opendal/core/core/src/layers/correctness_check.rs:537,1
    - Dst: '&str::as_bytes'
      Src: /src/opendal/core/core/src/layers/correctness_check.rs:538,1
    - Dst: if_not_exists
      Src: /src/opendal/core/core/src/layers/correctness_check.rs:537,1
    - Dst: new_test_operator
      Src: /src/opendal/core/core/src/layers/correctness_check.rs:543,1
    - Dst: Default::default
      Src: /src/opendal/core/core/src/layers/correctness_check.rs:548,1
    - Dst: writer_with
      Src: /src/opendal/core/core/src/layers/correctness_check.rs:550,1
    - Dst: append
      Src: /src/opendal/core/core/src/layers/correctness_check.rs:550,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 47
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 552
      start: 506
    functionDepth: 31
    functionLinenumber: 506
    functionLinenumberEnd: 552
    functionName: tests::test_write_with
    functionSourceFile: /src/opendal/core/core/src/layers/correctness_check.rs
    functionUses: 0
    functionsReached:
    - new_test_operator
    - Default::default
    - writer_with
    - if_none_match
    - append
    - '&str::as_bytes'
    - if_not_exists
    - write_with
    linkageType: ''
    returnType: void
    signature: async fn test_write_with()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: new_test_operator
      Src: /src/opendal/core/core/src/layers/correctness_check.rs:556,1
    - Dst: Default::default
      Src: /src/opendal/core/core/src/layers/correctness_check.rs:558,1
    - Dst: delete_with
      Src: /src/opendal/core/core/src/layers/correctness_check.rs:560,1
    - Dst: FutureDelete::version
      Src: /src/opendal/core/core/src/layers/correctness_check.rs:560,1
    - Dst: new_test_operator
      Src: /src/opendal/core/core/src/layers/correctness_check.rs:564,1
    - Dst: Default::default
      Src: /src/opendal/core/core/src/layers/correctness_check.rs:567,1
    - Dst: delete_with
      Src: /src/opendal/core/core/src/layers/correctness_check.rs:569,1
    - Dst: FutureDelete::version
      Src: /src/opendal/core/core/src/layers/correctness_check.rs:569,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 18
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 571
      start: 555
    functionDepth: 35
    functionLinenumber: 555
    functionLinenumberEnd: 571
    functionName: tests::test_delete
    functionSourceFile: /src/opendal/core/core/src/layers/correctness_check.rs
    functionUses: 0
    functionsReached:
    - delete_with
    - new_test_operator
    - FutureDelete::version
    - Default::default
    linkageType: ''
    returnType: void
    signature: async fn test_delete()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: new_test_operator
      Src: /src/opendal/core/core/src/layers/correctness_check.rs:575,1
    - Dst: Default::default
      Src: /src/opendal/core/core/src/layers/correctness_check.rs:577,1
    - Dst: rename_with
      Src: /src/opendal/core/core/src/layers/correctness_check.rs:579,1
    - Dst: FutureRename::if_not_exists
      Src: /src/opendal/core/core/src/layers/correctness_check.rs:579,1
    - Dst: new_test_operator
      Src: /src/opendal/core/core/src/layers/correctness_check.rs:583,1
    - Dst: Default::default
      Src: /src/opendal/core/core/src/layers/correctness_check.rs:586,1
    - Dst: rename_with
      Src: /src/opendal/core/core/src/layers/correctness_check.rs:588,1
    - Dst: FutureRename::if_not_exists
      Src: /src/opendal/core/core/src/layers/correctness_check.rs:588,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 19
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 590
      start: 574
    functionDepth: 35
    functionLinenumber: 574
    functionLinenumberEnd: 590
    functionName: tests::test_rename_with_if_not_exists
    functionSourceFile: /src/opendal/core/core/src/layers/correctness_check.rs
    functionUses: 0
    functionsReached:
    - FutureRename::if_not_exists
    - new_test_operator
    - rename_with
    - Default::default
    linkageType: ''
    returnType: void
    signature: async fn test_rename_with_if_not_exists()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::options
      Src: /src/opendal/core/core/src/services/memory/config.rs:36,1
    - Dst: Result::clone
      Src: /src/opendal/core/core/src/services/memory/config.rs:36,1
    - Dst: Result::contains_key
      Src: /src/opendal/core/core/src/services/memory/config.rs:37,1
    - Dst: Result::root
      Src: /src/opendal/core/core/src/services/memory/config.rs:38,1
    - Dst: Result::filter
      Src: /src/opendal/core/core/src/services/memory/config.rs:38,1
    - Dst: Result::is_empty
      Src: /src/opendal/core/core/src/services/memory/config.rs:38,1
    - Dst: Result::insert
      Src: /src/opendal/core/core/src/services/memory/config.rs:40,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/core/src/services/memory/config.rs:40,1
    - Dst: Result::to_string
      Src: /src/opendal/core/core/src/services/memory/config.rs:40,1
    - Dst: Self::from_iter
      Src: /src/opendal/core/core/src/services/memory/config.rs:43,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 25
    argCount: 1
    argNames:
    - uri
    argTypes:
    - '&crate::types::OperatorUri'
    constantsTouched: []
    func_position:
      end: 44
      start: 35
    functionDepth: 35
    functionLinenumber: 35
    functionLinenumberEnd: 44
    functionName: MemoryConfig::from_uri
    functionSourceFile: /src/opendal/core/core/src/services/memory/config.rs
    functionUses: 0
    functionsReached:
    - Result::clone
    - Self::from_iter
    - Result::to_string
    - Result::filter
    - Result::insert
    - Result::is_empty
    - Result::root
    - Result::contains_key
    - '&str::to_string'
    - Result::options
    linkageType: ''
    returnType: crate::Result
    signature: 'fn from_uri(uri: &crate::types::OperatorUri) -> crate::Result<Self>'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 48
      start: 46
    functionDepth: 0
    functionLinenumber: 46
    functionLinenumberEnd: 48
    functionName: MemoryConfig::into_builder
    functionSourceFile: /src/opendal/core/core/src/services/memory/config.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Self::Builder
    signature: fn into_builder(self) -> Self::Builder
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: OperatorUri::new
      Src: /src/opendal/core/services/fs/src/config.rs:62,1
    - Dst: Vec::<(String, String)>::new
      Src: /src/opendal/core/services/fs/src/config.rs:62,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/services/fs/src/config.rs:62,1
    - Dst: FsConfig::from_uri
      Src: /src/opendal/core/services/fs/src/config.rs:63,1
    - Dst: opendal_core::Result::unwrap
      Src: /src/opendal/core/services/fs/src/config.rs:63,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 65
      start: 61
    functionDepth: 29
    functionLinenumber: 61
    functionLinenumberEnd: 65
    functionName: tests::from_uri_extracts_root
    functionSourceFile: /src/opendal/core/services/fs/src/config.rs
    functionUses: 0
    functionsReached:
    - Vec::<(String, String)>::new
    - OperatorUri::new
    - Result::unwrap
    - FsConfig::from_uri
    - opendal_core::Result::unwrap
    linkageType: ''
    returnType: void
    signature: fn from_uri_extracts_root()
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - core
    - root
    argTypes:
    - Arc<MemoryCore>
    - String
    constantsTouched: []
    func_position:
      end: 33
      start: 31
    functionDepth: 0
    functionLinenumber: 31
    functionLinenumberEnd: 33
    functionName: MemoryDeleter::new
    functionSourceFile: /src/opendal/core/core/src/services/memory/deleter.rs
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(core: Arc<MemoryCore>, root: String) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/core/src/services/memory/deleter.rs:38,1
    - Dst: delete
      Src: /src/opendal/core/core/src/services/memory/deleter.rs:39,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/services/memory/deleter.rs:40,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 2
    argNames:
    - path
    argTypes:
    - String
    - OpDelete
    constantsTouched: []
    func_position:
      end: 41
      start: 37
    functionDepth: 32
    functionLinenumber: 37
    functionLinenumberEnd: 41
    functionName: MemoryDeleter::delete_once
    functionSourceFile: /src/opendal/core/core/src/services/memory/deleter.rs
    functionUses: 0
    functionsReached:
    - Ok
    - build_abs_path
    - delete
    linkageType: ''
    returnType: Result
    signature: 'async fn delete_once(&self, path: String, _: OpDelete) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::to_string
      Src: /src/opendal/core/core/src/services/memory/lister.rs:32,1
    - Dst: into_iter
      Src: /src/opendal/core/core/src/services/memory/lister.rs:33,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - root
    - keys
    argTypes:
    - '&str'
    - Vec<String>
    constantsTouched: []
    func_position:
      end: 35
      start: 30
    functionDepth: 2
    functionLinenumber: 30
    functionLinenumberEnd: 35
    functionName: MemoryLister::new
    functionSourceFile: /src/opendal/core/core/src/services/memory/lister.rs
    functionUses: 1
    functionsReached:
    - Result::to_string
    - into_iter
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(root: &str, keys: Vec<String>) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: next
      Src: /src/opendal/core/core/src/services/memory/lister.rs:40,1
    - Dst: FoyerKey::ends_with
      Src: /src/opendal/core/core/src/services/memory/lister.rs:42,1
    - Dst: build_rel_path
      Src: /src/opendal/core/core/src/services/memory/lister.rs:47,1
    - Dst: is_empty
      Src: /src/opendal/core/core/src/services/memory/lister.rs:48,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/core/src/services/memory/lister.rs:49,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/services/memory/lister.rs:51,1
    - Dst: Some
      Src: /src/opendal/core/core/src/services/memory/lister.rs:51,1
    - Dst: oio::Entry::new
      Src: /src/opendal/core/core/src/services/memory/lister.rs:51,1
    - Dst: Metadata::new
      Src: /src/opendal/core/core/src/services/memory/lister.rs:51,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/services/memory/lister.rs:53,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 26
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 55
      start: 39
    functionDepth: 4
    functionLinenumber: 39
    functionLinenumberEnd: 55
    functionName: MemoryLister::next
    functionSourceFile: /src/opendal/core/core/src/services/memory/lister.rs
    functionUses: 0
    functionsReached:
    - next
    - Metadata::new
    - oio::Entry::new
    - Ok
    - build_rel_path
    - is_empty
    - Some
    - '&str::to_string'
    - FoyerKey::ends_with
    linkageType: ''
    returnType: Result
    signature: async fn next(&mut self) -> Result<Option<oio::Entry>>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::debug_struct
      Src: /src/opendal/core/core/src/services/memory/core.rs:40,1
    - Dst: finish_non_exhaustive
      Src: /src/opendal/core/core/src/services/memory/core.rs:40,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - f
    argTypes:
    - '&mut std::fmt::Formatter<''_>'
    constantsTouched: []
    func_position:
      end: 41
      start: 39
    functionDepth: 0
    functionLinenumber: 39
    functionLinenumberEnd: 41
    functionName: MemoryCore::fmt
    functionSourceFile: /src/opendal/core/core/src/services/memory/core.rs
    functionUses: 0
    functionsReached:
    - Result::debug_struct
    - finish_non_exhaustive
    linkageType: ''
    returnType: std::fmt::Result
    signature: 'fn fmt(&self, f: &mut std::fmt::Formatter<''_>) -> std::fmt::Result'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Arc::new
      Src: /src/opendal/core/core/src/services/memory/core.rs:47,1
    - Dst: Mutex::new
      Src: /src/opendal/core/core/src/services/memory/core.rs:47,1
    - Dst: BTreeMap::new
      Src: /src/opendal/core/core/src/services/memory/core.rs:47,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 49
      start: 45
    functionDepth: 2
    functionLinenumber: 45
    functionLinenumberEnd: 49
    functionName: MemoryCore::new
    functionSourceFile: /src/opendal/core/core/src/services/memory/core.rs
    functionUses: 1
    functionsReached:
    - Arc::new
    - Mutex::new
    - BTreeMap::new
    linkageType: ''
    returnType: Self
    signature: pub fn new() -> Self
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/core/core/src/services/memory/core.rs:52,1
    - Dst: lock
      Src: /src/opendal/core/core/src/services/memory/core.rs:52,1
    - Dst: unwrap
      Src: /src/opendal/core/core/src/services/memory/core.rs:52,1
    - Dst: get
      Src: /src/opendal/core/core/src/services/memory/core.rs:52,1
    - Dst: cloned
      Src: /src/opendal/core/core/src/services/memory/core.rs:52,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 1
    argNames:
    - key
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 53
      start: 51
    functionDepth: 33
    functionLinenumber: 51
    functionLinenumberEnd: 53
    functionName: MemoryCore::get
    functionSourceFile: /src/opendal/core/core/src/services/memory/core.rs
    functionUses: 0
    functionsReached:
    - get
    - lock
    - Ok
    - unwrap
    - cloned
    linkageType: ''
    returnType: Result
    signature: 'pub fn get(&self, key: &str) -> Result<Option<MemoryValue>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/opendal/core/core/src/services/memory/core.rs:56,1
    - Dst: unwrap
      Src: /src/opendal/core/core/src/services/memory/core.rs:56,1
    - Dst: insert
      Src: /src/opendal/core/core/src/services/memory/core.rs:56,1
    - Dst: FoyerKey::to_string
      Src: /src/opendal/core/core/src/services/memory/core.rs:56,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/services/memory/core.rs:57,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 2
    argNames:
    - key
    - value
    argTypes:
    - '&str'
    - MemoryValue
    constantsTouched: []
    func_position:
      end: 58
      start: 55
    functionDepth: 33
    functionLinenumber: 55
    functionLinenumberEnd: 58
    functionName: MemoryCore::set
    functionSourceFile: /src/opendal/core/core/src/services/memory/core.rs
    functionUses: 0
    functionsReached:
    - insert
    - Ok
    - lock
    - unwrap
    - FoyerKey::to_string
    linkageType: ''
    returnType: Result
    signature: 'pub fn set(&self, key: &str, value: MemoryValue) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/opendal/core/core/src/services/memory/core.rs:61,1
    - Dst: unwrap
      Src: /src/opendal/core/core/src/services/memory/core.rs:61,1
    - Dst: anyhow::Result::entry
      Src: /src/opendal/core/core/src/services/memory/core.rs:62,1
    - Dst: FoyerKey::to_string
      Src: /src/opendal/core/core/src/services/memory/core.rs:62,1
    - Dst: crate::Entry::insert
      Src: /src/opendal/core/core/src/services/memory/core.rs:63,1
    - Dst: Err
      Src: /src/opendal/core/core/src/services/memory/core.rs:65,1
    - Dst: Error::new
      Src: /src/opendal/core/core/src/services/memory/core.rs:65,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/services/memory/core.rs:71,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 19
    argCount: 2
    argNames:
    - key
    - value
    argTypes:
    - '&str'
    - MemoryValue
    constantsTouched: []
    func_position:
      end: 72
      start: 60
    functionDepth: 33
    functionLinenumber: 60
    functionLinenumberEnd: 72
    functionName: MemoryCore::set_if_not_exists
    functionSourceFile: /src/opendal/core/core/src/services/memory/core.rs
    functionUses: 0
    functionsReached:
    - lock
    - Ok
    - anyhow::Result::entry
    - unwrap
    - FoyerKey::to_string
    - Err
    - Error::new
    - crate::Entry::insert
    linkageType: ''
    returnType: Result
    signature: 'pub fn set_if_not_exists(&self, key: &str, value: MemoryValue) ->
      Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/opendal/core/core/src/services/memory/core.rs:75,1
    - Dst: unwrap
      Src: /src/opendal/core/core/src/services/memory/core.rs:75,1
    - Dst: remove
      Src: /src/opendal/core/core/src/services/memory/core.rs:75,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/services/memory/core.rs:76,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 1
    argNames:
    - key
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 77
      start: 74
    functionDepth: 33
    functionLinenumber: 74
    functionLinenumberEnd: 77
    functionName: MemoryCore::delete
    functionSourceFile: /src/opendal/core/core/src/services/memory/core.rs
    functionUses: 0
    functionsReached:
    - remove
    - unwrap
    - Ok
    - lock
    linkageType: ''
    returnType: Result
    signature: 'pub fn delete(&self, key: &str) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/opendal/core/core/src/services/memory/core.rs:80,1
    - Dst: unwrap
      Src: /src/opendal/core/core/src/services/memory/core.rs:80,1
    - Dst: Result::is_empty
      Src: /src/opendal/core/core/src/services/memory/core.rs:82,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/services/memory/core.rs:83,1
    - Dst: anyhow::Result::keys
      Src: /src/opendal/core/core/src/services/memory/core.rs:83,1
    - Dst: cloned
      Src: /src/opendal/core/core/src/services/memory/core.rs:83,1
    - Dst: collect
      Src: /src/opendal/core/core/src/services/memory/core.rs:83,1
    - Dst: Vec::new
      Src: /src/opendal/core/core/src/services/memory/core.rs:86,1
    - Dst: anyhow::Result::range
      Src: /src/opendal/core/core/src/services/memory/core.rs:87,1
    - Dst: Result::to_string
      Src: /src/opendal/core/core/src/services/memory/core.rs:87,1
    - Dst: FoyerKey::starts_with
      Src: /src/opendal/core/core/src/services/memory/core.rs:88,1
    - Dst: push
      Src: /src/opendal/core/core/src/services/memory/core.rs:91,1
    - Dst: FoyerKey::clone
      Src: /src/opendal/core/core/src/services/memory/core.rs:91,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/services/memory/core.rs:93,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 39
    argCount: 1
    argNames:
    - prefix
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 94
      start: 79
    functionDepth: 33
    functionLinenumber: 79
    functionLinenumberEnd: 94
    functionName: MemoryCore::scan
    functionSourceFile: /src/opendal/core/core/src/services/memory/core.rs
    functionUses: 0
    functionsReached:
    - collect
    - anyhow::Result::range
    - Result::to_string
    - lock
    - Ok
    - FoyerKey::starts_with
    - push
    - unwrap
    - Result::is_empty
    - cloned
    - Vec::new
    - FoyerKey::clone
    - anyhow::Result::keys
    linkageType: ''
    returnType: Result
    signature: 'pub fn scan(&self, prefix: &str) -> Result<Vec<String>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 3
    argNames:
    - core
    - path
    - op
    argTypes:
    - Arc<MemoryCore>
    - String
    - OpWrite
    constantsTouched: []
    func_position:
      end: 40
      start: 33
    functionDepth: 0
    functionLinenumber: 33
    functionLinenumberEnd: 40
    functionName: MemoryWriter::new
    functionSourceFile: /src/opendal/core/core/src/services/memory/writer.rs
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(core: Arc<MemoryCore>, path: String, op: OpWrite) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: take
      Src: /src/opendal/core/core/src/services/memory/writer.rs:45,1
    - Dst: unwrap_or_default
      Src: /src/opendal/core/core/src/services/memory/writer.rs:45,1
    - Dst: io::Result::push
      Src: /src/opendal/core/core/src/services/memory/writer.rs:46,1
    - Dst: Some
      Src: /src/opendal/core/core/src/services/memory/writer.rs:47,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/services/memory/writer.rs:48,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 14
    argCount: 1
    argNames:
    - bs
    argTypes:
    - Buffer
    constantsTouched: []
    func_position:
      end: 49
      start: 44
    functionDepth: 2
    functionLinenumber: 44
    functionLinenumberEnd: 49
    functionName: MemoryWriter::write
    functionSourceFile: /src/opendal/core/core/src/services/memory/writer.rs
    functionUses: 0
    functionsReached:
    - io::Result::push
    - Ok
    - Some
    - take
    - unwrap_or_default
    linkageType: ''
    returnType: Result
    signature: 'async fn write(&mut self, bs: Buffer) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: take
      Src: /src/opendal/core/core/src/services/memory/writer.rs:52,1
    - Dst: unwrap_or_default
      Src: /src/opendal/core/core/src/services/memory/writer.rs:52,1
    - Dst: io::Result::collect
      Src: /src/opendal/core/core/src/services/memory/writer.rs:53,1
    - Dst: Metadata::new
      Src: /src/opendal/core/core/src/services/memory/writer.rs:55,1
    - Dst: anyhow::Result::set_content_length
      Src: /src/opendal/core/core/src/services/memory/writer.rs:56,1
    - Dst: Result::len
      Src: /src/opendal/core/core/src/services/memory/writer.rs:56,1
    - Dst: cache_control
      Src: /src/opendal/core/core/src/services/memory/writer.rs:58,1
    - Dst: anyhow::Result::set_cache_control
      Src: /src/opendal/core/core/src/services/memory/writer.rs:59,1
    - Dst: content_disposition
      Src: /src/opendal/core/core/src/services/memory/writer.rs:61,1
    - Dst: anyhow::Result::set_content_disposition
      Src: /src/opendal/core/core/src/services/memory/writer.rs:62,1
    - Dst: content_type
      Src: /src/opendal/core/core/src/services/memory/writer.rs:64,1
    - Dst: anyhow::Result::set_content_type
      Src: /src/opendal/core/core/src/services/memory/writer.rs:65,1
    - Dst: content_encoding
      Src: /src/opendal/core/core/src/services/memory/writer.rs:67,1
    - Dst: anyhow::Result::set_content_encoding
      Src: /src/opendal/core/core/src/services/memory/writer.rs:68,1
    - Dst: anyhow::Result::clone
      Src: /src/opendal/core/core/src/services/memory/writer.rs:72,1
    - Dst: if_not_exists
      Src: /src/opendal/core/core/src/services/memory/writer.rs:76,1
    - Dst: set_if_not_exists
      Src: /src/opendal/core/core/src/services/memory/writer.rs:77,1
    - Dst: set
      Src: /src/opendal/core/core/src/services/memory/writer.rs:79,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/services/memory/writer.rs:82,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 69
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 83
      start: 51
    functionDepth: 32
    functionLinenumber: 51
    functionLinenumberEnd: 83
    functionName: MemoryWriter::close
    functionSourceFile: /src/opendal/core/core/src/services/memory/writer.rs
    functionUses: 0
    functionsReached:
    - anyhow::Result::set_content_length
    - Result::len
    - if_not_exists
    - set_if_not_exists
    - anyhow::Result::set_cache_control
    - Ok
    - take
    - content_type
    - unwrap_or_default
    - Metadata::new
    - content_encoding
    - anyhow::Result::set_content_type
    - cache_control
    - set
    - anyhow::Result::clone
    - content_disposition
    - io::Result::collect
    - anyhow::Result::set_content_encoding
    - anyhow::Result::set_content_disposition
    linkageType: ''
    returnType: Result
    signature: async fn close(&mut self) -> Result<Metadata>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/core/core/src/services/memory/writer.rs:87,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 88
      start: 85
    functionDepth: 0
    functionLinenumber: 85
    functionLinenumberEnd: 88
    functionName: MemoryWriter::abort
    functionSourceFile: /src/opendal/core/core/src/services/memory/writer.rs
    functionUses: 0
    functionsReached:
    - Ok
    linkageType: ''
    returnType: Result
    signature: async fn abort(&mut self) -> Result<()>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: register::<Memory>
      Src: /src/opendal/core/core/src/services/memory/mod.rs:33,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - registry
    argTypes:
    - '&crate::OperatorRegistry'
    constantsTouched: []
    func_position:
      end: 34
      start: 32
    functionDepth: 0
    functionLinenumber: 32
    functionLinenumberEnd: 34
    functionName: register_memory_service
    functionSourceFile: /src/opendal/core/core/src/services/memory/mod.rs
    functionUses: 1
    functionsReached:
    - register::<Memory>
    linkageType: ''
    returnType: void
    signature: 'pub fn register_memory_service(registry: &crate::OperatorRegistry)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Some
      Src: /src/opendal/core/core/src/services/memory/backend.rs:41,1
    - Dst: into
      Src: /src/opendal/core/core/src/services/memory/backend.rs:41,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - path
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 43
      start: 40
    functionDepth: 29
    functionLinenumber: 40
    functionLinenumberEnd: 43
    functionName: MemoryBuilder::root
    functionSourceFile: /src/opendal/core/core/src/services/memory/backend.rs
    functionUses: 0
    functionsReached:
    - into
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn root(mut self, path: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: normalize_root
      Src: /src/opendal/core/core/src/services/memory/backend.rs:50,1
    - Dst: as_deref
      Src: /src/opendal/core/core/src/services/memory/backend.rs:50,1
    - Dst: unwrap_or
      Src: /src/opendal/core/core/src/services/memory/backend.rs:50,1
    - Dst: MemoryCore::new
      Src: /src/opendal/core/core/src/services/memory/backend.rs:52,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/services/memory/backend.rs:53,1
    - Dst: MemoryBackend::new
      Src: /src/opendal/core/core/src/services/memory/backend.rs:53,1
    - Dst: Self::with_normalized_root
      Src: /src/opendal/core/core/src/services/memory/backend.rs:53,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 54
      start: 49
    functionDepth: 34
    functionLinenumber: 49
    functionLinenumberEnd: 54
    functionName: MemoryBuilder::build
    functionSourceFile: /src/opendal/core/core/src/services/memory/backend.rs
    functionUses: 0
    functionsReached:
    - Ok
    - as_deref
    - normalize_root
    - MemoryBackend::new
    - Self::with_normalized_root
    - MemoryCore::new
    - unwrap_or
    linkageType: ''
    returnType: Result
    signature: fn build(self) -> Result<impl Service>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Default::default
      Src: /src/opendal/core/core/src/services/memory/backend.rs:82,1
    - Dst: ServiceInfo::new
      Src: /src/opendal/core/core/src/services/memory/backend.rs:86,1
    - Dst: Arc::new
      Src: /src/opendal/core/core/src/services/memory/backend.rs:87,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/core/src/services/memory/backend.rs:88,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - core
    argTypes:
    - MemoryCore
    constantsTouched: []
    func_position:
      end: 91
      start: 67
    functionDepth: 33
    functionLinenumber: 67
    functionLinenumberEnd: 91
    functionName: MemoryBackend::new
    functionSourceFile: /src/opendal/core/core/src/services/memory/backend.rs
    functionUses: 1
    functionsReached:
    - ServiceInfo::new
    - Default::default
    - '&str::to_string'
    - Arc::new
    linkageType: ''
    returnType: Self
    signature: 'fn new(core: MemoryCore) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: ServiceInfo::new
      Src: /src/opendal/core/core/src/services/memory/backend.rs:94,1
    - Dst: Result::clone
      Src: /src/opendal/core/core/src/services/memory/backend.rs:94,1
    - Dst: name
      Src: /src/opendal/core/core/src/services/memory/backend.rs:94,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 1
    argNames:
    - root
    argTypes:
    - String
    constantsTouched: []
    func_position:
      end: 97
      start: 93
    functionDepth: 33
    functionLinenumber: 93
    functionLinenumberEnd: 97
    functionName: MemoryBackend::with_normalized_root
    functionSourceFile: /src/opendal/core/core/src/services/memory/backend.rs
    functionUses: 0
    functionsReached:
    - Result::clone
    - ServiceInfo::new
    - name
    linkageType: ''
    returnType: Self
    signature: 'fn with_normalized_root(mut self, root: String) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: clone
      Src: /src/opendal/core/core/src/services/memory/backend.rs:108,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 109
      start: 107
    functionDepth: 2
    functionLinenumber: 107
    functionLinenumberEnd: 109
    functionName: MemoryBackend::info
    functionSourceFile: /src/opendal/core/core/src/services/memory/backend.rs
    functionUses: 0
    functionsReached:
    - clone
    linkageType: ''
    returnType: ServiceInfo
    signature: fn info(&self) -> ServiceInfo
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 113
      start: 111
    functionDepth: 0
    functionLinenumber: 111
    functionLinenumberEnd: 113
    functionName: MemoryBackend::capability
    functionSourceFile: /src/opendal/core/core/src/services/memory/backend.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Capability
    signature: fn capability(&self) -> Capability
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/core/core/src/services/memory/backend.rs:121,1
    - Dst: Error::new
      Src: /src/opendal/core/core/src/services/memory/backend.rs:121,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames: []
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpCreateDir
    constantsTouched: []
    func_position:
      end: 125
      start: 115
    functionDepth: 36
    functionLinenumber: 115
    functionLinenumberEnd: 125
    functionName: MemoryBackend::create_dir
    functionSourceFile: /src/opendal/core/core/src/services/memory/backend.rs
    functionUses: 0
    functionsReached:
    - Error::new
    - Err
    linkageType: ''
    returnType: Result
    signature: 'async fn create_dir(&self,_: &OperationContext,_: &str,_: OpCreateDir,)
      -> Result<RpCreateDir>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/core/src/services/memory/backend.rs:128,1
    - Dst: build_abs_path
      Src: /src/opendal/core/core/src/services/memory/backend.rs:130,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/services/memory/backend.rs:131,1
    - Dst: RpStat::new
      Src: /src/opendal/core/core/src/services/memory/backend.rs:131,1
    - Dst: Metadata::new
      Src: /src/opendal/core/core/src/services/memory/backend.rs:131,1
    - Dst: get
      Src: /src/opendal/core/core/src/services/memory/backend.rs:133,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/services/memory/backend.rs:134,1
    - Dst: RpStat::new
      Src: /src/opendal/core/core/src/services/memory/backend.rs:134,1
    - Dst: Err
      Src: /src/opendal/core/core/src/services/memory/backend.rs:135,1
    - Dst: Error::new
      Src: /src/opendal/core/core/src/services/memory/backend.rs:135,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 24
    argCount: 3
    argNames:
    - path
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpStat
    constantsTouched: []
    func_position:
      end: 141
      start: 127
    functionDepth: 36
    functionLinenumber: 127
    functionLinenumberEnd: 141
    functionName: MemoryBackend::stat
    functionSourceFile: /src/opendal/core/core/src/services/memory/backend.rs
    functionUses: 0
    functionsReached:
    - Metadata::new
    - get
    - Ok
    - RpStat::new
    - build_abs_path
    - Err
    - Error::new
    linkageType: ''
    returnType: Result
    signature: 'async fn stat(&self, _: &OperationContext, path: &str, _: OpStat)
      -> Result<RpStat>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/core/core/src/services/memory/backend.rs:144,1
    - Dst: oio::StreamReader::new
      Src: /src/opendal/core/core/src/services/memory/backend.rs:144,1
    - Dst: MemoryReader::new
      Src: /src/opendal/core/core/src/services/memory/backend.rs:144,1
    - Dst: MemoryBackend::clone
      Src: /src/opendal/core/core/src/services/memory/backend.rs:145,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - _ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpRead
    constantsTouched: []
    func_position:
      end: 149
      start: 143
    functionDepth: 3
    functionLinenumber: 143
    functionLinenumberEnd: 149
    functionName: MemoryBackend::read
    functionSourceFile: /src/opendal/core/core/src/services/memory/backend.rs
    functionUses: 0
    functionsReached:
    - oio::StreamReader::new
    - MemoryReader::new
    - MemoryBackend::clone
    - Ok
    linkageType: ''
    returnType: Result
    signature: 'fn read(&self, _ctx: &OperationContext, path: &str, args: OpRead)
      -> Result<Self::Reader>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/core/src/services/memory/backend.rs:152,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/services/memory/backend.rs:153,1
    - Dst: MemoryWriter::new
      Src: /src/opendal/core/core/src/services/memory/backend.rs:153,1
    - Dst: clone
      Src: /src/opendal/core/core/src/services/memory/backend.rs:153,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 3
    argNames:
    - _ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpWrite
    constantsTouched: []
    func_position:
      end: 154
      start: 151
    functionDepth: 3
    functionLinenumber: 151
    functionLinenumberEnd: 154
    functionName: MemoryBackend::write
    functionSourceFile: /src/opendal/core/core/src/services/memory/backend.rs
    functionUses: 0
    functionsReached:
    - MemoryWriter::new
    - Ok
    - clone
    - build_abs_path
    linkageType: ''
    returnType: Result
    signature: 'fn write(&self, _ctx: &OperationContext, path: &str, args: OpWrite)
      -> Result<Self::Writer>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/core/core/src/services/memory/backend.rs:157,1
    - Dst: oio::OneShotDeleter::new
      Src: /src/opendal/core/core/src/services/memory/backend.rs:157,1
    - Dst: MemoryDeleter::new
      Src: /src/opendal/core/core/src/services/memory/backend.rs:157,1
    - Dst: clone
      Src: /src/opendal/core/core/src/services/memory/backend.rs:158,1
    - Dst: clone
      Src: /src/opendal/core/core/src/services/memory/backend.rs:159,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 1
    argNames:
    - _ctx
    argTypes:
    - '&OperationContext'
    constantsTouched: []
    func_position:
      end: 161
      start: 156
    functionDepth: 2
    functionLinenumber: 156
    functionLinenumberEnd: 161
    functionName: MemoryBackend::delete
    functionSourceFile: /src/opendal/core/core/src/services/memory/backend.rs
    functionUses: 0
    functionsReached:
    - oio::OneShotDeleter::new
    - MemoryDeleter::new
    - clone
    - Ok
    linkageType: ''
    returnType: Result
    signature: 'fn delete(&self, _ctx: &OperationContext) -> Result<Self::Deleter>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/core/src/services/memory/backend.rs:164,1
    - Dst: scan
      Src: /src/opendal/core/core/src/services/memory/backend.rs:165,1
    - Dst: MemoryLister::new
      Src: /src/opendal/core/core/src/services/memory/backend.rs:166,1
    - Dst: oio::HierarchyLister::new
      Src: /src/opendal/core/core/src/services/memory/backend.rs:167,1
    - Dst: OpStat::recursive
      Src: /src/opendal/core/core/src/services/memory/backend.rs:167,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/services/memory/backend.rs:169,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 15
    argCount: 3
    argNames:
    - _ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpList
    constantsTouched: []
    func_position:
      end: 170
      start: 163
    functionDepth: 35
    functionLinenumber: 163
    functionLinenumberEnd: 170
    functionName: MemoryBackend::list
    functionSourceFile: /src/opendal/core/core/src/services/memory/backend.rs
    functionUses: 0
    functionsReached:
    - oio::HierarchyLister::new
    - Ok
    - build_abs_path
    - scan
    - MemoryLister::new
    - OpStat::recursive
    linkageType: ''
    returnType: Result
    signature: 'fn list(&self, _ctx: &OperationContext, path: &str, args: OpList)
      -> Result<Self::Lister>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/core/core/src/services/memory/backend.rs:180,1
    - Dst: Error::new
      Src: /src/opendal/core/core/src/services/memory/backend.rs:180,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 5
    argNames: []
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    - OpCopy
    - OpCopier
    constantsTouched: []
    func_position:
      end: 184
      start: 172
    functionDepth: 36
    functionLinenumber: 172
    functionLinenumberEnd: 184
    functionName: MemoryBackend::copy
    functionSourceFile: /src/opendal/core/core/src/services/memory/backend.rs
    functionUses: 0
    functionsReached:
    - Error::new
    - Err
    linkageType: ''
    returnType: Result
    signature: 'fn copy(&self,_: &OperationContext,_: &str,_: &str,_: OpCopy,_: OpCopier,)
      -> Result<Self::Copier>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/core/core/src/services/memory/backend.rs:193,1
    - Dst: Error::new
      Src: /src/opendal/core/core/src/services/memory/backend.rs:193,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames: []
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    - OpRename
    constantsTouched: []
    func_position:
      end: 197
      start: 186
    functionDepth: 36
    functionLinenumber: 186
    functionLinenumberEnd: 197
    functionName: MemoryBackend::rename
    functionSourceFile: /src/opendal/core/core/src/services/memory/backend.rs
    functionUses: 0
    functionsReached:
    - Error::new
    - Err
    linkageType: ''
    returnType: Result
    signature: 'async fn rename(&self,_: &OperationContext,_: &str,_: &str,_: OpRename,)
      -> Result<RpRename>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/core/core/src/services/memory/backend.rs:200,1
    - Dst: Error::new
      Src: /src/opendal/core/core/src/services/memory/backend.rs:200,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames: []
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpPresign
    constantsTouched: []
    func_position:
      end: 204
      start: 199
    functionDepth: 36
    functionLinenumber: 199
    functionLinenumberEnd: 204
    functionName: MemoryBackend::presign
    functionSourceFile: /src/opendal/core/core/src/services/memory/backend.rs
    functionUses: 0
    functionsReached:
    - Error::new
    - Err
    linkageType: ''
    returnType: Result
    signature: 'async fn presign(&self, _: &OperationContext, _: &str, _: OpPresign)
      -> Result<RpPresign>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: to_string
      Src: /src/opendal/core/core/src/services/memory/backend.rs:217,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - backend
    - path
    argTypes:
    - MemoryBackend
    - '&str'
    - OpRead
    constantsTouched: []
    func_position:
      end: 219
      start: 214
    functionDepth: 2
    functionLinenumber: 214
    functionLinenumberEnd: 219
    functionName: MemoryReader::new
    functionSourceFile: /src/opendal/core/core/src/services/memory/backend.rs
    functionUses: 1
    functionsReached:
    - to_string
    linkageType: ''
    returnType: Self
    signature: 'fn new(backend: MemoryBackend, path: &str, _: OpRead) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: as_str
      Src: /src/opendal/core/core/src/services/memory/backend.rs:225,1
    - Dst: build_abs_path
      Src: /src/opendal/core/core/src/services/memory/backend.rs:226,1
    - Dst: get
      Src: /src/opendal/core/core/src/services/memory/backend.rs:228,1
    - Dst: Err
      Src: /src/opendal/core/core/src/services/memory/backend.rs:231,1
    - Dst: Error::new
      Src: /src/opendal/core/core/src/services/memory/backend.rs:231,1
    - Dst: len
      Src: /src/opendal/core/core/src/services/memory/backend.rs:238,1
    - Dst: slice
      Src: /src/opendal/core/core/src/services/memory/backend.rs:239,1
    - Dst: (Vec::to_content_range
      Src: /src/opendal/core/core/src/services/memory/backend.rs:241,1
    - Dst: len
      Src: /src/opendal/core/core/src/services/memory/backend.rs:241,1
    - Dst: Metadata::new
      Src: /src/opendal/core/core/src/services/memory/backend.rs:242,1
    - Dst: Self::with_content_length
      Src: /src/opendal/core/core/src/services/memory/backend.rs:242,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/services/memory/backend.rs:243,1
    - Dst: RpRead::new
      Src: /src/opendal/core/core/src/services/memory/backend.rs:244,1
    - Dst: Box::new
      Src: /src/opendal/core/core/src/services/memory/backend.rs:245,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 39
    argCount: 1
    argNames:
    - range
    argTypes:
    - BytesRange
    constantsTouched: []
    func_position:
      end: 247
      start: 223
    functionDepth: 36
    functionLinenumber: 223
    functionLinenumberEnd: 247
    functionName: MemoryReader::open
    functionSourceFile: /src/opendal/core/core/src/services/memory/backend.rs
    functionUses: 0
    functionsReached:
    - Metadata::new
    - get
    - slice
    - Ok
    - Box::new
    - Self::with_content_length
    - build_abs_path
    - Error::new
    - Err
    - as_str
    - RpRead::new
    - (Vec::to_content_range
    - len
    linkageType: ''
    returnType: Result
    signature: 'async fn open(&self, range: BytesRange) -> Result<(RpRead, Box<dyn
      oio::ReadStreamDyn>)>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::debug_struct
      Src: /src/opendal/core/core/src/types/metadata.rs:70,1
    - Dst: field
      Src: /src/opendal/core/core/src/types/metadata.rs:71,1
    - Dst: field
      Src: /src/opendal/core/core/src/types/metadata.rs:74,1
    - Dst: field
      Src: /src/opendal/core/core/src/types/metadata.rs:77,1
    - Dst: field
      Src: /src/opendal/core/core/src/types/metadata.rs:80,1
    - Dst: field
      Src: /src/opendal/core/core/src/types/metadata.rs:83,1
    - Dst: field
      Src: /src/opendal/core/core/src/types/metadata.rs:86,1
    - Dst: field
      Src: /src/opendal/core/core/src/types/metadata.rs:89,1
    - Dst: field
      Src: /src/opendal/core/core/src/types/metadata.rs:92,1
    - Dst: field
      Src: /src/opendal/core/core/src/types/metadata.rs:95,1
    - Dst: field
      Src: /src/opendal/core/core/src/types/metadata.rs:98,1
    - Dst: field
      Src: /src/opendal/core/core/src/types/metadata.rs:101,1
    - Dst: field
      Src: /src/opendal/core/core/src/types/metadata.rs:104,1
    - Dst: field
      Src: /src/opendal/core/core/src/types/metadata.rs:107,1
    - Dst: finish
      Src: /src/opendal/core/core/src/types/metadata.rs:110,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 94
    argCount: 1
    argNames:
    - f
    argTypes:
    - '&mut fmt::Formatter<''_>'
    constantsTouched: []
    func_position:
      end: 111
      start: 69
    functionDepth: 5
    functionLinenumber: 69
    functionLinenumberEnd: 111
    functionName: Metadata::fmt
    functionSourceFile: /src/opendal/core/core/src/types/metadata.rs
    functionUses: 0
    functionsReached:
    - field
    - finish
    - Result::debug_struct
    linkageType: ''
    returnType: fmt::Result
    signature: 'fn fmt(&self, f: &mut fmt::Formatter<''_>) -> fmt::Result'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self
      Src: /src/opendal/bindings/python/src/metadata.rs:84,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - meta
    argTypes:
    - ocore::Metadata
    constantsTouched: []
    func_position:
      end: 85
      start: 83
    functionDepth: 0
    functionLinenumber: 83
    functionLinenumberEnd: 85
    functionName: Metadata::new
    functionSourceFile: /src/opendal/bindings/python/src/metadata.rs
    functionUses: 185
    functionsReached:
    - Self
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(meta: ocore::Metadata) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Some
      Src: /src/opendal/bindings/nodejs/src/lib.rs:987,1
    - Dst: mode
      Src: /src/opendal/bindings/nodejs/src/lib.rs:987,1
    - Dst: into
      Src: /src/opendal/bindings/nodejs/src/lib.rs:987,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 988
      start: 986
    functionDepth: 29
    functionLinenumber: 986
    functionLinenumberEnd: 988
    functionName: Metadata::mode
    functionSourceFile: /src/opendal/bindings/nodejs/src/lib.rs
    functionUses: 5
    functionsReached:
    - mode
    - into
    - Some
    linkageType: ''
    returnType: Option
    signature: pub fn mode(&self) -> Option<EntryMode>
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - v
    argTypes:
    - EntryMode
    constantsTouched: []
    func_position:
      end: 145
      start: 142
    functionDepth: 0
    functionLinenumber: 142
    functionLinenumberEnd: 145
    functionName: Metadata::set_mode
    functionSourceFile: /src/opendal/core/core/src/types/metadata.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: '&mut Self'
    signature: 'pub fn set_mode(&mut self, v: EntryMode) -> &mut Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - v
    argTypes:
    - EntryMode
    constantsTouched: []
    func_position:
      end: 151
      start: 148
    functionDepth: 0
    functionLinenumber: 148
    functionLinenumberEnd: 151
    functionName: Metadata::with_mode
    functionSourceFile: /src/opendal/core/core/src/types/metadata.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: 'pub fn with_mode(mut self, v: EntryMode) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: is_file
      Src: /src/opendal/bindings/nodejs/src/lib.rs:918,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 919
      start: 917
    functionDepth: 1
    functionLinenumber: 917
    functionLinenumberEnd: 919
    functionName: Metadata::is_file
    functionSourceFile: /src/opendal/bindings/nodejs/src/lib.rs
    functionUses: 2
    functionsReached:
    - is_file
    linkageType: ''
    returnType: bool
    signature: pub fn is_file(&self) -> bool
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Metadata::mode
      Src: /src/opendal/bindings/python/src/metadata.rs:140,1
    - Dst: Option::is_dir
      Src: /src/opendal/bindings/python/src/metadata.rs:140,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 141
      start: 139
    functionDepth: 30
    functionLinenumber: 139
    functionLinenumberEnd: 141
    functionName: Metadata::is_dir
    functionSourceFile: /src/opendal/bindings/python/src/metadata.rs
    functionUses: 1
    functionsReached:
    - Option::is_dir
    - Metadata::mode
    linkageType: ''
    returnType: bool
    signature: pub fn is_dir(&self) -> bool
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 184
      start: 182
    functionDepth: 0
    functionLinenumber: 182
    functionLinenumberEnd: 184
    functionName: Metadata::is_current
    functionSourceFile: /src/opendal/core/core/src/types/metadata.rs
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: Option
    signature: pub fn is_current(&self) -> Option<bool>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Some
      Src: /src/opendal/core/core/src/types/metadata.rs:191,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - is_current
    argTypes:
    - bool
    constantsTouched: []
    func_position:
      end: 193
      start: 190
    functionDepth: 0
    functionLinenumber: 190
    functionLinenumberEnd: 193
    functionName: Metadata::set_is_current
    functionSourceFile: /src/opendal/core/core/src/types/metadata.rs
    functionUses: 0
    functionsReached:
    - Some
    linkageType: ''
    returnType: '&mut Self'
    signature: 'pub fn set_is_current(&mut self, is_current: bool) -> &mut Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - is_current
    argTypes:
    - Option<bool>
    constantsTouched: []
    func_position:
      end: 202
      start: 199
    functionDepth: 0
    functionLinenumber: 199
    functionLinenumberEnd: 202
    functionName: Metadata::with_is_current
    functionSourceFile: /src/opendal/core/core/src/types/metadata.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: 'pub fn with_is_current(mut self, is_current: Option<bool>) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: is_deleted
      Src: /src/opendal/bindings/nodejs/src/lib.rs:925,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 926
      start: 924
    functionDepth: 34
    functionLinenumber: 924
    functionLinenumberEnd: 926
    functionName: Metadata::is_deleted
    functionSourceFile: /src/opendal/bindings/nodejs/src/lib.rs
    functionUses: 2
    functionsReached:
    - is_deleted
    linkageType: ''
    returnType: bool
    signature: pub fn is_deleted(&self) -> bool
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - v
    argTypes:
    - bool
    constantsTouched: []
    func_position:
      end: 223
      start: 220
    functionDepth: 0
    functionLinenumber: 220
    functionLinenumberEnd: 223
    functionName: Metadata::set_is_deleted
    functionSourceFile: /src/opendal/core/core/src/types/metadata.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: '&mut Self'
    signature: 'pub fn set_is_deleted(&mut self, v: bool) -> &mut Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - v
    argTypes:
    - bool
    constantsTouched: []
    func_position:
      end: 229
      start: 226
    functionDepth: 0
    functionLinenumber: 226
    functionLinenumberEnd: 229
    functionName: Metadata::with_is_deleted
    functionSourceFile: /src/opendal/core/core/src/types/metadata.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: 'pub fn with_is_deleted(mut self, v: bool) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: cache_control
      Src: /src/opendal/bindings/nodejs/src/lib.rs:931,1
    - Dst: map
      Src: /src/opendal/bindings/nodejs/src/lib.rs:931,1
    - Dst: to_string
      Src: /src/opendal/bindings/nodejs/src/lib.rs:931,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 932
      start: 930
    functionDepth: 32
    functionLinenumber: 930
    functionLinenumberEnd: 932
    functionName: Metadata::cache_control
    functionSourceFile: /src/opendal/bindings/nodejs/src/lib.rs
    functionUses: 1
    functionsReached:
    - map
    - cache_control
    - to_string
    linkageType: ''
    returnType: Option
    signature: pub fn cache_control(&self) -> Option<String>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Some
      Src: /src/opendal/core/core/src/types/metadata.rs:244,1
    - Dst: Result::to_string
      Src: /src/opendal/core/core/src/types/metadata.rs:244,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - v
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 246
      start: 243
    functionDepth: 2
    functionLinenumber: 243
    functionLinenumberEnd: 246
    functionName: Metadata::set_cache_control
    functionSourceFile: /src/opendal/core/core/src/types/metadata.rs
    functionUses: 0
    functionsReached:
    - Result::to_string
    - Some
    linkageType: ''
    returnType: '&mut Self'
    signature: 'pub fn set_cache_control(&mut self, v: &str) -> &mut Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Some
      Src: /src/opendal/core/core/src/types/metadata.rs:253,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - v
    argTypes:
    - String
    constantsTouched: []
    func_position:
      end: 255
      start: 252
    functionDepth: 0
    functionLinenumber: 252
    functionLinenumberEnd: 255
    functionName: Metadata::with_cache_control
    functionSourceFile: /src/opendal/core/core/src/types/metadata.rs
    functionUses: 0
    functionsReached:
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn with_cache_control(mut self, v: String) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: content_length
      Src: /src/opendal/bindings/nodejs/src/lib.rs:943,1
    - Dst: into
      Src: /src/opendal/bindings/nodejs/src/lib.rs:943,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 944
      start: 942
    functionDepth: 36
    functionLinenumber: 942
    functionLinenumberEnd: 944
    functionName: Metadata::content_length
    functionSourceFile: /src/opendal/bindings/nodejs/src/lib.rs
    functionUses: 2
    functionsReached:
    - into
    - content_length
    linkageType: ''
    returnType: Option
    signature: pub fn content_length(&self) -> Option<u64>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: is_some
      Src: /src/opendal/core/core/src/types/metadata.rs:276,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 277
      start: 275
    functionDepth: 0
    functionLinenumber: 275
    functionLinenumberEnd: 277
    functionName: Metadata::has_content_length
    functionSourceFile: /src/opendal/core/core/src/types/metadata.rs
    functionUses: 1
    functionsReached:
    - is_some
    linkageType: ''
    returnType: bool
    signature: pub(crate) fn has_content_length(&self) -> bool
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Some
      Src: /src/opendal/core/core/src/types/metadata.rs:281,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - v
    argTypes:
    - u64
    constantsTouched: []
    func_position:
      end: 283
      start: 280
    functionDepth: 0
    functionLinenumber: 280
    functionLinenumberEnd: 283
    functionName: Metadata::set_content_length
    functionSourceFile: /src/opendal/core/core/src/types/metadata.rs
    functionUses: 1
    functionsReached:
    - Some
    linkageType: ''
    returnType: '&mut Self'
    signature: 'pub fn set_content_length(&mut self, v: u64) -> &mut Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Some
      Src: /src/opendal/core/core/src/types/metadata.rs:287,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - v
    argTypes:
    - u64
    constantsTouched: []
    func_position:
      end: 289
      start: 286
    functionDepth: 0
    functionLinenumber: 286
    functionLinenumberEnd: 289
    functionName: Metadata::with_content_length
    functionSourceFile: /src/opendal/core/core/src/types/metadata.rs
    functionUses: 0
    functionsReached:
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn with_content_length(mut self, v: u64) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: content_md5
      Src: /src/opendal/bindings/nodejs/src/lib.rs:955,1
    - Dst: map
      Src: /src/opendal/bindings/nodejs/src/lib.rs:955,1
    - Dst: to_string
      Src: /src/opendal/bindings/nodejs/src/lib.rs:955,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 956
      start: 954
    functionDepth: 2
    functionLinenumber: 954
    functionLinenumberEnd: 956
    functionName: Metadata::content_md5
    functionSourceFile: /src/opendal/bindings/nodejs/src/lib.rs
    functionUses: 2
    functionsReached:
    - map
    - to_string
    - content_md5
    linkageType: ''
    returnType: Option
    signature: pub fn content_md5(&self) -> Option<String>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Some
      Src: /src/opendal/core/core/src/types/metadata.rs:303,1
    - Dst: Result::to_string
      Src: /src/opendal/core/core/src/types/metadata.rs:303,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - v
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 305
      start: 302
    functionDepth: 2
    functionLinenumber: 302
    functionLinenumberEnd: 305
    functionName: Metadata::set_content_md5
    functionSourceFile: /src/opendal/core/core/src/types/metadata.rs
    functionUses: 0
    functionsReached:
    - Result::to_string
    - Some
    linkageType: ''
    returnType: '&mut Self'
    signature: 'pub fn set_content_md5(&mut self, v: &str) -> &mut Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Some
      Src: /src/opendal/core/core/src/types/metadata.rs:309,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - v
    argTypes:
    - String
    constantsTouched: []
    func_position:
      end: 311
      start: 308
    functionDepth: 0
    functionLinenumber: 308
    functionLinenumberEnd: 311
    functionName: Metadata::with_content_md5
    functionSourceFile: /src/opendal/core/core/src/types/metadata.rs
    functionUses: 0
    functionsReached:
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn with_content_md5(mut self, v: String) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: content_type
      Src: /src/opendal/bindings/nodejs/src/lib.rs:961,1
    - Dst: map
      Src: /src/opendal/bindings/nodejs/src/lib.rs:961,1
    - Dst: to_string
      Src: /src/opendal/bindings/nodejs/src/lib.rs:961,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 962
      start: 960
    functionDepth: 32
    functionLinenumber: 960
    functionLinenumberEnd: 962
    functionName: Metadata::content_type
    functionSourceFile: /src/opendal/bindings/nodejs/src/lib.rs
    functionUses: 2
    functionsReached:
    - map
    - to_string
    - content_type
    linkageType: ''
    returnType: Option
    signature: pub fn content_type(&self) -> Option<String>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Some
      Src: /src/opendal/core/core/src/types/metadata.rs:324,1
    - Dst: Result::to_string
      Src: /src/opendal/core/core/src/types/metadata.rs:324,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - v
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 326
      start: 323
    functionDepth: 2
    functionLinenumber: 323
    functionLinenumberEnd: 326
    functionName: Metadata::set_content_type
    functionSourceFile: /src/opendal/core/core/src/types/metadata.rs
    functionUses: 0
    functionsReached:
    - Result::to_string
    - Some
    linkageType: ''
    returnType: '&mut Self'
    signature: 'pub fn set_content_type(&mut self, v: &str) -> &mut Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Some
      Src: /src/opendal/core/core/src/types/metadata.rs:330,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - v
    argTypes:
    - String
    constantsTouched: []
    func_position:
      end: 332
      start: 329
    functionDepth: 0
    functionLinenumber: 329
    functionLinenumberEnd: 332
    functionName: Metadata::with_content_type
    functionSourceFile: /src/opendal/core/core/src/types/metadata.rs
    functionUses: 0
    functionsReached:
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn with_content_type(mut self, v: String) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: content_encoding
      Src: /src/opendal/bindings/nodejs/src/lib.rs:949,1
    - Dst: map
      Src: /src/opendal/bindings/nodejs/src/lib.rs:949,1
    - Dst: to_string
      Src: /src/opendal/bindings/nodejs/src/lib.rs:949,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 950
      start: 948
    functionDepth: 32
    functionLinenumber: 948
    functionLinenumberEnd: 950
    functionName: Metadata::content_encoding
    functionSourceFile: /src/opendal/bindings/nodejs/src/lib.rs
    functionUses: 1
    functionsReached:
    - map
    - content_encoding
    - to_string
    linkageType: ''
    returnType: Option
    signature: pub fn content_encoding(&self) -> Option<String>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Some
      Src: /src/opendal/core/core/src/types/metadata.rs:345,1
    - Dst: Result::to_string
      Src: /src/opendal/core/core/src/types/metadata.rs:345,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - v
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 347
      start: 344
    functionDepth: 2
    functionLinenumber: 344
    functionLinenumberEnd: 347
    functionName: Metadata::set_content_encoding
    functionSourceFile: /src/opendal/core/core/src/types/metadata.rs
    functionUses: 0
    functionsReached:
    - Result::to_string
    - Some
    linkageType: ''
    returnType: '&mut Self'
    signature: 'pub fn set_content_encoding(&mut self, v: &str) -> &mut Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: last_modified
      Src: /src/opendal/bindings/nodejs/src/lib.rs:981,1
    - Dst: map
      Src: /src/opendal/bindings/nodejs/src/lib.rs:981,1
    - Dst: anyhow::Result::to_string
      Src: /src/opendal/bindings/nodejs/src/lib.rs:981,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 982
      start: 980
    functionDepth: 1
    functionLinenumber: 980
    functionLinenumberEnd: 982
    functionName: Metadata::last_modified
    functionSourceFile: /src/opendal/bindings/nodejs/src/lib.rs
    functionUses: 2
    functionsReached:
    - anyhow::Result::to_string
    - map
    - last_modified
    linkageType: ''
    returnType: Option
    signature: pub fn last_modified(&self) -> Option<String>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Some
      Src: /src/opendal/core/core/src/types/metadata.rs:360,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - v
    argTypes:
    - Timestamp
    constantsTouched: []
    func_position:
      end: 362
      start: 359
    functionDepth: 0
    functionLinenumber: 359
    functionLinenumberEnd: 362
    functionName: Metadata::set_last_modified
    functionSourceFile: /src/opendal/core/core/src/types/metadata.rs
    functionUses: 0
    functionsReached:
    - Some
    linkageType: ''
    returnType: '&mut Self'
    signature: 'pub fn set_last_modified(&mut self, v: Timestamp) -> &mut Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Some
      Src: /src/opendal/core/core/src/types/metadata.rs:366,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - v
    argTypes:
    - Timestamp
    constantsTouched: []
    func_position:
      end: 368
      start: 365
    functionDepth: 0
    functionLinenumber: 365
    functionLinenumberEnd: 368
    functionName: Metadata::with_last_modified
    functionSourceFile: /src/opendal/core/core/src/types/metadata.rs
    functionUses: 0
    functionsReached:
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn with_last_modified(mut self, v: Timestamp) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: etag
      Src: /src/opendal/bindings/nodejs/src/lib.rs:973,1
    - Dst: map
      Src: /src/opendal/bindings/nodejs/src/lib.rs:973,1
    - Dst: to_string
      Src: /src/opendal/bindings/nodejs/src/lib.rs:973,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 974
      start: 972
    functionDepth: 2
    functionLinenumber: 972
    functionLinenumberEnd: 974
    functionName: Metadata::etag
    functionSourceFile: /src/opendal/bindings/nodejs/src/lib.rs
    functionUses: 2
    functionsReached:
    - map
    - etag
    - to_string
    linkageType: ''
    returnType: Option
    signature: pub fn etag(&self) -> Option<String>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Some
      Src: /src/opendal/core/core/src/types/metadata.rs:388,1
    - Dst: Result::to_string
      Src: /src/opendal/core/core/src/types/metadata.rs:388,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - v
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 390
      start: 387
    functionDepth: 2
    functionLinenumber: 387
    functionLinenumberEnd: 390
    functionName: Metadata::set_etag
    functionSourceFile: /src/opendal/core/core/src/types/metadata.rs
    functionUses: 0
    functionsReached:
    - Result::to_string
    - Some
    linkageType: ''
    returnType: '&mut Self'
    signature: 'pub fn set_etag(&mut self, v: &str) -> &mut Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Some
      Src: /src/opendal/core/core/src/types/metadata.rs:394,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - v
    argTypes:
    - String
    constantsTouched: []
    func_position:
      end: 396
      start: 393
    functionDepth: 0
    functionLinenumber: 393
    functionLinenumberEnd: 396
    functionName: Metadata::with_etag
    functionSourceFile: /src/opendal/core/core/src/types/metadata.rs
    functionUses: 0
    functionsReached:
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn with_etag(mut self, v: String) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: content_disposition
      Src: /src/opendal/bindings/nodejs/src/lib.rs:937,1
    - Dst: map
      Src: /src/opendal/bindings/nodejs/src/lib.rs:937,1
    - Dst: to_string
      Src: /src/opendal/bindings/nodejs/src/lib.rs:937,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 938
      start: 936
    functionDepth: 32
    functionLinenumber: 936
    functionLinenumberEnd: 938
    functionName: Metadata::content_disposition
    functionSourceFile: /src/opendal/bindings/nodejs/src/lib.rs
    functionUses: 2
    functionsReached:
    - content_disposition
    - to_string
    - map
    linkageType: ''
    returnType: Option
    signature: pub fn content_disposition(&self) -> Option<String>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Some
      Src: /src/opendal/core/core/src/types/metadata.rs:416,1
    - Dst: Result::to_string
      Src: /src/opendal/core/core/src/types/metadata.rs:416,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - v
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 418
      start: 415
    functionDepth: 2
    functionLinenumber: 415
    functionLinenumberEnd: 418
    functionName: Metadata::set_content_disposition
    functionSourceFile: /src/opendal/core/core/src/types/metadata.rs
    functionUses: 0
    functionsReached:
    - Result::to_string
    - Some
    linkageType: ''
    returnType: '&mut Self'
    signature: 'pub fn set_content_disposition(&mut self, v: &str) -> &mut Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Some
      Src: /src/opendal/core/core/src/types/metadata.rs:422,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - v
    argTypes:
    - String
    constantsTouched: []
    func_position:
      end: 424
      start: 421
    functionDepth: 0
    functionLinenumber: 421
    functionLinenumberEnd: 424
    functionName: Metadata::with_content_disposition
    functionSourceFile: /src/opendal/core/core/src/types/metadata.rs
    functionUses: 0
    functionsReached:
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn with_content_disposition(mut self, v: String) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: version
      Src: /src/opendal/bindings/nodejs/src/lib.rs:993,1
    - Dst: map
      Src: /src/opendal/bindings/nodejs/src/lib.rs:993,1
    - Dst: Result::to_string
      Src: /src/opendal/bindings/nodejs/src/lib.rs:993,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 994
      start: 992
    functionDepth: 32
    functionLinenumber: 992
    functionLinenumberEnd: 994
    functionName: Metadata::version
    functionSourceFile: /src/opendal/bindings/nodejs/src/lib.rs
    functionUses: 3
    functionsReached:
    - map
    - version
    - Result::to_string
    linkageType: ''
    returnType: Option
    signature: pub fn version(&self) -> Option<String>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Some
      Src: /src/opendal/core/core/src/types/metadata.rs:443,1
    - Dst: Result::to_string
      Src: /src/opendal/core/core/src/types/metadata.rs:443,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - v
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 445
      start: 442
    functionDepth: 2
    functionLinenumber: 442
    functionLinenumberEnd: 445
    functionName: Metadata::set_version
    functionSourceFile: /src/opendal/core/core/src/types/metadata.rs
    functionUses: 0
    functionsReached:
    - Result::to_string
    - Some
    linkageType: ''
    returnType: '&mut Self'
    signature: 'pub fn set_version(&mut self, v: &str) -> &mut Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Some
      Src: /src/opendal/core/core/src/types/metadata.rs:449,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - v
    argTypes:
    - String
    constantsTouched: []
    func_position:
      end: 451
      start: 448
    functionDepth: 0
    functionLinenumber: 448
    functionLinenumberEnd: 451
    functionName: Metadata::with_version
    functionSourceFile: /src/opendal/core/core/src/types/metadata.rs
    functionUses: 0
    functionsReached:
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn with_version(mut self, v: String) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: user_metadata
      Src: /src/opendal/bindings/nodejs/src/lib.rs:967,1
    - Dst: cloned
      Src: /src/opendal/bindings/nodejs/src/lib.rs:967,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 968
      start: 966
    functionDepth: 32
    functionLinenumber: 966
    functionLinenumberEnd: 968
    functionName: Metadata::user_metadata
    functionSourceFile: /src/opendal/bindings/nodejs/src/lib.rs
    functionUses: 1
    functionsReached:
    - user_metadata
    - cloned
    linkageType: ''
    returnType: Option
    signature: pub fn user_metadata(&self) -> Option<HashMap<String, String>>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Some
      Src: /src/opendal/core/core/src/types/metadata.rs:463,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - data
    argTypes:
    - HashMap<String, String>
    constantsTouched: []
    func_position:
      end: 465
      start: 462
    functionDepth: 0
    functionLinenumber: 462
    functionLinenumberEnd: 465
    functionName: Metadata::with_user_metadata
    functionSourceFile: /src/opendal/core/core/src/types/metadata.rs
    functionUses: 0
    functionsReached:
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn with_user_metadata(mut self, data: HashMap<String, String>)
      -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Metadata::new
      Src: /src/opendal/core/core/src/types/metadata.rs:474,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 477
      start: 473
    functionDepth: 1
    functionLinenumber: 473
    functionLinenumberEnd: 477
    functionName: tests::debug_metadata_omits_default_values
    functionSourceFile: /src/opendal/core/core/src/types/metadata.rs
    functionUses: 0
    functionsReached:
    - Metadata::new
    linkageType: ''
    returnType: void
    signature: fn debug_metadata_omits_default_values()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Metadata::new
      Src: /src/opendal/core/core/src/types/metadata.rs:481,1
    - Dst: Self::with_is_current
      Src: /src/opendal/core/core/src/types/metadata.rs:481,1
    - Dst: Some
      Src: /src/opendal/core/core/src/types/metadata.rs:482,1
    - Dst: Self::with_is_deleted
      Src: /src/opendal/core/core/src/types/metadata.rs:481,1
    - Dst: Self::with_content_length
      Src: /src/opendal/core/core/src/types/metadata.rs:481,1
    - Dst: Self::with_version
      Src: /src/opendal/core/core/src/types/metadata.rs:481,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/core/src/types/metadata.rs:485,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 491
      start: 480
    functionDepth: 32
    functionLinenumber: 480
    functionLinenumberEnd: 491
    functionName: tests::debug_metadata_keeps_meaningful_values
    functionSourceFile: /src/opendal/core/core/src/types/metadata.rs
    functionUses: 0
    functionsReached:
    - Self::with_version
    - Metadata::new
    - Self::with_is_deleted
    - Self::with_content_length
    - Some
    - '&str::to_string'
    - Self::with_is_current
    linkageType: ''
    returnType: void
    signature: fn debug_metadata_keeps_meaningful_values()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/core/core/src/types/builder.rs:65,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 66
      start: 64
    functionDepth: 0
    functionLinenumber: 64
    functionLinenumberEnd: 66
    functionName: ()::build
    functionSourceFile: /src/opendal/core/core/src/types/builder.rs
    functionUses: 0
    functionsReached:
    - Ok
    linkageType: ''
    returnType: Result
    signature: fn build(self) -> Result<impl Service>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/core/core/src/types/builder.rs:102,1
    - Dst: Error::new
      Src: /src/opendal/core/core/src/types/builder.rs:102,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - _uri
    argTypes:
    - '&OperatorUri'
    constantsTouched: []
    func_position:
      end: 103
      start: 101
    functionDepth: 36
    functionLinenumber: 101
    functionLinenumberEnd: 103
    functionName: Configurator::from_uri
    functionSourceFile: /src/opendal/core/core/src/types/builder.rs
    functionUses: 0
    functionsReached:
    - Error::new
    - Err
    linkageType: ''
    returnType: Result
    signature: 'fn from_uri(_uri: &OperatorUri) -> Result<Self>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: ConfigDeserializer::new
      Src: /src/opendal/core/core/src/types/builder.rs:109,1
    - Dst: into_iter
      Src: /src/opendal/core/core/src/types/builder.rs:109,1
    - Dst: collect
      Src: /src/opendal/core/core/src/types/builder.rs:109,1
    - Dst: Self::deserialize
      Src: /src/opendal/core/core/src/types/builder.rs:111,1
    - Dst: map_err
      Src: /src/opendal/core/core/src/types/builder.rs:111,1
    - Dst: Error::new
      Src: /src/opendal/core/core/src/types/builder.rs:112,1
    - Dst: Self::set_source
      Src: /src/opendal/core/core/src/types/builder.rs:112,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 1
    argNames:
    - iter
    argTypes:
    - impl IntoIterator<Item = (String, String)>
    constantsTouched: []
    func_position:
      end: 114
      start: 108
    functionDepth: 36
    functionLinenumber: 108
    functionLinenumberEnd: 114
    functionName: Configurator::from_iter
    functionSourceFile: /src/opendal/core/core/src/types/builder.rs
    functionUses: 0
    functionsReached:
    - map_err
    - collect
    - into_iter
    - Error::new
    - Self::deserialize
    - Self::set_source
    - ConfigDeserializer::new
    linkageType: ''
    returnType: Result
    signature: 'fn from_iter(iter: impl IntoIterator<Item = (String, String)>) ->
      Result<Self>'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 123
      start: 123
    functionDepth: 0
    functionLinenumber: 123
    functionLinenumberEnd: 123
    functionName: ()::into_builder
    functionSourceFile: /src/opendal/core/core/src/types/builder.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Self::Builder
    signature: fn into_builder(self) -> Self::Builder
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: ErrorKind::into
      Src: /src/opendal/core/core/src/types/error.rs:94,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 95
      start: 93
    functionDepth: 29
    functionLinenumber: 93
    functionLinenumberEnd: 95
    functionName: ErrorKind::into_static
    functionSourceFile: /src/opendal/core/core/src/types/error.rs
    functionUses: 1
    functionsReached:
    - ErrorKind::into
    linkageType: ''
    returnType: '&''static str'
    signature: pub fn into_static(self) -> &'static str
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 103
      start: 101
    functionDepth: 0
    functionLinenumber: 101
    functionLinenumberEnd: 103
    functionName: ErrorKind::enable_backtrace
    functionSourceFile: /src/opendal/core/core/src/types/error.rs
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: fn enable_backtrace(&self) -> bool
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 1
    argNames:
    - f
    argTypes:
    - '&mut Formatter<''_>'
    constantsTouched: []
    func_position:
      end: 109
      start: 107
    functionDepth: 0
    functionLinenumber: 107
    functionLinenumberEnd: 109
    functionName: ErrorKind::fmt
    functionSourceFile: /src/opendal/core/core/src/types/error.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: fmt::Result
    signature: 'fn fmt(&self, f: &mut Formatter<''_>) -> fmt::Result'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - v
    argTypes:
    - Operation
    constantsTouched: []
    func_position:
      end: 81
      start: 68
    functionDepth: 0
    functionLinenumber: 68
    functionLinenumberEnd: 81
    functionName: '&''static str::from'
    functionSourceFile: /src/opendal/core/core/src/raw/operation.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: '&''static str'
    signature: 'fn from(v: Operation) -> &''static str'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - f
    argTypes:
    - '&mut Formatter<''_>'
    constantsTouched: []
    func_position:
      end: 160
      start: 154
    functionDepth: 0
    functionLinenumber: 154
    functionLinenumberEnd: 160
    functionName: ErrorStatus::fmt
    functionSourceFile: /src/opendal/core/core/src/types/error.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: fmt::Result
    signature: 'fn fmt(&self, f: &mut Formatter<''_>) -> fmt::Result'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Display::fmt
      Src: /src/opendal/bindings/java/src/error.rs:150,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - f
    argTypes:
    - '&mut Formatter<''_>'
    constantsTouched: []
    func_position:
      end: 151
      start: 149
    functionDepth: 2
    functionLinenumber: 149
    functionLinenumberEnd: 151
    functionName: Error::fmt
    functionSourceFile: /src/opendal/bindings/java/src/error.rs
    functionUses: 0
    functionsReached:
    - Display::fmt
    linkageType: ''
    returnType: std::fmt::Result
    signature: 'fn fmt(&self, f: &mut Formatter<''_>) -> std::fmt::Result'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: source
      Src: /src/opendal/bindings/java/src/error.rs:156,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 157
      start: 155
    functionDepth: 35
    functionLinenumber: 155
    functionLinenumberEnd: 157
    functionName: Error::source
    functionSourceFile: /src/opendal/bindings/java/src/error.rs
    functionUses: 0
    functionsReached:
    - source
    linkageType: ''
    returnType: Option
    signature: fn source(&self) -> Option<&(dyn std::error::Error + 'static)>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: '&str::into'
      Src: /src/opendal/core/core/src/types/error.rs:319,1
    - Dst: Vec::default
      Src: /src/opendal/core/core/src/types/error.rs:323,1
    - Dst: ErrorKind::enable_backtrace
      Src: /src/opendal/core/core/src/types/error.rs:326,1
    - Dst: bool::then
      Src: /src/opendal/core/core/src/types/error.rs:326,1
    - Dst: filter
      Src: /src/opendal/core/core/src/types/error.rs:326,1
    - Dst: status
      Src: /src/opendal/core/core/src/types/error.rs:333,1
    - Dst: map
      Src: /src/opendal/core/core/src/types/error.rs:326,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 16
    argCount: 2
    argNames:
    - kind
    - message
    argTypes:
    - ErrorKind
    - impl Into<String>
    constantsTouched: []
    func_position:
      end: 336
      start: 316
    functionDepth: 35
    functionLinenumber: 316
    functionLinenumberEnd: 336
    functionName: Error::new
    functionSourceFile: /src/opendal/core/core/src/types/error.rs
    functionUses: 691
    functionsReached:
    - filter
    - status
    - Vec::default
    - map
    - bool::then
    - ErrorKind::enable_backtrace
    - '&str::into'
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(kind: ErrorKind, message: impl Into<String>) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: is_empty
      Src: /src/opendal/core/core/src/types/error.rs:345,1
    - Dst: push
      Src: /src/opendal/core/core/src/types/error.rs:346,1
    - Dst: to_string
      Src: /src/opendal/core/core/src/types/error.rs:346,1
    - Dst: Self::into
      Src: /src/opendal/core/core/src/types/error.rs:349,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 19
    argCount: 1
    argNames:
    - operation
    argTypes:
    - impl Into<&'static str>
    constantsTouched: []
    func_position:
      end: 351
      start: 344
    functionDepth: 29
    functionLinenumber: 344
    functionLinenumberEnd: 351
    functionName: Error::with_operation
    functionSourceFile: /src/opendal/core/core/src/types/error.rs
    functionUses: 24
    functionsReached:
    - Self::into
    - to_string
    - push
    - is_empty
    linkageType: ''
    returnType: Self
    signature: 'pub fn with_operation(mut self, operation: impl Into<&''static str>)
      -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: push
      Src: /src/opendal/core/core/src/types/error.rs:355,1
    - Dst: Vec::to_string
      Src: /src/opendal/core/core/src/types/error.rs:355,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 2
    argNames:
    - key
    - value
    argTypes:
    - '&''static str'
    - impl ToString
    constantsTouched: []
    func_position:
      end: 357
      start: 354
    functionDepth: 5
    functionLinenumber: 354
    functionLinenumberEnd: 357
    functionName: Error::with_context
    functionSourceFile: /src/opendal/core/core/src/types/error.rs
    functionUses: 7
    functionsReached:
    - Vec::to_string
    - push
    linkageType: ''
    returnType: Self
    signature: 'pub fn with_context(mut self, key: &''static str, value: impl ToString)
      -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Some
      Src: /src/opendal/core/core/src/types/error.rs:367,1
    - Dst: impl Into<anyhow::Error>::into
      Src: /src/opendal/core/core/src/types/error.rs:367,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - src
    argTypes:
    - impl Into<anyhow::Error>
    constantsTouched: []
    func_position:
      end: 369
      start: 364
    functionDepth: 0
    functionLinenumber: 364
    functionLinenumberEnd: 369
    functionName: Error::set_source
    functionSourceFile: /src/opendal/core/core/src/types/error.rs
    functionUses: 0
    functionsReached:
    - impl Into<anyhow::Error>::into
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn set_source(mut self, src: impl Into<anyhow::Error>) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 377
      start: 374
    functionDepth: 0
    functionLinenumber: 374
    functionLinenumberEnd: 377
    functionName: Error::set_permanent
    functionSourceFile: /src/opendal/core/core/src/types/error.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: pub fn set_permanent(mut self) -> Self
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 385
      start: 382
    functionDepth: 0
    functionLinenumber: 382
    functionLinenumberEnd: 385
    functionName: Error::set_temporary
    functionSourceFile: /src/opendal/core/core/src/types/error.rs
    functionUses: 10
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: pub fn set_temporary(mut self) -> Self
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 393
      start: 390
    functionDepth: 0
    functionLinenumber: 390
    functionLinenumberEnd: 393
    functionName: Error::set_persistent
    functionSourceFile: /src/opendal/core/core/src/types/error.rs
    functionUses: 16
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: pub fn set_persistent(mut self) -> Self
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - permanent
    argTypes:
    - bool
    constantsTouched: []
    func_position:
      end: 403
      start: 398
    functionDepth: 0
    functionLinenumber: 398
    functionLinenumberEnd: 403
    functionName: Error::with_permanent
    functionSourceFile: /src/opendal/core/core/src/types/error.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: 'pub fn with_permanent(mut self, permanent: bool) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - temporary
    argTypes:
    - bool
    constantsTouched: []
    func_position:
      end: 413
      start: 408
    functionDepth: 0
    functionLinenumber: 408
    functionLinenumberEnd: 413
    functionName: Error::with_temporary
    functionSourceFile: /src/opendal/core/core/src/types/error.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: 'pub fn with_temporary(mut self, temporary: bool) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - persistent
    argTypes:
    - bool
    constantsTouched: []
    func_position:
      end: 423
      start: 418
    functionDepth: 0
    functionLinenumber: 418
    functionLinenumberEnd: 423
    functionName: Error::with_persistent
    functionSourceFile: /src/opendal/core/core/src/types/error.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: 'pub fn with_persistent(mut self, persistent: bool) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 428
      start: 426
    functionDepth: 0
    functionLinenumber: 426
    functionLinenumberEnd: 428
    functionName: Error::kind
    functionSourceFile: /src/opendal/core/core/src/types/error.rs
    functionUses: 53
    functionsReached: []
    linkageType: ''
    returnType: ErrorKind
    signature: pub fn kind(&self) -> ErrorKind
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 433
      start: 431
    functionDepth: 0
    functionLinenumber: 431
    functionLinenumberEnd: 433
    functionName: Error::is_permanent
    functionSourceFile: /src/opendal/core/core/src/types/error.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: pub fn is_permanent(&self) -> bool
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 438
      start: 436
    functionDepth: 0
    functionLinenumber: 436
    functionLinenumberEnd: 438
    functionName: Error::is_temporary
    functionSourceFile: /src/opendal/core/core/src/types/error.rs
    functionUses: 8
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: pub fn is_temporary(&self) -> bool
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 443
      start: 441
    functionDepth: 0
    functionLinenumber: 441
    functionLinenumberEnd: 443
    functionName: Error::is_persistent
    functionSourceFile: /src/opendal/core/core/src/types/error.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: pub fn is_persistent(&self) -> bool
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: as_str
      Src: /src/opendal/core/core/src/types/error.rs:447,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 448
      start: 446
    functionDepth: 1
    functionLinenumber: 446
    functionLinenumberEnd: 448
    functionName: Error::message
    functionSourceFile: /src/opendal/core/core/src/types/error.rs
    functionUses: 1
    functionsReached:
    - as_str
    linkageType: ''
    returnType: '&str'
    signature: pub fn message(&self) -> &str
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: as_ref
      Src: /src/opendal/core/core/src/types/error.rs:492,1
    - Dst: map
      Src: /src/opendal/core/core/src/types/error.rs:492,1
    - Dst: as_ref
      Src: /src/opendal/core/core/src/types/error.rs:492,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 493
      start: 491
    functionDepth: 1
    functionLinenumber: 491
    functionLinenumberEnd: 493
    functionName: Error::backtrace
    functionSourceFile: /src/opendal/core/core/src/types/error.rs
    functionUses: 0
    functionsReached:
    - map
    - as_ref
    linkageType: ''
    returnType: Option
    signature: pub fn backtrace(&self) -> Option<&Backtrace>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Error::kind
      Src: /src/opendal/core/core/src/types/error.rs:498,1
    - Dst: io::Error::new
      Src: /src/opendal/core/core/src/types/error.rs:504,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - err
    argTypes:
    - Error
    constantsTouched: []
    func_position:
      end: 505
      start: 497
    functionDepth: 36
    functionLinenumber: 497
    functionLinenumberEnd: 505
    functionName: io::Error::from
    functionSourceFile: /src/opendal/core/core/src/types/error.rs
    functionUses: 0
    functionsReached:
    - io::Error::new
    - Error::kind
    linkageType: ''
    returnType: Self
    signature: 'fn from(err: Error) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 538
      start: 531
    functionDepth: 0
    functionLinenumber: 531
    functionLinenumberEnd: 538
    functionName: tests::test_error_display
    functionSourceFile: /src/opendal/core/core/src/types/error.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: fn test_error_display()
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 555
      start: 541
    functionDepth: 0
    functionLinenumber: 541
    functionLinenumberEnd: 555
    functionName: tests::test_error_debug
    functionSourceFile: /src/opendal/core/core/src/types/error.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: fn test_error_debug()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Servicer::list
      Src: /src/opendal/core/core/src/types/list.rs:53,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/types/list.rs:55,1
    - Dst: Some
      Src: /src/opendal/core/core/src/types/list.rs:56,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 4
    argNames:
    - ctx
    - srv
    - path
    - args
    argTypes:
    - OperationContext
    - Servicer
    - '&str'
    - OpList
    constantsTouched: []
    func_position:
      end: 61
      start: 47
    functionDepth: 2
    functionLinenumber: 47
    functionLinenumberEnd: 61
    functionName: Lister::create
    functionSourceFile: /src/opendal/core/core/src/types/list.rs
    functionUses: 2
    functionsReached:
    - Servicer::list
    - Ok
    - Some
    linkageType: ''
    returnType: Result
    signature: 'pub(crate) fn create(ctx: OperationContext,srv: Servicer,path: &str,args:
      OpList,) -> Result<Self>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Poll::Ready
      Src: /src/opendal/core/core/src/types/list.rs:70,1
    - Dst: take
      Src: /src/opendal/core/core/src/types/list.rs:73,1
    - Dst: Result::next_dyn
      Src: /src/opendal/core/core/src/types/list.rs:75,1
    - Dst: Some
      Src: /src/opendal/core/core/src/types/list.rs:78,1
    - Dst: Box::pin
      Src: /src/opendal/core/core/src/types/list.rs:78,1
    - Dst: as_mut
      Src: /src/opendal/core/core/src/types/list.rs:81,1
    - Dst: Some
      Src: /src/opendal/core/core/src/types/list.rs:83,1
    - Dst: Poll::Ready
      Src: /src/opendal/core/core/src/types/list.rs:87,1
    - Dst: Some
      Src: /src/opendal/core/core/src/types/list.rs:87,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/types/list.rs:87,1
    - Dst: into_entry
      Src: /src/opendal/core/core/src/types/list.rs:87,1
    - Dst: Poll::Ready
      Src: /src/opendal/core/core/src/types/list.rs:90,1
    - Dst: Poll::Ready
      Src: /src/opendal/core/core/src/types/list.rs:94,1
    - Dst: Some
      Src: /src/opendal/core/core/src/types/list.rs:94,1
    - Dst: Err
      Src: /src/opendal/core/core/src/types/list.rs:94,1
    - Dst: Poll::Ready
      Src: /src/opendal/core/core/src/types/list.rs:99,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 51
    argCount: 2
    argNames:
    - cx
    argTypes:
    - Pin<&mut Self>
    - '&mut Context<''_>'
    constantsTouched: []
    func_position:
      end: 100
      start: 67
    functionDepth: 3
    functionLinenumber: 67
    functionLinenumberEnd: 100
    functionName: Lister::poll_next
    functionSourceFile: /src/opendal/core/core/src/types/list.rs
    functionUses: 0
    functionsReached:
    - as_mut
    - Ok
    - Poll::Ready
    - Some
    - take
    - Result::next_dyn
    - into_entry
    - Err
    - Box::pin
    linkageType: ''
    returnType: Poll
    signature: 'fn poll_next(mut self: Pin<&mut Self>, cx: &mut Context<''_>) -> Poll<Option<Self::Item>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: is_file
      Src: /src/opendal/bindings/php/src/lib.rs:191,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 195
      start: 190
    functionDepth: 2
    functionLinenumber: 190
    functionLinenumberEnd: 195
    functionName: EntryMode::is_file
    functionSourceFile: /src/opendal/bindings/php/src/lib.rs
    functionUses: 1
    functionsReached:
    - is_file
    linkageType: ''
    returnType: u8
    signature: pub fn is_file(&self) -> u8
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: is_dir
      Src: /src/opendal/bindings/php/src/lib.rs:183,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 187
      start: 182
    functionDepth: 31
    functionLinenumber: 182
    functionLinenumberEnd: 187
    functionName: EntryMode::is_dir
    functionSourceFile: /src/opendal/bindings/php/src/lib.rs
    functionUses: 0
    functionsReached:
    - is_dir
    linkageType: ''
    returnType: u8
    signature: pub fn is_dir(&self) -> u8
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: ends_with
      Src: /src/opendal/core/core/src/types/mode.rs:47,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - path
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 52
      start: 46
    functionDepth: 0
    functionLinenumber: 46
    functionLinenumberEnd: 52
    functionName: EntryMode::from_path
    functionSourceFile: /src/opendal/core/core/src/types/mode.rs
    functionUses: 46
    functionsReached:
    - ends_with
    linkageType: ''
    returnType: Self
    signature: 'pub fn from_path(path: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - f
    argTypes:
    - '&mut Formatter<''_>'
    constantsTouched: []
    func_position:
      end: 62
      start: 56
    functionDepth: 0
    functionLinenumber: 56
    functionLinenumberEnd: 62
    functionName: EntryMode::fmt
    functionSourceFile: /src/opendal/core/core/src/types/mode.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: std::fmt::Result
    signature: 'fn fmt(&self, f: &mut Formatter<''_>) -> std::fmt::Result'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::debug_struct
      Src: /src/opendal/core/core/src/types/buffer.rs:135,1
    - Dst: Timestamp::field
      Src: /src/opendal/core/core/src/types/buffer.rs:139,1
    - Dst: Timestamp::field
      Src: /src/opendal/core/core/src/types/buffer.rs:140,1
    - Dst: Result::len
      Src: /src/opendal/core/core/src/types/buffer.rs:140,1
    - Dst: Timestamp::field
      Src: /src/opendal/core/core/src/types/buffer.rs:148,1
    - Dst: Timestamp::field
      Src: /src/opendal/core/core/src/types/buffer.rs:149,1
    - Dst: Timestamp::field
      Src: /src/opendal/core/core/src/types/buffer.rs:150,1
    - Dst: Timestamp::field
      Src: /src/opendal/core/core/src/types/buffer.rs:151,1
    - Dst: Timestamp::field
      Src: /src/opendal/core/core/src/types/buffer.rs:152,1
    - Dst: Timestamp::finish_non_exhaustive
      Src: /src/opendal/core/core/src/types/buffer.rs:155,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 38
    argCount: 1
    argNames:
    - f
    argTypes:
    - '&mut Formatter<''_>'
    constantsTouched: []
    func_position:
      end: 156
      start: 134
    functionDepth: 5
    functionLinenumber: 134
    functionLinenumberEnd: 156
    functionName: Buffer::fmt
    functionSourceFile: /src/opendal/core/core/src/types/buffer.rs
    functionUses: 0
    functionsReached:
    - Timestamp::field
    - Result::debug_struct
    - Timestamp::finish_non_exhaustive
    - Result::len
    linkageType: ''
    returnType: std::fmt::Result
    signature: 'fn fmt(&self, f: &mut Formatter<''_>) -> std::fmt::Result'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self::new
      Src: /src/opendal/core/core/src/types/buffer.rs:161,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 162
      start: 160
    functionDepth: 2
    functionLinenumber: 160
    functionLinenumberEnd: 162
    functionName: Buffer::default
    functionSourceFile: /src/opendal/core/core/src/types/buffer.rs
    functionUses: 0
    functionsReached:
    - Self::new
    linkageType: ''
    returnType: Self
    signature: fn default() -> Self
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - inner
    argTypes:
    - Vec<u8>
    constantsTouched: []
    func_position:
      end: 33
      start: 31
    functionDepth: 0
    functionLinenumber: 31
    functionLinenumberEnd: 33
    functionName: Buffer::new
    functionSourceFile: /src/opendal/bindings/python/src/utils.rs
    functionUses: 258
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(inner: Vec<u8>) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Timestamp::remaining
      Src: /src/opendal/core/core/src/types/buffer.rs:178,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 181
      start: 176
    functionDepth: 2
    functionLinenumber: 176
    functionLinenumberEnd: 181
    functionName: Buffer::len
    functionSourceFile: /src/opendal/core/core/src/types/buffer.rs
    functionUses: 12
    functionsReached:
    - Timestamp::remaining
    linkageType: ''
    returnType: usize
    signature: pub fn len(&self) -> usize
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Buffer::len
      Src: /src/opendal/core/core/src/types/buffer.rs:186,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 187
      start: 185
    functionDepth: 3
    functionLinenumber: 185
    functionLinenumberEnd: 187
    functionName: Buffer::is_empty
    functionSourceFile: /src/opendal/core/core/src/types/buffer.rs
    functionUses: 0
    functionsReached:
    - Buffer::len
    linkageType: ''
    returnType: bool
    signature: pub fn is_empty(&self) -> bool
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: (String, Metadata)::iter
      Src: /src/opendal/core/core/src/types/buffer.rs:202,1
    - Dst: skip
      Src: /src/opendal/core/core/src/types/buffer.rs:202,1
    - Dst: fold
      Src: /src/opendal/core/core/src/types/buffer.rs:202,1
    - Dst: Option::saturating_sub
      Src: /src/opendal/core/core/src/types/buffer.rs:209,1
    - Dst: Bytes::len
      Src: /src/opendal/core/core/src/types/buffer.rs:209,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 25
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 215
      start: 193
    functionDepth: 3
    functionLinenumber: 193
    functionLinenumberEnd: 215
    functionName: Buffer::count
    functionSourceFile: /src/opendal/core/core/src/types/buffer.rs
    functionUses: 0
    functionsReached:
    - Option::saturating_sub
    - skip
    - Bytes::len
    - (String, Metadata)::iter
    - fold
    linkageType: ''
    returnType: usize
    signature: pub fn count(&self) -> usize
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Arc::clone
      Src: /src/opendal/core/core/src/types/buffer.rs:220,1
    - Dst: Result::len
      Src: /src/opendal/core/core/src/types/buffer.rs:228,1
    - Dst: min
      Src: /src/opendal/core/core/src/types/buffer.rs:228,1
    - Dst: Result::slice
      Src: /src/opendal/core/core/src/types/buffer.rs:229,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 23
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 232
      start: 218
    functionDepth: 3
    functionLinenumber: 218
    functionLinenumberEnd: 232
    functionName: Buffer::current
    functionSourceFile: /src/opendal/core/core/src/types/buffer.rs
    functionUses: 0
    functionsReached:
    - Result::slice
    - min
    - Arc::clone
    - Result::len
    linkageType: ''
    returnType: Bytes
    signature: pub fn current(&self) -> Bytes
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::truncate
      Src: /src/opendal/core/core/src/types/buffer.rs:240,1
    - Dst: min
      Src: /src/opendal/core/core/src/types/buffer.rs:242,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 1
    argNames:
    - len
    argTypes:
    - usize
    constantsTouched: []
    func_position:
      end: 245
      start: 238
    functionDepth: 1
    functionLinenumber: 238
    functionLinenumberEnd: 245
    functionName: Buffer::truncate
    functionSourceFile: /src/opendal/core/core/src/types/buffer.rs
    functionUses: 1
    functionsReached:
    - Result::truncate
    - min
    linkageType: ''
    returnType: void
    signature: 'pub fn truncate(&mut self, len: usize)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Buffer::len
      Src: /src/opendal/core/core/src/types/buffer.rs:253,1
    - Dst: (Vec::start_bound
      Src: /src/opendal/core/core/src/types/buffer.rs:255,1
    - Dst: Result::checked_add
      Src: /src/opendal/core/core/src/types/buffer.rs:257,1
    - Dst: expect
      Src: /src/opendal/core/core/src/types/buffer.rs:257,1
    - Dst: (Vec::end_bound
      Src: /src/opendal/core/core/src/types/buffer.rs:261,1
    - Dst: Result::checked_add
      Src: /src/opendal/core/core/src/types/buffer.rs:262,1
    - Dst: expect
      Src: /src/opendal/core/core/src/types/buffer.rs:262,1
    - Dst: Buffer::new
      Src: /src/opendal/core/core/src/types/buffer.rs:274,1
    - Dst: Buffer::clone
      Src: /src/opendal/core/core/src/types/buffer.rs:277,1
    - Dst: Self::truncate
      Src: /src/opendal/core/core/src/types/buffer.rs:278,1
    - Dst: Self::advance
      Src: /src/opendal/core/core/src/types/buffer.rs:279,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 32
    argCount: 1
    argNames:
    - range
    argTypes:
    - impl RangeBounds<usize>
    constantsTouched: []
    func_position:
      end: 281
      start: 252
    functionDepth: 3
    functionLinenumber: 252
    functionLinenumberEnd: 281
    functionName: Buffer::slice
    functionSourceFile: /src/opendal/core/core/src/types/buffer.rs
    functionUses: 2
    functionsReached:
    - Buffer::new
    - expect
    - (Vec::start_bound
    - Buffer::len
    - (Vec::end_bound
    - Buffer::clone
    - Result::checked_add
    - Self::truncate
    - Self::advance
    linkageType: ''
    returnType: Self
    signature: 'pub fn slice(&self, range: impl RangeBounds<usize>) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Bytes::clone
      Src: /src/opendal/core/core/src/types/buffer.rs:291,1
    - Dst: (String, Metadata)::len
      Src: /src/opendal/core/core/src/types/buffer.rs:298,1
    - Dst: slice
      Src: /src/opendal/core/core/src/types/buffer.rs:299,1
    - Dst: BytesMut::with_capacity
      Src: /src/opendal/core/core/src/types/buffer.rs:301,1
    - Dst: Buffer::len
      Src: /src/opendal/core/core/src/types/buffer.rs:301,1
    - Dst: Self::put
      Src: /src/opendal/core/core/src/types/buffer.rs:302,1
    - Dst: Buffer::clone
      Src: /src/opendal/core/core/src/types/buffer.rs:302,1
    - Dst: Self::freeze
      Src: /src/opendal/core/core/src/types/buffer.rs:303,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 30
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 307
      start: 289
    functionDepth: 3
    functionLinenumber: 289
    functionLinenumberEnd: 307
    functionName: Buffer::to_bytes
    functionSourceFile: /src/opendal/core/core/src/types/buffer.rs
    functionUses: 2
    functionsReached:
    - Bytes::clone
    - Self::put
    - slice
    - Buffer::len
    - (String, Metadata)::len
    - BytesMut::with_capacity
    - Self::freeze
    - Buffer::clone
    linkageType: ''
    returnType: Bytes
    signature: pub fn to_bytes(&self) -> Bytes
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Vec::with_capacity
      Src: /src/opendal/core/core/src/types/buffer.rs:315,1
    - Dst: Buffer::len
      Src: /src/opendal/core/core/src/types/buffer.rs:315,1
    - Dst: Self::put
      Src: /src/opendal/core/core/src/types/buffer.rs:316,1
    - Dst: Buffer::clone
      Src: /src/opendal/core/core/src/types/buffer.rs:316,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 318
      start: 314
    functionDepth: 3
    functionLinenumber: 314
    functionLinenumberEnd: 318
    functionName: Buffer::to_vec
    functionSourceFile: /src/opendal/core/core/src/types/buffer.rs
    functionUses: 0
    functionsReached:
    - Self::put
    - Buffer::clone
    - Vec::with_capacity
    - Buffer::len
    linkageType: ''
    returnType: Vec
    signature: pub fn to_vec(&self) -> Vec<u8>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Vec::with_capacity
      Src: /src/opendal/core/core/src/types/buffer.rs:328,1
    - Dst: (String, Metadata)::len
      Src: /src/opendal/core/core/src/types/buffer.rs:328,1
    - Dst: (String, Metadata)::iter
      Src: /src/opendal/core/core/src/types/buffer.rs:330,1
    - Dst: skip
      Src: /src/opendal/core/core/src/types/buffer.rs:330,1
    - Dst: Self::push
      Src: /src/opendal/core/core/src/types/buffer.rs:331,1
    - Dst: IoSlice::new
      Src: /src/opendal/core/core/src/types/buffer.rs:331,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 26
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 337
      start: 322
    functionDepth: 3
    functionLinenumber: 322
    functionLinenumberEnd: 337
    functionName: Buffer::to_io_slice
    functionSourceFile: /src/opendal/core/core/src/types/buffer.rs
    functionUses: 0
    functionsReached:
    - Vec::with_capacity
    - Self::push
    - IoSlice::new
    - (String, Metadata)::len
    - skip
    - (String, Metadata)::iter
    linkageType: ''
    returnType: Vec
    signature: pub fn to_io_slice(&self) -> Vec<IoSlice<'_>>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Buffer::len
      Src: /src/opendal/core/core/src/types/buffer.rs:361,1
    - Dst: Buffer::slice
      Src: /src/opendal/core/core/src/types/buffer.rs:364,1
    - Dst: Buffer::advance
      Src: /src/opendal/core/core/src/types/buffer.rs:365,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 1
    argNames:
    - at
    argTypes:
    - usize
    constantsTouched: []
    func_position:
      end: 367
      start: 360
    functionDepth: 3
    functionLinenumber: 360
    functionLinenumberEnd: 367
    functionName: Buffer::split_to
    functionSourceFile: /src/opendal/core/core/src/types/buffer.rs
    functionUses: 0
    functionsReached:
    - Buffer::advance
    - Buffer::slice
    - Buffer::len
    linkageType: ''
    returnType: Self
    signature: 'pub fn split_to(&mut self, at: usize) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Buffer::len
      Src: /src/opendal/core/core/src/types/buffer.rs:391,1
    - Dst: Buffer::slice
      Src: /src/opendal/core/core/src/types/buffer.rs:394,1
    - Dst: Buffer::truncate
      Src: /src/opendal/core/core/src/types/buffer.rs:395,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 1
    argNames:
    - at
    argTypes:
    - usize
    constantsTouched: []
    func_position:
      end: 397
      start: 390
    functionDepth: 3
    functionLinenumber: 390
    functionLinenumberEnd: 397
    functionName: Buffer::split_off
    functionSourceFile: /src/opendal/core/core/src/types/buffer.rs
    functionUses: 0
    functionsReached:
    - Buffer::slice
    - Buffer::truncate
    - Buffer::len
    linkageType: ''
    returnType: Self
    signature: 'pub fn split_off(&mut self, at: usize) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Buffer::clone
      Src: /src/opendal/core/core/src/types/buffer.rs:411,1
    - Dst: Buffer::len
      Src: /src/opendal/core/core/src/types/buffer.rs:414,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - chunk_size
    argTypes:
    - usize
    constantsTouched: []
    func_position:
      end: 416
      start: 407
    functionDepth: 3
    functionLinenumber: 407
    functionLinenumberEnd: 416
    functionName: Buffer::chunks
    functionSourceFile: /src/opendal/core/core/src/types/buffer.rs
    functionUses: 0
    functionsReached:
    - Buffer::len
    - Buffer::clone
    linkageType: ''
    returnType: BufferChunks
    signature: 'pub fn chunks(&self, chunk_size: usize) -> BufferChunks'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::iter
      Src: /src/opendal/core/core/src/types/buffer.rs:490,1
    - Dst: map
      Src: /src/opendal/core/core/src/types/buffer.rs:490,1
    - Dst: Result::sum
      Src: /src/opendal/core/core/src/types/buffer.rs:490,1
    - Dst: Self
      Src: /src/opendal/core/core/src/types/buffer.rs:491,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - bs
    argTypes:
    - Arc<[Bytes]>
    constantsTouched: []
    func_position:
      end: 497
      start: 489
    functionDepth: 39
    functionLinenumber: 489
    functionLinenumberEnd: 497
    functionName: Buffer::from
    functionSourceFile: /src/opendal/core/core/src/types/buffer.rs
    functionUses: 171
    functionsReached:
    - Self
    - Result::iter
    - Result::sum
    - map
    linkageType: ''
    returnType: Self
    signature: 'fn from(bs: Arc<[Bytes]>) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: into_iter
      Src: /src/opendal/core/core/src/types/buffer.rs:504,1
    - Dst: inspect
      Src: /src/opendal/core/core/src/types/buffer.rs:504,1
    - Dst: Result::len
      Src: /src/opendal/core/core/src/types/buffer.rs:504,1
    - Dst: Arc::from_iter
      Src: /src/opendal/core/core/src/types/buffer.rs:507,1
    - Dst: Self
      Src: /src/opendal/core/core/src/types/buffer.rs:508,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 1
    argNames:
    - iter
    argTypes:
    - T
    constantsTouched: []
    func_position:
      end: 514
      start: 502
    functionDepth: 37
    functionLinenumber: 502
    functionLinenumberEnd: 514
    functionName: Buffer::from_iter
    functionSourceFile: /src/opendal/core/core/src/types/buffer.rs
    functionUses: 2
    functionsReached:
    - into_iter
    - Self
    - inspect
    - Result::len
    - Arc::from_iter
    linkageType: ''
    returnType: Self
    signature: 'fn from_iter<T: IntoIterator<Item = Bytes>>(iter: T) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Buffer::len
      Src: /src/opendal/core/core/src/types/buffer.rs:520,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 521
      start: 519
    functionDepth: 2
    functionLinenumber: 519
    functionLinenumberEnd: 521
    functionName: Buffer::remaining
    functionSourceFile: /src/opendal/core/core/src/types/buffer.rs
    functionUses: 1
    functionsReached:
    - Buffer::len
    linkageType: ''
    returnType: usize
    signature: fn remaining(&self) -> usize
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Timestamp::chunk
      Src: /src/opendal/core/core/src/types/buffer.rs:526,1
    - Dst: Result::len
      Src: /src/opendal/core/core/src/types/buffer.rs:538,1
    - Dst: min
      Src: /src/opendal/core/core/src/types/buffer.rs:538,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 33
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 542
      start: 524
    functionDepth: 37
    functionLinenumber: 524
    functionLinenumberEnd: 542
    functionName: Buffer::chunk
    functionSourceFile: /src/opendal/core/core/src/types/buffer.rs
    functionUses: 0
    functionsReached:
    - min
    - Timestamp::chunk
    - Result::len
    linkageType: ''
    returnType: '&[u8]'
    signature: fn chunk(&self) -> &[u8]
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: '&mut [IoSlice<''a>]::is_empty'
      Src: /src/opendal/core/core/src/types/buffer.rs:548,1
    - Dst: IoSlice::new
      Src: /src/opendal/core/core/src/types/buffer.rs:552,1
    - Dst: Timestamp::chunk
      Src: /src/opendal/core/core/src/types/buffer.rs:552,1
    - Dst: '&mut [IoSlice<''a>]::is_empty'
      Src: /src/opendal/core/core/src/types/buffer.rs:558,1
    - Dst: (String, Metadata)::iter
      Src: /src/opendal/core/core/src/types/buffer.rs:563,1
    - Dst: skip
      Src: /src/opendal/core/core/src/types/buffer.rs:563,1
    - Dst: zip
      Src: /src/opendal/core/core/src/types/buffer.rs:563,1
    - Dst: '&mut [IoSlice<''a>]::iter_mut'
      Src: /src/opendal/core/core/src/types/buffer.rs:566,1
    - Dst: map
      Src: /src/opendal/core/core/src/types/buffer.rs:563,1
    - Dst: IoSlice::new
      Src: /src/opendal/core/core/src/types/buffer.rs:568,1
    - Dst: count
      Src: /src/opendal/core/core/src/types/buffer.rs:563,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 46
    argCount: 1
    argNames:
    - dst
    argTypes:
    - '&mut [IoSlice<''a>]'
    constantsTouched: []
    func_position:
      end: 574
      start: 545
    functionDepth: 37
    functionLinenumber: 545
    functionLinenumberEnd: 574
    functionName: Buffer::chunks_vectored
    functionSourceFile: /src/opendal/core/core/src/types/buffer.rs
    functionUses: 0
    functionsReached:
    - '&mut [IoSlice<''a>]::iter_mut'
    - count
    - IoSlice::new
    - zip
    - map
    - skip
    - '&mut [IoSlice<''a>]::is_empty'
    - Timestamp::chunk
    - (String, Metadata)::iter
    linkageType: ''
    returnType: usize
    signature: 'fn chunks_vectored<''a>(&''a self, dst: &mut [IoSlice<''a>]) -> usize'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Timestamp::advance
      Src: /src/opendal/core/core/src/types/buffer.rs:579,1
    - Dst: len
      Src: /src/opendal/core/core/src/types/buffer.rs:595,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 34
    argCount: 1
    argNames:
    - cnt
    argTypes:
    - usize
    constantsTouched: []
    func_position:
      end: 613
      start: 577
    functionDepth: 3
    functionLinenumber: 577
    functionLinenumberEnd: 613
    functionName: Buffer::advance
    functionSourceFile: /src/opendal/core/core/src/types/buffer.rs
    functionUses: 3
    functionsReached:
    - len
    - Timestamp::advance
    linkageType: ''
    returnType: void
    signature: 'fn advance(&mut self, cnt: usize)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::is_empty
      Src: /src/opendal/core/core/src/types/buffer.rs:622,1
    - Dst: Some
      Src: /src/opendal/core/core/src/types/buffer.rs:625,1
    - Dst: mem::take
      Src: /src/opendal/core/core/src/types/buffer.rs:625,1
    - Dst: Result::len
      Src: /src/opendal/core/core/src/types/buffer.rs:639,1
    - Dst: min
      Src: /src/opendal/core/core/src/types/buffer.rs:639,1
    - Dst: Result::slice
      Src: /src/opendal/core/core/src/types/buffer.rs:640,1
    - Dst: Result::len
      Src: /src/opendal/core/core/src/types/buffer.rs:644,1
    - Dst: Some
      Src: /src/opendal/core/core/src/types/buffer.rs:649,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 49
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 652
      start: 619
    functionDepth: 4
    functionLinenumber: 619
    functionLinenumberEnd: 652
    functionName: Buffer::next
    functionSourceFile: /src/opendal/core/core/src/types/buffer.rs
    functionUses: 0
    functionsReached:
    - Some
    - Result::is_empty
    - min
    - Result::slice
    - Result::len
    - mem::take
    linkageType: ''
    returnType: Option
    signature: fn next(&mut self) -> Option<Self::Item>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Iterator::size_hint
      Src: /src/opendal/core/core/src/types/buffer.rs:679,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 680
      start: 678
    functionDepth: 1
    functionLinenumber: 678
    functionLinenumberEnd: 680
    functionName: Buffer::size_hint
    functionSourceFile: /src/opendal/core/core/src/types/buffer.rs
    functionUses: 0
    functionsReached:
    - Iterator::size_hint
    linkageType: ''
    returnType: (usize, Option
    signature: fn size_hint(&self) -> (usize, Option<usize>)
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Poll::Ready
      Src: /src/opendal/core/core/src/types/buffer.rs:675,1
    - Dst: Buffer::get_mut
      Src: /src/opendal/core/core/src/types/buffer.rs:675,1
    - Dst: next
      Src: /src/opendal/core/core/src/types/buffer.rs:675,1
    - Dst: map
      Src: /src/opendal/core/core/src/types/buffer.rs:675,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 2
    argNames: []
    argTypes:
    - Pin<&mut Self>
    - '&mut Context<''_>'
    constantsTouched: []
    func_position:
      end: 676
      start: 674
    functionDepth: 2
    functionLinenumber: 674
    functionLinenumberEnd: 676
    functionName: Buffer::poll_next
    functionSourceFile: /src/opendal/core/core/src/types/buffer.rs
    functionUses: 0
    functionsReached:
    - Poll::Ready
    - map
    - next
    - Buffer::get_mut
    linkageType: ''
    returnType: Poll
    signature: 'fn poll_next(self: Pin<&mut Self>, _: &mut Context<''_>) -> Poll<Option<Self::Item>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/core/core/src/raw/oio/read/api.rs:146,1
    - Dst: mem::take
      Src: /src/opendal/core/core/src/raw/oio/read/api.rs:146,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 147
      start: 145
    functionDepth: 2
    functionLinenumber: 145
    functionLinenumberEnd: 147
    functionName: Buffer::read
    functionSourceFile: /src/opendal/core/core/src/raw/oio/read/api.rs
    functionUses: 0
    functionsReached:
    - Ok
    - mem::take
    linkageType: ''
    returnType: Result
    signature: async fn read(&mut self) -> Result<Buffer>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Buffer::len
      Src: /src/opendal/core/core/src/types/buffer.rs:695,1
    - Dst: usize::checked_sub
      Src: /src/opendal/core/core/src/types/buffer.rs:700,1
    - Dst: u64::unsigned_abs
      Src: /src/opendal/core/core/src/types/buffer.rs:700,1
    - Dst: ok_or
      Src: /src/opendal/core/core/src/types/buffer.rs:700,1
    - Dst: io::Error::new
      Src: /src/opendal/core/core/src/types/buffer.rs:701,1
    - Dst: usize::checked_add
      Src: /src/opendal/core/core/src/types/buffer.rs:706,1
    - Dst: ok_or
      Src: /src/opendal/core/core/src/types/buffer.rs:706,1
    - Dst: io::Error::new
      Src: /src/opendal/core/core/src/types/buffer.rs:706,1
    - Dst: Buffer::remaining
      Src: /src/opendal/core/core/src/types/buffer.rs:713,1
    - Dst: i64::checked_add
      Src: /src/opendal/core/core/src/types/buffer.rs:714,1
    - Dst: ok_or
      Src: /src/opendal/core/core/src/types/buffer.rs:714,1
    - Dst: io::Error::new
      Src: /src/opendal/core/core/src/types/buffer.rs:714,1
    - Dst: Err
      Src: /src/opendal/core/core/src/types/buffer.rs:719,1
    - Dst: io::Error::new
      Src: /src/opendal/core/core/src/types/buffer.rs:719,1
    - Dst: Err
      Src: /src/opendal/core/core/src/types/buffer.rs:729,1
    - Dst: io::Error::new
      Src: /src/opendal/core/core/src/types/buffer.rs:729,1
    - Dst: Buffer::advance
      Src: /src/opendal/core/core/src/types/buffer.rs:735,1
    - Dst: Buffer::remaining
      Src: /src/opendal/core/core/src/types/buffer.rs:735,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/types/buffer.rs:736,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 61
    argCount: 1
    argNames:
    - pos
    argTypes:
    - SeekFrom
    constantsTouched: []
    func_position:
      end: 737
      start: 694
    functionDepth: 36
    functionLinenumber: 694
    functionLinenumberEnd: 737
    functionName: Buffer::seek
    functionSourceFile: /src/opendal/core/core/src/types/buffer.rs
    functionUses: 0
    functionsReached:
    - Buffer::advance
    - Buffer::remaining
    - Ok
    - usize::checked_sub
    - io::Error::new
    - Buffer::len
    - Err
    - i64::checked_add
    - u64::unsigned_abs
    - ok_or
    - usize::checked_add
    linkageType: ''
    returnType: io::Result
    signature: 'fn seek(&mut self, pos: SeekFrom) -> io::Result<u64>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Timestamp::chunk
      Src: /src/opendal/core/core/src/types/buffer.rs:743,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/types/buffer.rs:751,1
    - Dst: Result::len
      Src: /src/opendal/core/core/src/types/buffer.rs:755,1
    - Dst: min
      Src: /src/opendal/core/core/src/types/buffer.rs:755,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/types/buffer.rs:759,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 34
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 760
      start: 741
    functionDepth: 37
    functionLinenumber: 741
    functionLinenumberEnd: 760
    functionName: Buffer::fill_buf
    functionSourceFile: /src/opendal/core/core/src/types/buffer.rs
    functionUses: 0
    functionsReached:
    - min
    - Timestamp::chunk
    - Ok
    - Result::len
    linkageType: ''
    returnType: io::Result
    signature: fn fill_buf(&mut self) -> io::Result<&[u8]>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Buffer::advance
      Src: /src/opendal/core/core/src/types/buffer.rs:763,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - amt
    argTypes:
    - usize
    constantsTouched: []
    func_position:
      end: 764
      start: 762
    functionDepth: 4
    functionLinenumber: 762
    functionLinenumberEnd: 764
    functionName: Buffer::consume
    functionSourceFile: /src/opendal/core/core/src/types/buffer.rs
    functionUses: 0
    functionsReached:
    - Buffer::advance
    linkageType: ''
    returnType: void
    signature: 'fn consume(&mut self, amt: usize)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: min
      Src: /src/opendal/core/core/src/types/buffer.rs:783,1
    - Dst: slice
      Src: /src/opendal/core/core/src/types/buffer.rs:784,1
    - Dst: Some
      Src: /src/opendal/core/core/src/types/buffer.rs:786,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 23
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 787
      start: 778
    functionDepth: 4
    functionLinenumber: 778
    functionLinenumberEnd: 787
    functionName: BufferChunks::next
    functionSourceFile: /src/opendal/core/core/src/types/buffer.rs
    functionUses: 0
    functionsReached:
    - min
    - slice
    - Some
    linkageType: ''
    returnType: Option
    signature: fn next(&mut self) -> Option<Self::Item>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: saturating_sub
      Src: /src/opendal/core/core/src/types/buffer.rs:790,1
    - Dst: usize::div_ceil
      Src: /src/opendal/core/core/src/types/buffer.rs:791,1
    - Dst: Some
      Src: /src/opendal/core/core/src/types/buffer.rs:792,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 793
      start: 789
    functionDepth: 0
    functionLinenumber: 789
    functionLinenumberEnd: 793
    functionName: BufferChunks::size_hint
    functionSourceFile: /src/opendal/core/core/src/types/buffer.rs
    functionUses: 1
    functionsReached:
    - usize::div_ceil
    - saturating_sub
    - Some
    linkageType: ''
    returnType: (usize, Option
    signature: fn size_hint(&self) -> (usize, Option<usize>)
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: BufferChunks::size_hint
      Src: /src/opendal/core/core/src/types/buffer.rs:798,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 799
      start: 797
    functionDepth: 1
    functionLinenumber: 797
    functionLinenumberEnd: 799
    functionName: BufferChunks::len
    functionSourceFile: /src/opendal/core/core/src/types/buffer.rs
    functionUses: 0
    functionsReached:
    - BufferChunks::size_hint
    linkageType: ''
    returnType: usize
    signature: fn len(&self) -> usize
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Buffer::new
      Src: /src/opendal/core/core/src/types/buffer.rs:821,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 826
      start: 820
    functionDepth: 1
    functionLinenumber: 820
    functionLinenumberEnd: 826
    functionName: tests::test_contiguous_buffer
    functionSourceFile: /src/opendal/core/core/src/types/buffer.rs
    functionUses: 0
    functionsReached:
    - Buffer::new
    linkageType: ''
    returnType: void
    signature: fn test_contiguous_buffer()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Buffer::from
      Src: /src/opendal/core/core/src/types/buffer.rs:830,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 835
      start: 829
    functionDepth: 40
    functionLinenumber: 829
    functionLinenumberEnd: 835
    functionName: tests::test_empty_non_contiguous_buffer
    functionSourceFile: /src/opendal/core/core/src/types/buffer.rs
    functionUses: 0
    functionsReached:
    - Buffer::from
    linkageType: ''
    returnType: void
    signature: fn test_empty_non_contiguous_buffer()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Buffer::from
      Src: /src/opendal/core/core/src/types/buffer.rs:839,1
    - Dst: io::Result::advance
      Src: /src/opendal/core/core/src/types/buffer.rs:844,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 848
      start: 838
    functionDepth: 40
    functionLinenumber: 838
    functionLinenumberEnd: 848
    functionName: tests::test_non_contiguous_buffer_with_empty_chunks
    functionSourceFile: /src/opendal/core/core/src/types/buffer.rs
    functionUses: 0
    functionsReached:
    - io::Result::advance
    - Buffer::from
    linkageType: ''
    returnType: void
    signature: fn test_non_contiguous_buffer_with_empty_chunks()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Buffer::from
      Src: /src/opendal/core/core/src/types/buffer.rs:852,1
    - Dst: io::Result::next
      Src: /src/opendal/core/core/src/types/buffer.rs:857,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 862
      start: 851
    functionDepth: 40
    functionLinenumber: 851
    functionLinenumberEnd: 862
    functionName: tests::test_non_contiguous_buffer_with_next
    functionSourceFile: /src/opendal/core/core/src/types/buffer.rs
    functionUses: 0
    functionsReached:
    - io::Result::next
    - Buffer::from
    linkageType: ''
    returnType: void
    signature: fn test_non_contiguous_buffer_with_next()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Buffer::from
      Src: /src/opendal/core/core/src/types/buffer.rs:866,1
    - Dst: io::Result::advance
      Src: /src/opendal/core/core/src/types/buffer.rs:871,1
    - Dst: io::Result::advance
      Src: /src/opendal/core/core/src/types/buffer.rs:876,1
    - Dst: io::Result::advance
      Src: /src/opendal/core/core/src/types/buffer.rs:881,1
    - Dst: io::Result::advance
      Src: /src/opendal/core/core/src/types/buffer.rs:886,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 23
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 890
      start: 865
    functionDepth: 40
    functionLinenumber: 865
    functionLinenumberEnd: 890
    functionName: tests::test_buffer_advance
    functionSourceFile: /src/opendal/core/core/src/types/buffer.rs
    functionUses: 0
    functionsReached:
    - io::Result::advance
    - Buffer::from
    linkageType: ''
    returnType: void
    signature: fn test_buffer_advance()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Buffer::from
      Src: /src/opendal/core/core/src/types/buffer.rs:894,1
    - Dst: io::Result::truncate
      Src: /src/opendal/core/core/src/types/buffer.rs:899,1
    - Dst: io::Result::truncate
      Src: /src/opendal/core/core/src/types/buffer.rs:904,1
    - Dst: io::Result::truncate
      Src: /src/opendal/core/core/src/types/buffer.rs:909,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 18
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 913
      start: 893
    functionDepth: 40
    functionLinenumber: 893
    functionLinenumberEnd: 913
    functionName: tests::test_buffer_truncate
    functionSourceFile: /src/opendal/core/core/src/types/buffer.rs
    functionUses: 0
    functionsReached:
    - io::Result::truncate
    - Buffer::from
    linkageType: ''
    returnType: void
    signature: fn test_buffer_truncate()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Buffer::from
      Src: /src/opendal/core/core/src/types/buffer.rs:917,1
    - Dst: Bytes::from
      Src: /src/opendal/core/core/src/types/buffer.rs:917,1
    - Dst: io::Result::chunks
      Src: /src/opendal/core/core/src/types/buffer.rs:919,1
    - Dst: BufferChunks::map
      Src: /src/opendal/core/core/src/types/buffer.rs:919,1
    - Dst: Result::to_bytes
      Src: /src/opendal/core/core/src/types/buffer.rs:921,1
    - Dst: "chunks(3)\n            .map(|chunk| chunk.to_bytes())\n            .collect::<Vec<Bytes>>"
      Src: /src/opendal/core/core/src/types/buffer.rs:919,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 930
      start: 916
    functionDepth: 40
    functionLinenumber: 916
    functionLinenumberEnd: 930
    functionName: tests::test_buffer_chunks_contiguous
    functionSourceFile: /src/opendal/core/core/src/types/buffer.rs
    functionUses: 0
    functionsReached:
    - io::Result::chunks
    - Result::to_bytes
    - BufferChunks::map
    - Bytes::from
    - "chunks(3)\n            .map(|chunk| chunk.to_bytes())\n            .collect::<Vec<Bytes>>"
    - Buffer::from
    linkageType: ''
    returnType: void
    signature: fn test_buffer_chunks_contiguous()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Buffer::from
      Src: /src/opendal/core/core/src/types/buffer.rs:934,1
    - Dst: io::Result::chunks
      Src: /src/opendal/core/core/src/types/buffer.rs:940,1
    - Dst: BufferChunks::map
      Src: /src/opendal/core/core/src/types/buffer.rs:940,1
    - Dst: Result::to_bytes
      Src: /src/opendal/core/core/src/types/buffer.rs:942,1
    - Dst: "chunks(2)\n            .map(|chunk| chunk.to_bytes())\n            .collect::<Vec<Bytes>>"
      Src: /src/opendal/core/core/src/types/buffer.rs:940,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 949
      start: 933
    functionDepth: 40
    functionLinenumber: 933
    functionLinenumberEnd: 949
    functionName: tests::test_buffer_chunks_non_contiguous
    functionSourceFile: /src/opendal/core/core/src/types/buffer.rs
    functionUses: 0
    functionsReached:
    - Result::to_bytes
    - io::Result::chunks
    - BufferChunks::map
    - "chunks(2)\n            .map(|chunk| chunk.to_bytes())\n            .collect::<Vec<Bytes>>"
    - Buffer::from
    linkageType: ''
    returnType: void
    signature: fn test_buffer_chunks_non_contiguous()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Buffer::from
      Src: /src/opendal/core/core/src/types/buffer.rs:954,1
    - Dst: Bytes::from
      Src: /src/opendal/core/core/src/types/buffer.rs:954,1
    - Dst: io::Result::chunks
      Src: /src/opendal/core/core/src/types/buffer.rs:955,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 956
      start: 953
    functionDepth: 40
    functionLinenumber: 953
    functionLinenumberEnd: 956
    functionName: tests::test_buffer_chunks_zero_panics
    functionSourceFile: /src/opendal/core/core/src/types/buffer.rs
    functionUses: 0
    functionsReached:
    - Bytes::from
    - io::Result::chunks
    - Buffer::from
    linkageType: ''
    returnType: void
    signature: fn test_buffer_chunks_zero_panics()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: rng
      Src: /src/opendal/core/services/compfs/src/core.rs:121,1
    - Dst: map
      Src: /src/opendal/core/services/compfs/src/core.rs:123,1
    - Dst: random_range
      Src: /src/opendal/core/services/compfs/src/core.rs:125,1
    - Dst: fill
      Src: /src/opendal/core/services/compfs/src/core.rs:127,1
    - Dst: Bytes::from
      Src: /src/opendal/core/services/compfs/src/core.rs:128,1
    - Dst: ".100)\n            .map(|_| {\n                let len = rng.random_range(1..100);\n\
        \                let mut buf = vec![0; len];\n                rng.fill(&mut\
        \ buf[..]);\n                Bytes::from(buf)\n            })\n          \
        \  .collect::<Vec<_>>"
      Src: /src/opendal/core/services/compfs/src/core.rs:123,1
    - Dst: Result::iter
      Src: /src/opendal/core/services/compfs/src/core.rs:132,1
    - Dst: map
      Src: /src/opendal/core/services/compfs/src/core.rs:132,1
    - Dst: Timestamp::len
      Src: /src/opendal/core/services/compfs/src/core.rs:132,1
    - Dst: iter().map(|b| b.len()).sum::<usize>
      Src: /src/opendal/core/services/compfs/src/core.rs:132,1
    - Dst: Result::iter
      Src: /src/opendal/core/services/compfs/src/core.rs:133,1
    - Dst: flatten
      Src: /src/opendal/core/services/compfs/src/core.rs:133,1
    - Dst: copied
      Src: /src/opendal/core/services/compfs/src/core.rs:133,1
    - Dst: iter().flatten().copied().collect::<Bytes>
      Src: /src/opendal/core/services/compfs/src/core.rs:133,1
    - Dst: Buffer::from
      Src: /src/opendal/core/services/compfs/src/core.rs:134,1
    - Dst: CompfsBuffer::from
      Src: /src/opendal/core/services/compfs/src/core.rs:136,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 38
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 137
      start: 120
    functionDepth: 32
    functionLinenumber: 120
    functionLinenumberEnd: 137
    functionName: tests::setup_buffer
    functionSourceFile: /src/opendal/core/services/compfs/src/core.rs
    functionUses: 0
    functionsReached:
    - rng
    - ".100)\n            .map(|_| {\n                let len = rng.random_range(1..100);\n\
      \                let mut buf = vec![0; len];\n                rng.fill(&mut\
      \ buf[..]);\n                Bytes::from(buf)\n            })\n            .collect::<Vec<_>>"
    - copied
    - iter().flatten().copied().collect::<Bytes>
    - Bytes::from
    - map
    - random_range
    - fill
    - Result::iter
    - iter().map(|b| b.len()).sum::<usize>
    - flatten
    - CompfsBuffer::from
    - Buffer::from
    - Timestamp::len
    linkageType: ''
    returnType: (CompfsBuffer, usize, Bytes)
    signature: fn setup_buffer() -> (CompfsBuffer, usize, Bytes)
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: rng
      Src: /src/opendal/core/core/src/types/buffer.rs:984,1
    - Dst: setup_buffer
      Src: /src/opendal/core/core/src/types/buffer.rs:986,1
    - Dst: io::Result::is_empty
      Src: /src/opendal/core/core/src/types/buffer.rs:993,1
    - Dst: random_range
      Src: /src/opendal/core/core/src/types/buffer.rs:996,1
    - Dst: io::Result::advance
      Src: /src/opendal/core/core/src/types/buffer.rs:998,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 22
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 1003
      start: 983
    functionDepth: 33
    functionLinenumber: 983
    functionLinenumberEnd: 1003
    functionName: tests::fuzz_buffer_advance
    functionSourceFile: /src/opendal/core/core/src/types/buffer.rs
    functionUses: 0
    functionsReached:
    - rng
    - io::Result::is_empty
    - random_range
    - io::Result::advance
    - setup_buffer
    linkageType: ''
    returnType: void
    signature: fn fuzz_buffer_advance()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: rng
      Src: /src/opendal/core/core/src/types/buffer.rs:1007,1
    - Dst: setup_buffer
      Src: /src/opendal/core/core/src/types/buffer.rs:1009,1
    - Dst: io::Result::is_empty
      Src: /src/opendal/core/core/src/types/buffer.rs:1014,1
    - Dst: random_range
      Src: /src/opendal/core/core/src/types/buffer.rs:1015,1
    - Dst: io::Result::advance
      Src: /src/opendal/core/core/src/types/buffer.rs:1017,1
    - Dst: io::Result::next
      Src: /src/opendal/core/core/src/types/buffer.rs:1023,1
    - Dst: Result::len
      Src: /src/opendal/core/core/src/types/buffer.rs:1025,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 28
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 1032
      start: 1006
    functionDepth: 33
    functionLinenumber: 1006
    functionLinenumberEnd: 1032
    functionName: tests::fuzz_buffer_iter
    functionSourceFile: /src/opendal/core/core/src/types/buffer.rs
    functionUses: 0
    functionsReached:
    - rng
    - io::Result::next
    - io::Result::is_empty
    - random_range
    - io::Result::advance
    - Result::len
    - setup_buffer
    linkageType: ''
    returnType: void
    signature: fn fuzz_buffer_iter()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: rng
      Src: /src/opendal/core/core/src/types/buffer.rs:1036,1
    - Dst: setup_buffer
      Src: /src/opendal/core/core/src/types/buffer.rs:1038,1
    - Dst: io::Result::is_empty
      Src: /src/opendal/core/core/src/types/buffer.rs:1043,1
    - Dst: random_range
      Src: /src/opendal/core/core/src/types/buffer.rs:1044,1
    - Dst: io::Result::advance
      Src: /src/opendal/core/core/src/types/buffer.rs:1046,1
    - Dst: random_range
      Src: /src/opendal/core/core/src/types/buffer.rs:1052,1
    - Dst: io::Result::truncate
      Src: /src/opendal/core/core/src/types/buffer.rs:1053,1
    - Dst: io::Result::next
      Src: /src/opendal/core/core/src/types/buffer.rs:1063,1
    - Dst: Result::len
      Src: /src/opendal/core/core/src/types/buffer.rs:1065,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 37
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 1072
      start: 1035
    functionDepth: 33
    functionLinenumber: 1035
    functionLinenumberEnd: 1072
    functionName: tests::fuzz_buffer_truncate
    functionSourceFile: /src/opendal/core/core/src/types/buffer.rs
    functionUses: 0
    functionsReached:
    - rng
    - io::Result::next
    - io::Result::is_empty
    - random_range
    - io::Result::advance
    - io::Result::truncate
    - Result::len
    - setup_buffer
    linkageType: ''
    returnType: void
    signature: fn fuzz_buffer_truncate()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Buffer::from
      Src: /src/opendal/core/core/src/types/buffer.rs:1076,1
    - Dst: read
      Src: /src/opendal/core/core/src/types/buffer.rs:1078,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/core/src/types/buffer.rs:1078,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 1081
      start: 1075
    functionDepth: 40
    functionLinenumber: 1075
    functionLinenumberEnd: 1081
    functionName: tests::test_read_trait
    functionSourceFile: /src/opendal/core/core/src/types/buffer.rs
    functionUses: 0
    functionsReached:
    - read
    - Result::unwrap
    - Buffer::from
    linkageType: ''
    returnType: void
    signature: fn test_read_trait()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Buffer::from
      Src: /src/opendal/core/core/src/types/buffer.rs:1085,1
    - Dst: seek
      Src: /src/opendal/core/core/src/types/buffer.rs:1086,1
    - Dst: SeekFrom::Start
      Src: /src/opendal/core/core/src/types/buffer.rs:1086,1
    - Dst: io::Result::unwrap
      Src: /src/opendal/core/core/src/types/buffer.rs:1086,1
    - Dst: read_exact
      Src: /src/opendal/core/core/src/types/buffer.rs:1088,1
    - Dst: unwrap
      Src: /src/opendal/core/core/src/types/buffer.rs:1088,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 1090
      start: 1084
    functionDepth: 40
    functionLinenumber: 1084
    functionLinenumberEnd: 1090
    functionName: tests::test_seek_trait
    functionSourceFile: /src/opendal/core/core/src/types/buffer.rs
    functionUses: 0
    functionsReached:
    - SeekFrom::Start
    - seek
    - unwrap
    - io::Result::unwrap
    - read_exact
    - Buffer::from
    linkageType: ''
    returnType: void
    signature: fn test_seek_trait()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Buffer::from
      Src: /src/opendal/core/core/src/types/buffer.rs:1094,1
    - Dst: String::new
      Src: /src/opendal/core/core/src/types/buffer.rs:1095,1
    - Dst: read_to_string
      Src: /src/opendal/core/core/src/types/buffer.rs:1096,1
    - Dst: unwrap
      Src: /src/opendal/core/core/src/types/buffer.rs:1096,1
    - Dst: Buffer::from
      Src: /src/opendal/core/core/src/types/buffer.rs:1099,1
    - Dst: fill_buf
      Src: /src/opendal/core/core/src/types/buffer.rs:1100,1
    - Dst: io::Result::unwrap
      Src: /src/opendal/core/core/src/types/buffer.rs:1100,1
    - Dst: consume
      Src: /src/opendal/core/core/src/types/buffer.rs:1102,1
    - Dst: fill_buf
      Src: /src/opendal/core/core/src/types/buffer.rs:1103,1
    - Dst: io::Result::unwrap
      Src: /src/opendal/core/core/src/types/buffer.rs:1103,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 23
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 1105
      start: 1093
    functionDepth: 40
    functionLinenumber: 1093
    functionLinenumberEnd: 1105
    functionName: tests::test_bufread_trait
    functionSourceFile: /src/opendal/core/core/src/types/buffer.rs
    functionUses: 0
    functionsReached:
    - String::new
    - consume
    - unwrap
    - Buffer::from
    - read_to_string
    - io::Result::unwrap
    - fill_buf
    linkageType: ''
    returnType: void
    signature: fn test_bufread_trait()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Buffer::from
      Src: /src/opendal/core/core/src/types/buffer.rs:1109,1
    - Dst: read
      Src: /src/opendal/core/core/src/types/buffer.rs:1111,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/core/src/types/buffer.rs:1111,1
    - Dst: read
      Src: /src/opendal/core/core/src/types/buffer.rs:1115,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/core/src/types/buffer.rs:1115,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 15
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 1118
      start: 1108
    functionDepth: 40
    functionLinenumber: 1108
    functionLinenumberEnd: 1118
    functionName: tests::test_read_partial
    functionSourceFile: /src/opendal/core/core/src/types/buffer.rs
    functionUses: 0
    functionsReached:
    - read
    - Result::unwrap
    - Buffer::from
    linkageType: ''
    returnType: void
    signature: fn test_read_partial()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Buffer::from
      Src: /src/opendal/core/core/src/types/buffer.rs:1122,1
    - Dst: seek
      Src: /src/opendal/core/core/src/types/buffer.rs:1123,1
    - Dst: SeekFrom::Start
      Src: /src/opendal/core/core/src/types/buffer.rs:1123,1
    - Dst: io::Result::unwrap
      Src: /src/opendal/core/core/src/types/buffer.rs:1123,1
    - Dst: read_exact
      Src: /src/opendal/core/core/src/types/buffer.rs:1125,1
    - Dst: unwrap
      Src: /src/opendal/core/core/src/types/buffer.rs:1125,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 1127
      start: 1121
    functionDepth: 40
    functionLinenumber: 1121
    functionLinenumberEnd: 1127
    functionName: tests::test_seek_and_read
    functionSourceFile: /src/opendal/core/core/src/types/buffer.rs
    functionUses: 0
    functionsReached:
    - SeekFrom::Start
    - seek
    - unwrap
    - io::Result::unwrap
    - read_exact
    - Buffer::from
    linkageType: ''
    returnType: void
    signature: fn test_seek_and_read()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Buffer::from
      Src: /src/opendal/core/core/src/types/buffer.rs:1131,1
    - Dst: fill_buf
      Src: /src/opendal/core/core/src/types/buffer.rs:1132,1
    - Dst: io::Result::unwrap
      Src: /src/opendal/core/core/src/types/buffer.rs:1132,1
    - Dst: consume
      Src: /src/opendal/core/core/src/types/buffer.rs:1134,1
    - Dst: fill_buf
      Src: /src/opendal/core/core/src/types/buffer.rs:1135,1
    - Dst: io::Result::unwrap
      Src: /src/opendal/core/core/src/types/buffer.rs:1135,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 1137
      start: 1130
    functionDepth: 40
    functionLinenumber: 1130
    functionLinenumberEnd: 1137
    functionName: tests::test_bufread_consume
    functionSourceFile: /src/opendal/core/core/src/types/buffer.rs
    functionUses: 0
    functionsReached:
    - io::Result::unwrap
    - fill_buf
    - Buffer::from
    - consume
    linkageType: ''
    returnType: void
    signature: fn test_bufread_consume()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Buffer::new
      Src: /src/opendal/core/core/src/types/buffer.rs:1141,1
    - Dst: read
      Src: /src/opendal/core/core/src/types/buffer.rs:1143,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/core/src/types/buffer.rs:1143,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 1146
      start: 1140
    functionDepth: 31
    functionLinenumber: 1140
    functionLinenumberEnd: 1146
    functionName: tests::test_empty_buffer
    functionSourceFile: /src/opendal/core/core/src/types/buffer.rs
    functionUses: 0
    functionsReached:
    - read
    - Buffer::new
    - Result::unwrap
    linkageType: ''
    returnType: void
    signature: fn test_empty_buffer()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Buffer::from
      Src: /src/opendal/core/core/src/types/buffer.rs:1150,1
    - Dst: seek
      Src: /src/opendal/core/core/src/types/buffer.rs:1151,1
    - Dst: SeekFrom::Start
      Src: /src/opendal/core/core/src/types/buffer.rs:1151,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 1153
      start: 1149
    functionDepth: 40
    functionLinenumber: 1149
    functionLinenumberEnd: 1153
    functionName: tests::test_seek_out_of_bounds
    functionSourceFile: /src/opendal/core/core/src/types/buffer.rs
    functionUses: 0
    functionsReached:
    - seek
    - Buffer::from
    - SeekFrom::Start
    linkageType: ''
    returnType: void
    signature: fn test_seek_out_of_bounds()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Buffer::from
      Src: /src/opendal/core/core/src/types/buffer.rs:1157,1
    - Dst: Bytes::from
      Src: /src/opendal/core/core/src/types/buffer.rs:1157,1
    - Dst: io::Result::split_to
      Src: /src/opendal/core/core/src/types/buffer.rs:1158,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 1161
      start: 1156
    functionDepth: 40
    functionLinenumber: 1156
    functionLinenumberEnd: 1161
    functionName: tests::test_split_to_contiguous
    functionSourceFile: /src/opendal/core/core/src/types/buffer.rs
    functionUses: 0
    functionsReached:
    - Bytes::from
    - io::Result::split_to
    - Buffer::from
    linkageType: ''
    returnType: void
    signature: fn test_split_to_contiguous()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Buffer::from
      Src: /src/opendal/core/core/src/types/buffer.rs:1165,1
    - Dst: io::Result::split_to
      Src: /src/opendal/core/core/src/types/buffer.rs:1170,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 1173
      start: 1164
    functionDepth: 40
    functionLinenumber: 1164
    functionLinenumberEnd: 1173
    functionName: tests::test_split_to_non_contiguous
    functionSourceFile: /src/opendal/core/core/src/types/buffer.rs
    functionUses: 0
    functionsReached:
    - io::Result::split_to
    - Buffer::from
    linkageType: ''
    returnType: void
    signature: fn test_split_to_non_contiguous()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Buffer::from
      Src: /src/opendal/core/core/src/types/buffer.rs:1177,1
    - Dst: Bytes::from
      Src: /src/opendal/core/core/src/types/buffer.rs:1177,1
    - Dst: io::Result::split_to
      Src: /src/opendal/core/core/src/types/buffer.rs:1178,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 1181
      start: 1176
    functionDepth: 40
    functionLinenumber: 1176
    functionLinenumberEnd: 1181
    functionName: tests::test_split_to_at_zero
    functionSourceFile: /src/opendal/core/core/src/types/buffer.rs
    functionUses: 0
    functionsReached:
    - Bytes::from
    - io::Result::split_to
    - Buffer::from
    linkageType: ''
    returnType: void
    signature: fn test_split_to_at_zero()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Buffer::from
      Src: /src/opendal/core/core/src/types/buffer.rs:1185,1
    - Dst: Bytes::from
      Src: /src/opendal/core/core/src/types/buffer.rs:1185,1
    - Dst: io::Result::split_to
      Src: /src/opendal/core/core/src/types/buffer.rs:1186,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 1189
      start: 1184
    functionDepth: 40
    functionLinenumber: 1184
    functionLinenumberEnd: 1189
    functionName: tests::test_split_to_at_len
    functionSourceFile: /src/opendal/core/core/src/types/buffer.rs
    functionUses: 0
    functionsReached:
    - Bytes::from
    - io::Result::split_to
    - Buffer::from
    linkageType: ''
    returnType: void
    signature: fn test_split_to_at_len()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Buffer::from
      Src: /src/opendal/core/core/src/types/buffer.rs:1194,1
    - Dst: Bytes::from
      Src: /src/opendal/core/core/src/types/buffer.rs:1194,1
    - Dst: io::Result::split_to
      Src: /src/opendal/core/core/src/types/buffer.rs:1195,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 1196
      start: 1193
    functionDepth: 40
    functionLinenumber: 1193
    functionLinenumberEnd: 1196
    functionName: tests::test_split_to_out_of_bounds
    functionSourceFile: /src/opendal/core/core/src/types/buffer.rs
    functionUses: 0
    functionsReached:
    - Bytes::from
    - io::Result::split_to
    - Buffer::from
    linkageType: ''
    returnType: void
    signature: fn test_split_to_out_of_bounds()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Buffer::from
      Src: /src/opendal/core/core/src/types/buffer.rs:1200,1
    - Dst: Bytes::from
      Src: /src/opendal/core/core/src/types/buffer.rs:1200,1
    - Dst: io::Result::split_off
      Src: /src/opendal/core/core/src/types/buffer.rs:1201,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 1204
      start: 1199
    functionDepth: 40
    functionLinenumber: 1199
    functionLinenumberEnd: 1204
    functionName: tests::test_split_off_contiguous
    functionSourceFile: /src/opendal/core/core/src/types/buffer.rs
    functionUses: 0
    functionsReached:
    - Bytes::from
    - io::Result::split_off
    - Buffer::from
    linkageType: ''
    returnType: void
    signature: fn test_split_off_contiguous()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Buffer::from
      Src: /src/opendal/core/core/src/types/buffer.rs:1208,1
    - Dst: io::Result::split_off
      Src: /src/opendal/core/core/src/types/buffer.rs:1213,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 1216
      start: 1207
    functionDepth: 40
    functionLinenumber: 1207
    functionLinenumberEnd: 1216
    functionName: tests::test_split_off_non_contiguous
    functionSourceFile: /src/opendal/core/core/src/types/buffer.rs
    functionUses: 0
    functionsReached:
    - io::Result::split_off
    - Buffer::from
    linkageType: ''
    returnType: void
    signature: fn test_split_off_non_contiguous()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Buffer::from
      Src: /src/opendal/core/core/src/types/buffer.rs:1220,1
    - Dst: Bytes::from
      Src: /src/opendal/core/core/src/types/buffer.rs:1220,1
    - Dst: io::Result::split_off
      Src: /src/opendal/core/core/src/types/buffer.rs:1221,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 1224
      start: 1219
    functionDepth: 40
    functionLinenumber: 1219
    functionLinenumberEnd: 1224
    functionName: tests::test_split_off_at_zero
    functionSourceFile: /src/opendal/core/core/src/types/buffer.rs
    functionUses: 0
    functionsReached:
    - Bytes::from
    - io::Result::split_off
    - Buffer::from
    linkageType: ''
    returnType: void
    signature: fn test_split_off_at_zero()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Buffer::from
      Src: /src/opendal/core/core/src/types/buffer.rs:1228,1
    - Dst: Bytes::from
      Src: /src/opendal/core/core/src/types/buffer.rs:1228,1
    - Dst: io::Result::split_off
      Src: /src/opendal/core/core/src/types/buffer.rs:1229,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 1232
      start: 1227
    functionDepth: 40
    functionLinenumber: 1227
    functionLinenumberEnd: 1232
    functionName: tests::test_split_off_at_len
    functionSourceFile: /src/opendal/core/core/src/types/buffer.rs
    functionUses: 0
    functionsReached:
    - Bytes::from
    - io::Result::split_off
    - Buffer::from
    linkageType: ''
    returnType: void
    signature: fn test_split_off_at_len()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Buffer::from
      Src: /src/opendal/core/core/src/types/buffer.rs:1237,1
    - Dst: Bytes::from
      Src: /src/opendal/core/core/src/types/buffer.rs:1237,1
    - Dst: io::Result::split_off
      Src: /src/opendal/core/core/src/types/buffer.rs:1238,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 1239
      start: 1236
    functionDepth: 40
    functionLinenumber: 1236
    functionLinenumberEnd: 1239
    functionName: tests::test_split_off_out_of_bounds
    functionSourceFile: /src/opendal/core/core/src/types/buffer.rs
    functionUses: 0
    functionsReached:
    - Bytes::from
    - io::Result::split_off
    - Buffer::from
    linkageType: ''
    returnType: void
    signature: fn test_split_off_out_of_bounds()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Buffer::from
      Src: /src/opendal/core/core/src/types/buffer.rs:1244,1
    - Dst: Bytes::from
      Src: /src/opendal/core/core/src/types/buffer.rs:1244,1
    - Dst: io::Result::split_off
      Src: /src/opendal/core/core/src/types/buffer.rs:1247,1
    - Dst: io::Result::split_to
      Src: /src/opendal/core/core/src/types/buffer.rs:1252,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 1255
      start: 1242
    functionDepth: 40
    functionLinenumber: 1242
    functionLinenumberEnd: 1255
    functionName: tests::test_split_to_split_off_composition
    functionSourceFile: /src/opendal/core/core/src/types/buffer.rs
    functionUses: 0
    functionsReached:
    - Bytes::from
    - io::Result::split_to
    - io::Result::split_off
    - Buffer::from
    linkageType: ''
    returnType: void
    signature: fn test_split_to_split_off_composition()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Bytes::from
      Src: /src/opendal/core/core/src/types/buffer.rs:1260,1
    - Dst: Buffer::from
      Src: /src/opendal/core/core/src/types/buffer.rs:1261,1
    - Dst: Result::clone
      Src: /src/opendal/core/core/src/types/buffer.rs:1261,1
    - Dst: io::Result::split_to
      Src: /src/opendal/core/core/src/types/buffer.rs:1263,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 1269
      start: 1258
    functionDepth: 32
    functionLinenumber: 1258
    functionLinenumberEnd: 1269
    functionName: tests::test_split_preserves_underlying_storage
    functionSourceFile: /src/opendal/core/core/src/types/buffer.rs
    functionUses: 0
    functionsReached:
    - Bytes::from
    - io::Result::split_to
    - Result::clone
    - Buffer::from
    linkageType: ''
    returnType: void
    signature: fn test_split_preserves_underlying_storage()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: rng
      Src: /src/opendal/core/core/src/types/buffer.rs:1273,1
    - Dst: setup_buffer
      Src: /src/opendal/core/core/src/types/buffer.rs:1275,1
    - Dst: io::Result::is_empty
      Src: /src/opendal/core/core/src/types/buffer.rs:1280,1
    - Dst: io::Result::len
      Src: /src/opendal/core/core/src/types/buffer.rs:1282,1
    - Dst: random_range
      Src: /src/opendal/core/core/src/types/buffer.rs:1283,1
    - Dst: io::Result::split_to
      Src: /src/opendal/core/core/src/types/buffer.rs:1284,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 21
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 1289
      start: 1272
    functionDepth: 33
    functionLinenumber: 1272
    functionLinenumberEnd: 1289
    functionName: tests::fuzz_buffer_split_to
    functionSourceFile: /src/opendal/core/core/src/types/buffer.rs
    functionUses: 0
    functionsReached:
    - rng
    - io::Result::split_to
    - io::Result::is_empty
    - io::Result::len
    - random_range
    - setup_buffer
    linkageType: ''
    returnType: void
    signature: fn fuzz_buffer_split_to()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: rng
      Src: /src/opendal/core/core/src/types/buffer.rs:1293,1
    - Dst: setup_buffer
      Src: /src/opendal/core/core/src/types/buffer.rs:1295,1
    - Dst: io::Result::is_empty
      Src: /src/opendal/core/core/src/types/buffer.rs:1301,1
    - Dst: io::Result::len
      Src: /src/opendal/core/core/src/types/buffer.rs:1303,1
    - Dst: random_range
      Src: /src/opendal/core/core/src/types/buffer.rs:1304,1
    - Dst: io::Result::split_off
      Src: /src/opendal/core/core/src/types/buffer.rs:1305,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 23
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 1311
      start: 1292
    functionDepth: 33
    functionLinenumber: 1292
    functionLinenumberEnd: 1311
    functionName: tests::fuzz_buffer_split_off
    functionSourceFile: /src/opendal/core/core/src/types/buffer.rs
    functionUses: 0
    functionsReached:
    - rng
    - io::Result::is_empty
    - io::Result::len
    - random_range
    - io::Result::split_off
    - setup_buffer
    linkageType: ''
    returnType: void
    signature: fn fuzz_buffer_split_off()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::debug_struct
      Src: /src/opendal/core/core/src/types/copy.rs:44,1
    - Dst: field
      Src: /src/opendal/core/core/src/types/copy.rs:44,1
    - Dst: is_some
      Src: /src/opendal/core/core/src/types/copy.rs:45,1
    - Dst: field
      Src: /src/opendal/core/core/src/types/copy.rs:44,1
    - Dst: finish
      Src: /src/opendal/core/core/src/types/copy.rs:44,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 14
    argCount: 1
    argNames:
    - f
    argTypes:
    - '&mut Formatter<''_>'
    constantsTouched: []
    func_position:
      end: 48
      start: 43
    functionDepth: 5
    functionLinenumber: 43
    functionLinenumberEnd: 48
    functionName: Copier::fmt
    functionSourceFile: /src/opendal/core/core/src/types/copy.rs
    functionUses: 0
    functionsReached:
    - field
    - finish
    - Result::debug_struct
    - is_some
    linkageType: ''
    returnType: fmt::Result
    signature: 'fn fmt(&self, f: &mut Formatter<''_>) -> fmt::Result'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Servicer::copy
      Src: /src/opendal/core/core/src/types/copy.rs:66,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/types/copy.rs:68,1
    - Dst: Some
      Src: /src/opendal/core/core/src/types/copy.rs:69,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 6
    argNames:
    - ctx
    - srv
    - from
    - to
    - args
    - opts
    argTypes:
    - OperationContext
    - Servicer
    - '&str'
    - '&str'
    - OpCopy
    - OpCopier
    constantsTouched: []
    func_position:
      end: 75
      start: 58
    functionDepth: 34
    functionLinenumber: 58
    functionLinenumberEnd: 75
    functionName: Copier::create
    functionSourceFile: /src/opendal/core/core/src/types/copy.rs
    functionUses: 1
    functionsReached:
    - Ok
    - Servicer::copy
    - Some
    linkageType: ''
    returnType: Result
    signature: 'pub(crate) fn create(ctx: OperationContext,srv: Servicer,from: &str,to:
      &str,args: OpCopy,opts: OpCopier,) -> Result<Self>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/core/core/src/types/copy.rs:113,1
    - Dst: Error::new
      Src: /src/opendal/core/core/src/types/copy.rs:113,1
    - Dst: clone
      Src: /src/opendal/core/core/src/types/copy.rs:119,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/types/copy.rs:120,1
    - Dst: is_none
      Src: /src/opendal/core/core/src/types/copy.rs:123,1
    - Dst: Copier::next
      Src: /src/opendal/core/core/src/types/copy.rs:124,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/types/copy.rs:130,1
    - Dst: clone
      Src: /src/opendal/core/core/src/types/copy.rs:130,1
    - Dst: unwrap_or_default
      Src: /src/opendal/core/core/src/types/copy.rs:130,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 34
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 131
      start: 111
    functionDepth: 36
    functionLinenumber: 111
    functionLinenumberEnd: 131
    functionName: Copier::close
    functionSourceFile: /src/opendal/core/core/src/types/copy.rs
    functionUses: 1
    functionsReached:
    - is_none
    - Ok
    - Copier::next
    - clone
    - Error::new
    - Err
    - unwrap_or_default
    linkageType: ''
    returnType: Result
    signature: pub async fn close(&mut self) -> Result<Metadata>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Poll::Ready
      Src: /src/opendal/core/core/src/types/copy.rs:139,1
    - Dst: take
      Src: /src/opendal/core/core/src/types/copy.rs:142,1
    - Dst: Result::next_dyn
      Src: /src/opendal/core/core/src/types/copy.rs:144,1
    - Dst: Some
      Src: /src/opendal/core/core/src/types/copy.rs:147,1
    - Dst: Box::pin
      Src: /src/opendal/core/core/src/types/copy.rs:147,1
    - Dst: as_mut
      Src: /src/opendal/core/core/src/types/copy.rs:150,1
    - Dst: Some
      Src: /src/opendal/core/core/src/types/copy.rs:152,1
    - Dst: Poll::Ready
      Src: /src/opendal/core/core/src/types/copy.rs:156,1
    - Dst: Some
      Src: /src/opendal/core/core/src/types/copy.rs:156,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/types/copy.rs:156,1
    - Dst: Poll::Ready
      Src: /src/opendal/core/core/src/types/copy.rs:157,1
    - Dst: Poll::Ready
      Src: /src/opendal/core/core/src/types/copy.rs:160,1
    - Dst: Some
      Src: /src/opendal/core/core/src/types/copy.rs:160,1
    - Dst: Err
      Src: /src/opendal/core/core/src/types/copy.rs:160,1
    - Dst: Poll::Ready
      Src: /src/opendal/core/core/src/types/copy.rs:165,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 46
    argCount: 2
    argNames:
    - cx
    argTypes:
    - Pin<&mut Self>
    - '&mut Context<''_>'
    constantsTouched: []
    func_position:
      end: 166
      start: 137
    functionDepth: 3
    functionLinenumber: 137
    functionLinenumberEnd: 166
    functionName: Copier::poll_next
    functionSourceFile: /src/opendal/core/core/src/types/copy.rs
    functionUses: 0
    functionsReached:
    - as_mut
    - Ok
    - Poll::Ready
    - Some
    - take
    - Result::next_dyn
    - Err
    - Box::pin
    linkageType: ''
    returnType: Poll
    signature: 'fn poll_next(mut self: Pin<&mut Self>, cx: &mut Context<''_>) -> Poll<Option<Self::Item>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self
      Src: /src/opendal/bindings/python/src/metadata.rs:34,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - entry
    argTypes:
    - ocore::Entry
    constantsTouched: []
    func_position:
      end: 35
      start: 33
    functionDepth: 0
    functionLinenumber: 33
    functionLinenumberEnd: 35
    functionName: Entry::new
    functionSourceFile: /src/opendal/bindings/python/src/metadata.rs
    functionUses: 61
    functionsReached:
    - Self
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(entry: ocore::Entry) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: path
      Src: /src/opendal/bindings/nodejs/src/lib.rs:867,1
    - Dst: to_string
      Src: /src/opendal/bindings/nodejs/src/lib.rs:867,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 868
      start: 866
    functionDepth: 34
    functionLinenumber: 866
    functionLinenumberEnd: 868
    functionName: Entry::path
    functionSourceFile: /src/opendal/bindings/nodejs/src/lib.rs
    functionUses: 17
    functionsReached:
    - to_string
    - path
    linkageType: ''
    returnType: String
    signature: pub fn path(&self) -> String
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: name
      Src: /src/opendal/bindings/nodejs/src/lib.rs:873,1
    - Dst: to_string
      Src: /src/opendal/bindings/nodejs/src/lib.rs:873,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 874
      start: 872
    functionDepth: 31
    functionLinenumber: 872
    functionLinenumberEnd: 874
    functionName: Entry::name
    functionSourceFile: /src/opendal/bindings/nodejs/src/lib.rs
    functionUses: 1
    functionsReached:
    - to_string
    - name
    linkageType: ''
    returnType: String
    signature: pub fn name(&self) -> String
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Metadata
      Src: /src/opendal/bindings/nodejs/src/lib.rs:879,1
    - Dst: metadata
      Src: /src/opendal/bindings/nodejs/src/lib.rs:879,1
    - Dst: clone
      Src: /src/opendal/bindings/nodejs/src/lib.rs:879,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 880
      start: 878
    functionDepth: 37
    functionLinenumber: 878
    functionLinenumberEnd: 880
    functionName: Entry::metadata
    functionSourceFile: /src/opendal/bindings/nodejs/src/lib.rs
    functionUses: 12
    functionsReached:
    - Metadata
    - metadata
    - clone
    linkageType: ''
    returnType: Metadata
    signature: pub fn metadata(&self) -> Metadata
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 103
      start: 101
    functionDepth: 0
    functionLinenumber: 101
    functionLinenumberEnd: 103
    functionName: Entry::into_parts
    functionSourceFile: /src/opendal/core/core/src/raw/oio/entry.rs
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: (String, Metadata)
    signature: pub fn into_parts(self) -> (String, Metadata)
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: BytesRange::new
      Src: /src/opendal/core/core/src/types/bytes_range.rs:57,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 58
      start: 56
    functionDepth: 1
    functionLinenumber: 56
    functionLinenumberEnd: 58
    functionName: BytesRange::default
    functionSourceFile: /src/opendal/core/core/src/types/bytes_range.rs
    functionUses: 9
    functionsReached:
    - BytesRange::new
    linkageType: ''
    returnType: Self
    signature: fn default() -> Self
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - offset
    - size
    argTypes:
    - u64
    - Option<u64>
    constantsTouched: []
    func_position:
      end: 74
      start: 72
    functionDepth: 0
    functionLinenumber: 72
    functionLinenumberEnd: 74
    functionName: BytesRange::new
    functionSourceFile: /src/opendal/core/core/src/types/bytes_range.rs
    functionUses: 27
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(offset: u64, size: Option<u64>) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - size
    argTypes:
    - u64
    constantsTouched: []
    func_position:
      end: 79
      start: 77
    functionDepth: 0
    functionLinenumber: 77
    functionLinenumberEnd: 79
    functionName: BytesRange::suffix
    functionSourceFile: /src/opendal/core/core/src/types/bytes_range.rs
    functionUses: 20
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: 'pub fn suffix(size: u64) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 87
      start: 82
    functionDepth: 0
    functionLinenumber: 82
    functionLinenumberEnd: 87
    functionName: BytesRange::offset
    functionSourceFile: /src/opendal/core/core/src/types/bytes_range.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: u64
    signature: pub fn offset(&self) -> u64
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Some
      Src: /src/opendal/core/core/src/types/bytes_range.rs:93,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 95
      start: 90
    functionDepth: 0
    functionLinenumber: 90
    functionLinenumberEnd: 95
    functionName: BytesRange::size
    functionSourceFile: /src/opendal/core/core/src/types/bytes_range.rs
    functionUses: 0
    functionsReached:
    - Some
    linkageType: ''
    returnType: Option
    signature: pub fn size(&self) -> Option<u64>
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 100
      start: 98
    functionDepth: 0
    functionLinenumber: 98
    functionLinenumberEnd: 100
    functionName: BytesRange::is_suffix
    functionSourceFile: /src/opendal/core/core/src/types/bytes_range.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: pub fn is_suffix(&self) -> bool
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: u64::checked_add
      Src: /src/opendal/core/core/src/types/bytes_range.rs:111,1
    - Dst: expect
      Src: /src/opendal/core/core/src/types/bytes_range.rs:111,1
    - Dst: Option::map
      Src: /src/opendal/core/core/src/types/bytes_range.rs:114,1
    - Dst: Option::checked_sub
      Src: /src/opendal/core/core/src/types/bytes_range.rs:115,1
    - Dst: expect
      Src: /src/opendal/core/core/src/types/bytes_range.rs:115,1
    - Dst: Option::checked_sub
      Src: /src/opendal/core/core/src/types/bytes_range.rs:120,1
    - Dst: expect
      Src: /src/opendal/core/core/src/types/bytes_range.rs:120,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 26
    argCount: 1
    argNames:
    - n
    argTypes:
    - u64
    constantsTouched: []
    func_position:
      end: 125
      start: 108
    functionDepth: 1
    functionLinenumber: 108
    functionLinenumberEnd: 125
    functionName: BytesRange::advance
    functionSourceFile: /src/opendal/core/core/src/types/bytes_range.rs
    functionUses: 0
    functionsReached:
    - Option::checked_sub
    - Option::map
    - u64::checked_add
    - expect
    linkageType: ''
    returnType: void
    signature: 'pub fn advance(&mut self, n: u64)'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 138
      start: 130
    functionDepth: 0
    functionLinenumber: 130
    functionLinenumberEnd: 138
    functionName: BytesRange::is_full
    functionSourceFile: /src/opendal/core/core/src/types/bytes_range.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: pub fn is_full(&self) -> bool
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 143
      start: 141
    functionDepth: 0
    functionLinenumber: 141
    functionLinenumberEnd: 143
    functionName: BytesRange::to_header
    functionSourceFile: /src/opendal/core/core/src/types/bytes_range.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: String
    signature: pub fn to_header(&self) -> String
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Bound::Included
      Src: /src/opendal/core/core/src/types/bytes_range.rs:155,1
    - Dst: Bound::Excluded
      Src: /src/opendal/core/core/src/types/bytes_range.rs:157,1
    - Dst: u64::checked_add
      Src: /src/opendal/core/core/src/types/bytes_range.rs:158,1
    - Dst: expect
      Src: /src/opendal/core/core/src/types/bytes_range.rs:158,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 165
      start: 146
    functionDepth: 0
    functionLinenumber: 146
    functionLinenumberEnd: 165
    functionName: BytesRange::to_range
    functionSourceFile: /src/opendal/core/core/src/types/bytes_range.rs
    functionUses: 0
    functionsReached:
    - Bound::Excluded
    - Bound::Included
    - u64::checked_add
    - expect
    linkageType: ''
    returnType: impl RangeBounds
    signature: pub fn to_range(&self) -> impl RangeBounds<u64>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: try_into
      Src: /src/opendal/core/core/src/types/bytes_range.rs:176,1
    - Dst: expect
      Src: /src/opendal/core/core/src/types/bytes_range.rs:176,1
    - Dst: Bound::Included
      Src: /src/opendal/core/core/src/types/bytes_range.rs:180,1
    - Dst: checked_add
      Src: /src/opendal/core/core/src/types/bytes_range.rs:183,1
    - Dst: expect
      Src: /src/opendal/core/core/src/types/bytes_range.rs:183,1
    - Dst: try_into
      Src: /src/opendal/core/core/src/types/bytes_range.rs:183,1
    - Dst: expect
      Src: /src/opendal/core/core/src/types/bytes_range.rs:183,1
    - Dst: Bound::Excluded
      Src: /src/opendal/core/core/src/types/bytes_range.rs:192,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 18
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 197
      start: 168
    functionDepth: 0
    functionLinenumber: 168
    functionLinenumberEnd: 197
    functionName: BytesRange::to_range_as_usize
    functionSourceFile: /src/opendal/core/core/src/types/bytes_range.rs
    functionUses: 0
    functionsReached:
    - try_into
    - expect
    - checked_add
    - Bound::Excluded
    - Bound::Included
    linkageType: ''
    returnType: impl RangeBounds
    signature: pub fn to_range_as_usize(self) -> impl RangeBounds<usize>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::saturating_sub
      Src: /src/opendal/core/core/src/types/bytes_range.rs:205,1
    - Dst: try_into
      Src: /src/opendal/core/core/src/types/bytes_range.rs:206,1
    - Dst: map_err
      Src: /src/opendal/core/core/src/types/bytes_range.rs:206,1
    - Dst: Error::new
      Src: /src/opendal/core/core/src/types/bytes_range.rs:207,1
    - Dst: Self::with_operation
      Src: /src/opendal/core/core/src/types/bytes_range.rs:207,1
    - Dst: Self::with_context
      Src: /src/opendal/core/core/src/types/bytes_range.rs:207,1
    - Dst: Self::with_context
      Src: /src/opendal/core/core/src/types/bytes_range.rs:207,1
    - Dst: Result::try_into
      Src: /src/opendal/core/core/src/types/bytes_range.rs:212,1
    - Dst: map_err
      Src: /src/opendal/core/core/src/types/bytes_range.rs:212,1
    - Dst: Error::new
      Src: /src/opendal/core/core/src/types/bytes_range.rs:213,1
    - Dst: Self::with_operation
      Src: /src/opendal/core/core/src/types/bytes_range.rs:213,1
    - Dst: Self::with_context
      Src: /src/opendal/core/core/src/types/bytes_range.rs:213,1
    - Dst: Self::with_context
      Src: /src/opendal/core/core/src/types/bytes_range.rs:213,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/types/bytes_range.rs:218,1
    - Dst: Some
      Src: /src/opendal/core/core/src/types/bytes_range.rs:222,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/types/bytes_range.rs:223,1
    - Dst: is_none
      Src: /src/opendal/core/core/src/types/bytes_range.rs:226,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/types/bytes_range.rs:227,1
    - Dst: try_into
      Src: /src/opendal/core/core/src/types/bytes_range.rs:230,1
    - Dst: map_err
      Src: /src/opendal/core/core/src/types/bytes_range.rs:230,1
    - Dst: Error::new
      Src: /src/opendal/core/core/src/types/bytes_range.rs:231,1
    - Dst: Self::with_operation
      Src: /src/opendal/core/core/src/types/bytes_range.rs:231,1
    - Dst: Self::with_context
      Src: /src/opendal/core/core/src/types/bytes_range.rs:231,1
    - Dst: Self::with_context
      Src: /src/opendal/core/core/src/types/bytes_range.rs:231,1
    - Dst: checked_add
      Src: /src/opendal/core/core/src/types/bytes_range.rs:239,1
    - Dst: ok_or_else
      Src: /src/opendal/core/core/src/types/bytes_range.rs:239,1
    - Dst: Error::new
      Src: /src/opendal/core/core/src/types/bytes_range.rs:242,1
    - Dst: Self::with_operation
      Src: /src/opendal/core/core/src/types/bytes_range.rs:242,1
    - Dst: Self::with_context
      Src: /src/opendal/core/core/src/types/bytes_range.rs:242,1
    - Dst: Self::with_context
      Src: /src/opendal/core/core/src/types/bytes_range.rs:242,1
    - Dst: Self::with_context
      Src: /src/opendal/core/core/src/types/bytes_range.rs:242,1
    - Dst: try_into
      Src: /src/opendal/core/core/src/types/bytes_range.rs:239,1
    - Dst: map_err
      Src: /src/opendal/core/core/src/types/bytes_range.rs:239,1
    - Dst: Error::new
      Src: /src/opendal/core/core/src/types/bytes_range.rs:250,1
    - Dst: Self::with_operation
      Src: /src/opendal/core/core/src/types/bytes_range.rs:250,1
    - Dst: Self::with_context
      Src: /src/opendal/core/core/src/types/bytes_range.rs:250,1
    - Dst: Self::with_context
      Src: /src/opendal/core/core/src/types/bytes_range.rs:250,1
    - Dst: Self::with_context
      Src: /src/opendal/core/core/src/types/bytes_range.rs:250,1
    - Dst: Err
      Src: /src/opendal/core/core/src/types/bytes_range.rs:258,1
    - Dst: Error::new
      Src: /src/opendal/core/core/src/types/bytes_range.rs:258,1
    - Dst: Self::with_operation
      Src: /src/opendal/core/core/src/types/bytes_range.rs:258,1
    - Dst: Self::with_context
      Src: /src/opendal/core/core/src/types/bytes_range.rs:258,1
    - Dst: Self::with_context
      Src: /src/opendal/core/core/src/types/bytes_range.rs:258,1
    - Dst: Self::with_context
      Src: /src/opendal/core/core/src/types/bytes_range.rs:258,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/types/bytes_range.rs:268,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/types/bytes_range.rs:270,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 118
    argCount: 1
    argNames:
    - content_length
    argTypes:
    - usize
    constantsTouched: []
    func_position:
      end: 272
      start: 200
    functionDepth: 36
    functionLinenumber: 200
    functionLinenumberEnd: 272
    functionName: BytesRange::to_content_range
    functionSourceFile: /src/opendal/core/core/src/types/bytes_range.rs
    functionUses: 0
    functionsReached:
    - Result::saturating_sub
    - map_err
    - try_into
    - is_none
    - Ok
    - checked_add
    - Error::new
    - Some
    - Err
    - Result::try_into
    - Self::with_operation
    - Self::with_context
    - ok_or_else
    linkageType: ''
    returnType: Result
    signature: 'pub fn to_content_range(self, content_length: usize) -> Result<Range<usize>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/core/core/src/types/bytes_range.rs:280,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - f
    argTypes:
    - '&mut Formatter<''_>'
    constantsTouched: []
    func_position:
      end: 291
      start: 276
    functionDepth: 0
    functionLinenumber: 276
    functionLinenumberEnd: 291
    functionName: BytesRange::fmt
    functionSourceFile: /src/opendal/core/core/src/types/bytes_range.rs
    functionUses: 0
    functionsReached:
    - Err
    linkageType: ''
    returnType: std::fmt::Result
    signature: 'fn fmt(&self, f: &mut Formatter<''_>) -> std::fmt::Result'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Vec::strip_prefix
      Src: /src/opendal/core/core/src/types/bytes_range.rs:298,1
    - Dst: ok_or_else
      Src: /src/opendal/core/core/src/types/bytes_range.rs:298,1
    - Dst: Error::new
      Src: /src/opendal/core/core/src/types/bytes_range.rs:299,1
    - Dst: Self::with_operation
      Src: /src/opendal/core/core/src/types/bytes_range.rs:299,1
    - Dst: Self::with_context
      Src: /src/opendal/core/core/src/types/bytes_range.rs:299,1
    - Dst: contains
      Src: /src/opendal/core/core/src/types/bytes_range.rs:304,1
    - Dst: Err
      Src: /src/opendal/core/core/src/types/bytes_range.rs:305,1
    - Dst: Error::new
      Src: /src/opendal/core/core/src/types/bytes_range.rs:305,1
    - Dst: Self::with_operation
      Src: /src/opendal/core/core/src/types/bytes_range.rs:305,1
    - Dst: Self::with_context
      Src: /src/opendal/core/core/src/types/bytes_range.rs:305,1
    - Dst: split
      Src: /src/opendal/core/core/src/types/bytes_range.rs:310,1
    - Dst: split('-').collect::<Vec<_>>
      Src: /src/opendal/core/core/src/types/bytes_range.rs:310,1
    - Dst: Result::len
      Src: /src/opendal/core/core/src/types/bytes_range.rs:311,1
    - Dst: Err
      Src: /src/opendal/core/core/src/types/bytes_range.rs:312,1
    - Dst: Error::new
      Src: /src/opendal/core/core/src/types/bytes_range.rs:312,1
    - Dst: Self::with_operation
      Src: /src/opendal/core/core/src/types/bytes_range.rs:312,1
    - Dst: Self::with_context
      Src: /src/opendal/core/core/src/types/bytes_range.rs:312,1
    - Dst: Error::new
      Src: /src/opendal/core/core/src/types/bytes_range.rs:318,1
    - Dst: Self::with_operation
      Src: /src/opendal/core/core/src/types/bytes_range.rs:318,1
    - Dst: Self::with_context
      Src: /src/opendal/core/core/src/types/bytes_range.rs:318,1
    - Dst: Self::set_source
      Src: /src/opendal/core/core/src/types/bytes_range.rs:318,1
    - Dst: is_empty
      Src: /src/opendal/core/core/src/types/bytes_range.rs:324,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/types/bytes_range.rs:326,1
    - Dst: BytesRange::new
      Src: /src/opendal/core/core/src/types/bytes_range.rs:326,1
    - Dst: parse
      Src: /src/opendal/core/core/src/types/bytes_range.rs:327,1
    - Dst: map_err
      Src: /src/opendal/core/core/src/types/bytes_range.rs:327,1
    - Dst: is_empty
      Src: /src/opendal/core/core/src/types/bytes_range.rs:330,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/types/bytes_range.rs:332,1
    - Dst: BytesRange::suffix
      Src: /src/opendal/core/core/src/types/bytes_range.rs:332,1
    - Dst: parse
      Src: /src/opendal/core/core/src/types/bytes_range.rs:332,1
    - Dst: map_err
      Src: /src/opendal/core/core/src/types/bytes_range.rs:332,1
    - Dst: parse
      Src: /src/opendal/core/core/src/types/bytes_range.rs:335,1
    - Dst: map_err
      Src: /src/opendal/core/core/src/types/bytes_range.rs:335,1
    - Dst: parse
      Src: /src/opendal/core/core/src/types/bytes_range.rs:336,1
    - Dst: map_err
      Src: /src/opendal/core/core/src/types/bytes_range.rs:336,1
    - Dst: Err
      Src: /src/opendal/core/core/src/types/bytes_range.rs:338,1
    - Dst: Error::new
      Src: /src/opendal/core/core/src/types/bytes_range.rs:338,1
    - Dst: Self::with_operation
      Src: /src/opendal/core/core/src/types/bytes_range.rs:338,1
    - Dst: Self::with_context
      Src: /src/opendal/core/core/src/types/bytes_range.rs:338,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/types/bytes_range.rs:345,1
    - Dst: BytesRange::new
      Src: /src/opendal/core/core/src/types/bytes_range.rs:345,1
    - Dst: Some
      Src: /src/opendal/core/core/src/types/bytes_range.rs:345,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 101
    argCount: 1
    argNames:
    - value
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 347
      start: 297
    functionDepth: 33
    functionLinenumber: 297
    functionLinenumberEnd: 347
    functionName: BytesRange::from_str
    functionSourceFile: /src/opendal/core/core/src/types/bytes_range.rs
    functionUses: 0
    functionsReached:
    - map_err
    - BytesRange::suffix
    - Ok
    - split
    - Error::new
    - Err
    - is_empty
    - contains
    - Vec::strip_prefix
    - parse
    - Some
    - Result::len
    - Self::with_operation
    - Self::set_source
    - Self::with_context
    - BytesRange::new
    - split('-').collect::<Vec<_>>
    - ok_or_else
    linkageType: ''
    returnType: Result
    signature: 'fn from_str(value: &str) -> Result<Self>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: (Vec::start_bound
      Src: /src/opendal/core/core/src/types/bytes_range.rs:355,1
    - Dst: cloned
      Src: /src/opendal/core/core/src/types/bytes_range.rs:355,1
    - Dst: Result::saturating_add
      Src: /src/opendal/core/core/src/types/bytes_range.rs:357,1
    - Dst: (Vec::end_bound
      Src: /src/opendal/core/core/src/types/bytes_range.rs:360,1
    - Dst: cloned
      Src: /src/opendal/core/core/src/types/bytes_range.rs:360,1
    - Dst: Some
      Src: /src/opendal/core/core/src/types/bytes_range.rs:361,1
    - Dst: Result::saturating_add
      Src: /src/opendal/core/core/src/types/bytes_range.rs:361,1
    - Dst: saturating_sub
      Src: /src/opendal/core/core/src/types/bytes_range.rs:361,1
    - Dst: Some
      Src: /src/opendal/core/core/src/types/bytes_range.rs:362,1
    - Dst: Result::saturating_sub
      Src: /src/opendal/core/core/src/types/bytes_range.rs:362,1
    - Dst: BytesRange::new
      Src: /src/opendal/core/core/src/types/bytes_range.rs:366,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 21
    argCount: 1
    argNames:
    - range
    argTypes:
    - T
    constantsTouched: []
    func_position:
      end: 367
      start: 354
    functionDepth: 1
    functionLinenumber: 354
    functionLinenumberEnd: 367
    functionName: BytesRange::from
    functionSourceFile: /src/opendal/core/core/src/types/bytes_range.rs
    functionUses: 14
    functionsReached:
    - Result::saturating_sub
    - Result::saturating_add
    - saturating_sub
    - (Vec::start_bound
    - Some
    - (Vec::end_bound
    - cloned
    - BytesRange::new
    linkageType: ''
    returnType: Self
    signature: 'fn from(range: T) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: BytesRange::new
      Src: /src/opendal/core/core/src/types/bytes_range.rs:377,1
    - Dst: Some
      Src: /src/opendal/core/core/src/types/bytes_range.rs:377,1
    - Dst: BytesRange::new
      Src: /src/opendal/core/core/src/types/bytes_range.rs:381,1
    - Dst: Some
      Src: /src/opendal/core/core/src/types/bytes_range.rs:381,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 383
      start: 375
    functionDepth: 1
    functionLinenumber: 375
    functionLinenumberEnd: 383
    functionName: tests::test_bytes_range_display_zero_size
    functionSourceFile: /src/opendal/core/core/src/types/bytes_range.rs
    functionUses: 0
    functionsReached:
    - BytesRange::new
    - Some
    linkageType: ''
    returnType: void
    signature: fn test_bytes_range_display_zero_size()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: BytesRange::new
      Src: /src/opendal/core/core/src/types/bytes_range.rs:387,1
    - Dst: Some
      Src: /src/opendal/core/core/src/types/bytes_range.rs:387,1
    - Dst: BytesRange::new
      Src: /src/opendal/core/core/src/types/bytes_range.rs:390,1
    - Dst: BytesRange::new
      Src: /src/opendal/core/core/src/types/bytes_range.rs:393,1
    - Dst: Some
      Src: /src/opendal/core/core/src/types/bytes_range.rs:393,1
    - Dst: BytesRange::suffix
      Src: /src/opendal/core/core/src/types/bytes_range.rs:396,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 398
      start: 386
    functionDepth: 1
    functionLinenumber: 386
    functionLinenumberEnd: 398
    functionName: tests::test_bytes_range_to_string
    functionSourceFile: /src/opendal/core/core/src/types/bytes_range.rs
    functionUses: 0
    functionsReached:
    - BytesRange::suffix
    - BytesRange::new
    - Some
    linkageType: ''
    returnType: void
    signature: fn test_bytes_range_to_string()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: BytesRange::new
      Src: /src/opendal/core/core/src/types/bytes_range.rs:402,1
    - Dst: Some
      Src: /src/opendal/core/core/src/types/bytes_range.rs:402,1
    - Dst: BytesRange::new
      Src: /src/opendal/core/core/src/types/bytes_range.rs:405,1
    - Dst: BytesRange::new
      Src: /src/opendal/core/core/src/types/bytes_range.rs:408,1
    - Dst: Some
      Src: /src/opendal/core/core/src/types/bytes_range.rs:408,1
    - Dst: BytesRange::suffix
      Src: /src/opendal/core/core/src/types/bytes_range.rs:411,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 413
      start: 401
    functionDepth: 1
    functionLinenumber: 401
    functionLinenumberEnd: 413
    functionName: tests::test_bytes_range_to_header
    functionSourceFile: /src/opendal/core/core/src/types/bytes_range.rs
    functionUses: 0
    functionsReached:
    - BytesRange::suffix
    - BytesRange::new
    - Some
    linkageType: ''
    returnType: void
    signature: fn test_bytes_range_to_header()
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 423
      start: 416
    functionDepth: 0
    functionLinenumber: 416
    functionLinenumberEnd: 423
    functionName: tests::test_bytes_range_from_range_bounds
    functionSourceFile: /src/opendal/core/core/src/types/bytes_range.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: fn test_bytes_range_from_range_bounds()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: DeleteInput::parse
      Src: /src/opendal/core/core/src/types/bytes_range.rs:440,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/types/bytes_range.rs:445,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 446
      start: 426
    functionDepth: 33
    functionLinenumber: 426
    functionLinenumberEnd: 446
    functionName: tests::test_bytes_range_from_str
    functionSourceFile: /src/opendal/core/core/src/types/bytes_range.rs
    functionUses: 0
    functionsReached:
    - DeleteInput::parse
    - Ok
    linkageType: ''
    returnType: Result
    signature: fn test_bytes_range_from_str() -> Result<()>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: DeleteInput::parse
      Src: /src/opendal/core/core/src/types/bytes_range.rs:453,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 459
      start: 449
    functionDepth: 33
    functionLinenumber: 449
    functionLinenumberEnd: 459
    functionName: tests::test_bytes_range_from_str_invalid_end_less_than_start
    functionSourceFile: /src/opendal/core/core/src/types/bytes_range.rs
    functionUses: 0
    functionsReached:
    - DeleteInput::parse
    linkageType: ''
    returnType: void
    signature: fn test_bytes_range_from_str_invalid_end_less_than_start()
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 470
      start: 463
    functionDepth: 0
    functionLinenumber: 463
    functionLinenumberEnd: 470
    functionName: tests::test_bytes_range_from_range_bounds_underflow
    functionSourceFile: /src/opendal/core/core/src/types/bytes_range.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: fn test_bytes_range_from_range_bounds_underflow()
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 492
      start: 473
    functionDepth: 0
    functionLinenumber: 473
    functionLinenumberEnd: 492
    functionName: tests::test_bytes_range_from_range_bounds_u64_max
    functionSourceFile: /src/opendal/core/core/src/types/bytes_range.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: fn test_bytes_range_from_range_bounds_u64_max()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: BytesRange::new
      Src: /src/opendal/core/core/src/types/bytes_range.rs:497,1
    - Dst: Some
      Src: /src/opendal/core/core/src/types/bytes_range.rs:497,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 499
      start: 495
    functionDepth: 1
    functionLinenumber: 495
    functionLinenumberEnd: 499
    functionName: tests::test_bytes_range_display_overflow
    functionSourceFile: /src/opendal/core/core/src/types/bytes_range.rs
    functionUses: 0
    functionsReached:
    - BytesRange::new
    - Some
    linkageType: ''
    returnType: void
    signature: fn test_bytes_range_display_overflow()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: BytesRange::new
      Src: /src/opendal/core/core/src/types/bytes_range.rs:504,1
    - Dst: Some
      Src: /src/opendal/core/core/src/types/bytes_range.rs:504,1
    - Dst: (Vec::to_range
      Src: /src/opendal/core/core/src/types/bytes_range.rs:505,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 506
      start: 503
    functionDepth: 1
    functionLinenumber: 503
    functionLinenumberEnd: 506
    functionName: tests::test_bytes_range_to_range_overflow
    functionSourceFile: /src/opendal/core/core/src/types/bytes_range.rs
    functionUses: 0
    functionsReached:
    - (Vec::to_range
    - BytesRange::new
    - Some
    linkageType: ''
    returnType: void
    signature: fn test_bytes_range_to_range_overflow()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: BytesRange::new
      Src: /src/opendal/core/core/src/types/bytes_range.rs:511,1
    - Dst: Some
      Src: /src/opendal/core/core/src/types/bytes_range.rs:511,1
    - Dst: (Vec::to_range_as_usize
      Src: /src/opendal/core/core/src/types/bytes_range.rs:512,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 513
      start: 510
    functionDepth: 1
    functionLinenumber: 510
    functionLinenumberEnd: 513
    functionName: tests::test_bytes_range_to_range_as_usize_overflow
    functionSourceFile: /src/opendal/core/core/src/types/bytes_range.rs
    functionUses: 0
    functionsReached:
    - BytesRange::new
    - (Vec::to_range_as_usize
    - Some
    linkageType: ''
    returnType: void
    signature: fn test_bytes_range_to_range_as_usize_overflow()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: BytesRange::new
      Src: /src/opendal/core/core/src/types/bytes_range.rs:535,1
    - Dst: Some
      Src: /src/opendal/core/core/src/types/bytes_range.rs:535,1
    - Dst: Self::to_content_range
      Src: /src/opendal/core/core/src/types/bytes_range.rs:535,1
    - Dst: Result::unwrap_err
      Src: /src/opendal/core/core/src/types/bytes_range.rs:535,1
    - Dst: BytesRange::new
      Src: /src/opendal/core/core/src/types/bytes_range.rs:540,1
    - Dst: Some
      Src: /src/opendal/core/core/src/types/bytes_range.rs:540,1
    - Dst: Self::to_content_range
      Src: /src/opendal/core/core/src/types/bytes_range.rs:540,1
    - Dst: Result::unwrap_err
      Src: /src/opendal/core/core/src/types/bytes_range.rs:540,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/types/bytes_range.rs:545,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 27
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 546
      start: 516
    functionDepth: 37
    functionLinenumber: 516
    functionLinenumberEnd: 546
    functionName: tests::test_bytes_range_to_content_range
    functionSourceFile: /src/opendal/core/core/src/types/bytes_range.rs
    functionUses: 0
    functionsReached:
    - Ok
    - Self::to_content_range
    - Some
    - Result::unwrap_err
    - BytesRange::new
    linkageType: ''
    returnType: Result
    signature: fn test_bytes_range_to_content_range() -> Result<()>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: BytesRange::new
      Src: /src/opendal/core/core/src/types/bytes_range.rs:551,1
    - Dst: (Vec::advance
      Src: /src/opendal/core/core/src/types/bytes_range.rs:552,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 553
      start: 550
    functionDepth: 4
    functionLinenumber: 550
    functionLinenumberEnd: 553
    functionName: tests::test_bytes_range_advance_offset_overflow
    functionSourceFile: /src/opendal/core/core/src/types/bytes_range.rs
    functionUses: 0
    functionsReached:
    - (Vec::advance
    - BytesRange::new
    linkageType: ''
    returnType: void
    signature: fn test_bytes_range_advance_offset_overflow()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: BytesRange::new
      Src: /src/opendal/core/core/src/types/bytes_range.rs:558,1
    - Dst: Some
      Src: /src/opendal/core/core/src/types/bytes_range.rs:558,1
    - Dst: (Vec::advance
      Src: /src/opendal/core/core/src/types/bytes_range.rs:559,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 560
      start: 557
    functionDepth: 4
    functionLinenumber: 557
    functionLinenumberEnd: 560
    functionName: tests::test_bytes_range_advance_size_underflow
    functionSourceFile: /src/opendal/core/core/src/types/bytes_range.rs
    functionUses: 0
    functionsReached:
    - (Vec::advance
    - BytesRange::new
    - Some
    linkageType: ''
    returnType: void
    signature: fn test_bytes_range_advance_size_underflow()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: BytesRange::suffix
      Src: /src/opendal/core/core/src/types/bytes_range.rs:564,1
    - Dst: (Vec::advance
      Src: /src/opendal/core/core/src/types/bytes_range.rs:565,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 567
      start: 563
    functionDepth: 4
    functionLinenumber: 563
    functionLinenumberEnd: 567
    functionName: tests::test_bytes_range_advance_suffix
    functionSourceFile: /src/opendal/core/core/src/types/bytes_range.rs
    functionUses: 0
    functionsReached:
    - (Vec::advance
    - BytesRange::suffix
    linkageType: ''
    returnType: void
    signature: fn test_bytes_range_advance_suffix()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: BytesRange::suffix
      Src: /src/opendal/core/core/src/types/bytes_range.rs:572,1
    - Dst: (Vec::advance
      Src: /src/opendal/core/core/src/types/bytes_range.rs:573,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 574
      start: 571
    functionDepth: 4
    functionLinenumber: 571
    functionLinenumberEnd: 574
    functionName: tests::test_bytes_range_advance_suffix_underflow
    functionSourceFile: /src/opendal/core/core/src/types/bytes_range.rs
    functionUses: 0
    functionsReached:
    - (Vec::advance
    - BytesRange::suffix
    linkageType: ''
    returnType: void
    signature: fn test_bytes_range_advance_suffix_underflow()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::write_str
      Src: /src/opendal/core/core/src/types/capability.rs:202,1
    - Dst: Result::write_str
      Src: /src/opendal/core/core/src/types/capability.rs:205,1
    - Dst: Result::write_str
      Src: /src/opendal/core/core/src/types/capability.rs:208,1
    - Dst: Result::write_str
      Src: /src/opendal/core/core/src/types/capability.rs:211,1
    - Dst: Result::write_str
      Src: /src/opendal/core/core/src/types/capability.rs:214,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/types/capability.rs:217,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 37
    argCount: 1
    argNames:
    - f
    argTypes:
    - '&mut std::fmt::Formatter<''_>'
    constantsTouched: []
    func_position:
      end: 218
      start: 199
    functionDepth: 0
    functionLinenumber: 199
    functionLinenumberEnd: 218
    functionName: Capability::fmt
    functionSourceFile: /src/opendal/core/core/src/types/capability.rs
    functionUses: 0
    functionsReached:
    - Result::write_str
    - Ok
    linkageType: ''
    returnType: std::fmt::Result
    signature: 'fn fmt(&self, f: &mut std::fmt::Formatter<''_>) -> std::fmt::Result'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 50
      start: 35
    functionDepth: 0
    functionLinenumber: 35
    functionLinenumberEnd: 50
    functionName: OperatorRegistry::get
    functionSourceFile: /src/opendal/core/core/src/types/operator/registry.rs
    functionUses: 5
    functionsReached: []
    linkageType: ''
    returnType: '&''static Self'
    signature: pub fn get() -> &'static Self
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: to_ascii_lowercase
      Src: /src/opendal/core/core/src/types/operator/registry.rs:54,1
    - Dst: lock
      Src: /src/opendal/core/core/src/types/operator/registry.rs:55,1
    - Dst: expect
      Src: /src/opendal/core/core/src/types/operator/registry.rs:55,1
    - Dst: insert
      Src: /src/opendal/core/core/src/types/operator/registry.rs:59,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 1
    argNames:
    - scheme
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 60
      start: 53
    functionDepth: 33
    functionLinenumber: 53
    functionLinenumberEnd: 60
    functionName: OperatorRegistry::register
    functionSourceFile: /src/opendal/core/core/src/types/operator/registry.rs
    functionUses: 0
    functionsReached:
    - to_ascii_lowercase
    - insert
    - expect
    - lock
    linkageType: ''
    returnType: void
    signature: 'pub fn register<B: Builder>(&self, scheme: &str)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/opendal/core/core/src/types/operator/registry.rs:75,1
    - Dst: expect
      Src: /src/opendal/core/core/src/types/operator/registry.rs:75,1
    - Dst: keys
      Src: /src/opendal/core/core/src/types/operator/registry.rs:75,1
    - Dst: cloned
      Src: /src/opendal/core/core/src/types/operator/registry.rs:75,1
    - Dst: collect
      Src: /src/opendal/core/core/src/types/operator/registry.rs:75,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 81
      start: 74
    functionDepth: 32
    functionLinenumber: 74
    functionLinenumberEnd: 81
    functionName: OperatorRegistry::schemes
    functionSourceFile: /src/opendal/core/core/src/types/operator/registry.rs
    functionUses: 0
    functionsReached:
    - collect
    - expect
    - lock
    - keys
    - cloned
    linkageType: ''
    returnType: HashSet
    signature: pub fn schemes(&self) -> HashSet<String>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::into_operator_uri
      Src: /src/opendal/core/core/src/types/operator/registry.rs:85,1
    - Dst: scheme
      Src: /src/opendal/core/core/src/types/operator/registry.rs:86,1
    - Dst: lock
      Src: /src/opendal/core/core/src/types/operator/registry.rs:89,1
    - Dst: expect
      Src: /src/opendal/core/core/src/types/operator/registry.rs:89,1
    - Dst: get
      Src: /src/opendal/core/core/src/types/operator/registry.rs:94,1
    - Dst: copied
      Src: /src/opendal/core/core/src/types/operator/registry.rs:94,1
    - Dst: keys
      Src: /src/opendal/core/core/src/types/operator/registry.rs:99,1
    - Dst: cloned
      Src: /src/opendal/core/core/src/types/operator/registry.rs:99,1
    - Dst: collect
      Src: /src/opendal/core/core/src/types/operator/registry.rs:99,1
    - Dst: sort
      Src: /src/opendal/core/core/src/types/operator/registry.rs:100,1
    - Dst: Err
      Src: /src/opendal/core/core/src/types/operator/registry.rs:101,1
    - Dst: Error::new
      Src: /src/opendal/core/core/src/types/operator/registry.rs:102,1
    - Dst: Self::with_context
      Src: /src/opendal/core/core/src/types/operator/registry.rs:102,1
    - Dst: to_string
      Src: /src/opendal/core/core/src/types/operator/registry.rs:103,1
    - Dst: Self::with_context
      Src: /src/opendal/core/core/src/types/operator/registry.rs:102,1
    - Dst: join
      Src: /src/opendal/core/core/src/types/operator/registry.rs:104,1
    - Dst: factory
      Src: /src/opendal/core/core/src/types/operator/registry.rs:110,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 39
    argCount: 1
    argNames:
    - uri
    argTypes:
    - impl IntoOperatorUri
    constantsTouched: []
    func_position:
      end: 111
      start: 84
    functionDepth: 34
    functionLinenumber: 84
    functionLinenumberEnd: 111
    functionName: OperatorRegistry::load
    functionSourceFile: /src/opendal/core/core/src/types/operator/registry.rs
    functionUses: 0
    functionsReached:
    - collect
    - to_string
    - get
    - Result::into_operator_uri
    - expect
    - lock
    - scheme
    - join
    - keys
    - copied
    - factory
    - sort
    - Err
    - Error::new
    - cloned
    - Self::with_context
    linkageType: ''
    returnType: Result
    signature: 'pub fn load(&self, uri: impl IntoOperatorUri) -> Result<Operator>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: C::from_uri
      Src: /src/opendal/core/core/src/types/operator/registry.rs:116,1
    - Dst: Operator::from_config
      Src: /src/opendal/core/core/src/types/operator/registry.rs:117,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - uri
    argTypes:
    - '&OperatorUri'
    constantsTouched: []
    func_position:
      end: 118
      start: 115
    functionDepth: 5
    functionLinenumber: 115
    functionLinenumberEnd: 118
    functionName: factory
    functionSourceFile: /src/opendal/core/core/src/types/operator/registry.rs
    functionUses: 3
    functionsReached:
    - C::from_uri
    - Operator::from_config
    linkageType: ''
    returnType: Result
    signature: 'fn factory<C: Configurator>(uri: &OperatorUri) -> Result<Operator>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: OperatorRegistry::get
      Src: /src/opendal/core/core/src/types/operator/registry.rs:126,1
    - Dst: '&''static Self::schemes'
      Src: /src/opendal/core/core/src/types/operator/registry.rs:126,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 128
      start: 125
    functionDepth: 33
    functionLinenumber: 125
    functionLinenumberEnd: 128
    functionName: tests::global_registry_exposes_memory_scheme
    functionSourceFile: /src/opendal/core/core/src/types/operator/registry.rs
    functionUses: 0
    functionsReached:
    - OperatorRegistry::get
    - '&''static Self::schemes'
    linkageType: ''
    returnType: void
    signature: fn global_registry_exposes_memory_scheme()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: OperatorRegistry::get
      Src: /src/opendal/core/core/src/types/operator/registry.rs:132,1
    - Dst: '&''static Self::load'
      Src: /src/opendal/core/core/src/types/operator/registry.rs:132,1
    - Dst: Result::unwrap_err
      Src: /src/opendal/core/core/src/types/operator/registry.rs:132,1
    - Dst: Error::to_string
      Src: /src/opendal/core/core/src/types/operator/registry.rs:138,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 143
      start: 131
    functionDepth: 35
    functionLinenumber: 131
    functionLinenumberEnd: 143
    functionName: tests::unregistered_scheme_error_lists_available_schemes
    functionSourceFile: /src/opendal/core/core/src/types/operator/registry.rs
    functionUses: 0
    functionsReached:
    - Error::to_string
    - OperatorRegistry::get
    - '&''static Self::load'
    - Result::unwrap_err
    linkageType: ''
    returnType: void
    signature: fn unregistered_scheme_error_lists_available_schemes()
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 5
    argNames:
    - ctx
    - srv
    - path
    - args
    - f
    argTypes:
    - OperationContext
    - Servicer
    - String
    - I
    - fn(OperationContext, Servicer, String, I) -> F
    constantsTouched: []
    func_position:
      end: 69
      start: 55
    functionDepth: 0
    functionLinenumber: 55
    functionLinenumberEnd: 69
    functionName: OperatorFuture::new
    functionSourceFile: /src/opendal/core/core/src/types/operator/operator_futures.rs
    functionUses: 15
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: 'pub(crate) fn new(ctx: OperationContext,srv: Servicer,path: String,args:
      I,f: fn(OperationContext, Servicer, String, I) -> F,) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 81
      start: 79
    functionDepth: 0
    functionLinenumber: 79
    functionLinenumberEnd: 81
    functionName: OperatorFuture::into_future
    functionSourceFile: /src/opendal/core/core/src/types/operator/operator_futures.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Self::IntoFuture
    signature: fn into_future(self) -> Self::IntoFuture
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Some
      Src: /src/opendal/core/core/src/types/operator/operator_futures.rs:94,1
    - Dst: Result::to_string
      Src: /src/opendal/core/core/src/types/operator/operator_futures.rs:94,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - v
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 96
      start: 93
    functionDepth: 2
    functionLinenumber: 93
    functionLinenumberEnd: 96
    functionName: FutureStat::if_match
    functionSourceFile: /src/opendal/core/core/src/types/operator/operator_futures.rs
    functionUses: 2
    functionsReached:
    - Result::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn if_match(mut self, v: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Some
      Src: /src/opendal/core/core/src/types/operator/operator_futures.rs:102,1
    - Dst: Result::to_string
      Src: /src/opendal/core/core/src/types/operator/operator_futures.rs:102,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - v
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 104
      start: 101
    functionDepth: 2
    functionLinenumber: 101
    functionLinenumberEnd: 104
    functionName: FutureStat::if_none_match
    functionSourceFile: /src/opendal/core/core/src/types/operator/operator_futures.rs
    functionUses: 2
    functionsReached:
    - Result::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn if_none_match(mut self, v: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Some
      Src: /src/opendal/core/core/src/types/operator/operator_futures.rs:110,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - v
    argTypes:
    - Timestamp
    constantsTouched: []
    func_position:
      end: 112
      start: 109
    functionDepth: 0
    functionLinenumber: 109
    functionLinenumberEnd: 112
    functionName: FutureStat::if_modified_since
    functionSourceFile: /src/opendal/core/core/src/types/operator/operator_futures.rs
    functionUses: 1
    functionsReached:
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn if_modified_since(mut self, v: Timestamp) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Some
      Src: /src/opendal/core/core/src/types/operator/operator_futures.rs:118,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - v
    argTypes:
    - Timestamp
    constantsTouched: []
    func_position:
      end: 120
      start: 117
    functionDepth: 0
    functionLinenumber: 117
    functionLinenumberEnd: 120
    functionName: FutureStat::if_unmodified_since
    functionSourceFile: /src/opendal/core/core/src/types/operator/operator_futures.rs
    functionUses: 1
    functionsReached:
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn if_unmodified_since(mut self, v: Timestamp) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Some
      Src: /src/opendal/core/core/src/types/operator/operator_futures.rs:126,1
    - Dst: Result::to_string
      Src: /src/opendal/core/core/src/types/operator/operator_futures.rs:126,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - v
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 128
      start: 125
    functionDepth: 2
    functionLinenumber: 125
    functionLinenumberEnd: 128
    functionName: FutureStat::version
    functionSourceFile: /src/opendal/core/core/src/types/operator/operator_futures.rs
    functionUses: 5
    functionsReached:
    - Result::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn version(mut self, v: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Some
      Src: /src/opendal/core/core/src/types/operator/operator_futures.rs:140,1
    - Dst: Result::to_string
      Src: /src/opendal/core/core/src/types/operator/operator_futures.rs:140,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - v
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 142
      start: 139
    functionDepth: 2
    functionLinenumber: 139
    functionLinenumberEnd: 142
    functionName: FuturePresignStat::override_content_disposition
    functionSourceFile: /src/opendal/core/core/src/types/operator/operator_futures.rs
    functionUses: 1
    functionsReached:
    - Result::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn override_content_disposition(mut self, v: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Some
      Src: /src/opendal/core/core/src/types/operator/operator_futures.rs:146,1
    - Dst: Result::to_string
      Src: /src/opendal/core/core/src/types/operator/operator_futures.rs:146,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - v
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 148
      start: 145
    functionDepth: 2
    functionLinenumber: 145
    functionLinenumberEnd: 148
    functionName: FuturePresignStat::override_cache_control
    functionSourceFile: /src/opendal/core/core/src/types/operator/operator_futures.rs
    functionUses: 1
    functionsReached:
    - Result::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn override_cache_control(mut self, v: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Some
      Src: /src/opendal/core/core/src/types/operator/operator_futures.rs:152,1
    - Dst: Result::to_string
      Src: /src/opendal/core/core/src/types/operator/operator_futures.rs:152,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - v
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 154
      start: 151
    functionDepth: 2
    functionLinenumber: 151
    functionLinenumberEnd: 154
    functionName: FuturePresignStat::override_content_type
    functionSourceFile: /src/opendal/core/core/src/types/operator/operator_futures.rs
    functionUses: 1
    functionsReached:
    - Result::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn override_content_type(mut self, v: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Some
      Src: /src/opendal/core/core/src/types/operator/operator_futures.rs:158,1
    - Dst: Result::to_string
      Src: /src/opendal/core/core/src/types/operator/operator_futures.rs:158,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - v
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 160
      start: 157
    functionDepth: 2
    functionLinenumber: 157
    functionLinenumberEnd: 160
    functionName: FuturePresignStat::if_match
    functionSourceFile: /src/opendal/core/core/src/types/operator/operator_futures.rs
    functionUses: 0
    functionsReached:
    - Result::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn if_match(mut self, v: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Some
      Src: /src/opendal/core/core/src/types/operator/operator_futures.rs:164,1
    - Dst: Result::to_string
      Src: /src/opendal/core/core/src/types/operator/operator_futures.rs:164,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - v
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 166
      start: 163
    functionDepth: 2
    functionLinenumber: 163
    functionLinenumberEnd: 166
    functionName: FuturePresignStat::if_none_match
    functionSourceFile: /src/opendal/core/core/src/types/operator/operator_futures.rs
    functionUses: 0
    functionsReached:
    - Result::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn if_none_match(mut self, v: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Some
      Src: /src/opendal/core/core/src/types/operator/operator_futures.rs:186,1
    - Dst: Result::to_string
      Src: /src/opendal/core/core/src/types/operator/operator_futures.rs:186,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - v
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 188
      start: 185
    functionDepth: 2
    functionLinenumber: 185
    functionLinenumberEnd: 188
    functionName: FuturePresignRead::override_content_disposition
    functionSourceFile: /src/opendal/core/core/src/types/operator/operator_futures.rs
    functionUses: 1
    functionsReached:
    - Result::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn override_content_disposition(mut self, v: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Some
      Src: /src/opendal/core/core/src/types/operator/operator_futures.rs:192,1
    - Dst: Result::to_string
      Src: /src/opendal/core/core/src/types/operator/operator_futures.rs:192,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - v
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 194
      start: 191
    functionDepth: 2
    functionLinenumber: 191
    functionLinenumberEnd: 194
    functionName: FuturePresignRead::override_cache_control
    functionSourceFile: /src/opendal/core/core/src/types/operator/operator_futures.rs
    functionUses: 1
    functionsReached:
    - Result::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn override_cache_control(mut self, v: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Some
      Src: /src/opendal/core/core/src/types/operator/operator_futures.rs:198,1
    - Dst: Result::to_string
      Src: /src/opendal/core/core/src/types/operator/operator_futures.rs:198,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - v
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 200
      start: 197
    functionDepth: 2
    functionLinenumber: 197
    functionLinenumberEnd: 200
    functionName: FuturePresignRead::override_content_type
    functionSourceFile: /src/opendal/core/core/src/types/operator/operator_futures.rs
    functionUses: 1
    functionsReached:
    - Result::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn override_content_type(mut self, v: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Some
      Src: /src/opendal/core/core/src/types/operator/operator_futures.rs:204,1
    - Dst: Result::to_string
      Src: /src/opendal/core/core/src/types/operator/operator_futures.rs:204,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - v
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 206
      start: 203
    functionDepth: 2
    functionLinenumber: 203
    functionLinenumberEnd: 206
    functionName: FuturePresignRead::if_match
    functionSourceFile: /src/opendal/core/core/src/types/operator/operator_futures.rs
    functionUses: 0
    functionsReached:
    - Result::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn if_match(mut self, v: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Some
      Src: /src/opendal/core/core/src/types/operator/operator_futures.rs:210,1
    - Dst: Result::to_string
      Src: /src/opendal/core/core/src/types/operator/operator_futures.rs:210,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - v
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 212
      start: 209
    functionDepth: 2
    functionLinenumber: 209
    functionLinenumberEnd: 212
    functionName: FuturePresignRead::if_none_match
    functionSourceFile: /src/opendal/core/core/src/types/operator/operator_futures.rs
    functionUses: 0
    functionsReached:
    - Result::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn if_none_match(mut self, v: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Some
      Src: /src/opendal/core/core/src/types/operator/operator_futures.rs:224,1
    - Dst: Result::to_string
      Src: /src/opendal/core/core/src/types/operator/operator_futures.rs:224,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - v
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 226
      start: 223
    functionDepth: 2
    functionLinenumber: 223
    functionLinenumberEnd: 226
    functionName: FuturePresignWrite::content_type
    functionSourceFile: /src/opendal/core/core/src/types/operator/operator_futures.rs
    functionUses: 0
    functionsReached:
    - Result::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn content_type(mut self, v: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Some
      Src: /src/opendal/core/core/src/types/operator/operator_futures.rs:230,1
    - Dst: Result::to_string
      Src: /src/opendal/core/core/src/types/operator/operator_futures.rs:230,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - v
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 232
      start: 229
    functionDepth: 2
    functionLinenumber: 229
    functionLinenumberEnd: 232
    functionName: FuturePresignWrite::content_disposition
    functionSourceFile: /src/opendal/core/core/src/types/operator/operator_futures.rs
    functionUses: 0
    functionsReached:
    - Result::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn content_disposition(mut self, v: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Some
      Src: /src/opendal/core/core/src/types/operator/operator_futures.rs:236,1
    - Dst: Result::to_string
      Src: /src/opendal/core/core/src/types/operator/operator_futures.rs:236,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - v
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 238
      start: 235
    functionDepth: 2
    functionLinenumber: 235
    functionLinenumberEnd: 238
    functionName: FuturePresignWrite::content_encoding
    functionSourceFile: /src/opendal/core/core/src/types/operator/operator_futures.rs
    functionUses: 0
    functionsReached:
    - Result::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn content_encoding(mut self, v: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Some
      Src: /src/opendal/core/core/src/types/operator/operator_futures.rs:242,1
    - Dst: Result::to_string
      Src: /src/opendal/core/core/src/types/operator/operator_futures.rs:242,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - v
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 244
      start: 241
    functionDepth: 2
    functionLinenumber: 241
    functionLinenumberEnd: 244
    functionName: FuturePresignWrite::cache_control
    functionSourceFile: /src/opendal/core/core/src/types/operator/operator_futures.rs
    functionUses: 0
    functionsReached:
    - Result::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn cache_control(mut self, v: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: (Vec::into
      Src: /src/opendal/core/core/src/types/operator/operator_futures.rs:272,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - range
    argTypes:
    - impl Into<BytesRange>
    constantsTouched: []
    func_position:
      end: 274
      start: 271
    functionDepth: 29
    functionLinenumber: 271
    functionLinenumberEnd: 274
    functionName: FutureRead::range
    functionSourceFile: /src/opendal/core/core/src/types/operator/operator_futures.rs
    functionUses: 10
    functionsReached:
    - (Vec::into
    linkageType: ''
    returnType: Self
    signature: 'pub fn range(mut self, range: impl Into<BytesRange>) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Some
      Src: /src/opendal/core/core/src/types/operator/operator_futures.rs:280,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - v
    argTypes:
    - u64
    constantsTouched: []
    func_position:
      end: 282
      start: 279
    functionDepth: 0
    functionLinenumber: 279
    functionLinenumberEnd: 282
    functionName: FutureRead::content_length_hint
    functionSourceFile: /src/opendal/core/core/src/types/operator/operator_futures.rs
    functionUses: 0
    functionsReached:
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn content_length_hint(mut self, v: u64) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: max
      Src: /src/opendal/core/core/src/types/operator/operator_futures.rs:302,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - concurrent
    argTypes:
    - usize
    constantsTouched: []
    func_position:
      end: 304
      start: 301
    functionDepth: 1
    functionLinenumber: 301
    functionLinenumberEnd: 304
    functionName: FutureRead::concurrent
    functionSourceFile: /src/opendal/core/core/src/types/operator/operator_futures.rs
    functionUses: 0
    functionsReached:
    - max
    linkageType: ''
    returnType: Self
    signature: 'pub fn concurrent(mut self, concurrent: usize) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Some
      Src: /src/opendal/core/core/src/types/operator/operator_futures.rs:319,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - chunk_size
    argTypes:
    - usize
    constantsTouched: []
    func_position:
      end: 321
      start: 318
    functionDepth: 0
    functionLinenumber: 318
    functionLinenumberEnd: 321
    functionName: FutureRead::chunk
    functionSourceFile: /src/opendal/core/core/src/types/operator/operator_futures.rs
    functionUses: 0
    functionsReached:
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn chunk(mut self, chunk_size: usize) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Some
      Src: /src/opendal/core/core/src/types/operator/operator_futures.rs:339,1
    - Dst: Result::to_string
      Src: /src/opendal/core/core/src/types/operator/operator_futures.rs:339,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - v
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 341
      start: 338
    functionDepth: 2
    functionLinenumber: 338
    functionLinenumberEnd: 341
    functionName: FutureRead::version
    functionSourceFile: /src/opendal/core/core/src/types/operator/operator_futures.rs
    functionUses: 3
    functionsReached:
    - Result::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn version(mut self, v: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Some
      Src: /src/opendal/core/core/src/types/operator/operator_futures.rs:359,1
    - Dst: Result::to_string
      Src: /src/opendal/core/core/src/types/operator/operator_futures.rs:359,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - v
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 361
      start: 358
    functionDepth: 2
    functionLinenumber: 358
    functionLinenumberEnd: 361
    functionName: FutureRead::if_match
    functionSourceFile: /src/opendal/core/core/src/types/operator/operator_futures.rs
    functionUses: 2
    functionsReached:
    - Result::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn if_match(mut self, v: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Some
      Src: /src/opendal/core/core/src/types/operator/operator_futures.rs:379,1
    - Dst: Result::to_string
      Src: /src/opendal/core/core/src/types/operator/operator_futures.rs:379,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - v
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 381
      start: 378
    functionDepth: 2
    functionLinenumber: 378
    functionLinenumberEnd: 381
    functionName: FutureRead::if_none_match
    functionSourceFile: /src/opendal/core/core/src/types/operator/operator_futures.rs
    functionUses: 2
    functionsReached:
    - Result::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn if_none_match(mut self, v: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Some
      Src: /src/opendal/core/core/src/types/operator/operator_futures.rs:402,1
    - Dst: Result::into
      Src: /src/opendal/core/core/src/types/operator/operator_futures.rs:402,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - v
    argTypes:
    - impl Into<Timestamp>
    constantsTouched: []
    func_position:
      end: 404
      start: 401
    functionDepth: 29
    functionLinenumber: 401
    functionLinenumberEnd: 404
    functionName: FutureRead::if_modified_since
    functionSourceFile: /src/opendal/core/core/src/types/operator/operator_futures.rs
    functionUses: 1
    functionsReached:
    - Result::into
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn if_modified_since(mut self, v: impl Into<Timestamp>) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Some
      Src: /src/opendal/core/core/src/types/operator/operator_futures.rs:426,1
    - Dst: Result::into
      Src: /src/opendal/core/core/src/types/operator/operator_futures.rs:426,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - v
    argTypes:
    - impl Into<Timestamp>
    constantsTouched: []
    func_position:
      end: 428
      start: 425
    functionDepth: 29
    functionLinenumber: 425
    functionLinenumberEnd: 428
    functionName: FutureRead::if_unmodified_since
    functionSourceFile: /src/opendal/core/core/src/types/operator/operator_futures.rs
    functionUses: 1
    functionsReached:
    - Result::into
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn if_unmodified_since(mut self, v: impl Into<Timestamp>) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Some
      Src: /src/opendal/core/core/src/types/operator/operator_futures.rs:457,1
    - Dst: Result::to_string
      Src: /src/opendal/core/core/src/types/operator/operator_futures.rs:457,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - v
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 459
      start: 456
    functionDepth: 2
    functionLinenumber: 456
    functionLinenumberEnd: 459
    functionName: FutureReader::version
    functionSourceFile: /src/opendal/core/core/src/types/operator/operator_futures.rs
    functionUses: 0
    functionsReached:
    - Result::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn version(mut self, v: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: max
      Src: /src/opendal/core/core/src/types/operator/operator_futures.rs:479,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - concurrent
    argTypes:
    - usize
    constantsTouched: []
    func_position:
      end: 481
      start: 478
    functionDepth: 1
    functionLinenumber: 478
    functionLinenumberEnd: 481
    functionName: FutureReader::concurrent
    functionSourceFile: /src/opendal/core/core/src/types/operator/operator_futures.rs
    functionUses: 0
    functionsReached:
    - max
    linkageType: ''
    returnType: Self
    signature: 'pub fn concurrent(mut self, concurrent: usize) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Some
      Src: /src/opendal/core/core/src/types/operator/operator_futures.rs:499,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - chunk_size
    argTypes:
    - usize
    constantsTouched: []
    func_position:
      end: 501
      start: 498
    functionDepth: 0
    functionLinenumber: 498
    functionLinenumberEnd: 501
    functionName: FutureReader::chunk
    functionSourceFile: /src/opendal/core/core/src/types/operator/operator_futures.rs
    functionUses: 8
    functionsReached:
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn chunk(mut self, chunk_size: usize) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Some
      Src: /src/opendal/core/core/src/types/operator/operator_futures.rs:507,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - v
    argTypes:
    - u64
    constantsTouched: []
    func_position:
      end: 509
      start: 506
    functionDepth: 0
    functionLinenumber: 506
    functionLinenumberEnd: 509
    functionName: FutureReader::content_length_hint
    functionSourceFile: /src/opendal/core/core/src/types/operator/operator_futures.rs
    functionUses: 0
    functionsReached:
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn content_length_hint(mut self, v: u64) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Some
      Src: /src/opendal/core/core/src/types/operator/operator_futures.rs:538,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - gap_size
    argTypes:
    - usize
    constantsTouched: []
    func_position:
      end: 540
      start: 537
    functionDepth: 0
    functionLinenumber: 537
    functionLinenumberEnd: 540
    functionName: FutureReader::gap
    functionSourceFile: /src/opendal/core/core/src/types/operator/operator_futures.rs
    functionUses: 3
    functionsReached:
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn gap(mut self, gap_size: usize) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Some
      Src: /src/opendal/core/core/src/types/operator/operator_futures.rs:558,1
    - Dst: Option::to_string
      Src: /src/opendal/core/core/src/types/operator/operator_futures.rs:558,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - etag
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 560
      start: 557
    functionDepth: 2
    functionLinenumber: 557
    functionLinenumberEnd: 560
    functionName: FutureReader::if_match
    functionSourceFile: /src/opendal/core/core/src/types/operator/operator_futures.rs
    functionUses: 2
    functionsReached:
    - Option::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn if_match(mut self, etag: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Some
      Src: /src/opendal/core/core/src/types/operator/operator_futures.rs:578,1
    - Dst: Option::to_string
      Src: /src/opendal/core/core/src/types/operator/operator_futures.rs:578,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - etag
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 580
      start: 577
    functionDepth: 2
    functionLinenumber: 577
    functionLinenumberEnd: 580
    functionName: FutureReader::if_none_match
    functionSourceFile: /src/opendal/core/core/src/types/operator/operator_futures.rs
    functionUses: 2
    functionsReached:
    - Option::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn if_none_match(mut self, etag: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Some
      Src: /src/opendal/core/core/src/types/operator/operator_futures.rs:602,1
    - Dst: Result::into
      Src: /src/opendal/core/core/src/types/operator/operator_futures.rs:602,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - v
    argTypes:
    - impl Into<Timestamp>
    constantsTouched: []
    func_position:
      end: 604
      start: 601
    functionDepth: 29
    functionLinenumber: 601
    functionLinenumberEnd: 604
    functionName: FutureReader::if_modified_since
    functionSourceFile: /src/opendal/core/core/src/types/operator/operator_futures.rs
    functionUses: 1
    functionsReached:
    - Result::into
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn if_modified_since(mut self, v: impl Into<Timestamp>) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Some
      Src: /src/opendal/core/core/src/types/operator/operator_futures.rs:626,1
    - Dst: Result::into
      Src: /src/opendal/core/core/src/types/operator/operator_futures.rs:626,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - v
    argTypes:
    - impl Into<Timestamp>
    constantsTouched: []
    func_position:
      end: 628
      start: 625
    functionDepth: 29
    functionLinenumber: 625
    functionLinenumberEnd: 628
    functionName: FutureReader::if_unmodified_since
    functionSourceFile: /src/opendal/core/core/src/types/operator/operator_futures.rs
    functionUses: 1
    functionsReached:
    - Result::into
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn if_unmodified_since(mut self, v: impl Into<Timestamp>) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - v
    argTypes:
    - bool
    constantsTouched: []
    func_position:
      end: 661
      start: 658
    functionDepth: 0
    functionLinenumber: 658
    functionLinenumberEnd: 661
    functionName: FutureWrite::append
    functionSourceFile: /src/opendal/core/core/src/types/operator/operator_futures.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: 'pub fn append(mut self, v: bool) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Some
      Src: /src/opendal/core/core/src/types/operator/operator_futures.rs:686,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - v
    argTypes:
    - usize
    constantsTouched: []
    func_position:
      end: 688
      start: 685
    functionDepth: 0
    functionLinenumber: 685
    functionLinenumberEnd: 688
    functionName: FutureWrite::chunk
    functionSourceFile: /src/opendal/core/core/src/types/operator/operator_futures.rs
    functionUses: 0
    functionsReached:
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn chunk(mut self, v: usize) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::max
      Src: /src/opendal/core/core/src/types/operator/operator_futures.rs:714,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - v
    argTypes:
    - usize
    constantsTouched: []
    func_position:
      end: 716
      start: 713
    functionDepth: 1
    functionLinenumber: 713
    functionLinenumberEnd: 716
    functionName: FutureWrite::concurrent
    functionSourceFile: /src/opendal/core/core/src/types/operator/operator_futures.rs
    functionUses: 0
    functionsReached:
    - Result::max
    linkageType: ''
    returnType: Self
    signature: 'pub fn concurrent(mut self, v: usize) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Some
      Src: /src/opendal/core/core/src/types/operator/operator_futures.rs:741,1
    - Dst: Result::to_string
      Src: /src/opendal/core/core/src/types/operator/operator_futures.rs:741,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - v
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 743
      start: 740
    functionDepth: 2
    functionLinenumber: 740
    functionLinenumberEnd: 743
    functionName: FutureWrite::cache_control
    functionSourceFile: /src/opendal/core/core/src/types/operator/operator_futures.rs
    functionUses: 0
    functionsReached:
    - Result::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn cache_control(mut self, v: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Some
      Src: /src/opendal/core/core/src/types/operator/operator_futures.rs:766,1
    - Dst: Result::to_string
      Src: /src/opendal/core/core/src/types/operator/operator_futures.rs:766,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - v
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 768
      start: 765
    functionDepth: 2
    functionLinenumber: 765
    functionLinenumberEnd: 768
    functionName: FutureWrite::content_type
    functionSourceFile: /src/opendal/core/core/src/types/operator/operator_futures.rs
    functionUses: 0
    functionsReached:
    - Result::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn content_type(mut self, v: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Some
      Src: /src/opendal/core/core/src/types/operator/operator_futures.rs:792,1
    - Dst: Result::to_string
      Src: /src/opendal/core/core/src/types/operator/operator_futures.rs:792,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - v
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 794
      start: 791
    functionDepth: 2
    functionLinenumber: 791
    functionLinenumberEnd: 794
    functionName: FutureWrite::content_disposition
    functionSourceFile: /src/opendal/core/core/src/types/operator/operator_futures.rs
    functionUses: 0
    functionsReached:
    - Result::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn content_disposition(mut self, v: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Some
      Src: /src/opendal/core/core/src/types/operator/operator_futures.rs:818,1
    - Dst: Result::to_string
      Src: /src/opendal/core/core/src/types/operator/operator_futures.rs:818,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - v
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 820
      start: 817
    functionDepth: 2
    functionLinenumber: 817
    functionLinenumberEnd: 820
    functionName: FutureWrite::content_encoding
    functionSourceFile: /src/opendal/core/core/src/types/operator/operator_futures.rs
    functionUses: 0
    functionsReached:
    - Result::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn content_encoding(mut self, v: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Some
      Src: /src/opendal/core/core/src/types/operator/operator_futures.rs:844,1
    - Dst: to_string
      Src: /src/opendal/core/core/src/types/operator/operator_futures.rs:844,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - s
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 846
      start: 843
    functionDepth: 2
    functionLinenumber: 843
    functionLinenumberEnd: 846
    functionName: FutureWrite::if_match
    functionSourceFile: /src/opendal/core/core/src/types/operator/operator_futures.rs
    functionUses: 0
    functionsReached:
    - to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn if_match(mut self, s: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Some
      Src: /src/opendal/core/core/src/types/operator/operator_futures.rs:870,1
    - Dst: to_string
      Src: /src/opendal/core/core/src/types/operator/operator_futures.rs:870,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - s
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 872
      start: 869
    functionDepth: 2
    functionLinenumber: 869
    functionLinenumberEnd: 872
    functionName: FutureWrite::if_none_match
    functionSourceFile: /src/opendal/core/core/src/types/operator/operator_futures.rs
    functionUses: 0
    functionsReached:
    - to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn if_none_match(mut self, s: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - b
    argTypes:
    - bool
    constantsTouched: []
    func_position:
      end: 898
      start: 895
    functionDepth: 0
    functionLinenumber: 895
    functionLinenumberEnd: 898
    functionName: FutureWrite::if_not_exists
    functionSourceFile: /src/opendal/core/core/src/types/operator/operator_futures.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: 'pub fn if_not_exists(mut self, b: bool) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Some
      Src: /src/opendal/core/core/src/types/operator/operator_futures.rs:925,1
    - Dst: HashMap::from_iter
      Src: /src/opendal/core/core/src/types/operator/operator_futures.rs:925,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - data
    argTypes:
    - impl IntoIterator<Item = (String, String)>
    constantsTouched: []
    func_position:
      end: 927
      start: 924
    functionDepth: 37
    functionLinenumber: 924
    functionLinenumberEnd: 927
    functionName: FutureWrite::user_metadata
    functionSourceFile: /src/opendal/core/core/src/types/operator/operator_futures.rs
    functionUses: 0
    functionsReached:
    - HashMap::from_iter
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn user_metadata(mut self, data: impl IntoIterator<Item = (String,
      String)>) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - v
    argTypes:
    - bool
    constantsTouched: []
    func_position:
      end: 960
      start: 957
    functionDepth: 0
    functionLinenumber: 957
    functionLinenumberEnd: 960
    functionName: FutureWriter::append
    functionSourceFile: /src/opendal/core/core/src/types/operator/operator_futures.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: 'pub fn append(mut self, v: bool) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Some
      Src: /src/opendal/core/core/src/types/operator/operator_futures.rs:988,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - v
    argTypes:
    - usize
    constantsTouched: []
    func_position:
      end: 990
      start: 987
    functionDepth: 0
    functionLinenumber: 987
    functionLinenumberEnd: 990
    functionName: FutureWriter::chunk
    functionSourceFile: /src/opendal/core/core/src/types/operator/operator_futures.rs
    functionUses: 0
    functionsReached:
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn chunk(mut self, v: usize) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::max
      Src: /src/opendal/core/core/src/types/operator/operator_futures.rs:1021,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - v
    argTypes:
    - usize
    constantsTouched: []
    func_position:
      end: 1023
      start: 1020
    functionDepth: 1
    functionLinenumber: 1020
    functionLinenumberEnd: 1023
    functionName: FutureWriter::concurrent
    functionSourceFile: /src/opendal/core/core/src/types/operator/operator_futures.rs
    functionUses: 0
    functionsReached:
    - Result::max
    linkageType: ''
    returnType: Self
    signature: 'pub fn concurrent(mut self, v: usize) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Some
      Src: /src/opendal/core/core/src/types/operator/operator_futures.rs:1051,1
    - Dst: Result::to_string
      Src: /src/opendal/core/core/src/types/operator/operator_futures.rs:1051,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - v
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 1053
      start: 1050
    functionDepth: 2
    functionLinenumber: 1050
    functionLinenumberEnd: 1053
    functionName: FutureWriter::cache_control
    functionSourceFile: /src/opendal/core/core/src/types/operator/operator_futures.rs
    functionUses: 0
    functionsReached:
    - Result::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn cache_control(mut self, v: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Some
      Src: /src/opendal/core/core/src/types/operator/operator_futures.rs:1079,1
    - Dst: Result::to_string
      Src: /src/opendal/core/core/src/types/operator/operator_futures.rs:1079,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - v
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 1081
      start: 1078
    functionDepth: 2
    functionLinenumber: 1078
    functionLinenumberEnd: 1081
    functionName: FutureWriter::content_type
    functionSourceFile: /src/opendal/core/core/src/types/operator/operator_futures.rs
    functionUses: 0
    functionsReached:
    - Result::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn content_type(mut self, v: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Some
      Src: /src/opendal/core/core/src/types/operator/operator_futures.rs:1108,1
    - Dst: Result::to_string
      Src: /src/opendal/core/core/src/types/operator/operator_futures.rs:1108,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - v
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 1110
      start: 1107
    functionDepth: 2
    functionLinenumber: 1107
    functionLinenumberEnd: 1110
    functionName: FutureWriter::content_disposition
    functionSourceFile: /src/opendal/core/core/src/types/operator/operator_futures.rs
    functionUses: 0
    functionsReached:
    - Result::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn content_disposition(mut self, v: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Some
      Src: /src/opendal/core/core/src/types/operator/operator_futures.rs:1137,1
    - Dst: Result::to_string
      Src: /src/opendal/core/core/src/types/operator/operator_futures.rs:1137,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - v
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 1139
      start: 1136
    functionDepth: 2
    functionLinenumber: 1136
    functionLinenumberEnd: 1139
    functionName: FutureWriter::content_encoding
    functionSourceFile: /src/opendal/core/core/src/types/operator/operator_futures.rs
    functionUses: 0
    functionsReached:
    - Result::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn content_encoding(mut self, v: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Some
      Src: /src/opendal/core/core/src/types/operator/operator_futures.rs:1178,1
    - Dst: to_string
      Src: /src/opendal/core/core/src/types/operator/operator_futures.rs:1178,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - s
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 1180
      start: 1177
    functionDepth: 2
    functionLinenumber: 1177
    functionLinenumberEnd: 1180
    functionName: FutureWriter::if_match
    functionSourceFile: /src/opendal/core/core/src/types/operator/operator_futures.rs
    functionUses: 0
    functionsReached:
    - to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn if_match(mut self, s: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Some
      Src: /src/opendal/core/core/src/types/operator/operator_futures.rs:1207,1
    - Dst: to_string
      Src: /src/opendal/core/core/src/types/operator/operator_futures.rs:1207,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - s
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 1209
      start: 1206
    functionDepth: 2
    functionLinenumber: 1206
    functionLinenumberEnd: 1209
    functionName: FutureWriter::if_none_match
    functionSourceFile: /src/opendal/core/core/src/types/operator/operator_futures.rs
    functionUses: 0
    functionsReached:
    - to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn if_none_match(mut self, s: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - b
    argTypes:
    - bool
    constantsTouched: []
    func_position:
      end: 1235
      start: 1232
    functionDepth: 0
    functionLinenumber: 1232
    functionLinenumberEnd: 1235
    functionName: FutureWriter::if_not_exists
    functionSourceFile: /src/opendal/core/core/src/types/operator/operator_futures.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: 'pub fn if_not_exists(mut self, b: bool) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Some
      Src: /src/opendal/core/core/src/types/operator/operator_futures.rs:1264,1
    - Dst: HashMap::from_iter
      Src: /src/opendal/core/core/src/types/operator/operator_futures.rs:1264,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - data
    argTypes:
    - impl IntoIterator<Item = (String, String)>
    constantsTouched: []
    func_position:
      end: 1266
      start: 1263
    functionDepth: 37
    functionLinenumber: 1263
    functionLinenumberEnd: 1266
    functionName: FutureWriter::user_metadata
    functionSourceFile: /src/opendal/core/core/src/types/operator/operator_futures.rs
    functionUses: 0
    functionsReached:
    - HashMap::from_iter
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn user_metadata(mut self, data: impl IntoIterator<Item = (String,
      String)>) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Some
      Src: /src/opendal/core/core/src/types/operator/operator_futures.rs:1277,1
    - Dst: Result::to_string
      Src: /src/opendal/core/core/src/types/operator/operator_futures.rs:1277,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - v
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 1279
      start: 1276
    functionDepth: 2
    functionLinenumber: 1276
    functionLinenumberEnd: 1279
    functionName: FutureDelete::version
    functionSourceFile: /src/opendal/core/core/src/types/operator/operator_futures.rs
    functionUses: 3
    functionsReached:
    - Result::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn version(mut self, v: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - recursive
    argTypes:
    - bool
    constantsTouched: []
    func_position:
      end: 1285
      start: 1282
    functionDepth: 0
    functionLinenumber: 1282
    functionLinenumberEnd: 1285
    functionName: FutureDelete::recursive
    functionSourceFile: /src/opendal/core/core/src/types/operator/operator_futures.rs
    functionUses: 7
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: 'pub fn recursive(mut self, recursive: bool) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Some
      Src: /src/opendal/core/core/src/types/operator/operator_futures.rs:1304,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - v
    argTypes:
    - usize
    constantsTouched: []
    func_position:
      end: 1306
      start: 1303
    functionDepth: 0
    functionLinenumber: 1303
    functionLinenumberEnd: 1306
    functionName: FutureList::limit
    functionSourceFile: /src/opendal/core/core/src/types/operator/operator_futures.rs
    functionUses: 0
    functionsReached:
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn limit(mut self, v: usize) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Some
      Src: /src/opendal/core/core/src/types/operator/operator_futures.rs:1311,1
    - Dst: Result::to_string
      Src: /src/opendal/core/core/src/types/operator/operator_futures.rs:1311,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - v
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 1313
      start: 1310
    functionDepth: 2
    functionLinenumber: 1310
    functionLinenumberEnd: 1313
    functionName: FutureList::start_after
    functionSourceFile: /src/opendal/core/core/src/types/operator/operator_futures.rs
    functionUses: 0
    functionsReached:
    - Result::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn start_after(mut self, v: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - v
    argTypes:
    - bool
    constantsTouched: []
    func_position:
      end: 1324
      start: 1321
    functionDepth: 0
    functionLinenumber: 1321
    functionLinenumberEnd: 1324
    functionName: FutureList::recursive
    functionSourceFile: /src/opendal/core/core/src/types/operator/operator_futures.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: 'pub fn recursive(mut self, v: bool) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - v
    argTypes:
    - bool
    constantsTouched: []
    func_position:
      end: 1338
      start: 1335
    functionDepth: 0
    functionLinenumber: 1335
    functionLinenumberEnd: 1338
    functionName: FutureList::versions
    functionSourceFile: /src/opendal/core/core/src/types/operator/operator_futures.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: 'pub fn versions(mut self, v: bool) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - v
    argTypes:
    - bool
    constantsTouched: []
    func_position:
      end: 1351
      start: 1348
    functionDepth: 0
    functionLinenumber: 1348
    functionLinenumberEnd: 1351
    functionName: FutureList::deleted
    functionSourceFile: /src/opendal/core/core/src/types/operator/operator_futures.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: 'pub fn deleted(mut self, v: bool) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Some
      Src: /src/opendal/core/core/src/types/operator/operator_futures.rs:1365,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - v
    argTypes:
    - usize
    constantsTouched: []
    func_position:
      end: 1367
      start: 1364
    functionDepth: 0
    functionLinenumber: 1364
    functionLinenumberEnd: 1367
    functionName: FutureLister::limit
    functionSourceFile: /src/opendal/core/core/src/types/operator/operator_futures.rs
    functionUses: 1
    functionsReached:
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn limit(mut self, v: usize) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Some
      Src: /src/opendal/core/core/src/types/operator/operator_futures.rs:1372,1
    - Dst: Result::to_string
      Src: /src/opendal/core/core/src/types/operator/operator_futures.rs:1372,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - v
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 1374
      start: 1371
    functionDepth: 2
    functionLinenumber: 1371
    functionLinenumberEnd: 1374
    functionName: FutureLister::start_after
    functionSourceFile: /src/opendal/core/core/src/types/operator/operator_futures.rs
    functionUses: 1
    functionsReached:
    - Result::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn start_after(mut self, v: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - v
    argTypes:
    - bool
    constantsTouched: []
    func_position:
      end: 1385
      start: 1382
    functionDepth: 0
    functionLinenumber: 1382
    functionLinenumberEnd: 1385
    functionName: FutureLister::recursive
    functionSourceFile: /src/opendal/core/core/src/types/operator/operator_futures.rs
    functionUses: 11
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: 'pub fn recursive(mut self, v: bool) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - v
    argTypes:
    - bool
    constantsTouched: []
    func_position:
      end: 1399
      start: 1396
    functionDepth: 0
    functionLinenumber: 1396
    functionLinenumberEnd: 1399
    functionName: FutureLister::versions
    functionSourceFile: /src/opendal/core/core/src/types/operator/operator_futures.rs
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: 'pub fn versions(mut self, v: bool) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - v
    argTypes:
    - bool
    constantsTouched: []
    func_position:
      end: 1412
      start: 1409
    functionDepth: 0
    functionLinenumber: 1409
    functionLinenumberEnd: 1412
    functionName: FutureLister::deleted
    functionSourceFile: /src/opendal/core/core/src/types/operator/operator_futures.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: 'pub fn deleted(mut self, v: bool) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - v
    argTypes:
    - bool
    constantsTouched: []
    func_position:
      end: 1442
      start: 1439
    functionDepth: 0
    functionLinenumber: 1439
    functionLinenumberEnd: 1442
    functionName: FutureCopy::if_not_exists
    functionSourceFile: /src/opendal/core/core/src/types/operator/operator_futures.rs
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: 'pub fn if_not_exists(mut self, v: bool) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Some
      Src: /src/opendal/core/core/src/types/operator/operator_futures.rs:1449,1
    - Dst: Option::to_string
      Src: /src/opendal/core/core/src/types/operator/operator_futures.rs:1449,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - etag
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 1451
      start: 1448
    functionDepth: 2
    functionLinenumber: 1448
    functionLinenumberEnd: 1451
    functionName: FutureCopy::if_match
    functionSourceFile: /src/opendal/core/core/src/types/operator/operator_futures.rs
    functionUses: 2
    functionsReached:
    - Option::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn if_match(mut self, etag: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Some
      Src: /src/opendal/core/core/src/types/operator/operator_futures.rs:1457,1
    - Dst: Result::into
      Src: /src/opendal/core/core/src/types/operator/operator_futures.rs:1457,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - version
    argTypes:
    - impl Into<String>
    constantsTouched: []
    func_position:
      end: 1459
      start: 1456
    functionDepth: 29
    functionLinenumber: 1456
    functionLinenumberEnd: 1459
    functionName: FutureCopy::source_version
    functionSourceFile: /src/opendal/core/core/src/types/operator/operator_futures.rs
    functionUses: 2
    functionsReached:
    - Result::into
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn source_version(mut self, version: impl Into<String>) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::max
      Src: /src/opendal/core/core/src/types/operator/operator_futures.rs:1465,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - v
    argTypes:
    - usize
    constantsTouched: []
    func_position:
      end: 1467
      start: 1464
    functionDepth: 1
    functionLinenumber: 1464
    functionLinenumberEnd: 1467
    functionName: FutureCopy::concurrent
    functionSourceFile: /src/opendal/core/core/src/types/operator/operator_futures.rs
    functionUses: 0
    functionsReached:
    - Result::max
    linkageType: ''
    returnType: Self
    signature: 'pub fn concurrent(mut self, v: usize) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Some
      Src: /src/opendal/core/core/src/types/operator/operator_futures.rs:1473,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - v
    argTypes:
    - usize
    constantsTouched: []
    func_position:
      end: 1475
      start: 1472
    functionDepth: 0
    functionLinenumber: 1472
    functionLinenumberEnd: 1475
    functionName: FutureCopy::chunk
    functionSourceFile: /src/opendal/core/core/src/types/operator/operator_futures.rs
    functionUses: 2
    functionsReached:
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn chunk(mut self, v: usize) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Some
      Src: /src/opendal/core/core/src/types/operator/operator_futures.rs:1481,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - v
    argTypes:
    - u64
    constantsTouched: []
    func_position:
      end: 1483
      start: 1480
    functionDepth: 0
    functionLinenumber: 1480
    functionLinenumberEnd: 1483
    functionName: FutureCopy::source_content_length_hint
    functionSourceFile: /src/opendal/core/core/src/types/operator/operator_futures.rs
    functionUses: 0
    functionsReached:
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn source_content_length_hint(mut self, v: u64) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - v
    argTypes:
    - bool
    constantsTouched: []
    func_position:
      end: 1498
      start: 1495
    functionDepth: 0
    functionLinenumber: 1495
    functionLinenumberEnd: 1498
    functionName: FutureCopier::if_not_exists
    functionSourceFile: /src/opendal/core/core/src/types/operator/operator_futures.rs
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: 'pub fn if_not_exists(mut self, v: bool) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Some
      Src: /src/opendal/core/core/src/types/operator/operator_futures.rs:1505,1
    - Dst: Option::to_string
      Src: /src/opendal/core/core/src/types/operator/operator_futures.rs:1505,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - etag
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 1507
      start: 1504
    functionDepth: 2
    functionLinenumber: 1504
    functionLinenumberEnd: 1507
    functionName: FutureCopier::if_match
    functionSourceFile: /src/opendal/core/core/src/types/operator/operator_futures.rs
    functionUses: 0
    functionsReached:
    - Option::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn if_match(mut self, etag: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Some
      Src: /src/opendal/core/core/src/types/operator/operator_futures.rs:1513,1
    - Dst: Result::into
      Src: /src/opendal/core/core/src/types/operator/operator_futures.rs:1513,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - version
    argTypes:
    - impl Into<String>
    constantsTouched: []
    func_position:
      end: 1515
      start: 1512
    functionDepth: 29
    functionLinenumber: 1512
    functionLinenumberEnd: 1515
    functionName: FutureCopier::source_version
    functionSourceFile: /src/opendal/core/core/src/types/operator/operator_futures.rs
    functionUses: 0
    functionsReached:
    - Result::into
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn source_version(mut self, version: impl Into<String>) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Some
      Src: /src/opendal/core/core/src/types/operator/operator_futures.rs:1521,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - v
    argTypes:
    - u64
    constantsTouched: []
    func_position:
      end: 1523
      start: 1520
    functionDepth: 0
    functionLinenumber: 1520
    functionLinenumberEnd: 1523
    functionName: FutureCopier::source_content_length_hint
    functionSourceFile: /src/opendal/core/core/src/types/operator/operator_futures.rs
    functionUses: 0
    functionsReached:
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn source_content_length_hint(mut self, v: u64) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::max
      Src: /src/opendal/core/core/src/types/operator/operator_futures.rs:1529,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - v
    argTypes:
    - usize
    constantsTouched: []
    func_position:
      end: 1531
      start: 1528
    functionDepth: 1
    functionLinenumber: 1528
    functionLinenumberEnd: 1531
    functionName: FutureCopier::concurrent
    functionSourceFile: /src/opendal/core/core/src/types/operator/operator_futures.rs
    functionUses: 0
    functionsReached:
    - Result::max
    linkageType: ''
    returnType: Self
    signature: 'pub fn concurrent(mut self, v: usize) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Some
      Src: /src/opendal/core/core/src/types/operator/operator_futures.rs:1537,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - v
    argTypes:
    - usize
    constantsTouched: []
    func_position:
      end: 1539
      start: 1536
    functionDepth: 0
    functionLinenumber: 1536
    functionLinenumberEnd: 1539
    functionName: FutureCopier::chunk
    functionSourceFile: /src/opendal/core/core/src/types/operator/operator_futures.rs
    functionUses: 0
    functionsReached:
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn chunk(mut self, v: usize) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - v
    argTypes:
    - bool
    constantsTouched: []
    func_position:
      end: 1568
      start: 1565
    functionDepth: 0
    functionLinenumber: 1565
    functionLinenumberEnd: 1568
    functionName: FutureRename::if_not_exists
    functionSourceFile: /src/opendal/core/core/src/types/operator/operator_futures.rs
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: 'pub fn if_not_exists(mut self, v: bool) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: C::into_builder
      Src: /src/opendal/core/core/src/types/operator/builder.rs:70,1
    - Dst: Operator::new
      Src: /src/opendal/core/core/src/types/operator/builder.rs:71,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - cfg
    argTypes:
    - C
    constantsTouched: []
    func_position:
      end: 72
      start: 69
    functionDepth: 7
    functionLinenumber: 69
    functionLinenumberEnd: 72
    functionName: Operator::from_config
    functionSourceFile: /src/opendal/core/core/src/types/operator/builder.rs
    functionUses: 3
    functionsReached:
    - Operator::new
    - C::into_builder
    linkageType: ''
    returnType: Result
    signature: 'pub fn from_config<C: Configurator>(cfg: C) -> Result<Operator>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: B::Config::from_iter
      Src: /src/opendal/core/core/src/types/operator/builder.rs:98,1
    - Dst: into_builder
      Src: /src/opendal/core/core/src/types/operator/builder.rs:98,1
    - Dst: Operator::new
      Src: /src/opendal/core/core/src/types/operator/builder.rs:99,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - iter
    argTypes:
    - impl IntoIterator<Item = (String, String)>
    constantsTouched: []
    func_position:
      end: 100
      start: 95
    functionDepth: 7
    functionLinenumber: 95
    functionLinenumberEnd: 100
    functionName: Operator::from_iter
    functionSourceFile: /src/opendal/core/core/src/types/operator/builder.rs
    functionUses: 0
    functionsReached:
    - Operator::new
    - into_builder
    - B::Config::from_iter
    linkageType: ''
    returnType: Result
    signature: 'pub fn from_iter<B: Builder>(iter: impl IntoIterator<Item = (String,
      String)>,) -> Result<Operator>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Operator::from_uri
      Src: /src/opendal/core/core/src/types/operator/builder.rs:145,1
    - Dst: as_ref
      Src: /src/opendal/core/core/src/types/operator/builder.rs:145,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - scheme
    - iter
    argTypes:
    - impl AsRef<str>
    - impl IntoIterator<Item = (String, String)>
    constantsTouched: []
    func_position:
      end: 146
      start: 141
    functionDepth: 5
    functionLinenumber: 141
    functionLinenumberEnd: 146
    functionName: Operator::via_iter
    functionSourceFile: /src/opendal/core/core/src/types/operator/builder.rs
    functionUses: 38
    functionsReached:
    - as_ref
    - Operator::from_uri
    linkageType: ''
    returnType: Result
    signature: 'pub fn via_iter(scheme: impl AsRef<str>,iter: impl IntoIterator<Item
      = (String, String)>,) -> Result<Operator>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Operator::via_iter
      Src: /src/opendal/core/core/src/types/operator/builder.rs:156,1
    - Dst: Result::expect
      Src: /src/opendal/core/core/src/types/operator/builder.rs:156,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 159
      start: 155
    functionDepth: 6
    functionLinenumber: 155
    functionLinenumberEnd: 159
    functionName: tests::via_iter_delegates_to_registry
    functionSourceFile: /src/opendal/core/core/src/types/operator/builder.rs
    functionUses: 0
    functionsReached:
    - Operator::via_iter
    - Result::expect
    linkageType: ''
    returnType: void
    signature: fn via_iter_delegates_to_registry()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Operator::new
      Src: /src/opendal/core/core/src/types/operator/builder.rs:163,1
    - Dst: services::Memory::default
      Src: /src/opendal/core/core/src/types/operator/builder.rs:163,1
    - Dst: Result::expect
      Src: /src/opendal/core/core/src/types/operator/builder.rs:163,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 165
      start: 162
    functionDepth: 7
    functionLinenumber: 162
    functionLinenumberEnd: 165
    functionName: tests::new_returns_finished_operator
    functionSourceFile: /src/opendal/core/core/src/types/operator/builder.rs
    functionUses: 0
    functionsReached:
    - services::Memory::default
    - Operator::new
    - Result::expect
    linkageType: ''
    returnType: void
    signature: fn new_returns_finished_operator()
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - info
    - capability
    argTypes:
    - ServiceInfo
    - Capability
    constantsTouched: []
    func_position:
      end: 31
      start: 29
    functionDepth: 0
    functionLinenumber: 29
    functionLinenumberEnd: 31
    functionName: OperatorInfo::new
    functionSourceFile: /src/opendal/core/core/src/types/operator/info.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: 'pub(super) fn new(info: ServiceInfo, capability: Capability) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: scheme
      Src: /src/opendal/bindings/ruby/src/operator_info.rs:41,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 42
      start: 40
    functionDepth: 34
    functionLinenumber: 40
    functionLinenumberEnd: 42
    functionName: OperatorInfo::scheme
    functionSourceFile: /src/opendal/bindings/ruby/src/operator_info.rs
    functionUses: 1
    functionsReached:
    - scheme
    linkageType: ''
    returnType: '&str'
    signature: pub fn scheme(&self) -> &str
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: root
      Src: /src/opendal/bindings/ruby/src/operator_info.rs:49,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 50
      start: 48
    functionDepth: 32
    functionLinenumber: 48
    functionLinenumberEnd: 50
    functionName: OperatorInfo::root
    functionSourceFile: /src/opendal/bindings/ruby/src/operator_info.rs
    functionUses: 1
    functionsReached:
    - root
    linkageType: ''
    returnType: String
    signature: pub fn root(&self) -> String
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: name
      Src: /src/opendal/bindings/ruby/src/operator_info.rs:63,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 64
      start: 62
    functionDepth: 31
    functionLinenumber: 62
    functionLinenumberEnd: 64
    functionName: OperatorInfo::name
    functionSourceFile: /src/opendal/bindings/ruby/src/operator_info.rs
    functionUses: 1
    functionsReached:
    - name
    linkageType: ''
    returnType: String
    signature: pub fn name(&self) -> String
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Capability::new
      Src: /src/opendal/bindings/ruby/src/operator_info.rs:71,1
    - Dst: capability
      Src: /src/opendal/bindings/ruby/src/operator_info.rs:71,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 72
      start: 70
    functionDepth: 2
    functionLinenumber: 70
    functionLinenumberEnd: 72
    functionName: OperatorInfo::capability
    functionSourceFile: /src/opendal/bindings/ruby/src/operator_info.rs
    functionUses: 1
    functionsReached:
    - Capability::new
    - capability
    linkageType: ''
    returnType: Capability
    signature: pub fn capability(&self) -> Capability
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::debug_struct
      Src: /src/opendal/core/core/src/types/operator/operator.rs:183,1
    - Dst: field
      Src: /src/opendal/core/core/src/types/operator/operator.rs:183,1
    - Dst: field
      Src: /src/opendal/core/core/src/types/operator/operator.rs:183,1
    - Dst: field
      Src: /src/opendal/core/core/src/types/operator/operator.rs:183,1
    - Dst: finish_non_exhaustive
      Src: /src/opendal/core/core/src/types/operator/operator.rs:183,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 16
    argCount: 1
    argNames:
    - f
    argTypes:
    - '&mut std::fmt::Formatter<''_>'
    constantsTouched: []
    func_position:
      end: 188
      start: 182
    functionDepth: 5
    functionLinenumber: 182
    functionLinenumberEnd: 188
    functionName: Operator::fmt
    functionSourceFile: /src/opendal/core/core/src/types/operator/operator.rs
    functionUses: 0
    functionsReached:
    - field
    - Result::debug_struct
    - finish_non_exhaustive
    linkageType: ''
    returnType: std::fmt::Result
    signature: 'fn fmt(&self, f: &mut std::fmt::Formatter<''_>) -> std::fmt::Result'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self::from_parts
      Src: /src/opendal/core/core/src/types/operator/operator.rs:196,1
    - Dst: OperationContext::default
      Src: /src/opendal/core/core/src/types/operator/operator.rs:196,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - srv
    argTypes:
    - Servicer
    constantsTouched: []
    func_position:
      end: 197
      start: 195
    functionDepth: 3
    functionLinenumber: 195
    functionLinenumberEnd: 197
    functionName: Operator::from_inner
    functionSourceFile: /src/opendal/core/core/src/types/operator/operator.rs
    functionUses: 0
    functionsReached:
    - Self::from_parts
    - OperationContext::default
    linkageType: ''
    returnType: Self
    signature: 'pub fn from_inner(srv: Servicer) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Servicer::clone
      Src: /src/opendal/core/core/src/types/operator/operator.rs:209,1
    - Dst: Result::clone
      Src: /src/opendal/core/core/src/types/operator/operator.rs:210,1
    - Dst: Arc::new
      Src: /src/opendal/core/core/src/types/operator/operator.rs:211,1
    - Dst: Vec::new
      Src: /src/opendal/core/core/src/types/operator/operator.rs:211,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 2
    argNames:
    - ctx
    - srv
    argTypes:
    - OperationContext
    - Servicer
    constantsTouched: []
    func_position:
      end: 215
      start: 207
    functionDepth: 2
    functionLinenumber: 207
    functionLinenumberEnd: 215
    functionName: Operator::from_parts
    functionSourceFile: /src/opendal/core/core/src/types/operator/operator.rs
    functionUses: 9
    functionsReached:
    - Result::clone
    - Vec::new
    - Arc::new
    - Servicer::clone
    linkageType: ''
    returnType: Self
    signature: 'pub fn from_parts(ctx: OperationContext, srv: Servicer) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 224
      start: 222
    functionDepth: 0
    functionLinenumber: 222
    functionLinenumberEnd: 224
    functionName: Operator::into_parts
    functionSourceFile: /src/opendal/core/core/src/types/operator/operator.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: (OperationContext, Servicer)
    signature: pub fn into_parts(self) -> (OperationContext, Servicer)
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: (Servicer, OperationContext)::iter
      Src: /src/opendal/core/core/src/types/operator/operator.rs:236,1
    - Dst: fold
      Src: /src/opendal/core/core/src/types/operator/operator.rs:236,1
    - Dst: '&Servicer::clone'
      Src: /src/opendal/core/core/src/types/operator/operator.rs:238,1
    - Dst: ThrottleAccessor::apply_service
      Src: /src/opendal/core/core/src/types/operator/operator.rs:238,1
    - Dst: (Servicer, OperationContext)::iter
      Src: /src/opendal/core/core/src/types/operator/operator.rs:239,1
    - Dst: fold
      Src: /src/opendal/core/core/src/types/operator/operator.rs:239,1
    - Dst: '&OperationContext::clone'
      Src: /src/opendal/core/core/src/types/operator/operator.rs:239,1
    - Dst: ThrottleAccessor::apply_context
      Src: /src/opendal/core/core/src/types/operator/operator.rs:240,1
    - Dst: clone
      Src: /src/opendal/core/core/src/types/operator/operator.rs:240,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 21
    argCount: 3
    argNames:
    - base_srv
    - base_ctx
    - layers
    argTypes:
    - '&Servicer'
    - '&OperationContext'
    - '&[Arc<dyn Layer>]'
    constantsTouched: []
    func_position:
      end: 243
      start: 231
    functionDepth: 3
    functionLinenumber: 231
    functionLinenumberEnd: 243
    functionName: Operator::apply_layers
    functionSourceFile: /src/opendal/core/core/src/types/operator/operator.rs
    functionUses: 0
    functionsReached:
    - ThrottleAccessor::apply_context
    - '&OperationContext::clone'
    - '&Servicer::clone'
    - clone
    - ThrottleAccessor::apply_service
    - fold
    - (Servicer, OperationContext)::iter
    linkageType: ''
    returnType: (Servicer, OperationContext)
    signature: 'fn apply_layers(base_srv: &Servicer,base_ctx: &OperationContext,layers:
      &[Arc<dyn Layer>],) -> (Servicer, OperationContext)'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 252
      start: 250
    functionDepth: 0
    functionLinenumber: 250
    functionLinenumberEnd: 252
    functionName: Operator::base_service
    functionSourceFile: /src/opendal/core/core/src/types/operator/operator.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: '&Servicer'
    signature: pub fn base_service(&self) -> &Servicer
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 261
      start: 259
    functionDepth: 0
    functionLinenumber: 259
    functionLinenumberEnd: 261
    functionName: Operator::base_context
    functionSourceFile: /src/opendal/core/core/src/types/operator/operator.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: '&OperationContext'
    signature: pub fn base_context(&self) -> &OperationContext
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 269
      start: 267
    functionDepth: 0
    functionLinenumber: 267
    functionLinenumberEnd: 269
    functionName: Operator::service
    functionSourceFile: /src/opendal/core/core/src/types/operator/operator.rs
    functionUses: 31
    functionsReached: []
    linkageType: ''
    returnType: '&Servicer'
    signature: pub fn service(&self) -> &Servicer
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 277
      start: 275
    functionDepth: 0
    functionLinenumber: 275
    functionLinenumberEnd: 277
    functionName: Operator::context
    functionSourceFile: /src/opendal/core/core/src/types/operator/operator.rs
    functionUses: 31
    functionsReached: []
    linkageType: ''
    returnType: '&OperationContext'
    signature: pub fn context(&self) -> &OperationContext
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self::apply_layers
      Src: /src/opendal/core/core/src/types/operator/operator.rs:306,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - OperationContext
    constantsTouched: []
    func_position:
      end: 314
      start: 305
    functionDepth: 4
    functionLinenumber: 305
    functionLinenumberEnd: 314
    functionName: Operator::with_context
    functionSourceFile: /src/opendal/core/core/src/types/operator/operator.rs
    functionUses: 0
    functionsReached:
    - Self::apply_layers
    linkageType: ''
    returnType: Self
    signature: 'pub fn with_context(self, ctx: OperationContext) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: layer
      Src: /src/opendal/bindings/nodejs/src/lib.rs:1216,1
    - Dst: clone
      Src: /src/opendal/bindings/nodejs/src/lib.rs:1216,1
    - Dst: opendal::blocking::Operator::new
      Src: /src/opendal/bindings/nodejs/src/lib.rs:1219,1
    - Dst: clone
      Src: /src/opendal/bindings/nodejs/src/lib.rs:1219,1
    - Dst: Result::map_err
      Src: /src/opendal/bindings/nodejs/src/lib.rs:1219,1
    - Dst: Ok
      Src: /src/opendal/bindings/nodejs/src/lib.rs:1221,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 14
    argCount: 1
    argNames:
    - layer
    argTypes:
    - '&External<Layer>'
    constantsTouched: []
    func_position:
      end: 1225
      start: 1215
    functionDepth: 3
    functionLinenumber: 1215
    functionLinenumberEnd: 1225
    functionName: Operator::layer
    functionSourceFile: /src/opendal/bindings/nodejs/src/lib.rs
    functionUses: 0
    functionsReached:
    - Result::map_err
    - Ok
    - clone
    - opendal::blocking::Operator::new
    - layer
    linkageType: ''
    returnType: Result
    signature: 'pub fn layer(&self, layer: &External<Layer>) -> Result<Self>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: normalize_path
      Src: /src/opendal/core/core/src/types/operator/operator.rs:430,1
    - Dst: OperatorFuture::new
      Src: /src/opendal/core/core/src/types/operator/operator.rs:431,1
    - Dst: Operator::context
      Src: /src/opendal/core/core/src/types/operator/operator.rs:432,1
    - Dst: '&OperationContext::clone'
      Src: /src/opendal/core/core/src/types/operator/operator.rs:432,1
    - Dst: Operator::service
      Src: /src/opendal/core/core/src/types/operator/operator.rs:433,1
    - Dst: '&Servicer::clone'
      Src: /src/opendal/core/core/src/types/operator/operator.rs:433,1
    - Dst: options::StatOptions::default
      Src: /src/opendal/core/core/src/types/operator/operator.rs:435,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 1
    argNames:
    - path
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 438
      start: 429
    functionDepth: 34
    functionLinenumber: 429
    functionLinenumberEnd: 438
    functionName: Operator::stat_with
    functionSourceFile: /src/opendal/core/core/src/types/operator/operator.rs
    functionUses: 0
    functionsReached:
    - Operator::context
    - normalize_path
    - options::StatOptions::default
    - OperatorFuture::new
    - '&OperationContext::clone'
    - '&Servicer::clone'
    - Operator::service
    linkageType: ''
    returnType: FutureStat
    signature: 'pub fn stat_with(&self, path: &str) -> FutureStat<impl Future<Output
      = Result<Metadata>>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Servicer::stat
      Src: /src/opendal/core/core/src/types/operator/operator.rs:490,1
    - Dst: object_store::Result::into
      Src: /src/opendal/core/core/src/types/operator/operator.rs:490,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/types/operator/operator.rs:491,1
    - Dst: RpRead::into_metadata
      Src: /src/opendal/core/core/src/types/operator/operator.rs:491,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 4
    argNames:
    - ctx
    - srv
    - path
    - opts
    argTypes:
    - OperationContext
    - Servicer
    - String
    - options::StatOptions
    constantsTouched: []
    func_position:
      end: 492
      start: 484
    functionDepth: 31
    functionLinenumber: 484
    functionLinenumberEnd: 492
    functionName: Operator::stat_inner
    functionSourceFile: /src/opendal/core/core/src/types/operator/operator.rs
    functionUses: 0
    functionsReached:
    - RpRead::into_metadata
    - object_store::Result::into
    - Ok
    - Servicer::stat
    linkageType: ''
    returnType: Result
    signature: 'async fn stat_inner(ctx: OperationContext,srv: Servicer,path: String,opts:
      options::StatOptions,) -> Result<Metadata>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: normalize_path
      Src: /src/opendal/core/core/src/types/operator/operator.rs:613,1
    - Dst: OperatorFuture::new
      Src: /src/opendal/core/core/src/types/operator/operator.rs:615,1
    - Dst: Operator::context
      Src: /src/opendal/core/core/src/types/operator/operator.rs:616,1
    - Dst: '&OperationContext::clone'
      Src: /src/opendal/core/core/src/types/operator/operator.rs:616,1
    - Dst: Operator::service
      Src: /src/opendal/core/core/src/types/operator/operator.rs:617,1
    - Dst: '&Servicer::clone'
      Src: /src/opendal/core/core/src/types/operator/operator.rs:617,1
    - Dst: options::ReadOptions::default
      Src: /src/opendal/core/core/src/types/operator/operator.rs:619,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 1
    argNames:
    - path
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 622
      start: 612
    functionDepth: 34
    functionLinenumber: 612
    functionLinenumberEnd: 622
    functionName: Operator::read_with
    functionSourceFile: /src/opendal/core/core/src/types/operator/operator.rs
    functionUses: 0
    functionsReached:
    - Operator::context
    - normalize_path
    - OperatorFuture::new
    - options::ReadOptions::default
    - '&OperationContext::clone'
    - '&Servicer::clone'
    - Operator::service
    linkageType: ''
    returnType: FutureRead
    signature: 'pub fn read_with(&self, path: &str) -> FutureRead<impl Future<Output
      = Result<Buffer>>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: validate_path
      Src: /src/opendal/core/core/src/types/operator/operator.rs:662,1
    - Dst: Err
      Src: /src/opendal/core/core/src/types/operator/operator.rs:663,1
    - Dst: Error::new
      Src: /src/opendal/core/core/src/types/operator/operator.rs:664,1
    - Dst: Self::with_operation
      Src: /src/opendal/core/core/src/types/operator/operator.rs:664,1
    - Dst: Self::with_context
      Src: /src/opendal/core/core/src/types/operator/operator.rs:664,1
    - Dst: Servicer::info
      Src: /src/opendal/core/core/src/types/operator/operator.rs:666,1
    - Dst: ServiceInfo::scheme
      Src: /src/opendal/core/core/src/types/operator/operator.rs:666,1
    - Dst: Self::with_context
      Src: /src/opendal/core/core/src/types/operator/operator.rs:664,1
    - Dst: object_store::Result::into
      Src: /src/opendal/core/core/src/types/operator/operator.rs:671,1
    - Dst: Servicer::read
      Src: /src/opendal/core/core/src/types/operator/operator.rs:672,1
    - Dst: OpStat::clone
      Src: /src/opendal/core/core/src/types/operator/operator.rs:672,1
    - Dst: ReadContext::new
      Src: /src/opendal/core/core/src/types/operator/operator.rs:673,1
    - Dst: Reader::new
      Src: /src/opendal/core/core/src/types/operator/operator.rs:674,1
    - Dst: Result::read
      Src: /src/opendal/core/core/src/types/operator/operator.rs:675,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/types/operator/operator.rs:676,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 36
    argCount: 4
    argNames:
    - ctx
    - srv
    - path
    - opts
    argTypes:
    - OperationContext
    - Servicer
    - String
    - options::ReadOptions
    constantsTouched: []
    func_position:
      end: 677
      start: 656
    functionDepth: 36
    functionLinenumber: 656
    functionLinenumberEnd: 677
    functionName: Operator::read_inner
    functionSourceFile: /src/opendal/core/core/src/types/operator/operator.rs
    functionUses: 0
    functionsReached:
    - OpStat::clone
    - ReadContext::new
    - Result::read
    - Ok
    - Servicer::info
    - object_store::Result::into
    - Reader::new
    - Error::new
    - Err
    - Servicer::read
    - validate_path
    - Self::with_operation
    - ServiceInfo::scheme
    - Self::with_context
    linkageType: ''
    returnType: Result
    signature: 'async fn read_inner(ctx: OperationContext,srv: Servicer,path: String,opts:
      options::ReadOptions,) -> Result<Buffer>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: normalize_path
      Src: /src/opendal/core/core/src/types/operator/operator.rs:725,1
    - Dst: OperatorFuture::new
      Src: /src/opendal/core/core/src/types/operator/operator.rs:727,1
    - Dst: Operator::context
      Src: /src/opendal/core/core/src/types/operator/operator.rs:728,1
    - Dst: '&OperationContext::clone'
      Src: /src/opendal/core/core/src/types/operator/operator.rs:728,1
    - Dst: Operator::service
      Src: /src/opendal/core/core/src/types/operator/operator.rs:729,1
    - Dst: '&Servicer::clone'
      Src: /src/opendal/core/core/src/types/operator/operator.rs:729,1
    - Dst: options::ReaderOptions::default
      Src: /src/opendal/core/core/src/types/operator/operator.rs:731,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 1
    argNames:
    - path
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 734
      start: 724
    functionDepth: 34
    functionLinenumber: 724
    functionLinenumberEnd: 734
    functionName: Operator::reader_with
    functionSourceFile: /src/opendal/core/core/src/types/operator/operator.rs
    functionUses: 0
    functionsReached:
    - Operator::context
    - normalize_path
    - OperatorFuture::new
    - '&OperationContext::clone'
    - '&Servicer::clone'
    - Operator::service
    - options::ReaderOptions::default
    linkageType: ''
    returnType: FutureReader
    signature: 'pub fn reader_with(&self, path: &str) -> FutureReader<impl Future<Output
      = Result<Reader>>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: validate_path
      Src: /src/opendal/core/core/src/types/operator/operator.rs:773,1
    - Dst: Err
      Src: /src/opendal/core/core/src/types/operator/operator.rs:774,1
    - Dst: Error::new
      Src: /src/opendal/core/core/src/types/operator/operator.rs:775,1
    - Dst: Self::with_operation
      Src: /src/opendal/core/core/src/types/operator/operator.rs:775,1
    - Dst: Self::with_context
      Src: /src/opendal/core/core/src/types/operator/operator.rs:775,1
    - Dst: Servicer::info
      Src: /src/opendal/core/core/src/types/operator/operator.rs:777,1
    - Dst: ServiceInfo::scheme
      Src: /src/opendal/core/core/src/types/operator/operator.rs:777,1
    - Dst: Self::with_context
      Src: /src/opendal/core/core/src/types/operator/operator.rs:775,1
    - Dst: Result::into
      Src: /src/opendal/core/core/src/types/operator/operator.rs:782,1
    - Dst: Servicer::read
      Src: /src/opendal/core/core/src/types/operator/operator.rs:783,1
    - Dst: OpStat::clone
      Src: /src/opendal/core/core/src/types/operator/operator.rs:783,1
    - Dst: ReadContext::new
      Src: /src/opendal/core/core/src/types/operator/operator.rs:784,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/types/operator/operator.rs:785,1
    - Dst: Reader::new
      Src: /src/opendal/core/core/src/types/operator/operator.rs:785,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 31
    argCount: 4
    argNames:
    - ctx
    - srv
    - path
    - options
    argTypes:
    - OperationContext
    - Servicer
    - String
    - options::ReaderOptions
    constantsTouched: []
    func_position:
      end: 786
      start: 767
    functionDepth: 36
    functionLinenumber: 767
    functionLinenumberEnd: 786
    functionName: Operator::reader_inner
    functionSourceFile: /src/opendal/core/core/src/types/operator/operator.rs
    functionUses: 0
    functionsReached:
    - OpStat::clone
    - ReadContext::new
    - Ok
    - Servicer::info
    - Reader::new
    - Error::new
    - Err
    - Result::into
    - Servicer::read
    - validate_path
    - Self::with_operation
    - ServiceInfo::scheme
    - Self::with_context
    linkageType: ''
    returnType: Result
    signature: 'async fn reader_inner(ctx: OperationContext,srv: Servicer,path: String,options:
      options::ReaderOptions,) -> Result<Reader>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: normalize_path
      Src: /src/opendal/core/core/src/types/operator/operator.rs:872,1
    - Dst: Result::into
      Src: /src/opendal/core/core/src/types/operator/operator.rs:873,1
    - Dst: OperatorFuture::new
      Src: /src/opendal/core/core/src/types/operator/operator.rs:875,1
    - Dst: Operator::context
      Src: /src/opendal/core/core/src/types/operator/operator.rs:876,1
    - Dst: '&OperationContext::clone'
      Src: /src/opendal/core/core/src/types/operator/operator.rs:876,1
    - Dst: Operator::service
      Src: /src/opendal/core/core/src/types/operator/operator.rs:877,1
    - Dst: '&Servicer::clone'
      Src: /src/opendal/core/core/src/types/operator/operator.rs:877,1
    - Dst: options::WriteOptions::default
      Src: /src/opendal/core/core/src/types/operator/operator.rs:879,1
    - Dst: Self::write_inner
      Src: /src/opendal/core/core/src/types/operator/operator.rs:880,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 16
    argCount: 2
    argNames:
    - path
    - bs
    argTypes:
    - '&str'
    - impl Into<Buffer>
    constantsTouched: []
    func_position:
      end: 882
      start: 867
    functionDepth: 34
    functionLinenumber: 867
    functionLinenumberEnd: 882
    functionName: Operator::write_with
    functionSourceFile: /src/opendal/core/core/src/types/operator/operator.rs
    functionUses: 0
    functionsReached:
    - Operator::context
    - normalize_path
    - OperatorFuture::new
    - '&OperationContext::clone'
    - '&Servicer::clone'
    - options::WriteOptions::default
    - Result::into
    - Self::write_inner
    - Operator::service
    linkageType: ''
    returnType: FutureWrite
    signature: 'pub fn write_with(&self,path: &str,bs: impl Into<Buffer>,) -> FutureWrite<impl
      Future<Output = Result<Metadata>>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: validate_path
      Src: /src/opendal/core/core/src/types/operator/operator.rs:945,1
    - Dst: Err
      Src: /src/opendal/core/core/src/types/operator/operator.rs:946,1
    - Dst: Error::new
      Src: /src/opendal/core/core/src/types/operator/operator.rs:947,1
    - Dst: Self::with_operation
      Src: /src/opendal/core/core/src/types/operator/operator.rs:947,1
    - Dst: Self::with_context
      Src: /src/opendal/core/core/src/types/operator/operator.rs:947,1
    - Dst: Servicer::info
      Src: /src/opendal/core/core/src/types/operator/operator.rs:949,1
    - Dst: ServiceInfo::scheme
      Src: /src/opendal/core/core/src/types/operator/operator.rs:949,1
    - Dst: Self::with_context
      Src: /src/opendal/core/core/src/types/operator/operator.rs:947,1
    - Dst: object_store::Result::into
      Src: /src/opendal/core/core/src/types/operator/operator.rs:954,1
    - Dst: WriteContext::new
      Src: /src/opendal/core/core/src/types/operator/operator.rs:956,1
    - Dst: Writer::new
      Src: /src/opendal/core/core/src/types/operator/operator.rs:957,1
    - Dst: Self::write
      Src: /src/opendal/core/core/src/types/operator/operator.rs:958,1
    - Dst: Self::close
      Src: /src/opendal/core/core/src/types/operator/operator.rs:959,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 34
    argCount: 5
    argNames:
    - ctx
    - srv
    - path
    - bs
    - opts
    argTypes:
    - OperationContext
    - Servicer
    - String
    - Buffer
    - options::WriteOptions
    constantsTouched: []
    func_position:
      end: 960
      start: 938
    functionDepth: 36
    functionLinenumber: 938
    functionLinenumberEnd: 960
    functionName: Operator::write_inner
    functionSourceFile: /src/opendal/core/core/src/types/operator/operator.rs
    functionUses: 0
    functionsReached:
    - Servicer::info
    - object_store::Result::into
    - WriteContext::new
    - Error::new
    - Err
    - Self::write
    - Self::close
    - validate_path
    - Self::with_operation
    - ServiceInfo::scheme
    - Self::with_context
    - Writer::new
    linkageType: ''
    returnType: Result
    signature: 'async fn write_inner(ctx: OperationContext,srv: Servicer,path: String,bs:
      Buffer,opts: options::WriteOptions,) -> Result<Metadata>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: normalize_path
      Src: /src/opendal/core/core/src/types/operator/operator.rs:1040,1
    - Dst: OperatorFuture::new
      Src: /src/opendal/core/core/src/types/operator/operator.rs:1042,1
    - Dst: Operator::context
      Src: /src/opendal/core/core/src/types/operator/operator.rs:1043,1
    - Dst: '&OperationContext::clone'
      Src: /src/opendal/core/core/src/types/operator/operator.rs:1043,1
    - Dst: Operator::service
      Src: /src/opendal/core/core/src/types/operator/operator.rs:1044,1
    - Dst: '&Servicer::clone'
      Src: /src/opendal/core/core/src/types/operator/operator.rs:1044,1
    - Dst: options::WriteOptions::default
      Src: /src/opendal/core/core/src/types/operator/operator.rs:1046,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 1
    argNames:
    - path
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 1049
      start: 1039
    functionDepth: 34
    functionLinenumber: 1039
    functionLinenumberEnd: 1049
    functionName: Operator::writer_with
    functionSourceFile: /src/opendal/core/core/src/types/operator/operator.rs
    functionUses: 0
    functionsReached:
    - Operator::context
    - normalize_path
    - OperatorFuture::new
    - '&OperationContext::clone'
    - '&Servicer::clone'
    - options::WriteOptions::default
    - Operator::service
    linkageType: ''
    returnType: FutureWriter
    signature: 'pub fn writer_with(&self, path: &str) -> FutureWriter<impl Future<Output
      = Result<Writer>>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: validate_path
      Src: /src/opendal/core/core/src/types/operator/operator.rs:1113,1
    - Dst: Err
      Src: /src/opendal/core/core/src/types/operator/operator.rs:1114,1
    - Dst: Error::new
      Src: /src/opendal/core/core/src/types/operator/operator.rs:1115,1
    - Dst: Self::with_operation
      Src: /src/opendal/core/core/src/types/operator/operator.rs:1115,1
    - Dst: Self::with_context
      Src: /src/opendal/core/core/src/types/operator/operator.rs:1115,1
    - Dst: Servicer::info
      Src: /src/opendal/core/core/src/types/operator/operator.rs:1117,1
    - Dst: ServiceInfo::scheme
      Src: /src/opendal/core/core/src/types/operator/operator.rs:1117,1
    - Dst: Self::with_context
      Src: /src/opendal/core/core/src/types/operator/operator.rs:1115,1
    - Dst: object_store::Result::into
      Src: /src/opendal/core/core/src/types/operator/operator.rs:1122,1
    - Dst: WriteContext::new
      Src: /src/opendal/core/core/src/types/operator/operator.rs:1123,1
    - Dst: Writer::new
      Src: /src/opendal/core/core/src/types/operator/operator.rs:1124,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/types/operator/operator.rs:1125,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 27
    argCount: 4
    argNames:
    - ctx
    - srv
    - path
    - opts
    argTypes:
    - OperationContext
    - Servicer
    - String
    - options::WriteOptions
    constantsTouched: []
    func_position:
      end: 1126
      start: 1107
    functionDepth: 36
    functionLinenumber: 1107
    functionLinenumberEnd: 1126
    functionName: Operator::writer_inner
    functionSourceFile: /src/opendal/core/core/src/types/operator/operator.rs
    functionUses: 0
    functionsReached:
    - Ok
    - Servicer::info
    - object_store::Result::into
    - WriteContext::new
    - Error::new
    - Err
    - validate_path
    - Self::with_operation
    - ServiceInfo::scheme
    - Self::with_context
    - Writer::new
    linkageType: ''
    returnType: Result
    signature: 'async fn writer_inner(ctx: OperationContext,srv: Servicer,path: String,opts:
      options::WriteOptions,) -> Result<Writer>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: normalize_path
      Src: /src/opendal/core/core/src/types/operator/operator.rs:1192,1
    - Dst: normalize_path
      Src: /src/opendal/core/core/src/types/operator/operator.rs:1193,1
    - Dst: OperatorFuture::new
      Src: /src/opendal/core/core/src/types/operator/operator.rs:1195,1
    - Dst: Operator::context
      Src: /src/opendal/core/core/src/types/operator/operator.rs:1196,1
    - Dst: '&OperationContext::clone'
      Src: /src/opendal/core/core/src/types/operator/operator.rs:1196,1
    - Dst: Operator::service
      Src: /src/opendal/core/core/src/types/operator/operator.rs:1197,1
    - Dst: '&Servicer::clone'
      Src: /src/opendal/core/core/src/types/operator/operator.rs:1197,1
    - Dst: options::CopyOptions::default
      Src: /src/opendal/core/core/src/types/operator/operator.rs:1199,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 13
    argCount: 2
    argNames:
    - from
    - to
    argTypes:
    - '&str'
    - '&str'
    constantsTouched: []
    func_position:
      end: 1202
      start: 1187
    functionDepth: 34
    functionLinenumber: 1187
    functionLinenumberEnd: 1202
    functionName: Operator::copy_with
    functionSourceFile: /src/opendal/core/core/src/types/operator/operator.rs
    functionUses: 0
    functionsReached:
    - Operator::context
    - normalize_path
    - OperatorFuture::new
    - '&OperationContext::clone'
    - '&Servicer::clone'
    - options::CopyOptions::default
    - Operator::service
    linkageType: ''
    returnType: FutureCopy
    signature: 'pub fn copy_with(&self,from: &str,to: &str,) -> FutureCopy<impl Future<Output
      = Result<Metadata>>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: normalize_path
      Src: /src/opendal/core/core/src/types/operator/operator.rs:1210,1
    - Dst: normalize_path
      Src: /src/opendal/core/core/src/types/operator/operator.rs:1211,1
    - Dst: OperatorFuture::new
      Src: /src/opendal/core/core/src/types/operator/operator.rs:1213,1
    - Dst: Operator::context
      Src: /src/opendal/core/core/src/types/operator/operator.rs:1214,1
    - Dst: '&OperationContext::clone'
      Src: /src/opendal/core/core/src/types/operator/operator.rs:1214,1
    - Dst: Operator::service
      Src: /src/opendal/core/core/src/types/operator/operator.rs:1215,1
    - Dst: '&Servicer::clone'
      Src: /src/opendal/core/core/src/types/operator/operator.rs:1215,1
    - Dst: options::CopyOptions::default
      Src: /src/opendal/core/core/src/types/operator/operator.rs:1217,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 13
    argCount: 2
    argNames:
    - from
    - to
    argTypes:
    - '&str'
    - '&str'
    constantsTouched: []
    func_position:
      end: 1220
      start: 1205
    functionDepth: 34
    functionLinenumber: 1205
    functionLinenumberEnd: 1220
    functionName: Operator::copier_with
    functionSourceFile: /src/opendal/core/core/src/types/operator/operator.rs
    functionUses: 0
    functionsReached:
    - Operator::context
    - normalize_path
    - OperatorFuture::new
    - '&OperationContext::clone'
    - '&Servicer::clone'
    - options::CopyOptions::default
    - Operator::service
    linkageType: ''
    returnType: FutureCopier
    signature: 'pub fn copier_with(&self,from: &str,to: &str,) -> FutureCopier<impl
      Future<Output = Result<Copier>>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: validate_path
      Src: /src/opendal/core/core/src/types/operator/operator.rs:1296,1
    - Dst: Err
      Src: /src/opendal/core/core/src/types/operator/operator.rs:1297,1
    - Dst: Error::new
      Src: /src/opendal/core/core/src/types/operator/operator.rs:1298,1
    - Dst: Self::with_operation
      Src: /src/opendal/core/core/src/types/operator/operator.rs:1298,1
    - Dst: Self::with_context
      Src: /src/opendal/core/core/src/types/operator/operator.rs:1298,1
    - Dst: Servicer::info
      Src: /src/opendal/core/core/src/types/operator/operator.rs:1300,1
    - Dst: ServiceInfo::scheme
      Src: /src/opendal/core/core/src/types/operator/operator.rs:1300,1
    - Dst: Self::with_context
      Src: /src/opendal/core/core/src/types/operator/operator.rs:1298,1
    - Dst: validate_path
      Src: /src/opendal/core/core/src/types/operator/operator.rs:1305,1
    - Dst: Err
      Src: /src/opendal/core/core/src/types/operator/operator.rs:1306,1
    - Dst: Error::new
      Src: /src/opendal/core/core/src/types/operator/operator.rs:1307,1
    - Dst: Self::with_operation
      Src: /src/opendal/core/core/src/types/operator/operator.rs:1307,1
    - Dst: Self::with_context
      Src: /src/opendal/core/core/src/types/operator/operator.rs:1307,1
    - Dst: Servicer::info
      Src: /src/opendal/core/core/src/types/operator/operator.rs:1309,1
    - Dst: ServiceInfo::scheme
      Src: /src/opendal/core/core/src/types/operator/operator.rs:1309,1
    - Dst: Self::with_context
      Src: /src/opendal/core/core/src/types/operator/operator.rs:1307,1
    - Dst: is_none
      Src: /src/opendal/core/core/src/types/operator/operator.rs:1314,1
    - Dst: Err
      Src: /src/opendal/core/core/src/types/operator/operator.rs:1315,1
    - Dst: Error::new
      Src: /src/opendal/core/core/src/types/operator/operator.rs:1316,1
    - Dst: Self::with_operation
      Src: /src/opendal/core/core/src/types/operator/operator.rs:1316,1
    - Dst: Self::with_context
      Src: /src/opendal/core/core/src/types/operator/operator.rs:1316,1
    - Dst: Servicer::info
      Src: /src/opendal/core/core/src/types/operator/operator.rs:1318,1
    - Dst: ServiceInfo::scheme
      Src: /src/opendal/core/core/src/types/operator/operator.rs:1318,1
    - Dst: Self::with_context
      Src: /src/opendal/core/core/src/types/operator/operator.rs:1316,1
    - Dst: Self::with_context
      Src: /src/opendal/core/core/src/types/operator/operator.rs:1316,1
    - Dst: Self::copier_inner
      Src: /src/opendal/core/core/src/types/operator/operator.rs:1324,1
    - Dst: Result::close
      Src: /src/opendal/core/core/src/types/operator/operator.rs:1325,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/types/operator/operator.rs:1326,1
    - Dst: Result::abort
      Src: /src/opendal/core/core/src/types/operator/operator.rs:1328,1
    - Dst: Err
      Src: /src/opendal/core/core/src/types/operator/operator.rs:1329,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 77
    argCount: 4
    argNames:
    - ctx
    - srv
    - from
    argTypes:
    - OperationContext
    - Servicer
    - String
    - (options::CopyOptions, String)
    constantsTouched: []
    func_position:
      end: 1332
      start: 1290
    functionDepth: 36
    functionLinenumber: 1290
    functionLinenumberEnd: 1332
    functionName: Operator::copy_inner
    functionSourceFile: /src/opendal/core/core/src/types/operator/operator.rs
    functionUses: 0
    functionsReached:
    - is_none
    - Result::abort
    - Ok
    - Servicer::info
    - Error::new
    - Err
    - Result::close
    - validate_path
    - Self::copier_inner
    - Self::with_operation
    - ServiceInfo::scheme
    - Self::with_context
    linkageType: ''
    returnType: Result
    signature: 'async fn copy_inner(ctx: OperationContext,srv: Servicer,from: String,(opts,
      to): (options::CopyOptions, String),) -> Result<Metadata>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: validate_path
      Src: /src/opendal/core/core/src/types/operator/operator.rs:1340,1
    - Dst: Err
      Src: /src/opendal/core/core/src/types/operator/operator.rs:1341,1
    - Dst: Error::new
      Src: /src/opendal/core/core/src/types/operator/operator.rs:1342,1
    - Dst: Self::with_operation
      Src: /src/opendal/core/core/src/types/operator/operator.rs:1342,1
    - Dst: Self::with_context
      Src: /src/opendal/core/core/src/types/operator/operator.rs:1342,1
    - Dst: Servicer::info
      Src: /src/opendal/core/core/src/types/operator/operator.rs:1344,1
    - Dst: ServiceInfo::scheme
      Src: /src/opendal/core/core/src/types/operator/operator.rs:1344,1
    - Dst: Self::with_context
      Src: /src/opendal/core/core/src/types/operator/operator.rs:1342,1
    - Dst: validate_path
      Src: /src/opendal/core/core/src/types/operator/operator.rs:1349,1
    - Dst: Err
      Src: /src/opendal/core/core/src/types/operator/operator.rs:1350,1
    - Dst: Error::new
      Src: /src/opendal/core/core/src/types/operator/operator.rs:1351,1
    - Dst: Self::with_operation
      Src: /src/opendal/core/core/src/types/operator/operator.rs:1351,1
    - Dst: Self::with_context
      Src: /src/opendal/core/core/src/types/operator/operator.rs:1351,1
    - Dst: Servicer::info
      Src: /src/opendal/core/core/src/types/operator/operator.rs:1353,1
    - Dst: ServiceInfo::scheme
      Src: /src/opendal/core/core/src/types/operator/operator.rs:1353,1
    - Dst: Self::with_context
      Src: /src/opendal/core/core/src/types/operator/operator.rs:1351,1
    - Dst: is_none
      Src: /src/opendal/core/core/src/types/operator/operator.rs:1358,1
    - Dst: Err
      Src: /src/opendal/core/core/src/types/operator/operator.rs:1359,1
    - Dst: Error::new
      Src: /src/opendal/core/core/src/types/operator/operator.rs:1360,1
    - Dst: Self::with_operation
      Src: /src/opendal/core/core/src/types/operator/operator.rs:1360,1
    - Dst: Self::with_context
      Src: /src/opendal/core/core/src/types/operator/operator.rs:1360,1
    - Dst: Servicer::info
      Src: /src/opendal/core/core/src/types/operator/operator.rs:1362,1
    - Dst: ServiceInfo::scheme
      Src: /src/opendal/core/core/src/types/operator/operator.rs:1362,1
    - Dst: Self::with_context
      Src: /src/opendal/core/core/src/types/operator/operator.rs:1360,1
    - Dst: Self::with_context
      Src: /src/opendal/core/core/src/types/operator/operator.rs:1360,1
    - Dst: object_store::Result::into
      Src: /src/opendal/core/core/src/types/operator/operator.rs:1368,1
    - Dst: std::future::ready
      Src: /src/opendal/core/core/src/types/operator/operator.rs:1369,1
    - Dst: Copier::create
      Src: /src/opendal/core/core/src/types/operator/operator.rs:1369,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 70
    argCount: 4
    argNames:
    - ctx
    - srv
    - from
    argTypes:
    - OperationContext
    - Servicer
    - String
    - (options::CopyOptions, String)
    constantsTouched: []
    func_position:
      end: 1370
      start: 1334
    functionDepth: 36
    functionLinenumber: 1334
    functionLinenumberEnd: 1370
    functionName: Operator::copier_inner
    functionSourceFile: /src/opendal/core/core/src/types/operator/operator.rs
    functionUses: 0
    functionsReached:
    - is_none
    - Servicer::info
    - object_store::Result::into
    - Error::new
    - Err
    - Copier::create
    - validate_path
    - std::future::ready
    - Self::with_operation
    - ServiceInfo::scheme
    - Self::with_context
    linkageType: ''
    returnType: Result
    signature: 'async fn copier_inner(ctx: OperationContext,srv: Servicer,from: String,(opts,
      to): (options::CopyOptions, String),) -> Result<Copier>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: normalize_path
      Src: /src/opendal/core/core/src/types/operator/operator.rs:1425,1
    - Dst: normalize_path
      Src: /src/opendal/core/core/src/types/operator/operator.rs:1426,1
    - Dst: OperatorFuture::new
      Src: /src/opendal/core/core/src/types/operator/operator.rs:1428,1
    - Dst: Operator::context
      Src: /src/opendal/core/core/src/types/operator/operator.rs:1429,1
    - Dst: '&OperationContext::clone'
      Src: /src/opendal/core/core/src/types/operator/operator.rs:1429,1
    - Dst: Operator::service
      Src: /src/opendal/core/core/src/types/operator/operator.rs:1430,1
    - Dst: '&Servicer::clone'
      Src: /src/opendal/core/core/src/types/operator/operator.rs:1430,1
    - Dst: options::RenameOptions::default
      Src: /src/opendal/core/core/src/types/operator/operator.rs:1432,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 13
    argCount: 2
    argNames:
    - from
    - to
    argTypes:
    - '&str'
    - '&str'
    constantsTouched: []
    func_position:
      end: 1435
      start: 1420
    functionDepth: 34
    functionLinenumber: 1420
    functionLinenumberEnd: 1435
    functionName: Operator::rename_with
    functionSourceFile: /src/opendal/core/core/src/types/operator/operator.rs
    functionUses: 0
    functionsReached:
    - Operator::context
    - normalize_path
    - OperatorFuture::new
    - '&OperationContext::clone'
    - '&Servicer::clone'
    - options::RenameOptions::default
    - Operator::service
    linkageType: ''
    returnType: FutureRename
    signature: 'pub fn rename_with(&self,from: &str,to: &str,) -> FutureRename<impl
      Future<Output = Result<()>>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: validate_path
      Src: /src/opendal/core/core/src/types/operator/operator.rs:1483,1
    - Dst: Err
      Src: /src/opendal/core/core/src/types/operator/operator.rs:1484,1
    - Dst: Error::new
      Src: /src/opendal/core/core/src/types/operator/operator.rs:1485,1
    - Dst: Self::with_operation
      Src: /src/opendal/core/core/src/types/operator/operator.rs:1485,1
    - Dst: Self::with_context
      Src: /src/opendal/core/core/src/types/operator/operator.rs:1485,1
    - Dst: Servicer::info
      Src: /src/opendal/core/core/src/types/operator/operator.rs:1487,1
    - Dst: ServiceInfo::scheme
      Src: /src/opendal/core/core/src/types/operator/operator.rs:1487,1
    - Dst: Self::with_context
      Src: /src/opendal/core/core/src/types/operator/operator.rs:1485,1
    - Dst: validate_path
      Src: /src/opendal/core/core/src/types/operator/operator.rs:1492,1
    - Dst: Err
      Src: /src/opendal/core/core/src/types/operator/operator.rs:1493,1
    - Dst: Error::new
      Src: /src/opendal/core/core/src/types/operator/operator.rs:1494,1
    - Dst: Self::with_operation
      Src: /src/opendal/core/core/src/types/operator/operator.rs:1494,1
    - Dst: Self::with_context
      Src: /src/opendal/core/core/src/types/operator/operator.rs:1494,1
    - Dst: Servicer::info
      Src: /src/opendal/core/core/src/types/operator/operator.rs:1496,1
    - Dst: ServiceInfo::scheme
      Src: /src/opendal/core/core/src/types/operator/operator.rs:1496,1
    - Dst: Self::with_context
      Src: /src/opendal/core/core/src/types/operator/operator.rs:1494,1
    - Dst: Err
      Src: /src/opendal/core/core/src/types/operator/operator.rs:1502,1
    - Dst: Error::new
      Src: /src/opendal/core/core/src/types/operator/operator.rs:1503,1
    - Dst: Self::with_operation
      Src: /src/opendal/core/core/src/types/operator/operator.rs:1503,1
    - Dst: Self::with_context
      Src: /src/opendal/core/core/src/types/operator/operator.rs:1503,1
    - Dst: Servicer::info
      Src: /src/opendal/core/core/src/types/operator/operator.rs:1505,1
    - Dst: ServiceInfo::scheme
      Src: /src/opendal/core/core/src/types/operator/operator.rs:1505,1
    - Dst: Self::with_context
      Src: /src/opendal/core/core/src/types/operator/operator.rs:1503,1
    - Dst: Self::with_context
      Src: /src/opendal/core/core/src/types/operator/operator.rs:1503,1
    - Dst: Servicer::rename
      Src: /src/opendal/core/core/src/types/operator/operator.rs:1511,1
    - Dst: object_store::Result::into
      Src: /src/opendal/core/core/src/types/operator/operator.rs:1511,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/types/operator/operator.rs:1513,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 69
    argCount: 4
    argNames:
    - ctx
    - srv
    - from
    argTypes:
    - OperationContext
    - Servicer
    - String
    - (options::RenameOptions, String)
    constantsTouched: []
    func_position:
      end: 1514
      start: 1477
    functionDepth: 36
    functionLinenumber: 1477
    functionLinenumberEnd: 1514
    functionName: Operator::rename_inner
    functionSourceFile: /src/opendal/core/core/src/types/operator/operator.rs
    functionUses: 0
    functionsReached:
    - Ok
    - Servicer::info
    - object_store::Result::into
    - Error::new
    - Err
    - validate_path
    - Self::with_operation
    - ServiceInfo::scheme
    - Self::with_context
    - Servicer::rename
    linkageType: ''
    returnType: Result
    signature: 'async fn rename_inner(ctx: OperationContext,srv: Servicer,from: String,(opts,
      to): (options::RenameOptions, String),) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: normalize_path
      Src: /src/opendal/core/core/src/types/operator/operator.rs:1561,1
    - Dst: OperatorFuture::new
      Src: /src/opendal/core/core/src/types/operator/operator.rs:1563,1
    - Dst: Operator::context
      Src: /src/opendal/core/core/src/types/operator/operator.rs:1564,1
    - Dst: '&OperationContext::clone'
      Src: /src/opendal/core/core/src/types/operator/operator.rs:1564,1
    - Dst: Operator::service
      Src: /src/opendal/core/core/src/types/operator/operator.rs:1565,1
    - Dst: '&Servicer::clone'
      Src: /src/opendal/core/core/src/types/operator/operator.rs:1565,1
    - Dst: options::DeleteOptions::default
      Src: /src/opendal/core/core/src/types/operator/operator.rs:1567,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 1
    argNames:
    - path
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 1570
      start: 1560
    functionDepth: 34
    functionLinenumber: 1560
    functionLinenumberEnd: 1570
    functionName: Operator::delete_with
    functionSourceFile: /src/opendal/core/core/src/types/operator/operator.rs
    functionUses: 0
    functionsReached:
    - Operator::context
    - normalize_path
    - OperatorFuture::new
    - '&OperationContext::clone'
    - '&Servicer::clone'
    - options::DeleteOptions::default
    - Operator::service
    linkageType: ''
    returnType: FutureDelete
    signature: 'pub fn delete_with(&self, path: &str) -> FutureDelete<impl Future<Output
      = Result<()>>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Servicer::delete
      Src: /src/opendal/core/core/src/types/operator/operator.rs:1607,1
    - Dst: object_store::Result::into
      Src: /src/opendal/core/core/src/types/operator/operator.rs:1608,1
    - Dst: Result::delete_dyn
      Src: /src/opendal/core/core/src/types/operator/operator.rs:1609,1
    - Dst: Result::close_dyn
      Src: /src/opendal/core/core/src/types/operator/operator.rs:1610,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/types/operator/operator.rs:1611,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 19
    argCount: 4
    argNames:
    - ctx
    - srv
    - path
    - opts
    argTypes:
    - OperationContext
    - Servicer
    - String
    - options::DeleteOptions
    constantsTouched: []
    func_position:
      end: 1612
      start: 1601
    functionDepth: 32
    functionLinenumber: 1601
    functionLinenumberEnd: 1612
    functionName: Operator::delete_inner
    functionSourceFile: /src/opendal/core/core/src/types/operator/operator.rs
    functionUses: 0
    functionsReached:
    - Ok
    - object_store::Result::into
    - Result::delete_dyn
    - Result::close_dyn
    - Servicer::delete
    linkageType: ''
    returnType: Result
    signature: 'async fn delete_inner(ctx: OperationContext,srv: Servicer,path: String,opts:
      options::DeleteOptions,) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Operator::deleter
      Src: /src/opendal/core/core/src/types/operator/operator.rs:1662,1
    - Dst: Result::delete_stream
      Src: /src/opendal/core/core/src/types/operator/operator.rs:1663,1
    - Dst: Result::close
      Src: /src/opendal/core/core/src/types/operator/operator.rs:1664,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/types/operator/operator.rs:1665,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 16
    argCount: 1
    argNames:
    - stream
    argTypes:
    - S
    constantsTouched: []
    func_position:
      end: 1666
      start: 1657
    functionDepth: 34
    functionLinenumber: 1657
    functionLinenumberEnd: 1666
    functionName: Operator::delete_stream
    functionSourceFile: /src/opendal/core/core/src/types/operator/operator.rs
    functionUses: 0
    functionsReached:
    - Result::close
    - Result::delete_stream
    - Ok
    - Operator::deleter
    linkageType: ''
    returnType: Result
    signature: 'pub async fn delete_stream<S, D>(&self, stream: S) -> Result<()>whereS:
      Stream<Item = D>,D: IntoDeleteInput,'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Operator::deleter
      Src: /src/opendal/core/core/src/types/operator/operator.rs:1680,1
    - Dst: Result::delete_try_stream
      Src: /src/opendal/core/core/src/types/operator/operator.rs:1681,1
    - Dst: Result::close
      Src: /src/opendal/core/core/src/types/operator/operator.rs:1682,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/types/operator/operator.rs:1683,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 16
    argCount: 1
    argNames:
    - try_stream
    argTypes:
    - S
    constantsTouched: []
    func_position:
      end: 1684
      start: 1675
    functionDepth: 34
    functionLinenumber: 1675
    functionLinenumberEnd: 1684
    functionName: Operator::delete_try_stream
    functionSourceFile: /src/opendal/core/core/src/types/operator/operator.rs
    functionUses: 0
    functionsReached:
    - Result::close
    - Result::delete_try_stream
    - Ok
    - Operator::deleter
    linkageType: ''
    returnType: Result
    signature: 'pub async fn delete_try_stream<S, D>(&self, try_stream: S) -> Result<()>whereS:
      Stream<Item = Result<D>>,D: IntoDeleteInput,'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: normalize_path
      Src: /src/opendal/core/core/src/types/operator/operator.rs:1827,1
    - Dst: OperatorFuture::new
      Src: /src/opendal/core/core/src/types/operator/operator.rs:1829,1
    - Dst: Operator::context
      Src: /src/opendal/core/core/src/types/operator/operator.rs:1830,1
    - Dst: '&OperationContext::clone'
      Src: /src/opendal/core/core/src/types/operator/operator.rs:1830,1
    - Dst: Operator::service
      Src: /src/opendal/core/core/src/types/operator/operator.rs:1831,1
    - Dst: '&Servicer::clone'
      Src: /src/opendal/core/core/src/types/operator/operator.rs:1831,1
    - Dst: options::ListOptions::default
      Src: /src/opendal/core/core/src/types/operator/operator.rs:1833,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 1
    argNames:
    - path
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 1836
      start: 1826
    functionDepth: 34
    functionLinenumber: 1826
    functionLinenumberEnd: 1836
    functionName: Operator::list_with
    functionSourceFile: /src/opendal/core/core/src/types/operator/operator.rs
    functionUses: 0
    functionsReached:
    - Operator::context
    - normalize_path
    - options::ListOptions::default
    - OperatorFuture::new
    - '&OperationContext::clone'
    - '&Servicer::clone'
    - Operator::service
    linkageType: ''
    returnType: FutureList
    signature: 'pub fn list_with(&self, path: &str) -> FutureList<impl Future<Output
      = Result<Vec<Entry>>>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: object_store::Result::into
      Src: /src/opendal/core/core/src/types/operator/operator.rs:1894,1
    - Dst: Lister::create
      Src: /src/opendal/core/core/src/types/operator/operator.rs:1895,1
    - Dst: Result::try_collect
      Src: /src/opendal/core/core/src/types/operator/operator.rs:1896,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 4
    argNames:
    - ctx
    - srv
    - path
    - opts
    argTypes:
    - OperationContext
    - Servicer
    - String
    - options::ListOptions
    constantsTouched: []
    func_position:
      end: 1897
      start: 1888
    functionDepth: 3
    functionLinenumber: 1888
    functionLinenumberEnd: 1897
    functionName: Operator::list_inner
    functionSourceFile: /src/opendal/core/core/src/types/operator/operator.rs
    functionUses: 0
    functionsReached:
    - Result::try_collect
    - object_store::Result::into
    - Lister::create
    linkageType: ''
    returnType: Result
    signature: 'async fn list_inner(ctx: OperationContext,srv: Servicer,path: String,opts:
      options::ListOptions,) -> Result<Vec<Entry>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: normalize_path
      Src: /src/opendal/core/core/src/types/operator/operator.rs:1969,1
    - Dst: OperatorFuture::new
      Src: /src/opendal/core/core/src/types/operator/operator.rs:1971,1
    - Dst: Operator::context
      Src: /src/opendal/core/core/src/types/operator/operator.rs:1972,1
    - Dst: '&OperationContext::clone'
      Src: /src/opendal/core/core/src/types/operator/operator.rs:1972,1
    - Dst: Operator::service
      Src: /src/opendal/core/core/src/types/operator/operator.rs:1973,1
    - Dst: '&Servicer::clone'
      Src: /src/opendal/core/core/src/types/operator/operator.rs:1973,1
    - Dst: options::ListOptions::default
      Src: /src/opendal/core/core/src/types/operator/operator.rs:1975,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 1
    argNames:
    - path
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 1978
      start: 1968
    functionDepth: 34
    functionLinenumber: 1968
    functionLinenumberEnd: 1978
    functionName: Operator::lister_with
    functionSourceFile: /src/opendal/core/core/src/types/operator/operator.rs
    functionUses: 0
    functionsReached:
    - Operator::context
    - normalize_path
    - options::ListOptions::default
    - OperatorFuture::new
    - '&OperationContext::clone'
    - '&Servicer::clone'
    - Operator::service
    linkageType: ''
    returnType: FutureLister
    signature: 'pub fn lister_with(&self, path: &str) -> FutureLister<impl Future<Output
      = Result<Lister>>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: object_store::Result::into
      Src: /src/opendal/core/core/src/types/operator/operator.rs:2033,1
    - Dst: std::future::ready
      Src: /src/opendal/core/core/src/types/operator/operator.rs:2034,1
    - Dst: Lister::create
      Src: /src/opendal/core/core/src/types/operator/operator.rs:2034,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 4
    argNames:
    - ctx
    - srv
    - path
    - opts
    argTypes:
    - OperationContext
    - Servicer
    - String
    - options::ListOptions
    constantsTouched: []
    func_position:
      end: 2035
      start: 2027
    functionDepth: 3
    functionLinenumber: 2027
    functionLinenumberEnd: 2035
    functionName: Operator::lister_inner
    functionSourceFile: /src/opendal/core/core/src/types/operator/operator.rs
    functionUses: 0
    functionsReached:
    - object_store::Result::into
    - Lister::create
    - std::future::ready
    linkageType: ''
    returnType: Result
    signature: 'async fn lister_inner(ctx: OperationContext,srv: Servicer,path: String,opts:
      options::ListOptions,) -> Result<Lister>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: normalize_path
      Src: /src/opendal/core/core/src/types/operator/operator.rs:2084,1
    - Dst: OperatorFuture::new
      Src: /src/opendal/core/core/src/types/operator/operator.rs:2086,1
    - Dst: Operator::context
      Src: /src/opendal/core/core/src/types/operator/operator.rs:2087,1
    - Dst: '&OperationContext::clone'
      Src: /src/opendal/core/core/src/types/operator/operator.rs:2087,1
    - Dst: Operator::service
      Src: /src/opendal/core/core/src/types/operator/operator.rs:2088,1
    - Dst: '&Servicer::clone'
      Src: /src/opendal/core/core/src/types/operator/operator.rs:2088,1
    - Dst: options::StatOptions::default
      Src: /src/opendal/core/core/src/types/operator/operator.rs:2090,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 2
    argNames:
    - path
    - expire
    argTypes:
    - '&str'
    - Duration
    constantsTouched: []
    func_position:
      end: 2093
      start: 2079
    functionDepth: 34
    functionLinenumber: 2079
    functionLinenumberEnd: 2093
    functionName: Operator::presign_stat_with
    functionSourceFile: /src/opendal/core/core/src/types/operator/operator.rs
    functionUses: 0
    functionsReached:
    - Operator::context
    - normalize_path
    - options::StatOptions::default
    - OperatorFuture::new
    - '&OperationContext::clone'
    - '&Servicer::clone'
    - Operator::service
    linkageType: ''
    returnType: FuturePresignStat
    signature: 'pub fn presign_stat_with(&self,path: &str,expire: Duration,) -> FuturePresignStat<impl
      Future<Output = Result<PresignedRequest>>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: OpPresign::new
      Src: /src/opendal/core/core/src/types/operator/operator.rs:2149,1
    - Dst: OpStat::from
      Src: /src/opendal/core/core/src/types/operator/operator.rs:2149,1
    - Dst: Servicer::presign
      Src: /src/opendal/core/core/src/types/operator/operator.rs:2150,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/types/operator/operator.rs:2151,1
    - Dst: RpRead::into_presigned_request
      Src: /src/opendal/core/core/src/types/operator/operator.rs:2151,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 4
    argNames:
    - ctx
    - srv
    - path
    argTypes:
    - OperationContext
    - Servicer
    - String
    - (options::StatOptions, Duration)
    constantsTouched: []
    func_position:
      end: 2152
      start: 2143
    functionDepth: 30
    functionLinenumber: 2143
    functionLinenumberEnd: 2152
    functionName: Operator::presign_stat_inner
    functionSourceFile: /src/opendal/core/core/src/types/operator/operator.rs
    functionUses: 0
    functionsReached:
    - OpStat::from
    - Ok
    - OpPresign::new
    - RpRead::into_presigned_request
    - Servicer::presign
    linkageType: ''
    returnType: Result
    signature: 'async fn presign_stat_inner(ctx: OperationContext,srv: Servicer,path:
      String,(opts, expire): (options::StatOptions, Duration),) -> Result<PresignedRequest>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: normalize_path
      Src: /src/opendal/core/core/src/types/operator/operator.rs:2219,1
    - Dst: OperatorFuture::new
      Src: /src/opendal/core/core/src/types/operator/operator.rs:2221,1
    - Dst: Operator::context
      Src: /src/opendal/core/core/src/types/operator/operator.rs:2222,1
    - Dst: '&OperationContext::clone'
      Src: /src/opendal/core/core/src/types/operator/operator.rs:2222,1
    - Dst: Operator::service
      Src: /src/opendal/core/core/src/types/operator/operator.rs:2223,1
    - Dst: '&Servicer::clone'
      Src: /src/opendal/core/core/src/types/operator/operator.rs:2223,1
    - Dst: options::ReadOptions::default
      Src: /src/opendal/core/core/src/types/operator/operator.rs:2225,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 2
    argNames:
    - path
    - expire
    argTypes:
    - '&str'
    - Duration
    constantsTouched: []
    func_position:
      end: 2228
      start: 2214
    functionDepth: 34
    functionLinenumber: 2214
    functionLinenumberEnd: 2228
    functionName: Operator::presign_read_with
    functionSourceFile: /src/opendal/core/core/src/types/operator/operator.rs
    functionUses: 0
    functionsReached:
    - Operator::context
    - normalize_path
    - OperatorFuture::new
    - options::ReadOptions::default
    - '&OperationContext::clone'
    - '&Servicer::clone'
    - Operator::service
    linkageType: ''
    returnType: FuturePresignRead
    signature: 'pub fn presign_read_with(&self,path: &str,expire: Duration,) -> FuturePresignRead<impl
      Future<Output = Result<PresignedRequest>>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: object_store::Result::into
      Src: /src/opendal/core/core/src/types/operator/operator.rs:2284,1
    - Dst: OpPresign::new
      Src: /src/opendal/core/core/src/types/operator/operator.rs:2285,1
    - Dst: PresignOperation::Read
      Src: /src/opendal/core/core/src/types/operator/operator.rs:2285,1
    - Dst: Servicer::presign
      Src: /src/opendal/core/core/src/types/operator/operator.rs:2286,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/types/operator/operator.rs:2287,1
    - Dst: RpRead::into_presigned_request
      Src: /src/opendal/core/core/src/types/operator/operator.rs:2287,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 4
    argNames:
    - ctx
    - srv
    - path
    argTypes:
    - OperationContext
    - Servicer
    - String
    - (options::ReadOptions, Duration)
    constantsTouched: []
    func_position:
      end: 2288
      start: 2278
    functionDepth: 30
    functionLinenumber: 2278
    functionLinenumberEnd: 2288
    functionName: Operator::presign_read_inner
    functionSourceFile: /src/opendal/core/core/src/types/operator/operator.rs
    functionUses: 0
    functionsReached:
    - Ok
    - object_store::Result::into
    - PresignOperation::Read
    - OpPresign::new
    - RpRead::into_presigned_request
    - Servicer::presign
    linkageType: ''
    returnType: Result
    signature: 'async fn presign_read_inner(ctx: OperationContext,srv: Servicer,path:
      String,(opts, expire): (options::ReadOptions, Duration),) -> Result<PresignedRequest>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: normalize_path
      Src: /src/opendal/core/core/src/types/operator/operator.rs:2361,1
    - Dst: OperatorFuture::new
      Src: /src/opendal/core/core/src/types/operator/operator.rs:2363,1
    - Dst: Operator::context
      Src: /src/opendal/core/core/src/types/operator/operator.rs:2364,1
    - Dst: '&OperationContext::clone'
      Src: /src/opendal/core/core/src/types/operator/operator.rs:2364,1
    - Dst: Operator::service
      Src: /src/opendal/core/core/src/types/operator/operator.rs:2365,1
    - Dst: '&Servicer::clone'
      Src: /src/opendal/core/core/src/types/operator/operator.rs:2365,1
    - Dst: options::WriteOptions::default
      Src: /src/opendal/core/core/src/types/operator/operator.rs:2367,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 2
    argNames:
    - path
    - expire
    argTypes:
    - '&str'
    - Duration
    constantsTouched: []
    func_position:
      end: 2370
      start: 2356
    functionDepth: 34
    functionLinenumber: 2356
    functionLinenumberEnd: 2370
    functionName: Operator::presign_write_with
    functionSourceFile: /src/opendal/core/core/src/types/operator/operator.rs
    functionUses: 0
    functionsReached:
    - Operator::context
    - normalize_path
    - OperatorFuture::new
    - '&OperationContext::clone'
    - '&Servicer::clone'
    - options::WriteOptions::default
    - Operator::service
    linkageType: ''
    returnType: FuturePresignWrite
    signature: 'pub fn presign_write_with(&self,path: &str,expire: Duration,) -> FuturePresignWrite<impl
      Future<Output = Result<PresignedRequest>>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: object_store::Result::into
      Src: /src/opendal/core/core/src/types/operator/operator.rs:2428,1
    - Dst: OpPresign::new
      Src: /src/opendal/core/core/src/types/operator/operator.rs:2429,1
    - Dst: Servicer::presign
      Src: /src/opendal/core/core/src/types/operator/operator.rs:2430,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/types/operator/operator.rs:2431,1
    - Dst: RpRead::into_presigned_request
      Src: /src/opendal/core/core/src/types/operator/operator.rs:2431,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 4
    argNames:
    - ctx
    - srv
    - path
    argTypes:
    - OperationContext
    - Servicer
    - String
    - (options::WriteOptions, Duration)
    constantsTouched: []
    func_position:
      end: 2432
      start: 2422
    functionDepth: 30
    functionLinenumber: 2422
    functionLinenumberEnd: 2432
    functionName: Operator::presign_write_inner
    functionSourceFile: /src/opendal/core/core/src/types/operator/operator.rs
    functionUses: 0
    functionsReached:
    - Ok
    - object_store::Result::into
    - OpPresign::new
    - RpRead::into_presigned_request
    - Servicer::presign
    linkageType: ''
    returnType: Result
    signature: 'async fn presign_write_inner(ctx: OperationContext,srv: Servicer,path:
      String,(opts, expire): (options::WriteOptions, Duration),) -> Result<PresignedRequest>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: normalize_path
      Src: /src/opendal/core/core/src/types/operator/operator.rs:2477,1
    - Dst: OperatorFuture::new
      Src: /src/opendal/core/core/src/types/operator/operator.rs:2479,1
    - Dst: Operator::context
      Src: /src/opendal/core/core/src/types/operator/operator.rs:2480,1
    - Dst: '&OperationContext::clone'
      Src: /src/opendal/core/core/src/types/operator/operator.rs:2480,1
    - Dst: Operator::service
      Src: /src/opendal/core/core/src/types/operator/operator.rs:2481,1
    - Dst: '&Servicer::clone'
      Src: /src/opendal/core/core/src/types/operator/operator.rs:2481,1
    - Dst: options::DeleteOptions::default
      Src: /src/opendal/core/core/src/types/operator/operator.rs:2483,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 2
    argNames:
    - path
    - expire
    argTypes:
    - '&str'
    - Duration
    constantsTouched: []
    func_position:
      end: 2486
      start: 2472
    functionDepth: 34
    functionLinenumber: 2472
    functionLinenumberEnd: 2486
    functionName: Operator::presign_delete_with
    functionSourceFile: /src/opendal/core/core/src/types/operator/operator.rs
    functionUses: 0
    functionsReached:
    - Operator::context
    - normalize_path
    - OperatorFuture::new
    - '&OperationContext::clone'
    - '&Servicer::clone'
    - options::DeleteOptions::default
    - Operator::service
    linkageType: ''
    returnType: FuturePresignDelete
    signature: 'pub fn presign_delete_with(&self,path: &str,expire: Duration,) ->
      FuturePresignDelete<impl Future<Output = Result<PresignedRequest>>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: OpPresign::new
      Src: /src/opendal/core/core/src/types/operator/operator.rs:2541,1
    - Dst: OpDelete::from
      Src: /src/opendal/core/core/src/types/operator/operator.rs:2541,1
    - Dst: Servicer::presign
      Src: /src/opendal/core/core/src/types/operator/operator.rs:2542,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/types/operator/operator.rs:2543,1
    - Dst: RpRead::into_presigned_request
      Src: /src/opendal/core/core/src/types/operator/operator.rs:2543,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 4
    argNames:
    - ctx
    - srv
    - path
    argTypes:
    - OperationContext
    - Servicer
    - String
    - (options::DeleteOptions, Duration)
    constantsTouched: []
    func_position:
      end: 2544
      start: 2535
    functionDepth: 30
    functionLinenumber: 2535
    functionLinenumberEnd: 2544
    functionName: Operator::presign_delete_inner
    functionSourceFile: /src/opendal/core/core/src/types/operator/operator.rs
    functionUses: 0
    functionsReached:
    - OpDelete::from
    - Ok
    - OpPresign::new
    - RpRead::into_presigned_request
    - Servicer::presign
    linkageType: ''
    returnType: Result
    signature: 'async fn presign_delete_inner(ctx: OperationContext,srv: Servicer,path:
      String,(opts, expire): (options::DeleteOptions, Duration),) -> Result<PresignedRequest>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: into_iter
      Src: /src/opendal/core/core/src/types/operator/uri.rs:44,1
    - Dst: map
      Src: /src/opendal/core/core/src/types/operator/uri.rs:44,1
    - Dst: Result::to_ascii_lowercase
      Src: /src/opendal/core/core/src/types/operator/uri.rs:46,1
    - Dst: "into_iter()\n            .map(|(k, v)| (k.to_ascii_lowercase(), v))\n\
        \            .collect::<Vec<_>>"
      Src: /src/opendal/core/core/src/types/operator/uri.rs:44,1
    - Dst: HashMap::<String, String>::new
      Src: /src/opendal/core/core/src/types/operator/uri.rs:49,1
    - Dst: Self::contains
      Src: /src/opendal/core/core/src/types/operator/uri.rs:52,1
    - Dst: Result::insert
      Src: /src/opendal/core/core/src/types/operator/uri.rs:54,1
    - Dst: FoyerKey::clone
      Src: /src/opendal/core/core/src/types/operator/uri.rs:54,1
    - Dst: Vec::clone
      Src: /src/opendal/core/core/src/types/operator/uri.rs:54,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/types/operator/uri.rs:56,1
    - Dst: Self::to_ascii_lowercase
      Src: /src/opendal/core/core/src/types/operator/uri.rs:57,1
    - Dst: Url::parse
      Src: /src/opendal/core/core/src/types/operator/uri.rs:67,1
    - Dst: Result::map_err
      Src: /src/opendal/core/core/src/types/operator/uri.rs:67,1
    - Dst: Error::new
      Src: /src/opendal/core/core/src/types/operator/uri.rs:68,1
    - Dst: Self::set_source
      Src: /src/opendal/core/core/src/types/operator/uri.rs:68,1
    - Dst: Result::scheme
      Src: /src/opendal/core/core/src/types/operator/uri.rs:71,1
    - Dst: to_ascii_lowercase
      Src: /src/opendal/core/core/src/types/operator/uri.rs:71,1
    - Dst: Result::query_pairs
      Src: /src/opendal/core/core/src/types/operator/uri.rs:73,1
    - Dst: Result::insert
      Src: /src/opendal/core/core/src/types/operator/uri.rs:74,1
    - Dst: FoyerKey::to_ascii_lowercase
      Src: /src/opendal/core/core/src/types/operator/uri.rs:74,1
    - Dst: Vec::into_owned
      Src: /src/opendal/core/core/src/types/operator/uri.rs:74,1
    - Dst: Result::insert
      Src: /src/opendal/core/core/src/types/operator/uri.rs:78,1
    - Dst: Result::username
      Src: /src/opendal/core/core/src/types/operator/uri.rs:81,1
    - Dst: Option::is_empty
      Src: /src/opendal/core/core/src/types/operator/uri.rs:81,1
    - Dst: Some
      Src: /src/opendal/core/core/src/types/operator/uri.rs:84,1
    - Dst: Result::username
      Src: /src/opendal/core/core/src/types/operator/uri.rs:84,1
    - Dst: Option::to_string
      Src: /src/opendal/core/core/src/types/operator/uri.rs:84,1
    - Dst: Result::password
      Src: /src/opendal/core/core/src/types/operator/uri.rs:87,1
    - Dst: Option::map
      Src: /src/opendal/core/core/src/types/operator/uri.rs:87,1
    - Dst: to_string
      Src: /src/opendal/core/core/src/types/operator/uri.rs:87,1
    - Dst: Result::host_str
      Src: /src/opendal/core/core/src/types/operator/uri.rs:89,1
    - Dst: filter
      Src: /src/opendal/core/core/src/types/operator/uri.rs:89,1
    - Dst: Self::is_empty
      Src: /src/opendal/core/core/src/types/operator/uri.rs:89,1
    - Dst: map
      Src: /src/opendal/core/core/src/types/operator/uri.rs:89,1
    - Dst: Result::port
      Src: /src/opendal/core/core/src/types/operator/uri.rs:90,1
    - Dst: Self::to_string
      Src: /src/opendal/core/core/src/types/operator/uri.rs:93,1
    - Dst: Result::host_str
      Src: /src/opendal/core/core/src/types/operator/uri.rs:97,1
    - Dst: filter
      Src: /src/opendal/core/core/src/types/operator/uri.rs:97,1
    - Dst: Self::is_empty
      Src: /src/opendal/core/core/src/types/operator/uri.rs:99,1
    - Dst: map
      Src: /src/opendal/core/core/src/types/operator/uri.rs:97,1
    - Dst: Self::to_string
      Src: /src/opendal/core/core/src/types/operator/uri.rs:100,1
    - Dst: percent_encoding::percent_decode_str
      Src: /src/opendal/core/core/src/types/operator/uri.rs:102,1
    - Dst: Result::path
      Src: /src/opendal/core/core/src/types/operator/uri.rs:102,1
    - Dst: decode_utf8_lossy
      Src: /src/opendal/core/core/src/types/operator/uri.rs:102,1
    - Dst: trim_matches
      Src: /src/opendal/core/core/src/types/operator/uri.rs:103,1
    - Dst: is_empty
      Src: /src/opendal/core/core/src/types/operator/uri.rs:104,1
    - Dst: Some
      Src: /src/opendal/core/core/src/types/operator/uri.rs:107,1
    - Dst: to_string
      Src: /src/opendal/core/core/src/types/operator/uri.rs:107,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/types/operator/uri.rs:110,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 122
    argCount: 2
    argNames:
    - base
    - extra_options
    argTypes:
    - '&str'
    - impl IntoIterator<Item = (String, String)>
    constantsTouched: []
    func_position:
      end: 119
      start: 40
    functionDepth: 28
    functionLinenumber: 40
    functionLinenumberEnd: 119
    functionName: OperatorUri::new
    functionSourceFile: /src/opendal/core/core/src/types/operator/uri.rs
    functionUses: 82
    functionsReached:
    - Result::password
    - Self::to_string
    - HashMap::<String, String>::new
    - "into_iter()\n            .map(|(k, v)| (k.to_ascii_lowercase(), v))\n     \
      \       .collect::<Vec<_>>"
    - map
    - FoyerKey::clone
    - percent_encoding::percent_decode_str
    - Option::to_string
    - Result::scheme
    - Result::to_ascii_lowercase
    - Ok
    - Self::is_empty
    - Result::query_pairs
    - Self::to_ascii_lowercase
    - Option::is_empty
    - Result::map_err
    - trim_matches
    - Result::insert
    - Some
    - to_ascii_lowercase
    - Result::host_str
    - is_empty
    - Self::set_source
    - Result::username
    - Result::path
    - to_string
    - filter
    - Result::port
    - Vec::into_owned
    - Option::map
    - into_iter
    - Error::new
    - FoyerKey::to_ascii_lowercase
    - Self::contains
    - decode_utf8_lossy
    - Url::parse
    - Vec::clone
    linkageType: ''
    returnType: Result
    signature: 'pub fn new(base: &str,extra_options: impl IntoIterator<Item = (String,
      String)>,) -> Result<Self>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: as_str
      Src: /src/opendal/core/core/src/types/operator/uri.rs:123,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 124
      start: 122
    functionDepth: 1
    functionLinenumber: 122
    functionLinenumberEnd: 124
    functionName: OperatorUri::scheme
    functionSourceFile: /src/opendal/core/core/src/types/operator/uri.rs
    functionUses: 0
    functionsReached:
    - as_str
    linkageType: ''
    returnType: '&str'
    signature: pub fn scheme(&self) -> &str
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: as_deref
      Src: /src/opendal/core/core/src/types/operator/uri.rs:128,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 129
      start: 127
    functionDepth: 0
    functionLinenumber: 127
    functionLinenumberEnd: 129
    functionName: OperatorUri::name
    functionSourceFile: /src/opendal/core/core/src/types/operator/uri.rs
    functionUses: 0
    functionsReached:
    - as_deref
    linkageType: ''
    returnType: Option
    signature: pub fn name(&self) -> Option<&str>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: as_deref
      Src: /src/opendal/core/core/src/types/operator/uri.rs:133,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 134
      start: 132
    functionDepth: 0
    functionLinenumber: 132
    functionLinenumberEnd: 134
    functionName: OperatorUri::authority
    functionSourceFile: /src/opendal/core/core/src/types/operator/uri.rs
    functionUses: 0
    functionsReached:
    - as_deref
    linkageType: ''
    returnType: Option
    signature: pub fn authority(&self) -> Option<&str>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: as_deref
      Src: /src/opendal/core/core/src/types/operator/uri.rs:138,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 139
      start: 137
    functionDepth: 0
    functionLinenumber: 137
    functionLinenumberEnd: 139
    functionName: OperatorUri::username
    functionSourceFile: /src/opendal/core/core/src/types/operator/uri.rs
    functionUses: 0
    functionsReached:
    - as_deref
    linkageType: ''
    returnType: Option
    signature: pub fn username(&self) -> Option<&str>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: as_deref
      Src: /src/opendal/core/core/src/types/operator/uri.rs:143,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 144
      start: 142
    functionDepth: 0
    functionLinenumber: 142
    functionLinenumberEnd: 144
    functionName: OperatorUri::password
    functionSourceFile: /src/opendal/core/core/src/types/operator/uri.rs
    functionUses: 0
    functionsReached:
    - as_deref
    linkageType: ''
    returnType: Option
    signature: pub fn password(&self) -> Option<&str>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: as_deref
      Src: /src/opendal/core/core/src/types/operator/uri.rs:148,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 149
      start: 147
    functionDepth: 0
    functionLinenumber: 147
    functionLinenumberEnd: 149
    functionName: OperatorUri::root
    functionSourceFile: /src/opendal/core/core/src/types/operator/uri.rs
    functionUses: 0
    functionsReached:
    - as_deref
    linkageType: ''
    returnType: Option
    signature: pub fn root(&self) -> Option<&str>
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 154
      start: 152
    functionDepth: 0
    functionLinenumber: 152
    functionLinenumberEnd: 154
    functionName: OperatorUri::options
    functionSourceFile: /src/opendal/core/core/src/types/operator/uri.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: '&HashMap'
    signature: pub fn options(&self) -> &HashMap<String, String>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: get
      Src: /src/opendal/core/core/src/types/operator/uri.rs:158,1
    - Dst: FoyerKey::to_ascii_lowercase
      Src: /src/opendal/core/core/src/types/operator/uri.rs:159,1
    - Dst: map
      Src: /src/opendal/core/core/src/types/operator/uri.rs:158,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - key
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 161
      start: 157
    functionDepth: 2
    functionLinenumber: 157
    functionLinenumberEnd: 161
    functionName: OperatorUri::option
    functionSourceFile: /src/opendal/core/core/src/types/operator/uri.rs
    functionUses: 0
    functionsReached:
    - map
    - get
    - FoyerKey::to_ascii_lowercase
    linkageType: ''
    returnType: Option
    signature: 'pub fn option(&self, key: &str) -> Option<&str>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/core/core/src/types/operator/uri.rs:172,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 173
      start: 171
    functionDepth: 0
    functionLinenumber: 171
    functionLinenumberEnd: 173
    functionName: OperatorUri::into_operator_uri
    functionSourceFile: /src/opendal/core/core/src/types/operator/uri.rs
    functionUses: 0
    functionsReached:
    - Ok
    linkageType: ''
    returnType: Result
    signature: fn into_operator_uri(self) -> Result<OperatorUri>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/core/core/src/types/operator/uri.rs:178,1
    - Dst: '&OperatorUri::clone'
      Src: /src/opendal/core/core/src/types/operator/uri.rs:178,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 179
      start: 177
    functionDepth: 2
    functionLinenumber: 177
    functionLinenumberEnd: 179
    functionName: '&OperatorUri::into_operator_uri'
    functionSourceFile: /src/opendal/core/core/src/types/operator/uri.rs
    functionUses: 0
    functionsReached:
    - '&OperatorUri::clone'
    - Ok
    linkageType: ''
    returnType: Result
    signature: fn into_operator_uri(self) -> Result<OperatorUri>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Uri::to_string
      Src: /src/opendal/core/core/src/types/operator/uri.rs:184,1
    - Dst: OperatorUri::new
      Src: /src/opendal/core/core/src/types/operator/uri.rs:185,1
    - Dst: Vec::<(String, String)>::new
      Src: /src/opendal/core/core/src/types/operator/uri.rs:185,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 186
      start: 183
    functionDepth: 29
    functionLinenumber: 183
    functionLinenumberEnd: 186
    functionName: Uri::into_operator_uri
    functionSourceFile: /src/opendal/core/core/src/types/operator/uri.rs
    functionUses: 0
    functionsReached:
    - Uri::to_string
    - Vec::<(String, String)>::new
    - OperatorUri::new
    linkageType: ''
    returnType: Result
    signature: fn into_operator_uri(self) -> Result<OperatorUri>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: '&Uri::to_string'
      Src: /src/opendal/core/core/src/types/operator/uri.rs:191,1
    - Dst: OperatorUri::new
      Src: /src/opendal/core/core/src/types/operator/uri.rs:192,1
    - Dst: Vec::<(String, String)>::new
      Src: /src/opendal/core/core/src/types/operator/uri.rs:192,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 193
      start: 190
    functionDepth: 29
    functionLinenumber: 190
    functionLinenumberEnd: 193
    functionName: '&Uri::into_operator_uri'
    functionSourceFile: /src/opendal/core/core/src/types/operator/uri.rs
    functionUses: 0
    functionsReached:
    - Vec::<(String, String)>::new
    - OperatorUri::new
    - '&Uri::to_string'
    linkageType: ''
    returnType: Result
    signature: fn into_operator_uri(self) -> Result<OperatorUri>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: OperatorUri::new
      Src: /src/opendal/core/core/src/types/operator/uri.rs:198,1
    - Dst: Vec::<(String, String)>::new
      Src: /src/opendal/core/core/src/types/operator/uri.rs:198,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 199
      start: 197
    functionDepth: 29
    functionLinenumber: 197
    functionLinenumberEnd: 199
    functionName: '&str::into_operator_uri'
    functionSourceFile: /src/opendal/core/core/src/types/operator/uri.rs
    functionUses: 0
    functionsReached:
    - Vec::<(String, String)>::new
    - OperatorUri::new
    linkageType: ''
    returnType: Result
    signature: fn into_operator_uri(self) -> Result<OperatorUri>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: OperatorUri::new
      Src: /src/opendal/core/core/src/types/operator/uri.rs:204,1
    - Dst: Vec::<(String, String)>::new
      Src: /src/opendal/core/core/src/types/operator/uri.rs:204,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 205
      start: 203
    functionDepth: 29
    functionLinenumber: 203
    functionLinenumberEnd: 205
    functionName: String::into_operator_uri
    functionSourceFile: /src/opendal/core/core/src/types/operator/uri.rs
    functionUses: 0
    functionsReached:
    - Vec::<(String, String)>::new
    - OperatorUri::new
    linkageType: ''
    returnType: Result
    signature: fn into_operator_uri(self) -> Result<OperatorUri>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::to_string
      Src: /src/opendal/core/core/src/types/operator/uri.rs:216,1
    - Dst: into_iter
      Src: /src/opendal/core/core/src/types/operator/uri.rs:217,1
    - Dst: map
      Src: /src/opendal/core/core/src/types/operator/uri.rs:217,1
    - Dst: Result::into
      Src: /src/opendal/core/core/src/types/operator/uri.rs:219,1
    - Dst: Result::into
      Src: /src/opendal/core/core/src/types/operator/uri.rs:219,1
    - Dst: "into_iter()\n            .map(|(k, v)| (k.into(), v.into()))\n       \
        \     .collect::<Vec<_>>"
      Src: /src/opendal/core/core/src/types/operator/uri.rs:217,1
    - Dst: OperatorUri::new
      Src: /src/opendal/core/core/src/types/operator/uri.rs:221,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 16
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 222
      start: 214
    functionDepth: 29
    functionLinenumber: 214
    functionLinenumberEnd: 222
    functionName: (Uri, O)::into_operator_uri
    functionSourceFile: /src/opendal/core/core/src/types/operator/uri.rs
    functionUses: 0
    functionsReached:
    - Result::to_string
    - OperatorUri::new
    - into_iter
    - Result::into
    - map
    - "into_iter()\n            .map(|(k, v)| (k.into(), v.into()))\n            .collect::<Vec<_>>"
    linkageType: ''
    returnType: Result
    signature: fn into_operator_uri(self) -> Result<OperatorUri>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::to_string
      Src: /src/opendal/core/core/src/types/operator/uri.rs:233,1
    - Dst: into_iter
      Src: /src/opendal/core/core/src/types/operator/uri.rs:234,1
    - Dst: map
      Src: /src/opendal/core/core/src/types/operator/uri.rs:234,1
    - Dst: Result::into
      Src: /src/opendal/core/core/src/types/operator/uri.rs:236,1
    - Dst: Result::into
      Src: /src/opendal/core/core/src/types/operator/uri.rs:236,1
    - Dst: "into_iter()\n            .map(|(k, v)| (k.into(), v.into()))\n       \
        \     .collect::<Vec<_>>"
      Src: /src/opendal/core/core/src/types/operator/uri.rs:234,1
    - Dst: OperatorUri::new
      Src: /src/opendal/core/core/src/types/operator/uri.rs:238,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 16
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 239
      start: 231
    functionDepth: 29
    functionLinenumber: 231
    functionLinenumberEnd: 239
    functionName: (&Uri, O)::into_operator_uri
    functionSourceFile: /src/opendal/core/core/src/types/operator/uri.rs
    functionUses: 0
    functionsReached:
    - Result::to_string
    - OperatorUri::new
    - into_iter
    - Result::into
    - map
    - "into_iter()\n            .map(|(k, v)| (k.into(), v.into()))\n            .collect::<Vec<_>>"
    linkageType: ''
    returnType: Result
    signature: fn into_operator_uri(self) -> Result<OperatorUri>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: into_iter
      Src: /src/opendal/core/core/src/types/operator/uri.rs:250,1
    - Dst: map
      Src: /src/opendal/core/core/src/types/operator/uri.rs:250,1
    - Dst: Result::into
      Src: /src/opendal/core/core/src/types/operator/uri.rs:252,1
    - Dst: Result::into
      Src: /src/opendal/core/core/src/types/operator/uri.rs:252,1
    - Dst: "into_iter()\n            .map(|(k, v)| (k.into(), v.into()))\n       \
        \     .collect::<Vec<_>>"
      Src: /src/opendal/core/core/src/types/operator/uri.rs:250,1
    - Dst: OperatorUri::new
      Src: /src/opendal/core/core/src/types/operator/uri.rs:254,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 255
      start: 248
    functionDepth: 29
    functionLinenumber: 248
    functionLinenumberEnd: 255
    functionName: (&str, O)::into_operator_uri
    functionSourceFile: /src/opendal/core/core/src/types/operator/uri.rs
    functionUses: 0
    functionsReached:
    - OperatorUri::new
    - into_iter
    - Result::into
    - map
    - "into_iter()\n            .map(|(k, v)| (k.into(), v.into()))\n            .collect::<Vec<_>>"
    linkageType: ''
    returnType: Result
    signature: fn into_operator_uri(self) -> Result<OperatorUri>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: into_operator_uri
      Src: /src/opendal/core/core/src/types/operator/uri.rs:266,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 267
      start: 264
    functionDepth: 1
    functionLinenumber: 264
    functionLinenumberEnd: 267
    functionName: (String, O)::into_operator_uri
    functionSourceFile: /src/opendal/core/core/src/types/operator/uri.rs
    functionUses: 0
    functionsReached:
    - into_operator_uri
    linkageType: ''
    returnType: Result
    signature: fn into_operator_uri(self) -> Result<OperatorUri>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: OperatorUri::new
      Src: /src/opendal/core/core/src/types/operator/uri.rs:277,1
    - Dst: Vec::<(String, String)>::new
      Src: /src/opendal/core/core/src/types/operator/uri.rs:279,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/core/src/types/operator/uri.rs:277,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 288
      start: 276
    functionDepth: 29
    functionLinenumber: 276
    functionLinenumberEnd: 288
    functionName: tests::parse_uri_with_name_and_root
    functionSourceFile: /src/opendal/core/core/src/types/operator/uri.rs
    functionUses: 0
    functionsReached:
    - Vec::<(String, String)>::new
    - OperatorUri::new
    - Result::unwrap
    linkageType: ''
    returnType: void
    signature: fn parse_uri_with_name_and_root()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: into_operator_uri
      Src: /src/opendal/core/core/src/types/operator/uri.rs:292,1
    - Dst: unwrap
      Src: /src/opendal/core/core/src/types/operator/uri.rs:292,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 310
      start: 291
    functionDepth: 35
    functionLinenumber: 291
    functionLinenumberEnd: 310
    functionName: tests::into_operator_uri_merges_extra_options
    functionSourceFile: /src/opendal/core/core/src/types/operator/uri.rs
    functionUses: 0
    functionsReached:
    - into_operator_uri
    - unwrap
    linkageType: ''
    returnType: void
    signature: fn into_operator_uri_merges_extra_options()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: OperatorUri::new
      Src: /src/opendal/core/core/src/types/operator/uri.rs:314,1
    - Dst: Vec::<(String, String)>::new
      Src: /src/opendal/core/core/src/types/operator/uri.rs:316,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/core/src/types/operator/uri.rs:314,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 324
      start: 313
    functionDepth: 29
    functionLinenumber: 313
    functionLinenumberEnd: 324
    functionName: tests::parse_uri_with_port_preserves_authority
    functionSourceFile: /src/opendal/core/core/src/types/operator/uri.rs
    functionUses: 0
    functionsReached:
    - Vec::<(String, String)>::new
    - OperatorUri::new
    - Result::unwrap
    linkageType: ''
    returnType: void
    signature: fn parse_uri_with_port_preserves_authority()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: OperatorUri::new
      Src: /src/opendal/core/core/src/types/operator/uri.rs:328,1
    - Dst: Vec::<(String, String)>::new
      Src: /src/opendal/core/core/src/types/operator/uri.rs:330,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/core/src/types/operator/uri.rs:328,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 339
      start: 327
    functionDepth: 29
    functionLinenumber: 327
    functionLinenumberEnd: 339
    functionName: tests::parse_uri_with_credentials_splits_authority
    functionSourceFile: /src/opendal/core/core/src/types/operator/uri.rs
    functionUses: 0
    functionsReached:
    - Vec::<(String, String)>::new
    - OperatorUri::new
    - Result::unwrap
    linkageType: ''
    returnType: void
    signature: fn parse_uri_with_credentials_splits_authority()
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 43
      start: 41
    functionDepth: 0
    functionLinenumber: 41
    functionLinenumberEnd: 43
    functionName: DeleteInput::into_delete_input
    functionSourceFile: /src/opendal/core/core/src/types/delete/input.rs
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: DeleteInput
    signature: fn into_delete_input(self) -> DeleteInput
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: '&str::to_string'
      Src: /src/opendal/core/core/src/types/delete/input.rs:50,1
    - Dst: Default::default
      Src: /src/opendal/core/core/src/types/delete/input.rs:52,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 54
      start: 48
    functionDepth: 3
    functionLinenumber: 48
    functionLinenumberEnd: 54
    functionName: '&str::into_delete_input'
    functionSourceFile: /src/opendal/core/core/src/types/delete/input.rs
    functionUses: 0
    functionsReached:
    - Default::default
    - '&str::to_string'
    linkageType: ''
    returnType: DeleteInput
    signature: fn into_delete_input(self) -> DeleteInput
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Default::default
      Src: /src/opendal/core/core/src/types/delete/input.rs:63,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 65
      start: 59
    functionDepth: 3
    functionLinenumber: 59
    functionLinenumberEnd: 65
    functionName: String::into_delete_input
    functionSourceFile: /src/opendal/core/core/src/types/delete/input.rs
    functionUses: 0
    functionsReached:
    - Default::default
    linkageType: ''
    returnType: DeleteInput
    signature: fn into_delete_input(self) -> DeleteInput
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: OpStat::recursive
      Src: /src/opendal/core/core/src/types/delete/input.rs:76,1
    - Dst: Default::default
      Src: /src/opendal/core/core/src/types/delete/input.rs:77,1
    - Dst: OpStat::version
      Src: /src/opendal/core/core/src/types/delete/input.rs:80,1
    - Dst: Some
      Src: /src/opendal/core/core/src/types/delete/input.rs:81,1
    - Dst: Result::to_string
      Src: /src/opendal/core/core/src/types/delete/input.rs:81,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 84
      start: 71
    functionDepth: 36
    functionLinenumber: 71
    functionLinenumberEnd: 84
    functionName: (String, OpDelete)::into_delete_input
    functionSourceFile: /src/opendal/core/core/src/types/delete/input.rs
    functionUses: 0
    functionsReached:
    - OpStat::version
    - Result::to_string
    - Default::default
    - Some
    - OpStat::recursive
    linkageType: ''
    returnType: DeleteInput
    signature: fn into_delete_input(self) -> DeleteInput
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Entry::into_parts
      Src: /src/opendal/core/core/src/types/delete/input.rs:90,1
    - Dst: Default::default
      Src: /src/opendal/core/core/src/types/delete/input.rs:95,1
    - Dst: Result::version
      Src: /src/opendal/core/core/src/types/delete/input.rs:98,1
    - Dst: Some
      Src: /src/opendal/core/core/src/types/delete/input.rs:99,1
    - Dst: Result::to_string
      Src: /src/opendal/core/core/src/types/delete/input.rs:99,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 102
      start: 89
    functionDepth: 32
    functionLinenumber: 89
    functionLinenumberEnd: 102
    functionName: Entry::into_delete_input
    functionSourceFile: /src/opendal/core/core/src/types/delete/input.rs
    functionUses: 0
    functionsReached:
    - Result::to_string
    - Result::version
    - Default::default
    - Some
    - Entry::into_parts
    linkageType: ''
    returnType: DeleteInput
    signature: fn into_delete_input(self) -> DeleteInput
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::next
      Src: /src/opendal/core/core/src/types/delete/deleter.rs:160,1
    - Dst: Deleter::delete
      Src: /src/opendal/core/core/src/types/delete/deleter.rs:161,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/types/delete/deleter.rs:164,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 1
    argNames:
    - stream
    argTypes:
    - S
    constantsTouched: []
    func_position:
      end: 165
      start: 154
    functionDepth: 33
    functionLinenumber: 154
    functionLinenumberEnd: 165
    functionName: Deleter::delete_stream
    functionSourceFile: /src/opendal/core/core/src/types/delete/deleter.rs
    functionUses: 0
    functionsReached:
    - Result::next
    - Deleter::delete
    - Ok
    linkageType: ''
    returnType: Result
    signature: 'pub async fn delete_stream<S, D>(&mut self, stream: S) -> Result<()>whereS:
      Stream<Item = D>,D: IntoDeleteInput,'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::next
      Src: /src/opendal/core/core/src/types/delete/deleter.rs:180,1
    - Dst: transpose
      Src: /src/opendal/core/core/src/types/delete/deleter.rs:180,1
    - Dst: Deleter::delete
      Src: /src/opendal/core/core/src/types/delete/deleter.rs:181,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/types/delete/deleter.rs:184,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 1
    argNames:
    - try_stream
    argTypes:
    - S
    constantsTouched: []
    func_position:
      end: 185
      start: 174
    functionDepth: 33
    functionLinenumber: 174
    functionLinenumberEnd: 185
    functionName: Deleter::delete_try_stream
    functionSourceFile: /src/opendal/core/core/src/types/delete/deleter.rs
    functionUses: 0
    functionsReached:
    - Result::next
    - Deleter::delete
    - transpose
    - Ok
    linkageType: ''
    returnType: Result
    signature: 'pub async fn delete_try_stream<S, D>(&mut self, try_stream: S) ->
      Result<()>whereS: Stream<Item = Result<D>>,D: IntoDeleteInput,'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: FuturesDeleteSink::new
      Src: /src/opendal/core/core/src/types/delete/deleter.rs:194,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 195
      start: 193
    functionDepth: 1
    functionLinenumber: 193
    functionLinenumberEnd: 195
    functionName: Deleter::into_sink
    functionSourceFile: /src/opendal/core/core/src/types/delete/deleter.rs
    functionUses: 0
    functionsReached:
    - FuturesDeleteSink::new
    linkageType: ''
    returnType: FuturesDeleteSink
    signature: 'pub fn into_sink<T: IntoDeleteInput>(self) -> FuturesDeleteSink<T>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Arc::new
      Src: /src/opendal/core/core/src/types/delete/deleter.rs:229,1
    - Dst: Mutex::new
      Src: /src/opendal/core/core/src/types/delete/deleter.rs:229,1
    - Dst: Vec::<String>::new
      Src: /src/opendal/core/core/src/types/delete/deleter.rs:229,1
    - Dst: Vec::new
      Src: /src/opendal/core/core/src/types/delete/deleter.rs:232,1
    - Dst: Self::clone
      Src: /src/opendal/core/core/src/types/delete/deleter.rs:233,1
    - Dst: Box::new
      Src: /src/opendal/core/core/src/types/delete/deleter.rs:237,1
    - Dst: into_sink::<String>
      Src: /src/opendal/core/core/src/types/delete/deleter.rs:239,1
    - Dst: Result::send
      Src: /src/opendal/core/core/src/types/delete/deleter.rs:241,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/core/src/types/delete/deleter.rs:241,1
    - Dst: unwrap
      Src: /src/opendal/core/core/src/types/delete/deleter.rs:241,1
    - Dst: Result::send
      Src: /src/opendal/core/core/src/types/delete/deleter.rs:242,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/core/src/types/delete/deleter.rs:242,1
    - Dst: unwrap
      Src: /src/opendal/core/core/src/types/delete/deleter.rs:242,1
    - Dst: Result::close
      Src: /src/opendal/core/core/src/types/delete/deleter.rs:243,1
    - Dst: unwrap
      Src: /src/opendal/core/core/src/types/delete/deleter.rs:243,1
    - Dst: T::lock
      Src: /src/opendal/core/core/src/types/delete/deleter.rs:245,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/core/src/types/delete/deleter.rs:245,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 39
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 256
      start: 228
    functionDepth: 37
    functionLinenumber: 228
    functionLinenumberEnd: 256
    functionName: tests::test_sink_close_must_flush_buffered_deletes
    functionSourceFile: /src/opendal/core/core/src/types/delete/deleter.rs
    functionUses: 0
    functionsReached:
    - into_sink::<String>
    - Box::new
    - Arc::new
    - Result::send
    - unwrap
    - T::lock
    - Result::close
    - '&str::to_string'
    - Result::unwrap
    - Self::clone
    - Vec::new
    - Mutex::new
    - Vec::<String>::new
    linkageType: ''
    returnType: void
    signature: async fn test_sink_close_must_flush_buffered_deletes()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: State::Idle
      Src: /src/opendal/core/core/src/types/delete/futures_delete_sink.rs:45,1
    - Dst: Some
      Src: /src/opendal/core/core/src/types/delete/futures_delete_sink.rs:45,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - deleter
    argTypes:
    - Deleter
    constantsTouched: []
    func_position:
      end: 48
      start: 43
    functionDepth: 0
    functionLinenumber: 43
    functionLinenumberEnd: 48
    functionName: FuturesDeleteSink::new
    functionSourceFile: /src/opendal/core/core/src/types/delete/futures_delete_sink.rs
    functionUses: 1
    functionsReached:
    - State::Idle
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub(super) fn new(deleter: Deleter) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Poll::Ready
      Src: /src/opendal/core/core/src/types/delete/futures_delete_sink.rs:56,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/types/delete/futures_delete_sink.rs:56,1
    - Dst: State::Idle
      Src: /src/opendal/core/core/src/types/delete/futures_delete_sink.rs:59,1
    - Dst: Some
      Src: /src/opendal/core/core/src/types/delete/futures_delete_sink.rs:59,1
    - Dst: Poll::Ready
      Src: /src/opendal/core/core/src/types/delete/futures_delete_sink.rs:60,1
    - Dst: map
      Src: /src/opendal/core/core/src/types/delete/futures_delete_sink.rs:60,1
    - Dst: State::Idle
      Src: /src/opendal/core/core/src/types/delete/futures_delete_sink.rs:64,1
    - Dst: Some
      Src: /src/opendal/core/core/src/types/delete/futures_delete_sink.rs:64,1
    - Dst: Poll::Ready
      Src: /src/opendal/core/core/src/types/delete/futures_delete_sink.rs:65,1
    - Dst: map
      Src: /src/opendal/core/core/src/types/delete/futures_delete_sink.rs:65,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 27
    argCount: 2
    argNames:
    - cx
    argTypes:
    - Pin<&mut Self>
    - '&mut Context<''_>'
    constantsTouched: []
    func_position:
      end: 68
      start: 54
    functionDepth: 1
    functionLinenumber: 54
    functionLinenumberEnd: 68
    functionName: FuturesDeleteSink::poll_ready
    functionSourceFile: /src/opendal/core/core/src/types/delete/futures_delete_sink.rs
    functionUses: 0
    functionsReached:
    - Ok
    - Poll::Ready
    - State::Idle
    - Some
    - map
    linkageType: ''
    returnType: Poll
    signature: 'fn poll_ready(mut self: Pin<&mut Self>, cx: &mut Context<''_>) ->
      Poll<Result<()>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::take
      Src: /src/opendal/core/core/src/types/delete/futures_delete_sink.rs:73,1
    - Dst: QueueBuf::ok_or_else
      Src: /src/opendal/core/core/src/types/delete/futures_delete_sink.rs:73,1
    - Dst: Error::new
      Src: /src/opendal/core/core/src/types/delete/futures_delete_sink.rs:74,1
    - Dst: Result::into_delete_input
      Src: /src/opendal/core/core/src/types/delete/futures_delete_sink.rs:79,1
    - Dst: Result::delete
      Src: /src/opendal/core/core/src/types/delete/futures_delete_sink.rs:81,1
    - Dst: State::Delete
      Src: /src/opendal/core/core/src/types/delete/futures_delete_sink.rs:84,1
    - Dst: Box::pin
      Src: /src/opendal/core/core/src/types/delete/futures_delete_sink.rs:84,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/types/delete/futures_delete_sink.rs:85,1
    - Dst: Err
      Src: /src/opendal/core/core/src/types/delete/futures_delete_sink.rs:87,1
    - Dst: Error::new
      Src: /src/opendal/core/core/src/types/delete/futures_delete_sink.rs:87,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 26
    argCount: 2
    argNames:
    - item
    argTypes:
    - Pin<&mut Self>
    - T
    constantsTouched: []
    func_position:
      end: 92
      start: 70
    functionDepth: 36
    functionLinenumber: 70
    functionLinenumberEnd: 92
    functionName: FuturesDeleteSink::start_send
    functionSourceFile: /src/opendal/core/core/src/types/delete/futures_delete_sink.rs
    functionUses: 0
    functionsReached:
    - Result::into_delete_input
    - QueueBuf::ok_or_else
    - Ok
    - State::Delete
    - Result::take
    - Error::new
    - Err
    - Box::pin
    - Result::delete
    linkageType: ''
    returnType: Result
    signature: 'fn start_send(mut self: Pin<&mut Self>, item: T) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Poll::Ready
      Src: /src/opendal/core/core/src/types/delete/futures_delete_sink.rs:97,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/types/delete/futures_delete_sink.rs:97,1
    - Dst: State::Idle
      Src: /src/opendal/core/core/src/types/delete/futures_delete_sink.rs:100,1
    - Dst: Some
      Src: /src/opendal/core/core/src/types/delete/futures_delete_sink.rs:100,1
    - Dst: State::Idle
      Src: /src/opendal/core/core/src/types/delete/futures_delete_sink.rs:106,1
    - Dst: Some
      Src: /src/opendal/core/core/src/types/delete/futures_delete_sink.rs:106,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 28
    argCount: 2
    argNames:
    - cx
    argTypes:
    - Pin<&mut Self>
    - '&mut Context<''_>'
    constantsTouched: []
    func_position:
      end: 112
      start: 94
    functionDepth: 0
    functionLinenumber: 94
    functionLinenumberEnd: 112
    functionName: FuturesDeleteSink::poll_flush
    functionSourceFile: /src/opendal/core/core/src/types/delete/futures_delete_sink.rs
    functionUses: 0
    functionsReached:
    - Poll::Ready
    - State::Idle
    - Ok
    - Some
    linkageType: ''
    returnType: Poll
    signature: 'fn poll_flush(mut self: Pin<&mut Self>, cx: &mut Context<''_>) ->
      Poll<Result<()>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::take
      Src: /src/opendal/core/core/src/types/delete/futures_delete_sink.rs:118,1
    - Dst: QueueBuf::ok_or_else
      Src: /src/opendal/core/core/src/types/delete/futures_delete_sink.rs:118,1
    - Dst: Error::new
      Src: /src/opendal/core/core/src/types/delete/futures_delete_sink.rs:119,1
    - Dst: Result::close
      Src: /src/opendal/core/core/src/types/delete/futures_delete_sink.rs:125,1
    - Dst: State::Close
      Src: /src/opendal/core/core/src/types/delete/futures_delete_sink.rs:128,1
    - Dst: Box::pin
      Src: /src/opendal/core/core/src/types/delete/futures_delete_sink.rs:128,1
    - Dst: State::Idle
      Src: /src/opendal/core/core/src/types/delete/futures_delete_sink.rs:133,1
    - Dst: Some
      Src: /src/opendal/core/core/src/types/delete/futures_delete_sink.rs:133,1
    - Dst: State::Idle
      Src: /src/opendal/core/core/src/types/delete/futures_delete_sink.rs:139,1
    - Dst: Some
      Src: /src/opendal/core/core/src/types/delete/futures_delete_sink.rs:139,1
    - Dst: Poll::Ready
      Src: /src/opendal/core/core/src/types/delete/futures_delete_sink.rs:140,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 41
    argCount: 2
    argNames:
    - cx
    argTypes:
    - Pin<&mut Self>
    - '&mut Context<''_>'
    constantsTouched: []
    func_position:
      end: 144
      start: 114
    functionDepth: 36
    functionLinenumber: 114
    functionLinenumberEnd: 144
    functionName: FuturesDeleteSink::poll_close
    functionSourceFile: /src/opendal/core/core/src/types/delete/futures_delete_sink.rs
    functionUses: 0
    functionsReached:
    - QueueBuf::ok_or_else
    - Poll::Ready
    - State::Idle
    - Result::take
    - Error::new
    - Result::close
    - Some
    - Box::pin
    - State::Close
    linkageType: ''
    returnType: Poll
    signature: 'fn poll_close(mut self: Pin<&mut Self>, cx: &mut Context<''_>) ->
      Poll<Result<()>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self::from_parts
      Src: /src/opendal/core/core/src/types/context/operation.rs:46,1
    - Dst: HttpTransporter::default
      Src: /src/opendal/core/core/src/types/context/operation.rs:46,1
    - Dst: Executor::default
      Src: /src/opendal/core/core/src/types/context/operation.rs:46,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 47
      start: 45
    functionDepth: 3
    functionLinenumber: 45
    functionLinenumberEnd: 47
    functionName: OperationContext::new
    functionSourceFile: /src/opendal/core/core/src/types/context/operation.rs
    functionUses: 22
    functionsReached:
    - Self::from_parts
    - Executor::default
    - HttpTransporter::default
    linkageType: ''
    returnType: Self
    signature: pub fn new() -> Self
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - http_transport
    - executor
    argTypes:
    - HttpTransporter
    - Executor
    constantsTouched: []
    func_position:
      end: 55
      start: 50
    functionDepth: 0
    functionLinenumber: 50
    functionLinenumberEnd: 55
    functionName: OperationContext::from_parts
    functionSourceFile: /src/opendal/core/core/src/types/context/operation.rs
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: 'pub fn from_parts(http_transport: HttpTransporter, executor: Executor)
      -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: clone
      Src: /src/opendal/core/core/src/types/context/operation.rs:61,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - http_transport
    argTypes:
    - HttpTransporter
    constantsTouched: []
    func_position:
      end: 63
      start: 58
    functionDepth: 2
    functionLinenumber: 58
    functionLinenumberEnd: 63
    functionName: OperationContext::with_http_transport
    functionSourceFile: /src/opendal/core/core/src/types/context/operation.rs
    functionUses: 0
    functionsReached:
    - clone
    linkageType: ''
    returnType: Self
    signature: 'pub fn with_http_transport(&self, http_transport: HttpTransporter)
      -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: clone
      Src: /src/opendal/core/core/src/types/context/operation.rs:68,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - executor
    argTypes:
    - Executor
    constantsTouched: []
    func_position:
      end: 71
      start: 66
    functionDepth: 2
    functionLinenumber: 66
    functionLinenumberEnd: 71
    functionName: OperationContext::with_executor
    functionSourceFile: /src/opendal/core/core/src/types/context/operation.rs
    functionUses: 0
    functionsReached:
    - clone
    linkageType: ''
    returnType: Self
    signature: 'pub fn with_executor(&self, executor: Executor) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 76
      start: 74
    functionDepth: 0
    functionLinenumber: 74
    functionLinenumberEnd: 76
    functionName: OperationContext::into_parts
    functionSourceFile: /src/opendal/core/core/src/types/context/operation.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: (HttpTransporter, Executor)
    signature: pub fn into_parts(self) -> (HttpTransporter, Executor)
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 81
      start: 79
    functionDepth: 0
    functionLinenumber: 79
    functionLinenumberEnd: 81
    functionName: OperationContext::http_transport
    functionSourceFile: /src/opendal/core/core/src/types/context/operation.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: '&HttpTransporter'
    signature: pub fn http_transport(&self) -> &HttpTransporter
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 86
      start: 84
    functionDepth: 0
    functionLinenumber: 84
    functionLinenumberEnd: 86
    functionName: OperationContext::executor
    functionSourceFile: /src/opendal/core/core/src/types/context/operation.rs
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: '&Executor'
    signature: pub fn executor(&self) -> &Executor
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self::new
      Src: /src/opendal/core/core/src/types/context/operation.rs:91,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 92
      start: 90
    functionDepth: 2
    functionLinenumber: 90
    functionLinenumberEnd: 92
    functionName: OperationContext::default
    functionSourceFile: /src/opendal/core/core/src/types/context/operation.rs
    functionUses: 10
    functionsReached:
    - Self::new
    linkageType: ''
    returnType: Self
    signature: fn default() -> Self
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: OnceLock::new
      Src: /src/opendal/core/core/src/types/context/read.rs:62,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 6
    argNames:
    - ctx
    - srv
    - path
    - args
    - options
    - reader
    argTypes:
    - OperationContext
    - Servicer
    - String
    - OpRead
    - OpReader
    - oio::Reader
    constantsTouched: []
    func_position:
      end: 64
      start: 47
    functionDepth: 2
    functionLinenumber: 47
    functionLinenumberEnd: 64
    functionName: ReadContext::new
    functionSourceFile: /src/opendal/core/core/src/types/context/read.rs
    functionUses: 5
    functionsReached:
    - OnceLock::new
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(ctx: OperationContext,srv: Servicer,path: String,args:
      OpRead,options: OpReader,reader: oio::Reader,) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 70
      start: 68
    functionDepth: 0
    functionLinenumber: 68
    functionLinenumberEnd: 70
    functionName: ReadContext::context
    functionSourceFile: /src/opendal/core/core/src/types/context/read.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: '&OperationContext'
    signature: pub(crate) fn context(&self) -> &OperationContext
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 76
      start: 74
    functionDepth: 0
    functionLinenumber: 74
    functionLinenumberEnd: 76
    functionName: ReadContext::path
    functionSourceFile: /src/opendal/core/core/src/types/context/read.rs
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: '&str'
    signature: pub fn path(&self) -> &str
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 82
      start: 80
    functionDepth: 0
    functionLinenumber: 80
    functionLinenumberEnd: 82
    functionName: ReadContext::args
    functionSourceFile: /src/opendal/core/core/src/types/context/read.rs
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: '&OpRead'
    signature: pub fn args(&self) -> &OpRead
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 88
      start: 86
    functionDepth: 0
    functionLinenumber: 86
    functionLinenumberEnd: 88
    functionName: ReadContext::options
    functionSourceFile: /src/opendal/core/core/src/types/context/read.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: '&OpReader'
    signature: pub fn options(&self) -> &OpReader
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 94
      start: 92
    functionDepth: 0
    functionLinenumber: 92
    functionLinenumberEnd: 94
    functionName: ReadContext::reader
    functionSourceFile: /src/opendal/core/core/src/types/context/read.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: '&oio::Reader'
    signature: pub fn reader(&self) -> &oio::Reader
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: get
      Src: /src/opendal/core/core/src/types/context/read.rs:99,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 100
      start: 98
    functionDepth: 2
    functionLinenumber: 98
    functionLinenumberEnd: 100
    functionName: ReadContext::metadata
    functionSourceFile: /src/opendal/core/core/src/types/context/read.rs
    functionUses: 2
    functionsReached:
    - get
    linkageType: ''
    returnType: Option
    signature: pub fn metadata(&self) -> Option<&Metadata>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: set
      Src: /src/opendal/core/core/src/types/context/read.rs:104,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - metadata
    argTypes:
    - Metadata
    constantsTouched: []
    func_position:
      end: 105
      start: 103
    functionDepth: 34
    functionLinenumber: 103
    functionLinenumberEnd: 105
    functionName: ReadContext::set_metadata
    functionSourceFile: /src/opendal/core/core/src/types/context/read.rs
    functionUses: 1
    functionsReached:
    - set
    linkageType: ''
    returnType: void
    signature: 'pub(crate) fn set_metadata(&self, metadata: Metadata)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: RpRead::into_metadata
      Src: /src/opendal/core/core/src/types/context/read.rs:109,1
    - Dst: ReadContext::metadata
      Src: /src/opendal/core/core/src/types/context/read.rs:110,1
    - Dst: Option::is_none
      Src: /src/opendal/core/core/src/types/context/read.rs:110,1
    - Dst: ReadContext::set_metadata
      Src: /src/opendal/core/core/src/types/context/read.rs:112,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 1
    argNames:
    - rp
    argTypes:
    - RpRead
    constantsTouched: []
    func_position:
      end: 114
      start: 108
    functionDepth: 35
    functionLinenumber: 108
    functionLinenumberEnd: 114
    functionName: ReadContext::observe_read_response
    functionSourceFile: /src/opendal/core/core/src/types/context/read.rs
    functionUses: 0
    functionsReached:
    - Option::is_none
    - ReadContext::metadata
    - ReadContext::set_metadata
    - RpRead::into_metadata
    linkageType: ''
    returnType: void
    signature: 'pub(crate) fn observe_read_response(&self, rp: RpRead)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: ReadContext::args
      Src: /src/opendal/core/core/src/types/context/read.rs:117,1
    - Dst: '&OpRead::content_length_hint'
      Src: /src/opendal/core/core/src/types/context/read.rs:117,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/types/context/read.rs:118,1
    - Dst: ReadContext::metadata
      Src: /src/opendal/core/core/src/types/context/read.rs:121,1
    - Dst: Option::map
      Src: /src/opendal/core/core/src/types/context/read.rs:121,1
    - Dst: Result::content_length
      Src: /src/opendal/core/core/src/types/context/read.rs:121,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/types/context/read.rs:122,1
    - Dst: OpStat::new
      Src: /src/opendal/core/core/src/types/context/read.rs:125,1
    - Dst: ReadContext::args
      Src: /src/opendal/core/core/src/types/context/read.rs:127,1
    - Dst: '&OpRead::version'
      Src: /src/opendal/core/core/src/types/context/read.rs:127,1
    - Dst: Result::with_version
      Src: /src/opendal/core/core/src/types/context/read.rs:128,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/types/context/read.rs:131,1
    - Dst: stat
      Src: /src/opendal/core/core/src/types/context/read.rs:131,1
    - Dst: ReadContext::path
      Src: /src/opendal/core/core/src/types/context/read.rs:133,1
    - Dst: into_metadata
      Src: /src/opendal/core/core/src/types/context/read.rs:131,1
    - Dst: content_length
      Src: /src/opendal/core/core/src/types/context/read.rs:131,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 46
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 137
      start: 116
    functionDepth: 36
    functionLinenumber: 116
    functionLinenumberEnd: 137
    functionName: ReadContext::content_length
    functionSourceFile: /src/opendal/core/core/src/types/context/read.rs
    functionUses: 1
    functionsReached:
    - into_metadata
    - Ok
    - Option::map
    - content_length
    - OpStat::new
    - ReadContext::path
    - '&OpRead::version'
    - ReadContext::metadata
    - stat
    - '&OpRead::content_length_hint'
    - ReadContext::args
    - Result::with_version
    - Result::content_length
    linkageType: ''
    returnType: Result
    signature: async fn content_length(&self) -> Result<u64>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: (Vec::into
      Src: /src/opendal/core/core/src/types/context/read.rs:144,1
    - Dst: u64::checked_add
      Src: /src/opendal/core/core/src/types/context/read.rs:148,1
    - Dst: ok_or_else
      Src: /src/opendal/core/core/src/types/context/read.rs:148,1
    - Dst: Error::new
      Src: /src/opendal/core/core/src/types/context/read.rs:149,1
    - Dst: ReadContext::content_length
      Src: /src/opendal/core/core/src/types/context/read.rs:154,1
    - Dst: ReadContext::content_length
      Src: /src/opendal/core/core/src/types/context/read.rs:159,1
    - Dst: Result::saturating_sub
      Src: /src/opendal/core/core/src/types/context/read.rs:160,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/types/context/read.rs:164,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 25
    argCount: 1
    argNames:
    - range
    argTypes:
    - impl Into<BytesRange>
    constantsTouched: []
    func_position:
      end: 165
      start: 140
    functionDepth: 29
    functionLinenumber: 140
    functionLinenumberEnd: 165
    functionName: ReadContext::parse_into_range
    functionSourceFile: /src/opendal/core/core/src/types/context/read.rs
    functionUses: 0
    functionsReached:
    - Result::saturating_sub
    - Ok
    - u64::checked_add
    - Error::new
    - ReadContext::content_length
    - (Vec::into
    - ok_or_else
    linkageType: ''
    returnType: Result
    signature: 'pub(crate) async fn parse_into_range(&self,range: impl Into<BytesRange>,)
      -> Result<Range<u64>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - ctx
    - range
    argTypes:
    - Arc<ReadContext>
    - BytesRange
    constantsTouched: []
    func_position:
      end: 193
      start: 187
    functionDepth: 0
    functionLinenumber: 187
    functionLinenumberEnd: 193
    functionName: ReadGenerator::new
    functionSourceFile: /src/opendal/core/core/src/types/context/read.rs
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(ctx: Arc<ReadContext>, range: BytesRange) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: size
      Src: /src/opendal/core/core/src/types/context/read.rs:197,1
    - Dst: Some
      Src: /src/opendal/core/core/src/types/context/read.rs:197,1
    - Dst: Some
      Src: /src/opendal/core/core/src/types/context/read.rs:204,1
    - Dst: chunk
      Src: /src/opendal/core/core/src/types/context/read.rs:215,1
    - Dst: map_or
      Src: /src/opendal/core/core/src/types/context/read.rs:215,1
    - Dst: usize::min
      Src: /src/opendal/core/core/src/types/context/read.rs:219,1
    - Dst: BytesRange::new
      Src: /src/opendal/core/core/src/types/context/read.rs:221,1
    - Dst: Some
      Src: /src/opendal/core/core/src/types/context/read.rs:221,1
    - Dst: Some
      Src: /src/opendal/core/core/src/types/context/read.rs:222,1
    - Dst: Some
      Src: /src/opendal/core/core/src/types/context/read.rs:226,1
    - Dst: BytesRange::new
      Src: /src/opendal/core/core/src/types/context/read.rs:226,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 43
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 229
      start: 196
    functionDepth: 37
    functionLinenumber: 196
    functionLinenumberEnd: 229
    functionName: ReadGenerator::next_range
    functionSourceFile: /src/opendal/core/core/src/types/context/read.rs
    functionUses: 1
    functionsReached:
    - map_or
    - size
    - Some
    - chunk
    - BytesRange::new
    - usize::min
    linkageType: ''
    returnType: Option
    signature: fn next_range(&mut self) -> Option<BytesRange>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: ReadGenerator::next_range
      Src: /src/opendal/core/core/src/types/context/read.rs:233,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/types/context/read.rs:234,1
    - Dst: reader
      Src: /src/opendal/core/core/src/types/context/read.rs:237,1
    - Dst: open
      Src: /src/opendal/core/core/src/types/context/read.rs:237,1
    - Dst: observe_read_response
      Src: /src/opendal/core/core/src/types/context/read.rs:238,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/types/context/read.rs:239,1
    - Dst: Some
      Src: /src/opendal/core/core/src/types/context/read.rs:239,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 18
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 240
      start: 232
    functionDepth: 38
    functionLinenumber: 232
    functionLinenumberEnd: 240
    functionName: ReadGenerator::next_reader
    functionSourceFile: /src/opendal/core/core/src/types/context/read.rs
    functionUses: 0
    functionsReached:
    - reader
    - Ok
    - observe_read_response
    - Some
    - ReadGenerator::next_range
    - open
    linkageType: ''
    returnType: Result
    signature: pub async fn next_reader(&mut self) -> Result<Option<Box<dyn oio::ReadStreamDyn>>>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: metadata
      Src: /src/opendal/core/core/src/types/context/read.rs:244,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 245
      start: 243
    functionDepth: 37
    functionLinenumber: 243
    functionLinenumberEnd: 245
    functionName: ReadGenerator::metadata
    functionSourceFile: /src/opendal/core/core/src/types/context/read.rs
    functionUses: 0
    functionsReached:
    - metadata
    linkageType: ''
    returnType: Option
    signature: pub(crate) fn metadata(&self) -> Option<&Metadata>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: crate::raw::OpRead::new
      Src: /src/opendal/core/core/src/types/read/futures_async_reader.rs:199,1
    - Dst: Servicer::read
      Src: /src/opendal/core/core/src/types/read/futures_async_reader.rs:200,1
    - Dst: OpStat::clone
      Src: /src/opendal/core/core/src/types/read/futures_async_reader.rs:200,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/types/read/futures_async_reader.rs:201,1
    - Dst: ReadContext::new
      Src: /src/opendal/core/core/src/types/read/futures_async_reader.rs:201,1
    - Dst: to_string
      Src: /src/opendal/core/core/src/types/read/futures_async_reader.rs:204,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 4
    argNames:
    - ctx
    - srv
    - path
    - options
    argTypes:
    - OperationContext
    - Servicer
    - '&str'
    - crate::raw::OpReader
    constantsTouched: []
    func_position:
      end: 209
      start: 193
    functionDepth: 31
    functionLinenumber: 193
    functionLinenumberEnd: 209
    functionName: tests::new_read_context
    functionSourceFile: /src/opendal/core/core/src/types/read/futures_async_reader.rs
    functionUses: 0
    functionsReached:
    - OpStat::clone
    - ReadContext::new
    - to_string
    - Ok
    - crate::raw::OpRead::new
    - Servicer::read
    linkageType: ''
    returnType: crate::Result
    signature: 'fn new_read_context(ctx: OperationContext,srv: Servicer,path: &str,options:
      crate::raw::OpReader,) -> crate::Result<ReadContext>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Servicer::read
      Src: /src/opendal/core/core/src/types/context/read.rs:270,1
    - Dst: OpStat::clone
      Src: /src/opendal/core/core/src/types/context/read.rs:270,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/types/context/read.rs:271,1
    - Dst: ReadContext::new
      Src: /src/opendal/core/core/src/types/context/read.rs:271,1
    - Dst: to_string
      Src: /src/opendal/core/core/src/types/context/read.rs:274,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 5
    argNames:
    - ctx
    - srv
    - path
    - args
    - options
    argTypes:
    - OperationContext
    - Servicer
    - '&str'
    - crate::raw::OpRead
    - crate::raw::OpReader
    constantsTouched: []
    func_position:
      end: 279
      start: 263
    functionDepth: 31
    functionLinenumber: 263
    functionLinenumberEnd: 279
    functionName: tests::new_read_context_with_args
    functionSourceFile: /src/opendal/core/core/src/types/context/read.rs
    functionUses: 0
    functionsReached:
    - OpStat::clone
    - to_string
    - ReadContext::new
    - Ok
    - Servicer::read
    linkageType: ''
    returnType: crate::Result
    signature: 'fn new_read_context_with_args(ctx: OperationContext,srv: Servicer,path:
      &str,args: crate::raw::OpRead,options: crate::raw::OpReader,) -> crate::Result<ReadContext>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Operator::via_iter
      Src: /src/opendal/core/core/src/types/context/read.rs:283,1
    - Dst: write
      Src: /src/opendal/core/core/src/types/context/read.rs:284,1
    - Dst: Buffer::from
      Src: /src/opendal/core/core/src/types/context/read.rs:286,1
    - Dst: context
      Src: /src/opendal/core/core/src/types/context/read.rs:290,1
    - Dst: OperationContext::clone
      Src: /src/opendal/core/core/src/types/context/read.rs:290,1
    - Dst: service
      Src: /src/opendal/core/core/src/types/context/read.rs:291,1
    - Dst: Servicer::clone
      Src: /src/opendal/core/core/src/types/context/read.rs:291,1
    - Dst: Arc::new
      Src: /src/opendal/core/core/src/types/context/read.rs:292,1
    - Dst: new_read_context
      Src: /src/opendal/core/core/src/types/context/read.rs:292,1
    - Dst: OpReader::new
      Src: /src/opendal/core/core/src/types/context/read.rs:296,1
    - Dst: Self::with_chunk
      Src: /src/opendal/core/core/src/types/context/read.rs:296,1
    - Dst: ReadGenerator::new
      Src: /src/opendal/core/core/src/types/context/read.rs:298,1
    - Dst: BytesRange::new
      Src: /src/opendal/core/core/src/types/context/read.rs:298,1
    - Dst: Some
      Src: /src/opendal/core/core/src/types/context/read.rs:298,1
    - Dst: Self::next_reader
      Src: /src/opendal/core/core/src/types/context/read.rs:300,1
    - Dst: push
      Src: /src/opendal/core/core/src/types/context/read.rs:301,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/types/context/read.rs:305,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 38
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 306
      start: 282
    functionDepth: 36
    functionLinenumber: 282
    functionLinenumberEnd: 306
    functionName: tests::test_next_reader
    functionSourceFile: /src/opendal/core/core/src/types/context/read.rs
    functionUses: 0
    functionsReached:
    - context
    - Operator::via_iter
    - ReadGenerator::new
    - Self::with_chunk
    - push
    - OpReader::new
    - Ok
    - Arc::new
    - OperationContext::clone
    - service
    - new_read_context
    - Some
    - Self::next_reader
    - BytesRange::new
    - write
    - Buffer::from
    - Servicer::clone
    linkageType: ''
    returnType: Result
    signature: async fn test_next_reader() -> Result<()>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Operator::via_iter
      Src: /src/opendal/core/core/src/types/context/read.rs:310,1
    - Dst: write
      Src: /src/opendal/core/core/src/types/context/read.rs:311,1
    - Dst: Buffer::from
      Src: /src/opendal/core/core/src/types/context/read.rs:313,1
    - Dst: context
      Src: /src/opendal/core/core/src/types/context/read.rs:317,1
    - Dst: OperationContext::clone
      Src: /src/opendal/core/core/src/types/context/read.rs:317,1
    - Dst: service
      Src: /src/opendal/core/core/src/types/context/read.rs:318,1
    - Dst: Servicer::clone
      Src: /src/opendal/core/core/src/types/context/read.rs:318,1
    - Dst: Arc::new
      Src: /src/opendal/core/core/src/types/context/read.rs:319,1
    - Dst: new_read_context
      Src: /src/opendal/core/core/src/types/context/read.rs:319,1
    - Dst: OpReader::new
      Src: /src/opendal/core/core/src/types/context/read.rs:323,1
    - Dst: Self::with_chunk
      Src: /src/opendal/core/core/src/types/context/read.rs:323,1
    - Dst: ReadGenerator::new
      Src: /src/opendal/core/core/src/types/context/read.rs:325,1
    - Dst: BytesRange::new
      Src: /src/opendal/core/core/src/types/context/read.rs:325,1
    - Dst: Self::next_reader
      Src: /src/opendal/core/core/src/types/context/read.rs:327,1
    - Dst: push
      Src: /src/opendal/core/core/src/types/context/read.rs:328,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/types/context/read.rs:332,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 37
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 333
      start: 309
    functionDepth: 36
    functionLinenumber: 309
    functionLinenumberEnd: 333
    functionName: tests::test_next_reader_without_size
    functionSourceFile: /src/opendal/core/core/src/types/context/read.rs
    functionUses: 0
    functionsReached:
    - context
    - Operator::via_iter
    - ReadGenerator::new
    - Self::with_chunk
    - push
    - OpReader::new
    - Ok
    - Arc::new
    - OperationContext::clone
    - service
    - new_read_context
    - Self::next_reader
    - BytesRange::new
    - write
    - Buffer::from
    - Servicer::clone
    linkageType: ''
    returnType: Result
    signature: async fn test_next_reader_without_size() -> Result<()>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Operator::via_iter
      Src: /src/opendal/core/core/src/types/context/read.rs:337,1
    - Dst: write
      Src: /src/opendal/core/core/src/types/context/read.rs:338,1
    - Dst: Buffer::from
      Src: /src/opendal/core/core/src/types/context/read.rs:338,1
    - Dst: Bytes::new
      Src: /src/opendal/core/core/src/types/context/read.rs:338,1
    - Dst: context
      Src: /src/opendal/core/core/src/types/context/read.rs:340,1
    - Dst: OperationContext::clone
      Src: /src/opendal/core/core/src/types/context/read.rs:340,1
    - Dst: service
      Src: /src/opendal/core/core/src/types/context/read.rs:341,1
    - Dst: Servicer::clone
      Src: /src/opendal/core/core/src/types/context/read.rs:341,1
    - Dst: new_read_context
      Src: /src/opendal/core/core/src/types/context/read.rs:342,1
    - Dst: OpReader::new
      Src: /src/opendal/core/core/src/types/context/read.rs:342,1
    - Dst: Result::parse_into_range
      Src: /src/opendal/core/core/src/types/context/read.rs:344,1
    - Dst: BytesRange::new
      Src: /src/opendal/core/core/src/types/context/read.rs:345,1
    - Dst: Some
      Src: /src/opendal/core/core/src/types/context/read.rs:345,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/types/context/read.rs:352,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 30
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 353
      start: 336
    functionDepth: 36
    functionLinenumber: 336
    functionLinenumberEnd: 353
    functionName: tests::test_parse_into_range_bounded_end_overflow
    functionSourceFile: /src/opendal/core/core/src/types/context/read.rs
    functionUses: 0
    functionsReached:
    - context
    - Operator::via_iter
    - Ok
    - OpReader::new
    - Result::parse_into_range
    - OperationContext::clone
    - service
    - new_read_context
    - Some
    - BytesRange::new
    - Bytes::new
    - write
    - Buffer::from
    - Servicer::clone
    linkageType: ''
    returnType: Result
    signature: async fn test_parse_into_range_bounded_end_overflow() -> Result<()>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Operator::via_iter
      Src: /src/opendal/core/core/src/types/context/read.rs:357,1
    - Dst: Some
      Src: /src/opendal/core/core/src/types/context/read.rs:359,1
    - Dst: Default::default
      Src: /src/opendal/core/core/src/types/context/read.rs:360,1
    - Dst: into
      Src: /src/opendal/core/core/src/types/context/read.rs:358,1
    - Dst: context
      Src: /src/opendal/core/core/src/types/context/read.rs:364,1
    - Dst: OperationContext::clone
      Src: /src/opendal/core/core/src/types/context/read.rs:364,1
    - Dst: service
      Src: /src/opendal/core/core/src/types/context/read.rs:365,1
    - Dst: Servicer::clone
      Src: /src/opendal/core/core/src/types/context/read.rs:365,1
    - Dst: new_read_context_with_args
      Src: /src/opendal/core/core/src/types/context/read.rs:366,1
    - Dst: Result::parse_into_range
      Src: /src/opendal/core/core/src/types/context/read.rs:368,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/types/context/read.rs:371,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 26
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 372
      start: 356
    functionDepth: 29
    functionLinenumber: 356
    functionLinenumberEnd: 372
    functionName: tests::test_parse_into_range_uses_content_length_hint
    functionSourceFile: /src/opendal/core/core/src/types/context/read.rs
    functionUses: 0
    functionsReached:
    - context
    - Ok
    - Result::parse_into_range
    - Default::default
    - into
    - OperationContext::clone
    - service
    - Some
    - Servicer::clone
    - new_read_context_with_args
    - Operator::via_iter
    linkageType: ''
    returnType: Result
    signature: async fn test_parse_into_range_uses_content_length_hint() -> Result<()>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Operator::via_iter
      Src: /src/opendal/core/core/src/types/context/read.rs:376,1
    - Dst: Some
      Src: /src/opendal/core/core/src/types/context/read.rs:378,1
    - Dst: Default::default
      Src: /src/opendal/core/core/src/types/context/read.rs:379,1
    - Dst: into
      Src: /src/opendal/core/core/src/types/context/read.rs:377,1
    - Dst: context
      Src: /src/opendal/core/core/src/types/context/read.rs:383,1
    - Dst: OperationContext::clone
      Src: /src/opendal/core/core/src/types/context/read.rs:383,1
    - Dst: service
      Src: /src/opendal/core/core/src/types/context/read.rs:384,1
    - Dst: Servicer::clone
      Src: /src/opendal/core/core/src/types/context/read.rs:384,1
    - Dst: new_read_context_with_args
      Src: /src/opendal/core/core/src/types/context/read.rs:385,1
    - Dst: Result::parse_into_range
      Src: /src/opendal/core/core/src/types/context/read.rs:387,1
    - Dst: BytesRange::suffix
      Src: /src/opendal/core/core/src/types/context/read.rs:387,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/types/context/read.rs:390,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 26
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 391
      start: 375
    functionDepth: 29
    functionLinenumber: 375
    functionLinenumberEnd: 391
    functionName: tests::test_parse_into_range_suffix_uses_content_length_hint
    functionSourceFile: /src/opendal/core/core/src/types/context/read.rs
    functionUses: 0
    functionsReached:
    - context
    - BytesRange::suffix
    - Ok
    - Result::parse_into_range
    - Default::default
    - into
    - OperationContext::clone
    - service
    - Some
    - Servicer::clone
    - new_read_context_with_args
    - Operator::via_iter
    linkageType: ''
    returnType: Result
    signature: async fn test_parse_into_range_suffix_uses_content_length_hint() ->
      Result<()>
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 5
    argNames:
    - ctx
    - srv
    - path
    - args
    - options
    argTypes:
    - OperationContext
    - Servicer
    - String
    - OpWrite
    - OpWriter
    constantsTouched: []
    func_position:
      end: 55
      start: 41
    functionDepth: 0
    functionLinenumber: 41
    functionLinenumberEnd: 55
    functionName: WriteContext::new
    functionSourceFile: /src/opendal/core/core/src/types/context/write.rs
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(ctx: OperationContext,srv: Servicer,path: String,args:
      OpWrite,options: OpWriter,) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 61
      start: 59
    functionDepth: 0
    functionLinenumber: 59
    functionLinenumberEnd: 61
    functionName: WriteContext::path
    functionSourceFile: /src/opendal/core/core/src/types/context/write.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: '&str'
    signature: pub fn path(&self) -> &str
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 67
      start: 65
    functionDepth: 0
    functionLinenumber: 65
    functionLinenumberEnd: 67
    functionName: WriteContext::args
    functionSourceFile: /src/opendal/core/core/src/types/context/write.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: '&OpWrite'
    signature: pub fn args(&self) -> &OpWrite
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 73
      start: 71
    functionDepth: 0
    functionLinenumber: 71
    functionLinenumberEnd: 73
    functionName: WriteContext::options
    functionSourceFile: /src/opendal/core/core/src/types/context/write.rs
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: '&OpWriter'
    signature: pub fn options(&self) -> &OpWriter
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: capability
      Src: /src/opendal/core/core/src/types/context/write.rs:79,1
    - Dst: WriteContext::options
      Src: /src/opendal/core/core/src/types/context/write.rs:81,1
    - Dst: '&OpWriter::chunk'
      Src: /src/opendal/core/core/src/types/context/write.rs:81,1
    - Dst: Result::is_some
      Src: /src/opendal/core/core/src/types/context/write.rs:81,1
    - Dst: WriteContext::options
      Src: /src/opendal/core/core/src/types/context/write.rs:82,1
    - Dst: '&OpWriter::chunk'
      Src: /src/opendal/core/core/src/types/context/write.rs:82,1
    - Dst: Result::or
      Src: /src/opendal/core/core/src/types/context/write.rs:82,1
    - Dst: Self::map
      Src: /src/opendal/core/core/src/types/context/write.rs:82,1
    - Dst: Option::min
      Src: /src/opendal/core/core/src/types/context/write.rs:88,1
    - Dst: Option::max
      Src: /src/opendal/core/core/src/types/context/write.rs:91,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 34
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 98
      start: 78
    functionDepth: 37
    functionLinenumber: 78
    functionLinenumberEnd: 98
    functionName: WriteContext::calculate_chunk_size
    functionSourceFile: /src/opendal/core/core/src/types/context/write.rs
    functionUses: 0
    functionsReached:
    - Self::map
    - Option::min
    - Result::or
    - WriteContext::options
    - capability
    - '&OpWriter::chunk'
    - Option::max
    - Result::is_some
    linkageType: ''
    returnType: (Option
    signature: fn calculate_chunk_size(&self) -> (Option<usize>, bool)
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::calculate_chunk_size
      Src: /src/opendal/core/core/src/types/context/write.rs:115,1
    - Dst: write
      Src: /src/opendal/core/core/src/types/context/write.rs:116,1
    - Dst: Result::path
      Src: /src/opendal/core/core/src/types/context/write.rs:116,1
    - Dst: Result::args
      Src: /src/opendal/core/core/src/types/context/write.rs:116,1
    - Dst: OpStat::clone
      Src: /src/opendal/core/core/src/types/context/write.rs:116,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/types/context/write.rs:118,1
    - Dst: oio::QueueBuf::new
      Src: /src/opendal/core/core/src/types/context/write.rs:122,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 17
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - Arc<WriteContext>
    constantsTouched: []
    func_position:
      end: 124
      start: 114
    functionDepth: 38
    functionLinenumber: 114
    functionLinenumberEnd: 124
    functionName: WriteGenerator::create
    functionSourceFile: /src/opendal/core/core/src/types/context/write.rs
    functionUses: 1
    functionsReached:
    - OpStat::clone
    - Result::path
    - oio::QueueBuf::new
    - Ok
    - Result::calculate_chunk_size
    - Result::args
    - write
    linkageType: ''
    returnType: Result
    signature: 'pub fn create(ctx: Arc<WriteContext>) -> Result<Self>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: oio::QueueBuf::new
      Src: /src/opendal/core/core/src/types/context/write.rs:133,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - w
    - chunk_size
    - exact
    argTypes:
    - oio::Writer
    - Option<usize>
    - bool
    constantsTouched: []
    func_position:
      end: 135
      start: 128
    functionDepth: 4
    functionLinenumber: 128
    functionLinenumberEnd: 135
    functionName: WriteGenerator::new
    functionSourceFile: /src/opendal/core/core/src/types/context/write.rs
    functionUses: 6
    functionsReached:
    - oio::QueueBuf::new
    linkageType: ''
    returnType: Self
    signature: 'fn new(w: oio::Writer, chunk_size: Option<usize>, exact: bool) ->
      Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::len
      Src: /src/opendal/core/core/src/types/context/write.rs:142,1
    - Dst: write
      Src: /src/opendal/core/core/src/types/context/write.rs:143,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/types/context/write.rs:144,1
    - Dst: len
      Src: /src/opendal/core/core/src/types/context/write.rs:147,1
    - Dst: Result::len
      Src: /src/opendal/core/core/src/types/context/write.rs:147,1
    - Dst: Result::len
      Src: /src/opendal/core/core/src/types/context/write.rs:148,1
    - Dst: push
      Src: /src/opendal/core/core/src/types/context/write.rs:149,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/types/context/write.rs:150,1
    - Dst: Result::len
      Src: /src/opendal/core/core/src/types/context/write.rs:159,1
    - Dst: push
      Src: /src/opendal/core/core/src/types/context/write.rs:160,1
    - Dst: take
      Src: /src/opendal/core/core/src/types/context/write.rs:161,1
    - Dst: collect
      Src: /src/opendal/core/core/src/types/context/write.rs:161,1
    - Dst: write
      Src: /src/opendal/core/core/src/types/context/write.rs:162,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/types/context/write.rs:163,1
    - Dst: len
      Src: /src/opendal/core/core/src/types/context/write.rs:172,1
    - Dst: take
      Src: /src/opendal/core/core/src/types/context/write.rs:173,1
    - Dst: collect
      Src: /src/opendal/core/core/src/types/context/write.rs:173,1
    - Dst: write
      Src: /src/opendal/core/core/src/types/context/write.rs:174,1
    - Dst: len
      Src: /src/opendal/core/core/src/types/context/write.rs:182,1
    - Dst: Result::truncate
      Src: /src/opendal/core/core/src/types/context/write.rs:183,1
    - Dst: Result::len
      Src: /src/opendal/core/core/src/types/context/write.rs:184,1
    - Dst: push
      Src: /src/opendal/core/core/src/types/context/write.rs:185,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/types/context/write.rs:186,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 85
    argCount: 1
    argNames:
    - bs
    argTypes:
    - Buffer
    constantsTouched: []
    func_position:
      end: 187
      start: 140
    functionDepth: 36
    functionLinenumber: 140
    functionLinenumberEnd: 187
    functionName: WriteGenerator::write
    functionSourceFile: /src/opendal/core/core/src/types/context/write.rs
    functionUses: 0
    functionsReached:
    - collect
    - Result::truncate
    - push
    - Ok
    - take
    - Result::len
    - len
    - write
    linkageType: ''
    returnType: Result
    signature: 'pub async fn write(&mut self, mut bs: Buffer) -> Result<usize>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: is_empty
      Src: /src/opendal/core/core/src/types/context/write.rs:192,1
    - Dst: take
      Src: /src/opendal/core/core/src/types/context/write.rs:196,1
    - Dst: collect
      Src: /src/opendal/core/core/src/types/context/write.rs:196,1
    - Dst: write
      Src: /src/opendal/core/core/src/types/context/write.rs:197,1
    - Dst: close
      Src: /src/opendal/core/core/src/types/context/write.rs:200,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 24
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 201
      start: 190
    functionDepth: 36
    functionLinenumber: 190
    functionLinenumberEnd: 201
    functionName: WriteGenerator::close
    functionSourceFile: /src/opendal/core/core/src/types/context/write.rs
    functionUses: 0
    functionsReached:
    - collect
    - close
    - is_empty
    - take
    - write
    linkageType: ''
    returnType: Result
    signature: pub async fn close(&mut self) -> Result<Metadata>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: clear
      Src: /src/opendal/core/core/src/types/context/write.rs:205,1
    - Dst: abort
      Src: /src/opendal/core/core/src/types/context/write.rs:206,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 207
      start: 204
    functionDepth: 31
    functionLinenumber: 204
    functionLinenumberEnd: 207
    functionName: WriteGenerator::abort
    functionSourceFile: /src/opendal/core/core/src/types/context/write.rs
    functionUses: 0
    functionsReached:
    - clear
    - abort
    linkageType: ''
    returnType: Result
    signature: pub async fn abort(&mut self) -> Result<()>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Sha256::digest
      Src: /src/opendal/core/core/src/types/context/write.rs:231,1
    - Dst: String::with_capacity
      Src: /src/opendal/core/core/src/types/context/write.rs:232,1
    - Dst: String::len
      Src: /src/opendal/core/core/src/types/context/write.rs:232,1
    - Dst: expect
      Src: /src/opendal/core/core/src/types/context/write.rs:234,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - data
    argTypes:
    - impl AsRef<[u8]>
    constantsTouched: []
    func_position:
      end: 237
      start: 228
    functionDepth: 4
    functionLinenumber: 228
    functionLinenumberEnd: 237
    functionName: tests::sha256_digest
    functionSourceFile: /src/opendal/core/core/src/types/context/write.rs
    functionUses: 0
    functionsReached:
    - String::with_capacity
    - Sha256::digest
    - expect
    - String::len
    linkageType: ''
    returnType: String
    signature: 'fn sha256_digest(data: impl AsRef<[u8]>) -> String'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: setup
      Src: /src/opendal/core/core/src/types/context/write.rs:277,1
    - Dst: rng
      Src: /src/opendal/core/core/src/types/context/write.rs:279,1
    - Dst: fill_bytes
      Src: /src/opendal/core/core/src/types/context/write.rs:281,1
    - Dst: Arc::new
      Src: /src/opendal/core/core/src/types/context/write.rs:283,1
    - Dst: Mutex::new
      Src: /src/opendal/core/core/src/types/context/write.rs:283,1
    - Dst: WriteGenerator::new
      Src: /src/opendal/core/core/src/types/context/write.rs:284,1
    - Dst: Box::new
      Src: /src/opendal/core/core/src/types/context/write.rs:285,1
    - Dst: io::Result::clone
      Src: /src/opendal/core/core/src/types/context/write.rs:286,1
    - Dst: Arc::new
      Src: /src/opendal/core/core/src/types/context/write.rs:287,1
    - Dst: Mutex::new
      Src: /src/opendal/core/core/src/types/context/write.rs:287,1
    - Dst: Some
      Src: /src/opendal/core/core/src/types/context/write.rs:289,1
    - Dst: Bytes::from
      Src: /src/opendal/core/core/src/types/context/write.rs:293,1
    - Dst: clone
      Src: /src/opendal/core/core/src/types/context/write.rs:293,1
    - Dst: Result::is_empty
      Src: /src/opendal/core/core/src/types/context/write.rs:294,1
    - Dst: Self::write
      Src: /src/opendal/core/core/src/types/context/write.rs:295,1
    - Dst: Result::clone
      Src: /src/opendal/core/core/src/types/context/write.rs:295,1
    - Dst: Self::into
      Src: /src/opendal/core/core/src/types/context/write.rs:295,1
    - Dst: Result::advance
      Src: /src/opendal/core/core/src/types/context/write.rs:296,1
    - Dst: Self::close
      Src: /src/opendal/core/core/src/types/context/write.rs:299,1
    - Dst: io::Result::lock
      Src: /src/opendal/core/core/src/types/context/write.rs:301,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/types/context/write.rs:304,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 48
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 305
      start: 276
    functionDepth: 34
    functionLinenumber: 276
    functionLinenumberEnd: 305
    functionName: tests::test_exact_buf_writer_short_write
    functionSourceFile: /src/opendal/core/core/src/types/context/write.rs
    functionUses: 0
    functionsReached:
    - Box::new
    - Arc::new
    - clone
    - Result::is_empty
    - Self::into
    - Result::clone
    - Ok
    - Result::advance
    - Self::write
    - WriteGenerator::new
    - Some
    - Bytes::from
    - io::Result::lock
    - fill_bytes
    - rng
    - io::Result::clone
    - Self::close
    - Mutex::new
    - setup
    linkageType: ''
    returnType: Result
    signature: async fn test_exact_buf_writer_short_write() -> Result<()>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: setup
      Src: /src/opendal/core/core/src/types/context/write.rs:309,1
    - Dst: Arc::new
      Src: /src/opendal/core/core/src/types/context/write.rs:311,1
    - Dst: Mutex::new
      Src: /src/opendal/core/core/src/types/context/write.rs:311,1
    - Dst: WriteGenerator::new
      Src: /src/opendal/core/core/src/types/context/write.rs:312,1
    - Dst: Box::new
      Src: /src/opendal/core/core/src/types/context/write.rs:313,1
    - Dst: io::Result::clone
      Src: /src/opendal/core/core/src/types/context/write.rs:314,1
    - Dst: Arc::new
      Src: /src/opendal/core/core/src/types/context/write.rs:315,1
    - Dst: Mutex::new
      Src: /src/opendal/core/core/src/types/context/write.rs:315,1
    - Dst: Some
      Src: /src/opendal/core/core/src/types/context/write.rs:317,1
    - Dst: rng
      Src: /src/opendal/core/core/src/types/context/write.rs:321,1
    - Dst: fill_bytes
      Src: /src/opendal/core/core/src/types/context/write.rs:323,1
    - Dst: Bytes::from
      Src: /src/opendal/core/core/src/types/context/write.rs:325,1
    - Dst: clone
      Src: /src/opendal/core/core/src/types/context/write.rs:325,1
    - Dst: Self::write
      Src: /src/opendal/core/core/src/types/context/write.rs:327,1
    - Dst: Result::into
      Src: /src/opendal/core/core/src/types/context/write.rs:327,1
    - Dst: Self::close
      Src: /src/opendal/core/core/src/types/context/write.rs:330,1
    - Dst: io::Result::lock
      Src: /src/opendal/core/core/src/types/context/write.rs:332,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/types/context/write.rs:335,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 39
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 336
      start: 308
    functionDepth: 34
    functionLinenumber: 308
    functionLinenumberEnd: 336
    functionName: tests::test_inexact_buf_writer_large_write
    functionSourceFile: /src/opendal/core/core/src/types/context/write.rs
    functionUses: 0
    functionsReached:
    - rng
    - Ok
    - Box::new
    - Arc::new
    - WriteGenerator::new
    - clone
    - Some
    - Bytes::from
    - Self::write
    - Result::into
    - Self::close
    - io::Result::lock
    - io::Result::clone
    - fill_bytes
    - Mutex::new
    - setup
    linkageType: ''
    returnType: Result
    signature: async fn test_inexact_buf_writer_large_write() -> Result<()>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: setup
      Src: /src/opendal/core/core/src/types/context/write.rs:340,1
    - Dst: Arc::new
      Src: /src/opendal/core/core/src/types/context/write.rs:342,1
    - Dst: Mutex::new
      Src: /src/opendal/core/core/src/types/context/write.rs:342,1
    - Dst: WriteGenerator::new
      Src: /src/opendal/core/core/src/types/context/write.rs:343,1
    - Dst: Box::new
      Src: /src/opendal/core/core/src/types/context/write.rs:344,1
    - Dst: io::Result::clone
      Src: /src/opendal/core/core/src/types/context/write.rs:345,1
    - Dst: Arc::new
      Src: /src/opendal/core/core/src/types/context/write.rs:346,1
    - Dst: Mutex::new
      Src: /src/opendal/core/core/src/types/context/write.rs:346,1
    - Dst: Some
      Src: /src/opendal/core/core/src/types/context/write.rs:348,1
    - Dst: rng
      Src: /src/opendal/core/core/src/types/context/write.rs:352,1
    - Dst: fill_bytes
      Src: /src/opendal/core/core/src/types/context/write.rs:357,1
    - Dst: extend_from_slice
      Src: /src/opendal/core/core/src/types/context/write.rs:358,1
    - Dst: Bytes::from
      Src: /src/opendal/core/core/src/types/context/write.rs:359,1
    - Dst: new_content
      Src: /src/opendal/core/core/src/types/context/write.rs:363,1
    - Dst: new_content
      Src: /src/opendal/core/core/src/types/context/write.rs:366,1
    - Dst: new_content
      Src: /src/opendal/core/core/src/types/context/write.rs:369,1
    - Dst: Self::close
      Src: /src/opendal/core/core/src/types/context/write.rs:373,1
    - Dst: io::Result::lock
      Src: /src/opendal/core/core/src/types/context/write.rs:375,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/types/context/write.rs:378,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 41
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 379
      start: 339
    functionDepth: 34
    functionLinenumber: 339
    functionLinenumberEnd: 379
    functionName: tests::test_inexact_buf_writer_combine_small
    functionSourceFile: /src/opendal/core/core/src/types/context/write.rs
    functionUses: 0
    functionsReached:
    - rng
    - Ok
    - Box::new
    - Arc::new
    - WriteGenerator::new
    - extend_from_slice
    - new_content
    - Some
    - Bytes::from
    - Self::close
    - io::Result::lock
    - io::Result::clone
    - fill_bytes
    - Mutex::new
    - setup
    linkageType: ''
    returnType: Result
    signature: async fn test_inexact_buf_writer_combine_small() -> Result<()>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: setup
      Src: /src/opendal/core/core/src/types/context/write.rs:383,1
    - Dst: Arc::new
      Src: /src/opendal/core/core/src/types/context/write.rs:385,1
    - Dst: Mutex::new
      Src: /src/opendal/core/core/src/types/context/write.rs:385,1
    - Dst: WriteGenerator::new
      Src: /src/opendal/core/core/src/types/context/write.rs:386,1
    - Dst: Box::new
      Src: /src/opendal/core/core/src/types/context/write.rs:387,1
    - Dst: io::Result::clone
      Src: /src/opendal/core/core/src/types/context/write.rs:388,1
    - Dst: Arc::new
      Src: /src/opendal/core/core/src/types/context/write.rs:389,1
    - Dst: Mutex::new
      Src: /src/opendal/core/core/src/types/context/write.rs:389,1
    - Dst: Some
      Src: /src/opendal/core/core/src/types/context/write.rs:391,1
    - Dst: rng
      Src: /src/opendal/core/core/src/types/context/write.rs:395,1
    - Dst: fill_bytes
      Src: /src/opendal/core/core/src/types/context/write.rs:400,1
    - Dst: extend_from_slice
      Src: /src/opendal/core/core/src/types/context/write.rs:401,1
    - Dst: Bytes::from
      Src: /src/opendal/core/core/src/types/context/write.rs:402,1
    - Dst: new_content
      Src: /src/opendal/core/core/src/types/context/write.rs:406,1
    - Dst: new_content
      Src: /src/opendal/core/core/src/types/context/write.rs:409,1
    - Dst: new_content
      Src: /src/opendal/core/core/src/types/context/write.rs:412,1
    - Dst: new_content
      Src: /src/opendal/core/core/src/types/context/write.rs:415,1
    - Dst: Self::close
      Src: /src/opendal/core/core/src/types/context/write.rs:418,1
    - Dst: io::Result::lock
      Src: /src/opendal/core/core/src/types/context/write.rs:420,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/types/context/write.rs:423,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 43
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 424
      start: 382
    functionDepth: 34
    functionLinenumber: 382
    functionLinenumberEnd: 424
    functionName: tests::test_inexact_buf_writer_queue_remaining
    functionSourceFile: /src/opendal/core/core/src/types/context/write.rs
    functionUses: 0
    functionsReached:
    - rng
    - Ok
    - Box::new
    - Arc::new
    - WriteGenerator::new
    - extend_from_slice
    - new_content
    - Some
    - Bytes::from
    - Self::close
    - io::Result::lock
    - io::Result::clone
    - fill_bytes
    - Mutex::new
    - setup
    linkageType: ''
    returnType: Result
    signature: async fn test_inexact_buf_writer_queue_remaining() -> Result<()>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: setup
      Src: /src/opendal/core/core/src/types/context/write.rs:428,1
    - Dst: rng
      Src: /src/opendal/core/core/src/types/context/write.rs:430,1
    - Dst: Arc::new
      Src: /src/opendal/core/core/src/types/context/write.rs:433,1
    - Dst: Mutex::new
      Src: /src/opendal/core/core/src/types/context/write.rs:433,1
    - Dst: random_range
      Src: /src/opendal/core/core/src/types/context/write.rs:434,1
    - Dst: WriteGenerator::new
      Src: /src/opendal/core/core/src/types/context/write.rs:435,1
    - Dst: Box::new
      Src: /src/opendal/core/core/src/types/context/write.rs:436,1
    - Dst: io::Result::clone
      Src: /src/opendal/core/core/src/types/context/write.rs:437,1
    - Dst: Arc::new
      Src: /src/opendal/core/core/src/types/context/write.rs:438,1
    - Dst: Mutex::new
      Src: /src/opendal/core/core/src/types/context/write.rs:438,1
    - Dst: Some
      Src: /src/opendal/core/core/src/types/context/write.rs:440,1
    - Dst: random_range
      Src: /src/opendal/core/core/src/types/context/write.rs:446,1
    - Dst: fill_bytes
      Src: /src/opendal/core/core/src/types/context/write.rs:449,1
    - Dst: extend_from_slice
      Src: /src/opendal/core/core/src/types/context/write.rs:451,1
    - Dst: Bytes::from
      Src: /src/opendal/core/core/src/types/context/write.rs:453,1
    - Dst: Result::clone
      Src: /src/opendal/core/core/src/types/context/write.rs:453,1
    - Dst: Result::is_empty
      Src: /src/opendal/core/core/src/types/context/write.rs:454,1
    - Dst: Result::write
      Src: /src/opendal/core/core/src/types/context/write.rs:455,1
    - Dst: Result::clone
      Src: /src/opendal/core/core/src/types/context/write.rs:455,1
    - Dst: Self::into
      Src: /src/opendal/core/core/src/types/context/write.rs:455,1
    - Dst: Result::advance
      Src: /src/opendal/core/core/src/types/context/write.rs:456,1
    - Dst: Result::close
      Src: /src/opendal/core/core/src/types/context/write.rs:459,1
    - Dst: io::Result::lock
      Src: /src/opendal/core/core/src/types/context/write.rs:461,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/types/context/write.rs:464,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 63
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 465
      start: 427
    functionDepth: 34
    functionLinenumber: 427
    functionLinenumberEnd: 465
    functionName: tests::test_fuzz_exact_buf_writer
    functionSourceFile: /src/opendal/core/core/src/types/context/write.rs
    functionUses: 0
    functionsReached:
    - Box::new
    - Arc::new
    - Result::is_empty
    - Self::into
    - Result::clone
    - Ok
    - Result::advance
    - io::Result::clone
    - WriteGenerator::new
    - Some
    - Bytes::from
    - Result::close
    - random_range
    - Result::write
    - io::Result::lock
    - fill_bytes
    - rng
    - extend_from_slice
    - Mutex::new
    - setup
    linkageType: ''
    returnType: Result
    signature: async fn test_fuzz_exact_buf_writer() -> Result<()>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: setup
      Src: /src/opendal/core/core/src/types/context/write.rs:474,1
    - Dst: Arc::new
      Src: /src/opendal/core/core/src/types/context/write.rs:479,1
    - Dst: Mutex::new
      Src: /src/opendal/core/core/src/types/context/write.rs:479,1
    - Dst: Arc::new
      Src: /src/opendal/core/core/src/types/context/write.rs:480,1
    - Dst: Mutex::new
      Src: /src/opendal/core/core/src/types/context/write.rs:480,1
    - Dst: WriteGenerator::new
      Src: /src/opendal/core/core/src/types/context/write.rs:481,1
    - Dst: Box::new
      Src: /src/opendal/core/core/src/types/context/write.rs:482,1
    - Dst: io::Result::clone
      Src: /src/opendal/core/core/src/types/context/write.rs:483,1
    - Dst: Self::clone
      Src: /src/opendal/core/core/src/types/context/write.rs:484,1
    - Dst: Some
      Src: /src/opendal/core/core/src/types/context/write.rs:486,1
    - Dst: rng
      Src: /src/opendal/core/core/src/types/context/write.rs:490,1
    - Dst: fill_bytes
      Src: /src/opendal/core/core/src/types/context/write.rs:492,1
    - Dst: Bytes::from
      Src: /src/opendal/core/core/src/types/context/write.rs:494,1
    - Dst: clone
      Src: /src/opendal/core/core/src/types/context/write.rs:494,1
    - Dst: Result::clone
      Src: /src/opendal/core/core/src/types/context/write.rs:497,1
    - Dst: usize::is_empty
      Src: /src/opendal/core/core/src/types/context/write.rs:498,1
    - Dst: Result::write
      Src: /src/opendal/core/core/src/types/context/write.rs:499,1
    - Dst: usize::clone
      Src: /src/opendal/core/core/src/types/context/write.rs:499,1
    - Dst: Self::into
      Src: /src/opendal/core/core/src/types/context/write.rs:499,1
    - Dst: usize::advance
      Src: /src/opendal/core/core/src/types/context/write.rs:500,1
    - Dst: Result::close
      Src: /src/opendal/core/core/src/types/context/write.rs:503,1
    - Dst: io::Result::lock
      Src: /src/opendal/core/core/src/types/context/write.rs:506,1
    - Dst: Self::lock
      Src: /src/opendal/core/core/src/types/context/write.rs:511,1
    - Dst: Self::iter
      Src: /src/opendal/core/core/src/types/context/write.rs:514,1
    - Dst: enumerate
      Src: /src/opendal/core/core/src/types/context/write.rs:514,1
    - Dst: Self::len
      Src: /src/opendal/core/core/src/types/context/write.rs:515,1
    - Dst: div_ceil
      Src: /src/opendal/core/core/src/types/context/write.rs:534,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/types/context/write.rs:543,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 72
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 544
      start: 473
    functionDepth: 34
    functionLinenumber: 473
    functionLinenumberEnd: 544
    functionName: tests::test_exact_buf_writer_large_buffer_splits_into_chunks
    functionSourceFile: /src/opendal/core/core/src/types/context/write.rs
    functionUses: 0
    functionsReached:
    - Box::new
    - Arc::new
    - clone
    - Self::clone
    - Self::into
    - usize::advance
    - Self::iter
    - usize::is_empty
    - Result::clone
    - usize::clone
    - Self::len
    - Ok
    - WriteGenerator::new
    - Some
    - Bytes::from
    - Result::close
    - io::Result::lock
    - Result::write
    - enumerate
    - fill_bytes
    - Self::lock
    - rng
    - div_ceil
    - io::Result::clone
    - Mutex::new
    - setup
    linkageType: ''
    returnType: Result
    signature: async fn test_exact_buf_writer_large_buffer_splits_into_chunks() ->
      Result<()>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::chunk
      Src: /src/opendal/core/core/src/types/write/writer.rs:168,1
    - Dst: Result::len
      Src: /src/opendal/core/core/src/types/write/writer.rs:168,1
    - Dst: Result::remaining
      Src: /src/opendal/core/core/src/types/write/writer.rs:168,1
    - Dst: Result::copy_to_bytes
      Src: /src/opendal/core/core/src/types/write/writer.rs:169,1
    - Dst: Result::remaining
      Src: /src/opendal/core/core/src/types/write/writer.rs:169,1
    - Dst: Writer::write
      Src: /src/opendal/core/core/src/types/write/writer.rs:170,1
    - Dst: Buffer::from
      Src: /src/opendal/core/core/src/types/write/writer.rs:170,1
    - Dst: Vec::new
      Src: /src/opendal/core/core/src/types/write/writer.rs:177,1
    - Dst: Result::has_remaining
      Src: /src/opendal/core/core/src/types/write/writer.rs:178,1
    - Dst: Result::chunk
      Src: /src/opendal/core/core/src/types/write/writer.rs:179,1
    - Dst: Result::len
      Src: /src/opendal/core/core/src/types/write/writer.rs:179,1
    - Dst: BufferChunks::push
      Src: /src/opendal/core/core/src/types/write/writer.rs:180,1
    - Dst: Result::copy_to_bytes
      Src: /src/opendal/core/core/src/types/write/writer.rs:180,1
    - Dst: Writer::write
      Src: /src/opendal/core/core/src/types/write/writer.rs:182,1
    - Dst: Buffer::from
      Src: /src/opendal/core/core/src/types/write/writer.rs:182,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 37
    argCount: 1
    argNames:
    - bs
    argTypes:
    - impl Buf
    constantsTouched: []
    func_position:
      end: 183
      start: 162
    functionDepth: 37
    functionLinenumber: 162
    functionLinenumberEnd: 183
    functionName: Writer::write_from
    functionSourceFile: /src/opendal/core/core/src/types/write/writer.rs
    functionUses: 0
    functionsReached:
    - BufferChunks::push
    - Writer::write
    - Result::has_remaining
    - Result::copy_to_bytes
    - Result::remaining
    - Result::len
    - Result::chunk
    - Vec::new
    - Buffer::from
    linkageType: ''
    returnType: Result
    signature: 'pub async fn write_from(&mut self, bs: impl Buf) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: BufferSink::new
      Src: /src/opendal/core/core/src/types/write/writer.rs:261,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 262
      start: 260
    functionDepth: 2
    functionLinenumber: 260
    functionLinenumberEnd: 262
    functionName: Writer::into_sink
    functionSourceFile: /src/opendal/core/core/src/types/write/writer.rs
    functionUses: 0
    functionsReached:
    - BufferSink::new
    linkageType: ''
    returnType: BufferSink
    signature: pub fn into_sink(self) -> BufferSink
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: FuturesAsyncWriter::new
      Src: /src/opendal/core/core/src/types/write/writer.rs:319,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 320
      start: 318
    functionDepth: 3
    functionLinenumber: 318
    functionLinenumberEnd: 320
    functionName: Writer::into_futures_async_write
    functionSourceFile: /src/opendal/core/core/src/types/write/writer.rs
    functionUses: 0
    functionsReached:
    - FuturesAsyncWriter::new
    linkageType: ''
    returnType: FuturesAsyncWriter
    signature: pub fn into_futures_async_write(self) -> FuturesAsyncWriter
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: FuturesBytesSink::new
      Src: /src/opendal/core/core/src/types/write/writer.rs:376,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 377
      start: 375
    functionDepth: 3
    functionLinenumber: 375
    functionLinenumberEnd: 377
    functionName: Writer::into_bytes_sink
    functionSourceFile: /src/opendal/core/core/src/types/write/writer.rs
    functionUses: 0
    functionsReached:
    - FuturesBytesSink::new
    linkageType: ''
    returnType: FuturesBytesSink
    signature: pub fn into_bytes_sink(self) -> FuturesBytesSink
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: rand::rng
      Src: /src/opendal/core/core/src/types/read/reader.rs:717,1
    - Dst: random_range
      Src: /src/opendal/core/core/src/types/read/reader.rs:719,1
    - Dst: fill_bytes
      Src: /src/opendal/core/core/src/types/read/reader.rs:721,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 723
      start: 716
    functionDepth: 0
    functionLinenumber: 716
    functionLinenumberEnd: 723
    functionName: tests::gen_random_bytes
    functionSourceFile: /src/opendal/core/core/src/types/read/reader.rs
    functionUses: 0
    functionsReached:
    - fill_bytes
    - random_range
    - rand::rng
    linkageType: ''
    returnType: Vec
    signature: fn gen_random_bytes() -> Vec<u8>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Operator::new
      Src: /src/opendal/core/core/src/types/write/writer.rs:399,1
    - Dst: services::Memory::default
      Src: /src/opendal/core/core/src/types/write/writer.rs:399,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/core/src/types/write/writer.rs:399,1
    - Dst: gen_random_bytes
      Src: /src/opendal/core/core/src/types/write/writer.rs:402,1
    - Dst: writer
      Src: /src/opendal/core/core/src/types/write/writer.rs:403,1
    - Dst: unwrap
      Src: /src/opendal/core/core/src/types/write/writer.rs:403,1
    - Dst: Result::write
      Src: /src/opendal/core/core/src/types/write/writer.rs:404,1
    - Dst: Result::clone
      Src: /src/opendal/core/core/src/types/write/writer.rs:405,1
    - Dst: expect
      Src: /src/opendal/core/core/src/types/write/writer.rs:404,1
    - Dst: Result::close
      Src: /src/opendal/core/core/src/types/write/writer.rs:408,1
    - Dst: expect
      Src: /src/opendal/core/core/src/types/write/writer.rs:408,1
    - Dst: read
      Src: /src/opendal/core/core/src/types/write/writer.rs:410,1
    - Dst: expect
      Src: /src/opendal/core/core/src/types/write/writer.rs:410,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 30
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 413
      start: 398
    functionDepth: 35
    functionLinenumber: 398
    functionLinenumberEnd: 413
    functionName: tests::test_writer_write
    functionSourceFile: /src/opendal/core/core/src/types/write/writer.rs
    functionUses: 0
    functionsReached:
    - Result::clone
    - read
    - Operator::new
    - expect
    - unwrap
    - gen_random_bytes
    - Result::close
    - Result::write
    - Result::unwrap
    - writer
    - services::Memory::default
    linkageType: ''
    returnType: void
    signature: async fn test_writer_write()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Operator::new
      Src: /src/opendal/core/core/src/types/write/writer.rs:417,1
    - Dst: services::Memory::default
      Src: /src/opendal/core/core/src/types/write/writer.rs:417,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/core/src/types/write/writer.rs:417,1
    - Dst: gen_random_bytes
      Src: /src/opendal/core/core/src/types/write/writer.rs:420,1
    - Dst: writer
      Src: /src/opendal/core/core/src/types/write/writer.rs:421,1
    - Dst: unwrap
      Src: /src/opendal/core/core/src/types/write/writer.rs:421,1
    - Dst: Result::write_from
      Src: /src/opendal/core/core/src/types/write/writer.rs:422,1
    - Dst: Bytes::from
      Src: /src/opendal/core/core/src/types/write/writer.rs:423,1
    - Dst: Result::clone
      Src: /src/opendal/core/core/src/types/write/writer.rs:423,1
    - Dst: expect
      Src: /src/opendal/core/core/src/types/write/writer.rs:422,1
    - Dst: Result::close
      Src: /src/opendal/core/core/src/types/write/writer.rs:426,1
    - Dst: expect
      Src: /src/opendal/core/core/src/types/write/writer.rs:426,1
    - Dst: read
      Src: /src/opendal/core/core/src/types/write/writer.rs:428,1
    - Dst: expect
      Src: /src/opendal/core/core/src/types/write/writer.rs:428,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 31
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 431
      start: 416
    functionDepth: 35
    functionLinenumber: 416
    functionLinenumberEnd: 431
    functionName: tests::test_writer_write_from
    functionSourceFile: /src/opendal/core/core/src/types/write/writer.rs
    functionUses: 0
    functionsReached:
    - Result::clone
    - read
    - Operator::new
    - expect
    - Result::write_from
    - unwrap
    - gen_random_bytes
    - Bytes::from
    - Result::close
    - Result::unwrap
    - writer
    - services::Memory::default
    linkageType: ''
    returnType: void
    signature: async fn test_writer_write_from()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Operator::new
      Src: /src/opendal/core/core/src/types/write/writer.rs:435,1
    - Dst: services::Memory::default
      Src: /src/opendal/core/core/src/types/write/writer.rs:435,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/core/src/types/write/writer.rs:435,1
    - Dst: Bytes::from
      Src: /src/opendal/core/core/src/types/write/writer.rs:438,1
    - Dst: gen_random_bytes
      Src: /src/opendal/core/core/src/types/write/writer.rs:438,1
    - Dst: Bytes::from
      Src: /src/opendal/core/core/src/types/write/writer.rs:439,1
    - Dst: gen_random_bytes
      Src: /src/opendal/core/core/src/types/write/writer.rs:439,1
    - Dst: Result::clone
      Src: /src/opendal/core/core/src/types/write/writer.rs:441,1
    - Dst: Self::chain
      Src: /src/opendal/core/core/src/types/write/writer.rs:441,1
    - Dst: Result::clone
      Src: /src/opendal/core/core/src/types/write/writer.rs:441,1
    - Dst: Result::chain
      Src: /src/opendal/core/core/src/types/write/writer.rs:442,1
    - Dst: writer
      Src: /src/opendal/core/core/src/types/write/writer.rs:444,1
    - Dst: unwrap
      Src: /src/opendal/core/core/src/types/write/writer.rs:444,1
    - Dst: Result::write_from
      Src: /src/opendal/core/core/src/types/write/writer.rs:445,1
    - Dst: expect
      Src: /src/opendal/core/core/src/types/write/writer.rs:445,1
    - Dst: Result::close
      Src: /src/opendal/core/core/src/types/write/writer.rs:446,1
    - Dst: expect
      Src: /src/opendal/core/core/src/types/write/writer.rs:446,1
    - Dst: read
      Src: /src/opendal/core/core/src/types/write/writer.rs:448,1
    - Dst: expect
      Src: /src/opendal/core/core/src/types/write/writer.rs:448,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 39
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 454
      start: 434
    functionDepth: 35
    functionLinenumber: 434
    functionLinenumberEnd: 454
    functionName: tests::test_writer_write_from_chain
    functionSourceFile: /src/opendal/core/core/src/types/write/writer.rs
    functionUses: 0
    functionsReached:
    - Result::clone
    - read
    - Operator::new
    - Self::chain
    - expect
    - Result::write_from
    - unwrap
    - gen_random_bytes
    - Result::chain
    - Bytes::from
    - Result::close
    - Result::unwrap
    - writer
    - services::Memory::default
    linkageType: ''
    returnType: void
    signature: async fn test_writer_write_from_chain()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: State::Idle
      Src: /src/opendal/core/core/src/types/write/buffer_sink.rs:52,1
    - Dst: Some
      Src: /src/opendal/core/core/src/types/write/buffer_sink.rs:52,1
    - Dst: Buffer::new
      Src: /src/opendal/core/core/src/types/write/buffer_sink.rs:53,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - w
    argTypes:
    - WriteGenerator<oio::Writer>
    constantsTouched: []
    func_position:
      end: 55
      start: 50
    functionDepth: 1
    functionLinenumber: 50
    functionLinenumberEnd: 55
    functionName: BufferSink::new
    functionSourceFile: /src/opendal/core/core/src/types/write/buffer_sink.rs
    functionUses: 3
    functionsReached:
    - State::Idle
    - Buffer::new
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub(crate) fn new(w: WriteGenerator<oio::Writer>) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: BufferSink::poll_flush
      Src: /src/opendal/core/core/src/types/write/buffer_sink.rs:62,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - cx
    argTypes:
    - Pin<&mut Self>
    - '&mut Context<''_>'
    constantsTouched: []
    func_position:
      end: 63
      start: 61
    functionDepth: 37
    functionLinenumber: 61
    functionLinenumberEnd: 63
    functionName: BufferSink::poll_ready
    functionSourceFile: /src/opendal/core/core/src/types/write/buffer_sink.rs
    functionUses: 0
    functionsReached:
    - BufferSink::poll_flush
    linkageType: ''
    returnType: Poll
    signature: 'fn poll_ready(self: Pin<&mut Self>, cx: &mut Context<''_>) -> Poll<Result<()>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/core/core/src/types/write/buffer_sink.rs:67,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - item
    argTypes:
    - Pin<&mut Self>
    - Buffer
    constantsTouched: []
    func_position:
      end: 68
      start: 65
    functionDepth: 0
    functionLinenumber: 65
    functionLinenumberEnd: 68
    functionName: BufferSink::start_send
    functionSourceFile: /src/opendal/core/core/src/types/write/buffer_sink.rs
    functionUses: 0
    functionsReached:
    - Ok
    linkageType: ''
    returnType: Result
    signature: 'fn start_send(mut self: Pin<&mut Self>, item: Buffer) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: BufferSink::get_mut
      Src: /src/opendal/core/core/src/types/write/buffer_sink.rs:71,1
    - Dst: is_empty
      Src: /src/opendal/core/core/src/types/write/buffer_sink.rs:75,1
    - Dst: Poll::Ready
      Src: /src/opendal/core/core/src/types/write/buffer_sink.rs:76,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/types/write/buffer_sink.rs:76,1
    - Dst: Self::take
      Src: /src/opendal/core/core/src/types/write/buffer_sink.rs:78,1
    - Dst: Poll::Ready
      Src: /src/opendal/core/core/src/types/write/buffer_sink.rs:79,1
    - Dst: Err
      Src: /src/opendal/core/core/src/types/write/buffer_sink.rs:79,1
    - Dst: Error::new
      Src: /src/opendal/core/core/src/types/write/buffer_sink.rs:79,1
    - Dst: clone
      Src: /src/opendal/core/core/src/types/write/buffer_sink.rs:84,1
    - Dst: Self::write
      Src: /src/opendal/core/core/src/types/write/buffer_sink.rs:86,1
    - Dst: State::Writing
      Src: /src/opendal/core/core/src/types/write/buffer_sink.rs:89,1
    - Dst: Box::pin
      Src: /src/opendal/core/core/src/types/write/buffer_sink.rs:89,1
    - Dst: State::Idle
      Src: /src/opendal/core/core/src/types/write/buffer_sink.rs:93,1
    - Dst: Some
      Src: /src/opendal/core/core/src/types/write/buffer_sink.rs:93,1
    - Dst: advance
      Src: /src/opendal/core/core/src/types/write/buffer_sink.rs:96,1
    - Dst: Poll::Ready
      Src: /src/opendal/core/core/src/types/write/buffer_sink.rs:98,1
    - Dst: Err
      Src: /src/opendal/core/core/src/types/write/buffer_sink.rs:98,1
    - Dst: Poll::Ready
      Src: /src/opendal/core/core/src/types/write/buffer_sink.rs:102,1
    - Dst: Err
      Src: /src/opendal/core/core/src/types/write/buffer_sink.rs:102,1
    - Dst: Error::new
      Src: /src/opendal/core/core/src/types/write/buffer_sink.rs:102,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 56
    argCount: 2
    argNames:
    - cx
    argTypes:
    - Pin<&mut Self>
    - '&mut Context<''_>'
    constantsTouched: []
    func_position:
      end: 109
      start: 70
    functionDepth: 36
    functionLinenumber: 70
    functionLinenumberEnd: 109
    functionName: BufferSink::poll_flush
    functionSourceFile: /src/opendal/core/core/src/types/write/buffer_sink.rs
    functionUses: 1
    functionsReached:
    - Ok
    - Poll::Ready
    - BufferSink::get_mut
    - State::Idle
    - clone
    - is_empty
    - Self::take
    - Err
    - Error::new
    - Self::write
    - Some
    - advance
    - State::Writing
    - Box::pin
    linkageType: ''
    returnType: Poll
    signature: 'fn poll_flush(self: Pin<&mut Self>, cx: &mut Context<''_>) -> Poll<Result<()>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: BufferSink::get_mut
      Src: /src/opendal/core/core/src/types/write/buffer_sink.rs:112,1
    - Dst: Self::take
      Src: /src/opendal/core/core/src/types/write/buffer_sink.rs:116,1
    - Dst: Poll::Ready
      Src: /src/opendal/core/core/src/types/write/buffer_sink.rs:117,1
    - Dst: Err
      Src: /src/opendal/core/core/src/types/write/buffer_sink.rs:117,1
    - Dst: Error::new
      Src: /src/opendal/core/core/src/types/write/buffer_sink.rs:117,1
    - Dst: is_empty
      Src: /src/opendal/core/core/src/types/write/buffer_sink.rs:123,1
    - Dst: Self::close
      Src: /src/opendal/core/core/src/types/write/buffer_sink.rs:125,1
    - Dst: State::Closing
      Src: /src/opendal/core/core/src/types/write/buffer_sink.rs:128,1
    - Dst: Box::pin
      Src: /src/opendal/core/core/src/types/write/buffer_sink.rs:128,1
    - Dst: clone
      Src: /src/opendal/core/core/src/types/write/buffer_sink.rs:130,1
    - Dst: Self::write
      Src: /src/opendal/core/core/src/types/write/buffer_sink.rs:132,1
    - Dst: State::Writing
      Src: /src/opendal/core/core/src/types/write/buffer_sink.rs:135,1
    - Dst: Box::pin
      Src: /src/opendal/core/core/src/types/write/buffer_sink.rs:135,1
    - Dst: State::Idle
      Src: /src/opendal/core/core/src/types/write/buffer_sink.rs:140,1
    - Dst: Some
      Src: /src/opendal/core/core/src/types/write/buffer_sink.rs:140,1
    - Dst: advance
      Src: /src/opendal/core/core/src/types/write/buffer_sink.rs:143,1
    - Dst: Poll::Ready
      Src: /src/opendal/core/core/src/types/write/buffer_sink.rs:145,1
    - Dst: Err
      Src: /src/opendal/core/core/src/types/write/buffer_sink.rs:145,1
    - Dst: State::Idle
      Src: /src/opendal/core/core/src/types/write/buffer_sink.rs:150,1
    - Dst: Some
      Src: /src/opendal/core/core/src/types/write/buffer_sink.rs:150,1
    - Dst: State::Idle
      Src: /src/opendal/core/core/src/types/write/buffer_sink.rs:153,1
    - Dst: Poll::Ready
      Src: /src/opendal/core/core/src/types/write/buffer_sink.rs:154,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/types/write/buffer_sink.rs:154,1
    - Dst: Poll::Ready
      Src: /src/opendal/core/core/src/types/write/buffer_sink.rs:156,1
    - Dst: Err
      Src: /src/opendal/core/core/src/types/write/buffer_sink.rs:156,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 74
    argCount: 2
    argNames:
    - cx
    argTypes:
    - Pin<&mut Self>
    - '&mut Context<''_>'
    constantsTouched: []
    func_position:
      end: 161
      start: 111
    functionDepth: 36
    functionLinenumber: 111
    functionLinenumberEnd: 161
    functionName: BufferSink::poll_close
    functionSourceFile: /src/opendal/core/core/src/types/write/buffer_sink.rs
    functionUses: 0
    functionsReached:
    - State::Closing
    - Ok
    - Poll::Ready
    - BufferSink::get_mut
    - Box::pin
    - State::Idle
    - clone
    - Error::new
    - Self::take
    - Err
    - is_empty
    - Self::write
    - Some
    - advance
    - State::Writing
    - Self::close
    linkageType: ''
    returnType: Poll
    signature: 'fn poll_close(self: Pin<&mut Self>, cx: &mut Context<''_>) -> Poll<Result<()>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: BufferSink::new
      Src: /src/opendal/core/core/src/types/write/futures_async_writer.rs:45,1
    - Dst: oio::FlexBuf::new
      Src: /src/opendal/core/core/src/types/write/futures_async_writer.rs:46,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - w
    argTypes:
    - WriteGenerator<oio::Writer>
    constantsTouched: []
    func_position:
      end: 48
      start: 43
    functionDepth: 2
    functionLinenumber: 43
    functionLinenumberEnd: 48
    functionName: FuturesAsyncWriter::new
    functionSourceFile: /src/opendal/core/core/src/types/write/futures_async_writer.rs
    functionUses: 1
    functionsReached:
    - BufferSink::new
    - oio::FlexBuf::new
    linkageType: ''
    returnType: Self
    signature: 'pub(crate) fn new(w: WriteGenerator<oio::Writer>) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: FuturesAsyncWriter::get_mut
      Src: /src/opendal/core/core/src/types/write/futures_async_writer.rs:57,1
    - Dst: put
      Src: /src/opendal/core/core/src/types/write/futures_async_writer.rs:60,1
    - Dst: Poll::Ready
      Src: /src/opendal/core/core/src/types/write/futures_async_writer.rs:62,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/types/write/futures_async_writer.rs:62,1
    - Dst: map_err
      Src: /src/opendal/core/core/src/types/write/futures_async_writer.rs:65,1
    - Dst: get
      Src: /src/opendal/core/core/src/types/write/futures_async_writer.rs:67,1
    - Dst: expect
      Src: /src/opendal/core/core/src/types/write/futures_async_writer.rs:67,1
    - Dst: start_send_unpin
      Src: /src/opendal/core/core/src/types/write/futures_async_writer.rs:68,1
    - Dst: Buffer::from
      Src: /src/opendal/core/core/src/types/write/futures_async_writer.rs:69,1
    - Dst: map_err
      Src: /src/opendal/core/core/src/types/write/futures_async_writer.rs:68,1
    - Dst: clean
      Src: /src/opendal/core/core/src/types/write/futures_async_writer.rs:71,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 35
    argCount: 3
    argNames:
    - cx
    - buf
    argTypes:
    - Pin<&mut Self>
    - '&mut Context<''_>'
    - '&[u8]'
    constantsTouched: []
    func_position:
      end: 73
      start: 52
    functionDepth: 40
    functionLinenumber: 52
    functionLinenumberEnd: 73
    functionName: FuturesAsyncWriter::poll_write
    functionSourceFile: /src/opendal/core/core/src/types/write/futures_async_writer.rs
    functionUses: 0
    functionsReached:
    - map_err
    - get
    - expect
    - Ok
    - FuturesAsyncWriter::get_mut
    - Poll::Ready
    - clean
    - put
    - start_send_unpin
    - Buffer::from
    linkageType: ''
    returnType: Poll
    signature: 'fn poll_write(self: Pin<&mut Self>,cx: &mut Context<''_>,buf: &[u8],)
      -> Poll<io::Result<usize>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: FuturesAsyncWriter::get_mut
      Src: /src/opendal/core/core/src/types/write/futures_async_writer.rs:76,1
    - Dst: freeze
      Src: /src/opendal/core/core/src/types/write/futures_async_writer.rs:80,1
    - Dst: get
      Src: /src/opendal/core/core/src/types/write/futures_async_writer.rs:81,1
    - Dst: Poll::Ready
      Src: /src/opendal/core/core/src/types/write/futures_async_writer.rs:82,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/types/write/futures_async_writer.rs:82,1
    - Dst: map_err
      Src: /src/opendal/core/core/src/types/write/futures_async_writer.rs:85,1
    - Dst: start_send_unpin
      Src: /src/opendal/core/core/src/types/write/futures_async_writer.rs:86,1
    - Dst: Buffer::from
      Src: /src/opendal/core/core/src/types/write/futures_async_writer.rs:87,1
    - Dst: map_err
      Src: /src/opendal/core/core/src/types/write/futures_async_writer.rs:86,1
    - Dst: clean
      Src: /src/opendal/core/core/src/types/write/futures_async_writer.rs:89,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 32
    argCount: 2
    argNames:
    - cx
    argTypes:
    - Pin<&mut Self>
    - '&mut Context<''_>'
    constantsTouched: []
    func_position:
      end: 91
      start: 75
    functionDepth: 40
    functionLinenumber: 75
    functionLinenumberEnd: 91
    functionName: FuturesAsyncWriter::poll_flush
    functionSourceFile: /src/opendal/core/core/src/types/write/futures_async_writer.rs
    functionUses: 0
    functionsReached:
    - map_err
    - get
    - Ok
    - FuturesAsyncWriter::get_mut
    - Poll::Ready
    - freeze
    - clean
    - start_send_unpin
    - Buffer::from
    linkageType: ''
    returnType: Poll
    signature: 'fn poll_flush(self: Pin<&mut Self>, cx: &mut Context<''_>) -> Poll<io::Result<()>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: FuturesAsyncWriter::get_mut
      Src: /src/opendal/core/core/src/types/write/futures_async_writer.rs:94,1
    - Dst: freeze
      Src: /src/opendal/core/core/src/types/write/futures_async_writer.rs:98,1
    - Dst: get
      Src: /src/opendal/core/core/src/types/write/futures_async_writer.rs:99,1
    - Dst: poll_close_unpin
      Src: /src/opendal/core/core/src/types/write/futures_async_writer.rs:100,1
    - Dst: map_err
      Src: /src/opendal/core/core/src/types/write/futures_async_writer.rs:100,1
    - Dst: map_err
      Src: /src/opendal/core/core/src/types/write/futures_async_writer.rs:103,1
    - Dst: start_send_unpin
      Src: /src/opendal/core/core/src/types/write/futures_async_writer.rs:104,1
    - Dst: Buffer::from
      Src: /src/opendal/core/core/src/types/write/futures_async_writer.rs:105,1
    - Dst: map_err
      Src: /src/opendal/core/core/src/types/write/futures_async_writer.rs:104,1
    - Dst: clean
      Src: /src/opendal/core/core/src/types/write/futures_async_writer.rs:107,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 34
    argCount: 2
    argNames:
    - cx
    argTypes:
    - Pin<&mut Self>
    - '&mut Context<''_>'
    constantsTouched: []
    func_position:
      end: 109
      start: 93
    functionDepth: 40
    functionLinenumber: 93
    functionLinenumberEnd: 109
    functionName: FuturesAsyncWriter::poll_close
    functionSourceFile: /src/opendal/core/core/src/types/write/futures_async_writer.rs
    functionUses: 0
    functionsReached:
    - map_err
    - get
    - FuturesAsyncWriter::get_mut
    - freeze
    - clean
    - poll_close_unpin
    - start_send_unpin
    - Buffer::from
    linkageType: ''
    returnType: Poll
    signature: 'fn poll_close(self: Pin<&mut Self>, cx: &mut Context<''_>) -> Poll<io::Result<()>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: BufferSink::new
      Src: /src/opendal/core/core/src/types/write/futures_bytes_sink.rs:43,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - w
    argTypes:
    - WriteGenerator<oio::Writer>
    constantsTouched: []
    func_position:
      end: 45
      start: 41
    functionDepth: 2
    functionLinenumber: 41
    functionLinenumberEnd: 45
    functionName: FuturesBytesSink::new
    functionSourceFile: /src/opendal/core/core/src/types/write/futures_bytes_sink.rs
    functionUses: 1
    functionsReached:
    - BufferSink::new
    linkageType: ''
    returnType: Self
    signature: 'pub(crate) fn new(w: WriteGenerator<oio::Writer>) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: poll_ready_unpin
      Src: /src/opendal/core/core/src/types/write/futures_bytes_sink.rs:55,1
    - Dst: map_err
      Src: /src/opendal/core/core/src/types/write/futures_bytes_sink.rs:55,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - cx
    argTypes:
    - Pin<&mut Self>
    - '&mut Context<''_>'
    constantsTouched: []
    func_position:
      end: 56
      start: 51
    functionDepth: 0
    functionLinenumber: 51
    functionLinenumberEnd: 56
    functionName: FuturesBytesSink::poll_ready
    functionSourceFile: /src/opendal/core/core/src/types/write/futures_bytes_sink.rs
    functionUses: 0
    functionsReached:
    - map_err
    - poll_ready_unpin
    linkageType: ''
    returnType: Poll
    signature: 'fn poll_ready(mut self: Pin<&mut Self>,cx: &mut Context<''_>,) ->
      Poll<Result<(), std::io::Error>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: start_send_unpin
      Src: /src/opendal/core/core/src/types/write/futures_bytes_sink.rs:59,1
    - Dst: Buffer::from
      Src: /src/opendal/core/core/src/types/write/futures_bytes_sink.rs:60,1
    - Dst: map_err
      Src: /src/opendal/core/core/src/types/write/futures_bytes_sink.rs:59,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - item
    argTypes:
    - Pin<&mut Self>
    - Bytes
    constantsTouched: []
    func_position:
      end: 62
      start: 58
    functionDepth: 40
    functionLinenumber: 58
    functionLinenumberEnd: 62
    functionName: FuturesBytesSink::start_send
    functionSourceFile: /src/opendal/core/core/src/types/write/futures_bytes_sink.rs
    functionUses: 0
    functionsReached:
    - start_send_unpin
    - map_err
    - Buffer::from
    linkageType: ''
    returnType: Result
    signature: 'fn start_send(mut self: Pin<&mut Self>, item: Bytes) -> Result<(),
      std::io::Error>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: poll_flush_unpin
      Src: /src/opendal/core/core/src/types/write/futures_bytes_sink.rs:68,1
    - Dst: map_err
      Src: /src/opendal/core/core/src/types/write/futures_bytes_sink.rs:68,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - cx
    argTypes:
    - Pin<&mut Self>
    - '&mut Context<''_>'
    constantsTouched: []
    func_position:
      end: 69
      start: 64
    functionDepth: 0
    functionLinenumber: 64
    functionLinenumberEnd: 69
    functionName: FuturesBytesSink::poll_flush
    functionSourceFile: /src/opendal/core/core/src/types/write/futures_bytes_sink.rs
    functionUses: 0
    functionsReached:
    - map_err
    - poll_flush_unpin
    linkageType: ''
    returnType: Poll
    signature: 'fn poll_flush(mut self: Pin<&mut Self>,cx: &mut Context<''_>,) ->
      Poll<Result<(), std::io::Error>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: poll_close_unpin
      Src: /src/opendal/core/core/src/types/write/futures_bytes_sink.rs:75,1
    - Dst: map_err
      Src: /src/opendal/core/core/src/types/write/futures_bytes_sink.rs:75,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - cx
    argTypes:
    - Pin<&mut Self>
    - '&mut Context<''_>'
    constantsTouched: []
    func_position:
      end: 76
      start: 71
    functionDepth: 0
    functionLinenumber: 71
    functionLinenumberEnd: 76
    functionName: FuturesBytesSink::poll_close
    functionSourceFile: /src/opendal/core/core/src/types/write/futures_bytes_sink.rs
    functionUses: 0
    functionsReached:
    - map_err
    - poll_close_unpin
    linkageType: ''
    returnType: Poll
    signature: 'fn poll_close(mut self: Pin<&mut Self>,cx: &mut Context<''_>,) ->
      Poll<Result<(), std::io::Error>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Box::pin
      Src: /src/opendal/core/core/src/types/http_transport/mod.rs:66,1
    - Dst: T::fetch
      Src: /src/opendal/core/core/src/types/http_transport/mod.rs:66,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - req
    argTypes:
    - Request<Buffer>
    constantsTouched: []
    func_position:
      end: 67
      start: 65
    functionDepth: 3
    functionLinenumber: 65
    functionLinenumberEnd: 67
    functionName: T::fetch_dyn
    functionSourceFile: /src/opendal/core/core/src/types/http_transport/mod.rs
    functionUses: 0
    functionsReached:
    - Box::pin
    - T::fetch
    linkageType: ''
    returnType: BoxedFuture
    signature: 'fn fetch_dyn(&self, req: Request<Buffer>) -> BoxedFuture<''_, Result<Response<HttpBody>>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::debug_struct
      Src: /src/opendal/core/core/src/types/http_transport/mod.rs:78,1
    - Dst: finish
      Src: /src/opendal/core/core/src/types/http_transport/mod.rs:78,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - f
    argTypes:
    - '&mut Formatter<''_>'
    constantsTouched: []
    func_position:
      end: 79
      start: 77
    functionDepth: 3
    functionLinenumber: 77
    functionLinenumberEnd: 79
    functionName: HttpTransporter::fmt
    functionSourceFile: /src/opendal/core/core/src/types/http_transport/mod.rs
    functionUses: 0
    functionsReached:
    - finish
    - Result::debug_struct
    linkageType: ''
    returnType: std::fmt::Result
    signature: 'fn fmt(&self, f: &mut Formatter<''_>) -> std::fmt::Result'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self::new
      Src: /src/opendal/core/core/src/types/http_transport/mod.rs:84,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 85
      start: 83
    functionDepth: 2
    functionLinenumber: 83
    functionLinenumberEnd: 85
    functionName: HttpTransporter::default
    functionSourceFile: /src/opendal/core/core/src/types/http_transport/mod.rs
    functionUses: 3
    functionsReached:
    - Self::new
    linkageType: ''
    returnType: Self
    signature: fn default() -> Self
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Arc::new
      Src: /src/opendal/core/core/src/types/http_transport/mod.rs:92,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - transport
    argTypes:
    - impl HttpTransport
    constantsTouched: []
    func_position:
      end: 94
      start: 90
    functionDepth: 2
    functionLinenumber: 90
    functionLinenumberEnd: 94
    functionName: HttpTransporter::new
    functionSourceFile: /src/opendal/core/core/src/types/http_transport/mod.rs
    functionUses: 10
    functionsReached:
    - Arc::new
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(transport: impl HttpTransport) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: set
      Src: /src/opendal/core/core/src/types/http_transport/mod.rs:100,1
    - Dst: Self::new
      Src: /src/opendal/core/core/src/types/http_transport/mod.rs:100,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - transport
    argTypes:
    - impl HttpTransport
    constantsTouched: []
    func_position:
      end: 101
      start: 99
    functionDepth: 34
    functionLinenumber: 99
    functionLinenumberEnd: 101
    functionName: HttpTransporter::install_default
    functionSourceFile: /src/opendal/core/core/src/types/http_transport/mod.rs
    functionUses: 1
    functionsReached:
    - set
    - Self::new
    linkageType: ''
    returnType: void
    signature: 'pub fn install_default(transport: impl HttpTransport)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: HttpTransporter::fetch
      Src: /src/opendal/core/core/src/types/http_transport/mod.rs:105,1
    - Dst: into_parts
      Src: /src/opendal/core/core/src/types/http_transport/mod.rs:105,1
    - Dst: read_all
      Src: /src/opendal/core/core/src/types/http_transport/mod.rs:106,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/types/http_transport/mod.rs:107,1
    - Dst: Response::from_parts
      Src: /src/opendal/core/core/src/types/http_transport/mod.rs:107,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 1
    argNames:
    - req
    argTypes:
    - Request<Buffer>
    constantsTouched: []
    func_position:
      end: 108
      start: 104
    functionDepth: 33
    functionLinenumber: 104
    functionLinenumberEnd: 108
    functionName: HttpTransporter::send
    functionSourceFile: /src/opendal/core/core/src/types/http_transport/mod.rs
    functionUses: 1
    functionsReached:
    - HttpTransporter::fetch
    - Ok
    - Response::from_parts
    - read_all
    - into_parts
    linkageType: ''
    returnType: Result
    signature: 'pub async fn send(&self, req: Request<Buffer>) -> Result<Response<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: HttpTransporter::fetch
      Src: /src/opendal/core/core/src/types/http_transport/mod.rs:124,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - req
    argTypes:
    - Request<Buffer>
    constantsTouched: []
    func_position:
      end: 125
      start: 123
    functionDepth: 1
    functionLinenumber: 123
    functionLinenumberEnd: 125
    functionName: HttpTransporter::fetch
    functionSourceFile: /src/opendal/core/core/src/types/http_transport/mod.rs
    functionUses: 2
    functionsReached:
    - HttpTransporter::fetch
    linkageType: ''
    returnType: Result
    signature: 'async fn fetch(&self, req: Request<Buffer>) -> Result<Response<HttpBody>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::map
      Src: /src/opendal/core/core/src/types/http_transport/mod.rs:131,1
    - Dst: HttpTransporter::send
      Src: /src/opendal/core/core/src/types/http_transport/mod.rs:132,1
    - Dst: map_err
      Src: /src/opendal/core/core/src/types/http_transport/mod.rs:132,1
    - Dst: Error::is_temporary
      Src: /src/opendal/core/core/src/types/http_transport/mod.rs:133,1
    - Dst: reqsign_core::Error::unexpected
      Src: /src/opendal/core/core/src/types/http_transport/mod.rs:134,1
    - Dst: with_source
      Src: /src/opendal/core/core/src/types/http_transport/mod.rs:134,1
    - Dst: set_retryable
      Src: /src/opendal/core/core/src/types/http_transport/mod.rs:134,1
    - Dst: into_parts
      Src: /src/opendal/core/core/src/types/http_transport/mod.rs:139,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/types/http_transport/mod.rs:140,1
    - Dst: Response::from_parts
      Src: /src/opendal/core/core/src/types/http_transport/mod.rs:140,1
    - Dst: to_bytes
      Src: /src/opendal/core/core/src/types/http_transport/mod.rs:140,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 22
    argCount: 1
    argNames:
    - req
    argTypes:
    - Request<Bytes>
    constantsTouched: []
    func_position:
      end: 141
      start: 130
    functionDepth: 34
    functionLinenumber: 130
    functionLinenumberEnd: 141
    functionName: HttpTransporter::http_send
    functionSourceFile: /src/opendal/core/core/src/types/http_transport/mod.rs
    functionUses: 0
    functionsReached:
    - map_err
    - HttpTransporter::send
    - with_source
    - Ok
    - to_bytes
    - Response::from_parts
    - Error::is_temporary
    - into_parts
    - set_retryable
    - Result::map
    - reqsign_core::Error::unexpected
    linkageType: ''
    returnType: reqsign_core::Result
    signature: 'async fn http_send(&self, req: Request<Bytes>) -> reqsign_core::Result<Response<Bytes>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: fetch_with_default_transport
      Src: /src/opendal/core/core/src/types/http_transport/mod.rs:155,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - req
    argTypes:
    - Request<Buffer>
    constantsTouched: []
    func_position:
      end: 156
      start: 154
    functionDepth: 37
    functionLinenumber: 154
    functionLinenumberEnd: 156
    functionName: DefaultHttpTransport::fetch
    functionSourceFile: /src/opendal/core/core/src/types/http_transport/mod.rs
    functionUses: 0
    functionsReached:
    - fetch_with_default_transport
    linkageType: ''
    returnType: Result
    signature: 'async fn fetch(&self, req: Request<Buffer>) -> Result<Response<HttpBody>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: get
      Src: /src/opendal/core/core/src/types/http_transport/mod.rs:160,1
    - Dst: Self::fetch
      Src: /src/opendal/core/core/src/types/http_transport/mod.rs:161,1
    - Dst: Err
      Src: /src/opendal/core/core/src/types/http_transport/mod.rs:162,1
    - Dst: Error::new
      Src: /src/opendal/core/core/src/types/http_transport/mod.rs:162,1
    - Dst: Self::with_operation
      Src: /src/opendal/core/core/src/types/http_transport/mod.rs:162,1
    - Dst: Self::with_context
      Src: /src/opendal/core/core/src/types/http_transport/mod.rs:162,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 1
    argNames:
    - req
    argTypes:
    - Request<Buffer>
    constantsTouched: []
    func_position:
      end: 172
      start: 159
    functionDepth: 36
    functionLinenumber: 159
    functionLinenumberEnd: 172
    functionName: fetch_with_default_transport
    functionSourceFile: /src/opendal/core/core/src/types/http_transport/mod.rs
    functionUses: 1
    functionsReached:
    - get
    - Error::new
    - Err
    - Self::fetch
    - Self::with_operation
    - Self::with_context
    linkageType: ''
    returnType: Result
    signature: 'async fn fetch_with_default_transport(req: Request<Buffer>) -> Result<Response<HttpBody>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Box::new
      Src: /src/opendal/core/core/src/types/http_transport/body.rs:77,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - stream
    - size
    argTypes:
    - S
    - Option<u64>
    constantsTouched: []
    func_position:
      end: 81
      start: 72
    functionDepth: 2
    functionLinenumber: 72
    functionLinenumberEnd: 81
    functionName: HttpBody::new
    functionSourceFile: /src/opendal/core/core/src/types/http_transport/body.rs
    functionUses: 1
    functionsReached:
    - Box::new
    linkageType: ''
    returnType: Self
    signature: 'pub fn new<S>(stream: S, size: Option<u64>) -> SelfwhereS: Stream<Item
      = Result<Buffer>> + Unpin + ''static,'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - f
    argTypes:
    - "impl FnOnce(\n            Box<dyn Stream<Item = Result<Buffer>> + Unpin + 'static>,\n\
      \        ) -> Box<dyn Stream<Item = Result<Buffer>> + Unpin + 'static>"
    constantsTouched: []
    func_position:
      end: 106
      start: 98
    functionDepth: 0
    functionLinenumber: 98
    functionLinenumberEnd: 106
    functionName: HttpBody::map_inner
    functionSourceFile: /src/opendal/core/core/src/types/http_transport/body.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: 'pub fn map_inner(mut self,f: impl FnOnce(Box<dyn Stream<Item = Result<Buffer>>
      + Unpin + ''static>,) -> Box<dyn Stream<Item = Result<Buffer>> + Unpin + ''static>,)
      -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: HttpBody::read_all
      Src: /src/opendal/core/core/src/types/http_transport/body.rs:110,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 111
      start: 109
    functionDepth: 33
    functionLinenumber: 109
    functionLinenumberEnd: 111
    functionName: HttpBody::to_buffer
    functionSourceFile: /src/opendal/core/core/src/types/http_transport/body.rs
    functionUses: 0
    functionsReached:
    - HttpBody::read_all
    linkageType: ''
    returnType: Result
    signature: pub async fn to_buffer(&mut self) -> Result<Buffer>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/core/core/src/types/http_transport/body.rs:116,1
    - Dst: cmp
      Src: /src/opendal/core/core/src/types/http_transport/body.rs:120,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/types/http_transport/body.rs:121,1
    - Dst: Err
      Src: /src/opendal/core/core/src/types/http_transport/body.rs:122,1
    - Dst: Error::new
      Src: /src/opendal/core/core/src/types/http_transport/body.rs:122,1
    - Dst: Self::set_temporary
      Src: /src/opendal/core/core/src/types/http_transport/body.rs:122,1
    - Dst: Err
      Src: /src/opendal/core/core/src/types/http_transport/body.rs:127,1
    - Dst: Error::new
      Src: /src/opendal/core/core/src/types/http_transport/body.rs:127,1
    - Dst: Self::set_temporary
      Src: /src/opendal/core/core/src/types/http_transport/body.rs:127,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 21
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 133
      start: 114
    functionDepth: 36
    functionLinenumber: 114
    functionLinenumberEnd: 133
    functionName: HttpBody::check
    functionSourceFile: /src/opendal/core/core/src/types/http_transport/body.rs
    functionUses: 1
    functionsReached:
    - cmp
    - Ok
    - Error::new
    - Err
    - Self::set_temporary
    linkageType: ''
    returnType: Result
    signature: fn check(&self) -> Result<()>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: next
      Src: /src/opendal/core/core/src/types/http_transport/body.rs:138,1
    - Dst: transpose
      Src: /src/opendal/core/core/src/types/http_transport/body.rs:138,1
    - Dst: io::Result::len
      Src: /src/opendal/core/core/src/types/http_transport/body.rs:140,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/types/http_transport/body.rs:141,1
    - Dst: HttpBody::check
      Src: /src/opendal/core/core/src/types/http_transport/body.rs:144,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/types/http_transport/body.rs:145,1
    - Dst: Buffer::new
      Src: /src/opendal/core/core/src/types/http_transport/body.rs:145,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 21
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 148
      start: 137
    functionDepth: 37
    functionLinenumber: 137
    functionLinenumberEnd: 148
    functionName: HttpBody::read
    functionSourceFile: /src/opendal/core/core/src/types/http_transport/body.rs
    functionUses: 0
    functionsReached:
    - next
    - transpose
    - Buffer::new
    - Ok
    - io::Result::len
    - HttpBody::check
    linkageType: ''
    returnType: Result
    signature: async fn read(&mut self) -> Result<Buffer>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: metadata
      Src: /src/opendal/core/core/src/types/read/reader.rs:129,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 130
      start: 128
    functionDepth: 37
    functionLinenumber: 128
    functionLinenumberEnd: 130
    functionName: Reader::metadata
    functionSourceFile: /src/opendal/core/core/src/types/read/reader.rs
    functionUses: 0
    functionsReached:
    - metadata
    linkageType: ''
    returnType: Option
    signature: pub fn metadata(&self) -> Option<&Metadata>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::is_empty
      Src: /src/opendal/core/core/src/types/read/reader.rs:172,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/types/read/reader.rs:173,1
    - Dst: Result::into_iter
      Src: /src/opendal/core/core/src/types/read/reader.rs:177,1
    - Dst: enumerate
      Src: /src/opendal/core/core/src/types/read/reader.rs:177,1
    - Dst: filter
      Src: /src/opendal/core/core/src/types/read/reader.rs:177,1
    - Dst: "into_iter()\n            .enumerate()\n            .filter(|(_, range)|\
        \ range.start < range.end)\n            .collect::<Vec<_>>"
      Src: /src/opendal/core/core/src/types/read/reader.rs:177,1
    - Dst: Result::is_empty
      Src: /src/opendal/core/core/src/types/read/reader.rs:182,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/types/read/reader.rs:183,1
    - Dst: Reader::merge_ranges
      Src: /src/opendal/core/core/src/types/read/reader.rs:187,1
    - Dst: Result::iter
      Src: /src/opendal/core/core/src/types/read/reader.rs:187,1
    - Dst: map
      Src: /src/opendal/core/core/src/types/read/reader.rs:187,1
    - Dst: (Vec::clone
      Src: /src/opendal/core/core/src/types/read/reader.rs:187,1
    - Dst: Result::collect
      Src: /src/opendal/core/core/src/types/read/reader.rs:187,1
    - Dst: Reader::fetch_merged_ranges
      Src: /src/opendal/core/core/src/types/read/reader.rs:188,1
    - Dst: Result::partition_point
      Src: /src/opendal/core/core/src/types/read/reader.rs:191,1
    - Dst: slice
      Src: /src/opendal/core/core/src/types/read/reader.rs:194,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/types/read/reader.rs:197,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 69
    argCount: 1
    argNames:
    - ranges
    argTypes:
    - Vec<Range<u64>>
    constantsTouched: []
    func_position:
      end: 198
      start: 171
    functionDepth: 36
    functionLinenumber: 171
    functionLinenumberEnd: 198
    functionName: Reader::fetch
    functionSourceFile: /src/opendal/core/core/src/types/read/reader.rs
    functionUses: 0
    functionsReached:
    - filter
    - "into_iter()\n            .enumerate()\n            .filter(|(_, range)| range.start\
      \ < range.end)\n            .collect::<Vec<_>>"
    - Ok
    - Reader::merge_ranges
    - Result::into_iter
    - slice
    - Result::iter
    - map
    - Result::is_empty
    - Result::collect
    - Reader::fetch_merged_ranges
    - enumerate
    - Result::partition_point
    - (Vec::clone
    linkageType: ''
    returnType: Result
    signature: 'pub async fn fetch(&self, ranges: Vec<Range<u64>>) -> Result<Vec<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Reader::plan_fetch_reads
      Src: /src/opendal/core/core/src/types/read/reader.rs:201,1
    - Dst: Result::len
      Src: /src/opendal/core/core/src/types/read/reader.rs:202,1
    - Dst: map
      Src: /src/opendal/core/core/src/types/read/reader.rs:202,1
    - Dst: Vec::new
      Src: /src/opendal/core/core/src/types/read/reader.rs:203,1
    - Dst: ".ranges.len())\n            .map(|_| Vec::new())\n            .collect::<Vec<Vec<(u64,\
        \ Buffer)>>>"
      Src: /src/opendal/core/core/src/types/read/reader.rs:202,1
    - Dst: ConcurrentTasks::new
      Src: /src/opendal/core/core/src/types/read/reader.rs:205,1
    - Dst: context
      Src: /src/opendal/core/core/src/types/read/reader.rs:206,1
    - Dst: executor
      Src: /src/opendal/core/core/src/types/read/reader.rs:206,1
    - Dst: clone
      Src: /src/opendal/core/core/src/types/read/reader.rs:206,1
    - Dst: options
      Src: /src/opendal/core/core/src/types/read/reader.rs:207,1
    - Dst: concurrent
      Src: /src/opendal/core/core/src/types/read/reader.rs:207,1
    - Dst: options
      Src: /src/opendal/core/core/src/types/read/reader.rs:208,1
    - Dst: prefetch
      Src: /src/opendal/core/core/src/types/read/reader.rs:208,1
    - Dst: Box::pin
      Src: /src/opendal/core/core/src/types/read/reader.rs:210,1
    - Dst: clone
      Src: /src/opendal/core/core/src/types/read/reader.rs:211,1
    - Dst: (Vec::offset
      Src: /src/opendal/core/core/src/types/read/reader.rs:215,1
    - Dst: (Vec::size
      Src: /src/opendal/core/core/src/types/read/reader.rs:216,1
    - Dst: Option::expect
      Src: /src/opendal/core/core/src/types/read/reader.rs:216,1
    - Dst: Result::reader
      Src: /src/opendal/core/core/src/types/read/reader.rs:219,1
    - Dst: anyhow::Result::read
      Src: /src/opendal/core/core/src/types/read/reader.rs:219,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/types/read/reader.rs:220,1
    - Dst: Err
      Src: /src/opendal/core/core/src/types/read/reader.rs:227,1
    - Dst: execute
      Src: /src/opendal/core/core/src/types/read/reader.rs:236,1
    - Dst: has_result
      Src: /src/opendal/core/core/src/types/read/reader.rs:237,1
    - Dst: next
      Src: /src/opendal/core/core/src/types/read/reader.rs:238,1
    - Dst: transpose
      Src: /src/opendal/core/core/src/types/read/reader.rs:238,1
    - Dst: expect
      Src: /src/opendal/core/core/src/types/read/reader.rs:238,1
    - Dst: Reader::push_fetch_output
      Src: /src/opendal/core/core/src/types/read/reader.rs:243,1
    - Dst: next
      Src: /src/opendal/core/core/src/types/read/reader.rs:247,1
    - Dst: transpose
      Src: /src/opendal/core/core/src/types/read/reader.rs:247,1
    - Dst: Reader::push_fetch_output
      Src: /src/opendal/core/core/src/types/read/reader.rs:248,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/types/read/reader.rs:251,1
    - Dst: (String, Metadata)::into_iter
      Src: /src/opendal/core/core/src/types/read/reader.rs:251,1
    - Dst: map
      Src: /src/opendal/core/core/src/types/read/reader.rs:251,1
    - Dst: Result::sort_unstable_by_key
      Src: /src/opendal/core/core/src/types/read/reader.rs:254,1
    - Dst: Result::into_iter
      Src: /src/opendal/core/core/src/types/read/reader.rs:255,1
    - Dst: flat_map
      Src: /src/opendal/core/core/src/types/read/reader.rs:255,1
    - Dst: collect
      Src: /src/opendal/core/core/src/types/read/reader.rs:255,1
    - Dst: collect
      Src: /src/opendal/core/core/src/types/read/reader.rs:251,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 110
    argCount: 1
    argNames:
    - ranges
    argTypes:
    - '&[Range<u64>]'
    constantsTouched: []
    func_position:
      end: 258
      start: 200
    functionDepth: 36
    functionLinenumber: 200
    functionLinenumberEnd: 258
    functionName: Reader::fetch_merged_ranges
    functionSourceFile: /src/opendal/core/core/src/types/read/reader.rs
    functionUses: 1
    functionsReached:
    - collect
    - options
    - clone
    - map
    - Result::len
    - (Vec::offset
    - Result::reader
    - Vec::new
    - execute
    - Reader::push_fetch_output
    - Option::expect
    - expect
    - Ok
    - (Vec::size
    - executor
    - flat_map
    - Result::sort_unstable_by_key
    - context
    - next
    - Result::into_iter
    - ".ranges.len())\n            .map(|_| Vec::new())\n            .collect::<Vec<Vec<(u64,\
      \ Buffer)>>>"
    - concurrent
    - ConcurrentTasks::new
    - (String, Metadata)::into_iter
    - transpose
    - anyhow::Result::read
    - Err
    - has_result
    - Reader::plan_fetch_reads
    - prefetch
    - Box::pin
    linkageType: ''
    returnType: Result
    signature: 'async fn fetch_merged_ranges(&self, ranges: &[Range<u64>]) -> Result<Vec<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: options
      Src: /src/opendal/core/core/src/types/read/reader.rs:261,1
    - Dst: chunk
      Src: /src/opendal/core/core/src/types/read/reader.rs:261,1
    - Dst: map
      Src: /src/opendal/core/core/src/types/read/reader.rs:261,1
    - Dst: Vec::with_capacity
      Src: /src/opendal/core/core/src/types/read/reader.rs:262,1
    - Dst: Result::len
      Src: /src/opendal/core/core/src/types/read/reader.rs:262,1
    - Dst: Result::iter
      Src: /src/opendal/core/core/src/types/read/reader.rs:264,1
    - Dst: enumerate
      Src: /src/opendal/core/core/src/types/read/reader.rs:264,1
    - Dst: Result::map_or
      Src: /src/opendal/core/core/src/types/read/reader.rs:268,1
    - Dst: usize::min
      Src: /src/opendal/core/core/src/types/read/reader.rs:268,1
    - Dst: push
      Src: /src/opendal/core/core/src/types/read/reader.rs:269,1
    - Dst: clone
      Src: /src/opendal/core/core/src/types/read/reader.rs:270,1
    - Dst: BytesRange::new
      Src: /src/opendal/core/core/src/types/read/reader.rs:272,1
    - Dst: Some
      Src: /src/opendal/core/core/src/types/read/reader.rs:272,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 40
    argCount: 1
    argNames:
    - ranges
    argTypes:
    - '&[Range<u64>]'
    constantsTouched: []
    func_position:
      end: 279
      start: 260
    functionDepth: 35
    functionLinenumber: 260
    functionLinenumberEnd: 279
    functionName: Reader::plan_fetch_reads
    functionSourceFile: /src/opendal/core/core/src/types/read/reader.rs
    functionUses: 1
    functionsReached:
    - options
    - Vec::with_capacity
    - push
    - clone
    - Some
    - chunk
    - map
    - Result::iter
    - Result::map_or
    - Result::len
    - enumerate
    - BytesRange::new
    - usize::min
    linkageType: ''
    returnType: Vec
    signature: 'fn plan_fetch_reads(&self, ranges: &[Range<u64>]) -> Vec<FetchReadInput>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: len
      Src: /src/opendal/core/core/src/types/read/reader.rs:286,1
    - Dst: Err
      Src: /src/opendal/core/core/src/types/read/reader.rs:287,1
    - Dst: Error::new
      Src: /src/opendal/core/core/src/types/read/reader.rs:288,1
    - Dst: Self::with_context
      Src: /src/opendal/core/core/src/types/read/reader.rs:288,1
    - Dst: Self::with_context
      Src: /src/opendal/core/core/src/types/read/reader.rs:288,1
    - Dst: len
      Src: /src/opendal/core/core/src/types/read/reader.rs:290,1
    - Dst: observe_read_response
      Src: /src/opendal/core/core/src/types/read/reader.rs:294,1
    - Dst: push
      Src: /src/opendal/core/core/src/types/read/reader.rs:295,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/types/read/reader.rs:296,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 36
    argCount: 2
    argNames:
    - parts
    - output
    argTypes:
    - '&mut [Vec<(u64, Buffer)>]'
    - FetchReadOutput
    constantsTouched: []
    func_position:
      end: 297
      start: 281
    functionDepth: 36
    functionLinenumber: 281
    functionLinenumberEnd: 297
    functionName: Reader::push_fetch_output
    functionSourceFile: /src/opendal/core/core/src/types/read/reader.rs
    functionUses: 1
    functionsReached:
    - push
    - Ok
    - observe_read_response
    - Error::new
    - Err
    - len
    - Self::with_context
    linkageType: ''
    returnType: Result
    signature: 'fn push_fetch_output(&self,parts: &mut [Vec<(u64, Buffer)>],output:
      FetchReadOutput,) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: options
      Src: /src/opendal/core/core/src/types/read/reader.rs:301,1
    - Dst: gap
      Src: /src/opendal/core/core/src/types/read/reader.rs:301,1
    - Dst: unwrap_or
      Src: /src/opendal/core/core/src/types/read/reader.rs:301,1
    - Dst: Result::sort_unstable_by_key
      Src: /src/opendal/core/core/src/types/read/reader.rs:304,1
    - Dst: Vec::with_capacity
      Src: /src/opendal/core/core/src/types/read/reader.rs:307,1
    - Dst: Result::len
      Src: /src/opendal/core/core/src/types/read/reader.rs:307,1
    - Dst: clone
      Src: /src/opendal/core/core/src/types/read/reader.rs:308,1
    - Dst: Result::into_iter
      Src: /src/opendal/core/core/src/types/read/reader.rs:310,1
    - Dst: skip
      Src: /src/opendal/core/core/src/types/read/reader.rs:310,1
    - Dst: saturating_add
      Src: /src/opendal/core/core/src/types/read/reader.rs:311,1
    - Dst: max
      Src: /src/opendal/core/core/src/types/read/reader.rs:313,1
    - Dst: push
      Src: /src/opendal/core/core/src/types/read/reader.rs:316,1
    - Dst: push
      Src: /src/opendal/core/core/src/types/read/reader.rs:322,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 48
    argCount: 1
    argNames:
    - ranges
    argTypes:
    - Vec<Range<u64>>
    constantsTouched: []
    func_position:
      end: 325
      start: 300
    functionDepth: 35
    functionLinenumber: 300
    functionLinenumberEnd: 325
    functionName: Reader::merge_ranges
    functionSourceFile: /src/opendal/core/core/src/types/read/reader.rs
    functionUses: 1
    functionsReached:
    - options
    - Vec::with_capacity
    - push
    - Result::into_iter
    - gap
    - clone
    - saturating_add
    - skip
    - Result::len
    - max
    - Result::sort_unstable_by_key
    - unwrap_or
    linkageType: ''
    returnType: Vec
    signature: 'fn merge_ranges(&self, mut ranges: Vec<Range<u64>>) -> Vec<Range<u64>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: BufferStream::create
      Src: /src/opendal/core/core/src/types/read/reader.rs:403,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - range
    argTypes:
    - impl Into<BytesRange>
    constantsTouched: []
    func_position:
      end: 404
      start: 402
    functionDepth: 27
    functionLinenumber: 402
    functionLinenumberEnd: 404
    functionName: Reader::into_stream
    functionSourceFile: /src/opendal/core/core/src/types/read/reader.rs
    functionUses: 0
    functionsReached:
    - BufferStream::create
    linkageType: ''
    returnType: Result
    signature: 'pub async fn into_stream(self, range: impl Into<BytesRange>) -> Result<BufferStream>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: parse_into_range
      Src: /src/opendal/core/core/src/types/read/reader.rs:472,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/types/read/reader.rs:473,1
    - Dst: FuturesAsyncReader::new
      Src: /src/opendal/core/core/src/types/read/reader.rs:473,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - range
    argTypes:
    - impl Into<BytesRange>
    constantsTouched: []
    func_position:
      end: 474
      start: 468
    functionDepth: 30
    functionLinenumber: 468
    functionLinenumberEnd: 474
    functionName: Reader::into_futures_async_read
    functionSourceFile: /src/opendal/core/core/src/types/read/reader.rs
    functionUses: 0
    functionsReached:
    - parse_into_range
    - FuturesAsyncReader::new
    - Ok
    linkageType: ''
    returnType: Result
    signature: 'pub async fn into_futures_async_read(self,range: impl Into<BytesRange>,)
      -> Result<FuturesAsyncReader>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: FuturesBytesStream::new
      Src: /src/opendal/core/core/src/types/read/reader.rs:536,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - range
    argTypes:
    - impl Into<BytesRange>
    constantsTouched: []
    func_position:
      end: 537
      start: 532
    functionDepth: 28
    functionLinenumber: 532
    functionLinenumberEnd: 537
    functionName: Reader::into_bytes_stream
    functionSourceFile: /src/opendal/core/core/src/types/read/reader.rs
    functionUses: 0
    functionsReached:
    - FuturesBytesStream::new
    linkageType: ''
    returnType: Result
    signature: 'pub async fn into_bytes_stream(self,range: impl Into<BytesRange>,)
      -> Result<FuturesBytesStream>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Operator::new
      Src: /src/opendal/core/core/src/types/read/reader.rs:628,1
    - Dst: services::Memory::default
      Src: /src/opendal/core/core/src/types/read/reader.rs:628,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/core/src/types/read/reader.rs:628,1
    - Dst: Reader::new
      Src: /src/opendal/core/core/src/types/read/reader.rs:629,1
    - Dst: ReadContext::new
      Src: /src/opendal/core/core/src/types/read/reader.rs:629,1
    - Dst: context
      Src: /src/opendal/core/core/src/types/read/reader.rs:630,1
    - Dst: OperationContext::clone
      Src: /src/opendal/core/core/src/types/read/reader.rs:630,1
    - Dst: service
      Src: /src/opendal/core/core/src/types/read/reader.rs:631,1
    - Dst: Servicer::clone
      Src: /src/opendal/core/core/src/types/read/reader.rs:631,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/core/src/types/read/reader.rs:632,1
    - Dst: OpRead::new
      Src: /src/opendal/core/core/src/types/read/reader.rs:633,1
    - Dst: Box::new
      Src: /src/opendal/core/core/src/types/read/reader.rs:635,1
    - Dst: MockRangeReader::new
      Src: /src/opendal/core/core/src/types/read/reader.rs:635,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 19
    argCount: 3
    argNames:
    - content
    - options
    - ranges
    argTypes:
    - Bytes
    - crate::raw::OpReader
    - Arc<Mutex<Vec<BytesRange>>>
    constantsTouched: []
    func_position:
      end: 637
      start: 623
    functionDepth: 35
    functionLinenumber: 623
    functionLinenumberEnd: 637
    functionName: tests::new_mock_reader
    functionSourceFile: /src/opendal/core/core/src/types/read/reader.rs
    functionUses: 0
    functionsReached:
    - ReadContext::new
    - context
    - Operator::new
    - Box::new
    - OperationContext::clone
    - service
    - Result::unwrap
    - '&str::to_string'
    - OpRead::new
    - services::Memory::default
    - MockRangeReader::new
    - Reader::new
    - Servicer::clone
    linkageType: ''
    returnType: Reader
    signature: 'fn new_mock_reader(content: Bytes,options: crate::raw::OpReader,ranges:
      Arc<Mutex<Vec<BytesRange>>>,) -> Reader'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Operator::via_iter
      Src: /src/opendal/core/core/src/types/read/reader.rs:659,1
    - Dst: write
      Src: /src/opendal/core/core/src/types/read/reader.rs:660,1
    - Dst: Buffer::from
      Src: /src/opendal/core/core/src/types/read/reader.rs:660,1
    - Dst: reader
      Src: /src/opendal/core/core/src/types/read/reader.rs:662,1
    - Dst: anyhow::Result::read
      Src: /src/opendal/core/core/src/types/read/reader.rs:665,1
    - Dst: anyhow::Result::metadata
      Src: /src/opendal/core/core/src/types/read/reader.rs:668,1
    - Dst: anyhow::Result::expect
      Src: /src/opendal/core/core/src/types/read/reader.rs:668,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/types/read/reader.rs:671,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 27
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 672
      start: 658
    functionDepth: 36
    functionLinenumber: 658
    functionLinenumberEnd: 672
    functionName: tests::test_reader_metadata_after_read
    functionSourceFile: /src/opendal/core/core/src/types/read/reader.rs
    functionUses: 0
    functionsReached:
    - Operator::via_iter
    - anyhow::Result::expect
    - reader
    - Ok
    - anyhow::Result::read
    - anyhow::Result::metadata
    - write
    - Buffer::from
    linkageType: ''
    returnType: Result
    signature: async fn test_reader_metadata_after_read() -> Result<()>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Operator::via_iter
      Src: /src/opendal/core/core/src/types/read/reader.rs:676,1
    - Dst: write
      Src: /src/opendal/core/core/src/types/read/reader.rs:677,1
    - Dst: Buffer::from
      Src: /src/opendal/core/core/src/types/read/reader.rs:677,1
    - Dst: reader
      Src: /src/opendal/core/core/src/types/read/reader.rs:679,1
    - Dst: anyhow::Result::clone
      Src: /src/opendal/core/core/src/types/read/reader.rs:680,1
    - Dst: Self::into_stream
      Src: /src/opendal/core/core/src/types/read/reader.rs:680,1
    - Dst: Result::metadata
      Src: /src/opendal/core/core/src/types/read/reader.rs:682,1
    - Dst: Result::try_collect
      Src: /src/opendal/core/core/src/types/read/reader.rs:685,1
    - Dst: into_iter
      Src: /src/opendal/core/core/src/types/read/reader.rs:686,1
    - Dst: flatten
      Src: /src/opendal/core/core/src/types/read/reader.rs:686,1
    - Dst: collect
      Src: /src/opendal/core/core/src/types/read/reader.rs:686,1
    - Dst: anyhow::Result::metadata
      Src: /src/opendal/core/core/src/types/read/reader.rs:689,1
    - Dst: anyhow::Result::expect
      Src: /src/opendal/core/core/src/types/read/reader.rs:689,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/types/read/reader.rs:692,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 43
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 693
      start: 675
    functionDepth: 36
    functionLinenumber: 675
    functionLinenumberEnd: 693
    functionName: tests::test_stream_metadata_updates_reader_metadata
    functionSourceFile: /src/opendal/core/core/src/types/read/reader.rs
    functionUses: 0
    functionsReached:
    - Result::metadata
    - collect
    - Operator::via_iter
    - anyhow::Result::expect
    - reader
    - Ok
    - into_iter
    - anyhow::Result::clone
    - flatten
    - anyhow::Result::metadata
    - Result::try_collect
    - write
    - Self::into_stream
    - Buffer::from
    linkageType: ''
    returnType: Result
    signature: async fn test_stream_metadata_updates_reader_metadata() -> Result<()>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Operator::via_iter
      Src: /src/opendal/core/core/src/types/read/reader.rs:697,1
    - Dst: write
      Src: /src/opendal/core/core/src/types/read/reader.rs:698,1
    - Dst: Buffer::from
      Src: /src/opendal/core/core/src/types/read/reader.rs:698,1
    - Dst: reader_with
      Src: /src/opendal/core/core/src/types/read/reader.rs:700,1
    - Dst: FutureReader::chunk
      Src: /src/opendal/core/core/src/types/read/reader.rs:700,1
    - Dst: anyhow::Result::clone
      Src: /src/opendal/core/core/src/types/read/reader.rs:701,1
    - Dst: Self::into_stream
      Src: /src/opendal/core/core/src/types/read/reader.rs:701,1
    - Dst: Result::metadata
      Src: /src/opendal/core/core/src/types/read/reader.rs:703,1
    - Dst: Result::try_collect
      Src: /src/opendal/core/core/src/types/read/reader.rs:706,1
    - Dst: into_iter
      Src: /src/opendal/core/core/src/types/read/reader.rs:707,1
    - Dst: flatten
      Src: /src/opendal/core/core/src/types/read/reader.rs:707,1
    - Dst: collect
      Src: /src/opendal/core/core/src/types/read/reader.rs:707,1
    - Dst: anyhow::Result::metadata
      Src: /src/opendal/core/core/src/types/read/reader.rs:710,1
    - Dst: anyhow::Result::expect
      Src: /src/opendal/core/core/src/types/read/reader.rs:710,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/types/read/reader.rs:713,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 45
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 714
      start: 696
    functionDepth: 36
    functionLinenumber: 696
    functionLinenumberEnd: 714
    functionName: tests::test_chunked_stream_metadata_updates_reader_metadata
    functionSourceFile: /src/opendal/core/core/src/types/read/reader.rs
    functionUses: 0
    functionsReached:
    - Result::metadata
    - collect
    - Operator::via_iter
    - anyhow::Result::expect
    - Ok
    - reader_with
    - FutureReader::chunk
    - anyhow::Result::clone
    - into_iter
    - flatten
    - anyhow::Result::metadata
    - Result::try_collect
    - write
    - Self::into_stream
    - Buffer::from
    linkageType: ''
    returnType: Result
    signature: async fn test_chunked_stream_metadata_updates_reader_metadata() ->
      Result<()>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: rand::rng
      Src: /src/opendal/core/core/src/types/read/reader.rs:726,1
    - Dst: fill_bytes
      Src: /src/opendal/core/core/src/types/read/reader.rs:728,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - size
    argTypes:
    - usize
    constantsTouched: []
    func_position:
      end: 730
      start: 725
    functionDepth: 0
    functionLinenumber: 725
    functionLinenumberEnd: 730
    functionName: tests::gen_fixed_bytes
    functionSourceFile: /src/opendal/core/core/src/types/read/reader.rs
    functionUses: 0
    functionsReached:
    - fill_bytes
    - rand::rng
    linkageType: ''
    returnType: Vec
    signature: 'fn gen_fixed_bytes(size: usize) -> Vec<u8>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Operator::via_iter
      Src: /src/opendal/core/core/src/types/read/reader.rs:734,1
    - Dst: gen_random_bytes
      Src: /src/opendal/core/core/src/types/read/reader.rs:737,1
    - Dst: write
      Src: /src/opendal/core/core/src/types/read/reader.rs:738,1
    - Dst: Result::clone
      Src: /src/opendal/core/core/src/types/read/reader.rs:738,1
    - Dst: expect
      Src: /src/opendal/core/core/src/types/read/reader.rs:738,1
    - Dst: reader
      Src: /src/opendal/core/core/src/types/read/reader.rs:742,1
    - Dst: unwrap
      Src: /src/opendal/core/core/src/types/read/reader.rs:742,1
    - Dst: anyhow::Result::read
      Src: /src/opendal/core/core/src/types/read/reader.rs:743,1
    - Dst: expect
      Src: /src/opendal/core/core/src/types/read/reader.rs:743,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/types/read/reader.rs:746,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 26
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 747
      start: 733
    functionDepth: 36
    functionLinenumber: 733
    functionLinenumberEnd: 747
    functionName: tests::test_reader_read
    functionSourceFile: /src/opendal/core/core/src/types/read/reader.rs
    functionUses: 0
    functionsReached:
    - Result::clone
    - reader
    - expect
    - Ok
    - anyhow::Result::read
    - unwrap
    - gen_random_bytes
    - write
    - Operator::via_iter
    linkageType: ''
    returnType: Result
    signature: async fn test_reader_read() -> Result<()>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Operator::via_iter
      Src: /src/opendal/core/core/src/types/read/reader.rs:751,1
    - Dst: gen_random_bytes
      Src: /src/opendal/core/core/src/types/read/reader.rs:754,1
    - Dst: write
      Src: /src/opendal/core/core/src/types/read/reader.rs:755,1
    - Dst: Result::clone
      Src: /src/opendal/core/core/src/types/read/reader.rs:755,1
    - Dst: expect
      Src: /src/opendal/core/core/src/types/read/reader.rs:755,1
    - Dst: reader_with
      Src: /src/opendal/core/core/src/types/read/reader.rs:759,1
    - Dst: FutureReader::chunk
      Src: /src/opendal/core/core/src/types/read/reader.rs:759,1
    - Dst: unwrap
      Src: /src/opendal/core/core/src/types/read/reader.rs:759,1
    - Dst: anyhow::Result::read
      Src: /src/opendal/core/core/src/types/read/reader.rs:760,1
    - Dst: expect
      Src: /src/opendal/core/core/src/types/read/reader.rs:760,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/types/read/reader.rs:763,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 28
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 764
      start: 750
    functionDepth: 36
    functionLinenumber: 750
    functionLinenumberEnd: 764
    functionName: tests::test_reader_read_with_chunk
    functionSourceFile: /src/opendal/core/core/src/types/read/reader.rs
    functionUses: 0
    functionsReached:
    - Result::clone
    - expect
    - Ok
    - reader_with
    - unwrap
    - anyhow::Result::read
    - gen_random_bytes
    - FutureReader::chunk
    - write
    - Operator::via_iter
    linkageType: ''
    returnType: Result
    signature: async fn test_reader_read_with_chunk() -> Result<()>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Operator::via_iter
      Src: /src/opendal/core/core/src/types/read/reader.rs:768,1
    - Dst: gen_random_bytes
      Src: /src/opendal/core/core/src/types/read/reader.rs:771,1
    - Dst: write
      Src: /src/opendal/core/core/src/types/read/reader.rs:772,1
    - Dst: Result::clone
      Src: /src/opendal/core/core/src/types/read/reader.rs:772,1
    - Dst: expect
      Src: /src/opendal/core/core/src/types/read/reader.rs:772,1
    - Dst: reader_with
      Src: /src/opendal/core/core/src/types/read/reader.rs:776,1
    - Dst: FutureReader::chunk
      Src: /src/opendal/core/core/src/types/read/reader.rs:776,1
    - Dst: Self::concurrent
      Src: /src/opendal/core/core/src/types/read/reader.rs:776,1
    - Dst: unwrap
      Src: /src/opendal/core/core/src/types/read/reader.rs:776,1
    - Dst: anyhow::Result::read
      Src: /src/opendal/core/core/src/types/read/reader.rs:782,1
    - Dst: expect
      Src: /src/opendal/core/core/src/types/read/reader.rs:782,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/types/read/reader.rs:785,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 30
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 786
      start: 767
    functionDepth: 36
    functionLinenumber: 767
    functionLinenumberEnd: 786
    functionName: tests::test_reader_read_with_concurrent
    functionSourceFile: /src/opendal/core/core/src/types/read/reader.rs
    functionUses: 0
    functionsReached:
    - Result::clone
    - expect
    - Ok
    - reader_with
    - unwrap
    - anyhow::Result::read
    - gen_random_bytes
    - FutureReader::chunk
    - Self::concurrent
    - write
    - Operator::via_iter
    linkageType: ''
    returnType: Result
    signature: async fn test_reader_read_with_concurrent() -> Result<()>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Operator::via_iter
      Src: /src/opendal/core/core/src/types/read/reader.rs:790,1
    - Dst: Bytes::from_static
      Src: /src/opendal/core/core/src/types/read/reader.rs:792,1
    - Dst: write
      Src: /src/opendal/core/core/src/types/read/reader.rs:793,1
    - Dst: Buffer::from
      Src: /src/opendal/core/core/src/types/read/reader.rs:793,1
    - Dst: Result::clone
      Src: /src/opendal/core/core/src/types/read/reader.rs:793,1
    - Dst: reader
      Src: /src/opendal/core/core/src/types/read/reader.rs:795,1
    - Dst: anyhow::Result::read
      Src: /src/opendal/core/core/src/types/read/reader.rs:796,1
    - Dst: BytesRange::suffix
      Src: /src/opendal/core/core/src/types/read/reader.rs:796,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/types/read/reader.rs:799,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 24
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 800
      start: 789
    functionDepth: 36
    functionLinenumber: 789
    functionLinenumberEnd: 800
    functionName: tests::test_reader_read_suffix
    functionSourceFile: /src/opendal/core/core/src/types/read/reader.rs
    functionUses: 0
    functionsReached:
    - Result::clone
    - Operator::via_iter
    - reader
    - BytesRange::suffix
    - Ok
    - anyhow::Result::read
    - write
    - Bytes::from_static
    - Buffer::from
    linkageType: ''
    returnType: Result
    signature: async fn test_reader_read_suffix() -> Result<()>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Operator::via_iter
      Src: /src/opendal/core/core/src/types/read/reader.rs:804,1
    - Dst: Bytes::from_static
      Src: /src/opendal/core/core/src/types/read/reader.rs:806,1
    - Dst: write
      Src: /src/opendal/core/core/src/types/read/reader.rs:807,1
    - Dst: Buffer::from
      Src: /src/opendal/core/core/src/types/read/reader.rs:807,1
    - Dst: Result::clone
      Src: /src/opendal/core/core/src/types/read/reader.rs:807,1
    - Dst: reader
      Src: /src/opendal/core/core/src/types/read/reader.rs:809,1
    - Dst: anyhow::Result::read
      Src: /src/opendal/core/core/src/types/read/reader.rs:810,1
    - Dst: BytesRange::suffix
      Src: /src/opendal/core/core/src/types/read/reader.rs:810,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/types/read/reader.rs:813,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 24
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 814
      start: 803
    functionDepth: 36
    functionLinenumber: 803
    functionLinenumberEnd: 814
    functionName: tests::test_reader_read_suffix_larger_than_content
    functionSourceFile: /src/opendal/core/core/src/types/read/reader.rs
    functionUses: 0
    functionsReached:
    - Result::clone
    - Operator::via_iter
    - reader
    - BytesRange::suffix
    - Ok
    - anyhow::Result::read
    - write
    - Bytes::from_static
    - Buffer::from
    linkageType: ''
    returnType: Result
    signature: async fn test_reader_read_suffix_larger_than_content() -> Result<()>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Operator::via_iter
      Src: /src/opendal/core/core/src/types/read/reader.rs:818,1
    - Dst: write
      Src: /src/opendal/core/core/src/types/read/reader.rs:820,1
    - Dst: Buffer::from
      Src: /src/opendal/core/core/src/types/read/reader.rs:820,1
    - Dst: reader
      Src: /src/opendal/core/core/src/types/read/reader.rs:822,1
    - Dst: anyhow::Result::read
      Src: /src/opendal/core/core/src/types/read/reader.rs:823,1
    - Dst: BytesRange::suffix
      Src: /src/opendal/core/core/src/types/read/reader.rs:823,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/types/read/reader.rs:826,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 21
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 827
      start: 817
    functionDepth: 36
    functionLinenumber: 817
    functionLinenumberEnd: 827
    functionName: tests::test_reader_read_suffix_zero
    functionSourceFile: /src/opendal/core/core/src/types/read/reader.rs
    functionUses: 0
    functionsReached:
    - Operator::via_iter
    - reader
    - BytesRange::suffix
    - Ok
    - anyhow::Result::read
    - write
    - Buffer::from
    linkageType: ''
    returnType: Result
    signature: async fn test_reader_read_suffix_zero() -> Result<()>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Operator::via_iter
      Src: /src/opendal/core/core/src/types/read/reader.rs:831,1
    - Dst: write
      Src: /src/opendal/core/core/src/types/read/reader.rs:833,1
    - Dst: Buffer::new
      Src: /src/opendal/core/core/src/types/read/reader.rs:833,1
    - Dst: reader
      Src: /src/opendal/core/core/src/types/read/reader.rs:835,1
    - Dst: anyhow::Result::read
      Src: /src/opendal/core/core/src/types/read/reader.rs:836,1
    - Dst: BytesRange::suffix
      Src: /src/opendal/core/core/src/types/read/reader.rs:836,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/types/read/reader.rs:839,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 21
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 840
      start: 830
    functionDepth: 36
    functionLinenumber: 830
    functionLinenumberEnd: 840
    functionName: tests::test_reader_read_suffix_empty_content
    functionSourceFile: /src/opendal/core/core/src/types/read/reader.rs
    functionUses: 0
    functionsReached:
    - Buffer::new
    - reader
    - BytesRange::suffix
    - Ok
    - anyhow::Result::read
    - write
    - Operator::via_iter
    linkageType: ''
    returnType: Result
    signature: async fn test_reader_read_suffix_empty_content() -> Result<()>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Operator::via_iter
      Src: /src/opendal/core/core/src/types/read/reader.rs:844,1
    - Dst: write
      Src: /src/opendal/core/core/src/types/read/reader.rs:846,1
    - Dst: Buffer::from
      Src: /src/opendal/core/core/src/types/read/reader.rs:846,1
    - Dst: reader_with
      Src: /src/opendal/core/core/src/types/read/reader.rs:848,1
    - Dst: FutureReader::chunk
      Src: /src/opendal/core/core/src/types/read/reader.rs:848,1
    - Dst: Self::concurrent
      Src: /src/opendal/core/core/src/types/read/reader.rs:848,1
    - Dst: unwrap
      Src: /src/opendal/core/core/src/types/read/reader.rs:848,1
    - Dst: anyhow::Result::read
      Src: /src/opendal/core/core/src/types/read/reader.rs:849,1
    - Dst: BytesRange::suffix
      Src: /src/opendal/core/core/src/types/read/reader.rs:849,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/types/read/reader.rs:852,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 26
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 853
      start: 843
    functionDepth: 36
    functionLinenumber: 843
    functionLinenumberEnd: 853
    functionName: tests::test_reader_read_suffix_with_chunk_and_concurrent
    functionSourceFile: /src/opendal/core/core/src/types/read/reader.rs
    functionUses: 0
    functionsReached:
    - Operator::via_iter
    - BytesRange::suffix
    - Ok
    - reader_with
    - unwrap
    - anyhow::Result::read
    - FutureReader::chunk
    - Self::concurrent
    - write
    - Buffer::from
    linkageType: ''
    returnType: Result
    signature: async fn test_reader_read_suffix_with_chunk_and_concurrent() -> Result<()>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Operator::via_iter
      Src: /src/opendal/core/core/src/types/read/reader.rs:857,1
    - Dst: write
      Src: /src/opendal/core/core/src/types/read/reader.rs:859,1
    - Dst: Buffer::from
      Src: /src/opendal/core/core/src/types/read/reader.rs:859,1
    - Dst: reader
      Src: /src/opendal/core/core/src/types/read/reader.rs:861,1
    - Dst: into_futures_async_read
      Src: /src/opendal/core/core/src/types/read/reader.rs:861,1
    - Dst: BytesRange::suffix
      Src: /src/opendal/core/core/src/types/read/reader.rs:864,1
    - Dst: Vec::new
      Src: /src/opendal/core/core/src/types/read/reader.rs:866,1
    - Dst: futures::AsyncReadExt::read_to_end
      Src: /src/opendal/core/core/src/types/read/reader.rs:867,1
    - Dst: unwrap
      Src: /src/opendal/core/core/src/types/read/reader.rs:867,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/types/read/reader.rs:872,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 29
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 873
      start: 856
    functionDepth: 36
    functionLinenumber: 856
    functionLinenumberEnd: 873
    functionName: tests::test_reader_into_futures_async_read_suffix
    functionSourceFile: /src/opendal/core/core/src/types/read/reader.rs
    functionUses: 0
    functionsReached:
    - Operator::via_iter
    - reader
    - BytesRange::suffix
    - Ok
    - unwrap
    - futures::AsyncReadExt::read_to_end
    - Vec::new
    - into_futures_async_read
    - write
    - Buffer::from
    linkageType: ''
    returnType: Result
    signature: async fn test_reader_into_futures_async_read_suffix() -> Result<()>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Operator::via_iter
      Src: /src/opendal/core/core/src/types/read/reader.rs:877,1
    - Dst: gen_random_bytes
      Src: /src/opendal/core/core/src/types/read/reader.rs:880,1
    - Dst: write
      Src: /src/opendal/core/core/src/types/read/reader.rs:881,1
    - Dst: Result::clone
      Src: /src/opendal/core/core/src/types/read/reader.rs:881,1
    - Dst: expect
      Src: /src/opendal/core/core/src/types/read/reader.rs:881,1
    - Dst: reader
      Src: /src/opendal/core/core/src/types/read/reader.rs:885,1
    - Dst: unwrap
      Src: /src/opendal/core/core/src/types/read/reader.rs:885,1
    - Dst: Vec::new
      Src: /src/opendal/core/core/src/types/read/reader.rs:886,1
    - Dst: anyhow::Result::read_into
      Src: /src/opendal/core/core/src/types/read/reader.rs:887,1
    - Dst: expect
      Src: /src/opendal/core/core/src/types/read/reader.rs:887,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/types/read/reader.rs:893,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 29
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 894
      start: 876
    functionDepth: 36
    functionLinenumber: 876
    functionLinenumberEnd: 894
    functionName: tests::test_reader_read_into
    functionSourceFile: /src/opendal/core/core/src/types/read/reader.rs
    functionUses: 0
    functionsReached:
    - Result::clone
    - reader
    - expect
    - Ok
    - unwrap
    - gen_random_bytes
    - Vec::new
    - write
    - Operator::via_iter
    - anyhow::Result::read_into
    linkageType: ''
    returnType: Result
    signature: async fn test_reader_read_into() -> Result<()>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Operator::new
      Src: /src/opendal/core/core/src/types/read/reader.rs:898,1
    - Dst: services::Memory::default
      Src: /src/opendal/core/core/src/types/read/reader.rs:898,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/core/src/types/read/reader.rs:898,1
    - Dst: gen_random_bytes
      Src: /src/opendal/core/core/src/types/read/reader.rs:901,1
    - Dst: write
      Src: /src/opendal/core/core/src/types/read/reader.rs:902,1
    - Dst: Result::clone
      Src: /src/opendal/core/core/src/types/read/reader.rs:902,1
    - Dst: expect
      Src: /src/opendal/core/core/src/types/read/reader.rs:902,1
    - Dst: reader_with
      Src: /src/opendal/core/core/src/types/read/reader.rs:906,1
    - Dst: FutureReader::gap
      Src: /src/opendal/core/core/src/types/read/reader.rs:906,1
    - Dst: unwrap
      Src: /src/opendal/core/core/src/types/read/reader.rs:906,1
    - Dst: anyhow::Result::merge_ranges
      Src: /src/opendal/core/core/src/types/read/reader.rs:909,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/types/read/reader.rs:911,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 25
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 912
      start: 897
    functionDepth: 35
    functionLinenumber: 897
    functionLinenumberEnd: 912
    functionName: tests::test_merge_ranges
    functionSourceFile: /src/opendal/core/core/src/types/read/reader.rs
    functionUses: 0
    functionsReached:
    - Result::clone
    - Operator::new
    - FutureReader::gap
    - expect
    - Ok
    - reader_with
    - unwrap
    - anyhow::Result::merge_ranges
    - gen_random_bytes
    - Result::unwrap
    - services::Memory::default
    - write
    linkageType: ''
    returnType: Result
    signature: async fn test_merge_ranges() -> Result<()>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Operator::new
      Src: /src/opendal/core/core/src/types/read/reader.rs:916,1
    - Dst: services::Memory::default
      Src: /src/opendal/core/core/src/types/read/reader.rs:916,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/core/src/types/read/reader.rs:916,1
    - Dst: gen_fixed_bytes
      Src: /src/opendal/core/core/src/types/read/reader.rs:919,1
    - Dst: write
      Src: /src/opendal/core/core/src/types/read/reader.rs:920,1
    - Dst: Result::clone
      Src: /src/opendal/core/core/src/types/read/reader.rs:920,1
    - Dst: expect
      Src: /src/opendal/core/core/src/types/read/reader.rs:920,1
    - Dst: reader_with
      Src: /src/opendal/core/core/src/types/read/reader.rs:924,1
    - Dst: FutureReader::gap
      Src: /src/opendal/core/core/src/types/read/reader.rs:924,1
    - Dst: unwrap
      Src: /src/opendal/core/core/src/types/read/reader.rs:924,1
    - Dst: anyhow::Result::fetch
      Src: /src/opendal/core/core/src/types/read/reader.rs:936,1
    - Dst: Result::clone
      Src: /src/opendal/core/core/src/types/read/reader.rs:937,1
    - Dst: expect
      Src: /src/opendal/core/core/src/types/read/reader.rs:936,1
    - Dst: Result::iter
      Src: /src/opendal/core/core/src/types/read/reader.rs:941,1
    - Dst: enumerate
      Src: /src/opendal/core/core/src/types/read/reader.rs:941,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/types/read/reader.rs:947,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 36
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 948
      start: 915
    functionDepth: 35
    functionLinenumber: 915
    functionLinenumberEnd: 948
    functionName: tests::test_fetch
    functionSourceFile: /src/opendal/core/core/src/types/read/reader.rs
    functionUses: 0
    functionsReached:
    - Result::clone
    - Operator::new
    - FutureReader::gap
    - expect
    - Ok
    - reader_with
    - unwrap
    - Result::iter
    - gen_fixed_bytes
    - Result::unwrap
    - enumerate
    - services::Memory::default
    - anyhow::Result::fetch
    - write
    linkageType: ''
    returnType: Result
    signature: async fn test_fetch() -> Result<()>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Operator::new
      Src: /src/opendal/core/core/src/types/read/reader.rs:952,1
    - Dst: services::Memory::default
      Src: /src/opendal/core/core/src/types/read/reader.rs:952,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/core/src/types/read/reader.rs:952,1
    - Dst: gen_fixed_bytes
      Src: /src/opendal/core/core/src/types/read/reader.rs:955,1
    - Dst: write
      Src: /src/opendal/core/core/src/types/read/reader.rs:956,1
    - Dst: Result::clone
      Src: /src/opendal/core/core/src/types/read/reader.rs:956,1
    - Dst: expect
      Src: /src/opendal/core/core/src/types/read/reader.rs:956,1
    - Dst: reader
      Src: /src/opendal/core/core/src/types/read/reader.rs:960,1
    - Dst: unwrap
      Src: /src/opendal/core/core/src/types/read/reader.rs:960,1
    - Dst: anyhow::Result::fetch
      Src: /src/opendal/core/core/src/types/read/reader.rs:961,1
    - Dst: expect
      Src: /src/opendal/core/core/src/types/read/reader.rs:961,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/types/read/reader.rs:967,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 26
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 968
      start: 951
    functionDepth: 35
    functionLinenumber: 951
    functionLinenumberEnd: 968
    functionName: tests::test_fetch_empty_ranges
    functionSourceFile: /src/opendal/core/core/src/types/read/reader.rs
    functionUses: 0
    functionsReached:
    - Result::clone
    - Operator::new
    - reader
    - expect
    - Ok
    - unwrap
    - gen_fixed_bytes
    - Result::unwrap
    - services::Memory::default
    - anyhow::Result::fetch
    - write
    linkageType: ''
    returnType: Result
    signature: async fn test_fetch_empty_ranges() -> Result<()>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Arc::new
      Src: /src/opendal/core/core/src/types/read/reader.rs:972,1
    - Dst: Mutex::new
      Src: /src/opendal/core/core/src/types/read/reader.rs:972,1
    - Dst: Vec::new
      Src: /src/opendal/core/core/src/types/read/reader.rs:972,1
    - Dst: new_mock_reader
      Src: /src/opendal/core/core/src/types/read/reader.rs:973,1
    - Dst: Bytes::from_static
      Src: /src/opendal/core/core/src/types/read/reader.rs:974,1
    - Dst: OpReader::new
      Src: /src/opendal/core/core/src/types/read/reader.rs:975,1
    - Dst: Self::clone
      Src: /src/opendal/core/core/src/types/read/reader.rs:976,1
    - Dst: anyhow::Result::fetch
      Src: /src/opendal/core/core/src/types/read/reader.rs:979,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/types/read/reader.rs:986,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 18
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 987
      start: 971
    functionDepth: 36
    functionLinenumber: 971
    functionLinenumberEnd: 987
    functionName: tests::test_fetch_skips_zero_length_ranges
    functionSourceFile: /src/opendal/core/core/src/types/read/reader.rs
    functionUses: 0
    functionsReached:
    - Ok
    - OpReader::new
    - Arc::new
    - Self::clone
    - new_mock_reader
    - Vec::new
    - anyhow::Result::fetch
    - Bytes::from_static
    - Mutex::new
    linkageType: ''
    returnType: Result
    signature: async fn test_fetch_skips_zero_length_ranges() -> Result<()>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Arc::new
      Src: /src/opendal/core/core/src/types/read/reader.rs:991,1
    - Dst: Mutex::new
      Src: /src/opendal/core/core/src/types/read/reader.rs:991,1
    - Dst: Vec::new
      Src: /src/opendal/core/core/src/types/read/reader.rs:991,1
    - Dst: new_mock_reader
      Src: /src/opendal/core/core/src/types/read/reader.rs:992,1
    - Dst: Bytes::from_static
      Src: /src/opendal/core/core/src/types/read/reader.rs:993,1
    - Dst: OpReader::new
      Src: /src/opendal/core/core/src/types/read/reader.rs:994,1
    - Dst: Self::with_gap
      Src: /src/opendal/core/core/src/types/read/reader.rs:994,1
    - Dst: Self::with_chunk
      Src: /src/opendal/core/core/src/types/read/reader.rs:994,1
    - Dst: Result::with_concurrent
      Src: /src/opendal/core/core/src/types/read/reader.rs:994,1
    - Dst: anyhow::Result::with_prefetch
      Src: /src/opendal/core/core/src/types/read/reader.rs:994,1
    - Dst: Self::clone
      Src: /src/opendal/core/core/src/types/read/reader.rs:999,1
    - Dst: anyhow::Result::fetch
      Src: /src/opendal/core/core/src/types/read/reader.rs:1002,1
    - Dst: Self::lock
      Src: /src/opendal/core/core/src/types/read/reader.rs:1007,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/core/src/types/read/reader.rs:1007,1
    - Dst: T::clone
      Src: /src/opendal/core/core/src/types/read/reader.rs:1007,1
    - Dst: Self::sort_by_key
      Src: /src/opendal/core/core/src/types/read/reader.rs:1008,1
    - Dst: (Vec::offset
      Src: /src/opendal/core/core/src/types/read/reader.rs:1008,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/types/read/reader.rs:1014,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 37
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 1015
      start: 990
    functionDepth: 36
    functionLinenumber: 990
    functionLinenumberEnd: 1015
    functionName: tests::test_fetch_plans_merged_ranges_with_chunk
    functionSourceFile: /src/opendal/core/core/src/types/read/reader.rs
    functionUses: 0
    functionsReached:
    - Self::with_chunk
    - T::clone
    - OpReader::new
    - Self::sort_by_key
    - Ok
    - Arc::new
    - Self::with_gap
    - Self::lock
    - Result::unwrap
    - Self::clone
    - new_mock_reader
    - (Vec::offset
    - Vec::new
    - anyhow::Result::fetch
    - anyhow::Result::with_prefetch
    - Bytes::from_static
    - Mutex::new
    - Result::with_concurrent
    linkageType: ''
    returnType: Result
    signature: async fn test_fetch_plans_merged_ranges_with_chunk() -> Result<()>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: ReadGenerator::new
      Src: /src/opendal/core/core/src/types/read/buffer_stream.rs:44,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ctx
    - range
    argTypes:
    - Arc<ReadContext>
    - BytesRange
    constantsTouched: []
    func_position:
      end: 49
      start: 43
    functionDepth: 1
    functionLinenumber: 43
    functionLinenumberEnd: 49
    functionName: StreamingReader::new
    functionSourceFile: /src/opendal/core/core/src/types/read/buffer_stream.rs
    functionUses: 2
    functionsReached:
    - ReadGenerator::new
    linkageType: ''
    returnType: Self
    signature: 'fn new(ctx: Arc<ReadContext>, range: BytesRange) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: metadata
      Src: /src/opendal/core/core/src/types/read/buffer_stream.rs:52,1
    - Dst: is_some
      Src: /src/opendal/core/core/src/types/read/buffer_stream.rs:52,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/types/read/buffer_stream.rs:53,1
    - Dst: is_none
      Src: /src/opendal/core/core/src/types/read/buffer_stream.rs:56,1
    - Dst: next_reader
      Src: /src/opendal/core/core/src/types/read/buffer_stream.rs:57,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/types/read/buffer_stream.rs:60,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 26
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 61
      start: 51
    functionDepth: 37
    functionLinenumber: 51
    functionLinenumberEnd: 61
    functionName: StreamingReader::prepare_metadata
    functionSourceFile: /src/opendal/core/core/src/types/read/buffer_stream.rs
    functionUses: 1
    functionsReached:
    - is_none
    - next_reader
    - Ok
    - metadata
    - is_some
    linkageType: ''
    returnType: Result
    signature: async fn prepare_metadata(&mut self) -> Result<()>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: StreamingReader::prepare_metadata
      Src: /src/opendal/core/core/src/types/read/buffer_stream.rs:64,1
    - Dst: metadata
      Src: /src/opendal/core/core/src/types/read/buffer_stream.rs:66,1
    - Dst: cloned
      Src: /src/opendal/core/core/src/types/read/buffer_stream.rs:66,1
    - Dst: ok_or_else
      Src: /src/opendal/core/core/src/types/read/buffer_stream.rs:66,1
    - Dst: Error::new
      Src: /src/opendal/core/core/src/types/read/buffer_stream.rs:69,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 70
      start: 63
    functionDepth: 38
    functionLinenumber: 63
    functionLinenumberEnd: 70
    functionName: StreamingReader::metadata
    functionSourceFile: /src/opendal/core/core/src/types/read/buffer_stream.rs
    functionUses: 0
    functionsReached:
    - metadata
    - Error::new
    - StreamingReader::prepare_metadata
    - cloned
    - ok_or_else
    linkageType: ''
    returnType: Result
    signature: async fn metadata(&mut self) -> Result<Metadata>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: is_none
      Src: /src/opendal/core/core/src/types/read/buffer_stream.rs:76,1
    - Dst: next_reader
      Src: /src/opendal/core/core/src/types/read/buffer_stream.rs:77,1
    - Dst: as_mut
      Src: /src/opendal/core/core/src/types/read/buffer_stream.rs:80,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/types/read/buffer_stream.rs:81,1
    - Dst: Buffer::new
      Src: /src/opendal/core/core/src/types/read/buffer_stream.rs:81,1
    - Dst: Result::read_dyn
      Src: /src/opendal/core/core/src/types/read/buffer_stream.rs:84,1
    - Dst: io::Result::is_empty
      Src: /src/opendal/core/core/src/types/read/buffer_stream.rs:86,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/types/read/buffer_stream.rs:90,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 38
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 93
      start: 74
    functionDepth: 39
    functionLinenumber: 74
    functionLinenumberEnd: 93
    functionName: StreamingReader::read
    functionSourceFile: /src/opendal/core/core/src/types/read/buffer_stream.rs
    functionUses: 0
    functionsReached:
    - is_none
    - as_mut
    - Buffer::new
    - next_reader
    - Ok
    - io::Result::is_empty
    - Result::read_dyn
    linkageType: ''
    returnType: Result
    signature: async fn read(&mut self) -> Result<Buffer>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: ConcurrentTasks::new
      Src: /src/opendal/core/core/src/types/read/buffer_stream.rs:121,1
    - Dst: Result::context
      Src: /src/opendal/core/core/src/types/read/buffer_stream.rs:122,1
    - Dst: OperationContext::executor
      Src: /src/opendal/core/core/src/types/read/buffer_stream.rs:122,1
    - Dst: '&Executor::clone'
      Src: /src/opendal/core/core/src/types/read/buffer_stream.rs:122,1
    - Dst: Result::options
      Src: /src/opendal/core/core/src/types/read/buffer_stream.rs:123,1
    - Dst: Result::concurrent
      Src: /src/opendal/core/core/src/types/read/buffer_stream.rs:123,1
    - Dst: Result::options
      Src: /src/opendal/core/core/src/types/read/buffer_stream.rs:124,1
    - Dst: Result::prefetch
      Src: /src/opendal/core/core/src/types/read/buffer_stream.rs:124,1
    - Dst: Box::pin
      Src: /src/opendal/core/core/src/types/read/buffer_stream.rs:126,1
    - Dst: take
      Src: /src/opendal/core/core/src/types/read/buffer_stream.rs:127,1
    - Dst: anyhow::Result::read_all
      Src: /src/opendal/core/core/src/types/read/buffer_stream.rs:128,1
    - Dst: reader
      Src: /src/opendal/core/core/src/types/read/buffer_stream.rs:130,1
    - Dst: read
      Src: /src/opendal/core/core/src/types/read/buffer_stream.rs:130,1
    - Dst: observe_read_response
      Src: /src/opendal/core/core/src/types/read/buffer_stream.rs:132,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/types/read/buffer_stream.rs:133,1
    - Dst: Err
      Src: /src/opendal/core/core/src/types/read/buffer_stream.rs:135,1
    - Dst: (Vec::offset
      Src: /src/opendal/core/core/src/types/read/buffer_stream.rs:144,1
    - Dst: (Vec::size
      Src: /src/opendal/core/core/src/types/read/buffer_stream.rs:145,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 45
    argCount: 2
    argNames:
    - ctx
    - range
    argTypes:
    - Arc<ReadContext>
    - BytesRange
    constantsTouched: []
    func_position:
      end: 150
      start: 120
    functionDepth: 35
    functionLinenumber: 120
    functionLinenumberEnd: 150
    functionName: ChunkedReader::new
    functionSourceFile: /src/opendal/core/core/src/types/read/buffer_stream.rs
    functionUses: 2
    functionsReached:
    - read
    - reader
    - Result::concurrent
    - Ok
    - Result::context
    - (Vec::size
    - observe_read_response
    - Err
    - OperationContext::executor
    - take
    - ConcurrentTasks::new
    - '&Executor::clone'
    - anyhow::Result::read_all
    - (Vec::offset
    - Box::pin
    - Result::options
    - Result::prefetch
    linkageType: ''
    returnType: Self
    signature: 'fn new(ctx: Arc<ReadContext>, range: BytesRange) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: metadata
      Src: /src/opendal/core/core/src/types/read/buffer_stream.rs:153,1
    - Dst: is_some
      Src: /src/opendal/core/core/src/types/read/buffer_stream.rs:153,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/types/read/buffer_stream.rs:154,1
    - Dst: is_none
      Src: /src/opendal/core/core/src/types/read/buffer_stream.rs:157,1
    - Dst: ChunkedReader::next_range
      Src: /src/opendal/core/core/src/types/read/buffer_stream.rs:158,1
    - Dst: reader
      Src: /src/opendal/core/core/src/types/read/buffer_stream.rs:159,1
    - Dst: open
      Src: /src/opendal/core/core/src/types/read/buffer_stream.rs:159,1
    - Dst: observe_read_response
      Src: /src/opendal/core/core/src/types/read/buffer_stream.rs:160,1
    - Dst: Some
      Src: /src/opendal/core/core/src/types/read/buffer_stream.rs:161,1
    - Dst: clone
      Src: /src/opendal/core/core/src/types/read/buffer_stream.rs:162,1
    - Dst: Some
      Src: /src/opendal/core/core/src/types/read/buffer_stream.rs:164,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/types/read/buffer_stream.rs:171,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 45
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 172
      start: 152
    functionDepth: 37
    functionLinenumber: 152
    functionLinenumberEnd: 172
    functionName: ChunkedReader::prepare_metadata
    functionSourceFile: /src/opendal/core/core/src/types/read/buffer_stream.rs
    functionUses: 1
    functionsReached:
    - is_none
    - reader
    - Ok
    - observe_read_response
    - metadata
    - clone
    - Some
    - is_some
    - open
    - ChunkedReader::next_range
    linkageType: ''
    returnType: Result
    signature: async fn prepare_metadata(&mut self) -> Result<()>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: ChunkedReader::prepare_metadata
      Src: /src/opendal/core/core/src/types/read/buffer_stream.rs:175,1
    - Dst: metadata
      Src: /src/opendal/core/core/src/types/read/buffer_stream.rs:177,1
    - Dst: cloned
      Src: /src/opendal/core/core/src/types/read/buffer_stream.rs:177,1
    - Dst: ok_or_else
      Src: /src/opendal/core/core/src/types/read/buffer_stream.rs:177,1
    - Dst: Error::new
      Src: /src/opendal/core/core/src/types/read/buffer_stream.rs:180,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 181
      start: 174
    functionDepth: 38
    functionLinenumber: 174
    functionLinenumberEnd: 181
    functionName: ChunkedReader::metadata
    functionSourceFile: /src/opendal/core/core/src/types/read/buffer_stream.rs
    functionUses: 0
    functionsReached:
    - metadata
    - Error::new
    - cloned
    - ChunkedReader::prepare_metadata
    - ok_or_else
    linkageType: ''
    returnType: Result
    signature: async fn metadata(&mut self) -> Result<Metadata>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Some
      Src: /src/opendal/core/core/src/types/read/buffer_stream.rs:185,1
    - Dst: Some
      Src: /src/opendal/core/core/src/types/read/buffer_stream.rs:192,1
    - Dst: options
      Src: /src/opendal/core/core/src/types/read/buffer_stream.rs:196,1
    - Dst: chunk
      Src: /src/opendal/core/core/src/types/read/buffer_stream.rs:196,1
    - Dst: map_or
      Src: /src/opendal/core/core/src/types/read/buffer_stream.rs:196,1
    - Dst: usize::min
      Src: /src/opendal/core/core/src/types/read/buffer_stream.rs:200,1
    - Dst: Some
      Src: /src/opendal/core/core/src/types/read/buffer_stream.rs:202,1
    - Dst: Some
      Src: /src/opendal/core/core/src/types/read/buffer_stream.rs:203,1
    - Dst: Some
      Src: /src/opendal/core/core/src/types/read/buffer_stream.rs:207,1
    - Dst: BytesRange::new
      Src: /src/opendal/core/core/src/types/read/buffer_stream.rs:207,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 35
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 208
      start: 184
    functionDepth: 35
    functionLinenumber: 184
    functionLinenumberEnd: 208
    functionName: ChunkedReader::next_range
    functionSourceFile: /src/opendal/core/core/src/types/read/buffer_stream.rs
    functionUses: 2
    functionsReached:
    - options
    - map_or
    - Some
    - chunk
    - BytesRange::new
    - usize::min
    linkageType: ''
    returnType: Option
    signature: fn next_range(&mut self) -> Option<BytesRange>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: has_remaining
      Src: /src/opendal/core/core/src/types/read/buffer_stream.rs:213,1
    - Dst: take
      Src: /src/opendal/core/core/src/types/read/buffer_stream.rs:214,1
    - Dst: execute
      Src: /src/opendal/core/core/src/types/read/buffer_stream.rs:215,1
    - Dst: ChunkedReader::next_range
      Src: /src/opendal/core/core/src/types/read/buffer_stream.rs:216,1
    - Dst: execute
      Src: /src/opendal/core/core/src/types/read/buffer_stream.rs:217,1
    - Dst: clone
      Src: /src/opendal/core/core/src/types/read/buffer_stream.rs:219,1
    - Dst: has_result
      Src: /src/opendal/core/core/src/types/read/buffer_stream.rs:228,1
    - Dst: next
      Src: /src/opendal/core/core/src/types/read/buffer_stream.rs:233,1
    - Dst: transpose
      Src: /src/opendal/core/core/src/types/read/buffer_stream.rs:233,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/types/read/buffer_stream.rs:234,1
    - Dst: Buffer::new
      Src: /src/opendal/core/core/src/types/read/buffer_stream.rs:234,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/types/read/buffer_stream.rs:237,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 56
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 238
      start: 212
    functionDepth: 36
    functionLinenumber: 212
    functionLinenumberEnd: 238
    functionName: ChunkedReader::read
    functionSourceFile: /src/opendal/core/core/src/types/read/buffer_stream.rs
    functionUses: 0
    functionsReached:
    - next
    - transpose
    - Buffer::new
    - Ok
    - clone
    - has_remaining
    - take
    - has_result
    - execute
    - ChunkedReader::next_range
    linkageType: ''
    returnType: Result
    signature: async fn read(&mut self) -> Result<Buffer>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::options
      Src: /src/opendal/core/core/src/types/read/buffer_stream.rs:270,1
    - Dst: Result::chunk
      Src: /src/opendal/core/core/src/types/read/buffer_stream.rs:270,1
    - Dst: Result::is_some
      Src: /src/opendal/core/core/src/types/read/buffer_stream.rs:270,1
    - Dst: TwoWays::Two
      Src: /src/opendal/core/core/src/types/read/buffer_stream.rs:271,1
    - Dst: ChunkedReader::new
      Src: /src/opendal/core/core/src/types/read/buffer_stream.rs:271,1
    - Dst: Result::clone
      Src: /src/opendal/core/core/src/types/read/buffer_stream.rs:272,1
    - Dst: BytesRange::new
      Src: /src/opendal/core/core/src/types/read/buffer_stream.rs:273,1
    - Dst: TwoWays::One
      Src: /src/opendal/core/core/src/types/read/buffer_stream.rs:276,1
    - Dst: StreamingReader::new
      Src: /src/opendal/core/core/src/types/read/buffer_stream.rs:276,1
    - Dst: Result::clone
      Src: /src/opendal/core/core/src/types/read/buffer_stream.rs:277,1
    - Dst: BytesRange::new
      Src: /src/opendal/core/core/src/types/read/buffer_stream.rs:278,1
    - Dst: State::Idle
      Src: /src/opendal/core/core/src/types/read/buffer_stream.rs:284,1
    - Dst: Some
      Src: /src/opendal/core/core/src/types/read/buffer_stream.rs:284,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 21
    argCount: 3
    argNames:
    - ctx
    - offset
    - size
    argTypes:
    - Arc<ReadContext>
    - u64
    - Option<u64>
    constantsTouched: []
    func_position:
      end: 286
      start: 264
    functionDepth: 35
    functionLinenumber: 264
    functionLinenumberEnd: 286
    functionName: BufferStream::new
    functionSourceFile: /src/opendal/core/core/src/types/read/buffer_stream.rs
    functionUses: 2
    functionsReached:
    - Result::clone
    - StreamingReader::new
    - State::Idle
    - ChunkedReader::new
    - Some
    - TwoWays::One
    - BytesRange::new
    - Result::chunk
    - Result::is_some
    - Result::options
    - TwoWays::Two
    linkageType: ''
    returnType: Self
    signature: 'pub(crate) fn new(ctx: Arc<ReadContext>, offset: u64, size: Option<u64>)
      -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: (Vec::into
      Src: /src/opendal/core/core/src/types/read/buffer_stream.rs:296,1
    - Dst: Result::options
      Src: /src/opendal/core/core/src/types/read/buffer_stream.rs:297,1
    - Dst: Result::chunk
      Src: /src/opendal/core/core/src/types/read/buffer_stream.rs:297,1
    - Dst: Result::is_some
      Src: /src/opendal/core/core/src/types/read/buffer_stream.rs:297,1
    - Dst: Result::parse_into_range
      Src: /src/opendal/core/core/src/types/read/buffer_stream.rs:298,1
    - Dst: TwoWays::Two
      Src: /src/opendal/core/core/src/types/read/buffer_stream.rs:299,1
    - Dst: ChunkedReader::new
      Src: /src/opendal/core/core/src/types/read/buffer_stream.rs:299,1
    - Dst: Result::clone
      Src: /src/opendal/core/core/src/types/read/buffer_stream.rs:299,1
    - Dst: (Vec::into
      Src: /src/opendal/core/core/src/types/read/buffer_stream.rs:299,1
    - Dst: TwoWays::One
      Src: /src/opendal/core/core/src/types/read/buffer_stream.rs:301,1
    - Dst: StreamingReader::new
      Src: /src/opendal/core/core/src/types/read/buffer_stream.rs:301,1
    - Dst: Result::clone
      Src: /src/opendal/core/core/src/types/read/buffer_stream.rs:301,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/types/read/buffer_stream.rs:304,1
    - Dst: State::Idle
      Src: /src/opendal/core/core/src/types/read/buffer_stream.rs:306,1
    - Dst: Some
      Src: /src/opendal/core/core/src/types/read/buffer_stream.rs:306,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 27
    argCount: 2
    argNames:
    - ctx
    - range
    argTypes:
    - Arc<ReadContext>
    - impl Into<BytesRange>
    constantsTouched: []
    func_position:
      end: 308
      start: 292
    functionDepth: 26
    functionLinenumber: 292
    functionLinenumberEnd: 308
    functionName: BufferStream::create
    functionSourceFile: /src/opendal/core/core/src/types/read/buffer_stream.rs
    functionUses: 3
    functionsReached:
    - Result::clone
    - StreamingReader::new
    - Ok
    - Result::parse_into_range
    - State::Idle
    - ChunkedReader::new
    - Some
    - TwoWays::Two
    - TwoWays::One
    - Result::chunk
    - Result::is_some
    - Result::options
    - (Vec::into
    linkageType: ''
    returnType: Result
    signature: 'pub(crate) async fn create(ctx: Arc<ReadContext>,range: impl Into<BytesRange>,)
      -> Result<Self>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: metadata
      Src: /src/opendal/core/core/src/types/read/buffer_stream.rs:316,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/types/read/buffer_stream.rs:317,1
    - Dst: anyhow::Result::clone
      Src: /src/opendal/core/core/src/types/read/buffer_stream.rs:317,1
    - Dst: std::mem::replace
      Src: /src/opendal/core/core/src/types/read/buffer_stream.rs:320,1
    - Dst: State::Idle
      Src: /src/opendal/core/core/src/types/read/buffer_stream.rs:320,1
    - Dst: anyhow::Result::expect
      Src: /src/opendal/core/core/src/types/read/buffer_stream.rs:322,1
    - Dst: Result::metadata
      Src: /src/opendal/core/core/src/types/read/buffer_stream.rs:324,1
    - Dst: Result::metadata
      Src: /src/opendal/core/core/src/types/read/buffer_stream.rs:325,1
    - Dst: State::Idle
      Src: /src/opendal/core/core/src/types/read/buffer_stream.rs:327,1
    - Dst: Some
      Src: /src/opendal/core/core/src/types/read/buffer_stream.rs:327,1
    - Dst: State::Reading
      Src: /src/opendal/core/core/src/types/read/buffer_stream.rs:331,1
    - Dst: metadata
      Src: /src/opendal/core/core/src/types/read/buffer_stream.rs:332,1
    - Dst: cloned
      Src: /src/opendal/core/core/src/types/read/buffer_stream.rs:332,1
    - Dst: ok_or_else
      Src: /src/opendal/core/core/src/types/read/buffer_stream.rs:332,1
    - Dst: Error::new
      Src: /src/opendal/core/core/src/types/read/buffer_stream.rs:333,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 44
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 337
      start: 315
    functionDepth: 37
    functionLinenumber: 315
    functionLinenumberEnd: 337
    functionName: BufferStream::metadata
    functionSourceFile: /src/opendal/core/core/src/types/read/buffer_stream.rs
    functionUses: 0
    functionsReached:
    - Result::metadata
    - anyhow::Result::expect
    - Ok
    - State::Idle
    - metadata
    - State::Reading
    - Some
    - anyhow::Result::clone
    - Error::new
    - cloned
    - std::mem::replace
    - ok_or_else
    linkageType: ''
    returnType: Result
    signature: pub async fn metadata(&mut self) -> Result<Metadata>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: BufferStream::get_mut
      Src: /src/opendal/core/core/src/types/read/buffer_stream.rs:344,1
    - Dst: anyhow::Result::take
      Src: /src/opendal/core/core/src/types/read/buffer_stream.rs:348,1
    - Dst: QueueBuf::unwrap
      Src: /src/opendal/core/core/src/types/read/buffer_stream.rs:348,1
    - Dst: anyhow::Result::read
      Src: /src/opendal/core/core/src/types/read/buffer_stream.rs:350,1
    - Dst: State::Reading
      Src: /src/opendal/core/core/src/types/read/buffer_stream.rs:353,1
    - Dst: Box::pin
      Src: /src/opendal/core/core/src/types/read/buffer_stream.rs:353,1
    - Dst: as_mut
      Src: /src/opendal/core/core/src/types/read/buffer_stream.rs:356,1
    - Dst: State::Idle
      Src: /src/opendal/core/core/src/types/read/buffer_stream.rs:358,1
    - Dst: Some
      Src: /src/opendal/core/core/src/types/read/buffer_stream.rs:358,1
    - Dst: io::Result::is_empty
      Src: /src/opendal/core/core/src/types/read/buffer_stream.rs:360,1
    - Dst: Poll::Ready
      Src: /src/opendal/core/core/src/types/read/buffer_stream.rs:360,1
    - Dst: Poll::Ready
      Src: /src/opendal/core/core/src/types/read/buffer_stream.rs:361,1
    - Dst: Some
      Src: /src/opendal/core/core/src/types/read/buffer_stream.rs:361,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/types/read/buffer_stream.rs:361,1
    - Dst: Poll::Ready
      Src: /src/opendal/core/core/src/types/read/buffer_stream.rs:362,1
    - Dst: Some
      Src: /src/opendal/core/core/src/types/read/buffer_stream.rs:362,1
    - Dst: Err
      Src: /src/opendal/core/core/src/types/read/buffer_stream.rs:362,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 40
    argCount: 2
    argNames:
    - cx
    argTypes:
    - Pin<&mut Self>
    - '&mut Context<''_>'
    constantsTouched: []
    func_position:
      end: 367
      start: 343
    functionDepth: 35
    functionLinenumber: 343
    functionLinenumberEnd: 367
    functionName: BufferStream::poll_next
    functionSourceFile: /src/opendal/core/core/src/types/read/buffer_stream.rs
    functionUses: 0
    functionsReached:
    - as_mut
    - Ok
    - io::Result::is_empty
    - Poll::Ready
    - State::Idle
    - anyhow::Result::read
    - QueueBuf::unwrap
    - State::Reading
    - Some
    - Err
    - Box::pin
    - BufferStream::get_mut
    - anyhow::Result::take
    linkageType: ''
    returnType: Poll
    signature: 'fn poll_next(self: Pin<&mut Self>, cx: &mut Context<''_>) -> Poll<Option<Self::Item>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Operator::via_iter
      Src: /src/opendal/core/core/src/types/read/buffer_stream.rs:414,1
    - Dst: write
      Src: /src/opendal/core/core/src/types/read/buffer_stream.rs:415,1
    - Dst: Buffer::from
      Src: /src/opendal/core/core/src/types/read/buffer_stream.rs:417,1
    - Dst: context
      Src: /src/opendal/core/core/src/types/read/buffer_stream.rs:421,1
    - Dst: OperationContext::clone
      Src: /src/opendal/core/core/src/types/read/buffer_stream.rs:421,1
    - Dst: service
      Src: /src/opendal/core/core/src/types/read/buffer_stream.rs:422,1
    - Dst: Servicer::clone
      Src: /src/opendal/core/core/src/types/read/buffer_stream.rs:422,1
    - Dst: Arc::new
      Src: /src/opendal/core/core/src/types/read/buffer_stream.rs:423,1
    - Dst: new_read_context
      Src: /src/opendal/core/core/src/types/read/buffer_stream.rs:423,1
    - Dst: OpReader::new
      Src: /src/opendal/core/core/src/types/read/buffer_stream.rs:423,1
    - Dst: BufferStream::create
      Src: /src/opendal/core/core/src/types/read/buffer_stream.rs:425,1
    - Dst: try_collect
      Src: /src/opendal/core/core/src/types/read/buffer_stream.rs:426,1
    - Dst: unwrap
      Src: /src/opendal/core/core/src/types/read/buffer_stream.rs:426,1
    - Dst: into_iter
      Src: /src/opendal/core/core/src/types/read/buffer_stream.rs:430,1
    - Dst: flatten
      Src: /src/opendal/core/core/src/types/read/buffer_stream.rs:430,1
    - Dst: collect
      Src: /src/opendal/core/core/src/types/read/buffer_stream.rs:430,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/types/read/buffer_stream.rs:434,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 42
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 435
      start: 413
    functionDepth: 36
    functionLinenumber: 413
    functionLinenumberEnd: 435
    functionName: tests::test_buffer_stream
    functionSourceFile: /src/opendal/core/core/src/types/read/buffer_stream.rs
    functionUses: 0
    functionsReached:
    - context
    - collect
    - Operator::via_iter
    - BufferStream::create
    - Ok
    - OpReader::new
    - Arc::new
    - unwrap
    - OperationContext::clone
    - service
    - new_read_context
    - try_collect
    - into_iter
    - flatten
    - write
    - Buffer::from
    - Servicer::clone
    linkageType: ''
    returnType: Result
    signature: async fn test_buffer_stream() -> Result<()>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: BufferStream::create
      Src: /src/opendal/core/core/src/types/read/futures_bytes_stream.rs:49,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/types/read/futures_bytes_stream.rs:51,1
    - Dst: Buffer::new
      Src: /src/opendal/core/core/src/types/read/futures_bytes_stream.rs:53,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - ctx
    - range
    argTypes:
    - Arc<ReadContext>
    - impl Into<BytesRange>
    constantsTouched: []
    func_position:
      end: 55
      start: 48
    functionDepth: 27
    functionLinenumber: 48
    functionLinenumberEnd: 55
    functionName: FuturesBytesStream::new
    functionSourceFile: /src/opendal/core/core/src/types/read/futures_bytes_stream.rs
    functionUses: 3
    functionsReached:
    - Buffer::new
    - BufferStream::create
    - Ok
    linkageType: ''
    returnType: Result
    signature: 'pub(crate) async fn new(ctx: Arc<ReadContext>, range: impl Into<BytesRange>)
      -> Result<Self>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: metadata
      Src: /src/opendal/core/core/src/types/read/futures_bytes_stream.rs:63,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 64
      start: 62
    functionDepth: 37
    functionLinenumber: 62
    functionLinenumberEnd: 64
    functionName: FuturesBytesStream::metadata
    functionSourceFile: /src/opendal/core/core/src/types/read/futures_bytes_stream.rs
    functionUses: 0
    functionsReached:
    - metadata
    linkageType: ''
    returnType: Result
    signature: pub async fn metadata(&mut self) -> Result<Metadata>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: FuturesBytesStream::get_mut
      Src: /src/opendal/core/core/src/types/read/futures_bytes_stream.rs:71,1
    - Dst: Iterator::next
      Src: /src/opendal/core/core/src/types/read/futures_bytes_stream.rs:75,1
    - Dst: Poll::Ready
      Src: /src/opendal/core/core/src/types/read/futures_bytes_stream.rs:76,1
    - Dst: Some
      Src: /src/opendal/core/core/src/types/read/futures_bytes_stream.rs:76,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/types/read/futures_bytes_stream.rs:76,1
    - Dst: Poll::Ready
      Src: /src/opendal/core/core/src/types/read/futures_bytes_stream.rs:81,1
    - Dst: Some
      Src: /src/opendal/core/core/src/types/read/futures_bytes_stream.rs:81,1
    - Dst: Err
      Src: /src/opendal/core/core/src/types/read/futures_bytes_stream.rs:81,1
    - Dst: format_std_io_error
      Src: /src/opendal/core/core/src/types/read/futures_bytes_stream.rs:81,1
    - Dst: Poll::Ready
      Src: /src/opendal/core/core/src/types/read/futures_bytes_stream.rs:82,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 25
    argCount: 2
    argNames:
    - cx
    argTypes:
    - Pin<&mut Self>
    - '&mut Context<''_>'
    constantsTouched: []
    func_position:
      end: 85
      start: 70
    functionDepth: 37
    functionLinenumber: 70
    functionLinenumberEnd: 85
    functionName: FuturesBytesStream::poll_next
    functionSourceFile: /src/opendal/core/core/src/types/read/futures_bytes_stream.rs
    functionUses: 0
    functionsReached:
    - FuturesBytesStream::get_mut
    - Ok
    - Poll::Ready
    - format_std_io_error
    - Some
    - Err
    - Iterator::next
    linkageType: ''
    returnType: Poll
    signature: 'fn poll_next(self: Pin<&mut Self>, cx: &mut Context<''_>) -> Poll<Option<Self::Item>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Operator::via_iter
      Src: /src/opendal/core/core/src/types/read/futures_bytes_stream.rs:131,1
    - Dst: write
      Src: /src/opendal/core/core/src/types/read/futures_bytes_stream.rs:132,1
    - Dst: Buffer::from
      Src: /src/opendal/core/core/src/types/read/futures_bytes_stream.rs:134,1
    - Dst: context
      Src: /src/opendal/core/core/src/types/read/futures_bytes_stream.rs:138,1
    - Dst: OperationContext::clone
      Src: /src/opendal/core/core/src/types/read/futures_bytes_stream.rs:138,1
    - Dst: service
      Src: /src/opendal/core/core/src/types/read/futures_bytes_stream.rs:139,1
    - Dst: Servicer::clone
      Src: /src/opendal/core/core/src/types/read/futures_bytes_stream.rs:139,1
    - Dst: Arc::new
      Src: /src/opendal/core/core/src/types/read/futures_bytes_stream.rs:140,1
    - Dst: new_read_context
      Src: /src/opendal/core/core/src/types/read/futures_bytes_stream.rs:140,1
    - Dst: OpReader::new
      Src: /src/opendal/core/core/src/types/read/futures_bytes_stream.rs:140,1
    - Dst: FuturesBytesStream::new
      Src: /src/opendal/core/core/src/types/read/futures_bytes_stream.rs:142,1
    - Dst: try_collect
      Src: /src/opendal/core/core/src/types/read/futures_bytes_stream.rs:143,1
    - Dst: unwrap
      Src: /src/opendal/core/core/src/types/read/futures_bytes_stream.rs:143,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/types/read/futures_bytes_stream.rs:147,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 34
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 148
      start: 130
    functionDepth: 36
    functionLinenumber: 130
    functionLinenumberEnd: 148
    functionName: tests::test_futures_bytes_stream
    functionSourceFile: /src/opendal/core/core/src/types/read/futures_bytes_stream.rs
    functionUses: 0
    functionsReached:
    - context
    - Operator::via_iter
    - Ok
    - OpReader::new
    - Arc::new
    - unwrap
    - OperationContext::clone
    - service
    - new_read_context
    - try_collect
    - FuturesBytesStream::new
    - write
    - Buffer::from
    - Servicer::clone
    linkageType: ''
    returnType: Result
    signature: async fn test_futures_bytes_stream() -> Result<()>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Operator::via_iter
      Src: /src/opendal/core/core/src/types/read/futures_bytes_stream.rs:152,1
    - Dst: write
      Src: /src/opendal/core/core/src/types/read/futures_bytes_stream.rs:153,1
    - Dst: Buffer::from
      Src: /src/opendal/core/core/src/types/read/futures_bytes_stream.rs:155,1
    - Dst: context
      Src: /src/opendal/core/core/src/types/read/futures_bytes_stream.rs:159,1
    - Dst: OperationContext::clone
      Src: /src/opendal/core/core/src/types/read/futures_bytes_stream.rs:159,1
    - Dst: service
      Src: /src/opendal/core/core/src/types/read/futures_bytes_stream.rs:160,1
    - Dst: Servicer::clone
      Src: /src/opendal/core/core/src/types/read/futures_bytes_stream.rs:160,1
    - Dst: Arc::new
      Src: /src/opendal/core/core/src/types/read/futures_bytes_stream.rs:161,1
    - Dst: new_read_context
      Src: /src/opendal/core/core/src/types/read/futures_bytes_stream.rs:161,1
    - Dst: OpReader::new
      Src: /src/opendal/core/core/src/types/read/futures_bytes_stream.rs:165,1
    - Dst: Self::with_concurrent
      Src: /src/opendal/core/core/src/types/read/futures_bytes_stream.rs:165,1
    - Dst: anyhow::Result::with_chunk
      Src: /src/opendal/core/core/src/types/read/futures_bytes_stream.rs:165,1
    - Dst: FuturesBytesStream::new
      Src: /src/opendal/core/core/src/types/read/futures_bytes_stream.rs:168,1
    - Dst: try_collect
      Src: /src/opendal/core/core/src/types/read/futures_bytes_stream.rs:169,1
    - Dst: unwrap
      Src: /src/opendal/core/core/src/types/read/futures_bytes_stream.rs:169,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/types/read/futures_bytes_stream.rs:175,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 40
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 176
      start: 151
    functionDepth: 36
    functionLinenumber: 151
    functionLinenumberEnd: 176
    functionName: tests::test_futures_bytes_stream_with_concurrent
    functionSourceFile: /src/opendal/core/core/src/types/read/futures_bytes_stream.rs
    functionUses: 0
    functionsReached:
    - context
    - Operator::via_iter
    - Ok
    - OpReader::new
    - Self::with_concurrent
    - Arc::new
    - unwrap
    - OperationContext::clone
    - service
    - new_read_context
    - try_collect
    - FuturesBytesStream::new
    - anyhow::Result::with_chunk
    - write
    - Buffer::from
    - Servicer::clone
    linkageType: ''
    returnType: Result
    signature: async fn test_futures_bytes_stream_with_concurrent() -> Result<()>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: BufferStream::new
      Src: /src/opendal/core/core/src/types/read/futures_async_reader.rs:66,1
    - Dst: Result::clone
      Src: /src/opendal/core/core/src/types/read/futures_async_reader.rs:66,1
    - Dst: Some
      Src: /src/opendal/core/core/src/types/read/futures_async_reader.rs:66,1
    - Dst: Buffer::new
      Src: /src/opendal/core/core/src/types/read/futures_async_reader.rs:71,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 2
    argNames:
    - ctx
    - range
    argTypes:
    - Arc<ReadContext>
    - Range<u64>
    constantsTouched: []
    func_position:
      end: 76
      start: 64
    functionDepth: 36
    functionLinenumber: 64
    functionLinenumberEnd: 76
    functionName: FuturesAsyncReader::new
    functionSourceFile: /src/opendal/core/core/src/types/read/futures_async_reader.rs
    functionUses: 6
    functionsReached:
    - BufferStream::new
    - Buffer::new
    - Result::clone
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub(super) fn new(ctx: Arc<ReadContext>, range: Range<u64>) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: FuturesAsyncReader::get_mut
      Src: /src/opendal/core/core/src/types/read/futures_async_reader.rs:81,1
    - Dst: has_remaining
      Src: /src/opendal/core/core/src/types/read/futures_async_reader.rs:83,1
    - Dst: Poll::Ready
      Src: /src/opendal/core/core/src/types/read/futures_async_reader.rs:84,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/types/read/futures_async_reader.rs:84,1
    - Dst: chunk
      Src: /src/opendal/core/core/src/types/read/futures_async_reader.rs:84,1
    - Dst: Poll::Ready
      Src: /src/opendal/core/core/src/types/read/futures_async_reader.rs:89,1
    - Dst: Err
      Src: /src/opendal/core/core/src/types/read/futures_async_reader.rs:89,1
    - Dst: format_std_io_error
      Src: /src/opendal/core/core/src/types/read/futures_async_reader.rs:89,1
    - Dst: Poll::Ready
      Src: /src/opendal/core/core/src/types/read/futures_async_reader.rs:90,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/types/read/futures_async_reader.rs:90,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 29
    argCount: 2
    argNames:
    - cx
    argTypes:
    - Pin<&mut Self>
    - '&mut Context<''_>'
    constantsTouched: []
    func_position:
      end: 93
      start: 80
    functionDepth: 36
    functionLinenumber: 80
    functionLinenumberEnd: 93
    functionName: FuturesAsyncReader::poll_fill_buf
    functionSourceFile: /src/opendal/core/core/src/types/read/futures_async_reader.rs
    functionUses: 0
    functionsReached:
    - Ok
    - Poll::Ready
    - has_remaining
    - format_std_io_error
    - Err
    - chunk
    - FuturesAsyncReader::get_mut
    linkageType: ''
    returnType: Poll
    signature: 'fn poll_fill_buf(self: Pin<&mut Self>, cx: &mut Context<''_>) -> Poll<io::Result<&[u8]>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: advance
      Src: /src/opendal/core/core/src/types/read/futures_async_reader.rs:96,1
    - Dst: is_empty
      Src: /src/opendal/core/core/src/types/read/futures_async_reader.rs:100,1
    - Dst: Buffer::new
      Src: /src/opendal/core/core/src/types/read/futures_async_reader.rs:101,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 16
    argCount: 2
    argNames:
    - amt
    argTypes:
    - Pin<&mut Self>
    - usize
    constantsTouched: []
    func_position:
      end: 104
      start: 95
    functionDepth: 4
    functionLinenumber: 95
    functionLinenumberEnd: 104
    functionName: FuturesAsyncReader::consume
    functionSourceFile: /src/opendal/core/core/src/types/read/futures_async_reader.rs
    functionUses: 0
    functionsReached:
    - advance
    - Buffer::new
    - is_empty
    linkageType: ''
    returnType: void
    signature: 'fn consume(mut self: Pin<&mut Self>, amt: usize)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: FuturesAsyncReader::get_mut
      Src: /src/opendal/core/core/src/types/read/futures_async_reader.rs:114,1
    - Dst: remaining
      Src: /src/opendal/core/core/src/types/read/futures_async_reader.rs:117,1
    - Dst: remaining
      Src: /src/opendal/core/core/src/types/read/futures_async_reader.rs:118,1
    - Dst: min
      Src: /src/opendal/core/core/src/types/read/futures_async_reader.rs:118,1
    - Dst: io::Result::len
      Src: /src/opendal/core/core/src/types/read/futures_async_reader.rs:118,1
    - Dst: copy_to_slice
      Src: /src/opendal/core/core/src/types/read/futures_async_reader.rs:119,1
    - Dst: Poll::Ready
      Src: /src/opendal/core/core/src/types/read/futures_async_reader.rs:121,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/types/read/futures_async_reader.rs:121,1
    - Dst: Poll::Ready
      Src: /src/opendal/core/core/src/types/read/futures_async_reader.rs:126,1
    - Dst: Err
      Src: /src/opendal/core/core/src/types/read/futures_async_reader.rs:126,1
    - Dst: format_std_io_error
      Src: /src/opendal/core/core/src/types/read/futures_async_reader.rs:126,1
    - Dst: Poll::Ready
      Src: /src/opendal/core/core/src/types/read/futures_async_reader.rs:127,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/types/read/futures_async_reader.rs:127,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 42
    argCount: 3
    argNames:
    - cx
    - buf
    argTypes:
    - Pin<&mut Self>
    - '&mut Context<''_>'
    - '&mut [u8]'
    constantsTouched: []
    func_position:
      end: 130
      start: 109
    functionDepth: 37
    functionLinenumber: 109
    functionLinenumberEnd: 130
    functionName: FuturesAsyncReader::poll_read
    functionSourceFile: /src/opendal/core/core/src/types/read/futures_async_reader.rs
    functionUses: 0
    functionsReached:
    - Ok
    - Poll::Ready
    - io::Result::len
    - remaining
    - format_std_io_error
    - Err
    - min
    - FuturesAsyncReader::get_mut
    - copy_to_slice
    linkageType: ''
    returnType: Poll
    signature: 'fn poll_read(self: Pin<&mut Self>,cx: &mut Context<''_>,buf: &mut
      [u8],) -> Poll<io::Result<usize>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Poll::Ready
      Src: /src/opendal/core/core/src/types/read/futures_async_reader.rs:147,1
    - Dst: Err
      Src: /src/opendal/core/core/src/types/read/futures_async_reader.rs:147,1
    - Dst: io::Error::new
      Src: /src/opendal/core/core/src/types/read/futures_async_reader.rs:147,1
    - Dst: Poll::Ready
      Src: /src/opendal/core/core/src/types/read/futures_async_reader.rs:158,1
    - Dst: Err
      Src: /src/opendal/core/core/src/types/read/futures_async_reader.rs:158,1
    - Dst: io::Error::new
      Src: /src/opendal/core/core/src/types/read/futures_async_reader.rs:158,1
    - Dst: remaining
      Src: /src/opendal/core/core/src/types/read/futures_async_reader.rs:164,1
    - Dst: contains
      Src: /src/opendal/core/core/src/types/read/futures_async_reader.rs:164,1
    - Dst: advance
      Src: /src/opendal/core/core/src/types/read/futures_async_reader.rs:166,1
    - Dst: Buffer::new
      Src: /src/opendal/core/core/src/types/read/futures_async_reader.rs:168,1
    - Dst: BufferStream::new
      Src: /src/opendal/core/core/src/types/read/futures_async_reader.rs:169,1
    - Dst: clone
      Src: /src/opendal/core/core/src/types/read/futures_async_reader.rs:170,1
    - Dst: Some
      Src: /src/opendal/core/core/src/types/read/futures_async_reader.rs:172,1
    - Dst: Poll::Ready
      Src: /src/opendal/core/core/src/types/read/futures_async_reader.rs:177,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/types/read/futures_async_reader.rs:177,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 73
    argCount: 3
    argNames:
    - pos
    argTypes:
    - Pin<&mut Self>
    - '&mut Context<''_>'
    - SeekFrom
    constantsTouched: []
    func_position:
      end: 178
      start: 134
    functionDepth: 36
    functionLinenumber: 134
    functionLinenumberEnd: 178
    functionName: FuturesAsyncReader::poll_seek
    functionSourceFile: /src/opendal/core/core/src/types/read/futures_async_reader.rs
    functionUses: 0
    functionsReached:
    - BufferStream::new
    - Buffer::new
    - Ok
    - Poll::Ready
    - io::Error::new
    - remaining
    - clone
    - Err
    - Some
    - advance
    - contains
    linkageType: ''
    returnType: Poll
    signature: 'fn poll_seek(mut self: Pin<&mut Self>,_: &mut Context<''_>,pos: SeekFrom,)
      -> Poll<io::Result<u64>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Operator::via_iter
      Src: /src/opendal/core/core/src/types/read/futures_async_reader.rs:226,1
    - Dst: write
      Src: /src/opendal/core/core/src/types/read/futures_async_reader.rs:227,1
    - Dst: Buffer::from
      Src: /src/opendal/core/core/src/types/read/futures_async_reader.rs:229,1
    - Dst: context
      Src: /src/opendal/core/core/src/types/read/futures_async_reader.rs:233,1
    - Dst: OperationContext::clone
      Src: /src/opendal/core/core/src/types/read/futures_async_reader.rs:233,1
    - Dst: service
      Src: /src/opendal/core/core/src/types/read/futures_async_reader.rs:234,1
    - Dst: Servicer::clone
      Src: /src/opendal/core/core/src/types/read/futures_async_reader.rs:234,1
    - Dst: Arc::new
      Src: /src/opendal/core/core/src/types/read/futures_async_reader.rs:235,1
    - Dst: new_read_context
      Src: /src/opendal/core/core/src/types/read/futures_async_reader.rs:235,1
    - Dst: OpReader::new
      Src: /src/opendal/core/core/src/types/read/futures_async_reader.rs:235,1
    - Dst: FuturesAsyncReader::new
      Src: /src/opendal/core/core/src/types/read/futures_async_reader.rs:237,1
    - Dst: Self::read_to_end
      Src: /src/opendal/core/core/src/types/read/futures_async_reader.rs:239,1
    - Dst: unwrap
      Src: /src/opendal/core/core/src/types/read/futures_async_reader.rs:239,1
    - Dst: Self::seek
      Src: /src/opendal/core/core/src/types/read/futures_async_reader.rs:242,1
    - Dst: SeekFrom::Current
      Src: /src/opendal/core/core/src/types/read/futures_async_reader.rs:242,1
    - Dst: unwrap
      Src: /src/opendal/core/core/src/types/read/futures_async_reader.rs:242,1
    - Dst: Self::read_to_end
      Src: /src/opendal/core/core/src/types/read/futures_async_reader.rs:245,1
    - Dst: unwrap
      Src: /src/opendal/core/core/src/types/read/futures_async_reader.rs:245,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/types/read/futures_async_reader.rs:248,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 49
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 249
      start: 225
    functionDepth: 36
    functionLinenumber: 225
    functionLinenumberEnd: 249
    functionName: tests::test_futures_async_read
    functionSourceFile: /src/opendal/core/core/src/types/read/futures_async_reader.rs
    functionUses: 0
    functionsReached:
    - context
    - Operator::via_iter
    - Ok
    - OpReader::new
    - Self::seek
    - Arc::new
    - unwrap
    - SeekFrom::Current
    - OperationContext::clone
    - service
    - new_read_context
    - Self::read_to_end
    - FuturesAsyncReader::new
    - write
    - Buffer::from
    - Servicer::clone
    linkageType: ''
    returnType: Result
    signature: async fn test_futures_async_read() -> Result<()>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Operator::via_iter
      Src: /src/opendal/core/core/src/types/read/futures_async_reader.rs:253,1
    - Dst: write
      Src: /src/opendal/core/core/src/types/read/futures_async_reader.rs:254,1
    - Dst: Buffer::from
      Src: /src/opendal/core/core/src/types/read/futures_async_reader.rs:256,1
    - Dst: context
      Src: /src/opendal/core/core/src/types/read/futures_async_reader.rs:260,1
    - Dst: OperationContext::clone
      Src: /src/opendal/core/core/src/types/read/futures_async_reader.rs:260,1
    - Dst: service
      Src: /src/opendal/core/core/src/types/read/futures_async_reader.rs:261,1
    - Dst: Servicer::clone
      Src: /src/opendal/core/core/src/types/read/futures_async_reader.rs:261,1
    - Dst: Arc::new
      Src: /src/opendal/core/core/src/types/read/futures_async_reader.rs:262,1
    - Dst: new_read_context
      Src: /src/opendal/core/core/src/types/read/futures_async_reader.rs:262,1
    - Dst: OpReader::new
      Src: /src/opendal/core/core/src/types/read/futures_async_reader.rs:266,1
    - Dst: Self::with_concurrent
      Src: /src/opendal/core/core/src/types/read/futures_async_reader.rs:266,1
    - Dst: anyhow::Result::with_chunk
      Src: /src/opendal/core/core/src/types/read/futures_async_reader.rs:266,1
    - Dst: FuturesAsyncReader::new
      Src: /src/opendal/core/core/src/types/read/futures_async_reader.rs:269,1
    - Dst: Self::read_to_end
      Src: /src/opendal/core/core/src/types/read/futures_async_reader.rs:271,1
    - Dst: unwrap
      Src: /src/opendal/core/core/src/types/read/futures_async_reader.rs:271,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/types/read/futures_async_reader.rs:280,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 37
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 281
      start: 252
    functionDepth: 36
    functionLinenumber: 252
    functionLinenumberEnd: 281
    functionName: tests::test_futures_async_read_with_concurrent
    functionSourceFile: /src/opendal/core/core/src/types/read/futures_async_reader.rs
    functionUses: 0
    functionsReached:
    - context
    - Operator::via_iter
    - Ok
    - OpReader::new
    - Self::with_concurrent
    - Arc::new
    - unwrap
    - OperationContext::clone
    - service
    - new_read_context
    - Self::read_to_end
    - FuturesAsyncReader::new
    - anyhow::Result::with_chunk
    - write
    - Buffer::from
    - Servicer::clone
    linkageType: ''
    returnType: Result
    signature: async fn test_futures_async_read_with_concurrent() -> Result<()>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Operator::via_iter
      Src: /src/opendal/core/core/src/types/read/futures_async_reader.rs:285,1
    - Dst: write
      Src: /src/opendal/core/core/src/types/read/futures_async_reader.rs:286,1
    - Dst: Buffer::from
      Src: /src/opendal/core/core/src/types/read/futures_async_reader.rs:288,1
    - Dst: context
      Src: /src/opendal/core/core/src/types/read/futures_async_reader.rs:292,1
    - Dst: OperationContext::clone
      Src: /src/opendal/core/core/src/types/read/futures_async_reader.rs:292,1
    - Dst: service
      Src: /src/opendal/core/core/src/types/read/futures_async_reader.rs:293,1
    - Dst: Servicer::clone
      Src: /src/opendal/core/core/src/types/read/futures_async_reader.rs:293,1
    - Dst: Arc::new
      Src: /src/opendal/core/core/src/types/read/futures_async_reader.rs:294,1
    - Dst: new_read_context
      Src: /src/opendal/core/core/src/types/read/futures_async_reader.rs:294,1
    - Dst: OpReader::new
      Src: /src/opendal/core/core/src/types/read/futures_async_reader.rs:298,1
    - Dst: Self::with_concurrent
      Src: /src/opendal/core/core/src/types/read/futures_async_reader.rs:298,1
    - Dst: anyhow::Result::with_chunk
      Src: /src/opendal/core/core/src/types/read/futures_async_reader.rs:298,1
    - Dst: FuturesAsyncReader::new
      Src: /src/opendal/core/core/src/types/read/futures_async_reader.rs:301,1
    - Dst: Self::fill_buf
      Src: /src/opendal/core/core/src/types/read/futures_async_reader.rs:302,1
    - Dst: unwrap
      Src: /src/opendal/core/core/src/types/read/futures_async_reader.rs:302,1
    - Dst: Self::consume_unpin
      Src: /src/opendal/core/core/src/types/read/futures_async_reader.rs:305,1
    - Dst: Self::fill_buf
      Src: /src/opendal/core/core/src/types/read/futures_async_reader.rs:306,1
    - Dst: unwrap
      Src: /src/opendal/core/core/src/types/read/futures_async_reader.rs:306,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/types/read/futures_async_reader.rs:309,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 44
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 310
      start: 284
    functionDepth: 36
    functionLinenumber: 284
    functionLinenumberEnd: 310
    functionName: tests::test_futures_async_buf_read
    functionSourceFile: /src/opendal/core/core/src/types/read/futures_async_reader.rs
    functionUses: 0
    functionsReached:
    - context
    - Operator::via_iter
    - Self::consume_unpin
    - Ok
    - OpReader::new
    - Self::with_concurrent
    - Arc::new
    - unwrap
    - OperationContext::clone
    - service
    - new_read_context
    - FuturesAsyncReader::new
    - Self::fill_buf
    - anyhow::Result::with_chunk
    - write
    - Buffer::from
    - Servicer::clone
    linkageType: ''
    returnType: Result
    signature: async fn test_futures_async_buf_read() -> Result<()>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Operator::via_iter
      Src: /src/opendal/core/core/src/types/read/futures_async_reader.rs:314,1
    - Dst: write
      Src: /src/opendal/core/core/src/types/read/futures_async_reader.rs:315,1
    - Dst: Buffer::from
      Src: /src/opendal/core/core/src/types/read/futures_async_reader.rs:317,1
    - Dst: context
      Src: /src/opendal/core/core/src/types/read/futures_async_reader.rs:321,1
    - Dst: OperationContext::clone
      Src: /src/opendal/core/core/src/types/read/futures_async_reader.rs:321,1
    - Dst: service
      Src: /src/opendal/core/core/src/types/read/futures_async_reader.rs:322,1
    - Dst: Servicer::clone
      Src: /src/opendal/core/core/src/types/read/futures_async_reader.rs:322,1
    - Dst: Arc::new
      Src: /src/opendal/core/core/src/types/read/futures_async_reader.rs:323,1
    - Dst: new_read_context
      Src: /src/opendal/core/core/src/types/read/futures_async_reader.rs:323,1
    - Dst: OpReader::new
      Src: /src/opendal/core/core/src/types/read/futures_async_reader.rs:323,1
    - Dst: FuturesAsyncReader::new
      Src: /src/opendal/core/core/src/types/read/futures_async_reader.rs:326,1
    - Dst: Self::seek
      Src: /src/opendal/core/core/src/types/read/futures_async_reader.rs:329,1
    - Dst: SeekFrom::Start
      Src: /src/opendal/core/core/src/types/read/futures_async_reader.rs:329,1
    - Dst: Self::seek
      Src: /src/opendal/core/core/src/types/read/futures_async_reader.rs:334,1
    - Dst: SeekFrom::Start
      Src: /src/opendal/core/core/src/types/read/futures_async_reader.rs:334,1
    - Dst: unwrap
      Src: /src/opendal/core/core/src/types/read/futures_async_reader.rs:334,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/types/read/futures_async_reader.rs:337,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 38
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 338
      start: 313
    functionDepth: 36
    functionLinenumber: 313
    functionLinenumberEnd: 338
    functionName: tests::test_seek_past_end_returns_error
    functionSourceFile: /src/opendal/core/core/src/types/read/futures_async_reader.rs
    functionUses: 0
    functionsReached:
    - context
    - Operator::via_iter
    - Ok
    - OpReader::new
    - Self::seek
    - SeekFrom::Start
    - Arc::new
    - unwrap
    - OperationContext::clone
    - service
    - new_read_context
    - FuturesAsyncReader::new
    - write
    - Buffer::from
    - Servicer::clone
    linkageType: ''
    returnType: Result
    signature: async fn test_seek_past_end_returns_error() -> Result<()>
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 66
      start: 64
    functionDepth: 0
    functionLinenumber: 64
    functionLinenumberEnd: 66
    functionName: Execute::timeout
    functionSourceFile: /src/opendal/core/core/src/types/execute/api.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Option
    signature: fn timeout(&self) -> Option<BoxedStaticFuture<()>>
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 1
    argNames: []
    argTypes:
    - BoxedStaticFuture<()>
    constantsTouched: []
    func_position:
      end: 72
      start: 70
    functionDepth: 0
    functionLinenumber: 70
    functionLinenumberEnd: 72
    functionName: ()::execute
    functionSourceFile: /src/opendal/core/core/src/types/execute/api.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: 'fn execute(&self, _: BoxedStaticFuture<()>)'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - handle
    argTypes:
    - RemoteHandle<T>
    constantsTouched: []
    func_position:
      end: 93
      start: 91
    functionDepth: 0
    functionLinenumber: 91
    functionLinenumberEnd: 93
    functionName: Task::new
    functionSourceFile: /src/opendal/core/core/src/types/execute/api.rs
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(handle: RemoteHandle<T>) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - new_task
    argTypes:
    - Self
    constantsTouched: []
    func_position:
      end: 101
      start: 99
    functionDepth: 0
    functionLinenumber: 99
    functionLinenumberEnd: 101
    functionName: Task::replace
    functionSourceFile: /src/opendal/core/core/src/types/execute/api.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: 'pub fn replace(&mut self, new_task: Self)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: poll_unpin
      Src: /src/opendal/core/core/src/types/execute/api.rs:108,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - cx
    argTypes:
    - Pin<&mut Self>
    - '&mut Context<''_>'
    constantsTouched: []
    func_position:
      end: 109
      start: 107
    functionDepth: 0
    functionLinenumber: 107
    functionLinenumberEnd: 109
    functionName: Task::poll
    functionSourceFile: /src/opendal/core/core/src/types/execute/api.rs
    functionUses: 0
    functionsReached:
    - poll_unpin
    linkageType: ''
    returnType: Poll
    signature: 'fn poll(mut self: Pin<&mut Self>, cx: &mut Context<''_>) -> Poll<Self::Output>'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 1
    argNames:
    - f
    argTypes:
    - '&mut Formatter<''_>'
    constantsTouched: []
    func_position:
      end: 44
      start: 42
    functionDepth: 0
    functionLinenumber: 42
    functionLinenumberEnd: 44
    functionName: Executor::fmt
    functionSourceFile: /src/opendal/core/core/src/types/execute/executor.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: std::fmt::Result
    signature: 'fn fmt(&self, f: &mut Formatter<''_>) -> std::fmt::Result'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self::new
      Src: /src/opendal/core/core/src/types/execute/executor.rs:49,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 50
      start: 48
    functionDepth: 2
    functionLinenumber: 48
    functionLinenumberEnd: 50
    functionName: Executor::default
    functionSourceFile: /src/opendal/core/core/src/types/execute/executor.rs
    functionUses: 11
    functionsReached:
    - Self::new
    linkageType: ''
    returnType: Self
    signature: fn default() -> Self
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/bindings/dotnet/src/executor.rs:43,1
    - Dst: utils::config_invalid_error
      Src: /src/opendal/bindings/dotnet/src/executor.rs:43,1
    - Dst: tokio::runtime::Builder::new_multi_thread
      Src: /src/opendal/bindings/dotnet/src/executor.rs:48,1
    - Dst: worker_threads
      Src: /src/opendal/bindings/dotnet/src/executor.rs:48,1
    - Dst: enable_all
      Src: /src/opendal/bindings/dotnet/src/executor.rs:48,1
    - Dst: build
      Src: /src/opendal/bindings/dotnet/src/executor.rs:48,1
    - Dst: map_err
      Src: /src/opendal/bindings/dotnet/src/executor.rs:48,1
    - Dst: OpenDALError::from_opendal_error
      Src: /src/opendal/bindings/dotnet/src/executor.rs:53,1
    - Dst: opendal::Error::new
      Src: /src/opendal/bindings/dotnet/src/executor.rs:54,1
    - Dst: Self::set_source
      Src: /src/opendal/bindings/dotnet/src/executor.rs:54,1
    - Dst: Ok
      Src: /src/opendal/bindings/dotnet/src/executor.rs:62,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 24
    argCount: 1
    argNames:
    - threads
    argTypes:
    - usize
    constantsTouched: []
    func_position:
      end: 63
      start: 41
    functionDepth: 32
    functionLinenumber: 41
    functionLinenumberEnd: 63
    functionName: Executor::new
    functionSourceFile: /src/opendal/bindings/dotnet/src/executor.rs
    functionUses: 8
    functionsReached:
    - map_err
    - opendal::Error::new
    - Ok
    - OpenDALError::from_opendal_error
    - build
    - tokio::runtime::Builder::new_multi_thread
    - worker_threads
    - utils::config_invalid_error
    - Err
    - Self::set_source
    - enable_all
    linkageType: ''
    returnType: Result
    signature: 'fn new(threads: usize) -> Result<Self, OpenDALError>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Arc::new
      Src: /src/opendal/core/core/src/types/execute/executor.rs:72,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - exec
    argTypes:
    - impl Execute
    constantsTouched: []
    func_position:
      end: 74
      start: 70
    functionDepth: 2
    functionLinenumber: 70
    functionLinenumberEnd: 74
    functionName: Executor::with
    functionSourceFile: /src/opendal/core/core/src/types/execute/executor.rs
    functionUses: 4
    functionsReached:
    - Arc::new
    linkageType: ''
    returnType: Self
    signature: 'pub fn with(exec: impl Execute) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 79
      start: 77
    functionDepth: 0
    functionLinenumber: 77
    functionLinenumberEnd: 79
    functionName: Executor::into_inner
    functionSourceFile: /src/opendal/core/core/src/types/execute/executor.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Arc
    signature: pub fn into_inner(self) -> Arc<dyn Execute>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: timeout
      Src: /src/opendal/core/core/src/types/execute/executor.rs:83,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 84
      start: 82
    functionDepth: 1
    functionLinenumber: 82
    functionLinenumberEnd: 84
    functionName: Executor::timeout
    functionSourceFile: /src/opendal/core/core/src/types/execute/executor.rs
    functionUses: 0
    functionsReached:
    - timeout
    linkageType: ''
    returnType: Option
    signature: pub(crate) fn timeout(&self) -> Option<BoxedStaticFuture<()>>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::remote_handle
      Src: /src/opendal/core/core/src/types/execute/executor.rs:92,1
    - Dst: execute
      Src: /src/opendal/core/core/src/types/execute/executor.rs:93,1
    - Dst: Box::pin
      Src: /src/opendal/core/core/src/types/execute/executor.rs:93,1
    - Dst: Task::new
      Src: /src/opendal/core/core/src/types/execute/executor.rs:94,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - f
    argTypes:
    - F
    constantsTouched: []
    func_position:
      end: 95
      start: 87
    functionDepth: 2
    functionLinenumber: 87
    functionLinenumberEnd: 95
    functionName: Executor::execute
    functionSourceFile: /src/opendal/core/core/src/types/execute/executor.rs
    functionUses: 0
    functionsReached:
    - Task::new
    - execute
    - Box::pin
    - Result::remote_handle
    linkageType: ''
    returnType: Task
    signature: 'pub(crate) fn execute<F>(&self, f: F) -> Task<F::Output>whereF: Future
      + MaybeSend + ''static,F::Output: MaybeSend + ''static,'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: tokio::task::spawn
      Src: /src/opendal/core/core/src/types/execute/executors/tokio_executor.rs:28,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - f
    argTypes:
    - BoxedStaticFuture<()>
    constantsTouched: []
    func_position:
      end: 29
      start: 27
    functionDepth: 0
    functionLinenumber: 27
    functionLinenumberEnd: 29
    functionName: TokioExecutor::execute
    functionSourceFile: /src/opendal/core/core/src/types/execute/executors/tokio_executor.rs
    functionUses: 0
    functionsReached:
    - tokio::task::spawn
    linkageType: ''
    returnType: void
    signature: 'fn execute(&self, f: BoxedStaticFuture<()>)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Executor::with
      Src: /src/opendal/core/core/src/types/execute/executors/tokio_executor.rs:45,1
    - Dst: TokioExecutor::default
      Src: /src/opendal/core/core/src/types/execute/executors/tokio_executor.rs:45,1
    - Dst: Arc::new
      Src: /src/opendal/core/core/src/types/execute/executors/tokio_executor.rs:47,1
    - Dst: AtomicBool::new
      Src: /src/opendal/core/core/src/types/execute/executors/tokio_executor.rs:47,1
    - Dst: Self::clone
      Src: /src/opendal/core/core/src/types/execute/executors/tokio_executor.rs:49,1
    - Dst: Self::execute
      Src: /src/opendal/core/core/src/types/execute/executors/tokio_executor.rs:50,1
    - Dst: sleep
      Src: /src/opendal/core/core/src/types/execute/executors/tokio_executor.rs:51,1
    - Dst: Duration::from_secs
      Src: /src/opendal/core/core/src/types/execute/executors/tokio_executor.rs:51,1
    - Dst: Self::store
      Src: /src/opendal/core/core/src/types/execute/executors/tokio_executor.rs:52,1
    - Dst: sleep
      Src: /src/opendal/core/core/src/types/execute/executors/tokio_executor.rs:55,1
    - Dst: Duration::from_secs
      Src: /src/opendal/core/core/src/types/execute/executors/tokio_executor.rs:55,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 19
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 58
      start: 44
    functionDepth: 36
    functionLinenumber: 44
    functionLinenumberEnd: 58
    functionName: tests::test_tokio_executor
    functionSourceFile: /src/opendal/core/core/src/types/execute/executors/tokio_executor.rs
    functionUses: 0
    functionsReached:
    - Self::store
    - Executor::with
    - Arc::new
    - Self::execute
    - TokioExecutor::default
    - AtomicBool::new
    - Self::clone
    - sleep
    - Duration::from_secs
    linkageType: ''
    returnType: void
    signature: async fn test_tokio_executor()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Operation::into
      Src: /src/opendal/core/core/src/raw/operation.rs:57,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 58
      start: 56
    functionDepth: 29
    functionLinenumber: 56
    functionLinenumberEnd: 58
    functionName: Operation::into_static
    functionSourceFile: /src/opendal/core/core/src/raw/operation.rs
    functionUses: 0
    functionsReached:
    - Operation::into
    linkageType: ''
    returnType: '&''static str'
    signature: pub fn into_static(self) -> &'static str
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 1
    argNames:
    - f
    argTypes:
    - '&mut Formatter<''_>'
    constantsTouched: []
    func_position:
      end: 64
      start: 62
    functionDepth: 0
    functionLinenumber: 62
    functionLinenumberEnd: 64
    functionName: Operation::fmt
    functionSourceFile: /src/opendal/core/core/src/raw/operation.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: std::fmt::Result
    signature: 'fn fmt(&self, f: &mut Formatter<''_>) -> std::fmt::Result'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::into_static
      Src: /src/opendal/core/core/src/raw/operation.rs:86,1
    - Dst: '&''static str::to_string'
      Src: /src/opendal/core/core/src/raw/operation.rs:86,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - v
    argTypes:
    - Operation
    constantsTouched: []
    func_position:
      end: 87
      start: 85
    functionDepth: 30
    functionLinenumber: 85
    functionLinenumberEnd: 87
    functionName: String::from
    functionSourceFile: /src/opendal/core/core/src/raw/operation.rs
    functionUses: 6
    functionsReached:
    - Result::into_static
    - '&''static str::to_string'
    linkageType: ''
    returnType: Self
    signature: 'fn from(v: Operation) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: to_string
      Src: /src/opendal/core/core/src/raw/path.rs:31,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 2
    argNames:
    - root
    - path
    argTypes:
    - '&str'
    - '&str'
    constantsTouched: []
    func_position:
      end: 39
      start: 27
    functionDepth: 2
    functionLinenumber: 27
    functionLinenumberEnd: 39
    functionName: build_abs_path
    functionSourceFile: /src/opendal/core/core/src/raw/path.rs
    functionUses: 318
    functionsReached:
    - to_string
    linkageType: ''
    returnType: String
    signature: 'pub fn build_abs_path(root: &str, path: &str) -> String'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::to_string
      Src: /src/opendal/core/core/src/raw/path.rs:51,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 2
    argNames:
    - root
    - path
    argTypes:
    - '&str'
    - '&str'
    constantsTouched: []
    func_position:
      end: 59
      start: 47
    functionDepth: 2
    functionLinenumber: 47
    functionLinenumberEnd: 59
    functionName: build_rooted_abs_path
    functionSourceFile: /src/opendal/core/core/src/raw/path.rs
    functionUses: 70
    functionsReached:
    - Result::to_string
    linkageType: ''
    returnType: String
    signature: 'pub fn build_rooted_abs_path(root: &str, path: &str) -> String'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: starts_with
      Src: /src/opendal/core/core/src/raw/path.rs:71,1
    - Dst: Result::len
      Src: /src/opendal/core/core/src/raw/path.rs:76,1
    - Dst: to_string
      Src: /src/opendal/core/core/src/raw/path.rs:76,1
    - Dst: Result::len
      Src: /src/opendal/core/core/src/raw/path.rs:82,1
    - Dst: to_string
      Src: /src/opendal/core/core/src/raw/path.rs:82,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 20
    argCount: 2
    argNames:
    - root
    - path
    argTypes:
    - '&str'
    - '&str'
    constantsTouched: []
    func_position:
      end: 84
      start: 68
    functionDepth: 3
    functionLinenumber: 68
    functionLinenumberEnd: 84
    functionName: build_rel_path
    functionSourceFile: /src/opendal/core/core/src/raw/path.rs
    functionUses: 45
    functionsReached:
    - to_string
    - starts_with
    - Result::len
    linkageType: ''
    returnType: String
    signature: 'pub fn build_rel_path(root: &str, path: &str) -> String'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: std::fs::canonicalize
      Src: /src/opendal/dev/src/release/package.rs:441,1
    - Dst: unwrap_or_else
      Src: /src/opendal/dev/src/release/package.rs:441,1
    - Dst: lexical_normalize
      Src: /src/opendal/dev/src/release/package.rs:441,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - path
    argTypes:
    - '&Path'
    constantsTouched: []
    func_position:
      end: 442
      start: 440
    functionDepth: 33
    functionLinenumber: 440
    functionLinenumberEnd: 442
    functionName: normalize_path
    functionSourceFile: /src/opendal/dev/src/release/package.rs
    functionUses: 36
    functionsReached:
    - std::fs::canonicalize
    - lexical_normalize
    - unwrap_or_else
    linkageType: ''
    returnType: PathBuf
    signature: 'fn normalize_path(path: &Path) -> PathBuf'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::split
      Src: /src/opendal/core/core/src/raw/path.rs:136,1
    - Dst: filter
      Src: /src/opendal/core/core/src/raw/path.rs:136,1
    - Dst: Result::is_empty
      Src: /src/opendal/core/core/src/raw/path.rs:138,1
    - Dst: "split('/')\n        .filter(|v| !v.is_empty())\n        .collect::<Vec<&str>>"
      Src: /src/opendal/core/core/src/raw/path.rs:136,1
    - Dst: join
      Src: /src/opendal/core/core/src/raw/path.rs:136,1
    - Dst: Result::starts_with
      Src: /src/opendal/core/core/src/raw/path.rs:141,1
    - Dst: Result::insert
      Src: /src/opendal/core/core/src/raw/path.rs:142,1
    - Dst: Result::ends_with
      Src: /src/opendal/core/core/src/raw/path.rs:144,1
    - Dst: Result::push
      Src: /src/opendal/core/core/src/raw/path.rs:145,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 27
    argCount: 1
    argNames:
    - v
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 148
      start: 135
    functionDepth: 33
    functionLinenumber: 135
    functionLinenumberEnd: 148
    functionName: normalize_root
    functionSourceFile: /src/opendal/core/core/src/raw/path.rs
    functionUses: 61
    functionsReached:
    - filter
    - Result::split
    - join
    - Result::ends_with
    - "split('/')\n        .filter(|v| !v.is_empty())\n        .collect::<Vec<&str>>"
    - Result::insert
    - Result::push
    - Result::is_empty
    - Result::starts_with
    linkageType: ''
    returnType: String
    signature: 'pub fn normalize_root(v: &str) -> String'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: ends_with
      Src: /src/opendal/core/core/src/raw/path.rs:158,1
    - Dst: split
      Src: /src/opendal/core/core/src/raw/path.rs:159,1
    - Dst: next_back
      Src: /src/opendal/core/core/src/raw/path.rs:159,1
    - Dst: expect
      Src: /src/opendal/core/core/src/raw/path.rs:159,1
    - Dst: len
      Src: /src/opendal/core/core/src/raw/path.rs:168,1
    - Dst: rfind
      Src: /src/opendal/core/core/src/raw/path.rs:168,1
    - Dst: map
      Src: /src/opendal/core/core/src/raw/path.rs:168,1
    - Dst: split_at
      Src: /src/opendal/core/core/src/raw/path.rs:172,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 33
    argCount: 1
    argNames:
    - path
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 177
      start: 151
    functionDepth: 3
    functionLinenumber: 151
    functionLinenumberEnd: 177
    functionName: get_basename
    functionSourceFile: /src/opendal/core/core/src/raw/path.rs
    functionUses: 19
    functionsReached:
    - next_back
    - expect
    - ends_with
    - split
    - rfind
    - map
    - len
    - split_at
    linkageType: ''
    returnType: '&str'
    signature: 'pub fn get_basename(path: &str) -> &str'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: ends_with
      Src: /src/opendal/core/core/src/raw/path.rs:185,1
    - Dst: rfind
      Src: /src/opendal/core/core/src/raw/path.rs:189,1
    - Dst: split_at
      Src: /src/opendal/core/core/src/raw/path.rs:193,1
    - Dst: len
      Src: /src/opendal/core/core/src/raw/path.rs:203,1
    - Dst: rfind
      Src: /src/opendal/core/core/src/raw/path.rs:203,1
    - Dst: map
      Src: /src/opendal/core/core/src/raw/path.rs:203,1
    - Dst: split_at
      Src: /src/opendal/core/core/src/raw/path.rs:207,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 33
    argCount: 1
    argNames:
    - path
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 212
      start: 180
    functionDepth: 3
    functionLinenumber: 180
    functionLinenumberEnd: 212
    functionName: get_parent
    functionSourceFile: /src/opendal/core/core/src/raw/path.rs
    functionUses: 30
    functionsReached:
    - rfind
    - ends_with
    - map
    - len
    - split_at
    linkageType: ''
    returnType: '&str'
    signature: 'pub fn get_parent(path: &str) -> &str'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: get_basename
      Src: /src/opendal/core/core/src/raw/path.rs:226,1
    - Dst: String::with_capacity
      Src: /src/opendal/core/core/src/raw/path.rs:227,1
    - Dst: Result::len
      Src: /src/opendal/core/core/src/raw/path.rs:227,1
    - Dst: io::Result::push_str
      Src: /src/opendal/core/core/src/raw/path.rs:228,1
    - Dst: io::Result::push
      Src: /src/opendal/core/core/src/raw/path.rs:229,1
    - Dst: std::collections::hash_map::RandomState::new
      Src: /src/opendal/core/core/src/raw/path.rs:247,1
    - Dst: Self::build_hasher
      Src: /src/opendal/core/core/src/raw/path.rs:247,1
    - Dst: finish
      Src: /src/opendal/core/core/src/raw/path.rs:247,1
    - Dst: try_into
      Src: /src/opendal/core/core/src/raw/path.rs:250,1
    - Dst: unwrap
      Src: /src/opendal/core/core/src/raw/path.rs:250,1
    - Dst: io::Result::push
      Src: /src/opendal/core/core/src/raw/path.rs:251,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 30
    argCount: 1
    argNames:
    - path
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 255
      start: 225
    functionDepth: 35
    functionLinenumber: 225
    functionLinenumberEnd: 255
    functionName: build_tmp_path_of
    functionSourceFile: /src/opendal/core/core/src/raw/path.rs
    functionUses: 8
    functionsReached:
    - try_into
    - io::Result::push
    - finish
    - io::Result::push_str
    - String::with_capacity
    - unwrap
    - get_basename
    - Self::build_hasher
    - Result::len
    - std::collections::hash_map::RandomState::new
    linkageType: ''
    returnType: String
    signature: 'pub fn build_tmp_path_of(path: &str) -> String'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: ends_with
      Src: /src/opendal/core/core/src/raw/path.rs:263,1
    - Dst: ends_with
      Src: /src/opendal/core/core/src/raw/path.rs:264,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - path
    - mode
    argTypes:
    - '&str'
    - EntryMode
    constantsTouched: []
    func_position:
      end: 267
      start: 259
    functionDepth: 0
    functionLinenumber: 259
    functionLinenumberEnd: 267
    functionName: validate_path
    functionSourceFile: /src/opendal/core/core/src/raw/path.rs
    functionUses: 8
    functionsReached:
    - ends_with
    linkageType: ''
    returnType: bool
    signature: 'pub fn validate_path(path: &str, mode: EntryMode) -> bool'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 293
      start: 274
    functionDepth: 0
    functionLinenumber: 274
    functionLinenumberEnd: 293
    functionName: tests::test_normalize_path
    functionSourceFile: /src/opendal/core/core/src/raw/path.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: fn test_normalize_path()
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 311
      start: 296
    functionDepth: 0
    functionLinenumber: 296
    functionLinenumberEnd: 311
    functionName: tests::test_normalize_root
    functionSourceFile: /src/opendal/core/core/src/raw/path.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: fn test_normalize_root()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: get_basename
      Src: /src/opendal/core/core/src/raw/path.rs:325,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 328
      start: 314
    functionDepth: 4
    functionLinenumber: 314
    functionLinenumberEnd: 328
    functionName: tests::test_get_basename
    functionSourceFile: /src/opendal/core/core/src/raw/path.rs
    functionUses: 0
    functionsReached:
    - get_basename
    linkageType: ''
    returnType: void
    signature: fn test_get_basename()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: get_parent
      Src: /src/opendal/core/core/src/raw/path.rs:343,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 346
      start: 331
    functionDepth: 4
    functionLinenumber: 331
    functionLinenumberEnd: 346
    functionName: tests::test_get_parent
    functionSourceFile: /src/opendal/core/core/src/raw/path.rs
    functionUses: 0
    functionsReached:
    - get_parent
    linkageType: ''
    returnType: void
    signature: fn test_get_parent()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/core/src/raw/path.rs:361,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 364
      start: 349
    functionDepth: 3
    functionLinenumber: 349
    functionLinenumberEnd: 364
    functionName: tests::test_build_abs_path
    functionSourceFile: /src/opendal/core/core/src/raw/path.rs
    functionUses: 0
    functionsReached:
    - build_abs_path
    linkageType: ''
    returnType: void
    signature: fn test_build_abs_path()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_rooted_abs_path
      Src: /src/opendal/core/core/src/raw/path.rs:378,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 381
      start: 367
    functionDepth: 3
    functionLinenumber: 367
    functionLinenumberEnd: 381
    functionName: tests::test_build_rooted_abs_path
    functionSourceFile: /src/opendal/core/core/src/raw/path.rs
    functionUses: 0
    functionsReached:
    - build_rooted_abs_path
    linkageType: ''
    returnType: void
    signature: fn test_build_rooted_abs_path()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_rel_path
      Src: /src/opendal/core/core/src/raw/path.rs:394,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 397
      start: 384
    functionDepth: 4
    functionLinenumber: 384
    functionLinenumberEnd: 397
    functionName: tests::test_build_rel_path
    functionSourceFile: /src/opendal/core/core/src/raw/path.rs
    functionUses: 0
    functionsReached:
    - build_rel_path
    linkageType: ''
    returnType: void
    signature: fn test_build_rel_path()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: validate_path
      Src: /src/opendal/core/core/src/raw/path.rs:422,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 425
      start: 400
    functionDepth: 1
    functionLinenumber: 400
    functionLinenumberEnd: 425
    functionName: tests::test_validate_path
    functionSourceFile: /src/opendal/core/core/src/raw/path.rs
    functionUses: 0
    functionsReached:
    - validate_path
    linkageType: ''
    returnType: void
    signature: fn test_validate_path()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_tmp_path_of
      Src: /src/opendal/core/core/src/raw/path.rs:439,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 450
      start: 428
    functionDepth: 36
    functionLinenumber: 428
    functionLinenumberEnd: 450
    functionName: tests::test_build_tmp_path_of
    functionSourceFile: /src/opendal/core/core/src/raw/path.rs
    functionUses: 0
    functionsReached:
    - build_tmp_path_of
    linkageType: ''
    returnType: void
    signature: fn test_build_tmp_path_of()
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 1
    argNames:
    - srv
    argTypes:
    - Servicer
    constantsTouched: []
    func_position:
      end: 45
      start: 43
    functionDepth: 0
    functionLinenumber: 43
    functionLinenumberEnd: 45
    functionName: Layer::apply_service
    functionSourceFile: /src/opendal/core/core/src/raw/layer.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Servicer
    signature: 'fn apply_service(&self, srv: Servicer) -> Servicer'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 2
    argNames:
    - srv
    - inner
    argTypes:
    - Servicer
    - OperationContext
    constantsTouched: []
    func_position:
      end: 54
      start: 51
    functionDepth: 0
    functionLinenumber: 51
    functionLinenumberEnd: 54
    functionName: Layer::apply_context
    functionSourceFile: /src/opendal/core/core/src/raw/layer.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: OperationContext
    signature: 'fn apply_context(&self, srv: Servicer, inner: OperationContext) ->
      OperationContext'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: parse
      Src: /src/opendal/core/core/src/raw/time.rs:50,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/raw/time.rs:51,1
    - Dst: Timestamp
      Src: /src/opendal/core/core/src/raw/time.rs:51,1
    - Dst: Err
      Src: /src/opendal/core/core/src/raw/time.rs:52,1
    - Dst: Error::new
      Src: /src/opendal/core/core/src/raw/time.rs:52,1
    - Dst: Self::set_source
      Src: /src/opendal/core/core/src/raw/time.rs:52,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - s
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 58
      start: 49
    functionDepth: 35
    functionLinenumber: 49
    functionLinenumberEnd: 58
    functionName: Timestamp::from_str
    functionSourceFile: /src/opendal/core/core/src/raw/time.rs
    functionUses: 0
    functionsReached:
    - Ok
    - Error::new
    - Timestamp
    - Err
    - parse
    - Self::set_source
    linkageType: ''
    returnType: Result
    signature: 'fn from_str(s: &str) -> Result<Self, Self::Err>'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 1
    argNames:
    - f
    argTypes:
    - '&mut fmt::Formatter<''_>'
    constantsTouched: []
    func_position:
      end: 64
      start: 62
    functionDepth: 0
    functionLinenumber: 62
    functionLinenumberEnd: 64
    functionName: Timestamp::fmt
    functionSourceFile: /src/opendal/core/core/src/raw/time.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: fmt::Result
    signature: 'fn fmt(&self, f: &mut fmt::Formatter<''_>) -> fmt::Result'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self
      Src: /src/opendal/core/core/src/raw/time.rs:76,1
    - Dst: jiff::Timestamp::now
      Src: /src/opendal/core/core/src/raw/time.rs:76,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 77
      start: 75
    functionDepth: 1
    functionLinenumber: 75
    functionLinenumberEnd: 77
    functionName: Timestamp::now
    functionSourceFile: /src/opendal/core/core/src/raw/time.rs
    functionUses: 16
    functionsReached:
    - Self
    - jiff::Timestamp::now
    linkageType: ''
    returnType: Self
    signature: pub fn now() -> Self
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: strftime
      Src: /src/opendal/core/core/src/raw/time.rs:88,1
    - Dst: to_string
      Src: /src/opendal/core/core/src/raw/time.rs:88,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 89
      start: 87
    functionDepth: 2
    functionLinenumber: 87
    functionLinenumberEnd: 89
    functionName: Timestamp::format_http_date
    functionSourceFile: /src/opendal/core/core/src/raw/time.rs
    functionUses: 0
    functionsReached:
    - to_string
    - strftime
    linkageType: ''
    returnType: String
    signature: pub fn format_http_date(self) -> String
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: jiff::Timestamp::new
      Src: /src/opendal/core/core/src/raw/time.rs:96,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/raw/time.rs:97,1
    - Dst: Timestamp
      Src: /src/opendal/core/core/src/raw/time.rs:97,1
    - Dst: Err
      Src: /src/opendal/core/core/src/raw/time.rs:98,1
    - Dst: Error::new
      Src: /src/opendal/core/core/src/raw/time.rs:98,1
    - Dst: Self::set_source
      Src: /src/opendal/core/core/src/raw/time.rs:98,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 2
    argNames:
    - second
    - nanosecond
    argTypes:
    - i64
    - i32
    constantsTouched: []
    func_position:
      end: 106
      start: 95
    functionDepth: 36
    functionLinenumber: 95
    functionLinenumberEnd: 106
    functionName: Timestamp::new
    functionSourceFile: /src/opendal/core/core/src/raw/time.rs
    functionUses: 3
    functionsReached:
    - Ok
    - Err
    - Timestamp
    - Error::new
    - Self::set_source
    - jiff::Timestamp::new
    linkageType: ''
    returnType: Result
    signature: 'pub fn new(second: i64, nanosecond: i32) -> Result<Self, Error>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: jiff::Timestamp::from_millisecond
      Src: /src/opendal/core/core/src/raw/time.rs:115,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/raw/time.rs:116,1
    - Dst: Timestamp
      Src: /src/opendal/core/core/src/raw/time.rs:116,1
    - Dst: Err
      Src: /src/opendal/core/core/src/raw/time.rs:117,1
    - Dst: Error::new
      Src: /src/opendal/core/core/src/raw/time.rs:117,1
    - Dst: Self::set_source
      Src: /src/opendal/core/core/src/raw/time.rs:117,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - millis
    argTypes:
    - i64
    constantsTouched: []
    func_position:
      end: 123
      start: 114
    functionDepth: 36
    functionLinenumber: 114
    functionLinenumberEnd: 123
    functionName: Timestamp::from_millisecond
    functionSourceFile: /src/opendal/core/core/src/raw/time.rs
    functionUses: 18
    functionsReached:
    - Ok
    - Error::new
    - Timestamp
    - Err
    - Self::set_source
    - jiff::Timestamp::from_millisecond
    linkageType: ''
    returnType: Result
    signature: 'pub fn from_millisecond(millis: i64) -> Result<Self>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: jiff::Timestamp::from_second
      Src: /src/opendal/core/core/src/raw/time.rs:132,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/raw/time.rs:133,1
    - Dst: Timestamp
      Src: /src/opendal/core/core/src/raw/time.rs:133,1
    - Dst: Err
      Src: /src/opendal/core/core/src/raw/time.rs:134,1
    - Dst: Error::new
      Src: /src/opendal/core/core/src/raw/time.rs:134,1
    - Dst: Self::set_source
      Src: /src/opendal/core/core/src/raw/time.rs:134,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - second
    argTypes:
    - i64
    constantsTouched: []
    func_position:
      end: 140
      start: 131
    functionDepth: 36
    functionLinenumber: 131
    functionLinenumberEnd: 140
    functionName: Timestamp::from_second
    functionSourceFile: /src/opendal/core/core/src/raw/time.rs
    functionUses: 5
    functionsReached:
    - Ok
    - jiff::Timestamp::from_second
    - Error::new
    - Timestamp
    - Err
    - Self::set_source
    linkageType: ''
    returnType: Result
    signature: 'pub fn from_second(second: i64) -> Result<Self>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: jiff::fmt::rfc2822::parse
      Src: /src/opendal/core/core/src/raw/time.rs:149,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/raw/time.rs:150,1
    - Dst: Timestamp
      Src: /src/opendal/core/core/src/raw/time.rs:150,1
    - Dst: timestamp
      Src: /src/opendal/core/core/src/raw/time.rs:150,1
    - Dst: Err
      Src: /src/opendal/core/core/src/raw/time.rs:151,1
    - Dst: Error::new
      Src: /src/opendal/core/core/src/raw/time.rs:151,1
    - Dst: Self::set_source
      Src: /src/opendal/core/core/src/raw/time.rs:151,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 1
    argNames:
    - s
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 157
      start: 148
    functionDepth: 40
    functionLinenumber: 148
    functionLinenumberEnd: 157
    functionName: Timestamp::parse_rfc2822
    functionSourceFile: /src/opendal/core/core/src/raw/time.rs
    functionUses: 7
    functionsReached:
    - jiff::fmt::rfc2822::parse
    - Ok
    - Err
    - Timestamp
    - Error::new
    - timestamp
    - Self::set_source
    linkageType: ''
    returnType: Result
    signature: 'pub fn parse_rfc2822(s: &str) -> Result<Timestamp>'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 165
      start: 163
    functionDepth: 0
    functionLinenumber: 163
    functionLinenumberEnd: 165
    functionName: Timestamp::into_inner
    functionSourceFile: /src/opendal/core/core/src/raw/time.rs
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: jiff::Timestamp
    signature: pub fn into_inner(self) -> jiff::Timestamp
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - t
    argTypes:
    - Timestamp
    constantsTouched: []
    func_position:
      end: 171
      start: 169
    functionDepth: 0
    functionLinenumber: 169
    functionLinenumberEnd: 171
    functionName: jiff::Timestamp::from
    functionSourceFile: /src/opendal/core/core/src/raw/time.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: 'fn from(t: Timestamp) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Timestamp
      Src: /src/opendal/core/core/src/raw/time.rs:176,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - t
    argTypes:
    - jiff::Timestamp
    constantsTouched: []
    func_position:
      end: 177
      start: 175
    functionDepth: 0
    functionLinenumber: 175
    functionLinenumberEnd: 177
    functionName: Timestamp::from
    functionSourceFile: /src/opendal/core/core/src/raw/time.rs
    functionUses: 0
    functionsReached:
    - Timestamp
    linkageType: ''
    returnType: Self
    signature: 'fn from(t: jiff::Timestamp) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: SystemTime::from
      Src: /src/opendal/core/core/src/raw/time.rs:184,1
    - Dst: StdSystemTime::from
      Src: /src/opendal/core/core/src/raw/time.rs:191,1
    - Dst: <web_time::SystemTime as web_time::web::SystemTimeExt>::from_std
      Src: /src/opendal/core/core/src/raw/time.rs:192,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - ts
    argTypes:
    - Timestamp
    constantsTouched: []
    func_position:
      end: 194
      start: 181
    functionDepth: 32
    functionLinenumber: 181
    functionLinenumberEnd: 194
    functionName: SystemTime::from
    functionSourceFile: /src/opendal/core/core/src/raw/time.rs
    functionUses: 1
    functionsReached:
    - SystemTime::from
    - StdSystemTime::from
    - <web_time::SystemTime as web_time::web::SystemTimeExt>::from_std
    linkageType: ''
    returnType: Self
    signature: 'fn from(ts: Timestamp) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: <web_time::SystemTime as web_time::web::SystemTimeExt>::to_std
      Src: /src/opendal/core/core/src/raw/time.rs:209,1
    - Dst: jiff::Timestamp::try_from
      Src: /src/opendal/core/core/src/raw/time.rs:213,1
    - Dst: Result::map
      Src: /src/opendal/core/core/src/raw/time.rs:213,1
    - Dst: Result::map_err
      Src: /src/opendal/core/core/src/raw/time.rs:213,1
    - Dst: Error::new
      Src: /src/opendal/core/core/src/raw/time.rs:214,1
    - Dst: Self::set_source
      Src: /src/opendal/core/core/src/raw/time.rs:214,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 1
    argNames:
    - t
    argTypes:
    - SystemTime
    constantsTouched: []
    func_position:
      end: 216
      start: 200
    functionDepth: 36
    functionLinenumber: 200
    functionLinenumberEnd: 216
    functionName: Timestamp::try_from
    functionSourceFile: /src/opendal/core/core/src/raw/time.rs
    functionUses: 12
    functionsReached:
    - <web_time::SystemTime as web_time::web::SystemTimeExt>::to_std
    - Result::map_err
    - Error::new
    - jiff::Timestamp::try_from
    - Self::set_source
    - Result::map
    linkageType: ''
    returnType: Result
    signature: 'fn try_from(t: SystemTime) -> Result<Self>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: checked_add
      Src: /src/opendal/core/core/src/raw/time.rs:223,1
    - Dst: expect
      Src: /src/opendal/core/core/src/raw/time.rs:223,1
    - Dst: Timestamp
      Src: /src/opendal/core/core/src/raw/time.rs:228,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - rhs
    argTypes:
    - Duration
    constantsTouched: []
    func_position:
      end: 229
      start: 222
    functionDepth: 0
    functionLinenumber: 222
    functionLinenumberEnd: 229
    functionName: Timestamp::add
    functionSourceFile: /src/opendal/core/core/src/raw/time.rs
    functionUses: 0
    functionsReached:
    - Timestamp
    - expect
    - checked_add
    linkageType: ''
    returnType: Timestamp
    signature: 'fn add(self, rhs: Duration) -> Timestamp'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - rhs
    argTypes:
    - Duration
    constantsTouched: []
    func_position:
      end: 235
      start: 233
    functionDepth: 0
    functionLinenumber: 233
    functionLinenumberEnd: 235
    functionName: Timestamp::add_assign
    functionSourceFile: /src/opendal/core/core/src/raw/time.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: 'fn add_assign(&mut self, rhs: Duration)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: checked_sub
      Src: /src/opendal/core/core/src/raw/time.rs:242,1
    - Dst: expect
      Src: /src/opendal/core/core/src/raw/time.rs:242,1
    - Dst: Timestamp
      Src: /src/opendal/core/core/src/raw/time.rs:247,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - rhs
    argTypes:
    - Duration
    constantsTouched: []
    func_position:
      end: 248
      start: 241
    functionDepth: 0
    functionLinenumber: 241
    functionLinenumberEnd: 248
    functionName: Timestamp::sub
    functionSourceFile: /src/opendal/core/core/src/raw/time.rs
    functionUses: 0
    functionsReached:
    - Timestamp
    - checked_sub
    - expect
    linkageType: ''
    returnType: Timestamp
    signature: 'fn sub(self, rhs: Duration) -> Timestamp'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - rhs
    argTypes:
    - Duration
    constantsTouched: []
    func_position:
      end: 254
      start: 252
    functionDepth: 0
    functionLinenumber: 252
    functionLinenumberEnd: 254
    functionName: Timestamp::sub_assign
    functionSourceFile: /src/opendal/core/core/src/raw/time.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: 'fn sub_assign(&mut self, rhs: Duration)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: parse::<SignedDuration>
      Src: /src/opendal/core/core/src/raw/time.rs:261,1
    - Dst: map_err
      Src: /src/opendal/core/core/src/raw/time.rs:261,1
    - Dst: Error::new
      Src: /src/opendal/core/core/src/raw/time.rs:262,1
    - Dst: Self::set_source
      Src: /src/opendal/core/core/src/raw/time.rs:262,1
    - Dst: Duration::try_from
      Src: /src/opendal/core/core/src/raw/time.rs:265,1
    - Dst: Result::map_err
      Src: /src/opendal/core/core/src/raw/time.rs:265,1
    - Dst: Error::new
      Src: /src/opendal/core/core/src/raw/time.rs:266,1
    - Dst: Self::set_source
      Src: /src/opendal/core/core/src/raw/time.rs:266,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 16
    argCount: 1
    argNames:
    - value
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 272
      start: 260
    functionDepth: 36
    functionLinenumber: 260
    functionLinenumberEnd: 272
    functionName: signed_to_duration
    functionSourceFile: /src/opendal/core/core/src/raw/time.rs
    functionUses: 2
    functionsReached:
    - map_err
    - Result::map_err
    - Duration::try_from
    - Error::new
    - parse::<SignedDuration>
    - Self::set_source
    linkageType: ''
    returnType: Result
    signature: 'pub fn signed_to_duration(value: &str) -> Result<Duration>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Timestamp
      Src: /src/opendal/core/core/src/raw/time.rs:279,1
    - Dst: '&str::parse'
      Src: /src/opendal/core/core/src/raw/time.rs:279,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/core/src/raw/time.rs:279,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 280
      start: 278
    functionDepth: 33
    functionLinenumber: 278
    functionLinenumberEnd: 280
    functionName: tests::test_time
    functionSourceFile: /src/opendal/core/core/src/raw/time.rs
    functionUses: 0
    functionsReached:
    - Timestamp
    - '&str::parse'
    - Result::unwrap
    linkageType: ''
    returnType: Timestamp
    signature: fn test_time() -> Timestamp
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: test_time
      Src: /src/opendal/core/core/src/raw/time.rs:284,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 286
      start: 283
    functionDepth: 34
    functionLinenumber: 283
    functionLinenumberEnd: 286
    functionName: tests::test_format_http_date
    functionSourceFile: /src/opendal/core/core/src/raw/time.rs
    functionUses: 0
    functionsReached:
    - test_time
    linkageType: ''
    returnType: void
    signature: fn test_format_http_date()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: test_time
      Src: /src/opendal/core/core/src/raw/time.rs:290,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 299
      start: 289
    functionDepth: 34
    functionLinenumber: 289
    functionLinenumberEnd: 299
    functionName: tests::test_parse_rfc3339
    functionSourceFile: /src/opendal/core/core/src/raw/time.rs
    functionUses: 0
    functionsReached:
    - test_time
    linkageType: ''
    returnType: void
    signature: fn test_parse_rfc3339()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Timestamp::parse_rfc2822
      Src: /src/opendal/core/core/src/raw/time.rs:304,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/core/src/raw/time.rs:304,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 306
      start: 302
    functionDepth: 41
    functionLinenumber: 302
    functionLinenumberEnd: 306
    functionName: tests::test_parse_rfc2822
    functionSourceFile: /src/opendal/core/core/src/raw/time.rs
    functionUses: 0
    functionsReached:
    - Result::unwrap
    - Timestamp::parse_rfc2822
    linkageType: ''
    returnType: void
    signature: fn test_parse_rfc2822()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self::default
      Src: /src/opendal/core/core/src/raw/ops.rs:37,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 38
      start: 36
    functionDepth: 3
    functionLinenumber: 36
    functionLinenumberEnd: 38
    functionName: OpCreateDir::new
    functionSourceFile: /src/opendal/core/core/src/raw/ops.rs
    functionUses: 1
    functionsReached:
    - Self::default
    linkageType: ''
    returnType: Self
    signature: pub fn new() -> Self
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self::default
      Src: /src/opendal/core/core/src/raw/ops.rs:53,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 54
      start: 52
    functionDepth: 3
    functionLinenumber: 52
    functionLinenumberEnd: 54
    functionName: OpDelete::new
    functionSourceFile: /src/opendal/core/core/src/raw/ops.rs
    functionUses: 1
    functionsReached:
    - Self::default
    linkageType: ''
    returnType: Self
    signature: pub fn new() -> Self
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Some
      Src: /src/opendal/core/core/src/raw/ops.rs:60,1
    - Dst: Result::into
      Src: /src/opendal/core/core/src/raw/ops.rs:60,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - version
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 62
      start: 59
    functionDepth: 29
    functionLinenumber: 59
    functionLinenumberEnd: 62
    functionName: OpDelete::with_version
    functionSourceFile: /src/opendal/core/core/src/raw/ops.rs
    functionUses: 0
    functionsReached:
    - Result::into
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn with_version(mut self, version: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - recursive
    argTypes:
    - bool
    constantsTouched: []
    func_position:
      end: 68
      start: 65
    functionDepth: 0
    functionLinenumber: 65
    functionLinenumberEnd: 68
    functionName: OpDelete::with_recursive
    functionSourceFile: /src/opendal/core/core/src/raw/ops.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: 'pub fn with_recursive(mut self, recursive: bool) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: as_deref
      Src: /src/opendal/core/core/src/raw/ops.rs:72,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 73
      start: 71
    functionDepth: 0
    functionLinenumber: 71
    functionLinenumberEnd: 73
    functionName: OpDelete::version
    functionSourceFile: /src/opendal/core/core/src/raw/ops.rs
    functionUses: 0
    functionsReached:
    - as_deref
    linkageType: ''
    returnType: Option
    signature: pub fn version(&self) -> Option<&str>
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 78
      start: 76
    functionDepth: 0
    functionLinenumber: 76
    functionLinenumberEnd: 78
    functionName: OpDelete::recursive
    functionSourceFile: /src/opendal/core/core/src/raw/ops.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: pub fn recursive(&self) -> bool
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - value
    argTypes:
    - options::DeleteOptions
    constantsTouched: []
    func_position:
      end: 87
      start: 82
    functionDepth: 0
    functionLinenumber: 82
    functionLinenumberEnd: 87
    functionName: OpDelete::from
    functionSourceFile: /src/opendal/core/core/src/raw/ops.rs
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: 'fn from(value: options::DeleteOptions) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self::default
      Src: /src/opendal/core/core/src/raw/ops.rs:99,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 100
      start: 98
    functionDepth: 3
    functionLinenumber: 98
    functionLinenumberEnd: 100
    functionName: OpDeleter::new
    functionSourceFile: /src/opendal/core/core/src/raw/ops.rs
    functionUses: 0
    functionsReached:
    - Self::default
    linkageType: ''
    returnType: Self
    signature: pub fn new() -> Self
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self::default
      Src: /src/opendal/core/core/src/raw/ops.rs:142,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 143
      start: 141
    functionDepth: 3
    functionLinenumber: 141
    functionLinenumberEnd: 143
    functionName: OpList::new
    functionSourceFile: /src/opendal/core/core/src/raw/ops.rs
    functionUses: 3
    functionsReached:
    - Self::default
    linkageType: ''
    returnType: Self
    signature: pub fn new() -> Self
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Some
      Src: /src/opendal/core/core/src/raw/ops.rs:147,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - limit
    argTypes:
    - usize
    constantsTouched: []
    func_position:
      end: 149
      start: 146
    functionDepth: 0
    functionLinenumber: 146
    functionLinenumberEnd: 149
    functionName: OpList::with_limit
    functionSourceFile: /src/opendal/core/core/src/raw/ops.rs
    functionUses: 0
    functionsReached:
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn with_limit(mut self, limit: usize) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 154
      start: 152
    functionDepth: 0
    functionLinenumber: 152
    functionLinenumberEnd: 154
    functionName: OpList::limit
    functionSourceFile: /src/opendal/core/core/src/raw/ops.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Option
    signature: pub fn limit(&self) -> Option<usize>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Some
      Src: /src/opendal/core/core/src/raw/ops.rs:158,1
    - Dst: Result::into
      Src: /src/opendal/core/core/src/raw/ops.rs:158,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - start_after
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 160
      start: 157
    functionDepth: 29
    functionLinenumber: 157
    functionLinenumberEnd: 160
    functionName: OpList::with_start_after
    functionSourceFile: /src/opendal/core/core/src/raw/ops.rs
    functionUses: 0
    functionsReached:
    - Result::into
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn with_start_after(mut self, start_after: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: as_deref
      Src: /src/opendal/core/core/src/raw/ops.rs:164,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 165
      start: 163
    functionDepth: 0
    functionLinenumber: 163
    functionLinenumberEnd: 165
    functionName: OpList::start_after
    functionSourceFile: /src/opendal/core/core/src/raw/ops.rs
    functionUses: 0
    functionsReached:
    - as_deref
    linkageType: ''
    returnType: Option
    signature: pub fn start_after(&self) -> Option<&str>
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - recursive
    argTypes:
    - bool
    constantsTouched: []
    func_position:
      end: 176
      start: 173
    functionDepth: 0
    functionLinenumber: 173
    functionLinenumberEnd: 176
    functionName: OpList::with_recursive
    functionSourceFile: /src/opendal/core/core/src/raw/ops.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: 'pub fn with_recursive(mut self, recursive: bool) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 181
      start: 179
    functionDepth: 0
    functionLinenumber: 179
    functionLinenumberEnd: 181
    functionName: OpList::recursive
    functionSourceFile: /src/opendal/core/core/src/raw/ops.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: pub fn recursive(&self) -> bool
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 1
    argNames:
    - concurrent
    argTypes:
    - usize
    constantsTouched: []
    func_position:
      end: 190
      start: 187
    functionDepth: 0
    functionLinenumber: 187
    functionLinenumberEnd: 190
    functionName: OpList::with_concurrent
    functionSourceFile: /src/opendal/core/core/src/raw/ops.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: 'pub fn with_concurrent(self, concurrent: usize) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 196
      start: 194
    functionDepth: 0
    functionLinenumber: 194
    functionLinenumberEnd: 196
    functionName: OpList::concurrent
    functionSourceFile: /src/opendal/core/core/src/raw/ops.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: usize
    signature: pub fn concurrent(&self) -> usize
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - versions
    argTypes:
    - bool
    constantsTouched: []
    func_position:
      end: 202
      start: 199
    functionDepth: 0
    functionLinenumber: 199
    functionLinenumberEnd: 202
    functionName: OpList::with_versions
    functionSourceFile: /src/opendal/core/core/src/raw/ops.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: 'pub fn with_versions(mut self, versions: bool) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 207
      start: 205
    functionDepth: 0
    functionLinenumber: 205
    functionLinenumberEnd: 207
    functionName: OpList::versions
    functionSourceFile: /src/opendal/core/core/src/raw/ops.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: pub fn versions(&self) -> bool
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - deleted
    argTypes:
    - bool
    constantsTouched: []
    func_position:
      end: 213
      start: 210
    functionDepth: 0
    functionLinenumber: 210
    functionLinenumberEnd: 213
    functionName: OpList::with_deleted
    functionSourceFile: /src/opendal/core/core/src/raw/ops.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: 'pub fn with_deleted(mut self, deleted: bool) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 218
      start: 216
    functionDepth: 0
    functionLinenumber: 216
    functionLinenumberEnd: 218
    functionName: OpList::deleted
    functionSourceFile: /src/opendal/core/core/src/raw/ops.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: pub fn deleted(&self) -> bool
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - value
    argTypes:
    - options::ListOptions
    constantsTouched: []
    func_position:
      end: 230
      start: 222
    functionDepth: 0
    functionLinenumber: 222
    functionLinenumberEnd: 230
    functionName: OpList::from
    functionSourceFile: /src/opendal/core/core/src/raw/ops.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: 'fn from(value: options::ListOptions) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: into
      Src: /src/opendal/core/core/src/raw/ops.rs:247,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - op
    - expire
    argTypes:
    - impl Into<PresignOperation>
    - Duration
    constantsTouched: []
    func_position:
      end: 250
      start: 245
    functionDepth: 29
    functionLinenumber: 245
    functionLinenumberEnd: 250
    functionName: OpPresign::new
    functionSourceFile: /src/opendal/core/core/src/raw/ops.rs
    functionUses: 7
    functionsReached:
    - into
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(op: impl Into<PresignOperation>, expire: Duration) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 255
      start: 253
    functionDepth: 0
    functionLinenumber: 253
    functionLinenumberEnd: 255
    functionName: OpPresign::operation
    functionSourceFile: /src/opendal/core/core/src/raw/ops.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: '&PresignOperation'
    signature: pub fn operation(&self) -> &PresignOperation
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 260
      start: 258
    functionDepth: 0
    functionLinenumber: 258
    functionLinenumberEnd: 260
    functionName: OpPresign::expire
    functionSourceFile: /src/opendal/core/core/src/raw/ops.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Duration
    signature: pub fn expire(&self) -> Duration
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 265
      start: 263
    functionDepth: 0
    functionLinenumber: 263
    functionLinenumberEnd: 265
    functionName: OpPresign::into_parts
    functionSourceFile: /src/opendal/core/core/src/raw/ops.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: (Duration, PresignOperation)
    signature: pub fn into_parts(self) -> (Duration, PresignOperation)
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self::Delete
      Src: /src/opendal/core/core/src/raw/ops.rs:302,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - v
    argTypes:
    - OpDelete
    constantsTouched: []
    func_position:
      end: 303
      start: 301
    functionDepth: 0
    functionLinenumber: 301
    functionLinenumberEnd: 303
    functionName: PresignOperation::from
    functionSourceFile: /src/opendal/core/core/src/raw/ops.rs
    functionUses: 0
    functionsReached:
    - Self::Delete
    linkageType: ''
    returnType: Self
    signature: 'fn from(v: OpDelete) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self::default
      Src: /src/opendal/core/core/src/raw/ops.rs:323,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 324
      start: 322
    functionDepth: 3
    functionLinenumber: 322
    functionLinenumberEnd: 324
    functionName: OpRead::new
    functionSourceFile: /src/opendal/core/core/src/raw/ops.rs
    functionUses: 3
    functionsReached:
    - Self::default
    linkageType: ''
    returnType: Self
    signature: pub fn new() -> Self
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Some
      Src: /src/opendal/core/core/src/raw/ops.rs:328,1
    - Dst: Result::into
      Src: /src/opendal/core/core/src/raw/ops.rs:328,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - content_disposition
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 330
      start: 327
    functionDepth: 29
    functionLinenumber: 327
    functionLinenumberEnd: 330
    functionName: OpRead::with_override_content_disposition
    functionSourceFile: /src/opendal/core/core/src/raw/ops.rs
    functionUses: 0
    functionsReached:
    - Result::into
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn with_override_content_disposition(mut self, content_disposition:
      &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: as_deref
      Src: /src/opendal/core/core/src/raw/ops.rs:335,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 336
      start: 334
    functionDepth: 0
    functionLinenumber: 334
    functionLinenumberEnd: 336
    functionName: OpRead::override_content_disposition
    functionSourceFile: /src/opendal/core/core/src/raw/ops.rs
    functionUses: 0
    functionsReached:
    - as_deref
    linkageType: ''
    returnType: Option
    signature: pub fn override_content_disposition(&self) -> Option<&str>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Some
      Src: /src/opendal/core/core/src/raw/ops.rs:340,1
    - Dst: Result::into
      Src: /src/opendal/core/core/src/raw/ops.rs:340,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - cache_control
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 342
      start: 339
    functionDepth: 29
    functionLinenumber: 339
    functionLinenumberEnd: 342
    functionName: OpRead::with_override_cache_control
    functionSourceFile: /src/opendal/core/core/src/raw/ops.rs
    functionUses: 0
    functionsReached:
    - Result::into
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn with_override_cache_control(mut self, cache_control: &str)
      -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: as_deref
      Src: /src/opendal/core/core/src/raw/ops.rs:346,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 347
      start: 345
    functionDepth: 0
    functionLinenumber: 345
    functionLinenumberEnd: 347
    functionName: OpRead::override_cache_control
    functionSourceFile: /src/opendal/core/core/src/raw/ops.rs
    functionUses: 0
    functionsReached:
    - as_deref
    linkageType: ''
    returnType: Option
    signature: pub fn override_cache_control(&self) -> Option<&str>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Some
      Src: /src/opendal/core/core/src/raw/ops.rs:351,1
    - Dst: Result::into
      Src: /src/opendal/core/core/src/raw/ops.rs:351,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - content_type
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 353
      start: 350
    functionDepth: 29
    functionLinenumber: 350
    functionLinenumberEnd: 353
    functionName: OpRead::with_override_content_type
    functionSourceFile: /src/opendal/core/core/src/raw/ops.rs
    functionUses: 0
    functionsReached:
    - Result::into
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn with_override_content_type(mut self, content_type: &str) ->
      Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: as_deref
      Src: /src/opendal/core/core/src/raw/ops.rs:357,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 358
      start: 356
    functionDepth: 0
    functionLinenumber: 356
    functionLinenumberEnd: 358
    functionName: OpRead::override_content_type
    functionSourceFile: /src/opendal/core/core/src/raw/ops.rs
    functionUses: 0
    functionsReached:
    - as_deref
    linkageType: ''
    returnType: Option
    signature: pub fn override_content_type(&self) -> Option<&str>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Some
      Src: /src/opendal/core/core/src/raw/ops.rs:362,1
    - Dst: Result::to_string
      Src: /src/opendal/core/core/src/raw/ops.rs:362,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - if_match
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 364
      start: 361
    functionDepth: 2
    functionLinenumber: 361
    functionLinenumberEnd: 364
    functionName: OpRead::with_if_match
    functionSourceFile: /src/opendal/core/core/src/raw/ops.rs
    functionUses: 0
    functionsReached:
    - Result::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn with_if_match(mut self, if_match: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: as_deref
      Src: /src/opendal/core/core/src/raw/ops.rs:368,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 369
      start: 367
    functionDepth: 0
    functionLinenumber: 367
    functionLinenumberEnd: 369
    functionName: OpRead::if_match
    functionSourceFile: /src/opendal/core/core/src/raw/ops.rs
    functionUses: 0
    functionsReached:
    - as_deref
    linkageType: ''
    returnType: Option
    signature: pub fn if_match(&self) -> Option<&str>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Some
      Src: /src/opendal/core/core/src/raw/ops.rs:373,1
    - Dst: Result::to_string
      Src: /src/opendal/core/core/src/raw/ops.rs:373,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - if_none_match
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 375
      start: 372
    functionDepth: 2
    functionLinenumber: 372
    functionLinenumberEnd: 375
    functionName: OpRead::with_if_none_match
    functionSourceFile: /src/opendal/core/core/src/raw/ops.rs
    functionUses: 0
    functionsReached:
    - Result::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn with_if_none_match(mut self, if_none_match: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: as_deref
      Src: /src/opendal/core/core/src/raw/ops.rs:379,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 380
      start: 378
    functionDepth: 0
    functionLinenumber: 378
    functionLinenumberEnd: 380
    functionName: OpRead::if_none_match
    functionSourceFile: /src/opendal/core/core/src/raw/ops.rs
    functionUses: 0
    functionsReached:
    - as_deref
    linkageType: ''
    returnType: Option
    signature: pub fn if_none_match(&self) -> Option<&str>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Some
      Src: /src/opendal/core/core/src/raw/ops.rs:384,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - v
    argTypes:
    - Timestamp
    constantsTouched: []
    func_position:
      end: 386
      start: 383
    functionDepth: 0
    functionLinenumber: 383
    functionLinenumberEnd: 386
    functionName: OpRead::with_if_modified_since
    functionSourceFile: /src/opendal/core/core/src/raw/ops.rs
    functionUses: 0
    functionsReached:
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn with_if_modified_since(mut self, v: Timestamp) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 391
      start: 389
    functionDepth: 0
    functionLinenumber: 389
    functionLinenumberEnd: 391
    functionName: OpRead::if_modified_since
    functionSourceFile: /src/opendal/core/core/src/raw/ops.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Option
    signature: pub fn if_modified_since(&self) -> Option<Timestamp>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Some
      Src: /src/opendal/core/core/src/raw/ops.rs:395,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - v
    argTypes:
    - Timestamp
    constantsTouched: []
    func_position:
      end: 397
      start: 394
    functionDepth: 0
    functionLinenumber: 394
    functionLinenumberEnd: 397
    functionName: OpRead::with_if_unmodified_since
    functionSourceFile: /src/opendal/core/core/src/raw/ops.rs
    functionUses: 0
    functionsReached:
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn with_if_unmodified_since(mut self, v: Timestamp) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 402
      start: 400
    functionDepth: 0
    functionLinenumber: 400
    functionLinenumberEnd: 402
    functionName: OpRead::if_unmodified_since
    functionSourceFile: /src/opendal/core/core/src/raw/ops.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Option
    signature: pub fn if_unmodified_since(&self) -> Option<Timestamp>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Some
      Src: /src/opendal/core/core/src/raw/ops.rs:406,1
    - Dst: Result::to_string
      Src: /src/opendal/core/core/src/raw/ops.rs:406,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - version
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 408
      start: 405
    functionDepth: 2
    functionLinenumber: 405
    functionLinenumberEnd: 408
    functionName: OpRead::with_version
    functionSourceFile: /src/opendal/core/core/src/raw/ops.rs
    functionUses: 0
    functionsReached:
    - Result::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn with_version(mut self, version: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: as_deref
      Src: /src/opendal/core/core/src/raw/ops.rs:412,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 413
      start: 411
    functionDepth: 0
    functionLinenumber: 411
    functionLinenumberEnd: 413
    functionName: OpRead::version
    functionSourceFile: /src/opendal/core/core/src/raw/ops.rs
    functionUses: 1
    functionsReached:
    - as_deref
    linkageType: ''
    returnType: Option
    signature: pub fn version(&self) -> Option<&str>
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 417
      start: 415
    functionDepth: 0
    functionLinenumber: 415
    functionLinenumberEnd: 417
    functionName: OpRead::content_length_hint
    functionSourceFile: /src/opendal/core/core/src/raw/ops.rs
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: Option
    signature: pub(crate) fn content_length_hint(&self) -> Option<u64>
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 441
      start: 434
    functionDepth: 0
    functionLinenumber: 434
    functionLinenumberEnd: 441
    functionName: OpReader::default
    functionSourceFile: /src/opendal/core/core/src/raw/ops.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: fn default() -> Self
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self::default
      Src: /src/opendal/core/core/src/raw/ops.rs:447,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 448
      start: 446
    functionDepth: 3
    functionLinenumber: 446
    functionLinenumberEnd: 448
    functionName: OpReader::new
    functionSourceFile: /src/opendal/core/core/src/raw/ops.rs
    functionUses: 13
    functionsReached:
    - Self::default
    linkageType: ''
    returnType: Self
    signature: pub fn new() -> Self
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: max
      Src: /src/opendal/core/core/src/raw/ops.rs:452,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - concurrent
    argTypes:
    - usize
    constantsTouched: []
    func_position:
      end: 454
      start: 451
    functionDepth: 1
    functionLinenumber: 451
    functionLinenumberEnd: 454
    functionName: OpReader::with_concurrent
    functionSourceFile: /src/opendal/core/core/src/raw/ops.rs
    functionUses: 0
    functionsReached:
    - max
    linkageType: ''
    returnType: Self
    signature: 'pub fn with_concurrent(mut self, concurrent: usize) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 459
      start: 457
    functionDepth: 0
    functionLinenumber: 457
    functionLinenumberEnd: 459
    functionName: OpReader::concurrent
    functionSourceFile: /src/opendal/core/core/src/raw/ops.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: usize
    signature: pub fn concurrent(&self) -> usize
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Some
      Src: /src/opendal/core/core/src/raw/ops.rs:463,1
    - Dst: Result::max
      Src: /src/opendal/core/core/src/raw/ops.rs:463,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - chunk
    argTypes:
    - usize
    constantsTouched: []
    func_position:
      end: 465
      start: 462
    functionDepth: 1
    functionLinenumber: 462
    functionLinenumberEnd: 465
    functionName: OpReader::with_chunk
    functionSourceFile: /src/opendal/core/core/src/raw/ops.rs
    functionUses: 0
    functionsReached:
    - Result::max
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn with_chunk(mut self, chunk: usize) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 470
      start: 468
    functionDepth: 0
    functionLinenumber: 468
    functionLinenumberEnd: 470
    functionName: OpReader::chunk
    functionSourceFile: /src/opendal/core/core/src/raw/ops.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Option
    signature: pub fn chunk(&self) -> Option<usize>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Some
      Src: /src/opendal/core/core/src/raw/ops.rs:474,1
    - Dst: Self::max
      Src: /src/opendal/core/core/src/raw/ops.rs:474,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - gap
    argTypes:
    - usize
    constantsTouched: []
    func_position:
      end: 476
      start: 473
    functionDepth: 1
    functionLinenumber: 473
    functionLinenumberEnd: 476
    functionName: OpReader::with_gap
    functionSourceFile: /src/opendal/core/core/src/raw/ops.rs
    functionUses: 0
    functionsReached:
    - Self::max
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn with_gap(mut self, gap: usize) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 481
      start: 479
    functionDepth: 0
    functionLinenumber: 479
    functionLinenumberEnd: 481
    functionName: OpReader::gap
    functionSourceFile: /src/opendal/core/core/src/raw/ops.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Option
    signature: pub fn gap(&self) -> Option<usize>
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - prefetch
    argTypes:
    - usize
    constantsTouched: []
    func_position:
      end: 487
      start: 484
    functionDepth: 0
    functionLinenumber: 484
    functionLinenumberEnd: 487
    functionName: OpReader::with_prefetch
    functionSourceFile: /src/opendal/core/core/src/raw/ops.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: 'pub fn with_prefetch(mut self, prefetch: usize) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 492
      start: 490
    functionDepth: 0
    functionLinenumber: 490
    functionLinenumberEnd: 492
    functionName: OpReader::prefetch
    functionSourceFile: /src/opendal/core/core/src/raw/ops.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: usize
    signature: pub fn prefetch(&self) -> usize
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: max
      Src: /src/opendal/core/core/src/raw/ops.rs:512,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 18
    argCount: 1
    argNames:
    - value
    argTypes:
    - options::ReadOptions
    constantsTouched: []
    func_position:
      end: 518
      start: 496
    functionDepth: 1
    functionLinenumber: 496
    functionLinenumberEnd: 518
    functionName: (BytesRange, OpRead, OpReader)::from
    functionSourceFile: /src/opendal/core/core/src/raw/ops.rs
    functionUses: 0
    functionsReached:
    - max
    linkageType: ''
    returnType: Self
    signature: 'fn from(value: options::ReadOptions) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: max
      Src: /src/opendal/core/core/src/raw/ops.rs:537,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 15
    argCount: 1
    argNames:
    - value
    argTypes:
    - options::ReaderOptions
    constantsTouched: []
    func_position:
      end: 543
      start: 522
    functionDepth: 1
    functionLinenumber: 522
    functionLinenumberEnd: 543
    functionName: (OpRead, OpReader)::from
    functionSourceFile: /src/opendal/core/core/src/raw/ops.rs
    functionUses: 0
    functionsReached:
    - max
    linkageType: ''
    returnType: Self
    signature: 'fn from(value: options::ReaderOptions) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self::default
      Src: /src/opendal/core/core/src/raw/ops.rs:562,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 563
      start: 561
    functionDepth: 3
    functionLinenumber: 561
    functionLinenumberEnd: 563
    functionName: OpStat::new
    functionSourceFile: /src/opendal/core/core/src/raw/ops.rs
    functionUses: 5
    functionsReached:
    - Self::default
    linkageType: ''
    returnType: Self
    signature: pub fn new() -> Self
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Some
      Src: /src/opendal/core/core/src/raw/ops.rs:567,1
    - Dst: Result::to_string
      Src: /src/opendal/core/core/src/raw/ops.rs:567,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - if_match
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 569
      start: 566
    functionDepth: 2
    functionLinenumber: 566
    functionLinenumberEnd: 569
    functionName: OpStat::with_if_match
    functionSourceFile: /src/opendal/core/core/src/raw/ops.rs
    functionUses: 0
    functionsReached:
    - Result::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn with_if_match(mut self, if_match: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: as_deref
      Src: /src/opendal/core/core/src/raw/ops.rs:573,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 574
      start: 572
    functionDepth: 0
    functionLinenumber: 572
    functionLinenumberEnd: 574
    functionName: OpStat::if_match
    functionSourceFile: /src/opendal/core/core/src/raw/ops.rs
    functionUses: 39
    functionsReached:
    - as_deref
    linkageType: ''
    returnType: Option
    signature: pub fn if_match(&self) -> Option<&str>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Some
      Src: /src/opendal/core/core/src/raw/ops.rs:578,1
    - Dst: Result::to_string
      Src: /src/opendal/core/core/src/raw/ops.rs:578,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - if_none_match
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 580
      start: 577
    functionDepth: 2
    functionLinenumber: 577
    functionLinenumberEnd: 580
    functionName: OpStat::with_if_none_match
    functionSourceFile: /src/opendal/core/core/src/raw/ops.rs
    functionUses: 0
    functionsReached:
    - Result::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn with_if_none_match(mut self, if_none_match: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: as_deref
      Src: /src/opendal/core/core/src/raw/ops.rs:584,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 585
      start: 583
    functionDepth: 0
    functionLinenumber: 583
    functionLinenumberEnd: 585
    functionName: OpStat::if_none_match
    functionSourceFile: /src/opendal/core/core/src/raw/ops.rs
    functionUses: 33
    functionsReached:
    - as_deref
    linkageType: ''
    returnType: Option
    signature: pub fn if_none_match(&self) -> Option<&str>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Some
      Src: /src/opendal/core/core/src/raw/ops.rs:589,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - v
    argTypes:
    - Timestamp
    constantsTouched: []
    func_position:
      end: 591
      start: 588
    functionDepth: 0
    functionLinenumber: 588
    functionLinenumberEnd: 591
    functionName: OpStat::with_if_modified_since
    functionSourceFile: /src/opendal/core/core/src/raw/ops.rs
    functionUses: 0
    functionsReached:
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn with_if_modified_since(mut self, v: Timestamp) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 596
      start: 594
    functionDepth: 0
    functionLinenumber: 594
    functionLinenumberEnd: 596
    functionName: OpStat::if_modified_since
    functionSourceFile: /src/opendal/core/core/src/raw/ops.rs
    functionUses: 21
    functionsReached: []
    linkageType: ''
    returnType: Option
    signature: pub fn if_modified_since(&self) -> Option<Timestamp>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Some
      Src: /src/opendal/core/core/src/raw/ops.rs:600,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - v
    argTypes:
    - Timestamp
    constantsTouched: []
    func_position:
      end: 602
      start: 599
    functionDepth: 0
    functionLinenumber: 599
    functionLinenumberEnd: 602
    functionName: OpStat::with_if_unmodified_since
    functionSourceFile: /src/opendal/core/core/src/raw/ops.rs
    functionUses: 0
    functionsReached:
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn with_if_unmodified_since(mut self, v: Timestamp) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 607
      start: 605
    functionDepth: 0
    functionLinenumber: 605
    functionLinenumberEnd: 607
    functionName: OpStat::if_unmodified_since
    functionSourceFile: /src/opendal/core/core/src/raw/ops.rs
    functionUses: 21
    functionsReached: []
    linkageType: ''
    returnType: Option
    signature: pub fn if_unmodified_since(&self) -> Option<Timestamp>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Some
      Src: /src/opendal/core/core/src/raw/ops.rs:611,1
    - Dst: Result::into
      Src: /src/opendal/core/core/src/raw/ops.rs:611,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - content_disposition
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 613
      start: 610
    functionDepth: 29
    functionLinenumber: 610
    functionLinenumberEnd: 613
    functionName: OpStat::with_override_content_disposition
    functionSourceFile: /src/opendal/core/core/src/raw/ops.rs
    functionUses: 0
    functionsReached:
    - Result::into
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn with_override_content_disposition(mut self, content_disposition:
      &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: as_deref
      Src: /src/opendal/core/core/src/raw/ops.rs:618,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 619
      start: 617
    functionDepth: 0
    functionLinenumber: 617
    functionLinenumberEnd: 619
    functionName: OpStat::override_content_disposition
    functionSourceFile: /src/opendal/core/core/src/raw/ops.rs
    functionUses: 6
    functionsReached:
    - as_deref
    linkageType: ''
    returnType: Option
    signature: pub fn override_content_disposition(&self) -> Option<&str>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Some
      Src: /src/opendal/core/core/src/raw/ops.rs:623,1
    - Dst: Result::into
      Src: /src/opendal/core/core/src/raw/ops.rs:623,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - cache_control
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 625
      start: 622
    functionDepth: 29
    functionLinenumber: 622
    functionLinenumberEnd: 625
    functionName: OpStat::with_override_cache_control
    functionSourceFile: /src/opendal/core/core/src/raw/ops.rs
    functionUses: 0
    functionsReached:
    - Result::into
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn with_override_cache_control(mut self, cache_control: &str)
      -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: as_deref
      Src: /src/opendal/core/core/src/raw/ops.rs:629,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 630
      start: 628
    functionDepth: 0
    functionLinenumber: 628
    functionLinenumberEnd: 630
    functionName: OpStat::override_cache_control
    functionSourceFile: /src/opendal/core/core/src/raw/ops.rs
    functionUses: 4
    functionsReached:
    - as_deref
    linkageType: ''
    returnType: Option
    signature: pub fn override_cache_control(&self) -> Option<&str>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Some
      Src: /src/opendal/core/core/src/raw/ops.rs:634,1
    - Dst: Result::into
      Src: /src/opendal/core/core/src/raw/ops.rs:634,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - content_type
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 636
      start: 633
    functionDepth: 29
    functionLinenumber: 633
    functionLinenumberEnd: 636
    functionName: OpStat::with_override_content_type
    functionSourceFile: /src/opendal/core/core/src/raw/ops.rs
    functionUses: 0
    functionsReached:
    - Result::into
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn with_override_content_type(mut self, content_type: &str) ->
      Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: as_deref
      Src: /src/opendal/core/core/src/raw/ops.rs:640,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 641
      start: 639
    functionDepth: 0
    functionLinenumber: 639
    functionLinenumberEnd: 641
    functionName: OpStat::override_content_type
    functionSourceFile: /src/opendal/core/core/src/raw/ops.rs
    functionUses: 4
    functionsReached:
    - as_deref
    linkageType: ''
    returnType: Option
    signature: pub fn override_content_type(&self) -> Option<&str>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Some
      Src: /src/opendal/core/core/src/raw/ops.rs:645,1
    - Dst: Result::to_string
      Src: /src/opendal/core/core/src/raw/ops.rs:645,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - version
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 647
      start: 644
    functionDepth: 2
    functionLinenumber: 644
    functionLinenumberEnd: 647
    functionName: OpStat::with_version
    functionSourceFile: /src/opendal/core/core/src/raw/ops.rs
    functionUses: 2
    functionsReached:
    - Result::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn with_version(mut self, version: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: as_deref
      Src: /src/opendal/core/core/src/raw/ops.rs:651,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 652
      start: 650
    functionDepth: 0
    functionLinenumber: 650
    functionLinenumberEnd: 652
    functionName: OpStat::version
    functionSourceFile: /src/opendal/core/core/src/raw/ops.rs
    functionUses: 22
    functionsReached:
    - as_deref
    linkageType: ''
    returnType: Option
    signature: pub fn version(&self) -> Option<&str>
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 1
    argNames:
    - value
    argTypes:
    - options::StatOptions
    constantsTouched: []
    func_position:
      end: 667
      start: 656
    functionDepth: 0
    functionLinenumber: 656
    functionLinenumberEnd: 667
    functionName: OpStat::from
    functionSourceFile: /src/opendal/core/core/src/raw/ops.rs
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: 'fn from(value: options::StatOptions) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self::default
      Src: /src/opendal/core/core/src/raw/ops.rs:690,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 691
      start: 689
    functionDepth: 3
    functionLinenumber: 689
    functionLinenumberEnd: 691
    functionName: OpWrite::new
    functionSourceFile: /src/opendal/core/core/src/raw/ops.rs
    functionUses: 0
    functionsReached:
    - Self::default
    linkageType: ''
    returnType: Self
    signature: pub fn new() -> Self
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 698
      start: 696
    functionDepth: 0
    functionLinenumber: 696
    functionLinenumberEnd: 698
    functionName: OpWrite::append
    functionSourceFile: /src/opendal/core/core/src/raw/ops.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: pub fn append(&self) -> bool
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - append
    argTypes:
    - bool
    constantsTouched: []
    func_position:
      end: 710
      start: 707
    functionDepth: 0
    functionLinenumber: 707
    functionLinenumberEnd: 710
    functionName: OpWrite::with_append
    functionSourceFile: /src/opendal/core/core/src/raw/ops.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: 'pub fn with_append(mut self, append: bool) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: as_deref
      Src: /src/opendal/core/core/src/raw/ops.rs:714,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 715
      start: 713
    functionDepth: 0
    functionLinenumber: 713
    functionLinenumberEnd: 715
    functionName: OpWrite::content_type
    functionSourceFile: /src/opendal/core/core/src/raw/ops.rs
    functionUses: 0
    functionsReached:
    - as_deref
    linkageType: ''
    returnType: Option
    signature: pub fn content_type(&self) -> Option<&str>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Some
      Src: /src/opendal/core/core/src/raw/ops.rs:719,1
    - Dst: Result::to_string
      Src: /src/opendal/core/core/src/raw/ops.rs:719,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - content_type
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 721
      start: 718
    functionDepth: 2
    functionLinenumber: 718
    functionLinenumberEnd: 721
    functionName: OpWrite::with_content_type
    functionSourceFile: /src/opendal/core/core/src/raw/ops.rs
    functionUses: 0
    functionsReached:
    - Result::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn with_content_type(mut self, content_type: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: as_deref
      Src: /src/opendal/core/core/src/raw/ops.rs:725,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 726
      start: 724
    functionDepth: 0
    functionLinenumber: 724
    functionLinenumberEnd: 726
    functionName: OpWrite::content_disposition
    functionSourceFile: /src/opendal/core/core/src/raw/ops.rs
    functionUses: 0
    functionsReached:
    - as_deref
    linkageType: ''
    returnType: Option
    signature: pub fn content_disposition(&self) -> Option<&str>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Some
      Src: /src/opendal/core/core/src/raw/ops.rs:730,1
    - Dst: Result::to_string
      Src: /src/opendal/core/core/src/raw/ops.rs:730,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - content_disposition
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 732
      start: 729
    functionDepth: 2
    functionLinenumber: 729
    functionLinenumberEnd: 732
    functionName: OpWrite::with_content_disposition
    functionSourceFile: /src/opendal/core/core/src/raw/ops.rs
    functionUses: 0
    functionsReached:
    - Result::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn with_content_disposition(mut self, content_disposition: &str)
      -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: as_deref
      Src: /src/opendal/core/core/src/raw/ops.rs:736,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 737
      start: 735
    functionDepth: 0
    functionLinenumber: 735
    functionLinenumberEnd: 737
    functionName: OpWrite::content_encoding
    functionSourceFile: /src/opendal/core/core/src/raw/ops.rs
    functionUses: 0
    functionsReached:
    - as_deref
    linkageType: ''
    returnType: Option
    signature: pub fn content_encoding(&self) -> Option<&str>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Some
      Src: /src/opendal/core/core/src/raw/ops.rs:741,1
    - Dst: Result::to_string
      Src: /src/opendal/core/core/src/raw/ops.rs:741,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - content_encoding
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 743
      start: 740
    functionDepth: 2
    functionLinenumber: 740
    functionLinenumberEnd: 743
    functionName: OpWrite::with_content_encoding
    functionSourceFile: /src/opendal/core/core/src/raw/ops.rs
    functionUses: 0
    functionsReached:
    - Result::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn with_content_encoding(mut self, content_encoding: &str) ->
      Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: as_deref
      Src: /src/opendal/core/core/src/raw/ops.rs:747,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 748
      start: 746
    functionDepth: 0
    functionLinenumber: 746
    functionLinenumberEnd: 748
    functionName: OpWrite::cache_control
    functionSourceFile: /src/opendal/core/core/src/raw/ops.rs
    functionUses: 0
    functionsReached:
    - as_deref
    linkageType: ''
    returnType: Option
    signature: pub fn cache_control(&self) -> Option<&str>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Some
      Src: /src/opendal/core/core/src/raw/ops.rs:752,1
    - Dst: Result::to_string
      Src: /src/opendal/core/core/src/raw/ops.rs:752,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - cache_control
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 754
      start: 751
    functionDepth: 2
    functionLinenumber: 751
    functionLinenumberEnd: 754
    functionName: OpWrite::with_cache_control
    functionSourceFile: /src/opendal/core/core/src/raw/ops.rs
    functionUses: 0
    functionsReached:
    - Result::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn with_cache_control(mut self, cache_control: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 759
      start: 757
    functionDepth: 0
    functionLinenumber: 757
    functionLinenumberEnd: 759
    functionName: OpWrite::concurrent
    functionSourceFile: /src/opendal/core/core/src/raw/ops.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: usize
    signature: pub fn concurrent(&self) -> usize
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - concurrent
    argTypes:
    - usize
    constantsTouched: []
    func_position:
      end: 765
      start: 762
    functionDepth: 0
    functionLinenumber: 762
    functionLinenumberEnd: 765
    functionName: OpWrite::with_concurrent
    functionSourceFile: /src/opendal/core/core/src/raw/ops.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: 'pub fn with_concurrent(mut self, concurrent: usize) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Some
      Src: /src/opendal/core/core/src/raw/ops.rs:769,1
    - Dst: to_string
      Src: /src/opendal/core/core/src/raw/ops.rs:769,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - s
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 771
      start: 768
    functionDepth: 2
    functionLinenumber: 768
    functionLinenumberEnd: 771
    functionName: OpWrite::with_if_match
    functionSourceFile: /src/opendal/core/core/src/raw/ops.rs
    functionUses: 0
    functionsReached:
    - to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn with_if_match(mut self, s: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: as_deref
      Src: /src/opendal/core/core/src/raw/ops.rs:775,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 776
      start: 774
    functionDepth: 0
    functionLinenumber: 774
    functionLinenumberEnd: 776
    functionName: OpWrite::if_match
    functionSourceFile: /src/opendal/core/core/src/raw/ops.rs
    functionUses: 0
    functionsReached:
    - as_deref
    linkageType: ''
    returnType: Option
    signature: pub fn if_match(&self) -> Option<&str>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Some
      Src: /src/opendal/core/core/src/raw/ops.rs:780,1
    - Dst: to_string
      Src: /src/opendal/core/core/src/raw/ops.rs:780,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - s
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 782
      start: 779
    functionDepth: 2
    functionLinenumber: 779
    functionLinenumberEnd: 782
    functionName: OpWrite::with_if_none_match
    functionSourceFile: /src/opendal/core/core/src/raw/ops.rs
    functionUses: 0
    functionsReached:
    - to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn with_if_none_match(mut self, s: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: as_deref
      Src: /src/opendal/core/core/src/raw/ops.rs:786,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 787
      start: 785
    functionDepth: 0
    functionLinenumber: 785
    functionLinenumberEnd: 787
    functionName: OpWrite::if_none_match
    functionSourceFile: /src/opendal/core/core/src/raw/ops.rs
    functionUses: 0
    functionsReached:
    - as_deref
    linkageType: ''
    returnType: Option
    signature: pub fn if_none_match(&self) -> Option<&str>
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - b
    argTypes:
    - bool
    constantsTouched: []
    func_position:
      end: 793
      start: 790
    functionDepth: 0
    functionLinenumber: 790
    functionLinenumberEnd: 793
    functionName: OpWrite::with_if_not_exists
    functionSourceFile: /src/opendal/core/core/src/raw/ops.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: 'pub fn with_if_not_exists(mut self, b: bool) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 798
      start: 796
    functionDepth: 0
    functionLinenumber: 796
    functionLinenumberEnd: 798
    functionName: OpWrite::if_not_exists
    functionSourceFile: /src/opendal/core/core/src/raw/ops.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: pub fn if_not_exists(&self) -> bool
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Some
      Src: /src/opendal/core/core/src/raw/ops.rs:802,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - metadata
    argTypes:
    - HashMap<String, String>
    constantsTouched: []
    func_position:
      end: 804
      start: 801
    functionDepth: 0
    functionLinenumber: 801
    functionLinenumberEnd: 804
    functionName: OpWrite::with_user_metadata
    functionSourceFile: /src/opendal/core/core/src/raw/ops.rs
    functionUses: 0
    functionsReached:
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn with_user_metadata(mut self, metadata: HashMap<String, String>)
      -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: as_ref
      Src: /src/opendal/core/core/src/raw/ops.rs:808,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 809
      start: 807
    functionDepth: 1
    functionLinenumber: 807
    functionLinenumberEnd: 809
    functionName: OpWrite::user_metadata
    functionSourceFile: /src/opendal/core/core/src/raw/ops.rs
    functionUses: 0
    functionsReached:
    - as_ref
    linkageType: ''
    returnType: Option
    signature: pub fn user_metadata(&self) -> Option<&HashMap<String, String>>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self::default
      Src: /src/opendal/core/core/src/raw/ops.rs:821,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 822
      start: 820
    functionDepth: 3
    functionLinenumber: 820
    functionLinenumberEnd: 822
    functionName: OpWriter::new
    functionSourceFile: /src/opendal/core/core/src/raw/ops.rs
    functionUses: 0
    functionsReached:
    - Self::default
    linkageType: ''
    returnType: Self
    signature: pub fn new() -> Self
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 829
      start: 827
    functionDepth: 0
    functionLinenumber: 827
    functionLinenumberEnd: 829
    functionName: OpWriter::chunk
    functionSourceFile: /src/opendal/core/core/src/raw/ops.rs
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: Option
    signature: pub fn chunk(&self) -> Option<usize>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Some
      Src: /src/opendal/core/core/src/raw/ops.rs:841,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - chunk
    argTypes:
    - usize
    constantsTouched: []
    func_position:
      end: 843
      start: 840
    functionDepth: 0
    functionLinenumber: 840
    functionLinenumberEnd: 843
    functionName: OpWriter::with_chunk
    functionSourceFile: /src/opendal/core/core/src/raw/ops.rs
    functionUses: 0
    functionsReached:
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn with_chunk(mut self, chunk: usize) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: max
      Src: /src/opendal/core/core/src/raw/ops.rs:852,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 16
    argCount: 1
    argNames:
    - value
    argTypes:
    - options::WriteOptions
    constantsTouched: []
    func_position:
      end: 864
      start: 847
    functionDepth: 1
    functionLinenumber: 847
    functionLinenumberEnd: 864
    functionName: (OpWrite, OpWriter)::from
    functionSourceFile: /src/opendal/core/core/src/raw/ops.rs
    functionUses: 0
    functionsReached:
    - max
    linkageType: ''
    returnType: Self
    signature: 'fn from(value: options::WriteOptions) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self::default
      Src: /src/opendal/core/core/src/raw/ops.rs:878,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 879
      start: 877
    functionDepth: 3
    functionLinenumber: 877
    functionLinenumberEnd: 879
    functionName: OpCopy::new
    functionSourceFile: /src/opendal/core/core/src/raw/ops.rs
    functionUses: 0
    functionsReached:
    - Self::default
    linkageType: ''
    returnType: Self
    signature: pub fn new() -> Self
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - if_not_exists
    argTypes:
    - bool
    constantsTouched: []
    func_position:
      end: 888
      start: 885
    functionDepth: 0
    functionLinenumber: 885
    functionLinenumberEnd: 888
    functionName: OpCopy::with_if_not_exists
    functionSourceFile: /src/opendal/core/core/src/raw/ops.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: 'pub fn with_if_not_exists(mut self, if_not_exists: bool) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 893
      start: 891
    functionDepth: 0
    functionLinenumber: 891
    functionLinenumberEnd: 893
    functionName: OpCopy::if_not_exists
    functionSourceFile: /src/opendal/core/core/src/raw/ops.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: pub fn if_not_exists(&self) -> bool
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Some
      Src: /src/opendal/core/core/src/raw/ops.rs:900,1
    - Dst: Result::into
      Src: /src/opendal/core/core/src/raw/ops.rs:900,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - if_match
    argTypes:
    - impl Into<String>
    constantsTouched: []
    func_position:
      end: 902
      start: 899
    functionDepth: 29
    functionLinenumber: 899
    functionLinenumberEnd: 902
    functionName: OpCopy::with_if_match
    functionSourceFile: /src/opendal/core/core/src/raw/ops.rs
    functionUses: 0
    functionsReached:
    - Result::into
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn with_if_match(mut self, if_match: impl Into<String>) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: as_deref
      Src: /src/opendal/core/core/src/raw/ops.rs:906,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 907
      start: 905
    functionDepth: 0
    functionLinenumber: 905
    functionLinenumberEnd: 907
    functionName: OpCopy::if_match
    functionSourceFile: /src/opendal/core/core/src/raw/ops.rs
    functionUses: 0
    functionsReached:
    - as_deref
    linkageType: ''
    returnType: Option
    signature: pub fn if_match(&self) -> Option<&str>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Some
      Src: /src/opendal/core/core/src/raw/ops.rs:913,1
    - Dst: Result::into
      Src: /src/opendal/core/core/src/raw/ops.rs:913,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - version
    argTypes:
    - impl Into<String>
    constantsTouched: []
    func_position:
      end: 915
      start: 912
    functionDepth: 29
    functionLinenumber: 912
    functionLinenumberEnd: 915
    functionName: OpCopy::with_source_version
    functionSourceFile: /src/opendal/core/core/src/raw/ops.rs
    functionUses: 0
    functionsReached:
    - Result::into
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn with_source_version(mut self, version: impl Into<String>) ->
      Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: as_deref
      Src: /src/opendal/core/core/src/raw/ops.rs:919,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 920
      start: 918
    functionDepth: 0
    functionLinenumber: 918
    functionLinenumberEnd: 920
    functionName: OpCopy::source_version
    functionSourceFile: /src/opendal/core/core/src/raw/ops.rs
    functionUses: 0
    functionsReached:
    - as_deref
    linkageType: ''
    returnType: Option
    signature: pub fn source_version(&self) -> Option<&str>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self::default
      Src: /src/opendal/core/core/src/raw/ops.rs:934,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 935
      start: 933
    functionDepth: 3
    functionLinenumber: 933
    functionLinenumberEnd: 935
    functionName: OpCopier::new
    functionSourceFile: /src/opendal/core/core/src/raw/ops.rs
    functionUses: 0
    functionsReached:
    - Self::default
    linkageType: ''
    returnType: Self
    signature: pub fn new() -> Self
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: max
      Src: /src/opendal/core/core/src/raw/ops.rs:939,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - concurrent
    argTypes:
    - usize
    constantsTouched: []
    func_position:
      end: 941
      start: 938
    functionDepth: 1
    functionLinenumber: 938
    functionLinenumberEnd: 941
    functionName: OpCopier::with_concurrent
    functionSourceFile: /src/opendal/core/core/src/raw/ops.rs
    functionUses: 0
    functionsReached:
    - max
    linkageType: ''
    returnType: Self
    signature: 'pub fn with_concurrent(mut self, concurrent: usize) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: max
      Src: /src/opendal/core/core/src/raw/ops.rs:945,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 946
      start: 944
    functionDepth: 1
    functionLinenumber: 944
    functionLinenumberEnd: 946
    functionName: OpCopier::concurrent
    functionSourceFile: /src/opendal/core/core/src/raw/ops.rs
    functionUses: 0
    functionsReached:
    - max
    linkageType: ''
    returnType: usize
    signature: pub fn concurrent(&self) -> usize
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Some
      Src: /src/opendal/core/core/src/raw/ops.rs:950,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - chunk
    argTypes:
    - usize
    constantsTouched: []
    func_position:
      end: 952
      start: 949
    functionDepth: 0
    functionLinenumber: 949
    functionLinenumberEnd: 952
    functionName: OpCopier::with_chunk
    functionSourceFile: /src/opendal/core/core/src/raw/ops.rs
    functionUses: 0
    functionsReached:
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn with_chunk(mut self, chunk: usize) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 957
      start: 955
    functionDepth: 0
    functionLinenumber: 955
    functionLinenumberEnd: 957
    functionName: OpCopier::chunk
    functionSourceFile: /src/opendal/core/core/src/raw/ops.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Option
    signature: pub fn chunk(&self) -> Option<usize>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Some
      Src: /src/opendal/core/core/src/raw/ops.rs:961,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - content_length
    argTypes:
    - u64
    constantsTouched: []
    func_position:
      end: 963
      start: 960
    functionDepth: 0
    functionLinenumber: 960
    functionLinenumberEnd: 963
    functionName: OpCopier::with_source_content_length_hint
    functionSourceFile: /src/opendal/core/core/src/raw/ops.rs
    functionUses: 0
    functionsReached:
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn with_source_content_length_hint(mut self, content_length: u64)
      -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 968
      start: 966
    functionDepth: 0
    functionLinenumber: 966
    functionLinenumberEnd: 968
    functionName: OpCopier::source_content_length_hint
    functionSourceFile: /src/opendal/core/core/src/raw/ops.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Option
    signature: pub fn source_content_length_hint(&self) -> Option<u64>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: max
      Src: /src/opendal/core/core/src/raw/ops.rs:980,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 1
    argNames:
    - value
    argTypes:
    - options::CopyOptions
    constantsTouched: []
    func_position:
      end: 985
      start: 972
    functionDepth: 1
    functionLinenumber: 972
    functionLinenumberEnd: 985
    functionName: (OpCopy, OpCopier)::from
    functionSourceFile: /src/opendal/core/core/src/raw/ops.rs
    functionUses: 0
    functionsReached:
    - max
    linkageType: ''
    returnType: Self
    signature: 'fn from(value: options::CopyOptions) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self::default
      Src: /src/opendal/core/core/src/raw/ops.rs:997,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 998
      start: 996
    functionDepth: 3
    functionLinenumber: 996
    functionLinenumberEnd: 998
    functionName: OpRename::new
    functionSourceFile: /src/opendal/core/core/src/raw/ops.rs
    functionUses: 0
    functionsReached:
    - Self::default
    linkageType: ''
    returnType: Self
    signature: pub fn new() -> Self
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - if_not_exists
    argTypes:
    - bool
    constantsTouched: []
    func_position:
      end: 1004
      start: 1001
    functionDepth: 0
    functionLinenumber: 1001
    functionLinenumberEnd: 1004
    functionName: OpRename::with_if_not_exists
    functionSourceFile: /src/opendal/core/core/src/raw/ops.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: 'pub fn with_if_not_exists(mut self, if_not_exists: bool) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 1009
      start: 1007
    functionDepth: 0
    functionLinenumber: 1007
    functionLinenumberEnd: 1009
    functionName: OpRename::if_not_exists
    functionSourceFile: /src/opendal/core/core/src/raw/ops.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: pub fn if_not_exists(&self) -> bool
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - value
    argTypes:
    - options::RenameOptions
    constantsTouched: []
    func_position:
      end: 1017
      start: 1013
    functionDepth: 0
    functionLinenumber: 1013
    functionLinenumberEnd: 1017
    functionName: OpRename::from
    functionSourceFile: /src/opendal/core/core/src/raw/ops.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: 'fn from(value: options::RenameOptions) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - req
    argTypes:
    - PresignedRequest
    constantsTouched: []
    func_position:
      end: 44
      start: 42
    functionDepth: 0
    functionLinenumber: 42
    functionLinenumberEnd: 44
    functionName: RpPresign::new
    functionSourceFile: /src/opendal/core/core/src/raw/rps.rs
    functionUses: 9
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(req: PresignedRequest) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 49
      start: 47
    functionDepth: 0
    functionLinenumber: 47
    functionLinenumberEnd: 49
    functionName: RpPresign::into_presigned_request
    functionSourceFile: /src/opendal/core/core/src/raw/rps.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: PresignedRequest
    signature: pub fn into_presigned_request(self) -> PresignedRequest
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: opendal::raw::PresignedRequest::method
      Src: /src/opendal/bindings/nodejs/src/lib.rs:1189,1
    - Dst: '&str::to_string'
      Src: /src/opendal/bindings/nodejs/src/lib.rs:1189,1
    - Dst: opendal::raw::PresignedRequest::uri
      Src: /src/opendal/bindings/nodejs/src/lib.rs:1190,1
    - Dst: '&http::Uri::to_string'
      Src: /src/opendal/bindings/nodejs/src/lib.rs:1190,1
    - Dst: opendal::raw::PresignedRequest::header
      Src: /src/opendal/bindings/nodejs/src/lib.rs:1191,1
    - Dst: '&http::HeaderMap::iter'
      Src: /src/opendal/bindings/nodejs/src/lib.rs:1191,1
    - Dst: map
      Src: /src/opendal/bindings/nodejs/src/lib.rs:1191,1
    - Dst: Result::as_str
      Src: /src/opendal/bindings/nodejs/src/lib.rs:1196,1
    - Dst: '&''static str::to_string'
      Src: /src/opendal/bindings/nodejs/src/lib.rs:1196,1
    - Dst: Result::to_str
      Src: /src/opendal/bindings/nodejs/src/lib.rs:1197,1
    - Dst: Result::expect
      Src: /src/opendal/bindings/nodejs/src/lib.rs:1197,1
    - Dst: to_string
      Src: /src/opendal/bindings/nodejs/src/lib.rs:1197,1
    - Dst: Result::collect
      Src: /src/opendal/bindings/nodejs/src/lib.rs:1191,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 29
    argCount: 1
    argNames:
    - req
    argTypes:
    - opendal::raw::PresignedRequest
    constantsTouched: []
    func_position:
      end: 1208
      start: 1188
    functionDepth: 36
    functionLinenumber: 1188
    functionLinenumberEnd: 1208
    functionName: PresignedRequest::new
    functionSourceFile: /src/opendal/bindings/nodejs/src/lib.rs
    functionUses: 13
    functionsReached:
    - to_string
    - '&http::HeaderMap::iter'
    - Result::to_str
    - Result::expect
    - opendal::raw::PresignedRequest::header
    - map
    - Result::collect
    - opendal::raw::PresignedRequest::uri
    - '&str::to_string'
    - opendal::raw::PresignedRequest::method
    - Result::as_str
    - '&http::Uri::to_string'
    - '&''static str::to_string'
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(req: opendal::raw::PresignedRequest) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: method
      Src: /src/opendal/bindings/python/src/operator.rs:1875,1
    - Dst: as_str
      Src: /src/opendal/bindings/python/src/operator.rs:1875,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 1876
      start: 1874
    functionDepth: 1
    functionLinenumber: 1874
    functionLinenumberEnd: 1876
    functionName: PresignedRequest::method
    functionSourceFile: /src/opendal/bindings/python/src/operator.rs
    functionUses: 3
    functionsReached:
    - as_str
    - method
    linkageType: ''
    returnType: '&str'
    signature: pub fn method(&self) -> &str
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 78
      start: 76
    functionDepth: 0
    functionLinenumber: 76
    functionLinenumberEnd: 78
    functionName: PresignedRequest::uri
    functionSourceFile: /src/opendal/core/core/src/raw/rps.rs
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: '&http::Uri'
    signature: pub fn uri(&self) -> &http::Uri
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 83
      start: 81
    functionDepth: 0
    functionLinenumber: 81
    functionLinenumberEnd: 83
    functionName: PresignedRequest::header
    functionSourceFile: /src/opendal/core/core/src/raw/rps.rs
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: '&http::HeaderMap'
    signature: pub fn header(&self) -> &http::HeaderMap
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Request::builder
      Src: /src/opendal/core/core/src/raw/rps.rs:88,1
    - Dst: OtelMetricsLayerBuilder::method
      Src: /src/opendal/core/core/src/raw/rps.rs:88,1
    - Dst: '&str::uri'
      Src: /src/opendal/core/core/src/raw/rps.rs:88,1
    - Dst: OtelMetricsLayerBuilder::headers_mut
      Src: /src/opendal/core/core/src/raw/rps.rs:90,1
    - Dst: expect
      Src: /src/opendal/core/core/src/raw/rps.rs:90,1
    - Dst: HashMap::extend
      Src: /src/opendal/core/core/src/raw/rps.rs:91,1
    - Dst: OtelMetricsLayerBuilder::body
      Src: /src/opendal/core/core/src/raw/rps.rs:93,1
    - Dst: T::default
      Src: /src/opendal/core/core/src/raw/rps.rs:94,1
    - Dst: expect
      Src: /src/opendal/core/core/src/raw/rps.rs:93,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 20
    argCount: 1
    argNames:
    - v
    argTypes:
    - PresignedRequest
    constantsTouched: []
    func_position:
      end: 96
      start: 87
    functionDepth: 6
    functionLinenumber: 87
    functionLinenumberEnd: 96
    functionName: Request::from
    functionSourceFile: /src/opendal/core/core/src/raw/rps.rs
    functionUses: 0
    functionsReached:
    - expect
    - HashMap::extend
    - OtelMetricsLayerBuilder::method
    - OtelMetricsLayerBuilder::headers_mut
    - '&str::uri'
    - OtelMetricsLayerBuilder::body
    - T::default
    - Request::builder
    linkageType: ''
    returnType: Self
    signature: 'fn from(v: PresignedRequest) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Some
      Src: /src/opendal/core/core/src/raw/rps.rs:114,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - metadata
    argTypes:
    - Metadata
    constantsTouched: []
    func_position:
      end: 116
      start: 112
    functionDepth: 0
    functionLinenumber: 112
    functionLinenumberEnd: 116
    functionName: RpRead::new
    functionSourceFile: /src/opendal/core/core/src/raw/rps.rs
    functionUses: 54
    functionsReached:
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(metadata: Metadata) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: as_ref
      Src: /src/opendal/core/core/src/raw/rps.rs:120,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 121
      start: 119
    functionDepth: 1
    functionLinenumber: 119
    functionLinenumberEnd: 121
    functionName: RpRead::metadata
    functionSourceFile: /src/opendal/core/core/src/raw/rps.rs
    functionUses: 1
    functionsReached:
    - as_ref
    linkageType: ''
    returnType: Option
    signature: pub fn metadata(&self) -> Option<&Metadata>
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 126
      start: 124
    functionDepth: 0
    functionLinenumber: 124
    functionLinenumberEnd: 126
    functionName: RpRead::into_metadata
    functionSourceFile: /src/opendal/core/core/src/raw/rps.rs
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: Option
    signature: pub fn into_metadata(self) -> Option<Metadata>
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - meta
    argTypes:
    - Metadata
    constantsTouched: []
    func_position:
      end: 139
      start: 137
    functionDepth: 0
    functionLinenumber: 137
    functionLinenumberEnd: 139
    functionName: RpStat::new
    functionSourceFile: /src/opendal/core/core/src/raw/rps.rs
    functionUses: 63
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(meta: Metadata) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - f
    argTypes:
    - impl FnOnce(Metadata) -> Metadata
    constantsTouched: []
    func_position:
      end: 145
      start: 142
    functionDepth: 0
    functionLinenumber: 142
    functionLinenumberEnd: 145
    functionName: RpStat::map_metadata
    functionSourceFile: /src/opendal/core/core/src/raw/rps.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: 'pub fn map_metadata(mut self, f: impl FnOnce(Metadata) -> Metadata)
      -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 150
      start: 148
    functionDepth: 0
    functionLinenumber: 148
    functionLinenumberEnd: 150
    functionName: RpStat::into_metadata
    functionSourceFile: /src/opendal/core/core/src/raw/rps.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Metadata
    signature: pub fn into_metadata(self) -> Metadata
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 161
      start: 159
    functionDepth: 0
    functionLinenumber: 159
    functionLinenumberEnd: 161
    functionName: RpWrite::new
    functionSourceFile: /src/opendal/core/core/src/raw/rps.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: pub fn new() -> Self
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 172
      start: 170
    functionDepth: 0
    functionLinenumber: 170
    functionLinenumberEnd: 172
    functionName: RpCopy::new
    functionSourceFile: /src/opendal/core/core/src/raw/rps.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: pub fn new() -> Self
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 183
      start: 181
    functionDepth: 0
    functionLinenumber: 181
    functionLinenumberEnd: 183
    functionName: RpRename::new
    functionSourceFile: /src/opendal/core/core/src/raw/rps.rs
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: pub fn new() -> Self
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Uri::from_static
      Src: /src/opendal/core/core/src/raw/rps.rs:201,1
    - Dst: HeaderMap::new
      Src: /src/opendal/core/core/src/raw/rps.rs:203,1
    - Dst: HashMap::insert
      Src: /src/opendal/core/core/src/raw/rps.rs:204,1
    - Dst: '&str::parse'
      Src: /src/opendal/core/core/src/raw/rps.rs:204,1
    - Dst: HashMap::insert
      Src: /src/opendal/core/core/src/raw/rps.rs:205,1
    - Dst: '&str::parse'
      Src: /src/opendal/core/core/src/raw/rps.rs:205,1
    - Dst: into
      Src: /src/opendal/core/core/src/raw/rps.rs:211,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/raw/rps.rs:220,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 23
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 221
      start: 198
    functionDepth: 33
    functionLinenumber: 198
    functionLinenumberEnd: 221
    functionName: tests::test_presigned_request_convert
    functionSourceFile: /src/opendal/core/core/src/raw/rps.rs
    functionUses: 0
    functionsReached:
    - Ok
    - into
    - Uri::from_static
    - '&str::parse'
    - HashMap::insert
    - HeaderMap::new
    linkageType: ''
    returnType: Result
    signature: fn test_presigned_request_convert() -> Result<()>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Error::new
      Src: /src/opendal/core/core/src/raw/serde_util.rs:33,1
    - Dst: Self::set_source
      Src: /src/opendal/core/core/src/raw/serde_util.rs:33,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - e
    argTypes:
    - quick_xml::SeError
    constantsTouched: []
    func_position:
      end: 34
      start: 32
    functionDepth: 36
    functionLinenumber: 32
    functionLinenumberEnd: 34
    functionName: new_xml_serialize_error
    functionSourceFile: /src/opendal/core/core/src/raw/serde_util.rs
    functionUses: 0
    functionsReached:
    - Self::set_source
    - Error::new
    linkageType: ''
    returnType: Error
    signature: 'pub fn new_xml_serialize_error(e: quick_xml::SeError) -> Error'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Error::new
      Src: /src/opendal/core/core/src/raw/serde_util.rs:38,1
    - Dst: Self::set_source
      Src: /src/opendal/core/core/src/raw/serde_util.rs:38,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - e
    argTypes:
    - quick_xml::DeError
    constantsTouched: []
    func_position:
      end: 39
      start: 37
    functionDepth: 36
    functionLinenumber: 37
    functionLinenumberEnd: 39
    functionName: new_xml_deserialize_error
    functionSourceFile: /src/opendal/core/core/src/raw/serde_util.rs
    functionUses: 0
    functionsReached:
    - Self::set_source
    - Error::new
    linkageType: ''
    returnType: Error
    signature: 'pub fn new_xml_deserialize_error(e: quick_xml::DeError) -> Error'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Error::new
      Src: /src/opendal/core/core/src/raw/serde_util.rs:43,1
    - Dst: Self::set_source
      Src: /src/opendal/core/core/src/raw/serde_util.rs:43,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - e
    argTypes:
    - serde_json::Error
    constantsTouched: []
    func_position:
      end: 44
      start: 42
    functionDepth: 36
    functionLinenumber: 42
    functionLinenumberEnd: 44
    functionName: new_json_serialize_error
    functionSourceFile: /src/opendal/core/core/src/raw/serde_util.rs
    functionUses: 0
    functionsReached:
    - Self::set_source
    - Error::new
    linkageType: ''
    returnType: Error
    signature: 'pub fn new_json_serialize_error(e: serde_json::Error) -> Error'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Error::new
      Src: /src/opendal/core/core/src/raw/serde_util.rs:48,1
    - Dst: Self::set_source
      Src: /src/opendal/core/core/src/raw/serde_util.rs:48,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - e
    argTypes:
    - serde_json::Error
    constantsTouched: []
    func_position:
      end: 49
      start: 47
    functionDepth: 36
    functionLinenumber: 47
    functionLinenumberEnd: 49
    functionName: new_json_deserialize_error
    functionSourceFile: /src/opendal/core/core/src/raw/serde_util.rs
    functionUses: 0
    functionsReached:
    - Self::set_source
    - Error::new
    linkageType: ''
    returnType: Error
    signature: 'pub fn new_json_deserialize_error(e: serde_json::Error) -> Error'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Pairs
      Src: /src/opendal/core/core/src/raw/serde_util.rs:59,1
    - Dst: Result::into_iter
      Src: /src/opendal/core/core/src/raw/serde_util.rs:59,1
    - Dst: Self
      Src: /src/opendal/core/core/src/raw/serde_util.rs:60,1
    - Dst: MapDeserializer::new
      Src: /src/opendal/core/core/src/raw/serde_util.rs:60,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - map
    argTypes:
    - HashMap<String, String>
    constantsTouched: []
    func_position:
      end: 61
      start: 58
    functionDepth: 2
    functionLinenumber: 58
    functionLinenumberEnd: 61
    functionName: ConfigDeserializer::new
    functionSourceFile: /src/opendal/core/core/src/raw/serde_util.rs
    functionUses: 3
    functionsReached:
    - Result::into_iter
    - Self
    - MapDeserializer::new
    - Pairs
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(map: HashMap<String, String>) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: ConfigDeserializer::deserialize_map
      Src: /src/opendal/core/core/src/raw/serde_util.rs:71,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - visitor
    argTypes:
    - V
    constantsTouched: []
    func_position:
      end: 72
      start: 67
    functionDepth: 1
    functionLinenumber: 67
    functionLinenumberEnd: 72
    functionName: ConfigDeserializer::deserialize_any
    functionSourceFile: /src/opendal/core/core/src/raw/serde_util.rs
    functionUses: 0
    functionsReached:
    - ConfigDeserializer::deserialize_map
    linkageType: ''
    returnType: Result
    signature: 'fn deserialize_any<V>(self, visitor: V) -> Result<V::Value, Self::Error>whereV:
      Visitor<''de>,'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: V::visit_map
      Src: /src/opendal/core/core/src/raw/serde_util.rs:78,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - visitor
    argTypes:
    - V
    constantsTouched: []
    func_position:
      end: 79
      start: 74
    functionDepth: 0
    functionLinenumber: 74
    functionLinenumberEnd: 79
    functionName: ConfigDeserializer::deserialize_map
    functionSourceFile: /src/opendal/core/core/src/raw/serde_util.rs
    functionUses: 1
    functionsReached:
    - V::visit_map
    linkageType: ''
    returnType: Result
    signature: 'fn deserialize_map<V>(self, visitor: V) -> Result<V::Value, Self::Error>whereV:
      Visitor<''de>,'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: next
      Src: /src/opendal/core/core/src/raw/serde_util.rs:96,1
    - Dst: map
      Src: /src/opendal/core/core/src/raw/serde_util.rs:96,1
    - Dst: Result::to_lowercase
      Src: /src/opendal/core/core/src/raw/serde_util.rs:96,1
    - Dst: Pair
      Src: /src/opendal/core/core/src/raw/serde_util.rs:96,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 97
      start: 95
    functionDepth: 2
    functionLinenumber: 95
    functionLinenumberEnd: 97
    functionName: Pairs::next
    functionSourceFile: /src/opendal/core/core/src/raw/serde_util.rs
    functionUses: 0
    functionsReached:
    - next
    - map
    - Pair
    - Result::to_lowercase
    linkageType: ''
    returnType: Option
    signature: fn next(&mut self) -> Option<Self::Item>
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 108
      start: 106
    functionDepth: 0
    functionLinenumber: 106
    functionLinenumberEnd: 108
    functionName: Pair::into_deserializer
    functionSourceFile: /src/opendal/core/core/src/raw/serde_util.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Self::Deserializer
    signature: fn into_deserializer(self) -> Self::Deserializer
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: into_deserializer
      Src: /src/opendal/core/core/src/raw/serde_util.rs:118,1
    - Dst: deserialize_any
      Src: /src/opendal/core/core/src/raw/serde_util.rs:118,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - visitor
    argTypes:
    - V
    constantsTouched: []
    func_position:
      end: 119
      start: 114
    functionDepth: 2
    functionLinenumber: 114
    functionLinenumberEnd: 119
    functionName: Pair::deserialize_any
    functionSourceFile: /src/opendal/core/core/src/raw/serde_util.rs
    functionUses: 0
    functionsReached:
    - into_deserializer
    - deserialize_any
    linkageType: ''
    returnType: Result
    signature: 'fn deserialize_any<V>(self, visitor: V) -> Result<V::Value, Self::Error>whereV:
      Visitor<''de>,'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: to_lowercase
      Src: /src/opendal/core/core/src/raw/serde_util.rs:125,1
    - Dst: as_str
      Src: /src/opendal/core/core/src/raw/serde_util.rs:125,1
    - Dst: into_deserializer
      Src: /src/opendal/core/core/src/raw/serde_util.rs:126,1
    - Dst: deserialize_bool
      Src: /src/opendal/core/core/src/raw/serde_util.rs:126,1
    - Dst: into_deserializer
      Src: /src/opendal/core/core/src/raw/serde_util.rs:127,1
    - Dst: deserialize_bool
      Src: /src/opendal/core/core/src/raw/serde_util.rs:127,1
    - Dst: Err
      Src: /src/opendal/core/core/src/raw/serde_util.rs:128,1
    - Dst: de::Error::custom
      Src: /src/opendal/core/core/src/raw/serde_util.rs:128,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 17
    argCount: 1
    argNames:
    - visitor
    argTypes:
    - V
    constantsTouched: []
    func_position:
      end: 133
      start: 121
    functionDepth: 1
    functionLinenumber: 121
    functionLinenumberEnd: 133
    functionName: Pair::deserialize_bool
    functionSourceFile: /src/opendal/core/core/src/raw/serde_util.rs
    functionUses: 0
    functionsReached:
    - to_lowercase
    - deserialize_bool
    - de::Error::custom
    - Err
    - as_str
    - into_deserializer
    linkageType: ''
    returnType: Result
    signature: 'fn deserialize_bool<V>(self, visitor: V) -> Result<V::Value, Self::Error>whereV:
      Visitor<''de>,'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: 1.parse::<i8>
      Src: /src/opendal/core/core/src/raw/serde_util.rs:139,1
    - Dst: Option::into_deserializer
      Src: /src/opendal/core/core/src/raw/serde_util.rs:140,1
    - Dst: Self::Deserializer::deserialize_i8
      Src: /src/opendal/core/core/src/raw/serde_util.rs:140,1
    - Dst: Err
      Src: /src/opendal/core/core/src/raw/serde_util.rs:141,1
    - Dst: de::Error::custom
      Src: /src/opendal/core/core/src/raw/serde_util.rs:141,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 1
    argNames:
    - visitor
    argTypes:
    - V
    constantsTouched: []
    func_position:
      end: 146
      start: 135
    functionDepth: 1
    functionLinenumber: 135
    functionLinenumberEnd: 146
    functionName: Pair::deserialize_i8
    functionSourceFile: /src/opendal/core/core/src/raw/serde_util.rs
    functionUses: 0
    functionsReached:
    - 1.parse::<i8>
    - de::Error::custom
    - Option::into_deserializer
    - Err
    - Self::Deserializer::deserialize_i8
    linkageType: ''
    returnType: Result
    signature: 'fn deserialize_i8<V>(self, visitor: V) -> Result<V::Value, Self::Error>whereV:
      Visitor<''de>,'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: 1.parse::<i16>
      Src: /src/opendal/core/core/src/raw/serde_util.rs:152,1
    - Dst: Option::into_deserializer
      Src: /src/opendal/core/core/src/raw/serde_util.rs:153,1
    - Dst: Self::Deserializer::deserialize_i16
      Src: /src/opendal/core/core/src/raw/serde_util.rs:153,1
    - Dst: Err
      Src: /src/opendal/core/core/src/raw/serde_util.rs:154,1
    - Dst: de::Error::custom
      Src: /src/opendal/core/core/src/raw/serde_util.rs:154,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 1
    argNames:
    - visitor
    argTypes:
    - V
    constantsTouched: []
    func_position:
      end: 159
      start: 148
    functionDepth: 1
    functionLinenumber: 148
    functionLinenumberEnd: 159
    functionName: Pair::deserialize_i16
    functionSourceFile: /src/opendal/core/core/src/raw/serde_util.rs
    functionUses: 0
    functionsReached:
    - 1.parse::<i16>
    - de::Error::custom
    - Option::into_deserializer
    - Err
    - Self::Deserializer::deserialize_i16
    linkageType: ''
    returnType: Result
    signature: 'fn deserialize_i16<V>(self, visitor: V) -> Result<V::Value, Self::Error>whereV:
      Visitor<''de>,'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: 1.parse::<i32>
      Src: /src/opendal/core/core/src/raw/serde_util.rs:165,1
    - Dst: Option::into_deserializer
      Src: /src/opendal/core/core/src/raw/serde_util.rs:166,1
    - Dst: Self::Deserializer::deserialize_i32
      Src: /src/opendal/core/core/src/raw/serde_util.rs:166,1
    - Dst: Err
      Src: /src/opendal/core/core/src/raw/serde_util.rs:167,1
    - Dst: de::Error::custom
      Src: /src/opendal/core/core/src/raw/serde_util.rs:167,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 1
    argNames:
    - visitor
    argTypes:
    - V
    constantsTouched: []
    func_position:
      end: 172
      start: 161
    functionDepth: 1
    functionLinenumber: 161
    functionLinenumberEnd: 172
    functionName: Pair::deserialize_i32
    functionSourceFile: /src/opendal/core/core/src/raw/serde_util.rs
    functionUses: 0
    functionsReached:
    - Self::Deserializer::deserialize_i32
    - de::Error::custom
    - Option::into_deserializer
    - Err
    - 1.parse::<i32>
    linkageType: ''
    returnType: Result
    signature: 'fn deserialize_i32<V>(self, visitor: V) -> Result<V::Value, Self::Error>whereV:
      Visitor<''de>,'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: 1.parse::<i64>
      Src: /src/opendal/core/core/src/raw/serde_util.rs:178,1
    - Dst: Option::into_deserializer
      Src: /src/opendal/core/core/src/raw/serde_util.rs:179,1
    - Dst: Self::Deserializer::deserialize_i64
      Src: /src/opendal/core/core/src/raw/serde_util.rs:179,1
    - Dst: Err
      Src: /src/opendal/core/core/src/raw/serde_util.rs:180,1
    - Dst: de::Error::custom
      Src: /src/opendal/core/core/src/raw/serde_util.rs:180,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 1
    argNames:
    - visitor
    argTypes:
    - V
    constantsTouched: []
    func_position:
      end: 185
      start: 174
    functionDepth: 1
    functionLinenumber: 174
    functionLinenumberEnd: 185
    functionName: Pair::deserialize_i64
    functionSourceFile: /src/opendal/core/core/src/raw/serde_util.rs
    functionUses: 0
    functionsReached:
    - Self::Deserializer::deserialize_i64
    - de::Error::custom
    - Err
    - Option::into_deserializer
    - 1.parse::<i64>
    linkageType: ''
    returnType: Result
    signature: 'fn deserialize_i64<V>(self, visitor: V) -> Result<V::Value, Self::Error>whereV:
      Visitor<''de>,'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: 1.parse::<u8>
      Src: /src/opendal/core/core/src/raw/serde_util.rs:191,1
    - Dst: Option::into_deserializer
      Src: /src/opendal/core/core/src/raw/serde_util.rs:192,1
    - Dst: Self::Deserializer::deserialize_u8
      Src: /src/opendal/core/core/src/raw/serde_util.rs:192,1
    - Dst: Err
      Src: /src/opendal/core/core/src/raw/serde_util.rs:193,1
    - Dst: de::Error::custom
      Src: /src/opendal/core/core/src/raw/serde_util.rs:193,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 1
    argNames:
    - visitor
    argTypes:
    - V
    constantsTouched: []
    func_position:
      end: 198
      start: 187
    functionDepth: 1
    functionLinenumber: 187
    functionLinenumberEnd: 198
    functionName: Pair::deserialize_u8
    functionSourceFile: /src/opendal/core/core/src/raw/serde_util.rs
    functionUses: 0
    functionsReached:
    - de::Error::custom
    - Option::into_deserializer
    - Err
    - 1.parse::<u8>
    - Self::Deserializer::deserialize_u8
    linkageType: ''
    returnType: Result
    signature: 'fn deserialize_u8<V>(self, visitor: V) -> Result<V::Value, Self::Error>whereV:
      Visitor<''de>,'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: 1.parse::<u16>
      Src: /src/opendal/core/core/src/raw/serde_util.rs:204,1
    - Dst: Option::into_deserializer
      Src: /src/opendal/core/core/src/raw/serde_util.rs:205,1
    - Dst: Self::Deserializer::deserialize_u16
      Src: /src/opendal/core/core/src/raw/serde_util.rs:205,1
    - Dst: Err
      Src: /src/opendal/core/core/src/raw/serde_util.rs:206,1
    - Dst: de::Error::custom
      Src: /src/opendal/core/core/src/raw/serde_util.rs:206,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 1
    argNames:
    - visitor
    argTypes:
    - V
    constantsTouched: []
    func_position:
      end: 211
      start: 200
    functionDepth: 1
    functionLinenumber: 200
    functionLinenumberEnd: 211
    functionName: Pair::deserialize_u16
    functionSourceFile: /src/opendal/core/core/src/raw/serde_util.rs
    functionUses: 0
    functionsReached:
    - Self::Deserializer::deserialize_u16
    - de::Error::custom
    - Err
    - Option::into_deserializer
    - 1.parse::<u16>
    linkageType: ''
    returnType: Result
    signature: 'fn deserialize_u16<V>(self, visitor: V) -> Result<V::Value, Self::Error>whereV:
      Visitor<''de>,'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: 1.parse::<u32>
      Src: /src/opendal/core/core/src/raw/serde_util.rs:217,1
    - Dst: Option::into_deserializer
      Src: /src/opendal/core/core/src/raw/serde_util.rs:218,1
    - Dst: Self::Deserializer::deserialize_u32
      Src: /src/opendal/core/core/src/raw/serde_util.rs:218,1
    - Dst: Err
      Src: /src/opendal/core/core/src/raw/serde_util.rs:219,1
    - Dst: de::Error::custom
      Src: /src/opendal/core/core/src/raw/serde_util.rs:219,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 1
    argNames:
    - visitor
    argTypes:
    - V
    constantsTouched: []
    func_position:
      end: 224
      start: 213
    functionDepth: 1
    functionLinenumber: 213
    functionLinenumberEnd: 224
    functionName: Pair::deserialize_u32
    functionSourceFile: /src/opendal/core/core/src/raw/serde_util.rs
    functionUses: 0
    functionsReached:
    - de::Error::custom
    - Option::into_deserializer
    - Err
    - Self::Deserializer::deserialize_u32
    - 1.parse::<u32>
    linkageType: ''
    returnType: Result
    signature: 'fn deserialize_u32<V>(self, visitor: V) -> Result<V::Value, Self::Error>whereV:
      Visitor<''de>,'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: 1.parse::<u64>
      Src: /src/opendal/core/core/src/raw/serde_util.rs:230,1
    - Dst: Option::into_deserializer
      Src: /src/opendal/core/core/src/raw/serde_util.rs:231,1
    - Dst: Self::Deserializer::deserialize_u64
      Src: /src/opendal/core/core/src/raw/serde_util.rs:231,1
    - Dst: Err
      Src: /src/opendal/core/core/src/raw/serde_util.rs:232,1
    - Dst: de::Error::custom
      Src: /src/opendal/core/core/src/raw/serde_util.rs:232,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 1
    argNames:
    - visitor
    argTypes:
    - V
    constantsTouched: []
    func_position:
      end: 237
      start: 226
    functionDepth: 1
    functionLinenumber: 226
    functionLinenumberEnd: 237
    functionName: Pair::deserialize_u64
    functionSourceFile: /src/opendal/core/core/src/raw/serde_util.rs
    functionUses: 0
    functionsReached:
    - 1.parse::<u64>
    - Self::Deserializer::deserialize_u64
    - de::Error::custom
    - Option::into_deserializer
    - Err
    linkageType: ''
    returnType: Result
    signature: 'fn deserialize_u64<V>(self, visitor: V) -> Result<V::Value, Self::Error>whereV:
      Visitor<''de>,'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: 1.parse::<f32>
      Src: /src/opendal/core/core/src/raw/serde_util.rs:243,1
    - Dst: Option::into_deserializer
      Src: /src/opendal/core/core/src/raw/serde_util.rs:244,1
    - Dst: Self::Deserializer::deserialize_f32
      Src: /src/opendal/core/core/src/raw/serde_util.rs:244,1
    - Dst: Err
      Src: /src/opendal/core/core/src/raw/serde_util.rs:245,1
    - Dst: de::Error::custom
      Src: /src/opendal/core/core/src/raw/serde_util.rs:245,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 1
    argNames:
    - visitor
    argTypes:
    - V
    constantsTouched: []
    func_position:
      end: 250
      start: 239
    functionDepth: 1
    functionLinenumber: 239
    functionLinenumberEnd: 250
    functionName: Pair::deserialize_f32
    functionSourceFile: /src/opendal/core/core/src/raw/serde_util.rs
    functionUses: 0
    functionsReached:
    - de::Error::custom
    - Option::into_deserializer
    - Err
    - Self::Deserializer::deserialize_f32
    - 1.parse::<f32>
    linkageType: ''
    returnType: Result
    signature: 'fn deserialize_f32<V>(self, visitor: V) -> Result<V::Value, Self::Error>whereV:
      Visitor<''de>,'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: 1.parse::<f64>
      Src: /src/opendal/core/core/src/raw/serde_util.rs:256,1
    - Dst: Option::into_deserializer
      Src: /src/opendal/core/core/src/raw/serde_util.rs:257,1
    - Dst: Self::Deserializer::deserialize_f64
      Src: /src/opendal/core/core/src/raw/serde_util.rs:257,1
    - Dst: Err
      Src: /src/opendal/core/core/src/raw/serde_util.rs:258,1
    - Dst: de::Error::custom
      Src: /src/opendal/core/core/src/raw/serde_util.rs:258,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 1
    argNames:
    - visitor
    argTypes:
    - V
    constantsTouched: []
    func_position:
      end: 263
      start: 252
    functionDepth: 1
    functionLinenumber: 252
    functionLinenumberEnd: 263
    functionName: Pair::deserialize_f64
    functionSourceFile: /src/opendal/core/core/src/raw/serde_util.rs
    functionUses: 0
    functionsReached:
    - Self::Deserializer::deserialize_f64
    - de::Error::custom
    - Option::into_deserializer
    - Err
    - 1.parse::<f64>
    linkageType: ''
    returnType: Result
    signature: 'fn deserialize_f64<V>(self, visitor: V) -> Result<V::Value, Self::Error>whereV:
      Visitor<''de>,'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: is_empty
      Src: /src/opendal/core/core/src/raw/serde_util.rs:269,1
    - Dst: V::visit_none
      Src: /src/opendal/core/core/src/raw/serde_util.rs:270,1
    - Dst: V::visit_some
      Src: /src/opendal/core/core/src/raw/serde_util.rs:272,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - visitor
    argTypes:
    - V
    constantsTouched: []
    func_position:
      end: 274
      start: 265
    functionDepth: 4
    functionLinenumber: 265
    functionLinenumberEnd: 274
    functionName: Pair::deserialize_option
    functionSourceFile: /src/opendal/core/core/src/raw/serde_util.rs
    functionUses: 0
    functionsReached:
    - V::visit_some
    - V::visit_none
    - is_empty
    linkageType: ''
    returnType: Result
    signature: 'fn deserialize_option<V>(self, visitor: V) -> Result<V::Value, Self::Error>whereV:
      Visitor<''de>,'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: is_empty
      Src: /src/opendal/core/core/src/raw/serde_util.rs:281,1
    - Dst: SeqDeserializer::new
      Src: /src/opendal/core/core/src/raw/serde_util.rs:282,1
    - Dst: empty::<Pair>
      Src: /src/opendal/core/core/src/raw/serde_util.rs:282,1
    - Dst: Self::deserialize_seq
      Src: /src/opendal/core/core/src/raw/serde_util.rs:282,1
    - Dst: Result::map_err
      Src: /src/opendal/core/core/src/raw/serde_util.rs:282,1
    - Dst: de::Error::custom
      Src: /src/opendal/core/core/src/raw/serde_util.rs:285,1
    - Dst: split
      Src: /src/opendal/core/core/src/raw/serde_util.rs:291,1
    - Dst: map
      Src: /src/opendal/core/core/src/raw/serde_util.rs:291,1
    - Dst: Pair
      Src: /src/opendal/core/core/src/raw/serde_util.rs:294,1
    - Dst: clone
      Src: /src/opendal/core/core/src/raw/serde_util.rs:294,1
    - Dst: Result::trim
      Src: /src/opendal/core/core/src/raw/serde_util.rs:294,1
    - Dst: to_owned
      Src: /src/opendal/core/core/src/raw/serde_util.rs:294,1
    - Dst: SeqDeserializer::new
      Src: /src/opendal/core/core/src/raw/serde_util.rs:295,1
    - Dst: Self::deserialize_seq
      Src: /src/opendal/core/core/src/raw/serde_util.rs:295,1
    - Dst: Result::map_err
      Src: /src/opendal/core/core/src/raw/serde_util.rs:295,1
    - Dst: de::Error::custom
      Src: /src/opendal/core/core/src/raw/serde_util.rs:298,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 34
    argCount: 1
    argNames:
    - visitor
    argTypes:
    - V
    constantsTouched: []
    func_position:
      end: 304
      start: 276
    functionDepth: 4
    functionLinenumber: 276
    functionLinenumberEnd: 304
    functionName: Pair::deserialize_seq
    functionSourceFile: /src/opendal/core/core/src/raw/serde_util.rs
    functionUses: 0
    functionsReached:
    - Result::map_err
    - Pair
    - SeqDeserializer::new
    - split
    - clone
    - de::Error::custom
    - is_empty
    - map
    - Self::deserialize_seq
    - to_owned
    - empty::<Pair>
    - Result::trim
    linkageType: ''
    returnType: Result
    signature: 'fn deserialize_seq<V>(self, visitor: V) -> Result<V::Value, Self::Error>whereV:
      Visitor<''de>,'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: HashMap::new
      Src: /src/opendal/core/core/src/raw/serde_util.rs:351,1
    - Dst: Result::insert
      Src: /src/opendal/core/core/src/raw/serde_util.rs:352,1
    - Dst: Result::insert
      Src: /src/opendal/core/core/src/raw/serde_util.rs:353,1
    - Dst: Result::insert
      Src: /src/opendal/core/core/src/raw/serde_util.rs:354,1
    - Dst: Result::insert
      Src: /src/opendal/core/core/src/raw/serde_util.rs:355,1
    - Dst: Result::insert
      Src: /src/opendal/core/core/src/raw/serde_util.rs:356,1
    - Dst: Result::insert
      Src: /src/opendal/core/core/src/raw/serde_util.rs:357,1
    - Dst: Result::insert
      Src: /src/opendal/core/core/src/raw/serde_util.rs:358,1
    - Dst: Result::insert
      Src: /src/opendal/core/core/src/raw/serde_util.rs:359,1
    - Dst: Result::insert
      Src: /src/opendal/core/core/src/raw/serde_util.rs:360,1
    - Dst: Result::insert
      Src: /src/opendal/core/core/src/raw/serde_util.rs:361,1
    - Dst: Result::insert
      Src: /src/opendal/core/core/src/raw/serde_util.rs:362,1
    - Dst: Result::insert
      Src: /src/opendal/core/core/src/raw/serde_util.rs:363,1
    - Dst: Result::insert
      Src: /src/opendal/core/core/src/raw/serde_util.rs:364,1
    - Dst: Result::insert
      Src: /src/opendal/core/core/src/raw/serde_util.rs:365,1
    - Dst: Result::insert
      Src: /src/opendal/core/core/src/raw/serde_util.rs:366,1
    - Dst: Result::insert
      Src: /src/opendal/core/core/src/raw/serde_util.rs:367,1
    - Dst: Result::insert
      Src: /src/opendal/core/core/src/raw/serde_util.rs:368,1
    - Dst: Result::insert
      Src: /src/opendal/core/core/src/raw/serde_util.rs:369,1
    - Dst: Result::insert
      Src: /src/opendal/core/core/src/raw/serde_util.rs:370,1
    - Dst: Result::insert
      Src: /src/opendal/core/core/src/raw/serde_util.rs:371,1
    - Dst: Result::into_iter
      Src: /src/opendal/core/core/src/raw/serde_util.rs:372,1
    - Dst: map
      Src: /src/opendal/core/core/src/raw/serde_util.rs:372,1
    - Dst: Result::to_string
      Src: /src/opendal/core/core/src/raw/serde_util.rs:374,1
    - Dst: Result::to_string
      Src: /src/opendal/core/core/src/raw/serde_util.rs:374,1
    - Dst: collect
      Src: /src/opendal/core/core/src/raw/serde_util.rs:372,1
    - Dst: TestConfig::deserialize
      Src: /src/opendal/core/core/src/raw/serde_util.rs:377,1
    - Dst: ConfigDeserializer::new
      Src: /src/opendal/core/core/src/raw/serde_util.rs:377,1
    - Dst: unwrap
      Src: /src/opendal/core/core/src/raw/serde_util.rs:377,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 78
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 403
      start: 350
    functionDepth: 36
    functionLinenumber: 350
    functionLinenumberEnd: 403
    functionName: tests::test_config_deserializer
    functionSourceFile: /src/opendal/core/core/src/raw/serde_util.rs
    functionUses: 0
    functionsReached:
    - collect
    - Result::to_string
    - Result::into_iter
    - unwrap
    - Result::insert
    - map
    - TestConfig::deserialize
    - ConfigDeserializer::new
    - HashMap::new
    linkageType: ''
    returnType: void
    signature: fn test_config_deserializer()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: HashMap::new
      Src: /src/opendal/core/core/src/raw/serde_util.rs:407,1
    - Dst: Result::insert
      Src: /src/opendal/core/core/src/raw/serde_util.rs:408,1
    - Dst: Result::into_iter
      Src: /src/opendal/core/core/src/raw/serde_util.rs:409,1
    - Dst: map
      Src: /src/opendal/core/core/src/raw/serde_util.rs:409,1
    - Dst: Result::to_string
      Src: /src/opendal/core/core/src/raw/serde_util.rs:411,1
    - Dst: Result::to_string
      Src: /src/opendal/core/core/src/raw/serde_util.rs:411,1
    - Dst: collect
      Src: /src/opendal/core/core/src/raw/serde_util.rs:409,1
    - Dst: TestConfig::deserialize
      Src: /src/opendal/core/core/src/raw/serde_util.rs:414,1
    - Dst: ConfigDeserializer::new
      Src: /src/opendal/core/core/src/raw/serde_util.rs:414,1
    - Dst: unwrap
      Src: /src/opendal/core/core/src/raw/serde_util.rs:414,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 21
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 422
      start: 406
    functionDepth: 36
    functionLinenumber: 406
    functionLinenumberEnd: 422
    functionName: tests::test_part_config_deserializer
    functionSourceFile: /src/opendal/core/core/src/raw/serde_util.rs
    functionUses: 0
    functionsReached:
    - collect
    - Result::to_string
    - Result::into_iter
    - unwrap
    - Result::insert
    - map
    - TestConfig::deserialize
    - ConfigDeserializer::new
    - HashMap::new
    linkageType: ''
    returnType: void
    signature: fn test_part_config_deserializer()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: VecDeque::with_capacity
      Src: /src/opendal/core/core/src/raw/futures_util.rs:168,1
    - Dst: VecDeque::with_capacity
      Src: /src/opendal/core/core/src/raw/futures_util.rs:169,1
    - Dst: Arc::default
      Src: /src/opendal/core/core/src/raw/futures_util.rs:172,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 4
    argNames:
    - executor
    - concurrent
    - prefetch
    - factory
    argTypes:
    - Executor
    - usize
    - usize
    - fn(I) -> BoxedStaticFuture<(I, Result<O>)>
    constantsTouched: []
    func_position:
      end: 175
      start: 158
    functionDepth: 3
    functionLinenumber: 158
    functionLinenumberEnd: 175
    functionName: ConcurrentTasks::new
    functionSourceFile: /src/opendal/core/core/src/raw/futures_util.rs
    functionUses: 11
    functionsReached:
    - Arc::default
    - VecDeque::with_capacity
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(executor: Executor,concurrent: usize,prefetch: usize,factory:
      fn(I) -> BoxedStaticFuture<(I, Result<O>)>,) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 181
      start: 179
    functionDepth: 0
    functionLinenumber: 179
    functionLinenumberEnd: 181
    functionName: ConcurrentTasks::is_concurrent
    functionSourceFile: /src/opendal/core/core/src/raw/futures_util.rs
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: fn is_concurrent(&self) -> bool
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: clear
      Src: /src/opendal/core/core/src/raw/futures_util.rs:187,1
    - Dst: clear
      Src: /src/opendal/core/core/src/raw/futures_util.rs:188,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 189
      start: 186
    functionDepth: 1
    functionLinenumber: 186
    functionLinenumberEnd: 189
    functionName: ConcurrentTasks::clear
    functionSourceFile: /src/opendal/core/core/src/raw/futures_util.rs
    functionUses: 2
    functionsReached:
    - clear
    linkageType: ''
    returnType: void
    signature: pub fn clear(&mut self)
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: load
      Src: /src/opendal/core/core/src/raw/futures_util.rs:194,1
    - Dst: len
      Src: /src/opendal/core/core/src/raw/futures_util.rs:196,1
    - Dst: Self::min
      Src: /src/opendal/core/core/src/raw/futures_util.rs:196,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 197
      start: 193
    functionDepth: 35
    functionLinenumber: 193
    functionLinenumberEnd: 197
    functionName: ConcurrentTasks::has_remaining
    functionSourceFile: /src/opendal/core/core/src/raw/futures_util.rs
    functionUses: 1
    functionsReached:
    - len
    - Self::min
    - load
    linkageType: ''
    returnType: bool
    signature: pub fn has_remaining(&self) -> bool
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: is_empty
      Src: /src/opendal/core/core/src/raw/futures_util.rs:202,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 203
      start: 201
    functionDepth: 4
    functionLinenumber: 201
    functionLinenumberEnd: 203
    functionName: ConcurrentTasks::has_result
    functionSourceFile: /src/opendal/core/core/src/raw/futures_util.rs
    functionUses: 0
    functionsReached:
    - is_empty
    linkageType: ''
    returnType: bool
    signature: pub fn has_result(&self) -> bool
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: clone
      Src: /src/opendal/core/core/src/raw/futures_util.rs:207,1
    - Dst: inspect
      Src: /src/opendal/core/core/src/raw/futures_util.rs:209,1
    - Dst: Self::fetch_add
      Src: /src/opendal/core/core/src/raw/futures_util.rs:210,1
    - Dst: execute
      Src: /src/opendal/core/core/src/raw/futures_util.rs:213,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 15
    argCount: 1
    argNames:
    - input
    argTypes:
    - I
    constantsTouched: []
    func_position:
      end: 214
      start: 206
    functionDepth: 2
    functionLinenumber: 206
    functionLinenumberEnd: 214
    functionName: ConcurrentTasks::create_task
    functionSourceFile: /src/opendal/core/core/src/raw/futures_util.rs
    functionUses: 2
    functionsReached:
    - execute
    - inspect
    - Self::fetch_add
    - clone
    linkageType: ''
    returnType: Task
    signature: 'pub fn create_task(&self, input: I) -> Task<(I, Result<O>)>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/core/core/src/raw/futures_util.rs:223,1
    - Dst: Error::new
      Src: /src/opendal/core/core/src/raw/futures_util.rs:223,1
    - Dst: ConcurrentTasks::is_concurrent
      Src: /src/opendal/core/core/src/raw/futures_util.rs:230,1
    - Dst: push_back
      Src: /src/opendal/core/core/src/raw/futures_util.rs:234,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/raw/futures_util.rs:235,1
    - Dst: Err
      Src: /src/opendal/core/core/src/raw/futures_util.rs:238,1
    - Dst: ConcurrentTasks::has_remaining
      Src: /src/opendal/core/core/src/raw/futures_util.rs:242,1
    - Dst: front_mut
      Src: /src/opendal/core/core/src/raw/futures_util.rs:243,1
    - Dst: expect
      Src: /src/opendal/core/core/src/raw/futures_util.rs:243,1
    - Dst: fetch_sub
      Src: /src/opendal/core/core/src/raw/futures_util.rs:248,1
    - Dst: pop_front
      Src: /src/opendal/core/core/src/raw/futures_util.rs:252,1
    - Dst: push_back
      Src: /src/opendal/core/core/src/raw/futures_util.rs:253,1
    - Dst: Error::is_temporary
      Src: /src/opendal/core/core/src/raw/futures_util.rs:257,1
    - Dst: ConcurrentTasks::create_task
      Src: /src/opendal/core/core/src/raw/futures_util.rs:258,1
    - Dst: front_mut
      Src: /src/opendal/core/core/src/raw/futures_util.rs:259,1
    - Dst: expect
      Src: /src/opendal/core/core/src/raw/futures_util.rs:259,1
    - Dst: replace
      Src: /src/opendal/core/core/src/raw/futures_util.rs:259,1
    - Dst: ConcurrentTasks::clear
      Src: /src/opendal/core/core/src/raw/futures_util.rs:264,1
    - Dst: Err
      Src: /src/opendal/core/core/src/raw/futures_util.rs:267,1
    - Dst: push_back
      Src: /src/opendal/core/core/src/raw/futures_util.rs:272,1
    - Dst: ConcurrentTasks::create_task
      Src: /src/opendal/core/core/src/raw/futures_util.rs:272,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/raw/futures_util.rs:273,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 79
    argCount: 1
    argNames:
    - input
    argTypes:
    - I
    constantsTouched: []
    func_position:
      end: 274
      start: 221
    functionDepth: 36
    functionLinenumber: 221
    functionLinenumberEnd: 274
    functionName: ConcurrentTasks::execute
    functionSourceFile: /src/opendal/core/core/src/raw/futures_util.rs
    functionUses: 0
    functionsReached:
    - ConcurrentTasks::create_task
    - expect
    - Ok
    - pop_front
    - push_back
    - fetch_sub
    - replace
    - Error::new
    - Err
    - Error::is_temporary
    - ConcurrentTasks::clear
    - ConcurrentTasks::has_remaining
    - front_mut
    - ConcurrentTasks::is_concurrent
    linkageType: ''
    returnType: Result
    signature: 'pub async fn execute(&mut self, input: I) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Some
      Src: /src/opendal/core/core/src/raw/futures_util.rs:279,1
    - Dst: Err
      Src: /src/opendal/core/core/src/raw/futures_util.rs:279,1
    - Dst: Error::new
      Src: /src/opendal/core/core/src/raw/futures_util.rs:279,1
    - Dst: pop_front
      Src: /src/opendal/core/core/src/raw/futures_util.rs:285,1
    - Dst: Some
      Src: /src/opendal/core/core/src/raw/futures_util.rs:286,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/raw/futures_util.rs:286,1
    - Dst: front_mut
      Src: /src/opendal/core/core/src/raw/futures_util.rs:289,1
    - Dst: fetch_sub
      Src: /src/opendal/core/core/src/raw/futures_util.rs:291,1
    - Dst: pop_front
      Src: /src/opendal/core/core/src/raw/futures_util.rs:295,1
    - Dst: Some
      Src: /src/opendal/core/core/src/raw/futures_util.rs:296,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/raw/futures_util.rs:296,1
    - Dst: Error::is_temporary
      Src: /src/opendal/core/core/src/raw/futures_util.rs:300,1
    - Dst: ConcurrentTasks::create_task
      Src: /src/opendal/core/core/src/raw/futures_util.rs:301,1
    - Dst: front_mut
      Src: /src/opendal/core/core/src/raw/futures_util.rs:302,1
    - Dst: expect
      Src: /src/opendal/core/core/src/raw/futures_util.rs:302,1
    - Dst: replace
      Src: /src/opendal/core/core/src/raw/futures_util.rs:302,1
    - Dst: ConcurrentTasks::clear
      Src: /src/opendal/core/core/src/raw/futures_util.rs:307,1
    - Dst: Some
      Src: /src/opendal/core/core/src/raw/futures_util.rs:310,1
    - Dst: Err
      Src: /src/opendal/core/core/src/raw/futures_util.rs:310,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 56
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 316
      start: 277
    functionDepth: 36
    functionLinenumber: 277
    functionLinenumberEnd: 316
    functionName: ConcurrentTasks::next
    functionSourceFile: /src/opendal/core/core/src/raw/futures_util.rs
    functionUses: 0
    functionsReached:
    - ConcurrentTasks::create_task
    - expect
    - Ok
    - pop_front
    - fetch_sub
    - replace
    - Err
    - Error::new
    - Some
    - Error::is_temporary
    - ConcurrentTasks::clear
    - front_mut
    linkageType: ''
    returnType: Option
    signature: pub async fn next(&mut self) -> Option<Result<O>>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Executor::new
      Src: /src/opendal/core/core/src/raw/futures_util.rs:330,1
    - Dst: ConcurrentTasks::new
      Src: /src/opendal/core/core/src/raw/futures_util.rs:332,1
    - Dst: Box::pin
      Src: /src/opendal/core/core/src/raw/futures_util.rs:333,1
    - Dst: sleep
      Src: /src/opendal/core/core/src/raw/futures_util.rs:334,1
    - Dst: rand::rng
      Src: /src/opendal/core/core/src/raw/futures_util.rs:337,1
    - Dst: random_range
      Src: /src/opendal/core/core/src/raw/futures_util.rs:337,1
    - Dst: Err
      Src: /src/opendal/core/core/src/raw/futures_util.rs:340,1
    - Dst: Error::new
      Src: /src/opendal/core/core/src/raw/futures_util.rs:340,1
    - Dst: Self::set_temporary
      Src: /src/opendal/core/core/src/raw/futures_util.rs:340,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/raw/futures_util.rs:343,1
    - Dst: Duration::from_millis
      Src: /src/opendal/core/core/src/raw/futures_util.rs:351,1
    - Dst: rand::rng
      Src: /src/opendal/core/core/src/raw/futures_util.rs:351,1
    - Dst: random_range
      Src: /src/opendal/core/core/src/raw/futures_util.rs:351,1
    - Dst: execute
      Src: /src/opendal/core/core/src/raw/futures_util.rs:353,1
    - Dst: is_ok
      Src: /src/opendal/core/core/src/raw/futures_util.rs:354,1
    - Dst: next
      Src: /src/opendal/core/core/src/raw/futures_util.rs:361,1
    - Dst: transpose
      Src: /src/opendal/core/core/src/raw/futures_util.rs:361,1
    - Dst: push
      Src: /src/opendal/core/core/src/raw/futures_util.rs:362,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 58
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 369
      start: 329
    functionDepth: 33
    functionLinenumber: 329
    functionLinenumberEnd: 369
    functionName: tests::test_concurrent_tasks
    functionSourceFile: /src/opendal/core/core/src/raw/futures_util.rs
    functionUses: 0
    functionsReached:
    - next
    - transpose
    - is_ok
    - Ok
    - rand::rng
    - push
    - Executor::new
    - Err
    - Error::new
    - random_range
    - Self::set_temporary
    - ConcurrentTasks::new
    - sleep
    - execute
    - Box::pin
    - Duration::from_millis
    linkageType: ''
    returnType: void
    signature: async fn test_concurrent_tasks()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Executor::new
      Src: /src/opendal/core/core/src/raw/futures_util.rs:373,1
    - Dst: ConcurrentTasks::new
      Src: /src/opendal/core/core/src/raw/futures_util.rs:378,1
    - Dst: Box::pin
      Src: /src/opendal/core/core/src/raw/futures_util.rs:379,1
    - Dst: sleep
      Src: /src/opendal/core/core/src/raw/futures_util.rs:380,1
    - Dst: Duration::from_millis
      Src: /src/opendal/core/core/src/raw/futures_util.rs:380,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/raw/futures_util.rs:381,1
    - Dst: execute
      Src: /src/opendal/core/core/src/raw/futures_util.rs:391,1
    - Dst: unwrap
      Src: /src/opendal/core/core/src/raw/futures_util.rs:391,1
    - Dst: sleep
      Src: /src/opendal/core/core/src/raw/futures_util.rs:401,1
    - Dst: Duration::from_millis
      Src: /src/opendal/core/core/src/raw/futures_util.rs:401,1
    - Dst: execute
      Src: /src/opendal/core/core/src/raw/futures_util.rs:409,1
    - Dst: unwrap
      Src: /src/opendal/core/core/src/raw/futures_util.rs:409,1
    - Dst: next
      Src: /src/opendal/core/core/src/raw/futures_util.rs:419,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 43
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 427
      start: 372
    functionDepth: 33
    functionLinenumber: 372
    functionLinenumberEnd: 427
    functionName: tests::test_prefetch_backpressure
    functionSourceFile: /src/opendal/core/core/src/raw/futures_util.rs
    functionUses: 0
    functionsReached:
    - next
    - Ok
    - unwrap
    - Executor::new
    - ConcurrentTasks::new
    - sleep
    - execute
    - Box::pin
    - Duration::from_millis
    linkageType: ''
    returnType: void
    signature: async fn test_prefetch_backpressure()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Executor::new
      Src: /src/opendal/core/core/src/raw/futures_util.rs:431,1
    - Dst: ConcurrentTasks::new
      Src: /src/opendal/core/core/src/raw/futures_util.rs:435,1
    - Dst: Box::pin
      Src: /src/opendal/core/core/src/raw/futures_util.rs:436,1
    - Dst: sleep
      Src: /src/opendal/core/core/src/raw/futures_util.rs:437,1
    - Dst: Duration::from_millis
      Src: /src/opendal/core/core/src/raw/futures_util.rs:437,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/raw/futures_util.rs:438,1
    - Dst: execute
      Src: /src/opendal/core/core/src/raw/futures_util.rs:444,1
    - Dst: unwrap
      Src: /src/opendal/core/core/src/raw/futures_util.rs:444,1
    - Dst: next
      Src: /src/opendal/core/core/src/raw/futures_util.rs:454,1
    - Dst: execute
      Src: /src/opendal/core/core/src/raw/futures_util.rs:464,1
    - Dst: unwrap
      Src: /src/opendal/core/core/src/raw/futures_util.rs:464,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 32
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 468
      start: 430
    functionDepth: 33
    functionLinenumber: 430
    functionLinenumberEnd: 468
    functionName: tests::test_prefetch_zero
    functionSourceFile: /src/opendal/core/core/src/raw/futures_util.rs
    functionUses: 0
    functionsReached:
    - next
    - Ok
    - unwrap
    - Executor::new
    - ConcurrentTasks::new
    - sleep
    - execute
    - Box::pin
    - Duration::from_millis
    linkageType: ''
    returnType: void
    signature: async fn test_prefetch_zero()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Error::new
      Src: /src/opendal/core/core/src/raw/tokio_util.rs:23,1
    - Dst: Self::set_source
      Src: /src/opendal/core/core/src/raw/tokio_util.rs:23,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - e
    argTypes:
    - tokio::task::JoinError
    constantsTouched: []
    func_position:
      end: 24
      start: 22
    functionDepth: 36
    functionLinenumber: 22
    functionLinenumberEnd: 24
    functionName: new_task_join_error
    functionSourceFile: /src/opendal/core/core/src/raw/tokio_util.rs
    functionUses: 0
    functionsReached:
    - Self::set_source
    - Error::new
    linkageType: ''
    returnType: Error
    signature: 'pub fn new_task_join_error(e: tokio::task::JoinError) -> Error'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Error::kind
      Src: /src/opendal/core/core/src/raw/std_io_util.rs:32,1
    - Dst: Error::new
      Src: /src/opendal/core/core/src/raw/std_io_util.rs:42,1
    - Dst: Error::kind
      Src: /src/opendal/core/core/src/raw/std_io_util.rs:42,1
    - Dst: ErrorKind::to_string
      Src: /src/opendal/core/core/src/raw/std_io_util.rs:42,1
    - Dst: Self::set_source
      Src: /src/opendal/core/core/src/raw/std_io_util.rs:42,1
    - Dst: Error::set_temporary
      Src: /src/opendal/core/core/src/raw/std_io_util.rs:45,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 22
    argCount: 1
    argNames:
    - err
    argTypes:
    - io::Error
    constantsTouched: []
    func_position:
      end: 49
      start: 29
    functionDepth: 36
    functionLinenumber: 29
    functionLinenumberEnd: 49
    functionName: new_std_io_error
    functionSourceFile: /src/opendal/core/core/src/raw/std_io_util.rs
    functionUses: 13
    functionsReached:
    - Error::set_temporary
    - Error::new
    - Error::kind
    - Self::set_source
    - ErrorKind::to_string
    linkageType: ''
    returnType: Error
    signature: 'pub fn new_std_io_error(err: io::Error) -> Error'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Error::kind
      Src: /src/opendal/core/core/src/raw/std_io_util.rs:58,1
    - Dst: io::Error::new
      Src: /src/opendal/core/core/src/raw/std_io_util.rs:64,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - err
    argTypes:
    - Error
    constantsTouched: []
    func_position:
      end: 65
      start: 57
    functionDepth: 36
    functionLinenumber: 57
    functionLinenumberEnd: 65
    functionName: format_std_io_error
    functionSourceFile: /src/opendal/core/core/src/raw/std_io_util.rs
    functionUses: 3
    functionsReached:
    - io::Error::new
    - Error::kind
    linkageType: ''
    returnType: io::Error
    signature: 'pub(crate) fn format_std_io_error(err: Error) -> io::Error'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::read
      Src: /src/opendal/core/core/src/raw/enum_utils.rs:57,1
    - Dst: Result::read
      Src: /src/opendal/core/core/src/raw/enum_utils.rs:58,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 60
      start: 55
    functionDepth: 31
    functionLinenumber: 55
    functionLinenumberEnd: 60
    functionName: TwoWays::read
    functionSourceFile: /src/opendal/core/core/src/raw/enum_utils.rs
    functionUses: 0
    functionsReached:
    - Result::read
    linkageType: ''
    returnType: Result
    signature: async fn read(&mut self) -> Result<Buffer>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::write
      Src: /src/opendal/core/core/src/raw/enum_utils.rs:66,1
    - Dst: Result::write
      Src: /src/opendal/core/core/src/raw/enum_utils.rs:67,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 1
    argNames:
    - bs
    argTypes:
    - Buffer
    constantsTouched: []
    func_position:
      end: 69
      start: 64
    functionDepth: 36
    functionLinenumber: 64
    functionLinenumberEnd: 69
    functionName: TwoWays::write
    functionSourceFile: /src/opendal/core/core/src/raw/enum_utils.rs
    functionUses: 0
    functionsReached:
    - Result::write
    linkageType: ''
    returnType: Result
    signature: 'async fn write(&mut self, bs: Buffer) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::close
      Src: /src/opendal/core/core/src/raw/enum_utils.rs:96,1
    - Dst: Result::close
      Src: /src/opendal/core/core/src/raw/enum_utils.rs:97,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 99
      start: 94
    functionDepth: 2
    functionLinenumber: 94
    functionLinenumberEnd: 99
    functionName: TwoWays::close
    functionSourceFile: /src/opendal/core/core/src/raw/enum_utils.rs
    functionUses: 0
    functionsReached:
    - Result::close
    linkageType: ''
    returnType: Result
    signature: async fn close(&mut self) -> Result<Metadata>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::abort
      Src: /src/opendal/core/core/src/raw/enum_utils.rs:103,1
    - Dst: Result::abort
      Src: /src/opendal/core/core/src/raw/enum_utils.rs:104,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 106
      start: 101
    functionDepth: 31
    functionLinenumber: 101
    functionLinenumberEnd: 106
    functionName: TwoWays::abort
    functionSourceFile: /src/opendal/core/core/src/raw/enum_utils.rs
    functionUses: 0
    functionsReached:
    - Result::abort
    linkageType: ''
    returnType: Result
    signature: async fn abort(&mut self) -> Result<()>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::next
      Src: /src/opendal/core/core/src/raw/enum_utils.rs:112,1
    - Dst: Result::next
      Src: /src/opendal/core/core/src/raw/enum_utils.rs:113,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 115
      start: 110
    functionDepth: 2
    functionLinenumber: 110
    functionLinenumberEnd: 115
    functionName: TwoWays::next
    functionSourceFile: /src/opendal/core/core/src/raw/enum_utils.rs
    functionUses: 0
    functionsReached:
    - Result::next
    linkageType: ''
    returnType: Result
    signature: async fn next(&mut self) -> Result<Option<oio::Entry>>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::read
      Src: /src/opendal/core/core/src/raw/enum_utils.rs:135,1
    - Dst: Result::read
      Src: /src/opendal/core/core/src/raw/enum_utils.rs:136,1
    - Dst: Result::read
      Src: /src/opendal/core/core/src/raw/enum_utils.rs:137,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 139
      start: 133
    functionDepth: 31
    functionLinenumber: 133
    functionLinenumberEnd: 139
    functionName: ThreeWays::read
    functionSourceFile: /src/opendal/core/core/src/raw/enum_utils.rs
    functionUses: 0
    functionsReached:
    - Result::read
    linkageType: ''
    returnType: Result
    signature: async fn read(&mut self) -> Result<Buffer>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::write
      Src: /src/opendal/core/core/src/raw/enum_utils.rs:147,1
    - Dst: Result::write
      Src: /src/opendal/core/core/src/raw/enum_utils.rs:148,1
    - Dst: Result::write
      Src: /src/opendal/core/core/src/raw/enum_utils.rs:149,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 1
    argNames:
    - bs
    argTypes:
    - Buffer
    constantsTouched: []
    func_position:
      end: 151
      start: 145
    functionDepth: 36
    functionLinenumber: 145
    functionLinenumberEnd: 151
    functionName: ThreeWays::write
    functionSourceFile: /src/opendal/core/core/src/raw/enum_utils.rs
    functionUses: 0
    functionsReached:
    - Result::write
    linkageType: ''
    returnType: Result
    signature: 'async fn write(&mut self, bs: Buffer) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::close
      Src: /src/opendal/core/core/src/raw/enum_utils.rs:155,1
    - Dst: Result::close
      Src: /src/opendal/core/core/src/raw/enum_utils.rs:156,1
    - Dst: Result::close
      Src: /src/opendal/core/core/src/raw/enum_utils.rs:157,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 159
      start: 153
    functionDepth: 2
    functionLinenumber: 153
    functionLinenumberEnd: 159
    functionName: ThreeWays::close
    functionSourceFile: /src/opendal/core/core/src/raw/enum_utils.rs
    functionUses: 0
    functionsReached:
    - Result::close
    linkageType: ''
    returnType: Result
    signature: async fn close(&mut self) -> Result<Metadata>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::abort
      Src: /src/opendal/core/core/src/raw/enum_utils.rs:163,1
    - Dst: Result::abort
      Src: /src/opendal/core/core/src/raw/enum_utils.rs:164,1
    - Dst: Result::abort
      Src: /src/opendal/core/core/src/raw/enum_utils.rs:165,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 167
      start: 161
    functionDepth: 31
    functionLinenumber: 161
    functionLinenumberEnd: 167
    functionName: ThreeWays::abort
    functionSourceFile: /src/opendal/core/core/src/raw/enum_utils.rs
    functionUses: 0
    functionsReached:
    - Result::abort
    linkageType: ''
    returnType: Result
    signature: async fn abort(&mut self) -> Result<()>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::next
      Src: /src/opendal/core/core/src/raw/enum_utils.rs:173,1
    - Dst: Result::next
      Src: /src/opendal/core/core/src/raw/enum_utils.rs:174,1
    - Dst: Result::next
      Src: /src/opendal/core/core/src/raw/enum_utils.rs:175,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 177
      start: 171
    functionDepth: 2
    functionLinenumber: 171
    functionLinenumberEnd: 177
    functionName: ThreeWays::next
    functionSourceFile: /src/opendal/core/core/src/raw/enum_utils.rs
    functionUses: 0
    functionsReached:
    - Result::next
    linkageType: ''
    returnType: Result
    signature: async fn next(&mut self) -> Result<Option<oio::Entry>>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::read
      Src: /src/opendal/core/core/src/raw/enum_utils.rs:203,1
    - Dst: Result::read
      Src: /src/opendal/core/core/src/raw/enum_utils.rs:204,1
    - Dst: Result::read
      Src: /src/opendal/core/core/src/raw/enum_utils.rs:205,1
    - Dst: Result::read
      Src: /src/opendal/core/core/src/raw/enum_utils.rs:206,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 208
      start: 201
    functionDepth: 31
    functionLinenumber: 201
    functionLinenumberEnd: 208
    functionName: FourWays::read
    functionSourceFile: /src/opendal/core/core/src/raw/enum_utils.rs
    functionUses: 0
    functionsReached:
    - Result::read
    linkageType: ''
    returnType: Result
    signature: async fn read(&mut self) -> Result<Buffer>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::next
      Src: /src/opendal/core/core/src/raw/enum_utils.rs:220,1
    - Dst: Result::next
      Src: /src/opendal/core/core/src/raw/enum_utils.rs:221,1
    - Dst: Result::next
      Src: /src/opendal/core/core/src/raw/enum_utils.rs:222,1
    - Dst: Result::next
      Src: /src/opendal/core/core/src/raw/enum_utils.rs:223,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 225
      start: 218
    functionDepth: 2
    functionLinenumber: 218
    functionLinenumberEnd: 225
    functionName: FourWays::next
    functionSourceFile: /src/opendal/core/core/src/raw/enum_utils.rs
    functionUses: 0
    functionsReached:
    - Result::next
    linkageType: ''
    returnType: Result
    signature: async fn next(&mut self) -> Result<Option<oio::Entry>>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::debug_struct
      Src: /src/opendal/core/core/src/raw/accessor.rs:38,1
    - Dst: field
      Src: /src/opendal/core/core/src/raw/accessor.rs:38,1
    - Dst: ServiceInfo::scheme
      Src: /src/opendal/core/core/src/raw/accessor.rs:39,1
    - Dst: field
      Src: /src/opendal/core/core/src/raw/accessor.rs:38,1
    - Dst: ServiceInfo::root
      Src: /src/opendal/core/core/src/raw/accessor.rs:40,1
    - Dst: field
      Src: /src/opendal/core/core/src/raw/accessor.rs:38,1
    - Dst: ServiceInfo::name
      Src: /src/opendal/core/core/src/raw/accessor.rs:41,1
    - Dst: finish_non_exhaustive
      Src: /src/opendal/core/core/src/raw/accessor.rs:38,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 19
    argCount: 1
    argNames:
    - f
    argTypes:
    - '&mut std::fmt::Formatter<''_>'
    constantsTouched: []
    func_position:
      end: 43
      start: 37
    functionDepth: 5
    functionLinenumber: 37
    functionLinenumberEnd: 43
    functionName: ServiceInfo::fmt
    functionSourceFile: /src/opendal/core/core/src/raw/accessor.rs
    functionUses: 0
    functionsReached:
    - field
    - ServiceInfo::root
    - finish_non_exhaustive
    - ServiceInfo::name
    - Result::debug_struct
    - ServiceInfo::scheme
    linkageType: ''
    returnType: std::fmt::Result
    signature: 'fn fmt(&self, f: &mut std::fmt::Formatter<''_>) -> std::fmt::Result'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Arc::from
      Src: /src/opendal/core/core/src/raw/accessor.rs:51,1
    - Dst: Result::as_ref
      Src: /src/opendal/core/core/src/raw/accessor.rs:51,1
    - Dst: Arc::from
      Src: /src/opendal/core/core/src/raw/accessor.rs:52,1
    - Dst: Result::as_ref
      Src: /src/opendal/core/core/src/raw/accessor.rs:52,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 3
    argNames:
    - scheme
    - root
    - name
    argTypes:
    - '&''static str'
    - impl AsRef<str>
    - impl AsRef<str>
    constantsTouched: []
    func_position:
      end: 54
      start: 48
    functionDepth: 32
    functionLinenumber: 48
    functionLinenumberEnd: 54
    functionName: ServiceInfo::new
    functionSourceFile: /src/opendal/core/core/src/raw/accessor.rs
    functionUses: 76
    functionsReached:
    - Result::as_ref
    - Arc::from
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(scheme: &''static str, root: impl AsRef<str>, name: impl
      AsRef<str>) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self::new
      Src: /src/opendal/core/core/src/raw/accessor.rs:58,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - scheme
    argTypes:
    - '&''static str'
    constantsTouched: []
    func_position:
      end: 59
      start: 57
    functionDepth: 2
    functionLinenumber: 57
    functionLinenumberEnd: 59
    functionName: ServiceInfo::with_scheme
    functionSourceFile: /src/opendal/core/core/src/raw/accessor.rs
    functionUses: 4
    functionsReached:
    - Self::new
    linkageType: ''
    returnType: Self
    signature: 'pub fn with_scheme(scheme: &''static str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Arc::from
      Src: /src/opendal/core/core/src/raw/accessor.rs:65,1
    - Dst: Result::as_ref
      Src: /src/opendal/core/core/src/raw/accessor.rs:65,1
    - Dst: clone
      Src: /src/opendal/core/core/src/raw/accessor.rs:66,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - root
    argTypes:
    - impl AsRef<str>
    constantsTouched: []
    func_position:
      end: 68
      start: 62
    functionDepth: 32
    functionLinenumber: 62
    functionLinenumberEnd: 68
    functionName: ServiceInfo::with_root
    functionSourceFile: /src/opendal/core/core/src/raw/accessor.rs
    functionUses: 0
    functionsReached:
    - Result::as_ref
    - clone
    - Arc::from
    linkageType: ''
    returnType: Self
    signature: 'pub fn with_root(&self, root: impl AsRef<str>) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 73
      start: 71
    functionDepth: 0
    functionLinenumber: 71
    functionLinenumberEnd: 73
    functionName: ServiceInfo::scheme
    functionSourceFile: /src/opendal/core/core/src/raw/accessor.rs
    functionUses: 37
    functionsReached: []
    linkageType: ''
    returnType: '&''static str'
    signature: pub fn scheme(&self) -> &'static str
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: clone
      Src: /src/opendal/core/core/src/raw/accessor.rs:77,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 78
      start: 76
    functionDepth: 2
    functionLinenumber: 76
    functionLinenumberEnd: 78
    functionName: ServiceInfo::root
    functionSourceFile: /src/opendal/core/core/src/raw/accessor.rs
    functionUses: 4
    functionsReached:
    - clone
    linkageType: ''
    returnType: Arc
    signature: pub fn root(&self) -> Arc<str>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: clone
      Src: /src/opendal/core/core/src/raw/accessor.rs:89,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 90
      start: 88
    functionDepth: 2
    functionLinenumber: 88
    functionLinenumberEnd: 90
    functionName: ServiceInfo::name
    functionSourceFile: /src/opendal/core/core/src/raw/accessor.rs
    functionUses: 6
    functionsReached:
    - clone
    linkageType: ''
    returnType: Arc
    signature: pub fn name(&self) -> Arc<str>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: S::info
      Src: /src/opendal/core/core/src/raw/accessor.rs:327,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 328
      start: 326
    functionDepth: 2
    functionLinenumber: 326
    functionLinenumberEnd: 328
    functionName: S::info_dyn
    functionSourceFile: /src/opendal/core/core/src/raw/accessor.rs
    functionUses: 0
    functionsReached:
    - S::info
    linkageType: ''
    returnType: ServiceInfo
    signature: fn info_dyn(&self) -> ServiceInfo
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: S::capability
      Src: /src/opendal/core/core/src/raw/accessor.rs:331,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 332
      start: 330
    functionDepth: 2
    functionLinenumber: 330
    functionLinenumberEnd: 332
    functionName: S::capability_dyn
    functionSourceFile: /src/opendal/core/core/src/raw/accessor.rs
    functionUses: 0
    functionsReached:
    - S::capability
    linkageType: ''
    returnType: Capability
    signature: fn capability_dyn(&self) -> Capability
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Box::pin
      Src: /src/opendal/core/core/src/raw/accessor.rs:340,1
    - Dst: S::create_dir
      Src: /src/opendal/core/core/src/raw/accessor.rs:340,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&''a OperationContext'
    - '&''a str'
    - OpCreateDir
    constantsTouched: []
    func_position:
      end: 341
      start: 334
    functionDepth: 35
    functionLinenumber: 334
    functionLinenumberEnd: 341
    functionName: S::create_dir_dyn
    functionSourceFile: /src/opendal/core/core/src/raw/accessor.rs
    functionUses: 0
    functionsReached:
    - Box::pin
    - S::create_dir
    linkageType: ''
    returnType: BoxedFuture
    signature: 'fn create_dir_dyn<''a>(&''a self,ctx: &''a OperationContext,path:
      &''a str,args: OpCreateDir,) -> BoxedFuture<''a, Result<RpCreateDir>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Box::pin
      Src: /src/opendal/core/core/src/raw/accessor.rs:349,1
    - Dst: S::stat
      Src: /src/opendal/core/core/src/raw/accessor.rs:349,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&''a OperationContext'
    - '&''a str'
    - OpStat
    constantsTouched: []
    func_position:
      end: 350
      start: 343
    functionDepth: 31
    functionLinenumber: 343
    functionLinenumberEnd: 350
    functionName: S::stat_dyn
    functionSourceFile: /src/opendal/core/core/src/raw/accessor.rs
    functionUses: 0
    functionsReached:
    - Box::pin
    - S::stat
    linkageType: ''
    returnType: BoxedFuture
    signature: 'fn stat_dyn<''a>(&''a self,ctx: &''a OperationContext,path: &''a str,args:
      OpStat,) -> BoxedFuture<''a, Result<RpStat>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/core/core/src/raw/accessor.rs:358,1
    - Dst: Box::new
      Src: /src/opendal/core/core/src/raw/accessor.rs:358,1
    - Dst: S::read
      Src: /src/opendal/core/core/src/raw/accessor.rs:358,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&''a OperationContext'
    - '&''a str'
    - OpRead
    constantsTouched: []
    func_position:
      end: 359
      start: 352
    functionDepth: 31
    functionLinenumber: 352
    functionLinenumberEnd: 359
    functionName: S::read_dyn
    functionSourceFile: /src/opendal/core/core/src/raw/accessor.rs
    functionUses: 0
    functionsReached:
    - Box::new
    - Ok
    - S::read
    linkageType: ''
    returnType: Result
    signature: 'fn read_dyn<''a>(&''a self,ctx: &''a OperationContext,path: &''a str,args:
      OpRead,) -> Result<oio::Reader>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/core/core/src/raw/accessor.rs:367,1
    - Dst: Box::new
      Src: /src/opendal/core/core/src/raw/accessor.rs:367,1
    - Dst: S::write
      Src: /src/opendal/core/core/src/raw/accessor.rs:367,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&''a OperationContext'
    - '&''a str'
    - OpWrite
    constantsTouched: []
    func_position:
      end: 368
      start: 361
    functionDepth: 36
    functionLinenumber: 361
    functionLinenumberEnd: 368
    functionName: S::write_dyn
    functionSourceFile: /src/opendal/core/core/src/raw/accessor.rs
    functionUses: 0
    functionsReached:
    - Box::new
    - S::write
    - Ok
    linkageType: ''
    returnType: Result
    signature: 'fn write_dyn<''a>(&''a self,ctx: &''a OperationContext,path: &''a
      str,args: OpWrite,) -> Result<oio::Writer>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/core/core/src/raw/accessor.rs:371,1
    - Dst: Box::new
      Src: /src/opendal/core/core/src/raw/accessor.rs:371,1
    - Dst: S::delete
      Src: /src/opendal/core/core/src/raw/accessor.rs:371,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - '&''a OperationContext'
    constantsTouched: []
    func_position:
      end: 372
      start: 370
    functionDepth: 32
    functionLinenumber: 370
    functionLinenumberEnd: 372
    functionName: S::delete_dyn
    functionSourceFile: /src/opendal/core/core/src/raw/accessor.rs
    functionUses: 0
    functionsReached:
    - Box::new
    - S::delete
    - Ok
    linkageType: ''
    returnType: Result
    signature: 'fn delete_dyn<''a>(&''a self, ctx: &''a OperationContext) -> Result<oio::Deleter>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/core/core/src/raw/accessor.rs:380,1
    - Dst: Box::new
      Src: /src/opendal/core/core/src/raw/accessor.rs:380,1
    - Dst: S::list
      Src: /src/opendal/core/core/src/raw/accessor.rs:380,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&''a OperationContext'
    - '&''a str'
    - OpList
    constantsTouched: []
    func_position:
      end: 381
      start: 374
    functionDepth: 2
    functionLinenumber: 374
    functionLinenumberEnd: 381
    functionName: S::list_dyn
    functionSourceFile: /src/opendal/core/core/src/raw/accessor.rs
    functionUses: 0
    functionsReached:
    - Box::new
    - S::list
    - Ok
    linkageType: ''
    returnType: Result
    signature: 'fn list_dyn<''a>(&''a self,ctx: &''a OperationContext,path: &''a str,args:
      OpList,) -> Result<oio::Lister>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/core/core/src/raw/accessor.rs:391,1
    - Dst: Box::new
      Src: /src/opendal/core/core/src/raw/accessor.rs:391,1
    - Dst: S::copy
      Src: /src/opendal/core/core/src/raw/accessor.rs:391,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 5
    argNames:
    - ctx
    - from
    - to
    - args
    - opts
    argTypes:
    - '&''a OperationContext'
    - '&''a str'
    - '&''a str'
    - OpCopy
    - OpCopier
    constantsTouched: []
    func_position:
      end: 392
      start: 383
    functionDepth: 34
    functionLinenumber: 383
    functionLinenumberEnd: 392
    functionName: S::copy_dyn
    functionSourceFile: /src/opendal/core/core/src/raw/accessor.rs
    functionUses: 0
    functionsReached:
    - Box::new
    - S::copy
    - Ok
    linkageType: ''
    returnType: Result
    signature: 'fn copy_dyn<''a>(&''a self,ctx: &''a OperationContext,from: &''a str,to:
      &''a str,args: OpCopy,opts: OpCopier,) -> Result<oio::Copier>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Box::pin
      Src: /src/opendal/core/core/src/raw/accessor.rs:401,1
    - Dst: S::rename
      Src: /src/opendal/core/core/src/raw/accessor.rs:401,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 4
    argNames:
    - ctx
    - from
    - to
    - args
    argTypes:
    - '&''a OperationContext'
    - '&''a str'
    - '&''a str'
    - OpRename
    constantsTouched: []
    func_position:
      end: 402
      start: 394
    functionDepth: 2
    functionLinenumber: 394
    functionLinenumberEnd: 402
    functionName: S::rename_dyn
    functionSourceFile: /src/opendal/core/core/src/raw/accessor.rs
    functionUses: 0
    functionsReached:
    - Box::pin
    - S::rename
    linkageType: ''
    returnType: BoxedFuture
    signature: 'fn rename_dyn<''a>(&''a self,ctx: &''a OperationContext,from: &''a
      str,to: &''a str,args: OpRename,) -> BoxedFuture<''a, Result<RpRename>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Box::pin
      Src: /src/opendal/core/core/src/raw/accessor.rs:410,1
    - Dst: S::presign
      Src: /src/opendal/core/core/src/raw/accessor.rs:410,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&''a OperationContext'
    - '&''a str'
    - OpPresign
    constantsTouched: []
    func_position:
      end: 411
      start: 404
    functionDepth: 2
    functionLinenumber: 404
    functionLinenumberEnd: 411
    functionName: S::presign_dyn
    functionSourceFile: /src/opendal/core/core/src/raw/accessor.rs
    functionUses: 0
    functionsReached:
    - Box::pin
    - S::presign
    linkageType: ''
    returnType: BoxedFuture
    signature: 'fn presign_dyn<''a>(&''a self,ctx: &''a OperationContext,path: &''a
      str,args: OpPresign,) -> BoxedFuture<''a, Result<RpPresign>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Arc::as_ref
      Src: /src/opendal/core/core/src/raw/accessor.rs:423,1
    - Dst: '&[&''static str]::info_dyn'
      Src: /src/opendal/core/core/src/raw/accessor.rs:423,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 424
      start: 422
    functionDepth: 3
    functionLinenumber: 422
    functionLinenumberEnd: 424
    functionName: Arc::info
    functionSourceFile: /src/opendal/core/core/src/raw/accessor.rs
    functionUses: 9
    functionsReached:
    - Arc::as_ref
    - '&[&''static str]::info_dyn'
    linkageType: ''
    returnType: ServiceInfo
    signature: fn info(&self) -> ServiceInfo
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Arc::as_ref
      Src: /src/opendal/core/core/src/raw/accessor.rs:427,1
    - Dst: '&[&''static str]::capability_dyn'
      Src: /src/opendal/core/core/src/raw/accessor.rs:427,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 428
      start: 426
    functionDepth: 3
    functionLinenumber: 426
    functionLinenumberEnd: 428
    functionName: Arc::capability
    functionSourceFile: /src/opendal/core/core/src/raw/accessor.rs
    functionUses: 0
    functionsReached:
    - '&[&''static str]::capability_dyn'
    - Arc::as_ref
    linkageType: ''
    returnType: Capability
    signature: fn capability(&self) -> Capability
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Arc::as_ref
      Src: /src/opendal/core/core/src/raw/accessor.rs:436,1
    - Dst: '&[&''static str]::create_dir_dyn'
      Src: /src/opendal/core/core/src/raw/accessor.rs:436,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpCreateDir
    constantsTouched: []
    func_position:
      end: 437
      start: 430
    functionDepth: 36
    functionLinenumber: 430
    functionLinenumberEnd: 437
    functionName: Arc::create_dir
    functionSourceFile: /src/opendal/core/core/src/raw/accessor.rs
    functionUses: 0
    functionsReached:
    - Arc::as_ref
    - '&[&''static str]::create_dir_dyn'
    linkageType: ''
    returnType: Result
    signature: 'async fn create_dir(&self,ctx: &OperationContext,path: &str,args:
      OpCreateDir,) -> Result<RpCreateDir>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Arc::as_ref
      Src: /src/opendal/core/core/src/raw/accessor.rs:440,1
    - Dst: '&[&''static str]::stat_dyn'
      Src: /src/opendal/core/core/src/raw/accessor.rs:440,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpStat
    constantsTouched: []
    func_position:
      end: 441
      start: 439
    functionDepth: 32
    functionLinenumber: 439
    functionLinenumberEnd: 441
    functionName: Arc::stat
    functionSourceFile: /src/opendal/core/core/src/raw/accessor.rs
    functionUses: 0
    functionsReached:
    - Arc::as_ref
    - '&[&''static str]::stat_dyn'
    linkageType: ''
    returnType: Result
    signature: 'async fn stat(&self, ctx: &OperationContext, path: &str, args: OpStat)
      -> Result<RpStat>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Arc::as_ref
      Src: /src/opendal/core/core/src/raw/accessor.rs:444,1
    - Dst: '&[&''static str]::read_dyn'
      Src: /src/opendal/core/core/src/raw/accessor.rs:444,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpRead
    constantsTouched: []
    func_position:
      end: 445
      start: 443
    functionDepth: 32
    functionLinenumber: 443
    functionLinenumberEnd: 445
    functionName: Arc::read
    functionSourceFile: /src/opendal/core/core/src/raw/accessor.rs
    functionUses: 0
    functionsReached:
    - Arc::as_ref
    - '&[&''static str]::read_dyn'
    linkageType: ''
    returnType: Result
    signature: 'fn read(&self, ctx: &OperationContext, path: &str, args: OpRead) ->
      Result<oio::Reader>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Arc::as_ref
      Src: /src/opendal/core/core/src/raw/accessor.rs:448,1
    - Dst: '&[&''static str]::write_dyn'
      Src: /src/opendal/core/core/src/raw/accessor.rs:448,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpWrite
    constantsTouched: []
    func_position:
      end: 449
      start: 447
    functionDepth: 37
    functionLinenumber: 447
    functionLinenumberEnd: 449
    functionName: Arc::write
    functionSourceFile: /src/opendal/core/core/src/raw/accessor.rs
    functionUses: 0
    functionsReached:
    - Arc::as_ref
    - '&[&''static str]::write_dyn'
    linkageType: ''
    returnType: Result
    signature: 'fn write(&self, ctx: &OperationContext, path: &str, args: OpWrite)
      -> Result<oio::Writer>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Arc::as_ref
      Src: /src/opendal/core/core/src/raw/accessor.rs:452,1
    - Dst: '&[&''static str]::delete_dyn'
      Src: /src/opendal/core/core/src/raw/accessor.rs:452,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - '&OperationContext'
    constantsTouched: []
    func_position:
      end: 453
      start: 451
    functionDepth: 33
    functionLinenumber: 451
    functionLinenumberEnd: 453
    functionName: Arc::delete
    functionSourceFile: /src/opendal/core/core/src/raw/accessor.rs
    functionUses: 17
    functionsReached:
    - '&[&''static str]::delete_dyn'
    - Arc::as_ref
    linkageType: ''
    returnType: Result
    signature: 'fn delete(&self, ctx: &OperationContext) -> Result<oio::Deleter>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Arc::as_ref
      Src: /src/opendal/core/core/src/raw/accessor.rs:456,1
    - Dst: '&[&''static str]::list_dyn'
      Src: /src/opendal/core/core/src/raw/accessor.rs:456,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpList
    constantsTouched: []
    func_position:
      end: 457
      start: 455
    functionDepth: 3
    functionLinenumber: 455
    functionLinenumberEnd: 457
    functionName: Arc::list
    functionSourceFile: /src/opendal/core/core/src/raw/accessor.rs
    functionUses: 3
    functionsReached:
    - '&[&''static str]::list_dyn'
    - Arc::as_ref
    linkageType: ''
    returnType: Result
    signature: 'fn list(&self, ctx: &OperationContext, path: &str, args: OpList) ->
      Result<oio::Lister>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Arc::as_ref
      Src: /src/opendal/core/core/src/raw/accessor.rs:467,1
    - Dst: '&[&''static str]::copy_dyn'
      Src: /src/opendal/core/core/src/raw/accessor.rs:467,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 5
    argNames:
    - ctx
    - from
    - to
    - args
    - opts
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    - OpCopy
    - OpCopier
    constantsTouched: []
    func_position:
      end: 468
      start: 459
    functionDepth: 35
    functionLinenumber: 459
    functionLinenumberEnd: 468
    functionName: Arc::copy
    functionSourceFile: /src/opendal/core/core/src/raw/accessor.rs
    functionUses: 0
    functionsReached:
    - Arc::as_ref
    - '&[&''static str]::copy_dyn'
    linkageType: ''
    returnType: Result
    signature: 'fn copy(&self,ctx: &OperationContext,from: &str,to: &str,args: OpCopy,opts:
      OpCopier,) -> Result<oio::Copier>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Arc::as_ref
      Src: /src/opendal/core/core/src/raw/accessor.rs:477,1
    - Dst: '&[&''static str]::rename_dyn'
      Src: /src/opendal/core/core/src/raw/accessor.rs:477,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 4
    argNames:
    - ctx
    - from
    - to
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    - OpRename
    constantsTouched: []
    func_position:
      end: 478
      start: 470
    functionDepth: 3
    functionLinenumber: 470
    functionLinenumberEnd: 478
    functionName: Arc::rename
    functionSourceFile: /src/opendal/core/core/src/raw/accessor.rs
    functionUses: 0
    functionsReached:
    - Arc::as_ref
    - '&[&''static str]::rename_dyn'
    linkageType: ''
    returnType: Result
    signature: 'async fn rename(&self,ctx: &OperationContext,from: &str,to: &str,args:
      OpRename,) -> Result<RpRename>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Arc::as_ref
      Src: /src/opendal/core/core/src/raw/accessor.rs:486,1
    - Dst: '&[&''static str]::presign_dyn'
      Src: /src/opendal/core/core/src/raw/accessor.rs:486,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpPresign
    constantsTouched: []
    func_position:
      end: 487
      start: 480
    functionDepth: 3
    functionLinenumber: 480
    functionLinenumberEnd: 487
    functionName: Arc::presign
    functionSourceFile: /src/opendal/core/core/src/raw/accessor.rs
    functionUses: 0
    functionsReached:
    - Arc::as_ref
    - '&[&''static str]::presign_dyn'
    linkageType: ''
    returnType: Result
    signature: 'async fn presign(&self,ctx: &OperationContext,path: &str,args: OpPresign,)
      -> Result<RpPresign>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: ServiceInfo::with_scheme
      Src: /src/opendal/core/core/src/raw/accessor.rs:499,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 500
      start: 498
    functionDepth: 3
    functionLinenumber: 498
    functionLinenumberEnd: 500
    functionName: ()::info
    functionSourceFile: /src/opendal/core/core/src/raw/accessor.rs
    functionUses: 0
    functionsReached:
    - ServiceInfo::with_scheme
    linkageType: ''
    returnType: ServiceInfo
    signature: fn info(&self) -> ServiceInfo
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Capability::default
      Src: /src/opendal/core/core/src/raw/accessor.rs:503,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 504
      start: 502
    functionDepth: 3
    functionLinenumber: 502
    functionLinenumberEnd: 504
    functionName: ()::capability
    functionSourceFile: /src/opendal/core/core/src/raw/accessor.rs
    functionUses: 0
    functionsReached:
    - Capability::default
    linkageType: ''
    returnType: Capability
    signature: fn capability(&self) -> Capability
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/core/core/src/raw/accessor.rs:512,1
    - Dst: Error::new
      Src: /src/opendal/core/core/src/raw/accessor.rs:512,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames: []
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpCreateDir
    constantsTouched: []
    func_position:
      end: 516
      start: 506
    functionDepth: 36
    functionLinenumber: 506
    functionLinenumberEnd: 516
    functionName: ()::create_dir
    functionSourceFile: /src/opendal/core/core/src/raw/accessor.rs
    functionUses: 0
    functionsReached:
    - Error::new
    - Err
    linkageType: ''
    returnType: Result
    signature: 'async fn create_dir(&self,_: &OperationContext,_: &str,_: OpCreateDir,)
      -> Result<RpCreateDir>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/core/core/src/raw/accessor.rs:519,1
    - Dst: Error::new
      Src: /src/opendal/core/core/src/raw/accessor.rs:519,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames: []
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpStat
    constantsTouched: []
    func_position:
      end: 523
      start: 518
    functionDepth: 36
    functionLinenumber: 518
    functionLinenumberEnd: 523
    functionName: ()::stat
    functionSourceFile: /src/opendal/core/core/src/raw/accessor.rs
    functionUses: 0
    functionsReached:
    - Error::new
    - Err
    linkageType: ''
    returnType: Result
    signature: 'async fn stat(&self, _: &OperationContext, _: &str, _: OpStat) ->
      Result<RpStat>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/core/core/src/raw/oio/read/api.rs:131,1
    - Dst: Error::new
      Src: /src/opendal/core/core/src/raw/oio/read/api.rs:131,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 135
      start: 130
    functionDepth: 36
    functionLinenumber: 130
    functionLinenumberEnd: 135
    functionName: ()::read
    functionSourceFile: /src/opendal/core/core/src/raw/oio/read/api.rs
    functionUses: 0
    functionsReached:
    - Error::new
    - Err
    linkageType: ''
    returnType: Result
    signature: async fn read(&mut self) -> Result<Buffer>
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 1
    argNames: []
    argTypes:
    - Buffer
    constantsTouched: []
    func_position:
      end: 45
      start: 43
    functionDepth: 0
    functionLinenumber: 43
    functionLinenumberEnd: 45
    functionName: ()::write
    functionSourceFile: /src/opendal/core/core/src/raw/oio/write/api.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Result
    signature: 'async fn write(&mut self, _: Buffer) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/core/core/src/raw/oio/delete/api.rs:51,1
    - Dst: Error::new
      Src: /src/opendal/core/core/src/raw/oio/delete/api.rs:51,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames: []
    argTypes:
    - '&str'
    - OpDelete
    constantsTouched: []
    func_position:
      end: 55
      start: 50
    functionDepth: 36
    functionLinenumber: 50
    functionLinenumberEnd: 55
    functionName: ()::delete
    functionSourceFile: /src/opendal/core/core/src/raw/oio/delete/api.rs
    functionUses: 0
    functionsReached:
    - Error::new
    - Err
    linkageType: ''
    returnType: Result
    signature: 'async fn delete(&mut self, _: &str, _: OpDelete) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/core/core/src/raw/accessor.rs:547,1
    - Dst: Error::new
      Src: /src/opendal/core/core/src/raw/accessor.rs:547,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames: []
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpList
    constantsTouched: []
    func_position:
      end: 551
      start: 546
    functionDepth: 36
    functionLinenumber: 546
    functionLinenumberEnd: 551
    functionName: ()::list
    functionSourceFile: /src/opendal/core/core/src/raw/accessor.rs
    functionUses: 0
    functionsReached:
    - Error::new
    - Err
    linkageType: ''
    returnType: Result
    signature: 'fn list(&self, _: &OperationContext, _: &str, _: OpList) -> Result<Self::Lister>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/core/core/src/raw/accessor.rs:561,1
    - Dst: Error::new
      Src: /src/opendal/core/core/src/raw/accessor.rs:561,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 5
    argNames: []
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    - OpCopy
    - OpCopier
    constantsTouched: []
    func_position:
      end: 565
      start: 553
    functionDepth: 36
    functionLinenumber: 553
    functionLinenumberEnd: 565
    functionName: ()::copy
    functionSourceFile: /src/opendal/core/core/src/raw/accessor.rs
    functionUses: 0
    functionsReached:
    - Error::new
    - Err
    linkageType: ''
    returnType: Result
    signature: 'fn copy(&self,_: &OperationContext,_: &str,_: &str,_: OpCopy,_: OpCopier,)
      -> Result<Self::Copier>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/core/core/src/raw/accessor.rs:574,1
    - Dst: Error::new
      Src: /src/opendal/core/core/src/raw/accessor.rs:574,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames: []
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    - OpRename
    constantsTouched: []
    func_position:
      end: 578
      start: 567
    functionDepth: 36
    functionLinenumber: 567
    functionLinenumberEnd: 578
    functionName: ()::rename
    functionSourceFile: /src/opendal/core/core/src/raw/accessor.rs
    functionUses: 0
    functionsReached:
    - Error::new
    - Err
    linkageType: ''
    returnType: Result
    signature: 'async fn rename(&self,_: &OperationContext,_: &str,_: &str,_: OpRename,)
      -> Result<RpRename>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/core/core/src/raw/accessor.rs:581,1
    - Dst: Error::new
      Src: /src/opendal/core/core/src/raw/accessor.rs:581,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames: []
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpPresign
    constantsTouched: []
    func_position:
      end: 585
      start: 580
    functionDepth: 36
    functionLinenumber: 580
    functionLinenumberEnd: 585
    functionName: ()::presign
    functionSourceFile: /src/opendal/core/core/src/raw/accessor.rs
    functionUses: 0
    functionsReached:
    - Error::new
    - Err
    linkageType: ''
    returnType: Result
    signature: 'async fn presign(&self, _: &OperationContext, _: &str, _: OpPresign)
      -> Result<RpPresign>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: parse_header_to_str
      Src: /src/opendal/core/core/src/raw/http_util/header.rs:48,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - headers
    argTypes:
    - '&HeaderMap'
    constantsTouched: []
    func_position:
      end: 49
      start: 47
    functionDepth: 38
    functionLinenumber: 47
    functionLinenumberEnd: 49
    functionName: parse_location
    functionSourceFile: /src/opendal/core/core/src/raw/http_util/header.rs
    functionUses: 1
    functionsReached:
    - parse_header_to_str
    linkageType: ''
    returnType: Result
    signature: 'pub fn parse_location(headers: &HeaderMap) -> Result<Option<&str>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: parse_header_to_str
      Src: /src/opendal/core/core/src/raw/http_util/header.rs:58,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - headers
    argTypes:
    - '&HeaderMap'
    constantsTouched: []
    func_position:
      end: 59
      start: 57
    functionDepth: 38
    functionLinenumber: 57
    functionLinenumberEnd: 59
    functionName: parse_cache_control
    functionSourceFile: /src/opendal/core/core/src/raw/http_util/header.rs
    functionUses: 1
    functionsReached:
    - parse_header_to_str
    linkageType: ''
    returnType: Result
    signature: 'pub fn parse_cache_control(headers: &HeaderMap) -> Result<Option<&str>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: parse_header_to_str
      Src: /src/opendal/core/core/src/raw/http_util/header.rs:63,1
    - Dst: map
      Src: /src/opendal/core/core/src/raw/http_util/header.rs:63,1
    - Dst: parse::<u64>
      Src: /src/opendal/core/core/src/raw/http_util/header.rs:65,1
    - Dst: map_err
      Src: /src/opendal/core/core/src/raw/http_util/header.rs:65,1
    - Dst: Error::new
      Src: /src/opendal/core/core/src/raw/http_util/header.rs:66,1
    - Dst: Self::set_source
      Src: /src/opendal/core/core/src/raw/http_util/header.rs:66,1
    - Dst: transpose
      Src: /src/opendal/core/core/src/raw/http_util/header.rs:63,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 15
    argCount: 1
    argNames:
    - headers
    argTypes:
    - '&HeaderMap'
    constantsTouched: []
    func_position:
      end: 70
      start: 62
    functionDepth: 38
    functionLinenumber: 62
    functionLinenumberEnd: 70
    functionName: parse_content_length
    functionSourceFile: /src/opendal/core/core/src/raw/http_util/header.rs
    functionUses: 11
    functionsReached:
    - map_err
    - transpose
    - parse_header_to_str
    - Error::new
    - map
    - Self::set_source
    - parse::<u64>
    linkageType: ''
    returnType: Result
    signature: 'pub fn parse_content_length(headers: &HeaderMap) -> Result<Option<u64>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: parse_header_to_str
      Src: /src/opendal/core/core/src/raw/http_util/header.rs:74,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - headers
    argTypes:
    - '&HeaderMap'
    constantsTouched: []
    func_position:
      end: 75
      start: 73
    functionDepth: 38
    functionLinenumber: 73
    functionLinenumberEnd: 75
    functionName: parse_content_md5
    functionSourceFile: /src/opendal/core/core/src/raw/http_util/header.rs
    functionUses: 7
    functionsReached:
    - parse_header_to_str
    linkageType: ''
    returnType: Result
    signature: 'pub fn parse_content_md5(headers: &HeaderMap) -> Result<Option<&str>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: parse_header_to_str
      Src: /src/opendal/core/core/src/raw/http_util/header.rs:79,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - headers
    argTypes:
    - '&HeaderMap'
    constantsTouched: []
    func_position:
      end: 80
      start: 78
    functionDepth: 38
    functionLinenumber: 78
    functionLinenumberEnd: 80
    functionName: parse_content_type
    functionSourceFile: /src/opendal/core/core/src/raw/http_util/header.rs
    functionUses: 2
    functionsReached:
    - parse_header_to_str
    linkageType: ''
    returnType: Result
    signature: 'pub fn parse_content_type(headers: &HeaderMap) -> Result<Option<&str>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: parse_header_to_str
      Src: /src/opendal/core/core/src/raw/http_util/header.rs:84,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - headers
    argTypes:
    - '&HeaderMap'
    constantsTouched: []
    func_position:
      end: 85
      start: 83
    functionDepth: 38
    functionLinenumber: 83
    functionLinenumberEnd: 85
    functionName: parse_content_encoding
    functionSourceFile: /src/opendal/core/core/src/raw/http_util/header.rs
    functionUses: 2
    functionsReached:
    - parse_header_to_str
    linkageType: ''
    returnType: Result
    signature: 'pub fn parse_content_encoding(headers: &HeaderMap) -> Result<Option<&str>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: parse_header_to_str
      Src: /src/opendal/core/core/src/raw/http_util/header.rs:89,1
    - Dst: map
      Src: /src/opendal/core/core/src/raw/http_util/header.rs:89,1
    - Dst: Result::parse
      Src: /src/opendal/core/core/src/raw/http_util/header.rs:90,1
    - Dst: transpose
      Src: /src/opendal/core/core/src/raw/http_util/header.rs:89,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - headers
    argTypes:
    - '&HeaderMap'
    constantsTouched: []
    func_position:
      end: 92
      start: 88
    functionDepth: 38
    functionLinenumber: 88
    functionLinenumberEnd: 92
    functionName: parse_content_range
    functionSourceFile: /src/opendal/core/core/src/raw/http_util/header.rs
    functionUses: 1
    functionsReached:
    - map
    - Result::parse
    - parse_header_to_str
    - transpose
    linkageType: ''
    returnType: Result
    signature: 'pub fn parse_content_range(headers: &HeaderMap) -> Result<Option<BytesContentRange>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: parse_header_to_str
      Src: /src/opendal/core/core/src/raw/http_util/header.rs:96,1
    - Dst: map
      Src: /src/opendal/core/core/src/raw/http_util/header.rs:96,1
    - Dst: transpose
      Src: /src/opendal/core/core/src/raw/http_util/header.rs:96,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - headers
    argTypes:
    - '&HeaderMap'
    constantsTouched: []
    func_position:
      end: 99
      start: 95
    functionDepth: 38
    functionLinenumber: 95
    functionLinenumberEnd: 99
    functionName: parse_last_modified
    functionSourceFile: /src/opendal/core/core/src/raw/http_util/header.rs
    functionUses: 6
    functionsReached:
    - map
    - transpose
    - parse_header_to_str
    linkageType: ''
    returnType: Result
    signature: 'pub fn parse_last_modified(headers: &HeaderMap) -> Result<Option<Timestamp>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: parse_header_to_str
      Src: /src/opendal/core/core/src/raw/http_util/header.rs:103,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - headers
    argTypes:
    - '&HeaderMap'
    constantsTouched: []
    func_position:
      end: 104
      start: 102
    functionDepth: 38
    functionLinenumber: 102
    functionLinenumberEnd: 104
    functionName: parse_etag
    functionSourceFile: /src/opendal/core/core/src/raw/http_util/header.rs
    functionUses: 20
    functionsReached:
    - parse_header_to_str
    linkageType: ''
    returnType: Result
    signature: 'pub fn parse_etag(headers: &HeaderMap) -> Result<Option<&str>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: parse_header_to_str
      Src: /src/opendal/core/core/src/raw/http_util/header.rs:108,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - headers
    argTypes:
    - '&HeaderMap'
    constantsTouched: []
    func_position:
      end: 109
      start: 107
    functionDepth: 38
    functionLinenumber: 107
    functionLinenumberEnd: 109
    functionName: parse_content_disposition
    functionSourceFile: /src/opendal/core/core/src/raw/http_util/header.rs
    functionUses: 2
    functionsReached:
    - parse_header_to_str
    linkageType: ''
    returnType: Result
    signature: 'pub fn parse_content_disposition(headers: &HeaderMap) -> Result<Option<&str>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: parse_header_to_str
      Src: /src/opendal/core/core/src/raw/http_util/header.rs:113,1
    - Dst: Result::map
      Src: /src/opendal/core/core/src/raw/http_util/header.rs:113,1
    - Dst: Result::and_then
      Src: /src/opendal/core/core/src/raw/http_util/header.rs:113,1
    - Dst: Result::split
      Src: /src/opendal/core/core/src/raw/http_util/header.rs:113,1
    - Dst: nth
      Src: /src/opendal/core/core/src/raw/http_util/header.rs:113,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 1
    argNames:
    - headers
    argTypes:
    - '&HeaderMap'
    constantsTouched: []
    func_position:
      end: 114
      start: 112
    functionDepth: 38
    functionLinenumber: 112
    functionLinenumberEnd: 114
    functionName: parse_multipart_boundary
    functionSourceFile: /src/opendal/core/core/src/raw/http_util/header.rs
    functionUses: 3
    functionsReached:
    - Result::split
    - parse_header_to_str
    - Result::and_then
    - Result::map
    - nth
    linkageType: ''
    returnType: Result
    signature: 'pub fn parse_multipart_boundary(headers: &HeaderMap) -> Result<Option<&str>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: HeaderName::try_from
      Src: /src/opendal/core/core/src/raw/http_util/header.rs:122,1
    - Dst: Result::map_err
      Src: /src/opendal/core/core/src/raw/http_util/header.rs:122,1
    - Dst: Error::new
      Src: /src/opendal/core/core/src/raw/http_util/header.rs:123,1
    - Dst: Self::with_operation
      Src: /src/opendal/core/core/src/raw/http_util/header.rs:123,1
    - Dst: HashMap::get
      Src: /src/opendal/core/core/src/raw/http_util/header.rs:130,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/raw/http_util/header.rs:133,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/raw/http_util/header.rs:136,1
    - Dst: Some
      Src: /src/opendal/core/core/src/raw/http_util/header.rs:136,1
    - Dst: Vec::to_str
      Src: /src/opendal/core/core/src/raw/http_util/header.rs:136,1
    - Dst: Result::map_err
      Src: /src/opendal/core/core/src/raw/http_util/header.rs:136,1
    - Dst: Error::new
      Src: /src/opendal/core/core/src/raw/http_util/header.rs:137,1
    - Dst: Self::with_operation
      Src: /src/opendal/core/core/src/raw/http_util/header.rs:137,1
    - Dst: Self::with_context
      Src: /src/opendal/core/core/src/raw/http_util/header.rs:137,1
    - Dst: Result::as_str
      Src: /src/opendal/core/core/src/raw/http_util/header.rs:142,1
    - Dst: Self::set_source
      Src: /src/opendal/core/core/src/raw/http_util/header.rs:137,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 32
    argCount: 2
    argNames:
    - headers
    - name
    argTypes:
    - '&HeaderMap'
    - K
    constantsTouched: []
    func_position:
      end: 145
      start: 118
    functionDepth: 37
    functionLinenumber: 118
    functionLinenumberEnd: 145
    functionName: parse_header_to_str
    functionSourceFile: /src/opendal/core/core/src/raw/http_util/header.rs
    functionUses: 31
    functionsReached:
    - Result::map_err
    - Ok
    - Vec::to_str
    - Error::new
    - Some
    - HeaderName::try_from
    - Result::as_str
    - Self::with_operation
    - Self::set_source
    - Self::with_context
    - HashMap::get
    linkageType: ''
    returnType: Result
    signature: 'pub fn parse_header_to_str<K>(headers: &HeaderMap, name: K) -> Result<Option<&str>>whereHeaderName:
      TryFrom<K>,'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: ends_with
      Src: /src/opendal/core/core/src/raw/http_util/header.rs:155,1
    - Dst: Metadata::new
      Src: /src/opendal/core/core/src/raw/http_util/header.rs:160,1
    - Dst: parse_cache_control
      Src: /src/opendal/core/core/src/raw/http_util/header.rs:162,1
    - Dst: Result::set_cache_control
      Src: /src/opendal/core/core/src/raw/http_util/header.rs:163,1
    - Dst: parse_content_length
      Src: /src/opendal/core/core/src/raw/http_util/header.rs:166,1
    - Dst: Result::set_content_length
      Src: /src/opendal/core/core/src/raw/http_util/header.rs:167,1
    - Dst: parse_content_type
      Src: /src/opendal/core/core/src/raw/http_util/header.rs:170,1
    - Dst: Result::set_content_type
      Src: /src/opendal/core/core/src/raw/http_util/header.rs:171,1
    - Dst: parse_content_encoding
      Src: /src/opendal/core/core/src/raw/http_util/header.rs:174,1
    - Dst: Result::set_content_encoding
      Src: /src/opendal/core/core/src/raw/http_util/header.rs:175,1
    - Dst: parse_content_range
      Src: /src/opendal/core/core/src/raw/http_util/header.rs:178,1
    - Dst: and_then
      Src: /src/opendal/core/core/src/raw/http_util/header.rs:178,1
    - Dst: Result::size
      Src: /src/opendal/core/core/src/raw/http_util/header.rs:178,1
    - Dst: Result::set_content_length
      Src: /src/opendal/core/core/src/raw/http_util/header.rs:179,1
    - Dst: parse_etag
      Src: /src/opendal/core/core/src/raw/http_util/header.rs:182,1
    - Dst: Result::set_etag
      Src: /src/opendal/core/core/src/raw/http_util/header.rs:183,1
    - Dst: parse_content_md5
      Src: /src/opendal/core/core/src/raw/http_util/header.rs:186,1
    - Dst: Result::set_content_md5
      Src: /src/opendal/core/core/src/raw/http_util/header.rs:187,1
    - Dst: parse_last_modified
      Src: /src/opendal/core/core/src/raw/http_util/header.rs:190,1
    - Dst: Result::set_last_modified
      Src: /src/opendal/core/core/src/raw/http_util/header.rs:191,1
    - Dst: parse_content_disposition
      Src: /src/opendal/core/core/src/raw/http_util/header.rs:194,1
    - Dst: Result::set_content_disposition
      Src: /src/opendal/core/core/src/raw/http_util/header.rs:195,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/raw/http_util/header.rs:198,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 73
    argCount: 2
    argNames:
    - path
    - headers
    argTypes:
    - '&str'
    - '&HeaderMap'
    constantsTouched: []
    func_position:
      end: 199
      start: 154
    functionDepth: 39
    functionLinenumber: 154
    functionLinenumberEnd: 199
    functionName: parse_into_metadata
    functionSourceFile: /src/opendal/core/core/src/raw/http_util/header.rs
    functionUses: 47
    functionsReached:
    - Result::set_content_encoding
    - ends_with
    - parse_content_range
    - parse_etag
    - parse_content_encoding
    - and_then
    - Ok
    - parse_content_disposition
    - Result::set_etag
    - Result::set_cache_control
    - Result::set_content_md5
    - parse_content_md5
    - Metadata::new
    - parse_last_modified
    - Result::size
    - parse_content_length
    - Result::set_content_type
    - parse_content_type
    - Result::set_content_disposition
    - Result::set_last_modified
    - Result::set_content_length
    - parse_cache_control
    linkageType: ''
    returnType: Result
    signature: 'pub fn parse_into_metadata(path: &str, headers: &HeaderMap) -> Result<Metadata>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: HashMap::iter
      Src: /src/opendal/core/core/src/raw/http_util/header.rs:203,1
    - Dst: filter_map
      Src: /src/opendal/core/core/src/raw/http_util/header.rs:203,1
    - Dst: Result::as_str
      Src: /src/opendal/core/core/src/raw/http_util/header.rs:206,1
    - Dst: '&''static str::strip_prefix'
      Src: /src/opendal/core/core/src/raw/http_util/header.rs:206,1
    - Dst: and_then
      Src: /src/opendal/core/core/src/raw/http_util/header.rs:206,1
    - Dst: Vec::to_str
      Src: /src/opendal/core/core/src/raw/http_util/header.rs:207,1
    - Dst: Result::ok
      Src: /src/opendal/core/core/src/raw/http_util/header.rs:207,1
    - Dst: Self::map
      Src: /src/opendal/core/core/src/raw/http_util/header.rs:207,1
    - Dst: to_string
      Src: /src/opendal/core/core/src/raw/http_util/header.rs:210,1
    - Dst: to_string
      Src: /src/opendal/core/core/src/raw/http_util/header.rs:210,1
    - Dst: collect
      Src: /src/opendal/core/core/src/raw/http_util/header.rs:203,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 26
    argCount: 2
    argNames:
    - headers
    - prefix
    argTypes:
    - '&HeaderMap'
    - '&str'
    constantsTouched: []
    func_position:
      end: 214
      start: 202
    functionDepth: 38
    functionLinenumber: 202
    functionLinenumberEnd: 214
    functionName: parse_prefixed_headers
    functionSourceFile: /src/opendal/core/core/src/raw/http_util/header.rs
    functionUses: 7
    functionsReached:
    - Self::map
    - to_string
    - collect
    - Result::ok
    - and_then
    - '&''static str::strip_prefix'
    - Vec::to_str
    - HashMap::iter
    - Result::as_str
    - filter_map
    linkageType: ''
    returnType: HashMap
    signature: 'pub fn parse_prefixed_headers(headers: &HeaderMap, prefix: &str) ->
      HashMap<String, String>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: md5::Md5::new
      Src: /src/opendal/core/core/src/raw/http_util/header.rs:218,1
    - Dst: Self::update
      Src: /src/opendal/core/core/src/raw/http_util/header.rs:219,1
    - Dst: encode
      Src: /src/opendal/core/core/src/raw/http_util/header.rs:221,1
    - Dst: Self::finalize
      Src: /src/opendal/core/core/src/raw/http_util/header.rs:221,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - bs
    argTypes:
    - '&[u8]'
    constantsTouched: []
    func_position:
      end: 222
      start: 217
    functionDepth: 37
    functionLinenumber: 217
    functionLinenumberEnd: 222
    functionName: format_content_md5
    functionSourceFile: /src/opendal/core/core/src/raw/http_util/header.rs
    functionUses: 4
    functionsReached:
    - Self::finalize
    - md5::Md5::new
    - encode
    - Self::update
    linkageType: ''
    returnType: String
    signature: 'pub fn format_content_md5(bs: &[u8]) -> String'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: md5::Md5::new
      Src: /src/opendal/core/core/src/raw/http_util/header.rs:230,1
    - Dst: Self::update
      Src: /src/opendal/core/core/src/raw/http_util/header.rs:233,1
    - Dst: Timestamp::as_ref
      Src: /src/opendal/core/core/src/raw/http_util/header.rs:233,1
    - Dst: encode
      Src: /src/opendal/core/core/src/raw/http_util/header.rs:236,1
    - Dst: Self::finalize
      Src: /src/opendal/core/core/src/raw/http_util/header.rs:236,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 1
    argNames:
    - bs
    argTypes:
    - I
    constantsTouched: []
    func_position:
      end: 237
      start: 225
    functionDepth: 37
    functionLinenumber: 225
    functionLinenumberEnd: 237
    functionName: format_content_md5_iter
    functionSourceFile: /src/opendal/core/core/src/raw/http_util/header.rs
    functionUses: 1
    functionsReached:
    - Timestamp::as_ref
    - encode
    - Self::finalize
    - md5::Md5::new
    - Self::update
    linkageType: ''
    returnType: String
    signature: 'pub fn format_content_md5_iter<I>(bs: I) -> StringwhereI: IntoIterator,I::Item:
      AsRef<[u8]>,'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Option::is_empty
      Src: /src/opendal/core/core/src/raw/http_util/header.rs:245,1
    - Dst: Err
      Src: /src/opendal/core/core/src/raw/http_util/header.rs:246,1
    - Dst: Error::new
      Src: /src/opendal/core/core/src/raw/http_util/header.rs:246,1
    - Dst: encode
      Src: /src/opendal/core/core/src/raw/http_util/header.rs:252,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/raw/http_util/header.rs:254,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 2
    argNames:
    - username
    - password
    argTypes:
    - '&str'
    - '&str'
    constantsTouched: []
    func_position:
      end: 255
      start: 244
    functionDepth: 36
    functionLinenumber: 244
    functionLinenumberEnd: 255
    functionName: format_authorization_by_basic
    functionSourceFile: /src/opendal/core/core/src/raw/http_util/header.rs
    functionUses: 10
    functionsReached:
    - Ok
    - encode
    - Error::new
    - Err
    - Option::is_empty
    linkageType: ''
    returnType: Result
    signature: 'pub fn format_authorization_by_basic(username: &str, password: &str)
      -> Result<String>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self::is_empty
      Src: /src/opendal/core/core/src/raw/http_util/header.rs:263,1
    - Dst: Err
      Src: /src/opendal/core/core/src/raw/http_util/header.rs:264,1
    - Dst: Error::new
      Src: /src/opendal/core/core/src/raw/http_util/header.rs:264,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/raw/http_util/header.rs:270,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - token
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 271
      start: 262
    functionDepth: 36
    functionLinenumber: 262
    functionLinenumberEnd: 271
    functionName: format_authorization_by_bearer
    functionSourceFile: /src/opendal/core/core/src/raw/http_util/header.rs
    functionUses: 8
    functionsReached:
    - Self::is_empty
    - Ok
    - Error::new
    - Err
    linkageType: ''
    returnType: Result
    signature: 'pub fn format_authorization_by_bearer(token: &str) -> Result<String>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: HeaderValue::from_str
      Src: /src/opendal/core/core/src/raw/http_util/header.rs:275,1
    - Dst: Result::map_err
      Src: /src/opendal/core/core/src/raw/http_util/header.rs:275,1
    - Dst: Error::new
      Src: /src/opendal/core/core/src/raw/http_util/header.rs:276,1
    - Dst: Self::with_operation
      Src: /src/opendal/core/core/src/raw/http_util/header.rs:276,1
    - Dst: Self::set_source
      Src: /src/opendal/core/core/src/raw/http_util/header.rs:276,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 1
    argNames:
    - v
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 283
      start: 274
    functionDepth: 34
    functionLinenumber: 274
    functionLinenumberEnd: 283
    functionName: build_header_value
    functionSourceFile: /src/opendal/core/core/src/raw/http_util/header.rs
    functionUses: 3
    functionsReached:
    - Result::map_err
    - Error::new
    - HeaderValue::from_str
    - Self::with_operation
    - Self::set_source
    linkageType: ''
    returnType: Result
    signature: 'pub fn build_header_value(v: &str) -> Result<HeaderValue>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: format_content_md5
      Src: /src/opendal/core/core/src/raw/http_util/header.rs:305,1
    - Dst: DeleteInput::as_bytes
      Src: /src/opendal/core/core/src/raw/http_util/header.rs:305,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 309
      start: 291
    functionDepth: 38
    functionLinenumber: 291
    functionLinenumberEnd: 309
    functionName: tests::test_format_content_md5
    functionSourceFile: /src/opendal/core/core/src/raw/http_util/header.rs
    functionUses: 0
    functionsReached:
    - DeleteInput::as_bytes
    - format_content_md5
    linkageType: ''
    returnType: void
    signature: fn test_format_content_md5()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: format_authorization_by_basic
      Src: /src/opendal/core/core/src/raw/http_util/header.rs:330,1
    - Dst: Result::expect
      Src: /src/opendal/core/core/src/raw/http_util/header.rs:330,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 334
      start: 316
    functionDepth: 37
    functionLinenumber: 316
    functionLinenumberEnd: 334
    functionName: tests::test_format_authorization_by_basic
    functionSourceFile: /src/opendal/core/core/src/raw/http_util/header.rs
    functionUses: 0
    functionsReached:
    - format_authorization_by_basic
    - Result::expect
    linkageType: ''
    returnType: void
    signature: fn test_format_authorization_by_basic()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: format_authorization_by_bearer
      Src: /src/opendal/core/core/src/raw/http_util/header.rs:344,1
    - Dst: Result::expect
      Src: /src/opendal/core/core/src/raw/http_util/header.rs:344,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 348
      start: 340
    functionDepth: 37
    functionLinenumber: 340
    functionLinenumberEnd: 348
    functionName: tests::test_format_authorization_by_bearer
    functionSourceFile: /src/opendal/core/core/src/raw/http_util/header.rs
    functionUses: 0
    functionsReached:
    - format_authorization_by_bearer
    - Result::expect
    linkageType: ''
    returnType: void
    signature: fn test_format_authorization_by_bearer()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: HeaderMap::new
      Src: /src/opendal/core/core/src/raw/http_util/header.rs:361,1
    - Dst: HashMap::insert
      Src: /src/opendal/core/core/src/raw/http_util/header.rs:362,1
    - Dst: HeaderValue::from_str
      Src: /src/opendal/core/core/src/raw/http_util/header.rs:362,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/core/src/raw/http_util/header.rs:362,1
    - Dst: parse_multipart_boundary
      Src: /src/opendal/core/core/src/raw/http_util/header.rs:364,1
    - Dst: Result::expect
      Src: /src/opendal/core/core/src/raw/http_util/header.rs:364,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 368
      start: 351
    functionDepth: 34
    functionLinenumber: 351
    functionLinenumberEnd: 368
    functionName: tests::test_parse_multipart_boundary
    functionSourceFile: /src/opendal/core/core/src/raw/http_util/header.rs
    functionUses: 0
    functionsReached:
    - Result::expect
    - HeaderValue::from_str
    - HashMap::insert
    - Result::unwrap
    - parse_multipart_boundary
    - HeaderMap::new
    linkageType: ''
    returnType: void
    signature: fn test_parse_multipart_boundary()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Error::new
      Src: /src/opendal/core/core/src/raw/http_util/error.rs:26,1
    - Dst: Self::with_operation
      Src: /src/opendal/core/core/src/raw/http_util/error.rs:26,1
    - Dst: Self::set_source
      Src: /src/opendal/core/core/src/raw/http_util/error.rs:26,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - err
    argTypes:
    - http::Error
    constantsTouched: []
    func_position:
      end: 29
      start: 25
    functionDepth: 36
    functionLinenumber: 25
    functionLinenumberEnd: 29
    functionName: new_request_build_error
    functionSourceFile: /src/opendal/core/core/src/raw/http_util/error.rs
    functionUses: 0
    functionsReached:
    - Self::with_operation
    - Self::set_source
    - Error::new
    linkageType: ''
    returnType: Error
    signature: 'pub fn new_request_build_error(err: http::Error) -> Error'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Error::new
      Src: /src/opendal/core/core/src/raw/http_util/error.rs:33,1
    - Dst: Self::set_temporary
      Src: /src/opendal/core/core/src/raw/http_util/error.rs:33,1
    - Dst: Self::with_operation
      Src: /src/opendal/core/core/src/raw/http_util/error.rs:33,1
    - Dst: Self::set_source
      Src: /src/opendal/core/core/src/raw/http_util/error.rs:33,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - err
    argTypes:
    - anyhow::Error
    constantsTouched: []
    func_position:
      end: 40
      start: 32
    functionDepth: 36
    functionLinenumber: 32
    functionLinenumberEnd: 40
    functionName: new_request_credential_error
    functionSourceFile: /src/opendal/core/core/src/raw/http_util/error.rs
    functionUses: 0
    functionsReached:
    - Self::with_operation
    - Self::set_source
    - Self::set_temporary
    - Error::new
    linkageType: ''
    returnType: Error
    signature: 'pub fn new_request_credential_error(err: anyhow::Error) -> Error'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Error::new
      Src: /src/opendal/core/core/src/raw/http_util/error.rs:44,1
    - Dst: Self::with_operation
      Src: /src/opendal/core/core/src/raw/http_util/error.rs:44,1
    - Dst: Self::set_source
      Src: /src/opendal/core/core/src/raw/http_util/error.rs:44,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - err
    argTypes:
    - anyhow::Error
    constantsTouched: []
    func_position:
      end: 47
      start: 43
    functionDepth: 36
    functionLinenumber: 43
    functionLinenumberEnd: 47
    functionName: new_request_sign_error
    functionSourceFile: /src/opendal/core/core/src/raw/http_util/error.rs
    functionUses: 18
    functionsReached:
    - Self::with_operation
    - Self::set_source
    - Error::new
    linkageType: ''
    returnType: Error
    signature: 'pub fn new_request_sign_error(err: anyhow::Error) -> Error'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: extensions.get::<Uri>
      Src: /src/opendal/core/core/src/raw/http_util/error.rs:56,1
    - Dst: Error::with_context
      Src: /src/opendal/core/core/src/raw/http_util/error.rs:57,1
    - Dst: Result::to_string
      Src: /src/opendal/core/core/src/raw/http_util/error.rs:57,1
    - Dst: remove
      Src: /src/opendal/core/core/src/raw/http_util/error.rs:61,1
    - Dst: remove
      Src: /src/opendal/core/core/src/raw/http_util/error.rs:62,1
    - Dst: remove
      Src: /src/opendal/core/core/src/raw/http_util/error.rs:63,1
    - Dst: Error::with_context
      Src: /src/opendal/core/core/src/raw/http_util/error.rs:65,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 27
    argCount: 2
    argNames:
    - err
    - parts
    argTypes:
    - Error
    - Parts
    constantsTouched: []
    func_position:
      end: 68
      start: 55
    functionDepth: 36
    functionLinenumber: 55
    functionLinenumberEnd: 68
    functionName: with_error_response_context
    functionSourceFile: /src/opendal/core/core/src/raw/http_util/error.rs
    functionUses: 3
    functionsReached:
    - Error::with_context
    - extensions.get::<Uri>
    - Result::to_string
    - remove
    linkageType: ''
    returnType: Error
    signature: 'pub fn with_error_response_context(mut err: Error, mut parts: Parts)
      -> Error'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self::new
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:49,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 50
      start: 48
    functionDepth: 2
    functionLinenumber: 48
    functionLinenumberEnd: 50
    functionName: Multipart::default
    functionSourceFile: /src/opendal/core/core/src/raw/http_util/multipart.rs
    functionUses: 0
    functionsReached:
    - Self::new
    linkageType: ''
    returnType: Self
    signature: fn default() -> Self
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Vec::default
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:58,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 60
      start: 55
    functionDepth: 3
    functionLinenumber: 55
    functionLinenumberEnd: 60
    functionName: Multipart::new
    functionSourceFile: /src/opendal/core/core/src/raw/http_util/multipart.rs
    functionUses: 17
    functionsReached:
    - Vec::default
    linkageType: ''
    returnType: Self
    signature: pub fn new() -> Self
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::to_string
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:64,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - boundary
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 66
      start: 63
    functionDepth: 2
    functionLinenumber: 63
    functionLinenumberEnd: 66
    functionName: Multipart::with_boundary
    functionSourceFile: /src/opendal/core/core/src/raw/http_util/multipart.rs
    functionUses: 0
    functionsReached:
    - Result::to_string
    linkageType: ''
    returnType: Self
    signature: 'pub fn with_boundary(mut self, boundary: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: push
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:70,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - part
    argTypes:
    - T
    constantsTouched: []
    func_position:
      end: 72
      start: 69
    functionDepth: 5
    functionLinenumber: 69
    functionLinenumberEnd: 72
    functionName: Multipart::part
    functionSourceFile: /src/opendal/core/core/src/raw/http_util/multipart.rs
    functionUses: 0
    functionsReached:
    - push
    linkageType: ''
    returnType: Self
    signature: 'pub fn part(mut self, part: T) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 77
      start: 75
    functionDepth: 0
    functionLinenumber: 75
    functionLinenumberEnd: 77
    functionName: Multipart::into_parts
    functionSourceFile: /src/opendal/core/core/src/raw/http_util/multipart.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Vec
    signature: pub fn into_parts(self) -> Vec<T>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: String::from_utf8
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:81,1
    - Dst: Result::to_vec
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:81,1
    - Dst: map_err
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:81,1
    - Dst: Error::new
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:82,1
    - Dst: Self::set_source
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:82,1
    - Dst: split
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:89,1
    - Dst: as_str
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:90,1
    - Dst: "split(format!(\"--{}\", self.boundary).as_str())\n            .collect::<Vec<&str>>"
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:89,1
    - Dst: Self::is_empty
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:94,1
    - Dst: Self::starts_with
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:94,1
    - Dst: push
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:98,1
    - Dst: T::parse
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:98,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:101,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 34
    argCount: 1
    argNames:
    - bs
    argTypes:
    - Bytes
    constantsTouched: []
    func_position:
      end: 102
      start: 80
    functionDepth: 36
    functionLinenumber: 80
    functionLinenumberEnd: 102
    functionName: Multipart::parse
    functionSourceFile: /src/opendal/core/core/src/raw/http_util/multipart.rs
    functionUses: 0
    functionsReached:
    - map_err
    - String::from_utf8
    - push
    - Ok
    - split
    - Result::to_vec
    - T::parse
    - Error::new
    - "split(format!(\"--{}\", self.boundary).as_str())\n            .collect::<Vec<&str>>"
    - as_str
    - Self::is_empty
    - Self::set_source
    - Self::starts_with
    linkageType: ''
    returnType: Result
    signature: 'pub fn parse(mut self, bs: Bytes) -> Result<Self>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Vec::with_capacity
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:105,1
    - Dst: len
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:105,1
    - Dst: BytesMut::new
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:108,1
    - Dst: Result::extend_from_slice
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:109,1
    - Dst: Result::extend_from_slice
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:110,1
    - Dst: as_bytes
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:110,1
    - Dst: Result::extend_from_slice
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:111,1
    - Dst: Buffer::from
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:112,1
    - Dst: Result::freeze
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:112,1
    - Dst: push
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:116,1
    - Dst: Self::clone
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:116,1
    - Dst: push
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:117,1
    - Dst: Self::format
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:117,1
    - Dst: BytesMut::new
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:121,1
    - Dst: Result::extend_from_slice
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:122,1
    - Dst: Result::extend_from_slice
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:123,1
    - Dst: as_bytes
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:123,1
    - Dst: Result::extend_from_slice
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:124,1
    - Dst: Result::extend_from_slice
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:125,1
    - Dst: push
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:128,1
    - Dst: Buffer::from
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:128,1
    - Dst: Result::freeze
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:128,1
    - Dst: into_iter
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:130,1
    - Dst: flatten
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:130,1
    - Dst: collect
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:130,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 62
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 131
      start: 104
    functionDepth: 40
    functionLinenumber: 104
    functionLinenumberEnd: 131
    functionName: Multipart::build
    functionSourceFile: /src/opendal/core/core/src/raw/http_util/multipart.rs
    functionUses: 1
    functionsReached:
    - Self::format
    - collect
    - as_bytes
    - Vec::with_capacity
    - push
    - Result::extend_from_slice
    - into_iter
    - BytesMut::new
    - flatten
    - Self::clone
    - Result::freeze
    - len
    - Buffer::from
    linkageType: ''
    returnType: Buffer
    signature: pub(crate) fn build(self) -> Buffer
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: clone
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:137,1
    - Dst: Multipart::build
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:138,1
    - Dst: io::Result::len
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:139,1
    - Dst: OtelMetricsLayerBuilder::header
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:142,1
    - Dst: as_str
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:144,1
    - Dst: OtelMetricsLayerBuilder::header
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:147,1
    - Dst: OtelMetricsLayerBuilder::body
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:149,1
    - Dst: map_err
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:149,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 21
    argCount: 1
    argNames:
    - builder
    argTypes:
    - http::request::Builder
    constantsTouched: []
    func_position:
      end: 150
      start: 136
    functionDepth: 41
    functionLinenumber: 136
    functionLinenumberEnd: 150
    functionName: Multipart::apply
    functionSourceFile: /src/opendal/core/core/src/raw/http_util/multipart.rs
    functionUses: 0
    functionsReached:
    - map_err
    - Multipart::build
    - io::Result::len
    - clone
    - OtelMetricsLayerBuilder::body
    - as_str
    - OtelMetricsLayerBuilder::header
    linkageType: ''
    returnType: Result
    signature: 'pub fn apply(self, mut builder: http::request::Builder) -> Result<Request<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: HeaderMap::new
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:182,1
    - Dst: HashMap::insert
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:183,1
    - Dst: parse
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:185,1
    - Dst: unwrap
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:185,1
    - Dst: Buffer::new
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:190,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 1
    argNames:
    - name
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 192
      start: 180
    functionDepth: 35
    functionLinenumber: 180
    functionLinenumberEnd: 192
    functionName: FormDataPart::new
    functionSourceFile: /src/opendal/core/core/src/raw/http_util/multipart.rs
    functionUses: 7
    functionsReached:
    - Buffer::new
    - unwrap
    - parse
    - HashMap::insert
    - HeaderMap::new
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(name: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: insert
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:196,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - key
    - value
    argTypes:
    - HeaderName
    - HeaderValue
    constantsTouched: []
    func_position:
      end: 198
      start: 195
    functionDepth: 6
    functionLinenumber: 195
    functionLinenumberEnd: 198
    functionName: FormDataPart::header
    functionSourceFile: /src/opendal/core/core/src/raw/http_util/multipart.rs
    functionUses: 0
    functionsReached:
    - insert
    linkageType: ''
    returnType: Self
    signature: 'pub fn header(mut self, key: HeaderName, value: HeaderValue) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::into
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:202,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - content
    argTypes:
    - impl Into<Buffer>
    constantsTouched: []
    func_position:
      end: 204
      start: 201
    functionDepth: 29
    functionLinenumber: 201
    functionLinenumberEnd: 204
    functionName: FormDataPart::content
    functionSourceFile: /src/opendal/core/core/src/raw/http_util/multipart.rs
    functionUses: 0
    functionsReached:
    - Result::into
    linkageType: ''
    returnType: Self
    signature: 'pub fn content(mut self, content: impl Into<Buffer>) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Vec::with_capacity
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:211,1
    - Dst: BytesMut::new
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:214,1
    - Dst: iter
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:215,1
    - Dst: Result::as_str
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:221,1
    - Dst: Result::extend_from_slice
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:223,1
    - Dst: '&str::as_bytes'
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:223,1
    - Dst: Result::extend_from_slice
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:226,1
    - Dst: Result::as_str
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:226,1
    - Dst: '&''static str::as_bytes'
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:226,1
    - Dst: Result::extend_from_slice
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:229,1
    - Dst: Result::extend_from_slice
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:230,1
    - Dst: Result::as_bytes
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:230,1
    - Dst: Result::extend_from_slice
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:231,1
    - Dst: Result::extend_from_slice
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:233,1
    - Dst: push
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:234,1
    - Dst: Buffer::from
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:234,1
    - Dst: Result::freeze
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:234,1
    - Dst: push
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:237,1
    - Dst: push
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:240,1
    - Dst: Buffer::from
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:240,1
    - Dst: into_iter
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:242,1
    - Dst: flatten
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:242,1
    - Dst: collect
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:242,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 57
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 243
      start: 210
    functionDepth: 40
    functionLinenumber: 210
    functionLinenumberEnd: 243
    functionName: FormDataPart::format
    functionSourceFile: /src/opendal/core/core/src/raw/http_util/multipart.rs
    functionUses: 0
    functionsReached:
    - collect
    - iter
    - Vec::with_capacity
    - push
    - '&''static str::as_bytes'
    - Result::extend_from_slice
    - into_iter
    - BytesMut::new
    - flatten
    - '&str::as_bytes'
    - Result::as_str
    - Result::freeze
    - Result::as_bytes
    - Buffer::from
    linkageType: ''
    returnType: Buffer
    signature: fn format(self) -> Buffer
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:246,1
    - Dst: Error::new
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:246,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames: []
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 250
      start: 245
    functionDepth: 36
    functionLinenumber: 245
    functionLinenumberEnd: 250
    functionName: FormDataPart::parse
    functionSourceFile: /src/opendal/core/core/src/raw/http_util/multipart.rs
    functionUses: 0
    functionsReached:
    - Error::new
    - Err
    linkageType: ''
    returnType: Result
    signature: 'fn parse(_: &str) -> Result<Self>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: HeaderMap::new
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:273,1
    - Dst: Self::insert
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:274,1
    - Dst: '&str::parse'
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:274,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:274,1
    - Dst: Self::insert
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:275,1
    - Dst: '&str::parse'
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:275,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:275,1
    - Dst: Uri::from_str
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:277,1
    - Dst: Result::expect
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:277,1
    - Dst: HeaderMap::new
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:283,1
    - Dst: Buffer::new
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:284,1
    - Dst: Some
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:286,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 22
    argCount: 1
    argNames:
    - uri
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 291
      start: 272
    functionDepth: 33
    functionLinenumber: 272
    functionLinenumberEnd: 291
    functionName: MixedPart::new
    functionSourceFile: /src/opendal/core/core/src/raw/http_util/multipart.rs
    functionUses: 2
    functionsReached:
    - Buffer::new
    - Result::expect
    - Self::insert
    - '&str::parse'
    - Some
    - Uri::from_str
    - Result::unwrap
    - HeaderMap::new
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(uri: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: HeaderMap::new
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:295,1
    - Dst: Self::insert
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:296,1
    - Dst: '&str::parse'
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:296,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:296,1
    - Dst: Self::insert
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:297,1
    - Dst: '&str::parse'
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:297,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:297,1
    - Dst: Request<Buffer>::into_parts
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:299,1
    - Dst: Some
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:303,1
    - Dst: Uri::from_str
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:304,1
    - Dst: path_and_query
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:305,1
    - Dst: unwrap_or
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:305,1
    - Dst: PathAndQuery::from_static
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:308,1
    - Dst: as_str
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:305,1
    - Dst: Result::expect
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:304,1
    - Dst: Some
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:317,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 35
    argCount: 1
    argNames:
    - req
    argTypes:
    - Request<Buffer>
    constantsTouched: []
    func_position:
      end: 320
      start: 294
    functionDepth: 33
    functionLinenumber: 294
    functionLinenumberEnd: 320
    functionName: MixedPart::from_request
    functionSourceFile: /src/opendal/core/core/src/raw/http_util/multipart.rs
    functionUses: 2
    functionsReached:
    - Result::expect
    - Self::insert
    - PathAndQuery::from_static
    - '&str::parse'
    - path_and_query
    - Some
    - Uri::from_str
    - as_str
    - Request<Buffer>::into_parts
    - Result::unwrap
    - HeaderMap::new
    - unwrap_or
    linkageType: ''
    returnType: Self
    signature: 'pub fn from_request(req: Request<Buffer>) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Response::builder
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:324,1
    - Dst: OtelMetricsLayerBuilder::status
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:326,1
    - Dst: unwrap_or
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:326,1
    - Dst: OtelMetricsLayerBuilder::version
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:327,1
    - Dst: mem::swap
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:329,1
    - Dst: OtelMetricsLayerBuilder::headers_mut
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:329,1
    - Dst: unwrap
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:329,1
    - Dst: OtelMetricsLayerBuilder::body
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:331,1
    - Dst: expect
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:331,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 26
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 334
      start: 323
    functionDepth: 38
    functionLinenumber: 323
    functionLinenumberEnd: 334
    functionName: MixedPart::into_response
    functionSourceFile: /src/opendal/core/core/src/raw/http_util/multipart.rs
    functionUses: 0
    functionsReached:
    - mem::swap
    - expect
    - Response::builder
    - OtelMetricsLayerBuilder::status
    - unwrap
    - OtelMetricsLayerBuilder::version
    - OtelMetricsLayerBuilder::body
    - OtelMetricsLayerBuilder::headers_mut
    - unwrap_or
    linkageType: ''
    returnType: Response
    signature: pub fn into_response(mut self) -> Response<Buffer>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: insert
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:338,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - key
    - value
    argTypes:
    - HeaderName
    - HeaderValue
    constantsTouched: []
    func_position:
      end: 340
      start: 337
    functionDepth: 6
    functionLinenumber: 337
    functionLinenumberEnd: 340
    functionName: MixedPart::part_header
    functionSourceFile: /src/opendal/core/core/src/raw/http_util/multipart.rs
    functionUses: 0
    functionsReached:
    - insert
    linkageType: ''
    returnType: Self
    signature: 'pub fn part_header(mut self, key: HeaderName, value: HeaderValue)
      -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Some
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:344,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - method
    argTypes:
    - Method
    constantsTouched: []
    func_position:
      end: 346
      start: 343
    functionDepth: 0
    functionLinenumber: 343
    functionLinenumberEnd: 346
    functionName: MixedPart::method
    functionSourceFile: /src/opendal/core/core/src/raw/http_util/multipart.rs
    functionUses: 0
    functionsReached:
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn method(mut self, method: Method) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - version
    argTypes:
    - Version
    constantsTouched: []
    func_position:
      end: 352
      start: 349
    functionDepth: 0
    functionLinenumber: 349
    functionLinenumberEnd: 352
    functionName: MixedPart::version
    functionSourceFile: /src/opendal/core/core/src/raw/http_util/multipart.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: 'pub fn version(mut self, version: Version) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: insert
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:356,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - key
    - value
    argTypes:
    - HeaderName
    - HeaderValue
    constantsTouched: []
    func_position:
      end: 358
      start: 355
    functionDepth: 6
    functionLinenumber: 355
    functionLinenumberEnd: 358
    functionName: MixedPart::header
    functionSourceFile: /src/opendal/core/core/src/raw/http_util/multipart.rs
    functionUses: 0
    functionsReached:
    - insert
    linkageType: ''
    returnType: Self
    signature: 'pub fn header(mut self, key: HeaderName, value: HeaderValue) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::into
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:362,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - content
    argTypes:
    - impl Into<Buffer>
    constantsTouched: []
    func_position:
      end: 364
      start: 361
    functionDepth: 29
    functionLinenumber: 361
    functionLinenumberEnd: 364
    functionName: MixedPart::content
    functionSourceFile: /src/opendal/core/core/src/raw/http_util/multipart.rs
    functionUses: 0
    functionsReached:
    - Result::into
    linkageType: ''
    returnType: Self
    signature: 'pub fn content(mut self, content: impl Into<Buffer>) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Vec::with_capacity
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:371,1
    - Dst: BytesMut::new
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:374,1
    - Dst: iter
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:375,1
    - Dst: Result::as_str
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:381,1
    - Dst: Result::extend_from_slice
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:383,1
    - Dst: '&str::as_bytes'
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:383,1
    - Dst: Result::extend_from_slice
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:386,1
    - Dst: '&str::as_bytes'
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:386,1
    - Dst: Result::extend_from_slice
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:389,1
    - Dst: '&str::as_bytes'
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:389,1
    - Dst: Result::extend_from_slice
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:392,1
    - Dst: Result::as_str
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:392,1
    - Dst: '&''static str::as_bytes'
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:392,1
    - Dst: Result::extend_from_slice
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:395,1
    - Dst: Result::extend_from_slice
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:396,1
    - Dst: Result::as_bytes
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:396,1
    - Dst: Result::extend_from_slice
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:397,1
    - Dst: Result::extend_from_slice
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:401,1
    - Dst: Result::extend_from_slice
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:402,1
    - Dst: as_ref
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:403,1
    - Dst: expect
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:403,1
    - Dst: as_str
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:403,1
    - Dst: as_bytes
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:403,1
    - Dst: Result::extend_from_slice
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:409,1
    - Dst: Result::extend_from_slice
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:410,1
    - Dst: as_ref
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:411,1
    - Dst: expect
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:411,1
    - Dst: path
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:411,1
    - Dst: as_bytes
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:411,1
    - Dst: Result::extend_from_slice
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:417,1
    - Dst: Result::extend_from_slice
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:418,1
    - Dst: as_bytes
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:418,1
    - Dst: Result::extend_from_slice
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:419,1
    - Dst: iter
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:422,1
    - Dst: Result::extend_from_slice
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:423,1
    - Dst: Result::as_str
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:423,1
    - Dst: '&''static str::as_bytes'
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:423,1
    - Dst: Result::extend_from_slice
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:424,1
    - Dst: Result::extend_from_slice
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:425,1
    - Dst: Result::as_bytes
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:425,1
    - Dst: Result::extend_from_slice
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:426,1
    - Dst: Result::extend_from_slice
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:428,1
    - Dst: push
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:429,1
    - Dst: Buffer::from
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:429,1
    - Dst: Result::freeze
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:429,1
    - Dst: is_empty
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:431,1
    - Dst: push
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:432,1
    - Dst: push
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:433,1
    - Dst: Buffer::from
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:433,1
    - Dst: into_iter
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:436,1
    - Dst: flatten
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:436,1
    - Dst: collect
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:436,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 136
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 437
      start: 370
    functionDepth: 34
    functionLinenumber: 370
    functionLinenumberEnd: 437
    functionName: MixedPart::format
    functionSourceFile: /src/opendal/core/core/src/raw/http_util/multipart.rs
    functionUses: 0
    functionsReached:
    - collect
    - as_bytes
    - Vec::with_capacity
    - push
    - flatten
    - Result::as_bytes
    - iter
    - expect
    - '&''static str::as_bytes'
    - Result::extend_from_slice
    - as_str
    - Result::as_str
    - Buffer::from
    - is_empty
    - BytesMut::new
    - '&str::as_bytes'
    - Result::freeze
    - into_iter
    - as_ref
    - path
    linkageType: ''
    returnType: Buffer
    signature: fn format(self) -> Buffer
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: splitn
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:443,1
    - Dst: splitn(2, "\r\n\r\n").collect::<Vec<&str>>
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:443,1
    - Dst: (String, Metadata)::get
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:445,1
    - Dst: Option::unwrap_or
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:445,1
    - Dst: HeaderMap::new
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:447,1
    - Dst: lines
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:448,1
    - Dst: Self::splitn
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:449,1
    - Dst: 'splitn(2, ": ").collect::<Vec<&str>>'
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:449,1
    - Dst: (String, Metadata)::len
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:450,1
    - Dst: HeaderName::from_str
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:451,1
    - Dst: Result::map_err
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:451,1
    - Dst: Error::new
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:452,1
    - Dst: Self::set_source
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:452,1
    - Dst: parse
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:458,1
    - Dst: map_err
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:458,1
    - Dst: Error::new
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:459,1
    - Dst: Self::set_source
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:459,1
    - Dst: Self::insert
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:466,1
    - Dst: split
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:470,1
    - Dst: split("\r\n\r\n").collect::<Vec<&str>>
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:470,1
    - Dst: (String, Metadata)::get
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:472,1
    - Dst: Option::unwrap_or
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:472,1
    - Dst: Buffer::from
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:473,1
    - Dst: as_bytes
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:473,1
    - Dst: to_vec
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:473,1
    - Dst: lines
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:475,1
    - Dst: next
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:475,1
    - Dst: unwrap_or
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:475,1
    - Dst: split_whitespace
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:476,1
    - Dst: nth
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:476,1
    - Dst: unwrap_or
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:476,1
    - Dst: "split_whitespace()\n            .nth(1)\n            .unwrap_or(\"\")\n\
        \            .parse::<u16>"
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:476,1
    - Dst: unwrap_or
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:476,1
    - Dst: HeaderMap::new
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:483,1
    - Dst: lines
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:484,1
    - Dst: skip
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:484,1
    - Dst: Self::splitn
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:485,1
    - Dst: 'splitn(2, ": ").collect::<Vec<&str>>'
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:485,1
    - Dst: (String, Metadata)::len
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:486,1
    - Dst: HeaderName::from_str
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:487,1
    - Dst: Result::map_err
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:487,1
    - Dst: Error::new
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:488,1
    - Dst: Self::set_source
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:488,1
    - Dst: parse
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:494,1
    - Dst: map_err
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:494,1
    - Dst: Error::new
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:495,1
    - Dst: Self::set_source
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:495,1
    - Dst: HashMap::insert
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:502,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:506,1
    - Dst: Some
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:515,1
    - Dst: StatusCode::from_u16
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:515,1
    - Dst: map_err
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:515,1
    - Dst: Error::new
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:516,1
    - Dst: Self::set_source
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:516,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 126
    argCount: 1
    argNames:
    - s
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 523
      start: 442
    functionDepth: 35
    functionLinenumber: 442
    functionLinenumberEnd: 523
    functionName: MixedPart::parse
    functionSourceFile: /src/opendal/core/core/src/raw/http_util/multipart.rs
    functionUses: 0
    functionsReached:
    - (String, Metadata)::get
    - as_bytes
    - split("\r\n\r\n").collect::<Vec<&str>>
    - skip
    - to_vec
    - 'splitn(2, ": ").collect::<Vec<&str>>'
    - map_err
    - Ok
    - Self::insert
    - lines
    - splitn
    - HeaderMap::new
    - split_whitespace
    - Buffer::from
    - unwrap_or
    - Result::map_err
    - next
    - nth
    - StatusCode::from_u16
    - Self::splitn
    - Option::unwrap_or
    - Some
    - parse
    - (String, Metadata)::len
    - splitn(2, "\r\n\r\n").collect::<Vec<&str>>
    - Self::set_source
    - "split_whitespace()\n            .nth(1)\n            .unwrap_or(\"\")\n   \
      \         .parse::<u16>"
    - split
    - Error::new
    - HeaderName::from_str
    - HashMap::insert
    linkageType: ''
    returnType: Result
    signature: 'fn parse(s: &str) -> Result<Self>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self::new
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:535,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 536
      start: 534
    functionDepth: 2
    functionLinenumber: 534
    functionLinenumberEnd: 536
    functionName: RelatedPart::default
    functionSourceFile: /src/opendal/core/core/src/raw/http_util/multipart.rs
    functionUses: 0
    functionsReached:
    - Self::new
    linkageType: ''
    returnType: Self
    signature: fn default() -> Self
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: HeaderMap::new
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:543,1
    - Dst: Buffer::new
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:544,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 546
      start: 541
    functionDepth: 2
    functionLinenumber: 541
    functionLinenumberEnd: 546
    functionName: RelatedPart::new
    functionSourceFile: /src/opendal/core/core/src/raw/http_util/multipart.rs
    functionUses: 2
    functionsReached:
    - Buffer::new
    - HeaderMap::new
    linkageType: ''
    returnType: Self
    signature: pub fn new() -> Self
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Request<Buffer>::into_parts
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:550,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - req
    argTypes:
    - Request<Buffer>
    constantsTouched: []
    func_position:
      end: 556
      start: 549
    functionDepth: 1
    functionLinenumber: 549
    functionLinenumberEnd: 556
    functionName: RelatedPart::from_request
    functionSourceFile: /src/opendal/core/core/src/raw/http_util/multipart.rs
    functionUses: 0
    functionsReached:
    - Request<Buffer>::into_parts
    linkageType: ''
    returnType: Self
    signature: 'pub fn from_request(req: Request<Buffer>) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Response::builder
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:560,1
    - Dst: mem::swap
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:563,1
    - Dst: OtelMetricsLayerBuilder::headers_mut
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:563,1
    - Dst: unwrap
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:563,1
    - Dst: OtelMetricsLayerBuilder::body
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:565,1
    - Dst: expect
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:565,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 568
      start: 559
    functionDepth: 35
    functionLinenumber: 559
    functionLinenumberEnd: 568
    functionName: RelatedPart::into_response
    functionSourceFile: /src/opendal/core/core/src/raw/http_util/multipart.rs
    functionUses: 0
    functionsReached:
    - mem::swap
    - expect
    - Response::builder
    - unwrap
    - OtelMetricsLayerBuilder::body
    - OtelMetricsLayerBuilder::headers_mut
    linkageType: ''
    returnType: Response
    signature: pub fn into_response(mut self) -> Response<Buffer>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: insert
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:572,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - key
    - value
    argTypes:
    - HeaderName
    - HeaderValue
    constantsTouched: []
    func_position:
      end: 574
      start: 571
    functionDepth: 6
    functionLinenumber: 571
    functionLinenumberEnd: 574
    functionName: RelatedPart::header
    functionSourceFile: /src/opendal/core/core/src/raw/http_util/multipart.rs
    functionUses: 0
    functionsReached:
    - insert
    linkageType: ''
    returnType: Self
    signature: 'pub fn header(mut self, key: HeaderName, value: HeaderValue) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::into
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:578,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - content
    argTypes:
    - impl Into<Buffer>
    constantsTouched: []
    func_position:
      end: 580
      start: 577
    functionDepth: 29
    functionLinenumber: 577
    functionLinenumberEnd: 580
    functionName: RelatedPart::content
    functionSourceFile: /src/opendal/core/core/src/raw/http_util/multipart.rs
    functionUses: 0
    functionsReached:
    - Result::into
    linkageType: ''
    returnType: Self
    signature: 'pub fn content(mut self, content: impl Into<Buffer>) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Vec::with_capacity
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:602,1
    - Dst: BytesMut::new
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:603,1
    - Dst: iter
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:606,1
    - Dst: Result::extend_from_slice
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:607,1
    - Dst: Result::as_str
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:607,1
    - Dst: '&''static str::as_bytes'
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:607,1
    - Dst: Result::extend_from_slice
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:608,1
    - Dst: Result::extend_from_slice
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:609,1
    - Dst: Result::as_bytes
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:609,1
    - Dst: Result::extend_from_slice
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:610,1
    - Dst: Result::extend_from_slice
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:612,1
    - Dst: push
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:613,1
    - Dst: Buffer::from
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:613,1
    - Dst: Result::freeze
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:613,1
    - Dst: is_empty
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:615,1
    - Dst: push
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:616,1
    - Dst: push
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:617,1
    - Dst: Buffer::from
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:617,1
    - Dst: into_iter
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:620,1
    - Dst: flatten
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:620,1
    - Dst: collect
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:620,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 53
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 621
      start: 586
    functionDepth: 40
    functionLinenumber: 586
    functionLinenumberEnd: 621
    functionName: RelatedPart::format
    functionSourceFile: /src/opendal/core/core/src/raw/http_util/multipart.rs
    functionUses: 0
    functionsReached:
    - collect
    - iter
    - Vec::with_capacity
    - push
    - '&''static str::as_bytes'
    - Result::extend_from_slice
    - is_empty
    - into_iter
    - BytesMut::new
    - flatten
    - Result::as_str
    - Result::freeze
    - Result::as_bytes
    - Buffer::from
    linkageType: ''
    returnType: Buffer
    signature: fn format(self) -> Buffer
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:624,1
    - Dst: Error::new
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:624,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - _s
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 628
      start: 623
    functionDepth: 36
    functionLinenumber: 623
    functionLinenumberEnd: 628
    functionName: RelatedPart::parse
    functionSourceFile: /src/opendal/core/core/src/raw/http_util/multipart.rs
    functionUses: 0
    functionsReached:
    - Error::new
    - Err
    linkageType: ''
    returnType: Result
    signature: 'fn parse(_s: &str) -> Result<Self>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Multipart::new
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:640,1
    - Dst: Self::with_boundary
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:640,1
    - Dst: Self::part
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:640,1
    - Dst: FormDataPart::new
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:642,1
    - Dst: Self::content
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:642,1
    - Dst: Bytes::from
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:642,1
    - Dst: Self::part
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:640,1
    - Dst: FormDataPart::new
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:643,1
    - Dst: Self::content
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:643,1
    - Dst: Bytes::from
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:643,1
    - Dst: build
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:645,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:658,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 20
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 659
      start: 639
    functionDepth: 36
    functionLinenumber: 639
    functionLinenumberEnd: 659
    functionName: tests::test_multipart_formdata_basic
    functionSourceFile: /src/opendal/core/core/src/raw/http_util/multipart.rs
    functionUses: 0
    functionsReached:
    - Multipart::new
    - Self::content
    - Ok
    - build
    - FormDataPart::new
    - Self::part
    - Bytes::from
    - Self::with_boundary
    linkageType: ''
    returnType: Result
    signature: fn test_multipart_formdata_basic() -> Result<()>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Multipart::new
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:664,1
    - Dst: Self::with_boundary
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:664,1
    - Dst: Self::part
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:664,1
    - Dst: FormDataPart::new
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:666,1
    - Dst: Self::content
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:666,1
    - Dst: Self::part
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:664,1
    - Dst: FormDataPart::new
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:667,1
    - Dst: Self::content
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:667,1
    - Dst: Self::part
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:664,1
    - Dst: FormDataPart::new
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:668,1
    - Dst: Self::content
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:668,1
    - Dst: Self::part
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:664,1
    - Dst: FormDataPart::new
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:671,1
    - Dst: Self::content
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:671,1
    - Dst: Self::part
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:664,1
    - Dst: FormDataPart::new
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:672,1
    - Dst: Self::content
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:672,1
    - Dst: Self::part
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:664,1
    - Dst: FormDataPart::new
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:673,1
    - Dst: Self::content
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:673,1
    - Dst: Self::part
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:664,1
    - Dst: FormDataPart::new
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:674,1
    - Dst: Self::content
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:674,1
    - Dst: Self::part
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:664,1
    - Dst: FormDataPart::new
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:675,1
    - Dst: Self::content
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:675,1
    - Dst: Self::part
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:664,1
    - Dst: FormDataPart::new
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:676,1
    - Dst: Self::content
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:676,1
    - Dst: Self::part
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:664,1
    - Dst: FormDataPart::new
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:677,1
    - Dst: Self::header
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:677,1
    - Dst: '&str::parse'
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:677,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:677,1
    - Dst: String::content
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:677,1
    - Dst: Self::part
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:664,1
    - Dst: FormDataPart::new
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:677,1
    - Dst: Self::content
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:677,1
    - Dst: build
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:679,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:738,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 69
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 739
      start: 663
    functionDepth: 36
    functionLinenumber: 663
    functionLinenumberEnd: 739
    functionName: tests::test_multipart_formdata_s3_form_upload
    functionSourceFile: /src/opendal/core/core/src/raw/http_util/multipart.rs
    functionUses: 0
    functionsReached:
    - Multipart::new
    - Self::content
    - Ok
    - build
    - '&str::parse'
    - FormDataPart::new
    - Self::part
    - Result::unwrap
    - String::content
    - Self::header
    - Self::with_boundary
    linkageType: ''
    returnType: Result
    signature: fn test_multipart_formdata_s3_form_upload() -> Result<()>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Multipart::new
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:744,1
    - Dst: Self::with_boundary
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:744,1
    - Dst: Self::part
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:744,1
    - Dst: MixedPart::new
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:747,1
    - Dst: Self::method
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:747,1
    - Dst: '&str::part_header'
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:747,1
    - Dst: '&str::parse'
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:750,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:750,1
    - Dst: '&str::parse'
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:751,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:751,1
    - Dst: Self::header
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:747,1
    - Dst: '&str::parse'
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:754,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:754,1
    - Dst: '&str::parse'
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:755,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:755,1
    - Dst: String::header
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:747,1
    - Dst: '&str::parse'
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:758,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:758,1
    - Dst: '&str::parse'
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:759,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:759,1
    - Dst: String::header
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:747,1
    - Dst: '&str::parse'
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:761,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:761,1
    - Dst: '&str::parse'
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:761,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:761,1
    - Dst: String::content
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:747,1
    - Dst: Self::part
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:744,1
    - Dst: MixedPart::new
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:765,1
    - Dst: Self::method
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:765,1
    - Dst: '&str::part_header'
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:765,1
    - Dst: '&str::parse'
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:768,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:768,1
    - Dst: '&str::parse'
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:769,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:769,1
    - Dst: Self::header
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:765,1
    - Dst: '&str::parse'
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:772,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:772,1
    - Dst: '&str::parse'
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:773,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:773,1
    - Dst: String::header
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:765,1
    - Dst: '&str::parse'
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:776,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:776,1
    - Dst: '&str::parse'
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:777,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:777,1
    - Dst: String::header
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:765,1
    - Dst: '&str::parse'
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:779,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:779,1
    - Dst: '&str::parse'
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:779,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:779,1
    - Dst: String::content
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:765,1
    - Dst: Self::part
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:744,1
    - Dst: MixedPart::new
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:783,1
    - Dst: Self::method
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:783,1
    - Dst: '&str::part_header'
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:783,1
    - Dst: '&str::parse'
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:786,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:786,1
    - Dst: '&str::parse'
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:787,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:787,1
    - Dst: Self::header
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:783,1
    - Dst: '&str::parse'
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:790,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:790,1
    - Dst: '&str::parse'
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:791,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:791,1
    - Dst: String::header
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:783,1
    - Dst: '&str::parse'
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:794,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:794,1
    - Dst: '&str::parse'
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:795,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:795,1
    - Dst: String::header
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:783,1
    - Dst: '&str::parse'
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:797,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:797,1
    - Dst: '&str::parse'
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:797,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:797,1
    - Dst: String::content
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:783,1
    - Dst: build
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:801,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:848,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 149
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 849
      start: 743
    functionDepth: 34
    functionLinenumber: 743
    functionLinenumberEnd: 849
    functionName: tests::test_multipart_mixed_gcs_batch_metadata
    functionSourceFile: /src/opendal/core/core/src/raw/http_util/multipart.rs
    functionUses: 0
    functionsReached:
    - Multipart::new
    - Ok
    - MixedPart::new
    - build
    - '&str::parse'
    - '&str::part_header'
    - Self::part
    - String::header
    - Result::unwrap
    - Self::method
    - String::content
    - Self::header
    - Self::with_boundary
    linkageType: ''
    returnType: Result
    signature: fn test_multipart_mixed_gcs_batch_metadata() -> Result<()>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Multipart::new
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:854,1
    - Dst: Self::with_boundary
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:854,1
    - Dst: Self::part
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:854,1
    - Dst: MixedPart::new
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:857,1
    - Dst: Self::method
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:857,1
    - Dst: '&str::part_header'
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:857,1
    - Dst: '&str::parse'
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:859,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:859,1
    - Dst: '&str::parse'
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:859,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:859,1
    - Dst: Self::header
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:857,1
    - Dst: '&str::parse'
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:861,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:861,1
    - Dst: '&str::parse'
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:862,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:862,1
    - Dst: String::header
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:857,1
    - Dst: '&str::parse'
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:865,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:865,1
    - Dst: '&str::parse'
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:866,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:866,1
    - Dst: String::header
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:857,1
    - Dst: '&str::parse'
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:870,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:870,1
    - Dst: '&str::parse'
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:870,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:870,1
    - Dst: Self::part
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:854,1
    - Dst: MixedPart::new
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:873,1
    - Dst: Self::method
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:873,1
    - Dst: '&str::part_header'
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:873,1
    - Dst: '&str::parse'
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:875,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:875,1
    - Dst: '&str::parse'
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:875,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:875,1
    - Dst: Self::header
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:873,1
    - Dst: '&str::parse'
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:877,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:877,1
    - Dst: '&str::parse'
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:878,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:878,1
    - Dst: String::header
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:873,1
    - Dst: '&str::parse'
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:881,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:881,1
    - Dst: '&str::parse'
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:882,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:882,1
    - Dst: String::header
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:873,1
    - Dst: '&str::parse'
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:886,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:886,1
    - Dst: '&str::parse'
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:886,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:886,1
    - Dst: Self::part
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:854,1
    - Dst: MixedPart::new
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:889,1
    - Dst: Self::method
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:889,1
    - Dst: '&str::part_header'
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:889,1
    - Dst: '&str::parse'
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:891,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:891,1
    - Dst: '&str::parse'
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:891,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:891,1
    - Dst: Self::header
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:889,1
    - Dst: '&str::parse'
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:893,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:893,1
    - Dst: '&str::parse'
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:894,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:894,1
    - Dst: String::header
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:889,1
    - Dst: '&str::parse'
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:897,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:897,1
    - Dst: '&str::parse'
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:898,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:898,1
    - Dst: String::header
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:889,1
    - Dst: '&str::parse'
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:902,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:902,1
    - Dst: '&str::parse'
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:902,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:902,1
    - Dst: build
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:905,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:949,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 143
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 950
      start: 853
    functionDepth: 34
    functionLinenumber: 853
    functionLinenumberEnd: 950
    functionName: tests::test_multipart_mixed_azblob_batch_delete
    functionSourceFile: /src/opendal/core/core/src/raw/http_util/multipart.rs
    functionUses: 0
    functionsReached:
    - Multipart::new
    - Ok
    - MixedPart::new
    - build
    - '&str::parse'
    - '&str::part_header'
    - Self::part
    - String::header
    - Result::unwrap
    - Self::method
    - Self::header
    - Self::with_boundary
    linkageType: ''
    returnType: Result
    signature: fn test_multipart_mixed_azblob_batch_delete() -> Result<()>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: replace
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:955,1
    - Dst: Multipart::new
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:999,1
    - Dst: Self::with_boundary
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:999,1
    - Dst: Self::parse
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:999,1
    - Dst: Bytes::from
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:1001,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:999,1
    - Dst: Bytes::from_static
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:1004,1
    - Dst: as_bytes
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:1005,1
    - Dst: Bytes::from_static
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:1006,1
    - Dst: as_bytes
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:1007,1
    - Dst: Bytes::from_static
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:1010,1
    - Dst: as_bytes
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:1011,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 41
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 1136
      start: 954
    functionDepth: 33
    functionLinenumber: 954
    functionLinenumberEnd: 1136
    functionName: tests::test_multipart_mixed_gcs_batch_metadata_response
    functionSourceFile: /src/opendal/core/core/src/raw/http_util/multipart.rs
    functionUses: 0
    functionsReached:
    - Multipart::new
    - Self::parse
    - as_bytes
    - replace
    - Bytes::from
    - Result::unwrap
    - Bytes::from_static
    - Self::with_boundary
    linkageType: ''
    returnType: void
    signature: fn test_multipart_mixed_gcs_batch_metadata_response()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Multipart::new
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:1153,1
    - Dst: Self::with_boundary
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:1153,1
    - Dst: Self::part
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:1153,1
    - Dst: RelatedPart::new
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:1156,1
    - Dst: Self::header
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:1156,1
    - Dst: '&str::parse'
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:1158,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:1158,1
    - Dst: '&str::parse'
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:1159,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:1159,1
    - Dst: String::content
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:1156,1
    - Dst: Self::part
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:1153,1
    - Dst: RelatedPart::new
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:1164,1
    - Dst: Self::header
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:1164,1
    - Dst: '&str::parse'
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:1166,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:1166,1
    - Dst: '&str::parse'
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:1167,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:1167,1
    - Dst: String::content
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:1164,1
    - Dst: build
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:1172,1
    - Dst: String::from_utf8
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:1174,1
    - Dst: Result::to_bytes
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:1174,1
    - Dst: Bytes::to_vec
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:1174,1
    - Dst: unwrap
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:1174,1
    - Dst: replace
      Src: /src/opendal/core/core/src/raw/http_util/multipart.rs:1174,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 45
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 1179
      start: 1139
    functionDepth: 33
    functionLinenumber: 1139
    functionLinenumberEnd: 1179
    functionName: tests::test_multipart_related_gcs_simple
    functionSourceFile: /src/opendal/core/core/src/raw/http_util/multipart.rs
    functionUses: 0
    functionsReached:
    - Multipart::new
    - Bytes::to_vec
    - String::from_utf8
    - RelatedPart::new
    - build
    - Result::to_bytes
    - '&str::parse'
    - unwrap
    - replace
    - Self::part
    - Result::unwrap
    - String::content
    - Self::header
    - Self::with_boundary
    linkageType: ''
    returnType: void
    signature: fn test_multipart_related_gcs_simple()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Some
      Src: /src/opendal/core/core/src/raw/http_util/bytes_content_range.rs:64,1
    - Dst: Some
      Src: /src/opendal/core/core/src/raw/http_util/bytes_content_range.rs:65,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 2
    argNames:
    - start
    - end
    argTypes:
    - u64
    - u64
    constantsTouched: []
    func_position:
      end: 67
      start: 63
    functionDepth: 0
    functionLinenumber: 63
    functionLinenumberEnd: 67
    functionName: BytesContentRange::with_range
    functionSourceFile: /src/opendal/core/core/src/raw/http_util/bytes_content_range.rs
    functionUses: 0
    functionsReached:
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn with_range(mut self, start: u64, end: u64) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Some
      Src: /src/opendal/core/core/src/raw/http_util/bytes_content_range.rs:71,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - size
    argTypes:
    - u64
    constantsTouched: []
    func_position:
      end: 73
      start: 70
    functionDepth: 0
    functionLinenumber: 70
    functionLinenumberEnd: 73
    functionName: BytesContentRange::with_size
    functionSourceFile: /src/opendal/core/core/src/raw/http_util/bytes_content_range.rs
    functionUses: 0
    functionsReached:
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn with_size(mut self, size: u64) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Some
      Src: /src/opendal/core/core/src/raw/http_util/bytes_content_range.rs:79,1
    - Dst: Some
      Src: /src/opendal/core/core/src/raw/http_util/bytes_content_range.rs:81,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 86
      start: 76
    functionDepth: 0
    functionLinenumber: 76
    functionLinenumberEnd: 86
    functionName: BytesContentRange::len
    functionSourceFile: /src/opendal/core/core/src/raw/http_util/bytes_content_range.rs
    functionUses: 0
    functionsReached:
    - Some
    linkageType: ''
    returnType: Option
    signature: pub fn len(&self) -> Option<u64>
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 91
      start: 89
    functionDepth: 0
    functionLinenumber: 89
    functionLinenumberEnd: 91
    functionName: BytesContentRange::size
    functionSourceFile: /src/opendal/core/core/src/raw/http_util/bytes_content_range.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Option
    signature: pub fn size(&self) -> Option<u64>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Some
      Src: /src/opendal/core/core/src/raw/http_util/bytes_content_range.rs:96,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 100
      start: 94
    functionDepth: 0
    functionLinenumber: 94
    functionLinenumberEnd: 100
    functionName: BytesContentRange::range
    functionSourceFile: /src/opendal/core/core/src/raw/http_util/bytes_content_range.rs
    functionUses: 0
    functionsReached:
    - Some
    linkageType: ''
    returnType: Option
    signature: pub fn range(&self) -> Option<Range<u64>>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Some
      Src: /src/opendal/core/core/src/raw/http_util/bytes_content_range.rs:105,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 109
      start: 103
    functionDepth: 0
    functionLinenumber: 103
    functionLinenumberEnd: 109
    functionName: BytesContentRange::range_inclusive
    functionSourceFile: /src/opendal/core/core/src/raw/http_util/bytes_content_range.rs
    functionUses: 0
    functionsReached:
    - Some
    linkageType: ''
    returnType: Option
    signature: pub fn range_inclusive(&self) -> Option<RangeInclusive<u64>>
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 114
      start: 112
    functionDepth: 0
    functionLinenumber: 112
    functionLinenumberEnd: 114
    functionName: BytesContentRange::to_header
    functionSourceFile: /src/opendal/core/core/src/raw/http_util/bytes_content_range.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: String
    signature: pub fn to_header(&self) -> String
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - f
    argTypes:
    - '&mut Formatter<''_>'
    constantsTouched: []
    func_position:
      end: 125
      start: 118
    functionDepth: 0
    functionLinenumber: 118
    functionLinenumberEnd: 125
    functionName: BytesContentRange::fmt
    functionSourceFile: /src/opendal/core/core/src/raw/http_util/bytes_content_range.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: std::fmt::Result
    signature: 'fn fmt(&self, f: &mut Formatter<''_>) -> std::fmt::Result'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Vec::strip_prefix
      Src: /src/opendal/core/core/src/raw/http_util/bytes_content_range.rs:132,1
    - Dst: ok_or_else
      Src: /src/opendal/core/core/src/raw/http_util/bytes_content_range.rs:132,1
    - Dst: Error::new
      Src: /src/opendal/core/core/src/raw/http_util/bytes_content_range.rs:133,1
    - Dst: Self::with_operation
      Src: /src/opendal/core/core/src/raw/http_util/bytes_content_range.rs:133,1
    - Dst: Self::with_context
      Src: /src/opendal/core/core/src/raw/http_util/bytes_content_range.rs:133,1
    - Dst: Error::new
      Src: /src/opendal/core/core/src/raw/http_util/bytes_content_range.rs:139,1
    - Dst: Self::with_operation
      Src: /src/opendal/core/core/src/raw/http_util/bytes_content_range.rs:139,1
    - Dst: Self::with_context
      Src: /src/opendal/core/core/src/raw/http_util/bytes_content_range.rs:139,1
    - Dst: Self::set_source
      Src: /src/opendal/core/core/src/raw/http_util/bytes_content_range.rs:139,1
    - Dst: strip_prefix
      Src: /src/opendal/core/core/src/raw/http_util/bytes_content_range.rs:145,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/raw/http_util/bytes_content_range.rs:146,1
    - Dst: BytesContentRange::default
      Src: /src/opendal/core/core/src/raw/http_util/bytes_content_range.rs:147,1
    - Dst: Self::with_size
      Src: /src/opendal/core/core/src/raw/http_util/bytes_content_range.rs:147,1
    - Dst: Option::parse
      Src: /src/opendal/core/core/src/raw/http_util/bytes_content_range.rs:147,1
    - Dst: Result::map_err
      Src: /src/opendal/core/core/src/raw/http_util/bytes_content_range.rs:147,1
    - Dst: split
      Src: /src/opendal/core/core/src/raw/http_util/bytes_content_range.rs:151,1
    - Dst: collect
      Src: /src/opendal/core/core/src/raw/http_util/bytes_content_range.rs:151,1
    - Dst: len
      Src: /src/opendal/core/core/src/raw/http_util/bytes_content_range.rs:152,1
    - Dst: Err
      Src: /src/opendal/core/core/src/raw/http_util/bytes_content_range.rs:153,1
    - Dst: Error::new
      Src: /src/opendal/core/core/src/raw/http_util/bytes_content_range.rs:154,1
    - Dst: Self::with_operation
      Src: /src/opendal/core/core/src/raw/http_util/bytes_content_range.rs:154,1
    - Dst: Self::with_context
      Src: /src/opendal/core/core/src/raw/http_util/bytes_content_range.rs:154,1
    - Dst: split
      Src: /src/opendal/core/core/src/raw/http_util/bytes_content_range.rs:160,1
    - Dst: collect
      Src: /src/opendal/core/core/src/raw/http_util/bytes_content_range.rs:160,1
    - Dst: Result::len
      Src: /src/opendal/core/core/src/raw/http_util/bytes_content_range.rs:161,1
    - Dst: Err
      Src: /src/opendal/core/core/src/raw/http_util/bytes_content_range.rs:162,1
    - Dst: Error::new
      Src: /src/opendal/core/core/src/raw/http_util/bytes_content_range.rs:163,1
    - Dst: Self::with_operation
      Src: /src/opendal/core/core/src/raw/http_util/bytes_content_range.rs:163,1
    - Dst: Self::with_context
      Src: /src/opendal/core/core/src/raw/http_util/bytes_content_range.rs:163,1
    - Dst: parse
      Src: /src/opendal/core/core/src/raw/http_util/bytes_content_range.rs:168,1
    - Dst: map_err
      Src: /src/opendal/core/core/src/raw/http_util/bytes_content_range.rs:168,1
    - Dst: parse
      Src: /src/opendal/core/core/src/raw/http_util/bytes_content_range.rs:169,1
    - Dst: map_err
      Src: /src/opendal/core/core/src/raw/http_util/bytes_content_range.rs:169,1
    - Dst: Err
      Src: /src/opendal/core/core/src/raw/http_util/bytes_content_range.rs:171,1
    - Dst: Error::new
      Src: /src/opendal/core/core/src/raw/http_util/bytes_content_range.rs:171,1
    - Dst: Self::with_operation
      Src: /src/opendal/core/core/src/raw/http_util/bytes_content_range.rs:171,1
    - Dst: Self::with_context
      Src: /src/opendal/core/core/src/raw/http_util/bytes_content_range.rs:171,1
    - Dst: BytesContentRange::default
      Src: /src/opendal/core/core/src/raw/http_util/bytes_content_range.rs:178,1
    - Dst: Self::with_range
      Src: /src/opendal/core/core/src/raw/http_util/bytes_content_range.rs:178,1
    - Dst: (Vec::with_size
      Src: /src/opendal/core/core/src/raw/http_util/bytes_content_range.rs:182,1
    - Dst: parse
      Src: /src/opendal/core/core/src/raw/http_util/bytes_content_range.rs:182,1
    - Dst: map_err
      Src: /src/opendal/core/core/src/raw/http_util/bytes_content_range.rs:182,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/raw/http_util/bytes_content_range.rs:185,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 109
    argCount: 1
    argNames:
    - value
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 186
      start: 131
    functionDepth: 36
    functionLinenumber: 131
    functionLinenumberEnd: 186
    functionName: BytesContentRange::from_str
    functionSourceFile: /src/opendal/core/core/src/raw/http_util/bytes_content_range.rs
    functionUses: 0
    functionsReached:
    - collect
    - BytesContentRange::default
    - Option::parse
    - Vec::strip_prefix
    - Result::len
    - Self::with_context
    - map_err
    - Ok
    - len
    - ok_or_else
    - Result::map_err
    - Self::with_range
    - parse
    - strip_prefix
    - Self::set_source
    - (Vec::with_size
    - split
    - Error::new
    - Err
    - Self::with_operation
    - Self::with_size
    linkageType: ''
    returnType: Result
    signature: 'fn from_str(value: &str) -> Result<Self>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: DeleteInput::parse
      Src: /src/opendal/core/core/src/raw/http_util/bytes_content_range.rs:216,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/raw/http_util/bytes_content_range.rs:221,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 222
      start: 194
    functionDepth: 33
    functionLinenumber: 194
    functionLinenumberEnd: 222
    functionName: tests::test_bytes_content_range_from_str
    functionSourceFile: /src/opendal/core/core/src/raw/http_util/bytes_content_range.rs
    functionUses: 0
    functionsReached:
    - DeleteInput::parse
    - Ok
    linkageType: ''
    returnType: Result
    signature: fn test_bytes_content_range_from_str() -> Result<()>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: BytesContentRange::default
      Src: /src/opendal/core/core/src/raw/http_util/bytes_content_range.rs:226,1
    - Dst: Self::with_size
      Src: /src/opendal/core/core/src/raw/http_util/bytes_content_range.rs:226,1
    - Dst: BytesContentRange::default
      Src: /src/opendal/core/core/src/raw/http_util/bytes_content_range.rs:229,1
    - Dst: Self::with_range
      Src: /src/opendal/core/core/src/raw/http_util/bytes_content_range.rs:229,1
    - Dst: BytesContentRange::default
      Src: /src/opendal/core/core/src/raw/http_util/bytes_content_range.rs:232,1
    - Dst: Self::with_range
      Src: /src/opendal/core/core/src/raw/http_util/bytes_content_range.rs:232,1
    - Dst: (Vec::with_size
      Src: /src/opendal/core/core/src/raw/http_util/bytes_content_range.rs:232,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 236
      start: 225
    functionDepth: 3
    functionLinenumber: 225
    functionLinenumberEnd: 236
    functionName: tests::test_bytes_content_range_to_string
    functionSourceFile: /src/opendal/core/core/src/raw/http_util/bytes_content_range.rs
    functionUses: 0
    functionsReached:
    - BytesContentRange::default
    - Self::with_range
    - Self::with_size
    - (Vec::with_size
    linkageType: ''
    returnType: void
    signature: fn test_bytes_content_range_to_string()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: BytesContentRange::default
      Src: /src/opendal/core/core/src/raw/http_util/bytes_content_range.rs:240,1
    - Dst: Self::with_size
      Src: /src/opendal/core/core/src/raw/http_util/bytes_content_range.rs:240,1
    - Dst: BytesContentRange::default
      Src: /src/opendal/core/core/src/raw/http_util/bytes_content_range.rs:243,1
    - Dst: Self::with_range
      Src: /src/opendal/core/core/src/raw/http_util/bytes_content_range.rs:243,1
    - Dst: BytesContentRange::default
      Src: /src/opendal/core/core/src/raw/http_util/bytes_content_range.rs:246,1
    - Dst: Self::with_range
      Src: /src/opendal/core/core/src/raw/http_util/bytes_content_range.rs:246,1
    - Dst: (Vec::with_size
      Src: /src/opendal/core/core/src/raw/http_util/bytes_content_range.rs:246,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 250
      start: 239
    functionDepth: 3
    functionLinenumber: 239
    functionLinenumberEnd: 250
    functionName: tests::test_bytes_content_range_to_header
    functionSourceFile: /src/opendal/core/core/src/raw/http_util/bytes_content_range.rs
    functionUses: 0
    functionsReached:
    - BytesContentRange::default
    - Self::with_range
    - Self::with_size
    - (Vec::with_size
    linkageType: ''
    returnType: void
    signature: fn test_bytes_content_range_to_header()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: DeleteInput::parse
      Src: /src/opendal/core/core/src/raw/http_util/bytes_content_range.rs:257,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 263
      start: 253
    functionDepth: 33
    functionLinenumber: 253
    functionLinenumberEnd: 263
    functionName: tests::test_bytes_content_range_from_str_invalid_end_less_than_start
    functionSourceFile: /src/opendal/core/core/src/raw/http_util/bytes_content_range.rs
    functionUses: 0
    functionsReached:
    - DeleteInput::parse
    linkageType: ''
    returnType: void
    signature: fn test_bytes_content_range_from_str_invalid_end_less_than_start()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: BytesContentRange::default
      Src: /src/opendal/core/core/src/raw/http_util/bytes_content_range.rs:268,1
    - Dst: Self::with_range
      Src: /src/opendal/core/core/src/raw/http_util/bytes_content_range.rs:268,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 270
      start: 266
    functionDepth: 3
    functionLinenumber: 266
    functionLinenumberEnd: 270
    functionName: tests::test_bytes_content_range_len_no_underflow
    functionSourceFile: /src/opendal/core/core/src/raw/http_util/bytes_content_range.rs
    functionUses: 0
    functionsReached:
    - BytesContentRange::default
    - Self::with_range
    linkageType: ''
    returnType: void
    signature: fn test_bytes_content_range_len_no_underflow()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Error::new
      Src: /src/opendal/core/core/src/raw/http_util/uri.rs:27,1
    - Dst: Self::set_source
      Src: /src/opendal/core/core/src/raw/http_util/uri.rs:27,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - err
    argTypes:
    - http::uri::InvalidUri
    constantsTouched: []
    func_position:
      end: 28
      start: 26
    functionDepth: 36
    functionLinenumber: 26
    functionLinenumberEnd: 28
    functionName: new_http_uri_invalid_error
    functionSourceFile: /src/opendal/core/core/src/raw/http_util/uri.rs
    functionUses: 0
    functionsReached:
    - Self::set_source
    - Error::new
    linkageType: ''
    returnType: Error
    signature: 'pub fn new_http_uri_invalid_error(err: http::uri::InvalidUri) -> Error'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: percent_encoding::utf8_percent_encode
      Src: /src/opendal/core/core/src/raw/http_util/uri.rs:55,1
    - Dst: to_string
      Src: /src/opendal/core/core/src/raw/http_util/uri.rs:55,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - path
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 56
      start: 54
    functionDepth: 2
    functionLinenumber: 54
    functionLinenumberEnd: 56
    functionName: percent_encode_path
    functionSourceFile: /src/opendal/core/core/src/raw/http_util/uri.rs
    functionUses: 40
    functionsReached:
    - to_string
    - percent_encoding::utf8_percent_encode
    linkageType: ''
    returnType: String
    signature: 'pub fn percent_encode_path(path: &str) -> String'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: percent_encoding::percent_decode_str
      Src: /src/opendal/core/core/src/raw/http_util/uri.rs:62,1
    - Dst: decode_utf8
      Src: /src/opendal/core/core/src/raw/http_util/uri.rs:62,1
    - Dst: Result::to_string
      Src: /src/opendal/core/core/src/raw/http_util/uri.rs:63,1
    - Dst: to_string
      Src: /src/opendal/core/core/src/raw/http_util/uri.rs:64,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - path
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 66
      start: 61
    functionDepth: 2
    functionLinenumber: 61
    functionLinenumberEnd: 66
    functionName: percent_decode_path
    functionSourceFile: /src/opendal/core/core/src/raw/http_util/uri.rs
    functionUses: 10
    functionsReached:
    - to_string
    - decode_utf8
    - percent_encoding::percent_decode_str
    - Result::to_string
    linkageType: ''
    returnType: String
    signature: 'pub fn percent_decode_path(path: &str) -> String'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: String::with_capacity
      Src: /src/opendal/core/core/src/raw/http_util/uri.rs:82,1
    - Dst: Self::push_str
      Src: /src/opendal/core/core/src/raw/http_util/uri.rs:83,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - s
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 89
      start: 76
    functionDepth: 0
    functionLinenumber: 76
    functionLinenumberEnd: 89
    functionName: QueryPairsWriter::new
    functionSourceFile: /src/opendal/core/core/src/raw/http_util/uri.rs
    functionUses: 28
    functionsReached:
    - String::with_capacity
    - Self::push_str
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(s: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: push
      Src: /src/opendal/core/core/src/raw/http_util/uri.rs:97,1
    - Dst: push
      Src: /src/opendal/core/core/src/raw/http_util/uri.rs:99,1
    - Dst: push_str
      Src: /src/opendal/core/core/src/raw/http_util/uri.rs:104,1
    - Dst: Vec::is_empty
      Src: /src/opendal/core/core/src/raw/http_util/uri.rs:105,1
    - Dst: push
      Src: /src/opendal/core/core/src/raw/http_util/uri.rs:106,1
    - Dst: push_str
      Src: /src/opendal/core/core/src/raw/http_util/uri.rs:107,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 31
    argCount: 2
    argNames:
    - key
    - value
    argTypes:
    - '&str'
    - '&str'
    constantsTouched: []
    func_position:
      end: 111
      start: 95
    functionDepth: 4
    functionLinenumber: 95
    functionLinenumberEnd: 111
    functionName: QueryPairsWriter::push
    functionSourceFile: /src/opendal/core/core/src/raw/http_util/uri.rs
    functionUses: 0
    functionsReached:
    - push_str
    - Vec::is_empty
    - push
    linkageType: ''
    returnType: Self
    signature: 'pub fn push(mut self, key: &str, value: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 116
      start: 114
    functionDepth: 0
    functionLinenumber: 114
    functionLinenumberEnd: 116
    functionName: QueryPairsWriter::finish
    functionSourceFile: /src/opendal/core/core/src/raw/http_util/uri.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: String
    signature: pub fn finish(self) -> String
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: percent_encode_path
      Src: /src/opendal/core/core/src/raw/http_util/uri.rs:146,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 150
      start: 124
    functionDepth: 3
    functionLinenumber: 124
    functionLinenumberEnd: 150
    functionName: tests::test_percent_encode_path
    functionSourceFile: /src/opendal/core/core/src/raw/http_util/uri.rs
    functionUses: 0
    functionsReached:
    - percent_encode_path
    linkageType: ''
    returnType: void
    signature: fn test_percent_encode_path()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: percent_decode_path
      Src: /src/opendal/core/core/src/raw/http_util/uri.rs:185,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 189
      start: 153
    functionDepth: 3
    functionLinenumber: 153
    functionLinenumberEnd: 189
    functionName: tests::test_percent_decode_path
    functionSourceFile: /src/opendal/core/core/src/raw/http_util/uri.rs
    functionUses: 0
    functionsReached:
    - percent_decode_path
    linkageType: ''
    returnType: void
    signature: fn test_percent_decode_path()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: is_empty
      Src: /src/opendal/core/core/src/raw/oio/entry.rs:43,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/core/src/raw/oio/entry.rs:44,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 2
    argNames:
    - path
    - meta
    argTypes:
    - String
    - Metadata
    constantsTouched: []
    func_position:
      end: 55
      start: 41
    functionDepth: 4
    functionLinenumber: 41
    functionLinenumberEnd: 55
    functionName: Entry::with
    functionSourceFile: /src/opendal/core/core/src/raw/oio/entry.rs
    functionUses: 12
    functionsReached:
    - '&str::to_string'
    - is_empty
    linkageType: ''
    returnType: Entry
    signature: 'pub fn with(mut path: String, meta: Metadata) -> Entry'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: to_string
      Src: /src/opendal/core/core/src/raw/oio/entry.rs:59,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - path
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 61
      start: 58
    functionDepth: 2
    functionLinenumber: 58
    functionLinenumberEnd: 61
    functionName: Entry::set_path
    functionSourceFile: /src/opendal/core/core/src/raw/oio/entry.rs
    functionUses: 0
    functionsReached:
    - to_string
    linkageType: ''
    returnType: '&mut Self'
    signature: 'pub fn set_path(&mut self, path: &str) -> &mut Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: set_mode
      Src: /src/opendal/core/core/src/raw/oio/entry.rs:74,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - mode
    argTypes:
    - EntryMode
    constantsTouched: []
    func_position:
      end: 76
      start: 73
    functionDepth: 1
    functionLinenumber: 73
    functionLinenumberEnd: 76
    functionName: Entry::set_mode
    functionSourceFile: /src/opendal/core/core/src/raw/oio/entry.rs
    functionUses: 0
    functionsReached:
    - set_mode
    linkageType: ''
    returnType: '&mut Self'
    signature: 'pub fn set_mode(&mut self, mode: EntryMode) -> &mut Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: mode
      Src: /src/opendal/core/core/src/raw/oio/entry.rs:80,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 81
      start: 79
    functionDepth: 30
    functionLinenumber: 79
    functionLinenumberEnd: 81
    functionName: Entry::mode
    functionSourceFile: /src/opendal/core/core/src/raw/oio/entry.rs
    functionUses: 1
    functionsReached:
    - mode
    linkageType: ''
    returnType: EntryMode
    signature: pub fn mode(&self) -> EntryMode
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: crate::Entry::new
      Src: /src/opendal/core/core/src/raw/oio/entry.rs:87,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 88
      start: 86
    functionDepth: 1
    functionLinenumber: 86
    functionLinenumberEnd: 88
    functionName: Entry::into_entry
    functionSourceFile: /src/opendal/core/core/src/raw/oio/entry.rs
    functionUses: 1
    functionsReached:
    - crate::Entry::new
    linkageType: ''
    returnType: crate::Entry
    signature: pub(crate) fn into_entry(self) -> crate::Entry
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 98
      start: 96
    functionDepth: 0
    functionLinenumber: 96
    functionLinenumberEnd: 98
    functionName: Entry::metadata_mut
    functionSourceFile: /src/opendal/core/core/src/raw/oio/entry.rs
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: '&mut Metadata'
    signature: pub fn metadata_mut(&mut self) -> &mut Metadata
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: '&str::to_string'
      Src: /src/opendal/core/core/src/raw/oio/list/hierarchy_list.rs:44,1
    - Dst: to_string
      Src: /src/opendal/core/core/src/raw/oio/list/hierarchy_list.rs:46,1
    - Dst: HashSet::default
      Src: /src/opendal/core/core/src/raw/oio/list/hierarchy_list.rs:52,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 3
    argNames:
    - lister
    - path
    - recursive
    argTypes:
    - P
    - '&str'
    - bool
    constantsTouched: []
    func_position:
      end: 55
      start: 42
    functionDepth: 3
    functionLinenumber: 42
    functionLinenumberEnd: 55
    functionName: HierarchyLister::new
    functionSourceFile: /src/opendal/core/core/src/raw/oio/list/hierarchy_list.rs
    functionUses: 8
    functionsReached:
    - to_string
    - '&str::to_string'
    - HashSet::default
    linkageType: ''
    returnType: HierarchyLister
    signature: 'pub fn new(lister: P, path: &str, recursive: bool) -> HierarchyLister<P>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::path
      Src: /src/opendal/core/core/src/raw/oio/list/hierarchy_list.rs:68,1
    - Dst: starts_with
      Src: /src/opendal/core/core/src/raw/oio/list/hierarchy_list.rs:68,1
    - Dst: contains
      Src: /src/opendal/core/core/src/raw/oio/list/hierarchy_list.rs:73,1
    - Dst: Result::path
      Src: /src/opendal/core/core/src/raw/oio/list/hierarchy_list.rs:73,1
    - Dst: len
      Src: /src/opendal/core/core/src/raw/oio/list/hierarchy_list.rs:77,1
    - Dst: Result::path
      Src: /src/opendal/core/core/src/raw/oio/list/hierarchy_list.rs:79,1
    - Dst: find
      Src: /src/opendal/core/core/src/raw/oio/list/hierarchy_list.rs:79,1
    - Dst: Result::path
      Src: /src/opendal/core/core/src/raw/oio/list/hierarchy_list.rs:89,1
    - Dst: len
      Src: /src/opendal/core/core/src/raw/oio/list/hierarchy_list.rs:89,1
    - Dst: contains
      Src: /src/opendal/core/core/src/raw/oio/list/hierarchy_list.rs:90,1
    - Dst: Result::path
      Src: /src/opendal/core/core/src/raw/oio/list/hierarchy_list.rs:90,1
    - Dst: insert
      Src: /src/opendal/core/core/src/raw/oio/list/hierarchy_list.rs:91,1
    - Dst: Result::path
      Src: /src/opendal/core/core/src/raw/oio/list/hierarchy_list.rs:91,1
    - Dst: to_string
      Src: /src/opendal/core/core/src/raw/oio/list/hierarchy_list.rs:91,1
    - Dst: Result::path
      Src: /src/opendal/core/core/src/raw/oio/list/hierarchy_list.rs:99,1
    - Dst: contains
      Src: /src/opendal/core/core/src/raw/oio/list/hierarchy_list.rs:100,1
    - Dst: Result::path
      Src: /src/opendal/core/core/src/raw/oio/list/hierarchy_list.rs:104,1
    - Dst: to_string
      Src: /src/opendal/core/core/src/raw/oio/list/hierarchy_list.rs:105,1
    - Dst: Result::set_path
      Src: /src/opendal/core/core/src/raw/oio/list/hierarchy_list.rs:108,1
    - Dst: Result::set_mode
      Src: /src/opendal/core/core/src/raw/oio/list/hierarchy_list.rs:109,1
    - Dst: insert
      Src: /src/opendal/core/core/src/raw/oio/list/hierarchy_list.rs:110,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 90
    argCount: 1
    argNames:
    - e
    argTypes:
    - '&mut oio::Entry'
    constantsTouched: []
    func_position:
      end: 116
      start: 63
    functionDepth: 34
    functionLinenumber: 63
    functionLinenumberEnd: 116
    functionName: HierarchyLister::keep_entry
    functionSourceFile: /src/opendal/core/core/src/raw/oio/list/hierarchy_list.rs
    functionUses: 1
    functionsReached:
    - to_string
    - insert
    - starts_with
    - find
    - Result::set_mode
    - contains
    - len
    - Result::path
    - Result::set_path
    linkageType: ''
    returnType: bool
    signature: 'fn keep_entry(&mut self, e: &mut oio::Entry) -> bool'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: next
      Src: /src/opendal/core/core/src/raw/oio/list/hierarchy_list.rs:122,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/raw/oio/list/hierarchy_list.rs:124,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/raw/oio/list/hierarchy_list.rs:128,1
    - Dst: Some
      Src: /src/opendal/core/core/src/raw/oio/list/hierarchy_list.rs:128,1
    - Dst: HierarchyLister::keep_entry
      Src: /src/opendal/core/core/src/raw/oio/list/hierarchy_list.rs:130,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/raw/oio/list/hierarchy_list.rs:131,1
    - Dst: Some
      Src: /src/opendal/core/core/src/raw/oio/list/hierarchy_list.rs:131,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 26
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 134
      start: 120
    functionDepth: 35
    functionLinenumber: 120
    functionLinenumberEnd: 134
    functionName: HierarchyLister::next
    functionSourceFile: /src/opendal/core/core/src/raw/oio/list/hierarchy_list.rs
    functionUses: 0
    functionsReached:
    - next
    - HierarchyLister::keep_entry
    - Ok
    - Some
    linkageType: ''
    returnType: Result
    signature: async fn next(&mut self) -> Result<Option<oio::Entry>>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/core/core/src/raw/oio/copy/api.rs:44,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 45
      start: 43
    functionDepth: 0
    functionLinenumber: 43
    functionLinenumberEnd: 45
    functionName: ()::next
    functionSourceFile: /src/opendal/core/core/src/raw/oio/copy/api.rs
    functionUses: 0
    functionsReached:
    - Ok
    linkageType: ''
    returnType: Result
    signature: async fn next(&mut self) -> Result<Option<usize>>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: next
      Src: /src/opendal/core/core/src/raw/oio/list/api.rs:47,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/raw/oio/list/api.rs:48,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 50
      start: 45
    functionDepth: 2
    functionLinenumber: 45
    functionLinenumberEnd: 50
    functionName: Option::next
    functionSourceFile: /src/opendal/core/core/src/raw/oio/list/api.rs
    functionUses: 0
    functionsReached:
    - next
    - Ok
    linkageType: ''
    returnType: Result
    signature: async fn next(&mut self) -> Result<Option<Entry>>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Box::pin
      Src: /src/opendal/core/core/src/raw/oio/copy/api.rs:192,1
    - Dst: T::next
      Src: /src/opendal/core/core/src/raw/oio/copy/api.rs:192,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 193
      start: 191
    functionDepth: 2
    functionLinenumber: 191
    functionLinenumberEnd: 193
    functionName: T::next_dyn
    functionSourceFile: /src/opendal/core/core/src/raw/oio/copy/api.rs
    functionUses: 0
    functionsReached:
    - Box::pin
    - T::next
    linkageType: ''
    returnType: BoxedFuture
    signature: fn next_dyn(&mut self) -> BoxedFuture<'_, Result<Option<usize>>>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Box::deref_mut
      Src: /src/opendal/core/core/src/raw/oio/copy/api.rs:206,1
    - Dst: '&mut HashMap::next_dyn'
      Src: /src/opendal/core/core/src/raw/oio/copy/api.rs:206,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 207
      start: 205
    functionDepth: 3
    functionLinenumber: 205
    functionLinenumberEnd: 207
    functionName: Box::next
    functionSourceFile: /src/opendal/core/core/src/raw/oio/copy/api.rs
    functionUses: 0
    functionsReached:
    - '&mut HashMap::next_dyn'
    - Box::deref_mut
    linkageType: ''
    returnType: Result
    signature: async fn next(&mut self) -> Result<Option<usize>>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Some
      Src: /src/opendal/core/core/src/raw/oio/list/flat_list.rs:82,1
    - Dst: oio::Entry::new
      Src: /src/opendal/core/core/src/raw/oio/list/flat_list.rs:82,1
    - Dst: Metadata::new
      Src: /src/opendal/core/core/src/raw/oio/list/flat_list.rs:82,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - service
    - ctx
    - path
    argTypes:
    - Arc<S>
    - OperationContext
    - '&str'
    constantsTouched: []
    func_position:
      end: 85
      start: 78
    functionDepth: 1
    functionLinenumber: 78
    functionLinenumberEnd: 85
    functionName: FlatLister::new
    functionSourceFile: /src/opendal/core/core/src/raw/oio/list/flat_list.rs
    functionUses: 4
    functionsReached:
    - Metadata::new
    - oio::Entry::new
    - Some
    linkageType: ''
    returnType: FlatLister
    signature: 'pub fn new(service: Arc<S>, ctx: OperationContext, path: &str) ->
      FlatLister<S>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: take
      Src: /src/opendal/core/core/src/raw/oio/list/flat_list.rs:91,1
    - Dst: as_ref
      Src: /src/opendal/core/core/src/raw/oio/list/flat_list.rs:92,1
    - Dst: list
      Src: /src/opendal/core/core/src/raw/oio/list/flat_list.rs:92,1
    - Dst: std::fmt::Result::path
      Src: /src/opendal/core/core/src/raw/oio/list/flat_list.rs:95,1
    - Dst: OpList::new
      Src: /src/opendal/core/core/src/raw/oio/list/flat_list.rs:95,1
    - Dst: Result::kind
      Src: /src/opendal/core/core/src/raw/oio/list/flat_list.rs:98,1
    - Dst: Result::kind
      Src: /src/opendal/core/core/src/raw/oio/list/flat_list.rs:107,1
    - Dst: Err
      Src: /src/opendal/core/core/src/raw/oio/list/flat_list.rs:115,1
    - Dst: Trial::next
      Src: /src/opendal/core/core/src/raw/oio/list/flat_list.rs:118,1
    - Dst: Result::kind
      Src: /src/opendal/core/core/src/raw/oio/list/flat_list.rs:120,1
    - Dst: Err
      Src: /src/opendal/core/core/src/raw/oio/list/flat_list.rs:128,1
    - Dst: push
      Src: /src/opendal/core/core/src/raw/oio/list/flat_list.rs:132,1
    - Dst: Some
      Src: /src/opendal/core/core/src/raw/oio/list/flat_list.rs:132,1
    - Dst: std::fmt::Result::clone
      Src: /src/opendal/core/core/src/raw/oio/list/flat_list.rs:132,1
    - Dst: Result::mode
      Src: /src/opendal/core/core/src/raw/oio/list/flat_list.rs:134,1
    - Dst: Option::is_dir
      Src: /src/opendal/core/core/src/raw/oio/list/flat_list.rs:134,1
    - Dst: Result::path
      Src: /src/opendal/core/core/src/raw/oio/list/flat_list.rs:136,1
    - Dst: std::fmt::Result::path
      Src: /src/opendal/core/core/src/raw/oio/list/flat_list.rs:136,1
    - Dst: Some
      Src: /src/opendal/core/core/src/raw/oio/list/flat_list.rs:137,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/raw/oio/list/flat_list.rs:141,1
    - Dst: Some
      Src: /src/opendal/core/core/src/raw/oio/list/flat_list.rs:141,1
    - Dst: pop
      Src: /src/opendal/core/core/src/raw/oio/list/flat_list.rs:147,1
    - Dst: last_mut
      Src: /src/opendal/core/core/src/raw/oio/list/flat_list.rs:151,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/raw/oio/list/flat_list.rs:153,1
    - Dst: Result::next
      Src: /src/opendal/core/core/src/raw/oio/list/flat_list.rs:156,1
    - Dst: Result::kind
      Src: /src/opendal/core/core/src/raw/oio/list/flat_list.rs:157,1
    - Dst: std::fmt::Result::as_ref
      Src: /src/opendal/core/core/src/raw/oio/list/flat_list.rs:158,1
    - Dst: '&[&''static str]::map'
      Src: /src/opendal/core/core/src/raw/oio/list/flat_list.rs:158,1
    - Dst: crate::Entry::path
      Src: /src/opendal/core/core/src/raw/oio/list/flat_list.rs:158,1
    - Dst: Result::unwrap_or
      Src: /src/opendal/core/core/src/raw/oio/list/flat_list.rs:158,1
    - Dst: Err
      Src: /src/opendal/core/core/src/raw/oio/list/flat_list.rs:165,1
    - Dst: Result::mode
      Src: /src/opendal/core/core/src/raw/oio/list/flat_list.rs:166,1
    - Dst: Option::is_dir
      Src: /src/opendal/core/core/src/raw/oio/list/flat_list.rs:166,1
    - Dst: Result::path
      Src: /src/opendal/core/core/src/raw/oio/list/flat_list.rs:168,1
    - Dst: std::fmt::Result::as_ref
      Src: /src/opendal/core/core/src/raw/oio/list/flat_list.rs:169,1
    - Dst: '&[&''static str]::expect'
      Src: /src/opendal/core/core/src/raw/oio/list/flat_list.rs:169,1
    - Dst: path
      Src: /src/opendal/core/core/src/raw/oio/list/flat_list.rs:169,1
    - Dst: Some
      Src: /src/opendal/core/core/src/raw/oio/list/flat_list.rs:174,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/raw/oio/list/flat_list.rs:178,1
    - Dst: Some
      Src: /src/opendal/core/core/src/raw/oio/list/flat_list.rs:178,1
    - Dst: std::fmt::Result::take
      Src: /src/opendal/core/core/src/raw/oio/list/flat_list.rs:179,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/raw/oio/list/flat_list.rs:181,1
    - Dst: Some
      Src: /src/opendal/core/core/src/raw/oio/list/flat_list.rs:181,1
    - Dst: pop
      Src: /src/opendal/core/core/src/raw/oio/list/flat_list.rs:184,1
    CyclomaticComplexity: 24
    EdgeCount: 24
    ICount: 152
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 190
      start: 89
    functionDepth: 30
    functionLinenumber: 89
    functionLinenumberEnd: 190
    functionName: FlatLister::next
    functionSourceFile: /src/opendal/core/core/src/raw/oio/list/flat_list.rs
    functionUses: 0
    functionsReached:
    - crate::Entry::path
    - push
    - Result::unwrap_or
    - std::fmt::Result::take
    - std::fmt::Result::as_ref
    - Ok
    - Option::is_dir
    - take
    - Result::next
    - pop
    - Result::mode
    - '&[&''static str]::map'
    - Some
    - Result::kind
    - Trial::next
    - Result::path
    - last_mut
    - '&[&''static str]::expect'
    - OpList::new
    - Err
    - list
    - as_ref
    - path
    - std::fmt::Result::clone
    - std::fmt::Result::path
    linkageType: ''
    returnType: Result
    signature: async fn next(&mut self) -> Result<Option<oio::Entry>>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: '&str::to_string'
      Src: /src/opendal/core/core/src/raw/oio/list/page_list.rs:78,1
    - Dst: VecDeque::new
      Src: /src/opendal/core/core/src/raw/oio/list/page_list.rs:79,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - l
    argTypes:
    - L
    constantsTouched: []
    func_position:
      end: 82
      start: 73
    functionDepth: 2
    functionLinenumber: 73
    functionLinenumberEnd: 82
    functionName: PageLister::new
    functionSourceFile: /src/opendal/core/core/src/raw/oio/list/page_list.rs
    functionUses: 33
    functionsReached:
    - VecDeque::new
    - '&str::to_string'
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(l: L) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: pop_front
      Src: /src/opendal/core/core/src/raw/oio/list/page_list.rs:91,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/raw/oio/list/page_list.rs:92,1
    - Dst: Some
      Src: /src/opendal/core/core/src/raw/oio/list/page_list.rs:92,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/raw/oio/list/page_list.rs:95,1
    - Dst: next_page
      Src: /src/opendal/core/core/src/raw/oio/list/page_list.rs:98,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 27
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 100
      start: 89
    functionDepth: 36
    functionLinenumber: 89
    functionLinenumberEnd: 100
    functionName: PageLister::next
    functionSourceFile: /src/opendal/core/core/src/raw/oio/list/page_list.rs
    functionUses: 0
    functionsReached:
    - Some
    - next_page
    - Ok
    - pop_front
    linkageType: ''
    returnType: Result
    signature: async fn next(&mut self) -> Result<Option<oio::Entry>>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::to_string
      Src: /src/opendal/core/core/src/raw/oio/list/prefix_list.rs:47,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - lister
    - prefix
    argTypes:
    - L
    - '&str'
    constantsTouched: []
    func_position:
      end: 49
      start: 44
    functionDepth: 2
    functionLinenumber: 44
    functionLinenumberEnd: 49
    functionName: PrefixLister::new
    functionSourceFile: /src/opendal/core/core/src/raw/oio/list/prefix_list.rs
    functionUses: 1
    functionsReached:
    - Result::to_string
    linkageType: ''
    returnType: PrefixLister
    signature: 'pub fn new(lister: L, prefix: &str) -> PrefixLister<L>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: next
      Src: /src/opendal/core/core/src/raw/oio/list/prefix_list.rs:58,1
    - Dst: Result::path
      Src: /src/opendal/core/core/src/raw/oio/list/prefix_list.rs:59,1
    - Dst: starts_with
      Src: /src/opendal/core/core/src/raw/oio/list/prefix_list.rs:59,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 63
      start: 56
    functionDepth: 34
    functionLinenumber: 56
    functionLinenumberEnd: 63
    functionName: PrefixLister::next
    functionSourceFile: /src/opendal/core/core/src/raw/oio/list/prefix_list.rs
    functionUses: 0
    functionsReached:
    - next
    - starts_with
    - Result::path
    linkageType: ''
    returnType: Result
    signature: async fn next(&mut self) -> Result<Option<oio::Entry>>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/core/core/src/raw/oio/write/api.rs:48,1
    - Dst: Error::new
      Src: /src/opendal/core/core/src/raw/oio/write/api.rs:48,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 52
      start: 47
    functionDepth: 36
    functionLinenumber: 47
    functionLinenumberEnd: 52
    functionName: ()::close
    functionSourceFile: /src/opendal/core/core/src/raw/oio/write/api.rs
    functionUses: 0
    functionsReached:
    - Error::new
    - Err
    linkageType: ''
    returnType: Result
    signature: async fn close(&mut self) -> Result<Metadata>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Box::pin
      Src: /src/opendal/core/core/src/raw/oio/delete/api.rs:76,1
    - Dst: Delete::delete
      Src: /src/opendal/core/core/src/raw/oio/delete/api.rs:76,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - path
    - args
    argTypes:
    - '&''a str'
    - OpDelete
    constantsTouched: []
    func_position:
      end: 77
      start: 75
    functionDepth: 32
    functionLinenumber: 75
    functionLinenumberEnd: 77
    functionName: T::delete_dyn
    functionSourceFile: /src/opendal/core/core/src/raw/oio/delete/api.rs
    functionUses: 0
    functionsReached:
    - Box::pin
    - Delete::delete
    linkageType: ''
    returnType: BoxedFuture
    signature: 'fn delete_dyn<''a>(&''a mut self, path: &''a str, args: OpDelete)
      -> BoxedFuture<''a, Result<()>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Box::pin
      Src: /src/opendal/core/core/src/raw/oio/write/api.rs:80,1
    - Dst: T::close
      Src: /src/opendal/core/core/src/raw/oio/write/api.rs:80,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 81
      start: 79
    functionDepth: 2
    functionLinenumber: 79
    functionLinenumberEnd: 81
    functionName: T::close_dyn
    functionSourceFile: /src/opendal/core/core/src/raw/oio/write/api.rs
    functionUses: 0
    functionsReached:
    - Box::pin
    - T::close
    linkageType: ''
    returnType: BoxedFuture
    signature: fn close_dyn(&mut self) -> BoxedFuture<'_, Result<Metadata>>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Box::deref_mut
      Src: /src/opendal/core/core/src/raw/oio/delete/api.rs:90,1
    - Dst: '&mut HashMap::delete_dyn'
      Src: /src/opendal/core/core/src/raw/oio/delete/api.rs:90,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - path
    - args
    argTypes:
    - '&''a str'
    - OpDelete
    constantsTouched: []
    func_position:
      end: 91
      start: 85
    functionDepth: 33
    functionLinenumber: 85
    functionLinenumberEnd: 91
    functionName: Box::delete
    functionSourceFile: /src/opendal/core/core/src/raw/oio/delete/api.rs
    functionUses: 0
    functionsReached:
    - '&mut HashMap::delete_dyn'
    - Box::deref_mut
    linkageType: ''
    returnType: impl Future
    signature: 'fn delete<''a>(&''a mut self,path: &''a str,args: OpDelete,) -> impl
      Future<Output = Result<()>> + MaybeSend + ''a'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Box::deref_mut
      Src: /src/opendal/core/core/src/raw/oio/write/api.rs:94,1
    - Dst: '&mut HashMap::close_dyn'
      Src: /src/opendal/core/core/src/raw/oio/write/api.rs:94,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 95
      start: 93
    functionDepth: 3
    functionLinenumber: 93
    functionLinenumberEnd: 95
    functionName: Box::close
    functionSourceFile: /src/opendal/core/core/src/raw/oio/write/api.rs
    functionUses: 0
    functionsReached:
    - Box::deref_mut
    - '&mut HashMap::close_dyn'
    linkageType: ''
    returnType: Result
    signature: async fn close(&mut self) -> Result<Metadata>
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - inner
    argTypes:
    - D
    constantsTouched: []
    func_position:
      end: 46
      start: 44
    functionDepth: 0
    functionLinenumber: 44
    functionLinenumberEnd: 46
    functionName: OneShotDeleter::new
    functionSourceFile: /src/opendal/core/core/src/raw/oio/delete/one_shot_delete.rs
    functionUses: 53
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(inner: D) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: delete_once
      Src: /src/opendal/core/core/src/raw/oio/delete/one_shot_delete.rs:51,1
    - Dst: to_string
      Src: /src/opendal/core/core/src/raw/oio/delete/one_shot_delete.rs:51,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - path
    - args
    argTypes:
    - '&str'
    - OpDelete
    constantsTouched: []
    func_position:
      end: 52
      start: 50
    functionDepth: 33
    functionLinenumber: 50
    functionLinenumberEnd: 52
    functionName: OneShotDeleter::delete
    functionSourceFile: /src/opendal/core/core/src/raw/oio/delete/one_shot_delete.rs
    functionUses: 0
    functionsReached:
    - delete_once
    - to_string
    linkageType: ''
    returnType: Result
    signature: 'async fn delete(&mut self, path: &str, args: OpDelete) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/core/core/src/raw/oio/delete/one_shot_delete.rs:55,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 56
      start: 54
    functionDepth: 0
    functionLinenumber: 54
    functionLinenumberEnd: 56
    functionName: OneShotDeleter::close
    functionSourceFile: /src/opendal/core/core/src/raw/oio/delete/one_shot_delete.rs
    functionUses: 0
    functionsReached:
    - Ok
    linkageType: ''
    returnType: Result
    signature: async fn close(&mut self) -> Result<()>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Option<usize>::unwrap_or
      Src: /src/opendal/core/core/src/raw/oio/delete/batch_delete.rs:72,1
    - Dst: HashSet::default
      Src: /src/opendal/core/core/src/raw/oio/delete/batch_delete.rs:76,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - inner
    - max_batch_size
    argTypes:
    - D
    - Option<usize>
    constantsTouched: []
    func_position:
      end: 79
      start: 67
    functionDepth: 3
    functionLinenumber: 67
    functionLinenumberEnd: 79
    functionName: BatchDeleter::new
    functionSourceFile: /src/opendal/core/core/src/raw/oio/delete/batch_delete.rs
    functionUses: 9
    functionsReached:
    - Option<usize>::unwrap_or
    - HashSet::default
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(inner: D, max_batch_size: Option<usize>) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: is_empty
      Src: /src/opendal/core/core/src/raw/oio/delete/batch_delete.rs:82,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/raw/oio/delete/batch_delete.rs:83,1
    - Dst: len
      Src: /src/opendal/core/core/src/raw/oio/delete/batch_delete.rs:86,1
    - Dst: iter
      Src: /src/opendal/core/core/src/raw/oio/delete/batch_delete.rs:87,1
    - Dst: next
      Src: /src/opendal/core/core/src/raw/oio/delete/batch_delete.rs:87,1
    - Dst: expect
      Src: /src/opendal/core/core/src/raw/oio/delete/batch_delete.rs:87,1
    - Dst: clone
      Src: /src/opendal/core/core/src/raw/oio/delete/batch_delete.rs:87,1
    - Dst: delete_once
      Src: /src/opendal/core/core/src/raw/oio/delete/batch_delete.rs:93,1
    - Dst: clear
      Src: /src/opendal/core/core/src/raw/oio/delete/batch_delete.rs:94,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/raw/oio/delete/batch_delete.rs:95,1
    - Dst: iter
      Src: /src/opendal/core/core/src/raw/oio/delete/batch_delete.rs:98,1
    - Dst: cloned
      Src: /src/opendal/core/core/src/raw/oio/delete/batch_delete.rs:98,1
    - Dst: collect
      Src: /src/opendal/core/core/src/raw/oio/delete/batch_delete.rs:98,1
    - Dst: delete_batch
      Src: /src/opendal/core/core/src/raw/oio/delete/batch_delete.rs:99,1
    - Dst: is_empty
      Src: /src/opendal/core/core/src/raw/oio/delete/batch_delete.rs:101,1
    - Dst: Err
      Src: /src/opendal/core/core/src/raw/oio/delete/batch_delete.rs:102,1
    - Dst: Error::new
      Src: /src/opendal/core/core/src/raw/oio/delete/batch_delete.rs:102,1
    - Dst: len
      Src: /src/opendal/core/core/src/raw/oio/delete/batch_delete.rs:107,1
    - Dst: len
      Src: /src/opendal/core/core/src/raw/oio/delete/batch_delete.rs:107,1
    - Dst: len
      Src: /src/opendal/core/core/src/raw/oio/delete/batch_delete.rs:107,1
    - Dst: Err
      Src: /src/opendal/core/core/src/raw/oio/delete/batch_delete.rs:108,1
    - Dst: Error::new
      Src: /src/opendal/core/core/src/raw/oio/delete/batch_delete.rs:108,1
    - Dst: remove
      Src: /src/opendal/core/core/src/raw/oio/delete/batch_delete.rs:116,1
    - Dst: Error::is_temporary
      Src: /src/opendal/core/core/src/raw/oio/delete/batch_delete.rs:121,1
    - Dst: Err
      Src: /src/opendal/core/core/src/raw/oio/delete/batch_delete.rs:122,1
    - Dst: Error::with_context
      Src: /src/opendal/core/core/src/raw/oio/delete/batch_delete.rs:122,1
    - Dst: Self::with_context
      Src: /src/opendal/core/core/src/raw/oio/delete/batch_delete.rs:122,1
    - Dst: version
      Src: /src/opendal/core/core/src/raw/oio/delete/batch_delete.rs:124,1
    - Dst: Result::unwrap_or
      Src: /src/opendal/core/core/src/raw/oio/delete/batch_delete.rs:124,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/raw/oio/delete/batch_delete.rs:128,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 103
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 129
      start: 81
    functionDepth: 33
    functionLinenumber: 81
    functionLinenumberEnd: 129
    functionName: BatchDeleter::flush_buffer
    functionSourceFile: /src/opendal/core/core/src/raw/oio/delete/batch_delete.rs
    functionUses: 2
    functionsReached:
    - collect
    - remove
    - clone
    - Self::with_context
    - Result::unwrap_or
    - iter
    - expect
    - Ok
    - Error::with_context
    - len
    - next
    - delete_batch
    - is_empty
    - Error::is_temporary
    - cloned
    - delete_once
    - Err
    - Error::new
    - clear
    - version
    linkageType: ''
    returnType: Result
    signature: async fn flush_buffer(&mut self) -> Result<usize>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: insert
      Src: /src/opendal/core/core/src/raw/oio/delete/batch_delete.rs:134,1
    - Dst: to_string
      Src: /src/opendal/core/core/src/raw/oio/delete/batch_delete.rs:134,1
    - Dst: len
      Src: /src/opendal/core/core/src/raw/oio/delete/batch_delete.rs:135,1
    - Dst: BatchDeleter::flush_buffer
      Src: /src/opendal/core/core/src/raw/oio/delete/batch_delete.rs:136,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/raw/oio/delete/batch_delete.rs:137,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/raw/oio/delete/batch_delete.rs:140,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 24
    argCount: 2
    argNames:
    - path
    - args
    argTypes:
    - '&str'
    - OpDelete
    constantsTouched: []
    func_position:
      end: 141
      start: 133
    functionDepth: 34
    functionLinenumber: 133
    functionLinenumberEnd: 141
    functionName: BatchDeleter::delete
    functionSourceFile: /src/opendal/core/core/src/raw/oio/delete/batch_delete.rs
    functionUses: 0
    functionsReached:
    - to_string
    - insert
    - Ok
    - BatchDeleter::flush_buffer
    - len
    linkageType: ''
    returnType: Result
    signature: 'async fn delete(&mut self, path: &str, args: OpDelete) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: BatchDeleter::flush_buffer
      Src: /src/opendal/core/core/src/raw/oio/delete/batch_delete.rs:145,1
    - Dst: is_empty
      Src: /src/opendal/core/core/src/raw/oio/delete/batch_delete.rs:147,1
    - Dst: Err
      Src: /src/opendal/core/core/src/raw/oio/delete/batch_delete.rs:152,1
    - Dst: Error::new
      Src: /src/opendal/core/core/src/raw/oio/delete/batch_delete.rs:152,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/raw/oio/delete/batch_delete.rs:159,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 22
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 160
      start: 143
    functionDepth: 34
    functionLinenumber: 143
    functionLinenumberEnd: 160
    functionName: BatchDeleter::close
    functionSourceFile: /src/opendal/core/core/src/raw/oio/delete/batch_delete.rs
    functionUses: 0
    functionsReached:
    - Ok
    - is_empty
    - Err
    - Error::new
    - BatchDeleter::flush_buffer
    linkageType: ''
    returnType: Result
    signature: async fn close(&mut self) -> Result<()>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/core/core/src/raw/oio/write/api.rs:55,1
    - Dst: Error::new
      Src: /src/opendal/core/core/src/raw/oio/write/api.rs:55,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 59
      start: 54
    functionDepth: 36
    functionLinenumber: 54
    functionLinenumberEnd: 59
    functionName: ()::abort
    functionSourceFile: /src/opendal/core/core/src/raw/oio/write/api.rs
    functionUses: 0
    functionsReached:
    - Error::new
    - Err
    linkageType: ''
    returnType: Result
    signature: async fn abort(&mut self) -> Result<()>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Some
      Src: /src/opendal/core/core/src/raw/oio/copy/api.rs:79,1
    - Dst: Box::pin
      Src: /src/opendal/core/core/src/raw/oio/copy/api.rs:79,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - fut
    argTypes:
    - impl Future<Output = Result<Metadata>> + MaybeSend + 'static
    constantsTouched: []
    func_position:
      end: 83
      start: 76
    functionDepth: 0
    functionLinenumber: 76
    functionLinenumberEnd: 83
    functionName: OneShotCopier::new
    functionSourceFile: /src/opendal/core/core/src/raw/oio/copy/api.rs
    functionUses: 21
    functionsReached:
    - Box::pin
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(fut: impl Future<Output = Result<Metadata>> + MaybeSend
      + ''static) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Some
      Src: /src/opendal/core/core/src/raw/oio/copy/api.rs:95,1
    - Dst: Box::new
      Src: /src/opendal/core/core/src/raw/oio/copy/api.rs:95,1
    - Dst: Box::pin
      Src: /src/opendal/core/core/src/raw/oio/copy/api.rs:96,1
    - Dst: factory
      Src: /src/opendal/core/core/src/raw/oio/copy/api.rs:96,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - factory
    argTypes:
    - F
    constantsTouched: []
    func_position:
      end: 102
      start: 89
    functionDepth: 6
    functionLinenumber: 89
    functionLinenumberEnd: 102
    functionName: OneShotCopier::new_with
    functionSourceFile: /src/opendal/core/core/src/raw/oio/copy/api.rs
    functionUses: 2
    functionsReached:
    - Box::new
    - Box::pin
    - factory
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn new_with<F, Fut>(mut factory: F) -> SelfwhereF: FnMut() ->
      Fut + ''static,Fut: Future<Output = Result<Metadata>> + MaybeSend + ''static,'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Some
      Src: /src/opendal/core/core/src/raw/oio/copy/api.rs:109,1
    - Dst: Metadata::default
      Src: /src/opendal/core/core/src/raw/oio/copy/api.rs:109,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 112
      start: 105
    functionDepth: 3
    functionLinenumber: 105
    functionLinenumberEnd: 112
    functionName: OneShotCopier::completed
    functionSourceFile: /src/opendal/core/core/src/raw/oio/copy/api.rs
    functionUses: 0
    functionsReached:
    - Metadata::default
    - Some
    linkageType: ''
    returnType: Self
    signature: pub fn completed() -> Self
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: is_none
      Src: /src/opendal/core/core/src/raw/oio/copy/api.rs:117,1
    - Dst: OneShotCopier::close
      Src: /src/opendal/core/core/src/raw/oio/copy/api.rs:118,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/raw/oio/copy/api.rs:121,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 122
      start: 116
    functionDepth: 37
    functionLinenumber: 116
    functionLinenumberEnd: 122
    functionName: OneShotCopier::next
    functionSourceFile: /src/opendal/core/core/src/raw/oio/copy/api.rs
    functionUses: 0
    functionsReached:
    - is_none
    - Ok
    - OneShotCopier::close
    linkageType: ''
    returnType: Result
    signature: async fn next(&mut self) -> Result<Option<usize>>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: clone
      Src: /src/opendal/core/core/src/raw/oio/copy/api.rs:125,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/raw/oio/copy/api.rs:126,1
    - Dst: Err
      Src: /src/opendal/core/core/src/raw/oio/copy/api.rs:130,1
    - Dst: Error::new
      Src: /src/opendal/core/core/src/raw/oio/copy/api.rs:130,1
    - Dst: Self::set_persistent
      Src: /src/opendal/core/core/src/raw/oio/copy/api.rs:130,1
    - Dst: is_none
      Src: /src/opendal/core/core/src/raw/oio/copy/api.rs:137,1
    - Dst: as_mut
      Src: /src/opendal/core/core/src/raw/oio/copy/api.rs:138,1
    - Dst: Some
      Src: /src/opendal/core/core/src/raw/oio/copy/api.rs:140,1
    - Dst: factory
      Src: /src/opendal/core/core/src/raw/oio/copy/api.rs:140,1
    - Dst: take
      Src: /src/opendal/core/core/src/raw/oio/copy/api.rs:143,1
    - Dst: Some
      Src: /src/opendal/core/core/src/raw/oio/copy/api.rs:147,1
    - Dst: Result::clone
      Src: /src/opendal/core/core/src/raw/oio/copy/api.rs:147,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/raw/oio/copy/api.rs:148,1
    - Dst: is_none
      Src: /src/opendal/core/core/src/raw/oio/copy/api.rs:151,1
    - Dst: Err
      Src: /src/opendal/core/core/src/raw/oio/copy/api.rs:153,1
    - Dst: Error::set_persistent
      Src: /src/opendal/core/core/src/raw/oio/copy/api.rs:153,1
    - Dst: Err
      Src: /src/opendal/core/core/src/raw/oio/copy/api.rs:156,1
    - Dst: Err
      Src: /src/opendal/core/core/src/raw/oio/copy/api.rs:162,1
    - Dst: Error::new
      Src: /src/opendal/core/core/src/raw/oio/copy/api.rs:162,1
    - Dst: Self::set_persistent
      Src: /src/opendal/core/core/src/raw/oio/copy/api.rs:162,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 73
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 167
      start: 124
    functionDepth: 36
    functionLinenumber: 124
    functionLinenumberEnd: 167
    functionName: OneShotCopier::close
    functionSourceFile: /src/opendal/core/core/src/raw/oio/copy/api.rs
    functionUses: 1
    functionsReached:
    - is_none
    - as_mut
    - Result::clone
    - Ok
    - clone
    - factory
    - Error::new
    - Err
    - Some
    - take
    - Error::set_persistent
    - Self::set_persistent
    linkageType: ''
    returnType: Result
    signature: async fn close(&mut self) -> Result<Metadata>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/core/core/src/raw/oio/copy/api.rs:174,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 175
      start: 169
    functionDepth: 0
    functionLinenumber: 169
    functionLinenumberEnd: 175
    functionName: OneShotCopier::abort
    functionSourceFile: /src/opendal/core/core/src/raw/oio/copy/api.rs
    functionUses: 0
    functionsReached:
    - Ok
    linkageType: ''
    returnType: Result
    signature: async fn abort(&mut self) -> Result<()>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Box::pin
      Src: /src/opendal/core/core/src/raw/oio/write/api.rs:84,1
    - Dst: T::abort
      Src: /src/opendal/core/core/src/raw/oio/write/api.rs:84,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 85
      start: 83
    functionDepth: 31
    functionLinenumber: 83
    functionLinenumberEnd: 85
    functionName: T::abort_dyn
    functionSourceFile: /src/opendal/core/core/src/raw/oio/write/api.rs
    functionUses: 0
    functionsReached:
    - Box::pin
    - T::abort
    linkageType: ''
    returnType: BoxedFuture
    signature: fn abort_dyn(&mut self) -> BoxedFuture<'_, Result<()>>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Box::deref_mut
      Src: /src/opendal/core/core/src/raw/oio/write/api.rs:98,1
    - Dst: '&mut HashMap::abort_dyn'
      Src: /src/opendal/core/core/src/raw/oio/write/api.rs:98,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 99
      start: 97
    functionDepth: 32
    functionLinenumber: 97
    functionLinenumberEnd: 99
    functionName: Box::abort
    functionSourceFile: /src/opendal/core/core/src/raw/oio/write/api.rs
    functionUses: 0
    functionsReached:
    - '&mut HashMap::abort_dyn'
    - Box::deref_mut
    linkageType: ''
    returnType: Result
    signature: async fn abort(&mut self) -> Result<()>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Arc::new
      Src: /src/opendal/core/core/src/raw/oio/copy/api.rs:228,1
    - Dst: AtomicUsize::new
      Src: /src/opendal/core/core/src/raw/oio/copy/api.rs:228,1
    - Dst: Self::clone
      Src: /src/opendal/core/core/src/raw/oio/copy/api.rs:229,1
    - Dst: OneShotCopier::new_with
      Src: /src/opendal/core/core/src/raw/oio/copy/api.rs:231,1
    - Dst: Self::clone
      Src: /src/opendal/core/core/src/raw/oio/copy/api.rs:232,1
    - Dst: Self::fetch_add
      Src: /src/opendal/core/core/src/raw/oio/copy/api.rs:235,1
    - Dst: Err
      Src: /src/opendal/core/core/src/raw/oio/copy/api.rs:236,1
    - Dst: Error::new
      Src: /src/opendal/core/core/src/raw/oio/copy/api.rs:237,1
    - Dst: Self::set_temporary
      Src: /src/opendal/core/core/src/raw/oio/copy/api.rs:237,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/raw/oio/copy/api.rs:241,1
    - Dst: Metadata::new
      Src: /src/opendal/core/core/src/raw/oio/copy/api.rs:241,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 25
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 248
      start: 227
    functionDepth: 36
    functionLinenumber: 227
    functionLinenumberEnd: 248
    functionName: tests::one_shot_copier_rebuilds_future_after_error
    functionSourceFile: /src/opendal/core/core/src/raw/oio/copy/api.rs
    functionUses: 0
    functionsReached:
    - Metadata::new
    - AtomicUsize::new
    - Ok
    - Arc::new
    - OneShotCopier::new_with
    - Err
    - Error::new
    - Self::set_temporary
    - Self::clone
    - Self::fetch_add
    linkageType: ''
    returnType: void
    signature: async fn one_shot_copier_rebuilds_future_after_error()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: OneShotCopier::new
      Src: /src/opendal/core/core/src/raw/oio/copy/api.rs:252,1
    - Dst: Err
      Src: /src/opendal/core/core/src/raw/oio/copy/api.rs:253,1
    - Dst: Error::new
      Src: /src/opendal/core/core/src/raw/oio/copy/api.rs:253,1
    - Dst: Self::set_temporary
      Src: /src/opendal/core/core/src/raw/oio/copy/api.rs:253,1
    - Dst: Result::close
      Src: /src/opendal/core/core/src/raw/oio/copy/api.rs:256,1
    - Dst: unwrap_err
      Src: /src/opendal/core/core/src/raw/oio/copy/api.rs:256,1
    - Dst: Result::close
      Src: /src/opendal/core/core/src/raw/oio/copy/api.rs:260,1
    - Dst: unwrap_err
      Src: /src/opendal/core/core/src/raw/oio/copy/api.rs:260,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 19
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 263
      start: 251
    functionDepth: 36
    functionLinenumber: 251
    functionLinenumberEnd: 263
    functionName: tests::one_shot_copier_does_not_succeed_after_consumed_error
    functionSourceFile: /src/opendal/core/core/src/raw/oio/copy/api.rs
    functionUses: 0
    functionsReached:
    - unwrap_err
    - Error::new
    - Result::close
    - Err
    - Self::set_temporary
    - OneShotCopier::new
    linkageType: ''
    returnType: void
    signature: async fn one_shot_copier_does_not_succeed_after_consumed_error()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Capability::default
      Src: /src/opendal/core/core/src/raw/oio/copy/multipart_copy.rs:86,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 87
      start: 85
    functionDepth: 3
    functionLinenumber: 85
    functionLinenumberEnd: 87
    functionName: Executor::into_multipart_copy_context
    functionSourceFile: /src/opendal/core/core/src/raw/oio/copy/multipart_copy.rs
    functionUses: 0
    functionsReached:
    - Capability::default
    linkageType: ''
    returnType: (Executor, Capability)
    signature: fn into_multipart_copy_context(self) -> (Executor, Capability)
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 93
      start: 91
    functionDepth: 0
    functionLinenumber: 91
    functionLinenumberEnd: 93
    functionName: (Executor, Capability)::into_multipart_copy_context
    functionSourceFile: /src/opendal/core/core/src/raw/oio/copy/multipart_copy.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: (Executor, Capability)
    signature: fn into_multipart_copy_context(self) -> (Executor, Capability)
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: clone
      Src: /src/opendal/core/core/src/raw/oio/copy/block_copy.rs:74,1
    - Dst: clone
      Src: /src/opendal/core/core/src/raw/oio/copy/block_copy.rs:75,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 80
      start: 72
    functionDepth: 2
    functionLinenumber: 72
    functionLinenumberEnd: 80
    functionName: CopyInput::clone
    functionSourceFile: /src/opendal/core/core/src/raw/oio/copy/block_copy.rs
    functionUses: 0
    functionsReached:
    - clone
    linkageType: ''
    returnType: Self
    signature: fn clone(&self) -> Self
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: OperationContext::into_multipart_copy_context
      Src: /src/opendal/core/core/src/raw/oio/copy/multipart_copy.rs:143,1
    - Dst: Arc::new
      Src: /src/opendal/core/core/src/raw/oio/copy/multipart_copy.rs:144,1
    - Dst: max
      Src: /src/opendal/core/core/src/raw/oio/copy/multipart_copy.rs:145,1
    - Dst: Self::clone
      Src: /src/opendal/core/core/src/raw/oio/copy/multipart_copy.rs:149,1
    - Dst: Vec::new
      Src: /src/opendal/core/core/src/raw/oio/copy/multipart_copy.rs:152,1
    - Dst: ConcurrentTasks::new
      Src: /src/opendal/core/core/src/raw/oio/copy/multipart_copy.rs:162,1
    - Dst: Box::pin
      Src: /src/opendal/core/core/src/raw/oio/copy/multipart_copy.rs:163,1
    - Dst: size
      Src: /src/opendal/core/core/src/raw/oio/copy/multipart_copy.rs:164,1
    - Dst: expect
      Src: /src/opendal/core/core/src/raw/oio/copy/multipart_copy.rs:164,1
    - Dst: copy_part
      Src: /src/opendal/core/core/src/raw/oio/copy/multipart_copy.rs:169,1
    - Dst: timeout
      Src: /src/opendal/core/core/src/raw/oio/copy/multipart_copy.rs:173,1
    - Dst: map
      Src: /src/opendal/core/core/src/raw/oio/copy/multipart_copy.rs:174,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 34
    argCount: 6
    argNames:
    - context
    - inner
    - source_content_length_hint
    - copy_once_threshold
    - part_size
    - concurrent
    argTypes:
    - impl IntoMultipartCopyContext
    - C
    - Option<u64>
    - u64
    - u64
    - usize
    constantsTouched: []
    func_position:
      end: 195
      start: 135
    functionDepth: 31
    functionLinenumber: 135
    functionLinenumberEnd: 195
    functionName: MultipartCopier::new
    functionSourceFile: /src/opendal/core/core/src/raw/oio/copy/multipart_copy.rs
    functionUses: 5
    functionsReached:
    - OperationContext::into_multipart_copy_context
    - expect
    - Arc::new
    - timeout
    - size
    - map
    - ConcurrentTasks::new
    - max
    - Self::clone
    - Vec::new
    - Box::pin
    - copy_part
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(context: impl IntoMultipartCopyContext,inner: C,source_content_length_hint:
      Option<u64>,copy_once_threshold: u64,part_size: u64,concurrent: usize,) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/core/core/src/raw/oio/copy/multipart_copy.rs:199,1
    - Dst: source_metadata
      Src: /src/opendal/core/core/src/raw/oio/copy/multipart_copy.rs:201,1
    - Dst: content_length
      Src: /src/opendal/core/core/src/raw/oio/copy/multipart_copy.rs:201,1
    - Dst: Some
      Src: /src/opendal/core/core/src/raw/oio/copy/multipart_copy.rs:202,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/raw/oio/copy/multipart_copy.rs:203,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 206
      start: 197
    functionDepth: 33
    functionLinenumber: 197
    functionLinenumberEnd: 206
    functionName: MultipartCopier::source_size
    functionSourceFile: /src/opendal/core/core/src/raw/oio/copy/multipart_copy.rs
    functionUses: 1
    functionsReached:
    - content_length
    - source_metadata
    - Ok
    - Some
    linkageType: ''
    returnType: Result
    signature: async fn source_size(&mut self) -> Result<u64>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/core/core/src/raw/oio/copy/multipart_copy.rs:217,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/raw/oio/copy/multipart_copy.rs:221,1
    - Dst: div_ceil
      Src: /src/opendal/core/core/src/raw/oio/copy/multipart_copy.rs:224,1
    - Dst: Result::div_ceil
      Src: /src/opendal/core/core/src/raw/oio/copy/multipart_copy.rs:225,1
    - Dst: Err
      Src: /src/opendal/core/core/src/raw/oio/copy/multipart_copy.rs:227,1
    - Dst: Error::new
      Src: /src/opendal/core/core/src/raw/oio/copy/multipart_copy.rs:227,1
    - Dst: Self::with_context
      Src: /src/opendal/core/core/src/raw/oio/copy/multipart_copy.rs:227,1
    - Dst: Self::with_context
      Src: /src/opendal/core/core/src/raw/oio/copy/multipart_copy.rs:227,1
    - Dst: Self::with_context
      Src: /src/opendal/core/core/src/raw/oio/copy/multipart_copy.rs:227,1
    - Dst: Self::with_context
      Src: /src/opendal/core/core/src/raw/oio/copy/multipart_copy.rs:227,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/raw/oio/copy/multipart_copy.rs:237,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 41
    argCount: 1
    argNames:
    - source_size
    argTypes:
    - u64
    constantsTouched: []
    func_position:
      end: 238
      start: 211
    functionDepth: 36
    functionLinenumber: 211
    functionLinenumberEnd: 238
    functionName: MultipartCopier::validate_part_count
    functionSourceFile: /src/opendal/core/core/src/raw/oio/copy/multipart_copy.rs
    functionUses: 1
    functionsReached:
    - div_ceil
    - Ok
    - Result::div_ceil
    - Error::new
    - Err
    - Self::with_context
    linkageType: ''
    returnType: Result
    signature: 'fn validate_part_count(&self, source_size: u64) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: clone
      Src: /src/opendal/core/core/src/raw/oio/copy/multipart_copy.rs:241,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/raw/oio/copy/multipart_copy.rs:242,1
    - Dst: initiate_copy
      Src: /src/opendal/core/core/src/raw/oio/copy/multipart_copy.rs:244,1
    - Dst: Arc::new
      Src: /src/opendal/core/core/src/raw/oio/copy/multipart_copy.rs:245,1
    - Dst: Some
      Src: /src/opendal/core/core/src/raw/oio/copy/multipart_copy.rs:246,1
    - Dst: Result::clone
      Src: /src/opendal/core/core/src/raw/oio/copy/multipart_copy.rs:246,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/raw/oio/copy/multipart_copy.rs:247,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 19
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 250
      start: 240
    functionDepth: 40
    functionLinenumber: 240
    functionLinenumberEnd: 250
    functionName: MultipartCopier::upload_id
    functionSourceFile: /src/opendal/core/core/src/raw/oio/copy/multipart_copy.rs
    functionUses: 1
    functionsReached:
    - Result::clone
    - initiate_copy
    - Ok
    - Arc::new
    - clone
    - Some
    linkageType: ''
    returnType: Result
    signature: async fn upload_id(&mut self) -> Result<Arc<String>>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: clone
      Src: /src/opendal/core/core/src/raw/oio/copy/multipart_copy.rs:254,1
    - Dst: has_remaining
      Src: /src/opendal/core/core/src/raw/oio/copy/multipart_copy.rs:257,1
    - Dst: min
      Src: /src/opendal/core/core/src/raw/oio/copy/multipart_copy.rs:260,1
    - Dst: BytesRange::new
      Src: /src/opendal/core/core/src/raw/oio/copy/multipart_copy.rs:261,1
    - Dst: Some
      Src: /src/opendal/core/core/src/raw/oio/copy/multipart_copy.rs:261,1
    - Dst: clone
      Src: /src/opendal/core/core/src/raw/oio/copy/multipart_copy.rs:264,1
    - Dst: Self::clone
      Src: /src/opendal/core/core/src/raw/oio/copy/multipart_copy.rs:265,1
    - Dst: Result::clone
      Src: /src/opendal/core/core/src/raw/oio/copy/multipart_copy.rs:266,1
    - Dst: execute
      Src: /src/opendal/core/core/src/raw/oio/copy/multipart_copy.rs:272,1
    - Dst: DeleteInput::clone
      Src: /src/opendal/core/core/src/raw/oio/copy/multipart_copy.rs:272,1
    - Dst: Error::is_temporary
      Src: /src/opendal/core/core/src/raw/oio/copy/multipart_copy.rs:274,1
    - Dst: Err
      Src: /src/opendal/core/core/src/raw/oio/copy/multipart_copy.rs:275,1
    - Dst: has_result
      Src: /src/opendal/core/core/src/raw/oio/copy/multipart_copy.rs:283,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/raw/oio/copy/multipart_copy.rs:288,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 61
    argCount: 2
    argNames:
    - upload_id
    - source_size
    argTypes:
    - Arc<String>
    - u64
    constantsTouched: []
    func_position:
      end: 289
      start: 252
    functionDepth: 36
    functionLinenumber: 252
    functionLinenumberEnd: 289
    functionName: MultipartCopier::fill_tasks
    functionSourceFile: /src/opendal/core/core/src/raw/oio/copy/multipart_copy.rs
    functionUses: 1
    functionsReached:
    - Result::clone
    - DeleteInput::clone
    - Ok
    - clone
    - has_remaining
    - Some
    - Err
    - Error::is_temporary
    - min
    - has_result
    - Self::clone
    - execute
    - BytesRange::new
    linkageType: ''
    returnType: Result
    signature: 'async fn fill_tasks(&mut self, upload_id: Arc<String>, source_size:
      u64) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/core/core/src/raw/oio/copy/multipart_copy.rs:298,1
    - Dst: MultipartCopier::source_size
      Src: /src/opendal/core/core/src/raw/oio/copy/multipart_copy.rs:301,1
    - Dst: is_none
      Src: /src/opendal/core/core/src/raw/oio/copy/multipart_copy.rs:303,1
    - Dst: Some
      Src: /src/opendal/core/core/src/raw/oio/copy/multipart_copy.rs:304,1
    - Dst: copy_once
      Src: /src/opendal/core/core/src/raw/oio/copy/multipart_copy.rs:304,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/raw/oio/copy/multipart_copy.rs:306,1
    - Dst: is_none
      Src: /src/opendal/core/core/src/raw/oio/copy/multipart_copy.rs:310,1
    - Dst: MultipartCopier::validate_part_count
      Src: /src/opendal/core/core/src/raw/oio/copy/multipart_copy.rs:311,1
    - Dst: MultipartCopier::upload_id
      Src: /src/opendal/core/core/src/raw/oio/copy/multipart_copy.rs:314,1
    - Dst: MultipartCopier::fill_tasks
      Src: /src/opendal/core/core/src/raw/oio/copy/multipart_copy.rs:315,1
    - Dst: Result::clone
      Src: /src/opendal/core/core/src/raw/oio/copy/multipart_copy.rs:315,1
    - Dst: next
      Src: /src/opendal/core/core/src/raw/oio/copy/multipart_copy.rs:318,1
    - Dst: try_into
      Src: /src/opendal/core/core/src/raw/oio/copy/multipart_copy.rs:320,1
    - Dst: map_err
      Src: /src/opendal/core/core/src/raw/oio/copy/multipart_copy.rs:320,1
    - Dst: Error::new
      Src: /src/opendal/core/core/src/raw/oio/copy/multipart_copy.rs:321,1
    - Dst: push
      Src: /src/opendal/core/core/src/raw/oio/copy/multipart_copy.rs:326,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/raw/oio/copy/multipart_copy.rs:327,1
    - Dst: Some
      Src: /src/opendal/core/core/src/raw/oio/copy/multipart_copy.rs:327,1
    - Dst: Error::is_temporary
      Src: /src/opendal/core/core/src/raw/oio/copy/multipart_copy.rs:329,1
    - Dst: Err
      Src: /src/opendal/core/core/src/raw/oio/copy/multipart_copy.rs:330,1
    - Dst: len
      Src: /src/opendal/core/core/src/raw/oio/copy/multipart_copy.rs:335,1
    - Dst: Err
      Src: /src/opendal/core/core/src/raw/oio/copy/multipart_copy.rs:336,1
    - Dst: Error::new
      Src: /src/opendal/core/core/src/raw/oio/copy/multipart_copy.rs:336,1
    - Dst: Self::with_context
      Src: /src/opendal/core/core/src/raw/oio/copy/multipart_copy.rs:336,1
    - Dst: Self::with_context
      Src: /src/opendal/core/core/src/raw/oio/copy/multipart_copy.rs:336,1
    - Dst: len
      Src: /src/opendal/core/core/src/raw/oio/copy/multipart_copy.rs:341,1
    - Dst: Self::with_context
      Src: /src/opendal/core/core/src/raw/oio/copy/multipart_copy.rs:336,1
    - Dst: Result::to_string
      Src: /src/opendal/core/core/src/raw/oio/copy/multipart_copy.rs:342,1
    - Dst: sort_by_key
      Src: /src/opendal/core/core/src/raw/oio/copy/multipart_copy.rs:345,1
    - Dst: Some
      Src: /src/opendal/core/core/src/raw/oio/copy/multipart_copy.rs:346,1
    - Dst: complete_copy
      Src: /src/opendal/core/core/src/raw/oio/copy/multipart_copy.rs:346,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/raw/oio/copy/multipart_copy.rs:348,1
    CyclomaticComplexity: 22
    EdgeCount: 22
    ICount: 129
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 349
      start: 296
    functionDepth: 34
    functionLinenumber: 296
    functionLinenumberEnd: 349
    functionName: MultipartCopier::next
    functionSourceFile: /src/opendal/core/core/src/raw/oio/copy/multipart_copy.rs
    functionUses: 1
    functionsReached:
    - is_none
    - push
    - MultipartCopier::fill_tasks
    - MultipartCopier::upload_id
    - Self::with_context
    - MultipartCopier::validate_part_count
    - Result::clone
    - map_err
    - Result::to_string
    - Ok
    - copy_once
    - len
    - next
    - try_into
    - MultipartCopier::source_size
    - sort_by_key
    - Some
    - complete_copy
    - Error::is_temporary
    - Error::new
    - Err
    linkageType: ''
    returnType: Result
    signature: async fn next(&mut self) -> Result<Option<usize>>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: MultipartCopier::next
      Src: /src/opendal/core/core/src/raw/oio/copy/multipart_copy.rs:353,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/raw/oio/copy/multipart_copy.rs:356,1
    - Dst: clone
      Src: /src/opendal/core/core/src/raw/oio/copy/multipart_copy.rs:356,1
    - Dst: unwrap_or_default
      Src: /src/opendal/core/core/src/raw/oio/copy/multipart_copy.rs:356,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 357
      start: 351
    functionDepth: 35
    functionLinenumber: 351
    functionLinenumberEnd: 357
    functionName: MultipartCopier::close
    functionSourceFile: /src/opendal/core/core/src/raw/oio/copy/multipart_copy.rs
    functionUses: 0
    functionsReached:
    - MultipartCopier::next
    - unwrap_or_default
    - clone
    - Ok
    linkageType: ''
    returnType: Result
    signature: async fn close(&mut self) -> Result<Metadata>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: clear
      Src: /src/opendal/core/core/src/raw/oio/copy/multipart_copy.rs:360,1
    - Dst: take
      Src: /src/opendal/core/core/src/raw/oio/copy/multipart_copy.rs:361,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/raw/oio/copy/multipart_copy.rs:362,1
    - Dst: abort_copy
      Src: /src/opendal/core/core/src/raw/oio/copy/multipart_copy.rs:365,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/raw/oio/copy/multipart_copy.rs:368,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 26
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 369
      start: 359
    functionDepth: 34
    functionLinenumber: 359
    functionLinenumberEnd: 369
    functionName: MultipartCopier::abort
    functionSourceFile: /src/opendal/core/core/src/raw/oio/copy/multipart_copy.rs
    functionUses: 0
    functionsReached:
    - take
    - abort_copy
    - clear
    - Ok
    linkageType: ''
    returnType: Result
    signature: async fn abort(&mut self) -> Result<()>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: TestCopy::new
      Src: /src/opendal/core/core/src/raw/oio/copy/multipart_copy.rs:439,1
    - Dst: MultipartCopier::new
      Src: /src/opendal/core/core/src/raw/oio/copy/multipart_copy.rs:440,1
    - Dst: Executor::default
      Src: /src/opendal/core/core/src/raw/oio/copy/multipart_copy.rs:440,1
    - Dst: Arc::clone
      Src: /src/opendal/core/core/src/raw/oio/copy/multipart_copy.rs:440,1
    - Dst: Some
      Src: /src/opendal/core/core/src/raw/oio/copy/multipart_copy.rs:440,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/raw/oio/copy/multipart_copy.rs:445,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 446
      start: 438
    functionDepth: 32
    functionLinenumber: 438
    functionLinenumberEnd: 446
    functionName: tests::test_content_length_hint_skips_source_metadata
    functionSourceFile: /src/opendal/core/core/src/raw/oio/copy/multipart_copy.rs
    functionUses: 0
    functionsReached:
    - Ok
    - TestCopy::new
    - Some
    - Executor::default
    - MultipartCopier::new
    - Arc::clone
    linkageType: ''
    returnType: Result
    signature: async fn test_content_length_hint_skips_source_metadata() -> Result<()>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: TestCopy::new
      Src: /src/opendal/core/core/src/raw/oio/copy/multipart_copy.rs:450,1
    - Dst: MultipartCopier::new
      Src: /src/opendal/core/core/src/raw/oio/copy/multipart_copy.rs:451,1
    - Dst: Executor::default
      Src: /src/opendal/core/core/src/raw/oio/copy/multipart_copy.rs:451,1
    - Dst: Arc::clone
      Src: /src/opendal/core/core/src/raw/oio/copy/multipart_copy.rs:451,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/raw/oio/copy/multipart_copy.rs:456,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 457
      start: 449
    functionDepth: 32
    functionLinenumber: 449
    functionLinenumberEnd: 457
    functionName: tests::test_missing_content_length_hint_loads_source_metadata
    functionSourceFile: /src/opendal/core/core/src/raw/oio/copy/multipart_copy.rs
    functionUses: 0
    functionsReached:
    - Ok
    - TestCopy::new
    - Executor::default
    - MultipartCopier::new
    - Arc::clone
    linkageType: ''
    returnType: Result
    signature: async fn test_missing_content_length_hint_loads_source_metadata() ->
      Result<()>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Some
      Src: /src/opendal/core/core/src/raw/oio/copy/multipart_copy.rs:462,1
    - Dst: Some
      Src: /src/opendal/core/core/src/raw/oio/copy/multipart_copy.rs:463,1
    - Dst: Default::default
      Src: /src/opendal/core/core/src/raw/oio/copy/multipart_copy.rs:464,1
    - Dst: TestCopy::new
      Src: /src/opendal/core/core/src/raw/oio/copy/multipart_copy.rs:468,1
    - Dst: MultipartCopier::new
      Src: /src/opendal/core/core/src/raw/oio/copy/multipart_copy.rs:469,1
    - Dst: Executor::default
      Src: /src/opendal/core/core/src/raw/oio/copy/multipart_copy.rs:470,1
    - Dst: Arc::clone
      Src: /src/opendal/core/core/src/raw/oio/copy/multipart_copy.rs:471,1
    - Dst: Some
      Src: /src/opendal/core/core/src/raw/oio/copy/multipart_copy.rs:472,1
    - Dst: Result::next
      Src: /src/opendal/core/core/src/raw/oio/copy/multipart_copy.rs:478,1
    - Dst: expect_err
      Src: /src/opendal/core/core/src/raw/oio/copy/multipart_copy.rs:478,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/raw/oio/copy/multipart_copy.rs:486,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 21
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 487
      start: 460
    functionDepth: 32
    functionLinenumber: 460
    functionLinenumberEnd: 487
    functionName: tests::test_validate_part_count_rejects_before_initiate
    functionSourceFile: /src/opendal/core/core/src/raw/oio/copy/multipart_copy.rs
    functionUses: 0
    functionsReached:
    - Ok
    - Default::default
    - TestCopy::new
    - Some
    - Executor::default
    - Result::next
    - MultipartCopier::new
    - expect_err
    - Arc::clone
    linkageType: ''
    returnType: Result
    signature: async fn test_validate_part_count_rejects_before_initiate() -> Result<()>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self::into
      Src: /src/opendal/core/core/src/raw/oio/copy/block_copy.rs:118,1
    - Dst: Arc::new
      Src: /src/opendal/core/core/src/raw/oio/copy/block_copy.rs:119,1
    - Dst: max
      Src: /src/opendal/core/core/src/raw/oio/copy/block_copy.rs:120,1
    - Dst: Self::clone
      Src: /src/opendal/core/core/src/raw/oio/copy/block_copy.rs:124,1
    - Dst: Vec::new
      Src: /src/opendal/core/core/src/raw/oio/copy/block_copy.rs:125,1
    - Dst: Vec::new
      Src: /src/opendal/core/core/src/raw/oio/copy/block_copy.rs:126,1
    - Dst: ConcurrentTasks::new
      Src: /src/opendal/core/core/src/raw/oio/copy/block_copy.rs:136,1
    - Dst: Box::pin
      Src: /src/opendal/core/core/src/raw/oio/copy/block_copy.rs:137,1
    - Dst: size
      Src: /src/opendal/core/core/src/raw/oio/copy/block_copy.rs:138,1
    - Dst: expect
      Src: /src/opendal/core/core/src/raw/oio/copy/block_copy.rs:138,1
    - Dst: copy_block
      Src: /src/opendal/core/core/src/raw/oio/copy/block_copy.rs:139,1
    - Dst: timeout
      Src: /src/opendal/core/core/src/raw/oio/copy/block_copy.rs:141,1
    - Dst: map
      Src: /src/opendal/core/core/src/raw/oio/copy/block_copy.rs:142,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 35
    argCount: 6
    argNames:
    - executor
    - inner
    - source_content_length_hint
    - copy_once_threshold
    - block_size
    - concurrent
    argTypes:
    - impl Into<Executor>
    - C
    - Option<u64>
    - u64
    - u64
    - usize
    constantsTouched: []
    func_position:
      end: 170
      start: 110
    functionDepth: 29
    functionLinenumber: 110
    functionLinenumberEnd: 170
    functionName: BlockCopier::new
    functionSourceFile: /src/opendal/core/core/src/raw/oio/copy/block_copy.rs
    functionUses: 2
    functionsReached:
    - expect
    - copy_block
    - Arc::new
    - timeout
    - size
    - map
    - ConcurrentTasks::new
    - max
    - Self::clone
    - Self::into
    - Vec::new
    - Box::pin
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(executor: impl Into<Executor>,inner: C,source_content_length_hint:
      Option<u64>,copy_once_threshold: u64,block_size: u64,concurrent: usize,) ->
      Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/core/core/src/raw/oio/copy/block_copy.rs:174,1
    - Dst: source_metadata
      Src: /src/opendal/core/core/src/raw/oio/copy/block_copy.rs:176,1
    - Dst: content_length
      Src: /src/opendal/core/core/src/raw/oio/copy/block_copy.rs:176,1
    - Dst: Some
      Src: /src/opendal/core/core/src/raw/oio/copy/block_copy.rs:177,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/raw/oio/copy/block_copy.rs:178,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 181
      start: 172
    functionDepth: 33
    functionLinenumber: 172
    functionLinenumberEnd: 181
    functionName: BlockCopier::source_size
    functionSourceFile: /src/opendal/core/core/src/raw/oio/copy/block_copy.rs
    functionUses: 1
    functionsReached:
    - content_length
    - source_metadata
    - Ok
    - Some
    linkageType: ''
    returnType: Result
    signature: async fn source_size(&mut self) -> Result<u64>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: has_remaining
      Src: /src/opendal/core/core/src/raw/oio/copy/block_copy.rs:187,1
    - Dst: min
      Src: /src/opendal/core/core/src/raw/oio/copy/block_copy.rs:190,1
    - Dst: BytesRange::new
      Src: /src/opendal/core/core/src/raw/oio/copy/block_copy.rs:191,1
    - Dst: Some
      Src: /src/opendal/core/core/src/raw/oio/copy/block_copy.rs:191,1
    - Dst: clone
      Src: /src/opendal/core/core/src/raw/oio/copy/block_copy.rs:194,1
    - Dst: clone
      Src: /src/opendal/core/core/src/raw/oio/copy/block_copy.rs:195,1
    - Dst: Uuid::new_v4
      Src: /src/opendal/core/core/src/raw/oio/copy/block_copy.rs:196,1
    - Dst: execute
      Src: /src/opendal/core/core/src/raw/oio/copy/block_copy.rs:202,1
    - Dst: DeleteInput::clone
      Src: /src/opendal/core/core/src/raw/oio/copy/block_copy.rs:202,1
    - Dst: Error::is_temporary
      Src: /src/opendal/core/core/src/raw/oio/copy/block_copy.rs:204,1
    - Dst: Err
      Src: /src/opendal/core/core/src/raw/oio/copy/block_copy.rs:205,1
    - Dst: push
      Src: /src/opendal/core/core/src/raw/oio/copy/block_copy.rs:209,1
    - Dst: has_result
      Src: /src/opendal/core/core/src/raw/oio/copy/block_copy.rs:214,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/raw/oio/copy/block_copy.rs:219,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 63
    argCount: 1
    argNames:
    - source_size
    argTypes:
    - u64
    constantsTouched: []
    func_position:
      end: 220
      start: 183
    functionDepth: 36
    functionLinenumber: 183
    functionLinenumberEnd: 220
    functionName: BlockCopier::fill_tasks
    functionSourceFile: /src/opendal/core/core/src/raw/oio/copy/block_copy.rs
    functionUses: 1
    functionsReached:
    - DeleteInput::clone
    - push
    - Ok
    - clone
    - has_remaining
    - Some
    - Err
    - Error::is_temporary
    - min
    - has_result
    - Uuid::new_v4
    - execute
    - BytesRange::new
    linkageType: ''
    returnType: Result
    signature: 'async fn fill_tasks(&mut self, source_size: u64) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/core/core/src/raw/oio/copy/block_copy.rs:229,1
    - Dst: BlockCopier::source_size
      Src: /src/opendal/core/core/src/raw/oio/copy/block_copy.rs:232,1
    - Dst: is_empty
      Src: /src/opendal/core/core/src/raw/oio/copy/block_copy.rs:234,1
    - Dst: Some
      Src: /src/opendal/core/core/src/raw/oio/copy/block_copy.rs:235,1
    - Dst: copy_once
      Src: /src/opendal/core/core/src/raw/oio/copy/block_copy.rs:235,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/raw/oio/copy/block_copy.rs:237,1
    - Dst: BlockCopier::fill_tasks
      Src: /src/opendal/core/core/src/raw/oio/copy/block_copy.rs:240,1
    - Dst: next
      Src: /src/opendal/core/core/src/raw/oio/copy/block_copy.rs:243,1
    - Dst: try_into
      Src: /src/opendal/core/core/src/raw/oio/copy/block_copy.rs:245,1
    - Dst: map_err
      Src: /src/opendal/core/core/src/raw/oio/copy/block_copy.rs:245,1
    - Dst: Error::new
      Src: /src/opendal/core/core/src/raw/oio/copy/block_copy.rs:246,1
    - Dst: push
      Src: /src/opendal/core/core/src/raw/oio/copy/block_copy.rs:248,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/raw/oio/copy/block_copy.rs:249,1
    - Dst: Some
      Src: /src/opendal/core/core/src/raw/oio/copy/block_copy.rs:249,1
    - Dst: Error::is_temporary
      Src: /src/opendal/core/core/src/raw/oio/copy/block_copy.rs:251,1
    - Dst: Err
      Src: /src/opendal/core/core/src/raw/oio/copy/block_copy.rs:252,1
    - Dst: len
      Src: /src/opendal/core/core/src/raw/oio/copy/block_copy.rs:257,1
    - Dst: Err
      Src: /src/opendal/core/core/src/raw/oio/copy/block_copy.rs:258,1
    - Dst: Error::new
      Src: /src/opendal/core/core/src/raw/oio/copy/block_copy.rs:258,1
    - Dst: Self::with_context
      Src: /src/opendal/core/core/src/raw/oio/copy/block_copy.rs:258,1
    - Dst: Self::with_context
      Src: /src/opendal/core/core/src/raw/oio/copy/block_copy.rs:258,1
    - Dst: len
      Src: /src/opendal/core/core/src/raw/oio/copy/block_copy.rs:263,1
    - Dst: sort_by_key
      Src: /src/opendal/core/core/src/raw/oio/copy/block_copy.rs:266,1
    - Dst: iter
      Src: /src/opendal/core/core/src/raw/oio/copy/block_copy.rs:268,1
    - Dst: map
      Src: /src/opendal/core/core/src/raw/oio/copy/block_copy.rs:268,1
    - Dst: collect
      Src: /src/opendal/core/core/src/raw/oio/copy/block_copy.rs:268,1
    - Dst: Some
      Src: /src/opendal/core/core/src/raw/oio/copy/block_copy.rs:273,1
    - Dst: complete_block
      Src: /src/opendal/core/core/src/raw/oio/copy/block_copy.rs:273,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/raw/oio/copy/block_copy.rs:275,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 118
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 276
      start: 227
    functionDepth: 34
    functionLinenumber: 227
    functionLinenumberEnd: 276
    functionName: BlockCopier::next
    functionSourceFile: /src/opendal/core/core/src/raw/oio/copy/block_copy.rs
    functionUses: 1
    functionsReached:
    - collect
    - BlockCopier::source_size
    - push
    - complete_block
    - map
    - Self::with_context
    - map_err
    - iter
    - Ok
    - BlockCopier::fill_tasks
    - copy_once
    - len
    - next
    - try_into
    - sort_by_key
    - Some
    - is_empty
    - Error::is_temporary
    - Error::new
    - Err
    linkageType: ''
    returnType: Result
    signature: async fn next(&mut self) -> Result<Option<usize>>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: BlockCopier::next
      Src: /src/opendal/core/core/src/raw/oio/copy/block_copy.rs:280,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/raw/oio/copy/block_copy.rs:283,1
    - Dst: clone
      Src: /src/opendal/core/core/src/raw/oio/copy/block_copy.rs:283,1
    - Dst: unwrap_or_default
      Src: /src/opendal/core/core/src/raw/oio/copy/block_copy.rs:283,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 284
      start: 278
    functionDepth: 35
    functionLinenumber: 278
    functionLinenumberEnd: 284
    functionName: BlockCopier::close
    functionSourceFile: /src/opendal/core/core/src/raw/oio/copy/block_copy.rs
    functionUses: 0
    functionsReached:
    - BlockCopier::next
    - unwrap_or_default
    - clone
    - Ok
    linkageType: ''
    returnType: Result
    signature: async fn close(&mut self) -> Result<Metadata>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: clear
      Src: /src/opendal/core/core/src/raw/oio/copy/block_copy.rs:287,1
    - Dst: is_empty
      Src: /src/opendal/core/core/src/raw/oio/copy/block_copy.rs:288,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/raw/oio/copy/block_copy.rs:291,1
    - Dst: abort_block
      Src: /src/opendal/core/core/src/raw/oio/copy/block_copy.rs:294,1
    - Dst: clone
      Src: /src/opendal/core/core/src/raw/oio/copy/block_copy.rs:295,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/raw/oio/copy/block_copy.rs:299,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 36
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 300
      start: 286
    functionDepth: 4
    functionLinenumber: 286
    functionLinenumberEnd: 300
    functionName: BlockCopier::abort
    functionSourceFile: /src/opendal/core/core/src/raw/oio/copy/block_copy.rs
    functionUses: 0
    functionsReached:
    - abort_block
    - Ok
    - clone
    - is_empty
    - clear
    linkageType: ''
    returnType: Result
    signature: async fn abort(&mut self) -> Result<()>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Arc::new
      Src: /src/opendal/core/core/src/raw/oio/copy/block_copy.rs:363,1
    - Dst: Mutex::new
      Src: /src/opendal/core/core/src/raw/oio/copy/block_copy.rs:363,1
    - Dst: TestState::default
      Src: /src/opendal/core/core/src/raw/oio/copy/block_copy.rs:363,1
    - Dst: Self::clone
      Src: /src/opendal/core/core/src/raw/oio/copy/block_copy.rs:365,1
    - Dst: BlockCopier::new
      Src: /src/opendal/core/core/src/raw/oio/copy/block_copy.rs:367,1
    - Dst: Executor::default
      Src: /src/opendal/core/core/src/raw/oio/copy/block_copy.rs:367,1
    - Dst: Result::next
      Src: /src/opendal/core/core/src/raw/oio/copy/block_copy.rs:369,1
    - Dst: is_some
      Src: /src/opendal/core/core/src/raw/oio/copy/block_copy.rs:369,1
    - Dst: Self::lock
      Src: /src/opendal/core/core/src/raw/oio/copy/block_copy.rs:371,1
    - Dst: Result::expect
      Src: /src/opendal/core/core/src/raw/oio/copy/block_copy.rs:371,1
    - Dst: clone
      Src: /src/opendal/core/core/src/raw/oio/copy/block_copy.rs:371,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/raw/oio/copy/block_copy.rs:381,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 26
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 382
      start: 362
    functionDepth: 30
    functionLinenumber: 362
    functionLinenumberEnd: 382
    functionName: tests::test_block_copier_completes_blocks_in_source_order
    functionSourceFile: /src/opendal/core/core/src/raw/oio/copy/block_copy.rs
    functionUses: 0
    functionsReached:
    - TestState::default
    - Ok
    - Result::expect
    - Arc::new
    - clone
    - Executor::default
    - Result::next
    - Self::lock
    - BlockCopier::new
    - Self::clone
    - is_some
    - Mutex::new
    linkageType: ''
    returnType: Result
    signature: async fn test_block_copier_completes_blocks_in_source_order() -> Result<()>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Box::pin
      Src: /src/opendal/core/core/src/raw/oio/write/api.rs:76,1
    - Dst: T::write
      Src: /src/opendal/core/core/src/raw/oio/write/api.rs:76,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - bs
    argTypes:
    - Buffer
    constantsTouched: []
    func_position:
      end: 77
      start: 75
    functionDepth: 36
    functionLinenumber: 75
    functionLinenumberEnd: 77
    functionName: T::write_dyn
    functionSourceFile: /src/opendal/core/core/src/raw/oio/write/api.rs
    functionUses: 0
    functionsReached:
    - Box::pin
    - T::write
    linkageType: ''
    returnType: BoxedFuture
    signature: 'fn write_dyn(&mut self, bs: Buffer) -> BoxedFuture<''_, Result<()>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Box::deref_mut
      Src: /src/opendal/core/core/src/raw/oio/write/api.rs:90,1
    - Dst: '&mut HashMap::write_dyn'
      Src: /src/opendal/core/core/src/raw/oio/write/api.rs:90,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - bs
    argTypes:
    - Buffer
    constantsTouched: []
    func_position:
      end: 91
      start: 89
    functionDepth: 37
    functionLinenumber: 89
    functionLinenumberEnd: 91
    functionName: Box::write
    functionSourceFile: /src/opendal/core/core/src/raw/oio/write/api.rs
    functionUses: 0
    functionsReached:
    - '&mut HashMap::write_dyn'
    - Box::deref_mut
    linkageType: ''
    returnType: Result
    signature: 'async fn write(&mut self, bs: Buffer) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Metadata::default
      Src: /src/opendal/core/core/src/raw/oio/write/append_write.rs:76,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - inner
    argTypes:
    - W
    constantsTouched: []
    func_position:
      end: 78
      start: 72
    functionDepth: 3
    functionLinenumber: 72
    functionLinenumberEnd: 78
    functionName: AppendWriter::new
    functionSourceFile: /src/opendal/core/core/src/raw/oio/write/append_write.rs
    functionUses: 8
    functionsReached:
    - Metadata::default
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(inner: W) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: offset
      Src: /src/opendal/core/core/src/raw/oio/write/append_write.rs:89,1
    - Dst: Some
      Src: /src/opendal/core/core/src/raw/oio/write/append_write.rs:90,1
    - Dst: Result::len
      Src: /src/opendal/core/core/src/raw/oio/write/append_write.rs:95,1
    - Dst: append
      Src: /src/opendal/core/core/src/raw/oio/write/append_write.rs:96,1
    - Dst: Some
      Src: /src/opendal/core/core/src/raw/oio/write/append_write.rs:98,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/raw/oio/write/append_write.rs:99,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 30
    argCount: 1
    argNames:
    - bs
    argTypes:
    - Buffer
    constantsTouched: []
    func_position:
      end: 100
      start: 85
    functionDepth: 31
    functionLinenumber: 85
    functionLinenumberEnd: 100
    functionName: AppendWriter::write
    functionSourceFile: /src/opendal/core/core/src/raw/oio/write/append_write.rs
    functionUses: 0
    functionsReached:
    - Ok
    - offset
    - Some
    - append
    - Result::len
    linkageType: ''
    returnType: Result
    signature: 'async fn write(&mut self, bs: Buffer) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: set_content_length
      Src: /src/opendal/core/core/src/raw/oio/write/append_write.rs:103,1
    - Dst: unwrap_or_default
      Src: /src/opendal/core/core/src/raw/oio/write/append_write.rs:104,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/raw/oio/write/append_write.rs:105,1
    - Dst: clone
      Src: /src/opendal/core/core/src/raw/oio/write/append_write.rs:105,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 106
      start: 102
    functionDepth: 2
    functionLinenumber: 102
    functionLinenumberEnd: 106
    functionName: AppendWriter::close
    functionSourceFile: /src/opendal/core/core/src/raw/oio/write/append_write.rs
    functionUses: 0
    functionsReached:
    - unwrap_or_default
    - clone
    - set_content_length
    - Ok
    linkageType: ''
    returnType: Result
    signature: async fn close(&mut self) -> Result<Metadata>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/core/core/src/raw/oio/write/append_write.rs:109,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 110
      start: 108
    functionDepth: 0
    functionLinenumber: 108
    functionLinenumberEnd: 110
    functionName: AppendWriter::abort
    functionSourceFile: /src/opendal/core/core/src/raw/oio/write/append_write.rs
    functionUses: 0
    functionsReached:
    - Ok
    linkageType: ''
    returnType: Result
    signature: async fn abort(&mut self) -> Result<()>
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - inner
    argTypes:
    - W
    constantsTouched: []
    func_position:
      end: 49
      start: 44
    functionDepth: 0
    functionLinenumber: 44
    functionLinenumberEnd: 49
    functionName: OneShotWriter::new
    functionSourceFile: /src/opendal/core/core/src/raw/oio/write/one_shot_write.rs
    functionUses: 15
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(inner: W) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/core/core/src/raw/oio/write/one_shot_write.rs:55,1
    - Dst: Error::new
      Src: /src/opendal/core/core/src/raw/oio/write/one_shot_write.rs:55,1
    - Dst: Some
      Src: /src/opendal/core/core/src/raw/oio/write/one_shot_write.rs:60,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/raw/oio/write/one_shot_write.rs:61,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 1
    argNames:
    - bs
    argTypes:
    - Buffer
    constantsTouched: []
    func_position:
      end: 64
      start: 53
    functionDepth: 36
    functionLinenumber: 53
    functionLinenumberEnd: 64
    functionName: OneShotWriter::write
    functionSourceFile: /src/opendal/core/core/src/raw/oio/write/one_shot_write.rs
    functionUses: 0
    functionsReached:
    - Some
    - Ok
    - Error::new
    - Err
    linkageType: ''
    returnType: Result
    signature: 'async fn write(&mut self, bs: Buffer) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: clone
      Src: /src/opendal/core/core/src/raw/oio/write/one_shot_write.rs:67,1
    - Dst: write_once
      Src: /src/opendal/core/core/src/raw/oio/write/one_shot_write.rs:68,1
    - Dst: write_once
      Src: /src/opendal/core/core/src/raw/oio/write/one_shot_write.rs:69,1
    - Dst: Buffer::new
      Src: /src/opendal/core/core/src/raw/oio/write/one_shot_write.rs:69,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 71
      start: 66
    functionDepth: 35
    functionLinenumber: 66
    functionLinenumberEnd: 71
    functionName: OneShotWriter::close
    functionSourceFile: /src/opendal/core/core/src/raw/oio/write/one_shot_write.rs
    functionUses: 0
    functionsReached:
    - Buffer::new
    - write_once
    - clone
    linkageType: ''
    returnType: Result
    signature: async fn close(&mut self) -> Result<Metadata>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/core/core/src/raw/oio/write/one_shot_write.rs:75,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 76
      start: 73
    functionDepth: 0
    functionLinenumber: 73
    functionLinenumberEnd: 76
    functionName: OneShotWriter::abort
    functionSourceFile: /src/opendal/core/core/src/raw/oio/write/one_shot_write.rs
    functionUses: 0
    functionsReached:
    - Ok
    linkageType: ''
    returnType: Result
    signature: async fn abort(&mut self) -> Result<()>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self::into
      Src: /src/opendal/core/core/src/raw/oio/write/block_write.rs:118,1
    - Dst: Arc::new
      Src: /src/opendal/core/core/src/raw/oio/write/block_write.rs:121,1
    - Dst: Self::clone
      Src: /src/opendal/core/core/src/raw/oio/write/block_write.rs:122,1
    - Dst: Vec::new
      Src: /src/opendal/core/core/src/raw/oio/write/block_write.rs:124,1
    - Dst: ConcurrentTasks::new
      Src: /src/opendal/core/core/src/raw/oio/write/block_write.rs:127,1
    - Dst: Box::pin
      Src: /src/opendal/core/core/src/raw/oio/write/block_write.rs:128,1
    - Dst: write_block
      Src: /src/opendal/core/core/src/raw/oio/write/block_write.rs:129,1
    - Dst: len
      Src: /src/opendal/core/core/src/raw/oio/write/block_write.rs:133,1
    - Dst: clone
      Src: /src/opendal/core/core/src/raw/oio/write/block_write.rs:134,1
    - Dst: map_ok
      Src: /src/opendal/core/core/src/raw/oio/write/block_write.rs:129,1
    - Dst: timeout
      Src: /src/opendal/core/core/src/raw/oio/write/block_write.rs:137,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 33
    argCount: 3
    argNames:
    - executor
    - inner
    - concurrent
    argTypes:
    - impl Into<Executor>
    - W
    - usize
    constantsTouched: []
    func_position:
      end: 160
      start: 117
    functionDepth: 29
    functionLinenumber: 117
    functionLinenumberEnd: 160
    functionName: BlockWriter::new
    functionSourceFile: /src/opendal/core/core/src/raw/oio/write/block_write.rs
    functionUses: 5
    functionsReached:
    - Arc::new
    - timeout
    - clone
    - len
    - write_block
    - ConcurrentTasks::new
    - Self::clone
    - Self::into
    - Vec::new
    - Box::pin
    - map_ok
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(executor: impl Into<Executor>, inner: W, concurrent: usize)
      -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::len
      Src: /src/opendal/core/core/src/raw/oio/write/block_write.rs:163,1
    - Dst: Some
      Src: /src/opendal/core/core/src/raw/oio/write/block_write.rs:165,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - bs
    argTypes:
    - Buffer
    constantsTouched: []
    func_position:
      end: 167
      start: 162
    functionDepth: 3
    functionLinenumber: 162
    functionLinenumberEnd: 167
    functionName: BlockWriter::fill_cache
    functionSourceFile: /src/opendal/core/core/src/raw/oio/write/block_write.rs
    functionUses: 1
    functionsReached:
    - Result::len
    - Some
    linkageType: ''
    returnType: usize
    signature: 'fn fill_cache(&mut self, bs: Buffer) -> usize'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: is_none
      Src: /src/opendal/core/core/src/raw/oio/write/block_write.rs:175,1
    - Dst: BlockWriter::fill_cache
      Src: /src/opendal/core/core/src/raw/oio/write/block_write.rs:176,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/raw/oio/write/block_write.rs:177,1
    - Dst: clone
      Src: /src/opendal/core/core/src/raw/oio/write/block_write.rs:183,1
    - Dst: expect
      Src: /src/opendal/core/core/src/raw/oio/write/block_write.rs:183,1
    - Dst: execute
      Src: /src/opendal/core/core/src/raw/oio/write/block_write.rs:184,1
    - Dst: clone
      Src: /src/opendal/core/core/src/raw/oio/write/block_write.rs:186,1
    - Dst: clone
      Src: /src/opendal/core/core/src/raw/oio/write/block_write.rs:187,1
    - Dst: Uuid::new_v4
      Src: /src/opendal/core/core/src/raw/oio/write/block_write.rs:188,1
    - Dst: BlockWriter::fill_cache
      Src: /src/opendal/core/core/src/raw/oio/write/block_write.rs:193,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/raw/oio/write/block_write.rs:194,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 45
    argCount: 1
    argNames:
    - bs
    argTypes:
    - Buffer
    constantsTouched: []
    func_position:
      end: 195
      start: 174
    functionDepth: 4
    functionLinenumber: 174
    functionLinenumberEnd: 195
    functionName: BlockWriter::write
    functionSourceFile: /src/opendal/core/core/src/raw/oio/write/block_write.rs
    functionUses: 0
    functionsReached:
    - is_none
    - expect
    - Ok
    - BlockWriter::fill_cache
    - clone
    - Uuid::new_v4
    - execute
    linkageType: ''
    returnType: Result
    signature: 'async fn write(&mut self, bs: Buffer) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: clone
      Src: /src/opendal/core/core/src/raw/oio/write/block_write.rs:199,1
    - Dst: HybridCache::len
      Src: /src/opendal/core/core/src/raw/oio/write/block_write.rs:200,1
    - Dst: Buffer::new
      Src: /src/opendal/core/core/src/raw/oio/write/block_write.rs:201,1
    - Dst: write_once
      Src: /src/opendal/core/core/src/raw/oio/write/block_write.rs:204,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/raw/oio/write/block_write.rs:206,1
    - Dst: clone
      Src: /src/opendal/core/core/src/raw/oio/write/block_write.rs:209,1
    - Dst: execute
      Src: /src/opendal/core/core/src/raw/oio/write/block_write.rs:210,1
    - Dst: clone
      Src: /src/opendal/core/core/src/raw/oio/write/block_write.rs:212,1
    - Dst: clone
      Src: /src/opendal/core/core/src/raw/oio/write/block_write.rs:213,1
    - Dst: Uuid::new_v4
      Src: /src/opendal/core/core/src/raw/oio/write/block_write.rs:214,1
    - Dst: next
      Src: /src/opendal/core/core/src/raw/oio/write/block_write.rs:222,1
    - Dst: transpose
      Src: /src/opendal/core/core/src/raw/oio/write/block_write.rs:222,1
    - Dst: push
      Src: /src/opendal/core/core/src/raw/oio/write/block_write.rs:225,1
    - Dst: clone
      Src: /src/opendal/core/core/src/raw/oio/write/block_write.rs:228,1
    - Dst: complete_block
      Src: /src/opendal/core/core/src/raw/oio/write/block_write.rs:229,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 69
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 230
      start: 197
    functionDepth: 35
    functionLinenumber: 197
    functionLinenumberEnd: 230
    functionName: BlockWriter::close
    functionSourceFile: /src/opendal/core/core/src/raw/oio/write/block_write.rs
    functionUses: 0
    functionsReached:
    - next
    - Buffer::new
    - transpose
    - write_once
    - HybridCache::len
    - Ok
    - push
    - clone
    - complete_block
    - Uuid::new_v4
    - execute
    linkageType: ''
    returnType: Result
    signature: async fn close(&mut self) -> Result<Metadata>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/core/core/src/raw/oio/write/block_write.rs:234,1
    - Dst: clear
      Src: /src/opendal/core/core/src/raw/oio/write/block_write.rs:237,1
    - Dst: abort_block
      Src: /src/opendal/core/core/src/raw/oio/write/block_write.rs:239,1
    - Dst: clone
      Src: /src/opendal/core/core/src/raw/oio/write/block_write.rs:239,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/raw/oio/write/block_write.rs:240,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 26
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 241
      start: 232
    functionDepth: 2
    functionLinenumber: 232
    functionLinenumberEnd: 241
    functionName: BlockWriter::abort
    functionSourceFile: /src/opendal/core/core/src/raw/oio/write/block_write.rs
    functionUses: 0
    functionsReached:
    - abort_block
    - clone
    - clear
    - Ok
    linkageType: ''
    returnType: Result
    signature: async fn abort(&mut self) -> Result<()>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: rng
      Src: /src/opendal/core/core/src/raw/oio/write/block_write.rs:326,1
    - Dst: BlockWriter::new
      Src: /src/opendal/core/core/src/raw/oio/write/block_write.rs:328,1
    - Dst: Executor::default
      Src: /src/opendal/core/core/src/raw/oio/write/block_write.rs:328,1
    - Dst: TestWrite::new
      Src: /src/opendal/core/core/src/raw/oio/write/block_write.rs:328,1
    - Dst: Vec::new
      Src: /src/opendal/core/core/src/raw/oio/write/block_write.rs:330,1
    - Dst: random_range
      Src: /src/opendal/core/core/src/raw/oio/write/block_write.rs:333,1
    - Dst: fill_bytes
      Src: /src/opendal/core/core/src/raw/oio/write/block_write.rs:337,1
    - Dst: Self::extend_from_slice
      Src: /src/opendal/core/core/src/raw/oio/write/block_write.rs:339,1
    - Dst: Self::write
      Src: /src/opendal/core/core/src/raw/oio/write/block_write.rs:342,1
    - Dst: Result::clone
      Src: /src/opendal/core/core/src/raw/oio/write/block_write.rs:342,1
    - Dst: Self::into
      Src: /src/opendal/core/core/src/raw/oio/write/block_write.rs:342,1
    - Dst: Self::close
      Src: /src/opendal/core/core/src/raw/oio/write/block_write.rs:350,1
    - Dst: lock
      Src: /src/opendal/core/core/src/raw/oio/write/block_write.rs:356,1
    - Dst: unwrap
      Src: /src/opendal/core/core/src/raw/oio/write/block_write.rs:356,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 51
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 365
      start: 325
    functionDepth: 30
    functionLinenumber: 325
    functionLinenumberEnd: 365
    functionName: tests::test_block_writer_with_concurrent_errors
    functionSourceFile: /src/opendal/core/core/src/raw/oio/write/block_write.rs
    functionUses: 0
    functionsReached:
    - rng
    - Result::clone
    - BlockWriter::new
    - Self::extend_from_slice
    - lock
    - unwrap
    - Self::write
    - Self::close
    - Self::into
    - Executor::default
    - random_range
    - TestWrite::new
    - Vec::new
    - fill_bytes
    linkageType: ''
    returnType: void
    signature: async fn test_block_writer_with_concurrent_errors()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: rng
      Src: /src/opendal/core/core/src/raw/oio/write/block_write.rs:369,1
    - Dst: BlockWriter::new
      Src: /src/opendal/core/core/src/raw/oio/write/block_write.rs:372,1
    - Dst: Executor::default
      Src: /src/opendal/core/core/src/raw/oio/write/block_write.rs:372,1
    - Dst: TestWrite::new
      Src: /src/opendal/core/core/src/raw/oio/write/block_write.rs:372,1
    - Dst: random_range
      Src: /src/opendal/core/core/src/raw/oio/write/block_write.rs:374,1
    - Dst: fill_bytes
      Src: /src/opendal/core/core/src/raw/oio/write/block_write.rs:376,1
    - Dst: Self::write
      Src: /src/opendal/core/core/src/raw/oio/write/block_write.rs:379,1
    - Dst: Result::clone
      Src: /src/opendal/core/core/src/raw/oio/write/block_write.rs:379,1
    - Dst: Self::into
      Src: /src/opendal/core/core/src/raw/oio/write/block_write.rs:379,1
    - Dst: Self::close
      Src: /src/opendal/core/core/src/raw/oio/write/block_write.rs:386,1
    - Dst: lock
      Src: /src/opendal/core/core/src/raw/oio/write/block_write.rs:392,1
    - Dst: unwrap
      Src: /src/opendal/core/core/src/raw/oio/write/block_write.rs:392,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 44
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 401
      start: 368
    functionDepth: 30
    functionLinenumber: 368
    functionLinenumberEnd: 401
    functionName: tests::test_block_writer_with_retry_when_write_once_error
    functionSourceFile: /src/opendal/core/core/src/raw/oio/write/block_write.rs
    functionUses: 0
    functionsReached:
    - rng
    - Result::clone
    - BlockWriter::new
    - lock
    - unwrap
    - Self::write
    - Self::close
    - Self::into
    - Executor::default
    - random_range
    - TestWrite::new
    - fill_bytes
    linkageType: ''
    returnType: void
    signature: async fn test_block_writer_with_retry_when_write_once_error()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self::into
      Src: /src/opendal/core/core/src/raw/oio/write/position_write.rs:83,1
    - Dst: Arc::new
      Src: /src/opendal/core/core/src/raw/oio/write/position_write.rs:86,1
    - Dst: Self::clone
      Src: /src/opendal/core/core/src/raw/oio/write/position_write.rs:87,1
    - Dst: ConcurrentTasks::new
      Src: /src/opendal/core/core/src/raw/oio/write/position_write.rs:91,1
    - Dst: Box::pin
      Src: /src/opendal/core/core/src/raw/oio/write/position_write.rs:92,1
    - Dst: write_all_at
      Src: /src/opendal/core/core/src/raw/oio/write/position_write.rs:93,1
    - Dst: clone
      Src: /src/opendal/core/core/src/raw/oio/write/position_write.rs:93,1
    - Dst: timeout
      Src: /src/opendal/core/core/src/raw/oio/write/position_write.rs:94,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 24
    argCount: 3
    argNames:
    - executor
    - inner
    - concurrent
    argTypes:
    - impl Into<Executor>
    - W
    - usize
    constantsTouched: []
    func_position:
      end: 117
      start: 82
    functionDepth: 29
    functionLinenumber: 82
    functionLinenumberEnd: 117
    functionName: PositionWriter::new
    functionSourceFile: /src/opendal/core/core/src/raw/oio/write/position_write.rs
    functionUses: 3
    functionsReached:
    - write_all_at
    - Arc::new
    - timeout
    - clone
    - ConcurrentTasks::new
    - Self::clone
    - Self::into
    - Box::pin
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(executor: impl Into<Executor>, inner: W, concurrent: usize)
      -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::len
      Src: /src/opendal/core/core/src/raw/oio/write/position_write.rs:120,1
    - Dst: Some
      Src: /src/opendal/core/core/src/raw/oio/write/position_write.rs:122,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - bs
    argTypes:
    - Buffer
    constantsTouched: []
    func_position:
      end: 124
      start: 119
    functionDepth: 3
    functionLinenumber: 119
    functionLinenumberEnd: 124
    functionName: PositionWriter::fill_cache
    functionSourceFile: /src/opendal/core/core/src/raw/oio/write/position_write.rs
    functionUses: 1
    functionsReached:
    - Result::len
    - Some
    linkageType: ''
    returnType: usize
    signature: 'fn fill_cache(&mut self, bs: Buffer) -> usize'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: is_none
      Src: /src/opendal/core/core/src/raw/oio/write/position_write.rs:129,1
    - Dst: PositionWriter::fill_cache
      Src: /src/opendal/core/core/src/raw/oio/write/position_write.rs:130,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/raw/oio/write/position_write.rs:131,1
    - Dst: clone
      Src: /src/opendal/core/core/src/raw/oio/write/position_write.rs:134,1
    - Dst: expect
      Src: /src/opendal/core/core/src/raw/oio/write/position_write.rs:134,1
    - Dst: Bytes::len
      Src: /src/opendal/core/core/src/raw/oio/write/position_write.rs:135,1
    - Dst: execute
      Src: /src/opendal/core/core/src/raw/oio/write/position_write.rs:138,1
    - Dst: clone
      Src: /src/opendal/core/core/src/raw/oio/write/position_write.rs:140,1
    - Dst: clone
      Src: /src/opendal/core/core/src/raw/oio/write/position_write.rs:141,1
    - Dst: PositionWriter::fill_cache
      Src: /src/opendal/core/core/src/raw/oio/write/position_write.rs:148,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/raw/oio/write/position_write.rs:149,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 42
    argCount: 1
    argNames:
    - bs
    argTypes:
    - Buffer
    constantsTouched: []
    func_position:
      end: 150
      start: 128
    functionDepth: 4
    functionLinenumber: 128
    functionLinenumberEnd: 150
    functionName: PositionWriter::write
    functionSourceFile: /src/opendal/core/core/src/raw/oio/write/position_write.rs
    functionUses: 0
    functionsReached:
    - is_none
    - expect
    - Ok
    - clone
    - PositionWriter::fill_cache
    - Bytes::len
    - execute
    linkageType: ''
    returnType: Result
    signature: 'async fn write(&mut self, bs: Buffer) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: next
      Src: /src/opendal/core/core/src/raw/oio/write/position_write.rs:154,1
    - Dst: transpose
      Src: /src/opendal/core/core/src/raw/oio/write/position_write.rs:154,1
    - Dst: is_some
      Src: /src/opendal/core/core/src/raw/oio/write/position_write.rs:154,1
    - Dst: clone
      Src: /src/opendal/core/core/src/raw/oio/write/position_write.rs:156,1
    - Dst: write_all_at
      Src: /src/opendal/core/core/src/raw/oio/write/position_write.rs:158,1
    - Dst: clone
      Src: /src/opendal/core/core/src/raw/oio/write/position_write.rs:158,1
    - Dst: len
      Src: /src/opendal/core/core/src/raw/oio/write/position_write.rs:160,1
    - Dst: close
      Src: /src/opendal/core/core/src/raw/oio/write/position_write.rs:163,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 38
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 164
      start: 152
    functionDepth: 44
    functionLinenumber: 152
    functionLinenumberEnd: 164
    functionName: PositionWriter::close
    functionSourceFile: /src/opendal/core/core/src/raw/oio/write/position_write.rs
    functionUses: 0
    functionsReached:
    - next
    - transpose
    - write_all_at
    - close
    - clone
    - is_some
    - len
    linkageType: ''
    returnType: Result
    signature: async fn close(&mut self) -> Result<Metadata>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: clear
      Src: /src/opendal/core/core/src/raw/oio/write/position_write.rs:167,1
    - Dst: abort
      Src: /src/opendal/core/core/src/raw/oio/write/position_write.rs:169,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/raw/oio/write/position_write.rs:170,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 15
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 171
      start: 166
    functionDepth: 31
    functionLinenumber: 166
    functionLinenumberEnd: 171
    functionName: PositionWriter::abort
    functionSourceFile: /src/opendal/core/core/src/raw/oio/write/position_write.rs
    functionUses: 0
    functionsReached:
    - clear
    - Ok
    - abort
    linkageType: ''
    returnType: Result
    signature: async fn abort(&mut self) -> Result<()>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: rng
      Src: /src/opendal/core/core/src/raw/oio/write/position_write.rs:240,1
    - Dst: PositionWriter::new
      Src: /src/opendal/core/core/src/raw/oio/write/position_write.rs:242,1
    - Dst: Executor::default
      Src: /src/opendal/core/core/src/raw/oio/write/position_write.rs:242,1
    - Dst: TestWrite::new
      Src: /src/opendal/core/core/src/raw/oio/write/position_write.rs:242,1
    - Dst: random_range
      Src: /src/opendal/core/core/src/raw/oio/write/position_write.rs:246,1
    - Dst: fill_bytes
      Src: /src/opendal/core/core/src/raw/oio/write/position_write.rs:250,1
    - Dst: Self::write
      Src: /src/opendal/core/core/src/raw/oio/write/position_write.rs:253,1
    - Dst: Result::clone
      Src: /src/opendal/core/core/src/raw/oio/write/position_write.rs:253,1
    - Dst: Self::into
      Src: /src/opendal/core/core/src/raw/oio/write/position_write.rs:253,1
    - Dst: Self::close
      Src: /src/opendal/core/core/src/raw/oio/write/position_write.rs:264,1
    - Dst: lock
      Src: /src/opendal/core/core/src/raw/oio/write/position_write.rs:276,1
    - Dst: unwrap
      Src: /src/opendal/core/core/src/raw/oio/write/position_write.rs:276,1
    - Dst: clone
      Src: /src/opendal/core/core/src/raw/oio/write/position_write.rs:276,1
    - Dst: collect
      Src: /src/opendal/core/core/src/raw/oio/write/position_write.rs:277,1
    - Dst: lock
      Src: /src/opendal/core/core/src/raw/oio/write/position_write.rs:280,1
    - Dst: unwrap
      Src: /src/opendal/core/core/src/raw/oio/write/position_write.rs:280,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 64
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 282
      start: 239
    functionDepth: 30
    functionLinenumber: 239
    functionLinenumberEnd: 282
    functionName: tests::test_position_writer_with_concurrent_errors
    functionSourceFile: /src/opendal/core/core/src/raw/oio/write/position_write.rs
    functionUses: 0
    functionsReached:
    - rng
    - Result::clone
    - collect
    - lock
    - unwrap
    - clone
    - Self::write
    - Self::close
    - Self::into
    - Executor::default
    - PositionWriter::new
    - random_range
    - TestWrite::new
    - fill_bytes
    linkageType: ''
    returnType: void
    signature: async fn test_position_writer_with_concurrent_errors()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self::into
      Src: /src/opendal/core/core/src/raw/oio/write/multipart_write.rs:153,1
    - Dst: Arc::new
      Src: /src/opendal/core/core/src/raw/oio/write/multipart_write.rs:154,1
    - Dst: Self::clone
      Src: /src/opendal/core/core/src/raw/oio/write/multipart_write.rs:157,1
    - Dst: Vec::new
      Src: /src/opendal/core/core/src/raw/oio/write/multipart_write.rs:159,1
    - Dst: ConcurrentTasks::new
      Src: /src/opendal/core/core/src/raw/oio/write/multipart_write.rs:163,1
    - Dst: Box::pin
      Src: /src/opendal/core/core/src/raw/oio/write/multipart_write.rs:164,1
    - Dst: write_part
      Src: /src/opendal/core/core/src/raw/oio/write/multipart_write.rs:166,1
    - Dst: len
      Src: /src/opendal/core/core/src/raw/oio/write/multipart_write.rs:169,1
    - Dst: clone
      Src: /src/opendal/core/core/src/raw/oio/write/multipart_write.rs:170,1
    - Dst: timeout
      Src: /src/opendal/core/core/src/raw/oio/write/multipart_write.rs:172,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 32
    argCount: 3
    argNames:
    - executor
    - inner
    - concurrent
    argTypes:
    - impl Into<Executor>
    - W
    - usize
    constantsTouched: []
    func_position:
      end: 197
      start: 152
    functionDepth: 29
    functionLinenumber: 152
    functionLinenumberEnd: 197
    functionName: MultipartWriter::new
    functionSourceFile: /src/opendal/core/core/src/raw/oio/write/multipart_write.rs
    functionUses: 13
    functionsReached:
    - Arc::new
    - timeout
    - clone
    - len
    - write_part
    - ConcurrentTasks::new
    - Self::clone
    - Self::into
    - Vec::new
    - Box::pin
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(executor: impl Into<Executor>, inner: W, concurrent: usize)
      -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::len
      Src: /src/opendal/core/core/src/raw/oio/write/multipart_write.rs:200,1
    - Dst: Some
      Src: /src/opendal/core/core/src/raw/oio/write/multipart_write.rs:202,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - bs
    argTypes:
    - Buffer
    constantsTouched: []
    func_position:
      end: 204
      start: 199
    functionDepth: 3
    functionLinenumber: 199
    functionLinenumberEnd: 204
    functionName: MultipartWriter::fill_cache
    functionSourceFile: /src/opendal/core/core/src/raw/oio/write/multipart_write.rs
    functionUses: 1
    functionsReached:
    - Result::len
    - Some
    linkageType: ''
    returnType: usize
    signature: 'fn fill_cache(&mut self, bs: Buffer) -> usize'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: clone
      Src: /src/opendal/core/core/src/raw/oio/write/multipart_write.rs:212,1
    - Dst: is_none
      Src: /src/opendal/core/core/src/raw/oio/write/multipart_write.rs:216,1
    - Dst: MultipartWriter::fill_cache
      Src: /src/opendal/core/core/src/raw/oio/write/multipart_write.rs:217,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/raw/oio/write/multipart_write.rs:218,1
    - Dst: initiate_part
      Src: /src/opendal/core/core/src/raw/oio/write/multipart_write.rs:221,1
    - Dst: Arc::new
      Src: /src/opendal/core/core/src/raw/oio/write/multipart_write.rs:222,1
    - Dst: Some
      Src: /src/opendal/core/core/src/raw/oio/write/multipart_write.rs:223,1
    - Dst: Result::clone
      Src: /src/opendal/core/core/src/raw/oio/write/multipart_write.rs:223,1
    - Dst: clone
      Src: /src/opendal/core/core/src/raw/oio/write/multipart_write.rs:228,1
    - Dst: expect
      Src: /src/opendal/core/core/src/raw/oio/write/multipart_write.rs:228,1
    - Dst: execute
      Src: /src/opendal/core/core/src/raw/oio/write/multipart_write.rs:231,1
    - Dst: clone
      Src: /src/opendal/core/core/src/raw/oio/write/multipart_write.rs:233,1
    - Dst: clone
      Src: /src/opendal/core/core/src/raw/oio/write/multipart_write.rs:234,1
    - Dst: Result::clone
      Src: /src/opendal/core/core/src/raw/oio/write/multipart_write.rs:235,1
    - Dst: MultipartWriter::fill_cache
      Src: /src/opendal/core/core/src/raw/oio/write/multipart_write.rs:242,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/raw/oio/write/multipart_write.rs:243,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 59
    argCount: 1
    argNames:
    - bs
    argTypes:
    - Buffer
    constantsTouched: []
    func_position:
      end: 244
      start: 211
    functionDepth: 38
    functionLinenumber: 211
    functionLinenumberEnd: 244
    functionName: MultipartWriter::write
    functionSourceFile: /src/opendal/core/core/src/raw/oio/write/multipart_write.rs
    functionUses: 0
    functionsReached:
    - is_none
    - Result::clone
    - expect
    - Ok
    - Arc::new
    - clone
    - Some
    - execute
    - initiate_part
    - MultipartWriter::fill_cache
    linkageType: ''
    returnType: Result
    signature: 'async fn write(&mut self, bs: Buffer) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: clone
      Src: /src/opendal/core/core/src/raw/oio/write/multipart_write.rs:247,1
    - Dst: clone
      Src: /src/opendal/core/core/src/raw/oio/write/multipart_write.rs:250,1
    - Dst: HybridCache::len
      Src: /src/opendal/core/core/src/raw/oio/write/multipart_write.rs:251,1
    - Dst: Buffer::new
      Src: /src/opendal/core/core/src/raw/oio/write/multipart_write.rs:252,1
    - Dst: write_once
      Src: /src/opendal/core/core/src/raw/oio/write/multipart_write.rs:256,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/raw/oio/write/multipart_write.rs:259,1
    - Dst: clone
      Src: /src/opendal/core/core/src/raw/oio/write/multipart_write.rs:263,1
    - Dst: execute
      Src: /src/opendal/core/core/src/raw/oio/write/multipart_write.rs:266,1
    - Dst: clone
      Src: /src/opendal/core/core/src/raw/oio/write/multipart_write.rs:268,1
    - Dst: clone
      Src: /src/opendal/core/core/src/raw/oio/write/multipart_write.rs:269,1
    - Dst: Result::clone
      Src: /src/opendal/core/core/src/raw/oio/write/multipart_write.rs:270,1
    - Dst: next
      Src: /src/opendal/core/core/src/raw/oio/write/multipart_write.rs:280,1
    - Dst: transpose
      Src: /src/opendal/core/core/src/raw/oio/write/multipart_write.rs:280,1
    - Dst: push
      Src: /src/opendal/core/core/src/raw/oio/write/multipart_write.rs:283,1
    - Dst: len
      Src: /src/opendal/core/core/src/raw/oio/write/multipart_write.rs:286,1
    - Dst: Err
      Src: /src/opendal/core/core/src/raw/oio/write/multipart_write.rs:287,1
    - Dst: Error::new
      Src: /src/opendal/core/core/src/raw/oio/write/multipart_write.rs:287,1
    - Dst: Self::with_context
      Src: /src/opendal/core/core/src/raw/oio/write/multipart_write.rs:287,1
    - Dst: Self::with_context
      Src: /src/opendal/core/core/src/raw/oio/write/multipart_write.rs:287,1
    - Dst: len
      Src: /src/opendal/core/core/src/raw/oio/write/multipart_write.rs:292,1
    - Dst: Self::with_context
      Src: /src/opendal/core/core/src/raw/oio/write/multipart_write.rs:287,1
    - Dst: complete_part
      Src: /src/opendal/core/core/src/raw/oio/write/multipart_write.rs:295,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 93
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 296
      start: 246
    functionDepth: 35
    functionLinenumber: 246
    functionLinenumberEnd: 296
    functionName: MultipartWriter::close
    functionSourceFile: /src/opendal/core/core/src/raw/oio/write/multipart_write.rs
    functionUses: 0
    functionsReached:
    - Result::clone
    - next
    - Buffer::new
    - transpose
    - write_once
    - HybridCache::len
    - Ok
    - push
    - clone
    - complete_part
    - len
    - Err
    - Error::new
    - execute
    - Self::with_context
    linkageType: ''
    returnType: Result
    signature: async fn close(&mut self) -> Result<Metadata>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: clone
      Src: /src/opendal/core/core/src/raw/oio/write/multipart_write.rs:299,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/raw/oio/write/multipart_write.rs:300,1
    - Dst: clear
      Src: /src/opendal/core/core/src/raw/oio/write/multipart_write.rs:303,1
    - Dst: abort_part
      Src: /src/opendal/core/core/src/raw/oio/write/multipart_write.rs:305,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/raw/oio/write/multipart_write.rs:306,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 23
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 307
      start: 298
    functionDepth: 34
    functionLinenumber: 298
    functionLinenumberEnd: 307
    functionName: MultipartWriter::abort
    functionSourceFile: /src/opendal/core/core/src/raw/oio/write/multipart_write.rs
    functionUses: 0
    functionsReached:
    - clear
    - clone
    - Ok
    - abort_part
    linkageType: ''
    returnType: Result
    signature: async fn abort(&mut self) -> Result<()>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: rng
      Src: /src/opendal/core/core/src/raw/oio/write/multipart_write.rs:443,1
    - Dst: Executor::with
      Src: /src/opendal/core/core/src/raw/oio/write/multipart_write.rs:445,1
    - Dst: TimeoutExecutor::new
      Src: /src/opendal/core/core/src/raw/oio/write/multipart_write.rs:445,1
    - Dst: MultipartWriter::new
      Src: /src/opendal/core/core/src/raw/oio/write/multipart_write.rs:447,1
    - Dst: TestWrite::new
      Src: /src/opendal/core/core/src/raw/oio/write/multipart_write.rs:447,1
    - Dst: random_range
      Src: /src/opendal/core/core/src/raw/oio/write/multipart_write.rs:451,1
    - Dst: fill_bytes
      Src: /src/opendal/core/core/src/raw/oio/write/multipart_write.rs:455,1
    - Dst: timeout
      Src: /src/opendal/core/core/src/raw/oio/write/multipart_write.rs:458,1
    - Dst: Duration::from_nanos
      Src: /src/opendal/core/core/src/raw/oio/write/multipart_write.rs:458,1
    - Dst: Self::write
      Src: /src/opendal/core/core/src/raw/oio/write/multipart_write.rs:458,1
    - Dst: Result::clone
      Src: /src/opendal/core/core/src/raw/oio/write/multipart_write.rs:458,1
    - Dst: Self::into
      Src: /src/opendal/core/core/src/raw/oio/write/multipart_write.rs:458,1
    - Dst: timeout
      Src: /src/opendal/core/core/src/raw/oio/write/multipart_write.rs:469,1
    - Dst: Duration::from_nanos
      Src: /src/opendal/core/core/src/raw/oio/write/multipart_write.rs:469,1
    - Dst: Self::close
      Src: /src/opendal/core/core/src/raw/oio/write/multipart_write.rs:469,1
    - Dst: into_iter
      Src: /src/opendal/core/core/src/raw/oio/write/multipart_write.rs:478,1
    - Dst: map
      Src: /src/opendal/core/core/src/raw/oio/write/multipart_write.rs:478,1
    - Dst: collect
      Src: /src/opendal/core/core/src/raw/oio/write/multipart_write.rs:478,1
    - Dst: collect
      Src: /src/opendal/core/core/src/raw/oio/write/multipart_write.rs:479,1
    - Dst: lock
      Src: /src/opendal/core/core/src/raw/oio/write/multipart_write.rs:482,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 67
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 484
      start: 442
    functionDepth: 30
    functionLinenumber: 442
    functionLinenumberEnd: 484
    functionName: tests::test_multipart_upload_writer_with_concurrent_errors
    functionSourceFile: /src/opendal/core/core/src/raw/oio/write/multipart_write.rs
    functionUses: 0
    functionsReached:
    - rng
    - Result::clone
    - collect
    - MultipartWriter::new
    - lock
    - Duration::from_nanos
    - Executor::with
    - timeout
    - Self::write
    - Self::close
    - Self::into
    - random_range
    - into_iter
    - map
    - TestWrite::new
    - fill_bytes
    - TimeoutExecutor::new
    linkageType: ''
    returnType: void
    signature: async fn test_multipart_upload_writer_with_concurrent_errors()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: rng
      Src: /src/opendal/core/core/src/raw/oio/write/multipart_write.rs:488,1
    - Dst: MultipartWriter::new
      Src: /src/opendal/core/core/src/raw/oio/write/multipart_write.rs:491,1
    - Dst: Executor::default
      Src: /src/opendal/core/core/src/raw/oio/write/multipart_write.rs:491,1
    - Dst: TestWrite::new
      Src: /src/opendal/core/core/src/raw/oio/write/multipart_write.rs:491,1
    - Dst: random_range
      Src: /src/opendal/core/core/src/raw/oio/write/multipart_write.rs:492,1
    - Dst: fill_bytes
      Src: /src/opendal/core/core/src/raw/oio/write/multipart_write.rs:494,1
    - Dst: Self::write
      Src: /src/opendal/core/core/src/raw/oio/write/multipart_write.rs:497,1
    - Dst: Result::clone
      Src: /src/opendal/core/core/src/raw/oio/write/multipart_write.rs:497,1
    - Dst: Self::into
      Src: /src/opendal/core/core/src/raw/oio/write/multipart_write.rs:497,1
    - Dst: Self::close
      Src: /src/opendal/core/core/src/raw/oio/write/multipart_write.rs:504,1
    - Dst: lock
      Src: /src/opendal/core/core/src/raw/oio/write/multipart_write.rs:510,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 43
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 515
      start: 487
    functionDepth: 30
    functionLinenumber: 487
    functionLinenumberEnd: 515
    functionName: tests::test_multipart_writer_with_retry_when_write_once_error
    functionSourceFile: /src/opendal/core/core/src/raw/oio/write/multipart_write.rs
    functionUses: 0
    functionsReached:
    - rng
    - Result::clone
    - MultipartWriter::new
    - lock
    - Self::write
    - Self::close
    - Self::into
    - Executor::default
    - random_range
    - TestWrite::new
    - fill_bytes
    linkageType: ''
    returnType: void
    signature: async fn test_multipart_writer_with_retry_when_write_once_error()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: BytesMut::with_capacity
      Src: /src/opendal/core/core/src/raw/oio/buf/flex_buf.rs:42,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - cap
    argTypes:
    - usize
    constantsTouched: []
    func_position:
      end: 45
      start: 37
    functionDepth: 0
    functionLinenumber: 37
    functionLinenumberEnd: 45
    functionName: FlexBuf::new
    functionSourceFile: /src/opendal/core/core/src/raw/oio/buf/flex_buf.rs
    functionUses: 1
    functionsReached:
    - BytesMut::with_capacity
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(cap: usize) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: is_some
      Src: /src/opendal/core/core/src/raw/oio/buf/flex_buf.rs:51,1
    - Dst: min
      Src: /src/opendal/core/core/src/raw/oio/buf/flex_buf.rs:55,1
    - Dst: Result::len
      Src: /src/opendal/core/core/src/raw/oio/buf/flex_buf.rs:55,1
    - Dst: put_slice
      Src: /src/opendal/core/core/src/raw/oio/buf/flex_buf.rs:56,1
    - Dst: split
      Src: /src/opendal/core/core/src/raw/oio/buf/flex_buf.rs:60,1
    - Dst: Some
      Src: /src/opendal/core/core/src/raw/oio/buf/flex_buf.rs:62,1
    - Dst: freeze
      Src: /src/opendal/core/core/src/raw/oio/buf/flex_buf.rs:62,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 41
    argCount: 1
    argNames:
    - bs
    argTypes:
    - '&[u8]'
    constantsTouched: []
    func_position:
      end: 66
      start: 50
    functionDepth: 3
    functionLinenumber: 50
    functionLinenumberEnd: 66
    functionName: FlexBuf::put
    functionSourceFile: /src/opendal/core/core/src/raw/oio/buf/flex_buf.rs
    functionUses: 0
    functionsReached:
    - freeze
    - split
    - Some
    - min
    - is_some
    - Result::len
    - put_slice
    linkageType: ''
    returnType: usize
    signature: 'pub fn put(&mut self, bs: &[u8]) -> usize'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: split
      Src: /src/opendal/core/core/src/raw/oio/buf/flex_buf.rs:75,1
    - Dst: Some
      Src: /src/opendal/core/core/src/raw/oio/buf/flex_buf.rs:77,1
    - Dst: freeze
      Src: /src/opendal/core/core/src/raw/oio/buf/flex_buf.rs:77,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 18
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 78
      start: 71
    functionDepth: 1
    functionLinenumber: 71
    functionLinenumberEnd: 78
    functionName: FlexBuf::freeze
    functionSourceFile: /src/opendal/core/core/src/raw/oio/buf/flex_buf.rs
    functionUses: 0
    functionsReached:
    - freeze
    - split
    - Some
    linkageType: ''
    returnType: void
    signature: pub fn freeze(&mut self)
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: clone
      Src: /src/opendal/core/core/src/raw/oio/buf/flex_buf.rs:89,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 90
      start: 88
    functionDepth: 2
    functionLinenumber: 88
    functionLinenumberEnd: 90
    functionName: FlexBuf::get
    functionSourceFile: /src/opendal/core/core/src/raw/oio/buf/flex_buf.rs
    functionUses: 0
    functionsReached:
    - clone
    linkageType: ''
    returnType: Option
    signature: pub fn get(&mut self) -> Option<Bytes>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: as_mut
      Src: /src/opendal/core/core/src/raw/oio/buf/flex_buf.rs:100,1
    - Dst: Result::advance
      Src: /src/opendal/core/core/src/raw/oio/buf/flex_buf.rs:103,1
    - Dst: Result::is_empty
      Src: /src/opendal/core/core/src/raw/oio/buf/flex_buf.rs:105,1
    - Dst: FlexBuf::clean
      Src: /src/opendal/core/core/src/raw/oio/buf/flex_buf.rs:106,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 1
    argNames:
    - cnt
    argTypes:
    - usize
    constantsTouched: []
    func_position:
      end: 108
      start: 97
    functionDepth: 4
    functionLinenumber: 97
    functionLinenumberEnd: 108
    functionName: FlexBuf::advance
    functionSourceFile: /src/opendal/core/core/src/raw/oio/buf/flex_buf.rs
    functionUses: 0
    functionsReached:
    - FlexBuf::clean
    - as_mut
    - Result::is_empty
    - Result::advance
    linkageType: ''
    returnType: void
    signature: 'pub fn advance(&mut self, cnt: usize)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: reserve
      Src: /src/opendal/core/core/src/raw/oio/buf/flex_buf.rs:116,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 117
      start: 112
    functionDepth: 0
    functionLinenumber: 112
    functionLinenumberEnd: 117
    functionName: FlexBuf::clean
    functionSourceFile: /src/opendal/core/core/src/raw/oio/buf/flex_buf.rs
    functionUses: 1
    functionsReached:
    - reserve
    linkageType: ''
    returnType: void
    signature: pub fn clean(&mut self)
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::debug_struct
      Src: /src/opendal/core/core/src/raw/oio/buf/pooled_buf.rs:39,1
    - Dst: field
      Src: /src/opendal/core/core/src/raw/oio/buf/pooled_buf.rs:39,1
    - Dst: field
      Src: /src/opendal/core/core/src/raw/oio/buf/pooled_buf.rs:39,1
    - Dst: finish_non_exhaustive
      Src: /src/opendal/core/core/src/raw/oio/buf/pooled_buf.rs:39,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 1
    argNames:
    - f
    argTypes:
    - '&mut Formatter<''_>'
    constantsTouched: []
    func_position:
      end: 43
      start: 38
    functionDepth: 5
    functionLinenumber: 38
    functionLinenumberEnd: 43
    functionName: PooledBuf::fmt
    functionSourceFile: /src/opendal/core/core/src/raw/oio/buf/pooled_buf.rs
    functionUses: 0
    functionsReached:
    - field
    - Result::debug_struct
    - finish_non_exhaustive
    linkageType: ''
    returnType: fmt::Result
    signature: 'fn fmt(&self, f: &mut Formatter<''_>) -> fmt::Result'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Mutex::new
      Src: /src/opendal/core/core/src/raw/oio/buf/pooled_buf.rs:50,1
    - Dst: VecDeque::with_capacity
      Src: /src/opendal/core/core/src/raw/oio/buf/pooled_buf.rs:50,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - size
    argTypes:
    - usize
    constantsTouched: []
    func_position:
      end: 54
      start: 48
    functionDepth: 2
    functionLinenumber: 48
    functionLinenumberEnd: 54
    functionName: PooledBuf::new
    functionSourceFile: /src/opendal/core/core/src/raw/oio/buf/pooled_buf.rs
    functionUses: 5
    functionsReached:
    - VecDeque::with_capacity
    - Mutex::new
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(size: usize) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - initial_capacity
    argTypes:
    - usize
    constantsTouched: []
    func_position:
      end: 62
      start: 59
    functionDepth: 0
    functionLinenumber: 59
    functionLinenumberEnd: 62
    functionName: PooledBuf::with_initial_capacity
    functionSourceFile: /src/opendal/core/core/src/raw/oio/buf/pooled_buf.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: 'pub fn with_initial_capacity(mut self, initial_capacity: usize) ->
      Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: try_lock
      Src: /src/opendal/core/core/src/raw/oio/buf/pooled_buf.rs:71,1
    - Dst: BytesMut::with_capacity
      Src: /src/opendal/core/core/src/raw/oio/buf/pooled_buf.rs:72,1
    - Dst: pop_front
      Src: /src/opendal/core/core/src/raw/oio/buf/pooled_buf.rs:75,1
    - Dst: BytesMut::with_capacity
      Src: /src/opendal/core/core/src/raw/oio/buf/pooled_buf.rs:78,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 80
      start: 67
    functionDepth: 0
    functionLinenumber: 67
    functionLinenumberEnd: 80
    functionName: PooledBuf::get
    functionSourceFile: /src/opendal/core/core/src/raw/oio/buf/pooled_buf.rs
    functionUses: 0
    functionsReached:
    - try_lock
    - BytesMut::with_capacity
    - pop_front
    linkageType: ''
    returnType: BytesMut
    signature: pub fn get(&self) -> BytesMut
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: try_lock
      Src: /src/opendal/core/core/src/raw/oio/buf/pooled_buf.rs:87,1
    - Dst: len
      Src: /src/opendal/core/core/src/raw/oio/buf/pooled_buf.rs:91,1
    - Dst: io::Result::clear
      Src: /src/opendal/core/core/src/raw/oio/buf/pooled_buf.rs:93,1
    - Dst: push_back
      Src: /src/opendal/core/core/src/raw/oio/buf/pooled_buf.rs:94,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 17
    argCount: 1
    argNames:
    - buf
    argTypes:
    - BytesMut
    constantsTouched: []
    func_position:
      end: 96
      start: 83
    functionDepth: 3
    functionLinenumber: 83
    functionLinenumberEnd: 96
    functionName: PooledBuf::put
    functionSourceFile: /src/opendal/core/core/src/raw/oio/buf/pooled_buf.rs
    functionUses: 0
    functionsReached:
    - push_back
    - len
    - try_lock
    - io::Result::clear
    linkageType: ''
    returnType: void
    signature: 'pub fn put(&self, mut buf: BytesMut)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: PooledBuf::new
      Src: /src/opendal/core/core/src/raw/oio/buf/pooled_buf.rs:107,1
    - Dst: Self::get
      Src: /src/opendal/core/core/src/raw/oio/buf/pooled_buf.rs:109,1
    - Dst: Option::put_slice
      Src: /src/opendal/core/core/src/raw/oio/buf/pooled_buf.rs:110,1
    - Dst: Self::get
      Src: /src/opendal/core/core/src/raw/oio/buf/pooled_buf.rs:112,1
    - Dst: Option::reserve
      Src: /src/opendal/core/core/src/raw/oio/buf/pooled_buf.rs:113,1
    - Dst: Self::put
      Src: /src/opendal/core/core/src/raw/oio/buf/pooled_buf.rs:115,1
    - Dst: Self::put
      Src: /src/opendal/core/core/src/raw/oio/buf/pooled_buf.rs:116,1
    - Dst: Self::get
      Src: /src/opendal/core/core/src/raw/oio/buf/pooled_buf.rs:118,1
    - Dst: Self::get
      Src: /src/opendal/core/core/src/raw/oio/buf/pooled_buf.rs:122,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 25
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 125
      start: 106
    functionDepth: 3
    functionLinenumber: 106
    functionLinenumberEnd: 125
    functionName: tests::test_pooled_buf
    functionSourceFile: /src/opendal/core/core/src/raw/oio/buf/pooled_buf.rs
    functionUses: 0
    functionsReached:
    - PooledBuf::new
    - Option::reserve
    - Self::put
    - Option::put_slice
    - Self::get
    linkageType: ''
    returnType: void
    signature: fn test_pooled_buf()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self::default
      Src: /src/opendal/core/core/src/raw/oio/buf/queue_buf.rs:42,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 43
      start: 41
    functionDepth: 3
    functionLinenumber: 41
    functionLinenumberEnd: 43
    functionName: QueueBuf::new
    functionSourceFile: /src/opendal/core/core/src/raw/oio/buf/queue_buf.rs
    functionUses: 23
    functionsReached:
    - Self::default
    linkageType: ''
    returnType: Self
    signature: pub fn new() -> Self
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: io::Result::is_empty
      Src: /src/opendal/core/core/src/raw/oio/buf/queue_buf.rs:48,1
    - Dst: push_back
      Src: /src/opendal/core/core/src/raw/oio/buf/queue_buf.rs:52,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - buf
    argTypes:
    - Buffer
    constantsTouched: []
    func_position:
      end: 53
      start: 47
    functionDepth: 0
    functionLinenumber: 47
    functionLinenumberEnd: 53
    functionName: QueueBuf::push
    functionSourceFile: /src/opendal/core/core/src/raw/oio/buf/queue_buf.rs
    functionUses: 0
    functionsReached:
    - push_back
    - io::Result::is_empty
    linkageType: ''
    returnType: void
    signature: 'pub fn push(&mut self, buf: Buffer)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: iter
      Src: /src/opendal/core/core/src/raw/oio/buf/queue_buf.rs:58,1
    - Dst: map
      Src: /src/opendal/core/core/src/raw/oio/buf/queue_buf.rs:58,1
    - Dst: Timestamp::len
      Src: /src/opendal/core/core/src/raw/oio/buf/queue_buf.rs:58,1
    - Dst: sum
      Src: /src/opendal/core/core/src/raw/oio/buf/queue_buf.rs:58,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 59
      start: 57
    functionDepth: 39
    functionLinenumber: 57
    functionLinenumberEnd: 59
    functionName: QueueBuf::len
    functionSourceFile: /src/opendal/core/core/src/raw/oio/buf/queue_buf.rs
    functionUses: 1
    functionsReached:
    - map
    - iter
    - sum
    - Timestamp::len
    linkageType: ''
    returnType: usize
    signature: pub fn len(&self) -> usize
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: QueueBuf::len
      Src: /src/opendal/core/core/src/raw/oio/buf/queue_buf.rs:64,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 65
      start: 63
    functionDepth: 40
    functionLinenumber: 63
    functionLinenumberEnd: 65
    functionName: QueueBuf::is_empty
    functionSourceFile: /src/opendal/core/core/src/raw/oio/buf/queue_buf.rs
    functionUses: 0
    functionsReached:
    - QueueBuf::len
    linkageType: ''
    returnType: bool
    signature: pub fn is_empty(&self) -> bool
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: mem::take
      Src: /src/opendal/core/core/src/raw/oio/buf/queue_buf.rs:70,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 71
      start: 69
    functionDepth: 1
    functionLinenumber: 69
    functionLinenumberEnd: 71
    functionName: QueueBuf::take
    functionSourceFile: /src/opendal/core/core/src/raw/oio/buf/queue_buf.rs
    functionUses: 0
    functionsReached:
    - mem::take
    linkageType: ''
    returnType: QueueBuf
    signature: pub fn take(&mut self) -> QueueBuf
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: is_empty
      Src: /src/opendal/core/core/src/raw/oio/buf/queue_buf.rs:85,1
    - Dst: Buffer::new
      Src: /src/opendal/core/core/src/raw/oio/buf/queue_buf.rs:86,1
    - Dst: len
      Src: /src/opendal/core/core/src/raw/oio/buf/queue_buf.rs:87,1
    - Dst: pop_front
      Src: /src/opendal/core/core/src/raw/oio/buf/queue_buf.rs:88,1
    - Dst: unwrap
      Src: /src/opendal/core/core/src/raw/oio/buf/queue_buf.rs:88,1
    - Dst: into_iter
      Src: /src/opendal/core/core/src/raw/oio/buf/queue_buf.rs:90,1
    - Dst: flatten
      Src: /src/opendal/core/core/src/raw/oio/buf/queue_buf.rs:90,1
    - Dst: collect
      Src: /src/opendal/core/core/src/raw/oio/buf/queue_buf.rs:90,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 23
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 92
      start: 84
    functionDepth: 35
    functionLinenumber: 84
    functionLinenumberEnd: 92
    functionName: QueueBuf::collect
    functionSourceFile: /src/opendal/core/core/src/raw/oio/buf/queue_buf.rs
    functionUses: 0
    functionsReached:
    - collect
    - Buffer::new
    - pop_front
    - unwrap
    - is_empty
    - into_iter
    - flatten
    - len
    linkageType: ''
    returnType: Buffer
    signature: pub fn collect(mut self) -> Buffer
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: front_mut
      Src: /src/opendal/core/core/src/raw/oio/buf/queue_buf.rs:101,1
    - Dst: expect
      Src: /src/opendal/core/core/src/raw/oio/buf/queue_buf.rs:101,1
    - Dst: io::Result::remaining
      Src: /src/opendal/core/core/src/raw/oio/buf/queue_buf.rs:102,1
    - Dst: io::Result::advance
      Src: /src/opendal/core/core/src/raw/oio/buf/queue_buf.rs:103,1
    - Dst: io::Result::remaining
      Src: /src/opendal/core/core/src/raw/oio/buf/queue_buf.rs:106,1
    - Dst: pop_front
      Src: /src/opendal/core/core/src/raw/oio/buf/queue_buf.rs:107,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 26
    argCount: 1
    argNames:
    - cnt
    argTypes:
    - usize
    constantsTouched: []
    func_position:
      end: 110
      start: 96
    functionDepth: 0
    functionLinenumber: 96
    functionLinenumberEnd: 110
    functionName: QueueBuf::advance
    functionSourceFile: /src/opendal/core/core/src/raw/oio/buf/queue_buf.rs
    functionUses: 0
    functionsReached:
    - io::Result::remaining
    - expect
    - pop_front
    - io::Result::advance
    - front_mut
    linkageType: ''
    returnType: void
    signature: 'pub fn advance(&mut self, cnt: usize)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: clear
      Src: /src/opendal/core/core/src/raw/oio/buf/queue_buf.rs:115,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 116
      start: 114
    functionDepth: 2
    functionLinenumber: 114
    functionLinenumberEnd: 116
    functionName: QueueBuf::clear
    functionSourceFile: /src/opendal/core/core/src/raw/oio/buf/queue_buf.rs
    functionUses: 0
    functionsReached:
    - clear
    linkageType: ''
    returnType: void
    signature: pub fn clear(&mut self)
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - inner
    argTypes:
    - R
    constantsTouched: []
    func_position:
      end: 46
      start: 44
    functionDepth: 0
    functionLinenumber: 44
    functionLinenumberEnd: 46
    functionName: StreamReader::new
    functionSourceFile: /src/opendal/core/core/src/raw/oio/read/stream_read.rs
    functionUses: 61
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(inner: R) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 51
      start: 49
    functionDepth: 0
    functionLinenumber: 49
    functionLinenumberEnd: 51
    functionName: StreamReader::into_inner
    functionSourceFile: /src/opendal/core/core/src/raw/oio/read/stream_read.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: R
    signature: pub fn into_inner(self) -> R
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: open
      Src: /src/opendal/core/core/src/raw/oio/read/stream_read.rs:56,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - range
    argTypes:
    - BytesRange
    constantsTouched: []
    func_position:
      end: 57
      start: 55
    functionDepth: 3
    functionLinenumber: 55
    functionLinenumberEnd: 57
    functionName: StreamReader::open
    functionSourceFile: /src/opendal/core/core/src/raw/oio/read/stream_read.rs
    functionUses: 0
    functionsReached:
    - open
    linkageType: ''
    returnType: Result
    signature: 'async fn open(&self, range: BytesRange) -> Result<(RpRead, Box<dyn
      oio::ReadStreamDyn>)>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: (Vec::size
      Src: /src/opendal/core/core/src/raw/oio/read/stream_read.rs:60,1
    - Dst: Option::ok_or_else
      Src: /src/opendal/core/core/src/raw/oio/read/stream_read.rs:60,1
    - Dst: Error::new
      Src: /src/opendal/core/core/src/raw/oio/read/stream_read.rs:62,1
    - Dst: open
      Src: /src/opendal/core/core/src/raw/oio/read/stream_read.rs:64,1
    - Dst: Result::read_all
      Src: /src/opendal/core/core/src/raw/oio/read/stream_read.rs:65,1
    - Dst: len
      Src: /src/opendal/core/core/src/raw/oio/read/stream_read.rs:66,1
    - Dst: Err
      Src: /src/opendal/core/core/src/raw/oio/read/stream_read.rs:67,1
    - Dst: Error::new
      Src: /src/opendal/core/core/src/raw/oio/read/stream_read.rs:68,1
    - Dst: Self::with_context
      Src: /src/opendal/core/core/src/raw/oio/read/stream_read.rs:68,1
    - Dst: Self::with_context
      Src: /src/opendal/core/core/src/raw/oio/read/stream_read.rs:68,1
    - Dst: len
      Src: /src/opendal/core/core/src/raw/oio/read/stream_read.rs:70,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/raw/oio/read/stream_read.rs:74,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 35
    argCount: 1
    argNames:
    - range
    argTypes:
    - BytesRange
    constantsTouched: []
    func_position:
      end: 75
      start: 59
    functionDepth: 36
    functionLinenumber: 59
    functionLinenumberEnd: 75
    functionName: StreamReader::read
    functionSourceFile: /src/opendal/core/core/src/raw/oio/read/stream_read.rs
    functionUses: 0
    functionsReached:
    - Option::ok_or_else
    - Ok
    - (Vec::size
    - Error::new
    - Err
    - Result::read_all
    - open
    - len
    - Self::with_context
    linkageType: ''
    returnType: Result
    signature: 'async fn read(&self, range: BytesRange) -> Result<(RpRead, Buffer)>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/core/core/src/raw/oio/read/api.rs:51,1
    - Dst: Error::new
      Src: /src/opendal/core/core/src/raw/oio/read/api.rs:51,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames: []
    argTypes:
    - BytesRange
    constantsTouched: []
    func_position:
      end: 55
      start: 50
    functionDepth: 36
    functionLinenumber: 50
    functionLinenumberEnd: 55
    functionName: ()::open
    functionSourceFile: /src/opendal/core/core/src/raw/oio/read/api.rs
    functionUses: 0
    functionsReached:
    - Error::new
    - Err
    linkageType: ''
    returnType: Result
    signature: 'async fn open(&self, _: BytesRange) -> Result<(RpRead, Box<dyn ReadStreamDyn>)>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Box::pin
      Src: /src/opendal/core/core/src/raw/oio/read/api.rs:85,1
    - Dst: T::open
      Src: /src/opendal/core/core/src/raw/oio/read/api.rs:85,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - range
    argTypes:
    - BytesRange
    constantsTouched: []
    func_position:
      end: 86
      start: 81
    functionDepth: 3
    functionLinenumber: 81
    functionLinenumberEnd: 86
    functionName: T::open_dyn
    functionSourceFile: /src/opendal/core/core/src/raw/oio/read/api.rs
    functionUses: 0
    functionsReached:
    - T::open
    - Box::pin
    linkageType: ''
    returnType: BoxedFuture
    signature: 'fn open_dyn(&self,range: BytesRange,) -> BoxedFuture<''_, Result<(RpRead,
      Box<dyn ReadStreamDyn>)>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Box::pin
      Src: /src/opendal/core/core/src/raw/oio/read/api.rs:164,1
    - Dst: T::read
      Src: /src/opendal/core/core/src/raw/oio/read/api.rs:164,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 165
      start: 163
    functionDepth: 31
    functionLinenumber: 163
    functionLinenumberEnd: 165
    functionName: T::read_dyn
    functionSourceFile: /src/opendal/core/core/src/raw/oio/read/api.rs
    functionUses: 0
    functionsReached:
    - T::read
    - Box::pin
    linkageType: ''
    returnType: BoxedFuture
    signature: fn read_dyn(&mut self) -> BoxedFuture<'_, Result<Buffer>>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Box::deref
      Src: /src/opendal/core/core/src/raw/oio/read/api.rs:95,1
    - Dst: '&Self::Target::open_dyn'
      Src: /src/opendal/core/core/src/raw/oio/read/api.rs:95,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - range
    argTypes:
    - BytesRange
    constantsTouched: []
    func_position:
      end: 96
      start: 94
    functionDepth: 1
    functionLinenumber: 94
    functionLinenumberEnd: 96
    functionName: Box::open
    functionSourceFile: /src/opendal/core/core/src/raw/oio/read/api.rs
    functionUses: 1
    functionsReached:
    - Box::deref
    - '&Self::Target::open_dyn'
    linkageType: ''
    returnType: Result
    signature: 'async fn open(&self, range: BytesRange) -> Result<(RpRead, Box<dyn
      ReadStreamDyn>)>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Box::deref_mut
      Src: /src/opendal/core/core/src/raw/oio/read/api.rs:178,1
    - Dst: '&mut HashMap::read_dyn'
      Src: /src/opendal/core/core/src/raw/oio/read/api.rs:178,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 179
      start: 177
    functionDepth: 32
    functionLinenumber: 177
    functionLinenumberEnd: 179
    functionName: Box::read
    functionSourceFile: /src/opendal/core/core/src/raw/oio/read/api.rs
    functionUses: 0
    functionsReached:
    - '&mut HashMap::read_dyn'
    - Box::deref_mut
    linkageType: ''
    returnType: Result
    signature: async fn read(&mut self) -> Result<Buffer>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: ReadStream::read
      Src: /src/opendal/core/core/src/raw/oio/read/api.rs:118,1
    - Dst: io::Result::is_empty
      Src: /src/opendal/core/core/src/raw/oio/read/api.rs:119,1
    - Dst: push
      Src: /src/opendal/core/core/src/raw/oio/read/api.rs:120,1
    - Dst: Err
      Src: /src/opendal/core/core/src/raw/oio/read/api.rs:121,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/raw/oio/read/api.rs:124,1
    - Dst: into_iter
      Src: /src/opendal/core/core/src/raw/oio/read/api.rs:124,1
    - Dst: flatten
      Src: /src/opendal/core/core/src/raw/oio/read/api.rs:124,1
    - Dst: collect
      Src: /src/opendal/core/core/src/raw/oio/read/api.rs:124,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 22
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 126
      start: 114
    functionDepth: 32
    functionLinenumber: 114
    functionLinenumberEnd: 126
    functionName: ReadStream::read_all
    functionSourceFile: /src/opendal/core/core/src/raw/oio/read/api.rs
    functionUses: 1
    functionsReached:
    - collect
    - Ok
    - push
    - io::Result::is_empty
    - Err
    - into_iter
    - flatten
    - ReadStream::read
    linkageType: ''
    returnType: impl Future
    signature: fn read_all(&mut self) -> impl Future<Output = Result<Buffer>> + MaybeSend
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/core/core/src/raw/oio/read/api.rs:140,1
    - Dst: Buffer::from
      Src: /src/opendal/core/core/src/raw/oio/read/api.rs:140,1
    - Dst: Bytes::split_off
      Src: /src/opendal/core/core/src/raw/oio/read/api.rs:140,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 141
      start: 139
    functionDepth: 40
    functionLinenumber: 139
    functionLinenumberEnd: 141
    functionName: Bytes::read
    functionSourceFile: /src/opendal/core/core/src/raw/oio/read/api.rs
    functionUses: 0
    functionsReached:
    - Bytes::split_off
    - Buffer::from
    - Ok
    linkageType: ''
    returnType: Result
    signature: async fn read(&mut self) -> Result<Buffer>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Box::pin
      Src: /src/opendal/core/core/src/raw/oio/read/api.rs:168,1
    - Dst: T::read_all
      Src: /src/opendal/core/core/src/raw/oio/read/api.rs:168,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 169
      start: 167
    functionDepth: 33
    functionLinenumber: 167
    functionLinenumberEnd: 169
    functionName: T::read_all_dyn
    functionSourceFile: /src/opendal/core/core/src/raw/oio/read/api.rs
    functionUses: 0
    functionsReached:
    - Box::pin
    - T::read_all
    linkageType: ''
    returnType: BoxedFuture
    signature: fn read_all_dyn(&mut self) -> BoxedFuture<'_, Result<Buffer>>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Box::deref_mut
      Src: /src/opendal/core/core/src/raw/oio/read/api.rs:182,1
    - Dst: '&mut HashMap::read_all_dyn'
      Src: /src/opendal/core/core/src/raw/oio/read/api.rs:182,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 183
      start: 181
    functionDepth: 34
    functionLinenumber: 181
    functionLinenumberEnd: 183
    functionName: Box::read_all
    functionSourceFile: /src/opendal/core/core/src/raw/oio/read/api.rs
    functionUses: 0
    functionsReached:
    - '&mut HashMap::read_all_dyn'
    - Box::deref_mut
    linkageType: ''
    returnType: Result
    signature: async fn read_all(&mut self) -> Result<Buffer>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Arc::new
      Src: /src/opendal/core/core/src/raw/oio/read/position_read.rs:60,1
    - Dst: Arc::new
      Src: /src/opendal/core/core/src/raw/oio/read/position_read.rs:61,1
    - Dst: OnceCell::new
      Src: /src/opendal/core/core/src/raw/oio/read/position_read.rs:61,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - reader
    argTypes:
    - R
    constantsTouched: []
    func_position:
      end: 64
      start: 58
    functionDepth: 2
    functionLinenumber: 58
    functionLinenumberEnd: 64
    functionName: PositionReader::new
    functionSourceFile: /src/opendal/core/core/src/raw/oio/read/position_read.rs
    functionUses: 8
    functionsReached:
    - OnceCell::new
    - Arc::new
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(reader: R) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - buf_size
    argTypes:
    - usize
    constantsTouched: []
    func_position:
      end: 75
      start: 67
    functionDepth: 0
    functionLinenumber: 67
    functionLinenumberEnd: 75
    functionName: PositionReader::with_max_buf_size
    functionSourceFile: /src/opendal/core/core/src/raw/oio/read/position_read.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: 'pub fn with_max_buf_size(mut self, buf_size: usize) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Arc::into_inner
      Src: /src/opendal/core/core/src/raw/oio/read/position_read.rs:83,1
    - Dst: Arc::expect
      Src: /src/opendal/core/core/src/raw/oio/read/position_read.rs:83,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 84
      start: 82
    functionDepth: 1
    functionLinenumber: 82
    functionLinenumberEnd: 84
    functionName: PositionReader::into_inner
    functionSourceFile: /src/opendal/core/core/src/raw/oio/read/position_read.rs
    functionUses: 0
    functionsReached:
    - Arc::into_inner
    - Arc::expect
    linkageType: ''
    returnType: R
    signature: pub fn into_inner(self) -> R
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: get_or_try_init
      Src: /src/opendal/core/core/src/raw/oio/read/position_read.rs:87,1
    - Dst: open
      Src: /src/opendal/core/core/src/raw/oio/read/position_read.rs:87,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 88
      start: 86
    functionDepth: 3
    functionLinenumber: 86
    functionLinenumberEnd: 88
    functionName: PositionReader::handle
    functionSourceFile: /src/opendal/core/core/src/raw/oio/read/position_read.rs
    functionUses: 1
    functionsReached:
    - get_or_try_init
    - open
    linkageType: ''
    returnType: Result
    signature: async fn handle(&self) -> Result<&R::Handle>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: PositionReadStream::new
      Src: /src/opendal/core/core/src/raw/oio/read/position_read.rs:93,1
    - Dst: clone
      Src: /src/opendal/core/core/src/raw/oio/read/position_read.rs:94,1
    - Dst: clone
      Src: /src/opendal/core/core/src/raw/oio/read/position_read.rs:95,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/raw/oio/read/position_read.rs:99,1
    - Dst: RpRead::default
      Src: /src/opendal/core/core/src/raw/oio/read/position_read.rs:100,1
    - Dst: Box::new
      Src: /src/opendal/core/core/src/raw/oio/read/position_read.rs:101,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 13
    argCount: 1
    argNames:
    - range
    argTypes:
    - BytesRange
    constantsTouched: []
    func_position:
      end: 103
      start: 92
    functionDepth: 3
    functionLinenumber: 92
    functionLinenumberEnd: 103
    functionName: PositionReader::open
    functionSourceFile: /src/opendal/core/core/src/raw/oio/read/position_read.rs
    functionUses: 0
    functionsReached:
    - Ok
    - Box::new
    - clone
    - RpRead::default
    - PositionReadStream::new
    linkageType: ''
    returnType: Result
    signature: 'async fn open(&self, range: BytesRange) -> Result<(RpRead, Box<dyn
      oio::ReadStreamDyn>)>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: (Vec::size
      Src: /src/opendal/core/core/src/raw/oio/read/position_read.rs:106,1
    - Dst: Option::ok_or_else
      Src: /src/opendal/core/core/src/raw/oio/read/position_read.rs:106,1
    - Dst: Error::new
      Src: /src/opendal/core/core/src/raw/oio/read/position_read.rs:108,1
    - Dst: (Vec::offset
      Src: /src/opendal/core/core/src/raw/oio/read/position_read.rs:110,1
    - Dst: Vec::new
      Src: /src/opendal/core/core/src/raw/oio/read/position_read.rs:112,1
    - Dst: usize::min
      Src: /src/opendal/core/core/src/raw/oio/read/position_read.rs:115,1
    - Dst: PositionReader::handle
      Src: /src/opendal/core/core/src/raw/oio/read/position_read.rs:116,1
    - Dst: R::read_at
      Src: /src/opendal/core/core/src/raw/oio/read/position_read.rs:117,1
    - Dst: check_position_read_size
      Src: /src/opendal/core/core/src/raw/oio/read/position_read.rs:118,1
    - Dst: io::Result::len
      Src: /src/opendal/core/core/src/raw/oio/read/position_read.rs:118,1
    - Dst: io::Result::is_empty
      Src: /src/opendal/core/core/src/raw/oio/read/position_read.rs:119,1
    - Dst: Err
      Src: /src/opendal/core/core/src/raw/oio/read/position_read.rs:120,1
    - Dst: Error::new
      Src: /src/opendal/core/core/src/raw/oio/read/position_read.rs:120,1
    - Dst: Self::with_context
      Src: /src/opendal/core/core/src/raw/oio/read/position_read.rs:120,1
    - Dst: Self::with_context
      Src: /src/opendal/core/core/src/raw/oio/read/position_read.rs:120,1
    - Dst: io::Result::len
      Src: /src/opendal/core/core/src/raw/oio/read/position_read.rs:128,1
    - Dst: Self::push
      Src: /src/opendal/core/core/src/raw/oio/read/position_read.rs:131,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/raw/oio/read/position_read.rs:134,1
    - Dst: RpRead::default
      Src: /src/opendal/core/core/src/raw/oio/read/position_read.rs:134,1
    - Dst: Self::into_iter
      Src: /src/opendal/core/core/src/raw/oio/read/position_read.rs:134,1
    - Dst: flatten
      Src: /src/opendal/core/core/src/raw/oio/read/position_read.rs:134,1
    - Dst: collect
      Src: /src/opendal/core/core/src/raw/oio/read/position_read.rs:134,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 59
    argCount: 1
    argNames:
    - range
    argTypes:
    - BytesRange
    constantsTouched: []
    func_position:
      end: 135
      start: 105
    functionDepth: 36
    functionLinenumber: 105
    functionLinenumberEnd: 135
    functionName: PositionReader::read
    functionSourceFile: /src/opendal/core/core/src/raw/oio/read/position_read.rs
    functionUses: 0
    functionsReached:
    - collect
    - R::read_at
    - io::Result::len
    - flatten
    - (Vec::offset
    - Vec::new
    - Self::with_context
    - Ok
    - (Vec::size
    - RpRead::default
    - check_position_read_size
    - Option::ok_or_else
    - Self::push
    - PositionReader::handle
    - usize::min
    - Self::into_iter
    - io::Result::is_empty
    - Error::new
    - Err
    linkageType: ''
    returnType: Result
    signature: 'async fn read(&self, range: BytesRange) -> Result<(RpRead, Buffer)>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: (Vec::offset
      Src: /src/opendal/core/core/src/raw/oio/read/position_read.rs:157,1
    - Dst: (Vec::size
      Src: /src/opendal/core/core/src/raw/oio/read/position_read.rs:158,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 4
    argNames:
    - reader
    - handle
    - range
    - max_buf_size
    argTypes:
    - Arc<R>
    - Arc<OnceCell<R::Handle>>
    - BytesRange
    - usize
    constantsTouched: []
    func_position:
      end: 162
      start: 148
    functionDepth: 1
    functionLinenumber: 148
    functionLinenumberEnd: 162
    functionName: PositionReadStream::new
    functionSourceFile: /src/opendal/core/core/src/raw/oio/read/position_read.rs
    functionUses: 1
    functionsReached:
    - (Vec::offset
    - (Vec::size
    linkageType: ''
    returnType: Self
    signature: 'fn new(reader: Arc<R>,handle: Arc<OnceCell<R::Handle>>,range: BytesRange,max_buf_size:
      usize,) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Some
      Src: /src/opendal/core/core/src/raw/oio/read/position_read.rs:167,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/raw/oio/read/position_read.rs:168,1
    - Dst: Buffer::new
      Src: /src/opendal/core/core/src/raw/oio/read/position_read.rs:168,1
    - Dst: map
      Src: /src/opendal/core/core/src/raw/oio/read/position_read.rs:171,1
    - Dst: usize::min
      Src: /src/opendal/core/core/src/raw/oio/read/position_read.rs:173,1
    - Dst: unwrap_or
      Src: /src/opendal/core/core/src/raw/oio/read/position_read.rs:171,1
    - Dst: get_or_try_init
      Src: /src/opendal/core/core/src/raw/oio/read/position_read.rs:176,1
    - Dst: open
      Src: /src/opendal/core/core/src/raw/oio/read/position_read.rs:176,1
    - Dst: R::read_at
      Src: /src/opendal/core/core/src/raw/oio/read/position_read.rs:177,1
    - Dst: check_position_read_size
      Src: /src/opendal/core/core/src/raw/oio/read/position_read.rs:178,1
    - Dst: io::Result::len
      Src: /src/opendal/core/core/src/raw/oio/read/position_read.rs:178,1
    - Dst: io::Result::is_empty
      Src: /src/opendal/core/core/src/raw/oio/read/position_read.rs:179,1
    - Dst: Err
      Src: /src/opendal/core/core/src/raw/oio/read/position_read.rs:182,1
    - Dst: Error::new
      Src: /src/opendal/core/core/src/raw/oio/read/position_read.rs:182,1
    - Dst: Self::with_context
      Src: /src/opendal/core/core/src/raw/oio/read/position_read.rs:182,1
    - Dst: Self::with_context
      Src: /src/opendal/core/core/src/raw/oio/read/position_read.rs:182,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/raw/oio/read/position_read.rs:189,1
    - Dst: Buffer::new
      Src: /src/opendal/core/core/src/raw/oio/read/position_read.rs:189,1
    - Dst: io::Result::len
      Src: /src/opendal/core/core/src/raw/oio/read/position_read.rs:192,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/raw/oio/read/position_read.rs:198,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 76
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 199
      start: 166
    functionDepth: 34
    functionLinenumber: 166
    functionLinenumberEnd: 199
    functionName: PositionReadStream::read
    functionSourceFile: /src/opendal/core/core/src/raw/oio/read/position_read.rs
    functionUses: 0
    functionsReached:
    - Buffer::new
    - Ok
    - io::Result::is_empty
    - get_or_try_init
    - R::read_at
    - io::Result::len
    - Some
    - Err
    - map
    - Error::new
    - open
    - Self::with_context
    - check_position_read_size
    - usize::min
    - unwrap_or
    linkageType: ''
    returnType: Result
    signature: async fn read(&mut self) -> Result<Buffer>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/core/core/src/raw/oio/read/position_read.rs:204,1
    - Dst: Error::new
      Src: /src/opendal/core/core/src/raw/oio/read/position_read.rs:205,1
    - Dst: Self::with_context
      Src: /src/opendal/core/core/src/raw/oio/read/position_read.rs:205,1
    - Dst: Self::with_context
      Src: /src/opendal/core/core/src/raw/oio/read/position_read.rs:205,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/raw/oio/read/position_read.rs:211,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 2
    argNames:
    - expected
    - actual
    argTypes:
    - usize
    - usize
    constantsTouched: []
    func_position:
      end: 212
      start: 202
    functionDepth: 36
    functionLinenumber: 202
    functionLinenumberEnd: 212
    functionName: check_position_read_size
    functionSourceFile: /src/opendal/core/core/src/raw/oio/read/position_read.rs
    functionUses: 2
    functionsReached:
    - Self::with_context
    - Ok
    - Error::new
    - Err
    linkageType: ''
    returnType: Result
    signature: 'fn check_position_read_size(expected: usize, actual: usize) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: TestPositionRead::new
      Src: /src/opendal/core/core/src/raw/oio/read/position_read.rs:271,1
    - Dst: clone
      Src: /src/opendal/core/core/src/raw/oio/read/position_read.rs:272,1
    - Dst: clone
      Src: /src/opendal/core/core/src/raw/oio/read/position_read.rs:273,1
    - Dst: PositionReader::new
      Src: /src/opendal/core/core/src/raw/oio/read/position_read.rs:274,1
    - Dst: Self::with_max_buf_size
      Src: /src/opendal/core/core/src/raw/oio/read/position_read.rs:274,1
    - Dst: anyhow::Result::read
      Src: /src/opendal/core/core/src/raw/oio/read/position_read.rs:276,1
    - Dst: BytesRange::from
      Src: /src/opendal/core/core/src/raw/oio/read/position_read.rs:276,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/raw/oio/read/position_read.rs:282,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 21
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 283
      start: 270
    functionDepth: 2
    functionLinenumber: 270
    functionLinenumberEnd: 283
    functionName: tests::test_position_reader_read_handles_partial_reads
    functionSourceFile: /src/opendal/core/core/src/raw/oio/read/position_read.rs
    functionUses: 0
    functionsReached:
    - Self::with_max_buf_size
    - Ok
    - BytesRange::from
    - anyhow::Result::read
    - clone
    - TestPositionRead::new
    - PositionReader::new
    linkageType: ''
    returnType: Result
    signature: async fn test_position_reader_read_handles_partial_reads() -> Result<()>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: PositionReader::new
      Src: /src/opendal/core/core/src/raw/oio/read/position_read.rs:288,1
    - Dst: TestPositionRead::new
      Src: /src/opendal/core/core/src/raw/oio/read/position_read.rs:288,1
    - Dst: Self::with_max_buf_size
      Src: /src/opendal/core/core/src/raw/oio/read/position_read.rs:288,1
    - Dst: anyhow::Result::read
      Src: /src/opendal/core/core/src/raw/oio/read/position_read.rs:290,1
    - Dst: BytesRange::from
      Src: /src/opendal/core/core/src/raw/oio/read/position_read.rs:290,1
    - Dst: unwrap_err
      Src: /src/opendal/core/core/src/raw/oio/read/position_read.rs:290,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/raw/oio/read/position_read.rs:293,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 294
      start: 286
    functionDepth: 3
    functionLinenumber: 286
    functionLinenumberEnd: 294
    functionName: tests::test_position_reader_read_reports_early_eof
    functionSourceFile: /src/opendal/core/core/src/raw/oio/read/position_read.rs
    functionUses: 0
    functionsReached:
    - Self::with_max_buf_size
    - unwrap_err
    - Ok
    - BytesRange::from
    - anyhow::Result::read
    - TestPositionRead::new
    - PositionReader::new
    linkageType: ''
    returnType: Result
    signature: async fn test_position_reader_read_reports_early_eof() -> Result<()>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: PositionReader::new
      Src: /src/opendal/core/core/src/raw/oio/read/position_read.rs:299,1
    - Dst: TestPositionRead::new
      Src: /src/opendal/core/core/src/raw/oio/read/position_read.rs:299,1
    - Dst: Self::with_max_buf_size
      Src: /src/opendal/core/core/src/raw/oio/read/position_read.rs:299,1
    - Dst: anyhow::Result::open
      Src: /src/opendal/core/core/src/raw/oio/read/position_read.rs:300,1
    - Dst: BytesRange::from
      Src: /src/opendal/core/core/src/raw/oio/read/position_read.rs:300,1
    - Dst: Result::read_all
      Src: /src/opendal/core/core/src/raw/oio/read/position_read.rs:302,1
    - Dst: Ok
      Src: /src/opendal/core/core/src/raw/oio/read/position_read.rs:305,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 306
      start: 297
    functionDepth: 33
    functionLinenumber: 297
    functionLinenumberEnd: 306
    functionName: tests::test_position_reader_open_stops_at_eof
    functionSourceFile: /src/opendal/core/core/src/raw/oio/read/position_read.rs
    functionUses: 0
    functionsReached:
    - Self::with_max_buf_size
    - Ok
    - BytesRange::from
    - TestPositionRead::new
    - PositionReader::new
    - anyhow::Result::open
    - Result::read_all
    linkageType: ''
    returnType: Result
    signature: async fn test_position_reader_open_stops_at_eof() -> Result<()>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::debug_struct
      Src: /src/opendal/core/services/ghac/src/config.rs:42,1
    - Dst: field
      Src: /src/opendal/core/services/ghac/src/config.rs:42,1
    - Dst: field
      Src: /src/opendal/core/services/ghac/src/config.rs:42,1
    - Dst: field
      Src: /src/opendal/core/services/ghac/src/config.rs:42,1
    - Dst: finish_non_exhaustive
      Src: /src/opendal/core/services/ghac/src/config.rs:42,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 16
    argCount: 1
    argNames:
    - f
    argTypes:
    - '&mut std::fmt::Formatter<''_>'
    constantsTouched: []
    func_position:
      end: 47
      start: 41
    functionDepth: 5
    functionLinenumber: 41
    functionLinenumberEnd: 47
    functionName: GhacConfig::fmt
    functionSourceFile: /src/opendal/core/services/ghac/src/config.rs
    functionUses: 0
    functionsReached:
    - field
    - Result::debug_struct
    - finish_non_exhaustive
    linkageType: ''
    returnType: std::fmt::Result
    signature: 'fn fmt(&self, f: &mut std::fmt::Formatter<''_>) -> std::fmt::Result'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::options
      Src: /src/opendal/core/services/ghac/src/config.rs:54,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/ghac/src/config.rs:54,1
    - Dst: Result::authority
      Src: /src/opendal/core/services/ghac/src/config.rs:56,1
    - Dst: Result::insert
      Src: /src/opendal/core/services/ghac/src/config.rs:57,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/ghac/src/config.rs:57,1
    - Dst: Result::root
      Src: /src/opendal/core/services/ghac/src/config.rs:60,1
    - Dst: Result::contains_key
      Src: /src/opendal/core/services/ghac/src/config.rs:61,1
    - Dst: is_empty
      Src: /src/opendal/core/services/ghac/src/config.rs:62,1
    - Dst: Result::insert
      Src: /src/opendal/core/services/ghac/src/config.rs:63,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/ghac/src/config.rs:63,1
    - Dst: to_string
      Src: /src/opendal/core/services/ghac/src/config.rs:63,1
    - Dst: split_once
      Src: /src/opendal/core/services/ghac/src/config.rs:65,1
    - Dst: Result::is_empty
      Src: /src/opendal/core/services/ghac/src/config.rs:66,1
    - Dst: Result::insert
      Src: /src/opendal/core/services/ghac/src/config.rs:67,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/ghac/src/config.rs:67,1
    - Dst: Result::to_string
      Src: /src/opendal/core/services/ghac/src/config.rs:67,1
    - Dst: is_empty
      Src: /src/opendal/core/services/ghac/src/config.rs:69,1
    - Dst: Result::insert
      Src: /src/opendal/core/services/ghac/src/config.rs:70,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/ghac/src/config.rs:70,1
    - Dst: to_string
      Src: /src/opendal/core/services/ghac/src/config.rs:70,1
    - Dst: is_empty
      Src: /src/opendal/core/services/ghac/src/config.rs:72,1
    - Dst: Result::insert
      Src: /src/opendal/core/services/ghac/src/config.rs:73,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/ghac/src/config.rs:73,1
    - Dst: to_string
      Src: /src/opendal/core/services/ghac/src/config.rs:73,1
    - Dst: Self::from_iter
      Src: /src/opendal/core/services/ghac/src/config.rs:77,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 72
    argCount: 1
    argNames:
    - uri
    argTypes:
    - '&opendal_core::OperatorUri'
    constantsTouched: []
    func_position:
      end: 78
      start: 53
    functionDepth: 35
    functionLinenumber: 53
    functionLinenumberEnd: 78
    functionName: GhacConfig::from_uri
    functionSourceFile: /src/opendal/core/services/ghac/src/config.rs
    functionUses: 2
    functionsReached:
    - Result::clone
    - to_string
    - Self::from_iter
    - split_once
    - Result::to_string
    - Result::insert
    - is_empty
    - Result::is_empty
    - '&str::to_string'
    - Result::root
    - Result::contains_key
    - Result::authority
    - Result::options
    linkageType: ''
    returnType: opendal_core::Result
    signature: 'fn from_uri(uri: &opendal_core::OperatorUri) -> opendal_core::Result<Self>'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 83
      start: 81
    functionDepth: 0
    functionLinenumber: 81
    functionLinenumberEnd: 83
    functionName: GhacConfig::into_builder
    functionSourceFile: /src/opendal/core/services/ghac/src/config.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Self::Builder
    signature: fn into_builder(self) -> Self::Builder
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: OperatorUri::new
      Src: /src/opendal/core/services/ghac/src/config.rs:94,1
    - Dst: Vec::<(String, String)>::new
      Src: /src/opendal/core/services/ghac/src/config.rs:96,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/services/ghac/src/config.rs:94,1
    - Dst: GhacConfig::from_uri
      Src: /src/opendal/core/services/ghac/src/config.rs:100,1
    - Dst: opendal_core::Result::unwrap
      Src: /src/opendal/core/services/ghac/src/config.rs:100,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 107
      start: 93
    functionDepth: 29
    functionLinenumber: 93
    functionLinenumberEnd: 107
    functionName: tests::from_uri_sets_endpoint_version_and_root
    functionSourceFile: /src/opendal/core/services/ghac/src/config.rs
    functionUses: 0
    functionsReached:
    - GhacConfig::from_uri
    - Vec::<(String, String)>::new
    - OperatorUri::new
    - Result::unwrap
    - opendal_core::Result::unwrap
    linkageType: ''
    returnType: void
    signature: fn from_uri_sets_endpoint_version_and_root()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: OperatorUri::new
      Src: /src/opendal/core/services/ghac/src/config.rs:111,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/services/ghac/src/config.rs:111,1
    - Dst: GhacConfig::from_uri
      Src: /src/opendal/core/services/ghac/src/config.rs:117,1
    - Dst: opendal_core::Result::unwrap
      Src: /src/opendal/core/services/ghac/src/config.rs:117,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 120
      start: 110
    functionDepth: 29
    functionLinenumber: 110
    functionLinenumberEnd: 120
    functionName: tests::from_uri_respects_version_override
    functionSourceFile: /src/opendal/core/services/ghac/src/config.rs
    functionUses: 0
    functionsReached:
    - opendal_core::Result::unwrap
    - OperatorUri::new
    - Result::unwrap
    - GhacConfig::from_uri
    linkageType: ''
    returnType: void
    signature: fn from_uri_respects_version_override()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: to_string
      Src: /src/opendal/core/services/ghac/src/reader.rs:37,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 4
    argNames:
    - backend
    - ctx
    - path
    argTypes:
    - GhacBackend
    - OperationContext
    - '&str'
    - OpRead
    constantsTouched: []
    func_position:
      end: 39
      start: 33
    functionDepth: 2
    functionLinenumber: 33
    functionLinenumberEnd: 39
    functionName: GhacReader::new
    functionSourceFile: /src/opendal/core/services/ghac/src/reader.rs
    functionUses: 1
    functionsReached:
    - to_string
    linkageType: ''
    returnType: Self
    signature: 'pub(super) fn new(backend: GhacBackend, ctx: OperationContext, path:
      &str, _: OpRead) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: as_str
      Src: /src/opendal/core/services/ghac/src/reader.rs:45,1
    - Dst: ghac_read
      Src: /src/opendal/core/services/ghac/src/reader.rs:46,1
    - Dst: status
      Src: /src/opendal/core/services/ghac/src/reader.rs:48,1
    - Dst: RpRead::new
      Src: /src/opendal/core/services/ghac/src/reader.rs:51,1
    - Dst: parse_into_metadata
      Src: /src/opendal/core/services/ghac/src/reader.rs:51,1
    - Dst: headers
      Src: /src/opendal/core/services/ghac/src/reader.rs:51,1
    - Dst: into_body
      Src: /src/opendal/core/services/ghac/src/reader.rs:52,1
    - Dst: into_parts
      Src: /src/opendal/core/services/ghac/src/reader.rs:55,1
    - Dst: to_buffer
      Src: /src/opendal/core/services/ghac/src/reader.rs:56,1
    - Dst: Err
      Src: /src/opendal/core/services/ghac/src/reader.rs:57,1
    - Dst: super::core::parse_error
      Src: /src/opendal/core/services/ghac/src/reader.rs:57,1
    - Dst: Response::from_parts
      Src: /src/opendal/core/services/ghac/src/reader.rs:57,1
    - Dst: Ok
      Src: /src/opendal/core/services/ghac/src/reader.rs:61,1
    - Dst: Box::new
      Src: /src/opendal/core/services/ghac/src/reader.rs:61,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 38
    argCount: 1
    argNames:
    - range
    argTypes:
    - BytesRange
    constantsTouched: []
    func_position:
      end: 62
      start: 43
    functionDepth: 39
    functionLinenumber: 43
    functionLinenumberEnd: 62
    functionName: GhacReader::open
    functionSourceFile: /src/opendal/core/services/ghac/src/reader.rs
    functionUses: 0
    functionsReached:
    - parse_into_metadata
    - to_buffer
    - status
    - Ok
    - Box::new
    - into_body
    - Err
    - Response::from_parts
    - as_str
    - headers
    - into_parts
    - RpRead::new
    - ghac_read
    - super::core::parse_error
    linkageType: ''
    returnType: Result
    signature: 'async fn open(&self, range: BytesRange) -> Result<(RpRead, Box<dyn
      oio::ReadStreamDyn>)>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::debug_struct
      Src: /src/opendal/core/services/ghac/src/core.rs:91,1
    - Dst: field
      Src: /src/opendal/core/services/ghac/src/core.rs:91,1
    - Dst: field
      Src: /src/opendal/core/services/ghac/src/core.rs:91,1
    - Dst: field
      Src: /src/opendal/core/services/ghac/src/core.rs:91,1
    - Dst: field
      Src: /src/opendal/core/services/ghac/src/core.rs:91,1
    - Dst: finish_non_exhaustive
      Src: /src/opendal/core/services/ghac/src/core.rs:91,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 20
    argCount: 1
    argNames:
    - f
    argTypes:
    - '&mut std::fmt::Formatter<''_>'
    constantsTouched: []
    func_position:
      end: 97
      start: 90
    functionDepth: 5
    functionLinenumber: 90
    functionLinenumberEnd: 97
    functionName: GhacCore::fmt
    functionSourceFile: /src/opendal/core/services/ghac/src/core.rs
    functionUses: 0
    functionsReached:
    - field
    - Result::debug_struct
    - finish_non_exhaustive
    linkageType: ''
    returnType: std::fmt::Result
    signature: 'fn fmt(&self, f: &mut std::fmt::Formatter<''_>) -> std::fmt::Result'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/ghac/src/core.rs:102,1
    - Dst: build_cache_url
      Src: /src/opendal/core/services/ghac/src/core.rs:106,1
    - Dst: Request::get
      Src: /src/opendal/core/services/ghac/src/core.rs:115,1
    - Dst: Option::header
      Src: /src/opendal/core/services/ghac/src/core.rs:116,1
    - Dst: Option::header
      Src: /src/opendal/core/services/ghac/src/core.rs:117,1
    - Dst: Option::extension
      Src: /src/opendal/core/services/ghac/src/core.rs:119,1
    - Dst: extension
      Src: /src/opendal/core/services/ghac/src/core.rs:119,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/ghac/src/core.rs:121,1
    - Dst: body
      Src: /src/opendal/core/services/ghac/src/core.rs:119,1
    - Dst: Buffer::new
      Src: /src/opendal/core/services/ghac/src/core.rs:122,1
    - Dst: map_err
      Src: /src/opendal/core/services/ghac/src/core.rs:119,1
    - Dst: Result::http_transport
      Src: /src/opendal/core/services/ghac/src/core.rs:124,1
    - Dst: Self::send
      Src: /src/opendal/core/services/ghac/src/core.rs:124,1
    - Dst: status
      Src: /src/opendal/core/services/ghac/src/core.rs:125,1
    - Dst: into_body
      Src: /src/opendal/core/services/ghac/src/core.rs:126,1
    - Dst: serde_json::from_reader
      Src: /src/opendal/core/services/ghac/src/core.rs:127,1
    - Dst: reader
      Src: /src/opendal/core/services/ghac/src/core.rs:127,1
    - Dst: map_err
      Src: /src/opendal/core/services/ghac/src/core.rs:127,1
    - Dst: Err
      Src: /src/opendal/core/services/ghac/src/core.rs:131,1
    - Dst: parse_error
      Src: /src/opendal/core/services/ghac/src/core.rs:131,1
    - Dst: Ok
      Src: /src/opendal/core/services/ghac/src/core.rs:133,1
    - Dst: build_cache_url
      Src: /src/opendal/core/services/ghac/src/core.rs:136,1
    - Dst: clone
      Src: /src/opendal/core/services/ghac/src/core.rs:143,1
    - Dst: Buffer::from
      Src: /src/opendal/core/services/ghac/src/core.rs:149,1
    - Dst: Option::encode_to_vec
      Src: /src/opendal/core/services/ghac/src/core.rs:149,1
    - Dst: Request::post
      Src: /src/opendal/core/services/ghac/src/core.rs:151,1
    - Dst: header
      Src: /src/opendal/core/services/ghac/src/core.rs:151,1
    - Dst: header
      Src: /src/opendal/core/services/ghac/src/core.rs:151,1
    - Dst: header
      Src: /src/opendal/core/services/ghac/src/core.rs:151,1
    - Dst: Self::len
      Src: /src/opendal/core/services/ghac/src/core.rs:154,1
    - Dst: extension
      Src: /src/opendal/core/services/ghac/src/core.rs:151,1
    - Dst: extension
      Src: /src/opendal/core/services/ghac/src/core.rs:151,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/ghac/src/core.rs:156,1
    - Dst: body
      Src: /src/opendal/core/services/ghac/src/core.rs:151,1
    - Dst: map_err
      Src: /src/opendal/core/services/ghac/src/core.rs:151,1
    - Dst: Result::http_transport
      Src: /src/opendal/core/services/ghac/src/core.rs:159,1
    - Dst: Self::send
      Src: /src/opendal/core/services/ghac/src/core.rs:159,1
    - Dst: status
      Src: /src/opendal/core/services/ghac/src/core.rs:160,1
    - Dst: into_body
      Src: /src/opendal/core/services/ghac/src/core.rs:161,1
    - Dst: ghac_types::GetCacheEntryDownloadUrlResponse::decode
      Src: /src/opendal/core/services/ghac/src/core.rs:162,1
    - Dst: FoyerResult::map_err
      Src: /src/opendal/core/services/ghac/src/core.rs:162,1
    - Dst: Error::new
      Src: /src/opendal/core/services/ghac/src/core.rs:165,1
    - Dst: env::var
      Src: /src/opendal/core/services/ghac/src/core.rs:176,1
    - Dst: Ok
      Src: /src/opendal/core/services/ghac/src/core.rs:176,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/ghac/src/core.rs:176,1
    - Dst: Error::set_temporary
      Src: /src/opendal/core/services/ghac/src/core.rs:177,1
    - Dst: Err
      Src: /src/opendal/core/services/ghac/src/core.rs:179,1
    - Dst: Err
      Src: /src/opendal/core/services/ghac/src/core.rs:183,1
    - Dst: parse_error
      Src: /src/opendal/core/services/ghac/src/core.rs:183,1
    - Dst: Ok
      Src: /src/opendal/core/services/ghac/src/core.rs:186,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 125
    argCount: 2
    argNames:
    - ctx
    - path
    argTypes:
    - '&OperationContext'
    - '&str'
    constantsTouched: []
    func_position:
      end: 189
      start: 101
    functionDepth: 37
    functionLinenumber: 101
    functionLinenumberEnd: 189
    functionName: GhacCore::ghac_get_download_url
    functionSourceFile: /src/opendal/core/services/ghac/src/core.rs
    functionUses: 2
    functionsReached:
    - Buffer::new
    - status
    - Self::send
    - serde_json::from_reader
    - build_cache_url
    - clone
    - map_err
    - extension
    - Self::len
    - reader
    - Ok
    - env::var
    - '&str::to_string'
    - ServiceOperation
    - Result::http_transport
    - Buffer::from
    - parse_error
    - into_body
    - build_abs_path
    - Option::encode_to_vec
    - Option::header
    - Request::get
    - Error::set_temporary
    - ghac_types::GetCacheEntryDownloadUrlResponse::decode
    - body
    - Request::post
    - FoyerResult::map_err
    - Err
    - Error::new
    - Option::extension
    - header
    linkageType: ''
    returnType: Result
    signature: 'async fn ghac_get_download_url(&self, ctx: &OperationContext, path:
      &str) -> Result<String>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: GhacCore::ghac_get_download_url
      Src: /src/opendal/core/services/ghac/src/core.rs:192,1
    - Dst: Request::get
      Src: /src/opendal/core/services/ghac/src/core.rs:194,1
    - Dst: Option::header
      Src: /src/opendal/core/services/ghac/src/core.rs:194,1
    - Dst: String::extension
      Src: /src/opendal/core/services/ghac/src/core.rs:194,1
    - Dst: extension
      Src: /src/opendal/core/services/ghac/src/core.rs:194,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/ghac/src/core.rs:197,1
    - Dst: body
      Src: /src/opendal/core/services/ghac/src/core.rs:194,1
    - Dst: Buffer::new
      Src: /src/opendal/core/services/ghac/src/core.rs:198,1
    - Dst: map_err
      Src: /src/opendal/core/services/ghac/src/core.rs:194,1
    - Dst: Result::http_transport
      Src: /src/opendal/core/services/ghac/src/core.rs:201,1
    - Dst: Self::send
      Src: /src/opendal/core/services/ghac/src/core.rs:201,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 23
    argCount: 2
    argNames:
    - ctx
    - path
    argTypes:
    - '&OperationContext'
    - '&str'
    constantsTouched: []
    func_position:
      end: 202
      start: 191
    functionDepth: 38
    functionLinenumber: 191
    functionLinenumberEnd: 202
    functionName: GhacCore::ghac_stat
    functionSourceFile: /src/opendal/core/services/ghac/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - extension
    - Request::get
    - Buffer::new
    - String::extension
    - Self::send
    - body
    - ServiceOperation
    - Result::http_transport
    - GhacCore::ghac_get_download_url
    - Option::header
    linkageType: ''
    returnType: Result
    signature: 'pub async fn ghac_stat(&self, ctx: &OperationContext, path: &str)
      -> Result<Response<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: GhacCore::ghac_get_download_url
      Src: /src/opendal/core/services/ghac/src/core.rs:210,1
    - Dst: Request::get
      Src: /src/opendal/core/services/ghac/src/core.rs:212,1
    - Dst: (Vec::is_full
      Src: /src/opendal/core/services/ghac/src/core.rs:214,1
    - Dst: Option::header
      Src: /src/opendal/core/services/ghac/src/core.rs:215,1
    - Dst: (Vec::to_header
      Src: /src/opendal/core/services/ghac/src/core.rs:215,1
    - Dst: Option::extension
      Src: /src/opendal/core/services/ghac/src/core.rs:217,1
    - Dst: extension
      Src: /src/opendal/core/services/ghac/src/core.rs:217,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/ghac/src/core.rs:219,1
    - Dst: body
      Src: /src/opendal/core/services/ghac/src/core.rs:217,1
    - Dst: Buffer::new
      Src: /src/opendal/core/services/ghac/src/core.rs:220,1
    - Dst: map_err
      Src: /src/opendal/core/services/ghac/src/core.rs:217,1
    - Dst: Result::http_transport
      Src: /src/opendal/core/services/ghac/src/core.rs:223,1
    - Dst: Self::fetch
      Src: /src/opendal/core/services/ghac/src/core.rs:223,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 32
    argCount: 3
    argNames:
    - ctx
    - path
    - range
    argTypes:
    - '&OperationContext'
    - '&str'
    - BytesRange
    constantsTouched: []
    func_position:
      end: 224
      start: 204
    functionDepth: 38
    functionLinenumber: 204
    functionLinenumberEnd: 224
    functionName: GhacCore::ghac_read
    functionSourceFile: /src/opendal/core/services/ghac/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - extension
    - Request::get
    - (Vec::to_header
    - Buffer::new
    - (Vec::is_full
    - body
    - Option::extension
    - Self::fetch
    - ServiceOperation
    - Result::http_transport
    - GhacCore::ghac_get_download_url
    - Option::header
    linkageType: ''
    returnType: Result
    signature: 'pub async fn ghac_read(&self,ctx: &OperationContext,path: &str,range:
      BytesRange,) -> Result<Response<HttpBody>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/ghac/src/core.rs:227,1
    - Dst: build_cache_url
      Src: /src/opendal/core/services/ghac/src/core.rs:231,1
    - Dst: serde_json::to_vec
      Src: /src/opendal/core/services/ghac/src/core.rs:233,1
    - Dst: to_string
      Src: /src/opendal/core/services/ghac/src/core.rs:235,1
    - Dst: Vec::map_err
      Src: /src/opendal/core/services/ghac/src/core.rs:233,1
    - Dst: Request::post
      Src: /src/opendal/core/services/ghac/src/core.rs:239,1
    - Dst: header
      Src: /src/opendal/core/services/ghac/src/core.rs:240,1
    - Dst: header
      Src: /src/opendal/core/services/ghac/src/core.rs:241,1
    - Dst: header
      Src: /src/opendal/core/services/ghac/src/core.rs:242,1
    - Dst: header
      Src: /src/opendal/core/services/ghac/src/core.rs:243,1
    - Dst: Result::len
      Src: /src/opendal/core/services/ghac/src/core.rs:243,1
    - Dst: extension
      Src: /src/opendal/core/services/ghac/src/core.rs:245,1
    - Dst: extension
      Src: /src/opendal/core/services/ghac/src/core.rs:245,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/ghac/src/core.rs:247,1
    - Dst: body
      Src: /src/opendal/core/services/ghac/src/core.rs:245,1
    - Dst: Buffer::from
      Src: /src/opendal/core/services/ghac/src/core.rs:248,1
    - Dst: Bytes::from
      Src: /src/opendal/core/services/ghac/src/core.rs:248,1
    - Dst: map_err
      Src: /src/opendal/core/services/ghac/src/core.rs:245,1
    - Dst: Result::http_transport
      Src: /src/opendal/core/services/ghac/src/core.rs:250,1
    - Dst: Self::send
      Src: /src/opendal/core/services/ghac/src/core.rs:250,1
    - Dst: status
      Src: /src/opendal/core/services/ghac/src/core.rs:251,1
    - Dst: is_success
      Src: /src/opendal/core/services/ghac/src/core.rs:251,1
    - Dst: into_body
      Src: /src/opendal/core/services/ghac/src/core.rs:252,1
    - Dst: serde_json::from_reader
      Src: /src/opendal/core/services/ghac/src/core.rs:253,1
    - Dst: reader
      Src: /src/opendal/core/services/ghac/src/core.rs:253,1
    - Dst: map_err
      Src: /src/opendal/core/services/ghac/src/core.rs:253,1
    - Dst: Err
      Src: /src/opendal/core/services/ghac/src/core.rs:257,1
    - Dst: parse_error
      Src: /src/opendal/core/services/ghac/src/core.rs:257,1
    - Dst: Error::with_operation
      Src: /src/opendal/core/services/ghac/src/core.rs:257,1
    - Dst: build_cache_url
      Src: /src/opendal/core/services/ghac/src/core.rs:260,1
    - Dst: Ok
      Src: /src/opendal/core/services/ghac/src/core.rs:264,1
    - Dst: build_cache_url
      Src: /src/opendal/core/services/ghac/src/core.rs:267,1
    - Dst: clone
      Src: /src/opendal/core/services/ghac/src/core.rs:274,1
    - Dst: Buffer::from
      Src: /src/opendal/core/services/ghac/src/core.rs:278,1
    - Dst: encode_to_vec
      Src: /src/opendal/core/services/ghac/src/core.rs:278,1
    - Dst: Request::post
      Src: /src/opendal/core/services/ghac/src/core.rs:280,1
    - Dst: header
      Src: /src/opendal/core/services/ghac/src/core.rs:280,1
    - Dst: header
      Src: /src/opendal/core/services/ghac/src/core.rs:280,1
    - Dst: header
      Src: /src/opendal/core/services/ghac/src/core.rs:280,1
    - Dst: Self::len
      Src: /src/opendal/core/services/ghac/src/core.rs:283,1
    - Dst: extension
      Src: /src/opendal/core/services/ghac/src/core.rs:280,1
    - Dst: extension
      Src: /src/opendal/core/services/ghac/src/core.rs:280,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/ghac/src/core.rs:285,1
    - Dst: body
      Src: /src/opendal/core/services/ghac/src/core.rs:280,1
    - Dst: map_err
      Src: /src/opendal/core/services/ghac/src/core.rs:280,1
    - Dst: Result::http_transport
      Src: /src/opendal/core/services/ghac/src/core.rs:288,1
    - Dst: Self::send
      Src: /src/opendal/core/services/ghac/src/core.rs:288,1
    - Dst: status
      Src: /src/opendal/core/services/ghac/src/core.rs:289,1
    - Dst: into_parts
      Src: /src/opendal/core/services/ghac/src/core.rs:290,1
    - Dst: ghac_types::CreateCacheEntryResponse::decode
      Src: /src/opendal/core/services/ghac/src/core.rs:291,1
    - Dst: FoyerResult::map_err
      Src: /src/opendal/core/services/ghac/src/core.rs:291,1
    - Dst: Err
      Src: /src/opendal/core/services/ghac/src/core.rs:294,1
    - Dst: Error::new
      Src: /src/opendal/core/services/ghac/src/core.rs:294,1
    - Dst: Self::with_context
      Src: /src/opendal/core/services/ghac/src/core.rs:294,1
    - Dst: Err
      Src: /src/opendal/core/services/ghac/src/core.rs:302,1
    - Dst: parse_error
      Src: /src/opendal/core/services/ghac/src/core.rs:302,1
    - Dst: Ok
      Src: /src/opendal/core/services/ghac/src/core.rs:304,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 142
    argCount: 2
    argNames:
    - ctx
    - path
    argTypes:
    - '&OperationContext'
    - '&str'
    constantsTouched: []
    func_position:
      end: 307
      start: 226
    functionDepth: 40
    functionLinenumber: 226
    functionLinenumberEnd: 307
    functionName: GhacCore::ghac_get_upload_url
    functionSourceFile: /src/opendal/core/services/ghac/src/core.rs
    functionUses: 0
    functionsReached:
    - is_success
    - status
    - Self::send
    - serde_json::from_reader
    - build_cache_url
    - clone
    - encode_to_vec
    - Result::len
    - ghac_types::CreateCacheEntryResponse::decode
    - Self::with_context
    - map_err
    - extension
    - Self::len
    - reader
    - Error::with_operation
    - Ok
    - ServiceOperation
    - Result::http_transport
    - Buffer::from
    - parse_error
    - into_body
    - build_abs_path
    - Bytes::from
    - to_string
    - Request::post
    - body
    - FoyerResult::map_err
    - Err
    - Error::new
    - Vec::map_err
    - into_parts
    - serde_json::to_vec
    - header
    linkageType: ''
    returnType: Result
    signature: 'pub async fn ghac_get_upload_url(&self, ctx: &OperationContext, path:
      &str) -> Result<String>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Request::patch
      Src: /src/opendal/core/services/ghac/src/core.rs:317,1
    - Dst: Result::header
      Src: /src/opendal/core/services/ghac/src/core.rs:318,1
    - Dst: Result::header
      Src: /src/opendal/core/services/ghac/src/core.rs:319,1
    - Dst: Result::header
      Src: /src/opendal/core/services/ghac/src/core.rs:320,1
    - Dst: Result::header
      Src: /src/opendal/core/services/ghac/src/core.rs:321,1
    - Dst: Result::header
      Src: /src/opendal/core/services/ghac/src/core.rs:322,1
    - Dst: BytesContentRange::default
      Src: /src/opendal/core/services/ghac/src/core.rs:324,1
    - Dst: Self::with_range
      Src: /src/opendal/core/services/ghac/src/core.rs:324,1
    - Dst: (Vec::to_header
      Src: /src/opendal/core/services/ghac/src/core.rs:324,1
    - Dst: Result::extension
      Src: /src/opendal/core/services/ghac/src/core.rs:328,1
    - Dst: extension
      Src: /src/opendal/core/services/ghac/src/core.rs:328,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/ghac/src/core.rs:330,1
    - Dst: body
      Src: /src/opendal/core/services/ghac/src/core.rs:328,1
    - Dst: map_err
      Src: /src/opendal/core/services/ghac/src/core.rs:328,1
    - Dst: Result::http_transport
      Src: /src/opendal/core/services/ghac/src/core.rs:334,1
    - Dst: Self::send
      Src: /src/opendal/core/services/ghac/src/core.rs:334,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 43
    argCount: 5
    argNames:
    - ctx
    - upload_url
    - size
    - offset
    - body
    argTypes:
    - '&OperationContext'
    - '&str'
    - u64
    - u64
    - Buffer
    constantsTouched: []
    func_position:
      end: 335
      start: 309
    functionDepth: 42
    functionLinenumber: 309
    functionLinenumberEnd: 335
    functionName: GhacCore::ghac_v1_write
    functionSourceFile: /src/opendal/core/services/ghac/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - extension
    - (Vec::to_header
    - Self::send
    - Result::extension
    - BytesContentRange::default
    - body
    - Result::header
    - Self::with_range
    - ServiceOperation
    - Result::http_transport
    - Request::patch
    linkageType: ''
    returnType: Result
    signature: 'pub async fn ghac_v1_write(&self,ctx: &OperationContext,upload_url:
      &str,size: u64,offset: u64,body: Buffer,) -> Result<Response<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/ghac/src/core.rs:344,1
    - Dst: serde_json::to_vec
      Src: /src/opendal/core/services/ghac/src/core.rs:348,1
    - Dst: Vec::map_err
      Src: /src/opendal/core/services/ghac/src/core.rs:348,1
    - Dst: Request::post
      Src: /src/opendal/core/services/ghac/src/core.rs:351,1
    - Dst: header
      Src: /src/opendal/core/services/ghac/src/core.rs:351,1
    - Dst: header
      Src: /src/opendal/core/services/ghac/src/core.rs:351,1
    - Dst: header
      Src: /src/opendal/core/services/ghac/src/core.rs:351,1
    - Dst: header
      Src: /src/opendal/core/services/ghac/src/core.rs:351,1
    - Dst: Result::len
      Src: /src/opendal/core/services/ghac/src/core.rs:355,1
    - Dst: extension
      Src: /src/opendal/core/services/ghac/src/core.rs:351,1
    - Dst: extension
      Src: /src/opendal/core/services/ghac/src/core.rs:351,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/ghac/src/core.rs:357,1
    - Dst: body
      Src: /src/opendal/core/services/ghac/src/core.rs:351,1
    - Dst: Buffer::from
      Src: /src/opendal/core/services/ghac/src/core.rs:358,1
    - Dst: map_err
      Src: /src/opendal/core/services/ghac/src/core.rs:351,1
    - Dst: Result::http_transport
      Src: /src/opendal/core/services/ghac/src/core.rs:360,1
    - Dst: Self::send
      Src: /src/opendal/core/services/ghac/src/core.rs:360,1
    - Dst: status
      Src: /src/opendal/core/services/ghac/src/core.rs:361,1
    - Dst: is_success
      Src: /src/opendal/core/services/ghac/src/core.rs:361,1
    - Dst: Ok
      Src: /src/opendal/core/services/ghac/src/core.rs:362,1
    - Dst: Err
      Src: /src/opendal/core/services/ghac/src/core.rs:364,1
    - Dst: parse_error
      Src: /src/opendal/core/services/ghac/src/core.rs:364,1
    - Dst: build_cache_url
      Src: /src/opendal/core/services/ghac/src/core.rs:368,1
    - Dst: clone
      Src: /src/opendal/core/services/ghac/src/core.rs:375,1
    - Dst: Buffer::from
      Src: /src/opendal/core/services/ghac/src/core.rs:380,1
    - Dst: encode_to_vec
      Src: /src/opendal/core/services/ghac/src/core.rs:380,1
    - Dst: Request::post
      Src: /src/opendal/core/services/ghac/src/core.rs:382,1
    - Dst: header
      Src: /src/opendal/core/services/ghac/src/core.rs:382,1
    - Dst: header
      Src: /src/opendal/core/services/ghac/src/core.rs:382,1
    - Dst: header
      Src: /src/opendal/core/services/ghac/src/core.rs:382,1
    - Dst: Self::len
      Src: /src/opendal/core/services/ghac/src/core.rs:385,1
    - Dst: extension
      Src: /src/opendal/core/services/ghac/src/core.rs:382,1
    - Dst: extension
      Src: /src/opendal/core/services/ghac/src/core.rs:382,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/ghac/src/core.rs:387,1
    - Dst: body
      Src: /src/opendal/core/services/ghac/src/core.rs:382,1
    - Dst: map_err
      Src: /src/opendal/core/services/ghac/src/core.rs:382,1
    - Dst: Result::http_transport
      Src: /src/opendal/core/services/ghac/src/core.rs:390,1
    - Dst: Self::send
      Src: /src/opendal/core/services/ghac/src/core.rs:390,1
    - Dst: status
      Src: /src/opendal/core/services/ghac/src/core.rs:391,1
    - Dst: Err
      Src: /src/opendal/core/services/ghac/src/core.rs:392,1
    - Dst: parse_error
      Src: /src/opendal/core/services/ghac/src/core.rs:392,1
    - Dst: Ok
      Src: /src/opendal/core/services/ghac/src/core.rs:394,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 98
    argCount: 4
    argNames:
    - ctx
    - path
    - url
    - size
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    - u64
    constantsTouched: []
    func_position:
      end: 397
      start: 337
    functionDepth: 40
    functionLinenumber: 337
    functionLinenumberEnd: 397
    functionName: GhacCore::ghac_finalize_upload
    functionSourceFile: /src/opendal/core/services/ghac/src/core.rs
    functionUses: 0
    functionsReached:
    - is_success
    - status
    - Self::send
    - build_cache_url
    - clone
    - encode_to_vec
    - Result::len
    - map_err
    - extension
    - Self::len
    - Ok
    - ServiceOperation
    - Result::http_transport
    - Buffer::from
    - parse_error
    - build_abs_path
    - Request::post
    - body
    - Err
    - Vec::map_err
    - serde_json::to_vec
    - header
    linkageType: ''
    returnType: Result
    signature: 'pub async fn ghac_finalize_upload(&self,ctx: &OperationContext,path:
      &str,url: &str,size: u64,) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 2
    argNames:
    - base
    - path
    argTypes:
    - '&str'
    - impl AsRef<str>
    constantsTouched: []
    func_position:
      end: 406
      start: 400
    functionDepth: 0
    functionLinenumber: 400
    functionLinenumberEnd: 406
    functionName: build_cache_url
    functionSourceFile: /src/opendal/core/services/ghac/src/core.rs
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: String
    signature: 'fn build_cache_url(base: &str, path: impl AsRef<str>) -> String'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: env::var
      Src: /src/opendal/core/services/ghac/src/core.rs:414,1
    - Dst: unwrap_or_else
      Src: /src/opendal/core/services/ghac/src/core.rs:414,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/ghac/src/core.rs:414,1
    - Dst: Uri::from_str
      Src: /src/opendal/core/services/ghac/src/core.rs:416,1
    - Dst: Result::host
      Src: /src/opendal/core/services/ghac/src/core.rs:422,1
    - Dst: Self::unwrap_or
      Src: /src/opendal/core/services/ghac/src/core.rs:422,1
    - Dst: trim_end
      Src: /src/opendal/core/services/ghac/src/core.rs:422,1
    - Dst: to_lowercase
      Src: /src/opendal/core/services/ghac/src/core.rs:422,1
    - Dst: ends_with
      Src: /src/opendal/core/services/ghac/src/core.rs:425,1
    - Dst: ends_with
      Src: /src/opendal/core/services/ghac/src/core.rs:426,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 28
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 429
      start: 411
    functionDepth: 34
    functionLinenumber: 411
    functionLinenumberEnd: 429
    functionName: is_ghes
    functionSourceFile: /src/opendal/core/services/ghac/src/core.rs
    functionUses: 1
    functionsReached:
    - trim_end
    - Self::unwrap_or
    - to_lowercase
    - ends_with
    - env::var
    - Uri::from_str
    - '&str::to_string'
    - Result::host
    - unwrap_or_else
    linkageType: ''
    returnType: bool
    signature: pub fn is_ghes() -> bool
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: is_ghes
      Src: /src/opendal/core/services/ghac/src/core.rs:433,1
    - Dst: env::var
      Src: /src/opendal/core/services/ghac/src/core.rs:438,1
    - Dst: unwrap_or_default
      Src: /src/opendal/core/services/ghac/src/core.rs:438,1
    - Dst: Vec::is_empty
      Src: /src/opendal/core/services/ghac/src/core.rs:439,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 445
      start: 432
    functionDepth: 35
    functionLinenumber: 432
    functionLinenumberEnd: 445
    functionName: get_cache_service_version
    functionSourceFile: /src/opendal/core/services/ghac/src/core.rs
    functionUses: 1
    functionsReached:
    - is_ghes
    - unwrap_or_default
    - env::var
    - Vec::is_empty
    linkageType: ''
    returnType: GhacVersion
    signature: pub fn get_cache_service_version() -> GhacVersion
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: env::var
      Src: /src/opendal/core/services/ghac/src/core.rs:452,1
    - Dst: or_else
      Src: /src/opendal/core/services/ghac/src/core.rs:452,1
    - Dst: env::var
      Src: /src/opendal/core/services/ghac/src/core.rs:453,1
    - Dst: unwrap_or_default
      Src: /src/opendal/core/services/ghac/src/core.rs:452,1
    - Dst: env::var
      Src: /src/opendal/core/services/ghac/src/core.rs:458,1
    - Dst: unwrap_or_default
      Src: /src/opendal/core/services/ghac/src/core.rs:458,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 1
    argNames:
    - version
    argTypes:
    - GhacVersion
    constantsTouched: []
    func_position:
      end: 461
      start: 448
    functionDepth: 34
    functionLinenumber: 448
    functionLinenumberEnd: 461
    functionName: get_cache_service_url
    functionSourceFile: /src/opendal/core/services/ghac/src/core.rs
    functionUses: 1
    functionsReached:
    - or_else
    - unwrap_or_default
    - env::var
    linkageType: ''
    returnType: String
    signature: 'pub fn get_cache_service_url(version: GhacVersion) -> String'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Error::new
      Src: /src/opendal/core/services/ghac/src/core.rs:465,1
    - Dst: Self::set_source
      Src: /src/opendal/core/services/ghac/src/core.rs:465,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - e
    argTypes:
    - prost::DecodeError
    constantsTouched: []
    func_position:
      end: 466
      start: 464
    functionDepth: 36
    functionLinenumber: 464
    functionLinenumberEnd: 466
    functionName: new_prost_decode_error
    functionSourceFile: /src/opendal/core/services/ghac/src/core.rs
    functionUses: 0
    functionsReached:
    - Self::set_source
    - Error::new
    linkageType: ''
    returnType: Error
    signature: 'pub fn new_prost_decode_error(e: prost::DecodeError) -> Error'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 514
      start: 499
    functionDepth: 0
    functionLinenumber: 499
    functionLinenumberEnd: 514
    functionName: tests::test_build_cache_url_handles_trailing_slash
    functionSourceFile: /src/opendal/core/services/ghac/src/core.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: fn test_build_cache_url_handles_trailing_slash()
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 525
      start: 517
    functionDepth: 0
    functionLinenumber: 517
    functionLinenumberEnd: 525
    functionName: tests::test_build_cache_url_handles_leading_slash
    functionSourceFile: /src/opendal/core/services/ghac/src/core.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: fn test_build_cache_url_handles_leading_slash()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Response<Buffer>::into_parts
      Src: /src/opendal/core/services/obs/src/core.rs:673,1
    - Dst: to_bytes
      Src: /src/opendal/core/services/obs/src/core.rs:674,1
    - Dst: Result::as_u16
      Src: /src/opendal/core/services/obs/src/core.rs:687,1
    - Dst: de::from_reader::<_, ObsError>
      Src: /src/opendal/core/services/obs/src/core.rs:692,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/obs/src/core.rs:692,1
    - Dst: Self::reader
      Src: /src/opendal/core/services/obs/src/core.rs:692,1
    - Dst: String::from_utf8_lossy
      Src: /src/opendal/core/services/obs/src/core.rs:694,1
    - Dst: into_owned
      Src: /src/opendal/core/services/obs/src/core.rs:694,1
    - Dst: Error::new
      Src: /src/opendal/core/services/obs/src/core.rs:697,1
    - Dst: with_error_response_context
      Src: /src/opendal/core/services/obs/src/core.rs:699,1
    - Dst: Error::set_temporary
      Src: /src/opendal/core/services/obs/src/core.rs:702,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 35
    argCount: 1
    argNames:
    - resp
    argTypes:
    - Response<Buffer>
    constantsTouched: []
    func_position:
      end: 706
      start: 672
    functionDepth: 31
    functionLinenumber: 672
    functionLinenumberEnd: 706
    functionName: error::parse_error
    functionSourceFile: /src/opendal/core/services/obs/src/core.rs
    functionUses: 2
    functionsReached:
    - Result::clone
    - into_owned
    - Error::set_temporary
    - Self::reader
    - to_bytes
    - Error::new
    - Result::as_u16
    - de::from_reader::<_, ObsError>
    - with_error_response_context
    - Response<Buffer>::into_parts
    - String::from_utf8_lossy
    linkageType: ''
    returnType: Error
    signature: 'pub(crate) fn parse_error(resp: Response<Buffer>) -> Error'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/core/services/ghac/src/writer.rs:44,1
    - Dst: GhacWriter
      Src: /src/opendal/core/services/ghac/src/writer.rs:44,1
    - Dst: TwoWays::One
      Src: /src/opendal/core/services/ghac/src/writer.rs:44,1
    - Dst: http::Uri::from_str
      Src: /src/opendal/core/services/ghac/src/writer.rs:52,1
    - Dst: Result::map_err
      Src: /src/opendal/core/services/ghac/src/writer.rs:52,1
    - Dst: into_parts
      Src: /src/opendal/core/services/ghac/src/writer.rs:52,1
    - Dst: Err
      Src: /src/opendal/core/services/ghac/src/writer.rs:58,1
    - Dst: Error::new
      Src: /src/opendal/core/services/ghac/src/writer.rs:58,1
    - Dst: Self::with_context
      Src: /src/opendal/core/services/ghac/src/writer.rs:58,1
    - Dst: path
      Src: /src/opendal/core/services/ghac/src/writer.rs:65,1
    - Dst: trim_matches
      Src: /src/opendal/core/services/ghac/src/writer.rs:65,1
    - Dst: split_once
      Src: /src/opendal/core/services/ghac/src/writer.rs:65,1
    - Dst: Err
      Src: /src/opendal/core/services/ghac/src/writer.rs:66,1
    - Dst: Error::new
      Src: /src/opendal/core/services/ghac/src/writer.rs:66,1
    - Dst: Self::with_context
      Src: /src/opendal/core/services/ghac/src/writer.rs:66,1
    - Dst: query
      Src: /src/opendal/core/services/ghac/src/writer.rs:72,1
    - Dst: Err
      Src: /src/opendal/core/services/ghac/src/writer.rs:73,1
    - Dst: Error::new
      Src: /src/opendal/core/services/ghac/src/writer.rs:73,1
    - Dst: Self::with_context
      Src: /src/opendal/core/services/ghac/src/writer.rs:73,1
    - Dst: Signer::new
      Src: /src/opendal/core/services/ghac/src/writer.rs:79,1
    - Dst: Context::new
      Src: /src/opendal/core/services/ghac/src/writer.rs:80,1
    - Dst: StaticCredentialProvider::new_sas_token
      Src: /src/opendal/core/services/ghac/src/writer.rs:81,1
    - Dst: RequestSigner::new
      Src: /src/opendal/core/services/ghac/src/writer.rs:82,1
    - Dst: Arc::new
      Src: /src/opendal/core/services/ghac/src/writer.rs:84,1
    - Dst: ServiceInfo::new
      Src: /src/opendal/core/services/ghac/src/writer.rs:85,1
    - Dst: Default::default
      Src: /src/opendal/core/services/ghac/src/writer.rs:116,1
    - Dst: to_string
      Src: /src/opendal/core/services/ghac/src/writer.rs:118,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/ghac/src/writer.rs:119,1
    - Dst: AzblobWriter::new
      Src: /src/opendal/core/services/ghac/src/writer.rs:127,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/ghac/src/writer.rs:129,1
    - Dst: OpWrite::default
      Src: /src/opendal/core/services/ghac/src/writer.rs:130,1
    - Dst: to_string
      Src: /src/opendal/core/services/ghac/src/writer.rs:131,1
    - Dst: oio::BlockWriter::new
      Src: /src/opendal/core/services/ghac/src/writer.rs:133,1
    - Dst: Ok
      Src: /src/opendal/core/services/ghac/src/writer.rs:134,1
    - Dst: GhacWriter
      Src: /src/opendal/core/services/ghac/src/writer.rs:134,1
    - Dst: TwoWays::Two
      Src: /src/opendal/core/services/ghac/src/writer.rs:134,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 71
    argCount: 5
    argNames:
    - core
    - ctx
    - executor
    - write_path
    - url
    argTypes:
    - Arc<GhacCore>
    - OperationContext
    - Executor
    - String
    - String
    constantsTouched: []
    func_position:
      end: 144
      start: 36
    functionDepth: 36
    functionLinenumber: 36
    functionLinenumberEnd: 144
    functionName: GhacWriter::new
    functionSourceFile: /src/opendal/core/services/ghac/src/writer.rs
    functionUses: 1
    functionsReached:
    - Arc::new
    - Default::default
    - TwoWays::One
    - Signer::new
    - Self::with_context
    - Result::clone
    - ServiceInfo::new
    - Ok
    - Context::new
    - OpWrite::default
    - '&str::to_string'
    - RequestSigner::new
    - Result::map_err
    - StaticCredentialProvider::new_sas_token
    - trim_matches
    - http::Uri::from_str
    - GhacWriter
    - query
    - TwoWays::Two
    - to_string
    - split_once
    - AzblobWriter::new
    - Err
    - Error::new
    - into_parts
    - path
    - oio::BlockWriter::new
    linkageType: ''
    returnType: Result
    signature: 'pub fn new(core: Arc<GhacCore>,ctx: OperationContext,executor: Executor,write_path:
      String,url: String,) -> Result<Self>'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 4
    argNames:
    - core
    - ctx
    - executor
    - path
    argTypes:
    - Arc<GhacCore>
    - OperationContext
    - Executor
    - String
    constantsTouched: []
    func_position:
      end: 169
      start: 156
    functionDepth: 0
    functionLinenumber: 156
    functionLinenumberEnd: 169
    functionName: GhacLazyWriter::new
    functionSourceFile: /src/opendal/core/services/ghac/src/writer.rs
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(core: Arc<GhacCore>,ctx: OperationContext,executor: Executor,path:
      String,) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: is_none
      Src: /src/opendal/core/services/ghac/src/writer.rs:172,1
    - Dst: ghac_get_upload_url
      Src: /src/opendal/core/services/ghac/src/writer.rs:173,1
    - Dst: Some
      Src: /src/opendal/core/services/ghac/src/writer.rs:174,1
    - Dst: GhacWriter::new
      Src: /src/opendal/core/services/ghac/src/writer.rs:174,1
    - Dst: clone
      Src: /src/opendal/core/services/ghac/src/writer.rs:175,1
    - Dst: clone
      Src: /src/opendal/core/services/ghac/src/writer.rs:176,1
    - Dst: clone
      Src: /src/opendal/core/services/ghac/src/writer.rs:177,1
    - Dst: clone
      Src: /src/opendal/core/services/ghac/src/writer.rs:178,1
    - Dst: Ok
      Src: /src/opendal/core/services/ghac/src/writer.rs:183,1
    - Dst: as_mut
      Src: /src/opendal/core/services/ghac/src/writer.rs:183,1
    - Dst: expect
      Src: /src/opendal/core/services/ghac/src/writer.rs:183,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 38
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 184
      start: 171
    functionDepth: 41
    functionLinenumber: 171
    functionLinenumberEnd: 184
    functionName: GhacLazyWriter::inner
    functionSourceFile: /src/opendal/core/services/ghac/src/writer.rs
    functionUses: 3
    functionsReached:
    - is_none
    - as_mut
    - expect
    - Ok
    - GhacWriter::new
    - clone
    - ghac_get_upload_url
    - Some
    linkageType: ''
    returnType: Result
    signature: async fn inner(&mut self) -> Result<&mut GhacWriter>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: GhacLazyWriter::inner
      Src: /src/opendal/core/services/ghac/src/writer.rs:189,1
    - Dst: write
      Src: /src/opendal/core/services/ghac/src/writer.rs:189,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 1
    argNames:
    - bs
    argTypes:
    - Buffer
    constantsTouched: []
    func_position:
      end: 190
      start: 188
    functionDepth: 42
    functionLinenumber: 188
    functionLinenumberEnd: 190
    functionName: GhacLazyWriter::write
    functionSourceFile: /src/opendal/core/services/ghac/src/writer.rs
    functionUses: 0
    functionsReached:
    - GhacLazyWriter::inner
    - write
    linkageType: ''
    returnType: Result
    signature: 'async fn write(&mut self, bs: Buffer) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: GhacLazyWriter::inner
      Src: /src/opendal/core/services/ghac/src/writer.rs:193,1
    - Dst: abort
      Src: /src/opendal/core/services/ghac/src/writer.rs:193,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 194
      start: 192
    functionDepth: 42
    functionLinenumber: 192
    functionLinenumberEnd: 194
    functionName: GhacLazyWriter::abort
    functionSourceFile: /src/opendal/core/services/ghac/src/writer.rs
    functionUses: 0
    functionsReached:
    - GhacLazyWriter::inner
    - abort
    linkageType: ''
    returnType: Result
    signature: async fn abort(&mut self) -> Result<()>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: GhacLazyWriter::inner
      Src: /src/opendal/core/services/ghac/src/writer.rs:197,1
    - Dst: close
      Src: /src/opendal/core/services/ghac/src/writer.rs:197,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 198
      start: 196
    functionDepth: 42
    functionLinenumber: 196
    functionLinenumberEnd: 198
    functionName: GhacLazyWriter::close
    functionSourceFile: /src/opendal/core/services/ghac/src/writer.rs
    functionUses: 0
    functionsReached:
    - GhacLazyWriter::inner
    - close
    linkageType: ''
    returnType: Result
    signature: async fn close(&mut self) -> Result<Metadata>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: write
      Src: /src/opendal/core/services/ghac/src/writer.rs:203,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - bs
    argTypes:
    - Buffer
    constantsTouched: []
    func_position:
      end: 204
      start: 202
    functionDepth: 36
    functionLinenumber: 202
    functionLinenumberEnd: 204
    functionName: GhacWriter::write
    functionSourceFile: /src/opendal/core/services/ghac/src/writer.rs
    functionUses: 0
    functionsReached:
    - write
    linkageType: ''
    returnType: Result
    signature: 'async fn write(&mut self, bs: Buffer) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: abort
      Src: /src/opendal/core/services/ghac/src/writer.rs:207,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 208
      start: 206
    functionDepth: 31
    functionLinenumber: 206
    functionLinenumberEnd: 208
    functionName: GhacWriter::abort
    functionSourceFile: /src/opendal/core/services/ghac/src/writer.rs
    functionUses: 0
    functionsReached:
    - abort
    linkageType: ''
    returnType: Result
    signature: async fn abort(&mut self) -> Result<()>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: close
      Src: /src/opendal/core/services/ghac/src/writer.rs:211,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 212
      start: 210
    functionDepth: 2
    functionLinenumber: 210
    functionLinenumberEnd: 212
    functionName: GhacWriter::close
    functionSourceFile: /src/opendal/core/services/ghac/src/writer.rs
    functionUses: 0
    functionsReached:
    - close
    linkageType: ''
    returnType: Result
    signature: async fn close(&mut self) -> Result<Metadata>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::len
      Src: /src/opendal/core/services/ghac/src/writer.rs:226,1
    - Dst: ghac_v1_write
      Src: /src/opendal/core/services/ghac/src/writer.rs:229,1
    - Dst: status
      Src: /src/opendal/core/services/ghac/src/writer.rs:233,1
    - Dst: is_success
      Src: /src/opendal/core/services/ghac/src/writer.rs:233,1
    - Dst: Err
      Src: /src/opendal/core/services/ghac/src/writer.rs:234,1
    - Dst: super::core::parse_error
      Src: /src/opendal/core/services/ghac/src/writer.rs:234,1
    - Dst: Error::with_operation
      Src: /src/opendal/core/services/ghac/src/writer.rs:234,1
    - Dst: Ok
      Src: /src/opendal/core/services/ghac/src/writer.rs:237,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 30
    argCount: 1
    argNames:
    - bs
    argTypes:
    - Buffer
    constantsTouched: []
    func_position:
      end: 238
      start: 225
    functionDepth: 43
    functionLinenumber: 225
    functionLinenumberEnd: 238
    functionName: GhacWriterV1::write
    functionSourceFile: /src/opendal/core/services/ghac/src/writer.rs
    functionUses: 0
    functionsReached:
    - is_success
    - Error::with_operation
    - status
    - Ok
    - Err
    - Result::len
    - super::core::parse_error
    - ghac_v1_write
    linkageType: ''
    returnType: Result
    signature: 'async fn write(&mut self, bs: Buffer) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/core/services/ghac/src/writer.rs:241,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 242
      start: 240
    functionDepth: 0
    functionLinenumber: 240
    functionLinenumberEnd: 242
    functionName: GhacWriterV1::abort
    functionSourceFile: /src/opendal/core/services/ghac/src/writer.rs
    functionUses: 0
    functionsReached:
    - Ok
    linkageType: ''
    returnType: Result
    signature: async fn abort(&mut self) -> Result<()>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: ghac_finalize_upload
      Src: /src/opendal/core/services/ghac/src/writer.rs:245,1
    - Dst: Ok
      Src: /src/opendal/core/services/ghac/src/writer.rs:248,1
    - Dst: Metadata::default
      Src: /src/opendal/core/services/ghac/src/writer.rs:248,1
    - Dst: Self::with_content_length
      Src: /src/opendal/core/services/ghac/src/writer.rs:248,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 18
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 249
      start: 244
    functionDepth: 41
    functionLinenumber: 244
    functionLinenumberEnd: 249
    functionName: GhacWriterV1::close
    functionSourceFile: /src/opendal/core/services/ghac/src/writer.rs
    functionUses: 0
    functionsReached:
    - ghac_finalize_upload
    - Self::with_content_length
    - Metadata::default
    - Ok
    linkageType: ''
    returnType: Result
    signature: async fn close(&mut self) -> Result<Metadata>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::len
      Src: /src/opendal/core/services/ghac/src/writer.rs:264,1
    - Dst: write
      Src: /src/opendal/core/services/ghac/src/writer.rs:266,1
    - Dst: Ok
      Src: /src/opendal/core/services/ghac/src/writer.rs:268,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 1
    argNames:
    - bs
    argTypes:
    - Buffer
    constantsTouched: []
    func_position:
      end: 269
      start: 263
    functionDepth: 36
    functionLinenumber: 263
    functionLinenumberEnd: 269
    functionName: GhacWriterV2::write
    functionSourceFile: /src/opendal/core/services/ghac/src/writer.rs
    functionUses: 0
    functionsReached:
    - write
    - Result::len
    - Ok
    linkageType: ''
    returnType: Result
    signature: 'async fn write(&mut self, bs: Buffer) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: close
      Src: /src/opendal/core/services/ghac/src/writer.rs:272,1
    - Dst: ghac_finalize_upload
      Src: /src/opendal/core/services/ghac/src/writer.rs:273,1
    - Dst: Ok
      Src: /src/opendal/core/services/ghac/src/writer.rs:277,1
    - Dst: Metadata::default
      Src: /src/opendal/core/services/ghac/src/writer.rs:277,1
    - Dst: Self::with_content_length
      Src: /src/opendal/core/services/ghac/src/writer.rs:277,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 22
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 278
      start: 271
    functionDepth: 41
    functionLinenumber: 271
    functionLinenumberEnd: 278
    functionName: GhacWriterV2::close
    functionSourceFile: /src/opendal/core/services/ghac/src/writer.rs
    functionUses: 0
    functionsReached:
    - Metadata::default
    - Ok
    - close
    - Self::with_content_length
    - ghac_finalize_upload
    linkageType: ''
    returnType: Result
    signature: async fn close(&mut self) -> Result<Metadata>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/core/services/ghac/src/writer.rs:281,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 282
      start: 280
    functionDepth: 0
    functionLinenumber: 280
    functionLinenumberEnd: 282
    functionName: GhacWriterV2::abort
    functionSourceFile: /src/opendal/core/services/ghac/src/writer.rs
    functionUses: 0
    functionsReached:
    - Ok
    linkageType: ''
    returnType: Result
    signature: async fn abort(&mut self) -> Result<()>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: register::<Ghac>
      Src: /src/opendal/core/services/ghac/src/lib.rs:23,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - registry
    argTypes:
    - '&opendal_core::OperatorRegistry'
    constantsTouched: []
    func_position:
      end: 24
      start: 22
    functionDepth: 0
    functionLinenumber: 22
    functionLinenumberEnd: 24
    functionName: register_ghac_service
    functionSourceFile: /src/opendal/core/services/ghac/src/lib.rs
    functionUses: 1
    functionsReached:
    - register::<Ghac>
    linkageType: ''
    returnType: void
    signature: 'pub fn register_ghac_service(registry: &opendal_core::OperatorRegistry)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/core/services/ghac/src/backend.rs:42,1
    - Dst: env::var
      Src: /src/opendal/core/services/ghac/src/backend.rs:45,1
    - Dst: map_err
      Src: /src/opendal/core/services/ghac/src/backend.rs:45,1
    - Dst: Error::new
      Src: /src/opendal/core/services/ghac/src/backend.rs:47,1
    - Dst: Self::with_operation
      Src: /src/opendal/core/services/ghac/src/backend.rs:47,1
    - Dst: Self::set_source
      Src: /src/opendal/core/services/ghac/src/backend.rs:47,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 14
    argCount: 3
    argNames:
    - explicit_value
    - env_var_name
    - operation
    argTypes:
    - Option<String>
    - '&str'
    - '&''static str'
    constantsTouched: []
    func_position:
      end: 51
      start: 36
    functionDepth: 34
    functionLinenumber: 36
    functionLinenumberEnd: 51
    functionName: value_or_env
    functionSourceFile: /src/opendal/core/services/ghac/src/backend.rs
    functionUses: 1
    functionsReached:
    - map_err
    - Ok
    - env::var
    - Error::new
    - Self::with_operation
    - Self::set_source
    linkageType: ''
    returnType: Result
    signature: 'fn value_or_env(explicit_value: Option<String>,env_var_name: &str,operation:
      &''static str,) -> Result<String>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::debug_struct
      Src: /src/opendal/core/services/ghac/src/backend.rs:62,1
    - Dst: field
      Src: /src/opendal/core/services/ghac/src/backend.rs:62,1
    - Dst: finish_non_exhaustive
      Src: /src/opendal/core/services/ghac/src/backend.rs:62,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - f
    argTypes:
    - '&mut std::fmt::Formatter<''_>'
    constantsTouched: []
    func_position:
      end: 65
      start: 61
    functionDepth: 5
    functionLinenumber: 61
    functionLinenumberEnd: 65
    functionName: GhacBuilder::fmt
    functionSourceFile: /src/opendal/core/services/ghac/src/backend.rs
    functionUses: 0
    functionsReached:
    - field
    - Result::debug_struct
    - finish_non_exhaustive
    linkageType: ''
    returnType: std::fmt::Result
    signature: 'fn fmt(&self, f: &mut std::fmt::Formatter<''_>) -> std::fmt::Result'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::is_empty
      Src: /src/opendal/core/services/ghac/src/backend.rs:71,1
    - Dst: Some
      Src: /src/opendal/core/services/ghac/src/backend.rs:74,1
    - Dst: Result::to_string
      Src: /src/opendal/core/services/ghac/src/backend.rs:74,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - root
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 78
      start: 70
    functionDepth: 4
    functionLinenumber: 70
    functionLinenumberEnd: 78
    functionName: GhacBuilder::root
    functionSourceFile: /src/opendal/core/services/ghac/src/backend.rs
    functionUses: 0
    functionsReached:
    - Result::is_empty
    - Result::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn root(mut self, root: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::is_empty
      Src: /src/opendal/core/services/ghac/src/backend.rs:87,1
    - Dst: Some
      Src: /src/opendal/core/services/ghac/src/backend.rs:88,1
    - Dst: Result::to_string
      Src: /src/opendal/core/services/ghac/src/backend.rs:88,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 1
    argNames:
    - version
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 92
      start: 86
    functionDepth: 4
    functionLinenumber: 86
    functionLinenumberEnd: 92
    functionName: GhacBuilder::version
    functionSourceFile: /src/opendal/core/services/ghac/src/backend.rs
    functionUses: 0
    functionsReached:
    - Result::is_empty
    - Result::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn version(mut self, version: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self::is_empty
      Src: /src/opendal/core/services/ghac/src/backend.rs:100,1
    - Dst: Some
      Src: /src/opendal/core/services/ghac/src/backend.rs:101,1
    - Dst: Self::to_string
      Src: /src/opendal/core/services/ghac/src/backend.rs:101,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 1
    argNames:
    - endpoint
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 104
      start: 99
    functionDepth: 4
    functionLinenumber: 99
    functionLinenumberEnd: 104
    functionName: GhacBuilder::endpoint
    functionSourceFile: /src/opendal/core/services/ghac/src/backend.rs
    functionUses: 0
    functionsReached:
    - Self::is_empty
    - Self::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn endpoint(mut self, endpoint: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self::is_empty
      Src: /src/opendal/core/services/ghac/src/backend.rs:113,1
    - Dst: Some
      Src: /src/opendal/core/services/ghac/src/backend.rs:114,1
    - Dst: Self::to_string
      Src: /src/opendal/core/services/ghac/src/backend.rs:114,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 1
    argNames:
    - runtime_token
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 117
      start: 112
    functionDepth: 4
    functionLinenumber: 112
    functionLinenumberEnd: 117
    functionName: GhacBuilder::runtime_token
    functionSourceFile: /src/opendal/core/services/ghac/src/backend.rs
    functionUses: 0
    functionsReached:
    - Self::is_empty
    - Self::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn runtime_token(mut self, runtime_token: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: normalize_root
      Src: /src/opendal/core/services/ghac/src/backend.rs:126,1
    - Dst: unwrap_or_default
      Src: /src/opendal/core/services/ghac/src/backend.rs:126,1
    - Dst: get_cache_service_version
      Src: /src/opendal/core/services/ghac/src/backend.rs:129,1
    - Dst: clone
      Src: /src/opendal/core/services/ghac/src/backend.rs:132,1
    - Dst: unwrap_or_else
      Src: /src/opendal/core/services/ghac/src/backend.rs:132,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/ghac/src/backend.rs:136,1
    - Dst: sha2::Sha256::digest
      Src: /src/opendal/core/services/ghac/src/backend.rs:140,1
    - Dst: format_digest_hex
      Src: /src/opendal/core/services/ghac/src/backend.rs:141,1
    - Dst: unwrap_or_else
      Src: /src/opendal/core/services/ghac/src/backend.rs:144,1
    - Dst: get_cache_service_url
      Src: /src/opendal/core/services/ghac/src/backend.rs:147,1
    - Dst: String::is_empty
      Src: /src/opendal/core/services/ghac/src/backend.rs:148,1
    - Dst: Err
      Src: /src/opendal/core/services/ghac/src/backend.rs:149,1
    - Dst: Error::new
      Src: /src/opendal/core/services/ghac/src/backend.rs:149,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/ghac/src/backend.rs:151,1
    - Dst: ServiceInfo::new
      Src: /src/opendal/core/services/ghac/src/backend.rs:156,1
    - Dst: Default::default
      Src: /src/opendal/core/services/ghac/src/backend.rs:167,1
    - Dst: value_or_env
      Src: /src/opendal/core/services/ghac/src/backend.rs:172,1
    - Dst: Ok
      Src: /src/opendal/core/services/ghac/src/backend.rs:182,1
    - Dst: Arc::new
      Src: /src/opendal/core/services/ghac/src/backend.rs:183,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 56
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 185
      start: 123
    functionDepth: 34
    functionLinenumber: 123
    functionLinenumberEnd: 185
    functionName: GhacBuilder::build
    functionSourceFile: /src/opendal/core/services/ghac/src/backend.rs
    functionUses: 0
    functionsReached:
    - get_cache_service_url
    - ServiceInfo::new
    - Ok
    - Default::default
    - format_digest_hex
    - Arc::new
    - clone
    - normalize_root
    - Err
    - String::is_empty
    - Error::new
    - value_or_env
    - '&str::to_string'
    - get_cache_service_version
    - unwrap_or_default
    - sha2::Sha256::digest
    - unwrap_or_else
    linkageType: ''
    returnType: Result
    signature: fn build(self) -> Result<impl Service>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: String::as_ref
      Src: /src/opendal/dev/src/release/mod.rs:129,1
    - Dst: String::with_capacity
      Src: /src/opendal/dev/src/release/mod.rs:130,1
    - Dst: String::len
      Src: /src/opendal/dev/src/release/mod.rs:130,1
    - Dst: expect
      Src: /src/opendal/dev/src/release/mod.rs:132,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 1
    argNames:
    - digest
    argTypes:
    - impl AsRef<[u8]>
    constantsTouched: []
    func_position:
      end: 135
      start: 126
    functionDepth: 3
    functionLinenumber: 126
    functionLinenumberEnd: 135
    functionName: format_digest_hex
    functionSourceFile: /src/opendal/dev/src/release/mod.rs
    functionUses: 2
    functionsReached:
    - String::with_capacity
    - String::as_ref
    - expect
    - String::len
    linkageType: ''
    returnType: String
    signature: 'fn format_digest_hex(digest: impl AsRef<[u8]>) -> String'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: clone
      Src: /src/opendal/core/services/ghac/src/backend.rs:213,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 214
      start: 212
    functionDepth: 2
    functionLinenumber: 212
    functionLinenumberEnd: 214
    functionName: GhacBackend::info
    functionSourceFile: /src/opendal/core/services/ghac/src/backend.rs
    functionUses: 0
    functionsReached:
    - clone
    linkageType: ''
    returnType: ServiceInfo
    signature: fn info(&self) -> ServiceInfo
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 218
      start: 216
    functionDepth: 0
    functionLinenumber: 216
    functionLinenumberEnd: 218
    functionName: GhacBackend::capability
    functionSourceFile: /src/opendal/core/services/ghac/src/backend.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Capability
    signature: fn capability(&self) -> Capability
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/core/services/ghac/src/backend.rs:226,1
    - Dst: Error::new
      Src: /src/opendal/core/services/ghac/src/backend.rs:226,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - _ctx
    - _path
    - _args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpCreateDir
    constantsTouched: []
    func_position:
      end: 230
      start: 220
    functionDepth: 36
    functionLinenumber: 220
    functionLinenumberEnd: 230
    functionName: GhacBackend::create_dir
    functionSourceFile: /src/opendal/core/services/ghac/src/backend.rs
    functionUses: 0
    functionsReached:
    - Error::new
    - Err
    linkageType: ''
    returnType: Result
    signature: 'async fn create_dir(&self,_ctx: &OperationContext,_path: &str,_args:
      OpCreateDir,) -> Result<RpCreateDir>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: ghac_stat
      Src: /src/opendal/core/services/ghac/src/backend.rs:238,1
    - Dst: status
      Src: /src/opendal/core/services/ghac/src/backend.rs:240,1
    - Dst: parse_into_metadata
      Src: /src/opendal/core/services/ghac/src/backend.rs:243,1
    - Dst: headers
      Src: /src/opendal/core/services/ghac/src/backend.rs:243,1
    - Dst: Ok
      Src: /src/opendal/core/services/ghac/src/backend.rs:244,1
    - Dst: RpStat::new
      Src: /src/opendal/core/services/ghac/src/backend.rs:244,1
    - Dst: Err
      Src: /src/opendal/core/services/ghac/src/backend.rs:246,1
    - Dst: super::core::parse_error
      Src: /src/opendal/core/services/ghac/src/backend.rs:246,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 3
    argNames:
    - ctx
    - path
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpStat
    constantsTouched: []
    func_position:
      end: 248
      start: 237
    functionDepth: 39
    functionLinenumber: 237
    functionLinenumberEnd: 248
    functionName: GhacBackend::stat
    functionSourceFile: /src/opendal/core/services/ghac/src/backend.rs
    functionUses: 0
    functionsReached:
    - parse_into_metadata
    - status
    - Ok
    - RpStat::new
    - Err
    - headers
    - ghac_stat
    - super::core::parse_error
    linkageType: ''
    returnType: Result
    signature: 'async fn stat(&self, ctx: &OperationContext, path: &str, _: OpStat)
      -> Result<RpStat>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/core/services/ghac/src/backend.rs:251,1
    - Dst: oio::StreamReader::new
      Src: /src/opendal/core/services/ghac/src/backend.rs:251,1
    - Dst: GhacReader::new
      Src: /src/opendal/core/services/ghac/src/backend.rs:251,1
    - Dst: GhacBackend::clone
      Src: /src/opendal/core/services/ghac/src/backend.rs:252,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/ghac/src/backend.rs:253,1
    - Dst: Ok
      Src: /src/opendal/core/services/ghac/src/backend.rs:259,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpRead
    constantsTouched: []
    func_position:
      end: 260
      start: 249
    functionDepth: 3
    functionLinenumber: 249
    functionLinenumberEnd: 260
    functionName: GhacBackend::read
    functionSourceFile: /src/opendal/core/services/ghac/src/backend.rs
    functionUses: 0
    functionsReached:
    - Result::clone
    - Ok
    - oio::StreamReader::new
    - GhacReader::new
    - GhacBackend::clone
    linkageType: ''
    returnType: Result
    signature: 'fn read(&self, ctx: &OperationContext, path: &str, args: OpRead) ->
      Result<Self::Reader>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/core/services/ghac/src/backend.rs:263,1
    - Dst: GhacLazyWriter::new
      Src: /src/opendal/core/services/ghac/src/backend.rs:263,1
    - Dst: clone
      Src: /src/opendal/core/services/ghac/src/backend.rs:264,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/ghac/src/backend.rs:265,1
    - Dst: Result::executor
      Src: /src/opendal/core/services/ghac/src/backend.rs:266,1
    - Dst: Self::clone
      Src: /src/opendal/core/services/ghac/src/backend.rs:266,1
    - Dst: to_string
      Src: /src/opendal/core/services/ghac/src/backend.rs:267,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 13
    argCount: 3
    argNames:
    - ctx
    - path
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpWrite
    constantsTouched: []
    func_position:
      end: 269
      start: 262
    functionDepth: 2
    functionLinenumber: 262
    functionLinenumberEnd: 269
    functionName: GhacBackend::write
    functionSourceFile: /src/opendal/core/services/ghac/src/backend.rs
    functionUses: 0
    functionsReached:
    - Result::clone
    - to_string
    - Ok
    - Result::executor
    - clone
    - GhacLazyWriter::new
    - Self::clone
    linkageType: ''
    returnType: Result
    signature: 'fn write(&self, ctx: &OperationContext, path: &str, _: OpWrite) ->
      Result<Self::Writer>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/core/services/ghac/src/backend.rs:272,1
    - Dst: Error::new
      Src: /src/opendal/core/services/ghac/src/backend.rs:272,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - _ctx
    argTypes:
    - '&OperationContext'
    constantsTouched: []
    func_position:
      end: 276
      start: 271
    functionDepth: 36
    functionLinenumber: 271
    functionLinenumberEnd: 276
    functionName: GhacBackend::delete
    functionSourceFile: /src/opendal/core/services/ghac/src/backend.rs
    functionUses: 0
    functionsReached:
    - Error::new
    - Err
    linkageType: ''
    returnType: Result
    signature: 'fn delete(&self, _ctx: &OperationContext) -> Result<Self::Deleter>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/core/services/ghac/src/backend.rs:279,1
    - Dst: Error::new
      Src: /src/opendal/core/services/ghac/src/backend.rs:279,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - _ctx
    - _path
    - _args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpList
    constantsTouched: []
    func_position:
      end: 283
      start: 278
    functionDepth: 36
    functionLinenumber: 278
    functionLinenumberEnd: 283
    functionName: GhacBackend::list
    functionSourceFile: /src/opendal/core/services/ghac/src/backend.rs
    functionUses: 0
    functionsReached:
    - Error::new
    - Err
    linkageType: ''
    returnType: Result
    signature: 'fn list(&self, _ctx: &OperationContext, _path: &str, _args: OpList)
      -> Result<Self::Lister>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/core/services/ghac/src/backend.rs:293,1
    - Dst: Error::new
      Src: /src/opendal/core/services/ghac/src/backend.rs:293,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 5
    argNames:
    - _ctx
    - _from
    - _to
    - _args
    - _opts
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    - OpCopy
    - OpCopier
    constantsTouched: []
    func_position:
      end: 297
      start: 285
    functionDepth: 36
    functionLinenumber: 285
    functionLinenumberEnd: 297
    functionName: GhacBackend::copy
    functionSourceFile: /src/opendal/core/services/ghac/src/backend.rs
    functionUses: 0
    functionsReached:
    - Error::new
    - Err
    linkageType: ''
    returnType: Result
    signature: 'fn copy(&self,_ctx: &OperationContext,_from: &str,_to: &str,_args:
      OpCopy,_opts: OpCopier,) -> Result<Self::Copier>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/core/services/ghac/src/backend.rs:306,1
    - Dst: Error::new
      Src: /src/opendal/core/services/ghac/src/backend.rs:306,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - _ctx
    - _from
    - _to
    - _args
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    - OpRename
    constantsTouched: []
    func_position:
      end: 310
      start: 299
    functionDepth: 36
    functionLinenumber: 299
    functionLinenumberEnd: 310
    functionName: GhacBackend::rename
    functionSourceFile: /src/opendal/core/services/ghac/src/backend.rs
    functionUses: 0
    functionsReached:
    - Error::new
    - Err
    linkageType: ''
    returnType: Result
    signature: 'async fn rename(&self,_ctx: &OperationContext,_from: &str,_to: &str,_args:
      OpRename,) -> Result<RpRename>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/core/services/ghac/src/backend.rs:318,1
    - Dst: Error::new
      Src: /src/opendal/core/services/ghac/src/backend.rs:318,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - _ctx
    - _path
    - _args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpPresign
    constantsTouched: []
    func_position:
      end: 322
      start: 312
    functionDepth: 36
    functionLinenumber: 312
    functionLinenumberEnd: 322
    functionName: GhacBackend::presign
    functionSourceFile: /src/opendal/core/services/ghac/src/backend.rs
    functionUses: 0
    functionsReached:
    - Error::new
    - Err
    linkageType: ''
    returnType: Result
    signature: 'async fn presign(&self,_ctx: &OperationContext,_path: &str,_args:
      OpPresign,) -> Result<RpPresign>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::options
      Src: /src/opendal/core/services/cacache/src/config.rs:33,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/cacache/src/config.rs:33,1
    - Dst: Result::root
      Src: /src/opendal/core/services/cacache/src/config.rs:35,1
    - Dst: Result::is_empty
      Src: /src/opendal/core/services/cacache/src/config.rs:36,1
    - Dst: Result::entry
      Src: /src/opendal/core/services/cacache/src/config.rs:38,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/cacache/src/config.rs:38,1
    - Dst: crate::Entry::or_insert_with
      Src: /src/opendal/core/services/cacache/src/config.rs:38,1
    - Dst: Self::from_iter
      Src: /src/opendal/core/services/cacache/src/config.rs:42,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 20
    argCount: 1
    argNames:
    - uri
    argTypes:
    - '&opendal_core::OperatorUri'
    constantsTouched: []
    func_position:
      end: 43
      start: 32
    functionDepth: 35
    functionLinenumber: 32
    functionLinenumberEnd: 43
    functionName: CacacheConfig::from_uri
    functionSourceFile: /src/opendal/core/services/cacache/src/config.rs
    functionUses: 2
    functionsReached:
    - Result::clone
    - Self::from_iter
    - Result::entry
    - crate::Entry::or_insert_with
    - Result::is_empty
    - Result::root
    - '&str::to_string'
    - Result::options
    linkageType: ''
    returnType: opendal_core::Result
    signature: 'fn from_uri(uri: &opendal_core::OperatorUri) -> opendal_core::Result<Self>'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 47
      start: 45
    functionDepth: 0
    functionLinenumber: 45
    functionLinenumberEnd: 47
    functionName: CacacheConfig::into_builder
    functionSourceFile: /src/opendal/core/services/cacache/src/config.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Self::Builder
    signature: fn into_builder(self) -> Self::Builder
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: OperatorUri::new
      Src: /src/opendal/core/services/cacache/src/config.rs:58,1
    - Dst: Vec::<(String, String)>::new
      Src: /src/opendal/core/services/cacache/src/config.rs:60,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/services/cacache/src/config.rs:58,1
    - Dst: CacacheConfig::from_uri
      Src: /src/opendal/core/services/cacache/src/config.rs:64,1
    - Dst: opendal_core::Result::unwrap
      Src: /src/opendal/core/services/cacache/src/config.rs:64,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 66
      start: 57
    functionDepth: 29
    functionLinenumber: 57
    functionLinenumberEnd: 66
    functionName: tests::from_uri_sets_datadir_from_authority
    functionSourceFile: /src/opendal/core/services/cacache/src/config.rs
    functionUses: 0
    functionsReached:
    - Vec::<(String, String)>::new
    - OperatorUri::new
    - CacacheConfig::from_uri
    - Result::unwrap
    - opendal_core::Result::unwrap
    linkageType: ''
    returnType: void
    signature: fn from_uri_sets_datadir_from_authority()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: OperatorUri::new
      Src: /src/opendal/core/services/cacache/src/config.rs:70,1
    - Dst: Vec::<(String, String)>::new
      Src: /src/opendal/core/services/cacache/src/config.rs:70,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/services/cacache/src/config.rs:70,1
    - Dst: CacacheConfig::from_uri
      Src: /src/opendal/core/services/cacache/src/config.rs:72,1
    - Dst: opendal_core::Result::unwrap
      Src: /src/opendal/core/services/cacache/src/config.rs:72,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 74
      start: 69
    functionDepth: 29
    functionLinenumber: 69
    functionLinenumberEnd: 74
    functionName: tests::from_uri_falls_back_to_path
    functionSourceFile: /src/opendal/core/services/cacache/src/config.rs
    functionUses: 0
    functionsReached:
    - Vec::<(String, String)>::new
    - OperatorUri::new
    - CacacheConfig::from_uri
    - Result::unwrap
    - opendal_core::Result::unwrap
    linkageType: ''
    returnType: void
    signature: fn from_uri_falls_back_to_path()
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - core
    argTypes:
    - Arc<CacacheCore>
    constantsTouched: []
    func_position:
      end: 32
      start: 30
    functionDepth: 0
    functionLinenumber: 30
    functionLinenumberEnd: 32
    functionName: CacacheDeleter::new
    functionSourceFile: /src/opendal/core/services/cacache/src/deleter.rs
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(core: Arc<CacacheCore>) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: delete
      Src: /src/opendal/core/services/cacache/src/deleter.rs:37,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - path
    argTypes:
    - String
    - OpDelete
    constantsTouched: []
    func_position:
      end: 38
      start: 36
    functionDepth: 32
    functionLinenumber: 36
    functionLinenumberEnd: 38
    functionName: CacacheDeleter::delete_once
    functionSourceFile: /src/opendal/core/services/cacache/src/deleter.rs
    functionUses: 0
    functionsReached:
    - delete
    linkageType: ''
    returnType: Result
    signature: 'async fn delete_once(&self, path: String, _: OpDelete) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: to_string
      Src: /src/opendal/core/services/cacache/src/reader.rs:32,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - backend
    - path
    argTypes:
    - CacacheBackend
    - '&str'
    - OpRead
    constantsTouched: []
    func_position:
      end: 34
      start: 29
    functionDepth: 2
    functionLinenumber: 29
    functionLinenumberEnd: 34
    functionName: CacacheReader::new
    functionSourceFile: /src/opendal/core/services/cacache/src/reader.rs
    functionUses: 1
    functionsReached:
    - to_string
    linkageType: ''
    returnType: Self
    signature: 'pub(super) fn new(backend: CacacheBackend, path: &str, _: OpRead)
      -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: as_str
      Src: /src/opendal/core/services/cacache/src/reader.rs:40,1
    - Dst: get
      Src: /src/opendal/core/services/cacache/src/reader.rs:41,1
    - Dst: Bytes::len
      Src: /src/opendal/core/services/cacache/src/reader.rs:45,1
    - Dst: Buffer::from
      Src: /src/opendal/core/services/cacache/src/reader.rs:46,1
    - Dst: Bytes::slice
      Src: /src/opendal/core/services/cacache/src/reader.rs:46,1
    - Dst: (Vec::to_content_range
      Src: /src/opendal/core/services/cacache/src/reader.rs:46,1
    - Dst: Bytes::len
      Src: /src/opendal/core/services/cacache/src/reader.rs:46,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/cacache/src/reader.rs:47,1
    - Dst: Self::with_content_length
      Src: /src/opendal/core/services/cacache/src/reader.rs:47,1
    - Dst: Ok
      Src: /src/opendal/core/services/cacache/src/reader.rs:48,1
    - Dst: RpRead::new
      Src: /src/opendal/core/services/cacache/src/reader.rs:49,1
    - Dst: Box::new
      Src: /src/opendal/core/services/cacache/src/reader.rs:50,1
    - Dst: Err
      Src: /src/opendal/core/services/cacache/src/reader.rs:53,1
    - Dst: Error::new
      Src: /src/opendal/core/services/cacache/src/reader.rs:53,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 33
    argCount: 1
    argNames:
    - range
    argTypes:
    - BytesRange
    constantsTouched: []
    func_position:
      end: 55
      start: 38
    functionDepth: 40
    functionLinenumber: 38
    functionLinenumberEnd: 55
    functionName: CacacheReader::open
    functionSourceFile: /src/opendal/core/services/cacache/src/reader.rs
    functionUses: 0
    functionsReached:
    - Metadata::new
    - get
    - Ok
    - Box::new
    - Self::with_content_length
    - Err
    - Error::new
    - as_str
    - Bytes::slice
    - (Vec::to_content_range
    - Bytes::len
    - RpRead::new
    - Buffer::from
    linkageType: ''
    returnType: Result
    signature: 'async fn open(&self, range: BytesRange) -> Result<(RpRead, Box<dyn
      oio::ReadStreamDyn>)>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::debug_struct
      Src: /src/opendal/core/services/cacache/src/core.rs:29,1
    - Dst: field
      Src: /src/opendal/core/services/cacache/src/core.rs:29,1
    - Dst: finish
      Src: /src/opendal/core/services/cacache/src/core.rs:29,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - f
    argTypes:
    - '&mut std::fmt::Formatter<''_>'
    constantsTouched: []
    func_position:
      end: 32
      start: 28
    functionDepth: 5
    functionLinenumber: 28
    functionLinenumberEnd: 32
    functionName: CacacheCore::fmt
    functionSourceFile: /src/opendal/core/services/cacache/src/core.rs
    functionUses: 0
    functionsReached:
    - field
    - finish
    - Result::debug_struct
    linkageType: ''
    returnType: std::fmt::Result
    signature: 'fn fmt(&self, f: &mut std::fmt::Formatter<''_>) -> std::fmt::Result'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: clone
      Src: /src/opendal/core/services/cacache/src/core.rs:37,1
    - Dst: FoyerKey::to_string
      Src: /src/opendal/core/services/cacache/src/core.rs:38,1
    - Dst: cacache::read
      Src: /src/opendal/core/services/cacache/src/core.rs:40,1
    - Dst: Ok
      Src: /src/opendal/core/services/cacache/src/core.rs:43,1
    - Dst: Some
      Src: /src/opendal/core/services/cacache/src/core.rs:43,1
    - Dst: bytes::Bytes::from
      Src: /src/opendal/core/services/cacache/src/core.rs:43,1
    - Dst: Ok
      Src: /src/opendal/core/services/cacache/src/core.rs:44,1
    - Dst: Err
      Src: /src/opendal/core/services/cacache/src/core.rs:45,1
    - Dst: Error::new
      Src: /src/opendal/core/services/cacache/src/core.rs:45,1
    - Dst: Self::with_operation
      Src: /src/opendal/core/services/cacache/src/core.rs:45,1
    - Dst: Self::set_source
      Src: /src/opendal/core/services/cacache/src/core.rs:45,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 21
    argCount: 1
    argNames:
    - key
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 49
      start: 36
    functionDepth: 31
    functionLinenumber: 36
    functionLinenumberEnd: 49
    functionName: CacacheCore::get
    functionSourceFile: /src/opendal/core/services/cacache/src/core.rs
    functionUses: 0
    functionsReached:
    - Ok
    - cacache::read
    - clone
    - Some
    - FoyerKey::to_string
    - Err
    - Error::new
    - bytes::Bytes::from
    - Self::with_operation
    - Self::set_source
    linkageType: ''
    returnType: Result
    signature: 'pub async fn get(&self, key: &str) -> Result<Option<bytes::Bytes>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: clone
      Src: /src/opendal/core/services/cacache/src/core.rs:52,1
    - Dst: FoyerKey::to_string
      Src: /src/opendal/core/services/cacache/src/core.rs:53,1
    - Dst: cacache::write
      Src: /src/opendal/core/services/cacache/src/core.rs:55,1
    - Dst: Vec::to_vec
      Src: /src/opendal/core/services/cacache/src/core.rs:55,1
    - Dst: map_err
      Src: /src/opendal/core/services/cacache/src/core.rs:55,1
    - Dst: Error::new
      Src: /src/opendal/core/services/cacache/src/core.rs:58,1
    - Dst: Self::with_operation
      Src: /src/opendal/core/services/cacache/src/core.rs:58,1
    - Dst: Self::set_source
      Src: /src/opendal/core/services/cacache/src/core.rs:58,1
    - Dst: Ok
      Src: /src/opendal/core/services/cacache/src/core.rs:63,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 23
    argCount: 2
    argNames:
    - key
    - value
    argTypes:
    - '&str'
    - bytes::Bytes
    constantsTouched: []
    func_position:
      end: 64
      start: 51
    functionDepth: 36
    functionLinenumber: 51
    functionLinenumberEnd: 64
    functionName: CacacheCore::set
    functionSourceFile: /src/opendal/core/services/cacache/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - Ok
    - clone
    - FoyerKey::to_string
    - Error::new
    - Vec::to_vec
    - cacache::write
    - Self::with_operation
    - Self::set_source
    linkageType: ''
    returnType: Result
    signature: 'pub async fn set(&self, key: &str, value: bytes::Bytes) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: clone
      Src: /src/opendal/core/services/cacache/src/core.rs:67,1
    - Dst: FoyerKey::to_string
      Src: /src/opendal/core/services/cacache/src/core.rs:68,1
    - Dst: cacache::remove
      Src: /src/opendal/core/services/cacache/src/core.rs:70,1
    - Dst: map_err
      Src: /src/opendal/core/services/cacache/src/core.rs:70,1
    - Dst: Error::new
      Src: /src/opendal/core/services/cacache/src/core.rs:73,1
    - Dst: Self::with_operation
      Src: /src/opendal/core/services/cacache/src/core.rs:73,1
    - Dst: Self::set_source
      Src: /src/opendal/core/services/cacache/src/core.rs:73,1
    - Dst: Ok
      Src: /src/opendal/core/services/cacache/src/core.rs:78,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 21
    argCount: 1
    argNames:
    - key
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 79
      start: 66
    functionDepth: 36
    functionLinenumber: 66
    functionLinenumberEnd: 79
    functionName: CacacheCore::delete
    functionSourceFile: /src/opendal/core/services/cacache/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - Ok
    - cacache::remove
    - clone
    - Error::new
    - FoyerKey::to_string
    - Self::with_operation
    - Self::set_source
    linkageType: ''
    returnType: Result
    signature: 'pub async fn delete(&self, key: &str) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: clone
      Src: /src/opendal/core/services/cacache/src/core.rs:82,1
    - Dst: FoyerKey::to_string
      Src: /src/opendal/core/services/cacache/src/core.rs:83,1
    - Dst: cacache::metadata
      Src: /src/opendal/core/services/cacache/src/core.rs:85,1
    - Dst: Ok
      Src: /src/opendal/core/services/cacache/src/core.rs:88,1
    - Dst: Some
      Src: /src/opendal/core/services/cacache/src/core.rs:88,1
    - Dst: Ok
      Src: /src/opendal/core/services/cacache/src/core.rs:89,1
    - Dst: Ok
      Src: /src/opendal/core/services/cacache/src/core.rs:90,1
    - Dst: Err
      Src: /src/opendal/core/services/cacache/src/core.rs:91,1
    - Dst: Error::new
      Src: /src/opendal/core/services/cacache/src/core.rs:91,1
    - Dst: Self::with_operation
      Src: /src/opendal/core/services/cacache/src/core.rs:91,1
    - Dst: Self::set_source
      Src: /src/opendal/core/services/cacache/src/core.rs:91,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 21
    argCount: 1
    argNames:
    - key
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 95
      start: 81
    functionDepth: 37
    functionLinenumber: 81
    functionLinenumberEnd: 95
    functionName: CacacheCore::metadata
    functionSourceFile: /src/opendal/core/services/cacache/src/core.rs
    functionUses: 0
    functionsReached:
    - Ok
    - clone
    - Some
    - FoyerKey::to_string
    - Err
    - Error::new
    - Self::with_operation
    - Self::set_source
    - cacache::metadata
    linkageType: ''
    returnType: Result
    signature: 'pub async fn metadata(&self, key: &str) -> Result<Option<cacache::Metadata>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: oio::QueueBuf::new
      Src: /src/opendal/core/services/cacache/src/writer.rs:36,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - core
    - path
    argTypes:
    - Arc<CacacheCore>
    - String
    constantsTouched: []
    func_position:
      end: 38
      start: 32
    functionDepth: 4
    functionLinenumber: 32
    functionLinenumberEnd: 38
    functionName: CacacheWriter::new
    functionSourceFile: /src/opendal/core/services/cacache/src/writer.rs
    functionUses: 1
    functionsReached:
    - oio::QueueBuf::new
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(core: Arc<CacacheCore>, path: String) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: push
      Src: /src/opendal/core/services/cacache/src/writer.rs:43,1
    - Dst: Ok
      Src: /src/opendal/core/services/cacache/src/writer.rs:44,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - bs
    argTypes:
    - Buffer
    constantsTouched: []
    func_position:
      end: 45
      start: 42
    functionDepth: 5
    functionLinenumber: 42
    functionLinenumberEnd: 45
    functionName: CacacheWriter::write
    functionSourceFile: /src/opendal/core/services/cacache/src/writer.rs
    functionUses: 0
    functionsReached:
    - Ok
    - push
    linkageType: ''
    returnType: Result
    signature: 'async fn write(&mut self, bs: Buffer) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: clone
      Src: /src/opendal/core/services/cacache/src/writer.rs:48,1
    - Dst: collect
      Src: /src/opendal/core/services/cacache/src/writer.rs:48,1
    - Dst: io::Result::len
      Src: /src/opendal/core/services/cacache/src/writer.rs:49,1
    - Dst: set
      Src: /src/opendal/core/services/cacache/src/writer.rs:51,1
    - Dst: io::Result::to_bytes
      Src: /src/opendal/core/services/cacache/src/writer.rs:51,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/cacache/src/writer.rs:53,1
    - Dst: EntryMode::from_path
      Src: /src/opendal/core/services/cacache/src/writer.rs:53,1
    - Dst: Self::with_content_length
      Src: /src/opendal/core/services/cacache/src/writer.rs:53,1
    - Dst: Ok
      Src: /src/opendal/core/services/cacache/src/writer.rs:54,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 25
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 55
      start: 47
    functionDepth: 36
    functionLinenumber: 47
    functionLinenumberEnd: 55
    functionName: CacacheWriter::close
    functionSourceFile: /src/opendal/core/services/cacache/src/writer.rs
    functionUses: 0
    functionsReached:
    - collect
    - Metadata::new
    - Ok
    - io::Result::len
    - set
    - Self::with_content_length
    - clone
    - io::Result::to_bytes
    - EntryMode::from_path
    linkageType: ''
    returnType: Result
    signature: async fn close(&mut self) -> Result<Metadata>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: clear
      Src: /src/opendal/core/services/cacache/src/writer.rs:58,1
    - Dst: Ok
      Src: /src/opendal/core/services/cacache/src/writer.rs:59,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 60
      start: 57
    functionDepth: 2
    functionLinenumber: 57
    functionLinenumberEnd: 60
    functionName: CacacheWriter::abort
    functionSourceFile: /src/opendal/core/services/cacache/src/writer.rs
    functionUses: 0
    functionsReached:
    - clear
    - Ok
    linkageType: ''
    returnType: Result
    signature: async fn abort(&mut self) -> Result<()>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: register::<Cacache>
      Src: /src/opendal/core/services/cacache/src/lib.rs:38,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - registry
    argTypes:
    - '&opendal_core::OperatorRegistry'
    constantsTouched: []
    func_position:
      end: 39
      start: 37
    functionDepth: 0
    functionLinenumber: 37
    functionLinenumberEnd: 39
    functionName: register_cacache_service
    functionSourceFile: /src/opendal/core/services/cacache/src/lib.rs
    functionUses: 1
    functionsReached:
    - register::<Cacache>
    linkageType: ''
    returnType: void
    signature: 'pub fn register_cacache_service(registry: &opendal_core::OperatorRegistry)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Some
      Src: /src/opendal/core/services/cacache/src/backend.rs:39,1
    - Dst: into
      Src: /src/opendal/core/services/cacache/src/backend.rs:39,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - path
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 41
      start: 38
    functionDepth: 29
    functionLinenumber: 38
    functionLinenumberEnd: 41
    functionName: CacacheBuilder::datadir
    functionSourceFile: /src/opendal/core/services/cacache/src/backend.rs
    functionUses: 0
    functionsReached:
    - into
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn datadir(mut self, path: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: ok_or_else
      Src: /src/opendal/core/services/cacache/src/backend.rs:48,1
    - Dst: Error::new
      Src: /src/opendal/core/services/cacache/src/backend.rs:49,1
    - Dst: Self::with_context
      Src: /src/opendal/core/services/cacache/src/backend.rs:49,1
    - Dst: clone
      Src: /src/opendal/core/services/cacache/src/backend.rs:54,1
    - Dst: ServiceInfo::new
      Src: /src/opendal/core/services/cacache/src/backend.rs:57,1
    - Dst: Default::default
      Src: /src/opendal/core/services/cacache/src/backend.rs:65,1
    - Dst: Ok
      Src: /src/opendal/core/services/cacache/src/backend.rs:68,1
    - Dst: Arc::new
      Src: /src/opendal/core/services/cacache/src/backend.rs:69,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 19
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 73
      start: 47
    functionDepth: 36
    functionLinenumber: 47
    functionLinenumberEnd: 73
    functionName: CacacheBuilder::build
    functionSourceFile: /src/opendal/core/services/cacache/src/backend.rs
    functionUses: 0
    functionsReached:
    - ServiceInfo::new
    - Ok
    - Default::default
    - Arc::new
    - clone
    - Error::new
    - Self::with_context
    - ok_or_else
    linkageType: ''
    returnType: Result
    signature: fn build(self) -> Result<impl Service>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: clone
      Src: /src/opendal/core/services/cacache/src/backend.rs:92,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 93
      start: 91
    functionDepth: 2
    functionLinenumber: 91
    functionLinenumberEnd: 93
    functionName: CacacheBackend::info
    functionSourceFile: /src/opendal/core/services/cacache/src/backend.rs
    functionUses: 0
    functionsReached:
    - clone
    linkageType: ''
    returnType: ServiceInfo
    signature: fn info(&self) -> ServiceInfo
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 97
      start: 95
    functionDepth: 0
    functionLinenumber: 95
    functionLinenumberEnd: 97
    functionName: CacacheBackend::capability
    functionSourceFile: /src/opendal/core/services/cacache/src/backend.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Capability
    signature: fn capability(&self) -> Capability
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/core/services/cacache/src/backend.rs:105,1
    - Dst: Error::new
      Src: /src/opendal/core/services/cacache/src/backend.rs:105,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - _ctx
    - _path
    - _args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpCreateDir
    constantsTouched: []
    func_position:
      end: 109
      start: 99
    functionDepth: 36
    functionLinenumber: 99
    functionLinenumberEnd: 109
    functionName: CacacheBackend::create_dir
    functionSourceFile: /src/opendal/core/services/cacache/src/backend.rs
    functionUses: 0
    functionsReached:
    - Error::new
    - Err
    linkageType: ''
    returnType: Result
    signature: 'async fn create_dir(&self,_ctx: &OperationContext,_path: &str,_args:
      OpCreateDir,) -> Result<RpCreateDir>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: metadata
      Src: /src/opendal/core/services/cacache/src/backend.rs:112,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/cacache/src/backend.rs:116,1
    - Dst: storage::Result::set_content_length
      Src: /src/opendal/core/services/cacache/src/backend.rs:117,1
    - Dst: Timestamp::from_millisecond
      Src: /src/opendal/core/services/cacache/src/backend.rs:120,1
    - Dst: storage::Result::set_last_modified
      Src: /src/opendal/core/services/cacache/src/backend.rs:121,1
    - Dst: Ok
      Src: /src/opendal/core/services/cacache/src/backend.rs:123,1
    - Dst: RpStat::new
      Src: /src/opendal/core/services/cacache/src/backend.rs:123,1
    - Dst: Err
      Src: /src/opendal/core/services/cacache/src/backend.rs:125,1
    - Dst: Error::new
      Src: /src/opendal/core/services/cacache/src/backend.rs:125,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 25
    argCount: 3
    argNames:
    - _ctx
    - path
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpStat
    constantsTouched: []
    func_position:
      end: 127
      start: 111
    functionDepth: 37
    functionLinenumber: 111
    functionLinenumberEnd: 127
    functionName: CacacheBackend::stat
    functionSourceFile: /src/opendal/core/services/cacache/src/backend.rs
    functionUses: 0
    functionsReached:
    - Metadata::new
    - Ok
    - storage::Result::set_last_modified
    - metadata
    - RpStat::new
    - storage::Result::set_content_length
    - Err
    - Error::new
    - Timestamp::from_millisecond
    linkageType: ''
    returnType: Result
    signature: 'async fn stat(&self, _ctx: &OperationContext, path: &str, _: OpStat)
      -> Result<RpStat>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/core/services/cacache/src/backend.rs:130,1
    - Dst: oio::StreamReader::new
      Src: /src/opendal/core/services/cacache/src/backend.rs:130,1
    - Dst: CacacheReader::new
      Src: /src/opendal/core/services/cacache/src/backend.rs:130,1
    - Dst: CacacheBackend::clone
      Src: /src/opendal/core/services/cacache/src/backend.rs:131,1
    - Dst: Ok
      Src: /src/opendal/core/services/cacache/src/backend.rs:137,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - _ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpRead
    constantsTouched: []
    func_position:
      end: 138
      start: 128
    functionDepth: 3
    functionLinenumber: 128
    functionLinenumberEnd: 138
    functionName: CacacheBackend::read
    functionSourceFile: /src/opendal/core/services/cacache/src/backend.rs
    functionUses: 0
    functionsReached:
    - oio::StreamReader::new
    - CacacheBackend::clone
    - CacacheReader::new
    - Ok
    linkageType: ''
    returnType: Result
    signature: 'fn read(&self, _ctx: &OperationContext, path: &str, args: OpRead)
      -> Result<Self::Reader>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/core/services/cacache/src/backend.rs:142,1
    - Dst: CacacheWriter::new
      Src: /src/opendal/core/services/cacache/src/backend.rs:142,1
    - Dst: clone
      Src: /src/opendal/core/services/cacache/src/backend.rs:142,1
    - Dst: to_string
      Src: /src/opendal/core/services/cacache/src/backend.rs:142,1
    - Dst: Ok
      Src: /src/opendal/core/services/cacache/src/backend.rs:144,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 3
    argNames:
    - _ctx
    - path
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpWrite
    constantsTouched: []
    func_position:
      end: 145
      start: 140
    functionDepth: 5
    functionLinenumber: 140
    functionLinenumberEnd: 145
    functionName: CacacheBackend::write
    functionSourceFile: /src/opendal/core/services/cacache/src/backend.rs
    functionUses: 0
    functionsReached:
    - to_string
    - clone
    - Ok
    - CacacheWriter::new
    linkageType: ''
    returnType: Result
    signature: 'fn write(&self, _ctx: &OperationContext, path: &str, _: OpWrite) ->
      Result<Self::Writer>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/core/services/cacache/src/backend.rs:149,1
    - Dst: oio::OneShotDeleter::new
      Src: /src/opendal/core/services/cacache/src/backend.rs:149,1
    - Dst: CacacheDeleter::new
      Src: /src/opendal/core/services/cacache/src/backend.rs:149,1
    - Dst: clone
      Src: /src/opendal/core/services/cacache/src/backend.rs:150,1
    - Dst: Ok
      Src: /src/opendal/core/services/cacache/src/backend.rs:154,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - _ctx
    argTypes:
    - '&OperationContext'
    constantsTouched: []
    func_position:
      end: 155
      start: 147
    functionDepth: 2
    functionLinenumber: 147
    functionLinenumberEnd: 155
    functionName: CacacheBackend::delete
    functionSourceFile: /src/opendal/core/services/cacache/src/backend.rs
    functionUses: 0
    functionsReached:
    - oio::OneShotDeleter::new
    - CacacheDeleter::new
    - clone
    - Ok
    linkageType: ''
    returnType: Result
    signature: 'fn delete(&self, _ctx: &OperationContext) -> Result<Self::Deleter>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/core/services/cacache/src/backend.rs:158,1
    - Dst: Error::new
      Src: /src/opendal/core/services/cacache/src/backend.rs:158,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - _ctx
    - _path
    - _args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpList
    constantsTouched: []
    func_position:
      end: 162
      start: 157
    functionDepth: 36
    functionLinenumber: 157
    functionLinenumberEnd: 162
    functionName: CacacheBackend::list
    functionSourceFile: /src/opendal/core/services/cacache/src/backend.rs
    functionUses: 0
    functionsReached:
    - Error::new
    - Err
    linkageType: ''
    returnType: Result
    signature: 'fn list(&self, _ctx: &OperationContext, _path: &str, _args: OpList)
      -> Result<Self::Lister>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/core/services/cacache/src/backend.rs:172,1
    - Dst: Error::new
      Src: /src/opendal/core/services/cacache/src/backend.rs:172,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 5
    argNames:
    - _ctx
    - _from
    - _to
    - _args
    - _opts
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    - OpCopy
    - OpCopier
    constantsTouched: []
    func_position:
      end: 176
      start: 164
    functionDepth: 36
    functionLinenumber: 164
    functionLinenumberEnd: 176
    functionName: CacacheBackend::copy
    functionSourceFile: /src/opendal/core/services/cacache/src/backend.rs
    functionUses: 0
    functionsReached:
    - Error::new
    - Err
    linkageType: ''
    returnType: Result
    signature: 'fn copy(&self,_ctx: &OperationContext,_from: &str,_to: &str,_args:
      OpCopy,_opts: OpCopier,) -> Result<Self::Copier>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/core/services/cacache/src/backend.rs:185,1
    - Dst: Error::new
      Src: /src/opendal/core/services/cacache/src/backend.rs:185,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - _ctx
    - _from
    - _to
    - _args
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    - OpRename
    constantsTouched: []
    func_position:
      end: 189
      start: 178
    functionDepth: 36
    functionLinenumber: 178
    functionLinenumberEnd: 189
    functionName: CacacheBackend::rename
    functionSourceFile: /src/opendal/core/services/cacache/src/backend.rs
    functionUses: 0
    functionsReached:
    - Error::new
    - Err
    linkageType: ''
    returnType: Result
    signature: 'async fn rename(&self,_ctx: &OperationContext,_from: &str,_to: &str,_args:
      OpRename,) -> Result<RpRename>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/core/services/cacache/src/backend.rs:197,1
    - Dst: Error::new
      Src: /src/opendal/core/services/cacache/src/backend.rs:197,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - _ctx
    - _path
    - _args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpPresign
    constantsTouched: []
    func_position:
      end: 201
      start: 191
    functionDepth: 36
    functionLinenumber: 191
    functionLinenumberEnd: 201
    functionName: CacacheBackend::presign
    functionSourceFile: /src/opendal/core/services/cacache/src/backend.rs
    functionUses: 0
    functionsReached:
    - Error::new
    - Err
    linkageType: ''
    returnType: Result
    signature: 'async fn presign(&self,_ctx: &OperationContext,_path: &str,_args:
      OpPresign,) -> Result<RpPresign>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::options
      Src: /src/opendal/core/services/dashmap/src/config.rs:38,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/dashmap/src/config.rs:38,1
    - Dst: Result::root
      Src: /src/opendal/core/services/dashmap/src/config.rs:40,1
    - Dst: Result::is_empty
      Src: /src/opendal/core/services/dashmap/src/config.rs:41,1
    - Dst: Result::insert
      Src: /src/opendal/core/services/dashmap/src/config.rs:43,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/dashmap/src/config.rs:43,1
    - Dst: Result::to_string
      Src: /src/opendal/core/services/dashmap/src/config.rs:43,1
    - Dst: Self::from_iter
      Src: /src/opendal/core/services/dashmap/src/config.rs:46,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 19
    argCount: 1
    argNames:
    - uri
    argTypes:
    - '&OperatorUri'
    constantsTouched: []
    func_position:
      end: 47
      start: 37
    functionDepth: 35
    functionLinenumber: 37
    functionLinenumberEnd: 47
    functionName: DashmapConfig::from_uri
    functionSourceFile: /src/opendal/core/services/dashmap/src/config.rs
    functionUses: 0
    functionsReached:
    - Result::clone
    - Self::from_iter
    - Result::to_string
    - Result::insert
    - Result::is_empty
    - Result::root
    - '&str::to_string'
    - Result::options
    linkageType: ''
    returnType: Result
    signature: 'fn from_uri(uri: &OperatorUri) -> Result<Self>'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 51
      start: 49
    functionDepth: 0
    functionLinenumber: 49
    functionLinenumberEnd: 51
    functionName: DashmapConfig::into_builder
    functionSourceFile: /src/opendal/core/services/dashmap/src/config.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Self::Builder
    signature: fn into_builder(self) -> Self::Builder
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: OperatorUri::new
      Src: /src/opendal/core/services/monoiofs/src/config.rs:63,1
    - Dst: Vec::<(String, String)>::new
      Src: /src/opendal/core/services/monoiofs/src/config.rs:63,1
    - Dst: MonoiofsConfig::from_uri
      Src: /src/opendal/core/services/monoiofs/src/config.rs:65,1
    - Dst: Ok
      Src: /src/opendal/core/services/monoiofs/src/config.rs:67,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 68
      start: 62
    functionDepth: 29
    functionLinenumber: 62
    functionLinenumberEnd: 68
    functionName: tests::from_uri_sets_root
    functionSourceFile: /src/opendal/core/services/monoiofs/src/config.rs
    functionUses: 0
    functionsReached:
    - Vec::<(String, String)>::new
    - OperatorUri::new
    - MonoiofsConfig::from_uri
    - Ok
    linkageType: ''
    returnType: Result
    signature: fn from_uri_sets_root() -> Result<()>
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - core
    - root
    argTypes:
    - Arc<DashmapCore>
    - String
    constantsTouched: []
    func_position:
      end: 33
      start: 31
    functionDepth: 0
    functionLinenumber: 31
    functionLinenumberEnd: 33
    functionName: DashmapDeleter::new
    functionSourceFile: /src/opendal/core/services/dashmap/src/deleter.rs
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(core: Arc<DashmapCore>, root: String) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/dashmap/src/deleter.rs:38,1
    - Dst: delete
      Src: /src/opendal/core/services/dashmap/src/deleter.rs:39,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 2
    argNames:
    - path
    - _op
    argTypes:
    - String
    - OpDelete
    constantsTouched: []
    func_position:
      end: 40
      start: 37
    functionDepth: 32
    functionLinenumber: 37
    functionLinenumberEnd: 40
    functionName: DashmapDeleter::delete_once
    functionSourceFile: /src/opendal/core/services/dashmap/src/deleter.rs
    functionUses: 0
    functionsReached:
    - build_abs_path
    - delete
    linkageType: ''
    returnType: Result
    signature: 'async fn delete_once(&self, path: String, _op: OpDelete) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: iter
      Src: /src/opendal/core/services/dashmap/src/lister.rs:34,1
    - Dst: map
      Src: /src/opendal/core/services/dashmap/src/lister.rs:34,1
    - Dst: Result::key
      Src: /src/opendal/core/services/dashmap/src/lister.rs:37,1
    - Dst: FoyerKey::clone
      Src: /src/opendal/core/services/dashmap/src/lister.rs:37,1
    - Dst: Result::value
      Src: /src/opendal/core/services/dashmap/src/lister.rs:37,1
    - Dst: clone
      Src: /src/opendal/core/services/dashmap/src/lister.rs:37,1
    - Dst: collect
      Src: /src/opendal/core/services/dashmap/src/lister.rs:34,1
    - Dst: build_abs_path
      Src: /src/opendal/core/services/dashmap/src/lister.rs:39,1
    - Dst: into_iter
      Src: /src/opendal/core/services/dashmap/src/lister.rs:44,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 24
    argCount: 3
    argNames:
    - core
    - root
    - path
    argTypes:
    - Arc<DashmapCore>
    - String
    - String
    constantsTouched: []
    func_position:
      end: 46
      start: 33
    functionDepth: 33
    functionLinenumber: 33
    functionLinenumberEnd: 46
    functionName: DashmapLister::new
    functionSourceFile: /src/opendal/core/services/dashmap/src/lister.rs
    functionUses: 1
    functionsReached:
    - collect
    - iter
    - Result::key
    - clone
    - build_abs_path
    - into_iter
    - map
    - Result::value
    - FoyerKey::clone
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(core: Arc<DashmapCore>, root: String, path: String) ->
      Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: by_ref
      Src: /src/opendal/core/services/dashmap/src/lister.rs:51,1
    - Dst: FoyerKey::starts_with
      Src: /src/opendal/core/services/dashmap/src/lister.rs:52,1
    - Dst: build_rel_path
      Src: /src/opendal/core/services/dashmap/src/lister.rs:53,1
    - Dst: oio::Entry::new
      Src: /src/opendal/core/services/dashmap/src/lister.rs:54,1
    - Dst: Ok
      Src: /src/opendal/core/services/dashmap/src/lister.rs:55,1
    - Dst: Some
      Src: /src/opendal/core/services/dashmap/src/lister.rs:55,1
    - Dst: Ok
      Src: /src/opendal/core/services/dashmap/src/lister.rs:59,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 22
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 60
      start: 50
    functionDepth: 4
    functionLinenumber: 50
    functionLinenumberEnd: 60
    functionName: DashmapLister::next
    functionSourceFile: /src/opendal/core/services/dashmap/src/lister.rs
    functionUses: 0
    functionsReached:
    - by_ref
    - oio::Entry::new
    - Ok
    - FoyerKey::starts_with
    - build_rel_path
    - Some
    linkageType: ''
    returnType: Result
    signature: async fn next(&mut self) -> Result<Option<oio::Entry>>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: to_string
      Src: /src/opendal/core/services/dashmap/src/reader.rs:32,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - backend
    - path
    argTypes:
    - DashmapBackend
    - '&str'
    - OpRead
    constantsTouched: []
    func_position:
      end: 34
      start: 29
    functionDepth: 2
    functionLinenumber: 29
    functionLinenumberEnd: 34
    functionName: DashmapReader::new
    functionSourceFile: /src/opendal/core/services/dashmap/src/reader.rs
    functionUses: 1
    functionsReached:
    - to_string
    linkageType: ''
    returnType: Self
    signature: 'pub(super) fn new(backend: DashmapBackend, path: &str, _: OpRead)
      -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: as_str
      Src: /src/opendal/core/services/dashmap/src/reader.rs:40,1
    - Dst: build_abs_path
      Src: /src/opendal/core/services/dashmap/src/reader.rs:41,1
    - Dst: get
      Src: /src/opendal/core/services/dashmap/src/reader.rs:43,1
    - Dst: len
      Src: /src/opendal/core/services/dashmap/src/reader.rs:45,1
    - Dst: slice
      Src: /src/opendal/core/services/dashmap/src/reader.rs:46,1
    - Dst: (Vec::to_content_range
      Src: /src/opendal/core/services/dashmap/src/reader.rs:48,1
    - Dst: len
      Src: /src/opendal/core/services/dashmap/src/reader.rs:48,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/dashmap/src/reader.rs:49,1
    - Dst: Self::with_content_length
      Src: /src/opendal/core/services/dashmap/src/reader.rs:49,1
    - Dst: Ok
      Src: /src/opendal/core/services/dashmap/src/reader.rs:50,1
    - Dst: RpRead::new
      Src: /src/opendal/core/services/dashmap/src/reader.rs:51,1
    - Dst: Box::new
      Src: /src/opendal/core/services/dashmap/src/reader.rs:52,1
    - Dst: Err
      Src: /src/opendal/core/services/dashmap/src/reader.rs:55,1
    - Dst: Error::new
      Src: /src/opendal/core/services/dashmap/src/reader.rs:55,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 38
    argCount: 1
    argNames:
    - range
    argTypes:
    - BytesRange
    constantsTouched: []
    func_position:
      end: 57
      start: 38
    functionDepth: 37
    functionLinenumber: 38
    functionLinenumberEnd: 57
    functionName: DashmapReader::open
    functionSourceFile: /src/opendal/core/services/dashmap/src/reader.rs
    functionUses: 0
    functionsReached:
    - Metadata::new
    - get
    - slice
    - Ok
    - Box::new
    - Self::with_content_length
    - build_abs_path
    - RpRead::new
    - Err
    - as_str
    - Error::new
    - (Vec::to_content_range
    - len
    linkageType: ''
    returnType: Result
    signature: 'async fn open(&self, range: BytesRange) -> Result<(RpRead, Box<dyn
      oio::ReadStreamDyn>)>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::debug_struct
      Src: /src/opendal/core/services/dashmap/src/core.rs:39,1
    - Dst: field
      Src: /src/opendal/core/services/dashmap/src/core.rs:39,1
    - Dst: len
      Src: /src/opendal/core/services/dashmap/src/core.rs:40,1
    - Dst: finish
      Src: /src/opendal/core/services/dashmap/src/core.rs:39,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 1
    argNames:
    - f
    argTypes:
    - '&mut std::fmt::Formatter<''_>'
    constantsTouched: []
    func_position:
      end: 42
      start: 38
    functionDepth: 5
    functionLinenumber: 38
    functionLinenumberEnd: 42
    functionName: DashmapCore::fmt
    functionSourceFile: /src/opendal/core/services/dashmap/src/core.rs
    functionUses: 0
    functionsReached:
    - len
    - field
    - finish
    - Result::debug_struct
    linkageType: ''
    returnType: std::fmt::Result
    signature: 'fn fmt(&self, f: &mut std::fmt::Formatter<''_>) -> std::fmt::Result'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/core/services/dashmap/src/core.rs:47,1
    - Dst: get
      Src: /src/opendal/core/services/dashmap/src/core.rs:47,1
    - Dst: map
      Src: /src/opendal/core/services/dashmap/src/core.rs:47,1
    - Dst: Result::value
      Src: /src/opendal/core/services/dashmap/src/core.rs:47,1
    - Dst: Vec::clone
      Src: /src/opendal/core/services/dashmap/src/core.rs:47,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 1
    argNames:
    - key
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 48
      start: 46
    functionDepth: 2
    functionLinenumber: 46
    functionLinenumberEnd: 48
    functionName: DashmapCore::get
    functionSourceFile: /src/opendal/core/services/dashmap/src/core.rs
    functionUses: 0
    functionsReached:
    - get
    - Ok
    - map
    - Result::value
    - Vec::clone
    linkageType: ''
    returnType: Result
    signature: 'pub fn get(&self, key: &str) -> Result<Option<DashmapValue>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: insert
      Src: /src/opendal/core/services/dashmap/src/core.rs:51,1
    - Dst: FoyerKey::to_string
      Src: /src/opendal/core/services/dashmap/src/core.rs:51,1
    - Dst: Ok
      Src: /src/opendal/core/services/dashmap/src/core.rs:52,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 2
    argNames:
    - key
    - value
    argTypes:
    - '&str'
    - DashmapValue
    constantsTouched: []
    func_position:
      end: 53
      start: 50
    functionDepth: 6
    functionLinenumber: 50
    functionLinenumberEnd: 53
    functionName: DashmapCore::set
    functionSourceFile: /src/opendal/core/services/dashmap/src/core.rs
    functionUses: 0
    functionsReached:
    - insert
    - Ok
    - FoyerKey::to_string
    linkageType: ''
    returnType: Result
    signature: 'pub fn set(&self, key: &str, value: DashmapValue) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: remove
      Src: /src/opendal/core/services/dashmap/src/core.rs:56,1
    - Dst: Ok
      Src: /src/opendal/core/services/dashmap/src/core.rs:57,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - key
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 58
      start: 55
    functionDepth: 36
    functionLinenumber: 55
    functionLinenumberEnd: 58
    functionName: DashmapCore::delete
    functionSourceFile: /src/opendal/core/services/dashmap/src/core.rs
    functionUses: 0
    functionsReached:
    - remove
    - Ok
    linkageType: ''
    returnType: Result
    signature: 'pub fn delete(&self, key: &str) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: oio::QueueBuf::new
      Src: /src/opendal/core/services/dashmap/src/writer.rs:39,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - core
    - path
    - op
    argTypes:
    - Arc<DashmapCore>
    - String
    - OpWrite
    constantsTouched: []
    func_position:
      end: 41
      start: 34
    functionDepth: 4
    functionLinenumber: 34
    functionLinenumberEnd: 41
    functionName: DashmapWriter::new
    functionSourceFile: /src/opendal/core/services/dashmap/src/writer.rs
    functionUses: 1
    functionsReached:
    - oio::QueueBuf::new
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(core: Arc<DashmapCore>, path: String, op: OpWrite) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: push
      Src: /src/opendal/core/services/dashmap/src/writer.rs:46,1
    - Dst: Ok
      Src: /src/opendal/core/services/dashmap/src/writer.rs:47,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - bs
    argTypes:
    - Buffer
    constantsTouched: []
    func_position:
      end: 48
      start: 45
    functionDepth: 5
    functionLinenumber: 45
    functionLinenumberEnd: 48
    functionName: DashmapWriter::write
    functionSourceFile: /src/opendal/core/services/dashmap/src/writer.rs
    functionUses: 0
    functionsReached:
    - Ok
    - push
    linkageType: ''
    returnType: Result
    signature: 'async fn write(&mut self, bs: Buffer) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: clone
      Src: /src/opendal/core/services/dashmap/src/writer.rs:51,1
    - Dst: collect
      Src: /src/opendal/core/services/dashmap/src/writer.rs:51,1
    - Dst: EntryMode::from_path
      Src: /src/opendal/core/services/dashmap/src/writer.rs:53,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/dashmap/src/writer.rs:54,1
    - Dst: Result::set_content_length
      Src: /src/opendal/core/services/dashmap/src/writer.rs:55,1
    - Dst: Result::len
      Src: /src/opendal/core/services/dashmap/src/writer.rs:55,1
    - Dst: Result::set_last_modified
      Src: /src/opendal/core/services/dashmap/src/writer.rs:56,1
    - Dst: Timestamp::now
      Src: /src/opendal/core/services/dashmap/src/writer.rs:56,1
    - Dst: content_type
      Src: /src/opendal/core/services/dashmap/src/writer.rs:58,1
    - Dst: Result::set_content_type
      Src: /src/opendal/core/services/dashmap/src/writer.rs:59,1
    - Dst: content_disposition
      Src: /src/opendal/core/services/dashmap/src/writer.rs:61,1
    - Dst: Result::set_content_disposition
      Src: /src/opendal/core/services/dashmap/src/writer.rs:62,1
    - Dst: cache_control
      Src: /src/opendal/core/services/dashmap/src/writer.rs:64,1
    - Dst: Result::set_cache_control
      Src: /src/opendal/core/services/dashmap/src/writer.rs:65,1
    - Dst: content_encoding
      Src: /src/opendal/core/services/dashmap/src/writer.rs:67,1
    - Dst: Result::set_content_encoding
      Src: /src/opendal/core/services/dashmap/src/writer.rs:68,1
    - Dst: set
      Src: /src/opendal/core/services/dashmap/src/writer.rs:71,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/dashmap/src/writer.rs:74,1
    - Dst: Ok
      Src: /src/opendal/core/services/dashmap/src/writer.rs:79,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 62
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 80
      start: 50
    functionDepth: 36
    functionLinenumber: 50
    functionLinenumberEnd: 80
    functionName: DashmapWriter::close
    functionSourceFile: /src/opendal/core/services/dashmap/src/writer.rs
    functionUses: 0
    functionsReached:
    - Result::set_content_encoding
    - collect
    - clone
    - Result::len
    - Result::clone
    - Timestamp::now
    - Ok
    - content_type
    - Result::set_cache_control
    - Metadata::new
    - content_encoding
    - Result::set_content_type
    - Result::set_content_disposition
    - cache_control
    - set
    - EntryMode::from_path
    - Result::set_last_modified
    - content_disposition
    - Result::set_content_length
    linkageType: ''
    returnType: Result
    signature: async fn close(&mut self) -> Result<Metadata>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: clear
      Src: /src/opendal/core/services/dashmap/src/writer.rs:83,1
    - Dst: Ok
      Src: /src/opendal/core/services/dashmap/src/writer.rs:84,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 85
      start: 82
    functionDepth: 2
    functionLinenumber: 82
    functionLinenumberEnd: 85
    functionName: DashmapWriter::abort
    functionSourceFile: /src/opendal/core/services/dashmap/src/writer.rs
    functionUses: 0
    functionsReached:
    - clear
    - Ok
    linkageType: ''
    returnType: Result
    signature: async fn abort(&mut self) -> Result<()>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: register::<Dashmap>
      Src: /src/opendal/core/services/dashmap/src/lib.rs:39,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - registry
    argTypes:
    - '&opendal_core::OperatorRegistry'
    constantsTouched: []
    func_position:
      end: 40
      start: 38
    functionDepth: 0
    functionLinenumber: 38
    functionLinenumberEnd: 40
    functionName: register_dashmap_service
    functionSourceFile: /src/opendal/core/services/dashmap/src/lib.rs
    functionUses: 1
    functionsReached:
    - register::<Dashmap>
    linkageType: ''
    returnType: void
    signature: 'pub fn register_dashmap_service(registry: &opendal_core::OperatorRegistry)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: is_empty
      Src: /src/opendal/core/services/dashmap/src/backend.rs:43,1
    - Dst: Some
      Src: /src/opendal/core/services/dashmap/src/backend.rs:46,1
    - Dst: to_string
      Src: /src/opendal/core/services/dashmap/src/backend.rs:46,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - path
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 50
      start: 42
    functionDepth: 4
    functionLinenumber: 42
    functionLinenumberEnd: 50
    functionName: DashmapBuilder::root
    functionSourceFile: /src/opendal/core/services/dashmap/src/backend.rs
    functionUses: 0
    functionsReached:
    - to_string
    - Some
    - is_empty
    linkageType: ''
    returnType: Self
    signature: 'pub fn root(mut self, path: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: normalize_root
      Src: /src/opendal/core/services/dashmap/src/backend.rs:59,1
    - Dst: clone
      Src: /src/opendal/core/services/dashmap/src/backend.rs:60,1
    - Dst: unwrap_or_else
      Src: /src/opendal/core/services/dashmap/src/backend.rs:60,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/dashmap/src/backend.rs:63,1
    - Dst: as_str
      Src: /src/opendal/core/services/dashmap/src/backend.rs:60,1
    - Dst: DashMap::new
      Src: /src/opendal/core/services/dashmap/src/backend.rs:70,1
    - Dst: Ok
      Src: /src/opendal/core/services/dashmap/src/backend.rs:73,1
    - Dst: DashmapBackend::new
      Src: /src/opendal/core/services/dashmap/src/backend.rs:73,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 18
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 74
      start: 56
    functionDepth: 34
    functionLinenumber: 56
    functionLinenumberEnd: 74
    functionName: DashmapBuilder::build
    functionSourceFile: /src/opendal/core/services/dashmap/src/backend.rs
    functionUses: 0
    functionsReached:
    - Ok
    - clone
    - normalize_root
    - as_str
    - DashmapBackend::new
    - '&str::to_string'
    - DashMap::new
    - unwrap_or_else
    linkageType: ''
    returnType: Result
    signature: fn build(self) -> Result<impl Service>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: ServiceInfo::new
      Src: /src/opendal/core/services/dashmap/src/backend.rs:87,1
    - Dst: Default::default
      Src: /src/opendal/core/services/dashmap/src/backend.rs:101,1
    - Dst: Arc::new
      Src: /src/opendal/core/services/dashmap/src/backend.rs:105,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - core
    - root
    argTypes:
    - DashmapCore
    - String
    constantsTouched: []
    func_position:
      end: 110
      start: 86
    functionDepth: 33
    functionLinenumber: 86
    functionLinenumberEnd: 110
    functionName: DashmapBackend::new
    functionSourceFile: /src/opendal/core/services/dashmap/src/backend.rs
    functionUses: 1
    functionsReached:
    - Arc::new
    - ServiceInfo::new
    - Default::default
    linkageType: ''
    returnType: Self
    signature: 'fn new(core: DashmapCore, root: String) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: clone
      Src: /src/opendal/core/services/dashmap/src/backend.rs:121,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 122
      start: 120
    functionDepth: 2
    functionLinenumber: 120
    functionLinenumberEnd: 122
    functionName: DashmapBackend::info
    functionSourceFile: /src/opendal/core/services/dashmap/src/backend.rs
    functionUses: 0
    functionsReached:
    - clone
    linkageType: ''
    returnType: ServiceInfo
    signature: fn info(&self) -> ServiceInfo
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 126
      start: 124
    functionDepth: 0
    functionLinenumber: 124
    functionLinenumberEnd: 126
    functionName: DashmapBackend::capability
    functionSourceFile: /src/opendal/core/services/dashmap/src/backend.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Capability
    signature: fn capability(&self) -> Capability
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/core/services/dashmap/src/backend.rs:134,1
    - Dst: Error::new
      Src: /src/opendal/core/services/dashmap/src/backend.rs:134,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - _ctx
    - _path
    - _args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpCreateDir
    constantsTouched: []
    func_position:
      end: 138
      start: 128
    functionDepth: 36
    functionLinenumber: 128
    functionLinenumberEnd: 138
    functionName: DashmapBackend::create_dir
    functionSourceFile: /src/opendal/core/services/dashmap/src/backend.rs
    functionUses: 0
    functionsReached:
    - Error::new
    - Err
    linkageType: ''
    returnType: Result
    signature: 'async fn create_dir(&self,_ctx: &OperationContext,_path: &str,_args:
      OpCreateDir,) -> Result<RpCreateDir>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/dashmap/src/backend.rs:141,1
    - Dst: get
      Src: /src/opendal/core/services/dashmap/src/backend.rs:143,1
    - Dst: Ok
      Src: /src/opendal/core/services/dashmap/src/backend.rs:146,1
    - Dst: RpStat::new
      Src: /src/opendal/core/services/dashmap/src/backend.rs:146,1
    - Dst: ends_with
      Src: /src/opendal/core/services/dashmap/src/backend.rs:149,1
    - Dst: iter
      Src: /src/opendal/core/services/dashmap/src/backend.rs:150,1
    - Dst: any
      Src: /src/opendal/core/services/dashmap/src/backend.rs:150,1
    - Dst: key
      Src: /src/opendal/core/services/dashmap/src/backend.rs:150,1
    - Dst: starts_with
      Src: /src/opendal/core/services/dashmap/src/backend.rs:150,1
    - Dst: Ok
      Src: /src/opendal/core/services/dashmap/src/backend.rs:152,1
    - Dst: RpStat::new
      Src: /src/opendal/core/services/dashmap/src/backend.rs:152,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/dashmap/src/backend.rs:152,1
    - Dst: Err
      Src: /src/opendal/core/services/dashmap/src/backend.rs:155,1
    - Dst: Error::new
      Src: /src/opendal/core/services/dashmap/src/backend.rs:155,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 38
    argCount: 3
    argNames:
    - _ctx
    - path
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpStat
    constantsTouched: []
    func_position:
      end: 158
      start: 140
    functionDepth: 33
    functionLinenumber: 140
    functionLinenumberEnd: 158
    functionName: DashmapBackend::stat
    functionSourceFile: /src/opendal/core/services/dashmap/src/backend.rs
    functionUses: 0
    functionsReached:
    - iter
    - get
    - starts_with
    - Metadata::new
    - Ok
    - ends_with
    - RpStat::new
    - build_abs_path
    - Err
    - Error::new
    - any
    - key
    linkageType: ''
    returnType: Result
    signature: 'async fn stat(&self, _ctx: &OperationContext, path: &str, _: OpStat)
      -> Result<RpStat>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/core/services/dashmap/src/backend.rs:161,1
    - Dst: oio::StreamReader::new
      Src: /src/opendal/core/services/dashmap/src/backend.rs:161,1
    - Dst: DashmapReader::new
      Src: /src/opendal/core/services/dashmap/src/backend.rs:161,1
    - Dst: DashmapBackend::clone
      Src: /src/opendal/core/services/dashmap/src/backend.rs:162,1
    - Dst: Ok
      Src: /src/opendal/core/services/dashmap/src/backend.rs:168,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - _ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpRead
    constantsTouched: []
    func_position:
      end: 169
      start: 159
    functionDepth: 3
    functionLinenumber: 159
    functionLinenumberEnd: 169
    functionName: DashmapBackend::read
    functionSourceFile: /src/opendal/core/services/dashmap/src/backend.rs
    functionUses: 0
    functionsReached:
    - oio::StreamReader::new
    - DashmapReader::new
    - Ok
    - DashmapBackend::clone
    linkageType: ''
    returnType: Result
    signature: 'fn read(&self, _ctx: &OperationContext, path: &str, args: OpRead)
      -> Result<Self::Reader>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/dashmap/src/backend.rs:173,1
    - Dst: Ok
      Src: /src/opendal/core/services/dashmap/src/backend.rs:174,1
    - Dst: DashmapWriter::new
      Src: /src/opendal/core/services/dashmap/src/backend.rs:174,1
    - Dst: clone
      Src: /src/opendal/core/services/dashmap/src/backend.rs:174,1
    - Dst: Ok
      Src: /src/opendal/core/services/dashmap/src/backend.rs:177,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 3
    argNames:
    - _ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpWrite
    constantsTouched: []
    func_position:
      end: 178
      start: 171
    functionDepth: 5
    functionLinenumber: 171
    functionLinenumberEnd: 178
    functionName: DashmapBackend::write
    functionSourceFile: /src/opendal/core/services/dashmap/src/backend.rs
    functionUses: 0
    functionsReached:
    - DashmapWriter::new
    - Ok
    - clone
    - build_abs_path
    linkageType: ''
    returnType: Result
    signature: 'fn write(&self, _ctx: &OperationContext, path: &str, args: OpWrite)
      -> Result<Self::Writer>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/core/services/dashmap/src/backend.rs:182,1
    - Dst: oio::OneShotDeleter::new
      Src: /src/opendal/core/services/dashmap/src/backend.rs:182,1
    - Dst: DashmapDeleter::new
      Src: /src/opendal/core/services/dashmap/src/backend.rs:182,1
    - Dst: clone
      Src: /src/opendal/core/services/dashmap/src/backend.rs:183,1
    - Dst: clone
      Src: /src/opendal/core/services/dashmap/src/backend.rs:184,1
    - Dst: Ok
      Src: /src/opendal/core/services/dashmap/src/backend.rs:188,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 1
    argNames:
    - _ctx
    argTypes:
    - '&OperationContext'
    constantsTouched: []
    func_position:
      end: 189
      start: 180
    functionDepth: 2
    functionLinenumber: 180
    functionLinenumberEnd: 189
    functionName: DashmapBackend::delete
    functionSourceFile: /src/opendal/core/services/dashmap/src/backend.rs
    functionUses: 0
    functionsReached:
    - oio::OneShotDeleter::new
    - DashmapDeleter::new
    - clone
    - Ok
    linkageType: ''
    returnType: Result
    signature: 'fn delete(&self, _ctx: &OperationContext) -> Result<Self::Deleter>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: DashmapLister::new
      Src: /src/opendal/core/services/dashmap/src/backend.rs:193,1
    - Dst: clone
      Src: /src/opendal/core/services/dashmap/src/backend.rs:193,1
    - Dst: clone
      Src: /src/opendal/core/services/dashmap/src/backend.rs:193,1
    - Dst: to_string
      Src: /src/opendal/core/services/dashmap/src/backend.rs:193,1
    - Dst: oio::HierarchyLister::new
      Src: /src/opendal/core/services/dashmap/src/backend.rs:194,1
    - Dst: OpStat::recursive
      Src: /src/opendal/core/services/dashmap/src/backend.rs:194,1
    - Dst: Ok
      Src: /src/opendal/core/services/dashmap/src/backend.rs:195,1
    - Dst: Ok
      Src: /src/opendal/core/services/dashmap/src/backend.rs:198,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 15
    argCount: 3
    argNames:
    - _ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpList
    constantsTouched: []
    func_position:
      end: 199
      start: 191
    functionDepth: 34
    functionLinenumber: 191
    functionLinenumberEnd: 199
    functionName: DashmapBackend::list
    functionSourceFile: /src/opendal/core/services/dashmap/src/backend.rs
    functionUses: 0
    functionsReached:
    - oio::HierarchyLister::new
    - to_string
    - Ok
    - clone
    - DashmapLister::new
    - OpStat::recursive
    linkageType: ''
    returnType: Result
    signature: 'fn list(&self, _ctx: &OperationContext, path: &str, args: OpList)
      -> Result<Self::Lister>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/core/services/dashmap/src/backend.rs:209,1
    - Dst: Error::new
      Src: /src/opendal/core/services/dashmap/src/backend.rs:209,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 5
    argNames:
    - _ctx
    - _from
    - _to
    - _args
    - _opts
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    - OpCopy
    - OpCopier
    constantsTouched: []
    func_position:
      end: 213
      start: 201
    functionDepth: 36
    functionLinenumber: 201
    functionLinenumberEnd: 213
    functionName: DashmapBackend::copy
    functionSourceFile: /src/opendal/core/services/dashmap/src/backend.rs
    functionUses: 0
    functionsReached:
    - Error::new
    - Err
    linkageType: ''
    returnType: Result
    signature: 'fn copy(&self,_ctx: &OperationContext,_from: &str,_to: &str,_args:
      OpCopy,_opts: OpCopier,) -> Result<Self::Copier>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/core/services/dashmap/src/backend.rs:222,1
    - Dst: Error::new
      Src: /src/opendal/core/services/dashmap/src/backend.rs:222,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - _ctx
    - _from
    - _to
    - _args
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    - OpRename
    constantsTouched: []
    func_position:
      end: 226
      start: 215
    functionDepth: 36
    functionLinenumber: 215
    functionLinenumberEnd: 226
    functionName: DashmapBackend::rename
    functionSourceFile: /src/opendal/core/services/dashmap/src/backend.rs
    functionUses: 0
    functionsReached:
    - Error::new
    - Err
    linkageType: ''
    returnType: Result
    signature: 'async fn rename(&self,_ctx: &OperationContext,_from: &str,_to: &str,_args:
      OpRename,) -> Result<RpRename>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/core/services/dashmap/src/backend.rs:234,1
    - Dst: Error::new
      Src: /src/opendal/core/services/dashmap/src/backend.rs:234,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - _ctx
    - _path
    - _args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpPresign
    constantsTouched: []
    func_position:
      end: 238
      start: 228
    functionDepth: 36
    functionLinenumber: 228
    functionLinenumberEnd: 238
    functionName: DashmapBackend::presign
    functionSourceFile: /src/opendal/core/services/dashmap/src/backend.rs
    functionUses: 0
    functionsReached:
    - Error::new
    - Err
    linkageType: ''
    returnType: Result
    signature: 'async fn presign(&self,_ctx: &OperationContext,_path: &str,_args:
      OpPresign,) -> Result<RpPresign>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::debug_struct
      Src: /src/opendal/core/services/sftp/src/config.rs:50,1
    - Dst: field
      Src: /src/opendal/core/services/sftp/src/config.rs:50,1
    - Dst: field
      Src: /src/opendal/core/services/sftp/src/config.rs:50,1
    - Dst: finish_non_exhaustive
      Src: /src/opendal/core/services/sftp/src/config.rs:50,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 1
    argNames:
    - f
    argTypes:
    - '&mut std::fmt::Formatter<''_>'
    constantsTouched: []
    func_position:
      end: 54
      start: 49
    functionDepth: 5
    functionLinenumber: 49
    functionLinenumberEnd: 54
    functionName: SftpConfig::fmt
    functionSourceFile: /src/opendal/core/services/sftp/src/config.rs
    functionUses: 0
    functionsReached:
    - field
    - Result::debug_struct
    - finish_non_exhaustive
    linkageType: ''
    returnType: std::fmt::Result
    signature: 'fn fmt(&self, f: &mut std::fmt::Formatter<''_>) -> std::fmt::Result'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::options
      Src: /src/opendal/core/services/sftp/src/config.rs:61,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/sftp/src/config.rs:61,1
    - Dst: Result::authority
      Src: /src/opendal/core/services/sftp/src/config.rs:62,1
    - Dst: Result::insert
      Src: /src/opendal/core/services/sftp/src/config.rs:63,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/sftp/src/config.rs:63,1
    - Dst: Option::to_string
      Src: /src/opendal/core/services/sftp/src/config.rs:63,1
    - Dst: Result::root
      Src: /src/opendal/core/services/sftp/src/config.rs:66,1
    - Dst: Result::insert
      Src: /src/opendal/core/services/sftp/src/config.rs:67,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/sftp/src/config.rs:67,1
    - Dst: Result::to_string
      Src: /src/opendal/core/services/sftp/src/config.rs:67,1
    - Dst: Self::from_iter
      Src: /src/opendal/core/services/sftp/src/config.rs:70,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 27
    argCount: 1
    argNames:
    - uri
    argTypes:
    - '&opendal_core::OperatorUri'
    constantsTouched: []
    func_position:
      end: 71
      start: 60
    functionDepth: 35
    functionLinenumber: 60
    functionLinenumberEnd: 71
    functionName: SftpConfig::from_uri
    functionSourceFile: /src/opendal/core/services/sftp/src/config.rs
    functionUses: 1
    functionsReached:
    - Result::clone
    - Self::from_iter
    - Option::to_string
    - Result::to_string
    - Result::insert
    - '&str::to_string'
    - Result::root
    - Result::authority
    - Result::options
    linkageType: ''
    returnType: opendal_core::Result
    signature: 'fn from_uri(uri: &opendal_core::OperatorUri) -> opendal_core::Result<Self>'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 75
      start: 73
    functionDepth: 0
    functionLinenumber: 73
    functionLinenumberEnd: 75
    functionName: SftpConfig::into_builder
    functionSourceFile: /src/opendal/core/services/sftp/src/config.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Self::Builder
    signature: fn into_builder(self) -> Self::Builder
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: OperatorUri::new
      Src: /src/opendal/core/services/alluxio/src/config.rs:82,1
    - Dst: Vec::<(String, String)>::new
      Src: /src/opendal/core/services/alluxio/src/config.rs:84,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/services/alluxio/src/config.rs:82,1
    - Dst: AlluxioConfig::from_uri
      Src: /src/opendal/core/services/alluxio/src/config.rs:88,1
    - Dst: opendal_core::Result::unwrap
      Src: /src/opendal/core/services/alluxio/src/config.rs:88,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 91
      start: 81
    functionDepth: 29
    functionLinenumber: 81
    functionLinenumberEnd: 91
    functionName: tests::from_uri_sets_endpoint_and_root
    functionSourceFile: /src/opendal/core/services/alluxio/src/config.rs
    functionUses: 0
    functionsReached:
    - Vec::<(String, String)>::new
    - OperatorUri::new
    - AlluxioConfig::from_uri
    - Result::unwrap
    - opendal_core::Result::unwrap
    linkageType: ''
    returnType: void
    signature: fn from_uri_sets_endpoint_and_root()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: OperatorUri::new
      Src: /src/opendal/core/services/sftp/src/config.rs:99,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/services/sftp/src/config.rs:99,1
    - Dst: SftpConfig::from_uri
      Src: /src/opendal/core/services/sftp/src/config.rs:109,1
    - Dst: opendal_core::Result::unwrap
      Src: /src/opendal/core/services/sftp/src/config.rs:109,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 114
      start: 98
    functionDepth: 29
    functionLinenumber: 98
    functionLinenumberEnd: 114
    functionName: tests::from_uri_applies_connection_overrides
    functionSourceFile: /src/opendal/core/services/sftp/src/config.rs
    functionUses: 0
    functionsReached:
    - SftpConfig::from_uri
    - OperatorUri::new
    - Result::unwrap
    - opendal_core::Result::unwrap
    linkageType: ''
    returnType: void
    signature: fn from_uri_applies_connection_overrides()
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - core
    argTypes:
    - Arc<SftpCore>
    constantsTouched: []
    func_position:
      end: 33
      start: 31
    functionDepth: 0
    functionLinenumber: 31
    functionLinenumberEnd: 33
    functionName: SftpDeleter::new
    functionSourceFile: /src/opendal/core/services/sftp/src/deleter.rs
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(core: Arc<SftpCore>) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: connect
      Src: /src/opendal/core/services/sftp/src/deleter.rs:38,1
    - Dst: Result::fs
      Src: /src/opendal/core/services/sftp/src/deleter.rs:40,1
    - Dst: set_cwd
      Src: /src/opendal/core/services/sftp/src/deleter.rs:41,1
    - Dst: ends_with
      Src: /src/opendal/core/services/sftp/src/deleter.rs:43,1
    - Dst: remove_dir
      Src: /src/opendal/core/services/sftp/src/deleter.rs:44,1
    - Dst: remove_file
      Src: /src/opendal/core/services/sftp/src/deleter.rs:46,1
    - Dst: Ok
      Src: /src/opendal/core/services/sftp/src/deleter.rs:50,1
    - Dst: super::core::is_not_found
      Src: /src/opendal/core/services/sftp/src/deleter.rs:51,1
    - Dst: Ok
      Src: /src/opendal/core/services/sftp/src/deleter.rs:51,1
    - Dst: Err
      Src: /src/opendal/core/services/sftp/src/deleter.rs:52,1
    - Dst: super::core::parse_sftp_error
      Src: /src/opendal/core/services/sftp/src/deleter.rs:52,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 32
    argCount: 2
    argNames:
    - path
    argTypes:
    - String
    - OpDelete
    constantsTouched: []
    func_position:
      end: 54
      start: 37
    functionDepth: 33
    functionLinenumber: 37
    functionLinenumberEnd: 54
    functionName: SftpDeleter::delete_once
    functionSourceFile: /src/opendal/core/services/sftp/src/deleter.rs
    functionUses: 0
    functionsReached:
    - connect
    - remove_file
    - Ok
    - set_cwd
    - Result::fs
    - ends_with
    - Err
    - remove_dir
    - super::core::parse_sftp_error
    - super::core::is_not_found
    linkageType: ''
    returnType: Result
    signature: 'async fn delete_once(&self, path: String, _: OpDelete) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: '&str::to_owned'
      Src: /src/opendal/core/services/sftp/src/lister.rs:37,1
    - Dst: Box::pin
      Src: /src/opendal/core/services/sftp/src/lister.rs:40,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - dir
    - path
    argTypes:
    - ReadDir
    - String
    constantsTouched: []
    func_position:
      end: 43
      start: 36
    functionDepth: 0
    functionLinenumber: 36
    functionLinenumberEnd: 43
    functionName: SftpLister::new
    functionSourceFile: /src/opendal/core/services/sftp/src/lister.rs
    functionUses: 1
    functionsReached:
    - Box::pin
    - '&str::to_owned'
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(dir: ReadDir, path: String) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: next
      Src: /src/opendal/core/services/sftp/src/lister.rs:49,1
    - Dst: transpose
      Src: /src/opendal/core/services/sftp/src/lister.rs:49,1
    - Dst: map_err
      Src: /src/opendal/core/services/sftp/src/lister.rs:49,1
    - Dst: Result::filename
      Src: /src/opendal/core/services/sftp/src/lister.rs:58,1
    - Dst: to_str
      Src: /src/opendal/core/services/sftp/src/lister.rs:58,1
    - Dst: Some
      Src: /src/opendal/core/services/sftp/src/lister.rs:58,1
    - Dst: Result::filename
      Src: /src/opendal/core/services/sftp/src/lister.rs:60,1
    - Dst: to_str
      Src: /src/opendal/core/services/sftp/src/lister.rs:60,1
    - Dst: Some
      Src: /src/opendal/core/services/sftp/src/lister.rs:60,1
    - Dst: as_str
      Src: /src/opendal/core/services/sftp/src/lister.rs:61,1
    - Dst: is_empty
      Src: /src/opendal/core/services/sftp/src/lister.rs:62,1
    - Dst: Ok
      Src: /src/opendal/core/services/sftp/src/lister.rs:65,1
    - Dst: Some
      Src: /src/opendal/core/services/sftp/src/lister.rs:65,1
    - Dst: Entry::new
      Src: /src/opendal/core/services/sftp/src/lister.rs:65,1
    - Dst: super::core::to_metadata
      Src: /src/opendal/core/services/sftp/src/lister.rs:65,1
    - Dst: Result::metadata
      Src: /src/opendal/core/services/sftp/src/lister.rs:65,1
    - Dst: Ok
      Src: /src/opendal/core/services/sftp/src/lister.rs:67,1
    - Dst: Some
      Src: /src/opendal/core/services/sftp/src/lister.rs:67,1
    - Dst: map_entry
      Src: /src/opendal/core/services/sftp/src/lister.rs:67,1
    - Dst: as_str
      Src: /src/opendal/core/services/sftp/src/lister.rs:67,1
    - Dst: Ok
      Src: /src/opendal/core/services/sftp/src/lister.rs:70,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 58
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 73
      start: 47
    functionDepth: 38
    functionLinenumber: 47
    functionLinenumberEnd: 73
    functionName: SftpLister::next
    functionSourceFile: /src/opendal/core/services/sftp/src/lister.rs
    functionUses: 0
    functionsReached:
    - next
    - map_err
    - transpose
    - Entry::new
    - Result::metadata
    - to_str
    - Result::filename
    - Ok
    - super::core::to_metadata
    - Some
    - is_empty
    - as_str
    - map_entry
    linkageType: ''
    returnType: Result
    signature: async fn next(&mut self) -> Result<Option<Entry>>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Entry::new
      Src: /src/opendal/core/services/sftp/src/lister.rs:88,1
    - Dst: as_str
      Src: /src/opendal/core/services/sftp/src/lister.rs:88,1
    - Dst: super::core::to_metadata
      Src: /src/opendal/core/services/sftp/src/lister.rs:88,1
    - Dst: Vec::metadata
      Src: /src/opendal/core/services/sftp/src/lister.rs:88,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - prefix
    - value
    argTypes:
    - '&str'
    - DirEntry
    constantsTouched: []
    func_position:
      end: 89
      start: 76
    functionDepth: 37
    functionLinenumber: 76
    functionLinenumberEnd: 89
    functionName: map_entry
    functionSourceFile: /src/opendal/core/services/sftp/src/lister.rs
    functionUses: 1
    functionsReached:
    - Vec::metadata
    - Entry::new
    - as_str
    - super::core::to_metadata
    linkageType: ''
    returnType: Entry
    signature: 'fn map_entry(prefix: &str, value: DirEntry) -> Entry'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Option::map
      Src: /src/opendal/core/services/sftp/src/reader.rs:49,1
    - Dst: BytesMut::new
      Src: /src/opendal/core/services/sftp/src/reader.rs:52,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 3
    argNames:
    - conn
    - file
    - size
    argTypes:
    - bounded::Object<Manager>
    - File
    - Option<u64>
    constantsTouched: []
    func_position:
      end: 54
      start: 45
    functionDepth: 2
    functionLinenumber: 45
    functionLinenumberEnd: 54
    functionName: SftpReadStream::new
    functionSourceFile: /src/opendal/core/services/sftp/src/reader.rs
    functionUses: 1
    functionsReached:
    - BytesMut::new
    - Option::map
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(conn: bounded::Object<Manager>, file: File, size: Option<u64>)
      -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: unwrap_or
      Src: /src/opendal/core/services/sftp/src/reader.rs:59,1
    - Dst: Ok
      Src: /src/opendal/core/services/sftp/src/reader.rs:60,1
    - Dst: Buffer::new
      Src: /src/opendal/core/services/sftp/src/reader.rs:60,1
    - Dst: min
      Src: /src/opendal/core/services/sftp/src/reader.rs:64,1
    - Dst: reserve
      Src: /src/opendal/core/services/sftp/src/reader.rs:68,1
    - Dst: read
      Src: /src/opendal/core/services/sftp/src/reader.rs:70,1
    - Dst: split_off
      Src: /src/opendal/core/services/sftp/src/reader.rs:72,1
    - Dst: map_err
      Src: /src/opendal/core/services/sftp/src/reader.rs:70,1
    - Dst: Ok
      Src: /src/opendal/core/services/sftp/src/reader.rs:76,1
    - Dst: Buffer::new
      Src: /src/opendal/core/services/sftp/src/reader.rs:76,1
    - Dst: Bytes::len
      Src: /src/opendal/core/services/sftp/src/reader.rs:79,1
    - Dst: split
      Src: /src/opendal/core/services/sftp/src/reader.rs:81,1
    - Dst: Ok
      Src: /src/opendal/core/services/sftp/src/reader.rs:82,1
    - Dst: Buffer::from
      Src: /src/opendal/core/services/sftp/src/reader.rs:82,1
    - Dst: Result::freeze
      Src: /src/opendal/core/services/sftp/src/reader.rs:82,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 53
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 83
      start: 58
    functionDepth: 31
    functionLinenumber: 58
    functionLinenumberEnd: 83
    functionName: SftpReadStream::read
    functionSourceFile: /src/opendal/core/services/sftp/src/reader.rs
    functionUses: 0
    functionsReached:
    - map_err
    - read
    - Buffer::new
    - reserve
    - Ok
    - split_off
    - split
    - min
    - Bytes::len
    - Result::freeze
    - Buffer::from
    - unwrap_or
    linkageType: ''
    returnType: Result
    signature: async fn read(&mut self) -> Result<Buffer>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: to_string
      Src: /src/opendal/core/services/sftp/src/reader.rs:96,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - backend
    - path
    argTypes:
    - SftpBackend
    - '&str'
    - OpRead
    constantsTouched: []
    func_position:
      end: 98
      start: 93
    functionDepth: 2
    functionLinenumber: 93
    functionLinenumberEnd: 98
    functionName: SftpReader::new
    functionSourceFile: /src/opendal/core/services/sftp/src/reader.rs
    functionUses: 1
    functionsReached:
    - to_string
    linkageType: ''
    returnType: Self
    signature: 'pub(super) fn new(backend: SftpBackend, path: &str, _: OpRead) ->
      Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: as_str
      Src: /src/opendal/core/services/sftp/src/reader.rs:104,1
    - Dst: connect
      Src: /src/opendal/core/services/sftp/src/reader.rs:106,1
    - Dst: Result::fs
      Src: /src/opendal/core/services/sftp/src/reader.rs:108,1
    - Dst: set_cwd
      Src: /src/opendal/core/services/sftp/src/reader.rs:109,1
    - Dst: canonicalize
      Src: /src/opendal/core/services/sftp/src/reader.rs:111,1
    - Dst: map_err
      Src: /src/opendal/core/services/sftp/src/reader.rs:111,1
    - Dst: Result::open
      Src: /src/opendal/core/services/sftp/src/reader.rs:113,1
    - Dst: as_path
      Src: /src/opendal/core/services/sftp/src/reader.rs:114,1
    - Dst: map_err
      Src: /src/opendal/core/services/sftp/src/reader.rs:113,1
    - Dst: (Vec::offset
      Src: /src/opendal/core/services/sftp/src/reader.rs:118,1
    - Dst: Result::seek
      Src: /src/opendal/core/services/sftp/src/reader.rs:119,1
    - Dst: SeekFrom::Start
      Src: /src/opendal/core/services/sftp/src/reader.rs:119,1
    - Dst: (Vec::offset
      Src: /src/opendal/core/services/sftp/src/reader.rs:119,1
    - Dst: map_err
      Src: /src/opendal/core/services/sftp/src/reader.rs:119,1
    - Dst: RpRead::default
      Src: /src/opendal/core/services/sftp/src/reader.rs:124,1
    - Dst: SftpReadStream::new
      Src: /src/opendal/core/services/sftp/src/reader.rs:125,1
    - Dst: (Vec::size
      Src: /src/opendal/core/services/sftp/src/reader.rs:125,1
    - Dst: Ok
      Src: /src/opendal/core/services/sftp/src/reader.rs:127,1
    - Dst: Box::new
      Src: /src/opendal/core/services/sftp/src/reader.rs:127,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 55
    argCount: 1
    argNames:
    - range
    argTypes:
    - BytesRange
    constantsTouched: []
    func_position:
      end: 128
      start: 102
    functionDepth: 33
    functionLinenumber: 102
    functionLinenumberEnd: 128
    functionName: SftpReader::open
    functionSourceFile: /src/opendal/core/services/sftp/src/reader.rs
    functionUses: 0
    functionsReached:
    - connect
    - map_err
    - Ok
    - set_cwd
    - Result::fs
    - SeekFrom::Start
    - (Vec::size
    - Box::new
    - as_str
    - Result::seek
    - canonicalize
    - (Vec::offset
    - RpRead::default
    - SftpReadStream::new
    - as_path
    - Result::open
    linkageType: ''
    returnType: Result
    signature: 'async fn open(&self, range: BytesRange) -> Result<(RpRead, Box<dyn
      oio::ReadStreamDyn>)>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: to_string
      Src: /src/opendal/core/services/sftp/src/reader.rs:149,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 4
    argNames:
    - backend
    - ctx
    - path
    - op
    argTypes:
    - SftpBackend
    - OperationContext
    - '&str'
    - OpWrite
    constantsTouched: []
    func_position:
      end: 153
      start: 140
    functionDepth: 2
    functionLinenumber: 140
    functionLinenumberEnd: 153
    functionName: SftpLazyWriter::new
    functionSourceFile: /src/opendal/core/services/sftp/src/reader.rs
    functionUses: 1
    functionsReached:
    - to_string
    linkageType: ''
    returnType: Self
    signature: 'pub(super) fn new(backend: SftpBackend,ctx: OperationContext,path:
      &str,op: OpWrite,) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: is_none
      Src: /src/opendal/core/services/sftp/src/reader.rs:156,1
    - Dst: rsplit_once
      Src: /src/opendal/core/services/sftp/src/reader.rs:157,1
    - Dst: create_dir
      Src: /src/opendal/core/services/sftp/src/reader.rs:158,1
    - Dst: OpCreateDir::default
      Src: /src/opendal/core/services/sftp/src/reader.rs:159,1
    - Dst: connect
      Src: /src/opendal/core/services/sftp/src/reader.rs:163,1
    - Dst: Result::fs
      Src: /src/opendal/core/services/sftp/src/reader.rs:165,1
    - Dst: set_cwd
      Src: /src/opendal/core/services/sftp/src/reader.rs:166,1
    - Dst: canonicalize
      Src: /src/opendal/core/services/sftp/src/reader.rs:167,1
    - Dst: map_err
      Src: /src/opendal/core/services/sftp/src/reader.rs:167,1
    - Dst: Result::options
      Src: /src/opendal/core/services/sftp/src/reader.rs:172,1
    - Dst: if_not_exists
      Src: /src/opendal/core/services/sftp/src/reader.rs:173,1
    - Dst: Option::create_new
      Src: /src/opendal/core/services/sftp/src/reader.rs:174,1
    - Dst: Option::create
      Src: /src/opendal/core/services/sftp/src/reader.rs:176,1
    - Dst: append
      Src: /src/opendal/core/services/sftp/src/reader.rs:179,1
    - Dst: Option::append
      Src: /src/opendal/core/services/sftp/src/reader.rs:180,1
    - Dst: Option::write
      Src: /src/opendal/core/services/sftp/src/reader.rs:182,1
    - Dst: Result::truncate
      Src: /src/opendal/core/services/sftp/src/reader.rs:182,1
    - Dst: Option::open
      Src: /src/opendal/core/services/sftp/src/reader.rs:185,1
    - Dst: if_not_exists
      Src: /src/opendal/core/services/sftp/src/reader.rs:188,1
    - Dst: super::core::is_sftp_failure
      Src: /src/opendal/core/services/sftp/src/reader.rs:188,1
    - Dst: metadata
      Src: /src/opendal/core/services/sftp/src/reader.rs:189,1
    - Dst: is_ok
      Src: /src/opendal/core/services/sftp/src/reader.rs:189,1
    - Dst: Err
      Src: /src/opendal/core/services/sftp/src/reader.rs:190,1
    - Dst: Error::new
      Src: /src/opendal/core/services/sftp/src/reader.rs:190,1
    - Dst: Self::set_source
      Src: /src/opendal/core/services/sftp/src/reader.rs:190,1
    - Dst: Err
      Src: /src/opendal/core/services/sftp/src/reader.rs:196,1
    - Dst: super::core::parse_sftp_error
      Src: /src/opendal/core/services/sftp/src/reader.rs:196,1
    - Dst: Err
      Src: /src/opendal/core/services/sftp/src/reader.rs:198,1
    - Dst: super::core::parse_sftp_error
      Src: /src/opendal/core/services/sftp/src/reader.rs:198,1
    - Dst: Some
      Src: /src/opendal/core/services/sftp/src/reader.rs:201,1
    - Dst: SftpWriter::new
      Src: /src/opendal/core/services/sftp/src/reader.rs:201,1
    - Dst: Ok
      Src: /src/opendal/core/services/sftp/src/reader.rs:204,1
    - Dst: as_mut
      Src: /src/opendal/core/services/sftp/src/reader.rs:204,1
    - Dst: expect
      Src: /src/opendal/core/services/sftp/src/reader.rs:204,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 111
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 205
      start: 155
    functionDepth: 35
    functionLinenumber: 155
    functionLinenumberEnd: 205
    functionName: SftpLazyWriter::inner
    functionSourceFile: /src/opendal/core/services/sftp/src/reader.rs
    functionUses: 3
    functionsReached:
    - is_none
    - connect
    - Result::truncate
    - as_mut
    - set_cwd
    - SftpWriter::new
    - super::core::parse_sftp_error
    - Option::append
    - if_not_exists
    - super::core::is_sftp_failure
    - map_err
    - expect
    - Ok
    - Result::fs
    - Option::write
    - canonicalize
    - Some
    - OpCreateDir::default
    - rsplit_once
    - append
    - create_dir
    - Self::set_source
    - is_ok
    - Option::create_new
    - Option::create
    - metadata
    - Err
    - Error::new
    - Option::open
    - Result::options
    linkageType: ''
    returnType: Result
    signature: async fn inner(&mut self) -> Result<&mut SftpWriter>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: SftpLazyWriter::inner
      Src: /src/opendal/core/services/sftp/src/reader.rs:210,1
    - Dst: write
      Src: /src/opendal/core/services/sftp/src/reader.rs:210,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 1
    argNames:
    - bs
    argTypes:
    - Buffer
    constantsTouched: []
    func_position:
      end: 211
      start: 209
    functionDepth: 36
    functionLinenumber: 209
    functionLinenumberEnd: 211
    functionName: SftpLazyWriter::write
    functionSourceFile: /src/opendal/core/services/sftp/src/reader.rs
    functionUses: 0
    functionsReached:
    - SftpLazyWriter::inner
    - write
    linkageType: ''
    returnType: Result
    signature: 'async fn write(&mut self, bs: Buffer) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: SftpLazyWriter::inner
      Src: /src/opendal/core/services/sftp/src/reader.rs:214,1
    - Dst: close
      Src: /src/opendal/core/services/sftp/src/reader.rs:214,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 215
      start: 213
    functionDepth: 36
    functionLinenumber: 213
    functionLinenumberEnd: 215
    functionName: SftpLazyWriter::close
    functionSourceFile: /src/opendal/core/services/sftp/src/reader.rs
    functionUses: 0
    functionsReached:
    - SftpLazyWriter::inner
    - close
    linkageType: ''
    returnType: Result
    signature: async fn close(&mut self) -> Result<Metadata>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: SftpLazyWriter::inner
      Src: /src/opendal/core/services/sftp/src/reader.rs:218,1
    - Dst: abort
      Src: /src/opendal/core/services/sftp/src/reader.rs:218,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 219
      start: 217
    functionDepth: 36
    functionLinenumber: 217
    functionLinenumberEnd: 219
    functionName: SftpLazyWriter::abort
    functionSourceFile: /src/opendal/core/services/sftp/src/reader.rs
    functionUses: 0
    functionsReached:
    - SftpLazyWriter::inner
    - abort
    linkageType: ''
    returnType: Result
    signature: async fn abort(&mut self) -> Result<()>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: to_string
      Src: /src/opendal/core/services/sftp/src/reader.rs:232,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - backend
    - path
    argTypes:
    - SftpBackend
    - '&str'
    constantsTouched: []
    func_position:
      end: 235
      start: 229
    functionDepth: 2
    functionLinenumber: 229
    functionLinenumberEnd: 235
    functionName: SftpLazyLister::new
    functionSourceFile: /src/opendal/core/services/sftp/src/reader.rs
    functionUses: 1
    functionsReached:
    - to_string
    linkageType: ''
    returnType: Self
    signature: 'pub(super) fn new(backend: SftpBackend, path: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: is_none
      Src: /src/opendal/core/services/sftp/src/reader.rs:240,1
    - Dst: connect
      Src: /src/opendal/core/services/sftp/src/reader.rs:241,1
    - Dst: Result::fs
      Src: /src/opendal/core/services/sftp/src/reader.rs:242,1
    - Dst: set_cwd
      Src: /src/opendal/core/services/sftp/src/reader.rs:243,1
    - Dst: Some
      Src: /src/opendal/core/services/sftp/src/reader.rs:247,1
    - Dst: open_dir
      Src: /src/opendal/core/services/sftp/src/reader.rs:247,1
    - Dst: Some
      Src: /src/opendal/core/services/sftp/src/reader.rs:248,1
    - Dst: SftpLister::new
      Src: /src/opendal/core/services/sftp/src/reader.rs:248,1
    - Dst: Result::read_dir
      Src: /src/opendal/core/services/sftp/src/reader.rs:248,1
    - Dst: clone
      Src: /src/opendal/core/services/sftp/src/reader.rs:248,1
    - Dst: super::core::is_not_found
      Src: /src/opendal/core/services/sftp/src/reader.rs:249,1
    - Dst: Err
      Src: /src/opendal/core/services/sftp/src/reader.rs:250,1
    - Dst: super::core::parse_sftp_error
      Src: /src/opendal/core/services/sftp/src/reader.rs:250,1
    - Dst: as_mut
      Src: /src/opendal/core/services/sftp/src/reader.rs:254,1
    - Dst: expect
      Src: /src/opendal/core/services/sftp/src/reader.rs:254,1
    - Dst: Result::next
      Src: /src/opendal/core/services/sftp/src/reader.rs:255,1
    - Dst: Ok
      Src: /src/opendal/core/services/sftp/src/reader.rs:256,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 52
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 258
      start: 239
    functionDepth: 33
    functionLinenumber: 239
    functionLinenumberEnd: 258
    functionName: SftpLazyLister::next
    functionSourceFile: /src/opendal/core/services/sftp/src/reader.rs
    functionUses: 0
    functionsReached:
    - is_none
    - connect
    - as_mut
    - expect
    - Ok
    - set_cwd
    - Result::fs
    - open_dir
    - SftpLister::new
    - clone
    - Some
    - Err
    - Result::next
    - super::core::parse_sftp_error
    - super::core::is_not_found
    - Result::read_dir
    linkageType: ''
    returnType: Result
    signature: async fn next(&mut self) -> Result<Option<oio::Entry>>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::debug_struct
      Src: /src/opendal/core/services/sftp/src/core.rs:41,1
    - Dst: field
      Src: /src/opendal/core/services/sftp/src/core.rs:41,1
    - Dst: field
      Src: /src/opendal/core/services/sftp/src/core.rs:41,1
    - Dst: finish_non_exhaustive
      Src: /src/opendal/core/services/sftp/src/core.rs:41,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 1
    argNames:
    - f
    argTypes:
    - '&mut std::fmt::Formatter<''_>'
    constantsTouched: []
    func_position:
      end: 45
      start: 40
    functionDepth: 5
    functionLinenumber: 40
    functionLinenumberEnd: 45
    functionName: SftpCore::fmt
    functionSourceFile: /src/opendal/core/services/sftp/src/core.rs
    functionUses: 0
    functionsReached:
    - field
    - Result::debug_struct
    - finish_non_exhaustive
    linkageType: ''
    returnType: std::fmt::Result
    signature: 'fn fmt(&self, f: &mut std::fmt::Formatter<''_>) -> std::fmt::Result'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: bounded::Pool::new
      Src: /src/opendal/core/services/sftp/src/core.rs:58,1
    - Dst: bounded::PoolConfig::new
      Src: /src/opendal/core/services/sftp/src/core.rs:59,1
    - Dst: Self::clone
      Src: /src/opendal/core/services/sftp/src/core.rs:61,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/sftp/src/core.rs:62,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 7
    argNames:
    - info
    - capability
    - endpoint
    - root
    - user
    - key
    - known_hosts_strategy
    argTypes:
    - ServiceInfo
    - Capability
    - String
    - String
    - Option<String>
    - Option<String>
    - KnownHosts
    constantsTouched: []
    func_position:
      end: 76
      start: 49
    functionDepth: 2
    functionLinenumber: 49
    functionLinenumberEnd: 76
    functionName: SftpCore::new
    functionSourceFile: /src/opendal/core/services/sftp/src/core.rs
    functionUses: 1
    functionsReached:
    - Self::clone
    - Result::clone
    - bounded::PoolConfig::new
    - bounded::Pool::new
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(info: ServiceInfo,capability: Capability,endpoint: String,root:
      String,user: Option<String>,key: Option<String>,known_hosts_strategy: KnownHosts,)
      -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: get
      Src: /src/opendal/core/services/sftp/src/core.rs:79,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 90
      start: 78
    functionDepth: 2
    functionLinenumber: 78
    functionLinenumberEnd: 90
    functionName: SftpCore::connect
    functionSourceFile: /src/opendal/core/services/sftp/src/core.rs
    functionUses: 0
    functionsReached:
    - get
    linkageType: ''
    returnType: Result
    signature: pub async fn connect(&self) -> Result<bounded::Object<Manager>>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: ImplAsyncFtpStream::connect
      Src: /src/opendal/core/services/ftp/src/core.rs:87,1
    - Dst: RootCertStore::empty
      Src: /src/opendal/core/services/ftp/src/core.rs:90,1
    - Dst: rustls_native_certs::load_native_certs
      Src: /src/opendal/core/services/ftp/src/core.rs:92,1
    - Dst: expect
      Src: /src/opendal/core/services/ftp/src/core.rs:92,1
    - Dst: add
      Src: /src/opendal/core/services/ftp/src/core.rs:94,1
    - Dst: Timestamp::unwrap
      Src: /src/opendal/core/services/ftp/src/core.rs:94,1
    - Dst: ClientConfig::builder
      Src: /src/opendal/core/services/ftp/src/core.rs:97,1
    - Dst: OtelMetricsLayerBuilder::with_root_certificates
      Src: /src/opendal/core/services/ftp/src/core.rs:97,1
    - Dst: with_no_client_auth
      Src: /src/opendal/core/services/ftp/src/core.rs:97,1
    - Dst: Result::into_secure
      Src: /src/opendal/core/services/ftp/src/core.rs:100,1
    - Dst: AsyncRustlsConnector::from
      Src: /src/opendal/core/services/ftp/src/core.rs:102,1
    - Dst: TlsConnector::from
      Src: /src/opendal/core/services/ftp/src/core.rs:102,1
    - Dst: Arc::new
      Src: /src/opendal/core/services/ftp/src/core.rs:102,1
    - Dst: is_empty
      Src: /src/opendal/core/services/ftp/src/core.rs:111,1
    - Dst: login
      Src: /src/opendal/core/services/ftp/src/core.rs:112,1
    - Dst: cwd
      Src: /src/opendal/core/services/ftp/src/core.rs:116,1
    - Dst: mkdir
      Src: /src/opendal/core/services/ftp/src/core.rs:118,1
    - Dst: cwd
      Src: /src/opendal/core/services/ftp/src/core.rs:120,1
    - Dst: Err
      Src: /src/opendal/core/services/ftp/src/core.rs:123,1
    - Dst: transfer_type
      Src: /src/opendal/core/services/ftp/src/core.rs:128,1
    - Dst: Ok
      Src: /src/opendal/core/services/ftp/src/core.rs:130,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 79
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 131
      start: 86
    functionDepth: 32
    functionLinenumber: 86
    functionLinenumberEnd: 131
    functionName: Manager::create
    functionSourceFile: /src/opendal/core/services/ftp/src/core.rs
    functionUses: 0
    functionsReached:
    - Result::into_secure
    - RootCertStore::empty
    - Arc::new
    - OtelMetricsLayerBuilder::with_root_certificates
    - ImplAsyncFtpStream::connect
    - expect
    - Ok
    - rustls_native_certs::load_native_certs
    - TlsConnector::from
    - cwd
    - mkdir
    - ClientConfig::builder
    - login
    - transfer_type
    - is_empty
    - with_no_client_auth
    - Timestamp::unwrap
    - AsyncRustlsConnector::from
    - Err
    - add
    linkageType: ''
    returnType: Result
    signature: async fn create(&self) -> Result<Self::Object, Self::Error>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: anyhow::Result::noop
      Src: /src/opendal/core/services/ftp/src/core.rs:138,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 2
    argNames:
    - o
    argTypes:
    - '&mut Self::Object'
    - '&ObjectStatus'
    constantsTouched: []
    func_position:
      end: 139
      start: 133
    functionDepth: 0
    functionLinenumber: 133
    functionLinenumberEnd: 139
    functionName: Manager::is_recyclable
    functionSourceFile: /src/opendal/core/services/ftp/src/core.rs
    functionUses: 0
    functionsReached:
    - anyhow::Result::noop
    linkageType: ''
    returnType: Result
    signature: 'async fn is_recyclable(&self,o: &mut Self::Object,_: &ObjectStatus,)
      -> Result<(), Self::Error>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Error::new
      Src: /src/opendal/core/services/sftp/src/core.rs:183,1
    - Dst: Self::set_source
      Src: /src/opendal/core/services/sftp/src/core.rs:183,1
    - Dst: Error::set_temporary
      Src: /src/opendal/core/services/sftp/src/core.rs:187,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 1
    argNames:
    - e
    argTypes:
    - SftpClientError
    constantsTouched: []
    func_position:
      end: 191
      start: 171
    functionDepth: 36
    functionLinenumber: 171
    functionLinenumberEnd: 191
    functionName: error::parse_sftp_error
    functionSourceFile: /src/opendal/core/services/sftp/src/core.rs
    functionUses: 0
    functionsReached:
    - Self::set_source
    - Error::set_temporary
    - Error::new
    linkageType: ''
    returnType: Error
    signature: 'pub fn parse_sftp_error(e: SftpClientError) -> Error'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Error::new
      Src: /src/opendal/core/services/sftp/src/core.rs:194,1
    - Dst: Self::set_source
      Src: /src/opendal/core/services/sftp/src/core.rs:194,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - e
    argTypes:
    - SshError
    constantsTouched: []
    func_position:
      end: 195
      start: 193
    functionDepth: 36
    functionLinenumber: 193
    functionLinenumberEnd: 195
    functionName: error::parse_ssh_error
    functionSourceFile: /src/opendal/core/services/sftp/src/core.rs
    functionUses: 0
    functionsReached:
    - Self::set_source
    - Error::new
    linkageType: ''
    returnType: Error
    signature: 'pub fn parse_ssh_error(e: SshError) -> Error'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 1
    argNames:
    - e
    argTypes:
    - '&SftpClientError'
    constantsTouched: []
    func_position:
      end: 199
      start: 197
    functionDepth: 0
    functionLinenumber: 197
    functionLinenumberEnd: 199
    functionName: error::is_not_found
    functionSourceFile: /src/opendal/core/services/sftp/src/core.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: 'pub(crate) fn is_not_found(e: &SftpClientError) -> bool'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 1
    argNames:
    - e
    argTypes:
    - '&SftpClientError'
    constantsTouched: []
    func_position:
      end: 203
      start: 201
    functionDepth: 0
    functionLinenumber: 201
    functionLinenumberEnd: 203
    functionName: error::is_sftp_protocol_error
    functionSourceFile: /src/opendal/core/services/sftp/src/core.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: 'pub(crate) fn is_sftp_protocol_error(e: &SftpClientError) -> bool'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 1
    argNames:
    - e
    argTypes:
    - '&SftpClientError'
    constantsTouched: []
    func_position:
      end: 207
      start: 205
    functionDepth: 0
    functionLinenumber: 205
    functionLinenumberEnd: 207
    functionName: error::is_sftp_failure
    functionSourceFile: /src/opendal/core/services/sftp/src/core.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: 'pub(crate) fn is_sftp_failure(e: &SftpClientError) -> bool'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::file_type
      Src: /src/opendal/core/services/sftp/src/core.rs:220,1
    - Dst: map
      Src: /src/opendal/core/services/sftp/src/core.rs:220,1
    - Dst: is_file
      Src: /src/opendal/core/services/sftp/src/core.rs:223,1
    - Dst: is_dir
      Src: /src/opendal/core/services/sftp/src/core.rs:225,1
    - Dst: unwrap_or
      Src: /src/opendal/core/services/sftp/src/core.rs:220,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/sftp/src/core.rs:233,1
    - Dst: Result::len
      Src: /src/opendal/core/services/sftp/src/core.rs:235,1
    - Dst: anyhow::Result::set_content_length
      Src: /src/opendal/core/services/sftp/src/core.rs:236,1
    - Dst: Result::modified
      Src: /src/opendal/core/services/sftp/src/core.rs:239,1
    - Dst: Timestamp::try_from
      Src: /src/opendal/core/services/sftp/src/core.rs:240,1
    - Dst: Option::as_system_time
      Src: /src/opendal/core/services/sftp/src/core.rs:240,1
    - Dst: anyhow::Result::set_last_modified
      Src: /src/opendal/core/services/sftp/src/core.rs:242,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 32
    argCount: 1
    argNames:
    - meta
    argTypes:
    - SftpMeta
    constantsTouched: []
    func_position:
      end: 246
      start: 219
    functionDepth: 31
    functionLinenumber: 219
    functionLinenumberEnd: 246
    functionName: utils::to_metadata
    functionSourceFile: /src/opendal/core/services/sftp/src/core.rs
    functionUses: 0
    functionsReached:
    - Metadata::new
    - anyhow::Result::set_content_length
    - Result::modified
    - Timestamp::try_from
    - Option::as_system_time
    - anyhow::Result::set_last_modified
    - map
    - Result::file_type
    - Result::len
    - is_file
    - is_dir
    - unwrap_or
    linkageType: ''
    returnType: Metadata
    signature: 'pub fn to_metadata(meta: SftpMeta) -> Metadata'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Box::pin
      Src: /src/opendal/core/services/sftp/src/writer.rs:36,1
    - Dst: TokioCompatFile::new
      Src: /src/opendal/core/services/sftp/src/writer.rs:36,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - file
    argTypes:
    - File
    constantsTouched: []
    func_position:
      end: 38
      start: 34
    functionDepth: 2
    functionLinenumber: 34
    functionLinenumberEnd: 38
    functionName: SftpWriter::new
    functionSourceFile: /src/opendal/core/services/sftp/src/writer.rs
    functionUses: 1
    functionsReached:
    - Box::pin
    - TokioCompatFile::new
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(file: File) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::has_remaining
      Src: /src/opendal/core/services/sftp/src/writer.rs:43,1
    - Dst: write
      Src: /src/opendal/core/services/sftp/src/writer.rs:44,1
    - Dst: Result::chunk
      Src: /src/opendal/core/services/sftp/src/writer.rs:46,1
    - Dst: map_err
      Src: /src/opendal/core/services/sftp/src/writer.rs:44,1
    - Dst: Result::advance
      Src: /src/opendal/core/services/sftp/src/writer.rs:49,1
    - Dst: Ok
      Src: /src/opendal/core/services/sftp/src/writer.rs:52,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 18
    argCount: 1
    argNames:
    - bs
    argTypes:
    - Buffer
    constantsTouched: []
    func_position:
      end: 53
      start: 42
    functionDepth: 36
    functionLinenumber: 42
    functionLinenumberEnd: 53
    functionName: SftpWriter::write
    functionSourceFile: /src/opendal/core/services/sftp/src/writer.rs
    functionUses: 0
    functionsReached:
    - map_err
    - Ok
    - Result::has_remaining
    - Result::advance
    - Result::chunk
    - write
    linkageType: ''
    returnType: Result
    signature: 'async fn write(&mut self, mut bs: Buffer) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: shutdown
      Src: /src/opendal/core/services/sftp/src/writer.rs:56,1
    - Dst: map_err
      Src: /src/opendal/core/services/sftp/src/writer.rs:56,1
    - Dst: Ok
      Src: /src/opendal/core/services/sftp/src/writer.rs:58,1
    - Dst: Metadata::default
      Src: /src/opendal/core/services/sftp/src/writer.rs:58,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 59
      start: 55
    functionDepth: 3
    functionLinenumber: 55
    functionLinenumberEnd: 59
    functionName: SftpWriter::close
    functionSourceFile: /src/opendal/core/services/sftp/src/writer.rs
    functionUses: 0
    functionsReached:
    - map_err
    - shutdown
    - Metadata::default
    - Ok
    linkageType: ''
    returnType: Result
    signature: async fn close(&mut self) -> Result<Metadata>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/core/services/sftp/src/writer.rs:62,1
    - Dst: Error::new
      Src: /src/opendal/core/services/sftp/src/writer.rs:62,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 66
      start: 61
    functionDepth: 36
    functionLinenumber: 61
    functionLinenumberEnd: 66
    functionName: SftpWriter::abort
    functionSourceFile: /src/opendal/core/services/sftp/src/writer.rs
    functionUses: 0
    functionsReached:
    - Error::new
    - Err
    linkageType: ''
    returnType: Result
    signature: async fn abort(&mut self) -> Result<()>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: register::<Sftp>
      Src: /src/opendal/core/services/sftp/src/lib.rs:39,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - registry
    argTypes:
    - '&opendal_core::OperatorRegistry'
    constantsTouched: []
    func_position:
      end: 40
      start: 38
    functionDepth: 0
    functionLinenumber: 38
    functionLinenumberEnd: 40
    functionName: register_sftp_service
    functionSourceFile: /src/opendal/core/services/sftp/src/lib.rs
    functionUses: 1
    functionsReached:
    - register::<Sftp>
    linkageType: ''
    returnType: void
    signature: 'pub fn register_sftp_service(registry: &opendal_core::OperatorRegistry)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self::is_empty
      Src: /src/opendal/core/services/sftp/src/backend.rs:55,1
    - Dst: Some
      Src: /src/opendal/core/services/sftp/src/backend.rs:58,1
    - Dst: Self::to_string
      Src: /src/opendal/core/services/sftp/src/backend.rs:58,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - endpoint
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 62
      start: 54
    functionDepth: 4
    functionLinenumber: 54
    functionLinenumberEnd: 62
    functionName: SftpBuilder::endpoint
    functionSourceFile: /src/opendal/core/services/sftp/src/backend.rs
    functionUses: 0
    functionsReached:
    - Self::is_empty
    - Self::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn endpoint(mut self, endpoint: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::is_empty
      Src: /src/opendal/core/services/sftp/src/backend.rs:67,1
    - Dst: Some
      Src: /src/opendal/core/services/sftp/src/backend.rs:70,1
    - Dst: Result::to_string
      Src: /src/opendal/core/services/sftp/src/backend.rs:70,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - root
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 74
      start: 66
    functionDepth: 4
    functionLinenumber: 66
    functionLinenumberEnd: 74
    functionName: SftpBuilder::root
    functionSourceFile: /src/opendal/core/services/sftp/src/backend.rs
    functionUses: 0
    functionsReached:
    - Result::is_empty
    - Result::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn root(mut self, root: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self::is_empty
      Src: /src/opendal/core/services/sftp/src/backend.rs:78,1
    - Dst: Some
      Src: /src/opendal/core/services/sftp/src/backend.rs:81,1
    - Dst: Self::to_string
      Src: /src/opendal/core/services/sftp/src/backend.rs:81,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - user
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 85
      start: 77
    functionDepth: 4
    functionLinenumber: 77
    functionLinenumberEnd: 85
    functionName: SftpBuilder::user
    functionSourceFile: /src/opendal/core/services/sftp/src/backend.rs
    functionUses: 0
    functionsReached:
    - Self::is_empty
    - Self::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn user(mut self, user: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: FoyerKey::is_empty
      Src: /src/opendal/core/services/sftp/src/backend.rs:89,1
    - Dst: Some
      Src: /src/opendal/core/services/sftp/src/backend.rs:92,1
    - Dst: FoyerKey::to_string
      Src: /src/opendal/core/services/sftp/src/backend.rs:92,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - key
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 96
      start: 88
    functionDepth: 4
    functionLinenumber: 88
    functionLinenumberEnd: 96
    functionName: SftpBuilder::key
    functionSourceFile: /src/opendal/core/services/sftp/src/backend.rs
    functionUses: 0
    functionsReached:
    - FoyerKey::to_string
    - FoyerKey::is_empty
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn key(mut self, key: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self::is_empty
      Src: /src/opendal/core/services/sftp/src/backend.rs:104,1
    - Dst: Some
      Src: /src/opendal/core/services/sftp/src/backend.rs:107,1
    - Dst: Self::to_string
      Src: /src/opendal/core/services/sftp/src/backend.rs:107,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - strategy
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 111
      start: 103
    functionDepth: 4
    functionLinenumber: 103
    functionLinenumberEnd: 111
    functionName: SftpBuilder::known_hosts_strategy
    functionSourceFile: /src/opendal/core/services/sftp/src/backend.rs
    functionUses: 0
    functionsReached:
    - Self::is_empty
    - Self::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn known_hosts_strategy(mut self, strategy: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 1
    argNames:
    - _enable_copy
    argTypes:
    - bool
    constantsTouched: []
    func_position:
      end: 120
      start: 118
    functionDepth: 0
    functionLinenumber: 118
    functionLinenumberEnd: 120
    functionName: SftpBuilder::enable_copy
    functionSourceFile: /src/opendal/core/services/sftp/src/backend.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: 'pub fn enable_copy(self, _enable_copy: bool) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: clone
      Src: /src/opendal/core/services/sftp/src/backend.rs:128,1
    - Dst: Err
      Src: /src/opendal/core/services/sftp/src/backend.rs:130,1
    - Dst: Error::new
      Src: /src/opendal/core/services/sftp/src/backend.rs:130,1
    - Dst: clone
      Src: /src/opendal/core/services/sftp/src/backend.rs:133,1
    - Dst: clone
      Src: /src/opendal/core/services/sftp/src/backend.rs:135,1
    - Dst: map
      Src: /src/opendal/core/services/sftp/src/backend.rs:135,1
    - Dst: normalize_root
      Src: /src/opendal/core/services/sftp/src/backend.rs:139,1
    - Dst: Result::as_str
      Src: /src/opendal/core/services/sftp/src/backend.rs:139,1
    - Dst: unwrap_or_default
      Src: /src/opendal/core/services/sftp/src/backend.rs:135,1
    - Dst: Result::to_lowercase
      Src: /src/opendal/core/services/sftp/src/backend.rs:144,1
    - Dst: Err
      Src: /src/opendal/core/services/sftp/src/backend.rs:152,1
    - Dst: Error::new
      Src: /src/opendal/core/services/sftp/src/backend.rs:152,1
    - Dst: as_str
      Src: /src/opendal/core/services/sftp/src/backend.rs:154,1
    - Dst: ServiceInfo::new
      Src: /src/opendal/core/services/sftp/src/backend.rs:161,1
    - Dst: Result::as_str
      Src: /src/opendal/core/services/sftp/src/backend.rs:161,1
    - Dst: Default::default
      Src: /src/opendal/core/services/sftp/src/backend.rs:182,1
    - Dst: Arc::new
      Src: /src/opendal/core/services/sftp/src/backend.rs:185,1
    - Dst: SftpCore::new
      Src: /src/opendal/core/services/sftp/src/backend.rs:185,1
    - Dst: clone
      Src: /src/opendal/core/services/sftp/src/backend.rs:191,1
    - Dst: Ok
      Src: /src/opendal/core/services/sftp/src/backend.rs:196,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 58
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 197
      start: 126
    functionDepth: 36
    functionLinenumber: 126
    functionLinenumberEnd: 197
    functionName: SftpBuilder::build
    functionSourceFile: /src/opendal/core/services/sftp/src/backend.rs
    functionUses: 0
    functionsReached:
    - ServiceInfo::new
    - Ok
    - Default::default
    - Arc::new
    - normalize_root
    - clone
    - Error::new
    - Err
    - map
    - Result::to_lowercase
    - as_str
    - SftpCore::new
    - Result::as_str
    - unwrap_or_default
    linkageType: ''
    returnType: Result
    signature: fn build(self) -> Result<impl Service>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: clone
      Src: /src/opendal/core/services/sftp/src/backend.rs:213,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 214
      start: 212
    functionDepth: 2
    functionLinenumber: 212
    functionLinenumberEnd: 214
    functionName: SftpBackend::info
    functionSourceFile: /src/opendal/core/services/sftp/src/backend.rs
    functionUses: 0
    functionsReached:
    - clone
    linkageType: ''
    returnType: ServiceInfo
    signature: fn info(&self) -> ServiceInfo
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 218
      start: 216
    functionDepth: 0
    functionLinenumber: 216
    functionLinenumberEnd: 218
    functionName: SftpBackend::capability
    functionSourceFile: /src/opendal/core/services/sftp/src/backend.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Capability
    signature: fn capability(&self) -> Capability
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: connect
      Src: /src/opendal/core/services/sftp/src/backend.rs:226,1
    - Dst: Result::fs
      Src: /src/opendal/core/services/sftp/src/backend.rs:227,1
    - Dst: set_cwd
      Src: /src/opendal/core/services/sftp/src/backend.rs:228,1
    - Dst: Path::new
      Src: /src/opendal/core/services/sftp/src/backend.rs:230,1
    - Dst: Self::components
      Src: /src/opendal/core/services/sftp/src/backend.rs:230,1
    - Dst: PathBuf::from
      Src: /src/opendal/core/services/sftp/src/backend.rs:231,1
    - Dst: Result::join
      Src: /src/opendal/core/services/sftp/src/backend.rs:233,1
    - Dst: create_dir
      Src: /src/opendal/core/services/sftp/src/backend.rs:234,1
    - Dst: super::core::is_sftp_protocol_error
      Src: /src/opendal/core/services/sftp/src/backend.rs:238,1
    - Dst: Err
      Src: /src/opendal/core/services/sftp/src/backend.rs:239,1
    - Dst: super::core::parse_sftp_error
      Src: /src/opendal/core/services/sftp/src/backend.rs:239,1
    - Dst: set_cwd
      Src: /src/opendal/core/services/sftp/src/backend.rs:242,1
    - Dst: Ok
      Src: /src/opendal/core/services/sftp/src/backend.rs:245,1
    - Dst: RpCreateDir::default
      Src: /src/opendal/core/services/sftp/src/backend.rs:245,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 47
    argCount: 3
    argNames:
    - _ctx
    - path
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpCreateDir
    constantsTouched: []
    func_position:
      end: 246
      start: 220
    functionDepth: 33
    functionLinenumber: 220
    functionLinenumberEnd: 246
    functionName: SftpBackend::create_dir
    functionSourceFile: /src/opendal/core/services/sftp/src/backend.rs
    functionUses: 1
    functionsReached:
    - connect
    - Self::components
    - PathBuf::from
    - Result::join
    - Ok
    - set_cwd
    - Result::fs
    - RpCreateDir::default
    - Err
    - Path::new
    - create_dir
    - super::core::parse_sftp_error
    - super::core::is_sftp_protocol_error
    linkageType: ''
    returnType: Result
    signature: 'async fn create_dir(&self,_ctx: &OperationContext,path: &str,_: OpCreateDir,)
      -> Result<RpCreateDir>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: connect
      Src: /src/opendal/core/services/sftp/src/backend.rs:249,1
    - Dst: Result::fs
      Src: /src/opendal/core/services/sftp/src/backend.rs:250,1
    - Dst: set_cwd
      Src: /src/opendal/core/services/sftp/src/backend.rs:251,1
    - Dst: super::core::to_metadata
      Src: /src/opendal/core/services/sftp/src/backend.rs:253,1
    - Dst: metadata
      Src: /src/opendal/core/services/sftp/src/backend.rs:253,1
    - Dst: map_err
      Src: /src/opendal/core/services/sftp/src/backend.rs:253,1
    - Dst: Ok
      Src: /src/opendal/core/services/sftp/src/backend.rs:255,1
    - Dst: RpStat::new
      Src: /src/opendal/core/services/sftp/src/backend.rs:255,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 22
    argCount: 3
    argNames:
    - _ctx
    - path
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpStat
    constantsTouched: []
    func_position:
      end: 256
      start: 248
    functionDepth: 33
    functionLinenumber: 248
    functionLinenumberEnd: 256
    functionName: SftpBackend::stat
    functionSourceFile: /src/opendal/core/services/sftp/src/backend.rs
    functionUses: 0
    functionsReached:
    - connect
    - map_err
    - Ok
    - set_cwd
    - Result::fs
    - metadata
    - RpStat::new
    - super::core::to_metadata
    linkageType: ''
    returnType: Result
    signature: 'async fn stat(&self, _ctx: &OperationContext, path: &str, _: OpStat)
      -> Result<RpStat>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/core/services/sftp/src/backend.rs:259,1
    - Dst: oio::StreamReader::new
      Src: /src/opendal/core/services/sftp/src/backend.rs:259,1
    - Dst: SftpReader::new
      Src: /src/opendal/core/services/sftp/src/backend.rs:259,1
    - Dst: SftpBackend::clone
      Src: /src/opendal/core/services/sftp/src/backend.rs:260,1
    - Dst: Ok
      Src: /src/opendal/core/services/sftp/src/backend.rs:266,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - _ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpRead
    constantsTouched: []
    func_position:
      end: 267
      start: 257
    functionDepth: 3
    functionLinenumber: 257
    functionLinenumberEnd: 267
    functionName: SftpBackend::read
    functionSourceFile: /src/opendal/core/services/sftp/src/backend.rs
    functionUses: 0
    functionsReached:
    - oio::StreamReader::new
    - SftpReader::new
    - SftpBackend::clone
    - Ok
    linkageType: ''
    returnType: Result
    signature: 'fn read(&self, _ctx: &OperationContext, path: &str, args: OpRead)
      -> Result<Self::Reader>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/core/services/sftp/src/backend.rs:270,1
    - Dst: SftpLazyWriter::new
      Src: /src/opendal/core/services/sftp/src/backend.rs:270,1
    - Dst: SftpBackend::clone
      Src: /src/opendal/core/services/sftp/src/backend.rs:270,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/sftp/src/backend.rs:270,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 3
    argNames:
    - ctx
    - path
    - op
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpWrite
    constantsTouched: []
    func_position:
      end: 271
      start: 269
    functionDepth: 3
    functionLinenumber: 269
    functionLinenumberEnd: 271
    functionName: SftpBackend::write
    functionSourceFile: /src/opendal/core/services/sftp/src/backend.rs
    functionUses: 0
    functionsReached:
    - SftpBackend::clone
    - Result::clone
    - SftpLazyWriter::new
    - Ok
    linkageType: ''
    returnType: Result
    signature: 'fn write(&self, ctx: &OperationContext, path: &str, op: OpWrite) ->
      Result<Self::Writer>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/core/services/sftp/src/backend.rs:275,1
    - Dst: oio::OneShotDeleter::new
      Src: /src/opendal/core/services/sftp/src/backend.rs:275,1
    - Dst: SftpDeleter::new
      Src: /src/opendal/core/services/sftp/src/backend.rs:275,1
    - Dst: clone
      Src: /src/opendal/core/services/sftp/src/backend.rs:276,1
    - Dst: Ok
      Src: /src/opendal/core/services/sftp/src/backend.rs:280,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - _ctx
    argTypes:
    - '&OperationContext'
    constantsTouched: []
    func_position:
      end: 281
      start: 273
    functionDepth: 2
    functionLinenumber: 273
    functionLinenumberEnd: 281
    functionName: SftpBackend::delete
    functionSourceFile: /src/opendal/core/services/sftp/src/backend.rs
    functionUses: 0
    functionsReached:
    - oio::OneShotDeleter::new
    - SftpDeleter::new
    - clone
    - Ok
    linkageType: ''
    returnType: Result
    signature: 'fn delete(&self, _ctx: &OperationContext) -> Result<Self::Deleter>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/core/services/sftp/src/backend.rs:284,1
    - Dst: SftpLazyLister::new
      Src: /src/opendal/core/services/sftp/src/backend.rs:284,1
    - Dst: SftpBackend::clone
      Src: /src/opendal/core/services/sftp/src/backend.rs:284,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - _ctx
    - path
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpList
    constantsTouched: []
    func_position:
      end: 285
      start: 283
    functionDepth: 3
    functionLinenumber: 283
    functionLinenumberEnd: 285
    functionName: SftpBackend::list
    functionSourceFile: /src/opendal/core/services/sftp/src/backend.rs
    functionUses: 0
    functionsReached:
    - SftpBackend::clone
    - Ok
    - SftpLazyLister::new
    linkageType: ''
    returnType: Result
    signature: 'fn list(&self, _ctx: &OperationContext, path: &str, _: OpList) ->
      Result<Self::Lister>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: SftpBackend::clone
      Src: /src/opendal/core/services/sftp/src/backend.rs:295,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/sftp/src/backend.rs:296,1
    - Dst: Result::to_string
      Src: /src/opendal/core/services/sftp/src/backend.rs:297,1
    - Dst: Result::to_string
      Src: /src/opendal/core/services/sftp/src/backend.rs:298,1
    - Dst: Ok
      Src: /src/opendal/core/services/sftp/src/backend.rs:299,1
    - Dst: oio::OneShotCopier::new
      Src: /src/opendal/core/services/sftp/src/backend.rs:299,1
    - Dst: connect
      Src: /src/opendal/core/services/sftp/src/backend.rs:300,1
    - Dst: Result::fs
      Src: /src/opendal/core/services/sftp/src/backend.rs:302,1
    - Dst: set_cwd
      Src: /src/opendal/core/services/sftp/src/backend.rs:303,1
    - Dst: Result::rsplit_once
      Src: /src/opendal/core/services/sftp/src/backend.rs:305,1
    - Dst: SqliteBackend::create_dir
      Src: /src/opendal/core/services/sftp/src/backend.rs:306,1
    - Dst: OpCreateDir::default
      Src: /src/opendal/core/services/sftp/src/backend.rs:307,1
    - Dst: canonicalize
      Src: /src/opendal/core/services/sftp/src/backend.rs:311,1
    - Dst: map_err
      Src: /src/opendal/core/services/sftp/src/backend.rs:311,1
    - Dst: canonicalize
      Src: /src/opendal/core/services/sftp/src/backend.rs:312,1
    - Dst: map_err
      Src: /src/opendal/core/services/sftp/src/backend.rs:312,1
    - Dst: Result::open
      Src: /src/opendal/core/services/sftp/src/backend.rs:313,1
    - Dst: map_err
      Src: /src/opendal/core/services/sftp/src/backend.rs:313,1
    - Dst: Result::create
      Src: /src/opendal/core/services/sftp/src/backend.rs:314,1
    - Dst: map_err
      Src: /src/opendal/core/services/sftp/src/backend.rs:314,1
    - Dst: copy_all_to
      Src: /src/opendal/core/services/sftp/src/backend.rs:316,1
    - Dst: map_err
      Src: /src/opendal/core/services/sftp/src/backend.rs:316,1
    - Dst: Ok
      Src: /src/opendal/core/services/sftp/src/backend.rs:321,1
    - Dst: Metadata::default
      Src: /src/opendal/core/services/sftp/src/backend.rs:321,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 71
    argCount: 5
    argNames:
    - ctx
    - from
    - to
    - _opts
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    - OpCopy
    - OpCopier
    constantsTouched: []
    func_position:
      end: 323
      start: 287
    functionDepth: 33
    functionLinenumber: 287
    functionLinenumberEnd: 323
    functionName: SftpBackend::copy
    functionSourceFile: /src/opendal/core/services/sftp/src/backend.rs
    functionUses: 0
    functionsReached:
    - Result::clone
    - connect
    - SqliteBackend::create_dir
    - map_err
    - Metadata::default
    - Result::to_string
    - Ok
    - set_cwd
    - Result::fs
    - Result::rsplit_once
    - SftpBackend::clone
    - OpCreateDir::default
    - copy_all_to
    - Result::create
    - canonicalize
    - oio::OneShotCopier::new
    - Result::open
    linkageType: ''
    returnType: Result
    signature: 'fn copy(&self,ctx: &OperationContext,from: &str,to: &str,_: OpCopy,_opts:
      OpCopier,) -> Result<Self::Copier>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: connect
      Src: /src/opendal/core/services/sftp/src/backend.rs:332,1
    - Dst: Result::fs
      Src: /src/opendal/core/services/sftp/src/backend.rs:334,1
    - Dst: set_cwd
      Src: /src/opendal/core/services/sftp/src/backend.rs:335,1
    - Dst: Result::rsplit_once
      Src: /src/opendal/core/services/sftp/src/backend.rs:337,1
    - Dst: SftpBackend::create_dir
      Src: /src/opendal/core/services/sftp/src/backend.rs:338,1
    - Dst: OpCreateDir::default
      Src: /src/opendal/core/services/sftp/src/backend.rs:338,1
    - Dst: rename
      Src: /src/opendal/core/services/sftp/src/backend.rs:340,1
    - Dst: map_err
      Src: /src/opendal/core/services/sftp/src/backend.rs:340,1
    - Dst: Ok
      Src: /src/opendal/core/services/sftp/src/backend.rs:342,1
    - Dst: RpRename::default
      Src: /src/opendal/core/services/sftp/src/backend.rs:342,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 32
    argCount: 4
    argNames:
    - ctx
    - from
    - to
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    - OpRename
    constantsTouched: []
    func_position:
      end: 343
      start: 325
    functionDepth: 33
    functionLinenumber: 325
    functionLinenumberEnd: 343
    functionName: SftpBackend::rename
    functionSourceFile: /src/opendal/core/services/sftp/src/backend.rs
    functionUses: 0
    functionsReached:
    - connect
    - map_err
    - Ok
    - set_cwd
    - Result::fs
    - Result::rsplit_once
    - rename
    - OpCreateDir::default
    - RpRename::default
    - SftpBackend::create_dir
    linkageType: ''
    returnType: Result
    signature: 'async fn rename(&self,ctx: &OperationContext,from: &str,to: &str,_:
      OpRename,) -> Result<RpRename>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/core/services/sftp/src/backend.rs:351,1
    - Dst: Error::new
      Src: /src/opendal/core/services/sftp/src/backend.rs:351,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - _ctx
    - _path
    - _args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpPresign
    constantsTouched: []
    func_position:
      end: 355
      start: 345
    functionDepth: 36
    functionLinenumber: 345
    functionLinenumberEnd: 355
    functionName: SftpBackend::presign
    functionSourceFile: /src/opendal/core/services/sftp/src/backend.rs
    functionUses: 0
    functionsReached:
    - Error::new
    - Err
    linkageType: ''
    returnType: Result
    signature: 'async fn presign(&self,_ctx: &OperationContext,_path: &str,_args:
      OpPresign,) -> Result<RpPresign>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::debug_struct
      Src: /src/opendal/core/services/pcloud/src/config.rs:45,1
    - Dst: field
      Src: /src/opendal/core/services/pcloud/src/config.rs:45,1
    - Dst: field
      Src: /src/opendal/core/services/pcloud/src/config.rs:45,1
    - Dst: field
      Src: /src/opendal/core/services/pcloud/src/config.rs:45,1
    - Dst: finish_non_exhaustive
      Src: /src/opendal/core/services/pcloud/src/config.rs:45,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 16
    argCount: 1
    argNames:
    - f
    argTypes:
    - '&mut std::fmt::Formatter<''_>'
    constantsTouched: []
    func_position:
      end: 50
      start: 44
    functionDepth: 5
    functionLinenumber: 44
    functionLinenumberEnd: 50
    functionName: PcloudConfig::fmt
    functionSourceFile: /src/opendal/core/services/pcloud/src/config.rs
    functionUses: 0
    functionsReached:
    - field
    - Result::debug_struct
    - finish_non_exhaustive
    linkageType: ''
    returnType: std::fmt::Result
    signature: 'fn fmt(&self, f: &mut std::fmt::Formatter<''_>) -> std::fmt::Result'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::options
      Src: /src/opendal/core/services/pcloud/src/config.rs:57,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/pcloud/src/config.rs:57,1
    - Dst: Result::authority
      Src: /src/opendal/core/services/pcloud/src/config.rs:58,1
    - Dst: Result::insert
      Src: /src/opendal/core/services/pcloud/src/config.rs:59,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/pcloud/src/config.rs:59,1
    - Dst: Result::root
      Src: /src/opendal/core/services/pcloud/src/config.rs:62,1
    - Dst: Result::is_empty
      Src: /src/opendal/core/services/pcloud/src/config.rs:63,1
    - Dst: Result::insert
      Src: /src/opendal/core/services/pcloud/src/config.rs:65,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/pcloud/src/config.rs:65,1
    - Dst: Result::to_string
      Src: /src/opendal/core/services/pcloud/src/config.rs:65,1
    - Dst: Self::from_iter
      Src: /src/opendal/core/services/pcloud/src/config.rs:68,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 28
    argCount: 1
    argNames:
    - uri
    argTypes:
    - '&OperatorUri'
    constantsTouched: []
    func_position:
      end: 69
      start: 56
    functionDepth: 35
    functionLinenumber: 56
    functionLinenumberEnd: 69
    functionName: PcloudConfig::from_uri
    functionSourceFile: /src/opendal/core/services/pcloud/src/config.rs
    functionUses: 0
    functionsReached:
    - Result::clone
    - Self::from_iter
    - Result::to_string
    - Result::insert
    - Result::is_empty
    - '&str::to_string'
    - Result::root
    - Result::authority
    - Result::options
    linkageType: ''
    returnType: Result
    signature: 'fn from_uri(uri: &OperatorUri) -> Result<Self>'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 73
      start: 71
    functionDepth: 0
    functionLinenumber: 71
    functionLinenumberEnd: 73
    functionName: PcloudConfig::into_builder
    functionSourceFile: /src/opendal/core/services/pcloud/src/config.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Self::Builder
    signature: fn into_builder(self) -> Self::Builder
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: OperatorUri::new
      Src: /src/opendal/core/services/hdfs/src/config.rs:110,1
    - Dst: Vec::<(String, String)>::new
      Src: /src/opendal/core/services/hdfs/src/config.rs:110,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/services/hdfs/src/config.rs:110,1
    - Dst: HdfsConfig::from_uri
      Src: /src/opendal/core/services/hdfs/src/config.rs:112,1
    - Dst: opendal_core::Result::unwrap
      Src: /src/opendal/core/services/hdfs/src/config.rs:112,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 114
      start: 109
    functionDepth: 29
    functionLinenumber: 109
    functionLinenumberEnd: 114
    functionName: tests::from_uri_allows_missing_authority
    functionSourceFile: /src/opendal/core/services/hdfs/src/config.rs
    functionUses: 0
    functionsReached:
    - HdfsConfig::from_uri
    - Vec::<(String, String)>::new
    - OperatorUri::new
    - Result::unwrap
    - opendal_core::Result::unwrap
    linkageType: ''
    returnType: void
    signature: fn from_uri_allows_missing_authority()
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - core
    - ctx
    argTypes:
    - Arc<PcloudCore>
    - OperationContext
    constantsTouched: []
    func_position:
      end: 37
      start: 35
    functionDepth: 0
    functionLinenumber: 35
    functionLinenumberEnd: 37
    functionName: PcloudDeleter::new
    functionSourceFile: /src/opendal/core/services/pcloud/src/deleter.rs
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(core: Arc<PcloudCore>, ctx: OperationContext) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: ends_with
      Src: /src/opendal/core/services/pcloud/src/deleter.rs:42,1
    - Dst: delete_folder
      Src: /src/opendal/core/services/pcloud/src/deleter.rs:43,1
    - Dst: delete_file
      Src: /src/opendal/core/services/pcloud/src/deleter.rs:45,1
    - Dst: status
      Src: /src/opendal/core/services/pcloud/src/deleter.rs:48,1
    - Dst: into_body
      Src: /src/opendal/core/services/pcloud/src/deleter.rs:52,1
    - Dst: serde_json::from_reader
      Src: /src/opendal/core/services/pcloud/src/deleter.rs:54,1
    - Dst: Result::reader
      Src: /src/opendal/core/services/pcloud/src/deleter.rs:54,1
    - Dst: map_err
      Src: /src/opendal/core/services/pcloud/src/deleter.rs:54,1
    - Dst: Err
      Src: /src/opendal/core/services/pcloud/src/deleter.rs:59,1
    - Dst: Error::new
      Src: /src/opendal/core/services/pcloud/src/deleter.rs:59,1
    - Dst: Ok
      Src: /src/opendal/core/services/pcloud/src/deleter.rs:62,1
    - Dst: Err
      Src: /src/opendal/core/services/pcloud/src/deleter.rs:64,1
    - Dst: super::core::parse_error
      Src: /src/opendal/core/services/pcloud/src/deleter.rs:64,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 47
    argCount: 2
    argNames:
    - path
    argTypes:
    - String
    - OpDelete
    constantsTouched: []
    func_position:
      end: 66
      start: 41
    functionDepth: 39
    functionLinenumber: 41
    functionLinenumberEnd: 66
    functionName: PcloudDeleter::delete_once
    functionSourceFile: /src/opendal/core/services/pcloud/src/deleter.rs
    functionUses: 0
    functionsReached:
    - map_err
    - status
    - Ok
    - serde_json::from_reader
    - ends_with
    - into_body
    - Err
    - Error::new
    - delete_file
    - delete_folder
    - Result::reader
    - super::core::parse_error
    linkageType: ''
    returnType: Result
    signature: 'async fn delete_once(&self, path: String, _: OpDelete) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: to_string
      Src: /src/opendal/core/services/pcloud/src/lister.rs:40,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - core
    - ctx
    - path
    argTypes:
    - Arc<PcloudCore>
    - OperationContext
    - '&str'
    constantsTouched: []
    func_position:
      end: 42
      start: 36
    functionDepth: 2
    functionLinenumber: 36
    functionLinenumberEnd: 42
    functionName: PcloudLister::new
    functionSourceFile: /src/opendal/core/services/pcloud/src/lister.rs
    functionUses: 1
    functionsReached:
    - to_string
    linkageType: ''
    returnType: Self
    signature: 'pub(super) fn new(core: Arc<PcloudCore>, ctx: OperationContext, path:
      &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: list_folder
      Src: /src/opendal/core/services/pcloud/src/lister.rs:47,1
    - Dst: status
      Src: /src/opendal/core/services/pcloud/src/lister.rs:49,1
    - Dst: into_body
      Src: /src/opendal/core/services/pcloud/src/lister.rs:53,1
    - Dst: serde_json::from_reader
      Src: /src/opendal/core/services/pcloud/src/lister.rs:55,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/pcloud/src/lister.rs:55,1
    - Dst: Self::reader
      Src: /src/opendal/core/services/pcloud/src/lister.rs:55,1
    - Dst: map_err
      Src: /src/opendal/core/services/pcloud/src/lister.rs:55,1
    - Dst: Ok
      Src: /src/opendal/core/services/pcloud/src/lister.rs:61,1
    - Dst: Err
      Src: /src/opendal/core/services/pcloud/src/lister.rs:65,1
    - Dst: Error::new
      Src: /src/opendal/core/services/pcloud/src/lister.rs:65,1
    - Dst: clone
      Src: /src/opendal/core/services/pcloud/src/lister.rs:74,1
    - Dst: parse_list_metadata
      Src: /src/opendal/core/services/pcloud/src/lister.rs:77,1
    - Dst: build_rel_path
      Src: /src/opendal/core/services/pcloud/src/lister.rs:78,1
    - Dst: push_back
      Src: /src/opendal/core/services/pcloud/src/lister.rs:80,1
    - Dst: oio::Entry::new
      Src: /src/opendal/core/services/pcloud/src/lister.rs:80,1
    - Dst: Ok
      Src: /src/opendal/core/services/pcloud/src/lister.rs:85,1
    - Dst: Err
      Src: /src/opendal/core/services/pcloud/src/lister.rs:88,1
    - Dst: Error::new
      Src: /src/opendal/core/services/pcloud/src/lister.rs:88,1
    - Dst: String::from_utf8_lossy
      Src: /src/opendal/core/services/pcloud/src/lister.rs:90,1
    - Dst: Result::to_bytes
      Src: /src/opendal/core/services/pcloud/src/lister.rs:90,1
    - Dst: Err
      Src: /src/opendal/core/services/pcloud/src/lister.rs:93,1
    - Dst: super::core::parse_error
      Src: /src/opendal/core/services/pcloud/src/lister.rs:93,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 81
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - '&mut oio::PageContext'
    constantsTouched: []
    func_position:
      end: 95
      start: 46
    functionDepth: 35
    functionLinenumber: 46
    functionLinenumberEnd: 95
    functionName: PcloudLister::next_page
    functionSourceFile: /src/opendal/core/services/pcloud/src/lister.rs
    functionUses: 0
    functionsReached:
    - Result::clone
    - map_err
    - list_folder
    - status
    - Ok
    - parse_list_metadata
    - push_back
    - oio::Entry::new
    - serde_json::from_reader
    - Self::reader
    - into_body
    - clone
    - build_rel_path
    - Err
    - Error::new
    - Result::to_bytes
    - String::from_utf8_lossy
    - super::core::parse_error
    linkageType: ''
    returnType: Result
    signature: 'async fn next_page(&self, ctx: &mut oio::PageContext) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: to_string
      Src: /src/opendal/core/services/pcloud/src/reader.rs:42,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 4
    argNames:
    - backend
    - ctx
    - path
    argTypes:
    - PcloudBackend
    - OperationContext
    - '&str'
    - OpRead
    constantsTouched: []
    func_position:
      end: 44
      start: 33
    functionDepth: 2
    functionLinenumber: 33
    functionLinenumberEnd: 44
    functionName: PcloudReader::new
    functionSourceFile: /src/opendal/core/services/pcloud/src/reader.rs
    functionUses: 1
    functionsReached:
    - to_string
    linkageType: ''
    returnType: Self
    signature: 'pub(super) fn new(backend: PcloudBackend,ctx: OperationContext,path:
      &str,_: OpRead,) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: as_str
      Src: /src/opendal/core/services/pcloud/src/reader.rs:50,1
    - Dst: get_file_link
      Src: /src/opendal/core/services/pcloud/src/reader.rs:51,1
    - Dst: download
      Src: /src/opendal/core/services/pcloud/src/reader.rs:53,1
    - Dst: status
      Src: /src/opendal/core/services/pcloud/src/reader.rs:55,1
    - Dst: RpRead::new
      Src: /src/opendal/core/services/pcloud/src/reader.rs:59,1
    - Dst: parse_into_metadata
      Src: /src/opendal/core/services/pcloud/src/reader.rs:59,1
    - Dst: headers
      Src: /src/opendal/core/services/pcloud/src/reader.rs:59,1
    - Dst: into_body
      Src: /src/opendal/core/services/pcloud/src/reader.rs:60,1
    - Dst: into_parts
      Src: /src/opendal/core/services/pcloud/src/reader.rs:63,1
    - Dst: to_buffer
      Src: /src/opendal/core/services/pcloud/src/reader.rs:64,1
    - Dst: Err
      Src: /src/opendal/core/services/pcloud/src/reader.rs:65,1
    - Dst: super::core::parse_error
      Src: /src/opendal/core/services/pcloud/src/reader.rs:65,1
    - Dst: Response::from_parts
      Src: /src/opendal/core/services/pcloud/src/reader.rs:65,1
    - Dst: Ok
      Src: /src/opendal/core/services/pcloud/src/reader.rs:69,1
    - Dst: Box::new
      Src: /src/opendal/core/services/pcloud/src/reader.rs:69,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 46
    argCount: 1
    argNames:
    - range
    argTypes:
    - BytesRange
    constantsTouched: []
    func_position:
      end: 70
      start: 48
    functionDepth: 39
    functionLinenumber: 48
    functionLinenumberEnd: 70
    functionName: PcloudReader::open
    functionSourceFile: /src/opendal/core/services/pcloud/src/reader.rs
    functionUses: 0
    functionsReached:
    - get_file_link
    - download
    - parse_into_metadata
    - status
    - to_buffer
    - Ok
    - Box::new
    - into_body
    - Err
    - Response::from_parts
    - as_str
    - headers
    - into_parts
    - RpRead::new
    - super::core::parse_error
    linkageType: ''
    returnType: Result
    signature: 'async fn open(&self, range: BytesRange) -> Result<(RpRead, Box<dyn
      oio::ReadStreamDyn>)>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::debug_struct
      Src: /src/opendal/core/services/pcloud/src/core.rs:46,1
    - Dst: field
      Src: /src/opendal/core/services/pcloud/src/core.rs:46,1
    - Dst: field
      Src: /src/opendal/core/services/pcloud/src/core.rs:46,1
    - Dst: field
      Src: /src/opendal/core/services/pcloud/src/core.rs:46,1
    - Dst: finish_non_exhaustive
      Src: /src/opendal/core/services/pcloud/src/core.rs:46,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 16
    argCount: 1
    argNames:
    - f
    argTypes:
    - '&mut std::fmt::Formatter<''_>'
    constantsTouched: []
    func_position:
      end: 51
      start: 45
    functionDepth: 5
    functionLinenumber: 45
    functionLinenumberEnd: 51
    functionName: PcloudCore::fmt
    functionSourceFile: /src/opendal/core/services/pcloud/src/core.rs
    functionUses: 0
    functionsReached:
    - field
    - Result::debug_struct
    - finish_non_exhaustive
    linkageType: ''
    returnType: std::fmt::Result
    signature: 'fn fmt(&self, f: &mut std::fmt::Formatter<''_>) -> std::fmt::Result'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::http_transport
      Src: /src/opendal/core/services/pcloud/src/core.rs:61,1
    - Dst: Self::send
      Src: /src/opendal/core/services/pcloud/src/core.rs:61,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - ctx
    - req
    argTypes:
    - '&OperationContext'
    - Request<Buffer>
    constantsTouched: []
    func_position:
      end: 62
      start: 56
    functionDepth: 37
    functionLinenumber: 56
    functionLinenumberEnd: 62
    functionName: PcloudCore::send
    functionSourceFile: /src/opendal/core/services/pcloud/src/core.rs
    functionUses: 11
    functionsReached:
    - Result::http_transport
    - Self::send
    linkageType: ''
    returnType: Result
    signature: 'pub async fn send(&self,ctx: &OperationContext,req: Request<Buffer>,)
      -> Result<Response<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/pcloud/src/core.rs:67,1
    - Dst: Request::get
      Src: /src/opendal/core/services/pcloud/src/core.rs:77,1
    - Dst: Option::extension
      Src: /src/opendal/core/services/pcloud/src/core.rs:80,1
    - Dst: extension
      Src: /src/opendal/core/services/pcloud/src/core.rs:80,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/pcloud/src/core.rs:82,1
    - Dst: body
      Src: /src/opendal/core/services/pcloud/src/core.rs:80,1
    - Dst: Buffer::new
      Src: /src/opendal/core/services/pcloud/src/core.rs:83,1
    - Dst: map_err
      Src: /src/opendal/core/services/pcloud/src/core.rs:80,1
    - Dst: PcloudCore::send
      Src: /src/opendal/core/services/pcloud/src/core.rs:86,1
    - Dst: status
      Src: /src/opendal/core/services/pcloud/src/core.rs:88,1
    - Dst: into_body
      Src: /src/opendal/core/services/pcloud/src/core.rs:91,1
    - Dst: serde_json::from_reader
      Src: /src/opendal/core/services/pcloud/src/core.rs:93,1
    - Dst: Result::reader
      Src: /src/opendal/core/services/pcloud/src/core.rs:93,1
    - Dst: map_err
      Src: /src/opendal/core/services/pcloud/src/core.rs:93,1
    - Dst: Err
      Src: /src/opendal/core/services/pcloud/src/core.rs:96,1
    - Dst: Error::new
      Src: /src/opendal/core/services/pcloud/src/core.rs:96,1
    - Dst: Err
      Src: /src/opendal/core/services/pcloud/src/core.rs:99,1
    - Dst: Error::new
      Src: /src/opendal/core/services/pcloud/src/core.rs:99,1
    - Dst: is_empty
      Src: /src/opendal/core/services/pcloud/src/core.rs:104,1
    - Dst: Ok
      Src: /src/opendal/core/services/pcloud/src/core.rs:106,1
    - Dst: Err
      Src: /src/opendal/core/services/pcloud/src/core.rs:108,1
    - Dst: Error::new
      Src: /src/opendal/core/services/pcloud/src/core.rs:108,1
    - Dst: Err
      Src: /src/opendal/core/services/pcloud/src/core.rs:110,1
    - Dst: parse_error
      Src: /src/opendal/core/services/pcloud/src/core.rs:110,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 64
    argCount: 2
    argNames:
    - ctx
    - path
    argTypes:
    - '&OperationContext'
    - '&str'
    constantsTouched: []
    func_position:
      end: 112
      start: 66
    functionDepth: 38
    functionLinenumber: 66
    functionLinenumberEnd: 112
    functionName: PcloudCore::get_file_link
    functionSourceFile: /src/opendal/core/services/pcloud/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - extension
    - Request::get
    - Buffer::new
    - status
    - Ok
    - serde_json::from_reader
    - body
    - into_body
    - parse_error
    - build_abs_path
    - Err
    - Error::new
    - is_empty
    - Option::extension
    - ServiceOperation
    - Result::reader
    - PcloudCore::send
    linkageType: ''
    returnType: Result
    signature: 'pub async fn get_file_link(&self, ctx: &OperationContext, path: &str)
      -> Result<String>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Request::get
      Src: /src/opendal/core/services/pcloud/src/core.rs:120,1
    - Dst: Option::header
      Src: /src/opendal/core/services/pcloud/src/core.rs:123,1
    - Dst: (Vec::to_header
      Src: /src/opendal/core/services/pcloud/src/core.rs:124,1
    - Dst: String::extension
      Src: /src/opendal/core/services/pcloud/src/core.rs:123,1
    - Dst: extension
      Src: /src/opendal/core/services/pcloud/src/core.rs:123,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/pcloud/src/core.rs:126,1
    - Dst: body
      Src: /src/opendal/core/services/pcloud/src/core.rs:123,1
    - Dst: Buffer::new
      Src: /src/opendal/core/services/pcloud/src/core.rs:127,1
    - Dst: map_err
      Src: /src/opendal/core/services/pcloud/src/core.rs:123,1
    - Dst: Result::http_transport
      Src: /src/opendal/core/services/pcloud/src/core.rs:130,1
    - Dst: Self::fetch
      Src: /src/opendal/core/services/pcloud/src/core.rs:130,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 21
    argCount: 3
    argNames:
    - ctx
    - url
    - range
    argTypes:
    - '&OperationContext'
    - '&str'
    - BytesRange
    constantsTouched: []
    func_position:
      end: 131
      start: 114
    functionDepth: 3
    functionLinenumber: 114
    functionLinenumberEnd: 131
    functionName: PcloudCore::download
    functionSourceFile: /src/opendal/core/services/pcloud/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - extension
    - Request::get
    - (Vec::to_header
    - Buffer::new
    - body
    - Self::fetch
    - ServiceOperation
    - Result::http_transport
    - String::extension
    - Option::header
    linkageType: ''
    returnType: Result
    signature: 'pub async fn download(&self,ctx: &OperationContext,url: &str,range:
      BytesRange,) -> Result<Response<HttpBody>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/pcloud/src/core.rs:134,1
    - Dst: split
      Src: /src/opendal/core/services/pcloud/src/core.rs:136,1
    - Dst: split('/').collect::<Vec<&str>>
      Src: /src/opendal/core/services/pcloud/src/core.rs:136,1
    - Dst: Result::len
      Src: /src/opendal/core/services/pcloud/src/core.rs:138,1
    - Dst: join
      Src: /src/opendal/core/services/pcloud/src/core.rs:139,1
    - Dst: PcloudCore::create_folder_if_not_exists
      Src: /src/opendal/core/services/pcloud/src/core.rs:140,1
    - Dst: status
      Src: /src/opendal/core/services/pcloud/src/core.rs:142,1
    - Dst: into_body
      Src: /src/opendal/core/services/pcloud/src/core.rs:146,1
    - Dst: serde_json::from_reader
      Src: /src/opendal/core/services/pcloud/src/core.rs:148,1
    - Dst: Result::reader
      Src: /src/opendal/core/services/pcloud/src/core.rs:148,1
    - Dst: map_err
      Src: /src/opendal/core/services/pcloud/src/core.rs:148,1
    - Dst: Err
      Src: /src/opendal/core/services/pcloud/src/core.rs:151,1
    - Dst: Error::new
      Src: /src/opendal/core/services/pcloud/src/core.rs:151,1
    - Dst: Err
      Src: /src/opendal/core/services/pcloud/src/core.rs:154,1
    - Dst: Error::new
      Src: /src/opendal/core/services/pcloud/src/core.rs:154,1
    - Dst: Err
      Src: /src/opendal/core/services/pcloud/src/core.rs:158,1
    - Dst: Error::new
      Src: /src/opendal/core/services/pcloud/src/core.rs:158,1
    - Dst: Err
      Src: /src/opendal/core/services/pcloud/src/core.rs:161,1
    - Dst: parse_error
      Src: /src/opendal/core/services/pcloud/src/core.rs:161,1
    - Dst: Ok
      Src: /src/opendal/core/services/pcloud/src/core.rs:164,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 66
    argCount: 2
    argNames:
    - ctx
    - path
    argTypes:
    - '&OperationContext'
    - '&str'
    constantsTouched: []
    func_position:
      end: 165
      start: 133
    functionDepth: 33
    functionLinenumber: 133
    functionLinenumberEnd: 165
    functionName: PcloudCore::ensure_dir_exists
    functionSourceFile: /src/opendal/core/services/pcloud/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - status
    - Ok
    - join
    - PcloudCore::create_folder_if_not_exists
    - serde_json::from_reader
    - parse_error
    - split
    - into_body
    - build_abs_path
    - Err
    - Error::new
    - split('/').collect::<Vec<&str>>
    - Result::len
    - Result::reader
    linkageType: ''
    returnType: Result
    signature: 'pub async fn ensure_dir_exists(&self, ctx: &OperationContext, path:
      &str) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Request::post
      Src: /src/opendal/core/services/pcloud/src/core.rs:180,1
    - Dst: extension
      Src: /src/opendal/core/services/pcloud/src/core.rs:183,1
    - Dst: extension
      Src: /src/opendal/core/services/pcloud/src/core.rs:183,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/pcloud/src/core.rs:185,1
    - Dst: body
      Src: /src/opendal/core/services/pcloud/src/core.rs:183,1
    - Dst: Buffer::new
      Src: /src/opendal/core/services/pcloud/src/core.rs:186,1
    - Dst: map_err
      Src: /src/opendal/core/services/pcloud/src/core.rs:183,1
    - Dst: PcloudCore::send
      Src: /src/opendal/core/services/pcloud/src/core.rs:189,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 15
    argCount: 2
    argNames:
    - ctx
    - path
    argTypes:
    - '&OperationContext'
    - '&str'
    constantsTouched: []
    func_position:
      end: 190
      start: 167
    functionDepth: 38
    functionLinenumber: 167
    functionLinenumberEnd: 190
    functionName: PcloudCore::create_folder_if_not_exists
    functionSourceFile: /src/opendal/core/services/pcloud/src/core.rs
    functionUses: 1
    functionsReached:
    - map_err
    - extension
    - Buffer::new
    - Request::post
    - body
    - ServiceOperation
    - PcloudCore::send
    linkageType: ''
    returnType: Result
    signature: 'pub async fn create_folder_if_not_exists(&self,ctx: &OperationContext,path:
      &str,) -> Result<Response<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/pcloud/src/core.rs:198,1
    - Dst: build_abs_path
      Src: /src/opendal/core/services/pcloud/src/core.rs:199,1
    - Dst: Request::post
      Src: /src/opendal/core/services/pcloud/src/core.rs:210,1
    - Dst: extension
      Src: /src/opendal/core/services/pcloud/src/core.rs:213,1
    - Dst: extension
      Src: /src/opendal/core/services/pcloud/src/core.rs:213,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/pcloud/src/core.rs:215,1
    - Dst: body
      Src: /src/opendal/core/services/pcloud/src/core.rs:213,1
    - Dst: Buffer::new
      Src: /src/opendal/core/services/pcloud/src/core.rs:216,1
    - Dst: map_err
      Src: /src/opendal/core/services/pcloud/src/core.rs:213,1
    - Dst: PcloudCore::send
      Src: /src/opendal/core/services/pcloud/src/core.rs:219,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 21
    argCount: 3
    argNames:
    - ctx
    - from
    - to
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    constantsTouched: []
    func_position:
      end: 220
      start: 192
    functionDepth: 38
    functionLinenumber: 192
    functionLinenumberEnd: 220
    functionName: PcloudCore::rename_file
    functionSourceFile: /src/opendal/core/services/pcloud/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - extension
    - Buffer::new
    - Request::post
    - body
    - build_abs_path
    - ServiceOperation
    - PcloudCore::send
    linkageType: ''
    returnType: Result
    signature: 'pub async fn rename_file(&self,ctx: &OperationContext,from: &str,to:
      &str,) -> Result<Response<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/pcloud/src/core.rs:228,1
    - Dst: build_abs_path
      Src: /src/opendal/core/services/pcloud/src/core.rs:229,1
    - Dst: Request::post
      Src: /src/opendal/core/services/pcloud/src/core.rs:239,1
    - Dst: extension
      Src: /src/opendal/core/services/pcloud/src/core.rs:242,1
    - Dst: extension
      Src: /src/opendal/core/services/pcloud/src/core.rs:242,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/pcloud/src/core.rs:244,1
    - Dst: body
      Src: /src/opendal/core/services/pcloud/src/core.rs:242,1
    - Dst: Buffer::new
      Src: /src/opendal/core/services/pcloud/src/core.rs:245,1
    - Dst: map_err
      Src: /src/opendal/core/services/pcloud/src/core.rs:242,1
    - Dst: PcloudCore::send
      Src: /src/opendal/core/services/pcloud/src/core.rs:248,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 21
    argCount: 3
    argNames:
    - ctx
    - from
    - to
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    constantsTouched: []
    func_position:
      end: 249
      start: 222
    functionDepth: 38
    functionLinenumber: 222
    functionLinenumberEnd: 249
    functionName: PcloudCore::rename_folder
    functionSourceFile: /src/opendal/core/services/pcloud/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - extension
    - Buffer::new
    - Request::post
    - body
    - build_abs_path
    - ServiceOperation
    - PcloudCore::send
    linkageType: ''
    returnType: Result
    signature: 'pub async fn rename_folder(&self,ctx: &OperationContext,from: &str,to:
      &str,) -> Result<Response<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/pcloud/src/core.rs:256,1
    - Dst: Request::post
      Src: /src/opendal/core/services/pcloud/src/core.rs:266,1
    - Dst: extension
      Src: /src/opendal/core/services/pcloud/src/core.rs:269,1
    - Dst: extension
      Src: /src/opendal/core/services/pcloud/src/core.rs:269,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/pcloud/src/core.rs:271,1
    - Dst: body
      Src: /src/opendal/core/services/pcloud/src/core.rs:269,1
    - Dst: Buffer::new
      Src: /src/opendal/core/services/pcloud/src/core.rs:272,1
    - Dst: map_err
      Src: /src/opendal/core/services/pcloud/src/core.rs:269,1
    - Dst: PcloudCore::send
      Src: /src/opendal/core/services/pcloud/src/core.rs:275,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 18
    argCount: 2
    argNames:
    - ctx
    - path
    argTypes:
    - '&OperationContext'
    - '&str'
    constantsTouched: []
    func_position:
      end: 276
      start: 251
    functionDepth: 38
    functionLinenumber: 251
    functionLinenumberEnd: 276
    functionName: PcloudCore::delete_folder
    functionSourceFile: /src/opendal/core/services/pcloud/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - extension
    - Buffer::new
    - Request::post
    - body
    - build_abs_path
    - ServiceOperation
    - PcloudCore::send
    linkageType: ''
    returnType: Result
    signature: 'pub async fn delete_folder(&self,ctx: &OperationContext,path: &str,)
      -> Result<Response<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/pcloud/src/core.rs:283,1
    - Dst: Request::post
      Src: /src/opendal/core/services/pcloud/src/core.rs:293,1
    - Dst: extension
      Src: /src/opendal/core/services/pcloud/src/core.rs:296,1
    - Dst: extension
      Src: /src/opendal/core/services/pcloud/src/core.rs:296,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/pcloud/src/core.rs:298,1
    - Dst: body
      Src: /src/opendal/core/services/pcloud/src/core.rs:296,1
    - Dst: Buffer::new
      Src: /src/opendal/core/services/pcloud/src/core.rs:299,1
    - Dst: map_err
      Src: /src/opendal/core/services/pcloud/src/core.rs:296,1
    - Dst: PcloudCore::send
      Src: /src/opendal/core/services/pcloud/src/core.rs:302,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 18
    argCount: 2
    argNames:
    - ctx
    - path
    argTypes:
    - '&OperationContext'
    - '&str'
    constantsTouched: []
    func_position:
      end: 303
      start: 278
    functionDepth: 38
    functionLinenumber: 278
    functionLinenumberEnd: 303
    functionName: PcloudCore::delete_file
    functionSourceFile: /src/opendal/core/services/pcloud/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - extension
    - Buffer::new
    - Request::post
    - body
    - build_abs_path
    - ServiceOperation
    - PcloudCore::send
    linkageType: ''
    returnType: Result
    signature: 'pub async fn delete_file(&self,ctx: &OperationContext,path: &str,)
      -> Result<Response<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/pcloud/src/core.rs:311,1
    - Dst: build_abs_path
      Src: /src/opendal/core/services/pcloud/src/core.rs:312,1
    - Dst: Request::post
      Src: /src/opendal/core/services/pcloud/src/core.rs:323,1
    - Dst: extension
      Src: /src/opendal/core/services/pcloud/src/core.rs:326,1
    - Dst: extension
      Src: /src/opendal/core/services/pcloud/src/core.rs:326,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/pcloud/src/core.rs:328,1
    - Dst: body
      Src: /src/opendal/core/services/pcloud/src/core.rs:326,1
    - Dst: Buffer::new
      Src: /src/opendal/core/services/pcloud/src/core.rs:329,1
    - Dst: map_err
      Src: /src/opendal/core/services/pcloud/src/core.rs:326,1
    - Dst: PcloudCore::send
      Src: /src/opendal/core/services/pcloud/src/core.rs:332,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 21
    argCount: 3
    argNames:
    - ctx
    - from
    - to
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    constantsTouched: []
    func_position:
      end: 333
      start: 305
    functionDepth: 38
    functionLinenumber: 305
    functionLinenumberEnd: 333
    functionName: PcloudCore::copy_file
    functionSourceFile: /src/opendal/core/services/pcloud/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - extension
    - Buffer::new
    - Request::post
    - body
    - build_abs_path
    - ServiceOperation
    - PcloudCore::send
    linkageType: ''
    returnType: Result
    signature: 'pub async fn copy_file(&self,ctx: &OperationContext,from: &str,to:
      &str,) -> Result<Response<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/pcloud/src/core.rs:341,1
    - Dst: build_abs_path
      Src: /src/opendal/core/services/pcloud/src/core.rs:342,1
    - Dst: Request::post
      Src: /src/opendal/core/services/pcloud/src/core.rs:353,1
    - Dst: extension
      Src: /src/opendal/core/services/pcloud/src/core.rs:356,1
    - Dst: extension
      Src: /src/opendal/core/services/pcloud/src/core.rs:356,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/pcloud/src/core.rs:358,1
    - Dst: body
      Src: /src/opendal/core/services/pcloud/src/core.rs:356,1
    - Dst: Buffer::new
      Src: /src/opendal/core/services/pcloud/src/core.rs:359,1
    - Dst: map_err
      Src: /src/opendal/core/services/pcloud/src/core.rs:356,1
    - Dst: PcloudCore::send
      Src: /src/opendal/core/services/pcloud/src/core.rs:362,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 21
    argCount: 3
    argNames:
    - ctx
    - from
    - to
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    constantsTouched: []
    func_position:
      end: 363
      start: 335
    functionDepth: 38
    functionLinenumber: 335
    functionLinenumberEnd: 363
    functionName: PcloudCore::copy_folder
    functionSourceFile: /src/opendal/core/services/pcloud/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - extension
    - Buffer::new
    - Request::post
    - body
    - build_abs_path
    - ServiceOperation
    - PcloudCore::send
    linkageType: ''
    returnType: Result
    signature: 'pub async fn copy_folder(&self,ctx: &OperationContext,from: &str,to:
      &str,) -> Result<Response<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/pcloud/src/core.rs:366,1
    - Dst: trim_end_matches
      Src: /src/opendal/core/services/pcloud/src/core.rs:368,1
    - Dst: Request::post
      Src: /src/opendal/core/services/pcloud/src/core.rs:378,1
    - Dst: extension
      Src: /src/opendal/core/services/pcloud/src/core.rs:381,1
    - Dst: extension
      Src: /src/opendal/core/services/pcloud/src/core.rs:381,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/pcloud/src/core.rs:383,1
    - Dst: body
      Src: /src/opendal/core/services/pcloud/src/core.rs:381,1
    - Dst: Buffer::new
      Src: /src/opendal/core/services/pcloud/src/core.rs:384,1
    - Dst: map_err
      Src: /src/opendal/core/services/pcloud/src/core.rs:381,1
    - Dst: PcloudCore::send
      Src: /src/opendal/core/services/pcloud/src/core.rs:387,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 20
    argCount: 2
    argNames:
    - ctx
    - path
    argTypes:
    - '&OperationContext'
    - '&str'
    constantsTouched: []
    func_position:
      end: 388
      start: 365
    functionDepth: 38
    functionLinenumber: 365
    functionLinenumberEnd: 388
    functionName: PcloudCore::stat
    functionSourceFile: /src/opendal/core/services/pcloud/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - extension
    - Buffer::new
    - trim_end_matches
    - Request::post
    - body
    - build_abs_path
    - ServiceOperation
    - PcloudCore::send
    linkageType: ''
    returnType: Result
    signature: 'pub async fn stat(&self, ctx: &OperationContext, path: &str) -> Result<Response<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/pcloud/src/core.rs:396,1
    - Dst: get_basename
      Src: /src/opendal/core/services/pcloud/src/core.rs:398,1
    - Dst: get_parent
      Src: /src/opendal/core/services/pcloud/src/core.rs:398,1
    - Dst: '&str::trim_end_matches'
      Src: /src/opendal/core/services/pcloud/src/core.rs:398,1
    - Dst: Request::put
      Src: /src/opendal/core/services/pcloud/src/core.rs:409,1
    - Dst: DeleteInput::extension
      Src: /src/opendal/core/services/pcloud/src/core.rs:412,1
    - Dst: extension
      Src: /src/opendal/core/services/pcloud/src/core.rs:412,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/pcloud/src/core.rs:414,1
    - Dst: body
      Src: /src/opendal/core/services/pcloud/src/core.rs:412,1
    - Dst: map_err
      Src: /src/opendal/core/services/pcloud/src/core.rs:412,1
    - Dst: PcloudCore::send
      Src: /src/opendal/core/services/pcloud/src/core.rs:418,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 24
    argCount: 3
    argNames:
    - ctx
    - path
    - bs
    argTypes:
    - '&OperationContext'
    - '&str'
    - Buffer
    constantsTouched: []
    func_position:
      end: 419
      start: 390
    functionDepth: 38
    functionLinenumber: 390
    functionLinenumberEnd: 419
    functionName: PcloudCore::upload_file
    functionSourceFile: /src/opendal/core/services/pcloud/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - extension
    - Request::put
    - get_parent
    - body
    - get_basename
    - build_abs_path
    - PcloudCore::send
    - ServiceOperation
    - DeleteInput::extension
    - '&str::trim_end_matches'
    linkageType: ''
    returnType: Result
    signature: 'pub async fn upload_file(&self,ctx: &OperationContext,path: &str,bs:
      Buffer,) -> Result<Response<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/pcloud/src/core.rs:426,1
    - Dst: normalize_root
      Src: /src/opendal/core/services/pcloud/src/core.rs:428,1
    - Dst: trim_end_matches
      Src: /src/opendal/core/services/pcloud/src/core.rs:430,1
    - Dst: Request::get
      Src: /src/opendal/core/services/pcloud/src/core.rs:440,1
    - Dst: Option::extension
      Src: /src/opendal/core/services/pcloud/src/core.rs:443,1
    - Dst: extension
      Src: /src/opendal/core/services/pcloud/src/core.rs:443,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/pcloud/src/core.rs:445,1
    - Dst: body
      Src: /src/opendal/core/services/pcloud/src/core.rs:443,1
    - Dst: Buffer::new
      Src: /src/opendal/core/services/pcloud/src/core.rs:446,1
    - Dst: map_err
      Src: /src/opendal/core/services/pcloud/src/core.rs:443,1
    - Dst: PcloudCore::send
      Src: /src/opendal/core/services/pcloud/src/core.rs:449,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 22
    argCount: 2
    argNames:
    - ctx
    - path
    argTypes:
    - '&OperationContext'
    - '&str'
    constantsTouched: []
    func_position:
      end: 450
      start: 421
    functionDepth: 34
    functionLinenumber: 421
    functionLinenumberEnd: 450
    functionName: PcloudCore::list_folder
    functionSourceFile: /src/opendal/core/services/pcloud/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - extension
    - Request::get
    - Buffer::new
    - trim_end_matches
    - body
    - normalize_root
    - build_abs_path
    - Option::extension
    - ServiceOperation
    - PcloudCore::send
    linkageType: ''
    returnType: Result
    signature: 'pub async fn list_folder(&self,ctx: &OperationContext,path: &str,)
      -> Result<Response<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Metadata::new
      Src: /src/opendal/core/services/pcloud/src/core.rs:455,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/pcloud/src/core.rs:457,1
    - Dst: storage::Result::set_content_length
      Src: /src/opendal/core/services/pcloud/src/core.rs:461,1
    - Dst: storage::Result::set_last_modified
      Src: /src/opendal/core/services/pcloud/src/core.rs:464,1
    - Dst: Timestamp::parse_rfc2822
      Src: /src/opendal/core/services/pcloud/src/core.rs:464,1
    - Dst: Ok
      Src: /src/opendal/core/services/pcloud/src/core.rs:466,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 18
    argCount: 1
    argNames:
    - content
    argTypes:
    - StatMetadata
    constantsTouched: []
    func_position:
      end: 467
      start: 453
    functionDepth: 41
    functionLinenumber: 453
    functionLinenumberEnd: 467
    functionName: parse_stat_metadata
    functionSourceFile: /src/opendal/core/services/pcloud/src/core.rs
    functionUses: 1
    functionsReached:
    - Metadata::new
    - Timestamp::parse_rfc2822
    - Ok
    - storage::Result::set_last_modified
    - storage::Result::set_content_length
    linkageType: ''
    returnType: Result
    signature: 'pub(super) fn parse_stat_metadata(content: StatMetadata) -> Result<Metadata>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Metadata::new
      Src: /src/opendal/core/services/pcloud/src/core.rs:471,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/pcloud/src/core.rs:473,1
    - Dst: storage::Result::set_content_length
      Src: /src/opendal/core/services/pcloud/src/core.rs:477,1
    - Dst: storage::Result::set_last_modified
      Src: /src/opendal/core/services/pcloud/src/core.rs:480,1
    - Dst: Timestamp::parse_rfc2822
      Src: /src/opendal/core/services/pcloud/src/core.rs:480,1
    - Dst: Ok
      Src: /src/opendal/core/services/pcloud/src/core.rs:482,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 18
    argCount: 1
    argNames:
    - content
    argTypes:
    - ListMetadata
    constantsTouched: []
    func_position:
      end: 483
      start: 469
    functionDepth: 41
    functionLinenumber: 469
    functionLinenumberEnd: 483
    functionName: parse_list_metadata
    functionSourceFile: /src/opendal/core/services/pcloud/src/core.rs
    functionUses: 1
    functionsReached:
    - Metadata::new
    - Timestamp::parse_rfc2822
    - Ok
    - storage::Result::set_last_modified
    - storage::Result::set_content_length
    linkageType: ''
    returnType: Result
    signature: 'pub(super) fn parse_list_metadata(content: ListMetadata) -> Result<Metadata>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: bytes::Bytes::from
      Src: /src/opendal/core/services/obs/src/core.rs:714,1
    - Dst: de::from_reader
      Src: /src/opendal/core/services/obs/src/core.rs:727,1
    - Dst: Result::reader
      Src: /src/opendal/core/services/obs/src/core.rs:727,1
    - Dst: expect
      Src: /src/opendal/core/services/obs/src/core.rs:727,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 738
      start: 713
    functionDepth: 31
    functionLinenumber: 713
    functionLinenumberEnd: 738
    functionName: error::test_parse_error
    functionSourceFile: /src/opendal/core/services/obs/src/core.rs
    functionUses: 0
    functionsReached:
    - Result::reader
    - expect
    - de::from_reader
    - bytes::Bytes::from
    linkageType: ''
    returnType: void
    signature: fn test_parse_error()
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 3
    argNames:
    - core
    - ctx
    - path
    argTypes:
    - Arc<PcloudCore>
    - OperationContext
    - String
    constantsTouched: []
    func_position:
      end: 40
      start: 38
    functionDepth: 0
    functionLinenumber: 38
    functionLinenumberEnd: 40
    functionName: PcloudWriter::new
    functionSourceFile: /src/opendal/core/services/pcloud/src/writer.rs
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(core: Arc<PcloudCore>, ctx: OperationContext, path: String)
      -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: ensure_dir_exists
      Src: /src/opendal/core/services/pcloud/src/writer.rs:45,1
    - Dst: upload_file
      Src: /src/opendal/core/services/pcloud/src/writer.rs:47,1
    - Dst: status
      Src: /src/opendal/core/services/pcloud/src/writer.rs:49,1
    - Dst: into_body
      Src: /src/opendal/core/services/pcloud/src/writer.rs:53,1
    - Dst: serde_json::from_reader
      Src: /src/opendal/core/services/pcloud/src/writer.rs:55,1
    - Dst: Result::reader
      Src: /src/opendal/core/services/pcloud/src/writer.rs:55,1
    - Dst: map_err
      Src: /src/opendal/core/services/pcloud/src/writer.rs:55,1
    - Dst: Err
      Src: /src/opendal/core/services/pcloud/src/writer.rs:59,1
    - Dst: Error::new
      Src: /src/opendal/core/services/pcloud/src/writer.rs:59,1
    - Dst: Ok
      Src: /src/opendal/core/services/pcloud/src/writer.rs:62,1
    - Dst: Metadata::default
      Src: /src/opendal/core/services/pcloud/src/writer.rs:62,1
    - Dst: Err
      Src: /src/opendal/core/services/pcloud/src/writer.rs:64,1
    - Dst: super::core::parse_error
      Src: /src/opendal/core/services/pcloud/src/writer.rs:64,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 43
    argCount: 1
    argNames:
    - bs
    argTypes:
    - Buffer
    constantsTouched: []
    func_position:
      end: 66
      start: 44
    functionDepth: 34
    functionLinenumber: 44
    functionLinenumberEnd: 66
    functionName: PcloudWriter::write_once
    functionSourceFile: /src/opendal/core/services/pcloud/src/writer.rs
    functionUses: 0
    functionsReached:
    - map_err
    - Metadata::default
    - status
    - upload_file
    - Ok
    - serde_json::from_reader
    - into_body
    - Err
    - Error::new
    - Result::reader
    - super::core::parse_error
    - ensure_dir_exists
    linkageType: ''
    returnType: Result
    signature: 'async fn write_once(&self, bs: Buffer) -> Result<Metadata>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: register::<Pcloud>
      Src: /src/opendal/core/services/pcloud/src/lib.rs:38,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - registry
    argTypes:
    - '&opendal_core::OperatorRegistry'
    constantsTouched: []
    func_position:
      end: 39
      start: 37
    functionDepth: 0
    functionLinenumber: 37
    functionLinenumberEnd: 39
    functionName: register_pcloud_service
    functionSourceFile: /src/opendal/core/services/pcloud/src/lib.rs
    functionUses: 1
    functionsReached:
    - register::<Pcloud>
    linkageType: ''
    returnType: void
    signature: 'pub fn register_pcloud_service(registry: &opendal_core::OperatorRegistry)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::debug_struct
      Src: /src/opendal/core/services/pcloud/src/backend.rs:47,1
    - Dst: field
      Src: /src/opendal/core/services/pcloud/src/backend.rs:47,1
    - Dst: finish_non_exhaustive
      Src: /src/opendal/core/services/pcloud/src/backend.rs:47,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - f
    argTypes:
    - '&mut std::fmt::Formatter<''_>'
    constantsTouched: []
    func_position:
      end: 50
      start: 46
    functionDepth: 5
    functionLinenumber: 46
    functionLinenumberEnd: 50
    functionName: PcloudBuilder::fmt
    functionSourceFile: /src/opendal/core/services/pcloud/src/backend.rs
    functionUses: 0
    functionsReached:
    - field
    - Result::debug_struct
    - finish_non_exhaustive
    linkageType: ''
    returnType: std::fmt::Result
    signature: 'fn fmt(&self, f: &mut std::fmt::Formatter<''_>) -> std::fmt::Result'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::is_empty
      Src: /src/opendal/core/services/pcloud/src/backend.rs:58,1
    - Dst: Some
      Src: /src/opendal/core/services/pcloud/src/backend.rs:61,1
    - Dst: Result::to_string
      Src: /src/opendal/core/services/pcloud/src/backend.rs:61,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - root
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 65
      start: 57
    functionDepth: 4
    functionLinenumber: 57
    functionLinenumberEnd: 65
    functionName: PcloudBuilder::root
    functionSourceFile: /src/opendal/core/services/pcloud/src/backend.rs
    functionUses: 0
    functionsReached:
    - Result::is_empty
    - Result::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn root(mut self, root: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self::to_string
      Src: /src/opendal/core/services/pcloud/src/backend.rs:73,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - endpoint
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 76
      start: 72
    functionDepth: 2
    functionLinenumber: 72
    functionLinenumberEnd: 76
    functionName: PcloudBuilder::endpoint
    functionSourceFile: /src/opendal/core/services/pcloud/src/backend.rs
    functionUses: 0
    functionsReached:
    - Self::to_string
    linkageType: ''
    returnType: Self
    signature: 'pub fn endpoint(mut self, endpoint: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Option::is_empty
      Src: /src/opendal/core/services/pcloud/src/backend.rs:82,1
    - Dst: Some
      Src: /src/opendal/core/services/pcloud/src/backend.rs:85,1
    - Dst: Option::to_string
      Src: /src/opendal/core/services/pcloud/src/backend.rs:85,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - username
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 89
      start: 81
    functionDepth: 4
    functionLinenumber: 81
    functionLinenumberEnd: 89
    functionName: PcloudBuilder::username
    functionSourceFile: /src/opendal/core/services/pcloud/src/backend.rs
    functionUses: 0
    functionsReached:
    - Option::to_string
    - Option::is_empty
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn username(mut self, username: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Option::is_empty
      Src: /src/opendal/core/services/pcloud/src/backend.rs:95,1
    - Dst: Some
      Src: /src/opendal/core/services/pcloud/src/backend.rs:98,1
    - Dst: Option::to_string
      Src: /src/opendal/core/services/pcloud/src/backend.rs:98,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - password
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 102
      start: 94
    functionDepth: 4
    functionLinenumber: 94
    functionLinenumberEnd: 102
    functionName: PcloudBuilder::password
    functionSourceFile: /src/opendal/core/services/pcloud/src/backend.rs
    functionUses: 0
    functionsReached:
    - Option::to_string
    - Option::is_empty
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn password(mut self, password: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: normalize_root
      Src: /src/opendal/core/services/pcloud/src/backend.rs:112,1
    - Dst: clone
      Src: /src/opendal/core/services/pcloud/src/backend.rs:112,1
    - Dst: unwrap_or_default
      Src: /src/opendal/core/services/pcloud/src/backend.rs:112,1
    - Dst: is_empty
      Src: /src/opendal/core/services/pcloud/src/backend.rs:116,1
    - Dst: Err
      Src: /src/opendal/core/services/pcloud/src/backend.rs:117,1
    - Dst: Error::new
      Src: /src/opendal/core/services/pcloud/src/backend.rs:117,1
    - Dst: Self::with_operation
      Src: /src/opendal/core/services/pcloud/src/backend.rs:117,1
    - Dst: Self::with_context
      Src: /src/opendal/core/services/pcloud/src/backend.rs:117,1
    - Dst: Ok
      Src: /src/opendal/core/services/pcloud/src/backend.rs:125,1
    - Dst: Option::clone
      Src: /src/opendal/core/services/pcloud/src/backend.rs:125,1
    - Dst: Err
      Src: /src/opendal/core/services/pcloud/src/backend.rs:126,1
    - Dst: Error::new
      Src: /src/opendal/core/services/pcloud/src/backend.rs:126,1
    - Dst: Self::with_operation
      Src: /src/opendal/core/services/pcloud/src/backend.rs:126,1
    - Dst: Self::with_context
      Src: /src/opendal/core/services/pcloud/src/backend.rs:126,1
    - Dst: Ok
      Src: /src/opendal/core/services/pcloud/src/backend.rs:132,1
    - Dst: Option::clone
      Src: /src/opendal/core/services/pcloud/src/backend.rs:132,1
    - Dst: Err
      Src: /src/opendal/core/services/pcloud/src/backend.rs:133,1
    - Dst: Error::new
      Src: /src/opendal/core/services/pcloud/src/backend.rs:133,1
    - Dst: Self::with_operation
      Src: /src/opendal/core/services/pcloud/src/backend.rs:133,1
    - Dst: Self::with_context
      Src: /src/opendal/core/services/pcloud/src/backend.rs:133,1
    - Dst: Ok
      Src: /src/opendal/core/services/pcloud/src/backend.rs:138,1
    - Dst: Arc::new
      Src: /src/opendal/core/services/pcloud/src/backend.rs:139,1
    - Dst: ServiceInfo::new
      Src: /src/opendal/core/services/pcloud/src/backend.rs:140,1
    - Dst: Default::default
      Src: /src/opendal/core/services/pcloud/src/backend.rs:159,1
    - Dst: clone
      Src: /src/opendal/core/services/pcloud/src/backend.rs:162,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 65
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 167
      start: 109
    functionDepth: 34
    functionLinenumber: 109
    functionLinenumberEnd: 167
    functionName: PcloudBuilder::build
    functionSourceFile: /src/opendal/core/services/pcloud/src/backend.rs
    functionUses: 0
    functionsReached:
    - ServiceInfo::new
    - Ok
    - Arc::new
    - Default::default
    - Option::clone
    - clone
    - normalize_root
    - Err
    - is_empty
    - Error::new
    - Self::with_operation
    - Self::with_context
    - unwrap_or_default
    linkageType: ''
    returnType: Result
    signature: fn build(self) -> Result<impl Service>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: clone
      Src: /src/opendal/core/services/pcloud/src/backend.rs:184,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 185
      start: 183
    functionDepth: 2
    functionLinenumber: 183
    functionLinenumberEnd: 185
    functionName: PcloudBackend::info
    functionSourceFile: /src/opendal/core/services/pcloud/src/backend.rs
    functionUses: 0
    functionsReached:
    - clone
    linkageType: ''
    returnType: ServiceInfo
    signature: fn info(&self) -> ServiceInfo
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 189
      start: 187
    functionDepth: 0
    functionLinenumber: 187
    functionLinenumberEnd: 189
    functionName: PcloudBackend::capability
    functionSourceFile: /src/opendal/core/services/pcloud/src/backend.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Capability
    signature: fn capability(&self) -> Capability
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: ensure_dir_exists
      Src: /src/opendal/core/services/pcloud/src/backend.rs:197,1
    - Dst: Ok
      Src: /src/opendal/core/services/pcloud/src/backend.rs:198,1
    - Dst: RpCreateDir::default
      Src: /src/opendal/core/services/pcloud/src/backend.rs:198,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 3
    argNames:
    - ctx
    - path
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpCreateDir
    constantsTouched: []
    func_position:
      end: 199
      start: 191
    functionDepth: 34
    functionLinenumber: 191
    functionLinenumberEnd: 199
    functionName: PcloudBackend::create_dir
    functionSourceFile: /src/opendal/core/services/pcloud/src/backend.rs
    functionUses: 0
    functionsReached:
    - RpCreateDir::default
    - Ok
    - ensure_dir_exists
    linkageType: ''
    returnType: Result
    signature: 'async fn create_dir(&self,ctx: &OperationContext,path: &str,_: OpCreateDir,)
      -> Result<RpCreateDir>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: stat
      Src: /src/opendal/core/services/pcloud/src/backend.rs:202,1
    - Dst: status
      Src: /src/opendal/core/services/pcloud/src/backend.rs:204,1
    - Dst: into_body
      Src: /src/opendal/core/services/pcloud/src/backend.rs:208,1
    - Dst: serde_json::from_reader
      Src: /src/opendal/core/services/pcloud/src/backend.rs:210,1
    - Dst: Result::reader
      Src: /src/opendal/core/services/pcloud/src/backend.rs:210,1
    - Dst: map_err
      Src: /src/opendal/core/services/pcloud/src/backend.rs:210,1
    - Dst: Err
      Src: /src/opendal/core/services/pcloud/src/backend.rs:213,1
    - Dst: Error::new
      Src: /src/opendal/core/services/pcloud/src/backend.rs:213,1
    - Dst: Err
      Src: /src/opendal/core/services/pcloud/src/backend.rs:216,1
    - Dst: Error::new
      Src: /src/opendal/core/services/pcloud/src/backend.rs:216,1
    - Dst: parse_stat_metadata
      Src: /src/opendal/core/services/pcloud/src/backend.rs:220,1
    - Dst: storage::Result::map
      Src: /src/opendal/core/services/pcloud/src/backend.rs:221,1
    - Dst: Err
      Src: /src/opendal/core/services/pcloud/src/backend.rs:224,1
    - Dst: Error::new
      Src: /src/opendal/core/services/pcloud/src/backend.rs:224,1
    - Dst: Err
      Src: /src/opendal/core/services/pcloud/src/backend.rs:226,1
    - Dst: super::core::parse_error
      Src: /src/opendal/core/services/pcloud/src/backend.rs:226,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 48
    argCount: 3
    argNames:
    - ctx
    - path
    - _args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpStat
    constantsTouched: []
    func_position:
      end: 228
      start: 201
    functionDepth: 31
    functionLinenumber: 201
    functionLinenumberEnd: 228
    functionName: PcloudBackend::stat
    functionSourceFile: /src/opendal/core/services/pcloud/src/backend.rs
    functionUses: 0
    functionsReached:
    - map_err
    - status
    - storage::Result::map
    - serde_json::from_reader
    - into_body
    - Err
    - Error::new
    - Result::reader
    - super::core::parse_error
    - parse_stat_metadata
    - stat
    linkageType: ''
    returnType: Result
    signature: 'async fn stat(&self, ctx: &OperationContext, path: &str, _args: OpStat)
      -> Result<RpStat>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/core/services/pcloud/src/backend.rs:231,1
    - Dst: oio::StreamReader::new
      Src: /src/opendal/core/services/pcloud/src/backend.rs:231,1
    - Dst: PcloudReader::new
      Src: /src/opendal/core/services/pcloud/src/backend.rs:231,1
    - Dst: PcloudBackend::clone
      Src: /src/opendal/core/services/pcloud/src/backend.rs:232,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/pcloud/src/backend.rs:233,1
    - Dst: Ok
      Src: /src/opendal/core/services/pcloud/src/backend.rs:239,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpRead
    constantsTouched: []
    func_position:
      end: 240
      start: 229
    functionDepth: 3
    functionLinenumber: 229
    functionLinenumberEnd: 240
    functionName: PcloudBackend::read
    functionSourceFile: /src/opendal/core/services/pcloud/src/backend.rs
    functionUses: 0
    functionsReached:
    - Result::clone
    - Ok
    - oio::StreamReader::new
    - PcloudReader::new
    - PcloudBackend::clone
    linkageType: ''
    returnType: Result
    signature: 'fn read(&self, ctx: &OperationContext, path: &str, args: OpRead) ->
      Result<Self::Reader>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: PcloudWriter::new
      Src: /src/opendal/core/services/pcloud/src/backend.rs:244,1
    - Dst: clone
      Src: /src/opendal/core/services/pcloud/src/backend.rs:244,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/pcloud/src/backend.rs:244,1
    - Dst: to_string
      Src: /src/opendal/core/services/pcloud/src/backend.rs:244,1
    - Dst: oio::OneShotWriter::new
      Src: /src/opendal/core/services/pcloud/src/backend.rs:246,1
    - Dst: Ok
      Src: /src/opendal/core/services/pcloud/src/backend.rs:248,1
    - Dst: Ok
      Src: /src/opendal/core/services/pcloud/src/backend.rs:251,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 3
    argNames:
    - ctx
    - path
    - _args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpWrite
    constantsTouched: []
    func_position:
      end: 252
      start: 242
    functionDepth: 2
    functionLinenumber: 242
    functionLinenumberEnd: 252
    functionName: PcloudBackend::write
    functionSourceFile: /src/opendal/core/services/pcloud/src/backend.rs
    functionUses: 0
    functionsReached:
    - Result::clone
    - to_string
    - Ok
    - PcloudWriter::new
    - oio::OneShotWriter::new
    - clone
    linkageType: ''
    returnType: Result
    signature: 'fn write(&self, ctx: &OperationContext, path: &str, _args: OpWrite)
      -> Result<Self::Writer>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/core/services/pcloud/src/backend.rs:256,1
    - Dst: oio::OneShotDeleter::new
      Src: /src/opendal/core/services/pcloud/src/backend.rs:256,1
    - Dst: PcloudDeleter::new
      Src: /src/opendal/core/services/pcloud/src/backend.rs:256,1
    - Dst: clone
      Src: /src/opendal/core/services/pcloud/src/backend.rs:257,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/pcloud/src/backend.rs:258,1
    - Dst: Ok
      Src: /src/opendal/core/services/pcloud/src/backend.rs:262,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - '&OperationContext'
    constantsTouched: []
    func_position:
      end: 263
      start: 254
    functionDepth: 2
    functionLinenumber: 254
    functionLinenumberEnd: 263
    functionName: PcloudBackend::delete
    functionSourceFile: /src/opendal/core/services/pcloud/src/backend.rs
    functionUses: 0
    functionsReached:
    - oio::OneShotDeleter::new
    - Result::clone
    - Ok
    - PcloudDeleter::new
    - clone
    linkageType: ''
    returnType: Result
    signature: 'fn delete(&self, ctx: &OperationContext) -> Result<Self::Deleter>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: PcloudLister::new
      Src: /src/opendal/core/services/pcloud/src/backend.rs:267,1
    - Dst: clone
      Src: /src/opendal/core/services/pcloud/src/backend.rs:267,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/pcloud/src/backend.rs:267,1
    - Dst: Ok
      Src: /src/opendal/core/services/pcloud/src/backend.rs:268,1
    - Dst: oio::PageLister::new
      Src: /src/opendal/core/services/pcloud/src/backend.rs:268,1
    - Dst: Ok
      Src: /src/opendal/core/services/pcloud/src/backend.rs:271,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 3
    argNames:
    - ctx
    - path
    - _args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpList
    constantsTouched: []
    func_position:
      end: 272
      start: 265
    functionDepth: 3
    functionLinenumber: 265
    functionLinenumberEnd: 272
    functionName: PcloudBackend::list
    functionSourceFile: /src/opendal/core/services/pcloud/src/backend.rs
    functionUses: 0
    functionsReached:
    - Result::clone
    - Ok
    - PcloudLister::new
    - clone
    - oio::PageLister::new
    linkageType: ''
    returnType: Result
    signature: 'fn list(&self, ctx: &OperationContext, path: &str, _args: OpList)
      -> Result<Self::Lister>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: clone
      Src: /src/opendal/core/services/pcloud/src/backend.rs:282,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/pcloud/src/backend.rs:283,1
    - Dst: Result::to_string
      Src: /src/opendal/core/services/pcloud/src/backend.rs:284,1
    - Dst: Result::to_string
      Src: /src/opendal/core/services/pcloud/src/backend.rs:285,1
    - Dst: Ok
      Src: /src/opendal/core/services/pcloud/src/backend.rs:287,1
    - Dst: oio::OneShotCopier::new
      Src: /src/opendal/core/services/pcloud/src/backend.rs:287,1
    - Dst: CompfsCore::ensure_dir_exists
      Src: /src/opendal/core/services/pcloud/src/backend.rs:288,1
    - Dst: Result::ends_with
      Src: /src/opendal/core/services/pcloud/src/backend.rs:290,1
    - Dst: CompfsCore::copy_folder
      Src: /src/opendal/core/services/pcloud/src/backend.rs:291,1
    - Dst: CompfsCore::copy_file
      Src: /src/opendal/core/services/pcloud/src/backend.rs:293,1
    - Dst: status
      Src: /src/opendal/core/services/pcloud/src/backend.rs:296,1
    - Dst: into_body
      Src: /src/opendal/core/services/pcloud/src/backend.rs:300,1
    - Dst: serde_json::from_reader
      Src: /src/opendal/core/services/pcloud/src/backend.rs:302,1
    - Dst: Result::reader
      Src: /src/opendal/core/services/pcloud/src/backend.rs:302,1
    - Dst: map_err
      Src: /src/opendal/core/services/pcloud/src/backend.rs:302,1
    - Dst: Err
      Src: /src/opendal/core/services/pcloud/src/backend.rs:305,1
    - Dst: Error::new
      Src: /src/opendal/core/services/pcloud/src/backend.rs:305,1
    - Dst: Err
      Src: /src/opendal/core/services/pcloud/src/backend.rs:307,1
    - Dst: Error::new
      Src: /src/opendal/core/services/pcloud/src/backend.rs:307,1
    - Dst: Ok
      Src: /src/opendal/core/services/pcloud/src/backend.rs:309,1
    - Dst: Metadata::default
      Src: /src/opendal/core/services/pcloud/src/backend.rs:309,1
    - Dst: Err
      Src: /src/opendal/core/services/pcloud/src/backend.rs:312,1
    - Dst: super::core::parse_error
      Src: /src/opendal/core/services/pcloud/src/backend.rs:312,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 67
    argCount: 5
    argNames:
    - ctx
    - from
    - to
    - _args
    - _opts
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    - OpCopy
    - OpCopier
    constantsTouched: []
    func_position:
      end: 315
      start: 274
    functionDepth: 34
    functionLinenumber: 274
    functionLinenumberEnd: 315
    functionName: PcloudBackend::copy
    functionSourceFile: /src/opendal/core/services/pcloud/src/backend.rs
    functionUses: 0
    functionsReached:
    - Result::clone
    - map_err
    - Metadata::default
    - Result::to_string
    - Ok
    - Result::ends_with
    - status
    - serde_json::from_reader
    - into_body
    - clone
    - Err
    - Error::new
    - CompfsCore::copy_file
    - Result::reader
    - super::core::parse_error
    - oio::OneShotCopier::new
    - CompfsCore::ensure_dir_exists
    - CompfsCore::copy_folder
    linkageType: ''
    returnType: Result
    signature: 'fn copy(&self,ctx: &OperationContext,from: &str,to: &str,_args: OpCopy,_opts:
      OpCopier,) -> Result<Self::Copier>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: ensure_dir_exists
      Src: /src/opendal/core/services/pcloud/src/backend.rs:324,1
    - Dst: Result::ends_with
      Src: /src/opendal/core/services/pcloud/src/backend.rs:326,1
    - Dst: rename_folder
      Src: /src/opendal/core/services/pcloud/src/backend.rs:327,1
    - Dst: rename_file
      Src: /src/opendal/core/services/pcloud/src/backend.rs:329,1
    - Dst: status
      Src: /src/opendal/core/services/pcloud/src/backend.rs:332,1
    - Dst: into_body
      Src: /src/opendal/core/services/pcloud/src/backend.rs:336,1
    - Dst: serde_json::from_reader
      Src: /src/opendal/core/services/pcloud/src/backend.rs:338,1
    - Dst: Result::reader
      Src: /src/opendal/core/services/pcloud/src/backend.rs:338,1
    - Dst: map_err
      Src: /src/opendal/core/services/pcloud/src/backend.rs:338,1
    - Dst: Err
      Src: /src/opendal/core/services/pcloud/src/backend.rs:341,1
    - Dst: Error::new
      Src: /src/opendal/core/services/pcloud/src/backend.rs:341,1
    - Dst: Err
      Src: /src/opendal/core/services/pcloud/src/backend.rs:344,1
    - Dst: Error::new
      Src: /src/opendal/core/services/pcloud/src/backend.rs:344,1
    - Dst: Ok
      Src: /src/opendal/core/services/pcloud/src/backend.rs:347,1
    - Dst: RpRename::default
      Src: /src/opendal/core/services/pcloud/src/backend.rs:347,1
    - Dst: Err
      Src: /src/opendal/core/services/pcloud/src/backend.rs:349,1
    - Dst: super::core::parse_error
      Src: /src/opendal/core/services/pcloud/src/backend.rs:349,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 56
    argCount: 4
    argNames:
    - ctx
    - from
    - to
    - _args
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    - OpRename
    constantsTouched: []
    func_position:
      end: 351
      start: 317
    functionDepth: 34
    functionLinenumber: 317
    functionLinenumberEnd: 351
    functionName: PcloudBackend::rename
    functionSourceFile: /src/opendal/core/services/pcloud/src/backend.rs
    functionUses: 0
    functionsReached:
    - map_err
    - status
    - Ok
    - Result::ends_with
    - serde_json::from_reader
    - rename_folder
    - into_body
    - Err
    - Error::new
    - RpRename::default
    - Result::reader
    - super::core::parse_error
    - ensure_dir_exists
    - rename_file
    linkageType: ''
    returnType: Result
    signature: 'async fn rename(&self,ctx: &OperationContext,from: &str,to: &str,_args:
      OpRename,) -> Result<RpRename>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/core/services/pcloud/src/backend.rs:359,1
    - Dst: Error::new
      Src: /src/opendal/core/services/pcloud/src/backend.rs:359,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - _ctx
    - _path
    - _args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpPresign
    constantsTouched: []
    func_position:
      end: 363
      start: 353
    functionDepth: 36
    functionLinenumber: 353
    functionLinenumberEnd: 363
    functionName: PcloudBackend::presign
    functionSourceFile: /src/opendal/core/services/pcloud/src/backend.rs
    functionUses: 0
    functionsReached:
    - Error::new
    - Err
    linkageType: ''
    returnType: Result
    signature: 'async fn presign(&self,_ctx: &OperationContext,_path: &str,_args:
      OpPresign,) -> Result<RpPresign>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::debug_struct
      Src: /src/opendal/core/services/azblob/src/config.rs:91,1
    - Dst: field
      Src: /src/opendal/core/services/azblob/src/config.rs:91,1
    - Dst: field
      Src: /src/opendal/core/services/azblob/src/config.rs:91,1
    - Dst: field
      Src: /src/opendal/core/services/azblob/src/config.rs:91,1
    - Dst: finish_non_exhaustive
      Src: /src/opendal/core/services/azblob/src/config.rs:91,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 16
    argCount: 1
    argNames:
    - f
    argTypes:
    - '&mut std::fmt::Formatter<''_>'
    constantsTouched: []
    func_position:
      end: 96
      start: 90
    functionDepth: 5
    functionLinenumber: 90
    functionLinenumberEnd: 96
    functionName: AzblobConfig::fmt
    functionSourceFile: /src/opendal/core/services/azblob/src/config.rs
    functionUses: 0
    functionsReached:
    - field
    - Result::debug_struct
    - finish_non_exhaustive
    linkageType: ''
    returnType: std::fmt::Result
    signature: 'fn fmt(&self, f: &mut std::fmt::Formatter<''_>) -> std::fmt::Result'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::options
      Src: /src/opendal/core/services/azblob/src/config.rs:103,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/azblob/src/config.rs:103,1
    - Dst: Result::name
      Src: /src/opendal/core/services/azblob/src/config.rs:105,1
    - Dst: Result::insert
      Src: /src/opendal/core/services/azblob/src/config.rs:106,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/azblob/src/config.rs:106,1
    - Dst: to_string
      Src: /src/opendal/core/services/azblob/src/config.rs:106,1
    - Dst: Result::root
      Src: /src/opendal/core/services/azblob/src/config.rs:109,1
    - Dst: Result::insert
      Src: /src/opendal/core/services/azblob/src/config.rs:110,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/azblob/src/config.rs:110,1
    - Dst: Result::to_string
      Src: /src/opendal/core/services/azblob/src/config.rs:110,1
    - Dst: Self::from_iter
      Src: /src/opendal/core/services/azblob/src/config.rs:113,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 27
    argCount: 1
    argNames:
    - uri
    argTypes:
    - '&opendal_core::OperatorUri'
    constantsTouched: []
    func_position:
      end: 114
      start: 102
    functionDepth: 35
    functionLinenumber: 102
    functionLinenumberEnd: 114
    functionName: AzblobConfig::from_uri
    functionSourceFile: /src/opendal/core/services/azblob/src/config.rs
    functionUses: 2
    functionsReached:
    - Result::clone
    - to_string
    - Self::from_iter
    - Result::to_string
    - Result::insert
    - Result::name
    - '&str::to_string'
    - Result::root
    - Result::options
    linkageType: ''
    returnType: opendal_core::Result
    signature: 'fn from_uri(uri: &opendal_core::OperatorUri) -> opendal_core::Result<Self>'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 119
      start: 117
    functionDepth: 0
    functionLinenumber: 117
    functionLinenumberEnd: 119
    functionName: AzblobConfig::into_builder
    functionSourceFile: /src/opendal/core/services/azblob/src/config.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Self::Builder
    signature: fn into_builder(self) -> Self::Builder
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: serde_json::from_str
      Src: /src/opendal/core/services/azblob/src/config.rs:131,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/services/azblob/src/config.rs:131,1
    - Dst: serde_json::from_str
      Src: /src/opendal/core/services/azblob/src/config.rs:135,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/services/azblob/src/config.rs:135,1
    - Dst: serde_json::from_str
      Src: /src/opendal/core/services/azblob/src/config.rs:139,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/services/azblob/src/config.rs:139,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 141
      start: 129
    functionDepth: 34
    functionLinenumber: 129
    functionLinenumberEnd: 141
    functionName: tests::test_container_name_aliases
    functionSourceFile: /src/opendal/core/services/azblob/src/config.rs
    functionUses: 0
    functionsReached:
    - Result::unwrap
    - serde_json::from_str
    linkageType: ''
    returnType: void
    signature: fn test_container_name_aliases()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: serde_json::from_str
      Src: /src/opendal/core/services/azblob/src/config.rs:146,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/services/azblob/src/config.rs:146,1
    - Dst: serde_json::from_str
      Src: /src/opendal/core/services/azblob/src/config.rs:150,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/services/azblob/src/config.rs:150,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 152
      start: 144
    functionDepth: 34
    functionLinenumber: 144
    functionLinenumberEnd: 152
    functionName: tests::test_account_name_aliases
    functionSourceFile: /src/opendal/core/services/azblob/src/config.rs
    functionUses: 0
    functionsReached:
    - Result::unwrap
    - serde_json::from_str
    linkageType: ''
    returnType: void
    signature: fn test_account_name_aliases()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: serde_json::from_str
      Src: /src/opendal/core/services/azblob/src/config.rs:157,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/services/azblob/src/config.rs:157,1
    - Dst: serde_json::from_str
      Src: /src/opendal/core/services/azblob/src/config.rs:161,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/services/azblob/src/config.rs:161,1
    - Dst: serde_json::from_str
      Src: /src/opendal/core/services/azblob/src/config.rs:165,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/services/azblob/src/config.rs:165,1
    - Dst: serde_json::from_str
      Src: /src/opendal/core/services/azblob/src/config.rs:169,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/services/azblob/src/config.rs:169,1
    - Dst: serde_json::from_str
      Src: /src/opendal/core/services/azblob/src/config.rs:173,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/services/azblob/src/config.rs:173,1
    - Dst: serde_json::from_str
      Src: /src/opendal/core/services/azblob/src/config.rs:177,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/services/azblob/src/config.rs:177,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 24
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 179
      start: 155
    functionDepth: 34
    functionLinenumber: 155
    functionLinenumberEnd: 179
    functionName: tests::test_account_key_aliases
    functionSourceFile: /src/opendal/core/services/azblob/src/config.rs
    functionUses: 0
    functionsReached:
    - Result::unwrap
    - serde_json::from_str
    linkageType: ''
    returnType: void
    signature: fn test_account_key_aliases()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: serde_json::from_str
      Src: /src/opendal/core/services/azblob/src/config.rs:184,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/services/azblob/src/config.rs:184,1
    - Dst: serde_json::from_str
      Src: /src/opendal/core/services/azblob/src/config.rs:188,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/services/azblob/src/config.rs:188,1
    - Dst: serde_json::from_str
      Src: /src/opendal/core/services/azblob/src/config.rs:192,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/services/azblob/src/config.rs:192,1
    - Dst: serde_json::from_str
      Src: /src/opendal/core/services/azblob/src/config.rs:196,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/services/azblob/src/config.rs:196,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 16
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 198
      start: 182
    functionDepth: 34
    functionLinenumber: 182
    functionLinenumberEnd: 198
    functionName: tests::test_sas_token_aliases
    functionSourceFile: /src/opendal/core/services/azblob/src/config.rs
    functionUses: 0
    functionsReached:
    - Result::unwrap
    - serde_json::from_str
    linkageType: ''
    returnType: void
    signature: fn test_sas_token_aliases()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: serde_json::from_str
      Src: /src/opendal/core/services/azblob/src/config.rs:203,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/services/azblob/src/config.rs:203,1
    - Dst: serde_json::from_str
      Src: /src/opendal/core/services/azblob/src/config.rs:210,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/services/azblob/src/config.rs:210,1
    - Dst: serde_json::from_str
      Src: /src/opendal/core/services/azblob/src/config.rs:218,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/services/azblob/src/config.rs:218,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 223
      start: 201
    functionDepth: 34
    functionLinenumber: 201
    functionLinenumberEnd: 223
    functionName: tests::test_endpoint_aliases
    functionSourceFile: /src/opendal/core/services/azblob/src/config.rs
    functionUses: 0
    functionsReached:
    - Result::unwrap
    - serde_json::from_str
    linkageType: ''
    returnType: void
    signature: fn test_endpoint_aliases()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: OperatorUri::new
      Src: /src/opendal/core/services/azblob/src/config.rs:227,1
    - Dst: Vec::<(String, String)>::new
      Src: /src/opendal/core/services/azblob/src/config.rs:229,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/services/azblob/src/config.rs:227,1
    - Dst: AzblobConfig::from_uri
      Src: /src/opendal/core/services/azblob/src/config.rs:232,1
    - Dst: opendal_core::Result::unwrap
      Src: /src/opendal/core/services/azblob/src/config.rs:232,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 235
      start: 226
    functionDepth: 29
    functionLinenumber: 226
    functionLinenumberEnd: 235
    functionName: tests::from_uri_with_host_container
    functionSourceFile: /src/opendal/core/services/azblob/src/config.rs
    functionUses: 0
    functionsReached:
    - AzblobConfig::from_uri
    - Vec::<(String, String)>::new
    - OperatorUri::new
    - Result::unwrap
    - opendal_core::Result::unwrap
    linkageType: ''
    returnType: void
    signature: fn from_uri_with_host_container()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: OperatorUri::new
      Src: /src/opendal/core/services/azblob/src/config.rs:239,1
    - Dst: Vec::<(String, String)>::new
      Src: /src/opendal/core/services/azblob/src/config.rs:241,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/services/azblob/src/config.rs:239,1
    - Dst: AzblobConfig::from_uri
      Src: /src/opendal/core/services/azblob/src/config.rs:244,1
    - Dst: opendal_core::Result::unwrap
      Src: /src/opendal/core/services/azblob/src/config.rs:244,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 247
      start: 238
    functionDepth: 29
    functionLinenumber: 238
    functionLinenumberEnd: 247
    functionName: tests::from_uri_with_path_container
    functionSourceFile: /src/opendal/core/services/azblob/src/config.rs
    functionUses: 0
    functionsReached:
    - AzblobConfig::from_uri
    - Vec::<(String, String)>::new
    - OperatorUri::new
    - Result::unwrap
    - opendal_core::Result::unwrap
    linkageType: ''
    returnType: void
    signature: fn from_uri_with_path_container()
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - core
    - ctx
    argTypes:
    - Arc<AzblobCore>
    - OperationContext
    constantsTouched: []
    func_position:
      end: 36
      start: 34
    functionDepth: 0
    functionLinenumber: 34
    functionLinenumberEnd: 36
    functionName: AzblobDeleter::new
    functionSourceFile: /src/opendal/core/services/azblob/src/deleter.rs
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(core: Arc<AzblobCore>, ctx: OperationContext) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: azblob_delete_blob
      Src: /src/opendal/core/services/azblob/src/deleter.rs:41,1
    - Dst: status
      Src: /src/opendal/core/services/azblob/src/deleter.rs:43,1
    - Dst: Ok
      Src: /src/opendal/core/services/azblob/src/deleter.rs:46,1
    - Dst: Err
      Src: /src/opendal/core/services/azblob/src/deleter.rs:47,1
    - Dst: super::core::parse_error
      Src: /src/opendal/core/services/azblob/src/deleter.rs:47,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 2
    argNames:
    - path
    argTypes:
    - String
    - OpDelete
    constantsTouched: []
    func_position:
      end: 49
      start: 40
    functionDepth: 34
    functionLinenumber: 40
    functionLinenumberEnd: 49
    functionName: AzblobDeleter::delete_once
    functionSourceFile: /src/opendal/core/services/azblob/src/deleter.rs
    functionUses: 0
    functionsReached:
    - status
    - Ok
    - azblob_delete_blob
    - Err
    - super::core::parse_error
    linkageType: ''
    returnType: Result
    signature: 'async fn delete_once(&self, path: String, _: OpDelete) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::into_iter
      Src: /src/opendal/core/services/azblob/src/deleter.rs:53,1
    - Dst: map
      Src: /src/opendal/core/services/azblob/src/deleter.rs:53,1
    - Dst: into_iter().map(|(p, _)| p).collect::<Vec<_>>
      Src: /src/opendal/core/services/azblob/src/deleter.rs:53,1
    - Dst: azblob_batch_delete
      Src: /src/opendal/core/services/azblob/src/deleter.rs:56,1
    - Dst: status
      Src: /src/opendal/core/services/azblob/src/deleter.rs:59,1
    - Dst: Err
      Src: /src/opendal/core/services/azblob/src/deleter.rs:60,1
    - Dst: super::core::parse_error
      Src: /src/opendal/core/services/azblob/src/deleter.rs:60,1
    - Dst: parse_multipart_boundary
      Src: /src/opendal/core/services/azblob/src/deleter.rs:64,1
    - Dst: headers
      Src: /src/opendal/core/services/azblob/src/deleter.rs:64,1
    - Dst: ok_or_else
      Src: /src/opendal/core/services/azblob/src/deleter.rs:64,1
    - Dst: Error::new
      Src: /src/opendal/core/services/azblob/src/deleter.rs:66,1
    - Dst: to_string
      Src: /src/opendal/core/services/azblob/src/deleter.rs:64,1
    - Dst: into_body
      Src: /src/opendal/core/services/azblob/src/deleter.rs:73,1
    - Dst: to_bytes
      Src: /src/opendal/core/services/azblob/src/deleter.rs:73,1
    - Dst: Multipart::new
      Src: /src/opendal/core/services/azblob/src/deleter.rs:75,1
    - Dst: Self::with_boundary
      Src: /src/opendal/core/services/azblob/src/deleter.rs:75,1
    - Dst: Self::parse
      Src: /src/opendal/core/services/azblob/src/deleter.rs:75,1
    - Dst: into_parts
      Src: /src/opendal/core/services/azblob/src/deleter.rs:76,1
    - Dst: Result::len
      Src: /src/opendal/core/services/azblob/src/deleter.rs:78,1
    - Dst: (String, Metadata)::len
      Src: /src/opendal/core/services/azblob/src/deleter.rs:78,1
    - Dst: Err
      Src: /src/opendal/core/services/azblob/src/deleter.rs:79,1
    - Dst: Error::new
      Src: /src/opendal/core/services/azblob/src/deleter.rs:79,1
    - Dst: BatchDeleteResult::default
      Src: /src/opendal/core/services/azblob/src/deleter.rs:85,1
    - Dst: (String, Metadata)::into_iter
      Src: /src/opendal/core/services/azblob/src/deleter.rs:87,1
    - Dst: enumerate
      Src: /src/opendal/core/services/azblob/src/deleter.rs:87,1
    - Dst: Self::into_response
      Src: /src/opendal/core/services/azblob/src/deleter.rs:88,1
    - Dst: clone
      Src: /src/opendal/core/services/azblob/src/deleter.rs:89,1
    - Dst: Response::status
      Src: /src/opendal/core/services/azblob/src/deleter.rs:92,1
    - Dst: Response::status
      Src: /src/opendal/core/services/azblob/src/deleter.rs:92,1
    - Dst: push
      Src: /src/opendal/core/services/azblob/src/deleter.rs:93,1
    - Dst: OpDelete::default
      Src: /src/opendal/core/services/azblob/src/deleter.rs:93,1
    - Dst: push
      Src: /src/opendal/core/services/azblob/src/deleter.rs:95,1
    - Dst: OpDelete::default
      Src: /src/opendal/core/services/azblob/src/deleter.rs:97,1
    - Dst: super::core::parse_error
      Src: /src/opendal/core/services/azblob/src/deleter.rs:97,1
    - Dst: is_empty
      Src: /src/opendal/core/services/azblob/src/deleter.rs:102,1
    - Dst: remove
      Src: /src/opendal/core/services/azblob/src/deleter.rs:103,1
    - Dst: Err
      Src: /src/opendal/core/services/azblob/src/deleter.rs:104,1
    - Dst: Ok
      Src: /src/opendal/core/services/azblob/src/deleter.rs:107,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 106
    argCount: 1
    argNames:
    - batch
    argTypes:
    - Vec<(String, OpDelete)>
    constantsTouched: []
    func_position:
      end: 108
      start: 51
    functionDepth: 35
    functionLinenumber: 51
    functionLinenumberEnd: 108
    functionName: AzblobDeleter::delete_batch
    functionSourceFile: /src/opendal/core/services/azblob/src/deleter.rs
    functionUses: 0
    functionsReached:
    - status
    - push
    - remove
    - clone
    - map
    - Result::len
    - BatchDeleteResult::default
    - Self::with_boundary
    - azblob_batch_delete
    - Multipart::new
    - Self::parse
    - Ok
    - headers
    - parse_multipart_boundary
    - OpDelete::default
    - ok_or_else
    - Result::into_iter
    - into_body
    - Response::status
    - is_empty
    - (String, Metadata)::len
    - (String, Metadata)::into_iter
    - enumerate
    - to_bytes
    - super::core::parse_error
    - to_string
    - Err
    - Error::new
    - into_iter().map(|(p, _)| p).collect::<Vec<_>>
    - into_parts
    - Self::into_response
    linkageType: ''
    returnType: Result
    signature: 'async fn delete_batch(&self, batch: Vec<(String, OpDelete)>) -> Result<BatchDeleteResult>'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 5
    argNames:
    - core
    - ctx
    - path
    - recursive
    - limit
    argTypes:
    - Arc<AzblobCore>
    - OperationContext
    - String
    - bool
    - Option<usize>
    constantsTouched: []
    func_position:
      end: 55
      start: 39
    functionDepth: 0
    functionLinenumber: 39
    functionLinenumberEnd: 55
    functionName: AzblobLister::new
    functionSourceFile: /src/opendal/core/services/azblob/src/lister.rs
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(core: Arc<AzblobCore>,ctx: OperationContext,path: String,recursive:
      bool,limit: Option<usize>,) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: azblob_list_blobs
      Src: /src/opendal/core/services/azblob/src/lister.rs:60,1
    - Dst: status
      Src: /src/opendal/core/services/azblob/src/lister.rs:71,1
    - Dst: Err
      Src: /src/opendal/core/services/azblob/src/lister.rs:72,1
    - Dst: super::core::parse_error
      Src: /src/opendal/core/services/azblob/src/lister.rs:72,1
    - Dst: into_body
      Src: /src/opendal/core/services/azblob/src/lister.rs:75,1
    - Dst: de::from_reader
      Src: /src/opendal/core/services/azblob/src/lister.rs:78,1
    - Dst: Result::reader
      Src: /src/opendal/core/services/azblob/src/lister.rs:78,1
    - Dst: map_err
      Src: /src/opendal/core/services/azblob/src/lister.rs:78,1
    - Dst: as_ref
      Src: /src/opendal/core/services/azblob/src/lister.rs:83,1
    - Dst: is_empty
      Src: /src/opendal/core/services/azblob/src/lister.rs:84,1
    - Dst: clone
      Src: /src/opendal/core/services/azblob/src/lister.rs:86,1
    - Dst: unwrap_or_default
      Src: /src/opendal/core/services/azblob/src/lister.rs:86,1
    - Dst: oio::Entry::new
      Src: /src/opendal/core/services/azblob/src/lister.rs:91,1
    - Dst: build_rel_path
      Src: /src/opendal/core/services/azblob/src/lister.rs:92,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/azblob/src/lister.rs:93,1
    - Dst: push_back
      Src: /src/opendal/core/services/azblob/src/lister.rs:96,1
    - Dst: build_rel_path
      Src: /src/opendal/core/services/azblob/src/lister.rs:100,1
    - Dst: is_empty
      Src: /src/opendal/core/services/azblob/src/lister.rs:101,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/azblob/src/lister.rs:102,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/azblob/src/lister.rs:105,1
    - Dst: EntryMode::from_path
      Src: /src/opendal/core/services/azblob/src/lister.rs:105,1
    - Dst: Self::with_etag
      Src: /src/opendal/core/services/azblob/src/lister.rs:105,1
    - Dst: Self::with_content_length
      Src: /src/opendal/core/services/azblob/src/lister.rs:105,1
    - Dst: Self::with_content_md5
      Src: /src/opendal/core/services/azblob/src/lister.rs:105,1
    - Dst: Self::with_content_type
      Src: /src/opendal/core/services/azblob/src/lister.rs:105,1
    - Dst: Result::with_last_modified
      Src: /src/opendal/core/services/azblob/src/lister.rs:105,1
    - Dst: Timestamp::parse_rfc2822
      Src: /src/opendal/core/services/azblob/src/lister.rs:111,1
    - Dst: as_str
      Src: /src/opendal/core/services/azblob/src/lister.rs:112,1
    - Dst: oio::Entry::with
      Src: /src/opendal/core/services/azblob/src/lister.rs:115,1
    - Dst: push_back
      Src: /src/opendal/core/services/azblob/src/lister.rs:116,1
    - Dst: Ok
      Src: /src/opendal/core/services/azblob/src/lister.rs:119,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 114
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - '&mut oio::PageContext'
    constantsTouched: []
    func_position:
      end: 120
      start: 59
    functionDepth: 37
    functionLinenumber: 59
    functionLinenumberEnd: 120
    functionName: AzblobLister::next_page
    functionSourceFile: /src/opendal/core/services/azblob/src/lister.rs
    functionUses: 0
    functionsReached:
    - status
    - clone
    - build_rel_path
    - Result::with_last_modified
    - Result::reader
    - Self::with_etag
    - map_err
    - Ok
    - as_str
    - oio::Entry::with
    - '&str::to_string'
    - unwrap_or_default
    - azblob_list_blobs
    - Metadata::new
    - Timestamp::parse_rfc2822
    - Self::with_content_md5
    - into_body
    - de::from_reader
    - is_empty
    - Self::with_content_type
    - super::core::parse_error
    - oio::Entry::new
    - push_back
    - Self::with_content_length
    - EntryMode::from_path
    - Err
    - as_ref
    linkageType: ''
    returnType: Result
    signature: 'async fn next_page(&self, ctx: &mut oio::PageContext) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: to_string
      Src: /src/opendal/core/services/azblob/src/reader.rs:43,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 4
    argNames:
    - backend
    - ctx
    - path
    - args
    argTypes:
    - AzblobBackend
    - OperationContext
    - '&str'
    - OpRead
    constantsTouched: []
    func_position:
      end: 46
      start: 34
    functionDepth: 2
    functionLinenumber: 34
    functionLinenumberEnd: 46
    functionName: AzblobReader::new
    functionSourceFile: /src/opendal/core/services/azblob/src/reader.rs
    functionUses: 1
    functionsReached:
    - to_string
    linkageType: ''
    returnType: Self
    signature: 'pub(super) fn new(backend: AzblobBackend,ctx: OperationContext,path:
      &str,args: OpRead,) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: as_str
      Src: /src/opendal/core/services/azblob/src/reader.rs:52,1
    - Dst: clone
      Src: /src/opendal/core/services/azblob/src/reader.rs:53,1
    - Dst: azblob_get_blob
      Src: /src/opendal/core/services/azblob/src/reader.rs:54,1
    - Dst: status
      Src: /src/opendal/core/services/azblob/src/reader.rs:59,1
    - Dst: RpRead::new
      Src: /src/opendal/core/services/azblob/src/reader.rs:62,1
    - Dst: parse_into_metadata
      Src: /src/opendal/core/services/azblob/src/reader.rs:62,1
    - Dst: headers
      Src: /src/opendal/core/services/azblob/src/reader.rs:62,1
    - Dst: into_body
      Src: /src/opendal/core/services/azblob/src/reader.rs:63,1
    - Dst: into_parts
      Src: /src/opendal/core/services/azblob/src/reader.rs:66,1
    - Dst: to_buffer
      Src: /src/opendal/core/services/azblob/src/reader.rs:67,1
    - Dst: Err
      Src: /src/opendal/core/services/azblob/src/reader.rs:68,1
    - Dst: super::core::parse_error
      Src: /src/opendal/core/services/azblob/src/reader.rs:68,1
    - Dst: Response::from_parts
      Src: /src/opendal/core/services/azblob/src/reader.rs:68,1
    - Dst: Ok
      Src: /src/opendal/core/services/azblob/src/reader.rs:72,1
    - Dst: Box::new
      Src: /src/opendal/core/services/azblob/src/reader.rs:72,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 42
    argCount: 1
    argNames:
    - range
    argTypes:
    - BytesRange
    constantsTouched: []
    func_position:
      end: 73
      start: 50
    functionDepth: 37
    functionLinenumber: 50
    functionLinenumberEnd: 73
    functionName: AzblobReader::open
    functionSourceFile: /src/opendal/core/services/azblob/src/reader.rs
    functionUses: 0
    functionsReached:
    - azblob_get_blob
    - parse_into_metadata
    - to_buffer
    - status
    - Ok
    - Box::new
    - into_body
    - clone
    - Err
    - Response::from_parts
    - as_str
    - headers
    - into_parts
    - RpRead::new
    - super::core::parse_error
    linkageType: ''
    returnType: Result
    signature: 'async fn open(&self, range: BytesRange) -> Result<(RpRead, Box<dyn
      oio::ReadStreamDyn>)>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::clone
      Src: /src/opendal/core/services/azblob/src/copier.rs:45,1
    - Dst: Result::to_string
      Src: /src/opendal/core/services/azblob/src/copier.rs:46,1
    - Dst: Result::to_string
      Src: /src/opendal/core/services/azblob/src/copier.rs:47,1
    - Dst: object_store::Result::chunk
      Src: /src/opendal/core/services/azblob/src/copier.rs:51,1
    - Dst: Ok
      Src: /src/opendal/core/services/azblob/src/copier.rs:52,1
    - Dst: TwoWays::One
      Src: /src/opendal/core/services/azblob/src/copier.rs:52,1
    - Dst: oio::OneShotCopier::new
      Src: /src/opendal/core/services/azblob/src/copier.rs:52,1
    - Dst: Result::copy_once
      Src: /src/opendal/core/services/azblob/src/copier.rs:53,1
    - Dst: Result::clamp
      Src: /src/opendal/core/services/azblob/src/copier.rs:57,1
    - Dst: Ok
      Src: /src/opendal/core/services/azblob/src/copier.rs:59,1
    - Dst: TwoWays::Two
      Src: /src/opendal/core/services/azblob/src/copier.rs:59,1
    - Dst: oio::BlockCopier::new
      Src: /src/opendal/core/services/azblob/src/copier.rs:59,1
    - Dst: Result::executor
      Src: /src/opendal/core/services/azblob/src/copier.rs:60,1
    - Dst: Self::clone
      Src: /src/opendal/core/services/azblob/src/copier.rs:60,1
    - Dst: object_store::Result::source_content_length_hint
      Src: /src/opendal/core/services/azblob/src/copier.rs:62,1
    - Dst: Self::saturating_sub
      Src: /src/opendal/core/services/azblob/src/copier.rs:63,1
    - Dst: object_store::Result::concurrent
      Src: /src/opendal/core/services/azblob/src/copier.rs:65,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 33
    argCount: 6
    argNames:
    - core
    - ctx
    - from
    - to
    - args
    - opts
    argTypes:
    - Arc<AzblobCore>
    - '&OperationContext'
    - '&str'
    - '&str'
    - OpCopy
    - OpCopier
    constantsTouched: []
    func_position:
      end: 67
      start: 35
    functionDepth: 32
    functionLinenumber: 35
    functionLinenumberEnd: 67
    functionName: new_azblob_copier
    functionSourceFile: /src/opendal/core/services/azblob/src/copier.rs
    functionUses: 1
    functionsReached:
    - Result::clone
    - Result::copy_once
    - Result::to_string
    - Ok
    - object_store::Result::chunk
    - object_store::Result::concurrent
    - Result::executor
    - oio::BlockCopier::new
    - TwoWays::One
    - Self::saturating_sub
    - object_store::Result::source_content_length_hint
    - Self::clone
    - Result::clamp
    - oio::OneShotCopier::new
    - TwoWays::Two
    linkageType: ''
    returnType: Result
    signature: 'pub fn new_azblob_copier(core: Arc<AzblobCore>,ctx: &OperationContext,from:
      &str,to: &str,args: OpCopy,opts: OpCopier,) -> Result<AzblobCopiers>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: OpStat::default
      Src: /src/opendal/core/services/azblob/src/copier.rs:79,1
    - Dst: source_version
      Src: /src/opendal/core/services/azblob/src/copier.rs:80,1
    - Dst: OpStat::with_version
      Src: /src/opendal/core/services/azblob/src/copier.rs:81,1
    - Dst: azblob_get_blob_properties
      Src: /src/opendal/core/services/azblob/src/copier.rs:84,1
    - Dst: status
      Src: /src/opendal/core/services/azblob/src/copier.rs:89,1
    - Dst: headers
      Src: /src/opendal/core/services/azblob/src/copier.rs:91,1
    - Dst: parse_into_metadata
      Src: /src/opendal/core/services/azblob/src/copier.rs:92,1
    - Dst: parse_header_to_str
      Src: /src/opendal/core/services/azblob/src/copier.rs:93,1
    - Dst: Result::set_version
      Src: /src/opendal/core/services/azblob/src/copier.rs:94,1
    - Dst: Ok
      Src: /src/opendal/core/services/azblob/src/copier.rs:96,1
    - Dst: Err
      Src: /src/opendal/core/services/azblob/src/copier.rs:98,1
    - Dst: super::core::parse_error
      Src: /src/opendal/core/services/azblob/src/copier.rs:98,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 40
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 100
      start: 78
    functionDepth: 30
    functionLinenumber: 78
    functionLinenumberEnd: 100
    functionName: AzblobCopier::source_metadata
    functionSourceFile: /src/opendal/core/services/azblob/src/copier.rs
    functionUses: 0
    functionsReached:
    - OpStat::with_version
    - source_version
    - parse_into_metadata
    - status
    - Ok
    - parse_header_to_str
    - Result::set_version
    - Err
    - headers
    - azblob_get_blob_properties
    - super::core::parse_error
    - OpStat::default
    linkageType: ''
    returnType: Result
    signature: async fn source_metadata(&self) -> Result<Metadata>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: azblob_copy_blob
      Src: /src/opendal/core/services/azblob/src/copier.rs:103,1
    - Dst: clone
      Src: /src/opendal/core/services/azblob/src/copier.rs:105,1
    - Dst: status
      Src: /src/opendal/core/services/azblob/src/copier.rs:108,1
    - Dst: AzblobWriter::parse_metadata
      Src: /src/opendal/core/services/azblob/src/copier.rs:109,1
    - Dst: headers
      Src: /src/opendal/core/services/azblob/src/copier.rs:109,1
    - Dst: Err
      Src: /src/opendal/core/services/azblob/src/copier.rs:110,1
    - Dst: super::core::parse_error
      Src: /src/opendal/core/services/azblob/src/copier.rs:110,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 23
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 112
      start: 102
    functionDepth: 31
    functionLinenumber: 102
    functionLinenumberEnd: 112
    functionName: AzblobCopier::copy_once
    functionSourceFile: /src/opendal/core/services/azblob/src/copier.rs
    functionUses: 0
    functionsReached:
    - status
    - clone
    - Err
    - headers
    - AzblobWriter::parse_metadata
    - azblob_copy_blob
    - super::core::parse_error
    linkageType: ''
    returnType: Result
    signature: async fn copy_once(&self) -> Result<Metadata>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: azblob_put_block_from_url
      Src: /src/opendal/core/services/azblob/src/copier.rs:115,1
    - Dst: source_version
      Src: /src/opendal/core/services/azblob/src/copier.rs:121,1
    - Dst: status
      Src: /src/opendal/core/services/azblob/src/copier.rs:127,1
    - Dst: Ok
      Src: /src/opendal/core/services/azblob/src/copier.rs:128,1
    - Dst: Err
      Src: /src/opendal/core/services/azblob/src/copier.rs:129,1
    - Dst: super::core::parse_error
      Src: /src/opendal/core/services/azblob/src/copier.rs:129,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 22
    argCount: 2
    argNames:
    - block_id
    - range
    argTypes:
    - Uuid
    - BytesRange
    constantsTouched: []
    func_position:
      end: 131
      start: 114
    functionDepth: 37
    functionLinenumber: 114
    functionLinenumberEnd: 131
    functionName: AzblobCopier::copy_block
    functionSourceFile: /src/opendal/core/services/azblob/src/copier.rs
    functionUses: 0
    functionsReached:
    - source_version
    - status
    - Ok
    - Err
    - super::core::parse_error
    - azblob_put_block_from_url
    linkageType: ''
    returnType: Result
    signature: 'async fn copy_block(&self, block_id: Uuid, range: BytesRange) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: azblob_complete_copy_block_list
      Src: /src/opendal/core/services/azblob/src/copier.rs:134,1
    - Dst: AzblobWriter::parse_metadata
      Src: /src/opendal/core/services/azblob/src/copier.rs:139,1
    - Dst: headers
      Src: /src/opendal/core/services/azblob/src/copier.rs:139,1
    - Dst: status
      Src: /src/opendal/core/services/azblob/src/copier.rs:140,1
    - Dst: Ok
      Src: /src/opendal/core/services/azblob/src/copier.rs:141,1
    - Dst: Err
      Src: /src/opendal/core/services/azblob/src/copier.rs:142,1
    - Dst: super::core::parse_error
      Src: /src/opendal/core/services/azblob/src/copier.rs:142,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 22
    argCount: 1
    argNames:
    - block_ids
    argTypes:
    - Vec<Uuid>
    constantsTouched: []
    func_position:
      end: 144
      start: 133
    functionDepth: 34
    functionLinenumber: 133
    functionLinenumberEnd: 144
    functionName: AzblobCopier::complete_block
    functionSourceFile: /src/opendal/core/services/azblob/src/copier.rs
    functionUses: 0
    functionsReached:
    - azblob_complete_copy_block_list
    - status
    - Ok
    - Err
    - headers
    - AzblobWriter::parse_metadata
    - super::core::parse_error
    linkageType: ''
    returnType: Result
    signature: 'async fn complete_block(&self, block_ids: Vec<Uuid>) -> Result<Metadata>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/core/services/azblob/src/copier.rs:147,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - _block_ids
    argTypes:
    - Vec<Uuid>
    constantsTouched: []
    func_position:
      end: 148
      start: 146
    functionDepth: 0
    functionLinenumber: 146
    functionLinenumberEnd: 148
    functionName: AzblobCopier::abort_block
    functionSourceFile: /src/opendal/core/services/azblob/src/copier.rs
    functionUses: 0
    functionsReached:
    - Ok
    linkageType: ''
    returnType: Result
    signature: 'async fn abort_block(&self, _block_ids: Vec<Uuid>) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::debug_struct
      Src: /src/opendal/core/services/azblob/src/core.rs:85,1
    - Dst: field
      Src: /src/opendal/core/services/azblob/src/core.rs:85,1
    - Dst: field
      Src: /src/opendal/core/services/azblob/src/core.rs:85,1
    - Dst: field
      Src: /src/opendal/core/services/azblob/src/core.rs:85,1
    - Dst: finish_non_exhaustive
      Src: /src/opendal/core/services/azblob/src/core.rs:85,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 16
    argCount: 1
    argNames:
    - f
    argTypes:
    - '&mut std::fmt::Formatter<''_>'
    constantsTouched: []
    func_position:
      end: 90
      start: 84
    functionDepth: 5
    functionLinenumber: 84
    functionLinenumberEnd: 90
    functionName: AzblobCore::fmt
    functionSourceFile: /src/opendal/core/services/azblob/src/core.rs
    functionUses: 0
    functionsReached:
    - field
    - Result::debug_struct
    - finish_non_exhaustive
    linkageType: ''
    returnType: std::fmt::Result
    signature: 'fn fmt(&self, f: &mut std::fmt::Formatter<''_>) -> std::fmt::Result'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: clone
      Src: /src/opendal/core/services/azblob/src/core.rs:95,1
    - Dst: with_context
      Src: /src/opendal/core/services/azblob/src/core.rs:95,1
    - Dst: Context::new
      Src: /src/opendal/core/services/azblob/src/core.rs:96,1
    - Dst: Self::with_file_read
      Src: /src/opendal/core/services/azblob/src/core.rs:96,1
    - Dst: with_http_send
      Src: /src/opendal/core/services/azblob/src/core.rs:96,1
    - Dst: Result::http_transport
      Src: /src/opendal/core/services/azblob/src/core.rs:98,1
    - Dst: Self::clone
      Src: /src/opendal/core/services/azblob/src/core.rs:98,1
    - Dst: with_env
      Src: /src/opendal/core/services/azblob/src/core.rs:96,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 16
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - '&OperationContext'
    constantsTouched: []
    func_position:
      end: 101
      start: 94
    functionDepth: 6
    functionLinenumber: 94
    functionLinenumberEnd: 101
    functionName: AzblobCore::signer
    functionSourceFile: /src/opendal/core/services/azblob/src/core.rs
    functionUses: 3
    functionsReached:
    - with_http_send
    - with_env
    - Context::new
    - clone
    - with_context
    - Self::clone
    - Self::with_file_read
    - Result::http_transport
    linkageType: ''
    returnType: Signer
    signature: 'fn signer(&self, ctx: &OperationContext) -> Signer<Credential>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/core/services/azblob/src/core.rs:109,1
    - Dst: Request<T>::into_parts
      Src: /src/opendal/core/services/azblob/src/core.rs:112,1
    - Dst: AzblobCore::signer
      Src: /src/opendal/core/services/azblob/src/core.rs:114,1
    - Dst: Signer::sign
      Src: /src/opendal/core/services/azblob/src/core.rs:114,1
    - Dst: Some
      Src: /src/opendal/core/services/azblob/src/core.rs:115,1
    - Dst: Duration::from_secs
      Src: /src/opendal/core/services/azblob/src/core.rs:115,1
    - Dst: map_err
      Src: /src/opendal/core/services/azblob/src/core.rs:114,1
    - Dst: new_request_sign_error
      Src: /src/opendal/core/services/azblob/src/core.rs:117,1
    - Dst: Result::into
      Src: /src/opendal/core/services/azblob/src/core.rs:117,1
    - Dst: Ok
      Src: /src/opendal/core/services/azblob/src/core.rs:119,1
    - Dst: Request::from_parts
      Src: /src/opendal/core/services/azblob/src/core.rs:119,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 26
    argCount: 2
    argNames:
    - ctx
    - req
    argTypes:
    - '&OperationContext'
    - Request<T>
    constantsTouched: []
    func_position:
      end: 120
      start: 103
    functionDepth: 35
    functionLinenumber: 103
    functionLinenumberEnd: 120
    functionName: AzblobCore::sign_query
    functionSourceFile: /src/opendal/core/services/azblob/src/core.rs
    functionUses: 1
    functionsReached:
    - map_err
    - Ok
    - Signer::sign
    - Some
    - Request<T>::into_parts
    - AzblobCore::signer
    - Result::into
    - Duration::from_secs
    - Request::from_parts
    - new_request_sign_error
    linkageType: ''
    returnType: Result
    signature: 'pub async fn sign_query<T>(&self,ctx: &OperationContext,req: Request<T>,)
      -> Result<Request<T>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Request<T>::into_parts
      Src: /src/opendal/core/services/azblob/src/core.rs:123,1
    - Dst: insert
      Src: /src/opendal/core/services/azblob/src/core.rs:126,1
    - Dst: HeaderName::from_static
      Src: /src/opendal/core/services/azblob/src/core.rs:127,1
    - Dst: HeaderValue::from_static
      Src: /src/opendal/core/services/azblob/src/core.rs:133,1
    - Dst: Ok
      Src: /src/opendal/core/services/azblob/src/core.rs:138,1
    - Dst: Request::from_parts
      Src: /src/opendal/core/services/azblob/src/core.rs:138,1
    - Dst: AzblobCore::signer
      Src: /src/opendal/core/services/azblob/src/core.rs:141,1
    - Dst: Signer::sign
      Src: /src/opendal/core/services/azblob/src/core.rs:141,1
    - Dst: map_err
      Src: /src/opendal/core/services/azblob/src/core.rs:141,1
    - Dst: new_request_sign_error
      Src: /src/opendal/core/services/azblob/src/core.rs:144,1
    - Dst: Result::into
      Src: /src/opendal/core/services/azblob/src/core.rs:144,1
    - Dst: Ok
      Src: /src/opendal/core/services/azblob/src/core.rs:146,1
    - Dst: Request::from_parts
      Src: /src/opendal/core/services/azblob/src/core.rs:146,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 31
    argCount: 2
    argNames:
    - ctx
    - req
    argTypes:
    - '&OperationContext'
    - Request<T>
    constantsTouched: []
    func_position:
      end: 147
      start: 122
    functionDepth: 35
    functionLinenumber: 122
    functionLinenumberEnd: 147
    functionName: AzblobCore::sign
    functionSourceFile: /src/opendal/core/services/azblob/src/core.rs
    functionUses: 13
    functionsReached:
    - map_err
    - insert
    - HeaderValue::from_static
    - Ok
    - Signer::sign
    - HeaderName::from_static
    - Request<T>::into_parts
    - AzblobCore::signer
    - Result::into
    - Request::from_parts
    - new_request_sign_error
    linkageType: ''
    returnType: Result
    signature: 'pub async fn sign<T>(&self, ctx: &OperationContext, req: Request<T>)
      -> Result<Request<T>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/core/services/azblob/src/core.rs:151,1
    - Dst: Request<T>::into_parts
      Src: /src/opendal/core/services/azblob/src/core.rs:154,1
    - Dst: AzblobCore::signer
      Src: /src/opendal/core/services/azblob/src/core.rs:156,1
    - Dst: Signer::sign
      Src: /src/opendal/core/services/azblob/src/core.rs:156,1
    - Dst: map_err
      Src: /src/opendal/core/services/azblob/src/core.rs:156,1
    - Dst: new_request_sign_error
      Src: /src/opendal/core/services/azblob/src/core.rs:159,1
    - Dst: Result::into
      Src: /src/opendal/core/services/azblob/src/core.rs:159,1
    - Dst: Ok
      Src: /src/opendal/core/services/azblob/src/core.rs:161,1
    - Dst: Request::from_parts
      Src: /src/opendal/core/services/azblob/src/core.rs:161,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 24
    argCount: 2
    argNames:
    - ctx
    - req
    argTypes:
    - '&OperationContext'
    - Request<T>
    constantsTouched: []
    func_position:
      end: 162
      start: 149
    functionDepth: 35
    functionLinenumber: 149
    functionLinenumberEnd: 162
    functionName: AzblobCore::batch_sign
    functionSourceFile: /src/opendal/core/services/azblob/src/core.rs
    functionUses: 1
    functionsReached:
    - map_err
    - Ok
    - Signer::sign
    - Request<T>::into_parts
    - AzblobCore::signer
    - Result::into
    - Request::from_parts
    - new_request_sign_error
    linkageType: ''
    returnType: Result
    signature: 'async fn batch_sign<T>(&self, ctx: &OperationContext, req: Request<T>)
      -> Result<Request<T>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::http_transport
      Src: /src/opendal/core/services/azblob/src/core.rs:170,1
    - Dst: Self::send
      Src: /src/opendal/core/services/azblob/src/core.rs:170,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - ctx
    - req
    argTypes:
    - '&OperationContext'
    - Request<Buffer>
    constantsTouched: []
    func_position:
      end: 171
      start: 165
    functionDepth: 37
    functionLinenumber: 165
    functionLinenumberEnd: 171
    functionName: AzblobCore::send
    functionSourceFile: /src/opendal/core/services/azblob/src/core.rs
    functionUses: 12
    functionsReached:
    - Result::http_transport
    - Self::send
    linkageType: ''
    returnType: Result
    signature: 'pub async fn send(&self,ctx: &OperationContext,req: Request<Buffer>,)
      -> Result<Response<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::clone
      Src: /src/opendal/core/services/azblob/src/core.rs:175,1
    - Dst: Result::set_sensitive
      Src: /src/opendal/core/services/azblob/src/core.rs:176,1
    - Dst: http::request::Builder::header
      Src: /src/opendal/core/services/azblob/src/core.rs:178,1
    - Dst: HeaderName::from_static
      Src: /src/opendal/core/services/azblob/src/core.rs:178,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/azblob/src/core.rs:182,1
    - Dst: Result::set_sensitive
      Src: /src/opendal/core/services/azblob/src/core.rs:183,1
    - Dst: http::request::Builder::header
      Src: /src/opendal/core/services/azblob/src/core.rs:185,1
    - Dst: HeaderName::from_static
      Src: /src/opendal/core/services/azblob/src/core.rs:186,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/azblob/src/core.rs:192,1
    - Dst: Result::set_sensitive
      Src: /src/opendal/core/services/azblob/src/core.rs:193,1
    - Dst: http::request::Builder::header
      Src: /src/opendal/core/services/azblob/src/core.rs:195,1
    - Dst: HeaderName::from_static
      Src: /src/opendal/core/services/azblob/src/core.rs:196,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 39
    argCount: 1
    argNames:
    - req
    argTypes:
    - http::request::Builder
    constantsTouched: []
    func_position:
      end: 202
      start: 173
    functionDepth: 2
    functionLinenumber: 173
    functionLinenumberEnd: 202
    functionName: AzblobCore::insert_sse_headers
    functionSourceFile: /src/opendal/core/services/azblob/src/core.rs
    functionUses: 9
    functionsReached:
    - Result::clone
    - http::request::Builder::header
    - Result::set_sensitive
    - HeaderName::from_static
    linkageType: ''
    returnType: http::request::Builder
    signature: 'pub fn insert_sse_headers(&self, mut req: http::request::Builder)
      -> http::request::Builder'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 1
    argNames:
    - path
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 213
      start: 206
    functionDepth: 0
    functionLinenumber: 206
    functionLinenumberEnd: 213
    functionName: AzblobCore::build_path_url
    functionSourceFile: /src/opendal/core/services/azblob/src/core.rs
    functionUses: 9
    functionsReached: []
    linkageType: ''
    returnType: String
    signature: 'fn build_path_url(&self, path: &str) -> String'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: AzblobCore::build_path_url
      Src: /src/opendal/core/services/azblob/src/core.rs:221,1
    - Dst: OpStat::override_content_disposition
      Src: /src/opendal/core/services/azblob/src/core.rs:223,1
    - Dst: Result::push_str
      Src: /src/opendal/core/services/azblob/src/core.rs:224,1
    - Dst: Request::get
      Src: /src/opendal/core/services/azblob/src/core.rs:230,1
    - Dst: AzblobCore::insert_sse_headers
      Src: /src/opendal/core/services/azblob/src/core.rs:233,1
    - Dst: (Vec::is_full
      Src: /src/opendal/core/services/azblob/src/core.rs:235,1
    - Dst: Option::header
      Src: /src/opendal/core/services/azblob/src/core.rs:236,1
    - Dst: (Vec::to_header
      Src: /src/opendal/core/services/azblob/src/core.rs:236,1
    - Dst: OpStat::if_none_match
      Src: /src/opendal/core/services/azblob/src/core.rs:239,1
    - Dst: Option::header
      Src: /src/opendal/core/services/azblob/src/core.rs:240,1
    - Dst: OpStat::if_match
      Src: /src/opendal/core/services/azblob/src/core.rs:243,1
    - Dst: Option::header
      Src: /src/opendal/core/services/azblob/src/core.rs:244,1
    - Dst: OpStat::if_modified_since
      Src: /src/opendal/core/services/azblob/src/core.rs:247,1
    - Dst: Option::header
      Src: /src/opendal/core/services/azblob/src/core.rs:248,1
    - Dst: Result::format_http_date
      Src: /src/opendal/core/services/azblob/src/core.rs:248,1
    - Dst: OpStat::if_unmodified_since
      Src: /src/opendal/core/services/azblob/src/core.rs:251,1
    - Dst: Option::header
      Src: /src/opendal/core/services/azblob/src/core.rs:252,1
    - Dst: Result::format_http_date
      Src: /src/opendal/core/services/azblob/src/core.rs:252,1
    - Dst: Option::extension
      Src: /src/opendal/core/services/azblob/src/core.rs:255,1
    - Dst: extension
      Src: /src/opendal/core/services/azblob/src/core.rs:255,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/azblob/src/core.rs:257,1
    - Dst: body
      Src: /src/opendal/core/services/azblob/src/core.rs:255,1
    - Dst: Buffer::new
      Src: /src/opendal/core/services/azblob/src/core.rs:258,1
    - Dst: map_err
      Src: /src/opendal/core/services/azblob/src/core.rs:255,1
    - Dst: Ok
      Src: /src/opendal/core/services/azblob/src/core.rs:261,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 75
    argCount: 3
    argNames:
    - path
    - range
    - args
    argTypes:
    - '&str'
    - BytesRange
    - '&OpRead'
    constantsTouched: []
    func_position:
      end: 262
      start: 215
    functionDepth: 3
    functionLinenumber: 215
    functionLinenumberEnd: 262
    functionName: AzblobCore::azblob_get_blob_request
    functionSourceFile: /src/opendal/core/services/azblob/src/core.rs
    functionUses: 1
    functionsReached:
    - Buffer::new
    - Result::push_str
    - OpStat::if_unmodified_since
    - OpStat::override_content_disposition
    - map_err
    - extension
    - Ok
    - OpStat::if_modified_since
    - (Vec::is_full
    - ServiceOperation
    - Result::format_http_date
    - OpStat::if_match
    - AzblobCore::build_path_url
    - Option::header
    - Request::get
    - (Vec::to_header
    - AzblobCore::insert_sse_headers
    - body
    - OpStat::if_none_match
    - Option::extension
    linkageType: ''
    returnType: Result
    signature: 'pub fn azblob_get_blob_request(&self,path: &str,range: BytesRange,args:
      &OpRead,) -> Result<Request<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: AzblobCore::azblob_get_blob_request
      Src: /src/opendal/core/services/azblob/src/core.rs:271,1
    - Dst: AzblobCore::sign
      Src: /src/opendal/core/services/azblob/src/core.rs:272,1
    - Dst: Result::http_transport
      Src: /src/opendal/core/services/azblob/src/core.rs:274,1
    - Dst: Self::fetch
      Src: /src/opendal/core/services/azblob/src/core.rs:274,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 4
    argNames:
    - ctx
    - path
    - range
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - BytesRange
    - '&OpRead'
    constantsTouched: []
    func_position:
      end: 275
      start: 264
    functionDepth: 36
    functionLinenumber: 264
    functionLinenumberEnd: 275
    functionName: AzblobCore::azblob_get_blob
    functionSourceFile: /src/opendal/core/services/azblob/src/core.rs
    functionUses: 0
    functionsReached:
    - Result::http_transport
    - AzblobCore::azblob_get_blob_request
    - Self::fetch
    - AzblobCore::sign
    linkageType: ''
    returnType: Result
    signature: 'pub async fn azblob_get_blob(&self,ctx: &OperationContext,path: &str,range:
      BytesRange,args: &OpRead,) -> Result<Response<HttpBody>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Request::put
      Src: /src/opendal/core/services/azblob/src/core.rs:284,1
    - Dst: AzblobCore::build_path_url
      Src: /src/opendal/core/services/azblob/src/core.rs:284,1
    - Dst: DeleteInput::header
      Src: /src/opendal/core/services/azblob/src/core.rs:286,1
    - Dst: HeaderName::from_static
      Src: /src/opendal/core/services/azblob/src/core.rs:287,1
    - Dst: DeleteInput::header
      Src: /src/opendal/core/services/azblob/src/core.rs:292,1
    - Dst: OpStat::content_type
      Src: /src/opendal/core/services/azblob/src/core.rs:295,1
    - Dst: DeleteInput::header
      Src: /src/opendal/core/services/azblob/src/core.rs:296,1
    - Dst: OpStat::if_not_exists
      Src: /src/opendal/core/services/azblob/src/core.rs:301,1
    - Dst: DeleteInput::header
      Src: /src/opendal/core/services/azblob/src/core.rs:302,1
    - Dst: OpStat::if_none_match
      Src: /src/opendal/core/services/azblob/src/core.rs:305,1
    - Dst: DeleteInput::header
      Src: /src/opendal/core/services/azblob/src/core.rs:306,1
    - Dst: OpStat::cache_control
      Src: /src/opendal/core/services/azblob/src/core.rs:309,1
    - Dst: DeleteInput::header
      Src: /src/opendal/core/services/azblob/src/core.rs:310,1
    - Dst: AzblobCore::insert_sse_headers
      Src: /src/opendal/core/services/azblob/src/core.rs:314,1
    - Dst: OpStat::user_metadata
      Src: /src/opendal/core/services/azblob/src/core.rs:316,1
    - Dst: DeleteInput::header
      Src: /src/opendal/core/services/azblob/src/core.rs:318,1
    - Dst: DeleteInput::extension
      Src: /src/opendal/core/services/azblob/src/core.rs:322,1
    - Dst: extension
      Src: /src/opendal/core/services/azblob/src/core.rs:322,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/azblob/src/core.rs:324,1
    - Dst: body
      Src: /src/opendal/core/services/azblob/src/core.rs:322,1
    - Dst: map_err
      Src: /src/opendal/core/services/azblob/src/core.rs:322,1
    - Dst: Ok
      Src: /src/opendal/core/services/azblob/src/core.rs:328,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 68
    argCount: 4
    argNames:
    - path
    - size
    - args
    - body
    argTypes:
    - '&str'
    - Option<u64>
    - '&OpWrite'
    - Buffer
    constantsTouched: []
    func_position:
      end: 329
      start: 277
    functionDepth: 32
    functionLinenumber: 277
    functionLinenumberEnd: 329
    functionName: AzblobCore::azblob_put_blob_request
    functionSourceFile: /src/opendal/core/services/azblob/src/core.rs
    functionUses: 1
    functionsReached:
    - map_err
    - extension
    - Request::put
    - AzblobCore::build_path_url
    - Ok
    - AzblobCore::insert_sse_headers
    - body
    - OpStat::cache_control
    - HeaderName::from_static
    - DeleteInput::header
    - OpStat::if_none_match
    - ServiceOperation
    - OpStat::user_metadata
    - DeleteInput::extension
    - OpStat::if_not_exists
    - OpStat::content_type
    linkageType: ''
    returnType: Result
    signature: 'pub fn azblob_put_blob_request(&self,path: &str,size: Option<u64>,args:
      &OpWrite,body: Buffer,) -> Result<Request<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: AzblobCore::azblob_put_blob_request
      Src: /src/opendal/core/services/azblob/src/core.rs:339,1
    - Dst: AzblobCore::sign
      Src: /src/opendal/core/services/azblob/src/core.rs:340,1
    - Dst: AzblobCore::send
      Src: /src/opendal/core/services/azblob/src/core.rs:341,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 5
    argNames:
    - ctx
    - path
    - size
    - args
    - body
    argTypes:
    - '&OperationContext'
    - '&str'
    - Option<u64>
    - '&OpWrite'
    - Buffer
    constantsTouched: []
    func_position:
      end: 342
      start: 331
    functionDepth: 33
    functionLinenumber: 331
    functionLinenumberEnd: 342
    functionName: AzblobCore::azblob_put_blob
    functionSourceFile: /src/opendal/core/services/azblob/src/core.rs
    functionUses: 0
    functionsReached:
    - AzblobCore::send
    - AzblobCore::azblob_put_blob_request
    - AzblobCore::sign
    linkageType: ''
    returnType: Result
    signature: 'pub async fn azblob_put_blob(&self,ctx: &OperationContext,path: &str,size:
      Option<u64>,args: &OpWrite,body: Buffer,) -> Result<Response<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Request::put
      Src: /src/opendal/core/services/azblob/src/core.rs:366,1
    - Dst: AzblobCore::build_path_url
      Src: /src/opendal/core/services/azblob/src/core.rs:366,1
    - Dst: AzblobCore::insert_sse_headers
      Src: /src/opendal/core/services/azblob/src/core.rs:369,1
    - Dst: DeleteInput::header
      Src: /src/opendal/core/services/azblob/src/core.rs:373,1
    - Dst: DeleteInput::header
      Src: /src/opendal/core/services/azblob/src/core.rs:374,1
    - Dst: HeaderName::from_static
      Src: /src/opendal/core/services/azblob/src/core.rs:375,1
    - Dst: OpStat::content_type
      Src: /src/opendal/core/services/azblob/src/core.rs:379,1
    - Dst: DeleteInput::header
      Src: /src/opendal/core/services/azblob/src/core.rs:380,1
    - Dst: OpStat::cache_control
      Src: /src/opendal/core/services/azblob/src/core.rs:383,1
    - Dst: DeleteInput::header
      Src: /src/opendal/core/services/azblob/src/core.rs:384,1
    - Dst: DeleteInput::extension
      Src: /src/opendal/core/services/azblob/src/core.rs:387,1
    - Dst: extension
      Src: /src/opendal/core/services/azblob/src/core.rs:387,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/azblob/src/core.rs:389,1
    - Dst: body
      Src: /src/opendal/core/services/azblob/src/core.rs:387,1
    - Dst: Buffer::new
      Src: /src/opendal/core/services/azblob/src/core.rs:390,1
    - Dst: map_err
      Src: /src/opendal/core/services/azblob/src/core.rs:387,1
    - Dst: Ok
      Src: /src/opendal/core/services/azblob/src/core.rs:393,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 43
    argCount: 2
    argNames:
    - path
    - args
    argTypes:
    - '&str'
    - '&OpWrite'
    constantsTouched: []
    func_position:
      end: 394
      start: 361
    functionDepth: 32
    functionLinenumber: 361
    functionLinenumberEnd: 394
    functionName: AzblobCore::azblob_init_appendable_blob_request
    functionSourceFile: /src/opendal/core/services/azblob/src/core.rs
    functionUses: 1
    functionsReached:
    - map_err
    - extension
    - Buffer::new
    - Request::put
    - AzblobCore::build_path_url
    - Ok
    - AzblobCore::insert_sse_headers
    - body
    - OpStat::cache_control
    - HeaderName::from_static
    - DeleteInput::header
    - ServiceOperation
    - DeleteInput::extension
    - OpStat::content_type
    linkageType: ''
    returnType: Result
    signature: 'fn azblob_init_appendable_blob_request(&self,path: &str,args: &OpWrite,)
      -> Result<Request<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: AzblobCore::azblob_init_appendable_blob_request
      Src: /src/opendal/core/services/azblob/src/core.rs:402,1
    - Dst: AzblobCore::sign
      Src: /src/opendal/core/services/azblob/src/core.rs:403,1
    - Dst: AzblobCore::send
      Src: /src/opendal/core/services/azblob/src/core.rs:404,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&OpWrite'
    constantsTouched: []
    func_position:
      end: 405
      start: 396
    functionDepth: 33
    functionLinenumber: 396
    functionLinenumberEnd: 405
    functionName: AzblobCore::azblob_init_appendable_blob
    functionSourceFile: /src/opendal/core/services/azblob/src/core.rs
    functionUses: 0
    functionsReached:
    - AzblobCore::send
    - AzblobCore::sign
    - AzblobCore::azblob_init_appendable_blob_request
    linkageType: ''
    returnType: Result
    signature: 'pub async fn azblob_init_appendable_blob(&self,ctx: &OperationContext,path:
      &str,args: &OpWrite,) -> Result<Response<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Request::put
      Src: /src/opendal/core/services/azblob/src/core.rs:427,1
    - Dst: DeleteInput::header
      Src: /src/opendal/core/services/azblob/src/core.rs:427,1
    - Dst: String::header
      Src: /src/opendal/core/services/azblob/src/core.rs:427,1
    - Dst: AzblobCore::insert_sse_headers
      Src: /src/opendal/core/services/azblob/src/core.rs:432,1
    - Dst: String::extension
      Src: /src/opendal/core/services/azblob/src/core.rs:434,1
    - Dst: extension
      Src: /src/opendal/core/services/azblob/src/core.rs:434,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/azblob/src/core.rs:436,1
    - Dst: body
      Src: /src/opendal/core/services/azblob/src/core.rs:434,1
    - Dst: map_err
      Src: /src/opendal/core/services/azblob/src/core.rs:434,1
    - Dst: Ok
      Src: /src/opendal/core/services/azblob/src/core.rs:440,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 21
    argCount: 4
    argNames:
    - path
    - position
    - size
    - body
    argTypes:
    - '&str'
    - u64
    - u64
    - Buffer
    constantsTouched: []
    func_position:
      end: 441
      start: 418
    functionDepth: 3
    functionLinenumber: 418
    functionLinenumberEnd: 441
    functionName: AzblobCore::azblob_append_blob_request
    functionSourceFile: /src/opendal/core/services/azblob/src/core.rs
    functionUses: 1
    functionsReached:
    - map_err
    - extension
    - Request::put
    - Ok
    - AzblobCore::insert_sse_headers
    - body
    - DeleteInput::header
    - String::header
    - ServiceOperation
    - String::extension
    linkageType: ''
    returnType: Result
    signature: 'fn azblob_append_blob_request(&self,path: &str,position: u64,size:
      u64,body: Buffer,) -> Result<Request<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: AzblobCore::azblob_append_blob_request
      Src: /src/opendal/core/services/azblob/src/core.rs:451,1
    - Dst: AzblobCore::sign
      Src: /src/opendal/core/services/azblob/src/core.rs:452,1
    - Dst: AzblobCore::send
      Src: /src/opendal/core/services/azblob/src/core.rs:453,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 5
    argNames:
    - ctx
    - path
    - position
    - size
    - body
    argTypes:
    - '&OperationContext'
    - '&str'
    - u64
    - u64
    - Buffer
    constantsTouched: []
    func_position:
      end: 454
      start: 443
    functionDepth: 36
    functionLinenumber: 443
    functionLinenumberEnd: 454
    functionName: AzblobCore::azblob_append_blob
    functionSourceFile: /src/opendal/core/services/azblob/src/core.rs
    functionUses: 0
    functionsReached:
    - AzblobCore::send
    - AzblobCore::azblob_append_blob_request
    - AzblobCore::sign
    linkageType: ''
    returnType: Result
    signature: 'pub async fn azblob_append_blob(&self,ctx: &OperationContext,path:
      &str,position: u64,size: u64,body: Buffer,) -> Result<Response<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: QueryPairsWriter::new
      Src: /src/opendal/core/services/azblob/src/core.rs:466,1
    - Dst: AzblobCore::build_path_url
      Src: /src/opendal/core/services/azblob/src/core.rs:466,1
    - Dst: Self::push
      Src: /src/opendal/core/services/azblob/src/core.rs:466,1
    - Dst: Self::push
      Src: /src/opendal/core/services/azblob/src/core.rs:466,1
    - Dst: percent_encode_path
      Src: /src/opendal/core/services/azblob/src/core.rs:470,1
    - Dst: encode
      Src: /src/opendal/core/services/azblob/src/core.rs:470,1
    - Dst: Uuid::as_bytes
      Src: /src/opendal/core/services/azblob/src/core.rs:470,1
    - Dst: Self::finish
      Src: /src/opendal/core/services/azblob/src/core.rs:466,1
    - Dst: Request::put
      Src: /src/opendal/core/services/azblob/src/core.rs:474,1
    - Dst: AzblobCore::insert_sse_headers
      Src: /src/opendal/core/services/azblob/src/core.rs:476,1
    - Dst: OpStat::cache_control
      Src: /src/opendal/core/services/azblob/src/core.rs:478,1
    - Dst: DeleteInput::header
      Src: /src/opendal/core/services/azblob/src/core.rs:479,1
    - Dst: DeleteInput::header
      Src: /src/opendal/core/services/azblob/src/core.rs:482,1
    - Dst: OpStat::content_type
      Src: /src/opendal/core/services/azblob/src/core.rs:485,1
    - Dst: DeleteInput::header
      Src: /src/opendal/core/services/azblob/src/core.rs:486,1
    - Dst: DeleteInput::extension
      Src: /src/opendal/core/services/azblob/src/core.rs:489,1
    - Dst: extension
      Src: /src/opendal/core/services/azblob/src/core.rs:489,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/azblob/src/core.rs:491,1
    - Dst: body
      Src: /src/opendal/core/services/azblob/src/core.rs:489,1
    - Dst: map_err
      Src: /src/opendal/core/services/azblob/src/core.rs:489,1
    - Dst: Ok
      Src: /src/opendal/core/services/azblob/src/core.rs:495,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 54
    argCount: 5
    argNames:
    - path
    - block_id
    - size
    - args
    - body
    argTypes:
    - '&str'
    - Uuid
    - Option<u64>
    - '&OpWrite'
    - Buffer
    constantsTouched: []
    func_position:
      end: 496
      start: 456
    functionDepth: 31
    functionLinenumber: 456
    functionLinenumberEnd: 496
    functionName: AzblobCore::azblob_put_block_request
    functionSourceFile: /src/opendal/core/services/azblob/src/core.rs
    functionUses: 1
    functionsReached:
    - QueryPairsWriter::new
    - extension
    - map_err
    - Request::put
    - AzblobCore::build_path_url
    - encode
    - Ok
    - Self::push
    - AzblobCore::insert_sse_headers
    - body
    - OpStat::cache_control
    - DeleteInput::header
    - percent_encode_path
    - ServiceOperation
    - Uuid::as_bytes
    - DeleteInput::extension
    - Self::finish
    - OpStat::content_type
    linkageType: ''
    returnType: Result
    signature: 'pub fn azblob_put_block_request(&self,path: &str,block_id: Uuid,size:
      Option<u64>,args: &OpWrite,body: Buffer,) -> Result<Request<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: AzblobCore::azblob_put_block_request
      Src: /src/opendal/core/services/azblob/src/core.rs:507,1
    - Dst: AzblobCore::sign
      Src: /src/opendal/core/services/azblob/src/core.rs:508,1
    - Dst: AzblobCore::send
      Src: /src/opendal/core/services/azblob/src/core.rs:509,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 6
    argNames:
    - ctx
    - path
    - block_id
    - size
    - args
    - body
    argTypes:
    - '&OperationContext'
    - '&str'
    - Uuid
    - Option<u64>
    - '&OpWrite'
    - Buffer
    constantsTouched: []
    func_position:
      end: 510
      start: 498
    functionDepth: 32
    functionLinenumber: 498
    functionLinenumberEnd: 510
    functionName: AzblobCore::azblob_put_block
    functionSourceFile: /src/opendal/core/services/azblob/src/core.rs
    functionUses: 0
    functionsReached:
    - AzblobCore::send
    - AzblobCore::sign
    - AzblobCore::azblob_put_block_request
    linkageType: ''
    returnType: Result
    signature: 'pub async fn azblob_put_block(&self,ctx: &OperationContext,path: &str,block_id:
      Uuid,size: Option<u64>,args: &OpWrite,body: Buffer,) -> Result<Response<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: QueryPairsWriter::new
      Src: /src/opendal/core/services/azblob/src/core.rs:519,1
    - Dst: AzblobCore::build_path_url
      Src: /src/opendal/core/services/azblob/src/core.rs:519,1
    - Dst: Self::push
      Src: /src/opendal/core/services/azblob/src/core.rs:519,1
    - Dst: Self::push
      Src: /src/opendal/core/services/azblob/src/core.rs:519,1
    - Dst: percent_encode_path
      Src: /src/opendal/core/services/azblob/src/core.rs:523,1
    - Dst: encode
      Src: /src/opendal/core/services/azblob/src/core.rs:523,1
    - Dst: Uuid::as_bytes
      Src: /src/opendal/core/services/azblob/src/core.rs:523,1
    - Dst: Self::finish
      Src: /src/opendal/core/services/azblob/src/core.rs:519,1
    - Dst: Request::put
      Src: /src/opendal/core/services/azblob/src/core.rs:527,1
    - Dst: DeleteInput::header
      Src: /src/opendal/core/services/azblob/src/core.rs:527,1
    - Dst: String::header
      Src: /src/opendal/core/services/azblob/src/core.rs:527,1
    - Dst: (Vec::is_full
      Src: /src/opendal/core/services/azblob/src/core.rs:531,1
    - Dst: String::header
      Src: /src/opendal/core/services/azblob/src/core.rs:532,1
    - Dst: (Vec::to_header
      Src: /src/opendal/core/services/azblob/src/core.rs:532,1
    - Dst: AzblobCore::insert_sse_headers
      Src: /src/opendal/core/services/azblob/src/core.rs:535,1
    - Dst: http::request::Builder::extension
      Src: /src/opendal/core/services/azblob/src/core.rs:536,1
    - Dst: extension
      Src: /src/opendal/core/services/azblob/src/core.rs:536,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/azblob/src/core.rs:538,1
    - Dst: body
      Src: /src/opendal/core/services/azblob/src/core.rs:536,1
    - Dst: Buffer::new
      Src: /src/opendal/core/services/azblob/src/core.rs:539,1
    - Dst: map_err
      Src: /src/opendal/core/services/azblob/src/core.rs:536,1
    - Dst: Ok
      Src: /src/opendal/core/services/azblob/src/core.rs:542,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 48
    argCount: 4
    argNames:
    - source
    - to
    - block_id
    - range
    argTypes:
    - '&str'
    - '&str'
    - Uuid
    - BytesRange
    constantsTouched: []
    func_position:
      end: 543
      start: 512
    functionDepth: 31
    functionLinenumber: 512
    functionLinenumberEnd: 543
    functionName: AzblobCore::azblob_put_block_from_url_request
    functionSourceFile: /src/opendal/core/services/azblob/src/core.rs
    functionUses: 1
    functionsReached:
    - Buffer::new
    - Request::put
    - DeleteInput::header
    - percent_encode_path
    - map_err
    - extension
    - Ok
    - (Vec::is_full
    - ServiceOperation
    - Uuid::as_bytes
    - QueryPairsWriter::new
    - AzblobCore::build_path_url
    - encode
    - Self::push
    - Self::finish
    - (Vec::to_header
    - AzblobCore::insert_sse_headers
    - body
    - http::request::Builder::extension
    - String::header
    linkageType: ''
    returnType: Result
    signature: 'pub fn azblob_put_block_from_url_request(&self,source: &str,to: &str,block_id:
      Uuid,range: BytesRange,) -> Result<Request<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: AzblobCore::build_path_url
      Src: /src/opendal/core/services/azblob/src/core.rs:554,1
    - Dst: QueryPairsWriter::new
      Src: /src/opendal/core/services/azblob/src/core.rs:556,1
    - Dst: Self::push
      Src: /src/opendal/core/services/azblob/src/core.rs:556,1
    - Dst: percent_encode_path
      Src: /src/opendal/core/services/azblob/src/core.rs:557,1
    - Dst: Self::finish
      Src: /src/opendal/core/services/azblob/src/core.rs:556,1
    - Dst: Request::get
      Src: /src/opendal/core/services/azblob/src/core.rs:561,1
    - Dst: Option::extension
      Src: /src/opendal/core/services/azblob/src/core.rs:561,1
    - Dst: extension
      Src: /src/opendal/core/services/azblob/src/core.rs:561,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/azblob/src/core.rs:563,1
    - Dst: body
      Src: /src/opendal/core/services/azblob/src/core.rs:561,1
    - Dst: Buffer::new
      Src: /src/opendal/core/services/azblob/src/core.rs:564,1
    - Dst: map_err
      Src: /src/opendal/core/services/azblob/src/core.rs:561,1
    - Dst: AzblobCore::sign_query
      Src: /src/opendal/core/services/azblob/src/core.rs:566,1
    - Dst: Result::uri
      Src: /src/opendal/core/services/azblob/src/core.rs:567,1
    - Dst: Result::to_string
      Src: /src/opendal/core/services/azblob/src/core.rs:567,1
    - Dst: AzblobCore::azblob_put_block_from_url_request
      Src: /src/opendal/core/services/azblob/src/core.rs:568,1
    - Dst: AzblobCore::sign
      Src: /src/opendal/core/services/azblob/src/core.rs:569,1
    - Dst: AzblobCore::send
      Src: /src/opendal/core/services/azblob/src/core.rs:570,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 45
    argCount: 6
    argNames:
    - ctx
    - from
    - to
    - source_version
    - block_id
    - range
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    - Option<&str>
    - Uuid
    - BytesRange
    constantsTouched: []
    func_position:
      end: 571
      start: 545
    functionDepth: 36
    functionLinenumber: 545
    functionLinenumberEnd: 571
    functionName: AzblobCore::azblob_put_block_from_url
    functionSourceFile: /src/opendal/core/services/azblob/src/core.rs
    functionUses: 0
    functionsReached:
    - QueryPairsWriter::new
    - extension
    - Request::get
    - Buffer::new
    - map_err
    - Result::to_string
    - AzblobCore::build_path_url
    - Self::push
    - body
    - AzblobCore::sign
    - Option::extension
    - percent_encode_path
    - ServiceOperation
    - Result::uri
    - AzblobCore::azblob_put_block_from_url_request
    - AzblobCore::send
    - AzblobCore::sign_query
    - Self::finish
    linkageType: ''
    returnType: Result
    signature: 'pub async fn azblob_put_block_from_url(&self,ctx: &OperationContext,from:
      &str,to: &str,source_version: Option<&str>,block_id: Uuid,range: BytesRange,)
      -> Result<Response<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Request::put
      Src: /src/opendal/core/services/azblob/src/core.rs:581,1
    - Dst: AzblobCore::insert_sse_headers
      Src: /src/opendal/core/services/azblob/src/core.rs:584,1
    - Dst: OpStat::cache_control
      Src: /src/opendal/core/services/azblob/src/core.rs:585,1
    - Dst: http::request::Builder::header
      Src: /src/opendal/core/services/azblob/src/core.rs:586,1
    - Dst: quick_xml::se::to_string
      Src: /src/opendal/core/services/azblob/src/core.rs:589,1
    - Dst: Vec<Uuid>::into_iter
      Src: /src/opendal/core/services/azblob/src/core.rs:590,1
    - Dst: map
      Src: /src/opendal/core/services/azblob/src/core.rs:590,1
    - Dst: encode
      Src: /src/opendal/core/services/azblob/src/core.rs:593,1
    - Dst: as_bytes
      Src: /src/opendal/core/services/azblob/src/core.rs:593,1
    - Dst: collect
      Src: /src/opendal/core/services/azblob/src/core.rs:590,1
    - Dst: map_err
      Src: /src/opendal/core/services/azblob/src/core.rs:589,1
    - Dst: http::request::Builder::header
      Src: /src/opendal/core/services/azblob/src/core.rs:600,1
    - Dst: Result::len
      Src: /src/opendal/core/services/azblob/src/core.rs:600,1
    - Dst: http::request::Builder::extension
      Src: /src/opendal/core/services/azblob/src/core.rs:602,1
    - Dst: extension
      Src: /src/opendal/core/services/azblob/src/core.rs:602,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/azblob/src/core.rs:604,1
    - Dst: body
      Src: /src/opendal/core/services/azblob/src/core.rs:602,1
    - Dst: Buffer::from
      Src: /src/opendal/core/services/azblob/src/core.rs:605,1
    - Dst: Bytes::from
      Src: /src/opendal/core/services/azblob/src/core.rs:605,1
    - Dst: map_err
      Src: /src/opendal/core/services/azblob/src/core.rs:602,1
    - Dst: Ok
      Src: /src/opendal/core/services/azblob/src/core.rs:608,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 48
    argCount: 3
    argNames:
    - path
    - block_ids
    - args
    argTypes:
    - '&str'
    - Vec<Uuid>
    - '&OpWrite'
    constantsTouched: []
    func_position:
      end: 609
      start: 573
    functionDepth: 32
    functionLinenumber: 573
    functionLinenumberEnd: 609
    functionName: AzblobCore::azblob_complete_put_block_list_request
    functionSourceFile: /src/opendal/core/services/azblob/src/core.rs
    functionUses: 1
    functionsReached:
    - collect
    - Request::put
    - as_bytes
    - map
    - Vec<Uuid>::into_iter
    - Result::len
    - map_err
    - extension
    - Ok
    - ServiceOperation
    - Buffer::from
    - encode
    - http::request::Builder::header
    - OpStat::cache_control
    - quick_xml::se::to_string
    - Bytes::from
    - AzblobCore::insert_sse_headers
    - body
    - http::request::Builder::extension
    linkageType: ''
    returnType: Result
    signature: 'fn azblob_complete_put_block_list_request(&self,path: &str,block_ids:
      Vec<Uuid>,args: &OpWrite,) -> Result<Request<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: AzblobCore::azblob_complete_put_block_list_request
      Src: /src/opendal/core/services/azblob/src/core.rs:618,1
    - Dst: AzblobCore::sign
      Src: /src/opendal/core/services/azblob/src/core.rs:619,1
    - Dst: AzblobCore::send
      Src: /src/opendal/core/services/azblob/src/core.rs:620,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 4
    argNames:
    - ctx
    - path
    - block_ids
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - Vec<Uuid>
    - '&OpWrite'
    constantsTouched: []
    func_position:
      end: 621
      start: 611
    functionDepth: 33
    functionLinenumber: 611
    functionLinenumberEnd: 621
    functionName: AzblobCore::azblob_complete_put_block_list
    functionSourceFile: /src/opendal/core/services/azblob/src/core.rs
    functionUses: 0
    functionsReached:
    - AzblobCore::send
    - AzblobCore::azblob_complete_put_block_list_request
    - AzblobCore::sign
    linkageType: ''
    returnType: Result
    signature: 'pub async fn azblob_complete_put_block_list(&self,ctx: &OperationContext,path:
      &str,block_ids: Vec<Uuid>,args: &OpWrite,) -> Result<Response<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Request::put
      Src: /src/opendal/core/services/azblob/src/core.rs:631,1
    - Dst: OpStat::if_not_exists
      Src: /src/opendal/core/services/azblob/src/core.rs:633,1
    - Dst: DeleteInput::header
      Src: /src/opendal/core/services/azblob/src/core.rs:634,1
    - Dst: quick_xml::se::to_string
      Src: /src/opendal/core/services/azblob/src/core.rs:637,1
    - Dst: Vec<Uuid>::into_iter
      Src: /src/opendal/core/services/azblob/src/core.rs:638,1
    - Dst: map
      Src: /src/opendal/core/services/azblob/src/core.rs:638,1
    - Dst: encode
      Src: /src/opendal/core/services/azblob/src/core.rs:640,1
    - Dst: as_bytes
      Src: /src/opendal/core/services/azblob/src/core.rs:640,1
    - Dst: collect
      Src: /src/opendal/core/services/azblob/src/core.rs:638,1
    - Dst: map_err
      Src: /src/opendal/core/services/azblob/src/core.rs:637,1
    - Dst: DeleteInput::header
      Src: /src/opendal/core/services/azblob/src/core.rs:645,1
    - Dst: Result::len
      Src: /src/opendal/core/services/azblob/src/core.rs:645,1
    - Dst: AzblobCore::insert_sse_headers
      Src: /src/opendal/core/services/azblob/src/core.rs:647,1
    - Dst: http::request::Builder::extension
      Src: /src/opendal/core/services/azblob/src/core.rs:648,1
    - Dst: extension
      Src: /src/opendal/core/services/azblob/src/core.rs:648,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/azblob/src/core.rs:650,1
    - Dst: body
      Src: /src/opendal/core/services/azblob/src/core.rs:648,1
    - Dst: Buffer::from
      Src: /src/opendal/core/services/azblob/src/core.rs:651,1
    - Dst: Bytes::from
      Src: /src/opendal/core/services/azblob/src/core.rs:651,1
    - Dst: map_err
      Src: /src/opendal/core/services/azblob/src/core.rs:648,1
    - Dst: Ok
      Src: /src/opendal/core/services/azblob/src/core.rs:654,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 48
    argCount: 3
    argNames:
    - path
    - block_ids
    - args
    argTypes:
    - '&str'
    - Vec<Uuid>
    - '&OpCopy'
    constantsTouched: []
    func_position:
      end: 655
      start: 623
    functionDepth: 32
    functionLinenumber: 623
    functionLinenumberEnd: 655
    functionName: AzblobCore::azblob_complete_copy_block_list_request
    functionSourceFile: /src/opendal/core/services/azblob/src/core.rs
    functionUses: 1
    functionsReached:
    - collect
    - Request::put
    - as_bytes
    - DeleteInput::header
    - map
    - Vec<Uuid>::into_iter
    - Result::len
    - map_err
    - extension
    - Ok
    - ServiceOperation
    - Buffer::from
    - encode
    - quick_xml::se::to_string
    - Bytes::from
    - OpStat::if_not_exists
    - AzblobCore::insert_sse_headers
    - body
    - http::request::Builder::extension
    linkageType: ''
    returnType: Result
    signature: 'fn azblob_complete_copy_block_list_request(&self,path: &str,block_ids:
      Vec<Uuid>,args: &OpCopy,) -> Result<Request<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: AzblobCore::azblob_complete_copy_block_list_request
      Src: /src/opendal/core/services/azblob/src/core.rs:664,1
    - Dst: AzblobCore::sign
      Src: /src/opendal/core/services/azblob/src/core.rs:665,1
    - Dst: AzblobCore::send
      Src: /src/opendal/core/services/azblob/src/core.rs:666,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 4
    argNames:
    - ctx
    - path
    - block_ids
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - Vec<Uuid>
    - '&OpCopy'
    constantsTouched: []
    func_position:
      end: 667
      start: 657
    functionDepth: 33
    functionLinenumber: 657
    functionLinenumberEnd: 667
    functionName: AzblobCore::azblob_complete_copy_block_list
    functionSourceFile: /src/opendal/core/services/azblob/src/core.rs
    functionUses: 0
    functionsReached:
    - AzblobCore::send
    - AzblobCore::sign
    - AzblobCore::azblob_complete_copy_block_list_request
    linkageType: ''
    returnType: Result
    signature: 'pub async fn azblob_complete_copy_block_list(&self,ctx: &OperationContext,path:
      &str,block_ids: Vec<Uuid>,args: &OpCopy,) -> Result<Response<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: AzblobCore::build_path_url
      Src: /src/opendal/core/services/azblob/src/core.rs:670,1
    - Dst: OpStat::version
      Src: /src/opendal/core/services/azblob/src/core.rs:671,1
    - Dst: QueryPairsWriter::new
      Src: /src/opendal/core/services/azblob/src/core.rs:672,1
    - Dst: Self::push
      Src: /src/opendal/core/services/azblob/src/core.rs:672,1
    - Dst: percent_encode_path
      Src: /src/opendal/core/services/azblob/src/core.rs:673,1
    - Dst: Self::finish
      Src: /src/opendal/core/services/azblob/src/core.rs:672,1
    - Dst: Request::head
      Src: /src/opendal/core/services/azblob/src/core.rs:677,1
    - Dst: AzblobCore::insert_sse_headers
      Src: /src/opendal/core/services/azblob/src/core.rs:680,1
    - Dst: OpStat::if_none_match
      Src: /src/opendal/core/services/azblob/src/core.rs:682,1
    - Dst: Result::header
      Src: /src/opendal/core/services/azblob/src/core.rs:683,1
    - Dst: OpStat::if_match
      Src: /src/opendal/core/services/azblob/src/core.rs:686,1
    - Dst: Result::header
      Src: /src/opendal/core/services/azblob/src/core.rs:687,1
    - Dst: Result::extension
      Src: /src/opendal/core/services/azblob/src/core.rs:690,1
    - Dst: extension
      Src: /src/opendal/core/services/azblob/src/core.rs:690,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/azblob/src/core.rs:692,1
    - Dst: body
      Src: /src/opendal/core/services/azblob/src/core.rs:690,1
    - Dst: Buffer::new
      Src: /src/opendal/core/services/azblob/src/core.rs:693,1
    - Dst: map_err
      Src: /src/opendal/core/services/azblob/src/core.rs:690,1
    - Dst: Ok
      Src: /src/opendal/core/services/azblob/src/core.rs:696,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 49
    argCount: 2
    argNames:
    - path
    - args
    argTypes:
    - '&str'
    - '&OpStat'
    constantsTouched: []
    func_position:
      end: 697
      start: 669
    functionDepth: 38
    functionLinenumber: 669
    functionLinenumberEnd: 697
    functionName: AzblobCore::azblob_head_blob_request
    functionSourceFile: /src/opendal/core/services/azblob/src/core.rs
    functionUses: 1
    functionsReached:
    - QueryPairsWriter::new
    - OpStat::version
    - Request::head
    - extension
    - Buffer::new
    - map_err
    - AzblobCore::build_path_url
    - Result::extension
    - Ok
    - Self::push
    - AzblobCore::insert_sse_headers
    - body
    - Result::header
    - OpStat::if_none_match
    - percent_encode_path
    - ServiceOperation
    - OpStat::if_match
    - Self::finish
    linkageType: ''
    returnType: Result
    signature: 'pub fn azblob_head_blob_request(&self, path: &str, args: &OpStat)
      -> Result<Request<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: AzblobCore::azblob_head_blob_request
      Src: /src/opendal/core/services/azblob/src/core.rs:705,1
    - Dst: AzblobCore::sign
      Src: /src/opendal/core/services/azblob/src/core.rs:706,1
    - Dst: AzblobCore::send
      Src: /src/opendal/core/services/azblob/src/core.rs:707,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&OpStat'
    constantsTouched: []
    func_position:
      end: 708
      start: 699
    functionDepth: 39
    functionLinenumber: 699
    functionLinenumberEnd: 708
    functionName: AzblobCore::azblob_get_blob_properties
    functionSourceFile: /src/opendal/core/services/azblob/src/core.rs
    functionUses: 0
    functionsReached:
    - AzblobCore::send
    - AzblobCore::azblob_head_blob_request
    - AzblobCore::sign
    linkageType: ''
    returnType: Result
    signature: 'pub async fn azblob_get_blob_properties(&self,ctx: &OperationContext,path:
      &str,args: &OpStat,) -> Result<Response<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Request::delete
      Src: /src/opendal/core/services/azblob/src/core.rs:711,1
    - Dst: AzblobCore::build_path_url
      Src: /src/opendal/core/services/azblob/src/core.rs:711,1
    - Dst: Result::header
      Src: /src/opendal/core/services/azblob/src/core.rs:711,1
    - Dst: String::extension
      Src: /src/opendal/core/services/azblob/src/core.rs:711,1
    - Dst: extension
      Src: /src/opendal/core/services/azblob/src/core.rs:711,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/azblob/src/core.rs:714,1
    - Dst: body
      Src: /src/opendal/core/services/azblob/src/core.rs:711,1
    - Dst: Buffer::new
      Src: /src/opendal/core/services/azblob/src/core.rs:715,1
    - Dst: map_err
      Src: /src/opendal/core/services/azblob/src/core.rs:711,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 15
    argCount: 1
    argNames:
    - path
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 717
      start: 710
    functionDepth: 32
    functionLinenumber: 710
    functionLinenumberEnd: 717
    functionName: AzblobCore::azblob_delete_blob_request
    functionSourceFile: /src/opendal/core/services/azblob/src/core.rs
    functionUses: 2
    functionsReached:
    - map_err
    - extension
    - Buffer::new
    - Request::delete
    - AzblobCore::build_path_url
    - body
    - Result::header
    - ServiceOperation
    - String::extension
    linkageType: ''
    returnType: Result
    signature: 'fn azblob_delete_blob_request(&self, path: &str) -> Result<Request<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: AzblobCore::azblob_delete_blob_request
      Src: /src/opendal/core/services/azblob/src/core.rs:724,1
    - Dst: AzblobCore::sign
      Src: /src/opendal/core/services/azblob/src/core.rs:725,1
    - Dst: AzblobCore::send
      Src: /src/opendal/core/services/azblob/src/core.rs:726,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 2
    argNames:
    - ctx
    - path
    argTypes:
    - '&OperationContext'
    - '&str'
    constantsTouched: []
    func_position:
      end: 727
      start: 719
    functionDepth: 33
    functionLinenumber: 719
    functionLinenumberEnd: 727
    functionName: AzblobCore::azblob_delete_blob
    functionSourceFile: /src/opendal/core/services/azblob/src/core.rs
    functionUses: 0
    functionsReached:
    - AzblobCore::send
    - AzblobCore::azblob_delete_blob_request
    - AzblobCore::sign
    linkageType: ''
    returnType: Result
    signature: 'pub async fn azblob_delete_blob(&self,ctx: &OperationContext,path:
      &str,) -> Result<Response<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: AzblobCore::build_path_url
      Src: /src/opendal/core/services/azblob/src/core.rs:736,1
    - Dst: OpStat::source_version
      Src: /src/opendal/core/services/azblob/src/core.rs:737,1
    - Dst: QueryPairsWriter::new
      Src: /src/opendal/core/services/azblob/src/core.rs:738,1
    - Dst: Self::push
      Src: /src/opendal/core/services/azblob/src/core.rs:738,1
    - Dst: percent_encode_path
      Src: /src/opendal/core/services/azblob/src/core.rs:739,1
    - Dst: Self::finish
      Src: /src/opendal/core/services/azblob/src/core.rs:738,1
    - Dst: AzblobCore::build_path_url
      Src: /src/opendal/core/services/azblob/src/core.rs:742,1
    - Dst: Request::put
      Src: /src/opendal/core/services/azblob/src/core.rs:744,1
    - Dst: DeleteInput::header
      Src: /src/opendal/core/services/azblob/src/core.rs:744,1
    - Dst: String::header
      Src: /src/opendal/core/services/azblob/src/core.rs:744,1
    - Dst: OpStat::if_not_exists
      Src: /src/opendal/core/services/azblob/src/core.rs:749,1
    - Dst: String::header
      Src: /src/opendal/core/services/azblob/src/core.rs:750,1
    - Dst: String::extension
      Src: /src/opendal/core/services/azblob/src/core.rs:753,1
    - Dst: extension
      Src: /src/opendal/core/services/azblob/src/core.rs:753,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/azblob/src/core.rs:755,1
    - Dst: body
      Src: /src/opendal/core/services/azblob/src/core.rs:753,1
    - Dst: Buffer::new
      Src: /src/opendal/core/services/azblob/src/core.rs:756,1
    - Dst: map_err
      Src: /src/opendal/core/services/azblob/src/core.rs:753,1
    - Dst: AzblobCore::sign
      Src: /src/opendal/core/services/azblob/src/core.rs:759,1
    - Dst: AzblobCore::send
      Src: /src/opendal/core/services/azblob/src/core.rs:760,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 50
    argCount: 4
    argNames:
    - ctx
    - from
    - to
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    - OpCopy
    constantsTouched: []
    func_position:
      end: 761
      start: 729
    functionDepth: 30
    functionLinenumber: 729
    functionLinenumberEnd: 761
    functionName: AzblobCore::azblob_copy_blob
    functionSourceFile: /src/opendal/core/services/azblob/src/core.rs
    functionUses: 0
    functionsReached:
    - QueryPairsWriter::new
    - extension
    - Buffer::new
    - OpStat::if_not_exists
    - Request::put
    - map_err
    - AzblobCore::build_path_url
    - Self::push
    - body
    - AzblobCore::sign
    - DeleteInput::header
    - String::header
    - percent_encode_path
    - ServiceOperation
    - OpStat::source_version
    - String::extension
    - AzblobCore::send
    - Self::finish
    linkageType: ''
    returnType: Result
    signature: 'pub async fn azblob_copy_blob(&self,ctx: &OperationContext,from: &str,to:
      &str,args: OpCopy,) -> Result<Response<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/azblob/src/core.rs:771,1
    - Dst: QueryPairsWriter::new
      Src: /src/opendal/core/services/azblob/src/core.rs:772,1
    - Dst: Self::push
      Src: /src/opendal/core/services/azblob/src/core.rs:772,1
    - Dst: Self::push
      Src: /src/opendal/core/services/azblob/src/core.rs:772,1
    - Dst: is_empty
      Src: /src/opendal/core/services/azblob/src/core.rs:776,1
    - Dst: Result::push
      Src: /src/opendal/core/services/azblob/src/core.rs:777,1
    - Dst: percent_encode_path
      Src: /src/opendal/core/services/azblob/src/core.rs:777,1
    - Dst: Result::push
      Src: /src/opendal/core/services/azblob/src/core.rs:780,1
    - Dst: Result::to_string
      Src: /src/opendal/core/services/azblob/src/core.rs:780,1
    - Dst: object_store::Result::is_empty
      Src: /src/opendal/core/services/azblob/src/core.rs:782,1
    - Dst: Result::push
      Src: /src/opendal/core/services/azblob/src/core.rs:783,1
    - Dst: '&str::is_empty'
      Src: /src/opendal/core/services/azblob/src/core.rs:785,1
    - Dst: Result::push
      Src: /src/opendal/core/services/azblob/src/core.rs:786,1
    - Dst: Request::get
      Src: /src/opendal/core/services/azblob/src/core.rs:789,1
    - Dst: Result::finish
      Src: /src/opendal/core/services/azblob/src/core.rs:789,1
    - Dst: Option::extension
      Src: /src/opendal/core/services/azblob/src/core.rs:789,1
    - Dst: extension
      Src: /src/opendal/core/services/azblob/src/core.rs:789,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/azblob/src/core.rs:791,1
    - Dst: body
      Src: /src/opendal/core/services/azblob/src/core.rs:789,1
    - Dst: Buffer::new
      Src: /src/opendal/core/services/azblob/src/core.rs:792,1
    - Dst: map_err
      Src: /src/opendal/core/services/azblob/src/core.rs:789,1
    - Dst: AzblobCore::sign
      Src: /src/opendal/core/services/azblob/src/core.rs:795,1
    - Dst: AzblobCore::send
      Src: /src/opendal/core/services/azblob/src/core.rs:796,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 69
    argCount: 5
    argNames:
    - ctx
    - path
    - next_marker
    - delimiter
    - limit
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    - '&str'
    - Option<usize>
    constantsTouched: []
    func_position:
      end: 797
      start: 763
    functionDepth: 36
    functionLinenumber: 763
    functionLinenumberEnd: 797
    functionName: AzblobCore::azblob_list_blobs
    functionSourceFile: /src/opendal/core/services/azblob/src/core.rs
    functionUses: 0
    functionsReached:
    - Buffer::new
    - Result::finish
    - percent_encode_path
    - map_err
    - extension
    - Result::to_string
    - Result::push
    - ServiceOperation
    - object_store::Result::is_empty
    - QueryPairsWriter::new
    - Self::push
    - build_abs_path
    - is_empty
    - '&str::is_empty'
    - AzblobCore::sign
    - AzblobCore::send
    - Request::get
    - body
    - Option::extension
    linkageType: ''
    returnType: Result
    signature: 'pub async fn azblob_list_blobs(&self,ctx: &OperationContext,path:
      &str,next_marker: &str,delimiter: &str,limit: Option<usize>,) -> Result<Response<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Multipart::new
      Src: /src/opendal/core/services/azblob/src/core.rs:809,1
    - Dst: Result::iter
      Src: /src/opendal/core/services/azblob/src/core.rs:811,1
    - Dst: enumerate
      Src: /src/opendal/core/services/azblob/src/core.rs:811,1
    - Dst: AzblobCore::azblob_delete_blob_request
      Src: /src/opendal/core/services/azblob/src/core.rs:812,1
    - Dst: AzblobCore::batch_sign
      Src: /src/opendal/core/services/azblob/src/core.rs:813,1
    - Dst: part
      Src: /src/opendal/core/services/azblob/src/core.rs:815,1
    - Dst: MixedPart::from_request
      Src: /src/opendal/core/services/azblob/src/core.rs:816,1
    - Dst: Self::part_header
      Src: /src/opendal/core/services/azblob/src/core.rs:816,1
    - Dst: '&str::parse'
      Src: /src/opendal/core/services/azblob/src/core.rs:816,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/services/azblob/src/core.rs:816,1
    - Dst: into
      Src: /src/opendal/core/services/azblob/src/core.rs:816,1
    - Dst: Request::post
      Src: /src/opendal/core/services/azblob/src/core.rs:820,1
    - Dst: extension
      Src: /src/opendal/core/services/azblob/src/core.rs:820,1
    - Dst: extension
      Src: /src/opendal/core/services/azblob/src/core.rs:820,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/azblob/src/core.rs:822,1
    - Dst: apply
      Src: /src/opendal/core/services/azblob/src/core.rs:823,1
    - Dst: AzblobCore::sign
      Src: /src/opendal/core/services/azblob/src/core.rs:824,1
    - Dst: AzblobCore::send
      Src: /src/opendal/core/services/azblob/src/core.rs:825,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 43
    argCount: 2
    argNames:
    - ctx
    - paths
    argTypes:
    - '&OperationContext'
    - '&[String]'
    constantsTouched: []
    func_position:
      end: 826
      start: 799
    functionDepth: 33
    functionLinenumber: 799
    functionLinenumberEnd: 826
    functionName: AzblobCore::azblob_batch_delete
    functionSourceFile: /src/opendal/core/services/azblob/src/core.rs
    functionUses: 0
    functionsReached:
    - Multipart::new
    - extension
    - apply
    - MixedPart::from_request
    - '&str::parse'
    - into
    - AzblobCore::batch_sign
    - Request::post
    - AzblobCore::sign
    - Result::iter
    - Result::unwrap
    - ServiceOperation
    - enumerate
    - part
    - Self::part_header
    - AzblobCore::send
    - AzblobCore::azblob_delete_blob_request
    linkageType: ''
    returnType: Result
    signature: 'pub async fn azblob_batch_delete(&self,ctx: &OperationContext,paths:
      &[String],) -> Result<Response<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: bytes::Bytes::from
      Src: /src/opendal/core/services/obs/src/core.rs:586,1
    - Dst: quick_xml::de::from_reader
      Src: /src/opendal/core/services/obs/src/core.rs:623,1
    - Dst: Result::reader
      Src: /src/opendal/core/services/obs/src/core.rs:623,1
    - Dst: expect
      Src: /src/opendal/core/services/obs/src/core.rs:623,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 647
      start: 585
    functionDepth: 31
    functionLinenumber: 585
    functionLinenumberEnd: 647
    functionName: tests::test_parse_xml
    functionSourceFile: /src/opendal/core/services/obs/src/core.rs
    functionUses: 0
    functionsReached:
    - Result::reader
    - quick_xml::de::from_reader
    - expect
    - bytes::Bytes::from
    linkageType: ''
    returnType: void
    signature: fn test_parse_xml()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: de::from_reader
      Src: /src/opendal/core/services/azblob/src/core.rs:1062,1
    - Dst: Bytes::from
      Src: /src/opendal/core/services/azblob/src/core.rs:1062,1
    - Dst: Result::reader
      Src: /src/opendal/core/services/azblob/src/core.rs:1062,1
    - Dst: expect
      Src: /src/opendal/core/services/azblob/src/core.rs:1062,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 1063
      start: 1059
    functionDepth: 32
    functionLinenumber: 1059
    functionLinenumberEnd: 1063
    functionName: tests::test_parse_overlapped_lists
    functionSourceFile: /src/opendal/core/services/azblob/src/core.rs
    functionUses: 0
    functionsReached:
    - Bytes::from
    - Result::reader
    - expect
    - de::from_reader
    linkageType: ''
    returnType: void
    signature: fn test_parse_overlapped_lists()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: quick_xml::se::to_string
      Src: /src/opendal/core/services/azblob/src/core.rs:1072,1
    - Dst: expect
      Src: /src/opendal/core/services/azblob/src/core.rs:1072,1
    - Dst: de::from_reader
      Src: /src/opendal/core/services/azblob/src/core.rs:1096,1
    - Dst: Bytes::from
      Src: /src/opendal/core/services/azblob/src/core.rs:1096,1
    - Dst: Result::reader
      Src: /src/opendal/core/services/azblob/src/core.rs:1096,1
    - Dst: expect
      Src: /src/opendal/core/services/azblob/src/core.rs:1096,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 1101
      start: 1067
    functionDepth: 32
    functionLinenumber: 1067
    functionLinenumberEnd: 1101
    functionName: tests::test_serialize_put_block_list_request
    functionSourceFile: /src/opendal/core/services/azblob/src/core.rs
    functionUses: 0
    functionsReached:
    - expect
    - quick_xml::se::to_string
    - de::from_reader
    - Bytes::from
    - Result::reader
    linkageType: ''
    returnType: void
    signature: fn test_serialize_put_block_list_request()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: bytes::Bytes::from
      Src: /src/opendal/core/services/azblob/src/core.rs:1223,1
    - Dst: de::from_reader
      Src: /src/opendal/core/services/azblob/src/core.rs:1236,1
    - Dst: Result::reader
      Src: /src/opendal/core/services/azblob/src/core.rs:1236,1
    - Dst: expect
      Src: /src/opendal/core/services/azblob/src/core.rs:1236,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 1250
      start: 1222
    functionDepth: 31
    functionLinenumber: 1222
    functionLinenumberEnd: 1250
    functionName: error::test_parse_error_with_reason
    functionSourceFile: /src/opendal/core/services/azblob/src/core.rs
    functionUses: 0
    functionsReached:
    - Result::reader
    - expect
    - de::from_reader
    - bytes::Bytes::from
    linkageType: ''
    returnType: void
    signature: fn test_parse_error_with_reason()
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 4
    argNames:
    - core
    - ctx
    - op
    - path
    argTypes:
    - Arc<AzblobCore>
    - OperationContext
    - OpWrite
    - String
    constantsTouched: []
    func_position:
      end: 49
      start: 42
    functionDepth: 0
    functionLinenumber: 42
    functionLinenumberEnd: 49
    functionName: AzblobWriter::new
    functionSourceFile: /src/opendal/core/services/azblob/src/writer.rs
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(core: Arc<AzblobCore>, ctx: OperationContext, op: OpWrite,
      path: String) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Metadata::default
      Src: /src/opendal/core/services/azblob/src/writer.rs:54,1
    - Dst: parse_last_modified
      Src: /src/opendal/core/services/azblob/src/writer.rs:56,1
    - Dst: anyhow::Result::set_last_modified
      Src: /src/opendal/core/services/azblob/src/writer.rs:57,1
    - Dst: parse_etag
      Src: /src/opendal/core/services/azblob/src/writer.rs:59,1
    - Dst: anyhow::Result::set_etag
      Src: /src/opendal/core/services/azblob/src/writer.rs:61,1
    - Dst: parse_header_to_str
      Src: /src/opendal/core/services/azblob/src/writer.rs:63,1
    - Dst: anyhow::Result::set_version
      Src: /src/opendal/core/services/azblob/src/writer.rs:65,1
    - Dst: Ok
      Src: /src/opendal/core/services/azblob/src/writer.rs:68,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 23
    argCount: 1
    argNames:
    - headers
    argTypes:
    - '&http::HeaderMap'
    constantsTouched: []
    func_position:
      end: 69
      start: 53
    functionDepth: 39
    functionLinenumber: 53
    functionLinenumberEnd: 69
    functionName: AzblobWriter::parse_metadata
    functionSourceFile: /src/opendal/core/services/azblob/src/writer.rs
    functionUses: 5
    functionsReached:
    - parse_last_modified
    - Metadata::default
    - Ok
    - anyhow::Result::set_last_modified
    - parse_header_to_str
    - parse_etag
    - anyhow::Result::set_version
    - anyhow::Result::set_etag
    linkageType: ''
    returnType: Result
    signature: 'pub(crate) fn parse_metadata(headers: &http::HeaderMap) -> Result<Metadata>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: azblob_get_blob_properties
      Src: /src/opendal/core/services/azblob/src/writer.rs:74,1
    - Dst: OpStat::default
      Src: /src/opendal/core/services/azblob/src/writer.rs:76,1
    - Dst: status
      Src: /src/opendal/core/services/azblob/src/writer.rs:79,1
    - Dst: headers
      Src: /src/opendal/core/services/azblob/src/writer.rs:83,1
    - Dst: HashMap::get
      Src: /src/opendal/core/services/azblob/src/writer.rs:84,1
    - Dst: Option::and_then
      Src: /src/opendal/core/services/azblob/src/writer.rs:84,1
    - Dst: Result::to_str
      Src: /src/opendal/core/services/azblob/src/writer.rs:84,1
    - Dst: Result::ok
      Src: /src/opendal/core/services/azblob/src/writer.rs:84,1
    - Dst: Some
      Src: /src/opendal/core/services/azblob/src/writer.rs:85,1
    - Dst: Err
      Src: /src/opendal/core/services/azblob/src/writer.rs:86,1
    - Dst: Error::new
      Src: /src/opendal/core/services/azblob/src/writer.rs:86,1
    - Dst: Ok
      Src: /src/opendal/core/services/azblob/src/writer.rs:92,1
    - Dst: parse_content_length
      Src: /src/opendal/core/services/azblob/src/writer.rs:92,1
    - Dst: unwrap_or_default
      Src: /src/opendal/core/services/azblob/src/writer.rs:92,1
    - Dst: azblob_init_appendable_blob
      Src: /src/opendal/core/services/azblob/src/writer.rs:95,1
    - Dst: status
      Src: /src/opendal/core/services/azblob/src/writer.rs:100,1
    - Dst: Err
      Src: /src/opendal/core/services/azblob/src/writer.rs:106,1
    - Dst: super::core::parse_error
      Src: /src/opendal/core/services/azblob/src/writer.rs:106,1
    - Dst: Ok
      Src: /src/opendal/core/services/azblob/src/writer.rs:109,1
    - Dst: Err
      Src: /src/opendal/core/services/azblob/src/writer.rs:111,1
    - Dst: super::core::parse_error
      Src: /src/opendal/core/services/azblob/src/writer.rs:111,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 61
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 113
      start: 73
    functionDepth: 40
    functionLinenumber: 73
    functionLinenumberEnd: 113
    functionName: AzblobWriter::offset
    functionSourceFile: /src/opendal/core/services/azblob/src/writer.rs
    functionUses: 0
    functionsReached:
    - Result::ok
    - status
    - Result::to_str
    - Ok
    - azblob_init_appendable_blob
    - Some
    - Err
    - Option::and_then
    - Error::new
    - parse_content_length
    - headers
    - azblob_get_blob_properties
    - super::core::parse_error
    - unwrap_or_default
    - OpStat::default
    - HashMap::get
    linkageType: ''
    returnType: Result
    signature: async fn offset(&self) -> Result<u64>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: azblob_append_blob
      Src: /src/opendal/core/services/azblob/src/writer.rs:116,1
    - Dst: AzblobWriter::parse_metadata
      Src: /src/opendal/core/services/azblob/src/writer.rs:121,1
    - Dst: headers
      Src: /src/opendal/core/services/azblob/src/writer.rs:121,1
    - Dst: status
      Src: /src/opendal/core/services/azblob/src/writer.rs:122,1
    - Dst: Ok
      Src: /src/opendal/core/services/azblob/src/writer.rs:124,1
    - Dst: Err
      Src: /src/opendal/core/services/azblob/src/writer.rs:125,1
    - Dst: super::core::parse_error
      Src: /src/opendal/core/services/azblob/src/writer.rs:125,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 20
    argCount: 3
    argNames:
    - offset
    - size
    - body
    argTypes:
    - u64
    - u64
    - Buffer
    constantsTouched: []
    func_position:
      end: 127
      start: 115
    functionDepth: 37
    functionLinenumber: 115
    functionLinenumberEnd: 127
    functionName: AzblobWriter::append
    functionSourceFile: /src/opendal/core/services/azblob/src/writer.rs
    functionUses: 0
    functionsReached:
    - status
    - Ok
    - Err
    - headers
    - AzblobWriter::parse_metadata
    - super::core::parse_error
    - azblob_append_blob
    linkageType: ''
    returnType: Result
    signature: 'async fn append(&self, offset: u64, size: u64, body: Buffer) -> Result<Metadata>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: azblob_put_blob
      Src: /src/opendal/core/services/azblob/src/writer.rs:132,1
    - Dst: Some
      Src: /src/opendal/core/services/azblob/src/writer.rs:134,1
    - Dst: status
      Src: /src/opendal/core/services/azblob/src/writer.rs:137,1
    - Dst: AzblobWriter::parse_metadata
      Src: /src/opendal/core/services/azblob/src/writer.rs:139,1
    - Dst: headers
      Src: /src/opendal/core/services/azblob/src/writer.rs:139,1
    - Dst: parse_content_md5
      Src: /src/opendal/core/services/azblob/src/writer.rs:140,1
    - Dst: headers
      Src: /src/opendal/core/services/azblob/src/writer.rs:140,1
    - Dst: Result::set_content_md5
      Src: /src/opendal/core/services/azblob/src/writer.rs:142,1
    - Dst: Ok
      Src: /src/opendal/core/services/azblob/src/writer.rs:145,1
    - Dst: Err
      Src: /src/opendal/core/services/azblob/src/writer.rs:146,1
    - Dst: super::core::parse_error
      Src: /src/opendal/core/services/azblob/src/writer.rs:146,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 32
    argCount: 2
    argNames:
    - size
    - body
    argTypes:
    - u64
    - Buffer
    constantsTouched: []
    func_position:
      end: 148
      start: 131
    functionDepth: 34
    functionLinenumber: 131
    functionLinenumberEnd: 148
    functionName: AzblobWriter::write_once
    functionSourceFile: /src/opendal/core/services/azblob/src/writer.rs
    functionUses: 0
    functionsReached:
    - parse_content_md5
    - status
    - Ok
    - azblob_put_blob
    - Some
    - Err
    - headers
    - AzblobWriter::parse_metadata
    - super::core::parse_error
    - Result::set_content_md5
    linkageType: ''
    returnType: Result
    signature: 'async fn write_once(&self, size: u64, body: Buffer) -> Result<Metadata>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: azblob_put_block
      Src: /src/opendal/core/services/azblob/src/writer.rs:151,1
    - Dst: Some
      Src: /src/opendal/core/services/azblob/src/writer.rs:153,1
    - Dst: status
      Src: /src/opendal/core/services/azblob/src/writer.rs:156,1
    - Dst: Ok
      Src: /src/opendal/core/services/azblob/src/writer.rs:158,1
    - Dst: Err
      Src: /src/opendal/core/services/azblob/src/writer.rs:159,1
    - Dst: super::core::parse_error
      Src: /src/opendal/core/services/azblob/src/writer.rs:159,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 20
    argCount: 3
    argNames:
    - block_id
    - size
    - body
    argTypes:
    - Uuid
    - u64
    - Buffer
    constantsTouched: []
    func_position:
      end: 161
      start: 150
    functionDepth: 33
    functionLinenumber: 150
    functionLinenumberEnd: 161
    functionName: AzblobWriter::write_block
    functionSourceFile: /src/opendal/core/services/azblob/src/writer.rs
    functionUses: 0
    functionsReached:
    - status
    - Ok
    - azblob_put_block
    - Err
    - Some
    - super::core::parse_error
    linkageType: ''
    returnType: Result
    signature: 'async fn write_block(&self, block_id: Uuid, size: u64, body: Buffer)
      -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: azblob_complete_put_block_list
      Src: /src/opendal/core/services/azblob/src/writer.rs:164,1
    - Dst: AzblobWriter::parse_metadata
      Src: /src/opendal/core/services/azblob/src/writer.rs:169,1
    - Dst: headers
      Src: /src/opendal/core/services/azblob/src/writer.rs:169,1
    - Dst: status
      Src: /src/opendal/core/services/azblob/src/writer.rs:170,1
    - Dst: Ok
      Src: /src/opendal/core/services/azblob/src/writer.rs:172,1
    - Dst: Err
      Src: /src/opendal/core/services/azblob/src/writer.rs:173,1
    - Dst: super::core::parse_error
      Src: /src/opendal/core/services/azblob/src/writer.rs:173,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 22
    argCount: 1
    argNames:
    - block_ids
    argTypes:
    - Vec<Uuid>
    constantsTouched: []
    func_position:
      end: 175
      start: 163
    functionDepth: 34
    functionLinenumber: 163
    functionLinenumberEnd: 175
    functionName: AzblobWriter::complete_block
    functionSourceFile: /src/opendal/core/services/azblob/src/writer.rs
    functionUses: 0
    functionsReached:
    - status
    - Ok
    - Err
    - azblob_complete_put_block_list
    - headers
    - AzblobWriter::parse_metadata
    - super::core::parse_error
    linkageType: ''
    returnType: Result
    signature: 'async fn complete_block(&self, block_ids: Vec<Uuid>) -> Result<Metadata>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/core/services/azblob/src/writer.rs:181,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - _block_ids
    argTypes:
    - Vec<Uuid>
    constantsTouched: []
    func_position:
      end: 182
      start: 177
    functionDepth: 0
    functionLinenumber: 177
    functionLinenumberEnd: 182
    functionName: AzblobWriter::abort_block
    functionSourceFile: /src/opendal/core/services/azblob/src/writer.rs
    functionUses: 0
    functionsReached:
    - Ok
    linkageType: ''
    returnType: Result
    signature: 'async fn abort_block(&self, _block_ids: Vec<Uuid>) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: register::<Azblob>
      Src: /src/opendal/core/services/azblob/src/lib.rs:23,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - registry
    argTypes:
    - '&opendal_core::OperatorRegistry'
    constantsTouched: []
    func_position:
      end: 24
      start: 22
    functionDepth: 0
    functionLinenumber: 22
    functionLinenumberEnd: 24
    functionName: register_azblob_service
    functionSourceFile: /src/opendal/core/services/azblob/src/lib.rs
    functionUses: 1
    functionsReached:
    - register::<Azblob>
    linkageType: ''
    returnType: void
    signature: 'pub fn register_azblob_service(registry: &opendal_core::OperatorRegistry)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Default::default
      Src: /src/opendal/core/services/azblob/src/backend.rs:66,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - value
    argTypes:
    - AzureConnectionConfig
    constantsTouched: []
    func_position:
      end: 68
      start: 60
    functionDepth: 3
    functionLinenumber: 60
    functionLinenumberEnd: 68
    functionName: AzblobConfig::from
    functionSourceFile: /src/opendal/core/services/azblob/src/backend.rs
    functionUses: 1
    functionsReached:
    - Default::default
    linkageType: ''
    returnType: Self
    signature: 'fn from(value: AzureConnectionConfig) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::debug_struct
      Src: /src/opendal/core/services/azblob/src/backend.rs:79,1
    - Dst: field
      Src: /src/opendal/core/services/azblob/src/backend.rs:79,1
    - Dst: finish_non_exhaustive
      Src: /src/opendal/core/services/azblob/src/backend.rs:79,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - f
    argTypes:
    - '&mut std::fmt::Formatter<''_>'
    constantsTouched: []
    func_position:
      end: 82
      start: 78
    functionDepth: 5
    functionLinenumber: 78
    functionLinenumberEnd: 82
    functionName: AzblobBuilder::fmt
    functionSourceFile: /src/opendal/core/services/azblob/src/backend.rs
    functionUses: 0
    functionsReached:
    - field
    - Result::debug_struct
    - finish_non_exhaustive
    linkageType: ''
    returnType: std::fmt::Result
    signature: 'fn fmt(&self, f: &mut std::fmt::Formatter<''_>) -> std::fmt::Result'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::is_empty
      Src: /src/opendal/core/services/azblob/src/backend.rs:90,1
    - Dst: Some
      Src: /src/opendal/core/services/azblob/src/backend.rs:93,1
    - Dst: Result::to_string
      Src: /src/opendal/core/services/azblob/src/backend.rs:93,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - root
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 97
      start: 89
    functionDepth: 4
    functionLinenumber: 89
    functionLinenumberEnd: 97
    functionName: AzblobBuilder::root
    functionSourceFile: /src/opendal/core/services/azblob/src/backend.rs
    functionUses: 0
    functionsReached:
    - Result::is_empty
    - Result::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn root(mut self, root: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: to_string
      Src: /src/opendal/core/services/azblob/src/backend.rs:101,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - container
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 104
      start: 100
    functionDepth: 2
    functionLinenumber: 100
    functionLinenumberEnd: 104
    functionName: AzblobBuilder::container
    functionSourceFile: /src/opendal/core/services/azblob/src/backend.rs
    functionUses: 0
    functionsReached:
    - to_string
    linkageType: ''
    returnType: Self
    signature: 'pub fn container(mut self, container: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self::is_empty
      Src: /src/opendal/core/services/azblob/src/backend.rs:113,1
    - Dst: Some
      Src: /src/opendal/core/services/azblob/src/backend.rs:115,1
    - Dst: Self::trim_end_matches
      Src: /src/opendal/core/services/azblob/src/backend.rs:115,1
    - Dst: to_string
      Src: /src/opendal/core/services/azblob/src/backend.rs:115,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 14
    argCount: 1
    argNames:
    - endpoint
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 119
      start: 112
    functionDepth: 4
    functionLinenumber: 112
    functionLinenumberEnd: 119
    functionName: AzblobBuilder::endpoint
    functionSourceFile: /src/opendal/core/services/azblob/src/backend.rs
    functionUses: 0
    functionsReached:
    - Self::is_empty
    - to_string
    - Self::trim_end_matches
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn endpoint(mut self, endpoint: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self::is_empty
      Src: /src/opendal/core/services/azblob/src/backend.rs:126,1
    - Dst: Some
      Src: /src/opendal/core/services/azblob/src/backend.rs:127,1
    - Dst: Self::to_string
      Src: /src/opendal/core/services/azblob/src/backend.rs:127,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 1
    argNames:
    - account_name
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 131
      start: 125
    functionDepth: 4
    functionLinenumber: 125
    functionLinenumberEnd: 131
    functionName: AzblobBuilder::account_name
    functionSourceFile: /src/opendal/core/services/azblob/src/backend.rs
    functionUses: 0
    functionsReached:
    - Self::is_empty
    - Self::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn account_name(mut self, account_name: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self::is_empty
      Src: /src/opendal/core/services/azblob/src/backend.rs:138,1
    - Dst: Some
      Src: /src/opendal/core/services/azblob/src/backend.rs:139,1
    - Dst: Self::to_string
      Src: /src/opendal/core/services/azblob/src/backend.rs:139,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 1
    argNames:
    - account_key
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 143
      start: 137
    functionDepth: 4
    functionLinenumber: 137
    functionLinenumberEnd: 143
    functionName: AzblobBuilder::account_key
    functionSourceFile: /src/opendal/core/services/azblob/src/backend.rs
    functionUses: 0
    functionsReached:
    - Self::is_empty
    - Self::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn account_key(mut self, account_key: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::is_empty
      Src: /src/opendal/core/services/azblob/src/backend.rs:158,1
    - Dst: Some
      Src: /src/opendal/core/services/azblob/src/backend.rs:159,1
    - Dst: Result::to_string
      Src: /src/opendal/core/services/azblob/src/backend.rs:159,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 1
    argNames:
    - v
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 163
      start: 157
    functionDepth: 4
    functionLinenumber: 157
    functionLinenumberEnd: 163
    functionName: AzblobBuilder::encryption_key
    functionSourceFile: /src/opendal/core/services/azblob/src/backend.rs
    functionUses: 0
    functionsReached:
    - Result::is_empty
    - Result::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn encryption_key(mut self, v: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::is_empty
      Src: /src/opendal/core/services/azblob/src/backend.rs:178,1
    - Dst: Some
      Src: /src/opendal/core/services/azblob/src/backend.rs:179,1
    - Dst: Result::to_string
      Src: /src/opendal/core/services/azblob/src/backend.rs:179,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 1
    argNames:
    - v
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 183
      start: 177
    functionDepth: 4
    functionLinenumber: 177
    functionLinenumberEnd: 183
    functionName: AzblobBuilder::encryption_key_sha256
    functionSourceFile: /src/opendal/core/services/azblob/src/backend.rs
    functionUses: 0
    functionsReached:
    - Result::is_empty
    - Result::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn encryption_key_sha256(mut self, v: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::is_empty
      Src: /src/opendal/core/services/azblob/src/backend.rs:198,1
    - Dst: Some
      Src: /src/opendal/core/services/azblob/src/backend.rs:199,1
    - Dst: Result::to_string
      Src: /src/opendal/core/services/azblob/src/backend.rs:199,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 1
    argNames:
    - v
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 203
      start: 197
    functionDepth: 4
    functionLinenumber: 197
    functionLinenumberEnd: 203
    functionName: AzblobBuilder::encryption_algorithm
    functionSourceFile: /src/opendal/core/services/azblob/src/backend.rs
    functionUses: 0
    functionsReached:
    - Result::is_empty
    - Result::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn encryption_algorithm(mut self, v: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Some
      Src: /src/opendal/core/services/azblob/src/backend.rs:220,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/azblob/src/backend.rs:220,1
    - Dst: Some
      Src: /src/opendal/core/services/azblob/src/backend.rs:221,1
    - Dst: encode
      Src: /src/opendal/core/services/azblob/src/backend.rs:221,1
    - Dst: Sha256::digest
      Src: /src/opendal/core/services/azblob/src/backend.rs:222,1
    - Dst: Some
      Src: /src/opendal/core/services/azblob/src/backend.rs:223,1
    - Dst: encode
      Src: /src/opendal/core/services/azblob/src/backend.rs:223,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 22
    argCount: 1
    argNames:
    - key
    argTypes:
    - '&[u8]'
    constantsTouched: []
    func_position:
      end: 225
      start: 218
    functionDepth: 31
    functionLinenumber: 218
    functionLinenumberEnd: 225
    functionName: AzblobBuilder::server_side_encryption_with_customer_key
    functionSourceFile: /src/opendal/core/services/azblob/src/backend.rs
    functionUses: 0
    functionsReached:
    - Sha256::digest
    - '&str::to_string'
    - encode
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn server_side_encryption_with_customer_key(mut self, key: &[u8])
      -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self::is_empty
      Src: /src/opendal/core/services/azblob/src/backend.rs:235,1
    - Dst: Some
      Src: /src/opendal/core/services/azblob/src/backend.rs:236,1
    - Dst: Self::to_string
      Src: /src/opendal/core/services/azblob/src/backend.rs:236,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 1
    argNames:
    - sas_token
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 240
      start: 234
    functionDepth: 4
    functionLinenumber: 234
    functionLinenumberEnd: 240
    functionName: AzblobBuilder::sas_token
    functionSourceFile: /src/opendal/core/services/azblob/src/backend.rs
    functionUses: 0
    functionsReached:
    - Self::is_empty
    - Self::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn sas_token(mut self, sas_token: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 1
    argNames:
    - _batch_max_operations
    argTypes:
    - usize
    constantsTouched: []
    func_position:
      end: 249
      start: 247
    functionDepth: 0
    functionLinenumber: 247
    functionLinenumberEnd: 249
    functionName: AzblobBuilder::batch_max_operations
    functionSourceFile: /src/opendal/core/services/azblob/src/backend.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: 'pub fn batch_max_operations(self, _batch_max_operations: usize) ->
      Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 255
      start: 252
    functionDepth: 0
    functionLinenumber: 252
    functionLinenumberEnd: 255
    functionName: AzblobBuilder::skip_signature
    functionSourceFile: /src/opendal/core/services/azblob/src/backend.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: pub fn skip_signature(mut self) -> Self
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: opendal_service_azure_common::azure_config_from_connection_string
      Src: /src/opendal/core/services/azblob/src/backend.rs:285,1
    - Dst: Ok
      Src: /src/opendal/core/services/azblob/src/backend.rs:287,1
    - Dst: AzblobConfig::from
      Src: /src/opendal/core/services/azblob/src/backend.rs:287,1
    - Dst: Self::into_builder
      Src: /src/opendal/core/services/azblob/src/backend.rs:287,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - conn
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 288
      start: 284
    functionDepth: 38
    functionLinenumber: 284
    functionLinenumberEnd: 288
    functionName: AzblobBuilder::from_connection_string
    functionSourceFile: /src/opendal/core/services/azblob/src/backend.rs
    functionUses: 0
    functionsReached:
    - AzblobConfig::from
    - Self::into_builder
    - opendal_service_azure_common::azure_config_from_connection_string
    - Ok
    linkageType: ''
    returnType: Result
    signature: 'pub fn from_connection_string(conn: &str) -> Result<Self>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: normalize_root
      Src: /src/opendal/core/services/azblob/src/backend.rs:297,1
    - Dst: unwrap_or_default
      Src: /src/opendal/core/services/azblob/src/backend.rs:297,1
    - Dst: is_empty
      Src: /src/opendal/core/services/azblob/src/backend.rs:301,1
    - Dst: Ok
      Src: /src/opendal/core/services/azblob/src/backend.rs:302,1
    - Dst: Err
      Src: /src/opendal/core/services/azblob/src/backend.rs:303,1
    - Dst: Error::new
      Src: /src/opendal/core/services/azblob/src/backend.rs:303,1
    - Dst: Self::with_operation
      Src: /src/opendal/core/services/azblob/src/backend.rs:303,1
    - Dst: Self::with_context
      Src: /src/opendal/core/services/azblob/src/backend.rs:303,1
    - Dst: Ok
      Src: /src/opendal/core/services/azblob/src/backend.rs:310,1
    - Dst: Self::clone
      Src: /src/opendal/core/services/azblob/src/backend.rs:310,1
    - Dst: Err
      Src: /src/opendal/core/services/azblob/src/backend.rs:311,1
    - Dst: Error::new
      Src: /src/opendal/core/services/azblob/src/backend.rs:311,1
    - Dst: Self::with_operation
      Src: /src/opendal/core/services/azblob/src/backend.rs:311,1
    - Dst: Self::with_context
      Src: /src/opendal/core/services/azblob/src/backend.rs:311,1
    - Dst: clone
      Src: /src/opendal/core/services/azblob/src/backend.rs:317,1
    - Dst: or_else
      Src: /src/opendal/core/services/azblob/src/backend.rs:317,1
    - Dst: azure_account_name_from_endpoint
      Src: /src/opendal/core/services/azblob/src/backend.rs:321,1
    - Dst: Self::as_str
      Src: /src/opendal/core/services/azblob/src/backend.rs:321,1
    - Dst: decode
      Src: /src/opendal/core/services/azblob/src/backend.rs:325,1
    - Dst: Err
      Src: /src/opendal/core/services/azblob/src/backend.rs:326,1
    - Dst: Error::new
      Src: /src/opendal/core/services/azblob/src/backend.rs:326,1
    - Dst: Self::with_operation
      Src: /src/opendal/core/services/azblob/src/backend.rs:326,1
    - Dst: Self::with_context
      Src: /src/opendal/core/services/azblob/src/backend.rs:326,1
    - Dst: Self::with_context
      Src: /src/opendal/core/services/azblob/src/backend.rs:326,1
    - Dst: Some
      Src: /src/opendal/core/services/azblob/src/backend.rs:339,1
    - Dst: build_header_value
      Src: /src/opendal/core/services/azblob/src/backend.rs:339,1
    - Dst: Result::map_err
      Src: /src/opendal/core/services/azblob/src/backend.rs:339,1
    - Dst: Error::with_context
      Src: /src/opendal/core/services/azblob/src/backend.rs:340,1
    - Dst: Some
      Src: /src/opendal/core/services/azblob/src/backend.rs:346,1
    - Dst: build_header_value
      Src: /src/opendal/core/services/azblob/src/backend.rs:346,1
    - Dst: Result::map_err
      Src: /src/opendal/core/services/azblob/src/backend.rs:346,1
    - Dst: Error::with_context
      Src: /src/opendal/core/services/azblob/src/backend.rs:347,1
    - Dst: Some
      Src: /src/opendal/core/services/azblob/src/backend.rs:355,1
    - Dst: build_header_value
      Src: /src/opendal/core/services/azblob/src/backend.rs:355,1
    - Dst: Result::map_err
      Src: /src/opendal/core/services/azblob/src/backend.rs:355,1
    - Dst: Error::with_context
      Src: /src/opendal/core/services/azblob/src/backend.rs:356,1
    - Dst: Err
      Src: /src/opendal/core/services/azblob/src/backend.rs:359,1
    - Dst: Error::new
      Src: /src/opendal/core/services/azblob/src/backend.rs:359,1
    - Dst: Context::new
      Src: /src/opendal/core/services/azblob/src/backend.rs:367,1
    - Dst: Self::with_file_read
      Src: /src/opendal/core/services/azblob/src/backend.rs:367,1
    - Dst: with_env
      Src: /src/opendal/core/services/azblob/src/backend.rs:367,1
    - Dst: DefaultCredentialProvider::new
      Src: /src/opendal/core/services/azblob/src/backend.rs:369,1
    - Dst: Self::as_deref
      Src: /src/opendal/core/services/azblob/src/backend.rs:372,1
    - Dst: as_deref
      Src: /src/opendal/core/services/azblob/src/backend.rs:372,1
    - Dst: Self::push_front
      Src: /src/opendal/core/services/azblob/src/backend.rs:374,1
    - Dst: StaticCredentialProvider::new_shared_key
      Src: /src/opendal/core/services/azblob/src/backend.rs:374,1
    - Dst: as_deref
      Src: /src/opendal/core/services/azblob/src/backend.rs:380,1
    - Dst: Self::push_front
      Src: /src/opendal/core/services/azblob/src/backend.rs:381,1
    - Dst: StaticCredentialProvider::new_sas_token
      Src: /src/opendal/core/services/azblob/src/backend.rs:381,1
    - Dst: Signer::new
      Src: /src/opendal/core/services/azblob/src/backend.rs:384,1
    - Dst: RequestSigner::new
      Src: /src/opendal/core/services/azblob/src/backend.rs:387,1
    - Dst: Self::with_service_sas_permissions
      Src: /src/opendal/core/services/azblob/src/backend.rs:387,1
    - Dst: ServiceInfo::new
      Src: /src/opendal/core/services/azblob/src/backend.rs:390,1
    - Dst: Some
      Src: /src/opendal/core/services/azblob/src/backend.rs:415,1
    - Dst: Some
      Src: /src/opendal/core/services/azblob/src/backend.rs:420,1
    - Dst: Some
      Src: /src/opendal/core/services/azblob/src/backend.rs:421,1
    - Dst: is_some
      Src: /src/opendal/core/services/azblob/src/backend.rs:426,1
    - Dst: is_some
      Src: /src/opendal/core/services/azblob/src/backend.rs:427,1
    - Dst: is_some
      Src: /src/opendal/core/services/azblob/src/backend.rs:428,1
    - Dst: is_some
      Src: /src/opendal/core/services/azblob/src/backend.rs:429,1
    - Dst: Default::default
      Src: /src/opendal/core/services/azblob/src/backend.rs:433,1
    - Dst: Ok
      Src: /src/opendal/core/services/azblob/src/backend.rs:436,1
    - Dst: Arc::new
      Src: /src/opendal/core/services/azblob/src/backend.rs:437,1
    - Dst: clone
      Src: /src/opendal/core/services/azblob/src/backend.rs:445,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 180
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 450
      start: 294
    functionDepth: 34
    functionLinenumber: 294
    functionLinenumberEnd: 450
    functionName: AzblobBuilder::build
    functionSourceFile: /src/opendal/core/services/azblob/src/backend.rs
    functionUses: 0
    functionsReached:
    - azure_account_name_from_endpoint
    - as_deref
    - Self::push_front
    - Default::default
    - Arc::new
    - clone
    - StaticCredentialProvider::new_shared_key
    - Self::clone
    - Signer::new
    - is_some
    - Self::as_str
    - Self::with_context
    - ServiceInfo::new
    - or_else
    - Ok
    - Context::new
    - normalize_root
    - build_header_value
    - Error::with_context
    - unwrap_or_default
    - decode
    - Self::as_deref
    - RequestSigner::new
    - Result::map_err
    - StaticCredentialProvider::new_sas_token
    - DefaultCredentialProvider::new
    - is_empty
    - Some
    - Self::with_service_sas_permissions
    - with_env
    - Err
    - Error::new
    - Self::with_file_read
    - Self::with_operation
    linkageType: ''
    returnType: Result
    signature: fn build(self) -> Result<impl Service>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: clone
      Src: /src/opendal/core/services/azblob/src/backend.rs:467,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 468
      start: 466
    functionDepth: 2
    functionLinenumber: 466
    functionLinenumberEnd: 468
    functionName: AzblobBackend::info
    functionSourceFile: /src/opendal/core/services/azblob/src/backend.rs
    functionUses: 0
    functionsReached:
    - clone
    linkageType: ''
    returnType: ServiceInfo
    signature: fn info(&self) -> ServiceInfo
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 472
      start: 470
    functionDepth: 0
    functionLinenumber: 470
    functionLinenumberEnd: 472
    functionName: AzblobBackend::capability
    functionSourceFile: /src/opendal/core/services/azblob/src/backend.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Capability
    signature: fn capability(&self) -> Capability
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/core/services/azblob/src/backend.rs:480,1
    - Dst: Error::new
      Src: /src/opendal/core/services/azblob/src/backend.rs:480,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - _ctx
    - _path
    - _args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpCreateDir
    constantsTouched: []
    func_position:
      end: 484
      start: 474
    functionDepth: 36
    functionLinenumber: 474
    functionLinenumberEnd: 484
    functionName: AzblobBackend::create_dir
    functionSourceFile: /src/opendal/core/services/azblob/src/backend.rs
    functionUses: 0
    functionsReached:
    - Error::new
    - Err
    linkageType: ''
    returnType: Result
    signature: 'async fn create_dir(&self,_ctx: &OperationContext,_path: &str,_args:
      OpCreateDir,) -> Result<RpCreateDir>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: azblob_get_blob_properties
      Src: /src/opendal/core/services/azblob/src/backend.rs:487,1
    - Dst: status
      Src: /src/opendal/core/services/azblob/src/backend.rs:492,1
    - Dst: headers
      Src: /src/opendal/core/services/azblob/src/backend.rs:496,1
    - Dst: parse_into_metadata
      Src: /src/opendal/core/services/azblob/src/backend.rs:497,1
    - Dst: parse_header_to_str
      Src: /src/opendal/core/services/azblob/src/backend.rs:498,1
    - Dst: Result::set_version
      Src: /src/opendal/core/services/azblob/src/backend.rs:499,1
    - Dst: parse_prefixed_headers
      Src: /src/opendal/core/services/azblob/src/backend.rs:502,1
    - Dst: HashMap::is_empty
      Src: /src/opendal/core/services/azblob/src/backend.rs:503,1
    - Dst: Result::with_user_metadata
      Src: /src/opendal/core/services/azblob/src/backend.rs:504,1
    - Dst: Ok
      Src: /src/opendal/core/services/azblob/src/backend.rs:507,1
    - Dst: RpStat::new
      Src: /src/opendal/core/services/azblob/src/backend.rs:507,1
    - Dst: Err
      Src: /src/opendal/core/services/azblob/src/backend.rs:509,1
    - Dst: super::core::parse_error
      Src: /src/opendal/core/services/azblob/src/backend.rs:509,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 35
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpStat
    constantsTouched: []
    func_position:
      end: 511
      start: 486
    functionDepth: 40
    functionLinenumber: 486
    functionLinenumberEnd: 511
    functionName: AzblobBackend::stat
    functionSourceFile: /src/opendal/core/services/azblob/src/backend.rs
    functionUses: 0
    functionsReached:
    - parse_into_metadata
    - HashMap::is_empty
    - status
    - Ok
    - RpStat::new
    - parse_header_to_str
    - Result::set_version
    - parse_prefixed_headers
    - Result::with_user_metadata
    - Err
    - headers
    - azblob_get_blob_properties
    - super::core::parse_error
    linkageType: ''
    returnType: Result
    signature: 'async fn stat(&self, ctx: &OperationContext, path: &str, args: OpStat)
      -> Result<RpStat>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/core/services/azblob/src/backend.rs:514,1
    - Dst: oio::StreamReader::new
      Src: /src/opendal/core/services/azblob/src/backend.rs:514,1
    - Dst: AzblobReader::new
      Src: /src/opendal/core/services/azblob/src/backend.rs:514,1
    - Dst: AzblobBackend::clone
      Src: /src/opendal/core/services/azblob/src/backend.rs:515,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/azblob/src/backend.rs:516,1
    - Dst: Ok
      Src: /src/opendal/core/services/azblob/src/backend.rs:522,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpRead
    constantsTouched: []
    func_position:
      end: 523
      start: 512
    functionDepth: 3
    functionLinenumber: 512
    functionLinenumberEnd: 523
    functionName: AzblobBackend::read
    functionSourceFile: /src/opendal/core/services/azblob/src/backend.rs
    functionUses: 0
    functionsReached:
    - Result::clone
    - Ok
    - AzblobReader::new
    - oio::StreamReader::new
    - AzblobBackend::clone
    linkageType: ''
    returnType: Result
    signature: 'fn read(&self, ctx: &OperationContext, path: &str, args: OpRead) ->
      Result<Self::Reader>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: AzblobWriter::new
      Src: /src/opendal/core/services/azblob/src/backend.rs:527,1
    - Dst: clone
      Src: /src/opendal/core/services/azblob/src/backend.rs:528,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/azblob/src/backend.rs:529,1
    - Dst: OpStat::clone
      Src: /src/opendal/core/services/azblob/src/backend.rs:530,1
    - Dst: to_string
      Src: /src/opendal/core/services/azblob/src/backend.rs:531,1
    - Dst: OpStat::append
      Src: /src/opendal/core/services/azblob/src/backend.rs:533,1
    - Dst: AzblobWriters::Two
      Src: /src/opendal/core/services/azblob/src/backend.rs:534,1
    - Dst: oio::AppendWriter::new
      Src: /src/opendal/core/services/azblob/src/backend.rs:534,1
    - Dst: AzblobWriters::One
      Src: /src/opendal/core/services/azblob/src/backend.rs:536,1
    - Dst: oio::BlockWriter::new
      Src: /src/opendal/core/services/azblob/src/backend.rs:536,1
    - Dst: Result::executor
      Src: /src/opendal/core/services/azblob/src/backend.rs:537,1
    - Dst: Self::clone
      Src: /src/opendal/core/services/azblob/src/backend.rs:537,1
    - Dst: OpStat::concurrent
      Src: /src/opendal/core/services/azblob/src/backend.rs:539,1
    - Dst: Ok
      Src: /src/opendal/core/services/azblob/src/backend.rs:543,1
    - Dst: Ok
      Src: /src/opendal/core/services/azblob/src/backend.rs:546,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 26
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpWrite
    constantsTouched: []
    func_position:
      end: 547
      start: 525
    functionDepth: 31
    functionLinenumber: 525
    functionLinenumberEnd: 547
    functionName: AzblobBackend::write
    functionSourceFile: /src/opendal/core/services/azblob/src/backend.rs
    functionUses: 0
    functionsReached:
    - Result::clone
    - to_string
    - OpStat::clone
    - AzblobWriters::One
    - AzblobWriter::new
    - Ok
    - AzblobWriters::Two
    - Result::executor
    - clone
    - OpStat::append
    - oio::BlockWriter::new
    - Self::clone
    - OpStat::concurrent
    - oio::AppendWriter::new
    linkageType: ''
    returnType: Result
    signature: 'fn write(&self, ctx: &OperationContext, path: &str, args: OpWrite)
      -> Result<Self::Writer>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/core/services/azblob/src/backend.rs:551,1
    - Dst: oio::BatchDeleter::new
      Src: /src/opendal/core/services/azblob/src/backend.rs:551,1
    - Dst: AzblobDeleter::new
      Src: /src/opendal/core/services/azblob/src/backend.rs:552,1
    - Dst: clone
      Src: /src/opendal/core/services/azblob/src/backend.rs:552,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/azblob/src/backend.rs:552,1
    - Dst: Ok
      Src: /src/opendal/core/services/azblob/src/backend.rs:557,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - '&OperationContext'
    constantsTouched: []
    func_position:
      end: 558
      start: 549
    functionDepth: 4
    functionLinenumber: 549
    functionLinenumberEnd: 558
    functionName: AzblobBackend::delete
    functionSourceFile: /src/opendal/core/services/azblob/src/backend.rs
    functionUses: 0
    functionsReached:
    - Result::clone
    - Ok
    - clone
    - AzblobDeleter::new
    - oio::BatchDeleter::new
    linkageType: ''
    returnType: Result
    signature: 'fn delete(&self, ctx: &OperationContext) -> Result<Self::Deleter>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: AzblobLister::new
      Src: /src/opendal/core/services/azblob/src/backend.rs:562,1
    - Dst: clone
      Src: /src/opendal/core/services/azblob/src/backend.rs:563,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/azblob/src/backend.rs:564,1
    - Dst: to_string
      Src: /src/opendal/core/services/azblob/src/backend.rs:565,1
    - Dst: OpStat::recursive
      Src: /src/opendal/core/services/azblob/src/backend.rs:566,1
    - Dst: OpStat::limit
      Src: /src/opendal/core/services/azblob/src/backend.rs:567,1
    - Dst: Ok
      Src: /src/opendal/core/services/azblob/src/backend.rs:570,1
    - Dst: oio::PageLister::new
      Src: /src/opendal/core/services/azblob/src/backend.rs:570,1
    - Dst: Ok
      Src: /src/opendal/core/services/azblob/src/backend.rs:573,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 16
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpList
    constantsTouched: []
    func_position:
      end: 574
      start: 560
    functionDepth: 36
    functionLinenumber: 560
    functionLinenumberEnd: 574
    functionName: AzblobBackend::list
    functionSourceFile: /src/opendal/core/services/azblob/src/backend.rs
    functionUses: 0
    functionsReached:
    - Result::clone
    - to_string
    - Ok
    - clone
    - AzblobLister::new
    - oio::PageLister::new
    - OpStat::limit
    - OpStat::recursive
    linkageType: ''
    returnType: Result
    signature: 'fn list(&self, ctx: &OperationContext, path: &str, args: OpList) ->
      Result<Self::Lister>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: super::copier::new_azblob_copier
      Src: /src/opendal/core/services/azblob/src/backend.rs:585,1
    - Dst: clone
      Src: /src/opendal/core/services/azblob/src/backend.rs:585,1
    - Dst: Ok
      Src: /src/opendal/core/services/azblob/src/backend.rs:586,1
    - Dst: Ok
      Src: /src/opendal/core/services/azblob/src/backend.rs:589,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 5
    argNames:
    - ctx
    - from
    - to
    - args
    - opts
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    - OpCopy
    - OpCopier
    constantsTouched: []
    func_position:
      end: 590
      start: 576
    functionDepth: 2
    functionLinenumber: 576
    functionLinenumberEnd: 590
    functionName: AzblobBackend::copy
    functionSourceFile: /src/opendal/core/services/azblob/src/backend.rs
    functionUses: 0
    functionsReached:
    - Ok
    - clone
    - super::copier::new_azblob_copier
    linkageType: ''
    returnType: Result
    signature: 'fn copy(&self,ctx: &OperationContext,from: &str,to: &str,args: OpCopy,opts:
      OpCopier,) -> Result<Self::Copier>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/core/services/azblob/src/backend.rs:599,1
    - Dst: Error::new
      Src: /src/opendal/core/services/azblob/src/backend.rs:599,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - _ctx
    - _from
    - _to
    - _args
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    - OpRename
    constantsTouched: []
    func_position:
      end: 603
      start: 592
    functionDepth: 36
    functionLinenumber: 592
    functionLinenumberEnd: 603
    functionName: AzblobBackend::rename
    functionSourceFile: /src/opendal/core/services/azblob/src/backend.rs
    functionUses: 0
    functionsReached:
    - Error::new
    - Err
    linkageType: ''
    returnType: Result
    signature: 'async fn rename(&self,_ctx: &OperationContext,_from: &str,_to: &str,_args:
      OpRename,) -> Result<RpRename>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: OpStat::operation
      Src: /src/opendal/core/services/azblob/src/backend.rs:611,1
    - Dst: azblob_head_blob_request
      Src: /src/opendal/core/services/azblob/src/backend.rs:612,1
    - Dst: azblob_get_blob_request
      Src: /src/opendal/core/services/azblob/src/backend.rs:613,1
    - Dst: azblob_put_blob_request
      Src: /src/opendal/core/services/azblob/src/backend.rs:615,1
    - Dst: OpWrite::default
      Src: /src/opendal/core/services/azblob/src/backend.rs:616,1
    - Dst: Buffer::new
      Src: /src/opendal/core/services/azblob/src/backend.rs:616,1
    - Dst: Err
      Src: /src/opendal/core/services/azblob/src/backend.rs:618,1
    - Dst: Error::new
      Src: /src/opendal/core/services/azblob/src/backend.rs:618,1
    - Dst: Err
      Src: /src/opendal/core/services/azblob/src/backend.rs:622,1
    - Dst: Error::new
      Src: /src/opendal/core/services/azblob/src/backend.rs:622,1
    - Dst: sign_query
      Src: /src/opendal/core/services/azblob/src/backend.rs:629,1
    - Dst: into_parts
      Src: /src/opendal/core/services/azblob/src/backend.rs:631,1
    - Dst: Ok
      Src: /src/opendal/core/services/azblob/src/backend.rs:633,1
    - Dst: RpPresign::new
      Src: /src/opendal/core/services/azblob/src/backend.rs:633,1
    - Dst: PresignedRequest::new
      Src: /src/opendal/core/services/azblob/src/backend.rs:633,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 34
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpPresign
    constantsTouched: []
    func_position:
      end: 638
      start: 605
    functionDepth: 39
    functionLinenumber: 605
    functionLinenumberEnd: 638
    functionName: AzblobBackend::presign
    functionSourceFile: /src/opendal/core/services/azblob/src/backend.rs
    functionUses: 0
    functionsReached:
    - sign_query
    - Buffer::new
    - Ok
    - OpStat::operation
    - azblob_put_blob_request
    - OpWrite::default
    - Err
    - Error::new
    - azblob_get_blob_request
    - RpPresign::new
    - PresignedRequest::new
    - into_parts
    - azblob_head_blob_request
    linkageType: ''
    returnType: Result
    signature: 'async fn presign(&self,ctx: &OperationContext,path: &str,args: OpPresign,)
      -> Result<RpPresign>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::options
      Src: /src/opendal/core/services/compfs/src/config.rs:36,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/compfs/src/config.rs:36,1
    - Dst: Result::root
      Src: /src/opendal/core/services/compfs/src/config.rs:38,1
    - Dst: Result::is_empty
      Src: /src/opendal/core/services/compfs/src/config.rs:39,1
    - Dst: Result::insert
      Src: /src/opendal/core/services/compfs/src/config.rs:41,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/compfs/src/config.rs:41,1
    - Dst: Result::to_string
      Src: /src/opendal/core/services/compfs/src/config.rs:41,1
    - Dst: Self::from_iter
      Src: /src/opendal/core/services/compfs/src/config.rs:44,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 19
    argCount: 1
    argNames:
    - uri
    argTypes:
    - '&opendal_core::OperatorUri'
    constantsTouched: []
    func_position:
      end: 45
      start: 35
    functionDepth: 35
    functionLinenumber: 35
    functionLinenumberEnd: 45
    functionName: CompfsConfig::from_uri
    functionSourceFile: /src/opendal/core/services/compfs/src/config.rs
    functionUses: 0
    functionsReached:
    - Result::clone
    - Self::from_iter
    - Result::to_string
    - Result::insert
    - Result::is_empty
    - Result::root
    - '&str::to_string'
    - Result::options
    linkageType: ''
    returnType: opendal_core::Result
    signature: 'fn from_uri(uri: &opendal_core::OperatorUri) -> opendal_core::Result<Self>'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 49
      start: 47
    functionDepth: 0
    functionLinenumber: 47
    functionLinenumberEnd: 49
    functionName: CompfsConfig::into_builder
    functionSourceFile: /src/opendal/core/services/compfs/src/config.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Self::Builder
    signature: fn into_builder(self) -> Self::Builder
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - core
    argTypes:
    - Arc<CompfsCore>
    constantsTouched: []
    func_position:
      end: 31
      start: 29
    functionDepth: 0
    functionLinenumber: 29
    functionLinenumberEnd: 31
    functionName: CompfsDeleter::new
    functionSourceFile: /src/opendal/core/services/compfs/src/deleter.rs
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(core: Arc<CompfsCore>) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: ends_with
      Src: /src/opendal/core/services/compfs/src/deleter.rs:36,1
    - Dst: prepare_path
      Src: /src/opendal/core/services/compfs/src/deleter.rs:37,1
    - Dst: exec
      Src: /src/opendal/core/services/compfs/src/deleter.rs:38,1
    - Dst: compio::fs::remove_dir
      Src: /src/opendal/core/services/compfs/src/deleter.rs:39,1
    - Dst: prepare_path
      Src: /src/opendal/core/services/compfs/src/deleter.rs:42,1
    - Dst: exec
      Src: /src/opendal/core/services/compfs/src/deleter.rs:43,1
    - Dst: compio::fs::remove_file
      Src: /src/opendal/core/services/compfs/src/deleter.rs:44,1
    - Dst: Ok
      Src: /src/opendal/core/services/compfs/src/deleter.rs:48,1
    - Dst: Result::kind
      Src: /src/opendal/core/services/compfs/src/deleter.rs:49,1
    - Dst: Ok
      Src: /src/opendal/core/services/compfs/src/deleter.rs:49,1
    - Dst: Err
      Src: /src/opendal/core/services/compfs/src/deleter.rs:50,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 37
    argCount: 2
    argNames:
    - path
    argTypes:
    - String
    - OpDelete
    constantsTouched: []
    func_position:
      end: 52
      start: 35
    functionDepth: 33
    functionLinenumber: 35
    functionLinenumberEnd: 52
    functionName: CompfsDeleter::delete_once
    functionSourceFile: /src/opendal/core/services/compfs/src/deleter.rs
    functionUses: 0
    functionsReached:
    - Ok
    - ends_with
    - compio::fs::remove_dir
    - Err
    - compio::fs::remove_file
    - Result::kind
    - exec
    - prepare_path
    linkageType: ''
    returnType: Result
    signature: 'async fn delete_once(&self, path: String, _: OpDelete) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: normalize
      Src: /src/opendal/core/services/compfs/src/lister.rs:35,1
    - Dst: Some
      Src: /src/opendal/core/services/compfs/src/lister.rs:38,1
    - Dst: Some
      Src: /src/opendal/core/services/compfs/src/lister.rs:39,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 3
    argNames:
    - core
    - root
    - read_dir
    argTypes:
    - Arc<CompfsCore>
    - '&Path'
    - ReadDir
    constantsTouched: []
    func_position:
      end: 41
      start: 34
    functionDepth: 35
    functionLinenumber: 34
    functionLinenumberEnd: 41
    functionName: CompfsLister::new
    functionSourceFile: /src/opendal/core/services/compfs/src/lister.rs
    functionUses: 1
    functionsReached:
    - normalize
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub(super) fn new(core: Arc<CompfsCore>, root: &Path, read_dir: ReadDir)
      -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: normalize_path
      Src: /src/opendal/core/services/compfs/src/lister.rs:45,1
    - Dst: strip_prefix
      Src: /src/opendal/core/services/compfs/src/lister.rs:46,1
    - Dst: expect
      Src: /src/opendal/core/services/compfs/src/lister.rs:46,1
    - Dst: to_string_lossy
      Src: /src/opendal/core/services/compfs/src/lister.rs:46,1
    - Dst: replace
      Src: /src/opendal/core/services/compfs/src/lister.rs:46,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 2
    argNames:
    - path
    - root
    argTypes:
    - '&Path'
    - '&Path'
    constantsTouched: []
    func_position:
      end: 52
      start: 44
    functionDepth: 34
    functionLinenumber: 44
    functionLinenumberEnd: 52
    functionName: normalize
    functionSourceFile: /src/opendal/core/services/compfs/src/lister.rs
    functionUses: 4
    functionsReached:
    - normalize_path
    - expect
    - replace
    - strip_prefix
    - to_string_lossy
    linkageType: ''
    returnType: String
    signature: 'fn normalize(path: &Path, root: &Path) -> String'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: next
      Src: /src/opendal/core/services/compfs/src/lister.rs:56,1
    - Dst: Result::transpose
      Src: /src/opendal/core/services/compfs/src/lister.rs:56,1
    - Dst: Ok
      Src: /src/opendal/core/services/compfs/src/lister.rs:57,1
    - Dst: crate::Entry::path
      Src: /src/opendal/core/services/compfs/src/lister.rs:59,1
    - Dst: normalize
      Src: /src/opendal/core/services/compfs/src/lister.rs:60,1
    - Dst: crate::Entry::file_type
      Src: /src/opendal/core/services/compfs/src/lister.rs:62,1
    - Dst: Error::kind
      Src: /src/opendal/core/services/compfs/src/lister.rs:64,1
    - Dst: Err
      Src: /src/opendal/core/services/compfs/src/lister.rs:65,1
    - Dst: is_file
      Src: /src/opendal/core/services/compfs/src/lister.rs:68,1
    - Dst: crate::Entry::metadata
      Src: /src/opendal/core/services/compfs/src/lister.rs:69,1
    - Dst: Error::kind
      Src: /src/opendal/core/services/compfs/src/lister.rs:71,1
    - Dst: Err
      Src: /src/opendal/core/services/compfs/src/lister.rs:72,1
    - Dst: oio::Entry::new
      Src: /src/opendal/core/services/compfs/src/lister.rs:74,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/compfs/src/lister.rs:76,1
    - Dst: Self::with_content_length
      Src: /src/opendal/core/services/compfs/src/lister.rs:76,1
    - Dst: len
      Src: /src/opendal/core/services/compfs/src/lister.rs:76,1
    - Dst: is_dir
      Src: /src/opendal/core/services/compfs/src/lister.rs:78,1
    - Dst: oio::Entry::new
      Src: /src/opendal/core/services/compfs/src/lister.rs:79,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/compfs/src/lister.rs:79,1
    - Dst: oio::Entry::new
      Src: /src/opendal/core/services/compfs/src/lister.rs:81,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/compfs/src/lister.rs:81,1
    - Dst: Ok
      Src: /src/opendal/core/services/compfs/src/lister.rs:84,1
    - Dst: Some
      Src: /src/opendal/core/services/compfs/src/lister.rs:84,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 55
    argCount: 2
    argNames:
    - read_dir
    - root
    argTypes:
    - '&mut ReadDir'
    - '&Path'
    constantsTouched: []
    func_position:
      end: 86
      start: 54
    functionDepth: 35
    functionLinenumber: 54
    functionLinenumberEnd: 86
    functionName: next_entry
    functionSourceFile: /src/opendal/core/services/compfs/src/lister.rs
    functionUses: 2
    functionsReached:
    - next
    - crate::Entry::path
    - Metadata::new
    - oio::Entry::new
    - Ok
    - is_file
    - Self::with_content_length
    - Err
    - Some
    - crate::Entry::metadata
    - Error::kind
    - crate::Entry::file_type
    - len
    - Result::transpose
    - normalize
    - is_dir
    linkageType: ''
    returnType: std::io::Result
    signature: 'fn next_entry(read_dir: &mut ReadDir, root: &Path) -> std::io::Result<Option<oio::Entry>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: take
      Src: /src/opendal/core/services/compfs/src/lister.rs:90,1
    - Dst: Ok
      Src: /src/opendal/core/services/compfs/src/lister.rs:91,1
    - Dst: Some
      Src: /src/opendal/core/services/compfs/src/lister.rs:91,1
    - Dst: oio::Entry::new
      Src: /src/opendal/core/services/compfs/src/lister.rs:91,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/compfs/src/lister.rs:93,1
    - Dst: take
      Src: /src/opendal/core/services/compfs/src/lister.rs:96,1
    - Dst: Ok
      Src: /src/opendal/core/services/compfs/src/lister.rs:97,1
    - Dst: clone
      Src: /src/opendal/core/services/compfs/src/lister.rs:99,1
    - Dst: exec_blocking
      Src: /src/opendal/core/services/compfs/src/lister.rs:100,1
    - Dst: next_entry
      Src: /src/opendal/core/services/compfs/src/lister.rs:103,1
    - Dst: std::io::Result::map_err
      Src: /src/opendal/core/services/compfs/src/lister.rs:103,1
    - Dst: Some
      Src: /src/opendal/core/services/compfs/src/lister.rs:108,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 41
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 111
      start: 89
    functionDepth: 37
    functionLinenumber: 89
    functionLinenumberEnd: 111
    functionName: CompfsLister::next
    functionSourceFile: /src/opendal/core/services/compfs/src/lister.rs
    functionUses: 0
    functionsReached:
    - Metadata::new
    - oio::Entry::new
    - Ok
    - std::io::Result::map_err
    - clone
    - Some
    - take
    - next_entry
    - exec_blocking
    linkageType: ''
    returnType: Result
    signature: async fn next(&mut self) -> Result<Option<oio::Entry>>
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - core
    - path
    argTypes:
    - Arc<CompfsCore>
    - PathBuf
    constantsTouched: []
    func_position:
      end: 41
      start: 39
    functionDepth: 0
    functionLinenumber: 39
    functionLinenumberEnd: 41
    functionName: CompfsReader::new
    functionSourceFile: /src/opendal/core/services/compfs/src/reader.rs
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: 'pub(super) fn new(core: Arc<CompfsCore>, path: PathBuf) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - core
    - file
    argTypes:
    - Arc<CompfsCore>
    - compio::fs::File
    constantsTouched: []
    func_position:
      end: 52
      start: 50
    functionDepth: 0
    functionLinenumber: 50
    functionLinenumberEnd: 52
    functionName: CompfsReaderHandle::new
    functionSourceFile: /src/opendal/core/services/compfs/src/reader.rs
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: 'pub(super) fn new(core: Arc<CompfsCore>, file: compio::fs::File) ->
      Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: clone
      Src: /src/opendal/core/services/compfs/src/reader.rs:59,1
    - Dst: exec
      Src: /src/opendal/core/services/compfs/src/reader.rs:60,1
    - Dst: compio::fs::OpenOptions::new
      Src: /src/opendal/core/services/compfs/src/reader.rs:63,1
    - Dst: Self::read
      Src: /src/opendal/core/services/compfs/src/reader.rs:63,1
    - Dst: Result::open
      Src: /src/opendal/core/services/compfs/src/reader.rs:63,1
    - Dst: Ok
      Src: /src/opendal/core/services/compfs/src/reader.rs:67,1
    - Dst: Ok
      Src: /src/opendal/core/services/compfs/src/reader.rs:71,1
    - Dst: CompfsReaderHandle::new
      Src: /src/opendal/core/services/compfs/src/reader.rs:71,1
    - Dst: clone
      Src: /src/opendal/core/services/compfs/src/reader.rs:71,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 23
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 72
      start: 58
    functionDepth: 34
    functionLinenumber: 58
    functionLinenumberEnd: 72
    functionName: CompfsReader::open
    functionSourceFile: /src/opendal/core/services/compfs/src/reader.rs
    functionUses: 0
    functionsReached:
    - Self::read
    - Ok
    - clone
    - CompfsReaderHandle::new
    - compio::fs::OpenOptions::new
    - exec
    - Result::open
    linkageType: ''
    returnType: Result
    signature: async fn open(&self) -> Result<Self::Handle>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/core/services/compfs/src/reader.rs:76,1
    - Dst: Buffer::new
      Src: /src/opendal/core/services/compfs/src/reader.rs:76,1
    - Dst: get
      Src: /src/opendal/core/services/compfs/src/reader.rs:79,1
    - Dst: Result::reserve
      Src: /src/opendal/core/services/compfs/src/reader.rs:80,1
    - Dst: clone
      Src: /src/opendal/core/services/compfs/src/reader.rs:82,1
    - Dst: exec
      Src: /src/opendal/core/services/compfs/src/reader.rs:83,1
    - Dst: Ok
      Src: /src/opendal/core/services/compfs/src/reader.rs:87,1
    - Dst: Result::into_inner
      Src: /src/opendal/core/services/compfs/src/reader.rs:87,1
    - Dst: Result::split_to
      Src: /src/opendal/core/services/compfs/src/reader.rs:91,1
    - Dst: Self::freeze
      Src: /src/opendal/core/services/compfs/src/reader.rs:91,1
    - Dst: put
      Src: /src/opendal/core/services/compfs/src/reader.rs:92,1
    - Dst: Ok
      Src: /src/opendal/core/services/compfs/src/reader.rs:94,1
    - Dst: CompfsBuffer::from
      Src: /src/opendal/core/services/compfs/src/reader.rs:94,1
    - Dst: Buffer::from
      Src: /src/opendal/core/services/compfs/src/reader.rs:94,1
    - Dst: Self::into
      Src: /src/opendal/core/services/compfs/src/reader.rs:94,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 41
    argCount: 3
    argNames:
    - handle
    - offset
    - size
    argTypes:
    - '&Self::Handle'
    - u64
    - usize
    constantsTouched: []
    func_position:
      end: 95
      start: 74
    functionDepth: 33
    functionLinenumber: 74
    functionLinenumberEnd: 95
    functionName: CompfsReader::read_at
    functionSourceFile: /src/opendal/core/services/compfs/src/reader.rs
    functionUses: 0
    functionsReached:
    - Buffer::new
    - get
    - Ok
    - clone
    - Result::into_inner
    - Result::split_to
    - CompfsBuffer::from
    - Self::into
    - put
    - Self::freeze
    - Result::reserve
    - exec
    - Buffer::from
    linkageType: ''
    returnType: Result
    signature: 'async fn read_at(handle: &Self::Handle, offset: u64, size: usize)
      -> Result<Buffer>'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 3
    argNames:
    - core
    - path
    - args
    argTypes:
    - Arc<CompfsCore>
    - PathBuf
    - OpWrite
    constantsTouched: []
    func_position:
      end: 113
      start: 106
    functionDepth: 0
    functionLinenumber: 106
    functionLinenumberEnd: 113
    functionName: CompfsLazyWriter::new
    functionSourceFile: /src/opendal/core/services/compfs/src/reader.rs
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: 'pub(super) fn new(core: Arc<CompfsCore>, path: PathBuf, args: OpWrite)
      -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: is_none
      Src: /src/opendal/core/services/compfs/src/reader.rs:116,1
    - Dst: clone
      Src: /src/opendal/core/services/compfs/src/reader.rs:117,1
    - Dst: append
      Src: /src/opendal/core/services/compfs/src/reader.rs:118,1
    - Dst: exec
      Src: /src/opendal/core/services/compfs/src/reader.rs:119,1
    - Dst: parent
      Src: /src/opendal/core/services/compfs/src/reader.rs:122,1
    - Dst: compio::fs::create_dir_all
      Src: /src/opendal/core/services/compfs/src/reader.rs:123,1
    - Dst: compio::fs::OpenOptions::new
      Src: /src/opendal/core/services/compfs/src/reader.rs:125,1
    - Dst: Self::create
      Src: /src/opendal/core/services/compfs/src/reader.rs:125,1
    - Dst: Result::write
      Src: /src/opendal/core/services/compfs/src/reader.rs:125,1
    - Dst: Result::truncate
      Src: /src/opendal/core/services/compfs/src/reader.rs:125,1
    - Dst: open
      Src: /src/opendal/core/services/compfs/src/reader.rs:125,1
    - Dst: Cursor::new
      Src: /src/opendal/core/services/compfs/src/reader.rs:131,1
    - Dst: Result::get_ref
      Src: /src/opendal/core/services/compfs/src/reader.rs:133,1
    - Dst: metadata
      Src: /src/opendal/core/services/compfs/src/reader.rs:133,1
    - Dst: len
      Src: /src/opendal/core/services/compfs/src/reader.rs:133,1
    - Dst: Result::set_position
      Src: /src/opendal/core/services/compfs/src/reader.rs:134,1
    - Dst: Ok
      Src: /src/opendal/core/services/compfs/src/reader.rs:136,1
    - Dst: Some
      Src: /src/opendal/core/services/compfs/src/reader.rs:140,1
    - Dst: CompfsWriter::new
      Src: /src/opendal/core/services/compfs/src/reader.rs:140,1
    - Dst: clone
      Src: /src/opendal/core/services/compfs/src/reader.rs:140,1
    - Dst: Ok
      Src: /src/opendal/core/services/compfs/src/reader.rs:143,1
    - Dst: as_mut
      Src: /src/opendal/core/services/compfs/src/reader.rs:143,1
    - Dst: expect
      Src: /src/opendal/core/services/compfs/src/reader.rs:143,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 66
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 144
      start: 115
    functionDepth: 31
    functionLinenumber: 115
    functionLinenumberEnd: 144
    functionName: CompfsLazyWriter::inner
    functionSourceFile: /src/opendal/core/services/compfs/src/reader.rs
    functionUses: 3
    functionsReached:
    - is_none
    - as_mut
    - Result::truncate
    - clone
    - compio::fs::OpenOptions::new
    - CompfsWriter::new
    - Self::create
    - parent
    - Result::get_ref
    - expect
    - Ok
    - open
    - len
    - Some
    - append
    - Result::write
    - Result::set_position
    - exec
    - Cursor::new
    - metadata
    - compio::fs::create_dir_all
    linkageType: ''
    returnType: Result
    signature: async fn inner(&mut self) -> Result<&mut CompfsWriter>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: CompfsLazyWriter::inner
      Src: /src/opendal/core/services/compfs/src/reader.rs:149,1
    - Dst: write
      Src: /src/opendal/core/services/compfs/src/reader.rs:149,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 1
    argNames:
    - bs
    argTypes:
    - Buffer
    constantsTouched: []
    func_position:
      end: 150
      start: 148
    functionDepth: 32
    functionLinenumber: 148
    functionLinenumberEnd: 150
    functionName: CompfsLazyWriter::write
    functionSourceFile: /src/opendal/core/services/compfs/src/reader.rs
    functionUses: 0
    functionsReached:
    - write
    - CompfsLazyWriter::inner
    linkageType: ''
    returnType: Result
    signature: 'async fn write(&mut self, bs: Buffer) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: CompfsLazyWriter::inner
      Src: /src/opendal/core/services/compfs/src/reader.rs:153,1
    - Dst: close
      Src: /src/opendal/core/services/compfs/src/reader.rs:153,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 154
      start: 152
    functionDepth: 32
    functionLinenumber: 152
    functionLinenumberEnd: 154
    functionName: CompfsLazyWriter::close
    functionSourceFile: /src/opendal/core/services/compfs/src/reader.rs
    functionUses: 0
    functionsReached:
    - close
    - CompfsLazyWriter::inner
    linkageType: ''
    returnType: Result
    signature: async fn close(&mut self) -> Result<Metadata>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: CompfsLazyWriter::inner
      Src: /src/opendal/core/services/compfs/src/reader.rs:157,1
    - Dst: abort
      Src: /src/opendal/core/services/compfs/src/reader.rs:157,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 158
      start: 156
    functionDepth: 32
    functionLinenumber: 156
    functionLinenumberEnd: 158
    functionName: CompfsLazyWriter::abort
    functionSourceFile: /src/opendal/core/services/compfs/src/reader.rs
    functionUses: 0
    functionsReached:
    - abort
    - CompfsLazyWriter::inner
    linkageType: ''
    returnType: Result
    signature: async fn abort(&mut self) -> Result<()>
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - core
    - path
    argTypes:
    - Arc<CompfsCore>
    - PathBuf
    constantsTouched: []
    func_position:
      end: 174
      start: 168
    functionDepth: 0
    functionLinenumber: 168
    functionLinenumberEnd: 174
    functionName: CompfsLazyLister::new
    functionSourceFile: /src/opendal/core/services/compfs/src/reader.rs
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: 'pub(super) fn new(core: Arc<CompfsCore>, path: PathBuf) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: is_none
      Src: /src/opendal/core/services/compfs/src/reader.rs:179,1
    - Dst: clone
      Src: /src/opendal/core/services/compfs/src/reader.rs:180,1
    - Dst: Some
      Src: /src/opendal/core/services/compfs/src/reader.rs:181,1
    - Dst: exec_blocking
      Src: /src/opendal/core/services/compfs/src/reader.rs:182,1
    - Dst: clone
      Src: /src/opendal/core/services/compfs/src/reader.rs:185,1
    - Dst: std::fs::read_dir
      Src: /src/opendal/core/services/compfs/src/reader.rs:186,1
    - Dst: Some
      Src: /src/opendal/core/services/compfs/src/reader.rs:190,1
    - Dst: CompfsLister::new
      Src: /src/opendal/core/services/compfs/src/reader.rs:190,1
    - Dst: clone
      Src: /src/opendal/core/services/compfs/src/reader.rs:190,1
    - Dst: Result::kind
      Src: /src/opendal/core/services/compfs/src/reader.rs:191,1
    - Dst: Err
      Src: /src/opendal/core/services/compfs/src/reader.rs:192,1
    - Dst: new_std_io_error
      Src: /src/opendal/core/services/compfs/src/reader.rs:192,1
    - Dst: as_mut
      Src: /src/opendal/core/services/compfs/src/reader.rs:197,1
    - Dst: expect
      Src: /src/opendal/core/services/compfs/src/reader.rs:197,1
    - Dst: Result::next
      Src: /src/opendal/core/services/compfs/src/reader.rs:198,1
    - Dst: Ok
      Src: /src/opendal/core/services/compfs/src/reader.rs:199,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 45
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 201
      start: 178
    functionDepth: 37
    functionLinenumber: 178
    functionLinenumberEnd: 201
    functionName: CompfsLazyLister::next
    functionSourceFile: /src/opendal/core/services/compfs/src/reader.rs
    functionUses: 0
    functionsReached:
    - is_none
    - as_mut
    - std::fs::read_dir
    - expect
    - Ok
    - clone
    - Some
    - Err
    - Result::next
    - Result::kind
    - new_std_io_error
    - CompfsLister::new
    - exec_blocking
    linkageType: ''
    returnType: Result
    signature: async fn next(&mut self) -> Result<Option<oio::Entry>>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: first
      Src: /src/opendal/core/services/compfs/src/core.rs:34,1
    - Dst: map_or
      Src: /src/opendal/core/services/compfs/src/core.rs:34,1
    - Dst: Timestamp::as_ref
      Src: /src/opendal/core/services/compfs/src/core.rs:34,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 35
      start: 33
    functionDepth: 1
    functionLinenumber: 33
    functionLinenumberEnd: 35
    functionName: CompfsBuffer::as_init
    functionSourceFile: /src/opendal/core/services/compfs/src/core.rs
    functionUses: 0
    functionsReached:
    - Timestamp::as_ref
    - map_or
    - first
    linkageType: ''
    returnType: '&[u8]'
    signature: fn as_init(&self) -> &[u8]
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: into
      Src: /src/opendal/core/services/compfs/src/core.rs:40,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - buf
    argTypes:
    - CompfsBuffer
    constantsTouched: []
    func_position:
      end: 41
      start: 39
    functionDepth: 29
    functionLinenumber: 39
    functionLinenumberEnd: 41
    functionName: opendal_core::Buffer::from
    functionSourceFile: /src/opendal/core/services/compfs/src/core.rs
    functionUses: 0
    functionsReached:
    - into
    linkageType: ''
    returnType: Self
    signature: 'fn from(buf: CompfsBuffer) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self
      Src: /src/opendal/core/services/compfs/src/core.rs:46,1
    - Dst: io::Result::by_ref
      Src: /src/opendal/core/services/compfs/src/core.rs:46,1
    - Dst: collect
      Src: /src/opendal/core/services/compfs/src/core.rs:46,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - buf
    argTypes:
    - opendal_core::Buffer
    constantsTouched: []
    func_position:
      end: 47
      start: 45
    functionDepth: 36
    functionLinenumber: 45
    functionLinenumberEnd: 47
    functionName: CompfsBuffer::from
    functionSourceFile: /src/opendal/core/services/compfs/src/core.rs
    functionUses: 3
    functionsReached:
    - Self
    - collect
    - io::Result::by_ref
    linkageType: ''
    returnType: Self
    signature: 'fn from(mut buf: opendal_core::Buffer) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: iter
      Src: /src/opendal/core/services/compfs/src/core.rs:52,1
    - Dst: map
      Src: /src/opendal/core/services/compfs/src/core.rs:52,1
    - Dst: Timestamp::as_ref
      Src: /src/opendal/core/services/compfs/src/core.rs:52,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 53
      start: 51
    functionDepth: 1
    functionLinenumber: 51
    functionLinenumberEnd: 53
    functionName: CompfsBuffer::iter_slice
    functionSourceFile: /src/opendal/core/services/compfs/src/core.rs
    functionUses: 0
    functionsReached:
    - Timestamp::as_ref
    - map
    - iter
    linkageType: ''
    returnType: impl Iterator
    signature: fn iter_slice(&self) -> impl Iterator<Item = &[u8]>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: trim_end_matches
      Src: /src/opendal/core/services/compfs/src/core.rs:72,1
    - Dst: Path::new
      Src: /src/opendal/core/services/compfs/src/core.rs:73,1
    - Dst: Self::components
      Src: /src/opendal/core/services/compfs/src/core.rs:73,1
    - Dst: any
      Src: /src/opendal/core/services/compfs/src/core.rs:73,1
    - Dst: Err
      Src: /src/opendal/core/services/compfs/src/core.rs:77,1
    - Dst: Error::new
      Src: /src/opendal/core/services/compfs/src/core.rs:77,1
    - Dst: Self::with_context
      Src: /src/opendal/core/services/compfs/src/core.rs:77,1
    - Dst: Ok
      Src: /src/opendal/core/services/compfs/src/core.rs:83,1
    - Dst: join
      Src: /src/opendal/core/services/compfs/src/core.rs:83,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 20
    argCount: 1
    argNames:
    - path
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 84
      start: 70
    functionDepth: 32
    functionLinenumber: 70
    functionLinenumberEnd: 84
    functionName: CompfsCore::prepare_path
    functionSourceFile: /src/opendal/core/services/compfs/src/core.rs
    functionUses: 1
    functionsReached:
    - Self::components
    - Ok
    - join
    - Self::with_context
    - trim_end_matches
    - Err
    - Error::new
    - Path::new
    - any
    linkageType: ''
    returnType: Result
    signature: 'pub fn prepare_path(&self, path: &str) -> Result<PathBuf>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: dispatch
      Src: /src/opendal/core/services/compfs/src/core.rs:92,1
    - Dst: map_err
      Src: /src/opendal/core/services/compfs/src/core.rs:92,1
    - Dst: Error::new
      Src: /src/opendal/core/services/compfs/src/core.rs:94,1
    - Dst: map_err
      Src: /src/opendal/core/services/compfs/src/core.rs:92,1
    - Dst: Error::new
      Src: /src/opendal/core/services/compfs/src/core.rs:96,1
    - Dst: map_err
      Src: /src/opendal/core/services/compfs/src/core.rs:92,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 1
    argNames:
    - f
    argTypes:
    - Fn
    constantsTouched: []
    func_position:
      end: 98
      start: 86
    functionDepth: 33
    functionLinenumber: 86
    functionLinenumberEnd: 98
    functionName: CompfsCore::exec
    functionSourceFile: /src/opendal/core/services/compfs/src/core.rs
    functionUses: 1
    functionsReached:
    - map_err
    - dispatch
    - Error::new
    linkageType: ''
    returnType: opendal_core::Result
    signature: 'pub async fn exec<Fn, Fut, R>(&self, f: Fn) -> opendal_core::Result<R>whereFn:
      FnOnce() -> Fut + Send + ''static,Fut: Future<Output = std::io::Result<R>> +
      ''static,R: Send + ''static,'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: dispatch_blocking
      Src: /src/opendal/core/services/compfs/src/core.rs:105,1
    - Dst: map_err
      Src: /src/opendal/core/services/compfs/src/core.rs:105,1
    - Dst: Error::new
      Src: /src/opendal/core/services/compfs/src/core.rs:107,1
    - Dst: map_err
      Src: /src/opendal/core/services/compfs/src/core.rs:105,1
    - Dst: Error::new
      Src: /src/opendal/core/services/compfs/src/core.rs:109,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 1
    argNames:
    - f
    argTypes:
    - Fn
    constantsTouched: []
    func_position:
      end: 110
      start: 100
    functionDepth: 36
    functionLinenumber: 100
    functionLinenumberEnd: 110
    functionName: CompfsCore::exec_blocking
    functionSourceFile: /src/opendal/core/services/compfs/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - dispatch_blocking
    - Error::new
    linkageType: ''
    returnType: Result
    signature: 'pub async fn exec_blocking<Fn, R>(&self, f: Fn) -> Result<R>whereFn:
      FnOnce() -> R + Send + ''static,R: Send + ''static,'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: setup_buffer
      Src: /src/opendal/core/services/compfs/src/core.rs:141,1
    - Dst: IoBuf::as_init
      Src: /src/opendal/core/services/compfs/src/core.rs:142,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 145
      start: 140
    functionDepth: 33
    functionLinenumber: 140
    functionLinenumberEnd: 145
    functionName: tests::test_io_buf
    functionSourceFile: /src/opendal/core/services/compfs/src/core.rs
    functionUses: 0
    functionsReached:
    - setup_buffer
    - IoBuf::as_init
    linkageType: ''
    returnType: void
    signature: fn test_io_buf()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: setup_buffer
      Src: /src/opendal/core/services/compfs/src/core.rs:149,1
    - Dst: io::Result::iter_slice
      Src: /src/opendal/core/services/compfs/src/core.rs:150,1
    - Dst: impl Iterator::flatten
      Src: /src/opendal/core/services/compfs/src/core.rs:150,1
    - Dst: copied
      Src: /src/opendal/core/services/compfs/src/core.rs:150,1
    - Dst: iter_slice().flatten().copied().collect::<Bytes>
      Src: /src/opendal/core/services/compfs/src/core.rs:150,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 154
      start: 148
    functionDepth: 33
    functionLinenumber: 148
    functionLinenumberEnd: 154
    functionName: tests::test_io_vectored_buf
    functionSourceFile: /src/opendal/core/services/compfs/src/core.rs
    functionUses: 0
    functionsReached:
    - io::Result::iter_slice
    - iter_slice().flatten().copied().collect::<Bytes>
    - copied
    - impl Iterator::flatten
    - setup_buffer
    linkageType: ''
    returnType: void
    signature: fn test_io_vectored_buf()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: ServiceInfo::new
      Src: /src/opendal/core/services/compfs/src/core.rs:158,1
    - Dst: Capability::default
      Src: /src/opendal/core/services/compfs/src/core.rs:159,1
    - Dst: PathBuf::from
      Src: /src/opendal/core/services/compfs/src/core.rs:160,1
    - Dst: Dispatcher::new
      Src: /src/opendal/core/services/compfs/src/core.rs:161,1
    - Dst: Self::unwrap
      Src: /src/opendal/core/services/compfs/src/core.rs:161,1
    - Dst: oio::PooledBuf::new
      Src: /src/opendal/core/services/compfs/src/core.rs:162,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 164
      start: 156
    functionDepth: 33
    functionLinenumber: 156
    functionLinenumberEnd: 164
    functionName: tests::new_test_core
    functionSourceFile: /src/opendal/core/services/compfs/src/core.rs
    functionUses: 0
    functionsReached:
    - PathBuf::from
    - ServiceInfo::new
    - Self::unwrap
    - oio::PooledBuf::new
    - Capability::default
    - Dispatcher::new
    linkageType: ''
    returnType: CompfsCore
    signature: fn new_test_core() -> CompfsCore
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Arc::new
      Src: /src/opendal/core/services/monoiofs/src/core.rs:325,1
    - Dst: MonoiofsCore::new
      Src: /src/opendal/core/services/monoiofs/src/core.rs:325,1
    - Dst: PathBuf::from
      Src: /src/opendal/core/services/monoiofs/src/core.rs:325,1
    - Dst: CompfsCore::prepare_path
      Src: /src/opendal/core/services/monoiofs/src/core.rs:327,1
    - Dst: Result::unwrap_err
      Src: /src/opendal/core/services/monoiofs/src/core.rs:327,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 334
      start: 324
    functionDepth: 32
    functionLinenumber: 324
    functionLinenumberEnd: 334
    functionName: tests::test_prepare_path_rejects_parent_dir
    functionSourceFile: /src/opendal/core/services/monoiofs/src/core.rs
    functionUses: 0
    functionsReached:
    - PathBuf::from
    - MonoiofsCore::new
    - Arc::new
    - CompfsCore::prepare_path
    - Result::unwrap_err
    linkageType: ''
    returnType: void
    signature: async fn test_prepare_path_rejects_parent_dir()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Arc::new
      Src: /src/opendal/core/services/monoiofs/src/core.rs:338,1
    - Dst: MonoiofsCore::new
      Src: /src/opendal/core/services/monoiofs/src/core.rs:338,1
    - Dst: PathBuf::from
      Src: /src/opendal/core/services/monoiofs/src/core.rs:338,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 357
      start: 337
    functionDepth: 32
    functionLinenumber: 337
    functionLinenumberEnd: 357
    functionName: tests::test_prepare_path_allows_normal_keys
    functionSourceFile: /src/opendal/core/services/monoiofs/src/core.rs
    functionUses: 0
    functionsReached:
    - PathBuf::from
    - MonoiofsCore::new
    - Arc::new
    linkageType: ''
    returnType: void
    signature: async fn test_prepare_path_allows_normal_keys()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Some
      Src: /src/opendal/core/services/compfs/src/writer.rs:39,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - core
    - file
    argTypes:
    - Arc<CompfsCore>
    - Cursor<File>
    constantsTouched: []
    func_position:
      end: 41
      start: 36
    functionDepth: 0
    functionLinenumber: 36
    functionLinenumberEnd: 41
    functionName: CompfsWriter::new
    functionSourceFile: /src/opendal/core/services/compfs/src/writer.rs
    functionUses: 1
    functionsReached:
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub(super) fn new(core: Arc<CompfsCore>, file: Cursor<File>) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: clone
      Src: /src/opendal/core/services/compfs/src/writer.rs:46,1
    - Dst: Err
      Src: /src/opendal/core/services/compfs/src/writer.rs:47,1
    - Dst: Error::new
      Src: /src/opendal/core/services/compfs/src/writer.rs:47,1
    - Dst: CompfsBuffer::from
      Src: /src/opendal/core/services/compfs/src/writer.rs:50,1
    - Dst: exec
      Src: /src/opendal/core/services/compfs/src/writer.rs:51,1
    - Dst: Ok
      Src: /src/opendal/core/services/compfs/src/writer.rs:55,1
    - Dst: Result::position
      Src: /src/opendal/core/services/compfs/src/writer.rs:55,1
    - Dst: as_mut
      Src: /src/opendal/core/services/compfs/src/writer.rs:58,1
    - Dst: unwrap
      Src: /src/opendal/core/services/compfs/src/writer.rs:58,1
    - Dst: set_position
      Src: /src/opendal/core/services/compfs/src/writer.rs:58,1
    - Dst: Ok
      Src: /src/opendal/core/services/compfs/src/writer.rs:60,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 28
    argCount: 1
    argNames:
    - bs
    argTypes:
    - Buffer
    constantsTouched: []
    func_position:
      end: 61
      start: 45
    functionDepth: 36
    functionLinenumber: 45
    functionLinenumberEnd: 61
    functionName: CompfsWriter::write
    functionSourceFile: /src/opendal/core/services/compfs/src/writer.rs
    functionUses: 0
    functionsReached:
    - as_mut
    - Ok
    - set_position
    - unwrap
    - clone
    - Error::new
    - Err
    - CompfsBuffer::from
    - exec
    - Result::position
    linkageType: ''
    returnType: Result
    signature: 'async fn write(&mut self, bs: Buffer) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: take
      Src: /src/opendal/core/services/compfs/src/writer.rs:64,1
    - Dst: Err
      Src: /src/opendal/core/services/compfs/src/writer.rs:65,1
    - Dst: Error::new
      Src: /src/opendal/core/services/compfs/src/writer.rs:65,1
    - Dst: exec
      Src: /src/opendal/core/services/compfs/src/writer.rs:68,1
    - Dst: Result::get_ref
      Src: /src/opendal/core/services/compfs/src/writer.rs:70,1
    - Dst: sync_all
      Src: /src/opendal/core/services/compfs/src/writer.rs:70,1
    - Dst: Result::into_inner
      Src: /src/opendal/core/services/compfs/src/writer.rs:71,1
    - Dst: Arc::close
      Src: /src/opendal/core/services/compfs/src/writer.rs:71,1
    - Dst: Ok
      Src: /src/opendal/core/services/compfs/src/writer.rs:75,1
    - Dst: Metadata::default
      Src: /src/opendal/core/services/compfs/src/writer.rs:75,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 28
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 76
      start: 63
    functionDepth: 36
    functionLinenumber: 63
    functionLinenumberEnd: 76
    functionName: CompfsWriter::close
    functionSourceFile: /src/opendal/core/services/compfs/src/writer.rs
    functionUses: 0
    functionsReached:
    - Result::get_ref
    - sync_all
    - Metadata::default
    - Ok
    - Arc::close
    - Result::into_inner
    - Error::new
    - take
    - Err
    - exec
    linkageType: ''
    returnType: Result
    signature: async fn close(&mut self) -> Result<Metadata>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/core/services/compfs/src/writer.rs:79,1
    - Dst: Error::new
      Src: /src/opendal/core/services/compfs/src/writer.rs:79,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 83
      start: 78
    functionDepth: 36
    functionLinenumber: 78
    functionLinenumberEnd: 83
    functionName: CompfsWriter::abort
    functionSourceFile: /src/opendal/core/services/compfs/src/writer.rs
    functionUses: 0
    functionsReached:
    - Error::new
    - Err
    linkageType: ''
    returnType: Result
    signature: async fn abort(&mut self) -> Result<()>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: register::<Compfs>
      Src: /src/opendal/core/services/compfs/src/lib.rs:38,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - registry
    argTypes:
    - '&opendal_core::OperatorRegistry'
    constantsTouched: []
    func_position:
      end: 39
      start: 37
    functionDepth: 0
    functionLinenumber: 37
    functionLinenumberEnd: 39
    functionName: register_compfs_service
    functionSourceFile: /src/opendal/core/services/compfs/src/lib.rs
    functionUses: 1
    functionsReached:
    - register::<Compfs>
    linkageType: ''
    returnType: void
    signature: 'pub fn register_compfs_service(registry: &opendal_core::OperatorRegistry)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::is_empty
      Src: /src/opendal/core/services/compfs/src/backend.rs:41,1
    - Dst: Some
      Src: /src/opendal/core/services/compfs/src/backend.rs:44,1
    - Dst: Result::to_string
      Src: /src/opendal/core/services/compfs/src/backend.rs:44,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - root
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 48
      start: 40
    functionDepth: 4
    functionLinenumber: 40
    functionLinenumberEnd: 48
    functionName: CompfsBuilder::root
    functionSourceFile: /src/opendal/core/services/compfs/src/backend.rs
    functionUses: 0
    functionsReached:
    - Result::is_empty
    - Result::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn root(mut self, root: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/core/services/compfs/src/backend.rs:56,1
    - Dst: Err
      Src: /src/opendal/core/services/compfs/src/backend.rs:57,1
    - Dst: Error::new
      Src: /src/opendal/core/services/compfs/src/backend.rs:57,1
    - Dst: std::fs::metadata
      Src: /src/opendal/core/services/compfs/src/backend.rs:64,1
    - Dst: Result::kind
      Src: /src/opendal/core/services/compfs/src/backend.rs:65,1
    - Dst: std::fs::create_dir_all
      Src: /src/opendal/core/services/compfs/src/backend.rs:67,1
    - Dst: map_err
      Src: /src/opendal/core/services/compfs/src/backend.rs:67,1
    - Dst: Error::new
      Src: /src/opendal/core/services/compfs/src/backend.rs:68,1
    - Dst: Self::with_operation
      Src: /src/opendal/core/services/compfs/src/backend.rs:68,1
    - Dst: Self::with_context
      Src: /src/opendal/core/services/compfs/src/backend.rs:68,1
    - Dst: Result::as_str
      Src: /src/opendal/core/services/compfs/src/backend.rs:70,1
    - Dst: Self::set_source
      Src: /src/opendal/core/services/compfs/src/backend.rs:68,1
    - Dst: Dispatcher::new
      Src: /src/opendal/core/services/compfs/src/backend.rs:75,1
    - Dst: Self::map_err
      Src: /src/opendal/core/services/compfs/src/backend.rs:75,1
    - Dst: Error::new
      Src: /src/opendal/core/services/compfs/src/backend.rs:76,1
    - Dst: ServiceInfo::new
      Src: /src/opendal/core/services/compfs/src/backend.rs:82,1
    - Dst: Default::default
      Src: /src/opendal/core/services/compfs/src/backend.rs:101,1
    - Dst: Result::into
      Src: /src/opendal/core/services/compfs/src/backend.rs:103,1
    - Dst: oio::PooledBuf::new
      Src: /src/opendal/core/services/compfs/src/backend.rs:105,1
    - Dst: Ok
      Src: /src/opendal/core/services/compfs/src/backend.rs:107,1
    - Dst: Arc::new
      Src: /src/opendal/core/services/compfs/src/backend.rs:108,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 47
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 110
      start: 54
    functionDepth: 36
    functionLinenumber: 54
    functionLinenumberEnd: 110
    functionName: CompfsBuilder::build
    functionSourceFile: /src/opendal/core/services/compfs/src/backend.rs
    functionUses: 0
    functionsReached:
    - map_err
    - ServiceInfo::new
    - Ok
    - oio::PooledBuf::new
    - Default::default
    - Arc::new
    - Error::new
    - Err
    - std::fs::create_dir_all
    - Result::into
    - Self::with_operation
    - Dispatcher::new
    - Result::kind
    - Result::as_str
    - std::fs::metadata
    - Self::set_source
    - Self::with_context
    - Self::map_err
    linkageType: ''
    returnType: Result
    signature: fn build(self) -> Result<impl Service>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: clone
      Src: /src/opendal/core/services/compfs/src/backend.rs:126,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 127
      start: 125
    functionDepth: 2
    functionLinenumber: 125
    functionLinenumberEnd: 127
    functionName: CompfsBackend::info
    functionSourceFile: /src/opendal/core/services/compfs/src/backend.rs
    functionUses: 0
    functionsReached:
    - clone
    linkageType: ''
    returnType: ServiceInfo
    signature: fn info(&self) -> ServiceInfo
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 131
      start: 129
    functionDepth: 0
    functionLinenumber: 129
    functionLinenumberEnd: 131
    functionName: CompfsBackend::capability
    functionSourceFile: /src/opendal/core/services/compfs/src/backend.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Capability
    signature: fn capability(&self) -> Capability
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: prepare_path
      Src: /src/opendal/core/services/compfs/src/backend.rs:139,1
    - Dst: exec
      Src: /src/opendal/core/services/compfs/src/backend.rs:141,1
    - Dst: compio::fs::create_dir_all
      Src: /src/opendal/core/services/compfs/src/backend.rs:142,1
    - Dst: Ok
      Src: /src/opendal/core/services/compfs/src/backend.rs:145,1
    - Dst: RpCreateDir::default
      Src: /src/opendal/core/services/compfs/src/backend.rs:145,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 3
    argNames:
    - _ctx
    - path
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpCreateDir
    constantsTouched: []
    func_position:
      end: 146
      start: 133
    functionDepth: 33
    functionLinenumber: 133
    functionLinenumberEnd: 146
    functionName: CompfsBackend::create_dir
    functionSourceFile: /src/opendal/core/services/compfs/src/backend.rs
    functionUses: 0
    functionsReached:
    - RpCreateDir::default
    - Ok
    - exec
    - prepare_path
    - compio::fs::create_dir_all
    linkageType: ''
    returnType: Result
    signature: 'async fn create_dir(&self,_ctx: &OperationContext,path: &str,_: OpCreateDir,)
      -> Result<RpCreateDir>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: prepare_path
      Src: /src/opendal/core/services/compfs/src/backend.rs:149,1
    - Dst: exec
      Src: /src/opendal/core/services/compfs/src/backend.rs:150,1
    - Dst: compio::fs::metadata
      Src: /src/opendal/core/services/compfs/src/backend.rs:152,1
    - Dst: Result::file_type
      Src: /src/opendal/core/services/compfs/src/backend.rs:154,1
    - Dst: Capability::is_dir
      Src: /src/opendal/core/services/compfs/src/backend.rs:155,1
    - Dst: Capability::is_file
      Src: /src/opendal/core/services/compfs/src/backend.rs:157,1
    - Dst: Timestamp::try_from
      Src: /src/opendal/core/services/compfs/src/backend.rs:162,1
    - Dst: Result::modified
      Src: /src/opendal/core/services/compfs/src/backend.rs:162,1
    - Dst: Option::map_err
      Src: /src/opendal/core/services/compfs/src/backend.rs:162,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/compfs/src/backend.rs:163,1
    - Dst: Self::with_last_modified
      Src: /src/opendal/core/services/compfs/src/backend.rs:163,1
    - Dst: Self::with_content_length
      Src: /src/opendal/core/services/compfs/src/backend.rs:163,1
    - Dst: Result::len
      Src: /src/opendal/core/services/compfs/src/backend.rs:165,1
    - Dst: Ok
      Src: /src/opendal/core/services/compfs/src/backend.rs:166,1
    - Dst: RpStat::new
      Src: /src/opendal/core/services/compfs/src/backend.rs:166,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 36
    argCount: 3
    argNames:
    - _ctx
    - path
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpStat
    constantsTouched: []
    func_position:
      end: 167
      start: 148
    functionDepth: 33
    functionLinenumber: 148
    functionLinenumberEnd: 167
    functionName: CompfsBackend::stat
    functionSourceFile: /src/opendal/core/services/compfs/src/backend.rs
    functionUses: 0
    functionsReached:
    - Timestamp::try_from
    - Metadata::new
    - Result::modified
    - Ok
    - Self::with_last_modified
    - Self::with_content_length
    - Capability::is_file
    - RpStat::new
    - Result::file_type
    - compio::fs::metadata
    - Result::len
    - Capability::is_dir
    - exec
    - prepare_path
    - Option::map_err
    linkageType: ''
    returnType: Result
    signature: 'async fn stat(&self, _ctx: &OperationContext, path: &str, _: OpStat)
      -> Result<RpStat>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/core/services/compfs/src/backend.rs:171,1
    - Dst: oio::OneShotDeleter::new
      Src: /src/opendal/core/services/compfs/src/backend.rs:171,1
    - Dst: CompfsDeleter::new
      Src: /src/opendal/core/services/compfs/src/backend.rs:171,1
    - Dst: clone
      Src: /src/opendal/core/services/compfs/src/backend.rs:172,1
    - Dst: Ok
      Src: /src/opendal/core/services/compfs/src/backend.rs:176,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - _ctx
    argTypes:
    - '&OperationContext'
    constantsTouched: []
    func_position:
      end: 177
      start: 169
    functionDepth: 2
    functionLinenumber: 169
    functionLinenumberEnd: 177
    functionName: CompfsBackend::delete
    functionSourceFile: /src/opendal/core/services/compfs/src/backend.rs
    functionUses: 0
    functionsReached:
    - oio::OneShotDeleter::new
    - CompfsDeleter::new
    - clone
    - Ok
    linkageType: ''
    returnType: Result
    signature: 'fn delete(&self, _ctx: &OperationContext) -> Result<Self::Deleter>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: clone
      Src: /src/opendal/core/services/compfs/src/backend.rs:187,1
    - Dst: prepare_path
      Src: /src/opendal/core/services/compfs/src/backend.rs:188,1
    - Dst: prepare_path
      Src: /src/opendal/core/services/compfs/src/backend.rs:189,1
    - Dst: Ok
      Src: /src/opendal/core/services/compfs/src/backend.rs:191,1
    - Dst: oio::OneShotCopier::new
      Src: /src/opendal/core/services/compfs/src/backend.rs:191,1
    - Dst: CompfsCore::exec
      Src: /src/opendal/core/services/compfs/src/backend.rs:192,1
    - Dst: OpenOptions::new
      Src: /src/opendal/core/services/compfs/src/backend.rs:193,1
    - Dst: Self::read
      Src: /src/opendal/core/services/compfs/src/backend.rs:193,1
    - Dst: Result::open
      Src: /src/opendal/core/services/compfs/src/backend.rs:193,1
    - Dst: Result::parent
      Src: /src/opendal/core/services/compfs/src/backend.rs:194,1
    - Dst: compio::fs::create_dir_all
      Src: /src/opendal/core/services/compfs/src/backend.rs:195,1
    - Dst: OpenOptions::new
      Src: /src/opendal/core/services/compfs/src/backend.rs:197,1
    - Dst: Self::write
      Src: /src/opendal/core/services/compfs/src/backend.rs:197,1
    - Dst: Result::create
      Src: /src/opendal/core/services/compfs/src/backend.rs:197,1
    - Dst: Result::truncate
      Src: /src/opendal/core/services/compfs/src/backend.rs:197,1
    - Dst: open
      Src: /src/opendal/core/services/compfs/src/backend.rs:197,1
    - Dst: Cursor::new
      Src: /src/opendal/core/services/compfs/src/backend.rs:204,1
    - Dst: Cursor::new
      Src: /src/opendal/core/services/compfs/src/backend.rs:204,1
    - Dst: compio::io::copy
      Src: /src/opendal/core/services/compfs/src/backend.rs:205,1
    - Dst: Ok
      Src: /src/opendal/core/services/compfs/src/backend.rs:207,1
    - Dst: Metadata::default
      Src: /src/opendal/core/services/compfs/src/backend.rs:207,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 54
    argCount: 5
    argNames:
    - _ctx
    - from
    - to
    - _opts
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    - OpCopy
    - OpCopier
    constantsTouched: []
    func_position:
      end: 211
      start: 179
    functionDepth: 33
    functionLinenumber: 179
    functionLinenumberEnd: 211
    functionName: CompfsBackend::copy
    functionSourceFile: /src/opendal/core/services/compfs/src/backend.rs
    functionUses: 0
    functionsReached:
    - Result::truncate
    - compio::fs::create_dir_all
    - Self::read
    - Ok
    - open
    - Metadata::default
    - CompfsCore::exec
    - clone
    - Self::write
    - Result::create
    - OpenOptions::new
    - Result::parent
    - compio::io::copy
    - prepare_path
    - Cursor::new
    - oio::OneShotCopier::new
    - Result::open
    linkageType: ''
    returnType: Result
    signature: 'fn copy(&self,_ctx: &OperationContext,from: &str,to: &str,_: OpCopy,_opts:
      OpCopier,) -> Result<Self::Copier>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: prepare_path
      Src: /src/opendal/core/services/compfs/src/backend.rs:220,1
    - Dst: prepare_path
      Src: /src/opendal/core/services/compfs/src/backend.rs:221,1
    - Dst: exec
      Src: /src/opendal/core/services/compfs/src/backend.rs:223,1
    - Dst: Result::parent
      Src: /src/opendal/core/services/compfs/src/backend.rs:225,1
    - Dst: compio::fs::create_dir_all
      Src: /src/opendal/core/services/compfs/src/backend.rs:226,1
    - Dst: compio::fs::rename
      Src: /src/opendal/core/services/compfs/src/backend.rs:228,1
    - Dst: Ok
      Src: /src/opendal/core/services/compfs/src/backend.rs:232,1
    - Dst: RpRename::default
      Src: /src/opendal/core/services/compfs/src/backend.rs:232,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 27
    argCount: 4
    argNames:
    - _ctx
    - from
    - to
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    - OpRename
    constantsTouched: []
    func_position:
      end: 233
      start: 213
    functionDepth: 33
    functionLinenumber: 213
    functionLinenumberEnd: 233
    functionName: CompfsBackend::rename
    functionSourceFile: /src/opendal/core/services/compfs/src/backend.rs
    functionUses: 0
    functionsReached:
    - Ok
    - compio::fs::rename
    - RpRename::default
    - Result::parent
    - exec
    - prepare_path
    - compio::fs::create_dir_all
    linkageType: ''
    returnType: Result
    signature: 'async fn rename(&self,_ctx: &OperationContext,from: &str,to: &str,_:
      OpRename,) -> Result<RpRename>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/core/services/compfs/src/backend.rs:235,1
    - Dst: oio::PositionReader::new
      Src: /src/opendal/core/services/compfs/src/backend.rs:235,1
    - Dst: CompfsReader::new
      Src: /src/opendal/core/services/compfs/src/backend.rs:235,1
    - Dst: clone
      Src: /src/opendal/core/services/compfs/src/backend.rs:236,1
    - Dst: prepare_path
      Src: /src/opendal/core/services/compfs/src/backend.rs:237,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 3
    argNames:
    - _ctx
    - path
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpRead
    constantsTouched: []
    func_position:
      end: 239
      start: 234
    functionDepth: 33
    functionLinenumber: 234
    functionLinenumberEnd: 239
    functionName: CompfsBackend::read
    functionSourceFile: /src/opendal/core/services/compfs/src/backend.rs
    functionUses: 0
    functionsReached:
    - oio::PositionReader::new
    - Ok
    - CompfsReader::new
    - clone
    - prepare_path
    linkageType: ''
    returnType: Result
    signature: 'fn read(&self, _ctx: &OperationContext, path: &str, _: OpRead) ->
      Result<Self::Reader>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/core/services/compfs/src/backend.rs:242,1
    - Dst: CompfsLazyWriter::new
      Src: /src/opendal/core/services/compfs/src/backend.rs:242,1
    - Dst: clone
      Src: /src/opendal/core/services/compfs/src/backend.rs:243,1
    - Dst: prepare_path
      Src: /src/opendal/core/services/compfs/src/backend.rs:244,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 3
    argNames:
    - _ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpWrite
    constantsTouched: []
    func_position:
      end: 247
      start: 241
    functionDepth: 33
    functionLinenumber: 241
    functionLinenumberEnd: 247
    functionName: CompfsBackend::write
    functionSourceFile: /src/opendal/core/services/compfs/src/backend.rs
    functionUses: 0
    functionsReached:
    - CompfsLazyWriter::new
    - prepare_path
    - clone
    - Ok
    linkageType: ''
    returnType: Result
    signature: 'fn write(&self, _ctx: &OperationContext, path: &str, args: OpWrite)
      -> Result<Self::Writer>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/core/services/compfs/src/backend.rs:250,1
    - Dst: CompfsLazyLister::new
      Src: /src/opendal/core/services/compfs/src/backend.rs:250,1
    - Dst: clone
      Src: /src/opendal/core/services/compfs/src/backend.rs:251,1
    - Dst: prepare_path
      Src: /src/opendal/core/services/compfs/src/backend.rs:252,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 3
    argNames:
    - _ctx
    - path
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpList
    constantsTouched: []
    func_position:
      end: 254
      start: 249
    functionDepth: 33
    functionLinenumber: 249
    functionLinenumberEnd: 254
    functionName: CompfsBackend::list
    functionSourceFile: /src/opendal/core/services/compfs/src/backend.rs
    functionUses: 0
    functionsReached:
    - prepare_path
    - clone
    - Ok
    - CompfsLazyLister::new
    linkageType: ''
    returnType: Result
    signature: 'fn list(&self, _ctx: &OperationContext, path: &str, _: OpList) ->
      Result<Self::Lister>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/core/services/compfs/src/backend.rs:262,1
    - Dst: Error::new
      Src: /src/opendal/core/services/compfs/src/backend.rs:262,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - _ctx
    - _path
    - _args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpPresign
    constantsTouched: []
    func_position:
      end: 266
      start: 256
    functionDepth: 36
    functionLinenumber: 256
    functionLinenumberEnd: 266
    functionName: CompfsBackend::presign
    functionSourceFile: /src/opendal/core/services/compfs/src/backend.rs
    functionUses: 0
    functionsReached:
    - Error::new
    - Err
    linkageType: ''
    returnType: Result
    signature: 'async fn presign(&self,_ctx: &OperationContext,_path: &str,_args:
      OpPresign,) -> Result<RpPresign>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::debug_struct
      Src: /src/opendal/core/services/oss/src/config.rs:124,1
    - Dst: field
      Src: /src/opendal/core/services/oss/src/config.rs:124,1
    - Dst: field
      Src: /src/opendal/core/services/oss/src/config.rs:124,1
    - Dst: field
      Src: /src/opendal/core/services/oss/src/config.rs:124,1
    - Dst: field
      Src: /src/opendal/core/services/oss/src/config.rs:124,1
    - Dst: finish_non_exhaustive
      Src: /src/opendal/core/services/oss/src/config.rs:124,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 20
    argCount: 1
    argNames:
    - f
    argTypes:
    - '&mut std::fmt::Formatter<''_>'
    constantsTouched: []
    func_position:
      end: 130
      start: 123
    functionDepth: 5
    functionLinenumber: 123
    functionLinenumberEnd: 130
    functionName: OssConfig::fmt
    functionSourceFile: /src/opendal/core/services/oss/src/config.rs
    functionUses: 0
    functionsReached:
    - field
    - Result::debug_struct
    - finish_non_exhaustive
    linkageType: ''
    returnType: std::fmt::Result
    signature: 'fn fmt(&self, f: &mut std::fmt::Formatter<''_>) -> std::fmt::Result'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::options
      Src: /src/opendal/core/services/oss/src/config.rs:137,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/oss/src/config.rs:137,1
    - Dst: Result::name
      Src: /src/opendal/core/services/oss/src/config.rs:139,1
    - Dst: Result::insert
      Src: /src/opendal/core/services/oss/src/config.rs:140,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/oss/src/config.rs:140,1
    - Dst: Result::to_string
      Src: /src/opendal/core/services/oss/src/config.rs:140,1
    - Dst: Result::root
      Src: /src/opendal/core/services/oss/src/config.rs:143,1
    - Dst: Result::insert
      Src: /src/opendal/core/services/oss/src/config.rs:144,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/oss/src/config.rs:144,1
    - Dst: Result::to_string
      Src: /src/opendal/core/services/oss/src/config.rs:144,1
    - Dst: Self::from_iter
      Src: /src/opendal/core/services/oss/src/config.rs:147,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 27
    argCount: 1
    argNames:
    - uri
    argTypes:
    - '&OperatorUri'
    constantsTouched: []
    func_position:
      end: 148
      start: 136
    functionDepth: 35
    functionLinenumber: 136
    functionLinenumberEnd: 148
    functionName: OssConfig::from_uri
    functionSourceFile: /src/opendal/core/services/oss/src/config.rs
    functionUses: 0
    functionsReached:
    - Result::clone
    - Self::from_iter
    - Result::to_string
    - Result::insert
    - Result::name
    - '&str::to_string'
    - Result::root
    - Result::options
    linkageType: ''
    returnType: opendal_core::Result
    signature: 'fn from_uri(uri: &OperatorUri) -> opendal_core::Result<Self>'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 152
      start: 150
    functionDepth: 0
    functionLinenumber: 150
    functionLinenumberEnd: 152
    functionName: OssConfig::into_builder
    functionSourceFile: /src/opendal/core/services/oss/src/config.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Self::Builder
    signature: fn into_builder(self) -> Self::Builder
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: OperatorUri::new
      Src: /src/opendal/core/services/obs/src/config.rs:88,1
    - Dst: Vec::<(String, String)>::new
      Src: /src/opendal/core/services/obs/src/config.rs:90,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/services/obs/src/config.rs:88,1
    - Dst: ObsConfig::from_uri
      Src: /src/opendal/core/services/obs/src/config.rs:93,1
    - Dst: opendal_core::Result::unwrap
      Src: /src/opendal/core/services/obs/src/config.rs:93,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 96
      start: 87
    functionDepth: 29
    functionLinenumber: 87
    functionLinenumberEnd: 96
    functionName: tests::from_uri_extracts_bucket_and_root
    functionSourceFile: /src/opendal/core/services/obs/src/config.rs
    functionUses: 0
    functionsReached:
    - ObsConfig::from_uri
    - Vec::<(String, String)>::new
    - OperatorUri::new
    - Result::unwrap
    - opendal_core::Result::unwrap
    linkageType: ''
    returnType: void
    signature: fn from_uri_extracts_bucket_and_root()
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - core
    - ctx
    argTypes:
    - Arc<OssCore>
    - OperationContext
    constantsTouched: []
    func_position:
      end: 38
      start: 36
    functionDepth: 0
    functionLinenumber: 36
    functionLinenumberEnd: 38
    functionName: OssDeleter::new
    functionSourceFile: /src/opendal/core/services/oss/src/deleter.rs
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(core: Arc<OssCore>, ctx: OperationContext) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: oss_delete_object
      Src: /src/opendal/core/services/oss/src/deleter.rs:43,1
    - Dst: status
      Src: /src/opendal/core/services/oss/src/deleter.rs:45,1
    - Dst: Ok
      Src: /src/opendal/core/services/oss/src/deleter.rs:48,1
    - Dst: Err
      Src: /src/opendal/core/services/oss/src/deleter.rs:49,1
    - Dst: super::core::parse_error
      Src: /src/opendal/core/services/oss/src/deleter.rs:49,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 2
    argNames:
    - path
    - args
    argTypes:
    - String
    - OpDelete
    constantsTouched: []
    func_position:
      end: 51
      start: 42
    functionDepth: 34
    functionLinenumber: 42
    functionLinenumberEnd: 51
    functionName: OssDeleter::delete_once
    functionSourceFile: /src/opendal/core/services/oss/src/deleter.rs
    functionUses: 0
    functionsReached:
    - status
    - Ok
    - Err
    - oss_delete_object
    - super::core::parse_error
    linkageType: ''
    returnType: Result
    signature: 'async fn delete_once(&self, path: String, args: OpDelete) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::iter
      Src: /src/opendal/core/services/oss/src/deleter.rs:56,1
    - Dst: map
      Src: /src/opendal/core/services/oss/src/deleter.rs:56,1
    - Dst: to_owned
      Src: /src/opendal/core/services/oss/src/deleter.rs:58,1
    - Dst: clone
      Src: /src/opendal/core/services/oss/src/deleter.rs:58,1
    - Dst: Result::collect
      Src: /src/opendal/core/services/oss/src/deleter.rs:56,1
    - Dst: oss_delete_objects
      Src: /src/opendal/core/services/oss/src/deleter.rs:61,1
    - Dst: status
      Src: /src/opendal/core/services/oss/src/deleter.rs:63,1
    - Dst: Err
      Src: /src/opendal/core/services/oss/src/deleter.rs:66,1
    - Dst: super::core::parse_error
      Src: /src/opendal/core/services/oss/src/deleter.rs:66,1
    - Dst: into_body
      Src: /src/opendal/core/services/oss/src/deleter.rs:69,1
    - Dst: quick_xml::de::from_reader
      Src: /src/opendal/core/services/oss/src/deleter.rs:72,1
    - Dst: Result::reader
      Src: /src/opendal/core/services/oss/src/deleter.rs:72,1
    - Dst: map_err
      Src: /src/opendal/core/services/oss/src/deleter.rs:72,1
    - Dst: is_empty
      Src: /src/opendal/core/services/oss/src/deleter.rs:74,1
    - Dst: Err
      Src: /src/opendal/core/services/oss/src/deleter.rs:75,1
    - Dst: Error::new
      Src: /src/opendal/core/services/oss/src/deleter.rs:75,1
    - Dst: Vec::with_capacity
      Src: /src/opendal/core/services/oss/src/deleter.rs:82,1
    - Dst: len
      Src: /src/opendal/core/services/oss/src/deleter.rs:82,1
    - Dst: Vec::with_capacity
      Src: /src/opendal/core/services/oss/src/deleter.rs:86,1
    - Dst: len
      Src: /src/opendal/core/services/oss/src/deleter.rs:86,1
    - Dst: usize::saturating_sub
      Src: /src/opendal/core/services/oss/src/deleter.rs:86,1
    - Dst: len
      Src: /src/opendal/core/services/oss/src/deleter.rs:86,1
    - Dst: build_rel_path
      Src: /src/opendal/core/services/oss/src/deleter.rs:90,1
    - Dst: OpDelete::default
      Src: /src/opendal/core/services/oss/src/deleter.rs:91,1
    - Dst: with_version
      Src: /src/opendal/core/services/oss/src/deleter.rs:93,1
    - Dst: remove
      Src: /src/opendal/core/services/oss/src/deleter.rs:96,1
    - Dst: push
      Src: /src/opendal/core/services/oss/src/deleter.rs:97,1
    - Dst: push
      Src: /src/opendal/core/services/oss/src/deleter.rs:101,1
    - Dst: Error::new
      Src: /src/opendal/core/services/oss/src/deleter.rs:104,1
    - Dst: Ok
      Src: /src/opendal/core/services/oss/src/deleter.rs:111,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 96
    argCount: 1
    argNames:
    - batch
    argTypes:
    - Vec<(String, OpDelete)>
    constantsTouched: []
    func_position:
      end: 112
      start: 53
    functionDepth: 36
    functionLinenumber: 53
    functionLinenumberEnd: 112
    functionName: OssDeleter::delete_batch
    functionSourceFile: /src/opendal/core/services/oss/src/deleter.rs
    functionUses: 0
    functionsReached:
    - status
    - Vec::with_capacity
    - push
    - remove
    - clone
    - build_rel_path
    - map
    - quick_xml::de::from_reader
    - Result::reader
    - map_err
    - Ok
    - Result::iter
    - to_owned
    - len
    - OpDelete::default
    - into_body
    - is_empty
    - oss_delete_objects
    - super::core::parse_error
    - with_version
    - Err
    - Error::new
    - usize::saturating_sub
    - Result::collect
    linkageType: ''
    returnType: Result
    signature: 'async fn delete_batch(&self, batch: Vec<(String, OpDelete)>) -> Result<BatchDeleteResult>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: to_string
      Src: /src/opendal/core/services/oss/src/lister.rs:56,1
    - Dst: Result::map
      Src: /src/opendal/core/services/oss/src/lister.rs:59,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 6
    argNames:
    - core
    - ctx
    - path
    - recursive
    - limit
    - start_after
    argTypes:
    - Arc<OssCore>
    - OperationContext
    - '&str'
    - bool
    - Option<usize>
    - Option<&str>
    constantsTouched: []
    func_position:
      end: 61
      start: 44
    functionDepth: 2
    functionLinenumber: 44
    functionLinenumberEnd: 61
    functionName: OssLister::new
    functionSourceFile: /src/opendal/core/services/oss/src/lister.rs
    functionUses: 1
    functionsReached:
    - to_string
    - Result::map
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(core: Arc<OssCore>,ctx: OperationContext,path: &str,recursive:
      bool,limit: Option<usize>,start_after: Option<&str>,) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: oss_list_object
      Src: /src/opendal/core/services/oss/src/lister.rs:66,1
    - Dst: is_empty
      Src: /src/opendal/core/services/oss/src/lister.rs:74,1
    - Dst: clone
      Src: /src/opendal/core/services/oss/src/lister.rs:75,1
    - Dst: status
      Src: /src/opendal/core/services/oss/src/lister.rs:82,1
    - Dst: Err
      Src: /src/opendal/core/services/oss/src/lister.rs:83,1
    - Dst: super::core::parse_error
      Src: /src/opendal/core/services/oss/src/lister.rs:83,1
    - Dst: into_body
      Src: /src/opendal/core/services/oss/src/lister.rs:86,1
    - Dst: de::from_reader
      Src: /src/opendal/core/services/oss/src/lister.rs:88,1
    - Dst: Result::reader
      Src: /src/opendal/core/services/oss/src/lister.rs:88,1
    - Dst: map_err
      Src: /src/opendal/core/services/oss/src/lister.rs:88,1
    - Dst: Error::new
      Src: /src/opendal/core/services/oss/src/lister.rs:89,1
    - Dst: Self::set_source
      Src: /src/opendal/core/services/oss/src/lister.rs:89,1
    - Dst: unwrap_or_default
      Src: /src/opendal/core/services/oss/src/lister.rs:92,1
    - Dst: oio::Entry::new
      Src: /src/opendal/core/services/oss/src/lister.rs:95,1
    - Dst: build_rel_path
      Src: /src/opendal/core/services/oss/src/lister.rs:96,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/oss/src/lister.rs:97,1
    - Dst: push_back
      Src: /src/opendal/core/services/oss/src/lister.rs:99,1
    - Dst: build_rel_path
      Src: /src/opendal/core/services/oss/src/lister.rs:103,1
    - Dst: is_empty
      Src: /src/opendal/core/services/oss/src/lister.rs:104,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/oss/src/lister.rs:105,1
    - Dst: as_ref
      Src: /src/opendal/core/services/oss/src/lister.rs:107,1
    - Dst: Some
      Src: /src/opendal/core/services/oss/src/lister.rs:107,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/oss/src/lister.rs:111,1
    - Dst: EntryMode::from_path
      Src: /src/opendal/core/services/oss/src/lister.rs:111,1
    - Dst: Result::set_is_current
      Src: /src/opendal/core/services/oss/src/lister.rs:112,1
    - Dst: Result::set_etag
      Src: /src/opendal/core/services/oss/src/lister.rs:113,1
    - Dst: Result::set_content_md5
      Src: /src/opendal/core/services/oss/src/lister.rs:114,1
    - Dst: trim_matches
      Src: /src/opendal/core/services/oss/src/lister.rs:114,1
    - Dst: Result::set_content_length
      Src: /src/opendal/core/services/oss/src/lister.rs:115,1
    - Dst: Result::set_last_modified
      Src: /src/opendal/core/services/oss/src/lister.rs:116,1
    - Dst: last_modified.parse::<Timestamp>
      Src: /src/opendal/core/services/oss/src/lister.rs:116,1
    - Dst: oio::Entry::with
      Src: /src/opendal/core/services/oss/src/lister.rs:118,1
    - Dst: push_back
      Src: /src/opendal/core/services/oss/src/lister.rs:119,1
    - Dst: Ok
      Src: /src/opendal/core/services/oss/src/lister.rs:122,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 130
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - '&mut oio::PageContext'
    constantsTouched: []
    func_position:
      end: 123
      start: 65
    functionDepth: 37
    functionLinenumber: 65
    functionLinenumberEnd: 123
    functionName: OssLister::next_page
    functionSourceFile: /src/opendal/core/services/oss/src/lister.rs
    functionUses: 0
    functionsReached:
    - status
    - clone
    - build_rel_path
    - oss_list_object
    - Result::reader
    - map_err
    - Ok
    - oio::Entry::with
    - '&str::to_string'
    - last_modified.parse::<Timestamp>
    - Result::set_etag
    - unwrap_or_default
    - Result::set_content_md5
    - Metadata::new
    - Result::set_is_current
    - trim_matches
    - into_body
    - is_empty
    - de::from_reader
    - Some
    - Self::set_source
    - super::core::parse_error
    - oio::Entry::new
    - push_back
    - EntryMode::from_path
    - Result::set_last_modified
    - Err
    - Error::new
    - Result::set_content_length
    - as_ref
    linkageType: ''
    returnType: Result
    signature: 'async fn next_page(&self, ctx: &mut oio::PageContext) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: OpStat::recursive
      Src: /src/opendal/core/services/oss/src/lister.rs:140,1
    - Dst: OpStat::start_after
      Src: /src/opendal/core/services/oss/src/lister.rs:141,1
    - Dst: Result::map
      Src: /src/opendal/core/services/oss/src/lister.rs:141,1
    - Dst: build_abs_path
      Src: /src/opendal/core/services/oss/src/lister.rs:143,1
    - Dst: to_string
      Src: /src/opendal/core/services/oss/src/lister.rs:148,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 14
    argCount: 4
    argNames:
    - core
    - ctx
    - path
    - args
    argTypes:
    - Arc<OssCore>
    - OperationContext
    - '&str'
    - OpList
    constantsTouched: []
    func_position:
      end: 153
      start: 139
    functionDepth: 36
    functionLinenumber: 139
    functionLinenumberEnd: 153
    functionName: OssObjectVersionsLister::new
    functionSourceFile: /src/opendal/core/services/oss/src/lister.rs
    functionUses: 1
    functionsReached:
    - to_string
    - OpStat::start_after
    - build_abs_path
    - Result::map
    - OpStat::recursive
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(core: Arc<OssCore>, ctx: OperationContext, path: &str,
      args: OpList) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: rsplit_once
      Src: /src/opendal/core/services/oss/src/lister.rs:158,1
    - Dst: Result::as_str
      Src: /src/opendal/core/services/oss/src/lister.rs:162,1
    - Dst: oss_list_object_versions
      Src: /src/opendal/core/services/oss/src/lister.rs:167,1
    - Dst: limit
      Src: /src/opendal/core/services/oss/src/lister.rs:173,1
    - Dst: status
      Src: /src/opendal/core/services/oss/src/lister.rs:178,1
    - Dst: Err
      Src: /src/opendal/core/services/oss/src/lister.rs:179,1
    - Dst: super::core::parse_error
      Src: /src/opendal/core/services/oss/src/lister.rs:179,1
    - Dst: into_body
      Src: /src/opendal/core/services/oss/src/lister.rs:182,1
    - Dst: de::from_reader
      Src: /src/opendal/core/services/oss/src/lister.rs:183,1
    - Dst: reader
      Src: /src/opendal/core/services/oss/src/lister.rs:183,1
    - Dst: map_err
      Src: /src/opendal/core/services/oss/src/lister.rs:183,1
    - Dst: map_err
      Src: /src/opendal/core/services/oss/src/lister.rs:183,1
    - Dst: oio::Entry::new
      Src: /src/opendal/core/services/oss/src/lister.rs:204,1
    - Dst: build_rel_path
      Src: /src/opendal/core/services/oss/src/lister.rs:205,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/oss/src/lister.rs:206,1
    - Dst: push_back
      Src: /src/opendal/core/services/oss/src/lister.rs:208,1
    - Dst: versions
      Src: /src/opendal/core/services/oss/src/lister.rs:216,1
    - Dst: build_rel_path
      Src: /src/opendal/core/services/oss/src/lister.rs:220,1
    - Dst: is_empty
      Src: /src/opendal/core/services/oss/src/lister.rs:221,1
    - Dst: '&str::to_owned'
      Src: /src/opendal/core/services/oss/src/lister.rs:222,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/oss/src/lister.rs:225,1
    - Dst: EntryMode::from_path
      Src: /src/opendal/core/services/oss/src/lister.rs:225,1
    - Dst: Result::set_version
      Src: /src/opendal/core/services/oss/src/lister.rs:226,1
    - Dst: Result::set_is_current
      Src: /src/opendal/core/services/oss/src/lister.rs:227,1
    - Dst: Result::set_content_length
      Src: /src/opendal/core/services/oss/src/lister.rs:228,1
    - Dst: Result::set_last_modified
      Src: /src/opendal/core/services/oss/src/lister.rs:229,1
    - Dst: last_modified.parse::<Timestamp>
      Src: /src/opendal/core/services/oss/src/lister.rs:229,1
    - Dst: Result::set_etag
      Src: /src/opendal/core/services/oss/src/lister.rs:231,1
    - Dst: Result::set_content_md5
      Src: /src/opendal/core/services/oss/src/lister.rs:232,1
    - Dst: Option::trim_matches
      Src: /src/opendal/core/services/oss/src/lister.rs:232,1
    - Dst: oio::Entry::new
      Src: /src/opendal/core/services/oss/src/lister.rs:235,1
    - Dst: push_back
      Src: /src/opendal/core/services/oss/src/lister.rs:236,1
    - Dst: deleted
      Src: /src/opendal/core/services/oss/src/lister.rs:239,1
    - Dst: build_rel_path
      Src: /src/opendal/core/services/oss/src/lister.rs:241,1
    - Dst: is_empty
      Src: /src/opendal/core/services/oss/src/lister.rs:242,1
    - Dst: '&str::to_owned'
      Src: /src/opendal/core/services/oss/src/lister.rs:243,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/oss/src/lister.rs:246,1
    - Dst: Result::set_version
      Src: /src/opendal/core/services/oss/src/lister.rs:247,1
    - Dst: Result::set_is_deleted
      Src: /src/opendal/core/services/oss/src/lister.rs:248,1
    - Dst: Result::set_is_current
      Src: /src/opendal/core/services/oss/src/lister.rs:249,1
    - Dst: Result::set_last_modified
      Src: /src/opendal/core/services/oss/src/lister.rs:250,1
    - Dst: last_modified.parse::<Timestamp>
      Src: /src/opendal/core/services/oss/src/lister.rs:250,1
    - Dst: oio::Entry::new
      Src: /src/opendal/core/services/oss/src/lister.rs:252,1
    - Dst: push_back
      Src: /src/opendal/core/services/oss/src/lister.rs:253,1
    - Dst: Ok
      Src: /src/opendal/core/services/oss/src/lister.rs:257,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 187
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - '&mut PageContext'
    constantsTouched: []
    func_position:
      end: 258
      start: 157
    functionDepth: 37
    functionLinenumber: 157
    functionLinenumberEnd: 258
    functionName: OssObjectVersionsLister::next_page
    functionSourceFile: /src/opendal/core/services/oss/src/lister.rs
    functionUses: 0
    functionsReached:
    - status
    - build_rel_path
    - '&str::to_owned'
    - map_err
    - reader
    - Ok
    - last_modified.parse::<Timestamp>
    - Result::as_str
    - Result::set_etag
    - Result::set_content_md5
    - Metadata::new
    - Result::set_is_current
    - deleted
    - limit
    - into_body
    - oss_list_object_versions
    - de::from_reader
    - is_empty
    - rsplit_once
    - Result::set_is_deleted
    - super::core::parse_error
    - oio::Entry::new
    - versions
    - push_back
    - Option::trim_matches
    - Result::set_version
    - EntryMode::from_path
    - Result::set_last_modified
    - Err
    - Result::set_content_length
    linkageType: ''
    returnType: Result
    signature: 'async fn next_page(&self, ctx: &mut PageContext) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: to_string
      Src: /src/opendal/core/services/oss/src/reader.rs:43,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 4
    argNames:
    - backend
    - ctx
    - path
    - args
    argTypes:
    - OssBackend
    - OperationContext
    - '&str'
    - OpRead
    constantsTouched: []
    func_position:
      end: 46
      start: 34
    functionDepth: 2
    functionLinenumber: 34
    functionLinenumberEnd: 46
    functionName: OssReader::new
    functionSourceFile: /src/opendal/core/services/oss/src/reader.rs
    functionUses: 1
    functionsReached:
    - to_string
    linkageType: ''
    returnType: Self
    signature: 'pub(super) fn new(backend: OssBackend,ctx: OperationContext,path:
      &str,args: OpRead,) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: as_str
      Src: /src/opendal/core/services/oss/src/reader.rs:52,1
    - Dst: clone
      Src: /src/opendal/core/services/oss/src/reader.rs:53,1
    - Dst: oss_get_object
      Src: /src/opendal/core/services/oss/src/reader.rs:54,1
    - Dst: status
      Src: /src/opendal/core/services/oss/src/reader.rs:59,1
    - Dst: RpRead::new
      Src: /src/opendal/core/services/oss/src/reader.rs:63,1
    - Dst: parse_into_metadata
      Src: /src/opendal/core/services/oss/src/reader.rs:63,1
    - Dst: headers
      Src: /src/opendal/core/services/oss/src/reader.rs:63,1
    - Dst: into_body
      Src: /src/opendal/core/services/oss/src/reader.rs:64,1
    - Dst: into_parts
      Src: /src/opendal/core/services/oss/src/reader.rs:67,1
    - Dst: to_buffer
      Src: /src/opendal/core/services/oss/src/reader.rs:68,1
    - Dst: Err
      Src: /src/opendal/core/services/oss/src/reader.rs:69,1
    - Dst: super::core::parse_error
      Src: /src/opendal/core/services/oss/src/reader.rs:69,1
    - Dst: Response::from_parts
      Src: /src/opendal/core/services/oss/src/reader.rs:69,1
    - Dst: Ok
      Src: /src/opendal/core/services/oss/src/reader.rs:73,1
    - Dst: Box::new
      Src: /src/opendal/core/services/oss/src/reader.rs:73,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 42
    argCount: 1
    argNames:
    - range
    argTypes:
    - BytesRange
    constantsTouched: []
    func_position:
      end: 74
      start: 50
    functionDepth: 37
    functionLinenumber: 50
    functionLinenumberEnd: 74
    functionName: OssReader::open
    functionSourceFile: /src/opendal/core/services/oss/src/reader.rs
    functionUses: 0
    functionsReached:
    - parse_into_metadata
    - to_buffer
    - status
    - oss_get_object
    - Ok
    - Box::new
    - into_body
    - clone
    - Err
    - Response::from_parts
    - as_str
    - headers
    - into_parts
    - RpRead::new
    - super::core::parse_error
    linkageType: ''
    returnType: Result
    signature: 'async fn open(&self, range: BytesRange) -> Result<(RpRead, Box<dyn
      oio::ReadStreamDyn>)>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::debug_struct
      Src: /src/opendal/core/services/oss/src/core.rs:85,1
    - Dst: field
      Src: /src/opendal/core/services/oss/src/core.rs:85,1
    - Dst: field
      Src: /src/opendal/core/services/oss/src/core.rs:85,1
    - Dst: field
      Src: /src/opendal/core/services/oss/src/core.rs:85,1
    - Dst: field
      Src: /src/opendal/core/services/oss/src/core.rs:85,1
    - Dst: finish_non_exhaustive
      Src: /src/opendal/core/services/oss/src/core.rs:85,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 20
    argCount: 1
    argNames:
    - f
    argTypes:
    - '&mut std::fmt::Formatter<''_>'
    constantsTouched: []
    func_position:
      end: 91
      start: 84
    functionDepth: 5
    functionLinenumber: 84
    functionLinenumberEnd: 91
    functionName: OssCore::fmt
    functionSourceFile: /src/opendal/core/services/oss/src/core.rs
    functionUses: 0
    functionsReached:
    - field
    - Result::debug_struct
    - finish_non_exhaustive
    linkageType: ''
    returnType: std::fmt::Result
    signature: 'fn fmt(&self, f: &mut std::fmt::Formatter<''_>) -> std::fmt::Result'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: clone
      Src: /src/opendal/core/services/oss/src/core.rs:96,1
    - Dst: with_context
      Src: /src/opendal/core/services/oss/src/core.rs:96,1
    - Dst: clone
      Src: /src/opendal/core/services/oss/src/core.rs:97,1
    - Dst: with_http_send
      Src: /src/opendal/core/services/oss/src/core.rs:97,1
    - Dst: Result::http_transport
      Src: /src/opendal/core/services/oss/src/core.rs:99,1
    - Dst: Self::clone
      Src: /src/opendal/core/services/oss/src/core.rs:99,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 14
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - '&OperationContext'
    constantsTouched: []
    func_position:
      end: 101
      start: 95
    functionDepth: 6
    functionLinenumber: 95
    functionLinenumberEnd: 101
    functionName: OssCore::signer
    functionSourceFile: /src/opendal/core/services/oss/src/core.rs
    functionUses: 2
    functionsReached:
    - with_http_send
    - clone
    - with_context
    - Self::clone
    - Result::http_transport
    linkageType: ''
    returnType: Signer
    signature: 'fn signer(&self, ctx: &OperationContext) -> Signer<Credential>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/core/services/oss/src/core.rs:105,1
    - Dst: Request<T>::into_parts
      Src: /src/opendal/core/services/oss/src/core.rs:108,1
    - Dst: OssCore::signer
      Src: /src/opendal/core/services/oss/src/core.rs:110,1
    - Dst: Signer::sign
      Src: /src/opendal/core/services/oss/src/core.rs:110,1
    - Dst: map_err
      Src: /src/opendal/core/services/oss/src/core.rs:110,1
    - Dst: new_request_sign_error
      Src: /src/opendal/core/services/oss/src/core.rs:113,1
    - Dst: Result::into
      Src: /src/opendal/core/services/oss/src/core.rs:113,1
    - Dst: Ok
      Src: /src/opendal/core/services/oss/src/core.rs:115,1
    - Dst: Request::from_parts
      Src: /src/opendal/core/services/oss/src/core.rs:115,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 24
    argCount: 2
    argNames:
    - ctx
    - req
    argTypes:
    - '&OperationContext'
    - Request<T>
    constantsTouched: []
    func_position:
      end: 116
      start: 103
    functionDepth: 35
    functionLinenumber: 103
    functionLinenumberEnd: 116
    functionName: OssCore::sign
    functionSourceFile: /src/opendal/core/services/oss/src/core.rs
    functionUses: 11
    functionsReached:
    - map_err
    - Ok
    - Request::from_parts
    - Signer::sign
    - Request<T>::into_parts
    - Result::into
    - OssCore::signer
    - new_request_sign_error
    linkageType: ''
    returnType: Result
    signature: 'pub async fn sign<T>(&self, ctx: &OperationContext, req: Request<T>)
      -> Result<Request<T>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/core/services/oss/src/core.rs:125,1
    - Dst: Request<T>::into_parts
      Src: /src/opendal/core/services/oss/src/core.rs:128,1
    - Dst: OssCore::signer
      Src: /src/opendal/core/services/oss/src/core.rs:130,1
    - Dst: Signer::sign
      Src: /src/opendal/core/services/oss/src/core.rs:130,1
    - Dst: Some
      Src: /src/opendal/core/services/oss/src/core.rs:131,1
    - Dst: map_err
      Src: /src/opendal/core/services/oss/src/core.rs:130,1
    - Dst: new_request_sign_error
      Src: /src/opendal/core/services/oss/src/core.rs:133,1
    - Dst: Result::into
      Src: /src/opendal/core/services/oss/src/core.rs:133,1
    - Dst: Ok
      Src: /src/opendal/core/services/oss/src/core.rs:135,1
    - Dst: Request::from_parts
      Src: /src/opendal/core/services/oss/src/core.rs:135,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 25
    argCount: 3
    argNames:
    - ctx
    - req
    - duration
    argTypes:
    - '&OperationContext'
    - Request<T>
    - Duration
    constantsTouched: []
    func_position:
      end: 136
      start: 118
    functionDepth: 35
    functionLinenumber: 118
    functionLinenumberEnd: 136
    functionName: OssCore::sign_query
    functionSourceFile: /src/opendal/core/services/oss/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - Ok
    - Request::from_parts
    - Signer::sign
    - Some
    - Request<T>::into_parts
    - Result::into
    - OssCore::signer
    - new_request_sign_error
    linkageType: ''
    returnType: Result
    signature: 'pub async fn sign_query<T>(&self,ctx: &OperationContext,req: Request<T>,duration:
      Duration,) -> Result<Request<T>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::http_transport
      Src: /src/opendal/core/services/oss/src/core.rs:144,1
    - Dst: Self::send
      Src: /src/opendal/core/services/oss/src/core.rs:144,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - ctx
    - req
    argTypes:
    - '&OperationContext'
    - Request<Buffer>
    constantsTouched: []
    func_position:
      end: 145
      start: 139
    functionDepth: 37
    functionLinenumber: 139
    functionLinenumberEnd: 145
    functionName: OssCore::send
    functionSourceFile: /src/opendal/core/services/oss/src/core.rs
    functionUses: 10
    functionsReached:
    - Result::http_transport
    - Self::send
    linkageType: ''
    returnType: Result
    signature: 'pub async fn send(&self,ctx: &OperationContext,req: Request<Buffer>,)
      -> Result<Response<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::clone
      Src: /src/opendal/core/services/oss/src/core.rs:152,1
    - Dst: Result::set_sensitive
      Src: /src/opendal/core/services/oss/src/core.rs:153,1
    - Dst: http::request::Builder::header
      Src: /src/opendal/core/services/oss/src/core.rs:155,1
    - Dst: HeaderName::from_static
      Src: /src/opendal/core/services/oss/src/core.rs:156,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/oss/src/core.rs:161,1
    - Dst: Result::set_sensitive
      Src: /src/opendal/core/services/oss/src/core.rs:162,1
    - Dst: http::request::Builder::header
      Src: /src/opendal/core/services/oss/src/core.rs:164,1
    - Dst: HeaderName::from_static
      Src: /src/opendal/core/services/oss/src/core.rs:165,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 26
    argCount: 1
    argNames:
    - req
    argTypes:
    - http::request::Builder
    constantsTouched: []
    func_position:
      end: 170
      start: 150
    functionDepth: 2
    functionLinenumber: 150
    functionLinenumberEnd: 170
    functionName: OssCore::insert_sse_headers
    functionSourceFile: /src/opendal/core/services/oss/src/core.rs
    functionUses: 4
    functionsReached:
    - Result::clone
    - http::request::Builder::header
    - Result::set_sensitive
    - HeaderName::from_static
    linkageType: ''
    returnType: http::request::Builder
    signature: 'pub fn insert_sse_headers(&self, mut req: http::request::Builder)
      -> http::request::Builder'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: http::request::Builder::header
      Src: /src/opendal/core/services/oss/src/core.rs:178,1
    - Dst: Option::unwrap_or_default
      Src: /src/opendal/core/services/oss/src/core.rs:178,1
    - Dst: OpStat::content_type
      Src: /src/opendal/core/services/oss/src/core.rs:180,1
    - Dst: http::request::Builder::header
      Src: /src/opendal/core/services/oss/src/core.rs:181,1
    - Dst: OpStat::content_disposition
      Src: /src/opendal/core/services/oss/src/core.rs:184,1
    - Dst: http::request::Builder::header
      Src: /src/opendal/core/services/oss/src/core.rs:185,1
    - Dst: OpStat::content_encoding
      Src: /src/opendal/core/services/oss/src/core.rs:188,1
    - Dst: http::request::Builder::header
      Src: /src/opendal/core/services/oss/src/core.rs:189,1
    - Dst: OpStat::cache_control
      Src: /src/opendal/core/services/oss/src/core.rs:192,1
    - Dst: http::request::Builder::header
      Src: /src/opendal/core/services/oss/src/core.rs:193,1
    - Dst: OpStat::if_not_exists
      Src: /src/opendal/core/services/oss/src/core.rs:206,1
    - Dst: http::request::Builder::header
      Src: /src/opendal/core/services/oss/src/core.rs:207,1
    - Dst: OpStat::user_metadata
      Src: /src/opendal/core/services/oss/src/core.rs:210,1
    - Dst: OssCore::check_user_metadata_key
      Src: /src/opendal/core/services/oss/src/core.rs:213,1
    - Dst: Err
      Src: /src/opendal/core/services/oss/src/core.rs:214,1
    - Dst: Error::new
      Src: /src/opendal/core/services/oss/src/core.rs:214,1
    - Dst: http::request::Builder::header
      Src: /src/opendal/core/services/oss/src/core.rs:219,1
    - Dst: Ok
      Src: /src/opendal/core/services/oss/src/core.rs:223,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 65
    argCount: 3
    argNames:
    - req
    - size
    - args
    argTypes:
    - http::request::Builder
    - Option<u64>
    - '&OpWrite'
    constantsTouched: []
    func_position:
      end: 224
      start: 172
    functionDepth: 32
    functionLinenumber: 172
    functionLinenumberEnd: 224
    functionName: OssCore::insert_metadata_headers
    functionSourceFile: /src/opendal/core/services/oss/src/core.rs
    functionUses: 2
    functionsReached:
    - Option::unwrap_or_default
    - Ok
    - http::request::Builder::header
    - OpStat::content_encoding
    - OpStat::content_disposition
    - OssCore::check_user_metadata_key
    - OpStat::cache_control
    - Err
    - Error::new
    - OpStat::user_metadata
    - OpStat::if_not_exists
    - OpStat::content_type
    linkageType: ''
    returnType: Result
    signature: 'fn insert_metadata_headers(&self,mut req: http::request::Builder,size:
      Option<u64>,args: &OpWrite,) -> Result<http::request::Builder>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: FoyerKey::chars
      Src: /src/opendal/core/services/oss/src/core.rs:229,1
    - Dst: Result::all
      Src: /src/opendal/core/services/oss/src/core.rs:229,1
    - Dst: Result::is_ascii_alphanumeric
      Src: /src/opendal/core/services/oss/src/core.rs:229,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - key
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 230
      start: 228
    functionDepth: 31
    functionLinenumber: 228
    functionLinenumberEnd: 230
    functionName: OssCore::check_user_metadata_key
    functionSourceFile: /src/opendal/core/services/oss/src/core.rs
    functionUses: 1
    functionsReached:
    - FoyerKey::chars
    - Result::all
    - Result::is_ascii_alphanumeric
    linkageType: ''
    returnType: bool
    signature: 'fn check_user_metadata_key(&self, key: &str) -> bool'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: parse_into_metadata
      Src: /src/opendal/core/services/oss/src/core.rs:243,1
    - Dst: parse_prefixed_headers
      Src: /src/opendal/core/services/oss/src/core.rs:244,1
    - Dst: HashMap::is_empty
      Src: /src/opendal/core/services/oss/src/core.rs:245,1
    - Dst: Result::with_user_metadata
      Src: /src/opendal/core/services/oss/src/core.rs:246,1
    - Dst: Ok
      Src: /src/opendal/core/services/oss/src/core.rs:249,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 2
    argNames:
    - path
    - headers
    argTypes:
    - '&str'
    - '&HeaderMap'
    constantsTouched: []
    func_position:
      end: 250
      start: 242
    functionDepth: 40
    functionLinenumber: 242
    functionLinenumberEnd: 250
    functionName: OssCore::parse_metadata
    functionSourceFile: /src/opendal/core/services/oss/src/core.rs
    functionUses: 0
    functionsReached:
    - parse_into_metadata
    - HashMap::is_empty
    - Ok
    - parse_prefixed_headers
    - Result::with_user_metadata
    linkageType: ''
    returnType: Result
    signature: 'pub fn parse_metadata(&self, path: &str, headers: &HeaderMap) -> Result<Metadata>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/oss/src/core.rs:263,1
    - Dst: OssCore::get_endpoint
      Src: /src/opendal/core/services/oss/src/core.rs:264,1
    - Dst: Request::put
      Src: /src/opendal/core/services/oss/src/core.rs:267,1
    - Dst: OssCore::insert_metadata_headers
      Src: /src/opendal/core/services/oss/src/core.rs:269,1
    - Dst: OssCore::insert_sse_headers
      Src: /src/opendal/core/services/oss/src/core.rs:272,1
    - Dst: DeleteInput::extension
      Src: /src/opendal/core/services/oss/src/core.rs:274,1
    - Dst: extension
      Src: /src/opendal/core/services/oss/src/core.rs:274,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/oss/src/core.rs:276,1
    - Dst: DeleteInput::body
      Src: /src/opendal/core/services/oss/src/core.rs:278,1
    - Dst: map_err
      Src: /src/opendal/core/services/oss/src/core.rs:278,1
    - Dst: Ok
      Src: /src/opendal/core/services/oss/src/core.rs:279,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 27
    argCount: 5
    argNames:
    - path
    - size
    - args
    - body
    - is_presign
    argTypes:
    - '&str'
    - Option<u64>
    - '&OpWrite'
    - Buffer
    - bool
    constantsTouched: []
    func_position:
      end: 280
      start: 255
    functionDepth: 33
    functionLinenumber: 255
    functionLinenumberEnd: 280
    functionName: OssCore::oss_put_object_request
    functionSourceFile: /src/opendal/core/services/oss/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - extension
    - OssCore::insert_sse_headers
    - Request::put
    - Ok
    - OssCore::get_endpoint
    - build_abs_path
    - ServiceOperation
    - OssCore::insert_metadata_headers
    - DeleteInput::body
    - DeleteInput::extension
    linkageType: ''
    returnType: Result
    signature: 'pub fn oss_put_object_request(&self,path: &str,size: Option<u64>,args:
      &OpWrite,body: Buffer,is_presign: bool,) -> Result<Request<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/oss/src/core.rs:290,1
    - Dst: OssCore::get_endpoint
      Src: /src/opendal/core/services/oss/src/core.rs:291,1
    - Dst: Request::post
      Src: /src/opendal/core/services/oss/src/core.rs:299,1
    - Dst: OssCore::insert_metadata_headers
      Src: /src/opendal/core/services/oss/src/core.rs:301,1
    - Dst: Some
      Src: /src/opendal/core/services/oss/src/core.rs:301,1
    - Dst: OssCore::insert_sse_headers
      Src: /src/opendal/core/services/oss/src/core.rs:304,1
    - Dst: extension
      Src: /src/opendal/core/services/oss/src/core.rs:306,1
    - Dst: extension
      Src: /src/opendal/core/services/oss/src/core.rs:306,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/oss/src/core.rs:308,1
    - Dst: body
      Src: /src/opendal/core/services/oss/src/core.rs:310,1
    - Dst: map_err
      Src: /src/opendal/core/services/oss/src/core.rs:310,1
    - Dst: Ok
      Src: /src/opendal/core/services/oss/src/core.rs:311,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 28
    argCount: 5
    argNames:
    - path
    - position
    - size
    - args
    - body
    argTypes:
    - '&str'
    - u64
    - u64
    - '&OpWrite'
    - Buffer
    constantsTouched: []
    func_position:
      end: 312
      start: 282
    functionDepth: 33
    functionLinenumber: 282
    functionLinenumberEnd: 312
    functionName: OssCore::oss_append_object_request
    functionSourceFile: /src/opendal/core/services/oss/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - extension
    - OssCore::insert_sse_headers
    - Ok
    - OssCore::get_endpoint
    - Request::post
    - body
    - build_abs_path
    - Some
    - ServiceOperation
    - OssCore::insert_metadata_headers
    linkageType: ''
    returnType: Result
    signature: 'pub fn oss_append_object_request(&self,path: &str,position: u64,size:
      u64,args: &OpWrite,body: Buffer,) -> Result<Request<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/oss/src/core.rs:321,1
    - Dst: OssCore::get_endpoint
      Src: /src/opendal/core/services/oss/src/core.rs:322,1
    - Dst: Vec::new
      Src: /src/opendal/core/services/oss/src/core.rs:326,1
    - Dst: OpStat::override_content_disposition
      Src: /src/opendal/core/services/oss/src/core.rs:327,1
    - Dst: Self::push
      Src: /src/opendal/core/services/oss/src/core.rs:328,1
    - Dst: OpStat::version
      Src: /src/opendal/core/services/oss/src/core.rs:334,1
    - Dst: Self::push
      Src: /src/opendal/core/services/oss/src/core.rs:335,1
    - Dst: Self::is_empty
      Src: /src/opendal/core/services/oss/src/core.rs:342,1
    - Dst: Result::push_str
      Src: /src/opendal/core/services/oss/src/core.rs:343,1
    - Dst: Request::get
      Src: /src/opendal/core/services/oss/src/core.rs:346,1
    - Dst: (Vec::is_full
      Src: /src/opendal/core/services/oss/src/core.rs:348,1
    - Dst: Option::header
      Src: /src/opendal/core/services/oss/src/core.rs:349,1
    - Dst: (Vec::to_header
      Src: /src/opendal/core/services/oss/src/core.rs:349,1
    - Dst: Option::header
      Src: /src/opendal/core/services/oss/src/core.rs:352,1
    - Dst: OpStat::if_match
      Src: /src/opendal/core/services/oss/src/core.rs:355,1
    - Dst: Option::header
      Src: /src/opendal/core/services/oss/src/core.rs:356,1
    - Dst: OpStat::if_none_match
      Src: /src/opendal/core/services/oss/src/core.rs:358,1
    - Dst: Option::header
      Src: /src/opendal/core/services/oss/src/core.rs:359,1
    - Dst: OpStat::if_modified_since
      Src: /src/opendal/core/services/oss/src/core.rs:362,1
    - Dst: Option::header
      Src: /src/opendal/core/services/oss/src/core.rs:363,1
    - Dst: Result::format_http_date
      Src: /src/opendal/core/services/oss/src/core.rs:363,1
    - Dst: OpStat::if_unmodified_since
      Src: /src/opendal/core/services/oss/src/core.rs:366,1
    - Dst: Option::header
      Src: /src/opendal/core/services/oss/src/core.rs:367,1
    - Dst: Result::format_http_date
      Src: /src/opendal/core/services/oss/src/core.rs:367,1
    - Dst: Option::extension
      Src: /src/opendal/core/services/oss/src/core.rs:370,1
    - Dst: extension
      Src: /src/opendal/core/services/oss/src/core.rs:370,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/oss/src/core.rs:372,1
    - Dst: Option::body
      Src: /src/opendal/core/services/oss/src/core.rs:374,1
    - Dst: Buffer::new
      Src: /src/opendal/core/services/oss/src/core.rs:374,1
    - Dst: map_err
      Src: /src/opendal/core/services/oss/src/core.rs:374,1
    - Dst: Ok
      Src: /src/opendal/core/services/oss/src/core.rs:376,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 91
    argCount: 4
    argNames:
    - path
    - is_presign
    - range
    - args
    argTypes:
    - '&str'
    - bool
    - BytesRange
    - '&OpRead'
    constantsTouched: []
    func_position:
      end: 377
      start: 314
    functionDepth: 5
    functionLinenumber: 314
    functionLinenumberEnd: 377
    functionName: OssCore::oss_get_object_request
    functionSourceFile: /src/opendal/core/services/oss/src/core.rs
    functionUses: 1
    functionsReached:
    - Buffer::new
    - Result::push_str
    - OpStat::if_unmodified_since
    - OpStat::override_content_disposition
    - Vec::new
    - Option::body
    - map_err
    - extension
    - Ok
    - OpStat::if_modified_since
    - (Vec::is_full
    - Self::is_empty
    - ServiceOperation
    - Result::format_http_date
    - OpStat::if_match
    - Self::push
    - build_abs_path
    - Option::header
    - OpStat::version
    - Request::get
    - (Vec::to_header
    - OssCore::get_endpoint
    - OpStat::if_none_match
    - Option::extension
    linkageType: ''
    returnType: Result
    signature: 'pub fn oss_get_object_request(&self,path: &str,is_presign: bool,range:
      BytesRange,args: &OpRead,) -> Result<Request<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/oss/src/core.rs:380,1
    - Dst: OssCore::get_endpoint
      Src: /src/opendal/core/services/oss/src/core.rs:381,1
    - Dst: Vec::new
      Src: /src/opendal/core/services/oss/src/core.rs:384,1
    - Dst: OpStat::version
      Src: /src/opendal/core/services/oss/src/core.rs:386,1
    - Dst: Self::push
      Src: /src/opendal/core/services/oss/src/core.rs:387,1
    - Dst: Self::is_empty
      Src: /src/opendal/core/services/oss/src/core.rs:394,1
    - Dst: Result::push_str
      Src: /src/opendal/core/services/oss/src/core.rs:395,1
    - Dst: Request::delete
      Src: /src/opendal/core/services/oss/src/core.rs:398,1
    - Dst: Result::extension
      Src: /src/opendal/core/services/oss/src/core.rs:400,1
    - Dst: extension
      Src: /src/opendal/core/services/oss/src/core.rs:400,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/oss/src/core.rs:402,1
    - Dst: Result::body
      Src: /src/opendal/core/services/oss/src/core.rs:404,1
    - Dst: Buffer::new
      Src: /src/opendal/core/services/oss/src/core.rs:404,1
    - Dst: map_err
      Src: /src/opendal/core/services/oss/src/core.rs:404,1
    - Dst: Ok
      Src: /src/opendal/core/services/oss/src/core.rs:406,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 35
    argCount: 2
    argNames:
    - path
    - args
    argTypes:
    - '&str'
    - '&OpDelete'
    constantsTouched: []
    func_position:
      end: 407
      start: 379
    functionDepth: 32
    functionLinenumber: 379
    functionLinenumberEnd: 407
    functionName: OssCore::oss_delete_object_request
    functionSourceFile: /src/opendal/core/services/oss/src/core.rs
    functionUses: 1
    functionsReached:
    - map_err
    - OpStat::version
    - extension
    - Result::push_str
    - Buffer::new
    - Request::delete
    - Ok
    - Result::extension
    - OssCore::get_endpoint
    - Self::push
    - build_abs_path
    - Self::is_empty
    - ServiceOperation
    - Result::body
    - Vec::new
    linkageType: ''
    returnType: Result
    signature: 'fn oss_delete_object_request(&self, path: &str, args: &OpDelete) ->
      Result<Request<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/oss/src/core.rs:415,1
    - Dst: OssCore::get_endpoint
      Src: /src/opendal/core/services/oss/src/core.rs:416,1
    - Dst: Vec::new
      Src: /src/opendal/core/services/oss/src/core.rs:419,1
    - Dst: OpStat::version
      Src: /src/opendal/core/services/oss/src/core.rs:421,1
    - Dst: Self::push
      Src: /src/opendal/core/services/oss/src/core.rs:422,1
    - Dst: Self::is_empty
      Src: /src/opendal/core/services/oss/src/core.rs:429,1
    - Dst: Result::push_str
      Src: /src/opendal/core/services/oss/src/core.rs:430,1
    - Dst: Request::head
      Src: /src/opendal/core/services/oss/src/core.rs:433,1
    - Dst: OpStat::if_match
      Src: /src/opendal/core/services/oss/src/core.rs:434,1
    - Dst: Result::header
      Src: /src/opendal/core/services/oss/src/core.rs:435,1
    - Dst: OpStat::if_none_match
      Src: /src/opendal/core/services/oss/src/core.rs:437,1
    - Dst: Result::header
      Src: /src/opendal/core/services/oss/src/core.rs:438,1
    - Dst: Result::extension
      Src: /src/opendal/core/services/oss/src/core.rs:441,1
    - Dst: extension
      Src: /src/opendal/core/services/oss/src/core.rs:441,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/oss/src/core.rs:443,1
    - Dst: Result::body
      Src: /src/opendal/core/services/oss/src/core.rs:445,1
    - Dst: Buffer::new
      Src: /src/opendal/core/services/oss/src/core.rs:445,1
    - Dst: map_err
      Src: /src/opendal/core/services/oss/src/core.rs:445,1
    - Dst: Ok
      Src: /src/opendal/core/services/oss/src/core.rs:447,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 50
    argCount: 3
    argNames:
    - path
    - is_presign
    - args
    argTypes:
    - '&str'
    - bool
    - '&OpStat'
    constantsTouched: []
    func_position:
      end: 448
      start: 409
    functionDepth: 38
    functionLinenumber: 409
    functionLinenumberEnd: 448
    functionName: OssCore::oss_head_object_request
    functionSourceFile: /src/opendal/core/services/oss/src/core.rs
    functionUses: 1
    functionsReached:
    - map_err
    - OpStat::version
    - Request::head
    - Result::push_str
    - extension
    - Buffer::new
    - Ok
    - Result::extension
    - OssCore::get_endpoint
    - Self::push
    - build_abs_path
    - Result::header
    - Self::is_empty
    - OpStat::if_none_match
    - ServiceOperation
    - Result::body
    - Vec::new
    - OpStat::if_match
    linkageType: ''
    returnType: Result
    signature: 'pub fn oss_head_object_request(&self,path: &str,is_presign: bool,args:
      &OpStat,) -> Result<Request<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/oss/src/core.rs:458,1
    - Dst: OssCore::get_endpoint
      Src: /src/opendal/core/services/oss/src/core.rs:460,1
    - Dst: QueryPairsWriter::new
      Src: /src/opendal/core/services/oss/src/core.rs:461,1
    - Dst: Result::push
      Src: /src/opendal/core/services/oss/src/core.rs:462,1
    - Dst: object_store::Result::is_empty
      Src: /src/opendal/core/services/oss/src/core.rs:463,1
    - Dst: Result::push
      Src: /src/opendal/core/services/oss/src/core.rs:464,1
    - Dst: is_empty
      Src: /src/opendal/core/services/oss/src/core.rs:467,1
    - Dst: Result::push
      Src: /src/opendal/core/services/oss/src/core.rs:468,1
    - Dst: percent_encode_path
      Src: /src/opendal/core/services/oss/src/core.rs:468,1
    - Dst: Result::push
      Src: /src/opendal/core/services/oss/src/core.rs:473,1
    - Dst: Result::to_string
      Src: /src/opendal/core/services/oss/src/core.rs:473,1
    - Dst: Self::is_empty
      Src: /src/opendal/core/services/oss/src/core.rs:477,1
    - Dst: Result::push
      Src: /src/opendal/core/services/oss/src/core.rs:478,1
    - Dst: percent_encode_path
      Src: /src/opendal/core/services/oss/src/core.rs:478,1
    - Dst: build_abs_path
      Src: /src/opendal/core/services/oss/src/core.rs:483,1
    - Dst: Result::push
      Src: /src/opendal/core/services/oss/src/core.rs:484,1
    - Dst: percent_encode_path
      Src: /src/opendal/core/services/oss/src/core.rs:484,1
    - Dst: Request::get
      Src: /src/opendal/core/services/oss/src/core.rs:487,1
    - Dst: Result::finish
      Src: /src/opendal/core/services/oss/src/core.rs:487,1
    - Dst: Option::extension
      Src: /src/opendal/core/services/oss/src/core.rs:487,1
    - Dst: extension
      Src: /src/opendal/core/services/oss/src/core.rs:487,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/oss/src/core.rs:489,1
    - Dst: body
      Src: /src/opendal/core/services/oss/src/core.rs:487,1
    - Dst: Buffer::new
      Src: /src/opendal/core/services/oss/src/core.rs:490,1
    - Dst: map_err
      Src: /src/opendal/core/services/oss/src/core.rs:487,1
    - Dst: Ok
      Src: /src/opendal/core/services/oss/src/core.rs:492,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 79
    argCount: 5
    argNames:
    - path
    - token
    - delimiter
    - limit
    - start_after
    argTypes:
    - '&str'
    - '&str'
    - '&str'
    - Option<usize>
    - Option<String>
    constantsTouched: []
    func_position:
      end: 493
      start: 450
    functionDepth: 5
    functionLinenumber: 450
    functionLinenumberEnd: 493
    functionName: OssCore::oss_list_object_request
    functionSourceFile: /src/opendal/core/services/oss/src/core.rs
    functionUses: 1
    functionsReached:
    - QueryPairsWriter::new
    - extension
    - Request::get
    - Buffer::new
    - map_err
    - Result::to_string
    - Ok
    - OssCore::get_endpoint
    - body
    - build_abs_path
    - is_empty
    - Self::is_empty
    - Result::finish
    - Result::push
    - Option::extension
    - percent_encode_path
    - ServiceOperation
    - object_store::Result::is_empty
    linkageType: ''
    returnType: Result
    signature: 'pub fn oss_list_object_request(&self,path: &str,token: &str,delimiter:
      &str,limit: Option<usize>,start_after: Option<String>,) -> Result<Request<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: OssCore::oss_get_object_request
      Src: /src/opendal/core/services/oss/src/core.rs:502,1
    - Dst: OssCore::sign
      Src: /src/opendal/core/services/oss/src/core.rs:503,1
    - Dst: Result::http_transport
      Src: /src/opendal/core/services/oss/src/core.rs:504,1
    - Dst: Self::fetch
      Src: /src/opendal/core/services/oss/src/core.rs:504,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 4
    argNames:
    - ctx
    - path
    - range
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - BytesRange
    - '&OpRead'
    constantsTouched: []
    func_position:
      end: 505
      start: 495
    functionDepth: 36
    functionLinenumber: 495
    functionLinenumberEnd: 505
    functionName: OssCore::oss_get_object
    functionSourceFile: /src/opendal/core/services/oss/src/core.rs
    functionUses: 0
    functionsReached:
    - Result::http_transport
    - OssCore::oss_get_object_request
    - OssCore::sign
    - Self::fetch
    linkageType: ''
    returnType: Result
    signature: 'pub async fn oss_get_object(&self,ctx: &OperationContext,path: &str,range:
      BytesRange,args: &OpRead,) -> Result<Response<HttpBody>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: OssCore::oss_head_object_request
      Src: /src/opendal/core/services/oss/src/core.rs:513,1
    - Dst: OssCore::sign
      Src: /src/opendal/core/services/oss/src/core.rs:514,1
    - Dst: OssCore::send
      Src: /src/opendal/core/services/oss/src/core.rs:515,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&OpStat'
    constantsTouched: []
    func_position:
      end: 516
      start: 507
    functionDepth: 39
    functionLinenumber: 507
    functionLinenumberEnd: 516
    functionName: OssCore::oss_head_object
    functionSourceFile: /src/opendal/core/services/oss/src/core.rs
    functionUses: 0
    functionsReached:
    - OssCore::oss_head_object_request
    - OssCore::sign
    - OssCore::send
    linkageType: ''
    returnType: Result
    signature: 'pub async fn oss_head_object(&self,ctx: &OperationContext,path: &str,args:
      &OpStat,) -> Result<Response<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/oss/src/core.rs:524,1
    - Dst: build_abs_path
      Src: /src/opendal/core/services/oss/src/core.rs:525,1
    - Dst: Request::put
      Src: /src/opendal/core/services/oss/src/core.rs:534,1
    - Dst: OssCore::insert_sse_headers
      Src: /src/opendal/core/services/oss/src/core.rs:536,1
    - Dst: DeleteInput::header
      Src: /src/opendal/core/services/oss/src/core.rs:538,1
    - Dst: DeleteInput::extension
      Src: /src/opendal/core/services/oss/src/core.rs:540,1
    - Dst: extension
      Src: /src/opendal/core/services/oss/src/core.rs:540,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/oss/src/core.rs:542,1
    - Dst: DeleteInput::body
      Src: /src/opendal/core/services/oss/src/core.rs:544,1
    - Dst: Buffer::new
      Src: /src/opendal/core/services/oss/src/core.rs:544,1
    - Dst: map_err
      Src: /src/opendal/core/services/oss/src/core.rs:544,1
    - Dst: OssCore::sign
      Src: /src/opendal/core/services/oss/src/core.rs:545,1
    - Dst: OssCore::send
      Src: /src/opendal/core/services/oss/src/core.rs:546,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 34
    argCount: 3
    argNames:
    - ctx
    - from
    - to
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    constantsTouched: []
    func_position:
      end: 547
      start: 518
    functionDepth: 36
    functionLinenumber: 518
    functionLinenumberEnd: 547
    functionName: OssCore::oss_copy_object
    functionSourceFile: /src/opendal/core/services/oss/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - extension
    - OssCore::insert_sse_headers
    - Buffer::new
    - Request::put
    - build_abs_path
    - DeleteInput::header
    - OssCore::sign
    - ServiceOperation
    - OssCore::send
    - DeleteInput::body
    - DeleteInput::extension
    linkageType: ''
    returnType: Result
    signature: 'pub async fn oss_copy_object(&self,ctx: &OperationContext,from: &str,to:
      &str,) -> Result<Response<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: OssCore::oss_list_object_request
      Src: /src/opendal/core/services/oss/src/core.rs:558,1
    - Dst: OssCore::sign
      Src: /src/opendal/core/services/oss/src/core.rs:559,1
    - Dst: OssCore::send
      Src: /src/opendal/core/services/oss/src/core.rs:560,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 6
    argNames:
    - ctx
    - path
    - token
    - delimiter
    - limit
    - start_after
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    - '&str'
    - Option<usize>
    - Option<String>
    constantsTouched: []
    func_position:
      end: 561
      start: 549
    functionDepth: 36
    functionLinenumber: 549
    functionLinenumberEnd: 561
    functionName: OssCore::oss_list_object
    functionSourceFile: /src/opendal/core/services/oss/src/core.rs
    functionUses: 0
    functionsReached:
    - OssCore::sign
    - OssCore::send
    - OssCore::oss_list_object_request
    linkageType: ''
    returnType: Result
    signature: 'pub async fn oss_list_object(&self,ctx: &OperationContext,path: &str,token:
      &str,delimiter: &str,limit: Option<usize>,start_after: Option<String>,) -> Result<Response<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/oss/src/core.rs:572,1
    - Dst: QueryPairsWriter::new
      Src: /src/opendal/core/services/oss/src/core.rs:574,1
    - Dst: Result::push
      Src: /src/opendal/core/services/oss/src/core.rs:575,1
    - Dst: is_empty
      Src: /src/opendal/core/services/oss/src/core.rs:577,1
    - Dst: Result::push
      Src: /src/opendal/core/services/oss/src/core.rs:578,1
    - Dst: percent_encode_path
      Src: /src/opendal/core/services/oss/src/core.rs:578,1
    - Dst: as_str
      Src: /src/opendal/core/services/oss/src/core.rs:578,1
    - Dst: object_store::Result::is_empty
      Src: /src/opendal/core/services/oss/src/core.rs:580,1
    - Dst: Result::push
      Src: /src/opendal/core/services/oss/src/core.rs:581,1
    - Dst: Result::push
      Src: /src/opendal/core/services/oss/src/core.rs:585,1
    - Dst: Result::to_string
      Src: /src/opendal/core/services/oss/src/core.rs:585,1
    - Dst: '&str::is_empty'
      Src: /src/opendal/core/services/oss/src/core.rs:587,1
    - Dst: Result::push
      Src: /src/opendal/core/services/oss/src/core.rs:588,1
    - Dst: percent_encode_path
      Src: /src/opendal/core/services/oss/src/core.rs:588,1
    - Dst: '&str::is_empty'
      Src: /src/opendal/core/services/oss/src/core.rs:590,1
    - Dst: Result::push
      Src: /src/opendal/core/services/oss/src/core.rs:591,1
    - Dst: percent_encode_path
      Src: /src/opendal/core/services/oss/src/core.rs:591,1
    - Dst: Request::get
      Src: /src/opendal/core/services/oss/src/core.rs:594,1
    - Dst: Result::finish
      Src: /src/opendal/core/services/oss/src/core.rs:594,1
    - Dst: Option::extension
      Src: /src/opendal/core/services/oss/src/core.rs:594,1
    - Dst: extension
      Src: /src/opendal/core/services/oss/src/core.rs:594,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/oss/src/core.rs:596,1
    - Dst: body
      Src: /src/opendal/core/services/oss/src/core.rs:594,1
    - Dst: Buffer::new
      Src: /src/opendal/core/services/oss/src/core.rs:597,1
    - Dst: map_err
      Src: /src/opendal/core/services/oss/src/core.rs:594,1
    - Dst: OssCore::sign
      Src: /src/opendal/core/services/oss/src/core.rs:599,1
    - Dst: OssCore::send
      Src: /src/opendal/core/services/oss/src/core.rs:600,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 84
    argCount: 6
    argNames:
    - ctx
    - prefix
    - delimiter
    - limit
    - key_marker
    - version_id_marker
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    - Option<usize>
    - '&str'
    - '&str'
    constantsTouched: []
    func_position:
      end: 601
      start: 563
    functionDepth: 36
    functionLinenumber: 563
    functionLinenumberEnd: 601
    functionName: OssCore::oss_list_object_versions
    functionSourceFile: /src/opendal/core/services/oss/src/core.rs
    functionUses: 0
    functionsReached:
    - Buffer::new
    - Result::finish
    - percent_encode_path
    - map_err
    - extension
    - Result::to_string
    - as_str
    - Result::push
    - OssCore::sign
    - ServiceOperation
    - object_store::Result::is_empty
    - QueryPairsWriter::new
    - build_abs_path
    - is_empty
    - '&str::is_empty'
    - Request::get
    - body
    - Option::extension
    - OssCore::send
    linkageType: ''
    returnType: Result
    signature: 'pub async fn oss_list_object_versions(&self,ctx: &OperationContext,prefix:
      &str,delimiter: &str,limit: Option<usize>,key_marker: &str,version_id_marker:
      &str,) -> Result<Response<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: OssCore::oss_delete_object_request
      Src: /src/opendal/core/services/oss/src/core.rs:609,1
    - Dst: OssCore::sign
      Src: /src/opendal/core/services/oss/src/core.rs:610,1
    - Dst: OssCore::send
      Src: /src/opendal/core/services/oss/src/core.rs:611,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&OpDelete'
    constantsTouched: []
    func_position:
      end: 612
      start: 603
    functionDepth: 33
    functionLinenumber: 603
    functionLinenumberEnd: 612
    functionName: OssCore::oss_delete_object
    functionSourceFile: /src/opendal/core/services/oss/src/core.rs
    functionUses: 0
    functionsReached:
    - OssCore::oss_delete_object_request
    - OssCore::sign
    - OssCore::send
    linkageType: ''
    returnType: Result
    signature: 'pub async fn oss_delete_object(&self,ctx: &OperationContext,path:
      &str,args: &OpDelete,) -> Result<Response<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Request::post
      Src: /src/opendal/core/services/oss/src/core.rs:621,1
    - Dst: quick_xml::se::to_string
      Src: /src/opendal/core/services/oss/src/core.rs:623,1
    - Dst: Result::into_iter
      Src: /src/opendal/core/services/oss/src/core.rs:624,1
    - Dst: map
      Src: /src/opendal/core/services/oss/src/core.rs:624,1
    - Dst: build_abs_path
      Src: /src/opendal/core/services/oss/src/core.rs:627,1
    - Dst: version
      Src: /src/opendal/core/services/oss/src/core.rs:628,1
    - Dst: Result::map
      Src: /src/opendal/core/services/oss/src/core.rs:628,1
    - Dst: Result::to_owned
      Src: /src/opendal/core/services/oss/src/core.rs:628,1
    - Dst: collect
      Src: /src/opendal/core/services/oss/src/core.rs:624,1
    - Dst: map_err
      Src: /src/opendal/core/services/oss/src/core.rs:623,1
    - Dst: header
      Src: /src/opendal/core/services/oss/src/core.rs:635,1
    - Dst: Result::len
      Src: /src/opendal/core/services/oss/src/core.rs:635,1
    - Dst: header
      Src: /src/opendal/core/services/oss/src/core.rs:637,1
    - Dst: header
      Src: /src/opendal/core/services/oss/src/core.rs:639,1
    - Dst: format_content_md5
      Src: /src/opendal/core/services/oss/src/core.rs:639,1
    - Dst: Result::as_bytes
      Src: /src/opendal/core/services/oss/src/core.rs:639,1
    - Dst: extension
      Src: /src/opendal/core/services/oss/src/core.rs:641,1
    - Dst: extension
      Src: /src/opendal/core/services/oss/src/core.rs:641,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/oss/src/core.rs:643,1
    - Dst: body
      Src: /src/opendal/core/services/oss/src/core.rs:645,1
    - Dst: Buffer::from
      Src: /src/opendal/core/services/oss/src/core.rs:646,1
    - Dst: Bytes::from
      Src: /src/opendal/core/services/oss/src/core.rs:646,1
    - Dst: map_err
      Src: /src/opendal/core/services/oss/src/core.rs:645,1
    - Dst: OssCore::sign
      Src: /src/opendal/core/services/oss/src/core.rs:648,1
    - Dst: OssCore::send
      Src: /src/opendal/core/services/oss/src/core.rs:649,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 57
    argCount: 2
    argNames:
    - ctx
    - paths
    argTypes:
    - '&OperationContext'
    - Vec<(String, OpDelete)>
    constantsTouched: []
    func_position:
      end: 650
      start: 614
    functionDepth: 32
    functionLinenumber: 614
    functionLinenumberEnd: 650
    functionName: OssCore::oss_delete_objects
    functionSourceFile: /src/opendal/core/services/oss/src/core.rs
    functionUses: 0
    functionsReached:
    - collect
    - map
    - Result::len
    - Result::to_owned
    - Result::as_bytes
    - map_err
    - extension
    - OssCore::sign
    - ServiceOperation
    - Result::map
    - Buffer::from
    - Result::into_iter
    - quick_xml::se::to_string
    - build_abs_path
    - Bytes::from
    - format_content_md5
    - Request::post
    - body
    - OssCore::send
    - version
    - header
    linkageType: ''
    returnType: Result
    signature: 'pub async fn oss_delete_objects(&self,ctx: &OperationContext,paths:
      Vec<(String, OpDelete)>,) -> Result<Response<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - is_presign
    argTypes:
    - bool
    constantsTouched: []
    func_position:
      end: 658
      start: 652
    functionDepth: 0
    functionLinenumber: 652
    functionLinenumberEnd: 658
    functionName: OssCore::get_endpoint
    functionSourceFile: /src/opendal/core/services/oss/src/core.rs
    functionUses: 9
    functionsReached: []
    linkageType: ''
    returnType: '&str'
    signature: 'fn get_endpoint(&self, is_presign: bool) -> &str'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/oss/src/core.rs:671,1
    - Dst: OssCore::get_endpoint
      Src: /src/opendal/core/services/oss/src/core.rs:672,1
    - Dst: Request::post
      Src: /src/opendal/core/services/oss/src/core.rs:674,1
    - Dst: header
      Src: /src/opendal/core/services/oss/src/core.rs:676,1
    - Dst: header
      Src: /src/opendal/core/services/oss/src/core.rs:679,1
    - Dst: header
      Src: /src/opendal/core/services/oss/src/core.rs:682,1
    - Dst: header
      Src: /src/opendal/core/services/oss/src/core.rs:685,1
    - Dst: OssCore::insert_sse_headers
      Src: /src/opendal/core/services/oss/src/core.rs:687,1
    - Dst: extension
      Src: /src/opendal/core/services/oss/src/core.rs:689,1
    - Dst: extension
      Src: /src/opendal/core/services/oss/src/core.rs:689,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/oss/src/core.rs:691,1
    - Dst: body
      Src: /src/opendal/core/services/oss/src/core.rs:693,1
    - Dst: Buffer::new
      Src: /src/opendal/core/services/oss/src/core.rs:693,1
    - Dst: map_err
      Src: /src/opendal/core/services/oss/src/core.rs:693,1
    - Dst: OssCore::sign
      Src: /src/opendal/core/services/oss/src/core.rs:694,1
    - Dst: OssCore::send
      Src: /src/opendal/core/services/oss/src/core.rs:695,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 53
    argCount: 7
    argNames:
    - ctx
    - path
    - content_type
    - content_disposition
    - cache_control
    - content_encoding
    - is_presign
    argTypes:
    - '&OperationContext'
    - '&str'
    - Option<&str>
    - Option<&str>
    - Option<&str>
    - Option<&str>
    - bool
    constantsTouched: []
    func_position:
      end: 696
      start: 661
    functionDepth: 36
    functionLinenumber: 661
    functionLinenumberEnd: 696
    functionName: OssCore::oss_initiate_upload
    functionSourceFile: /src/opendal/core/services/oss/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - extension
    - OssCore::insert_sse_headers
    - Buffer::new
    - OssCore::get_endpoint
    - Request::post
    - body
    - build_abs_path
    - OssCore::sign
    - ServiceOperation
    - OssCore::send
    - header
    linkageType: ''
    returnType: Result
    signature: 'pub async fn oss_initiate_upload(&self,ctx: &OperationContext,path:
      &str,content_type: Option<&str>,content_disposition: Option<&str>,cache_control:
      Option<&str>,content_encoding: Option<&str>,is_presign: bool,) -> Result<Response<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/oss/src/core.rs:710,1
    - Dst: OssCore::get_endpoint
      Src: /src/opendal/core/services/oss/src/core.rs:711,1
    - Dst: Request::put
      Src: /src/opendal/core/services/oss/src/core.rs:721,1
    - Dst: DeleteInput::header
      Src: /src/opendal/core/services/oss/src/core.rs:722,1
    - Dst: DeleteInput::extension
      Src: /src/opendal/core/services/oss/src/core.rs:724,1
    - Dst: extension
      Src: /src/opendal/core/services/oss/src/core.rs:724,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/oss/src/core.rs:726,1
    - Dst: DeleteInput::body
      Src: /src/opendal/core/services/oss/src/core.rs:728,1
    - Dst: map_err
      Src: /src/opendal/core/services/oss/src/core.rs:728,1
    - Dst: OssCore::sign
      Src: /src/opendal/core/services/oss/src/core.rs:729,1
    - Dst: OssCore::send
      Src: /src/opendal/core/services/oss/src/core.rs:730,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 28
    argCount: 7
    argNames:
    - ctx
    - path
    - upload_id
    - part_number
    - is_presign
    - size
    - body
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    - usize
    - bool
    - u64
    - Buffer
    constantsTouched: []
    func_position:
      end: 731
      start: 700
    functionDepth: 36
    functionLinenumber: 700
    functionLinenumberEnd: 731
    functionName: OssCore::oss_upload_part_request
    functionSourceFile: /src/opendal/core/services/oss/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - extension
    - Request::put
    - OssCore::get_endpoint
    - build_abs_path
    - DeleteInput::header
    - OssCore::sign
    - ServiceOperation
    - OssCore::send
    - DeleteInput::body
    - DeleteInput::extension
    linkageType: ''
    returnType: Result
    signature: 'pub async fn oss_upload_part_request(&self,ctx: &OperationContext,path:
      &str,upload_id: &str,part_number: usize,is_presign: bool,size: u64,body: Buffer,)
      -> Result<Response<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/oss/src/core.rs:741,1
    - Dst: OssCore::get_endpoint
      Src: /src/opendal/core/services/oss/src/core.rs:742,1
    - Dst: Request::post
      Src: /src/opendal/core/services/oss/src/core.rs:750,1
    - Dst: quick_xml::se::to_string
      Src: /src/opendal/core/services/oss/src/core.rs:752,1
    - Dst: (String, Metadata)::to_vec
      Src: /src/opendal/core/services/oss/src/core.rs:753,1
    - Dst: map_err
      Src: /src/opendal/core/services/oss/src/core.rs:752,1
    - Dst: header
      Src: /src/opendal/core/services/oss/src/core.rs:757,1
    - Dst: Result::len
      Src: /src/opendal/core/services/oss/src/core.rs:757,1
    - Dst: header
      Src: /src/opendal/core/services/oss/src/core.rs:759,1
    - Dst: extension
      Src: /src/opendal/core/services/oss/src/core.rs:761,1
    - Dst: extension
      Src: /src/opendal/core/services/oss/src/core.rs:761,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/oss/src/core.rs:763,1
    - Dst: body
      Src: /src/opendal/core/services/oss/src/core.rs:765,1
    - Dst: Buffer::from
      Src: /src/opendal/core/services/oss/src/core.rs:766,1
    - Dst: Bytes::from
      Src: /src/opendal/core/services/oss/src/core.rs:766,1
    - Dst: map_err
      Src: /src/opendal/core/services/oss/src/core.rs:765,1
    - Dst: OssCore::sign
      Src: /src/opendal/core/services/oss/src/core.rs:768,1
    - Dst: OssCore::send
      Src: /src/opendal/core/services/oss/src/core.rs:769,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 40
    argCount: 5
    argNames:
    - ctx
    - path
    - upload_id
    - is_presign
    - parts
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    - bool
    - Vec<MultipartUploadPart>
    constantsTouched: []
    func_position:
      end: 770
      start: 733
    functionDepth: 40
    functionLinenumber: 733
    functionLinenumberEnd: 770
    functionName: OssCore::oss_complete_multipart_upload_request
    functionSourceFile: /src/opendal/core/services/oss/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - extension
    - (String, Metadata)::to_vec
    - OssCore::get_endpoint
    - Request::post
    - body
    - quick_xml::se::to_string
    - build_abs_path
    - Bytes::from
    - OssCore::sign
    - ServiceOperation
    - Result::len
    - OssCore::send
    - Buffer::from
    - header
    linkageType: ''
    returnType: Result
    signature: 'pub async fn oss_complete_multipart_upload_request(&self,ctx: &OperationContext,path:
      &str,upload_id: &str,is_presign: bool,parts: Vec<MultipartUploadPart>,) -> Result<Response<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/oss/src/core.rs:780,1
    - Dst: Request::delete
      Src: /src/opendal/core/services/oss/src/core.rs:789,1
    - Dst: Result::extension
      Src: /src/opendal/core/services/oss/src/core.rs:789,1
    - Dst: extension
      Src: /src/opendal/core/services/oss/src/core.rs:789,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/oss/src/core.rs:791,1
    - Dst: body
      Src: /src/opendal/core/services/oss/src/core.rs:789,1
    - Dst: Buffer::new
      Src: /src/opendal/core/services/oss/src/core.rs:792,1
    - Dst: map_err
      Src: /src/opendal/core/services/oss/src/core.rs:789,1
    - Dst: OssCore::sign
      Src: /src/opendal/core/services/oss/src/core.rs:794,1
    - Dst: OssCore::send
      Src: /src/opendal/core/services/oss/src/core.rs:795,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 23
    argCount: 3
    argNames:
    - ctx
    - path
    - upload_id
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    constantsTouched: []
    func_position:
      end: 796
      start: 774
    functionDepth: 32
    functionLinenumber: 774
    functionLinenumberEnd: 796
    functionName: OssCore::oss_abort_multipart_upload
    functionSourceFile: /src/opendal/core/services/oss/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - extension
    - Buffer::new
    - Request::delete
    - Result::extension
    - body
    - build_abs_path
    - OssCore::sign
    - ServiceOperation
    - OssCore::send
    linkageType: ''
    returnType: Result
    signature: 'pub async fn oss_abort_multipart_upload(&self,ctx: &OperationContext,path:
      &str,upload_id: &str,) -> Result<Response<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: quick_xml::se::to_string
      Src: /src/opendal/core/services/s3/src/core.rs:1732,1
    - Dst: expect
      Src: /src/opendal/core/services/s3/src/core.rs:1732,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 1749
      start: 1717
    functionDepth: 0
    functionLinenumber: 1717
    functionLinenumberEnd: 1749
    functionName: tests::test_serialize_delete_objects_request
    functionSourceFile: /src/opendal/core/services/s3/src/core.rs
    functionUses: 0
    functionsReached:
    - quick_xml::se::to_string
    - expect
    linkageType: ''
    returnType: void
    signature: fn test_serialize_delete_objects_request()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Bytes::from
      Src: /src/opendal/core/services/s3/src/core.rs:1754,1
    - Dst: quick_xml::de::from_reader
      Src: /src/opendal/core/services/s3/src/core.rs:1766,1
    - Dst: Result::reader
      Src: /src/opendal/core/services/s3/src/core.rs:1766,1
    - Dst: expect
      Src: /src/opendal/core/services/s3/src/core.rs:1766,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 1772
      start: 1753
    functionDepth: 32
    functionLinenumber: 1753
    functionLinenumberEnd: 1772
    functionName: tests::test_deserialize_delete_objects_result
    functionSourceFile: /src/opendal/core/services/s3/src/core.rs
    functionUses: 0
    functionsReached:
    - Bytes::from
    - Result::reader
    - quick_xml::de::from_reader
    - expect
    linkageType: ''
    returnType: void
    signature: fn test_deserialize_delete_objects_result()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Bytes::from
      Src: /src/opendal/core/services/oss/src/core.rs:998,1
    - Dst: quick_xml::de::from_reader
      Src: /src/opendal/core/services/oss/src/core.rs:1007,1
    - Dst: Result::reader
      Src: /src/opendal/core/services/oss/src/core.rs:1007,1
    - Dst: expect
      Src: /src/opendal/core/services/oss/src/core.rs:1007,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 1012
      start: 997
    functionDepth: 32
    functionLinenumber: 997
    functionLinenumberEnd: 1012
    functionName: tests::test_deserialize_initiate_multipart_upload_response
    functionSourceFile: /src/opendal/core/services/oss/src/core.rs
    functionUses: 0
    functionsReached:
    - Bytes::from
    - Result::reader
    - quick_xml::de::from_reader
    - expect
    linkageType: ''
    returnType: void
    signature: fn test_deserialize_initiate_multipart_upload_response()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: quick_xml::se::to_string
      Src: /src/opendal/core/services/s3/src/core.rs:1643,1
    - Dst: expect
      Src: /src/opendal/core/services/s3/src/core.rs:1643,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 1664
      start: 1622
    functionDepth: 0
    functionLinenumber: 1622
    functionLinenumberEnd: 1664
    functionName: tests::test_serialize_complete_multipart_upload_request
    functionSourceFile: /src/opendal/core/services/s3/src/core.rs
    functionUses: 0
    functionsReached:
    - quick_xml::se::to_string
    - expect
    linkageType: ''
    returnType: void
    signature: fn test_serialize_complete_multipart_upload_request()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: bytes::Bytes::from
      Src: /src/opendal/core/services/oss/src/core.rs:1059,1
    - Dst: quick_xml::de::from_reader
      Src: /src/opendal/core/services/oss/src/core.rs:1106,1
    - Dst: Result::reader
      Src: /src/opendal/core/services/oss/src/core.rs:1106,1
    - Dst: expect
      Src: /src/opendal/core/services/oss/src/core.rs:1106,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 1135
      start: 1058
    functionDepth: 31
    functionLinenumber: 1058
    functionLinenumberEnd: 1135
    functionName: tests::test_parse_list_output
    functionSourceFile: /src/opendal/core/services/oss/src/core.rs
    functionUses: 0
    functionsReached:
    - Result::reader
    - quick_xml::de::from_reader
    - expect
    - bytes::Bytes::from
    linkageType: ''
    returnType: void
    signature: fn test_parse_list_output()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: to_string
      Src: /src/opendal/core/services/oss/src/writer.rs:44,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 4
    argNames:
    - core
    - ctx
    - path
    - op
    argTypes:
    - Arc<OssCore>
    - OperationContext
    - '&str'
    - OpWrite
    constantsTouched: []
    func_position:
      end: 47
      start: 40
    functionDepth: 2
    functionLinenumber: 40
    functionLinenumberEnd: 47
    functionName: OssWriter::new
    functionSourceFile: /src/opendal/core/services/oss/src/writer.rs
    functionUses: 1
    functionsReached:
    - to_string
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(core: Arc<OssCore>, ctx: OperationContext, path: &str,
      op: OpWrite) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Metadata::default
      Src: /src/opendal/core/services/oss/src/writer.rs:50,1
    - Dst: parse_etag
      Src: /src/opendal/core/services/oss/src/writer.rs:51,1
    - Dst: Result::set_etag
      Src: /src/opendal/core/services/oss/src/writer.rs:52,1
    - Dst: parse_content_md5
      Src: /src/opendal/core/services/oss/src/writer.rs:54,1
    - Dst: Result::set_content_md5
      Src: /src/opendal/core/services/oss/src/writer.rs:55,1
    - Dst: parse_header_to_str
      Src: /src/opendal/core/services/oss/src/writer.rs:57,1
    - Dst: Result::set_version
      Src: /src/opendal/core/services/oss/src/writer.rs:58,1
    - Dst: Ok
      Src: /src/opendal/core/services/oss/src/writer.rs:61,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 23
    argCount: 1
    argNames:
    - headers
    argTypes:
    - '&HeaderMap<HeaderValue>'
    constantsTouched: []
    func_position:
      end: 62
      start: 49
    functionDepth: 39
    functionLinenumber: 49
    functionLinenumberEnd: 62
    functionName: OssWriter::parse_metadata
    functionSourceFile: /src/opendal/core/services/oss/src/writer.rs
    functionUses: 0
    functionsReached:
    - parse_content_md5
    - Metadata::default
    - Ok
    - parse_header_to_str
    - Result::set_version
    - parse_etag
    - Result::set_etag
    - Result::set_content_md5
    linkageType: ''
    returnType: Result
    signature: 'fn parse_metadata(headers: &HeaderMap<HeaderValue>) -> Result<Metadata>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: oss_put_object_request
      Src: /src/opendal/core/services/oss/src/writer.rs:68,1
    - Dst: Some
      Src: /src/opendal/core/services/oss/src/writer.rs:69,1
    - Dst: sign
      Src: /src/opendal/core/services/oss/src/writer.rs:70,1
    - Dst: send
      Src: /src/opendal/core/services/oss/src/writer.rs:72,1
    - Dst: Self::parse_metadata
      Src: /src/opendal/core/services/oss/src/writer.rs:74,1
    - Dst: headers
      Src: /src/opendal/core/services/oss/src/writer.rs:74,1
    - Dst: status
      Src: /src/opendal/core/services/oss/src/writer.rs:75,1
    - Dst: Ok
      Src: /src/opendal/core/services/oss/src/writer.rs:78,1
    - Dst: Err
      Src: /src/opendal/core/services/oss/src/writer.rs:79,1
    - Dst: super::core::parse_error
      Src: /src/opendal/core/services/oss/src/writer.rs:79,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 34
    argCount: 2
    argNames:
    - size
    - body
    argTypes:
    - u64
    - Buffer
    constantsTouched: []
    func_position:
      end: 81
      start: 66
    functionDepth: 34
    functionLinenumber: 66
    functionLinenumberEnd: 81
    functionName: OssWriter::write_once
    functionSourceFile: /src/opendal/core/services/oss/src/writer.rs
    functionUses: 0
    functionsReached:
    - oss_put_object_request
    - status
    - Ok
    - sign
    - Some
    - Err
    - Self::parse_metadata
    - headers
    - send
    - super::core::parse_error
    linkageType: ''
    returnType: Result
    signature: 'async fn write_once(&self, size: u64, body: Buffer) -> Result<Metadata>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: oss_initiate_upload
      Src: /src/opendal/core/services/oss/src/writer.rs:84,1
    - Dst: content_type
      Src: /src/opendal/core/services/oss/src/writer.rs:89,1
    - Dst: content_disposition
      Src: /src/opendal/core/services/oss/src/writer.rs:90,1
    - Dst: cache_control
      Src: /src/opendal/core/services/oss/src/writer.rs:91,1
    - Dst: content_encoding
      Src: /src/opendal/core/services/oss/src/writer.rs:92,1
    - Dst: status
      Src: /src/opendal/core/services/oss/src/writer.rs:97,1
    - Dst: into_body
      Src: /src/opendal/core/services/oss/src/writer.rs:101,1
    - Dst: quick_xml::de::from_reader
      Src: /src/opendal/core/services/oss/src/writer.rs:104,1
    - Dst: bytes::Buf::reader
      Src: /src/opendal/core/services/oss/src/writer.rs:104,1
    - Dst: map_err
      Src: /src/opendal/core/services/oss/src/writer.rs:104,1
    - Dst: Ok
      Src: /src/opendal/core/services/oss/src/writer.rs:107,1
    - Dst: Err
      Src: /src/opendal/core/services/oss/src/writer.rs:109,1
    - Dst: super::core::parse_error
      Src: /src/opendal/core/services/oss/src/writer.rs:109,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 36
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 111
      start: 83
    functionDepth: 37
    functionLinenumber: 83
    functionLinenumberEnd: 111
    functionName: OssWriter::initiate_part
    functionSourceFile: /src/opendal/core/services/oss/src/writer.rs
    functionUses: 0
    functionsReached:
    - map_err
    - content_encoding
    - cache_control
    - status
    - Ok
    - into_body
    - Err
    - content_disposition
    - quick_xml::de::from_reader
    - bytes::Buf::reader
    - content_type
    - oss_initiate_upload
    - super::core::parse_error
    linkageType: ''
    returnType: Result
    signature: async fn initiate_part(&self) -> Result<String>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: oss_upload_part_request
      Src: /src/opendal/core/services/oss/src/writer.rs:123,1
    - Dst: status
      Src: /src/opendal/core/services/oss/src/writer.rs:136,1
    - Dst: parse_etag
      Src: /src/opendal/core/services/oss/src/writer.rs:140,1
    - Dst: headers
      Src: /src/opendal/core/services/oss/src/writer.rs:140,1
    - Dst: ok_or_else
      Src: /src/opendal/core/services/oss/src/writer.rs:140,1
    - Dst: Error::new
      Src: /src/opendal/core/services/oss/src/writer.rs:142,1
    - Dst: to_string
      Src: /src/opendal/core/services/oss/src/writer.rs:140,1
    - Dst: Ok
      Src: /src/opendal/core/services/oss/src/writer.rs:149,1
    - Dst: Err
      Src: /src/opendal/core/services/oss/src/writer.rs:156,1
    - Dst: super::core::parse_error
      Src: /src/opendal/core/services/oss/src/writer.rs:156,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 29
    argCount: 4
    argNames:
    - upload_id
    - part_number
    - size
    - body
    argTypes:
    - '&str'
    - usize
    - u64
    - Buffer
    constantsTouched: []
    func_position:
      end: 158
      start: 113
    functionDepth: 37
    functionLinenumber: 113
    functionLinenumberEnd: 158
    functionName: OssWriter::write_part
    functionSourceFile: /src/opendal/core/services/oss/src/writer.rs
    functionUses: 0
    functionsReached:
    - to_string
    - status
    - Ok
    - oss_upload_part_request
    - Error::new
    - Err
    - headers
    - parse_etag
    - super::core::parse_error
    - ok_or_else
    linkageType: ''
    returnType: Result
    signature: 'async fn write_part(&self,upload_id: &str,part_number: usize,size:
      u64,body: Buffer,) -> Result<oio::MultipartPart>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: (String, Metadata)::iter
      Src: /src/opendal/core/services/oss/src/writer.rs:165,1
    - Dst: map
      Src: /src/opendal/core/services/oss/src/writer.rs:165,1
    - Dst: clone
      Src: /src/opendal/core/services/oss/src/writer.rs:169,1
    - Dst: Result::collect
      Src: /src/opendal/core/services/oss/src/writer.rs:165,1
    - Dst: oss_complete_multipart_upload_request
      Src: /src/opendal/core/services/oss/src/writer.rs:173,1
    - Dst: Self::parse_metadata
      Src: /src/opendal/core/services/oss/src/writer.rs:178,1
    - Dst: headers
      Src: /src/opendal/core/services/oss/src/writer.rs:178,1
    - Dst: status
      Src: /src/opendal/core/services/oss/src/writer.rs:179,1
    - Dst: Ok
      Src: /src/opendal/core/services/oss/src/writer.rs:182,1
    - Dst: Err
      Src: /src/opendal/core/services/oss/src/writer.rs:183,1
    - Dst: super::core::parse_error
      Src: /src/opendal/core/services/oss/src/writer.rs:183,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 32
    argCount: 2
    argNames:
    - upload_id
    - parts
    argTypes:
    - '&str'
    - '&[oio::MultipartPart]'
    constantsTouched: []
    func_position:
      end: 185
      start: 160
    functionDepth: 36
    functionLinenumber: 160
    functionLinenumberEnd: 185
    functionName: OssWriter::complete_part
    functionSourceFile: /src/opendal/core/services/oss/src/writer.rs
    functionUses: 0
    functionsReached:
    - status
    - oss_complete_multipart_upload_request
    - Ok
    - clone
    - Err
    - map
    - Result::collect
    - Self::parse_metadata
    - headers
    - (String, Metadata)::iter
    - super::core::parse_error
    linkageType: ''
    returnType: Result
    signature: 'async fn complete_part(&self,upload_id: &str,parts: &[oio::MultipartPart],)
      -> Result<Metadata>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: oss_abort_multipart_upload
      Src: /src/opendal/core/services/oss/src/writer.rs:188,1
    - Dst: status
      Src: /src/opendal/core/services/oss/src/writer.rs:192,1
    - Dst: Ok
      Src: /src/opendal/core/services/oss/src/writer.rs:194,1
    - Dst: Err
      Src: /src/opendal/core/services/oss/src/writer.rs:195,1
    - Dst: super::core::parse_error
      Src: /src/opendal/core/services/oss/src/writer.rs:195,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 1
    argNames:
    - upload_id
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 197
      start: 187
    functionDepth: 33
    functionLinenumber: 187
    functionLinenumberEnd: 197
    functionName: OssWriter::abort_part
    functionSourceFile: /src/opendal/core/services/oss/src/writer.rs
    functionUses: 0
    functionsReached:
    - status
    - Ok
    - Err
    - oss_abort_multipart_upload
    - super::core::parse_error
    linkageType: ''
    returnType: Result
    signature: 'async fn abort_part(&self, upload_id: &str) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: oss_head_object
      Src: /src/opendal/core/services/oss/src/writer.rs:202,1
    - Dst: OpStat::new
      Src: /src/opendal/core/services/oss/src/writer.rs:204,1
    - Dst: status
      Src: /src/opendal/core/services/oss/src/writer.rs:207,1
    - Dst: parse_content_length
      Src: /src/opendal/core/services/oss/src/writer.rs:210,1
    - Dst: headers
      Src: /src/opendal/core/services/oss/src/writer.rs:210,1
    - Dst: ok_or_else
      Src: /src/opendal/core/services/oss/src/writer.rs:210,1
    - Dst: Error::new
      Src: /src/opendal/core/services/oss/src/writer.rs:211,1
    - Dst: Ok
      Src: /src/opendal/core/services/oss/src/writer.rs:216,1
    - Dst: Ok
      Src: /src/opendal/core/services/oss/src/writer.rs:218,1
    - Dst: Err
      Src: /src/opendal/core/services/oss/src/writer.rs:219,1
    - Dst: super::core::parse_error
      Src: /src/opendal/core/services/oss/src/writer.rs:219,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 28
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 221
      start: 201
    functionDepth: 40
    functionLinenumber: 201
    functionLinenumberEnd: 221
    functionName: OssWriter::offset
    functionSourceFile: /src/opendal/core/services/oss/src/writer.rs
    functionUses: 0
    functionsReached:
    - status
    - Ok
    - OpStat::new
    - Error::new
    - Err
    - parse_content_length
    - headers
    - super::core::parse_error
    - oss_head_object
    - ok_or_else
    linkageType: ''
    returnType: Result
    signature: async fn offset(&self) -> Result<u64>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: oss_append_object_request
      Src: /src/opendal/core/services/oss/src/writer.rs:224,1
    - Dst: sign
      Src: /src/opendal/core/services/oss/src/writer.rs:227,1
    - Dst: send
      Src: /src/opendal/core/services/oss/src/writer.rs:229,1
    - Dst: Self::parse_metadata
      Src: /src/opendal/core/services/oss/src/writer.rs:231,1
    - Dst: headers
      Src: /src/opendal/core/services/oss/src/writer.rs:231,1
    - Dst: status
      Src: /src/opendal/core/services/oss/src/writer.rs:232,1
    - Dst: Ok
      Src: /src/opendal/core/services/oss/src/writer.rs:235,1
    - Dst: Err
      Src: /src/opendal/core/services/oss/src/writer.rs:236,1
    - Dst: super::core::parse_error
      Src: /src/opendal/core/services/oss/src/writer.rs:236,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 33
    argCount: 3
    argNames:
    - offset
    - size
    - body
    argTypes:
    - u64
    - u64
    - Buffer
    constantsTouched: []
    func_position:
      end: 238
      start: 223
    functionDepth: 34
    functionLinenumber: 223
    functionLinenumberEnd: 238
    functionName: OssWriter::append
    functionSourceFile: /src/opendal/core/services/oss/src/writer.rs
    functionUses: 0
    functionsReached:
    - oss_append_object_request
    - status
    - Ok
    - sign
    - Err
    - Self::parse_metadata
    - headers
    - send
    - super::core::parse_error
    linkageType: ''
    returnType: Result
    signature: 'async fn append(&self, offset: u64, size: u64, body: Buffer) -> Result<Metadata>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: register::<Oss>
      Src: /src/opendal/core/services/oss/src/lib.rs:38,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - registry
    argTypes:
    - '&opendal_core::OperatorRegistry'
    constantsTouched: []
    func_position:
      end: 39
      start: 37
    functionDepth: 0
    functionLinenumber: 37
    functionLinenumberEnd: 39
    functionName: register_oss_service
    functionSourceFile: /src/opendal/core/services/oss/src/lib.rs
    functionUses: 1
    functionsReached:
    - register::<Oss>
    linkageType: ''
    returnType: void
    signature: 'pub fn register_oss_service(registry: &opendal_core::OperatorRegistry)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::debug_struct
      Src: /src/opendal/core/services/oss/src/backend.rs:63,1
    - Dst: field
      Src: /src/opendal/core/services/oss/src/backend.rs:63,1
    - Dst: finish_non_exhaustive
      Src: /src/opendal/core/services/oss/src/backend.rs:63,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - f
    argTypes:
    - '&mut std::fmt::Formatter<''_>'
    constantsTouched: []
    func_position:
      end: 66
      start: 62
    functionDepth: 5
    functionLinenumber: 62
    functionLinenumberEnd: 66
    functionName: OssBuilder::fmt
    functionSourceFile: /src/opendal/core/services/oss/src/backend.rs
    functionUses: 0
    functionsReached:
    - field
    - Result::debug_struct
    - finish_non_exhaustive
    linkageType: ''
    returnType: std::fmt::Result
    signature: 'fn fmt(&self, f: &mut std::fmt::Formatter<''_>) -> std::fmt::Result'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::is_empty
      Src: /src/opendal/core/services/oss/src/backend.rs:74,1
    - Dst: Some
      Src: /src/opendal/core/services/oss/src/backend.rs:77,1
    - Dst: Result::to_string
      Src: /src/opendal/core/services/oss/src/backend.rs:77,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - root
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 81
      start: 73
    functionDepth: 4
    functionLinenumber: 73
    functionLinenumberEnd: 81
    functionName: OssBuilder::root
    functionSourceFile: /src/opendal/core/services/oss/src/backend.rs
    functionUses: 0
    functionsReached:
    - Result::is_empty
    - Result::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn root(mut self, root: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: usize::to_string
      Src: /src/opendal/core/services/oss/src/backend.rs:85,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - bucket
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 88
      start: 84
    functionDepth: 2
    functionLinenumber: 84
    functionLinenumberEnd: 88
    functionName: OssBuilder::bucket
    functionSourceFile: /src/opendal/core/services/oss/src/backend.rs
    functionUses: 0
    functionsReached:
    - usize::to_string
    linkageType: ''
    returnType: Self
    signature: 'pub fn bucket(mut self, bucket: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self::is_empty
      Src: /src/opendal/core/services/oss/src/backend.rs:92,1
    - Dst: Some
      Src: /src/opendal/core/services/oss/src/backend.rs:94,1
    - Dst: Self::trim_end_matches
      Src: /src/opendal/core/services/oss/src/backend.rs:94,1
    - Dst: to_string
      Src: /src/opendal/core/services/oss/src/backend.rs:94,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 1
    argNames:
    - endpoint
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 98
      start: 91
    functionDepth: 4
    functionLinenumber: 91
    functionLinenumberEnd: 98
    functionName: OssBuilder::endpoint
    functionSourceFile: /src/opendal/core/services/oss/src/backend.rs
    functionUses: 0
    functionsReached:
    - Self::is_empty
    - to_string
    - Self::trim_end_matches
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn endpoint(mut self, endpoint: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Some
      Src: /src/opendal/core/services/oss/src/backend.rs:110,1
    - Dst: Self::to_string
      Src: /src/opendal/core/services/oss/src/backend.rs:110,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - addressing_style
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 113
      start: 109
    functionDepth: 2
    functionLinenumber: 109
    functionLinenumberEnd: 113
    functionName: OssBuilder::addressing_style
    functionSourceFile: /src/opendal/core/services/oss/src/backend.rs
    functionUses: 0
    functionsReached:
    - Self::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn addressing_style(mut self, addressing_style: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 1
    argNames:
    - _enabled
    argTypes:
    - bool
    constantsTouched: []
    func_position:
      end: 122
      start: 120
    functionDepth: 0
    functionLinenumber: 120
    functionLinenumberEnd: 122
    functionName: OssBuilder::enable_versioning
    functionSourceFile: /src/opendal/core/services/oss/src/backend.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: 'pub fn enable_versioning(self, _enabled: bool) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self::is_empty
      Src: /src/opendal/core/services/oss/src/backend.rs:133,1
    - Dst: Some
      Src: /src/opendal/core/services/oss/src/backend.rs:135,1
    - Dst: Self::trim_end_matches
      Src: /src/opendal/core/services/oss/src/backend.rs:135,1
    - Dst: to_string
      Src: /src/opendal/core/services/oss/src/backend.rs:135,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 1
    argNames:
    - endpoint
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 139
      start: 132
    functionDepth: 4
    functionLinenumber: 132
    functionLinenumberEnd: 139
    functionName: OssBuilder::presign_endpoint
    functionSourceFile: /src/opendal/core/services/oss/src/backend.rs
    functionUses: 0
    functionsReached:
    - Self::is_empty
    - to_string
    - Self::trim_end_matches
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn presign_endpoint(mut self, endpoint: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Some
      Src: /src/opendal/core/services/oss/src/backend.rs:149,1
    - Dst: Self::to_string
      Src: /src/opendal/core/services/oss/src/backend.rs:149,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - addressing_style
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 152
      start: 148
    functionDepth: 2
    functionLinenumber: 148
    functionLinenumberEnd: 152
    functionName: OssBuilder::presign_addressing_style
    functionSourceFile: /src/opendal/core/services/oss/src/backend.rs
    functionUses: 0
    functionsReached:
    - Self::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn presign_addressing_style(mut self, addressing_style: &str)
      -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::is_empty
      Src: /src/opendal/core/services/oss/src/backend.rs:159,1
    - Dst: Some
      Src: /src/opendal/core/services/oss/src/backend.rs:160,1
    - Dst: Result::to_string
      Src: /src/opendal/core/services/oss/src/backend.rs:160,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 1
    argNames:
    - v
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 164
      start: 158
    functionDepth: 4
    functionLinenumber: 158
    functionLinenumberEnd: 164
    functionName: OssBuilder::access_key_id
    functionSourceFile: /src/opendal/core/services/oss/src/backend.rs
    functionUses: 0
    functionsReached:
    - Result::is_empty
    - Result::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn access_key_id(mut self, v: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::is_empty
      Src: /src/opendal/core/services/oss/src/backend.rs:171,1
    - Dst: Some
      Src: /src/opendal/core/services/oss/src/backend.rs:172,1
    - Dst: Result::to_string
      Src: /src/opendal/core/services/oss/src/backend.rs:172,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 1
    argNames:
    - v
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 176
      start: 170
    functionDepth: 4
    functionLinenumber: 170
    functionLinenumberEnd: 176
    functionName: OssBuilder::access_key_secret
    functionSourceFile: /src/opendal/core/services/oss/src/backend.rs
    functionUses: 0
    functionsReached:
    - Result::is_empty
    - Result::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn access_key_secret(mut self, v: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self::is_empty
      Src: /src/opendal/core/services/oss/src/backend.rs:183,1
    - Dst: Some
      Src: /src/opendal/core/services/oss/src/backend.rs:184,1
    - Dst: Self::to_string
      Src: /src/opendal/core/services/oss/src/backend.rs:184,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 1
    argNames:
    - security_token
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 188
      start: 182
    functionDepth: 4
    functionLinenumber: 182
    functionLinenumberEnd: 188
    functionName: OssBuilder::security_token
    functionSourceFile: /src/opendal/core/services/oss/src/backend.rs
    functionUses: 0
    functionsReached:
    - Self::is_empty
    - Self::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn security_token(mut self, security_token: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self::clone
      Src: /src/opendal/core/services/oss/src/backend.rs:197,1
    - Dst: parse::<Uri>
      Src: /src/opendal/core/services/oss/src/backend.rs:199,1
    - Dst: map_err
      Src: /src/opendal/core/services/oss/src/backend.rs:199,1
    - Dst: Error::new
      Src: /src/opendal/core/services/oss/src/backend.rs:200,1
    - Dst: Self::with_context
      Src: /src/opendal/core/services/oss/src/backend.rs:200,1
    - Dst: Self::with_context
      Src: /src/opendal/core/services/oss/src/backend.rs:200,1
    - Dst: Self::set_source
      Src: /src/opendal/core/services/oss/src/backend.rs:200,1
    - Dst: Result::host
      Src: /src/opendal/core/services/oss/src/backend.rs:205,1
    - Dst: Self::ok_or_else
      Src: /src/opendal/core/services/oss/src/backend.rs:205,1
    - Dst: Error::new
      Src: /src/opendal/core/services/oss/src/backend.rs:206,1
    - Dst: Self::with_context
      Src: /src/opendal/core/services/oss/src/backend.rs:206,1
    - Dst: Self::with_context
      Src: /src/opendal/core/services/oss/src/backend.rs:206,1
    - Dst: Result::port_u16
      Src: /src/opendal/core/services/oss/src/backend.rs:212,1
    - Dst: Result::port_u16
      Src: /src/opendal/core/services/oss/src/backend.rs:219,1
    - Dst: Self::to_string
      Src: /src/opendal/core/services/oss/src/backend.rs:222,1
    - Dst: Result::port_u16
      Src: /src/opendal/core/services/oss/src/backend.rs:226,1
    - Dst: Result::scheme_str
      Src: /src/opendal/core/services/oss/src/backend.rs:231,1
    - Dst: Err
      Src: /src/opendal/core/services/oss/src/backend.rs:235,1
    - Dst: Error::new
      Src: /src/opendal/core/services/oss/src/backend.rs:235,1
    - Dst: Self::with_context
      Src: /src/opendal/core/services/oss/src/backend.rs:235,1
    - Dst: Err
      Src: /src/opendal/core/services/oss/src/backend.rs:251,1
    - Dst: Error::new
      Src: /src/opendal/core/services/oss/src/backend.rs:251,1
    - Dst: Self::with_context
      Src: /src/opendal/core/services/oss/src/backend.rs:251,1
    - Dst: Ok
      Src: /src/opendal/core/services/oss/src/backend.rs:255,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 64
    argCount: 3
    argNames:
    - endpoint
    - bucket
    - addressing_style
    argTypes:
    - '&Option<String>'
    - '&str'
    - AddressingStyle
    constantsTouched: []
    func_position:
      end: 256
      start: 191
    functionDepth: 36
    functionLinenumber: 191
    functionLinenumberEnd: 256
    functionName: OssBuilder::parse_endpoint
    functionSourceFile: /src/opendal/core/services/oss/src/backend.rs
    functionUses: 1
    functionsReached:
    - map_err
    - Result::scheme_str
    - Ok
    - Self::to_string
    - parse::<Uri>
    - Result::port_u16
    - Error::new
    - Err
    - Self::ok_or_else
    - Self::clone
    - Result::host
    - Self::set_source
    - Self::with_context
    linkageType: ''
    returnType: Result
    signature: 'fn parse_endpoint(&self,endpoint: &Option<String>,bucket: &str,addressing_style:
      AddressingStyle,) -> Result<(String, String)>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::is_empty
      Src: /src/opendal/core/services/oss/src/backend.rs:275,1
    - Dst: Some
      Src: /src/opendal/core/services/oss/src/backend.rs:276,1
    - Dst: Result::to_string
      Src: /src/opendal/core/services/oss/src/backend.rs:276,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 1
    argNames:
    - v
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 279
      start: 274
    functionDepth: 4
    functionLinenumber: 274
    functionLinenumberEnd: 279
    functionName: OssBuilder::server_side_encryption
    functionSourceFile: /src/opendal/core/services/oss/src/backend.rs
    functionUses: 0
    functionsReached:
    - Result::is_empty
    - Result::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn server_side_encryption(mut self, v: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::is_empty
      Src: /src/opendal/core/services/oss/src/backend.rs:287,1
    - Dst: Some
      Src: /src/opendal/core/services/oss/src/backend.rs:288,1
    - Dst: Result::to_string
      Src: /src/opendal/core/services/oss/src/backend.rs:288,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 1
    argNames:
    - v
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 291
      start: 286
    functionDepth: 4
    functionLinenumber: 286
    functionLinenumberEnd: 291
    functionName: OssBuilder::server_side_encryption_key_id
    functionSourceFile: /src/opendal/core/services/oss/src/backend.rs
    functionUses: 0
    functionsReached:
    - Result::is_empty
    - Result::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn server_side_encryption_key_id(mut self, v: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 1
    argNames:
    - _delete_max_size
    argTypes:
    - usize
    constantsTouched: []
    func_position:
      end: 300
      start: 298
    functionDepth: 0
    functionLinenumber: 298
    functionLinenumberEnd: 300
    functionName: OssBuilder::batch_max_operations
    functionSourceFile: /src/opendal/core/services/oss/src/backend.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: 'pub fn batch_max_operations(self, _delete_max_size: usize) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 1
    argNames:
    - _delete_max_size
    argTypes:
    - usize
    constantsTouched: []
    func_position:
      end: 309
      start: 307
    functionDepth: 0
    functionLinenumber: 307
    functionLinenumberEnd: 309
    functionName: OssBuilder::delete_max_size
    functionSourceFile: /src/opendal/core/services/oss/src/backend.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: 'pub fn delete_max_size(self, _delete_max_size: usize) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 315
      start: 312
    functionDepth: 0
    functionLinenumber: 312
    functionLinenumberEnd: 315
    functionName: OssBuilder::skip_signature
    functionSourceFile: /src/opendal/core/services/oss/src/backend.rs
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: pub fn skip_signature(mut self) -> Self
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: OssBuilder::skip_signature
      Src: /src/opendal/core/services/oss/src/backend.rs:324,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 325
      start: 323
    functionDepth: 1
    functionLinenumber: 323
    functionLinenumberEnd: 325
    functionName: OssBuilder::allow_anonymous
    functionSourceFile: /src/opendal/core/services/oss/src/backend.rs
    functionUses: 0
    functionsReached:
    - OssBuilder::skip_signature
    linkageType: ''
    returnType: Self
    signature: pub fn allow_anonymous(self) -> Self
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self::is_empty
      Src: /src/opendal/core/services/oss/src/backend.rs:332,1
    - Dst: Some
      Src: /src/opendal/core/services/oss/src/backend.rs:333,1
    - Dst: Self::to_string
      Src: /src/opendal/core/services/oss/src/backend.rs:333,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 1
    argNames:
    - role_arn
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 337
      start: 331
    functionDepth: 4
    functionLinenumber: 331
    functionLinenumberEnd: 337
    functionName: OssBuilder::role_arn
    functionSourceFile: /src/opendal/core/services/oss/src/backend.rs
    functionUses: 0
    functionsReached:
    - Self::is_empty
    - Self::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn role_arn(mut self, role_arn: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self::is_empty
      Src: /src/opendal/core/services/oss/src/backend.rs:341,1
    - Dst: Some
      Src: /src/opendal/core/services/oss/src/backend.rs:342,1
    - Dst: Self::to_string
      Src: /src/opendal/core/services/oss/src/backend.rs:342,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 1
    argNames:
    - role_session_name
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 346
      start: 340
    functionDepth: 4
    functionLinenumber: 340
    functionLinenumberEnd: 346
    functionName: OssBuilder::role_session_name
    functionSourceFile: /src/opendal/core/services/oss/src/backend.rs
    functionUses: 0
    functionsReached:
    - Self::is_empty
    - Self::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn role_session_name(mut self, role_session_name: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self::is_empty
      Src: /src/opendal/core/services/oss/src/backend.rs:350,1
    - Dst: Some
      Src: /src/opendal/core/services/oss/src/backend.rs:351,1
    - Dst: Self::to_string
      Src: /src/opendal/core/services/oss/src/backend.rs:351,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 1
    argNames:
    - oidc_provider_arn
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 355
      start: 349
    functionDepth: 4
    functionLinenumber: 349
    functionLinenumberEnd: 355
    functionName: OssBuilder::oidc_provider_arn
    functionSourceFile: /src/opendal/core/services/oss/src/backend.rs
    functionUses: 0
    functionsReached:
    - Self::is_empty
    - Self::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn oidc_provider_arn(mut self, oidc_provider_arn: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self::is_empty
      Src: /src/opendal/core/services/oss/src/backend.rs:359,1
    - Dst: Some
      Src: /src/opendal/core/services/oss/src/backend.rs:360,1
    - Dst: Self::to_string
      Src: /src/opendal/core/services/oss/src/backend.rs:360,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 1
    argNames:
    - oidc_token_file
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 364
      start: 358
    functionDepth: 4
    functionLinenumber: 358
    functionLinenumberEnd: 364
    functionName: OssBuilder::oidc_token_file
    functionSourceFile: /src/opendal/core/services/oss/src/backend.rs
    functionUses: 0
    functionsReached:
    - Self::is_empty
    - Self::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn oidc_token_file(mut self, oidc_token_file: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self::is_empty
      Src: /src/opendal/core/services/oss/src/backend.rs:368,1
    - Dst: Some
      Src: /src/opendal/core/services/oss/src/backend.rs:369,1
    - Dst: Self::to_string
      Src: /src/opendal/core/services/oss/src/backend.rs:369,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 1
    argNames:
    - sts_endpoint
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 373
      start: 367
    functionDepth: 4
    functionLinenumber: 367
    functionLinenumberEnd: 373
    functionName: OssBuilder::sts_endpoint
    functionSourceFile: /src/opendal/core/services/oss/src/backend.rs
    functionUses: 0
    functionsReached:
    - Self::is_empty
    - Self::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn sts_endpoint(mut self, sts_endpoint: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::is_empty
      Src: /src/opendal/core/services/oss/src/backend.rs:377,1
    - Dst: Some
      Src: /src/opendal/core/services/oss/src/backend.rs:378,1
    - Dst: Result::to_string
      Src: /src/opendal/core/services/oss/src/backend.rs:378,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 1
    argNames:
    - v
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 382
      start: 376
    functionDepth: 4
    functionLinenumber: 376
    functionLinenumberEnd: 382
    functionName: OssBuilder::external_id
    functionSourceFile: /src/opendal/core/services/oss/src/backend.rs
    functionUses: 0
    functionsReached:
    - Result::is_empty
    - Result::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn external_id(mut self, v: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Vec::as_deref
      Src: /src/opendal/core/services/oss/src/backend.rs:395,1
    - Dst: Ok
      Src: /src/opendal/core/services/oss/src/backend.rs:396,1
    - Dst: Ok
      Src: /src/opendal/core/services/oss/src/backend.rs:397,1
    - Dst: Ok
      Src: /src/opendal/core/services/oss/src/backend.rs:398,1
    - Dst: Err
      Src: /src/opendal/core/services/oss/src/backend.rs:399,1
    - Dst: Error::new
      Src: /src/opendal/core/services/oss/src/backend.rs:399,1
    - Dst: Self::with_context
      Src: /src/opendal/core/services/oss/src/backend.rs:399,1
    - Dst: Self::with_context
      Src: /src/opendal/core/services/oss/src/backend.rs:399,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 1
    argNames:
    - value
    argTypes:
    - '&Option<String>'
    constantsTouched: []
    func_position:
      end: 406
      start: 394
    functionDepth: 36
    functionLinenumber: 394
    functionLinenumberEnd: 406
    functionName: AddressingStyle::try_from
    functionSourceFile: /src/opendal/core/services/oss/src/backend.rs
    functionUses: 0
    functionsReached:
    - Ok
    - Vec::as_deref
    - Error::new
    - Err
    - Self::with_context
    linkageType: ''
    returnType: Result
    signature: 'fn try_from(value: &Option<String>) -> Result<Self>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: normalize_root
      Src: /src/opendal/core/services/oss/src/backend.rs:418,1
    - Dst: clone
      Src: /src/opendal/core/services/oss/src/backend.rs:418,1
    - Dst: unwrap_or_default
      Src: /src/opendal/core/services/oss/src/backend.rs:418,1
    - Dst: is_empty
      Src: /src/opendal/core/services/oss/src/backend.rs:422,1
    - Dst: Ok
      Src: /src/opendal/core/services/oss/src/backend.rs:423,1
    - Dst: Err
      Src: /src/opendal/core/services/oss/src/backend.rs:424,1
    - Dst: Error::new
      Src: /src/opendal/core/services/oss/src/backend.rs:425,1
    - Dst: Self::with_context
      Src: /src/opendal/core/services/oss/src/backend.rs:425,1
    - Dst: OssBuilder::parse_endpoint
      Src: /src/opendal/core/services/oss/src/backend.rs:432,1
    - Dst: try_into
      Src: /src/opendal/core/services/oss/src/backend.rs:435,1
    - Dst: is_some
      Src: /src/opendal/core/services/oss/src/backend.rs:439,1
    - Dst: OssBuilder::parse_endpoint
      Src: /src/opendal/core/services/oss/src/backend.rs:440,1
    - Dst: try_into
      Src: /src/opendal/core/services/oss/src/backend.rs:443,1
    - Dst: Self::clone
      Src: /src/opendal/core/services/oss/src/backend.rs:447,1
    - Dst: Some
      Src: /src/opendal/core/services/oss/src/backend.rs:453,1
    - Dst: build_header_value
      Src: /src/opendal/core/services/oss/src/backend.rs:454,1
    - Dst: Result::map_err
      Src: /src/opendal/core/services/oss/src/backend.rs:454,1
    - Dst: Error::with_context
      Src: /src/opendal/core/services/oss/src/backend.rs:455,1
    - Dst: Some
      Src: /src/opendal/core/services/oss/src/backend.rs:461,1
    - Dst: build_header_value
      Src: /src/opendal/core/services/oss/src/backend.rs:462,1
    - Dst: Result::map_err
      Src: /src/opendal/core/services/oss/src/backend.rs:462,1
    - Dst: Error::with_context
      Src: /src/opendal/core/services/oss/src/backend.rs:463,1
    - Dst: reqsign_core::OsEnv::vars
      Src: /src/opendal/core/services/oss/src/backend.rs:472,1
    - Dst: insert
      Src: /src/opendal/core/services/oss/src/backend.rs:475,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/oss/src/backend.rs:475,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/oss/src/backend.rs:475,1
    - Dst: insert
      Src: /src/opendal/core/services/oss/src/backend.rs:478,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/oss/src/backend.rs:478,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/oss/src/backend.rs:478,1
    - Dst: insert
      Src: /src/opendal/core/services/oss/src/backend.rs:481,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/oss/src/backend.rs:481,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/oss/src/backend.rs:481,1
    - Dst: AssumeRoleWithOidcCredentialProvider::new
      Src: /src/opendal/core/services/oss/src/backend.rs:484,1
    - Dst: Self::starts_with
      Src: /src/opendal/core/services/oss/src/backend.rs:487,1
    - Dst: Self::starts_with
      Src: /src/opendal/core/services/oss/src/backend.rs:487,1
    - Dst: Self::with_sts_endpoint
      Src: /src/opendal/core/services/oss/src/backend.rs:488,1
    - Dst: Self::clone
      Src: /src/opendal/core/services/oss/src/backend.rs:488,1
    - Dst: insert
      Src: /src/opendal/core/services/oss/src/backend.rs:490,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/oss/src/backend.rs:491,1
    - Dst: Self::clone
      Src: /src/opendal/core/services/oss/src/backend.rs:492,1
    - Dst: Self::with_role_session_name
      Src: /src/opendal/core/services/oss/src/backend.rs:498,1
    - Dst: Self::clone
      Src: /src/opendal/core/services/oss/src/backend.rs:498,1
    - Dst: Context::new
      Src: /src/opendal/core/services/oss/src/backend.rs:501,1
    - Dst: Self::with_file_read
      Src: /src/opendal/core/services/oss/src/backend.rs:501,1
    - Dst: with_env
      Src: /src/opendal/core/services/oss/src/backend.rs:501,1
    - Dst: reqsign_core::OsEnv::home_dir
      Src: /src/opendal/core/services/oss/src/backend.rs:504,1
    - Dst: Some
      Src: /src/opendal/core/services/oss/src/backend.rs:511,1
    - Dst: as_deref
      Src: /src/opendal/core/services/oss/src/backend.rs:511,1
    - Dst: StaticCredentialProvider::new
      Src: /src/opendal/core/services/oss/src/backend.rs:512,1
    - Dst: Self::with_security_token
      Src: /src/opendal/core/services/oss/src/backend.rs:512,1
    - Dst: StaticCredentialProvider::new
      Src: /src/opendal/core/services/oss/src/backend.rs:514,1
    - Dst: ProvideCredentialChain::new
      Src: /src/opendal/core/services/oss/src/backend.rs:520,1
    - Dst: Self::push
      Src: /src/opendal/core/services/oss/src/backend.rs:522,1
    - Dst: Self::push
      Src: /src/opendal/core/services/oss/src/backend.rs:524,1
    - Dst: EnvCredentialProvider::new
      Src: /src/opendal/core/services/oss/src/backend.rs:525,1
    - Dst: Self::push
      Src: /src/opendal/core/services/oss/src/backend.rs:524,1
    - Dst: EcsRamRoleCredentialProvider::new
      Src: /src/opendal/core/services/oss/src/backend.rs:526,1
    - Dst: Self::push
      Src: /src/opendal/core/services/oss/src/backend.rs:524,1
    - Dst: AssumeRoleCredentialProvider::new
      Src: /src/opendal/core/services/oss/src/backend.rs:530,1
    - Dst: Self::with_base_provider
      Src: /src/opendal/core/services/oss/src/backend.rs:530,1
    - Dst: with_role_arn
      Src: /src/opendal/core/services/oss/src/backend.rs:530,1
    - Dst: Self::clone
      Src: /src/opendal/core/services/oss/src/backend.rs:532,1
    - Dst: with_role_session_name
      Src: /src/opendal/core/services/oss/src/backend.rs:536,1
    - Dst: Self::clone
      Src: /src/opendal/core/services/oss/src/backend.rs:536,1
    - Dst: with_external_id
      Src: /src/opendal/core/services/oss/src/backend.rs:539,1
    - Dst: Self::clone
      Src: /src/opendal/core/services/oss/src/backend.rs:539,1
    - Dst: with_sts_endpoint
      Src: /src/opendal/core/services/oss/src/backend.rs:542,1
    - Dst: Self::clone
      Src: /src/opendal/core/services/oss/src/backend.rs:542,1
    - Dst: ProvideCredentialChain::new
      Src: /src/opendal/core/services/oss/src/backend.rs:545,1
    - Dst: Self::push
      Src: /src/opendal/core/services/oss/src/backend.rs:545,1
    - Dst: RequestSigner::new
      Src: /src/opendal/core/services/oss/src/backend.rs:549,1
    - Dst: Signer::new
      Src: /src/opendal/core/services/oss/src/backend.rs:550,1
    - Dst: ctx::clone
      Src: /src/opendal/core/services/oss/src/backend.rs:550,1
    - Dst: ServiceInfo::new
      Src: /src/opendal/core/services/oss/src/backend.rs:552,1
    - Dst: Some
      Src: /src/opendal/core/services/oss/src/backend.rs:581,1
    - Dst: Some
      Src: /src/opendal/core/services/oss/src/backend.rs:586,1
    - Dst: Some
      Src: /src/opendal/core/services/oss/src/backend.rs:588,1
    - Dst: Some
      Src: /src/opendal/core/services/oss/src/backend.rs:594,1
    - Dst: Default::default
      Src: /src/opendal/core/services/oss/src/backend.rs:612,1
    - Dst: Ok
      Src: /src/opendal/core/services/oss/src/backend.rs:615,1
    - Dst: Arc::new
      Src: /src/opendal/core/services/oss/src/backend.rs:616,1
    - Dst: usize::to_owned
      Src: /src/opendal/core/services/oss/src/backend.rs:620,1
    CyclomaticComplexity: 27
    EdgeCount: 27
    ICount: 278
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 631
      start: 412
    functionDepth: 34
    functionLinenumber: 412
    functionLinenumberEnd: 631
    functionName: OssBuilder::build
    functionSourceFile: /src/opendal/core/services/oss/src/backend.rs
    functionUses: 0
    functionsReached:
    - EcsRamRoleCredentialProvider::new
    - as_deref
    - AssumeRoleCredentialProvider::new
    - Default::default
    - EnvCredentialProvider::new
    - clone
    - Arc::new
    - is_some
    - Self::clone
    - ProvideCredentialChain::new
    - Signer::new
    - Self::with_context
    - OssBuilder::parse_endpoint
    - Result::clone
    - ServiceInfo::new
    - Ok
    - Context::new
    - normalize_root
    - build_header_value
    - Error::with_context
    - '&str::to_string'
    - Self::with_role_session_name
    - Self::with_sts_endpoint
    - reqsign_core::OsEnv::home_dir
    - unwrap_or_default
    - RequestSigner::new
    - Result::map_err
    - try_into
    - insert
    - with_sts_endpoint
    - Self::push
    - is_empty
    - Some
    - reqsign_core::OsEnv::vars
    - with_role_session_name
    - usize::to_owned
    - with_external_id
    - Self::with_base_provider
    - with_env
    - with_role_arn
    - AssumeRoleWithOidcCredentialProvider::new
    - ctx::clone
    - Err
    - Error::new
    - Self::with_file_read
    - Self::with_security_token
    - StaticCredentialProvider::new
    - Self::starts_with
    linkageType: ''
    returnType: Result
    signature: fn build(self) -> Result<impl Service>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: clone
      Src: /src/opendal/core/services/oss/src/backend.rs:648,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 649
      start: 647
    functionDepth: 2
    functionLinenumber: 647
    functionLinenumberEnd: 649
    functionName: OssBackend::info
    functionSourceFile: /src/opendal/core/services/oss/src/backend.rs
    functionUses: 0
    functionsReached:
    - clone
    linkageType: ''
    returnType: ServiceInfo
    signature: fn info(&self) -> ServiceInfo
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 653
      start: 651
    functionDepth: 0
    functionLinenumber: 651
    functionLinenumberEnd: 653
    functionName: OssBackend::capability
    functionSourceFile: /src/opendal/core/services/oss/src/backend.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Capability
    signature: fn capability(&self) -> Capability
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/core/services/oss/src/backend.rs:661,1
    - Dst: Error::new
      Src: /src/opendal/core/services/oss/src/backend.rs:661,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - _ctx
    - _path
    - _args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpCreateDir
    constantsTouched: []
    func_position:
      end: 665
      start: 655
    functionDepth: 36
    functionLinenumber: 655
    functionLinenumberEnd: 665
    functionName: OssBackend::create_dir
    functionSourceFile: /src/opendal/core/services/oss/src/backend.rs
    functionUses: 0
    functionsReached:
    - Error::new
    - Err
    linkageType: ''
    returnType: Result
    signature: 'async fn create_dir(&self,_ctx: &OperationContext,_path: &str,_args:
      OpCreateDir,) -> Result<RpCreateDir>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: oss_head_object
      Src: /src/opendal/core/services/oss/src/backend.rs:668,1
    - Dst: status
      Src: /src/opendal/core/services/oss/src/backend.rs:670,1
    - Dst: headers
      Src: /src/opendal/core/services/oss/src/backend.rs:674,1
    - Dst: parse_metadata
      Src: /src/opendal/core/services/oss/src/backend.rs:675,1
    - Dst: headers
      Src: /src/opendal/core/services/oss/src/backend.rs:675,1
    - Dst: parse_header_to_str
      Src: /src/opendal/core/services/oss/src/backend.rs:677,1
    - Dst: Result::set_version
      Src: /src/opendal/core/services/oss/src/backend.rs:678,1
    - Dst: Ok
      Src: /src/opendal/core/services/oss/src/backend.rs:681,1
    - Dst: RpStat::new
      Src: /src/opendal/core/services/oss/src/backend.rs:681,1
    - Dst: Err
      Src: /src/opendal/core/services/oss/src/backend.rs:683,1
    - Dst: super::core::parse_error
      Src: /src/opendal/core/services/oss/src/backend.rs:683,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 29
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpStat
    constantsTouched: []
    func_position:
      end: 685
      start: 667
    functionDepth: 40
    functionLinenumber: 667
    functionLinenumberEnd: 685
    functionName: OssBackend::stat
    functionSourceFile: /src/opendal/core/services/oss/src/backend.rs
    functionUses: 0
    functionsReached:
    - status
    - Ok
    - RpStat::new
    - parse_header_to_str
    - Result::set_version
    - Err
    - headers
    - parse_metadata
    - super::core::parse_error
    - oss_head_object
    linkageType: ''
    returnType: Result
    signature: 'async fn stat(&self, ctx: &OperationContext, path: &str, args: OpStat)
      -> Result<RpStat>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/core/services/oss/src/backend.rs:688,1
    - Dst: oio::StreamReader::new
      Src: /src/opendal/core/services/oss/src/backend.rs:688,1
    - Dst: OssReader::new
      Src: /src/opendal/core/services/oss/src/backend.rs:688,1
    - Dst: OssBackend::clone
      Src: /src/opendal/core/services/oss/src/backend.rs:689,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/oss/src/backend.rs:690,1
    - Dst: Ok
      Src: /src/opendal/core/services/oss/src/backend.rs:696,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpRead
    constantsTouched: []
    func_position:
      end: 697
      start: 686
    functionDepth: 3
    functionLinenumber: 686
    functionLinenumberEnd: 697
    functionName: OssBackend::read
    functionSourceFile: /src/opendal/core/services/oss/src/backend.rs
    functionUses: 0
    functionsReached:
    - Result::clone
    - Ok
    - oio::StreamReader::new
    - OssReader::new
    - OssBackend::clone
    linkageType: ''
    returnType: Result
    signature: 'fn read(&self, ctx: &OperationContext, path: &str, args: OpRead) ->
      Result<Self::Reader>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: OssWriter::new
      Src: /src/opendal/core/services/oss/src/backend.rs:701,1
    - Dst: clone
      Src: /src/opendal/core/services/oss/src/backend.rs:701,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/oss/src/backend.rs:701,1
    - Dst: OpStat::clone
      Src: /src/opendal/core/services/oss/src/backend.rs:701,1
    - Dst: OpStat::append
      Src: /src/opendal/core/services/oss/src/backend.rs:703,1
    - Dst: OssWriters::Two
      Src: /src/opendal/core/services/oss/src/backend.rs:704,1
    - Dst: oio::AppendWriter::new
      Src: /src/opendal/core/services/oss/src/backend.rs:704,1
    - Dst: OssWriters::One
      Src: /src/opendal/core/services/oss/src/backend.rs:706,1
    - Dst: oio::MultipartWriter::new
      Src: /src/opendal/core/services/oss/src/backend.rs:706,1
    - Dst: Result::executor
      Src: /src/opendal/core/services/oss/src/backend.rs:707,1
    - Dst: Self::clone
      Src: /src/opendal/core/services/oss/src/backend.rs:707,1
    - Dst: OpStat::concurrent
      Src: /src/opendal/core/services/oss/src/backend.rs:709,1
    - Dst: Ok
      Src: /src/opendal/core/services/oss/src/backend.rs:713,1
    - Dst: Ok
      Src: /src/opendal/core/services/oss/src/backend.rs:716,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 24
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpWrite
    constantsTouched: []
    func_position:
      end: 717
      start: 699
    functionDepth: 31
    functionLinenumber: 699
    functionLinenumberEnd: 717
    functionName: OssBackend::write
    functionSourceFile: /src/opendal/core/services/oss/src/backend.rs
    functionUses: 0
    functionsReached:
    - Result::clone
    - OpStat::clone
    - oio::MultipartWriter::new
    - OssWriter::new
    - Ok
    - OssWriters::One
    - Result::executor
    - clone
    - OssWriters::Two
    - OpStat::append
    - Self::clone
    - OpStat::concurrent
    - oio::AppendWriter::new
    linkageType: ''
    returnType: Result
    signature: 'fn write(&self, ctx: &OperationContext, path: &str, args: OpWrite)
      -> Result<Self::Writer>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/core/services/oss/src/backend.rs:721,1
    - Dst: oio::BatchDeleter::new
      Src: /src/opendal/core/services/oss/src/backend.rs:721,1
    - Dst: OssDeleter::new
      Src: /src/opendal/core/services/oss/src/backend.rs:722,1
    - Dst: clone
      Src: /src/opendal/core/services/oss/src/backend.rs:722,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/oss/src/backend.rs:722,1
    - Dst: Ok
      Src: /src/opendal/core/services/oss/src/backend.rs:727,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - '&OperationContext'
    constantsTouched: []
    func_position:
      end: 728
      start: 719
    functionDepth: 4
    functionLinenumber: 719
    functionLinenumberEnd: 728
    functionName: OssBackend::delete
    functionSourceFile: /src/opendal/core/services/oss/src/backend.rs
    functionUses: 0
    functionsReached:
    - Result::clone
    - Ok
    - clone
    - OssDeleter::new
    - oio::BatchDeleter::new
    linkageType: ''
    returnType: Result
    signature: 'fn delete(&self, ctx: &OperationContext) -> Result<Self::Deleter>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: OpStat::versions
      Src: /src/opendal/core/services/oss/src/backend.rs:732,1
    - Dst: OpStat::deleted
      Src: /src/opendal/core/services/oss/src/backend.rs:732,1
    - Dst: TwoWays::Two
      Src: /src/opendal/core/services/oss/src/backend.rs:733,1
    - Dst: oio::PageLister::new
      Src: /src/opendal/core/services/oss/src/backend.rs:733,1
    - Dst: OssObjectVersionsLister::new
      Src: /src/opendal/core/services/oss/src/backend.rs:733,1
    - Dst: clone
      Src: /src/opendal/core/services/oss/src/backend.rs:734,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/oss/src/backend.rs:735,1
    - Dst: TwoWays::One
      Src: /src/opendal/core/services/oss/src/backend.rs:740,1
    - Dst: oio::PageLister::new
      Src: /src/opendal/core/services/oss/src/backend.rs:740,1
    - Dst: OssLister::new
      Src: /src/opendal/core/services/oss/src/backend.rs:740,1
    - Dst: clone
      Src: /src/opendal/core/services/oss/src/backend.rs:741,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/oss/src/backend.rs:742,1
    - Dst: OpStat::recursive
      Src: /src/opendal/core/services/oss/src/backend.rs:744,1
    - Dst: OpStat::limit
      Src: /src/opendal/core/services/oss/src/backend.rs:745,1
    - Dst: OpStat::start_after
      Src: /src/opendal/core/services/oss/src/backend.rs:746,1
    - Dst: Ok
      Src: /src/opendal/core/services/oss/src/backend.rs:750,1
    - Dst: Ok
      Src: /src/opendal/core/services/oss/src/backend.rs:753,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 31
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpList
    constantsTouched: []
    func_position:
      end: 754
      start: 730
    functionDepth: 35
    functionLinenumber: 730
    functionLinenumberEnd: 754
    functionName: OssBackend::list
    functionSourceFile: /src/opendal/core/services/oss/src/backend.rs
    functionUses: 0
    functionsReached:
    - Result::clone
    - Ok
    - OpStat::versions
    - OpStat::start_after
    - clone
    - OssObjectVersionsLister::new
    - TwoWays::One
    - oio::PageLister::new
    - OssLister::new
    - OpStat::recursive
    - OpStat::limit
    - TwoWays::Two
    - OpStat::deleted
    linkageType: ''
    returnType: Result
    signature: 'fn list(&self, ctx: &OperationContext, path: &str, args: OpList) ->
      Result<Self::Lister>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: clone
      Src: /src/opendal/core/services/oss/src/backend.rs:764,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/oss/src/backend.rs:765,1
    - Dst: Result::to_string
      Src: /src/opendal/core/services/oss/src/backend.rs:766,1
    - Dst: Result::to_string
      Src: /src/opendal/core/services/oss/src/backend.rs:767,1
    - Dst: Ok
      Src: /src/opendal/core/services/oss/src/backend.rs:768,1
    - Dst: oio::OneShotCopier::new
      Src: /src/opendal/core/services/oss/src/backend.rs:768,1
    - Dst: CompfsCore::oss_copy_object
      Src: /src/opendal/core/services/oss/src/backend.rs:769,1
    - Dst: status
      Src: /src/opendal/core/services/oss/src/backend.rs:770,1
    - Dst: Ok
      Src: /src/opendal/core/services/oss/src/backend.rs:773,1
    - Dst: Metadata::default
      Src: /src/opendal/core/services/oss/src/backend.rs:773,1
    - Dst: Err
      Src: /src/opendal/core/services/oss/src/backend.rs:774,1
    - Dst: super::core::parse_error
      Src: /src/opendal/core/services/oss/src/backend.rs:774,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 26
    argCount: 5
    argNames:
    - ctx
    - from
    - to
    - _args
    - _opts
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    - OpCopy
    - OpCopier
    constantsTouched: []
    func_position:
      end: 777
      start: 756
    functionDepth: 37
    functionLinenumber: 756
    functionLinenumberEnd: 777
    functionName: OssBackend::copy
    functionSourceFile: /src/opendal/core/services/oss/src/backend.rs
    functionUses: 0
    functionsReached:
    - Result::clone
    - CompfsCore::oss_copy_object
    - Metadata::default
    - Result::to_string
    - Ok
    - status
    - clone
    - Err
    - super::core::parse_error
    - oio::OneShotCopier::new
    linkageType: ''
    returnType: Result
    signature: 'fn copy(&self,ctx: &OperationContext,from: &str,to: &str,_args: OpCopy,_opts:
      OpCopier,) -> Result<Self::Copier>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/core/services/oss/src/backend.rs:786,1
    - Dst: Error::new
      Src: /src/opendal/core/services/oss/src/backend.rs:786,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - _ctx
    - _from
    - _to
    - _args
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    - OpRename
    constantsTouched: []
    func_position:
      end: 790
      start: 779
    functionDepth: 36
    functionLinenumber: 779
    functionLinenumberEnd: 790
    functionName: OssBackend::rename
    functionSourceFile: /src/opendal/core/services/oss/src/backend.rs
    functionUses: 0
    functionsReached:
    - Error::new
    - Err
    linkageType: ''
    returnType: Result
    signature: 'async fn rename(&self,_ctx: &OperationContext,_from: &str,_to: &str,_args:
      OpRename,) -> Result<RpRename>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: OpStat::operation
      Src: /src/opendal/core/services/oss/src/backend.rs:799,1
    - Dst: oss_head_object_request
      Src: /src/opendal/core/services/oss/src/backend.rs:800,1
    - Dst: oss_get_object_request
      Src: /src/opendal/core/services/oss/src/backend.rs:802,1
    - Dst: oss_put_object_request
      Src: /src/opendal/core/services/oss/src/backend.rs:805,1
    - Dst: Buffer::new
      Src: /src/opendal/core/services/oss/src/backend.rs:806,1
    - Dst: Err
      Src: /src/opendal/core/services/oss/src/backend.rs:808,1
    - Dst: Error::new
      Src: /src/opendal/core/services/oss/src/backend.rs:808,1
    - Dst: Err
      Src: /src/opendal/core/services/oss/src/backend.rs:812,1
    - Dst: Error::new
      Src: /src/opendal/core/services/oss/src/backend.rs:812,1
    - Dst: sign_query
      Src: /src/opendal/core/services/oss/src/backend.rs:818,1
    - Dst: OpStat::expire
      Src: /src/opendal/core/services/oss/src/backend.rs:818,1
    - Dst: into_parts
      Src: /src/opendal/core/services/oss/src/backend.rs:821,1
    - Dst: Ok
      Src: /src/opendal/core/services/oss/src/backend.rs:823,1
    - Dst: RpPresign::new
      Src: /src/opendal/core/services/oss/src/backend.rs:823,1
    - Dst: PresignedRequest::new
      Src: /src/opendal/core/services/oss/src/backend.rs:823,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 34
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpPresign
    constantsTouched: []
    func_position:
      end: 828
      start: 792
    functionDepth: 39
    functionLinenumber: 792
    functionLinenumberEnd: 828
    functionName: OssBackend::presign
    functionSourceFile: /src/opendal/core/services/oss/src/backend.rs
    functionUses: 0
    functionsReached:
    - sign_query
    - Buffer::new
    - oss_head_object_request
    - oss_put_object_request
    - oss_get_object_request
    - OpStat::operation
    - Ok
    - Err
    - Error::new
    - OpStat::expire
    - RpPresign::new
    - PresignedRequest::new
    - into_parts
    linkageType: ''
    returnType: Result
    signature: 'async fn presign(&self,ctx: &OperationContext,path: &str,args: OpPresign,)
      -> Result<RpPresign>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::debug_struct
      Src: /src/opendal/core/services/mongodb/src/config.rs:46,1
    - Dst: field
      Src: /src/opendal/core/services/mongodb/src/config.rs:46,1
    - Dst: field
      Src: /src/opendal/core/services/mongodb/src/config.rs:46,1
    - Dst: field
      Src: /src/opendal/core/services/mongodb/src/config.rs:46,1
    - Dst: field
      Src: /src/opendal/core/services/mongodb/src/config.rs:46,1
    - Dst: field
      Src: /src/opendal/core/services/mongodb/src/config.rs:46,1
    - Dst: finish_non_exhaustive
      Src: /src/opendal/core/services/mongodb/src/config.rs:46,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 24
    argCount: 1
    argNames:
    - f
    argTypes:
    - '&mut std::fmt::Formatter<''_>'
    constantsTouched: []
    func_position:
      end: 53
      start: 45
    functionDepth: 5
    functionLinenumber: 45
    functionLinenumberEnd: 53
    functionName: MongodbConfig::fmt
    functionSourceFile: /src/opendal/core/services/mongodb/src/config.rs
    functionUses: 0
    functionsReached:
    - field
    - Result::debug_struct
    - finish_non_exhaustive
    linkageType: ''
    returnType: std::fmt::Result
    signature: 'fn fmt(&self, f: &mut std::fmt::Formatter<''_>) -> std::fmt::Result'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::options
      Src: /src/opendal/core/services/mongodb/src/config.rs:60,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/mongodb/src/config.rs:60,1
    - Dst: Result::authority
      Src: /src/opendal/core/services/mongodb/src/config.rs:62,1
    - Dst: Result::entry
      Src: /src/opendal/core/services/mongodb/src/config.rs:63,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/mongodb/src/config.rs:63,1
    - Dst: crate::Entry::or_insert_with
      Src: /src/opendal/core/services/mongodb/src/config.rs:63,1
    - Dst: Result::root
      Src: /src/opendal/core/services/mongodb/src/config.rs:67,1
    - Dst: is_empty
      Src: /src/opendal/core/services/mongodb/src/config.rs:68,1
    - Dst: splitn
      Src: /src/opendal/core/services/mongodb/src/config.rs:70,1
    - Dst: next
      Src: /src/opendal/core/services/mongodb/src/config.rs:71,1
    - Dst: i64::is_empty
      Src: /src/opendal/core/services/mongodb/src/config.rs:72,1
    - Dst: Result::entry
      Src: /src/opendal/core/services/mongodb/src/config.rs:74,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/mongodb/src/config.rs:74,1
    - Dst: crate::Entry::or_insert_with
      Src: /src/opendal/core/services/mongodb/src/config.rs:74,1
    - Dst: i64::to_string
      Src: /src/opendal/core/services/mongodb/src/config.rs:75,1
    - Dst: next
      Src: /src/opendal/core/services/mongodb/src/config.rs:77,1
    - Dst: Result::is_empty
      Src: /src/opendal/core/services/mongodb/src/config.rs:78,1
    - Dst: Result::entry
      Src: /src/opendal/core/services/mongodb/src/config.rs:80,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/mongodb/src/config.rs:80,1
    - Dst: crate::Entry::or_insert_with
      Src: /src/opendal/core/services/mongodb/src/config.rs:80,1
    - Dst: Result::to_string
      Src: /src/opendal/core/services/mongodb/src/config.rs:81,1
    - Dst: next
      Src: /src/opendal/core/services/mongodb/src/config.rs:83,1
    - Dst: is_empty
      Src: /src/opendal/core/services/mongodb/src/config.rs:84,1
    - Dst: Result::insert
      Src: /src/opendal/core/services/mongodb/src/config.rs:86,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/mongodb/src/config.rs:86,1
    - Dst: to_string
      Src: /src/opendal/core/services/mongodb/src/config.rs:86,1
    - Dst: Self::from_iter
      Src: /src/opendal/core/services/mongodb/src/config.rs:90,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 74
    argCount: 1
    argNames:
    - uri
    argTypes:
    - '&opendal_core::OperatorUri'
    constantsTouched: []
    func_position:
      end: 91
      start: 59
    functionDepth: 35
    functionLinenumber: 59
    functionLinenumberEnd: 91
    functionName: MongodbConfig::from_uri
    functionSourceFile: /src/opendal/core/services/mongodb/src/config.rs
    functionUses: 1
    functionsReached:
    - Result::clone
    - next
    - to_string
    - Self::from_iter
    - Result::to_string
    - Result::entry
    - crate::Entry::or_insert_with
    - Result::insert
    - is_empty
    - i64::to_string
    - i64::is_empty
    - '&str::to_string'
    - Result::root
    - Result::is_empty
    - Result::authority
    - splitn
    - Result::options
    linkageType: ''
    returnType: opendal_core::Result
    signature: 'fn from_uri(uri: &opendal_core::OperatorUri) -> opendal_core::Result<Self>'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 95
      start: 93
    functionDepth: 0
    functionLinenumber: 93
    functionLinenumberEnd: 95
    functionName: MongodbConfig::into_builder
    functionSourceFile: /src/opendal/core/services/mongodb/src/config.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Self::Builder
    signature: fn into_builder(self) -> Self::Builder
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: OperatorUri::new
      Src: /src/opendal/core/services/mongodb/src/config.rs:106,1
    - Dst: Vec::<(String, String)>::new
      Src: /src/opendal/core/services/mongodb/src/config.rs:108,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/services/mongodb/src/config.rs:106,1
    - Dst: MongodbConfig::from_uri
      Src: /src/opendal/core/services/mongodb/src/config.rs:112,1
    - Dst: opendal_core::Result::unwrap
      Src: /src/opendal/core/services/mongodb/src/config.rs:112,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 120
      start: 105
    functionDepth: 29
    functionLinenumber: 105
    functionLinenumberEnd: 120
    functionName: tests::from_uri_sets_connection_string_database_collection_and_root
    functionSourceFile: /src/opendal/core/services/mongodb/src/config.rs
    functionUses: 0
    functionsReached:
    - MongodbConfig::from_uri
    - Vec::<(String, String)>::new
    - OperatorUri::new
    - Result::unwrap
    - opendal_core::Result::unwrap
    linkageType: ''
    returnType: void
    signature: fn from_uri_sets_connection_string_database_collection_and_root()
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - core
    - root
    argTypes:
    - Arc<MongodbCore>
    - String
    constantsTouched: []
    func_position:
      end: 33
      start: 31
    functionDepth: 0
    functionLinenumber: 31
    functionLinenumberEnd: 33
    functionName: MongodbDeleter::new
    functionSourceFile: /src/opendal/core/services/mongodb/src/deleter.rs
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(core: Arc<MongodbCore>, root: String) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/mongodb/src/deleter.rs:38,1
    - Dst: delete
      Src: /src/opendal/core/services/mongodb/src/deleter.rs:39,1
    - Dst: Ok
      Src: /src/opendal/core/services/mongodb/src/deleter.rs:40,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 2
    argNames:
    - path
    argTypes:
    - String
    - OpDelete
    constantsTouched: []
    func_position:
      end: 41
      start: 37
    functionDepth: 32
    functionLinenumber: 37
    functionLinenumberEnd: 41
    functionName: MongodbDeleter::delete_once
    functionSourceFile: /src/opendal/core/services/mongodb/src/deleter.rs
    functionUses: 0
    functionsReached:
    - Ok
    - build_abs_path
    - delete
    linkageType: ''
    returnType: Result
    signature: 'async fn delete_once(&self, path: String, _: OpDelete) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: to_string
      Src: /src/opendal/core/services/mongodb/src/reader.rs:32,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - backend
    - path
    argTypes:
    - MongodbBackend
    - '&str'
    - OpRead
    constantsTouched: []
    func_position:
      end: 34
      start: 29
    functionDepth: 2
    functionLinenumber: 29
    functionLinenumberEnd: 34
    functionName: MongodbReader::new
    functionSourceFile: /src/opendal/core/services/mongodb/src/reader.rs
    functionUses: 1
    functionsReached:
    - to_string
    linkageType: ''
    returnType: Self
    signature: 'pub(super) fn new(backend: MongodbBackend, path: &str, _: OpRead)
      -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: as_str
      Src: /src/opendal/core/services/mongodb/src/reader.rs:40,1
    - Dst: build_abs_path
      Src: /src/opendal/core/services/mongodb/src/reader.rs:41,1
    - Dst: get
      Src: /src/opendal/core/services/mongodb/src/reader.rs:42,1
    - Dst: Err
      Src: /src/opendal/core/services/mongodb/src/reader.rs:45,1
    - Dst: Error::new
      Src: /src/opendal/core/services/mongodb/src/reader.rs:45,1
    - Dst: Result::slice
      Src: /src/opendal/core/services/mongodb/src/reader.rs:48,1
    - Dst: (Vec::to_content_range
      Src: /src/opendal/core/services/mongodb/src/reader.rs:48,1
    - Dst: Result::len
      Src: /src/opendal/core/services/mongodb/src/reader.rs:48,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/mongodb/src/reader.rs:49,1
    - Dst: Self::with_content_length
      Src: /src/opendal/core/services/mongodb/src/reader.rs:49,1
    - Dst: Result::len
      Src: /src/opendal/core/services/mongodb/src/reader.rs:49,1
    - Dst: Ok
      Src: /src/opendal/core/services/mongodb/src/reader.rs:50,1
    - Dst: RpRead::new
      Src: /src/opendal/core/services/mongodb/src/reader.rs:51,1
    - Dst: Box::new
      Src: /src/opendal/core/services/mongodb/src/reader.rs:52,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 37
    argCount: 1
    argNames:
    - range
    argTypes:
    - BytesRange
    constantsTouched: []
    func_position:
      end: 54
      start: 38
    functionDepth: 36
    functionLinenumber: 38
    functionLinenumberEnd: 54
    functionName: MongodbReader::open
    functionSourceFile: /src/opendal/core/services/mongodb/src/reader.rs
    functionUses: 0
    functionsReached:
    - Metadata::new
    - get
    - Ok
    - Box::new
    - Self::with_content_length
    - build_abs_path
    - Error::new
    - Err
    - as_str
    - Result::slice
    - (Vec::to_content_range
    - Result::len
    - RpRead::new
    linkageType: ''
    returnType: Result
    signature: 'async fn open(&self, range: BytesRange) -> Result<(RpRead, Box<dyn
      oio::ReadStreamDyn>)>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::debug_struct
      Src: /src/opendal/core/services/mongodb/src/core.rs:41,1
    - Dst: field
      Src: /src/opendal/core/services/mongodb/src/core.rs:41,1
    - Dst: field
      Src: /src/opendal/core/services/mongodb/src/core.rs:41,1
    - Dst: field
      Src: /src/opendal/core/services/mongodb/src/core.rs:41,1
    - Dst: field
      Src: /src/opendal/core/services/mongodb/src/core.rs:41,1
    - Dst: finish_non_exhaustive
      Src: /src/opendal/core/services/mongodb/src/core.rs:41,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 20
    argCount: 1
    argNames:
    - f
    argTypes:
    - '&mut std::fmt::Formatter<''_>'
    constantsTouched: []
    func_position:
      end: 47
      start: 40
    functionDepth: 5
    functionLinenumber: 40
    functionLinenumberEnd: 47
    functionName: MongodbCore::fmt
    functionSourceFile: /src/opendal/core/services/mongodb/src/core.rs
    functionUses: 0
    functionsReached:
    - field
    - Result::debug_struct
    - finish_non_exhaustive
    linkageType: ''
    returnType: std::fmt::Result
    signature: 'fn fmt(&self, f: &mut std::fmt::Formatter<''_>) -> std::fmt::Result'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: get_or_try_init
      Src: /src/opendal/core/services/mongodb/src/core.rs:52,1
    - Dst: ClientOptions::parse
      Src: /src/opendal/core/services/mongodb/src/core.rs:54,1
    - Dst: map_err
      Src: /src/opendal/core/services/mongodb/src/core.rs:54,1
    - Dst: mongodb::Client::with_options
      Src: /src/opendal/core/services/mongodb/src/core.rs:58,1
    - Dst: OpendalResult::map_err
      Src: /src/opendal/core/services/mongodb/src/core.rs:58,1
    - Dst: Result::database
      Src: /src/opendal/core/services/mongodb/src/core.rs:59,1
    - Dst: Self::collection
      Src: /src/opendal/core/services/mongodb/src/core.rs:60,1
    - Dst: Ok
      Src: /src/opendal/core/services/mongodb/src/core.rs:61,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 25
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 64
      start: 51
    functionDepth: 33
    functionLinenumber: 51
    functionLinenumberEnd: 64
    functionName: MongodbCore::get_collection
    functionSourceFile: /src/opendal/core/services/mongodb/src/core.rs
    functionUses: 4
    functionsReached:
    - map_err
    - Self::collection
    - Ok
    - get_or_try_init
    - OpendalResult::map_err
    - Result::database
    - mongodb::Client::with_options
    - ClientOptions::parse
    linkageType: ''
    returnType: Result
    signature: async fn get_collection(&self) -> Result<&mongodb::Collection<Document>>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: MongodbCore::get_collection
      Src: /src/opendal/core/services/mongodb/src/core.rs:67,1
    - Dst: Result::find_one
      Src: /src/opendal/core/services/mongodb/src/core.rs:69,1
    - Dst: map_err
      Src: /src/opendal/core/services/mongodb/src/core.rs:69,1
    - Dst: Result::get_binary_generic
      Src: /src/opendal/core/services/mongodb/src/core.rs:75,1
    - Dst: map_err
      Src: /src/opendal/core/services/mongodb/src/core.rs:75,1
    - Dst: Ok
      Src: /src/opendal/core/services/mongodb/src/core.rs:78,1
    - Dst: Some
      Src: /src/opendal/core/services/mongodb/src/core.rs:78,1
    - Dst: Buffer::from
      Src: /src/opendal/core/services/mongodb/src/core.rs:78,1
    - Dst: Vec::to_vec
      Src: /src/opendal/core/services/mongodb/src/core.rs:78,1
    - Dst: Ok
      Src: /src/opendal/core/services/mongodb/src/core.rs:80,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 25
    argCount: 1
    argNames:
    - path
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 82
      start: 66
    functionDepth: 34
    functionLinenumber: 66
    functionLinenumberEnd: 82
    functionName: MongodbCore::get
    functionSourceFile: /src/opendal/core/services/mongodb/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - Result::get_binary_generic
    - Ok
    - Some
    - Vec::to_vec
    - Result::find_one
    - Buffer::from
    - MongodbCore::get_collection
    linkageType: ''
    returnType: Result
    signature: 'pub async fn get(&self, path: &str) -> Result<Option<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: MongodbCore::get_collection
      Src: /src/opendal/core/services/mongodb/src/core.rs:85,1
    - Dst: Result::aggregate
      Src: /src/opendal/core/services/mongodb/src/core.rs:86,1
    - Dst: map_err
      Src: /src/opendal/core/services/mongodb/src/core.rs:86,1
    - Dst: Option::advance
      Src: /src/opendal/core/services/mongodb/src/core.rs:102,1
    - Dst: map_err
      Src: /src/opendal/core/services/mongodb/src/core.rs:102,1
    - Dst: Ok
      Src: /src/opendal/core/services/mongodb/src/core.rs:103,1
    - Dst: Option::deserialize_current
      Src: /src/opendal/core/services/mongodb/src/core.rs:106,1
    - Dst: map_err
      Src: /src/opendal/core/services/mongodb/src/core.rs:106,1
    - Dst: parse_bson_usize
      Src: /src/opendal/core/services/mongodb/src/core.rs:107,1
    - Dst: Result::get
      Src: /src/opendal/core/services/mongodb/src/core.rs:107,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 30
    argCount: 1
    argNames:
    - path
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 108
      start: 84
    functionDepth: 34
    functionLinenumber: 84
    functionLinenumberEnd: 108
    functionName: MongodbCore::get_length
    functionSourceFile: /src/opendal/core/services/mongodb/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - Option::deserialize_current
    - Ok
    - Result::aggregate
    - parse_bson_usize
    - Option::advance
    - Result::get
    - MongodbCore::get_collection
    linkageType: ''
    returnType: Result
    signature: 'pub async fn get_length(&self, path: &str) -> Result<Option<usize>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: MongodbCore::get_collection
      Src: /src/opendal/core/services/mongodb/src/core.rs:111,1
    - Dst: Result::update_one
      Src: /src/opendal/core/services/mongodb/src/core.rs:114,1
    - Dst: upsert
      Src: /src/opendal/core/services/mongodb/src/core.rs:114,1
    - Dst: map_err
      Src: /src/opendal/core/services/mongodb/src/core.rs:114,1
    - Dst: Ok
      Src: /src/opendal/core/services/mongodb/src/core.rs:120,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 2
    argNames:
    - path
    - value
    argTypes:
    - '&str'
    - Buffer
    constantsTouched: []
    func_position:
      end: 121
      start: 110
    functionDepth: 34
    functionLinenumber: 110
    functionLinenumberEnd: 121
    functionName: MongodbCore::set
    functionSourceFile: /src/opendal/core/services/mongodb/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - Ok
    - Result::update_one
    - MongodbCore::get_collection
    - upsert
    linkageType: ''
    returnType: Result
    signature: 'pub async fn set(&self, path: &str, value: Buffer) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: MongodbCore::get_collection
      Src: /src/opendal/core/services/mongodb/src/core.rs:124,1
    - Dst: Result::delete_one
      Src: /src/opendal/core/services/mongodb/src/core.rs:126,1
    - Dst: map_err
      Src: /src/opendal/core/services/mongodb/src/core.rs:126,1
    - Dst: Ok
      Src: /src/opendal/core/services/mongodb/src/core.rs:130,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 1
    argNames:
    - path
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 131
      start: 123
    functionDepth: 34
    functionLinenumber: 123
    functionLinenumberEnd: 131
    functionName: MongodbCore::delete
    functionSourceFile: /src/opendal/core/services/mongodb/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - Result::delete_one
    - Ok
    - MongodbCore::get_collection
    linkageType: ''
    returnType: Result
    signature: 'pub async fn delete(&self, path: &str) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Error::new
      Src: /src/opendal/core/services/gridfs/src/core.rs:144,1
    - Dst: Self::set_source
      Src: /src/opendal/core/services/gridfs/src/core.rs:144,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - err
    argTypes:
    - mongodb::error::Error
    constantsTouched: []
    func_position:
      end: 145
      start: 143
    functionDepth: 36
    functionLinenumber: 143
    functionLinenumberEnd: 145
    functionName: parse_mongodb_error
    functionSourceFile: /src/opendal/core/services/gridfs/src/core.rs
    functionUses: 0
    functionsReached:
    - Self::set_source
    - Error::new
    linkageType: ''
    returnType: Error
    signature: 'fn parse_mongodb_error(err: mongodb::error::Error) -> Error'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Error::new
      Src: /src/opendal/core/services/mongodb/src/core.rs:139,1
    - Dst: Self::set_source
      Src: /src/opendal/core/services/mongodb/src/core.rs:139,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - err
    argTypes:
    - mongodb::bson::document::ValueAccessError
    constantsTouched: []
    func_position:
      end: 140
      start: 138
    functionDepth: 36
    functionLinenumber: 138
    functionLinenumberEnd: 140
    functionName: parse_bson_error
    functionSourceFile: /src/opendal/core/services/mongodb/src/core.rs
    functionUses: 0
    functionsReached:
    - Self::set_source
    - Error::new
    linkageType: ''
    returnType: Error
    signature: 'fn parse_bson_error(err: mongodb::bson::document::ValueAccessError)
      -> Error'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/core/services/mongodb/src/core.rs:144,1
    - Dst: try_into
      Src: /src/opendal/core/services/mongodb/src/core.rs:148,1
    - Dst: map
      Src: /src/opendal/core/services/mongodb/src/core.rs:148,1
    - Dst: map_err
      Src: /src/opendal/core/services/mongodb/src/core.rs:148,1
    - Dst: Error::new
      Src: /src/opendal/core/services/mongodb/src/core.rs:149,1
    - Dst: Self::set_source
      Src: /src/opendal/core/services/mongodb/src/core.rs:149,1
    - Dst: try_into
      Src: /src/opendal/core/services/mongodb/src/core.rs:151,1
    - Dst: map
      Src: /src/opendal/core/services/mongodb/src/core.rs:151,1
    - Dst: map_err
      Src: /src/opendal/core/services/mongodb/src/core.rs:151,1
    - Dst: Error::new
      Src: /src/opendal/core/services/mongodb/src/core.rs:152,1
    - Dst: Self::set_source
      Src: /src/opendal/core/services/mongodb/src/core.rs:152,1
    - Dst: Err
      Src: /src/opendal/core/services/mongodb/src/core.rs:154,1
    - Dst: Error::new
      Src: /src/opendal/core/services/mongodb/src/core.rs:154,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 31
    argCount: 1
    argNames:
    - value
    argTypes:
    - Option<&Bson>
    constantsTouched: []
    func_position:
      end: 159
      start: 142
    functionDepth: 36
    functionLinenumber: 142
    functionLinenumberEnd: 159
    functionName: parse_bson_usize
    functionSourceFile: /src/opendal/core/services/mongodb/src/core.rs
    functionUses: 1
    functionsReached:
    - map_err
    - try_into
    - Ok
    - Error::new
    - Err
    - map
    - Self::set_source
    linkageType: ''
    returnType: Result
    signature: 'fn parse_bson_usize(value: Option<&Bson>) -> Result<Option<usize>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 172
      start: 166
    functionDepth: 0
    functionLinenumber: 166
    functionLinenumberEnd: 172
    functionName: tests::test_parse_bson_usize
    functionSourceFile: /src/opendal/core/services/mongodb/src/core.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: fn test_parse_bson_usize()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: oio::QueueBuf::new
      Src: /src/opendal/core/services/mongodb/src/writer.rs:35,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - core
    - path
    argTypes:
    - Arc<MongodbCore>
    - String
    constantsTouched: []
    func_position:
      end: 37
      start: 31
    functionDepth: 4
    functionLinenumber: 31
    functionLinenumberEnd: 37
    functionName: MongodbWriter::new
    functionSourceFile: /src/opendal/core/services/mongodb/src/writer.rs
    functionUses: 1
    functionsReached:
    - oio::QueueBuf::new
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(core: Arc<MongodbCore>, path: String) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: push
      Src: /src/opendal/core/services/mongodb/src/writer.rs:42,1
    - Dst: Ok
      Src: /src/opendal/core/services/mongodb/src/writer.rs:43,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - bs
    argTypes:
    - Buffer
    constantsTouched: []
    func_position:
      end: 44
      start: 41
    functionDepth: 5
    functionLinenumber: 41
    functionLinenumberEnd: 44
    functionName: MongodbWriter::write
    functionSourceFile: /src/opendal/core/services/mongodb/src/writer.rs
    functionUses: 0
    functionsReached:
    - Ok
    - push
    linkageType: ''
    returnType: Result
    signature: 'async fn write(&mut self, bs: Buffer) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: clone
      Src: /src/opendal/core/services/mongodb/src/writer.rs:47,1
    - Dst: collect
      Src: /src/opendal/core/services/mongodb/src/writer.rs:47,1
    - Dst: io::Result::len
      Src: /src/opendal/core/services/mongodb/src/writer.rs:48,1
    - Dst: set
      Src: /src/opendal/core/services/mongodb/src/writer.rs:49,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/mongodb/src/writer.rs:51,1
    - Dst: EntryMode::from_path
      Src: /src/opendal/core/services/mongodb/src/writer.rs:51,1
    - Dst: Self::with_content_length
      Src: /src/opendal/core/services/mongodb/src/writer.rs:51,1
    - Dst: Ok
      Src: /src/opendal/core/services/mongodb/src/writer.rs:52,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 23
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 53
      start: 46
    functionDepth: 36
    functionLinenumber: 46
    functionLinenumberEnd: 53
    functionName: MongodbWriter::close
    functionSourceFile: /src/opendal/core/services/mongodb/src/writer.rs
    functionUses: 0
    functionsReached:
    - collect
    - Metadata::new
    - Ok
    - io::Result::len
    - set
    - Self::with_content_length
    - clone
    - EntryMode::from_path
    linkageType: ''
    returnType: Result
    signature: async fn close(&mut self) -> Result<Metadata>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: clear
      Src: /src/opendal/core/services/mongodb/src/writer.rs:56,1
    - Dst: Ok
      Src: /src/opendal/core/services/mongodb/src/writer.rs:57,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 58
      start: 55
    functionDepth: 2
    functionLinenumber: 55
    functionLinenumberEnd: 58
    functionName: MongodbWriter::abort
    functionSourceFile: /src/opendal/core/services/mongodb/src/writer.rs
    functionUses: 0
    functionsReached:
    - clear
    - Ok
    linkageType: ''
    returnType: Result
    signature: async fn abort(&mut self) -> Result<()>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: register::<Mongodb>
      Src: /src/opendal/core/services/mongodb/src/lib.rs:23,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - registry
    argTypes:
    - '&opendal_core::OperatorRegistry'
    constantsTouched: []
    func_position:
      end: 24
      start: 22
    functionDepth: 0
    functionLinenumber: 22
    functionLinenumberEnd: 24
    functionName: register_mongodb_service
    functionSourceFile: /src/opendal/core/services/mongodb/src/lib.rs
    functionUses: 1
    functionsReached:
    - register::<Mongodb>
    linkageType: ''
    returnType: void
    signature: 'pub fn register_mongodb_service(registry: &opendal_core::OperatorRegistry)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::is_empty
      Src: /src/opendal/core/services/mongodb/src/backend.rs:59,1
    - Dst: Some
      Src: /src/opendal/core/services/mongodb/src/backend.rs:60,1
    - Dst: Result::to_string
      Src: /src/opendal/core/services/mongodb/src/backend.rs:60,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 1
    argNames:
    - v
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 63
      start: 58
    functionDepth: 4
    functionLinenumber: 58
    functionLinenumberEnd: 63
    functionName: MongodbBuilder::connection_string
    functionSourceFile: /src/opendal/core/services/mongodb/src/backend.rs
    functionUses: 0
    functionsReached:
    - Result::is_empty
    - Result::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn connection_string(mut self, v: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::is_empty
      Src: /src/opendal/core/services/mongodb/src/backend.rs:68,1
    - Dst: Some
      Src: /src/opendal/core/services/mongodb/src/backend.rs:71,1
    - Dst: Result::to_string
      Src: /src/opendal/core/services/mongodb/src/backend.rs:71,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - root
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 75
      start: 67
    functionDepth: 4
    functionLinenumber: 67
    functionLinenumberEnd: 75
    functionName: MongodbBuilder::root
    functionSourceFile: /src/opendal/core/services/mongodb/src/backend.rs
    functionUses: 0
    functionsReached:
    - Result::is_empty
    - Result::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn root(mut self, root: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self::is_empty
      Src: /src/opendal/core/services/mongodb/src/backend.rs:79,1
    - Dst: Some
      Src: /src/opendal/core/services/mongodb/src/backend.rs:80,1
    - Dst: Self::to_string
      Src: /src/opendal/core/services/mongodb/src/backend.rs:80,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 1
    argNames:
    - database
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 83
      start: 78
    functionDepth: 4
    functionLinenumber: 78
    functionLinenumberEnd: 83
    functionName: MongodbBuilder::database
    functionSourceFile: /src/opendal/core/services/mongodb/src/backend.rs
    functionUses: 0
    functionsReached:
    - Self::is_empty
    - Self::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn database(mut self, database: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::is_empty
      Src: /src/opendal/core/services/mongodb/src/backend.rs:87,1
    - Dst: Some
      Src: /src/opendal/core/services/mongodb/src/backend.rs:88,1
    - Dst: Result::to_string
      Src: /src/opendal/core/services/mongodb/src/backend.rs:88,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 1
    argNames:
    - collection
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 91
      start: 86
    functionDepth: 4
    functionLinenumber: 86
    functionLinenumberEnd: 91
    functionName: MongodbBuilder::collection
    functionSourceFile: /src/opendal/core/services/mongodb/src/backend.rs
    functionUses: 0
    functionsReached:
    - Result::is_empty
    - Result::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn collection(mut self, collection: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self::is_empty
      Src: /src/opendal/core/services/mongodb/src/backend.rs:97,1
    - Dst: Some
      Src: /src/opendal/core/services/mongodb/src/backend.rs:98,1
    - Dst: Self::to_string
      Src: /src/opendal/core/services/mongodb/src/backend.rs:98,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 1
    argNames:
    - key_field
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 101
      start: 96
    functionDepth: 4
    functionLinenumber: 96
    functionLinenumberEnd: 101
    functionName: MongodbBuilder::key_field
    functionSourceFile: /src/opendal/core/services/mongodb/src/backend.rs
    functionUses: 0
    functionsReached:
    - Self::is_empty
    - Self::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn key_field(mut self, key_field: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self::is_empty
      Src: /src/opendal/core/services/mongodb/src/backend.rs:107,1
    - Dst: Some
      Src: /src/opendal/core/services/mongodb/src/backend.rs:108,1
    - Dst: Self::to_string
      Src: /src/opendal/core/services/mongodb/src/backend.rs:108,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 1
    argNames:
    - value_field
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 111
      start: 106
    functionDepth: 4
    functionLinenumber: 106
    functionLinenumberEnd: 111
    functionName: MongodbBuilder::value_field
    functionSourceFile: /src/opendal/core/services/mongodb/src/backend.rs
    functionUses: 0
    functionsReached:
    - Self::is_empty
    - Self::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn value_field(mut self, value_field: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: clone
      Src: /src/opendal/core/services/mongodb/src/backend.rs:118,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/mongodb/src/backend.rs:119,1
    - Dst: Err
      Src: /src/opendal/core/services/mongodb/src/backend.rs:121,1
    - Dst: Error::new
      Src: /src/opendal/core/services/mongodb/src/backend.rs:122,1
    - Dst: Self::with_context
      Src: /src/opendal/core/services/mongodb/src/backend.rs:122,1
    - Dst: clone
      Src: /src/opendal/core/services/mongodb/src/backend.rs:127,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/mongodb/src/backend.rs:128,1
    - Dst: Err
      Src: /src/opendal/core/services/mongodb/src/backend.rs:130,1
    - Dst: Error::new
      Src: /src/opendal/core/services/mongodb/src/backend.rs:130,1
    - Dst: Self::with_context
      Src: /src/opendal/core/services/mongodb/src/backend.rs:130,1
    - Dst: clone
      Src: /src/opendal/core/services/mongodb/src/backend.rs:134,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/mongodb/src/backend.rs:135,1
    - Dst: Err
      Src: /src/opendal/core/services/mongodb/src/backend.rs:137,1
    - Dst: Error::new
      Src: /src/opendal/core/services/mongodb/src/backend.rs:138,1
    - Dst: Self::with_context
      Src: /src/opendal/core/services/mongodb/src/backend.rs:138,1
    - Dst: clone
      Src: /src/opendal/core/services/mongodb/src/backend.rs:143,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/mongodb/src/backend.rs:144,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/mongodb/src/backend.rs:145,1
    - Dst: clone
      Src: /src/opendal/core/services/mongodb/src/backend.rs:147,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/mongodb/src/backend.rs:148,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/mongodb/src/backend.rs:149,1
    - Dst: normalize_root
      Src: /src/opendal/core/services/mongodb/src/backend.rs:151,1
    - Dst: clone
      Src: /src/opendal/core/services/mongodb/src/backend.rs:152,1
    - Dst: unwrap_or_else
      Src: /src/opendal/core/services/mongodb/src/backend.rs:152,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/mongodb/src/backend.rs:155,1
    - Dst: as_str
      Src: /src/opendal/core/services/mongodb/src/backend.rs:152,1
    - Dst: Ok
      Src: /src/opendal/core/services/mongodb/src/backend.rs:158,1
    - Dst: MongodbBackend::new
      Src: /src/opendal/core/services/mongodb/src/backend.rs:158,1
    - Dst: OnceCell::new
      Src: /src/opendal/core/services/mongodb/src/backend.rs:162,1
    - Dst: Self::with_normalized_root
      Src: /src/opendal/core/services/mongodb/src/backend.rs:158,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 80
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 167
      start: 117
    functionDepth: 36
    functionLinenumber: 117
    functionLinenumberEnd: 167
    functionName: MongodbBuilder::build
    functionSourceFile: /src/opendal/core/services/mongodb/src/backend.rs
    functionUses: 0
    functionsReached:
    - Result::clone
    - Ok
    - Self::with_normalized_root
    - clone
    - normalize_root
    - Error::new
    - Err
    - as_str
    - '&str::to_string'
    - OnceCell::new
    - MongodbBackend::new
    - Self::with_context
    - unwrap_or_else
    linkageType: ''
    returnType: Result
    signature: fn build(self) -> Result<impl Service>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: ServiceInfo::new
      Src: /src/opendal/core/services/mongodb/src/backend.rs:181,1
    - Dst: Default::default
      Src: /src/opendal/core/services/mongodb/src/backend.rs:193,1
    - Dst: Arc::new
      Src: /src/opendal/core/services/mongodb/src/backend.rs:197,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/mongodb/src/backend.rs:198,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - core
    argTypes:
    - MongodbCore
    constantsTouched: []
    func_position:
      end: 202
      start: 180
    functionDepth: 33
    functionLinenumber: 180
    functionLinenumberEnd: 202
    functionName: MongodbBackend::new
    functionSourceFile: /src/opendal/core/services/mongodb/src/backend.rs
    functionUses: 1
    functionsReached:
    - Arc::new
    - ServiceInfo::new
    - '&str::to_string'
    - Default::default
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(core: MongodbCore) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: with_root
      Src: /src/opendal/core/services/mongodb/src/backend.rs:205,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 1
    argNames:
    - root
    argTypes:
    - String
    constantsTouched: []
    func_position:
      end: 208
      start: 204
    functionDepth: 33
    functionLinenumber: 204
    functionLinenumberEnd: 208
    functionName: MongodbBackend::with_normalized_root
    functionSourceFile: /src/opendal/core/services/mongodb/src/backend.rs
    functionUses: 0
    functionsReached:
    - with_root
    linkageType: ''
    returnType: Self
    signature: 'fn with_normalized_root(mut self, root: String) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: clone
      Src: /src/opendal/core/services/mongodb/src/backend.rs:219,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 220
      start: 218
    functionDepth: 2
    functionLinenumber: 218
    functionLinenumberEnd: 220
    functionName: MongodbBackend::info
    functionSourceFile: /src/opendal/core/services/mongodb/src/backend.rs
    functionUses: 0
    functionsReached:
    - clone
    linkageType: ''
    returnType: ServiceInfo
    signature: fn info(&self) -> ServiceInfo
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 224
      start: 222
    functionDepth: 0
    functionLinenumber: 222
    functionLinenumberEnd: 224
    functionName: MongodbBackend::capability
    functionSourceFile: /src/opendal/core/services/mongodb/src/backend.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Capability
    signature: fn capability(&self) -> Capability
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/core/services/mongodb/src/backend.rs:232,1
    - Dst: Error::new
      Src: /src/opendal/core/services/mongodb/src/backend.rs:232,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - _ctx
    - _path
    - _args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpCreateDir
    constantsTouched: []
    func_position:
      end: 236
      start: 226
    functionDepth: 36
    functionLinenumber: 226
    functionLinenumberEnd: 236
    functionName: MongodbBackend::create_dir
    functionSourceFile: /src/opendal/core/services/mongodb/src/backend.rs
    functionUses: 0
    functionsReached:
    - Error::new
    - Err
    linkageType: ''
    returnType: Result
    signature: 'async fn create_dir(&self,_ctx: &OperationContext,_path: &str,_args:
      OpCreateDir,) -> Result<RpCreateDir>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/mongodb/src/backend.rs:239,1
    - Dst: build_abs_path
      Src: /src/opendal/core/services/mongodb/src/backend.rs:241,1
    - Dst: Ok
      Src: /src/opendal/core/services/mongodb/src/backend.rs:242,1
    - Dst: RpStat::new
      Src: /src/opendal/core/services/mongodb/src/backend.rs:242,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/mongodb/src/backend.rs:242,1
    - Dst: get_length
      Src: /src/opendal/core/services/mongodb/src/backend.rs:244,1
    - Dst: Ok
      Src: /src/opendal/core/services/mongodb/src/backend.rs:245,1
    - Dst: RpStat::new
      Src: /src/opendal/core/services/mongodb/src/backend.rs:245,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/mongodb/src/backend.rs:246,1
    - Dst: Self::with_content_length
      Src: /src/opendal/core/services/mongodb/src/backend.rs:246,1
    - Dst: Err
      Src: /src/opendal/core/services/mongodb/src/backend.rs:248,1
    - Dst: Error::new
      Src: /src/opendal/core/services/mongodb/src/backend.rs:248,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 28
    argCount: 3
    argNames:
    - _ctx
    - path
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpStat
    constantsTouched: []
    func_position:
      end: 251
      start: 238
    functionDepth: 35
    functionLinenumber: 238
    functionLinenumberEnd: 251
    functionName: MongodbBackend::stat
    functionSourceFile: /src/opendal/core/services/mongodb/src/backend.rs
    functionUses: 0
    functionsReached:
    - Metadata::new
    - Ok
    - Self::with_content_length
    - get_length
    - RpStat::new
    - build_abs_path
    - Err
    - Error::new
    linkageType: ''
    returnType: Result
    signature: 'async fn stat(&self, _ctx: &OperationContext, path: &str, _: OpStat)
      -> Result<RpStat>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/core/services/mongodb/src/backend.rs:254,1
    - Dst: oio::StreamReader::new
      Src: /src/opendal/core/services/mongodb/src/backend.rs:254,1
    - Dst: MongodbReader::new
      Src: /src/opendal/core/services/mongodb/src/backend.rs:254,1
    - Dst: MongodbBackend::clone
      Src: /src/opendal/core/services/mongodb/src/backend.rs:255,1
    - Dst: Ok
      Src: /src/opendal/core/services/mongodb/src/backend.rs:261,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - _ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpRead
    constantsTouched: []
    func_position:
      end: 262
      start: 252
    functionDepth: 3
    functionLinenumber: 252
    functionLinenumberEnd: 262
    functionName: MongodbBackend::read
    functionSourceFile: /src/opendal/core/services/mongodb/src/backend.rs
    functionUses: 0
    functionsReached:
    - oio::StreamReader::new
    - MongodbReader::new
    - MongodbBackend::clone
    - Ok
    linkageType: ''
    returnType: Result
    signature: 'fn read(&self, _ctx: &OperationContext, path: &str, args: OpRead)
      -> Result<Self::Reader>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/mongodb/src/backend.rs:266,1
    - Dst: Ok
      Src: /src/opendal/core/services/mongodb/src/backend.rs:267,1
    - Dst: MongodbWriter::new
      Src: /src/opendal/core/services/mongodb/src/backend.rs:267,1
    - Dst: clone
      Src: /src/opendal/core/services/mongodb/src/backend.rs:267,1
    - Dst: Ok
      Src: /src/opendal/core/services/mongodb/src/backend.rs:270,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 3
    argNames:
    - _ctx
    - path
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpWrite
    constantsTouched: []
    func_position:
      end: 271
      start: 264
    functionDepth: 5
    functionLinenumber: 264
    functionLinenumberEnd: 271
    functionName: MongodbBackend::write
    functionSourceFile: /src/opendal/core/services/mongodb/src/backend.rs
    functionUses: 0
    functionsReached:
    - MongodbWriter::new
    - Ok
    - clone
    - build_abs_path
    linkageType: ''
    returnType: Result
    signature: 'fn write(&self, _ctx: &OperationContext, path: &str, _: OpWrite) ->
      Result<Self::Writer>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/core/services/mongodb/src/backend.rs:275,1
    - Dst: oio::OneShotDeleter::new
      Src: /src/opendal/core/services/mongodb/src/backend.rs:275,1
    - Dst: MongodbDeleter::new
      Src: /src/opendal/core/services/mongodb/src/backend.rs:275,1
    - Dst: clone
      Src: /src/opendal/core/services/mongodb/src/backend.rs:276,1
    - Dst: clone
      Src: /src/opendal/core/services/mongodb/src/backend.rs:277,1
    - Dst: Ok
      Src: /src/opendal/core/services/mongodb/src/backend.rs:281,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 1
    argNames:
    - _ctx
    argTypes:
    - '&OperationContext'
    constantsTouched: []
    func_position:
      end: 282
      start: 273
    functionDepth: 2
    functionLinenumber: 273
    functionLinenumberEnd: 282
    functionName: MongodbBackend::delete
    functionSourceFile: /src/opendal/core/services/mongodb/src/backend.rs
    functionUses: 0
    functionsReached:
    - oio::OneShotDeleter::new
    - MongodbDeleter::new
    - clone
    - Ok
    linkageType: ''
    returnType: Result
    signature: 'fn delete(&self, _ctx: &OperationContext) -> Result<Self::Deleter>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/core/services/mongodb/src/backend.rs:285,1
    - Dst: Error::new
      Src: /src/opendal/core/services/mongodb/src/backend.rs:285,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - _ctx
    - _path
    - _args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpList
    constantsTouched: []
    func_position:
      end: 289
      start: 284
    functionDepth: 36
    functionLinenumber: 284
    functionLinenumberEnd: 289
    functionName: MongodbBackend::list
    functionSourceFile: /src/opendal/core/services/mongodb/src/backend.rs
    functionUses: 0
    functionsReached:
    - Error::new
    - Err
    linkageType: ''
    returnType: Result
    signature: 'fn list(&self, _ctx: &OperationContext, _path: &str, _args: OpList)
      -> Result<Self::Lister>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/core/services/mongodb/src/backend.rs:299,1
    - Dst: Error::new
      Src: /src/opendal/core/services/mongodb/src/backend.rs:299,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 5
    argNames:
    - _ctx
    - _from
    - _to
    - _args
    - _opts
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    - OpCopy
    - OpCopier
    constantsTouched: []
    func_position:
      end: 303
      start: 291
    functionDepth: 36
    functionLinenumber: 291
    functionLinenumberEnd: 303
    functionName: MongodbBackend::copy
    functionSourceFile: /src/opendal/core/services/mongodb/src/backend.rs
    functionUses: 0
    functionsReached:
    - Error::new
    - Err
    linkageType: ''
    returnType: Result
    signature: 'fn copy(&self,_ctx: &OperationContext,_from: &str,_to: &str,_args:
      OpCopy,_opts: OpCopier,) -> Result<Self::Copier>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/core/services/mongodb/src/backend.rs:312,1
    - Dst: Error::new
      Src: /src/opendal/core/services/mongodb/src/backend.rs:312,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - _ctx
    - _from
    - _to
    - _args
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    - OpRename
    constantsTouched: []
    func_position:
      end: 316
      start: 305
    functionDepth: 36
    functionLinenumber: 305
    functionLinenumberEnd: 316
    functionName: MongodbBackend::rename
    functionSourceFile: /src/opendal/core/services/mongodb/src/backend.rs
    functionUses: 0
    functionsReached:
    - Error::new
    - Err
    linkageType: ''
    returnType: Result
    signature: 'async fn rename(&self,_ctx: &OperationContext,_from: &str,_to: &str,_args:
      OpRename,) -> Result<RpRename>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/core/services/mongodb/src/backend.rs:324,1
    - Dst: Error::new
      Src: /src/opendal/core/services/mongodb/src/backend.rs:324,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - _ctx
    - _path
    - _args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpPresign
    constantsTouched: []
    func_position:
      end: 328
      start: 318
    functionDepth: 36
    functionLinenumber: 318
    functionLinenumberEnd: 328
    functionName: MongodbBackend::presign
    functionSourceFile: /src/opendal/core/services/mongodb/src/backend.rs
    functionUses: 0
    functionsReached:
    - Error::new
    - Err
    linkageType: ''
    returnType: Result
    signature: 'async fn presign(&self,_ctx: &OperationContext,_path: &str,_args:
      OpPresign,) -> Result<RpPresign>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::debug_struct
      Src: /src/opendal/core/services/s3/src/config.rs:319,1
    - Dst: field
      Src: /src/opendal/core/services/s3/src/config.rs:319,1
    - Dst: field
      Src: /src/opendal/core/services/s3/src/config.rs:319,1
    - Dst: field
      Src: /src/opendal/core/services/s3/src/config.rs:319,1
    - Dst: field
      Src: /src/opendal/core/services/s3/src/config.rs:319,1
    - Dst: finish_non_exhaustive
      Src: /src/opendal/core/services/s3/src/config.rs:319,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 20
    argCount: 1
    argNames:
    - f
    argTypes:
    - '&mut std::fmt::Formatter<''_>'
    constantsTouched: []
    func_position:
      end: 325
      start: 318
    functionDepth: 5
    functionLinenumber: 318
    functionLinenumberEnd: 325
    functionName: S3Config::fmt
    functionSourceFile: /src/opendal/core/services/s3/src/config.rs
    functionUses: 0
    functionsReached:
    - field
    - Result::debug_struct
    - finish_non_exhaustive
    linkageType: ''
    returnType: std::fmt::Result
    signature: 'fn fmt(&self, f: &mut std::fmt::Formatter<''_>) -> std::fmt::Result'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::options
      Src: /src/opendal/core/services/s3/src/config.rs:332,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/s3/src/config.rs:332,1
    - Dst: Result::name
      Src: /src/opendal/core/services/s3/src/config.rs:334,1
    - Dst: Result::insert
      Src: /src/opendal/core/services/s3/src/config.rs:335,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/s3/src/config.rs:335,1
    - Dst: Result::to_string
      Src: /src/opendal/core/services/s3/src/config.rs:335,1
    - Dst: Result::root
      Src: /src/opendal/core/services/s3/src/config.rs:338,1
    - Dst: Result::insert
      Src: /src/opendal/core/services/s3/src/config.rs:339,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/s3/src/config.rs:339,1
    - Dst: Result::to_string
      Src: /src/opendal/core/services/s3/src/config.rs:339,1
    - Dst: Self::from_iter
      Src: /src/opendal/core/services/s3/src/config.rs:342,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 27
    argCount: 1
    argNames:
    - uri
    argTypes:
    - '&OperatorUri'
    constantsTouched: []
    func_position:
      end: 343
      start: 331
    functionDepth: 35
    functionLinenumber: 331
    functionLinenumberEnd: 343
    functionName: S3Config::from_uri
    functionSourceFile: /src/opendal/core/services/s3/src/config.rs
    functionUses: 0
    functionsReached:
    - Result::clone
    - Self::from_iter
    - Result::to_string
    - Result::insert
    - Result::name
    - '&str::to_string'
    - Result::root
    - Result::options
    linkageType: ''
    returnType: Result
    signature: 'fn from_uri(uri: &OperatorUri) -> Result<Self>'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 351
      start: 346
    functionDepth: 0
    functionLinenumber: 346
    functionLinenumberEnd: 351
    functionName: S3Config::into_builder
    functionSourceFile: /src/opendal/core/services/s3/src/config.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Self::Builder
    signature: fn into_builder(self) -> Self::Builder
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: serde_json::from_str
      Src: /src/opendal/core/services/s3/src/config.rs:373,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/services/s3/src/config.rs:373,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 383
      start: 363
    functionDepth: 34
    functionLinenumber: 363
    functionLinenumberEnd: 383
    functionName: tests::test_s3_config_original_field_names
    functionSourceFile: /src/opendal/core/services/s3/src/config.rs
    functionUses: 0
    functionsReached:
    - Result::unwrap
    - serde_json::from_str
    linkageType: ''
    returnType: void
    signature: fn test_s3_config_original_field_names()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: serde_json::from_str
      Src: /src/opendal/core/services/s3/src/config.rs:396,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/services/s3/src/config.rs:396,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 406
      start: 386
    functionDepth: 34
    functionLinenumber: 386
    functionLinenumberEnd: 406
    functionName: tests::test_s3_config_aws_prefixed_aliases
    functionSourceFile: /src/opendal/core/services/s3/src/config.rs
    functionUses: 0
    functionsReached:
    - Result::unwrap
    - serde_json::from_str
    linkageType: ''
    returnType: void
    signature: fn test_s3_config_aws_prefixed_aliases()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: serde_json::from_str
      Src: /src/opendal/core/services/s3/src/config.rs:419,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/services/s3/src/config.rs:419,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 429
      start: 409
    functionDepth: 34
    functionLinenumber: 409
    functionLinenumberEnd: 429
    functionName: tests::test_s3_config_additional_aliases
    functionSourceFile: /src/opendal/core/services/s3/src/config.rs
    functionUses: 0
    functionsReached:
    - Result::unwrap
    - serde_json::from_str
    linkageType: ''
    returnType: void
    signature: fn test_s3_config_additional_aliases()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: serde_json::from_str
      Src: /src/opendal/core/services/s3/src/config.rs:440,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/services/s3/src/config.rs:440,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 451
      start: 432
    functionDepth: 34
    functionLinenumber: 432
    functionLinenumberEnd: 451
    functionName: tests::test_s3_config_encryption_aliases
    functionSourceFile: /src/opendal/core/services/s3/src/config.rs
    functionUses: 0
    functionsReached:
    - Result::unwrap
    - serde_json::from_str
    linkageType: ''
    returnType: void
    signature: fn test_s3_config_encryption_aliases()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: OperatorUri::new
      Src: /src/opendal/core/services/tos/src/config.rs:191,1
    - Dst: iter::empty
      Src: /src/opendal/core/services/tos/src/config.rs:193,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/services/tos/src/config.rs:191,1
    - Dst: TosConfig::from_uri
      Src: /src/opendal/core/services/tos/src/config.rs:196,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/services/tos/src/config.rs:196,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 203
      start: 190
    functionDepth: 29
    functionLinenumber: 190
    functionLinenumberEnd: 203
    functionName: tests::from_uri_extracts_endpoint
    functionSourceFile: /src/opendal/core/services/tos/src/config.rs
    functionUses: 0
    functionsReached:
    - iter::empty
    - OperatorUri::new
    - TosConfig::from_uri
    - Result::unwrap
    linkageType: ''
    returnType: void
    signature: fn from_uri_extracts_endpoint()
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - core
    - ctx
    argTypes:
    - Arc<S3Core>
    - OperationContext
    constantsTouched: []
    func_position:
      end: 38
      start: 36
    functionDepth: 0
    functionLinenumber: 36
    functionLinenumberEnd: 38
    functionName: S3Deleter::new
    functionSourceFile: /src/opendal/core/services/s3/src/deleter.rs
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(core: Arc<S3Core>, ctx: OperationContext) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/core/services/s3/src/deleter.rs:45,1
    - Dst: s3_delete_object
      Src: /src/opendal/core/services/s3/src/deleter.rs:48,1
    - Dst: status
      Src: /src/opendal/core/services/s3/src/deleter.rs:50,1
    - Dst: Ok
      Src: /src/opendal/core/services/s3/src/deleter.rs:53,1
    - Dst: Ok
      Src: /src/opendal/core/services/s3/src/deleter.rs:57,1
    - Dst: Err
      Src: /src/opendal/core/services/s3/src/deleter.rs:58,1
    - Dst: core::parse_error
      Src: /src/opendal/core/services/s3/src/deleter.rs:58,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 30
    argCount: 2
    argNames:
    - path
    - args
    argTypes:
    - String
    - OpDelete
    constantsTouched: []
    func_position:
      end: 60
      start: 42
    functionDepth: 34
    functionLinenumber: 42
    functionLinenumberEnd: 60
    functionName: S3Deleter::delete_once
    functionSourceFile: /src/opendal/core/services/s3/src/deleter.rs
    functionUses: 0
    functionsReached:
    - status
    - s3_delete_object
    - Ok
    - Err
    - core::parse_error
    linkageType: ''
    returnType: Result
    signature: 'async fn delete_once(&self, path: String, args: OpDelete) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: s3_delete_objects
      Src: /src/opendal/core/services/s3/src/deleter.rs:63,1
    - Dst: status
      Src: /src/opendal/core/services/s3/src/deleter.rs:65,1
    - Dst: Err
      Src: /src/opendal/core/services/s3/src/deleter.rs:67,1
    - Dst: core::parse_error
      Src: /src/opendal/core/services/s3/src/deleter.rs:67,1
    - Dst: into_body
      Src: /src/opendal/core/services/s3/src/deleter.rs:70,1
    - Dst: quick_xml::de::from_reader
      Src: /src/opendal/core/services/s3/src/deleter.rs:73,1
    - Dst: Result::reader
      Src: /src/opendal/core/services/s3/src/deleter.rs:73,1
    - Dst: map_err
      Src: /src/opendal/core/services/s3/src/deleter.rs:73,1
    - Dst: Vec::with_capacity
      Src: /src/opendal/core/services/s3/src/deleter.rs:80,1
    - Dst: Result::len
      Src: /src/opendal/core/services/s3/src/deleter.rs:80,1
    - Dst: usize::saturating_sub
      Src: /src/opendal/core/services/s3/src/deleter.rs:80,1
    - Dst: len
      Src: /src/opendal/core/services/s3/src/deleter.rs:80,1
    - Dst: Vec::with_capacity
      Src: /src/opendal/core/services/s3/src/deleter.rs:81,1
    - Dst: len
      Src: /src/opendal/core/services/s3/src/deleter.rs:81,1
    - Dst: build_abs_path
      Src: /src/opendal/core/services/s3/src/deleter.rs:84,1
    - Dst: iter
      Src: /src/opendal/core/services/s3/src/deleter.rs:86,1
    - Dst: position
      Src: /src/opendal/core/services/s3/src/deleter.rs:86,1
    - Dst: as_deref
      Src: /src/opendal/core/services/s3/src/deleter.rs:88,1
    - Dst: version
      Src: /src/opendal/core/services/s3/src/deleter.rs:88,1
    - Dst: swap_remove
      Src: /src/opendal/core/services/s3/src/deleter.rs:90,1
    - Dst: push
      Src: /src/opendal/core/services/s3/src/deleter.rs:91,1
    - Dst: parse_delete_objects_result_error
      Src: /src/opendal/core/services/s3/src/deleter.rs:93,1
    - Dst: push
      Src: /src/opendal/core/services/s3/src/deleter.rs:95,1
    - Dst: Ok
      Src: /src/opendal/core/services/s3/src/deleter.rs:99,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 74
    argCount: 1
    argNames:
    - batch
    argTypes:
    - Vec<(String, OpDelete)>
    constantsTouched: []
    func_position:
      end: 100
      start: 62
    functionDepth: 33
    functionLinenumber: 62
    functionLinenumberEnd: 100
    functionName: S3Deleter::delete_batch
    functionSourceFile: /src/opendal/core/services/s3/src/deleter.rs
    functionUses: 0
    functionsReached:
    - status
    - Vec::with_capacity
    - push
    - as_deref
    - position
    - quick_xml::de::from_reader
    - Result::len
    - Result::reader
    - swap_remove
    - map_err
    - iter
    - Ok
    - len
    - into_body
    - build_abs_path
    - s3_delete_objects
    - Err
    - usize::saturating_sub
    - parse_delete_objects_result_error
    - core::parse_error
    - version
    linkageType: ''
    returnType: Result
    signature: 'async fn delete_batch(&self, batch: Vec<(String, OpDelete)>) -> Result<BatchDeleteResult>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: core::parse_tos_error_code
      Src: /src/opendal/core/services/tos/src/deleter.rs:112,1
    - Dst: as_str
      Src: /src/opendal/core/services/tos/src/deleter.rs:112,1
    - Dst: Option::unwrap_or
      Src: /src/opendal/core/services/tos/src/deleter.rs:112,1
    - Dst: Error::new
      Src: /src/opendal/core/services/tos/src/deleter.rs:113,1
    - Dst: Error::set_temporary
      Src: /src/opendal/core/services/tos/src/deleter.rs:115,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 14
    argCount: 1
    argNames:
    - err
    argTypes:
    - DeleteObjectsResultError
    constantsTouched: []
    func_position:
      end: 118
      start: 110
    functionDepth: 36
    functionLinenumber: 110
    functionLinenumberEnd: 118
    functionName: parse_delete_objects_result_error
    functionSourceFile: /src/opendal/core/services/tos/src/deleter.rs
    functionUses: 2
    functionsReached:
    - Error::set_temporary
    - core::parse_tos_error_code
    - Error::new
    - Option::unwrap_or
    - as_str
    linkageType: ''
    returnType: Error
    signature: 'fn parse_delete_objects_result_error(err: DeleteObjectsResultError)
      -> Error'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: OpStat::recursive
      Src: /src/opendal/core/services/s3/src/lister.rs:56,1
    - Dst: OpStat::start_after
      Src: /src/opendal/core/services/s3/src/lister.rs:57,1
    - Dst: Result::map
      Src: /src/opendal/core/services/s3/src/lister.rs:57,1
    - Dst: build_abs_path
      Src: /src/opendal/core/services/s3/src/lister.rs:59,1
    - Dst: Result::unwrap_or_default
      Src: /src/opendal/core/services/s3/src/lister.rs:57,1
    - Dst: to_string
      Src: /src/opendal/core/services/s3/src/lister.rs:66,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 16
    argCount: 4
    argNames:
    - core
    - ctx
    - path
    - args
    argTypes:
    - Arc<S3Core>
    - OperationContext
    - '&str'
    - OpList
    constantsTouched: []
    func_position:
      end: 71
      start: 55
    functionDepth: 36
    functionLinenumber: 55
    functionLinenumberEnd: 71
    functionName: S3ListerV1::new
    functionSourceFile: /src/opendal/core/services/s3/src/lister.rs
    functionUses: 1
    functionsReached:
    - Result::unwrap_or_default
    - to_string
    - OpStat::start_after
    - build_abs_path
    - Result::map
    - OpStat::recursive
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(core: Arc<S3Core>, ctx: OperationContext, path: &str, args:
      OpList) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: s3_list_objects_v1
      Src: /src/opendal/core/services/s3/src/lister.rs:76,1
    - Dst: is_empty
      Src: /src/opendal/core/services/s3/src/lister.rs:82,1
    - Dst: limit
      Src: /src/opendal/core/services/s3/src/lister.rs:88,1
    - Dst: status
      Src: /src/opendal/core/services/s3/src/lister.rs:92,1
    - Dst: Err
      Src: /src/opendal/core/services/s3/src/lister.rs:93,1
    - Dst: core::parse_error
      Src: /src/opendal/core/services/s3/src/lister.rs:93,1
    - Dst: into_body
      Src: /src/opendal/core/services/s3/src/lister.rs:95,1
    - Dst: de::from_reader
      Src: /src/opendal/core/services/s3/src/lister.rs:97,1
    - Dst: Result::reader
      Src: /src/opendal/core/services/s3/src/lister.rs:97,1
    - Dst: map_err
      Src: /src/opendal/core/services/s3/src/lister.rs:97,1
    - Dst: map_err
      Src: /src/opendal/core/services/s3/src/lister.rs:97,1
    - Dst: is_empty
      Src: /src/opendal/core/services/s3/src/lister.rs:113,1
    - Dst: is_empty
      Src: /src/opendal/core/services/s3/src/lister.rs:113,1
    - Dst: clone
      Src: /src/opendal/core/services/s3/src/lister.rs:121,1
    - Dst: last
      Src: /src/opendal/core/services/s3/src/lister.rs:122,1
    - Dst: clone
      Src: /src/opendal/core/services/s3/src/lister.rs:123,1
    - Dst: last
      Src: /src/opendal/core/services/s3/src/lister.rs:124,1
    - Dst: clone
      Src: /src/opendal/core/services/s3/src/lister.rs:125,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/s3/src/lister.rs:127,1
    - Dst: oio::Entry::new
      Src: /src/opendal/core/services/s3/src/lister.rs:131,1
    - Dst: build_rel_path
      Src: /src/opendal/core/services/s3/src/lister.rs:132,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/s3/src/lister.rs:133,1
    - Dst: push_back
      Src: /src/opendal/core/services/s3/src/lister.rs:136,1
    - Dst: build_rel_path
      Src: /src/opendal/core/services/s3/src/lister.rs:140,1
    - Dst: is_empty
      Src: /src/opendal/core/services/s3/src/lister.rs:141,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/s3/src/lister.rs:142,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/s3/src/lister.rs:145,1
    - Dst: EntryMode::from_path
      Src: /src/opendal/core/services/s3/src/lister.rs:145,1
    - Dst: Result::set_is_current
      Src: /src/opendal/core/services/s3/src/lister.rs:146,1
    - Dst: Result::set_etag
      Src: /src/opendal/core/services/s3/src/lister.rs:148,1
    - Dst: Result::set_content_length
      Src: /src/opendal/core/services/s3/src/lister.rs:150,1
    - Dst: Result::set_last_modified
      Src: /src/opendal/core/services/s3/src/lister.rs:154,1
    - Dst: last_modified.parse::<Timestamp>
      Src: /src/opendal/core/services/s3/src/lister.rs:154,1
    - Dst: oio::Entry::with
      Src: /src/opendal/core/services/s3/src/lister.rs:156,1
    - Dst: push_back
      Src: /src/opendal/core/services/s3/src/lister.rs:157,1
    - Dst: Ok
      Src: /src/opendal/core/services/s3/src/lister.rs:160,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 142
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - '&mut oio::PageContext'
    constantsTouched: []
    func_position:
      end: 161
      start: 75
    functionDepth: 39
    functionLinenumber: 75
    functionLinenumberEnd: 161
    functionName: S3ListerV1::next_page
    functionSourceFile: /src/opendal/core/services/s3/src/lister.rs
    functionUses: 0
    functionsReached:
    - status
    - clone
    - build_rel_path
    - Result::reader
    - map_err
    - Ok
    - oio::Entry::with
    - '&str::to_string'
    - last_modified.parse::<Timestamp>
    - Result::set_etag
    - Metadata::new
    - Result::set_is_current
    - limit
    - into_body
    - last
    - is_empty
    - de::from_reader
    - oio::Entry::new
    - push_back
    - s3_list_objects_v1
    - EntryMode::from_path
    - Result::set_last_modified
    - Err
    - Result::set_content_length
    - core::parse_error
    linkageType: ''
    returnType: Result
    signature: 'async fn next_page(&self, ctx: &mut oio::PageContext) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: OpStat::recursive
      Src: /src/opendal/core/services/s3/src/lister.rs:178,1
    - Dst: OpStat::start_after
      Src: /src/opendal/core/services/s3/src/lister.rs:179,1
    - Dst: Result::map
      Src: /src/opendal/core/services/s3/src/lister.rs:179,1
    - Dst: build_abs_path
      Src: /src/opendal/core/services/s3/src/lister.rs:181,1
    - Dst: to_string
      Src: /src/opendal/core/services/s3/src/lister.rs:187,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 14
    argCount: 4
    argNames:
    - core
    - ctx
    - path
    - args
    argTypes:
    - Arc<S3Core>
    - OperationContext
    - '&str'
    - OpList
    constantsTouched: []
    func_position:
      end: 192
      start: 177
    functionDepth: 36
    functionLinenumber: 177
    functionLinenumberEnd: 192
    functionName: S3ListerV2::new
    functionSourceFile: /src/opendal/core/services/s3/src/lister.rs
    functionUses: 1
    functionsReached:
    - to_string
    - OpStat::start_after
    - build_abs_path
    - Result::map
    - OpStat::recursive
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(core: Arc<S3Core>, ctx: OperationContext, path: &str, args:
      OpList) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: s3_list_objects_v2
      Src: /src/opendal/core/services/s3/src/lister.rs:197,1
    - Dst: limit
      Src: /src/opendal/core/services/s3/src/lister.rs:204,1
    - Dst: is_empty
      Src: /src/opendal/core/services/s3/src/lister.rs:206,1
    - Dst: clone
      Src: /src/opendal/core/services/s3/src/lister.rs:207,1
    - Dst: status
      Src: /src/opendal/core/services/s3/src/lister.rs:214,1
    - Dst: Err
      Src: /src/opendal/core/services/s3/src/lister.rs:215,1
    - Dst: core::parse_error
      Src: /src/opendal/core/services/s3/src/lister.rs:215,1
    - Dst: into_body
      Src: /src/opendal/core/services/s3/src/lister.rs:217,1
    - Dst: de::from_reader
      Src: /src/opendal/core/services/s3/src/lister.rs:219,1
    - Dst: Result::reader
      Src: /src/opendal/core/services/s3/src/lister.rs:219,1
    - Dst: map_err
      Src: /src/opendal/core/services/s3/src/lister.rs:219,1
    - Dst: map_err
      Src: /src/opendal/core/services/s3/src/lister.rs:219,1
    - Dst: as_ref
      Src: /src/opendal/core/services/s3/src/lister.rs:235,1
    - Dst: is_empty
      Src: /src/opendal/core/services/s3/src/lister.rs:236,1
    - Dst: is_empty
      Src: /src/opendal/core/services/s3/src/lister.rs:238,1
    - Dst: is_empty
      Src: /src/opendal/core/services/s3/src/lister.rs:238,1
    - Dst: clone
      Src: /src/opendal/core/services/s3/src/lister.rs:240,1
    - Dst: unwrap_or_default
      Src: /src/opendal/core/services/s3/src/lister.rs:240,1
    - Dst: oio::Entry::new
      Src: /src/opendal/core/services/s3/src/lister.rs:243,1
    - Dst: build_rel_path
      Src: /src/opendal/core/services/s3/src/lister.rs:244,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/s3/src/lister.rs:245,1
    - Dst: push_back
      Src: /src/opendal/core/services/s3/src/lister.rs:248,1
    - Dst: build_rel_path
      Src: /src/opendal/core/services/s3/src/lister.rs:252,1
    - Dst: is_empty
      Src: /src/opendal/core/services/s3/src/lister.rs:253,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/s3/src/lister.rs:254,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/s3/src/lister.rs:257,1
    - Dst: EntryMode::from_path
      Src: /src/opendal/core/services/s3/src/lister.rs:257,1
    - Dst: Result::set_is_current
      Src: /src/opendal/core/services/s3/src/lister.rs:258,1
    - Dst: Result::set_etag
      Src: /src/opendal/core/services/s3/src/lister.rs:260,1
    - Dst: Result::set_content_length
      Src: /src/opendal/core/services/s3/src/lister.rs:262,1
    - Dst: Result::set_last_modified
      Src: /src/opendal/core/services/s3/src/lister.rs:266,1
    - Dst: last_modified.parse::<Timestamp>
      Src: /src/opendal/core/services/s3/src/lister.rs:266,1
    - Dst: oio::Entry::with
      Src: /src/opendal/core/services/s3/src/lister.rs:268,1
    - Dst: push_back
      Src: /src/opendal/core/services/s3/src/lister.rs:269,1
    - Dst: Ok
      Src: /src/opendal/core/services/s3/src/lister.rs:272,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 132
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - '&mut oio::PageContext'
    constantsTouched: []
    func_position:
      end: 273
      start: 196
    functionDepth: 39
    functionLinenumber: 196
    functionLinenumberEnd: 273
    functionName: S3ListerV2::next_page
    functionSourceFile: /src/opendal/core/services/s3/src/lister.rs
    functionUses: 0
    functionsReached:
    - status
    - clone
    - build_rel_path
    - Result::reader
    - map_err
    - Ok
    - oio::Entry::with
    - '&str::to_string'
    - last_modified.parse::<Timestamp>
    - Result::set_etag
    - unwrap_or_default
    - Metadata::new
    - Result::set_is_current
    - limit
    - into_body
    - is_empty
    - de::from_reader
    - s3_list_objects_v2
    - oio::Entry::new
    - push_back
    - EntryMode::from_path
    - Result::set_last_modified
    - Err
    - Result::set_content_length
    - as_ref
    - core::parse_error
    linkageType: ''
    returnType: Result
    signature: 'async fn next_page(&self, ctx: &mut oio::PageContext) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: OpStat::recursive
      Src: /src/opendal/core/services/s3/src/lister.rs:290,1
    - Dst: OpStat::start_after
      Src: /src/opendal/core/services/s3/src/lister.rs:291,1
    - Dst: Result::map
      Src: /src/opendal/core/services/s3/src/lister.rs:291,1
    - Dst: build_abs_path
      Src: /src/opendal/core/services/s3/src/lister.rs:293,1
    - Dst: to_string
      Src: /src/opendal/core/services/s3/src/lister.rs:298,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 14
    argCount: 4
    argNames:
    - core
    - ctx
    - path
    - args
    argTypes:
    - Arc<S3Core>
    - OperationContext
    - '&str'
    - OpList
    constantsTouched: []
    func_position:
      end: 303
      start: 289
    functionDepth: 36
    functionLinenumber: 289
    functionLinenumberEnd: 303
    functionName: S3ObjectVersionsLister::new
    functionSourceFile: /src/opendal/core/services/s3/src/lister.rs
    functionUses: 1
    functionsReached:
    - to_string
    - OpStat::start_after
    - build_abs_path
    - Result::map
    - OpStat::recursive
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(core: Arc<S3Core>, ctx: OperationContext, path: &str, args:
      OpList) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: rsplit_once
      Src: /src/opendal/core/services/s3/src/lister.rs:308,1
    - Dst: Result::as_str
      Src: /src/opendal/core/services/s3/src/lister.rs:312,1
    - Dst: s3_list_object_versions
      Src: /src/opendal/core/services/s3/src/lister.rs:317,1
    - Dst: limit
      Src: /src/opendal/core/services/s3/src/lister.rs:323,1
    - Dst: status
      Src: /src/opendal/core/services/s3/src/lister.rs:328,1
    - Dst: Err
      Src: /src/opendal/core/services/s3/src/lister.rs:329,1
    - Dst: core::parse_error
      Src: /src/opendal/core/services/s3/src/lister.rs:329,1
    - Dst: into_body
      Src: /src/opendal/core/services/s3/src/lister.rs:332,1
    - Dst: de::from_reader
      Src: /src/opendal/core/services/s3/src/lister.rs:333,1
    - Dst: reader
      Src: /src/opendal/core/services/s3/src/lister.rs:333,1
    - Dst: map_err
      Src: /src/opendal/core/services/s3/src/lister.rs:333,1
    - Dst: map_err
      Src: /src/opendal/core/services/s3/src/lister.rs:333,1
    - Dst: oio::Entry::new
      Src: /src/opendal/core/services/s3/src/lister.rs:354,1
    - Dst: build_rel_path
      Src: /src/opendal/core/services/s3/src/lister.rs:355,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/s3/src/lister.rs:356,1
    - Dst: push_back
      Src: /src/opendal/core/services/s3/src/lister.rs:358,1
    - Dst: versions
      Src: /src/opendal/core/services/s3/src/lister.rs:366,1
    - Dst: build_rel_path
      Src: /src/opendal/core/services/s3/src/lister.rs:370,1
    - Dst: is_empty
      Src: /src/opendal/core/services/s3/src/lister.rs:371,1
    - Dst: '&str::to_owned'
      Src: /src/opendal/core/services/s3/src/lister.rs:372,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/s3/src/lister.rs:375,1
    - Dst: EntryMode::from_path
      Src: /src/opendal/core/services/s3/src/lister.rs:375,1
    - Dst: Result::set_version
      Src: /src/opendal/core/services/s3/src/lister.rs:376,1
    - Dst: Result::set_is_current
      Src: /src/opendal/core/services/s3/src/lister.rs:377,1
    - Dst: Result::set_content_length
      Src: /src/opendal/core/services/s3/src/lister.rs:378,1
    - Dst: Result::set_last_modified
      Src: /src/opendal/core/services/s3/src/lister.rs:379,1
    - Dst: last_modified.parse::<Timestamp>
      Src: /src/opendal/core/services/s3/src/lister.rs:379,1
    - Dst: Result::set_etag
      Src: /src/opendal/core/services/s3/src/lister.rs:382,1
    - Dst: oio::Entry::new
      Src: /src/opendal/core/services/s3/src/lister.rs:385,1
    - Dst: push_back
      Src: /src/opendal/core/services/s3/src/lister.rs:386,1
    - Dst: deleted
      Src: /src/opendal/core/services/s3/src/lister.rs:389,1
    - Dst: build_rel_path
      Src: /src/opendal/core/services/s3/src/lister.rs:391,1
    - Dst: is_empty
      Src: /src/opendal/core/services/s3/src/lister.rs:392,1
    - Dst: '&str::to_owned'
      Src: /src/opendal/core/services/s3/src/lister.rs:393,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/s3/src/lister.rs:396,1
    - Dst: EntryMode::from_path
      Src: /src/opendal/core/services/s3/src/lister.rs:396,1
    - Dst: Result::set_version
      Src: /src/opendal/core/services/s3/src/lister.rs:397,1
    - Dst: Result::set_is_deleted
      Src: /src/opendal/core/services/s3/src/lister.rs:398,1
    - Dst: Result::set_is_current
      Src: /src/opendal/core/services/s3/src/lister.rs:399,1
    - Dst: Result::set_last_modified
      Src: /src/opendal/core/services/s3/src/lister.rs:400,1
    - Dst: last_modified.parse::<Timestamp>
      Src: /src/opendal/core/services/s3/src/lister.rs:400,1
    - Dst: oio::Entry::new
      Src: /src/opendal/core/services/s3/src/lister.rs:402,1
    - Dst: push_back
      Src: /src/opendal/core/services/s3/src/lister.rs:403,1
    - Dst: Ok
      Src: /src/opendal/core/services/s3/src/lister.rs:407,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 184
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - '&mut PageContext'
    constantsTouched: []
    func_position:
      end: 408
      start: 307
    functionDepth: 39
    functionLinenumber: 307
    functionLinenumberEnd: 408
    functionName: S3ObjectVersionsLister::next_page
    functionSourceFile: /src/opendal/core/services/s3/src/lister.rs
    functionUses: 0
    functionsReached:
    - status
    - s3_list_object_versions
    - build_rel_path
    - '&str::to_owned'
    - map_err
    - reader
    - Ok
    - last_modified.parse::<Timestamp>
    - Result::as_str
    - Result::set_etag
    - Metadata::new
    - Result::set_is_current
    - deleted
    - limit
    - into_body
    - de::from_reader
    - is_empty
    - rsplit_once
    - Result::set_is_deleted
    - oio::Entry::new
    - versions
    - push_back
    - Result::set_version
    - EntryMode::from_path
    - Result::set_last_modified
    - Err
    - Result::set_content_length
    - core::parse_error
    linkageType: ''
    returnType: Result
    signature: 'async fn next_page(&self, ctx: &mut PageContext) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: to_string
      Src: /src/opendal/core/services/s3/src/reader.rs:40,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 4
    argNames:
    - backend
    - ctx
    - path
    - args
    argTypes:
    - S3Backend
    - OperationContext
    - '&str'
    - OpRead
    constantsTouched: []
    func_position:
      end: 43
      start: 36
    functionDepth: 2
    functionLinenumber: 36
    functionLinenumberEnd: 43
    functionName: S3Reader::new
    functionSourceFile: /src/opendal/core/services/s3/src/reader.rs
    functionUses: 1
    functionsReached:
    - to_string
    linkageType: ''
    returnType: Self
    signature: 'pub(super) fn new(backend: S3Backend, ctx: OperationContext, path:
      &str, args: OpRead) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: as_str
      Src: /src/opendal/core/services/s3/src/reader.rs:49,1
    - Dst: clone
      Src: /src/opendal/core/services/s3/src/reader.rs:50,1
    - Dst: s3_get_object
      Src: /src/opendal/core/services/s3/src/reader.rs:51,1
    - Dst: status
      Src: /src/opendal/core/services/s3/src/reader.rs:56,1
    - Dst: RpRead::new
      Src: /src/opendal/core/services/s3/src/reader.rs:59,1
    - Dst: parse_into_metadata
      Src: /src/opendal/core/services/s3/src/reader.rs:59,1
    - Dst: headers
      Src: /src/opendal/core/services/s3/src/reader.rs:59,1
    - Dst: into_body
      Src: /src/opendal/core/services/s3/src/reader.rs:60,1
    - Dst: into_parts
      Src: /src/opendal/core/services/s3/src/reader.rs:63,1
    - Dst: to_buffer
      Src: /src/opendal/core/services/s3/src/reader.rs:64,1
    - Dst: Err
      Src: /src/opendal/core/services/s3/src/reader.rs:65,1
    - Dst: core::parse_error
      Src: /src/opendal/core/services/s3/src/reader.rs:65,1
    - Dst: Response::from_parts
      Src: /src/opendal/core/services/s3/src/reader.rs:65,1
    - Dst: Ok
      Src: /src/opendal/core/services/s3/src/reader.rs:69,1
    - Dst: Box::new
      Src: /src/opendal/core/services/s3/src/reader.rs:69,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 42
    argCount: 1
    argNames:
    - range
    argTypes:
    - BytesRange
    constantsTouched: []
    func_position:
      end: 70
      start: 47
    functionDepth: 37
    functionLinenumber: 47
    functionLinenumberEnd: 70
    functionName: S3Reader::open
    functionSourceFile: /src/opendal/core/services/s3/src/reader.rs
    functionUses: 0
    functionsReached:
    - parse_into_metadata
    - to_buffer
    - status
    - Ok
    - Box::new
    - into_body
    - clone
    - RpRead::new
    - Err
    - as_str
    - Response::from_parts
    - headers
    - into_parts
    - core::parse_error
    - s3_get_object
    linkageType: ''
    returnType: Result
    signature: 'async fn open(&self, range: BytesRange) -> Result<(RpRead, Box<dyn
      oio::ReadStreamDyn>)>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: ok_or_else
      Src: /src/opendal/core/services/s3/src/copier.rs:41,1
    - Dst: Error::new
      Src: /src/opendal/core/services/s3/src/copier.rs:42,1
    - Dst: object_store::Result::chunk
      Src: /src/opendal/core/services/s3/src/copier.rs:48,1
    - Dst: ok_or_else
      Src: /src/opendal/core/services/s3/src/copier.rs:50,1
    - Dst: Error::new
      Src: /src/opendal/core/services/s3/src/copier.rs:51,1
    - Dst: Result::clamp
      Src: /src/opendal/core/services/s3/src/copier.rs:56,1
    - Dst: u64::saturating_sub
      Src: /src/opendal/core/services/s3/src/copier.rs:57,1
    - Dst: Ok
      Src: /src/opendal/core/services/s3/src/copier.rs:65,1
    - Dst: oio::MultipartCopier::new
      Src: /src/opendal/core/services/s3/src/copier.rs:65,1
    - Dst: Result::executor
      Src: /src/opendal/core/services/s3/src/copier.rs:66,1
    - Dst: Self::clone
      Src: /src/opendal/core/services/s3/src/copier.rs:66,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/s3/src/copier.rs:69,1
    - Dst: Result::to_string
      Src: /src/opendal/core/services/s3/src/copier.rs:70,1
    - Dst: Result::to_string
      Src: /src/opendal/core/services/s3/src/copier.rs:71,1
    - Dst: object_store::Result::source_content_length_hint
      Src: /src/opendal/core/services/s3/src/copier.rs:74,1
    - Dst: object_store::Result::concurrent
      Src: /src/opendal/core/services/s3/src/copier.rs:77,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 42
    argCount: 6
    argNames:
    - core
    - ctx
    - from
    - to
    - args
    - opts
    argTypes:
    - Arc<S3Core>
    - '&OperationContext'
    - '&str'
    - '&str'
    - OpCopy
    - OpCopier
    constantsTouched: []
    func_position:
      end: 79
      start: 32
    functionDepth: 36
    functionLinenumber: 32
    functionLinenumberEnd: 79
    functionName: new_s3_copier
    functionSourceFile: /src/opendal/core/services/s3/src/copier.rs
    functionUses: 1
    functionsReached:
    - Result::clone
    - Result::to_string
    - Ok
    - u64::saturating_sub
    - object_store::Result::chunk
    - object_store::Result::concurrent
    - Result::executor
    - Error::new
    - object_store::Result::source_content_length_hint
    - Self::clone
    - oio::MultipartCopier::new
    - Result::clamp
    - ok_or_else
    linkageType: ''
    returnType: Result
    signature: 'pub fn new_s3_copier(core: Arc<S3Core>,ctx: &OperationContext,from:
      &str,to: &str,args: OpCopy,opts: OpCopier,) -> Result<S3Copiers>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: OpStat::default
      Src: /src/opendal/core/services/s3/src/copier.rs:91,1
    - Dst: source_version
      Src: /src/opendal/core/services/s3/src/copier.rs:92,1
    - Dst: OpStat::with_version
      Src: /src/opendal/core/services/s3/src/copier.rs:93,1
    - Dst: s3_head_object
      Src: /src/opendal/core/services/s3/src/copier.rs:96,1
    - Dst: status
      Src: /src/opendal/core/services/s3/src/copier.rs:101,1
    - Dst: headers
      Src: /src/opendal/core/services/s3/src/copier.rs:103,1
    - Dst: parse_into_metadata
      Src: /src/opendal/core/services/s3/src/copier.rs:104,1
    - Dst: Err
      Src: /src/opendal/core/services/s3/src/copier.rs:106,1
    - Dst: core::parse_error
      Src: /src/opendal/core/services/s3/src/copier.rs:106,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 30
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 108
      start: 90
    functionDepth: 30
    functionLinenumber: 90
    functionLinenumberEnd: 108
    functionName: S3Copier::source_metadata
    functionSourceFile: /src/opendal/core/services/s3/src/copier.rs
    functionUses: 0
    functionsReached:
    - OpStat::with_version
    - source_version
    - parse_into_metadata
    - status
    - s3_head_object
    - Err
    - headers
    - core::parse_error
    - OpStat::default
    linkageType: ''
    returnType: Result
    signature: async fn source_metadata(&self) -> Result<Metadata>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: s3_copy_object
      Src: /src/opendal/core/services/s3/src/copier.rs:111,1
    - Dst: status
      Src: /src/opendal/core/services/s3/src/copier.rs:116,1
    - Dst: into_parts
      Src: /src/opendal/core/services/s3/src/copier.rs:118,1
    - Dst: to_bytes
      Src: /src/opendal/core/services/s3/src/copier.rs:119,1
    - Dst: parse_header_to_str
      Src: /src/opendal/core/services/s3/src/copier.rs:120,1
    - Dst: map
      Src: /src/opendal/core/services/s3/src/copier.rs:120,1
    - Dst: quick_xml::de::from_reader
      Src: /src/opendal/core/services/s3/src/copier.rs:124,1
    - Dst: Result::as_ref
      Src: /src/opendal/core/services/s3/src/copier.rs:124,1
    - Dst: map_err
      Src: /src/opendal/core/services/s3/src/copier.rs:124,1
    - Dst: is_empty
      Src: /src/opendal/core/services/s3/src/copier.rs:127,1
    - Dst: Err
      Src: /src/opendal/core/services/s3/src/copier.rs:128,1
    - Dst: core::from_s3_error
      Src: /src/opendal/core/services/s3/src/copier.rs:128,1
    - Dst: String::new
      Src: /src/opendal/core/services/s3/src/copier.rs:132,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/s3/src/copier.rs:139,1
    - Dst: EntryMode::from_path
      Src: /src/opendal/core/services/s3/src/copier.rs:139,1
    - Dst: Result::set_etag
      Src: /src/opendal/core/services/s3/src/copier.rs:140,1
    - Dst: is_empty
      Src: /src/opendal/core/services/s3/src/copier.rs:141,1
    - Dst: Result::set_last_modified
      Src: /src/opendal/core/services/s3/src/copier.rs:142,1
    - Dst: parse
      Src: /src/opendal/core/services/s3/src/copier.rs:142,1
    - Dst: Result::set_version
      Src: /src/opendal/core/services/s3/src/copier.rs:145,1
    - Dst: Ok
      Src: /src/opendal/core/services/s3/src/copier.rs:148,1
    - Dst: Err
      Src: /src/opendal/core/services/s3/src/copier.rs:150,1
    - Dst: core::parse_error
      Src: /src/opendal/core/services/s3/src/copier.rs:150,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 78
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 152
      start: 110
    functionDepth: 31
    functionLinenumber: 110
    functionLinenumberEnd: 152
    functionName: S3Copier::copy_once
    functionSourceFile: /src/opendal/core/services/s3/src/copier.rs
    functionUses: 0
    functionsReached:
    - status
    - map
    - quick_xml::de::from_reader
    - core::from_s3_error
    - map_err
    - Ok
    - parse_header_to_str
    - Result::set_etag
    - Metadata::new
    - is_empty
    - parse
    - to_bytes
    - s3_copy_object
    - String::new
    - Result::set_version
    - EntryMode::from_path
    - Result::set_last_modified
    - Err
    - into_parts
    - core::parse_error
    - Result::as_ref
    linkageType: ''
    returnType: Result
    signature: async fn copy_once(&self) -> Result<Metadata>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: s3_initiate_multipart_copy
      Src: /src/opendal/core/services/s3/src/copier.rs:155,1
    - Dst: status
      Src: /src/opendal/core/services/s3/src/copier.rs:160,1
    - Dst: into_body
      Src: /src/opendal/core/services/s3/src/copier.rs:162,1
    - Dst: quick_xml::de::from_reader
      Src: /src/opendal/core/services/s3/src/copier.rs:165,1
    - Dst: Result::reader
      Src: /src/opendal/core/services/s3/src/copier.rs:165,1
    - Dst: map_err
      Src: /src/opendal/core/services/s3/src/copier.rs:165,1
    - Dst: Ok
      Src: /src/opendal/core/services/s3/src/copier.rs:167,1
    - Dst: Err
      Src: /src/opendal/core/services/s3/src/copier.rs:169,1
    - Dst: core::parse_error
      Src: /src/opendal/core/services/s3/src/copier.rs:169,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 25
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 171
      start: 154
    functionDepth: 39
    functionLinenumber: 154
    functionLinenumberEnd: 171
    functionName: S3Copier::initiate_copy
    functionSourceFile: /src/opendal/core/services/s3/src/copier.rs
    functionUses: 0
    functionsReached:
    - map_err
    - status
    - Ok
    - into_body
    - s3_initiate_multipart_copy
    - Err
    - quick_xml::de::from_reader
    - core::parse_error
    - Result::reader
    linkageType: ''
    returnType: Result
    signature: async fn initiate_copy(&self) -> Result<String>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: (Vec::size
      Src: /src/opendal/core/services/s3/src/copier.rs:179,1
    - Dst: Option::expect
      Src: /src/opendal/core/services/s3/src/copier.rs:179,1
    - Dst: s3_upload_part_copy_request
      Src: /src/opendal/core/services/s3/src/copier.rs:182,1
    - Dst: source_version
      Src: /src/opendal/core/services/s3/src/copier.rs:187,1
    - Dst: send
      Src: /src/opendal/core/services/s3/src/copier.rs:193,1
    - Dst: status
      Src: /src/opendal/core/services/s3/src/copier.rs:195,1
    - Dst: into_parts
      Src: /src/opendal/core/services/s3/src/copier.rs:197,1
    - Dst: to_bytes
      Src: /src/opendal/core/services/s3/src/copier.rs:198,1
    - Dst: quick_xml::de::from_reader
      Src: /src/opendal/core/services/s3/src/copier.rs:200,1
    - Dst: Result::as_ref
      Src: /src/opendal/core/services/s3/src/copier.rs:200,1
    - Dst: map_err
      Src: /src/opendal/core/services/s3/src/copier.rs:200,1
    - Dst: is_empty
      Src: /src/opendal/core/services/s3/src/copier.rs:203,1
    - Dst: Err
      Src: /src/opendal/core/services/s3/src/copier.rs:204,1
    - Dst: core::from_s3_error
      Src: /src/opendal/core/services/s3/src/copier.rs:204,1
    - Dst: String::new
      Src: /src/opendal/core/services/s3/src/copier.rs:208,1
    - Dst: Ok
      Src: /src/opendal/core/services/s3/src/copier.rs:215,1
    - Dst: Some
      Src: /src/opendal/core/services/s3/src/copier.rs:219,1
    - Dst: Err
      Src: /src/opendal/core/services/s3/src/copier.rs:222,1
    - Dst: core::parse_error
      Src: /src/opendal/core/services/s3/src/copier.rs:222,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 58
    argCount: 3
    argNames:
    - upload_id
    - part_number
    - range
    argTypes:
    - '&str'
    - usize
    - BytesRange
    constantsTouched: []
    func_position:
      end: 224
      start: 173
    functionDepth: 30
    functionLinenumber: 173
    functionLinenumberEnd: 224
    functionName: S3Copier::copy_part
    functionSourceFile: /src/opendal/core/services/s3/src/copier.rs
    functionUses: 0
    functionsReached:
    - map_err
    - source_version
    - Option::expect
    - status
    - String::new
    - (Vec::size
    - Ok
    - to_bytes
    - s3_upload_part_copy_request
    - is_empty
    - Err
    - Some
    - quick_xml::de::from_reader
    - into_parts
    - core::parse_error
    - send
    - core::from_s3_error
    - Result::as_ref
    linkageType: ''
    returnType: Result
    signature: 'async fn copy_part(&self,upload_id: &str,part_number: usize,range:
      BytesRange,) -> Result<oio::MultipartPart>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: (String, Metadata)::iter
      Src: /src/opendal/core/services/s3/src/copier.rs:231,1
    - Dst: map
      Src: /src/opendal/core/services/s3/src/copier.rs:231,1
    - Dst: clone
      Src: /src/opendal/core/services/s3/src/copier.rs:235,1
    - Dst: Default::default
      Src: /src/opendal/core/services/s3/src/copier.rs:236,1
    - Dst: Result::collect
      Src: /src/opendal/core/services/s3/src/copier.rs:231,1
    - Dst: s3_complete_multipart_copy
      Src: /src/opendal/core/services/s3/src/copier.rs:240,1
    - Dst: status
      Src: /src/opendal/core/services/s3/src/copier.rs:245,1
    - Dst: into_parts
      Src: /src/opendal/core/services/s3/src/copier.rs:249,1
    - Dst: parse_header_to_str
      Src: /src/opendal/core/services/s3/src/copier.rs:250,1
    - Dst: map
      Src: /src/opendal/core/services/s3/src/copier.rs:250,1
    - Dst: quick_xml::de::from_reader
      Src: /src/opendal/core/services/s3/src/copier.rs:254,1
    - Dst: reader
      Src: /src/opendal/core/services/s3/src/copier.rs:254,1
    - Dst: map_err
      Src: /src/opendal/core/services/s3/src/copier.rs:254,1
    - Dst: is_empty
      Src: /src/opendal/core/services/s3/src/copier.rs:256,1
    - Dst: Err
      Src: /src/opendal/core/services/s3/src/copier.rs:257,1
    - Dst: core::from_s3_error
      Src: /src/opendal/core/services/s3/src/copier.rs:257,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/s3/src/copier.rs:261,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/s3/src/copier.rs:268,1
    - Dst: EntryMode::from_path
      Src: /src/opendal/core/services/s3/src/copier.rs:268,1
    - Dst: Result::set_etag
      Src: /src/opendal/core/services/s3/src/copier.rs:269,1
    - Dst: Result::set_version
      Src: /src/opendal/core/services/s3/src/copier.rs:271,1
    - Dst: Ok
      Src: /src/opendal/core/services/s3/src/copier.rs:274,1
    - Dst: Err
      Src: /src/opendal/core/services/s3/src/copier.rs:276,1
    - Dst: core::parse_error
      Src: /src/opendal/core/services/s3/src/copier.rs:276,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 75
    argCount: 2
    argNames:
    - upload_id
    - parts
    argTypes:
    - '&str'
    - '&[oio::MultipartPart]'
    constantsTouched: []
    func_position:
      end: 278
      start: 226
    functionDepth: 36
    functionLinenumber: 226
    functionLinenumberEnd: 278
    functionName: S3Copier::complete_copy
    functionSourceFile: /src/opendal/core/services/s3/src/copier.rs
    functionUses: 0
    functionsReached:
    - status
    - Default::default
    - clone
    - map
    - quick_xml::de::from_reader
    - (String, Metadata)::iter
    - core::from_s3_error
    - map_err
    - reader
    - Ok
    - parse_header_to_str
    - '&str::to_string'
    - Result::set_etag
    - Metadata::new
    - is_empty
    - Result::set_version
    - EntryMode::from_path
    - Err
    - Result::collect
    - into_parts
    - core::parse_error
    - s3_complete_multipart_copy
    linkageType: ''
    returnType: Result
    signature: 'async fn complete_copy(&self,upload_id: &str,parts: &[oio::MultipartPart],)
      -> Result<Metadata>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: s3_abort_multipart_copy
      Src: /src/opendal/core/services/s3/src/copier.rs:281,1
    - Dst: status
      Src: /src/opendal/core/services/s3/src/copier.rs:285,1
    - Dst: Ok
      Src: /src/opendal/core/services/s3/src/copier.rs:286,1
    - Dst: Err
      Src: /src/opendal/core/services/s3/src/copier.rs:287,1
    - Dst: core::parse_error
      Src: /src/opendal/core/services/s3/src/copier.rs:287,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 1
    argNames:
    - upload_id
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 289
      start: 280
    functionDepth: 33
    functionLinenumber: 280
    functionLinenumberEnd: 289
    functionName: S3Copier::abort_copy
    functionSourceFile: /src/opendal/core/services/s3/src/copier.rs
    functionUses: 0
    functionsReached:
    - status
    - Ok
    - Err
    - core::parse_error
    - s3_abort_multipart_copy
    linkageType: ''
    returnType: Result
    signature: 'async fn abort_copy(&self, upload_id: &str) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: CrcDigest::new
      Src: /src/opendal/core/services/s3/src/core.rs:121,1
    - Dst: Buffer::for_each
      Src: /src/opendal/core/services/s3/src/core.rs:122,1
    - Dst: String::update
      Src: /src/opendal/core/services/s3/src/core.rs:122,1
    - Dst: String::finalize
      Src: /src/opendal/core/services/s3/src/core.rs:124,1
    - Dst: encode
      Src: /src/opendal/core/services/s3/src/core.rs:125,1
    - Dst: u32::to_be_bytes
      Src: /src/opendal/core/services/s3/src/core.rs:125,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 15
    argCount: 1
    argNames:
    - body
    argTypes:
    - Buffer
    constantsTouched: []
    func_position:
      end: 126
      start: 120
    functionDepth: 37
    functionLinenumber: 120
    functionLinenumberEnd: 126
    functionName: format_crc32c_iter
    functionSourceFile: /src/opendal/core/services/s3/src/core.rs
    functionUses: 1
    functionsReached:
    - CrcDigest::new
    - String::update
    - encode
    - u32::to_be_bytes
    - String::finalize
    - Buffer::for_each
    linkageType: ''
    returnType: String
    signature: 'fn format_crc32c_iter(body: Buffer) -> String'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::debug_struct
      Src: /src/opendal/core/services/s3/src/core.rs:130,1
    - Dst: field
      Src: /src/opendal/core/services/s3/src/core.rs:130,1
    - Dst: field
      Src: /src/opendal/core/services/s3/src/core.rs:130,1
    - Dst: field
      Src: /src/opendal/core/services/s3/src/core.rs:130,1
    - Dst: finish_non_exhaustive
      Src: /src/opendal/core/services/s3/src/core.rs:130,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 16
    argCount: 1
    argNames:
    - f
    argTypes:
    - '&mut std::fmt::Formatter<''_>'
    constantsTouched: []
    func_position:
      end: 135
      start: 129
    functionDepth: 5
    functionLinenumber: 129
    functionLinenumberEnd: 135
    functionName: S3Core::fmt
    functionSourceFile: /src/opendal/core/services/s3/src/core.rs
    functionUses: 0
    functionsReached:
    - field
    - Result::debug_struct
    - finish_non_exhaustive
    linkageType: ''
    returnType: std::fmt::Result
    signature: 'fn fmt(&self, f: &mut std::fmt::Formatter<''_>) -> std::fmt::Result'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: clone
      Src: /src/opendal/core/services/s3/src/core.rs:140,1
    - Dst: with_context
      Src: /src/opendal/core/services/s3/src/core.rs:140,1
    - Dst: Context::new
      Src: /src/opendal/core/services/s3/src/core.rs:141,1
    - Dst: Self::with_file_read
      Src: /src/opendal/core/services/s3/src/core.rs:141,1
    - Dst: with_http_send
      Src: /src/opendal/core/services/s3/src/core.rs:141,1
    - Dst: Result::http_transport
      Src: /src/opendal/core/services/s3/src/core.rs:143,1
    - Dst: Self::clone
      Src: /src/opendal/core/services/s3/src/core.rs:143,1
    - Dst: with_env
      Src: /src/opendal/core/services/s3/src/core.rs:141,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 16
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - '&OperationContext'
    constantsTouched: []
    func_position:
      end: 146
      start: 139
    functionDepth: 6
    functionLinenumber: 139
    functionLinenumberEnd: 146
    functionName: S3Core::signer
    functionSourceFile: /src/opendal/core/services/s3/src/core.rs
    functionUses: 3
    functionsReached:
    - with_http_send
    - with_env
    - Context::new
    - clone
    - with_context
    - Self::clone
    - Self::with_file_read
    - Result::http_transport
    linkageType: ''
    returnType: Signer
    signature: 'fn signer(&self, ctx: &OperationContext) -> Signer<Credential>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/core/services/s3/src/core.rs:155,1
    - Dst: Request<T>::into_parts
      Src: /src/opendal/core/services/s3/src/core.rs:159,1
    - Dst: S3Core::signer
      Src: /src/opendal/core/services/s3/src/core.rs:161,1
    - Dst: Signer::sign
      Src: /src/opendal/core/services/s3/src/core.rs:161,1
    - Dst: Some
      Src: /src/opendal/core/services/s3/src/core.rs:162,1
    - Dst: map_err
      Src: /src/opendal/core/services/s3/src/core.rs:161,1
    - Dst: new_request_sign_error
      Src: /src/opendal/core/services/s3/src/core.rs:164,1
    - Dst: Result::into
      Src: /src/opendal/core/services/s3/src/core.rs:164,1
    - Dst: remove
      Src: /src/opendal/core/services/s3/src/core.rs:172,1
    - Dst: Ok
      Src: /src/opendal/core/services/s3/src/core.rs:174,1
    - Dst: Request::from_parts
      Src: /src/opendal/core/services/s3/src/core.rs:174,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 29
    argCount: 3
    argNames:
    - ctx
    - req
    - duration
    argTypes:
    - '&OperationContext'
    - Request<T>
    - Duration
    constantsTouched: []
    func_position:
      end: 175
      start: 148
    functionDepth: 35
    functionLinenumber: 148
    functionLinenumberEnd: 175
    functionName: S3Core::sign_query
    functionSourceFile: /src/opendal/core/services/s3/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - Ok
    - S3Core::signer
    - remove
    - Signer::sign
    - Some
    - Request<T>::into_parts
    - Result::into
    - Request::from_parts
    - new_request_sign_error
    linkageType: ''
    returnType: Result
    signature: 'pub async fn sign_query<T>(&self,ctx: &OperationContext,req: Request<T>,duration:
      Duration,) -> Result<Request<T>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::http_transport
      Src: /src/opendal/core/services/s3/src/core.rs:183,1
    - Dst: Self::send
      Src: /src/opendal/core/services/s3/src/core.rs:183,1
    - Dst: Request<Buffer>::into_parts
      Src: /src/opendal/core/services/s3/src/core.rs:186,1
    - Dst: S3Core::signer
      Src: /src/opendal/core/services/s3/src/core.rs:188,1
    - Dst: Signer::sign
      Src: /src/opendal/core/services/s3/src/core.rs:188,1
    - Dst: map_err
      Src: /src/opendal/core/services/s3/src/core.rs:188,1
    - Dst: new_request_sign_error
      Src: /src/opendal/core/services/s3/src/core.rs:191,1
    - Dst: Result::into
      Src: /src/opendal/core/services/s3/src/core.rs:191,1
    - Dst: remove
      Src: /src/opendal/core/services/s3/src/core.rs:199,1
    - Dst: Result::http_transport
      Src: /src/opendal/core/services/s3/src/core.rs:201,1
    - Dst: Self::send
      Src: /src/opendal/core/services/s3/src/core.rs:201,1
    - Dst: Request::from_parts
      Src: /src/opendal/core/services/s3/src/core.rs:202,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 36
    argCount: 2
    argNames:
    - ctx
    - req
    argTypes:
    - '&OperationContext'
    - Request<Buffer>
    constantsTouched: []
    func_position:
      end: 204
      start: 177
    functionDepth: 37
    functionLinenumber: 177
    functionLinenumberEnd: 204
    functionName: S3Core::send
    functionSourceFile: /src/opendal/core/services/s3/src/core.rs
    functionUses: 13
    functionsReached:
    - map_err
    - Self::send
    - S3Core::signer
    - remove
    - Signer::sign
    - Result::into
    - Request<Buffer>::into_parts
    - Result::http_transport
    - Request::from_parts
    - new_request_sign_error
    linkageType: ''
    returnType: Result
    signature: 'pub async fn send(&self,ctx: &OperationContext,req: Request<Buffer>,)
      -> Result<Response<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::http_transport
      Src: /src/opendal/core/services/s3/src/core.rs:212,1
    - Dst: Self::fetch
      Src: /src/opendal/core/services/s3/src/core.rs:212,1
    - Dst: Request<Buffer>::into_parts
      Src: /src/opendal/core/services/s3/src/core.rs:215,1
    - Dst: S3Core::signer
      Src: /src/opendal/core/services/s3/src/core.rs:217,1
    - Dst: Signer::sign
      Src: /src/opendal/core/services/s3/src/core.rs:217,1
    - Dst: map_err
      Src: /src/opendal/core/services/s3/src/core.rs:217,1
    - Dst: new_request_sign_error
      Src: /src/opendal/core/services/s3/src/core.rs:220,1
    - Dst: Result::into
      Src: /src/opendal/core/services/s3/src/core.rs:220,1
    - Dst: remove
      Src: /src/opendal/core/services/s3/src/core.rs:228,1
    - Dst: Result::http_transport
      Src: /src/opendal/core/services/s3/src/core.rs:230,1
    - Dst: Self::fetch
      Src: /src/opendal/core/services/s3/src/core.rs:230,1
    - Dst: Request::from_parts
      Src: /src/opendal/core/services/s3/src/core.rs:231,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 36
    argCount: 2
    argNames:
    - ctx
    - req
    argTypes:
    - '&OperationContext'
    - Request<Buffer>
    constantsTouched: []
    func_position:
      end: 233
      start: 206
    functionDepth: 35
    functionLinenumber: 206
    functionLinenumberEnd: 233
    functionName: S3Core::fetch
    functionSourceFile: /src/opendal/core/services/s3/src/core.rs
    functionUses: 1
    functionsReached:
    - map_err
    - S3Core::signer
    - remove
    - Signer::sign
    - Result::into
    - Request<Buffer>::into_parts
    - Self::fetch
    - Result::http_transport
    - Request::from_parts
    - new_request_sign_error
    linkageType: ''
    returnType: Result
    signature: 'pub async fn fetch(&self,ctx: &OperationContext,req: Request<Buffer>,)
      -> Result<Response<HttpBody>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::clone
      Src: /src/opendal/core/services/s3/src/core.rs:246,1
    - Dst: Result::set_sensitive
      Src: /src/opendal/core/services/s3/src/core.rs:247,1
    - Dst: http::request::Builder::header
      Src: /src/opendal/core/services/s3/src/core.rs:249,1
    - Dst: HeaderName::from_static
      Src: /src/opendal/core/services/s3/src/core.rs:250,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/s3/src/core.rs:255,1
    - Dst: Result::set_sensitive
      Src: /src/opendal/core/services/s3/src/core.rs:256,1
    - Dst: http::request::Builder::header
      Src: /src/opendal/core/services/s3/src/core.rs:258,1
    - Dst: HeaderName::from_static
      Src: /src/opendal/core/services/s3/src/core.rs:259,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/s3/src/core.rs:266,1
    - Dst: Result::set_sensitive
      Src: /src/opendal/core/services/s3/src/core.rs:267,1
    - Dst: http::request::Builder::header
      Src: /src/opendal/core/services/s3/src/core.rs:269,1
    - Dst: HeaderName::from_static
      Src: /src/opendal/core/services/s3/src/core.rs:270,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/s3/src/core.rs:275,1
    - Dst: Result::set_sensitive
      Src: /src/opendal/core/services/s3/src/core.rs:276,1
    - Dst: http::request::Builder::header
      Src: /src/opendal/core/services/s3/src/core.rs:278,1
    - Dst: HeaderName::from_static
      Src: /src/opendal/core/services/s3/src/core.rs:279,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/s3/src/core.rs:284,1
    - Dst: Result::set_sensitive
      Src: /src/opendal/core/services/s3/src/core.rs:285,1
    - Dst: http::request::Builder::header
      Src: /src/opendal/core/services/s3/src/core.rs:287,1
    - Dst: HeaderName::from_static
      Src: /src/opendal/core/services/s3/src/core.rs:288,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 67
    argCount: 2
    argNames:
    - req
    - is_write
    argTypes:
    - http::request::Builder
    - bool
    constantsTouched: []
    func_position:
      end: 294
      start: 239
    functionDepth: 2
    functionLinenumber: 239
    functionLinenumberEnd: 294
    functionName: S3Core::insert_sse_headers
    functionSourceFile: /src/opendal/core/services/s3/src/core.rs
    functionUses: 11
    functionsReached:
    - Result::clone
    - http::request::Builder::header
    - Result::set_sensitive
    - HeaderName::from_static
    linkageType: ''
    returnType: http::request::Builder
    signature: 'pub fn insert_sse_headers(&self,mut req: http::request::Builder,is_write:
      bool,) -> http::request::Builder'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Some
      Src: /src/opendal/core/services/s3/src/core.rs:298,1
    - Dst: format_crc32c_iter
      Src: /src/opendal/core/services/s3/src/core.rs:298,1
    - Dst: '&Buffer::clone'
      Src: /src/opendal/core/services/s3/src/core.rs:298,1
    - Dst: Some
      Src: /src/opendal/core/services/s3/src/core.rs:299,1
    - Dst: format_content_md5_iter
      Src: /src/opendal/core/services/s3/src/core.rs:299,1
    - Dst: '&Buffer::clone'
      Src: /src/opendal/core/services/s3/src/core.rs:299,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 1
    argNames:
    - body
    argTypes:
    - '&Buffer'
    constantsTouched: []
    func_position:
      end: 301
      start: 295
    functionDepth: 38
    functionLinenumber: 295
    functionLinenumberEnd: 301
    functionName: S3Core::calculate_checksum
    functionSourceFile: /src/opendal/core/services/s3/src/core.rs
    functionUses: 2
    functionsReached:
    - format_content_md5_iter
    - format_crc32c_iter
    - '&Buffer::clone'
    - Some
    linkageType: ''
    returnType: Option
    signature: 'pub fn calculate_checksum(&self, body: &Buffer) -> Option<String>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: as_ref
      Src: /src/opendal/core/services/s3/src/core.rs:307,1
    - Dst: http::request::Builder::header
      Src: /src/opendal/core/services/s3/src/core.rs:308,1
    - Dst: Self::to_header_name
      Src: /src/opendal/core/services/s3/src/core.rs:308,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 2
    argNames:
    - req
    - checksum
    argTypes:
    - http::request::Builder
    - '&str'
    constantsTouched: []
    func_position:
      end: 311
      start: 302
    functionDepth: 1
    functionLinenumber: 302
    functionLinenumberEnd: 311
    functionName: S3Core::insert_checksum_header
    functionSourceFile: /src/opendal/core/services/s3/src/core.rs
    functionUses: 3
    functionsReached:
    - http::request::Builder::header
    - as_ref
    - Self::to_header_name
    linkageType: ''
    returnType: http::request::Builder
    signature: 'pub fn insert_checksum_header(&self,mut req: http::request::Builder,checksum:
      &str,) -> http::request::Builder'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: as_ref
      Src: /src/opendal/core/services/s3/src/core.rs:317,1
    - Dst: http::request::Builder::header
      Src: /src/opendal/core/services/s3/src/core.rs:318,1
    - Dst: Self::to_string
      Src: /src/opendal/core/services/s3/src/core.rs:318,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 1
    argNames:
    - req
    argTypes:
    - http::request::Builder
    constantsTouched: []
    func_position:
      end: 321
      start: 313
    functionDepth: 2
    functionLinenumber: 313
    functionLinenumberEnd: 321
    functionName: S3Core::insert_checksum_type_header
    functionSourceFile: /src/opendal/core/services/s3/src/core.rs
    functionUses: 1
    functionsReached:
    - http::request::Builder::header
    - as_ref
    - Self::to_string
    linkageType: ''
    returnType: http::request::Builder
    signature: 'pub fn insert_checksum_type_header(&self,mut req: http::request::Builder,)
      -> http::request::Builder'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: http::request::Builder::header
      Src: /src/opendal/core/services/s3/src/core.rs:330,1
    - Dst: Option::to_string
      Src: /src/opendal/core/services/s3/src/core.rs:330,1
    - Dst: OpStat::content_type
      Src: /src/opendal/core/services/s3/src/core.rs:333,1
    - Dst: http::request::Builder::header
      Src: /src/opendal/core/services/s3/src/core.rs:334,1
    - Dst: OpStat::content_disposition
      Src: /src/opendal/core/services/s3/src/core.rs:337,1
    - Dst: http::request::Builder::header
      Src: /src/opendal/core/services/s3/src/core.rs:338,1
    - Dst: OpStat::content_encoding
      Src: /src/opendal/core/services/s3/src/core.rs:341,1
    - Dst: http::request::Builder::header
      Src: /src/opendal/core/services/s3/src/core.rs:342,1
    - Dst: OpStat::cache_control
      Src: /src/opendal/core/services/s3/src/core.rs:345,1
    - Dst: http::request::Builder::header
      Src: /src/opendal/core/services/s3/src/core.rs:346,1
    - Dst: OpStat::if_match
      Src: /src/opendal/core/services/s3/src/core.rs:349,1
    - Dst: http::request::Builder::header
      Src: /src/opendal/core/services/s3/src/core.rs:350,1
    - Dst: OpStat::if_not_exists
      Src: /src/opendal/core/services/s3/src/core.rs:353,1
    - Dst: http::request::Builder::header
      Src: /src/opendal/core/services/s3/src/core.rs:354,1
    - Dst: http::request::Builder::header
      Src: /src/opendal/core/services/s3/src/core.rs:359,1
    - Dst: HeaderName::from_static
      Src: /src/opendal/core/services/s3/src/core.rs:359,1
    - Dst: OpStat::user_metadata
      Src: /src/opendal/core/services/s3/src/core.rs:363,1
    - Dst: http::request::Builder::header
      Src: /src/opendal/core/services/s3/src/core.rs:365,1
    - Dst: http::request::Builder::header
      Src: /src/opendal/core/services/s3/src/core.rs:371,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 78
    argCount: 3
    argNames:
    - req
    - size
    - args
    argTypes:
    - http::request::Builder
    - Option<u64>
    - '&OpWrite'
    constantsTouched: []
    func_position:
      end: 374
      start: 323
    functionDepth: 32
    functionLinenumber: 323
    functionLinenumberEnd: 374
    functionName: S3Core::insert_metadata_headers
    functionSourceFile: /src/opendal/core/services/s3/src/core.rs
    functionUses: 2
    functionsReached:
    - Option::to_string
    - http::request::Builder::header
    - OpStat::content_encoding
    - OpStat::content_disposition
    - OpStat::cache_control
    - HeaderName::from_static
    - OpStat::user_metadata
    - OpStat::if_match
    - OpStat::if_not_exists
    - OpStat::content_type
    linkageType: ''
    returnType: http::request::Builder
    signature: 'pub fn insert_metadata_headers(&self,mut req: http::request::Builder,size:
      Option<u64>,args: &OpWrite,) -> http::request::Builder'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: http::request::Builder::header
      Src: /src/opendal/core/services/s3/src/core.rs:381,1
    - Dst: HeaderName::from_static
      Src: /src/opendal/core/services/s3/src/core.rs:382,1
    - Dst: HeaderValue::from_static
      Src: /src/opendal/core/services/s3/src/core.rs:383,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 1
    argNames:
    - req
    argTypes:
    - http::request::Builder
    constantsTouched: []
    func_position:
      end: 387
      start: 376
    functionDepth: 0
    functionLinenumber: 376
    functionLinenumberEnd: 387
    functionName: S3Core::insert_request_payer_header
    functionSourceFile: /src/opendal/core/services/s3/src/core.rs
    functionUses: 18
    functionsReached:
    - http::request::Builder::header
    - HeaderValue::from_static
    - HeaderName::from_static
    linkageType: ''
    returnType: http::request::Builder
    signature: 'pub fn insert_request_payer_header(&self,mut req: http::request::Builder,)
      -> http::request::Builder'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/s3/src/core.rs:392,1
    - Dst: Vec::new
      Src: /src/opendal/core/services/s3/src/core.rs:397,1
    - Dst: OpStat::override_content_disposition
      Src: /src/opendal/core/services/s3/src/core.rs:398,1
    - Dst: Self::push
      Src: /src/opendal/core/services/s3/src/core.rs:399,1
    - Dst: OpStat::override_content_type
      Src: /src/opendal/core/services/s3/src/core.rs:405,1
    - Dst: Self::push
      Src: /src/opendal/core/services/s3/src/core.rs:406,1
    - Dst: OpStat::override_cache_control
      Src: /src/opendal/core/services/s3/src/core.rs:412,1
    - Dst: Self::push
      Src: /src/opendal/core/services/s3/src/core.rs:413,1
    - Dst: OpStat::version
      Src: /src/opendal/core/services/s3/src/core.rs:419,1
    - Dst: Self::push
      Src: /src/opendal/core/services/s3/src/core.rs:420,1
    - Dst: Self::is_empty
      Src: /src/opendal/core/services/s3/src/core.rs:426,1
    - Dst: Result::push_str
      Src: /src/opendal/core/services/s3/src/core.rs:427,1
    - Dst: Request::head
      Src: /src/opendal/core/services/s3/src/core.rs:430,1
    - Dst: S3Core::insert_sse_headers
      Src: /src/opendal/core/services/s3/src/core.rs:432,1
    - Dst: OpStat::if_none_match
      Src: /src/opendal/core/services/s3/src/core.rs:434,1
    - Dst: Result::header
      Src: /src/opendal/core/services/s3/src/core.rs:435,1
    - Dst: OpStat::if_match
      Src: /src/opendal/core/services/s3/src/core.rs:437,1
    - Dst: Result::header
      Src: /src/opendal/core/services/s3/src/core.rs:438,1
    - Dst: OpStat::if_modified_since
      Src: /src/opendal/core/services/s3/src/core.rs:441,1
    - Dst: Result::header
      Src: /src/opendal/core/services/s3/src/core.rs:442,1
    - Dst: Result::format_http_date
      Src: /src/opendal/core/services/s3/src/core.rs:442,1
    - Dst: OpStat::if_unmodified_since
      Src: /src/opendal/core/services/s3/src/core.rs:444,1
    - Dst: Result::header
      Src: /src/opendal/core/services/s3/src/core.rs:445,1
    - Dst: Result::format_http_date
      Src: /src/opendal/core/services/s3/src/core.rs:445,1
    - Dst: S3Core::insert_request_payer_header
      Src: /src/opendal/core/services/s3/src/core.rs:449,1
    - Dst: Result::extension
      Src: /src/opendal/core/services/s3/src/core.rs:452,1
    - Dst: extension
      Src: /src/opendal/core/services/s3/src/core.rs:452,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/s3/src/core.rs:454,1
    - Dst: Result::body
      Src: /src/opendal/core/services/s3/src/core.rs:456,1
    - Dst: Buffer::new
      Src: /src/opendal/core/services/s3/src/core.rs:456,1
    - Dst: map_err
      Src: /src/opendal/core/services/s3/src/core.rs:456,1
    - Dst: Ok
      Src: /src/opendal/core/services/s3/src/core.rs:458,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 97
    argCount: 2
    argNames:
    - path
    - args
    argTypes:
    - '&str'
    - OpStat
    constantsTouched: []
    func_position:
      end: 459
      start: 391
    functionDepth: 38
    functionLinenumber: 391
    functionLinenumberEnd: 459
    functionName: S3Core::s3_head_object_request
    functionSourceFile: /src/opendal/core/services/s3/src/core.rs
    functionUses: 1
    functionsReached:
    - Buffer::new
    - Result::push_str
    - OpStat::if_unmodified_since
    - S3Core::insert_request_payer_header
    - OpStat::override_content_disposition
    - Vec::new
    - map_err
    - extension
    - Ok
    - OpStat::if_modified_since
    - Self::is_empty
    - ServiceOperation
    - Result::body
    - Result::format_http_date
    - OpStat::if_match
    - OpStat::override_cache_control
    - Self::push
    - build_abs_path
    - Result::header
    - OpStat::version
    - Request::head
    - OpStat::override_content_type
    - Result::extension
    - OpStat::if_none_match
    - S3Core::insert_sse_headers
    linkageType: ''
    returnType: Result
    signature: 'pub fn s3_head_object_request(&self, path: &str, args: OpStat) ->
      Result<Request<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/s3/src/core.rs:467,1
    - Dst: Vec::new
      Src: /src/opendal/core/services/s3/src/core.rs:473,1
    - Dst: OpStat::override_content_disposition
      Src: /src/opendal/core/services/s3/src/core.rs:474,1
    - Dst: Self::push
      Src: /src/opendal/core/services/s3/src/core.rs:475,1
    - Dst: OpStat::override_content_type
      Src: /src/opendal/core/services/s3/src/core.rs:481,1
    - Dst: Self::push
      Src: /src/opendal/core/services/s3/src/core.rs:482,1
    - Dst: OpStat::override_cache_control
      Src: /src/opendal/core/services/s3/src/core.rs:488,1
    - Dst: Self::push
      Src: /src/opendal/core/services/s3/src/core.rs:489,1
    - Dst: OpStat::version
      Src: /src/opendal/core/services/s3/src/core.rs:495,1
    - Dst: Self::push
      Src: /src/opendal/core/services/s3/src/core.rs:496,1
    - Dst: Self::is_empty
      Src: /src/opendal/core/services/s3/src/core.rs:502,1
    - Dst: Result::push_str
      Src: /src/opendal/core/services/s3/src/core.rs:503,1
    - Dst: Request::get
      Src: /src/opendal/core/services/s3/src/core.rs:506,1
    - Dst: (Vec::is_full
      Src: /src/opendal/core/services/s3/src/core.rs:508,1
    - Dst: Option::header
      Src: /src/opendal/core/services/s3/src/core.rs:509,1
    - Dst: (Vec::to_header
      Src: /src/opendal/core/services/s3/src/core.rs:509,1
    - Dst: OpStat::if_none_match
      Src: /src/opendal/core/services/s3/src/core.rs:512,1
    - Dst: Option::header
      Src: /src/opendal/core/services/s3/src/core.rs:513,1
    - Dst: OpStat::if_match
      Src: /src/opendal/core/services/s3/src/core.rs:516,1
    - Dst: Option::header
      Src: /src/opendal/core/services/s3/src/core.rs:517,1
    - Dst: OpStat::if_modified_since
      Src: /src/opendal/core/services/s3/src/core.rs:520,1
    - Dst: Option::header
      Src: /src/opendal/core/services/s3/src/core.rs:521,1
    - Dst: Result::format_http_date
      Src: /src/opendal/core/services/s3/src/core.rs:521,1
    - Dst: OpStat::if_unmodified_since
      Src: /src/opendal/core/services/s3/src/core.rs:524,1
    - Dst: Option::header
      Src: /src/opendal/core/services/s3/src/core.rs:525,1
    - Dst: Result::format_http_date
      Src: /src/opendal/core/services/s3/src/core.rs:525,1
    - Dst: S3Core::insert_request_payer_header
      Src: /src/opendal/core/services/s3/src/core.rs:529,1
    - Dst: S3Core::insert_sse_headers
      Src: /src/opendal/core/services/s3/src/core.rs:533,1
    - Dst: Option::extension
      Src: /src/opendal/core/services/s3/src/core.rs:536,1
    - Dst: extension
      Src: /src/opendal/core/services/s3/src/core.rs:536,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/s3/src/core.rs:538,1
    - Dst: Option::body
      Src: /src/opendal/core/services/s3/src/core.rs:540,1
    - Dst: Buffer::new
      Src: /src/opendal/core/services/s3/src/core.rs:540,1
    - Dst: map_err
      Src: /src/opendal/core/services/s3/src/core.rs:540,1
    - Dst: Ok
      Src: /src/opendal/core/services/s3/src/core.rs:542,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 108
    argCount: 3
    argNames:
    - path
    - range
    - args
    argTypes:
    - '&str'
    - BytesRange
    - '&OpRead'
    constantsTouched: []
    func_position:
      end: 543
      start: 461
    functionDepth: 5
    functionLinenumber: 461
    functionLinenumberEnd: 543
    functionName: S3Core::s3_get_object_request
    functionSourceFile: /src/opendal/core/services/s3/src/core.rs
    functionUses: 1
    functionsReached:
    - Buffer::new
    - Result::push_str
    - OpStat::if_unmodified_since
    - S3Core::insert_request_payer_header
    - OpStat::override_content_disposition
    - Vec::new
    - Option::body
    - map_err
    - extension
    - Ok
    - OpStat::if_modified_since
    - (Vec::is_full
    - Self::is_empty
    - ServiceOperation
    - Result::format_http_date
    - OpStat::if_match
    - OpStat::override_cache_control
    - Self::push
    - build_abs_path
    - Option::header
    - OpStat::version
    - Request::get
    - (Vec::to_header
    - OpStat::override_content_type
    - OpStat::if_none_match
    - Option::extension
    - S3Core::insert_sse_headers
    linkageType: ''
    returnType: Result
    signature: 'pub fn s3_get_object_request(&self,path: &str,range: BytesRange,args:
      &OpRead,) -> Result<Request<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: S3Core::s3_get_object_request
      Src: /src/opendal/core/services/s3/src/core.rs:552,1
    - Dst: S3Core::fetch
      Src: /src/opendal/core/services/s3/src/core.rs:553,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 4
    argNames:
    - ctx
    - path
    - range
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - BytesRange
    - '&OpRead'
    constantsTouched: []
    func_position:
      end: 554
      start: 545
    functionDepth: 36
    functionLinenumber: 545
    functionLinenumberEnd: 554
    functionName: S3Core::s3_get_object
    functionSourceFile: /src/opendal/core/services/s3/src/core.rs
    functionUses: 0
    functionsReached:
    - S3Core::fetch
    - S3Core::s3_get_object_request
    linkageType: ''
    returnType: Result
    signature: 'pub async fn s3_get_object(&self,ctx: &OperationContext,path: &str,range:
      BytesRange,args: &OpRead,) -> Result<Response<HttpBody>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/s3/src/core.rs:563,1
    - Dst: Request::put
      Src: /src/opendal/core/services/s3/src/core.rs:567,1
    - Dst: S3Core::insert_metadata_headers
      Src: /src/opendal/core/services/s3/src/core.rs:569,1
    - Dst: S3Core::insert_request_payer_header
      Src: /src/opendal/core/services/s3/src/core.rs:572,1
    - Dst: S3Core::insert_sse_headers
      Src: /src/opendal/core/services/s3/src/core.rs:575,1
    - Dst: S3Core::calculate_checksum
      Src: /src/opendal/core/services/s3/src/core.rs:578,1
    - Dst: S3Core::insert_checksum_header
      Src: /src/opendal/core/services/s3/src/core.rs:580,1
    - Dst: DeleteInput::extension
      Src: /src/opendal/core/services/s3/src/core.rs:584,1
    - Dst: extension
      Src: /src/opendal/core/services/s3/src/core.rs:584,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/s3/src/core.rs:586,1
    - Dst: DeleteInput::body
      Src: /src/opendal/core/services/s3/src/core.rs:589,1
    - Dst: map_err
      Src: /src/opendal/core/services/s3/src/core.rs:589,1
    - Dst: Ok
      Src: /src/opendal/core/services/s3/src/core.rs:591,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 40
    argCount: 4
    argNames:
    - path
    - size
    - args
    - body
    argTypes:
    - '&str'
    - Option<u64>
    - '&OpWrite'
    - Buffer
    constantsTouched: []
    func_position:
      end: 592
      start: 556
    functionDepth: 33
    functionLinenumber: 556
    functionLinenumberEnd: 592
    functionName: S3Core::s3_put_object_request
    functionSourceFile: /src/opendal/core/services/s3/src/core.rs
    functionUses: 0
    functionsReached:
    - S3Core::calculate_checksum
    - extension
    - S3Core::insert_metadata_headers
    - map_err
    - Request::put
    - Ok
    - build_abs_path
    - S3Core::insert_request_payer_header
    - S3Core::insert_checksum_header
    - ServiceOperation
    - S3Core::insert_sse_headers
    - DeleteInput::body
    - DeleteInput::extension
    linkageType: ''
    returnType: Result
    signature: 'pub fn s3_put_object_request(&self,path: &str,size: Option<u64>,args:
      &OpWrite,body: Buffer,) -> Result<Request<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/s3/src/core.rs:602,1
    - Dst: Request::put
      Src: /src/opendal/core/services/s3/src/core.rs:604,1
    - Dst: S3Core::insert_metadata_headers
      Src: /src/opendal/core/services/s3/src/core.rs:609,1
    - Dst: Some
      Src: /src/opendal/core/services/s3/src/core.rs:609,1
    - Dst: DeleteInput::header
      Src: /src/opendal/core/services/s3/src/core.rs:611,1
    - Dst: Option::to_string
      Src: /src/opendal/core/services/s3/src/core.rs:611,1
    - Dst: DeleteInput::header
      Src: /src/opendal/core/services/s3/src/core.rs:614,1
    - Dst: Result::to_string
      Src: /src/opendal/core/services/s3/src/core.rs:614,1
    - Dst: S3Core::insert_request_payer_header
      Src: /src/opendal/core/services/s3/src/core.rs:617,1
    - Dst: S3Core::insert_sse_headers
      Src: /src/opendal/core/services/s3/src/core.rs:620,1
    - Dst: S3Core::calculate_checksum
      Src: /src/opendal/core/services/s3/src/core.rs:623,1
    - Dst: S3Core::insert_checksum_header
      Src: /src/opendal/core/services/s3/src/core.rs:625,1
    - Dst: DeleteInput::extension
      Src: /src/opendal/core/services/s3/src/core.rs:629,1
    - Dst: extension
      Src: /src/opendal/core/services/s3/src/core.rs:629,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/s3/src/core.rs:631,1
    - Dst: DeleteInput::body
      Src: /src/opendal/core/services/s3/src/core.rs:634,1
    - Dst: map_err
      Src: /src/opendal/core/services/s3/src/core.rs:634,1
    - Dst: Ok
      Src: /src/opendal/core/services/s3/src/core.rs:636,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 56
    argCount: 5
    argNames:
    - path
    - position
    - size
    - args
    - body
    argTypes:
    - '&str'
    - u64
    - u64
    - '&OpWrite'
    - Buffer
    constantsTouched: []
    func_position:
      end: 637
      start: 594
    functionDepth: 33
    functionLinenumber: 594
    functionLinenumberEnd: 637
    functionName: S3Core::s3_append_object_request
    functionSourceFile: /src/opendal/core/services/s3/src/core.rs
    functionUses: 0
    functionsReached:
    - S3Core::calculate_checksum
    - extension
    - S3Core::insert_metadata_headers
    - map_err
    - Request::put
    - Option::to_string
    - Result::to_string
    - Ok
    - build_abs_path
    - Some
    - DeleteInput::header
    - S3Core::insert_request_payer_header
    - S3Core::insert_checksum_header
    - ServiceOperation
    - S3Core::insert_sse_headers
    - DeleteInput::body
    - DeleteInput::extension
    linkageType: ''
    returnType: Result
    signature: 'pub fn s3_append_object_request(&self,path: &str,position: u64,size:
      u64,args: &OpWrite,body: Buffer,) -> Result<Request<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: S3Core::s3_head_object_request
      Src: /src/opendal/core/services/s3/src/core.rs:645,1
    - Dst: S3Core::send
      Src: /src/opendal/core/services/s3/src/core.rs:646,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpStat
    constantsTouched: []
    func_position:
      end: 647
      start: 639
    functionDepth: 39
    functionLinenumber: 639
    functionLinenumberEnd: 647
    functionName: S3Core::s3_head_object
    functionSourceFile: /src/opendal/core/services/s3/src/core.rs
    functionUses: 0
    functionsReached:
    - S3Core::s3_head_object_request
    - S3Core::send
    linkageType: ''
    returnType: Result
    signature: 'pub async fn s3_head_object(&self,ctx: &OperationContext,path: &str,args:
      OpStat,) -> Result<Response<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/s3/src/core.rs:650,1
    - Dst: Vec::new
      Src: /src/opendal/core/services/s3/src/core.rs:654,1
    - Dst: OpStat::version
      Src: /src/opendal/core/services/s3/src/core.rs:656,1
    - Dst: Self::push
      Src: /src/opendal/core/services/s3/src/core.rs:657,1
    - Dst: Self::is_empty
      Src: /src/opendal/core/services/s3/src/core.rs:664,1
    - Dst: Result::push_str
      Src: /src/opendal/core/services/s3/src/core.rs:665,1
    - Dst: Request::delete
      Src: /src/opendal/core/services/s3/src/core.rs:668,1
    - Dst: S3Core::insert_request_payer_header
      Src: /src/opendal/core/services/s3/src/core.rs:671,1
    - Dst: Result::extension
      Src: /src/opendal/core/services/s3/src/core.rs:673,1
    - Dst: extension
      Src: /src/opendal/core/services/s3/src/core.rs:673,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/s3/src/core.rs:676,1
    - Dst: body
      Src: /src/opendal/core/services/s3/src/core.rs:673,1
    - Dst: Buffer::new
      Src: /src/opendal/core/services/s3/src/core.rs:677,1
    - Dst: map_err
      Src: /src/opendal/core/services/s3/src/core.rs:673,1
    - Dst: Ok
      Src: /src/opendal/core/services/s3/src/core.rs:680,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 37
    argCount: 2
    argNames:
    - path
    - args
    argTypes:
    - '&str'
    - '&OpDelete'
    constantsTouched: []
    func_position:
      end: 681
      start: 649
    functionDepth: 32
    functionLinenumber: 649
    functionLinenumberEnd: 681
    functionName: S3Core::s3_delete_object_request
    functionSourceFile: /src/opendal/core/services/s3/src/core.rs
    functionUses: 1
    functionsReached:
    - map_err
    - OpStat::version
    - extension
    - Result::push_str
    - Buffer::new
    - Request::delete
    - Ok
    - Result::extension
    - Self::push
    - body
    - build_abs_path
    - Self::is_empty
    - S3Core::insert_request_payer_header
    - ServiceOperation
    - Vec::new
    linkageType: ''
    returnType: Result
    signature: 'pub fn s3_delete_object_request(&self, path: &str, args: &OpDelete)
      -> Result<Request<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: S3Core::s3_delete_object_request
      Src: /src/opendal/core/services/s3/src/core.rs:689,1
    - Dst: S3Core::send
      Src: /src/opendal/core/services/s3/src/core.rs:690,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&OpDelete'
    constantsTouched: []
    func_position:
      end: 691
      start: 683
    functionDepth: 33
    functionLinenumber: 683
    functionLinenumberEnd: 691
    functionName: S3Core::s3_delete_object
    functionSourceFile: /src/opendal/core/services/s3/src/core.rs
    functionUses: 0
    functionsReached:
    - S3Core::s3_delete_object_request
    - S3Core::send
    linkageType: ''
    returnType: Result
    signature: 'pub async fn s3_delete_object(&self,ctx: &OperationContext,path: &str,args:
      &OpDelete,) -> Result<Response<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/s3/src/core.rs:700,1
    - Dst: build_abs_path
      Src: /src/opendal/core/services/s3/src/core.rs:701,1
    - Dst: OpStat::source_version
      Src: /src/opendal/core/services/s3/src/core.rs:704,1
    - Dst: QueryPairsWriter::new
      Src: /src/opendal/core/services/s3/src/core.rs:705,1
    - Dst: Self::push
      Src: /src/opendal/core/services/s3/src/core.rs:705,1
    - Dst: percent_encode_path
      Src: /src/opendal/core/services/s3/src/core.rs:708,1
    - Dst: Self::finish
      Src: /src/opendal/core/services/s3/src/core.rs:705,1
    - Dst: Request::put
      Src: /src/opendal/core/services/s3/src/core.rs:716,1
    - Dst: OpStat::if_not_exists
      Src: /src/opendal/core/services/s3/src/core.rs:719,1
    - Dst: DeleteInput::header
      Src: /src/opendal/core/services/s3/src/core.rs:720,1
    - Dst: OpStat::if_match
      Src: /src/opendal/core/services/s3/src/core.rs:722,1
    - Dst: DeleteInput::header
      Src: /src/opendal/core/services/s3/src/core.rs:723,1
    - Dst: S3Core::insert_sse_headers
      Src: /src/opendal/core/services/s3/src/core.rs:727,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/s3/src/core.rs:730,1
    - Dst: Result::set_sensitive
      Src: /src/opendal/core/services/s3/src/core.rs:731,1
    - Dst: DeleteInput::header
      Src: /src/opendal/core/services/s3/src/core.rs:733,1
    - Dst: HeaderName::from_static
      Src: /src/opendal/core/services/s3/src/core.rs:734,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/s3/src/core.rs:742,1
    - Dst: Result::set_sensitive
      Src: /src/opendal/core/services/s3/src/core.rs:743,1
    - Dst: DeleteInput::header
      Src: /src/opendal/core/services/s3/src/core.rs:745,1
    - Dst: HeaderName::from_static
      Src: /src/opendal/core/services/s3/src/core.rs:746,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/s3/src/core.rs:754,1
    - Dst: Result::set_sensitive
      Src: /src/opendal/core/services/s3/src/core.rs:755,1
    - Dst: DeleteInput::header
      Src: /src/opendal/core/services/s3/src/core.rs:757,1
    - Dst: HeaderName::from_static
      Src: /src/opendal/core/services/s3/src/core.rs:758,1
    - Dst: S3Core::insert_request_payer_header
      Src: /src/opendal/core/services/s3/src/core.rs:766,1
    - Dst: DeleteInput::extension
      Src: /src/opendal/core/services/s3/src/core.rs:768,1
    - Dst: extension
      Src: /src/opendal/core/services/s3/src/core.rs:768,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/s3/src/core.rs:771,1
    - Dst: header
      Src: /src/opendal/core/services/s3/src/core.rs:768,1
    - Dst: header
      Src: /src/opendal/core/services/s3/src/core.rs:768,1
    - Dst: body
      Src: /src/opendal/core/services/s3/src/core.rs:768,1
    - Dst: Buffer::new
      Src: /src/opendal/core/services/s3/src/core.rs:776,1
    - Dst: map_err
      Src: /src/opendal/core/services/s3/src/core.rs:768,1
    - Dst: S3Core::send
      Src: /src/opendal/core/services/s3/src/core.rs:779,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 101
    argCount: 4
    argNames:
    - ctx
    - from
    - to
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    - '&OpCopy'
    constantsTouched: []
    func_position:
      end: 780
      start: 693
    functionDepth: 30
    functionLinenumber: 693
    functionLinenumberEnd: 780
    functionName: S3Core::s3_copy_object
    functionSourceFile: /src/opendal/core/services/s3/src/core.rs
    functionUses: 0
    functionsReached:
    - Buffer::new
    - Request::put
    - DeleteInput::header
    - S3Core::insert_request_payer_header
    - percent_encode_path
    - OpStat::source_version
    - DeleteInput::extension
    - Result::clone
    - extension
    - map_err
    - S3Core::send
    - ServiceOperation
    - OpStat::if_match
    - QueryPairsWriter::new
    - Result::set_sensitive
    - Self::push
    - build_abs_path
    - OpStat::if_not_exists
    - Self::finish
    - body
    - HeaderName::from_static
    - S3Core::insert_sse_headers
    - header
    linkageType: ''
    returnType: Result
    signature: 'pub async fn s3_copy_object(&self,ctx: &OperationContext,from: &str,to:
      &str,args: &OpCopy,) -> Result<Response<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/s3/src/core.rs:790,1
    - Dst: QueryPairsWriter::new
      Src: /src/opendal/core/services/s3/src/core.rs:792,1
    - Dst: is_empty
      Src: /src/opendal/core/services/s3/src/core.rs:794,1
    - Dst: Result::push
      Src: /src/opendal/core/services/s3/src/core.rs:795,1
    - Dst: percent_encode_path
      Src: /src/opendal/core/services/s3/src/core.rs:795,1
    - Dst: object_store::Result::is_empty
      Src: /src/opendal/core/services/s3/src/core.rs:797,1
    - Dst: Result::push
      Src: /src/opendal/core/services/s3/src/core.rs:798,1
    - Dst: Result::push
      Src: /src/opendal/core/services/s3/src/core.rs:801,1
    - Dst: Result::to_string
      Src: /src/opendal/core/services/s3/src/core.rs:801,1
    - Dst: Option::is_empty
      Src: /src/opendal/core/services/s3/src/core.rs:803,1
    - Dst: Result::push
      Src: /src/opendal/core/services/s3/src/core.rs:804,1
    - Dst: percent_encode_path
      Src: /src/opendal/core/services/s3/src/core.rs:804,1
    - Dst: Request::get
      Src: /src/opendal/core/services/s3/src/core.rs:807,1
    - Dst: Result::finish
      Src: /src/opendal/core/services/s3/src/core.rs:807,1
    - Dst: S3Core::insert_request_payer_header
      Src: /src/opendal/core/services/s3/src/core.rs:810,1
    - Dst: Option::extension
      Src: /src/opendal/core/services/s3/src/core.rs:812,1
    - Dst: extension
      Src: /src/opendal/core/services/s3/src/core.rs:812,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/s3/src/core.rs:815,1
    - Dst: body
      Src: /src/opendal/core/services/s3/src/core.rs:812,1
    - Dst: Buffer::new
      Src: /src/opendal/core/services/s3/src/core.rs:816,1
    - Dst: map_err
      Src: /src/opendal/core/services/s3/src/core.rs:812,1
    - Dst: S3Core::send
      Src: /src/opendal/core/services/s3/src/core.rs:819,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 68
    argCount: 5
    argNames:
    - ctx
    - path
    - marker
    - delimiter
    - limit
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    - '&str'
    - Option<usize>
    constantsTouched: []
    func_position:
      end: 820
      start: 782
    functionDepth: 38
    functionLinenumber: 782
    functionLinenumberEnd: 820
    functionName: S3Core::s3_list_objects_v1
    functionSourceFile: /src/opendal/core/services/s3/src/core.rs
    functionUses: 0
    functionsReached:
    - QueryPairsWriter::new
    - extension
    - Request::get
    - Buffer::new
    - map_err
    - Result::to_string
    - body
    - S3Core::send
    - build_abs_path
    - is_empty
    - Result::finish
    - S3Core::insert_request_payer_header
    - Result::push
    - Option::extension
    - Option::is_empty
    - percent_encode_path
    - ServiceOperation
    - object_store::Result::is_empty
    linkageType: ''
    returnType: Result
    signature: 'pub async fn s3_list_objects_v1(&self,ctx: &OperationContext,path:
      &str,marker: &str,delimiter: &str,limit: Option<usize>,) -> Result<Response<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/s3/src/core.rs:831,1
    - Dst: QueryPairsWriter::new
      Src: /src/opendal/core/services/s3/src/core.rs:833,1
    - Dst: Result::push
      Src: /src/opendal/core/services/s3/src/core.rs:834,1
    - Dst: is_empty
      Src: /src/opendal/core/services/s3/src/core.rs:836,1
    - Dst: Result::push
      Src: /src/opendal/core/services/s3/src/core.rs:837,1
    - Dst: percent_encode_path
      Src: /src/opendal/core/services/s3/src/core.rs:837,1
    - Dst: object_store::Result::is_empty
      Src: /src/opendal/core/services/s3/src/core.rs:839,1
    - Dst: Result::push
      Src: /src/opendal/core/services/s3/src/core.rs:840,1
    - Dst: Result::push
      Src: /src/opendal/core/services/s3/src/core.rs:843,1
    - Dst: Result::to_string
      Src: /src/opendal/core/services/s3/src/core.rs:843,1
    - Dst: Result::push
      Src: /src/opendal/core/services/s3/src/core.rs:846,1
    - Dst: percent_encode_path
      Src: /src/opendal/core/services/s3/src/core.rs:846,1
    - Dst: '&str::is_empty'
      Src: /src/opendal/core/services/s3/src/core.rs:848,1
    - Dst: Result::push
      Src: /src/opendal/core/services/s3/src/core.rs:853,1
    - Dst: percent_encode_path
      Src: /src/opendal/core/services/s3/src/core.rs:855,1
    - Dst: Request::get
      Src: /src/opendal/core/services/s3/src/core.rs:859,1
    - Dst: Result::finish
      Src: /src/opendal/core/services/s3/src/core.rs:859,1
    - Dst: S3Core::insert_request_payer_header
      Src: /src/opendal/core/services/s3/src/core.rs:862,1
    - Dst: Option::extension
      Src: /src/opendal/core/services/s3/src/core.rs:864,1
    - Dst: extension
      Src: /src/opendal/core/services/s3/src/core.rs:864,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/s3/src/core.rs:867,1
    - Dst: body
      Src: /src/opendal/core/services/s3/src/core.rs:864,1
    - Dst: Buffer::new
      Src: /src/opendal/core/services/s3/src/core.rs:868,1
    - Dst: map_err
      Src: /src/opendal/core/services/s3/src/core.rs:864,1
    - Dst: S3Core::send
      Src: /src/opendal/core/services/s3/src/core.rs:871,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 81
    argCount: 6
    argNames:
    - ctx
    - path
    - continuation_token
    - delimiter
    - limit
    - start_after
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    - '&str'
    - Option<usize>
    - Option<String>
    constantsTouched: []
    func_position:
      end: 872
      start: 822
    functionDepth: 38
    functionLinenumber: 822
    functionLinenumberEnd: 872
    functionName: S3Core::s3_list_objects_v2
    functionSourceFile: /src/opendal/core/services/s3/src/core.rs
    functionUses: 0
    functionsReached:
    - QueryPairsWriter::new
    - extension
    - Request::get
    - Buffer::new
    - map_err
    - Result::to_string
    - body
    - S3Core::send
    - build_abs_path
    - is_empty
    - '&str::is_empty'
    - Result::finish
    - Result::push
    - S3Core::insert_request_payer_header
    - Option::extension
    - percent_encode_path
    - ServiceOperation
    - object_store::Result::is_empty
    linkageType: ''
    returnType: Result
    signature: 'pub async fn s3_list_objects_v2(&self,ctx: &OperationContext,path:
      &str,continuation_token: &str,delimiter: &str,limit: Option<usize>,start_after:
      Option<String>,) -> Result<Response<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/s3/src/core.rs:880,1
    - Dst: Request::post
      Src: /src/opendal/core/services/s3/src/core.rs:884,1
    - Dst: OpStat::content_type
      Src: /src/opendal/core/services/s3/src/core.rs:886,1
    - Dst: header
      Src: /src/opendal/core/services/s3/src/core.rs:887,1
    - Dst: OpStat::content_disposition
      Src: /src/opendal/core/services/s3/src/core.rs:890,1
    - Dst: header
      Src: /src/opendal/core/services/s3/src/core.rs:891,1
    - Dst: OpStat::cache_control
      Src: /src/opendal/core/services/s3/src/core.rs:894,1
    - Dst: header
      Src: /src/opendal/core/services/s3/src/core.rs:895,1
    - Dst: OpStat::content_encoding
      Src: /src/opendal/core/services/s3/src/core.rs:898,1
    - Dst: header
      Src: /src/opendal/core/services/s3/src/core.rs:899,1
    - Dst: header
      Src: /src/opendal/core/services/s3/src/core.rs:904,1
    - Dst: HeaderName::from_static
      Src: /src/opendal/core/services/s3/src/core.rs:904,1
    - Dst: OpStat::user_metadata
      Src: /src/opendal/core/services/s3/src/core.rs:908,1
    - Dst: header
      Src: /src/opendal/core/services/s3/src/core.rs:910,1
    - Dst: header
      Src: /src/opendal/core/services/s3/src/core.rs:916,1
    - Dst: S3Core::insert_request_payer_header
      Src: /src/opendal/core/services/s3/src/core.rs:920,1
    - Dst: S3Core::insert_sse_headers
      Src: /src/opendal/core/services/s3/src/core.rs:923,1
    - Dst: Err
      Src: /src/opendal/core/services/s3/src/core.rs:929,1
    - Dst: Error::new
      Src: /src/opendal/core/services/s3/src/core.rs:929,1
    - Dst: S3Core::insert_checksum_type_header
      Src: /src/opendal/core/services/s3/src/core.rs:935,1
    - Dst: extension
      Src: /src/opendal/core/services/s3/src/core.rs:938,1
    - Dst: extension
      Src: /src/opendal/core/services/s3/src/core.rs:938,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/s3/src/core.rs:940,1
    - Dst: body
      Src: /src/opendal/core/services/s3/src/core.rs:942,1
    - Dst: Buffer::new
      Src: /src/opendal/core/services/s3/src/core.rs:942,1
    - Dst: map_err
      Src: /src/opendal/core/services/s3/src/core.rs:942,1
    - Dst: S3Core::send
      Src: /src/opendal/core/services/s3/src/core.rs:944,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 93
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&OpWrite'
    constantsTouched: []
    func_position:
      end: 945
      start: 874
    functionDepth: 32
    functionLinenumber: 874
    functionLinenumberEnd: 945
    functionName: S3Core::s3_initiate_multipart_upload
    functionSourceFile: /src/opendal/core/services/s3/src/core.rs
    functionUses: 0
    functionsReached:
    - Buffer::new
    - OpStat::content_encoding
    - OpStat::content_disposition
    - S3Core::insert_request_payer_header
    - OpStat::user_metadata
    - S3Core::insert_checksum_type_header
    - map_err
    - extension
    - S3Core::send
    - ServiceOperation
    - OpStat::cache_control
    - build_abs_path
    - OpStat::content_type
    - Request::post
    - body
    - HeaderName::from_static
    - Err
    - Error::new
    - S3Core::insert_sse_headers
    - header
    linkageType: ''
    returnType: Result
    signature: 'pub async fn s3_initiate_multipart_upload(&self,ctx: &OperationContext,path:
      &str,args: &OpWrite,) -> Result<Response<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/s3/src/core.rs:952,1
    - Dst: Request::post
      Src: /src/opendal/core/services/s3/src/core.rs:956,1
    - Dst: header
      Src: /src/opendal/core/services/s3/src/core.rs:960,1
    - Dst: HeaderName::from_static
      Src: /src/opendal/core/services/s3/src/core.rs:960,1
    - Dst: header
      Src: /src/opendal/core/services/s3/src/core.rs:965,1
    - Dst: S3Core::insert_request_payer_header
      Src: /src/opendal/core/services/s3/src/core.rs:969,1
    - Dst: S3Core::insert_sse_headers
      Src: /src/opendal/core/services/s3/src/core.rs:972,1
    - Dst: extension
      Src: /src/opendal/core/services/s3/src/core.rs:974,1
    - Dst: extension
      Src: /src/opendal/core/services/s3/src/core.rs:974,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/s3/src/core.rs:976,1
    - Dst: body
      Src: /src/opendal/core/services/s3/src/core.rs:974,1
    - Dst: Buffer::new
      Src: /src/opendal/core/services/s3/src/core.rs:977,1
    - Dst: map_err
      Src: /src/opendal/core/services/s3/src/core.rs:974,1
    - Dst: S3Core::send
      Src: /src/opendal/core/services/s3/src/core.rs:980,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 44
    argCount: 2
    argNames:
    - ctx
    - path
    argTypes:
    - '&OperationContext'
    - '&str'
    constantsTouched: []
    func_position:
      end: 981
      start: 947
    functionDepth: 38
    functionLinenumber: 947
    functionLinenumberEnd: 981
    functionName: S3Core::s3_initiate_multipart_copy
    functionSourceFile: /src/opendal/core/services/s3/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - extension
    - Buffer::new
    - Request::post
    - body
    - S3Core::send
    - HeaderName::from_static
    - build_abs_path
    - S3Core::insert_request_payer_header
    - ServiceOperation
    - S3Core::insert_sse_headers
    - header
    linkageType: ''
    returnType: Result
    signature: 'pub async fn s3_initiate_multipart_copy(&self,ctx: &OperationContext,path:
      &str,) -> Result<Response<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/s3/src/core.rs:987,1
    - Dst: build_abs_path
      Src: /src/opendal/core/services/s3/src/core.rs:988,1
    - Dst: QueryPairsWriter::new
      Src: /src/opendal/core/services/s3/src/core.rs:992,1
    - Dst: Self::push
      Src: /src/opendal/core/services/s3/src/core.rs:992,1
    - Dst: percent_encode_path
      Src: /src/opendal/core/services/s3/src/core.rs:995,1
    - Dst: Self::finish
      Src: /src/opendal/core/services/s3/src/core.rs:992,1
    - Dst: Request::put
      Src: /src/opendal/core/services/s3/src/core.rs:1010,1
    - Dst: S3Core::insert_sse_headers
      Src: /src/opendal/core/services/s3/src/core.rs:1013,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/s3/src/core.rs:1016,1
    - Dst: Result::set_sensitive
      Src: /src/opendal/core/services/s3/src/core.rs:1017,1
    - Dst: DeleteInput::header
      Src: /src/opendal/core/services/s3/src/core.rs:1019,1
    - Dst: HeaderName::from_static
      Src: /src/opendal/core/services/s3/src/core.rs:1020,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/s3/src/core.rs:1028,1
    - Dst: Result::set_sensitive
      Src: /src/opendal/core/services/s3/src/core.rs:1029,1
    - Dst: DeleteInput::header
      Src: /src/opendal/core/services/s3/src/core.rs:1031,1
    - Dst: HeaderName::from_static
      Src: /src/opendal/core/services/s3/src/core.rs:1032,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/s3/src/core.rs:1040,1
    - Dst: Result::set_sensitive
      Src: /src/opendal/core/services/s3/src/core.rs:1041,1
    - Dst: DeleteInput::header
      Src: /src/opendal/core/services/s3/src/core.rs:1043,1
    - Dst: HeaderName::from_static
      Src: /src/opendal/core/services/s3/src/core.rs:1044,1
    - Dst: S3Core::insert_request_payer_header
      Src: /src/opendal/core/services/s3/src/core.rs:1052,1
    - Dst: DeleteInput::extension
      Src: /src/opendal/core/services/s3/src/core.rs:1054,1
    - Dst: extension
      Src: /src/opendal/core/services/s3/src/core.rs:1054,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/s3/src/core.rs:1056,1
    - Dst: header
      Src: /src/opendal/core/services/s3/src/core.rs:1054,1
    - Dst: header
      Src: /src/opendal/core/services/s3/src/core.rs:1054,1
    - Dst: to_header
      Src: /src/opendal/core/services/s3/src/core.rs:1058,1
    - Dst: body
      Src: /src/opendal/core/services/s3/src/core.rs:1054,1
    - Dst: Buffer::new
      Src: /src/opendal/core/services/s3/src/core.rs:1059,1
    - Dst: map_err
      Src: /src/opendal/core/services/s3/src/core.rs:1054,1
    - Dst: Ok
      Src: /src/opendal/core/services/s3/src/core.rs:1062,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 86
    argCount: 1
    argNames:
    - input
    argTypes:
    - S3UploadPartCopyRequest<'_>
    constantsTouched: []
    func_position:
      end: 1063
      start: 983
    functionDepth: 5
    functionLinenumber: 983
    functionLinenumberEnd: 1063
    functionName: S3Core::s3_upload_part_copy_request
    functionSourceFile: /src/opendal/core/services/s3/src/core.rs
    functionUses: 0
    functionsReached:
    - Buffer::new
    - Request::put
    - DeleteInput::header
    - S3Core::insert_request_payer_header
    - to_header
    - percent_encode_path
    - DeleteInput::extension
    - Result::clone
    - extension
    - map_err
    - Ok
    - ServiceOperation
    - QueryPairsWriter::new
    - Result::set_sensitive
    - Self::push
    - build_abs_path
    - Self::finish
    - body
    - HeaderName::from_static
    - S3Core::insert_sse_headers
    - header
    linkageType: ''
    returnType: Result
    signature: 'pub(crate) fn s3_upload_part_copy_request(&self,input: S3UploadPartCopyRequest<''_>,)
      -> Result<Request<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/s3/src/core.rs:1074,1
    - Dst: Request::put
      Src: /src/opendal/core/services/s3/src/core.rs:1084,1
    - Dst: DeleteInput::header
      Src: /src/opendal/core/services/s3/src/core.rs:1086,1
    - Dst: S3Core::insert_request_payer_header
      Src: /src/opendal/core/services/s3/src/core.rs:1089,1
    - Dst: S3Core::insert_sse_headers
      Src: /src/opendal/core/services/s3/src/core.rs:1092,1
    - Dst: S3Core::insert_checksum_header
      Src: /src/opendal/core/services/s3/src/core.rs:1096,1
    - Dst: DeleteInput::extension
      Src: /src/opendal/core/services/s3/src/core.rs:1100,1
    - Dst: extension
      Src: /src/opendal/core/services/s3/src/core.rs:1100,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/s3/src/core.rs:1102,1
    - Dst: DeleteInput::body
      Src: /src/opendal/core/services/s3/src/core.rs:1105,1
    - Dst: map_err
      Src: /src/opendal/core/services/s3/src/core.rs:1105,1
    - Dst: Ok
      Src: /src/opendal/core/services/s3/src/core.rs:1107,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 37
    argCount: 6
    argNames:
    - path
    - upload_id
    - part_number
    - size
    - body
    - checksum
    argTypes:
    - '&str'
    - '&str'
    - usize
    - u64
    - Buffer
    - Option<String>
    constantsTouched: []
    func_position:
      end: 1108
      start: 1065
    functionDepth: 3
    functionLinenumber: 1065
    functionLinenumberEnd: 1108
    functionName: S3Core::s3_upload_part_request
    functionSourceFile: /src/opendal/core/services/s3/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - extension
    - Request::put
    - Ok
    - build_abs_path
    - DeleteInput::header
    - S3Core::insert_request_payer_header
    - S3Core::insert_checksum_header
    - ServiceOperation
    - S3Core::insert_sse_headers
    - DeleteInput::body
    - DeleteInput::extension
    linkageType: ''
    returnType: Result
    signature: 'pub fn s3_upload_part_request(&self,path: &str,upload_id: &str,part_number:
      usize,size: u64,body: Buffer,checksum: Option<String>,) -> Result<Request<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/s3/src/core.rs:1118,1
    - Dst: Request::post
      Src: /src/opendal/core/services/s3/src/core.rs:1127,1
    - Dst: S3Core::insert_sse_headers
      Src: /src/opendal/core/services/s3/src/core.rs:1130,1
    - Dst: quick_xml::se::to_string
      Src: /src/opendal/core/services/s3/src/core.rs:1132,1
    - Dst: map_err
      Src: /src/opendal/core/services/s3/src/core.rs:1132,1
    - Dst: header
      Src: /src/opendal/core/services/s3/src/core.rs:1135,1
    - Dst: Result::len
      Src: /src/opendal/core/services/s3/src/core.rs:1135,1
    - Dst: header
      Src: /src/opendal/core/services/s3/src/core.rs:1137,1
    - Dst: OpStat::if_match
      Src: /src/opendal/core/services/s3/src/core.rs:1140,1
    - Dst: header
      Src: /src/opendal/core/services/s3/src/core.rs:1141,1
    - Dst: OpStat::if_not_exists
      Src: /src/opendal/core/services/s3/src/core.rs:1143,1
    - Dst: header
      Src: /src/opendal/core/services/s3/src/core.rs:1144,1
    - Dst: S3Core::insert_request_payer_header
      Src: /src/opendal/core/services/s3/src/core.rs:1148,1
    - Dst: extension
      Src: /src/opendal/core/services/s3/src/core.rs:1151,1
    - Dst: extension
      Src: /src/opendal/core/services/s3/src/core.rs:1151,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/s3/src/core.rs:1153,1
    - Dst: body
      Src: /src/opendal/core/services/s3/src/core.rs:1155,1
    - Dst: Buffer::from
      Src: /src/opendal/core/services/s3/src/core.rs:1156,1
    - Dst: Bytes::from
      Src: /src/opendal/core/services/s3/src/core.rs:1156,1
    - Dst: map_err
      Src: /src/opendal/core/services/s3/src/core.rs:1155,1
    - Dst: S3Core::send
      Src: /src/opendal/core/services/s3/src/core.rs:1159,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 62
    argCount: 5
    argNames:
    - ctx
    - path
    - upload_id
    - parts
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    - Vec<CompleteMultipartUploadRequestPart>
    - '&OpWrite'
    constantsTouched: []
    func_position:
      end: 1160
      start: 1110
    functionDepth: 32
    functionLinenumber: 1110
    functionLinenumberEnd: 1160
    functionName: S3Core::s3_complete_multipart_upload
    functionSourceFile: /src/opendal/core/services/s3/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - extension
    - Request::post
    - body
    - quick_xml::se::to_string
    - build_abs_path
    - S3Core::send
    - Bytes::from
    - S3Core::insert_request_payer_header
    - ServiceOperation
    - S3Core::insert_sse_headers
    - Result::len
    - OpStat::if_match
    - OpStat::if_not_exists
    - Buffer::from
    - header
    linkageType: ''
    returnType: Result
    signature: 'pub async fn s3_complete_multipart_upload(&self,ctx: &OperationContext,path:
      &str,upload_id: &str,parts: Vec<CompleteMultipartUploadRequestPart>,args: &OpWrite,)
      -> Result<Response<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/s3/src/core.rs:1170,1
    - Dst: Request::post
      Src: /src/opendal/core/services/s3/src/core.rs:1179,1
    - Dst: S3Core::insert_sse_headers
      Src: /src/opendal/core/services/s3/src/core.rs:1182,1
    - Dst: quick_xml::se::to_string
      Src: /src/opendal/core/services/s3/src/core.rs:1184,1
    - Dst: map_err
      Src: /src/opendal/core/services/s3/src/core.rs:1184,1
    - Dst: header
      Src: /src/opendal/core/services/s3/src/core.rs:1187,1
    - Dst: Result::len
      Src: /src/opendal/core/services/s3/src/core.rs:1187,1
    - Dst: header
      Src: /src/opendal/core/services/s3/src/core.rs:1189,1
    - Dst: OpStat::if_not_exists
      Src: /src/opendal/core/services/s3/src/core.rs:1191,1
    - Dst: header
      Src: /src/opendal/core/services/s3/src/core.rs:1192,1
    - Dst: OpStat::if_match
      Src: /src/opendal/core/services/s3/src/core.rs:1194,1
    - Dst: header
      Src: /src/opendal/core/services/s3/src/core.rs:1195,1
    - Dst: S3Core::insert_request_payer_header
      Src: /src/opendal/core/services/s3/src/core.rs:1199,1
    - Dst: extension
      Src: /src/opendal/core/services/s3/src/core.rs:1201,1
    - Dst: extension
      Src: /src/opendal/core/services/s3/src/core.rs:1201,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/s3/src/core.rs:1203,1
    - Dst: body
      Src: /src/opendal/core/services/s3/src/core.rs:1201,1
    - Dst: Buffer::from
      Src: /src/opendal/core/services/s3/src/core.rs:1204,1
    - Dst: Bytes::from
      Src: /src/opendal/core/services/s3/src/core.rs:1204,1
    - Dst: map_err
      Src: /src/opendal/core/services/s3/src/core.rs:1201,1
    - Dst: S3Core::send
      Src: /src/opendal/core/services/s3/src/core.rs:1207,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 60
    argCount: 5
    argNames:
    - ctx
    - path
    - upload_id
    - parts
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    - Vec<CompleteMultipartUploadRequestPart>
    - '&OpCopy'
    constantsTouched: []
    func_position:
      end: 1208
      start: 1162
    functionDepth: 32
    functionLinenumber: 1162
    functionLinenumberEnd: 1208
    functionName: S3Core::s3_complete_multipart_copy
    functionSourceFile: /src/opendal/core/services/s3/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - extension
    - Request::post
    - body
    - quick_xml::se::to_string
    - build_abs_path
    - S3Core::send
    - Bytes::from
    - S3Core::insert_request_payer_header
    - ServiceOperation
    - S3Core::insert_sse_headers
    - Result::len
    - OpStat::if_match
    - OpStat::if_not_exists
    - Buffer::from
    - header
    linkageType: ''
    returnType: Result
    signature: 'pub async fn s3_complete_multipart_copy(&self,ctx: &OperationContext,path:
      &str,upload_id: &str,parts: Vec<CompleteMultipartUploadRequestPart>,args: &OpCopy,)
      -> Result<Response<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/s3/src/core.rs:1217,1
    - Dst: Request::delete
      Src: /src/opendal/core/services/s3/src/core.rs:1226,1
    - Dst: S3Core::insert_request_payer_header
      Src: /src/opendal/core/services/s3/src/core.rs:1229,1
    - Dst: Result::extension
      Src: /src/opendal/core/services/s3/src/core.rs:1231,1
    - Dst: extension
      Src: /src/opendal/core/services/s3/src/core.rs:1231,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/s3/src/core.rs:1234,1
    - Dst: body
      Src: /src/opendal/core/services/s3/src/core.rs:1231,1
    - Dst: Buffer::new
      Src: /src/opendal/core/services/s3/src/core.rs:1235,1
    - Dst: map_err
      Src: /src/opendal/core/services/s3/src/core.rs:1231,1
    - Dst: S3Core::send
      Src: /src/opendal/core/services/s3/src/core.rs:1238,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 23
    argCount: 3
    argNames:
    - ctx
    - path
    - upload_id
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    constantsTouched: []
    func_position:
      end: 1239
      start: 1211
    functionDepth: 32
    functionLinenumber: 1211
    functionLinenumberEnd: 1239
    functionName: S3Core::s3_abort_multipart_upload
    functionSourceFile: /src/opendal/core/services/s3/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - extension
    - Buffer::new
    - Request::delete
    - Result::extension
    - body
    - S3Core::send
    - build_abs_path
    - S3Core::insert_request_payer_header
    - ServiceOperation
    linkageType: ''
    returnType: Result
    signature: 'pub async fn s3_abort_multipart_upload(&self,ctx: &OperationContext,path:
      &str,upload_id: &str,) -> Result<Response<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/s3/src/core.rs:1248,1
    - Dst: Request::delete
      Src: /src/opendal/core/services/s3/src/core.rs:1257,1
    - Dst: S3Core::insert_request_payer_header
      Src: /src/opendal/core/services/s3/src/core.rs:1260,1
    - Dst: Result::extension
      Src: /src/opendal/core/services/s3/src/core.rs:1262,1
    - Dst: extension
      Src: /src/opendal/core/services/s3/src/core.rs:1262,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/s3/src/core.rs:1264,1
    - Dst: body
      Src: /src/opendal/core/services/s3/src/core.rs:1262,1
    - Dst: Buffer::new
      Src: /src/opendal/core/services/s3/src/core.rs:1265,1
    - Dst: map_err
      Src: /src/opendal/core/services/s3/src/core.rs:1262,1
    - Dst: S3Core::send
      Src: /src/opendal/core/services/s3/src/core.rs:1268,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 23
    argCount: 3
    argNames:
    - ctx
    - path
    - upload_id
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    constantsTouched: []
    func_position:
      end: 1269
      start: 1242
    functionDepth: 32
    functionLinenumber: 1242
    functionLinenumberEnd: 1269
    functionName: S3Core::s3_abort_multipart_copy
    functionSourceFile: /src/opendal/core/services/s3/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - extension
    - Buffer::new
    - Request::delete
    - Result::extension
    - body
    - S3Core::send
    - build_abs_path
    - S3Core::insert_request_payer_header
    - ServiceOperation
    linkageType: ''
    returnType: Result
    signature: 'pub async fn s3_abort_multipart_copy(&self,ctx: &OperationContext,path:
      &str,upload_id: &str,) -> Result<Response<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Request::post
      Src: /src/opendal/core/services/s3/src/core.rs:1278,1
    - Dst: quick_xml::se::to_string
      Src: /src/opendal/core/services/s3/src/core.rs:1280,1
    - Dst: Result::iter
      Src: /src/opendal/core/services/s3/src/core.rs:1282,1
    - Dst: map
      Src: /src/opendal/core/services/s3/src/core.rs:1282,1
    - Dst: build_abs_path
      Src: /src/opendal/core/services/s3/src/core.rs:1285,1
    - Dst: version
      Src: /src/opendal/core/services/s3/src/core.rs:1286,1
    - Dst: Result::map
      Src: /src/opendal/core/services/s3/src/core.rs:1286,1
    - Dst: Result::to_owned
      Src: /src/opendal/core/services/s3/src/core.rs:1286,1
    - Dst: Result::collect
      Src: /src/opendal/core/services/s3/src/core.rs:1282,1
    - Dst: map_err
      Src: /src/opendal/core/services/s3/src/core.rs:1280,1
    - Dst: header
      Src: /src/opendal/core/services/s3/src/core.rs:1293,1
    - Dst: Result::len
      Src: /src/opendal/core/services/s3/src/core.rs:1293,1
    - Dst: header
      Src: /src/opendal/core/services/s3/src/core.rs:1295,1
    - Dst: header
      Src: /src/opendal/core/services/s3/src/core.rs:1297,1
    - Dst: format_content_md5
      Src: /src/opendal/core/services/s3/src/core.rs:1297,1
    - Dst: Result::as_bytes
      Src: /src/opendal/core/services/s3/src/core.rs:1297,1
    - Dst: S3Core::insert_request_payer_header
      Src: /src/opendal/core/services/s3/src/core.rs:1300,1
    - Dst: extension
      Src: /src/opendal/core/services/s3/src/core.rs:1303,1
    - Dst: extension
      Src: /src/opendal/core/services/s3/src/core.rs:1303,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/s3/src/core.rs:1305,1
    - Dst: body
      Src: /src/opendal/core/services/s3/src/core.rs:1307,1
    - Dst: Buffer::from
      Src: /src/opendal/core/services/s3/src/core.rs:1308,1
    - Dst: Bytes::from
      Src: /src/opendal/core/services/s3/src/core.rs:1308,1
    - Dst: map_err
      Src: /src/opendal/core/services/s3/src/core.rs:1307,1
    - Dst: S3Core::send
      Src: /src/opendal/core/services/s3/src/core.rs:1311,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 64
    argCount: 2
    argNames:
    - ctx
    - paths
    argTypes:
    - '&OperationContext'
    - '&[(String, OpDelete)]'
    constantsTouched: []
    func_position:
      end: 1312
      start: 1271
    functionDepth: 32
    functionLinenumber: 1271
    functionLinenumberEnd: 1312
    functionName: S3Core::s3_delete_objects
    functionSourceFile: /src/opendal/core/services/s3/src/core.rs
    functionUses: 0
    functionsReached:
    - map
    - S3Core::insert_request_payer_header
    - Result::len
    - Result::to_owned
    - Result::as_bytes
    - map_err
    - extension
    - S3Core::send
    - Result::iter
    - ServiceOperation
    - Result::map
    - Buffer::from
    - quick_xml::se::to_string
    - build_abs_path
    - Bytes::from
    - format_content_md5
    - Request::post
    - body
    - Result::collect
    - version
    - header
    linkageType: ''
    returnType: Result
    signature: 'pub async fn s3_delete_objects(&self,ctx: &OperationContext,paths:
      &[(String, OpDelete)],) -> Result<Response<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/s3/src/core.rs:1323,1
    - Dst: is_empty
      Src: /src/opendal/core/services/s3/src/core.rs:1326,1
    - Dst: expect
      Src: /src/opendal/core/services/s3/src/core.rs:1327,1
    - Dst: object_store::Result::is_empty
      Src: /src/opendal/core/services/s3/src/core.rs:1330,1
    - Dst: expect
      Src: /src/opendal/core/services/s3/src/core.rs:1331,1
    - Dst: expect
      Src: /src/opendal/core/services/s3/src/core.rs:1335,1
    - Dst: '&str::is_empty'
      Src: /src/opendal/core/services/s3/src/core.rs:1337,1
    - Dst: expect
      Src: /src/opendal/core/services/s3/src/core.rs:1338,1
    - Dst: '&str::is_empty'
      Src: /src/opendal/core/services/s3/src/core.rs:1341,1
    - Dst: expect
      Src: /src/opendal/core/services/s3/src/core.rs:1342,1
    - Dst: Request::get
      Src: /src/opendal/core/services/s3/src/core.rs:1350,1
    - Dst: S3Core::insert_request_payer_header
      Src: /src/opendal/core/services/s3/src/core.rs:1353,1
    - Dst: Option::extension
      Src: /src/opendal/core/services/s3/src/core.rs:1355,1
    - Dst: extension
      Src: /src/opendal/core/services/s3/src/core.rs:1355,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/s3/src/core.rs:1358,1
    - Dst: body
      Src: /src/opendal/core/services/s3/src/core.rs:1355,1
    - Dst: Buffer::new
      Src: /src/opendal/core/services/s3/src/core.rs:1359,1
    - Dst: map_err
      Src: /src/opendal/core/services/s3/src/core.rs:1355,1
    - Dst: S3Core::send
      Src: /src/opendal/core/services/s3/src/core.rs:1362,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 60
    argCount: 6
    argNames:
    - ctx
    - prefix
    - delimiter
    - limit
    - key_marker
    - version_id_marker
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    - Option<usize>
    - '&str'
    - '&str'
    constantsTouched: []
    func_position:
      end: 1363
      start: 1314
    functionDepth: 38
    functionLinenumber: 1314
    functionLinenumberEnd: 1363
    functionName: S3Core::s3_list_object_versions
    functionSourceFile: /src/opendal/core/services/s3/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - extension
    - Request::get
    - Buffer::new
    - expect
    - body
    - S3Core::send
    - '&str::is_empty'
    - build_abs_path
    - is_empty
    - S3Core::insert_request_payer_header
    - Option::extension
    - ServiceOperation
    - object_store::Result::is_empty
    linkageType: ''
    returnType: Result
    signature: 'pub async fn s3_list_object_versions(&self,ctx: &OperationContext,prefix:
      &str,delimiter: &str,limit: Option<usize>,key_marker: &str,version_id_marker:
      &str,) -> Result<Response<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: HeaderName::from_static
      Src: /src/opendal/core/services/s3/src/core.rs:1574,1
    - Dst: HeaderName::from_static
      Src: /src/opendal/core/services/s3/src/core.rs:1575,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 1577
      start: 1572
    functionDepth: 0
    functionLinenumber: 1572
    functionLinenumberEnd: 1577
    functionName: ChecksumAlgorithm::to_header_name
    functionSourceFile: /src/opendal/core/services/s3/src/core.rs
    functionUses: 0
    functionsReached:
    - HeaderName::from_static
    linkageType: ''
    returnType: HeaderName
    signature: pub fn to_header_name(&self) -> HeaderName
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 1
    argNames:
    - f
    argTypes:
    - '&mut std::fmt::Formatter<''_>'
    constantsTouched: []
    func_position:
      end: 1589
      start: 1580
    functionDepth: 0
    functionLinenumber: 1580
    functionLinenumberEnd: 1589
    functionName: ChecksumAlgorithm::fmt
    functionSourceFile: /src/opendal/core/services/s3/src/core.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: std::fmt::Result
    signature: 'fn fmt(&self, f: &mut std::fmt::Formatter<''_>) -> std::fmt::Result'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Bytes::from
      Src: /src/opendal/core/services/s3/src/core.rs:1602,1
    - Dst: quick_xml::de::from_reader
      Src: /src/opendal/core/services/s3/src/core.rs:1612,1
    - Dst: Result::reader
      Src: /src/opendal/core/services/s3/src/core.rs:1612,1
    - Dst: expect
      Src: /src/opendal/core/services/s3/src/core.rs:1612,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 1618
      start: 1601
    functionDepth: 32
    functionLinenumber: 1601
    functionLinenumberEnd: 1618
    functionName: tests::test_deserialize_initiate_multipart_upload_result
    functionSourceFile: /src/opendal/core/services/s3/src/core.rs
    functionUses: 0
    functionsReached:
    - Bytes::from
    - Result::reader
    - quick_xml::de::from_reader
    - expect
    linkageType: ''
    returnType: void
    signature: fn test_deserialize_initiate_multipart_upload_result()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Bytes::from
      Src: /src/opendal/core/services/s3/src/core.rs:1669,1
    - Dst: quick_xml::de::from_reader
      Src: /src/opendal/core/services/s3/src/core.rs:1680,1
    - Dst: Result::reader
      Src: /src/opendal/core/services/s3/src/core.rs:1680,1
    - Dst: expect
      Src: /src/opendal/core/services/s3/src/core.rs:1680,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 1689
      start: 1668
    functionDepth: 32
    functionLinenumber: 1668
    functionLinenumberEnd: 1689
    functionName: tests::test_deserialize_complete_multipart_upload_result
    functionSourceFile: /src/opendal/core/services/s3/src/core.rs
    functionUses: 0
    functionsReached:
    - Bytes::from
    - Result::reader
    - quick_xml::de::from_reader
    - expect
    linkageType: ''
    returnType: void
    signature: fn test_deserialize_complete_multipart_upload_result()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Bytes::from
      Src: /src/opendal/core/services/s3/src/core.rs:1693,1
    - Dst: quick_xml::de::from_reader
      Src: /src/opendal/core/services/s3/src/core.rs:1705,1
    - Dst: Result::reader
      Src: /src/opendal/core/services/s3/src/core.rs:1705,1
    - Dst: expect
      Src: /src/opendal/core/services/s3/src/core.rs:1705,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 1713
      start: 1692
    functionDepth: 32
    functionLinenumber: 1692
    functionLinenumberEnd: 1713
    functionName: tests::test_deserialize_complete_multipart_upload_result_when_return_error
    functionSourceFile: /src/opendal/core/services/s3/src/core.rs
    functionUses: 0
    functionsReached:
    - Bytes::from
    - Result::reader
    - quick_xml::de::from_reader
    - expect
    linkageType: ''
    returnType: void
    signature: fn test_deserialize_complete_multipart_upload_result_when_return_error()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: bytes::Bytes::from
      Src: /src/opendal/core/services/s3/src/core.rs:1777,1
    - Dst: quick_xml::de::from_reader
      Src: /src/opendal/core/services/s3/src/core.rs:1811,1
    - Dst: Result::reader
      Src: /src/opendal/core/services/s3/src/core.rs:1811,1
    - Dst: expect
      Src: /src/opendal/core/services/s3/src/core.rs:1811,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 1833
      start: 1776
    functionDepth: 31
    functionLinenumber: 1776
    functionLinenumberEnd: 1833
    functionName: tests::test_parse_list_output_v1
    functionSourceFile: /src/opendal/core/services/s3/src/core.rs
    functionUses: 0
    functionsReached:
    - Result::reader
    - quick_xml::de::from_reader
    - expect
    - bytes::Bytes::from
    linkageType: ''
    returnType: void
    signature: fn test_parse_list_output_v1()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: bytes::Bytes::from
      Src: /src/opendal/core/services/s3/src/core.rs:1837,1
    - Dst: quick_xml::de::from_reader
      Src: /src/opendal/core/services/s3/src/core.rs:1875,1
    - Dst: Result::reader
      Src: /src/opendal/core/services/s3/src/core.rs:1875,1
    - Dst: expect
      Src: /src/opendal/core/services/s3/src/core.rs:1875,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 1909
      start: 1836
    functionDepth: 31
    functionLinenumber: 1836
    functionLinenumberEnd: 1909
    functionName: tests::test_parse_list_output_v2
    functionSourceFile: /src/opendal/core/services/s3/src/core.rs
    functionUses: 0
    functionsReached:
    - Result::reader
    - quick_xml::de::from_reader
    - expect
    - bytes::Bytes::from
    linkageType: ''
    returnType: void
    signature: fn test_parse_list_output_v2()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: bytes::Bytes::from
      Src: /src/opendal/core/services/s3/src/core.rs:1913,1
    - Dst: quick_xml::de::from_reader
      Src: /src/opendal/core/services/s3/src/core.rs:1968,1
    - Dst: Result::reader
      Src: /src/opendal/core/services/s3/src/core.rs:1968,1
    - Dst: expect
      Src: /src/opendal/core/services/s3/src/core.rs:1968,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 2019
      start: 1912
    functionDepth: 31
    functionLinenumber: 1912
    functionLinenumberEnd: 2019
    functionName: tests::test_parse_list_object_versions
    functionSourceFile: /src/opendal/core/services/s3/src/core.rs
    functionUses: 0
    functionsReached:
    - Result::reader
    - quick_xml::de::from_reader
    - expect
    - bytes::Bytes::from
    linkageType: ''
    returnType: void
    signature: fn test_parse_list_object_versions()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: parse_s3_error_code
      Src: /src/opendal/core/services/s3/src/core.rs:2086,1
    - Dst: as_str
      Src: /src/opendal/core/services/s3/src/core.rs:2086,1
    - Dst: Option::unwrap_or
      Src: /src/opendal/core/services/s3/src/core.rs:2086,1
    - Dst: Error::new
      Src: /src/opendal/core/services/s3/src/core.rs:2087,1
    - Dst: with_error_response_context
      Src: /src/opendal/core/services/s3/src/core.rs:2089,1
    - Dst: Error::set_temporary
      Src: /src/opendal/core/services/s3/src/core.rs:2092,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 17
    argCount: 2
    argNames:
    - s3_error
    - parts
    argTypes:
    - S3Error
    - Parts
    constantsTouched: []
    func_position:
      end: 2096
      start: 2084
    functionDepth: 36
    functionLinenumber: 2084
    functionLinenumberEnd: 2096
    functionName: error::from_s3_error
    functionSourceFile: /src/opendal/core/services/s3/src/core.rs
    functionUses: 0
    functionsReached:
    - Error::set_temporary
    - parse_s3_error_code
    - Option::unwrap_or
    - Error::new
    - as_str
    - with_error_response_context
    linkageType: ''
    returnType: Error
    signature: 'pub(crate) fn from_s3_error(s3_error: S3Error, parts: Parts) -> Error'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Some
      Src: /src/opendal/core/services/s3/src/core.rs:2106,1
    - Dst: Some
      Src: /src/opendal/core/services/s3/src/core.rs:2111,1
    - Dst: Some
      Src: /src/opendal/core/services/s3/src/core.rs:2113,1
    - Dst: Some
      Src: /src/opendal/core/services/s3/src/core.rs:2116,1
    - Dst: Some
      Src: /src/opendal/core/services/s3/src/core.rs:2120,1
    - Dst: Some
      Src: /src/opendal/core/services/s3/src/core.rs:2126,1
    - Dst: Some
      Src: /src/opendal/core/services/s3/src/core.rs:2130,1
    - Dst: Some
      Src: /src/opendal/core/services/s3/src/core.rs:2139,1
    - Dst: Some
      Src: /src/opendal/core/services/s3/src/core.rs:2140,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 20
    argCount: 1
    argNames:
    - code
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 2143
      start: 2100
    functionDepth: 0
    functionLinenumber: 2100
    functionLinenumberEnd: 2143
    functionName: error::parse_s3_error_code
    functionSourceFile: /src/opendal/core/services/s3/src/core.rs
    functionUses: 0
    functionsReached:
    - Some
    linkageType: ''
    returnType: Option
    signature: 'pub fn parse_s3_error_code(code: &str) -> Option<(ErrorKind, bool)>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: bytes::Bytes::from
      Src: /src/opendal/core/services/tos/src/core.rs:1182,1
    - Dst: de::from_reader
      Src: /src/opendal/core/services/tos/src/core.rs:1193,1
    - Dst: Result::reader
      Src: /src/opendal/core/services/tos/src/core.rs:1193,1
    - Dst: expect
      Src: /src/opendal/core/services/tos/src/core.rs:1193,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 1195
      start: 1181
    functionDepth: 31
    functionLinenumber: 1181
    functionLinenumberEnd: 1195
    functionName: error::test_parse_error_from_unrelated_input
    functionSourceFile: /src/opendal/core/services/tos/src/core.rs
    functionUses: 0
    functionsReached:
    - Result::reader
    - expect
    - de::from_reader
    - bytes::Bytes::from
    linkageType: ''
    returnType: void
    signature: fn test_parse_error_from_unrelated_input()
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 2197
      start: 2192
    functionDepth: 0
    functionLinenumber: 2192
    functionLinenumberEnd: 2197
    functionName: error::test_parse_s3_error_code_invalid_range
    functionSourceFile: /src/opendal/core/services/s3/src/core.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: fn test_parse_s3_error_code_invalid_range()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: to_string
      Src: /src/opendal/core/services/s3/src/writer.rs:47,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 4
    argNames:
    - core
    - ctx
    - path
    - op
    argTypes:
    - Arc<S3Core>
    - OperationContext
    - '&str'
    - OpWrite
    constantsTouched: []
    func_position:
      end: 50
      start: 43
    functionDepth: 2
    functionLinenumber: 43
    functionLinenumberEnd: 50
    functionName: S3Writer::new
    functionSourceFile: /src/opendal/core/services/s3/src/writer.rs
    functionUses: 1
    functionsReached:
    - to_string
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(core: Arc<S3Core>, ctx: OperationContext, path: &str, op:
      OpWrite) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Metadata::new
      Src: /src/opendal/core/services/s3/src/writer.rs:53,1
    - Dst: EntryMode::from_path
      Src: /src/opendal/core/services/s3/src/writer.rs:53,1
    - Dst: parse_etag
      Src: /src/opendal/core/services/s3/src/writer.rs:54,1
    - Dst: Result::set_etag
      Src: /src/opendal/core/services/s3/src/writer.rs:55,1
    - Dst: parse_header_to_str
      Src: /src/opendal/core/services/s3/src/writer.rs:57,1
    - Dst: Result::set_version
      Src: /src/opendal/core/services/s3/src/writer.rs:58,1
    - Dst: parse_header_to_str
      Src: /src/opendal/core/services/s3/src/writer.rs:61,1
    - Dst: and_then
      Src: /src/opendal/core/services/s3/src/writer.rs:61,1
    - Dst: Option::parse
      Src: /src/opendal/core/services/s3/src/writer.rs:61,1
    - Dst: Result::ok
      Src: /src/opendal/core/services/s3/src/writer.rs:61,1
    - Dst: Result::set_content_length
      Src: /src/opendal/core/services/s3/src/writer.rs:63,1
    - Dst: Ok
      Src: /src/opendal/core/services/s3/src/writer.rs:65,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 31
    argCount: 2
    argNames:
    - path
    - headers
    argTypes:
    - '&str'
    - '&http::HeaderMap'
    constantsTouched: []
    func_position:
      end: 66
      start: 52
    functionDepth: 39
    functionLinenumber: 52
    functionLinenumberEnd: 66
    functionName: S3Writer::parse_header_into_meta
    functionSourceFile: /src/opendal/core/services/s3/src/writer.rs
    functionUses: 3
    functionsReached:
    - Metadata::new
    - Result::ok
    - and_then
    - Ok
    - Option::parse
    - parse_header_to_str
    - EntryMode::from_path
    - Result::set_version
    - Result::set_content_length
    - parse_etag
    - Result::set_etag
    linkageType: ''
    returnType: Result
    signature: 'fn parse_header_into_meta(path: &str, headers: &http::HeaderMap) ->
      Result<Metadata>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: s3_put_object_request
      Src: /src/opendal/core/services/s3/src/writer.rs:71,1
    - Dst: Some
      Src: /src/opendal/core/services/s3/src/writer.rs:73,1
    - Dst: send
      Src: /src/opendal/core/services/s3/src/writer.rs:75,1
    - Dst: status
      Src: /src/opendal/core/services/s3/src/writer.rs:77,1
    - Dst: S3Writer::parse_header_into_meta
      Src: /src/opendal/core/services/s3/src/writer.rs:79,1
    - Dst: headers
      Src: /src/opendal/core/services/s3/src/writer.rs:79,1
    - Dst: Ok
      Src: /src/opendal/core/services/s3/src/writer.rs:82,1
    - Dst: Err
      Src: /src/opendal/core/services/s3/src/writer.rs:83,1
    - Dst: core::parse_error
      Src: /src/opendal/core/services/s3/src/writer.rs:83,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 29
    argCount: 2
    argNames:
    - size
    - body
    argTypes:
    - u64
    - Buffer
    constantsTouched: []
    func_position:
      end: 85
      start: 70
    functionDepth: 34
    functionLinenumber: 70
    functionLinenumberEnd: 85
    functionName: S3Writer::write_once
    functionSourceFile: /src/opendal/core/services/s3/src/writer.rs
    functionUses: 0
    functionsReached:
    - status
    - Ok
    - Some
    - Err
    - s3_put_object_request
    - headers
    - core::parse_error
    - send
    - S3Writer::parse_header_into_meta
    linkageType: ''
    returnType: Result
    signature: 'async fn write_once(&self, size: u64, body: Buffer) -> Result<Metadata>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: s3_initiate_multipart_upload
      Src: /src/opendal/core/services/s3/src/writer.rs:88,1
    - Dst: status
      Src: /src/opendal/core/services/s3/src/writer.rs:93,1
    - Dst: into_body
      Src: /src/opendal/core/services/s3/src/writer.rs:97,1
    - Dst: quick_xml::de::from_reader
      Src: /src/opendal/core/services/s3/src/writer.rs:100,1
    - Dst: Result::reader
      Src: /src/opendal/core/services/s3/src/writer.rs:100,1
    - Dst: map_err
      Src: /src/opendal/core/services/s3/src/writer.rs:100,1
    - Dst: Ok
      Src: /src/opendal/core/services/s3/src/writer.rs:102,1
    - Dst: Err
      Src: /src/opendal/core/services/s3/src/writer.rs:104,1
    - Dst: core::parse_error
      Src: /src/opendal/core/services/s3/src/writer.rs:104,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 27
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 106
      start: 87
    functionDepth: 33
    functionLinenumber: 87
    functionLinenumberEnd: 106
    functionName: S3Writer::initiate_part
    functionSourceFile: /src/opendal/core/services/s3/src/writer.rs
    functionUses: 0
    functionsReached:
    - map_err
    - status
    - Ok
    - s3_initiate_multipart_upload
    - into_body
    - Err
    - quick_xml::de::from_reader
    - core::parse_error
    - Result::reader
    linkageType: ''
    returnType: Result
    signature: async fn initiate_part(&self) -> Result<String>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: calculate_checksum
      Src: /src/opendal/core/services/s3/src/writer.rs:118,1
    - Dst: s3_upload_part_request
      Src: /src/opendal/core/services/s3/src/writer.rs:120,1
    - Dst: Option::clone
      Src: /src/opendal/core/services/s3/src/writer.rs:126,1
    - Dst: send
      Src: /src/opendal/core/services/s3/src/writer.rs:129,1
    - Dst: status
      Src: /src/opendal/core/services/s3/src/writer.rs:131,1
    - Dst: parse_etag
      Src: /src/opendal/core/services/s3/src/writer.rs:135,1
    - Dst: headers
      Src: /src/opendal/core/services/s3/src/writer.rs:135,1
    - Dst: ok_or_else
      Src: /src/opendal/core/services/s3/src/writer.rs:135,1
    - Dst: Error::new
      Src: /src/opendal/core/services/s3/src/writer.rs:137,1
    - Dst: to_string
      Src: /src/opendal/core/services/s3/src/writer.rs:135,1
    - Dst: Ok
      Src: /src/opendal/core/services/s3/src/writer.rs:144,1
    - Dst: Err
      Src: /src/opendal/core/services/s3/src/writer.rs:151,1
    - Dst: core::parse_error
      Src: /src/opendal/core/services/s3/src/writer.rs:151,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 39
    argCount: 4
    argNames:
    - upload_id
    - part_number
    - size
    - body
    argTypes:
    - '&str'
    - usize
    - u64
    - Buffer
    constantsTouched: []
    func_position:
      end: 153
      start: 108
    functionDepth: 39
    functionLinenumber: 108
    functionLinenumberEnd: 153
    functionName: S3Writer::write_part
    functionSourceFile: /src/opendal/core/services/s3/src/writer.rs
    functionUses: 0
    functionsReached:
    - to_string
    - s3_upload_part_request
    - status
    - Ok
    - Error::new
    - Err
    - headers
    - parse_etag
    - core::parse_error
    - Option::clone
    - send
    - calculate_checksum
    - ok_or_else
    linkageType: ''
    returnType: Result
    signature: 'async fn write_part(&self,upload_id: &str,part_number: usize,size:
      u64,body: Buffer,) -> Result<oio::MultipartPart>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: (String, Metadata)::iter
      Src: /src/opendal/core/services/s3/src/writer.rs:160,1
    - Dst: map
      Src: /src/opendal/core/services/s3/src/writer.rs:160,1
    - Dst: clone
      Src: /src/opendal/core/services/s3/src/writer.rs:165,1
    - Dst: Default::default
      Src: /src/opendal/core/services/s3/src/writer.rs:166,1
    - Dst: clone
      Src: /src/opendal/core/services/s3/src/writer.rs:171,1
    - Dst: clone
      Src: /src/opendal/core/services/s3/src/writer.rs:172,1
    - Dst: clone
      Src: /src/opendal/core/services/s3/src/writer.rs:176,1
    - Dst: Default::default
      Src: /src/opendal/core/services/s3/src/writer.rs:177,1
    - Dst: Result::collect
      Src: /src/opendal/core/services/s3/src/writer.rs:160,1
    - Dst: s3_complete_multipart_upload
      Src: /src/opendal/core/services/s3/src/writer.rs:183,1
    - Dst: status
      Src: /src/opendal/core/services/s3/src/writer.rs:188,1
    - Dst: S3Writer::parse_header_into_meta
      Src: /src/opendal/core/services/s3/src/writer.rs:190,1
    - Dst: headers
      Src: /src/opendal/core/services/s3/src/writer.rs:190,1
    - Dst: into_parts
      Src: /src/opendal/core/services/s3/src/writer.rs:196,1
    - Dst: quick_xml::de::from_reader
      Src: /src/opendal/core/services/s3/src/writer.rs:199,1
    - Dst: reader
      Src: /src/opendal/core/services/s3/src/writer.rs:199,1
    - Dst: map_err
      Src: /src/opendal/core/services/s3/src/writer.rs:199,1
    - Dst: is_empty
      Src: /src/opendal/core/services/s3/src/writer.rs:200,1
    - Dst: Err
      Src: /src/opendal/core/services/s3/src/writer.rs:201,1
    - Dst: core::from_s3_error
      Src: /src/opendal/core/services/s3/src/writer.rs:201,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/s3/src/writer.rs:205,1
    - Dst: Result::set_etag
      Src: /src/opendal/core/services/s3/src/writer.rs:211,1
    - Dst: Ok
      Src: /src/opendal/core/services/s3/src/writer.rs:213,1
    - Dst: Err
      Src: /src/opendal/core/services/s3/src/writer.rs:215,1
    - Dst: core::parse_error
      Src: /src/opendal/core/services/s3/src/writer.rs:215,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 85
    argCount: 2
    argNames:
    - upload_id
    - parts
    argTypes:
    - '&str'
    - '&[oio::MultipartPart]'
    constantsTouched: []
    func_position:
      end: 217
      start: 155
    functionDepth: 36
    functionLinenumber: 155
    functionLinenumberEnd: 217
    functionName: S3Writer::complete_part
    functionSourceFile: /src/opendal/core/services/s3/src/writer.rs
    functionUses: 0
    functionsReached:
    - status
    - Default::default
    - clone
    - map
    - quick_xml::de::from_reader
    - (String, Metadata)::iter
    - core::from_s3_error
    - map_err
    - reader
    - Ok
    - headers
    - '&str::to_string'
    - Result::set_etag
    - S3Writer::parse_header_into_meta
    - is_empty
    - s3_complete_multipart_upload
    - Err
    - Result::collect
    - into_parts
    - core::parse_error
    linkageType: ''
    returnType: Result
    signature: 'async fn complete_part(&self,upload_id: &str,parts: &[oio::MultipartPart],)
      -> Result<Metadata>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: s3_abort_multipart_upload
      Src: /src/opendal/core/services/s3/src/writer.rs:220,1
    - Dst: status
      Src: /src/opendal/core/services/s3/src/writer.rs:224,1
    - Dst: Ok
      Src: /src/opendal/core/services/s3/src/writer.rs:226,1
    - Dst: Err
      Src: /src/opendal/core/services/s3/src/writer.rs:227,1
    - Dst: core::parse_error
      Src: /src/opendal/core/services/s3/src/writer.rs:227,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 1
    argNames:
    - upload_id
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 229
      start: 219
    functionDepth: 33
    functionLinenumber: 219
    functionLinenumberEnd: 229
    functionName: S3Writer::abort_part
    functionSourceFile: /src/opendal/core/services/s3/src/writer.rs
    functionUses: 0
    functionsReached:
    - s3_abort_multipart_upload
    - status
    - Ok
    - Err
    - core::parse_error
    linkageType: ''
    returnType: Result
    signature: 'async fn abort_part(&self, upload_id: &str) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: s3_head_object
      Src: /src/opendal/core/services/s3/src/writer.rs:234,1
    - Dst: OpStat::default
      Src: /src/opendal/core/services/s3/src/writer.rs:236,1
    - Dst: status
      Src: /src/opendal/core/services/s3/src/writer.rs:239,1
    - Dst: Ok
      Src: /src/opendal/core/services/s3/src/writer.rs:242,1
    - Dst: parse_content_length
      Src: /src/opendal/core/services/s3/src/writer.rs:242,1
    - Dst: headers
      Src: /src/opendal/core/services/s3/src/writer.rs:242,1
    - Dst: unwrap_or_default
      Src: /src/opendal/core/services/s3/src/writer.rs:242,1
    - Dst: Ok
      Src: /src/opendal/core/services/s3/src/writer.rs:243,1
    - Dst: Err
      Src: /src/opendal/core/services/s3/src/writer.rs:244,1
    - Dst: core::parse_error
      Src: /src/opendal/core/services/s3/src/writer.rs:244,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 24
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 246
      start: 233
    functionDepth: 40
    functionLinenumber: 233
    functionLinenumberEnd: 246
    functionName: S3Writer::offset
    functionSourceFile: /src/opendal/core/services/s3/src/writer.rs
    functionUses: 0
    functionsReached:
    - status
    - Ok
    - s3_head_object
    - Err
    - parse_content_length
    - headers
    - core::parse_error
    - unwrap_or_default
    - OpStat::default
    linkageType: ''
    returnType: Result
    signature: async fn offset(&self) -> Result<u64>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: s3_append_object_request
      Src: /src/opendal/core/services/s3/src/writer.rs:249,1
    - Dst: send
      Src: /src/opendal/core/services/s3/src/writer.rs:253,1
    - Dst: status
      Src: /src/opendal/core/services/s3/src/writer.rs:255,1
    - Dst: S3Writer::parse_header_into_meta
      Src: /src/opendal/core/services/s3/src/writer.rs:257,1
    - Dst: headers
      Src: /src/opendal/core/services/s3/src/writer.rs:257,1
    - Dst: Ok
      Src: /src/opendal/core/services/s3/src/writer.rs:260,1
    - Dst: Err
      Src: /src/opendal/core/services/s3/src/writer.rs:261,1
    - Dst: core::parse_error
      Src: /src/opendal/core/services/s3/src/writer.rs:261,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 28
    argCount: 3
    argNames:
    - offset
    - size
    - body
    argTypes:
    - u64
    - u64
    - Buffer
    constantsTouched: []
    func_position:
      end: 263
      start: 248
    functionDepth: 34
    functionLinenumber: 248
    functionLinenumberEnd: 263
    functionName: S3Writer::append
    functionSourceFile: /src/opendal/core/services/s3/src/writer.rs
    functionUses: 0
    functionsReached:
    - status
    - Ok
    - s3_append_object_request
    - Err
    - headers
    - core::parse_error
    - send
    - S3Writer::parse_header_into_meta
    linkageType: ''
    returnType: Result
    signature: 'async fn append(&self, offset: u64, size: u64, body: Buffer) -> Result<Metadata>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: register::<S3>
      Src: /src/opendal/core/services/s3/src/lib.rs:39,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - registry
    argTypes:
    - '&opendal_core::OperatorRegistry'
    constantsTouched: []
    func_position:
      end: 40
      start: 38
    functionDepth: 0
    functionLinenumber: 38
    functionLinenumberEnd: 40
    functionName: register_s3_service
    functionSourceFile: /src/opendal/core/services/s3/src/lib.rs
    functionUses: 1
    functionsReached:
    - register::<S3>
    linkageType: ''
    returnType: void
    signature: 'pub fn register_s3_service(registry: &opendal_core::OperatorRegistry)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::debug_struct
      Src: /src/opendal/core/services/s3/src/backend.rs:87,1
    - Dst: field
      Src: /src/opendal/core/services/s3/src/backend.rs:87,1
    - Dst: finish_non_exhaustive
      Src: /src/opendal/core/services/s3/src/backend.rs:87,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - f
    argTypes:
    - '&mut std::fmt::Formatter<''_>'
    constantsTouched: []
    func_position:
      end: 90
      start: 86
    functionDepth: 5
    functionLinenumber: 86
    functionLinenumberEnd: 90
    functionName: S3Builder::fmt
    functionSourceFile: /src/opendal/core/services/s3/src/backend.rs
    functionUses: 0
    functionsReached:
    - field
    - Result::debug_struct
    - finish_non_exhaustive
    linkageType: ''
    returnType: std::fmt::Result
    signature: 'fn fmt(&self, f: &mut std::fmt::Formatter<''_>) -> std::fmt::Result'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::is_empty
      Src: /src/opendal/core/services/s3/src/backend.rs:98,1
    - Dst: Some
      Src: /src/opendal/core/services/s3/src/backend.rs:101,1
    - Dst: Result::to_string
      Src: /src/opendal/core/services/s3/src/backend.rs:101,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - root
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 105
      start: 97
    functionDepth: 4
    functionLinenumber: 97
    functionLinenumberEnd: 105
    functionName: S3Builder::root
    functionSourceFile: /src/opendal/core/services/s3/src/backend.rs
    functionUses: 0
    functionsReached:
    - Result::is_empty
    - Result::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn root(mut self, root: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: usize::to_string
      Src: /src/opendal/core/services/s3/src/backend.rs:109,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - bucket
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 112
      start: 108
    functionDepth: 2
    functionLinenumber: 108
    functionLinenumberEnd: 112
    functionName: S3Builder::bucket
    functionSourceFile: /src/opendal/core/services/s3/src/backend.rs
    functionUses: 0
    functionsReached:
    - usize::to_string
    linkageType: ''
    returnType: Self
    signature: 'pub fn bucket(mut self, bucket: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self::is_empty
      Src: /src/opendal/core/services/s3/src/backend.rs:127,1
    - Dst: Some
      Src: /src/opendal/core/services/s3/src/backend.rs:129,1
    - Dst: Self::trim_end_matches
      Src: /src/opendal/core/services/s3/src/backend.rs:129,1
    - Dst: to_string
      Src: /src/opendal/core/services/s3/src/backend.rs:129,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 1
    argNames:
    - endpoint
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 133
      start: 126
    functionDepth: 4
    functionLinenumber: 126
    functionLinenumberEnd: 133
    functionName: S3Builder::endpoint
    functionSourceFile: /src/opendal/core/services/s3/src/backend.rs
    functionUses: 0
    functionsReached:
    - Self::is_empty
    - to_string
    - Self::trim_end_matches
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn endpoint(mut self, endpoint: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self::is_empty
      Src: /src/opendal/core/services/s3/src/backend.rs:142,1
    - Dst: Some
      Src: /src/opendal/core/services/s3/src/backend.rs:143,1
    - Dst: Self::to_string
      Src: /src/opendal/core/services/s3/src/backend.rs:143,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 1
    argNames:
    - region
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 147
      start: 141
    functionDepth: 4
    functionLinenumber: 141
    functionLinenumberEnd: 147
    functionName: S3Builder::region
    functionSourceFile: /src/opendal/core/services/s3/src/backend.rs
    functionUses: 0
    functionsReached:
    - Self::is_empty
    - Self::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn region(mut self, region: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::is_empty
      Src: /src/opendal/core/services/s3/src/backend.rs:154,1
    - Dst: Some
      Src: /src/opendal/core/services/s3/src/backend.rs:155,1
    - Dst: Result::to_string
      Src: /src/opendal/core/services/s3/src/backend.rs:155,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 1
    argNames:
    - v
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 159
      start: 153
    functionDepth: 4
    functionLinenumber: 153
    functionLinenumberEnd: 159
    functionName: S3Builder::access_key_id
    functionSourceFile: /src/opendal/core/services/s3/src/backend.rs
    functionUses: 0
    functionsReached:
    - Result::is_empty
    - Result::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn access_key_id(mut self, v: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::is_empty
      Src: /src/opendal/core/services/s3/src/backend.rs:166,1
    - Dst: Some
      Src: /src/opendal/core/services/s3/src/backend.rs:167,1
    - Dst: Result::to_string
      Src: /src/opendal/core/services/s3/src/backend.rs:167,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 1
    argNames:
    - v
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 171
      start: 165
    functionDepth: 4
    functionLinenumber: 165
    functionLinenumberEnd: 171
    functionName: S3Builder::secret_access_key
    functionSourceFile: /src/opendal/core/services/s3/src/backend.rs
    functionUses: 0
    functionsReached:
    - Result::is_empty
    - Result::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn secret_access_key(mut self, v: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::is_empty
      Src: /src/opendal/core/services/s3/src/backend.rs:178,1
    - Dst: Some
      Src: /src/opendal/core/services/s3/src/backend.rs:179,1
    - Dst: Result::to_string
      Src: /src/opendal/core/services/s3/src/backend.rs:179,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 1
    argNames:
    - v
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 183
      start: 177
    functionDepth: 4
    functionLinenumber: 177
    functionLinenumberEnd: 183
    functionName: S3Builder::role_arn
    functionSourceFile: /src/opendal/core/services/s3/src/backend.rs
    functionUses: 0
    functionsReached:
    - Result::is_empty
    - Result::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn role_arn(mut self, v: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::is_empty
      Src: /src/opendal/core/services/s3/src/backend.rs:187,1
    - Dst: Some
      Src: /src/opendal/core/services/s3/src/backend.rs:188,1
    - Dst: Result::to_string
      Src: /src/opendal/core/services/s3/src/backend.rs:188,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 1
    argNames:
    - v
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 192
      start: 186
    functionDepth: 4
    functionLinenumber: 186
    functionLinenumberEnd: 192
    functionName: S3Builder::external_id
    functionSourceFile: /src/opendal/core/services/s3/src/backend.rs
    functionUses: 0
    functionsReached:
    - Result::is_empty
    - Result::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn external_id(mut self, v: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::is_empty
      Src: /src/opendal/core/services/s3/src/backend.rs:196,1
    - Dst: Some
      Src: /src/opendal/core/services/s3/src/backend.rs:197,1
    - Dst: Result::to_string
      Src: /src/opendal/core/services/s3/src/backend.rs:197,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 1
    argNames:
    - v
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 201
      start: 195
    functionDepth: 4
    functionLinenumber: 195
    functionLinenumberEnd: 201
    functionName: S3Builder::role_session_name
    functionSourceFile: /src/opendal/core/services/s3/src/backend.rs
    functionUses: 0
    functionsReached:
    - Result::is_empty
    - Result::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn role_session_name(mut self, v: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Some
      Src: /src/opendal/core/services/s3/src/backend.rs:205,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - v
    argTypes:
    - u32
    constantsTouched: []
    func_position:
      end: 207
      start: 204
    functionDepth: 0
    functionLinenumber: 204
    functionLinenumberEnd: 207
    functionName: S3Builder::assume_role_duration_seconds
    functionSourceFile: /src/opendal/core/services/s3/src/backend.rs
    functionUses: 0
    functionsReached:
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn assume_role_duration_seconds(mut self, v: u32) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Some
      Src: /src/opendal/core/services/s3/src/backend.rs:211,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - tags
    argTypes:
    - HashMap<String, String>
    constantsTouched: []
    func_position:
      end: 213
      start: 210
    functionDepth: 0
    functionLinenumber: 210
    functionLinenumberEnd: 213
    functionName: S3Builder::assume_role_session_tags
    functionSourceFile: /src/opendal/core/services/s3/src/backend.rs
    functionUses: 0
    functionsReached:
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn assume_role_session_tags(mut self, tags: HashMap<String, String>)
      -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::is_empty
      Src: /src/opendal/core/services/s3/src/backend.rs:228,1
    - Dst: Some
      Src: /src/opendal/core/services/s3/src/backend.rs:229,1
    - Dst: Result::to_string
      Src: /src/opendal/core/services/s3/src/backend.rs:229,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 1
    argNames:
    - v
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 233
      start: 227
    functionDepth: 4
    functionLinenumber: 227
    functionLinenumberEnd: 233
    functionName: S3Builder::default_storage_class
    functionSourceFile: /src/opendal/core/services/s3/src/backend.rs
    functionUses: 0
    functionsReached:
    - Result::is_empty
    - Result::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn default_storage_class(mut self, v: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::is_empty
      Src: /src/opendal/core/services/s3/src/backend.rs:246,1
    - Dst: Some
      Src: /src/opendal/core/services/s3/src/backend.rs:247,1
    - Dst: Result::to_string
      Src: /src/opendal/core/services/s3/src/backend.rs:247,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 1
    argNames:
    - v
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 251
      start: 245
    functionDepth: 4
    functionLinenumber: 245
    functionLinenumberEnd: 251
    functionName: S3Builder::server_side_encryption
    functionSourceFile: /src/opendal/core/services/s3/src/backend.rs
    functionUses: 0
    functionsReached:
    - Result::is_empty
    - Result::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn server_side_encryption(mut self, v: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::is_empty
      Src: /src/opendal/core/services/s3/src/backend.rs:270,1
    - Dst: Some
      Src: /src/opendal/core/services/s3/src/backend.rs:271,1
    - Dst: Result::to_string
      Src: /src/opendal/core/services/s3/src/backend.rs:271,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 1
    argNames:
    - v
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 275
      start: 269
    functionDepth: 4
    functionLinenumber: 269
    functionLinenumberEnd: 275
    functionName: S3Builder::server_side_encryption_aws_kms_key_id
    functionSourceFile: /src/opendal/core/services/s3/src/backend.rs
    functionUses: 0
    functionsReached:
    - Result::is_empty
    - Result::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn server_side_encryption_aws_kms_key_id(mut self, v: &str) ->
      Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::is_empty
      Src: /src/opendal/core/services/s3/src/backend.rs:288,1
    - Dst: Some
      Src: /src/opendal/core/services/s3/src/backend.rs:289,1
    - Dst: Result::to_string
      Src: /src/opendal/core/services/s3/src/backend.rs:289,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 1
    argNames:
    - v
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 293
      start: 287
    functionDepth: 4
    functionLinenumber: 287
    functionLinenumberEnd: 293
    functionName: S3Builder::server_side_encryption_customer_algorithm
    functionSourceFile: /src/opendal/core/services/s3/src/backend.rs
    functionUses: 0
    functionsReached:
    - Result::is_empty
    - Result::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn server_side_encryption_customer_algorithm(mut self, v: &str)
      -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::is_empty
      Src: /src/opendal/core/services/s3/src/backend.rs:309,1
    - Dst: Some
      Src: /src/opendal/core/services/s3/src/backend.rs:310,1
    - Dst: Result::to_string
      Src: /src/opendal/core/services/s3/src/backend.rs:310,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 1
    argNames:
    - v
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 314
      start: 308
    functionDepth: 4
    functionLinenumber: 308
    functionLinenumberEnd: 314
    functionName: S3Builder::server_side_encryption_customer_key
    functionSourceFile: /src/opendal/core/services/s3/src/backend.rs
    functionUses: 0
    functionsReached:
    - Result::is_empty
    - Result::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn server_side_encryption_customer_key(mut self, v: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::is_empty
      Src: /src/opendal/core/services/s3/src/backend.rs:329,1
    - Dst: Some
      Src: /src/opendal/core/services/s3/src/backend.rs:330,1
    - Dst: Result::to_string
      Src: /src/opendal/core/services/s3/src/backend.rs:330,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 1
    argNames:
    - v
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 334
      start: 328
    functionDepth: 4
    functionLinenumber: 328
    functionLinenumberEnd: 334
    functionName: S3Builder::server_side_encryption_customer_key_md5
    functionSourceFile: /src/opendal/core/services/s3/src/backend.rs
    functionUses: 0
    functionsReached:
    - Result::is_empty
    - Result::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn server_side_encryption_customer_key_md5(mut self, v: &str)
      -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Some
      Src: /src/opendal/core/services/s3/src/backend.rs:342,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/s3/src/backend.rs:342,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 344
      start: 341
    functionDepth: 2
    functionLinenumber: 341
    functionLinenumberEnd: 344
    functionName: S3Builder::server_side_encryption_with_aws_managed_kms_key
    functionSourceFile: /src/opendal/core/services/s3/src/backend.rs
    functionUses: 0
    functionsReached:
    - '&str::to_string'
    - Some
    linkageType: ''
    returnType: Self
    signature: pub fn server_side_encryption_with_aws_managed_kms_key(mut self) ->
      Self
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Some
      Src: /src/opendal/core/services/s3/src/backend.rs:355,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/s3/src/backend.rs:355,1
    - Dst: Some
      Src: /src/opendal/core/services/s3/src/backend.rs:356,1
    - Dst: Self::to_string
      Src: /src/opendal/core/services/s3/src/backend.rs:356,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 14
    argCount: 1
    argNames:
    - aws_kms_key_id
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 358
      start: 351
    functionDepth: 2
    functionLinenumber: 351
    functionLinenumberEnd: 358
    functionName: S3Builder::server_side_encryption_with_customer_managed_kms_key
    functionSourceFile: /src/opendal/core/services/s3/src/backend.rs
    functionUses: 0
    functionsReached:
    - Self::to_string
    - '&str::to_string'
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn server_side_encryption_with_customer_managed_kms_key(mut self,aws_kms_key_id:
      &str,) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Some
      Src: /src/opendal/core/services/s3/src/backend.rs:366,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/s3/src/backend.rs:366,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 368
      start: 365
    functionDepth: 2
    functionLinenumber: 365
    functionLinenumberEnd: 368
    functionName: S3Builder::server_side_encryption_with_s3_key
    functionSourceFile: /src/opendal/core/services/s3/src/backend.rs
    functionUses: 0
    functionsReached:
    - '&str::to_string'
    - Some
    linkageType: ''
    returnType: Self
    signature: pub fn server_side_encryption_with_s3_key(mut self) -> Self
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Some
      Src: /src/opendal/core/services/s3/src/backend.rs:376,1
    - Dst: Self::to_string
      Src: /src/opendal/core/services/s3/src/backend.rs:376,1
    - Dst: Some
      Src: /src/opendal/core/services/s3/src/backend.rs:377,1
    - Dst: encode
      Src: /src/opendal/core/services/s3/src/backend.rs:377,1
    - Dst: Md5::digest
      Src: /src/opendal/core/services/s3/src/backend.rs:378,1
    - Dst: Some
      Src: /src/opendal/core/services/s3/src/backend.rs:379,1
    - Dst: encode
      Src: /src/opendal/core/services/s3/src/backend.rs:379,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 22
    argCount: 2
    argNames:
    - algorithm
    - key
    argTypes:
    - '&str'
    - '&[u8]'
    constantsTouched: []
    func_position:
      end: 381
      start: 375
    functionDepth: 31
    functionLinenumber: 375
    functionLinenumberEnd: 381
    functionName: S3Builder::server_side_encryption_with_customer_key
    functionSourceFile: /src/opendal/core/services/s3/src/backend.rs
    functionUses: 0
    functionsReached:
    - Self::to_string
    - Md5::digest
    - encode
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn server_side_encryption_with_customer_key(mut self, algorithm:
      &str, key: &[u8]) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self::is_empty
      Src: /src/opendal/core/services/s3/src/backend.rs:389,1
    - Dst: Some
      Src: /src/opendal/core/services/s3/src/backend.rs:390,1
    - Dst: Self::to_string
      Src: /src/opendal/core/services/s3/src/backend.rs:390,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 1
    argNames:
    - token
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 393
      start: 388
    functionDepth: 4
    functionLinenumber: 388
    functionLinenumberEnd: 393
    functionName: S3Builder::session_token
    functionSourceFile: /src/opendal/core/services/s3/src/backend.rs
    functionUses: 0
    functionsReached:
    - Self::is_empty
    - Self::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn session_token(mut self, token: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 405
      start: 402
    functionDepth: 0
    functionLinenumber: 402
    functionLinenumberEnd: 405
    functionName: S3Builder::disable_config_load
    functionSourceFile: /src/opendal/core/services/s3/src/backend.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: pub fn disable_config_load(mut self) -> Self
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 415
      start: 412
    functionDepth: 0
    functionLinenumber: 412
    functionLinenumberEnd: 415
    functionName: S3Builder::disable_list_objects_v2
    functionSourceFile: /src/opendal/core/services/s3/src/backend.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: pub fn disable_list_objects_v2(mut self) -> Self
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 423
      start: 420
    functionDepth: 0
    functionLinenumber: 420
    functionLinenumberEnd: 423
    functionName: S3Builder::enable_request_payer
    functionSourceFile: /src/opendal/core/services/s3/src/backend.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: pub fn enable_request_payer(mut self) -> Self
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 432
      start: 429
    functionDepth: 0
    functionLinenumber: 429
    functionLinenumberEnd: 432
    functionName: S3Builder::disable_ec2_metadata
    functionSourceFile: /src/opendal/core/services/s3/src/backend.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: pub fn disable_ec2_metadata(mut self) -> Self
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 438
      start: 435
    functionDepth: 0
    functionLinenumber: 435
    functionLinenumberEnd: 438
    functionName: S3Builder::skip_signature
    functionSourceFile: /src/opendal/core/services/s3/src/backend.rs
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: pub fn skip_signature(mut self) -> Self
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: S3Builder::skip_signature
      Src: /src/opendal/core/services/s3/src/backend.rs:447,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 448
      start: 446
    functionDepth: 1
    functionLinenumber: 446
    functionLinenumberEnd: 448
    functionName: S3Builder::allow_anonymous
    functionSourceFile: /src/opendal/core/services/s3/src/backend.rs
    functionUses: 0
    functionsReached:
    - S3Builder::skip_signature
    linkageType: ''
    returnType: Self
    signature: pub fn allow_anonymous(self) -> Self
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 458
      start: 455
    functionDepth: 0
    functionLinenumber: 455
    functionLinenumberEnd: 458
    functionName: S3Builder::enable_virtual_host_style
    functionSourceFile: /src/opendal/core/services/s3/src/backend.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: pub fn enable_virtual_host_style(mut self) -> Self
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 467
      start: 465
    functionDepth: 0
    functionLinenumber: 465
    functionLinenumberEnd: 467
    functionName: S3Builder::disable_stat_with_override
    functionSourceFile: /src/opendal/core/services/s3/src/backend.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: pub fn disable_stat_with_override(self) -> Self
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 1
    argNames:
    - _enabled
    argTypes:
    - bool
    constantsTouched: []
    func_position:
      end: 476
      start: 474
    functionDepth: 0
    functionLinenumber: 474
    functionLinenumberEnd: 476
    functionName: S3Builder::enable_versioning
    functionSourceFile: /src/opendal/core/services/s3/src/backend.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: 'pub fn enable_versioning(self, _enabled: bool) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Some
      Src: /src/opendal/core/services/s3/src/backend.rs:480,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - chain
    argTypes:
    - ProvideCredentialChain<Credential>
    constantsTouched: []
    func_position:
      end: 482
      start: 479
    functionDepth: 0
    functionLinenumber: 479
    functionLinenumberEnd: 482
    functionName: S3Builder::credential_provider_chain
    functionSourceFile: /src/opendal/core/services/s3/src/backend.rs
    functionUses: 0
    functionsReached:
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn credential_provider_chain(mut self, chain: ProvideCredentialChain<Credential>)
      -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: is_empty
      Src: /src/opendal/core/services/s3/src/backend.rs:488,1
    - Dst: contains
      Src: /src/opendal/core/services/s3/src/backend.rs:494,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 1
    argNames:
    - config
    argTypes:
    - '&S3Config'
    constantsTouched: []
    func_position:
      end: 498
      start: 487
    functionDepth: 4
    functionLinenumber: 487
    functionLinenumberEnd: 498
    functionName: S3Builder::is_bucket_valid
    functionSourceFile: /src/opendal/core/services/s3/src/backend.rs
    functionUses: 0
    functionsReached:
    - contains
    - is_empty
    linkageType: ''
    returnType: bool
    signature: 'fn is_bucket_valid(config: &S3Config) -> bool'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: as_str
      Src: /src/opendal/core/services/s3/src/backend.rs:505,1
    - Dst: Self::starts_with
      Src: /src/opendal/core/services/s3/src/backend.rs:510,1
    - Dst: Self::to_string
      Src: /src/opendal/core/services/s3/src/backend.rs:511,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/s3/src/backend.rs:517,1
    - Dst: Self::replace
      Src: /src/opendal/core/services/s3/src/backend.rs:521,1
    - Dst: Url::parse
      Src: /src/opendal/core/services/s3/src/backend.rs:524,1
    - Dst: Result::to_string
      Src: /src/opendal/core/services/s3/src/backend.rs:526,1
    - Dst: trim_end_matches
      Src: /src/opendal/core/services/s3/src/backend.rs:526,1
    - Dst: to_string
      Src: /src/opendal/core/services/s3/src/backend.rs:526,1
    - Dst: get
      Src: /src/opendal/core/services/s3/src/backend.rs:530,1
    - Dst: Self::as_str
      Src: /src/opendal/core/services/s3/src/backend.rs:530,1
    - Dst: replace
      Src: /src/opendal/core/services/s3/src/backend.rs:531,1
    - Dst: Self::to_string
      Src: /src/opendal/core/services/s3/src/backend.rs:535,1
    - Dst: Self::replace
      Src: /src/opendal/core/services/s3/src/backend.rs:540,1
    - Dst: expect
      Src: /src/opendal/core/services/s3/src/backend.rs:542,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 53
    argCount: 2
    argNames:
    - config
    - region
    argTypes:
    - '&S3Config'
    - '&str'
    constantsTouched: []
    func_position:
      end: 546
      start: 501
    functionDepth: 33
    functionLinenumber: 501
    functionLinenumberEnd: 546
    functionName: S3Builder::build_endpoint
    functionSourceFile: /src/opendal/core/services/s3/src/backend.rs
    functionUses: 1
    functionsReached:
    - to_string
    - get
    - Self::replace
    - Result::to_string
    - Self::to_string
    - expect
    - trim_end_matches
    - replace
    - as_str
    - '&str::to_string'
    - Url::parse
    - Self::as_str
    - Self::starts_with
    linkageType: ''
    returnType: String
    signature: 'fn build_endpoint(config: &S3Config, region: &str) -> String'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 1
    argNames:
    - _batch_max_operations
    argTypes:
    - usize
    constantsTouched: []
    func_position:
      end: 555
      start: 553
    functionDepth: 0
    functionLinenumber: 553
    functionLinenumberEnd: 555
    functionName: S3Builder::batch_max_operations
    functionSourceFile: /src/opendal/core/services/s3/src/backend.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: 'pub fn batch_max_operations(self, _batch_max_operations: usize) ->
      Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 1
    argNames:
    - _delete_max_size
    argTypes:
    - usize
    constantsTouched: []
    func_position:
      end: 564
      start: 562
    functionDepth: 0
    functionLinenumber: 562
    functionLinenumberEnd: 564
    functionName: S3Builder::delete_max_size
    functionSourceFile: /src/opendal/core/services/s3/src/backend.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: 'pub fn delete_max_size(self, _delete_max_size: usize) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Some
      Src: /src/opendal/core/services/s3/src/backend.rs:573,1
    - Dst: Self::to_string
      Src: /src/opendal/core/services/s3/src/backend.rs:573,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - checksum_algorithm
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 576
      start: 572
    functionDepth: 2
    functionLinenumber: 572
    functionLinenumberEnd: 576
    functionName: S3Builder::checksum_algorithm
    functionSourceFile: /src/opendal/core/services/s3/src/backend.rs
    functionUses: 0
    functionsReached:
    - Self::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn checksum_algorithm(mut self, checksum_algorithm: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 585
      start: 583
    functionDepth: 0
    functionLinenumber: 583
    functionLinenumberEnd: 585
    functionName: S3Builder::disable_write_with_if_match
    functionSourceFile: /src/opendal/core/services/s3/src/backend.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: pub fn disable_write_with_if_match(self) -> Self
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 594
      start: 592
    functionDepth: 0
    functionLinenumber: 592
    functionLinenumberEnd: 594
    functionName: S3Builder::enable_write_with_append
    functionSourceFile: /src/opendal/core/services/s3/src/backend.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: pub fn enable_write_with_append(self) -> Self
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self::trim_end_matches
      Src: /src/opendal/core/services/s3/src/backend.rs:633,1
    - Dst: Self::starts_with
      Src: /src/opendal/core/services/s3/src/backend.rs:636,1
    - Dst: Self::to_string
      Src: /src/opendal/core/services/s3/src/backend.rs:637,1
    - Dst: Self::replace
      Src: /src/opendal/core/services/s3/src/backend.rs:644,1
    - Dst: Self::ends_with
      Src: /src/opendal/core/services/s3/src/backend.rs:654,1
    - Dst: Some
      Src: /src/opendal/core/services/s3/src/backend.rs:655,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/s3/src/backend.rs:655,1
    - Dst: Some
      Src: /src/opendal/core/services/s3/src/backend.rs:660,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/s3/src/backend.rs:660,1
    - Dst: Self::strip_prefix
      Src: /src/opendal/core/services/s3/src/backend.rs:663,1
    - Dst: and_then
      Src: /src/opendal/core/services/s3/src/backend.rs:663,1
    - Dst: Result::strip_suffix
      Src: /src/opendal/core/services/s3/src/backend.rs:665,1
    - Dst: Some
      Src: /src/opendal/core/services/s3/src/backend.rs:667,1
    - Dst: Self::to_string
      Src: /src/opendal/core/services/s3/src/backend.rs:667,1
    - Dst: Self::strip_prefix
      Src: /src/opendal/core/services/s3/src/backend.rs:674,1
    - Dst: Result::strip_suffix
      Src: /src/opendal/core/services/s3/src/backend.rs:675,1
    - Dst: Some
      Src: /src/opendal/core/services/s3/src/backend.rs:676,1
    - Dst: Self::to_string
      Src: /src/opendal/core/services/s3/src/backend.rs:676,1
    - Dst: Result::strip_suffix
      Src: /src/opendal/core/services/s3/src/backend.rs:678,1
    - Dst: Some
      Src: /src/opendal/core/services/s3/src/backend.rs:679,1
    - Dst: Self::to_string
      Src: /src/opendal/core/services/s3/src/backend.rs:679,1
    - Dst: http::Request::head
      Src: /src/opendal/core/services/s3/src/backend.rs:684,1
    - Dst: Result::body
      Src: /src/opendal/core/services/s3/src/backend.rs:684,1
    - Dst: Buffer::new
      Src: /src/opendal/core/services/s3/src/backend.rs:684,1
    - Dst: ok
      Src: /src/opendal/core/services/s3/src/backend.rs:684,1
    - Dst: HttpTransporter::default
      Src: /src/opendal/core/services/s3/src/backend.rs:686,1
    - Dst: Result::send
      Src: /src/opendal/core/services/s3/src/backend.rs:687,1
    - Dst: map_err
      Src: /src/opendal/core/services/s3/src/backend.rs:687,1
    - Dst: ok
      Src: /src/opendal/core/services/s3/src/backend.rs:687,1
    - Dst: headers
      Src: /src/opendal/core/services/s3/src/backend.rs:700,1
    - Dst: get
      Src: /src/opendal/core/services/s3/src/backend.rs:700,1
    - Dst: and_then
      Src: /src/opendal/core/services/s3/src/backend.rs:700,1
    - Dst: String::to_str
      Src: /src/opendal/core/services/s3/src/backend.rs:703,1
    - Dst: Result::ok
      Src: /src/opendal/core/services/s3/src/backend.rs:703,1
    - Dst: Some
      Src: /src/opendal/core/services/s3/src/backend.rs:705,1
    - Dst: Self::to_string
      Src: /src/opendal/core/services/s3/src/backend.rs:705,1
    - Dst: status
      Src: /src/opendal/core/services/s3/src/backend.rs:710,1
    - Dst: status
      Src: /src/opendal/core/services/s3/src/backend.rs:710,1
    - Dst: Some
      Src: /src/opendal/core/services/s3/src/backend.rs:711,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/s3/src/backend.rs:711,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 117
    argCount: 2
    argNames:
    - endpoint
    - bucket
    argTypes:
    - '&str'
    - '&str'
    constantsTouched: []
    func_position:
      end: 715
      start: 631
    functionDepth: 37
    functionLinenumber: 631
    functionLinenumberEnd: 715
    functionName: S3Builder::detect_region
    functionSourceFile: /src/opendal/core/services/s3/src/backend.rs
    functionUses: 1
    functionsReached:
    - Buffer::new
    - status
    - Self::trim_end_matches
    - Self::to_string
    - ok
    - HttpTransporter::default
    - map_err
    - get
    - Self::ends_with
    - and_then
    - http::Request::head
    - '&str::to_string'
    - headers
    - Result::body
    - Self::strip_prefix
    - Self::replace
    - Some
    - Result::strip_suffix
    - Result::ok
    - Result::send
    - Self::starts_with
    - String::to_str
    linkageType: ''
    returnType: Option
    signature: 'pub async fn detect_region(endpoint: &str, bucket: &str) -> Option<String>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Some
      Src: /src/opendal/core/services/s3/src/backend.rs:719,1
    - Dst: Self::to_string
      Src: /src/opendal/core/services/s3/src/backend.rs:719,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - acl
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 721
      start: 718
    functionDepth: 2
    functionLinenumber: 718
    functionLinenumberEnd: 721
    functionName: S3Builder::default_acl
    functionSourceFile: /src/opendal/core/services/s3/src/backend.rs
    functionUses: 0
    functionsReached:
    - Self::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn default_acl(mut self, acl: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: normalize_root
      Src: /src/opendal/core/services/s3/src/backend.rs:740,1
    - Dst: clone
      Src: /src/opendal/core/services/s3/src/backend.rs:740,1
    - Dst: unwrap_or_default
      Src: /src/opendal/core/services/s3/src/backend.rs:740,1
    - Dst: Self::is_bucket_valid
      Src: /src/opendal/core/services/s3/src/backend.rs:744,1
    - Dst: Ok
      Src: /src/opendal/core/services/s3/src/backend.rs:745,1
    - Dst: Err
      Src: /src/opendal/core/services/s3/src/backend.rs:747,1
    - Dst: Error::new
      Src: /src/opendal/core/services/s3/src/backend.rs:748,1
    - Dst: Self::with_context
      Src: /src/opendal/core/services/s3/src/backend.rs:748,1
    - Dst: Some
      Src: /src/opendal/core/services/s3/src/backend.rs:756,1
    - Dst: build_header_value
      Src: /src/opendal/core/services/s3/src/backend.rs:757,1
    - Dst: Result::map_err
      Src: /src/opendal/core/services/s3/src/backend.rs:757,1
    - Dst: Error::with_context
      Src: /src/opendal/core/services/s3/src/backend.rs:757,1
    - Dst: Some
      Src: /src/opendal/core/services/s3/src/backend.rs:763,1
    - Dst: build_header_value
      Src: /src/opendal/core/services/s3/src/backend.rs:764,1
    - Dst: Result::map_err
      Src: /src/opendal/core/services/s3/src/backend.rs:764,1
    - Dst: Error::with_context
      Src: /src/opendal/core/services/s3/src/backend.rs:765,1
    - Dst: Some
      Src: /src/opendal/core/services/s3/src/backend.rs:772,1
    - Dst: build_header_value
      Src: /src/opendal/core/services/s3/src/backend.rs:772,1
    - Dst: Result::map_err
      Src: /src/opendal/core/services/s3/src/backend.rs:772,1
    - Dst: Error::with_context
      Src: /src/opendal/core/services/s3/src/backend.rs:773,1
    - Dst: Some
      Src: /src/opendal/core/services/s3/src/backend.rs:780,1
    - Dst: build_header_value
      Src: /src/opendal/core/services/s3/src/backend.rs:780,1
    - Dst: Result::map_err
      Src: /src/opendal/core/services/s3/src/backend.rs:780,1
    - Dst: Error::with_context
      Src: /src/opendal/core/services/s3/src/backend.rs:781,1
    - Dst: Some
      Src: /src/opendal/core/services/s3/src/backend.rs:788,1
    - Dst: build_header_value
      Src: /src/opendal/core/services/s3/src/backend.rs:788,1
    - Dst: Result::map_err
      Src: /src/opendal/core/services/s3/src/backend.rs:788,1
    - Dst: Error::with_context
      Src: /src/opendal/core/services/s3/src/backend.rs:789,1
    - Dst: Some
      Src: /src/opendal/core/services/s3/src/backend.rs:796,1
    - Dst: build_header_value
      Src: /src/opendal/core/services/s3/src/backend.rs:796,1
    - Dst: Result::map_err
      Src: /src/opendal/core/services/s3/src/backend.rs:796,1
    - Dst: Error::with_context
      Src: /src/opendal/core/services/s3/src/backend.rs:797,1
    - Dst: as_deref
      Src: /src/opendal/core/services/s3/src/backend.rs:801,1
    - Dst: Some
      Src: /src/opendal/core/services/s3/src/backend.rs:802,1
    - Dst: Some
      Src: /src/opendal/core/services/s3/src/backend.rs:803,1
    - Dst: Err
      Src: /src/opendal/core/services/s3/src/backend.rs:806,1
    - Dst: Error::new
      Src: /src/opendal/core/services/s3/src/backend.rs:806,1
    - Dst: Result::to_string
      Src: /src/opendal/core/services/s3/src/backend.rs:815,1
    - Dst: std::env::var
      Src: /src/opendal/core/services/s3/src/backend.rs:817,1
    - Dst: or_else
      Src: /src/opendal/core/services/s3/src/backend.rs:817,1
    - Dst: std::env::var
      Src: /src/opendal/core/services/s3/src/backend.rs:818,1
    - Dst: map_err
      Src: /src/opendal/core/services/s3/src/backend.rs:817,1
    - Dst: Error::new
      Src: /src/opendal/core/services/s3/src/backend.rs:820,1
    - Dst: Self::with_operation
      Src: /src/opendal/core/services/s3/src/backend.rs:820,1
    - Dst: Self::with_context
      Src: /src/opendal/core/services/s3/src/backend.rs:820,1
    - Dst: is_none
      Src: /src/opendal/core/services/s3/src/backend.rs:830,1
    - Dst: std::env::var
      Src: /src/opendal/core/services/s3/src/backend.rs:831,1
    - Dst: or_else
      Src: /src/opendal/core/services/s3/src/backend.rs:831,1
    - Dst: std::env::var
      Src: /src/opendal/core/services/s3/src/backend.rs:832,1
    - Dst: or_else
      Src: /src/opendal/core/services/s3/src/backend.rs:831,1
    - Dst: std::env::var
      Src: /src/opendal/core/services/s3/src/backend.rs:833,1
    - Dst: ok
      Src: /src/opendal/core/services/s3/src/backend.rs:831,1
    - Dst: Self::trim_end_matches
      Src: /src/opendal/core/services/s3/src/backend.rs:836,1
    - Dst: to_string
      Src: /src/opendal/core/services/s3/src/backend.rs:836,1
    - Dst: Some
      Src: /src/opendal/core/services/s3/src/backend.rs:837,1
    - Dst: Self::build_endpoint
      Src: /src/opendal/core/services/s3/src/backend.rs:842,1
    - Dst: Context::new
      Src: /src/opendal/core/services/s3/src/backend.rs:848,1
    - Dst: Self::with_file_read
      Src: /src/opendal/core/services/s3/src/backend.rs:848,1
    - Dst: with_env
      Src: /src/opendal/core/services/s3/src/backend.rs:848,1
    - Dst: DefaultCredentialProvider::builder
      Src: /src/opendal/core/services/s3/src/backend.rs:851,1
    - Dst: OtelMetricsLayerBuilder::no_env
      Src: /src/opendal/core/services/s3/src/backend.rs:854,1
    - Dst: no_profile
      Src: /src/opendal/core/services/s3/src/backend.rs:854,1
    - Dst: OtelMetricsLayerBuilder::no_imds
      Src: /src/opendal/core/services/s3/src/backend.rs:858,1
    - Dst: ProvideCredentialChain::new
      Src: /src/opendal/core/services/s3/src/backend.rs:861,1
    - Dst: Self::push
      Src: /src/opendal/core/services/s3/src/backend.rs:861,1
    - Dst: OtelMetricsLayerBuilder::build
      Src: /src/opendal/core/services/s3/src/backend.rs:861,1
    - Dst: as_deref
      Src: /src/opendal/core/services/s3/src/backend.rs:866,1
    - Dst: StaticCredentialProvider::new
      Src: /src/opendal/core/services/s3/src/backend.rs:867,1
    - Dst: Self::with_session_token
      Src: /src/opendal/core/services/s3/src/backend.rs:867,1
    - Dst: StaticCredentialProvider::new
      Src: /src/opendal/core/services/s3/src/backend.rs:869,1
    - Dst: Self::push_front
      Src: /src/opendal/core/services/s3/src/backend.rs:871,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/s3/src/backend.rs:879,1
    - Dst: Self::with_http_send
      Src: /src/opendal/core/services/s3/src/backend.rs:879,1
    - Dst: HttpTransporter::default
      Src: /src/opendal/core/services/s3/src/backend.rs:879,1
    - Dst: AwsV4Signer::new
      Src: /src/opendal/core/services/s3/src/backend.rs:880,1
    - Dst: Signer::new
      Src: /src/opendal/core/services/s3/src/backend.rs:881,1
    - Dst: AssumeRoleCredentialProvider::new
      Src: /src/opendal/core/services/s3/src/backend.rs:883,1
    - Dst: Self::clone
      Src: /src/opendal/core/services/s3/src/backend.rs:883,1
    - Dst: Self::with_region
      Src: /src/opendal/core/services/s3/src/backend.rs:883,1
    - Dst: Self::clone
      Src: /src/opendal/core/services/s3/src/backend.rs:884,1
    - Dst: with_regional_sts_endpoint
      Src: /src/opendal/core/services/s3/src/backend.rs:883,1
    - Dst: with_external_id
      Src: /src/opendal/core/services/s3/src/backend.rs:888,1
    - Dst: Self::clone
      Src: /src/opendal/core/services/s3/src/backend.rs:888,1
    - Dst: with_role_session_name
      Src: /src/opendal/core/services/s3/src/backend.rs:892,1
    - Dst: Self::clone
      Src: /src/opendal/core/services/s3/src/backend.rs:892,1
    - Dst: with_duration_seconds
      Src: /src/opendal/core/services/s3/src/backend.rs:895,1
    - Dst: with_tags
      Src: /src/opendal/core/services/s3/src/backend.rs:898,1
    - Dst: Self::iter
      Src: /src/opendal/core/services/s3/src/backend.rs:899,1
    - Dst: map
      Src: /src/opendal/core/services/s3/src/backend.rs:899,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/s3/src/backend.rs:899,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/s3/src/backend.rs:899,1
    - Dst: Result::collect
      Src: /src/opendal/core/services/s3/src/backend.rs:899,1
    - Dst: ProvideCredentialChain::new
      Src: /src/opendal/core/services/s3/src/backend.rs:901,1
    - Dst: Self::push
      Src: /src/opendal/core/services/s3/src/backend.rs:901,1
    - Dst: AwsV4Signer::new
      Src: /src/opendal/core/services/s3/src/backend.rs:912,1
    - Dst: Signer::new
      Src: /src/opendal/core/services/s3/src/backend.rs:915,1
    - Dst: Ok
      Src: /src/opendal/core/services/s3/src/backend.rs:917,1
    - Dst: Arc::new
      Src: /src/opendal/core/services/s3/src/backend.rs:918,1
    - Dst: ServiceInfo::new
      Src: /src/opendal/core/services/s3/src/backend.rs:919,1
    - Dst: Some
      Src: /src/opendal/core/services/s3/src/backend.rs:958,1
    - Dst: Some
      Src: /src/opendal/core/services/s3/src/backend.rs:963,1
    - Dst: Some
      Src: /src/opendal/core/services/s3/src/backend.rs:965,1
    - Dst: Some
      Src: /src/opendal/core/services/s3/src/backend.rs:971,1
    - Dst: Some
      Src: /src/opendal/core/services/s3/src/backend.rs:977,1
    - Dst: Some
      Src: /src/opendal/core/services/s3/src/backend.rs:988,1
    - Dst: Some
      Src: /src/opendal/core/services/s3/src/backend.rs:993,1
    - Dst: Some
      Src: /src/opendal/core/services/s3/src/backend.rs:995,1
    - Dst: Default::default
      Src: /src/opendal/core/services/s3/src/backend.rs:1013,1
    - Dst: usize::to_string
      Src: /src/opendal/core/services/s3/src/backend.rs:1015,1
    CyclomaticComplexity: 34
    EdgeCount: 34
    ICount: 317
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 1032
      start: 727
    functionDepth: 34
    functionLinenumber: 727
    functionLinenumberEnd: 1032
    functionName: S3Builder::build
    functionSourceFile: /src/opendal/core/services/s3/src/backend.rs
    functionUses: 0
    functionsReached:
    - is_none
    - Self::trim_end_matches
    - ok
    - as_deref
    - Self::push_front
    - AssumeRoleCredentialProvider::new
    - Arc::new
    - clone
    - HttpTransporter::default
    - Default::default
    - map
    - with_duration_seconds
    - Self::build_endpoint
    - ProvideCredentialChain::new
    - Signer::new
    - Self::clone
    - Self::with_region
    - Self::with_context
    - usize::to_string
    - with_tags
    - Self::is_bucket_valid
    - map_err
    - no_profile
    - OtelMetricsLayerBuilder::build
    - or_else
    - Result::clone
    - Result::to_string
    - Ok
    - Context::new
    - ServiceInfo::new
    - OtelMetricsLayerBuilder::no_env
    - normalize_root
    - build_header_value
    - Error::with_context
    - std::env::var
    - unwrap_or_default
    - Result::map_err
    - Self::push
    - Self::with_session_token
    - Some
    - with_role_session_name
    - with_external_id
    - to_string
    - with_regional_sts_endpoint
    - with_env
    - AwsV4Signer::new
    - OtelMetricsLayerBuilder::no_imds
    - Err
    - Error::new
    - Self::with_http_send
    - Result::collect
    - Self::with_file_read
    - Self::with_operation
    - DefaultCredentialProvider::builder
    - StaticCredentialProvider::new
    - Self::iter
    linkageType: ''
    returnType: Result
    signature: fn build(self) -> Result<impl Service>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: clone
      Src: /src/opendal/core/services/s3/src/backend.rs:1049,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 1050
      start: 1048
    functionDepth: 2
    functionLinenumber: 1048
    functionLinenumberEnd: 1050
    functionName: S3Backend::info
    functionSourceFile: /src/opendal/core/services/s3/src/backend.rs
    functionUses: 0
    functionsReached:
    - clone
    linkageType: ''
    returnType: ServiceInfo
    signature: fn info(&self) -> ServiceInfo
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 1054
      start: 1052
    functionDepth: 0
    functionLinenumber: 1052
    functionLinenumberEnd: 1054
    functionName: S3Backend::capability
    functionSourceFile: /src/opendal/core/services/s3/src/backend.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Capability
    signature: fn capability(&self) -> Capability
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/core/services/s3/src/backend.rs:1062,1
    - Dst: Error::new
      Src: /src/opendal/core/services/s3/src/backend.rs:1062,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - _ctx
    - _path
    - _args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpCreateDir
    constantsTouched: []
    func_position:
      end: 1066
      start: 1056
    functionDepth: 36
    functionLinenumber: 1056
    functionLinenumberEnd: 1066
    functionName: S3Backend::create_dir
    functionSourceFile: /src/opendal/core/services/s3/src/backend.rs
    functionUses: 0
    functionsReached:
    - Error::new
    - Err
    linkageType: ''
    returnType: Result
    signature: 'async fn create_dir(&self,_ctx: &OperationContext,_path: &str,_args:
      OpCreateDir,) -> Result<RpCreateDir>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: s3_head_object
      Src: /src/opendal/core/services/s3/src/backend.rs:1069,1
    - Dst: status
      Src: /src/opendal/core/services/s3/src/backend.rs:1071,1
    - Dst: headers
      Src: /src/opendal/core/services/s3/src/backend.rs:1075,1
    - Dst: parse_into_metadata
      Src: /src/opendal/core/services/s3/src/backend.rs:1076,1
    - Dst: parse_prefixed_headers
      Src: /src/opendal/core/services/s3/src/backend.rs:1078,1
    - Dst: HashMap::is_empty
      Src: /src/opendal/core/services/s3/src/backend.rs:1079,1
    - Dst: Result::with_user_metadata
      Src: /src/opendal/core/services/s3/src/backend.rs:1080,1
    - Dst: parse_header_to_str
      Src: /src/opendal/core/services/s3/src/backend.rs:1083,1
    - Dst: Result::set_version
      Src: /src/opendal/core/services/s3/src/backend.rs:1084,1
    - Dst: Ok
      Src: /src/opendal/core/services/s3/src/backend.rs:1087,1
    - Dst: RpStat::new
      Src: /src/opendal/core/services/s3/src/backend.rs:1087,1
    - Dst: Err
      Src: /src/opendal/core/services/s3/src/backend.rs:1089,1
    - Dst: core::parse_error
      Src: /src/opendal/core/services/s3/src/backend.rs:1089,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 34
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpStat
    constantsTouched: []
    func_position:
      end: 1091
      start: 1068
    functionDepth: 40
    functionLinenumber: 1068
    functionLinenumberEnd: 1091
    functionName: S3Backend::stat
    functionSourceFile: /src/opendal/core/services/s3/src/backend.rs
    functionUses: 0
    functionsReached:
    - parse_into_metadata
    - HashMap::is_empty
    - status
    - Ok
    - s3_head_object
    - RpStat::new
    - parse_header_to_str
    - parse_prefixed_headers
    - Result::with_user_metadata
    - Result::set_version
    - Err
    - headers
    - core::parse_error
    linkageType: ''
    returnType: Result
    signature: 'async fn stat(&self, ctx: &OperationContext, path: &str, args: OpStat)
      -> Result<RpStat>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/core/services/s3/src/backend.rs:1094,1
    - Dst: oio::StreamReader::new
      Src: /src/opendal/core/services/s3/src/backend.rs:1094,1
    - Dst: S3Reader::new
      Src: /src/opendal/core/services/s3/src/backend.rs:1094,1
    - Dst: S3Backend::clone
      Src: /src/opendal/core/services/s3/src/backend.rs:1095,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/s3/src/backend.rs:1096,1
    - Dst: Ok
      Src: /src/opendal/core/services/s3/src/backend.rs:1102,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpRead
    constantsTouched: []
    func_position:
      end: 1103
      start: 1092
    functionDepth: 3
    functionLinenumber: 1092
    functionLinenumberEnd: 1103
    functionName: S3Backend::read
    functionSourceFile: /src/opendal/core/services/s3/src/backend.rs
    functionUses: 0
    functionsReached:
    - Result::clone
    - S3Backend::clone
    - Ok
    - oio::StreamReader::new
    - S3Reader::new
    linkageType: ''
    returnType: Result
    signature: 'fn read(&self, ctx: &OperationContext, path: &str, args: OpRead) ->
      Result<Self::Reader>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: S3Writer::new
      Src: /src/opendal/core/services/s3/src/backend.rs:1107,1
    - Dst: clone
      Src: /src/opendal/core/services/s3/src/backend.rs:1107,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/s3/src/backend.rs:1107,1
    - Dst: OpStat::clone
      Src: /src/opendal/core/services/s3/src/backend.rs:1107,1
    - Dst: OpStat::append
      Src: /src/opendal/core/services/s3/src/backend.rs:1109,1
    - Dst: S3Writers::Two
      Src: /src/opendal/core/services/s3/src/backend.rs:1110,1
    - Dst: oio::AppendWriter::new
      Src: /src/opendal/core/services/s3/src/backend.rs:1110,1
    - Dst: S3Writers::One
      Src: /src/opendal/core/services/s3/src/backend.rs:1114,1
    - Dst: oio::MultipartWriter::new
      Src: /src/opendal/core/services/s3/src/backend.rs:1114,1
    - Dst: Result::executor
      Src: /src/opendal/core/services/s3/src/backend.rs:1115,1
    - Dst: Self::clone
      Src: /src/opendal/core/services/s3/src/backend.rs:1115,1
    - Dst: OpStat::concurrent
      Src: /src/opendal/core/services/s3/src/backend.rs:1117,1
    - Dst: Ok
      Src: /src/opendal/core/services/s3/src/backend.rs:1121,1
    - Dst: Ok
      Src: /src/opendal/core/services/s3/src/backend.rs:1124,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 24
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpWrite
    constantsTouched: []
    func_position:
      end: 1125
      start: 1105
    functionDepth: 31
    functionLinenumber: 1105
    functionLinenumberEnd: 1125
    functionName: S3Backend::write
    functionSourceFile: /src/opendal/core/services/s3/src/backend.rs
    functionUses: 0
    functionsReached:
    - Result::clone
    - OpStat::clone
    - S3Writers::Two
    - oio::MultipartWriter::new
    - Ok
    - Result::executor
    - clone
    - OpStat::append
    - S3Writers::One
    - Self::clone
    - OpStat::concurrent
    - oio::AppendWriter::new
    - S3Writer::new
    linkageType: ''
    returnType: Result
    signature: 'fn write(&self, ctx: &OperationContext, path: &str, args: OpWrite)
      -> Result<Self::Writer>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/core/services/s3/src/backend.rs:1129,1
    - Dst: oio::BatchDeleter::new
      Src: /src/opendal/core/services/s3/src/backend.rs:1129,1
    - Dst: S3Deleter::new
      Src: /src/opendal/core/services/s3/src/backend.rs:1130,1
    - Dst: clone
      Src: /src/opendal/core/services/s3/src/backend.rs:1130,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/s3/src/backend.rs:1130,1
    - Dst: Ok
      Src: /src/opendal/core/services/s3/src/backend.rs:1135,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - '&OperationContext'
    constantsTouched: []
    func_position:
      end: 1136
      start: 1127
    functionDepth: 4
    functionLinenumber: 1127
    functionLinenumberEnd: 1136
    functionName: S3Backend::delete
    functionSourceFile: /src/opendal/core/services/s3/src/backend.rs
    functionUses: 0
    functionsReached:
    - Result::clone
    - Ok
    - clone
    - S3Deleter::new
    - oio::BatchDeleter::new
    linkageType: ''
    returnType: Result
    signature: 'fn delete(&self, ctx: &OperationContext) -> Result<Self::Deleter>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: OpStat::versions
      Src: /src/opendal/core/services/s3/src/backend.rs:1140,1
    - Dst: OpStat::deleted
      Src: /src/opendal/core/services/s3/src/backend.rs:1140,1
    - Dst: ThreeWays::Three
      Src: /src/opendal/core/services/s3/src/backend.rs:1141,1
    - Dst: oio::PageLister::new
      Src: /src/opendal/core/services/s3/src/backend.rs:1141,1
    - Dst: S3ObjectVersionsLister::new
      Src: /src/opendal/core/services/s3/src/backend.rs:1141,1
    - Dst: clone
      Src: /src/opendal/core/services/s3/src/backend.rs:1142,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/s3/src/backend.rs:1143,1
    - Dst: ThreeWays::One
      Src: /src/opendal/core/services/s3/src/backend.rs:1148,1
    - Dst: oio::PageLister::new
      Src: /src/opendal/core/services/s3/src/backend.rs:1148,1
    - Dst: S3ListerV1::new
      Src: /src/opendal/core/services/s3/src/backend.rs:1148,1
    - Dst: clone
      Src: /src/opendal/core/services/s3/src/backend.rs:1149,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/s3/src/backend.rs:1150,1
    - Dst: ThreeWays::Two
      Src: /src/opendal/core/services/s3/src/backend.rs:1155,1
    - Dst: oio::PageLister::new
      Src: /src/opendal/core/services/s3/src/backend.rs:1155,1
    - Dst: S3ListerV2::new
      Src: /src/opendal/core/services/s3/src/backend.rs:1155,1
    - Dst: clone
      Src: /src/opendal/core/services/s3/src/backend.rs:1156,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/s3/src/backend.rs:1157,1
    - Dst: Ok
      Src: /src/opendal/core/services/s3/src/backend.rs:1163,1
    - Dst: Ok
      Src: /src/opendal/core/services/s3/src/backend.rs:1166,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 36
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpList
    constantsTouched: []
    func_position:
      end: 1167
      start: 1138
    functionDepth: 35
    functionLinenumber: 1138
    functionLinenumberEnd: 1167
    functionName: S3Backend::list
    functionSourceFile: /src/opendal/core/services/s3/src/backend.rs
    functionUses: 0
    functionsReached:
    - Result::clone
    - S3ListerV1::new
    - Ok
    - OpStat::versions
    - S3ListerV2::new
    - clone
    - ThreeWays::Two
    - oio::PageLister::new
    - S3ObjectVersionsLister::new
    - ThreeWays::One
    - ThreeWays::Three
    - OpStat::deleted
    linkageType: ''
    returnType: Result
    signature: 'fn list(&self, ctx: &OperationContext, path: &str, args: OpList) ->
      Result<Self::Lister>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: copier::new_s3_copier
      Src: /src/opendal/core/services/s3/src/backend.rs:1178,1
    - Dst: clone
      Src: /src/opendal/core/services/s3/src/backend.rs:1178,1
    - Dst: Ok
      Src: /src/opendal/core/services/s3/src/backend.rs:1179,1
    - Dst: Ok
      Src: /src/opendal/core/services/s3/src/backend.rs:1182,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 5
    argNames:
    - ctx
    - from
    - to
    - args
    - opts
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    - OpCopy
    - OpCopier
    constantsTouched: []
    func_position:
      end: 1183
      start: 1169
    functionDepth: 37
    functionLinenumber: 1169
    functionLinenumberEnd: 1183
    functionName: S3Backend::copy
    functionSourceFile: /src/opendal/core/services/s3/src/backend.rs
    functionUses: 0
    functionsReached:
    - clone
    - copier::new_s3_copier
    - Ok
    linkageType: ''
    returnType: Result
    signature: 'fn copy(&self,ctx: &OperationContext,from: &str,to: &str,args: OpCopy,opts:
      OpCopier,) -> Result<Self::Copier>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/core/services/s3/src/backend.rs:1192,1
    - Dst: Error::new
      Src: /src/opendal/core/services/s3/src/backend.rs:1192,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - _ctx
    - _from
    - _to
    - _args
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    - OpRename
    constantsTouched: []
    func_position:
      end: 1196
      start: 1185
    functionDepth: 36
    functionLinenumber: 1185
    functionLinenumberEnd: 1196
    functionName: S3Backend::rename
    functionSourceFile: /src/opendal/core/services/s3/src/backend.rs
    functionUses: 0
    functionsReached:
    - Error::new
    - Err
    linkageType: ''
    returnType: Result
    signature: 'async fn rename(&self,_ctx: &OperationContext,_from: &str,_to: &str,_args:
      OpRename,) -> Result<RpRename>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: OpStat::into_parts
      Src: /src/opendal/core/services/s3/src/backend.rs:1204,1
    - Dst: s3_head_object_request
      Src: /src/opendal/core/services/s3/src/backend.rs:1207,1
    - Dst: s3_get_object_request
      Src: /src/opendal/core/services/s3/src/backend.rs:1208,1
    - Dst: s3_put_object_request
      Src: /src/opendal/core/services/s3/src/backend.rs:1210,1
    - Dst: Buffer::new
      Src: /src/opendal/core/services/s3/src/backend.rs:1211,1
    - Dst: s3_delete_object_request
      Src: /src/opendal/core/services/s3/src/backend.rs:1213,1
    - Dst: Err
      Src: /src/opendal/core/services/s3/src/backend.rs:1214,1
    - Dst: Error::new
      Src: /src/opendal/core/services/s3/src/backend.rs:1214,1
    - Dst: sign_query
      Src: /src/opendal/core/services/s3/src/backend.rs:1221,1
    - Dst: into_parts
      Src: /src/opendal/core/services/s3/src/backend.rs:1224,1
    - Dst: Ok
      Src: /src/opendal/core/services/s3/src/backend.rs:1226,1
    - Dst: RpPresign::new
      Src: /src/opendal/core/services/s3/src/backend.rs:1226,1
    - Dst: PresignedRequest::new
      Src: /src/opendal/core/services/s3/src/backend.rs:1226,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 35
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpPresign
    constantsTouched: []
    func_position:
      end: 1231
      start: 1198
    functionDepth: 39
    functionLinenumber: 1198
    functionLinenumberEnd: 1231
    functionName: S3Backend::presign
    functionSourceFile: /src/opendal/core/services/s3/src/backend.rs
    functionUses: 0
    functionsReached:
    - sign_query
    - Buffer::new
    - Ok
    - Err
    - s3_get_object_request
    - Error::new
    - s3_put_object_request
    - RpPresign::new
    - into_parts
    - PresignedRequest::new
    - s3_head_object_request
    - s3_delete_object_request
    - OpStat::into_parts
    linkageType: ''
    returnType: Result
    signature: 'async fn presign(&self,ctx: &OperationContext,path: &str,args: OpPresign,)
      -> Result<RpPresign>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: S3Builder::default
      Src: /src/opendal/core/services/s3/src/backend.rs:1249,1
    - Dst: Timestamp::bucket
      Src: /src/opendal/core/services/s3/src/backend.rs:1250,1
    - Dst: Timestamp::enable_virtual_host_style
      Src: /src/opendal/core/services/s3/src/backend.rs:1252,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 1256
      start: 1238
    functionDepth: 3
    functionLinenumber: 1238
    functionLinenumberEnd: 1256
    functionName: tests::test_is_valid_bucket
    functionSourceFile: /src/opendal/core/services/s3/src/backend.rs
    functionUses: 0
    functionsReached:
    - S3Builder::default
    - Timestamp::enable_virtual_host_style
    - Timestamp::bucket
    linkageType: ''
    returnType: void
    signature: fn test_is_valid_bucket()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: S3Builder::default
      Src: /src/opendal/core/services/s3/src/backend.rs:1268,1
    - Dst: Self::bucket
      Src: /src/opendal/core/services/s3/src/backend.rs:1268,1
    - Dst: Timestamp::endpoint
      Src: /src/opendal/core/services/s3/src/backend.rs:1270,1
    - Dst: S3Builder::build_endpoint
      Src: /src/opendal/core/services/s3/src/backend.rs:1273,1
    - Dst: S3Builder::default
      Src: /src/opendal/core/services/s3/src/backend.rs:1278,1
    - Dst: Self::bucket
      Src: /src/opendal/core/services/s3/src/backend.rs:1278,1
    - Dst: usize::enable_virtual_host_style
      Src: /src/opendal/core/services/s3/src/backend.rs:1278,1
    - Dst: Timestamp::endpoint
      Src: /src/opendal/core/services/s3/src/backend.rs:1282,1
    - Dst: S3Builder::build_endpoint
      Src: /src/opendal/core/services/s3/src/backend.rs:1285,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 34
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 1288
      start: 1259
    functionDepth: 34
    functionLinenumber: 1259
    functionLinenumberEnd: 1288
    functionName: tests::test_build_endpoint
    functionSourceFile: /src/opendal/core/services/s3/src/backend.rs
    functionUses: 0
    functionsReached:
    - Timestamp::endpoint
    - S3Builder::default
    - S3Builder::build_endpoint
    - Self::bucket
    - usize::enable_virtual_host_style
    linkageType: ''
    returnType: void
    signature: fn test_build_endpoint()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: S3Builder::detect_region
      Src: /src/opendal/core/services/s3/src/backend.rs:1332,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 1335
      start: 1291
    functionDepth: 38
    functionLinenumber: 1291
    functionLinenumberEnd: 1335
    functionName: tests::test_detect_region
    functionSourceFile: /src/opendal/core/services/s3/src/backend.rs
    functionUses: 0
    functionsReached:
    - S3Builder::detect_region
    linkageType: ''
    returnType: void
    signature: async fn test_detect_region()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: S3Builder::default
      Src: /src/opendal/core/services/s3/src/backend.rs:1339,1
    - Dst: Self::bucket
      Src: /src/opendal/core/services/s3/src/backend.rs:1339,1
    - Dst: usize::region
      Src: /src/opendal/core/services/s3/src/backend.rs:1339,1
    - Dst: Self::skip_signature
      Src: /src/opendal/core/services/s3/src/backend.rs:1339,1
    - Dst: Self::disable_config_load
      Src: /src/opendal/core/services/s3/src/backend.rs:1339,1
    - Dst: Self::disable_ec2_metadata
      Src: /src/opendal/core/services/s3/src/backend.rs:1339,1
    - Dst: Self::build
      Src: /src/opendal/core/services/s3/src/backend.rs:1339,1
    - Dst: Result::expect
      Src: /src/opendal/core/services/s3/src/backend.rs:1339,1
    - Dst: OpWrite::default
      Src: /src/opendal/core/services/s3/src/backend.rs:1348,1
    - Dst: Self::with_content_type
      Src: /src/opendal/core/services/s3/src/backend.rs:1348,1
    - Dst: OpPresign::new
      Src: /src/opendal/core/services/s3/src/backend.rs:1349,1
    - Dst: Duration::from_secs
      Src: /src/opendal/core/services/s3/src/backend.rs:1349,1
    - Dst: OperationContext::new
      Src: /src/opendal/core/services/s3/src/backend.rs:1350,1
    - Dst: SqliteBackend::presign
      Src: /src/opendal/core/services/s3/src/backend.rs:1351,1
    - Dst: expect
      Src: /src/opendal/core/services/s3/src/backend.rs:1351,1
    - Dst: into_presigned_request
      Src: /src/opendal/core/services/s3/src/backend.rs:1351,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 30
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 1361
      start: 1338
    functionDepth: 37
    functionLinenumber: 1338
    functionLinenumberEnd: 1361
    functionName: tests::test_presign_write_preserves_content_type
    functionSourceFile: /src/opendal/core/services/s3/src/backend.rs
    functionUses: 0
    functionsReached:
    - Self::disable_config_load
    - SqliteBackend::presign
    - expect
    - Result::expect
    - S3Builder::default
    - OpWrite::default
    - usize::region
    - Self::skip_signature
    - OperationContext::new
    - into_presigned_request
    - Self::with_content_type
    - OpPresign::new
    - Self::bucket
    - Self::disable_ec2_metadata
    - Self::build
    - Duration::from_secs
    linkageType: ''
    returnType: void
    signature: async fn test_presign_write_preserves_content_type()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: S3Builder::default
      Src: /src/opendal/core/services/s3/src/backend.rs:1365,1
    - Dst: Self::bucket
      Src: /src/opendal/core/services/s3/src/backend.rs:1365,1
    - Dst: usize::region
      Src: /src/opendal/core/services/s3/src/backend.rs:1365,1
    - Dst: Self::skip_signature
      Src: /src/opendal/core/services/s3/src/backend.rs:1365,1
    - Dst: Self::disable_config_load
      Src: /src/opendal/core/services/s3/src/backend.rs:1365,1
    - Dst: Self::disable_ec2_metadata
      Src: /src/opendal/core/services/s3/src/backend.rs:1365,1
    - Dst: Self::build
      Src: /src/opendal/core/services/s3/src/backend.rs:1365,1
    - Dst: Result::expect
      Src: /src/opendal/core/services/s3/src/backend.rs:1365,1
    - Dst: OpStat::default
      Src: /src/opendal/core/services/s3/src/backend.rs:1374,1
    - Dst: Self::with_version
      Src: /src/opendal/core/services/s3/src/backend.rs:1374,1
    - Dst: OpPresign::new
      Src: /src/opendal/core/services/s3/src/backend.rs:1375,1
    - Dst: Duration::from_secs
      Src: /src/opendal/core/services/s3/src/backend.rs:1375,1
    - Dst: OperationContext::new
      Src: /src/opendal/core/services/s3/src/backend.rs:1376,1
    - Dst: SqliteBackend::presign
      Src: /src/opendal/core/services/s3/src/backend.rs:1377,1
    - Dst: expect
      Src: /src/opendal/core/services/s3/src/backend.rs:1377,1
    - Dst: into_presigned_request
      Src: /src/opendal/core/services/s3/src/backend.rs:1377,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 30
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 1387
      start: 1364
    functionDepth: 37
    functionLinenumber: 1364
    functionLinenumberEnd: 1387
    functionName: tests::test_presign_stat_encodes_version_id
    functionSourceFile: /src/opendal/core/services/s3/src/backend.rs
    functionUses: 0
    functionsReached:
    - Self::with_version
    - Self::disable_config_load
    - SqliteBackend::presign
    - expect
    - Result::expect
    - S3Builder::default
    - usize::region
    - Self::skip_signature
    - OperationContext::new
    - into_presigned_request
    - OpPresign::new
    - Self::bucket
    - Self::disable_ec2_metadata
    - Self::build
    - Duration::from_secs
    - OpStat::default
    linkageType: ''
    returnType: void
    signature: async fn test_presign_stat_encodes_version_id()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: S3Builder::default
      Src: /src/opendal/core/services/s3/src/backend.rs:1391,1
    - Dst: Self::bucket
      Src: /src/opendal/core/services/s3/src/backend.rs:1391,1
    - Dst: usize::region
      Src: /src/opendal/core/services/s3/src/backend.rs:1391,1
    - Dst: Self::skip_signature
      Src: /src/opendal/core/services/s3/src/backend.rs:1391,1
    - Dst: Self::disable_config_load
      Src: /src/opendal/core/services/s3/src/backend.rs:1391,1
    - Dst: Self::disable_ec2_metadata
      Src: /src/opendal/core/services/s3/src/backend.rs:1391,1
    - Dst: Self::build
      Src: /src/opendal/core/services/s3/src/backend.rs:1391,1
    - Dst: Result::expect
      Src: /src/opendal/core/services/s3/src/backend.rs:1391,1
    - Dst: OpRead::default
      Src: /src/opendal/core/services/s3/src/backend.rs:1400,1
    - Dst: Self::with_version
      Src: /src/opendal/core/services/s3/src/backend.rs:1400,1
    - Dst: OpPresign::new
      Src: /src/opendal/core/services/s3/src/backend.rs:1401,1
    - Dst: PresignOperation::Read
      Src: /src/opendal/core/services/s3/src/backend.rs:1402,1
    - Dst: BytesRange::default
      Src: /src/opendal/core/services/s3/src/backend.rs:1402,1
    - Dst: Duration::from_secs
      Src: /src/opendal/core/services/s3/src/backend.rs:1403,1
    - Dst: OperationContext::new
      Src: /src/opendal/core/services/s3/src/backend.rs:1405,1
    - Dst: SqliteBackend::presign
      Src: /src/opendal/core/services/s3/src/backend.rs:1406,1
    - Dst: expect
      Src: /src/opendal/core/services/s3/src/backend.rs:1406,1
    - Dst: into_presigned_request
      Src: /src/opendal/core/services/s3/src/backend.rs:1406,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 32
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 1416
      start: 1390
    functionDepth: 37
    functionLinenumber: 1390
    functionLinenumberEnd: 1416
    functionName: tests::test_presign_read_encodes_version_id
    functionSourceFile: /src/opendal/core/services/s3/src/backend.rs
    functionUses: 0
    functionsReached:
    - Self::with_version
    - BytesRange::default
    - Self::disable_config_load
    - SqliteBackend::presign
    - expect
    - Result::expect
    - S3Builder::default
    - Duration::from_secs
    - usize::region
    - Self::skip_signature
    - OperationContext::new
    - into_presigned_request
    - OpPresign::new
    - Self::bucket
    - PresignOperation::Read
    - Self::disable_ec2_metadata
    - Self::build
    - OpRead::default
    linkageType: ''
    returnType: void
    signature: async fn test_presign_read_encodes_version_id()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::debug_struct
      Src: /src/opendal/core/services/webhdfs/src/config.rs:46,1
    - Dst: field
      Src: /src/opendal/core/services/webhdfs/src/config.rs:46,1
    - Dst: field
      Src: /src/opendal/core/services/webhdfs/src/config.rs:46,1
    - Dst: field
      Src: /src/opendal/core/services/webhdfs/src/config.rs:46,1
    - Dst: field
      Src: /src/opendal/core/services/webhdfs/src/config.rs:46,1
    - Dst: field
      Src: /src/opendal/core/services/webhdfs/src/config.rs:46,1
    - Dst: finish_non_exhaustive
      Src: /src/opendal/core/services/webhdfs/src/config.rs:46,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 24
    argCount: 1
    argNames:
    - f
    argTypes:
    - '&mut std::fmt::Formatter<''_>'
    constantsTouched: []
    func_position:
      end: 53
      start: 45
    functionDepth: 5
    functionLinenumber: 45
    functionLinenumberEnd: 53
    functionName: WebhdfsConfig::fmt
    functionSourceFile: /src/opendal/core/services/webhdfs/src/config.rs
    functionUses: 0
    functionsReached:
    - field
    - Result::debug_struct
    - finish_non_exhaustive
    linkageType: ''
    returnType: std::fmt::Result
    signature: 'fn fmt(&self, f: &mut std::fmt::Formatter<''_>) -> std::fmt::Result'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::options
      Src: /src/opendal/core/services/webhdfs/src/config.rs:60,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/webhdfs/src/config.rs:60,1
    - Dst: Result::authority
      Src: /src/opendal/core/services/webhdfs/src/config.rs:61,1
    - Dst: Result::insert
      Src: /src/opendal/core/services/webhdfs/src/config.rs:62,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/webhdfs/src/config.rs:62,1
    - Dst: Result::root
      Src: /src/opendal/core/services/webhdfs/src/config.rs:65,1
    - Dst: Result::is_empty
      Src: /src/opendal/core/services/webhdfs/src/config.rs:66,1
    - Dst: Result::insert
      Src: /src/opendal/core/services/webhdfs/src/config.rs:68,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/webhdfs/src/config.rs:68,1
    - Dst: Result::to_string
      Src: /src/opendal/core/services/webhdfs/src/config.rs:68,1
    - Dst: Self::from_iter
      Src: /src/opendal/core/services/webhdfs/src/config.rs:71,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 28
    argCount: 1
    argNames:
    - uri
    argTypes:
    - '&opendal_core::OperatorUri'
    constantsTouched: []
    func_position:
      end: 72
      start: 59
    functionDepth: 35
    functionLinenumber: 59
    functionLinenumberEnd: 72
    functionName: WebhdfsConfig::from_uri
    functionSourceFile: /src/opendal/core/services/webhdfs/src/config.rs
    functionUses: 0
    functionsReached:
    - Result::clone
    - Self::from_iter
    - Result::to_string
    - Result::insert
    - Result::is_empty
    - '&str::to_string'
    - Result::root
    - Result::authority
    - Result::options
    linkageType: ''
    returnType: opendal_core::Result
    signature: 'fn from_uri(uri: &opendal_core::OperatorUri) -> opendal_core::Result<Self>'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 76
      start: 74
    functionDepth: 0
    functionLinenumber: 74
    functionLinenumberEnd: 76
    functionName: WebhdfsConfig::into_builder
    functionSourceFile: /src/opendal/core/services/webhdfs/src/config.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Self::Builder
    signature: fn into_builder(self) -> Self::Builder
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - core
    - ctx
    argTypes:
    - Arc<WebhdfsCore>
    - OperationContext
    constantsTouched: []
    func_position:
      end: 36
      start: 34
    functionDepth: 0
    functionLinenumber: 34
    functionLinenumberEnd: 36
    functionName: WebhdfsDeleter::new
    functionSourceFile: /src/opendal/core/services/webhdfs/src/deleter.rs
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(core: Arc<WebhdfsCore>, ctx: OperationContext) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: webhdfs_delete
      Src: /src/opendal/core/services/webhdfs/src/deleter.rs:41,1
    - Dst: status
      Src: /src/opendal/core/services/webhdfs/src/deleter.rs:43,1
    - Dst: Ok
      Src: /src/opendal/core/services/webhdfs/src/deleter.rs:44,1
    - Dst: Err
      Src: /src/opendal/core/services/webhdfs/src/deleter.rs:45,1
    - Dst: super::core::parse_error
      Src: /src/opendal/core/services/webhdfs/src/deleter.rs:45,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 2
    argNames:
    - path
    argTypes:
    - String
    - OpDelete
    constantsTouched: []
    func_position:
      end: 47
      start: 40
    functionDepth: 33
    functionLinenumber: 40
    functionLinenumberEnd: 47
    functionName: WebhdfsDeleter::delete_once
    functionSourceFile: /src/opendal/core/services/webhdfs/src/deleter.rs
    functionUses: 0
    functionsReached:
    - status
    - Ok
    - Err
    - webhdfs_delete
    - super::core::parse_error
    linkageType: ''
    returnType: Result
    signature: 'async fn delete_once(&self, path: String, _: OpDelete) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: to_string
      Src: /src/opendal/core/services/webhdfs/src/lister.rs:41,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - core
    - ctx
    - path
    argTypes:
    - Arc<WebhdfsCore>
    - OperationContext
    - '&str'
    constantsTouched: []
    func_position:
      end: 43
      start: 37
    functionDepth: 2
    functionLinenumber: 37
    functionLinenumberEnd: 43
    functionName: WebhdfsLister::new
    functionSourceFile: /src/opendal/core/services/webhdfs/src/lister.rs
    functionUses: 1
    functionsReached:
    - to_string
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(core: Arc<WebhdfsCore>, ctx: OperationContext, path: &str)
      -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: webhdfs_list_status
      Src: /src/opendal/core/services/webhdfs/src/lister.rs:49,1
    - Dst: status
      Src: /src/opendal/core/services/webhdfs/src/lister.rs:50,1
    - Dst: push_back
      Src: /src/opendal/core/services/webhdfs/src/lister.rs:53,1
    - Dst: oio::Entry::new
      Src: /src/opendal/core/services/webhdfs/src/lister.rs:53,1
    - Dst: as_str
      Src: /src/opendal/core/services/webhdfs/src/lister.rs:54,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/webhdfs/src/lister.rs:55,1
    - Dst: into_body
      Src: /src/opendal/core/services/webhdfs/src/lister.rs:58,1
    - Dst: serde_json::from_reader::<_, FileStatusesWrapper>
      Src: /src/opendal/core/services/webhdfs/src/lister.rs:59,1
    - Dst: Result::reader
      Src: /src/opendal/core/services/webhdfs/src/lister.rs:59,1
    - Dst: map_err
      Src: /src/opendal/core/services/webhdfs/src/lister.rs:59,1
    - Dst: Ok
      Src: /src/opendal/core/services/webhdfs/src/lister.rs:66,1
    - Dst: Err
      Src: /src/opendal/core/services/webhdfs/src/lister.rs:68,1
    - Dst: super::core::parse_error
      Src: /src/opendal/core/services/webhdfs/src/lister.rs:68,1
    - Dst: webhdfs_list_status_batch
      Src: /src/opendal/core/services/webhdfs/src/lister.rs:71,1
    - Dst: status
      Src: /src/opendal/core/services/webhdfs/src/lister.rs:75,1
    - Dst: into_body
      Src: /src/opendal/core/services/webhdfs/src/lister.rs:77,1
    - Dst: serde_json::from_reader
      Src: /src/opendal/core/services/webhdfs/src/lister.rs:79,1
    - Dst: Result::reader
      Src: /src/opendal/core/services/webhdfs/src/lister.rs:79,1
    - Dst: map_err
      Src: /src/opendal/core/services/webhdfs/src/lister.rs:79,1
    - Dst: push_back
      Src: /src/opendal/core/services/webhdfs/src/lister.rs:84,1
    - Dst: oio::Entry::new
      Src: /src/opendal/core/services/webhdfs/src/lister.rs:84,1
    - Dst: as_str
      Src: /src/opendal/core/services/webhdfs/src/lister.rs:85,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/webhdfs/src/lister.rs:86,1
    - Dst: is_empty
      Src: /src/opendal/core/services/webhdfs/src/lister.rs:90,1
    - Dst: clone_from
      Src: /src/opendal/core/services/webhdfs/src/lister.rs:91,1
    - Dst: last
      Src: /src/opendal/core/services/webhdfs/src/lister.rs:92,1
    - Dst: unwrap
      Src: /src/opendal/core/services/webhdfs/src/lister.rs:92,1
    - Dst: Ok
      Src: /src/opendal/core/services/webhdfs/src/lister.rs:99,1
    - Dst: Err
      Src: /src/opendal/core/services/webhdfs/src/lister.rs:101,1
    - Dst: super::core::parse_error
      Src: /src/opendal/core/services/webhdfs/src/lister.rs:101,1
    - Dst: is_empty
      Src: /src/opendal/core/services/webhdfs/src/lister.rs:106,1
    - Dst: to_string
      Src: /src/opendal/core/services/webhdfs/src/lister.rs:107,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/webhdfs/src/lister.rs:113,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/webhdfs/src/lister.rs:114,1
    - Dst: Self::with_content_length
      Src: /src/opendal/core/services/webhdfs/src/lister.rs:114,1
    - Dst: Self::with_last_modified
      Src: /src/opendal/core/services/webhdfs/src/lister.rs:114,1
    - Dst: Timestamp::from_millisecond
      Src: /src/opendal/core/services/webhdfs/src/lister.rs:116,1
    - Dst: Result::mode
      Src: /src/opendal/core/services/webhdfs/src/lister.rs:119,1
    - Dst: Option::is_file
      Src: /src/opendal/core/services/webhdfs/src/lister.rs:119,1
    - Dst: trim_end_matches
      Src: /src/opendal/core/services/webhdfs/src/lister.rs:120,1
    - Dst: to_string
      Src: /src/opendal/core/services/webhdfs/src/lister.rs:120,1
    - Dst: Result::mode
      Src: /src/opendal/core/services/webhdfs/src/lister.rs:122,1
    - Dst: Option::is_dir
      Src: /src/opendal/core/services/webhdfs/src/lister.rs:122,1
    - Dst: oio::Entry::new
      Src: /src/opendal/core/services/webhdfs/src/lister.rs:125,1
    - Dst: push_back
      Src: /src/opendal/core/services/webhdfs/src/lister.rs:126,1
    - Dst: Ok
      Src: /src/opendal/core/services/webhdfs/src/lister.rs:129,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 160
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - '&mut oio::PageContext'
    constantsTouched: []
    func_position:
      end: 130
      start: 47
    functionDepth: 38
    functionLinenumber: 47
    functionLinenumberEnd: 130
    functionName: WebhdfsLister::next_page
    functionSourceFile: /src/opendal/core/services/webhdfs/src/lister.rs
    functionUses: 0
    functionsReached:
    - status
    - serde_json::from_reader
    - Self::with_last_modified
    - Option::is_file
    - Timestamp::from_millisecond
    - Result::reader
    - map_err
    - Ok
    - Option::is_dir
    - unwrap
    - as_str
    - Result::mode
    - Metadata::new
    - webhdfs_list_status
    - clone_from
    - trim_end_matches
    - into_body
    - last
    - is_empty
    - super::core::parse_error
    - to_string
    - oio::Entry::new
    - push_back
    - Self::with_content_length
    - serde_json::from_reader::<_, FileStatusesWrapper>
    - Err
    - webhdfs_list_status_batch
    linkageType: ''
    returnType: Result
    signature: 'async fn next_page(&self, ctx: &mut oio::PageContext) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: to_string
      Src: /src/opendal/core/services/webhdfs/src/reader.rs:43,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 4
    argNames:
    - backend
    - ctx
    - path
    argTypes:
    - WebhdfsBackend
    - OperationContext
    - '&str'
    - OpRead
    constantsTouched: []
    func_position:
      end: 45
      start: 34
    functionDepth: 2
    functionLinenumber: 34
    functionLinenumberEnd: 45
    functionName: WebhdfsReader::new
    functionSourceFile: /src/opendal/core/services/webhdfs/src/reader.rs
    functionUses: 1
    functionsReached:
    - to_string
    linkageType: ''
    returnType: Self
    signature: 'pub(super) fn new(backend: WebhdfsBackend,ctx: OperationContext,path:
      &str,_: OpRead,) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: as_str
      Src: /src/opendal/core/services/webhdfs/src/reader.rs:51,1
    - Dst: webhdfs_read_file
      Src: /src/opendal/core/services/webhdfs/src/reader.rs:52,1
    - Dst: status
      Src: /src/opendal/core/services/webhdfs/src/reader.rs:57,1
    - Dst: RpRead::default
      Src: /src/opendal/core/services/webhdfs/src/reader.rs:59,1
    - Dst: into_body
      Src: /src/opendal/core/services/webhdfs/src/reader.rs:59,1
    - Dst: into_parts
      Src: /src/opendal/core/services/webhdfs/src/reader.rs:61,1
    - Dst: to_buffer
      Src: /src/opendal/core/services/webhdfs/src/reader.rs:62,1
    - Dst: Err
      Src: /src/opendal/core/services/webhdfs/src/reader.rs:63,1
    - Dst: super::core::parse_error
      Src: /src/opendal/core/services/webhdfs/src/reader.rs:63,1
    - Dst: Response::from_parts
      Src: /src/opendal/core/services/webhdfs/src/reader.rs:63,1
    - Dst: Ok
      Src: /src/opendal/core/services/webhdfs/src/reader.rs:67,1
    - Dst: Box::new
      Src: /src/opendal/core/services/webhdfs/src/reader.rs:67,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 34
    argCount: 1
    argNames:
    - range
    argTypes:
    - BytesRange
    constantsTouched: []
    func_position:
      end: 68
      start: 49
    functionDepth: 38
    functionLinenumber: 49
    functionLinenumberEnd: 68
    functionName: WebhdfsReader::open
    functionSourceFile: /src/opendal/core/services/webhdfs/src/reader.rs
    functionUses: 0
    functionsReached:
    - to_buffer
    - status
    - Ok
    - Box::new
    - into_body
    - Err
    - Response::from_parts
    - as_str
    - into_parts
    - RpRead::default
    - webhdfs_read_file
    - super::core::parse_error
    linkageType: ''
    returnType: Result
    signature: 'async fn open(&self, range: BytesRange) -> Result<(RpRead, Box<dyn
      oio::ReadStreamDyn>)>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::debug_struct
      Src: /src/opendal/core/services/webhdfs/src/core.rs:47,1
    - Dst: field
      Src: /src/opendal/core/services/webhdfs/src/core.rs:47,1
    - Dst: field
      Src: /src/opendal/core/services/webhdfs/src/core.rs:47,1
    - Dst: finish_non_exhaustive
      Src: /src/opendal/core/services/webhdfs/src/core.rs:47,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 1
    argNames:
    - f
    argTypes:
    - '&mut std::fmt::Formatter<''_>'
    constantsTouched: []
    func_position:
      end: 51
      start: 46
    functionDepth: 5
    functionLinenumber: 46
    functionLinenumberEnd: 51
    functionName: WebhdfsCore::fmt
    functionSourceFile: /src/opendal/core/services/webhdfs/src/core.rs
    functionUses: 0
    functionsReached:
    - field
    - Result::debug_struct
    - finish_non_exhaustive
    linkageType: ''
    returnType: std::fmt::Result
    signature: 'fn fmt(&self, f: &mut std::fmt::Formatter<''_>) -> std::fmt::Result'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/webhdfs/src/core.rs:60,1
    - Dst: as_str
      Src: /src/opendal/core/services/webhdfs/src/core.rs:68,1
    - Dst: as_str
      Src: /src/opendal/core/services/webhdfs/src/core.rs:71,1
    - Dst: Request::put
      Src: /src/opendal/core/services/webhdfs/src/core.rs:74,1
    - Dst: DeleteInput::extension
      Src: /src/opendal/core/services/webhdfs/src/core.rs:76,1
    - Dst: extension
      Src: /src/opendal/core/services/webhdfs/src/core.rs:76,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/webhdfs/src/core.rs:78,1
    - Dst: body
      Src: /src/opendal/core/services/webhdfs/src/core.rs:76,1
    - Dst: Buffer::new
      Src: /src/opendal/core/services/webhdfs/src/core.rs:79,1
    - Dst: map_err
      Src: /src/opendal/core/services/webhdfs/src/core.rs:76,1
    - Dst: Result::http_transport
      Src: /src/opendal/core/services/webhdfs/src/core.rs:82,1
    - Dst: Self::send
      Src: /src/opendal/core/services/webhdfs/src/core.rs:82,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 35
    argCount: 2
    argNames:
    - ctx
    - path
    argTypes:
    - '&OperationContext'
    - '&str'
    constantsTouched: []
    func_position:
      end: 83
      start: 55
    functionDepth: 37
    functionLinenumber: 55
    functionLinenumberEnd: 83
    functionName: WebhdfsCore::webhdfs_create_dir
    functionSourceFile: /src/opendal/core/services/webhdfs/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - extension
    - Buffer::new
    - Request::put
    - Self::send
    - body
    - build_abs_path
    - as_str
    - ServiceOperation
    - Result::http_transport
    - DeleteInput::extension
    linkageType: ''
    returnType: Result
    signature: 'pub async fn webhdfs_create_dir(&self,ctx: &OperationContext,path:
      &str,) -> Result<Response<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/webhdfs/src/core.rs:94,1
    - Dst: as_str
      Src: /src/opendal/core/services/webhdfs/src/core.rs:102,1
    - Dst: as_str
      Src: /src/opendal/core/services/webhdfs/src/core.rs:105,1
    - Dst: Request::put
      Src: /src/opendal/core/services/webhdfs/src/core.rs:108,1
    - Dst: DeleteInput::extension
      Src: /src/opendal/core/services/webhdfs/src/core.rs:110,1
    - Dst: extension
      Src: /src/opendal/core/services/webhdfs/src/core.rs:110,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/webhdfs/src/core.rs:112,1
    - Dst: body
      Src: /src/opendal/core/services/webhdfs/src/core.rs:110,1
    - Dst: Buffer::new
      Src: /src/opendal/core/services/webhdfs/src/core.rs:113,1
    - Dst: map_err
      Src: /src/opendal/core/services/webhdfs/src/core.rs:110,1
    - Dst: Result::http_transport
      Src: /src/opendal/core/services/webhdfs/src/core.rs:116,1
    - Dst: Self::send
      Src: /src/opendal/core/services/webhdfs/src/core.rs:116,1
    - Dst: status
      Src: /src/opendal/core/services/webhdfs/src/core.rs:118,1
    - Dst: Err
      Src: /src/opendal/core/services/webhdfs/src/core.rs:121,1
    - Dst: parse_error
      Src: /src/opendal/core/services/webhdfs/src/core.rs:121,1
    - Dst: into_body
      Src: /src/opendal/core/services/webhdfs/src/core.rs:124,1
    - Dst: serde_json::from_reader
      Src: /src/opendal/core/services/webhdfs/src/core.rs:127,1
    - Dst: Result::reader
      Src: /src/opendal/core/services/webhdfs/src/core.rs:127,1
    - Dst: map_err
      Src: /src/opendal/core/services/webhdfs/src/core.rs:127,1
    - Dst: Request::put
      Src: /src/opendal/core/services/webhdfs/src/core.rs:129,1
    - Dst: DeleteInput::header
      Src: /src/opendal/core/services/webhdfs/src/core.rs:132,1
    - Dst: OpStat::content_type
      Src: /src/opendal/core/services/webhdfs/src/core.rs:135,1
    - Dst: DeleteInput::header
      Src: /src/opendal/core/services/webhdfs/src/core.rs:136,1
    - Dst: DeleteInput::extension
      Src: /src/opendal/core/services/webhdfs/src/core.rs:138,1
    - Dst: extension
      Src: /src/opendal/core/services/webhdfs/src/core.rs:138,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/webhdfs/src/core.rs:140,1
    - Dst: body
      Src: /src/opendal/core/services/webhdfs/src/core.rs:138,1
    - Dst: map_err
      Src: /src/opendal/core/services/webhdfs/src/core.rs:138,1
    - Dst: Result::http_transport
      Src: /src/opendal/core/services/webhdfs/src/core.rs:144,1
    - Dst: Self::send
      Src: /src/opendal/core/services/webhdfs/src/core.rs:144,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 87
    argCount: 5
    argNames:
    - ctx
    - path
    - size
    - args
    - body
    argTypes:
    - '&OperationContext'
    - '&str'
    - Option<u64>
    - '&OpWrite'
    - Buffer
    constantsTouched: []
    func_position:
      end: 145
      start: 86
    functionDepth: 37
    functionLinenumber: 86
    functionLinenumberEnd: 145
    functionName: WebhdfsCore::webhdfs_create_object
    functionSourceFile: /src/opendal/core/services/webhdfs/src/core.rs
    functionUses: 0
    functionsReached:
    - Buffer::new
    - Request::put
    - status
    - Self::send
    - serde_json::from_reader
    - DeleteInput::header
    - Result::reader
    - DeleteInput::extension
    - map_err
    - extension
    - as_str
    - ServiceOperation
    - Result::http_transport
    - parse_error
    - into_body
    - build_abs_path
    - OpStat::content_type
    - body
    - Err
    linkageType: ''
    returnType: Result
    signature: 'pub async fn webhdfs_create_object(&self,ctx: &OperationContext,path:
      &str,size: Option<u64>,args: &OpWrite,body: Buffer,) -> Result<Response<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/webhdfs/src/core.rs:153,1
    - Dst: build_rooted_abs_path
      Src: /src/opendal/core/services/webhdfs/src/core.rs:154,1
    - Dst: as_str
      Src: /src/opendal/core/services/webhdfs/src/core.rs:163,1
    - Dst: Request::put
      Src: /src/opendal/core/services/webhdfs/src/core.rs:169,1
    - Dst: DeleteInput::body
      Src: /src/opendal/core/services/webhdfs/src/core.rs:169,1
    - Dst: Buffer::new
      Src: /src/opendal/core/services/webhdfs/src/core.rs:170,1
    - Dst: map_err
      Src: /src/opendal/core/services/webhdfs/src/core.rs:169,1
    - Dst: Result::http_transport
      Src: /src/opendal/core/services/webhdfs/src/core.rs:173,1
    - Dst: Self::send
      Src: /src/opendal/core/services/webhdfs/src/core.rs:173,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 32
    argCount: 3
    argNames:
    - ctx
    - from
    - to
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    constantsTouched: []
    func_position:
      end: 174
      start: 147
    functionDepth: 37
    functionLinenumber: 147
    functionLinenumberEnd: 174
    functionName: WebhdfsCore::webhdfs_rename_object
    functionSourceFile: /src/opendal/core/services/webhdfs/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - Buffer::new
    - Request::put
    - Self::send
    - build_rooted_abs_path
    - build_abs_path
    - Result::http_transport
    - as_str
    - DeleteInput::body
    linkageType: ''
    returnType: Result
    signature: 'pub async fn webhdfs_rename_object(&self,ctx: &OperationContext,from:
      &str,to: &str,) -> Result<Response<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/webhdfs/src/core.rs:177,1
    - Dst: as_str
      Src: /src/opendal/core/services/webhdfs/src/core.rs:184,1
    - Dst: Request::post
      Src: /src/opendal/core/services/webhdfs/src/core.rs:190,1
    - Dst: extension
      Src: /src/opendal/core/services/webhdfs/src/core.rs:190,1
    - Dst: extension
      Src: /src/opendal/core/services/webhdfs/src/core.rs:190,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/webhdfs/src/core.rs:192,1
    - Dst: body
      Src: /src/opendal/core/services/webhdfs/src/core.rs:190,1
    - Dst: Buffer::new
      Src: /src/opendal/core/services/webhdfs/src/core.rs:193,1
    - Dst: map_err
      Src: /src/opendal/core/services/webhdfs/src/core.rs:190,1
    - Dst: Result::http_transport
      Src: /src/opendal/core/services/webhdfs/src/core.rs:196,1
    - Dst: Self::send
      Src: /src/opendal/core/services/webhdfs/src/core.rs:196,1
    - Dst: status
      Src: /src/opendal/core/services/webhdfs/src/core.rs:198,1
    - Dst: into_body
      Src: /src/opendal/core/services/webhdfs/src/core.rs:202,1
    - Dst: serde_json::from_reader
      Src: /src/opendal/core/services/webhdfs/src/core.rs:204,1
    - Dst: Result::reader
      Src: /src/opendal/core/services/webhdfs/src/core.rs:204,1
    - Dst: map_err
      Src: /src/opendal/core/services/webhdfs/src/core.rs:204,1
    - Dst: Ok
      Src: /src/opendal/core/services/webhdfs/src/core.rs:206,1
    - Dst: Err
      Src: /src/opendal/core/services/webhdfs/src/core.rs:208,1
    - Dst: parse_error
      Src: /src/opendal/core/services/webhdfs/src/core.rs:208,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 50
    argCount: 2
    argNames:
    - ctx
    - path
    argTypes:
    - '&OperationContext'
    - '&str'
    constantsTouched: []
    func_position:
      end: 210
      start: 176
    functionDepth: 37
    functionLinenumber: 176
    functionLinenumberEnd: 210
    functionName: WebhdfsCore::webhdfs_init_append
    functionSourceFile: /src/opendal/core/services/webhdfs/src/core.rs
    functionUses: 1
    functionsReached:
    - map_err
    - extension
    - Buffer::new
    - status
    - Self::send
    - Ok
    - serde_json::from_reader
    - Request::post
    - body
    - into_body
    - build_abs_path
    - Err
    - parse_error
    - as_str
    - ServiceOperation
    - Result::http_transport
    - Result::reader
    linkageType: ''
    returnType: Result
    signature: 'async fn webhdfs_init_append(&self, ctx: &OperationContext, path:
      &str) -> Result<String>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: WebhdfsCore::webhdfs_init_append
      Src: /src/opendal/core/services/webhdfs/src/core.rs:219,1
    - Dst: as_str
      Src: /src/opendal/core/services/webhdfs/src/core.rs:221,1
    - Dst: Request::post
      Src: /src/opendal/core/services/webhdfs/src/core.rs:227,1
    - Dst: header
      Src: /src/opendal/core/services/webhdfs/src/core.rs:229,1
    - Dst: Option::to_string
      Src: /src/opendal/core/services/webhdfs/src/core.rs:229,1
    - Dst: extension
      Src: /src/opendal/core/services/webhdfs/src/core.rs:231,1
    - Dst: extension
      Src: /src/opendal/core/services/webhdfs/src/core.rs:231,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/webhdfs/src/core.rs:233,1
    - Dst: body
      Src: /src/opendal/core/services/webhdfs/src/core.rs:231,1
    - Dst: map_err
      Src: /src/opendal/core/services/webhdfs/src/core.rs:231,1
    - Dst: Result::http_transport
      Src: /src/opendal/core/services/webhdfs/src/core.rs:237,1
    - Dst: Self::send
      Src: /src/opendal/core/services/webhdfs/src/core.rs:237,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 40
    argCount: 4
    argNames:
    - ctx
    - path
    - size
    - body
    argTypes:
    - '&OperationContext'
    - '&str'
    - u64
    - Buffer
    constantsTouched: []
    func_position:
      end: 238
      start: 212
    functionDepth: 38
    functionLinenumber: 212
    functionLinenumberEnd: 238
    functionName: WebhdfsCore::webhdfs_append
    functionSourceFile: /src/opendal/core/services/webhdfs/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - extension
    - Option::to_string
    - WebhdfsCore::webhdfs_init_append
    - Self::send
    - Request::post
    - body
    - as_str
    - ServiceOperation
    - Result::http_transport
    - header
    linkageType: ''
    returnType: Result
    signature: 'pub async fn webhdfs_append(&self,ctx: &OperationContext,path: &str,size:
      u64,body: Buffer,) -> Result<Response<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/webhdfs/src/core.rs:247,1
    - Dst: Vec<String>::iter
      Src: /src/opendal/core/services/webhdfs/src/core.rs:249,1
    - Dst: map
      Src: /src/opendal/core/services/webhdfs/src/core.rs:249,1
    - Dst: build_rooted_abs_path
      Src: /src/opendal/core/services/webhdfs/src/core.rs:251,1
    - Dst: "iter()\n            .map(|p| build_rooted_abs_path(&self.root, p))\n \
        \           .collect::<Vec<String>>"
      Src: /src/opendal/core/services/webhdfs/src/core.rs:249,1
    - Dst: join
      Src: /src/opendal/core/services/webhdfs/src/core.rs:249,1
    - Dst: as_str
      Src: /src/opendal/core/services/webhdfs/src/core.rs:262,1
    - Dst: Request::post
      Src: /src/opendal/core/services/webhdfs/src/core.rs:268,1
    - Dst: extension
      Src: /src/opendal/core/services/webhdfs/src/core.rs:270,1
    - Dst: extension
      Src: /src/opendal/core/services/webhdfs/src/core.rs:270,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/webhdfs/src/core.rs:272,1
    - Dst: body
      Src: /src/opendal/core/services/webhdfs/src/core.rs:270,1
    - Dst: Buffer::new
      Src: /src/opendal/core/services/webhdfs/src/core.rs:273,1
    - Dst: map_err
      Src: /src/opendal/core/services/webhdfs/src/core.rs:270,1
    - Dst: Result::http_transport
      Src: /src/opendal/core/services/webhdfs/src/core.rs:276,1
    - Dst: Self::send
      Src: /src/opendal/core/services/webhdfs/src/core.rs:276,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 45
    argCount: 3
    argNames:
    - ctx
    - path
    - sources
    argTypes:
    - '&OperationContext'
    - '&str'
    - Vec<String>
    constantsTouched: []
    func_position:
      end: 277
      start: 241
    functionDepth: 33
    functionLinenumber: 241
    functionLinenumberEnd: 277
    functionName: WebhdfsCore::webhdfs_concat
    functionSourceFile: /src/opendal/core/services/webhdfs/src/core.rs
    functionUses: 0
    functionsReached:
    - "iter()\n            .map(|p| build_rooted_abs_path(&self.root, p))\n      \
      \      .collect::<Vec<String>>"
    - extension
    - Buffer::new
    - map_err
    - Self::send
    - join
    - Request::post
    - body
    - build_rooted_abs_path
    - build_abs_path
    - map
    - as_str
    - ServiceOperation
    - Result::http_transport
    - Vec<String>::iter
    linkageType: ''
    returnType: Result
    signature: 'pub async fn webhdfs_concat(&self,ctx: &OperationContext,path: &str,sources:
      Vec<String>,) -> Result<Response<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/webhdfs/src/core.rs:284,1
    - Dst: as_str
      Src: /src/opendal/core/services/webhdfs/src/core.rs:291,1
    - Dst: as_str
      Src: /src/opendal/core/services/webhdfs/src/core.rs:294,1
    - Dst: Request::get
      Src: /src/opendal/core/services/webhdfs/src/core.rs:297,1
    - Dst: Option::body
      Src: /src/opendal/core/services/webhdfs/src/core.rs:297,1
    - Dst: Buffer::new
      Src: /src/opendal/core/services/webhdfs/src/core.rs:298,1
    - Dst: map_err
      Src: /src/opendal/core/services/webhdfs/src/core.rs:297,1
    - Dst: Result::http_transport
      Src: /src/opendal/core/services/webhdfs/src/core.rs:300,1
    - Dst: Self::send
      Src: /src/opendal/core/services/webhdfs/src/core.rs:300,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 30
    argCount: 2
    argNames:
    - ctx
    - path
    argTypes:
    - '&OperationContext'
    - '&str'
    constantsTouched: []
    func_position:
      end: 301
      start: 279
    functionDepth: 37
    functionLinenumber: 279
    functionLinenumberEnd: 301
    functionName: WebhdfsCore::webhdfs_list_status
    functionSourceFile: /src/opendal/core/services/webhdfs/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - Request::get
    - Buffer::new
    - Self::send
    - build_abs_path
    - as_str
    - Result::http_transport
    - Option::body
    linkageType: ''
    returnType: Result
    signature: 'pub async fn webhdfs_list_status(&self,ctx: &OperationContext,path:
      &str,) -> Result<Response<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/webhdfs/src/core.rs:309,1
    - Dst: Result::is_empty
      Src: /src/opendal/core/services/webhdfs/src/core.rs:316,1
    - Dst: as_str
      Src: /src/opendal/core/services/webhdfs/src/core.rs:317,1
    - Dst: as_str
      Src: /src/opendal/core/services/webhdfs/src/core.rs:320,1
    - Dst: as_str
      Src: /src/opendal/core/services/webhdfs/src/core.rs:323,1
    - Dst: Request::get
      Src: /src/opendal/core/services/webhdfs/src/core.rs:326,1
    - Dst: Option::body
      Src: /src/opendal/core/services/webhdfs/src/core.rs:326,1
    - Dst: Buffer::new
      Src: /src/opendal/core/services/webhdfs/src/core.rs:327,1
    - Dst: map_err
      Src: /src/opendal/core/services/webhdfs/src/core.rs:326,1
    - Dst: Result::http_transport
      Src: /src/opendal/core/services/webhdfs/src/core.rs:329,1
    - Dst: Self::send
      Src: /src/opendal/core/services/webhdfs/src/core.rs:329,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 38
    argCount: 3
    argNames:
    - ctx
    - path
    - start_after
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    constantsTouched: []
    func_position:
      end: 330
      start: 303
    functionDepth: 37
    functionLinenumber: 303
    functionLinenumberEnd: 330
    functionName: WebhdfsCore::webhdfs_list_status_batch
    functionSourceFile: /src/opendal/core/services/webhdfs/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - Request::get
    - Buffer::new
    - Self::send
    - build_abs_path
    - as_str
    - Result::is_empty
    - Result::http_transport
    - Option::body
    linkageType: ''
    returnType: Result
    signature: 'pub async fn webhdfs_list_status_batch(&self,ctx: &OperationContext,path:
      &str,start_after: &str,) -> Result<Response<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/webhdfs/src/core.rs:333,1
    - Dst: as_str
      Src: /src/opendal/core/services/webhdfs/src/core.rs:340,1
    - Dst: (Vec::is_full
      Src: /src/opendal/core/services/webhdfs/src/core.rs:346,1
    - Dst: (Vec::size
      Src: /src/opendal/core/services/webhdfs/src/core.rs:348,1
    - Dst: Request::get
      Src: /src/opendal/core/services/webhdfs/src/core.rs:353,1
    - Dst: Option::extension
      Src: /src/opendal/core/services/webhdfs/src/core.rs:353,1
    - Dst: extension
      Src: /src/opendal/core/services/webhdfs/src/core.rs:353,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/webhdfs/src/core.rs:355,1
    - Dst: body
      Src: /src/opendal/core/services/webhdfs/src/core.rs:353,1
    - Dst: Buffer::new
      Src: /src/opendal/core/services/webhdfs/src/core.rs:356,1
    - Dst: map_err
      Src: /src/opendal/core/services/webhdfs/src/core.rs:353,1
    - Dst: Ok
      Src: /src/opendal/core/services/webhdfs/src/core.rs:359,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 42
    argCount: 2
    argNames:
    - path
    - range
    argTypes:
    - '&str'
    - '&BytesRange'
    constantsTouched: []
    func_position:
      end: 360
      start: 332
    functionDepth: 3
    functionLinenumber: 332
    functionLinenumberEnd: 360
    functionName: WebhdfsCore::webhdfs_open_request
    functionSourceFile: /src/opendal/core/services/webhdfs/src/core.rs
    functionUses: 1
    functionsReached:
    - map_err
    - extension
    - Request::get
    - Buffer::new
    - Ok
    - (Vec::size
    - (Vec::is_full
    - body
    - build_abs_path
    - as_str
    - Option::extension
    - ServiceOperation
    linkageType: ''
    returnType: Result
    signature: 'fn webhdfs_open_request(&self, path: &str, range: &BytesRange) ->
      Result<Request<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: WebhdfsCore::webhdfs_open_request
      Src: /src/opendal/core/services/webhdfs/src/core.rs:368,1
    - Dst: Result::http_transport
      Src: /src/opendal/core/services/webhdfs/src/core.rs:369,1
    - Dst: Self::fetch
      Src: /src/opendal/core/services/webhdfs/src/core.rs:369,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 3
    argNames:
    - ctx
    - path
    - range
    argTypes:
    - '&OperationContext'
    - '&str'
    - BytesRange
    constantsTouched: []
    func_position:
      end: 370
      start: 362
    functionDepth: 4
    functionLinenumber: 362
    functionLinenumberEnd: 370
    functionName: WebhdfsCore::webhdfs_read_file
    functionSourceFile: /src/opendal/core/services/webhdfs/src/core.rs
    functionUses: 0
    functionsReached:
    - Result::http_transport
    - WebhdfsCore::webhdfs_open_request
    - Self::fetch
    linkageType: ''
    returnType: Result
    signature: 'pub async fn webhdfs_read_file(&self,ctx: &OperationContext,path:
      &str,range: BytesRange,) -> Result<Response<HttpBody>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/webhdfs/src/core.rs:377,1
    - Dst: as_str
      Src: /src/opendal/core/services/webhdfs/src/core.rs:384,1
    - Dst: as_str
      Src: /src/opendal/core/services/webhdfs/src/core.rs:387,1
    - Dst: Request::get
      Src: /src/opendal/core/services/webhdfs/src/core.rs:390,1
    - Dst: Option::extension
      Src: /src/opendal/core/services/webhdfs/src/core.rs:390,1
    - Dst: extension
      Src: /src/opendal/core/services/webhdfs/src/core.rs:390,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/webhdfs/src/core.rs:392,1
    - Dst: body
      Src: /src/opendal/core/services/webhdfs/src/core.rs:390,1
    - Dst: Buffer::new
      Src: /src/opendal/core/services/webhdfs/src/core.rs:393,1
    - Dst: map_err
      Src: /src/opendal/core/services/webhdfs/src/core.rs:390,1
    - Dst: Result::http_transport
      Src: /src/opendal/core/services/webhdfs/src/core.rs:396,1
    - Dst: Self::send
      Src: /src/opendal/core/services/webhdfs/src/core.rs:396,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 35
    argCount: 2
    argNames:
    - ctx
    - path
    argTypes:
    - '&OperationContext'
    - '&str'
    constantsTouched: []
    func_position:
      end: 397
      start: 372
    functionDepth: 37
    functionLinenumber: 372
    functionLinenumberEnd: 397
    functionName: WebhdfsCore::webhdfs_get_file_status
    functionSourceFile: /src/opendal/core/services/webhdfs/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - extension
    - Request::get
    - Buffer::new
    - Self::send
    - body
    - build_abs_path
    - as_str
    - Option::extension
    - ServiceOperation
    - Result::http_transport
    linkageType: ''
    returnType: Result
    signature: 'pub(super) async fn webhdfs_get_file_status(&self,ctx: &OperationContext,path:
      &str,) -> Result<Response<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/webhdfs/src/core.rs:404,1
    - Dst: as_str
      Src: /src/opendal/core/services/webhdfs/src/core.rs:411,1
    - Dst: as_str
      Src: /src/opendal/core/services/webhdfs/src/core.rs:414,1
    - Dst: Request::delete
      Src: /src/opendal/core/services/webhdfs/src/core.rs:417,1
    - Dst: Result::extension
      Src: /src/opendal/core/services/webhdfs/src/core.rs:417,1
    - Dst: extension
      Src: /src/opendal/core/services/webhdfs/src/core.rs:417,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/webhdfs/src/core.rs:419,1
    - Dst: body
      Src: /src/opendal/core/services/webhdfs/src/core.rs:417,1
    - Dst: Buffer::new
      Src: /src/opendal/core/services/webhdfs/src/core.rs:420,1
    - Dst: map_err
      Src: /src/opendal/core/services/webhdfs/src/core.rs:417,1
    - Dst: Result::http_transport
      Src: /src/opendal/core/services/webhdfs/src/core.rs:423,1
    - Dst: Self::send
      Src: /src/opendal/core/services/webhdfs/src/core.rs:423,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 35
    argCount: 2
    argNames:
    - ctx
    - path
    argTypes:
    - '&OperationContext'
    - '&str'
    constantsTouched: []
    func_position:
      end: 424
      start: 399
    functionDepth: 32
    functionLinenumber: 399
    functionLinenumberEnd: 424
    functionName: WebhdfsCore::webhdfs_delete
    functionSourceFile: /src/opendal/core/services/webhdfs/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - extension
    - Buffer::new
    - Request::delete
    - Self::send
    - Result::extension
    - body
    - build_abs_path
    - as_str
    - ServiceOperation
    - Result::http_transport
    linkageType: ''
    returnType: Result
    signature: 'pub async fn webhdfs_delete(&self,ctx: &OperationContext,path: &str,)
      -> Result<Response<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: serde_json::from_str::<WebHdfsErrorWrapper>
      Src: /src/opendal/core/services/webhdfs/src/core.rs:481,1
    - Dst: '&str::to_owned'
      Src: /src/opendal/core/services/webhdfs/src/core.rs:483,1
    - Dst: Error::new
      Src: /src/opendal/core/services/webhdfs/src/core.rs:486,1
    - Dst: with_error_response_context
      Src: /src/opendal/core/services/webhdfs/src/core.rs:488,1
    - Dst: Error::set_temporary
      Src: /src/opendal/core/services/webhdfs/src/core.rs:491,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 21
    argCount: 2
    argNames:
    - parts
    - body
    argTypes:
    - Parts
    - '&str'
    constantsTouched: []
    func_position:
      end: 495
      start: 465
    functionDepth: 36
    functionLinenumber: 465
    functionLinenumberEnd: 495
    functionName: error::parse_error_msg
    functionSourceFile: /src/opendal/core/services/webhdfs/src/core.rs
    functionUses: 0
    functionsReached:
    - Error::set_temporary
    - serde_json::from_str::<WebHdfsErrorWrapper>
    - Error::new
    - with_error_response_context
    - '&str::to_owned'
    linkageType: ''
    returnType: Error
    signature: 'pub(crate) fn parse_error_msg(parts: Parts, body: &str) -> Error'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 4
    argNames:
    - core
    - ctx
    - op
    - path
    argTypes:
    - Arc<WebhdfsCore>
    - OperationContext
    - OpWrite
    - String
    constantsTouched: []
    func_position:
      end: 50
      start: 43
    functionDepth: 0
    functionLinenumber: 43
    functionLinenumberEnd: 50
    functionName: WebhdfsWriter::new
    functionSourceFile: /src/opendal/core/services/webhdfs/src/writer.rs
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(core: Arc<WebhdfsCore>, ctx: OperationContext, op: OpWrite,
      path: String) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: webhdfs_create_object
      Src: /src/opendal/core/services/webhdfs/src/writer.rs:55,1
    - Dst: Some
      Src: /src/opendal/core/services/webhdfs/src/writer.rs:57,1
    - Dst: status
      Src: /src/opendal/core/services/webhdfs/src/writer.rs:60,1
    - Dst: Ok
      Src: /src/opendal/core/services/webhdfs/src/writer.rs:62,1
    - Dst: Metadata::default
      Src: /src/opendal/core/services/webhdfs/src/writer.rs:62,1
    - Dst: Err
      Src: /src/opendal/core/services/webhdfs/src/writer.rs:63,1
    - Dst: super::core::parse_error
      Src: /src/opendal/core/services/webhdfs/src/writer.rs:63,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 20
    argCount: 2
    argNames:
    - size
    - body
    argTypes:
    - u64
    - Buffer
    constantsTouched: []
    func_position:
      end: 65
      start: 54
    functionDepth: 38
    functionLinenumber: 54
    functionLinenumberEnd: 65
    functionName: WebhdfsWriter::write_once
    functionSourceFile: /src/opendal/core/services/webhdfs/src/writer.rs
    functionUses: 0
    functionsReached:
    - webhdfs_create_object
    - Metadata::default
    - status
    - Ok
    - Some
    - Err
    - super::core::parse_error
    linkageType: ''
    returnType: Result
    signature: 'async fn write_once(&self, size: u64, body: Buffer) -> Result<Metadata>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/core/services/webhdfs/src/writer.rs:69,1
    - Dst: Error::new
      Src: /src/opendal/core/services/webhdfs/src/writer.rs:69,1
    - Dst: webhdfs_create_object
      Src: /src/opendal/core/services/webhdfs/src/writer.rs:74,1
    - Dst: Some
      Src: /src/opendal/core/services/webhdfs/src/writer.rs:79,1
    - Dst: status
      Src: /src/opendal/core/services/webhdfs/src/writer.rs:85,1
    - Dst: Ok
      Src: /src/opendal/core/services/webhdfs/src/writer.rs:87,1
    - Dst: Err
      Src: /src/opendal/core/services/webhdfs/src/writer.rs:88,1
    - Dst: super::core::parse_error
      Src: /src/opendal/core/services/webhdfs/src/writer.rs:88,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 25
    argCount: 3
    argNames:
    - block_id
    - size
    - body
    argTypes:
    - Uuid
    - u64
    - Buffer
    constantsTouched: []
    func_position:
      end: 90
      start: 67
    functionDepth: 36
    functionLinenumber: 67
    functionLinenumberEnd: 90
    functionName: WebhdfsWriter::write_block
    functionSourceFile: /src/opendal/core/services/webhdfs/src/writer.rs
    functionUses: 0
    functionsReached:
    - webhdfs_create_object
    - status
    - Ok
    - Some
    - Error::new
    - Err
    - super::core::parse_error
    linkageType: ''
    returnType: Result
    signature: 'async fn write_block(&self, block_id: Uuid, size: u64, body: Buffer)
      -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/core/services/webhdfs/src/writer.rs:94,1
    - Dst: Error::new
      Src: /src/opendal/core/services/webhdfs/src/writer.rs:94,1
    - Dst: Vec<Uuid>::len
      Src: /src/opendal/core/services/webhdfs/src/writer.rs:100,1
    - Dst: iter
      Src: /src/opendal/core/services/webhdfs/src/writer.rs:101,1
    - Dst: map
      Src: /src/opendal/core/services/webhdfs/src/writer.rs:101,1
    - Dst: collect
      Src: /src/opendal/core/services/webhdfs/src/writer.rs:101,1
    - Dst: webhdfs_concat
      Src: /src/opendal/core/services/webhdfs/src/writer.rs:106,1
    - Dst: status
      Src: /src/opendal/core/services/webhdfs/src/writer.rs:111,1
    - Dst: Err
      Src: /src/opendal/core/services/webhdfs/src/writer.rs:113,1
    - Dst: super::core::parse_error
      Src: /src/opendal/core/services/webhdfs/src/writer.rs:113,1
    - Dst: webhdfs_delete
      Src: /src/opendal/core/services/webhdfs/src/writer.rs:117,1
    - Dst: status
      Src: /src/opendal/core/services/webhdfs/src/writer.rs:119,1
    - Dst: Err
      Src: /src/opendal/core/services/webhdfs/src/writer.rs:121,1
    - Dst: super::core::parse_error
      Src: /src/opendal/core/services/webhdfs/src/writer.rs:121,1
    - Dst: webhdfs_rename_object
      Src: /src/opendal/core/services/webhdfs/src/writer.rs:125,1
    - Dst: status
      Src: /src/opendal/core/services/webhdfs/src/writer.rs:130,1
    - Dst: Ok
      Src: /src/opendal/core/services/webhdfs/src/writer.rs:132,1
    - Dst: Metadata::default
      Src: /src/opendal/core/services/webhdfs/src/writer.rs:132,1
    - Dst: Err
      Src: /src/opendal/core/services/webhdfs/src/writer.rs:133,1
    - Dst: super::core::parse_error
      Src: /src/opendal/core/services/webhdfs/src/writer.rs:133,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 73
    argCount: 1
    argNames:
    - block_ids
    argTypes:
    - Vec<Uuid>
    constantsTouched: []
    func_position:
      end: 135
      start: 92
    functionDepth: 36
    functionLinenumber: 92
    functionLinenumberEnd: 135
    functionName: WebhdfsWriter::complete_block
    functionSourceFile: /src/opendal/core/services/webhdfs/src/writer.rs
    functionUses: 0
    functionsReached:
    - collect
    - iter
    - webhdfs_concat
    - status
    - Ok
    - Metadata::default
    - Vec<Uuid>::len
    - Error::new
    - map
    - Err
    - webhdfs_delete
    - webhdfs_rename_object
    - super::core::parse_error
    linkageType: ''
    returnType: Result
    signature: 'async fn complete_block(&self, block_ids: Vec<Uuid>) -> Result<Metadata>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: webhdfs_delete
      Src: /src/opendal/core/services/webhdfs/src/writer.rs:139,1
    - Dst: to_string
      Src: /src/opendal/core/services/webhdfs/src/writer.rs:141,1
    - Dst: status
      Src: /src/opendal/core/services/webhdfs/src/writer.rs:143,1
    - Dst: Err
      Src: /src/opendal/core/services/webhdfs/src/writer.rs:145,1
    - Dst: super::core::parse_error
      Src: /src/opendal/core/services/webhdfs/src/writer.rs:145,1
    - Dst: Ok
      Src: /src/opendal/core/services/webhdfs/src/writer.rs:148,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 21
    argCount: 1
    argNames:
    - block_ids
    argTypes:
    - Vec<Uuid>
    constantsTouched: []
    func_position:
      end: 149
      start: 137
    functionDepth: 33
    functionLinenumber: 137
    functionLinenumberEnd: 149
    functionName: WebhdfsWriter::abort_block
    functionSourceFile: /src/opendal/core/services/webhdfs/src/writer.rs
    functionUses: 0
    functionsReached:
    - to_string
    - status
    - Ok
    - Err
    - webhdfs_delete
    - super::core::parse_error
    linkageType: ''
    returnType: Result
    signature: 'async fn abort_block(&self, block_ids: Vec<Uuid>) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: webhdfs_get_file_status
      Src: /src/opendal/core/services/webhdfs/src/writer.rs:154,1
    - Dst: status
      Src: /src/opendal/core/services/webhdfs/src/writer.rs:159,1
    - Dst: into_body
      Src: /src/opendal/core/services/webhdfs/src/writer.rs:162,1
    - Dst: serde_json::from_reader::<_, FileStatusWrapper>
      Src: /src/opendal/core/services/webhdfs/src/writer.rs:163,1
    - Dst: Result::reader
      Src: /src/opendal/core/services/webhdfs/src/writer.rs:163,1
    - Dst: map_err
      Src: /src/opendal/core/services/webhdfs/src/writer.rs:163,1
    - Dst: Ok
      Src: /src/opendal/core/services/webhdfs/src/writer.rs:167,1
    - Dst: webhdfs_create_object
      Src: /src/opendal/core/services/webhdfs/src/writer.rs:170,1
    - Dst: Buffer::new
      Src: /src/opendal/core/services/webhdfs/src/writer.rs:172,1
    - Dst: status
      Src: /src/opendal/core/services/webhdfs/src/writer.rs:175,1
    - Dst: Ok
      Src: /src/opendal/core/services/webhdfs/src/writer.rs:177,1
    - Dst: Err
      Src: /src/opendal/core/services/webhdfs/src/writer.rs:178,1
    - Dst: super::core::parse_error
      Src: /src/opendal/core/services/webhdfs/src/writer.rs:178,1
    - Dst: Err
      Src: /src/opendal/core/services/webhdfs/src/writer.rs:181,1
    - Dst: super::core::parse_error
      Src: /src/opendal/core/services/webhdfs/src/writer.rs:181,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 45
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 183
      start: 153
    functionDepth: 38
    functionLinenumber: 153
    functionLinenumberEnd: 183
    functionName: WebhdfsWriter::offset
    functionSourceFile: /src/opendal/core/services/webhdfs/src/writer.rs
    functionUses: 0
    functionsReached:
    - webhdfs_get_file_status
    - map_err
    - Buffer::new
    - webhdfs_create_object
    - status
    - Ok
    - into_body
    - serde_json::from_reader::<_, FileStatusWrapper>
    - Err
    - Result::reader
    - super::core::parse_error
    linkageType: ''
    returnType: Result
    signature: async fn offset(&self) -> Result<u64>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: webhdfs_append
      Src: /src/opendal/core/services/webhdfs/src/writer.rs:186,1
    - Dst: status
      Src: /src/opendal/core/services/webhdfs/src/writer.rs:191,1
    - Dst: Ok
      Src: /src/opendal/core/services/webhdfs/src/writer.rs:193,1
    - Dst: Metadata::default
      Src: /src/opendal/core/services/webhdfs/src/writer.rs:193,1
    - Dst: Err
      Src: /src/opendal/core/services/webhdfs/src/writer.rs:194,1
    - Dst: super::core::parse_error
      Src: /src/opendal/core/services/webhdfs/src/writer.rs:194,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 3
    argNames:
    - _offset
    - size
    - body
    argTypes:
    - u64
    - u64
    - Buffer
    constantsTouched: []
    func_position:
      end: 196
      start: 185
    functionDepth: 39
    functionLinenumber: 185
    functionLinenumberEnd: 196
    functionName: WebhdfsWriter::append
    functionSourceFile: /src/opendal/core/services/webhdfs/src/writer.rs
    functionUses: 0
    functionsReached:
    - Metadata::default
    - status
    - Ok
    - Err
    - super::core::parse_error
    - webhdfs_append
    linkageType: ''
    returnType: Result
    signature: 'async fn append(&self, _offset: u64, size: u64, body: Buffer) -> Result<Metadata>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: serde_json::from_str
      Src: /src/opendal/core/services/webhdfs/src/message.rs:106,1
    - Dst: Result::expect
      Src: /src/opendal/core/services/webhdfs/src/message.rs:106,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 111
      start: 88
    functionDepth: 34
    functionLinenumber: 88
    functionLinenumberEnd: 111
    functionName: test::test_file_status
    functionSourceFile: /src/opendal/core/services/webhdfs/src/message.rs
    functionUses: 0
    functionsReached:
    - Result::expect
    - serde_json::from_str
    linkageType: ''
    returnType: void
    signature: fn test_file_status()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: serde_json::from_str::<FileStatusesWrapper>
      Src: /src/opendal/core/services/webhdfs/src/message.rs:120,1
    - Dst: expect
      Src: /src/opendal/core/services/webhdfs/src/message.rs:120,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 125
      start: 114
    functionDepth: 0
    functionLinenumber: 114
    functionLinenumberEnd: 125
    functionName: test::test_list_empty
    functionSourceFile: /src/opendal/core/services/webhdfs/src/message.rs
    functionUses: 0
    functionsReached:
    - serde_json::from_str::<FileStatusesWrapper>
    - expect
    linkageType: ''
    returnType: void
    signature: async fn test_list_empty()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: serde_json::from_str::<FileStatusesWrapper>
      Src: /src/opendal/core/services/webhdfs/src/message.rs:164,1
    - Dst: expect
      Src: /src/opendal/core/services/webhdfs/src/message.rs:164,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 179
      start: 128
    functionDepth: 0
    functionLinenumber: 128
    functionLinenumberEnd: 179
    functionName: test::test_list_status
    functionSourceFile: /src/opendal/core/services/webhdfs/src/message.rs
    functionUses: 0
    functionsReached:
    - serde_json::from_str::<FileStatusesWrapper>
    - expect
    linkageType: ''
    returnType: void
    signature: async fn test_list_status()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: serde_json::from_str::<DirectoryListingWrapper>
      Src: /src/opendal/core/services/webhdfs/src/message.rs:227,1
    - Dst: expect
      Src: /src/opendal/core/services/webhdfs/src/message.rs:227,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 248
      start: 182
    functionDepth: 0
    functionLinenumber: 182
    functionLinenumberEnd: 248
    functionName: test::test_list_status_batch
    functionSourceFile: /src/opendal/core/services/webhdfs/src/message.rs
    functionUses: 0
    functionsReached:
    - serde_json::from_str::<DirectoryListingWrapper>
    - expect
    linkageType: ''
    returnType: void
    signature: async fn test_list_status_batch()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: register::<Webhdfs>
      Src: /src/opendal/core/services/webhdfs/src/lib.rs:23,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - registry
    argTypes:
    - '&opendal_core::OperatorRegistry'
    constantsTouched: []
    func_position:
      end: 24
      start: 22
    functionDepth: 0
    functionLinenumber: 22
    functionLinenumberEnd: 24
    functionName: register_webhdfs_service
    functionSourceFile: /src/opendal/core/services/webhdfs/src/lib.rs
    functionUses: 1
    functionsReached:
    - register::<Webhdfs>
    linkageType: ''
    returnType: void
    signature: 'pub fn register_webhdfs_service(registry: &opendal_core::OperatorRegistry)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::is_empty
      Src: /src/opendal/core/services/webhdfs/src/backend.rs:60,1
    - Dst: Some
      Src: /src/opendal/core/services/webhdfs/src/backend.rs:63,1
    - Dst: Result::to_string
      Src: /src/opendal/core/services/webhdfs/src/backend.rs:63,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - root
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 67
      start: 59
    functionDepth: 4
    functionLinenumber: 59
    functionLinenumberEnd: 67
    functionName: WebhdfsBuilder::root
    functionSourceFile: /src/opendal/core/services/webhdfs/src/backend.rs
    functionUses: 0
    functionsReached:
    - Result::is_empty
    - Result::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn root(mut self, root: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self::is_empty
      Src: /src/opendal/core/services/webhdfs/src/backend.rs:80,1
    - Dst: Some
      Src: /src/opendal/core/services/webhdfs/src/backend.rs:82,1
    - Dst: Self::trim_end_matches
      Src: /src/opendal/core/services/webhdfs/src/backend.rs:82,1
    - Dst: to_string
      Src: /src/opendal/core/services/webhdfs/src/backend.rs:82,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 14
    argCount: 1
    argNames:
    - endpoint
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 85
      start: 79
    functionDepth: 4
    functionLinenumber: 79
    functionLinenumberEnd: 85
    functionName: WebhdfsBuilder::endpoint
    functionSourceFile: /src/opendal/core/services/webhdfs/src/backend.rs
    functionUses: 0
    functionsReached:
    - Self::is_empty
    - to_string
    - Self::trim_end_matches
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn endpoint(mut self, endpoint: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self::is_empty
      Src: /src/opendal/core/services/webhdfs/src/backend.rs:90,1
    - Dst: Some
      Src: /src/opendal/core/services/webhdfs/src/backend.rs:91,1
    - Dst: Self::to_string
      Src: /src/opendal/core/services/webhdfs/src/backend.rs:91,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 1
    argNames:
    - user_name
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 94
      start: 89
    functionDepth: 4
    functionLinenumber: 89
    functionLinenumberEnd: 94
    functionName: WebhdfsBuilder::user_name
    functionSourceFile: /src/opendal/core/services/webhdfs/src/backend.rs
    functionUses: 0
    functionsReached:
    - Self::is_empty
    - Self::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn user_name(mut self, user_name: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self::is_empty
      Src: /src/opendal/core/services/webhdfs/src/backend.rs:103,1
    - Dst: Some
      Src: /src/opendal/core/services/webhdfs/src/backend.rs:104,1
    - Dst: Self::to_string
      Src: /src/opendal/core/services/webhdfs/src/backend.rs:104,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 1
    argNames:
    - delegation
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 107
      start: 102
    functionDepth: 4
    functionLinenumber: 102
    functionLinenumberEnd: 107
    functionName: WebhdfsBuilder::delegation
    functionSourceFile: /src/opendal/core/services/webhdfs/src/backend.rs
    functionUses: 0
    functionsReached:
    - Self::is_empty
    - Self::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn delegation(mut self, delegation: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 118
      start: 115
    functionDepth: 0
    functionLinenumber: 115
    functionLinenumberEnd: 118
    functionName: WebhdfsBuilder::disable_list_batch
    functionSourceFile: /src/opendal/core/services/webhdfs/src/backend.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: pub fn disable_list_batch(mut self) -> Self
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::is_empty
      Src: /src/opendal/core/services/webhdfs/src/backend.rs:126,1
    - Dst: Some
      Src: /src/opendal/core/services/webhdfs/src/backend.rs:129,1
    - Dst: String::from
      Src: /src/opendal/core/services/webhdfs/src/backend.rs:129,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - dir
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 132
      start: 125
    functionDepth: 31
    functionLinenumber: 125
    functionLinenumberEnd: 132
    functionName: WebhdfsBuilder::atomic_write_dir
    functionSourceFile: /src/opendal/core/services/webhdfs/src/backend.rs
    functionUses: 0
    functionsReached:
    - Result::is_empty
    - String::from
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn atomic_write_dir(mut self, dir: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: normalize_root
      Src: /src/opendal/core/services/webhdfs/src/backend.rs:148,1
    - Dst: unwrap_or_default
      Src: /src/opendal/core/services/webhdfs/src/backend.rs:148,1
    - Dst: Self::starts_with
      Src: /src/opendal/core/services/webhdfs/src/backend.rs:154,1
    - Dst: to_string
      Src: /src/opendal/core/services/webhdfs/src/backend.rs:160,1
    - Dst: map
      Src: /src/opendal/core/services/webhdfs/src/backend.rs:166,1
    - Dst: ServiceInfo::new
      Src: /src/opendal/core/services/webhdfs/src/backend.rs:168,1
    - Dst: Self::is_some
      Src: /src/opendal/core/services/webhdfs/src/backend.rs:176,1
    - Dst: Default::default
      Src: /src/opendal/core/services/webhdfs/src/backend.rs:185,1
    - Dst: Arc::new
      Src: /src/opendal/core/services/webhdfs/src/backend.rs:189,1
    - Dst: OnceCell::new
      Src: /src/opendal/core/services/webhdfs/src/backend.rs:196,1
    - Dst: Ok
      Src: /src/opendal/core/services/webhdfs/src/backend.rs:201,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 40
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 202
      start: 145
    functionDepth: 34
    functionLinenumber: 145
    functionLinenumberEnd: 202
    functionName: WebhdfsBuilder::build
    functionSourceFile: /src/opendal/core/services/webhdfs/src/backend.rs
    functionUses: 0
    functionsReached:
    - to_string
    - ServiceInfo::new
    - Ok
    - Default::default
    - Arc::new
    - normalize_root
    - unwrap_or_default
    - map
    - OnceCell::new
    - Self::is_some
    - Self::starts_with
    linkageType: ''
    returnType: Result
    signature: fn build(self) -> Result<impl Service>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: webhdfs_get_file_status
      Src: /src/opendal/core/services/webhdfs/src/backend.rs:213,1
    - Dst: status
      Src: /src/opendal/core/services/webhdfs/src/backend.rs:214,1
    - Dst: into_body
      Src: /src/opendal/core/services/webhdfs/src/backend.rs:216,1
    - Dst: serde_json::from_reader::<_, FileStatusWrapper>
      Src: /src/opendal/core/services/webhdfs/src/backend.rs:218,1
    - Dst: Result::reader
      Src: /src/opendal/core/services/webhdfs/src/backend.rs:218,1
    - Dst: map_err
      Src: /src/opendal/core/services/webhdfs/src/backend.rs:218,1
    - Dst: Err
      Src: /src/opendal/core/services/webhdfs/src/backend.rs:223,1
    - Dst: Error::new
      Src: /src/opendal/core/services/webhdfs/src/backend.rs:223,1
    - Dst: WebhdfsBackend::create_dir
      Src: /src/opendal/core/services/webhdfs/src/backend.rs:230,1
    - Dst: OpCreateDir::new
      Src: /src/opendal/core/services/webhdfs/src/backend.rs:230,1
    - Dst: Err
      Src: /src/opendal/core/services/webhdfs/src/backend.rs:232,1
    - Dst: super::core::parse_error
      Src: /src/opendal/core/services/webhdfs/src/backend.rs:232,1
    - Dst: Ok
      Src: /src/opendal/core/services/webhdfs/src/backend.rs:234,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 37
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - '&OperationContext'
    constantsTouched: []
    func_position:
      end: 235
      start: 212
    functionDepth: 38
    functionLinenumber: 212
    functionLinenumberEnd: 235
    functionName: WebhdfsBackend::check_root
    functionSourceFile: /src/opendal/core/services/webhdfs/src/backend.rs
    functionUses: 1
    functionsReached:
    - webhdfs_get_file_status
    - map_err
    - status
    - Ok
    - into_body
    - serde_json::from_reader::<_, FileStatusWrapper>
    - Err
    - Error::new
    - OpCreateDir::new
    - Result::reader
    - super::core::parse_error
    - WebhdfsBackend::create_dir
    linkageType: ''
    returnType: Result
    signature: 'async fn check_root(&self, ctx: &OperationContext) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: clone
      Src: /src/opendal/core/services/webhdfs/src/backend.rs:246,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 247
      start: 245
    functionDepth: 2
    functionLinenumber: 245
    functionLinenumberEnd: 247
    functionName: WebhdfsBackend::info
    functionSourceFile: /src/opendal/core/services/webhdfs/src/backend.rs
    functionUses: 0
    functionsReached:
    - clone
    linkageType: ''
    returnType: ServiceInfo
    signature: fn info(&self) -> ServiceInfo
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 251
      start: 249
    functionDepth: 0
    functionLinenumber: 249
    functionLinenumberEnd: 251
    functionName: WebhdfsBackend::capability
    functionSourceFile: /src/opendal/core/services/webhdfs/src/backend.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Capability
    signature: fn capability(&self) -> Capability
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: webhdfs_create_dir
      Src: /src/opendal/core/services/webhdfs/src/backend.rs:260,1
    - Dst: status
      Src: /src/opendal/core/services/webhdfs/src/backend.rs:262,1
    - Dst: into_body
      Src: /src/opendal/core/services/webhdfs/src/backend.rs:269,1
    - Dst: serde_json::from_reader::<_, BooleanResp>
      Src: /src/opendal/core/services/webhdfs/src/backend.rs:271,1
    - Dst: Result::reader
      Src: /src/opendal/core/services/webhdfs/src/backend.rs:271,1
    - Dst: map_err
      Src: /src/opendal/core/services/webhdfs/src/backend.rs:271,1
    - Dst: Ok
      Src: /src/opendal/core/services/webhdfs/src/backend.rs:275,1
    - Dst: RpCreateDir::default
      Src: /src/opendal/core/services/webhdfs/src/backend.rs:275,1
    - Dst: Err
      Src: /src/opendal/core/services/webhdfs/src/backend.rs:277,1
    - Dst: Error::new
      Src: /src/opendal/core/services/webhdfs/src/backend.rs:277,1
    - Dst: Err
      Src: /src/opendal/core/services/webhdfs/src/backend.rs:283,1
    - Dst: super::core::parse_error
      Src: /src/opendal/core/services/webhdfs/src/backend.rs:283,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 26
    argCount: 3
    argNames:
    - ctx
    - path
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpCreateDir
    constantsTouched: []
    func_position:
      end: 285
      start: 254
    functionDepth: 38
    functionLinenumber: 254
    functionLinenumberEnd: 285
    functionName: WebhdfsBackend::create_dir
    functionSourceFile: /src/opendal/core/services/webhdfs/src/backend.rs
    functionUses: 1
    functionsReached:
    - map_err
    - status
    - Ok
    - RpCreateDir::default
    - serde_json::from_reader::<_, BooleanResp>
    - into_body
    - webhdfs_create_dir
    - Err
    - Error::new
    - Result::reader
    - super::core::parse_error
    linkageType: ''
    returnType: Result
    signature: 'async fn create_dir(&self,ctx: &OperationContext,path: &str,_: OpCreateDir,)
      -> Result<RpCreateDir>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: get_or_try_init
      Src: /src/opendal/core/services/webhdfs/src/backend.rs:289,1
    - Dst: WebhdfsBackend::check_root
      Src: /src/opendal/core/services/webhdfs/src/backend.rs:291,1
    - Dst: webhdfs_get_file_status
      Src: /src/opendal/core/services/webhdfs/src/backend.rs:294,1
    - Dst: status
      Src: /src/opendal/core/services/webhdfs/src/backend.rs:295,1
    - Dst: into_body
      Src: /src/opendal/core/services/webhdfs/src/backend.rs:298,1
    - Dst: serde_json::from_reader::<_, FileStatusWrapper>
      Src: /src/opendal/core/services/webhdfs/src/backend.rs:300,1
    - Dst: Result::reader
      Src: /src/opendal/core/services/webhdfs/src/backend.rs:300,1
    - Dst: map_err
      Src: /src/opendal/core/services/webhdfs/src/backend.rs:300,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/webhdfs/src/backend.rs:305,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/webhdfs/src/backend.rs:306,1
    - Dst: Self::with_content_length
      Src: /src/opendal/core/services/webhdfs/src/backend.rs:306,1
    - Dst: Self::with_last_modified
      Src: /src/opendal/core/services/webhdfs/src/backend.rs:306,1
    - Dst: Timestamp::from_millisecond
      Src: /src/opendal/core/services/webhdfs/src/backend.rs:308,1
    - Dst: Ok
      Src: /src/opendal/core/services/webhdfs/src/backend.rs:313,1
    - Dst: RpStat::new
      Src: /src/opendal/core/services/webhdfs/src/backend.rs:313,1
    - Dst: Err
      Src: /src/opendal/core/services/webhdfs/src/backend.rs:316,1
    - Dst: super::core::parse_error
      Src: /src/opendal/core/services/webhdfs/src/backend.rs:316,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 45
    argCount: 3
    argNames:
    - ctx
    - path
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpStat
    constantsTouched: []
    func_position:
      end: 318
      start: 287
    functionDepth: 39
    functionLinenumber: 287
    functionLinenumberEnd: 318
    functionName: WebhdfsBackend::stat
    functionSourceFile: /src/opendal/core/services/webhdfs/src/backend.rs
    functionUses: 0
    functionsReached:
    - webhdfs_get_file_status
    - map_err
    - Metadata::new
    - status
    - Ok
    - get_or_try_init
    - Self::with_content_length
    - Self::with_last_modified
    - into_body
    - serde_json::from_reader::<_, FileStatusWrapper>
    - RpStat::new
    - Err
    - WebhdfsBackend::check_root
    - Timestamp::from_millisecond
    - Result::reader
    - super::core::parse_error
    linkageType: ''
    returnType: Result
    signature: 'async fn stat(&self, ctx: &OperationContext, path: &str, _: OpStat)
      -> Result<RpStat>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/core/services/webhdfs/src/backend.rs:321,1
    - Dst: oio::StreamReader::new
      Src: /src/opendal/core/services/webhdfs/src/backend.rs:321,1
    - Dst: WebhdfsReader::new
      Src: /src/opendal/core/services/webhdfs/src/backend.rs:321,1
    - Dst: WebhdfsBackend::clone
      Src: /src/opendal/core/services/webhdfs/src/backend.rs:322,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/webhdfs/src/backend.rs:323,1
    - Dst: Ok
      Src: /src/opendal/core/services/webhdfs/src/backend.rs:329,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpRead
    constantsTouched: []
    func_position:
      end: 330
      start: 319
    functionDepth: 3
    functionLinenumber: 319
    functionLinenumberEnd: 330
    functionName: WebhdfsBackend::read
    functionSourceFile: /src/opendal/core/services/webhdfs/src/backend.rs
    functionUses: 0
    functionsReached:
    - Result::clone
    - Ok
    - oio::StreamReader::new
    - WebhdfsReader::new
    - WebhdfsBackend::clone
    linkageType: ''
    returnType: Result
    signature: 'fn read(&self, ctx: &OperationContext, path: &str, args: OpRead) ->
      Result<Self::Reader>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: WebhdfsWriter::new
      Src: /src/opendal/core/services/webhdfs/src/backend.rs:334,1
    - Dst: clone
      Src: /src/opendal/core/services/webhdfs/src/backend.rs:335,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/webhdfs/src/backend.rs:336,1
    - Dst: OpStat::clone
      Src: /src/opendal/core/services/webhdfs/src/backend.rs:337,1
    - Dst: to_string
      Src: /src/opendal/core/services/webhdfs/src/backend.rs:338,1
    - Dst: OpStat::append
      Src: /src/opendal/core/services/webhdfs/src/backend.rs:341,1
    - Dst: WebhdfsWriters::Two
      Src: /src/opendal/core/services/webhdfs/src/backend.rs:342,1
    - Dst: oio::AppendWriter::new
      Src: /src/opendal/core/services/webhdfs/src/backend.rs:342,1
    - Dst: WebhdfsWriters::One
      Src: /src/opendal/core/services/webhdfs/src/backend.rs:344,1
    - Dst: oio::BlockWriter::new
      Src: /src/opendal/core/services/webhdfs/src/backend.rs:344,1
    - Dst: Result::executor
      Src: /src/opendal/core/services/webhdfs/src/backend.rs:345,1
    - Dst: Self::clone
      Src: /src/opendal/core/services/webhdfs/src/backend.rs:345,1
    - Dst: OpStat::concurrent
      Src: /src/opendal/core/services/webhdfs/src/backend.rs:347,1
    - Dst: Ok
      Src: /src/opendal/core/services/webhdfs/src/backend.rs:351,1
    - Dst: Ok
      Src: /src/opendal/core/services/webhdfs/src/backend.rs:354,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 26
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpWrite
    constantsTouched: []
    func_position:
      end: 355
      start: 332
    functionDepth: 31
    functionLinenumber: 332
    functionLinenumberEnd: 355
    functionName: WebhdfsBackend::write
    functionSourceFile: /src/opendal/core/services/webhdfs/src/backend.rs
    functionUses: 0
    functionsReached:
    - Result::clone
    - to_string
    - OpStat::clone
    - Ok
    - Result::executor
    - clone
    - WebhdfsWriter::new
    - WebhdfsWriters::Two
    - WebhdfsWriters::One
    - OpStat::append
    - oio::BlockWriter::new
    - Self::clone
    - OpStat::concurrent
    - oio::AppendWriter::new
    linkageType: ''
    returnType: Result
    signature: 'fn write(&self, ctx: &OperationContext, path: &str, args: OpWrite)
      -> Result<Self::Writer>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/core/services/webhdfs/src/backend.rs:359,1
    - Dst: oio::OneShotDeleter::new
      Src: /src/opendal/core/services/webhdfs/src/backend.rs:359,1
    - Dst: WebhdfsDeleter::new
      Src: /src/opendal/core/services/webhdfs/src/backend.rs:359,1
    - Dst: clone
      Src: /src/opendal/core/services/webhdfs/src/backend.rs:360,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/webhdfs/src/backend.rs:361,1
    - Dst: Ok
      Src: /src/opendal/core/services/webhdfs/src/backend.rs:365,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - '&OperationContext'
    constantsTouched: []
    func_position:
      end: 366
      start: 357
    functionDepth: 2
    functionLinenumber: 357
    functionLinenumberEnd: 366
    functionName: WebhdfsBackend::delete
    functionSourceFile: /src/opendal/core/services/webhdfs/src/backend.rs
    functionUses: 0
    functionsReached:
    - oio::OneShotDeleter::new
    - Result::clone
    - Ok
    - WebhdfsDeleter::new
    - clone
    linkageType: ''
    returnType: Result
    signature: 'fn delete(&self, ctx: &OperationContext) -> Result<Self::Deleter>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: OpStat::recursive
      Src: /src/opendal/core/services/webhdfs/src/backend.rs:370,1
    - Dst: Err
      Src: /src/opendal/core/services/webhdfs/src/backend.rs:371,1
    - Dst: Error::new
      Src: /src/opendal/core/services/webhdfs/src/backend.rs:371,1
    - Dst: trim_end_matches
      Src: /src/opendal/core/services/webhdfs/src/backend.rs:377,1
    - Dst: WebhdfsLister::new
      Src: /src/opendal/core/services/webhdfs/src/backend.rs:378,1
    - Dst: clone
      Src: /src/opendal/core/services/webhdfs/src/backend.rs:378,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/webhdfs/src/backend.rs:378,1
    - Dst: Ok
      Src: /src/opendal/core/services/webhdfs/src/backend.rs:379,1
    - Dst: oio::PageLister::new
      Src: /src/opendal/core/services/webhdfs/src/backend.rs:379,1
    - Dst: Ok
      Src: /src/opendal/core/services/webhdfs/src/backend.rs:382,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 20
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpList
    constantsTouched: []
    func_position:
      end: 383
      start: 368
    functionDepth: 36
    functionLinenumber: 368
    functionLinenumberEnd: 383
    functionName: WebhdfsBackend::list
    functionSourceFile: /src/opendal/core/services/webhdfs/src/backend.rs
    functionUses: 0
    functionsReached:
    - Result::clone
    - Ok
    - WebhdfsLister::new
    - trim_end_matches
    - clone
    - Error::new
    - Err
    - oio::PageLister::new
    - OpStat::recursive
    linkageType: ''
    returnType: Result
    signature: 'fn list(&self, ctx: &OperationContext, path: &str, args: OpList) ->
      Result<Self::Lister>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/core/services/webhdfs/src/backend.rs:393,1
    - Dst: Error::new
      Src: /src/opendal/core/services/webhdfs/src/backend.rs:393,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 5
    argNames:
    - _ctx
    - _from
    - _to
    - _args
    - _opts
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    - OpCopy
    - OpCopier
    constantsTouched: []
    func_position:
      end: 397
      start: 385
    functionDepth: 36
    functionLinenumber: 385
    functionLinenumberEnd: 397
    functionName: WebhdfsBackend::copy
    functionSourceFile: /src/opendal/core/services/webhdfs/src/backend.rs
    functionUses: 0
    functionsReached:
    - Error::new
    - Err
    linkageType: ''
    returnType: Result
    signature: 'fn copy(&self,_ctx: &OperationContext,_from: &str,_to: &str,_args:
      OpCopy,_opts: OpCopier,) -> Result<Self::Copier>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/core/services/webhdfs/src/backend.rs:406,1
    - Dst: Error::new
      Src: /src/opendal/core/services/webhdfs/src/backend.rs:406,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - _ctx
    - _from
    - _to
    - _args
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    - OpRename
    constantsTouched: []
    func_position:
      end: 410
      start: 399
    functionDepth: 36
    functionLinenumber: 399
    functionLinenumberEnd: 410
    functionName: WebhdfsBackend::rename
    functionSourceFile: /src/opendal/core/services/webhdfs/src/backend.rs
    functionUses: 0
    functionsReached:
    - Error::new
    - Err
    linkageType: ''
    returnType: Result
    signature: 'async fn rename(&self,_ctx: &OperationContext,_from: &str,_to: &str,_args:
      OpRename,) -> Result<RpRename>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/core/services/webhdfs/src/backend.rs:418,1
    - Dst: Error::new
      Src: /src/opendal/core/services/webhdfs/src/backend.rs:418,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - _ctx
    - _path
    - _args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpPresign
    constantsTouched: []
    func_position:
      end: 422
      start: 412
    functionDepth: 36
    functionLinenumber: 412
    functionLinenumberEnd: 422
    functionName: WebhdfsBackend::presign
    functionSourceFile: /src/opendal/core/services/webhdfs/src/backend.rs
    functionUses: 0
    functionsReached:
    - Error::new
    - Err
    linkageType: ''
    returnType: Result
    signature: 'async fn presign(&self,_ctx: &OperationContext,_path: &str,_args:
      OpPresign,) -> Result<RpPresign>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::options
      Src: /src/opendal/core/services/ipfs/src/config.rs:38,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/ipfs/src/config.rs:38,1
    - Dst: Result::authority
      Src: /src/opendal/core/services/ipfs/src/config.rs:39,1
    - Dst: Result::insert
      Src: /src/opendal/core/services/ipfs/src/config.rs:40,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/ipfs/src/config.rs:40,1
    - Dst: Result::root
      Src: /src/opendal/core/services/ipfs/src/config.rs:43,1
    - Dst: Result::is_empty
      Src: /src/opendal/core/services/ipfs/src/config.rs:44,1
    - Dst: Result::insert
      Src: /src/opendal/core/services/ipfs/src/config.rs:46,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/ipfs/src/config.rs:46,1
    - Dst: Result::to_string
      Src: /src/opendal/core/services/ipfs/src/config.rs:46,1
    - Dst: Self::from_iter
      Src: /src/opendal/core/services/ipfs/src/config.rs:49,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 28
    argCount: 1
    argNames:
    - uri
    argTypes:
    - '&opendal_core::OperatorUri'
    constantsTouched: []
    func_position:
      end: 50
      start: 37
    functionDepth: 35
    functionLinenumber: 37
    functionLinenumberEnd: 50
    functionName: IpfsConfig::from_uri
    functionSourceFile: /src/opendal/core/services/ipfs/src/config.rs
    functionUses: 0
    functionsReached:
    - Result::clone
    - Self::from_iter
    - Result::to_string
    - Result::insert
    - Result::is_empty
    - '&str::to_string'
    - Result::root
    - Result::authority
    - Result::options
    linkageType: ''
    returnType: opendal_core::Result
    signature: 'fn from_uri(uri: &opendal_core::OperatorUri) -> opendal_core::Result<Self>'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 54
      start: 52
    functionDepth: 0
    functionLinenumber: 52
    functionLinenumberEnd: 54
    functionName: IpfsConfig::into_builder
    functionSourceFile: /src/opendal/core/services/ipfs/src/config.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Self::Builder
    signature: fn into_builder(self) -> Self::Builder
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: PBNode::decode
      Src: /src/opendal/core/services/ipfs/src/ipld.rs:149,1
    - Dst: Bytes::from
      Src: /src/opendal/core/services/ipfs/src/ipld.rs:149,1
    - Dst: FoyerResult::expect
      Src: /src/opendal/core/services/ipfs/src/ipld.rs:149,1
    - Dst: clone
      Src: /src/opendal/core/services/ipfs/src/ipld.rs:150,1
    - Dst: Data::decode
      Src: /src/opendal/core/services/ipfs/src/ipld.rs:151,1
    - Dst: Bytes::from
      Src: /src/opendal/core/services/ipfs/src/ipld.rs:151,1
    - Dst: FoyerResult::expect
      Src: /src/opendal/core/services/ipfs/src/ipld.rs:151,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 19
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 161
      start: 104
    functionDepth: 32
    functionLinenumber: 104
    functionLinenumberEnd: 161
    functionName: tests::test_message
    functionSourceFile: /src/opendal/core/services/ipfs/src/ipld.rs
    functionUses: 0
    functionsReached:
    - PBNode::decode
    - clone
    - Bytes::from
    - FoyerResult::expect
    - Data::decode
    linkageType: ''
    returnType: void
    signature: fn test_message()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: to_string
      Src: /src/opendal/core/services/ipfs/src/reader.rs:37,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 4
    argNames:
    - backend
    - ctx
    - path
    argTypes:
    - IpfsBackend
    - OperationContext
    - '&str'
    - OpRead
    constantsTouched: []
    func_position:
      end: 39
      start: 33
    functionDepth: 2
    functionLinenumber: 33
    functionLinenumberEnd: 39
    functionName: IpfsReader::new
    functionSourceFile: /src/opendal/core/services/ipfs/src/reader.rs
    functionUses: 1
    functionsReached:
    - to_string
    linkageType: ''
    returnType: Self
    signature: 'pub(super) fn new(backend: IpfsBackend, ctx: OperationContext, path:
      &str, _: OpRead) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: as_str
      Src: /src/opendal/core/services/ipfs/src/reader.rs:45,1
    - Dst: ipfs_get
      Src: /src/opendal/core/services/ipfs/src/reader.rs:46,1
    - Dst: status
      Src: /src/opendal/core/services/ipfs/src/reader.rs:48,1
    - Dst: RpRead::new
      Src: /src/opendal/core/services/ipfs/src/reader.rs:52,1
    - Dst: parse_into_metadata
      Src: /src/opendal/core/services/ipfs/src/reader.rs:52,1
    - Dst: headers
      Src: /src/opendal/core/services/ipfs/src/reader.rs:52,1
    - Dst: into_body
      Src: /src/opendal/core/services/ipfs/src/reader.rs:53,1
    - Dst: into_parts
      Src: /src/opendal/core/services/ipfs/src/reader.rs:56,1
    - Dst: to_buffer
      Src: /src/opendal/core/services/ipfs/src/reader.rs:57,1
    - Dst: Err
      Src: /src/opendal/core/services/ipfs/src/reader.rs:58,1
    - Dst: core::parse_error
      Src: /src/opendal/core/services/ipfs/src/reader.rs:58,1
    - Dst: Response::from_parts
      Src: /src/opendal/core/services/ipfs/src/reader.rs:58,1
    - Dst: Ok
      Src: /src/opendal/core/services/ipfs/src/reader.rs:62,1
    - Dst: Box::new
      Src: /src/opendal/core/services/ipfs/src/reader.rs:62,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 38
    argCount: 1
    argNames:
    - range
    argTypes:
    - BytesRange
    constantsTouched: []
    func_position:
      end: 63
      start: 43
    functionDepth: 38
    functionLinenumber: 43
    functionLinenumberEnd: 63
    functionName: IpfsReader::open
    functionSourceFile: /src/opendal/core/services/ipfs/src/reader.rs
    functionUses: 0
    functionsReached:
    - ipfs_get
    - parse_into_metadata
    - to_buffer
    - status
    - Ok
    - Box::new
    - into_body
    - Err
    - Response::from_parts
    - as_str
    - headers
    - into_parts
    - core::parse_error
    - RpRead::new
    linkageType: ''
    returnType: Result
    signature: 'async fn open(&self, range: BytesRange) -> Result<(RpRead, Box<dyn
      oio::ReadStreamDyn>)>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::debug_struct
      Src: /src/opendal/core/services/ipfs/src/core.rs:36,1
    - Dst: field
      Src: /src/opendal/core/services/ipfs/src/core.rs:36,1
    - Dst: field
      Src: /src/opendal/core/services/ipfs/src/core.rs:36,1
    - Dst: finish_non_exhaustive
      Src: /src/opendal/core/services/ipfs/src/core.rs:36,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 1
    argNames:
    - f
    argTypes:
    - '&mut std::fmt::Formatter<''_>'
    constantsTouched: []
    func_position:
      end: 40
      start: 35
    functionDepth: 5
    functionLinenumber: 35
    functionLinenumberEnd: 40
    functionName: IpfsCore::fmt
    functionSourceFile: /src/opendal/core/services/ipfs/src/core.rs
    functionUses: 0
    functionsReached:
    - field
    - Result::debug_struct
    - finish_non_exhaustive
    linkageType: ''
    returnType: std::fmt::Result
    signature: 'fn fmt(&self, f: &mut std::fmt::Formatter<''_>) -> std::fmt::Result'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_rooted_abs_path
      Src: /src/opendal/core/services/ipfs/src/core.rs:50,1
    - Dst: Request::get
      Src: /src/opendal/core/services/ipfs/src/core.rs:54,1
    - Dst: (Vec::is_full
      Src: /src/opendal/core/services/ipfs/src/core.rs:56,1
    - Dst: Option::header
      Src: /src/opendal/core/services/ipfs/src/core.rs:57,1
    - Dst: (Vec::to_header
      Src: /src/opendal/core/services/ipfs/src/core.rs:57,1
    - Dst: Option::extension
      Src: /src/opendal/core/services/ipfs/src/core.rs:60,1
    - Dst: extension
      Src: /src/opendal/core/services/ipfs/src/core.rs:60,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/ipfs/src/core.rs:62,1
    - Dst: body
      Src: /src/opendal/core/services/ipfs/src/core.rs:60,1
    - Dst: Buffer::new
      Src: /src/opendal/core/services/ipfs/src/core.rs:63,1
    - Dst: map_err
      Src: /src/opendal/core/services/ipfs/src/core.rs:60,1
    - Dst: Result::http_transport
      Src: /src/opendal/core/services/ipfs/src/core.rs:66,1
    - Dst: Self::fetch
      Src: /src/opendal/core/services/ipfs/src/core.rs:66,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 32
    argCount: 3
    argNames:
    - ctx
    - path
    - range
    argTypes:
    - '&OperationContext'
    - '&str'
    - BytesRange
    constantsTouched: []
    func_position:
      end: 67
      start: 44
    functionDepth: 3
    functionLinenumber: 44
    functionLinenumberEnd: 67
    functionName: IpfsCore::ipfs_get
    functionSourceFile: /src/opendal/core/services/ipfs/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - extension
    - Request::get
    - (Vec::to_header
    - Buffer::new
    - (Vec::is_full
    - body
    - build_rooted_abs_path
    - Option::extension
    - Self::fetch
    - ServiceOperation
    - Result::http_transport
    - Option::header
    linkageType: ''
    returnType: Result
    signature: 'pub async fn ipfs_get(&self,ctx: &OperationContext,path: &str,range:
      BytesRange,) -> Result<Response<HttpBody>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_rooted_abs_path
      Src: /src/opendal/core/services/ipfs/src/core.rs:70,1
    - Dst: Request::head
      Src: /src/opendal/core/services/ipfs/src/core.rs:74,1
    - Dst: Result::extension
      Src: /src/opendal/core/services/ipfs/src/core.rs:74,1
    - Dst: extension
      Src: /src/opendal/core/services/ipfs/src/core.rs:74,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/ipfs/src/core.rs:76,1
    - Dst: body
      Src: /src/opendal/core/services/ipfs/src/core.rs:78,1
    - Dst: Buffer::new
      Src: /src/opendal/core/services/ipfs/src/core.rs:78,1
    - Dst: map_err
      Src: /src/opendal/core/services/ipfs/src/core.rs:78,1
    - Dst: Result::http_transport
      Src: /src/opendal/core/services/ipfs/src/core.rs:80,1
    - Dst: Self::send
      Src: /src/opendal/core/services/ipfs/src/core.rs:80,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 21
    argCount: 2
    argNames:
    - ctx
    - path
    argTypes:
    - '&OperationContext'
    - '&str'
    constantsTouched: []
    func_position:
      end: 81
      start: 69
    functionDepth: 37
    functionLinenumber: 69
    functionLinenumberEnd: 81
    functionName: IpfsCore::ipfs_head
    functionSourceFile: /src/opendal/core/services/ipfs/src/core.rs
    functionUses: 1
    functionsReached:
    - map_err
    - extension
    - Request::head
    - Buffer::new
    - Self::send
    - Result::extension
    - body
    - build_rooted_abs_path
    - ServiceOperation
    - Result::http_transport
    linkageType: ''
    returnType: Result
    signature: 'pub async fn ipfs_head(&self, ctx: &OperationContext, path: &str)
      -> Result<Response<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_rooted_abs_path
      Src: /src/opendal/core/services/ipfs/src/core.rs:84,1
    - Dst: Request::get
      Src: /src/opendal/core/services/ipfs/src/core.rs:88,1
    - Dst: Option::header
      Src: /src/opendal/core/services/ipfs/src/core.rs:94,1
    - Dst: Option::extension
      Src: /src/opendal/core/services/ipfs/src/core.rs:96,1
    - Dst: extension
      Src: /src/opendal/core/services/ipfs/src/core.rs:96,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/ipfs/src/core.rs:98,1
    - Dst: body
      Src: /src/opendal/core/services/ipfs/src/core.rs:96,1
    - Dst: Buffer::new
      Src: /src/opendal/core/services/ipfs/src/core.rs:99,1
    - Dst: map_err
      Src: /src/opendal/core/services/ipfs/src/core.rs:96,1
    - Dst: Result::http_transport
      Src: /src/opendal/core/services/ipfs/src/core.rs:102,1
    - Dst: Self::send
      Src: /src/opendal/core/services/ipfs/src/core.rs:102,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 25
    argCount: 2
    argNames:
    - ctx
    - path
    argTypes:
    - '&OperationContext'
    - '&str'
    constantsTouched: []
    func_position:
      end: 103
      start: 83
    functionDepth: 37
    functionLinenumber: 83
    functionLinenumberEnd: 103
    functionName: IpfsCore::ipfs_list
    functionSourceFile: /src/opendal/core/services/ipfs/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - extension
    - Request::get
    - Buffer::new
    - Self::send
    - body
    - build_rooted_abs_path
    - Option::extension
    - ServiceOperation
    - Result::http_transport
    - Option::header
    linkageType: ''
    returnType: Result
    signature: 'pub async fn ipfs_list(&self, ctx: &OperationContext, path: &str)
      -> Result<Response<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/core/services/ipfs/src/core.rs:210,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/ipfs/src/core.rs:210,1
    - Dst: IpfsCore::ipfs_head
      Src: /src/opendal/core/services/ipfs/src/core.rs:213,1
    - Dst: status
      Src: /src/opendal/core/services/ipfs/src/core.rs:214,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/ipfs/src/core.rs:218,1
    - Dst: parse_content_length
      Src: /src/opendal/core/services/ipfs/src/core.rs:220,1
    - Dst: headers
      Src: /src/opendal/core/services/ipfs/src/core.rs:220,1
    - Dst: Result::set_content_length
      Src: /src/opendal/core/services/ipfs/src/core.rs:221,1
    - Dst: parse_content_type
      Src: /src/opendal/core/services/ipfs/src/core.rs:224,1
    - Dst: headers
      Src: /src/opendal/core/services/ipfs/src/core.rs:224,1
    - Dst: Result::set_content_type
      Src: /src/opendal/core/services/ipfs/src/core.rs:225,1
    - Dst: parse_etag
      Src: /src/opendal/core/services/ipfs/src/core.rs:228,1
    - Dst: headers
      Src: /src/opendal/core/services/ipfs/src/core.rs:228,1
    - Dst: Result::set_etag
      Src: /src/opendal/core/services/ipfs/src/core.rs:229,1
    - Dst: Result::starts_with
      Src: /src/opendal/core/services/ipfs/src/core.rs:231,1
    - Dst: Result::set_mode
      Src: /src/opendal/core/services/ipfs/src/core.rs:232,1
    - Dst: Result::set_mode
      Src: /src/opendal/core/services/ipfs/src/core.rs:234,1
    - Dst: Result::set_mode
      Src: /src/opendal/core/services/ipfs/src/core.rs:239,1
    - Dst: parse_content_disposition
      Src: /src/opendal/core/services/ipfs/src/core.rs:242,1
    - Dst: headers
      Src: /src/opendal/core/services/ipfs/src/core.rs:242,1
    - Dst: Result::set_content_disposition
      Src: /src/opendal/core/services/ipfs/src/core.rs:243,1
    - Dst: Ok
      Src: /src/opendal/core/services/ipfs/src/core.rs:246,1
    - Dst: Ok
      Src: /src/opendal/core/services/ipfs/src/core.rs:248,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/ipfs/src/core.rs:248,1
    - Dst: Err
      Src: /src/opendal/core/services/ipfs/src/core.rs:249,1
    - Dst: parse_error
      Src: /src/opendal/core/services/ipfs/src/core.rs:249,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 70
    argCount: 2
    argNames:
    - ctx
    - path
    argTypes:
    - '&OperationContext'
    - '&str'
    constantsTouched: []
    func_position:
      end: 251
      start: 207
    functionDepth: 38
    functionLinenumber: 207
    functionLinenumberEnd: 251
    functionName: IpfsCore::ipfs_stat
    functionSourceFile: /src/opendal/core/services/ipfs/src/core.rs
    functionUses: 0
    functionsReached:
    - Metadata::new
    - Result::set_content_disposition
    - status
    - Ok
    - IpfsCore::ipfs_head
    - Result::set_etag
    - parse_content_disposition
    - parse_error
    - Err
    - Result::set_mode
    - parse_content_length
    - Result::set_content_length
    - headers
    - Result::set_content_type
    - Result::starts_with
    - parse_etag
    - parse_content_type
    linkageType: ''
    returnType: Result
    signature: 'pub async fn ipfs_stat(&self, ctx: &OperationContext, path: &str)
      -> Result<Metadata>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: register::<Ipfs>
      Src: /src/opendal/core/services/ipfs/src/lib.rs:36,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - registry
    argTypes:
    - '&opendal_core::OperatorRegistry'
    constantsTouched: []
    func_position:
      end: 37
      start: 35
    functionDepth: 0
    functionLinenumber: 35
    functionLinenumberEnd: 37
    functionName: register_ipfs_service
    functionSourceFile: /src/opendal/core/services/ipfs/src/lib.rs
    functionUses: 1
    functionsReached:
    - register::<Ipfs>
    linkageType: ''
    returnType: void
    signature: 'pub fn register_ipfs_service(registry: &opendal_core::OperatorRegistry)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::debug_struct
      Src: /src/opendal/core/services/ipfs/src/backend.rs:43,1
    - Dst: field
      Src: /src/opendal/core/services/ipfs/src/backend.rs:43,1
    - Dst: finish
      Src: /src/opendal/core/services/ipfs/src/backend.rs:43,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - f
    argTypes:
    - '&mut std::fmt::Formatter<''_>'
    constantsTouched: []
    func_position:
      end: 46
      start: 42
    functionDepth: 5
    functionLinenumber: 42
    functionLinenumberEnd: 46
    functionName: IpfsBuilder::fmt
    functionSourceFile: /src/opendal/core/services/ipfs/src/backend.rs
    functionUses: 0
    functionsReached:
    - field
    - finish
    - Result::debug_struct
    linkageType: ''
    returnType: std::fmt::Result
    signature: 'fn fmt(&self, f: &mut std::fmt::Formatter<''_>) -> std::fmt::Result'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::is_empty
      Src: /src/opendal/core/services/ipfs/src/backend.rs:58,1
    - Dst: Some
      Src: /src/opendal/core/services/ipfs/src/backend.rs:61,1
    - Dst: Result::to_string
      Src: /src/opendal/core/services/ipfs/src/backend.rs:61,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - root
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 65
      start: 57
    functionDepth: 4
    functionLinenumber: 57
    functionLinenumberEnd: 65
    functionName: IpfsBuilder::root
    functionSourceFile: /src/opendal/core/services/ipfs/src/backend.rs
    functionUses: 0
    functionsReached:
    - Result::is_empty
    - Result::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn root(mut self, root: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self::is_empty
      Src: /src/opendal/core/services/ipfs/src/backend.rs:79,1
    - Dst: Some
      Src: /src/opendal/core/services/ipfs/src/backend.rs:81,1
    - Dst: Self::trim_end_matches
      Src: /src/opendal/core/services/ipfs/src/backend.rs:81,1
    - Dst: to_string
      Src: /src/opendal/core/services/ipfs/src/backend.rs:81,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 14
    argCount: 1
    argNames:
    - endpoint
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 85
      start: 78
    functionDepth: 4
    functionLinenumber: 78
    functionLinenumberEnd: 85
    functionName: IpfsBuilder::endpoint
    functionSourceFile: /src/opendal/core/services/ipfs/src/backend.rs
    functionUses: 0
    functionsReached:
    - Self::is_empty
    - to_string
    - Self::trim_end_matches
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn endpoint(mut self, endpoint: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: normalize_root
      Src: /src/opendal/core/services/ipfs/src/backend.rs:94,1
    - Dst: unwrap_or_default
      Src: /src/opendal/core/services/ipfs/src/backend.rs:94,1
    - Dst: Result::starts_with
      Src: /src/opendal/core/services/ipfs/src/backend.rs:95,1
    - Dst: Result::starts_with
      Src: /src/opendal/core/services/ipfs/src/backend.rs:95,1
    - Dst: Err
      Src: /src/opendal/core/services/ipfs/src/backend.rs:96,1
    - Dst: Error::new
      Src: /src/opendal/core/services/ipfs/src/backend.rs:96,1
    - Dst: Self::with_context
      Src: /src/opendal/core/services/ipfs/src/backend.rs:96,1
    - Dst: Self::with_context
      Src: /src/opendal/core/services/ipfs/src/backend.rs:96,1
    - Dst: Ok
      Src: /src/opendal/core/services/ipfs/src/backend.rs:106,1
    - Dst: Self::clone
      Src: /src/opendal/core/services/ipfs/src/backend.rs:106,1
    - Dst: Err
      Src: /src/opendal/core/services/ipfs/src/backend.rs:107,1
    - Dst: Error::new
      Src: /src/opendal/core/services/ipfs/src/backend.rs:107,1
    - Dst: Self::with_context
      Src: /src/opendal/core/services/ipfs/src/backend.rs:107,1
    - Dst: Self::with_context
      Src: /src/opendal/core/services/ipfs/src/backend.rs:107,1
    - Dst: ServiceInfo::new
      Src: /src/opendal/core/services/ipfs/src/backend.rs:113,1
    - Dst: Default::default
      Src: /src/opendal/core/services/ipfs/src/backend.rs:124,1
    - Dst: Arc::new
      Src: /src/opendal/core/services/ipfs/src/backend.rs:128,1
    - Dst: Ok
      Src: /src/opendal/core/services/ipfs/src/backend.rs:135,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 50
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 136
      start: 91
    functionDepth: 34
    functionLinenumber: 91
    functionLinenumberEnd: 136
    functionName: IpfsBuilder::build
    functionSourceFile: /src/opendal/core/services/ipfs/src/backend.rs
    functionUses: 0
    functionsReached:
    - ServiceInfo::new
    - Ok
    - Default::default
    - Arc::new
    - normalize_root
    - Err
    - Error::new
    - Self::clone
    - Result::starts_with
    - Self::with_context
    - unwrap_or_default
    linkageType: ''
    returnType: Result
    signature: fn build(self) -> Result<impl Service>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: clone
      Src: /src/opendal/core/services/ipfs/src/backend.rs:153,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 154
      start: 152
    functionDepth: 2
    functionLinenumber: 152
    functionLinenumberEnd: 154
    functionName: IpfsBackend::info
    functionSourceFile: /src/opendal/core/services/ipfs/src/backend.rs
    functionUses: 0
    functionsReached:
    - clone
    linkageType: ''
    returnType: ServiceInfo
    signature: fn info(&self) -> ServiceInfo
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 158
      start: 156
    functionDepth: 0
    functionLinenumber: 156
    functionLinenumberEnd: 158
    functionName: IpfsBackend::capability
    functionSourceFile: /src/opendal/core/services/ipfs/src/backend.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Capability
    signature: fn capability(&self) -> Capability
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/core/services/ipfs/src/backend.rs:166,1
    - Dst: Error::new
      Src: /src/opendal/core/services/ipfs/src/backend.rs:166,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - _ctx
    - _path
    - _args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpCreateDir
    constantsTouched: []
    func_position:
      end: 170
      start: 160
    functionDepth: 36
    functionLinenumber: 160
    functionLinenumberEnd: 170
    functionName: IpfsBackend::create_dir
    functionSourceFile: /src/opendal/core/services/ipfs/src/backend.rs
    functionUses: 0
    functionsReached:
    - Error::new
    - Err
    linkageType: ''
    returnType: Result
    signature: 'async fn create_dir(&self,_ctx: &OperationContext,_path: &str,_args:
      OpCreateDir,) -> Result<RpCreateDir>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: ipfs_stat
      Src: /src/opendal/core/services/ipfs/src/backend.rs:173,1
    - Dst: Ok
      Src: /src/opendal/core/services/ipfs/src/backend.rs:174,1
    - Dst: RpStat::new
      Src: /src/opendal/core/services/ipfs/src/backend.rs:174,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 3
    argNames:
    - ctx
    - path
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpStat
    constantsTouched: []
    func_position:
      end: 175
      start: 172
    functionDepth: 39
    functionLinenumber: 172
    functionLinenumberEnd: 175
    functionName: IpfsBackend::stat
    functionSourceFile: /src/opendal/core/services/ipfs/src/backend.rs
    functionUses: 0
    functionsReached:
    - ipfs_stat
    - RpStat::new
    - Ok
    linkageType: ''
    returnType: Result
    signature: 'async fn stat(&self, ctx: &OperationContext, path: &str, _: OpStat)
      -> Result<RpStat>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/core/services/ipfs/src/backend.rs:179,1
    - Dst: oio::StreamReader::new
      Src: /src/opendal/core/services/ipfs/src/backend.rs:179,1
    - Dst: IpfsReader::new
      Src: /src/opendal/core/services/ipfs/src/backend.rs:179,1
    - Dst: IpfsBackend::clone
      Src: /src/opendal/core/services/ipfs/src/backend.rs:180,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/ipfs/src/backend.rs:181,1
    - Dst: Ok
      Src: /src/opendal/core/services/ipfs/src/backend.rs:187,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpRead
    constantsTouched: []
    func_position:
      end: 188
      start: 177
    functionDepth: 3
    functionLinenumber: 177
    functionLinenumberEnd: 188
    functionName: IpfsBackend::read
    functionSourceFile: /src/opendal/core/services/ipfs/src/backend.rs
    functionUses: 0
    functionsReached:
    - Result::clone
    - Ok
    - oio::StreamReader::new
    - IpfsBackend::clone
    - IpfsReader::new
    linkageType: ''
    returnType: Result
    signature: 'fn read(&self, ctx: &OperationContext, path: &str, args: OpRead) ->
      Result<Self::Reader>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/core/services/ipfs/src/backend.rs:191,1
    - Dst: Error::new
      Src: /src/opendal/core/services/ipfs/src/backend.rs:191,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - _ctx
    - _path
    - _args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpWrite
    constantsTouched: []
    func_position:
      end: 195
      start: 190
    functionDepth: 36
    functionLinenumber: 190
    functionLinenumberEnd: 195
    functionName: IpfsBackend::write
    functionSourceFile: /src/opendal/core/services/ipfs/src/backend.rs
    functionUses: 0
    functionsReached:
    - Error::new
    - Err
    linkageType: ''
    returnType: Result
    signature: 'fn write(&self, _ctx: &OperationContext, _path: &str, _args: OpWrite)
      -> Result<Self::Writer>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/core/services/ipfs/src/backend.rs:198,1
    - Dst: Error::new
      Src: /src/opendal/core/services/ipfs/src/backend.rs:198,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - _ctx
    argTypes:
    - '&OperationContext'
    constantsTouched: []
    func_position:
      end: 202
      start: 197
    functionDepth: 36
    functionLinenumber: 197
    functionLinenumberEnd: 202
    functionName: IpfsBackend::delete
    functionSourceFile: /src/opendal/core/services/ipfs/src/backend.rs
    functionUses: 0
    functionsReached:
    - Error::new
    - Err
    linkageType: ''
    returnType: Result
    signature: 'fn delete(&self, _ctx: &OperationContext) -> Result<Self::Deleter>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: DirStream::new
      Src: /src/opendal/core/services/ipfs/src/backend.rs:206,1
    - Dst: clone
      Src: /src/opendal/core/services/ipfs/src/backend.rs:206,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/ipfs/src/backend.rs:206,1
    - Dst: Ok
      Src: /src/opendal/core/services/ipfs/src/backend.rs:207,1
    - Dst: oio::PageLister::new
      Src: /src/opendal/core/services/ipfs/src/backend.rs:207,1
    - Dst: Ok
      Src: /src/opendal/core/services/ipfs/src/backend.rs:210,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 3
    argNames:
    - ctx
    - path
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpList
    constantsTouched: []
    func_position:
      end: 211
      start: 204
    functionDepth: 3
    functionLinenumber: 204
    functionLinenumberEnd: 211
    functionName: IpfsBackend::list
    functionSourceFile: /src/opendal/core/services/ipfs/src/backend.rs
    functionUses: 0
    functionsReached:
    - Result::clone
    - Ok
    - clone
    - DirStream::new
    - oio::PageLister::new
    linkageType: ''
    returnType: Result
    signature: 'fn list(&self, ctx: &OperationContext, path: &str, _: OpList) -> Result<Self::Lister>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/core/services/ipfs/src/backend.rs:221,1
    - Dst: Error::new
      Src: /src/opendal/core/services/ipfs/src/backend.rs:221,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 5
    argNames:
    - _ctx
    - _from
    - _to
    - _args
    - _opts
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    - OpCopy
    - OpCopier
    constantsTouched: []
    func_position:
      end: 225
      start: 213
    functionDepth: 36
    functionLinenumber: 213
    functionLinenumberEnd: 225
    functionName: IpfsBackend::copy
    functionSourceFile: /src/opendal/core/services/ipfs/src/backend.rs
    functionUses: 0
    functionsReached:
    - Error::new
    - Err
    linkageType: ''
    returnType: Result
    signature: 'fn copy(&self,_ctx: &OperationContext,_from: &str,_to: &str,_args:
      OpCopy,_opts: OpCopier,) -> Result<Self::Copier>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/core/services/ipfs/src/backend.rs:234,1
    - Dst: Error::new
      Src: /src/opendal/core/services/ipfs/src/backend.rs:234,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - _ctx
    - _from
    - _to
    - _args
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    - OpRename
    constantsTouched: []
    func_position:
      end: 238
      start: 227
    functionDepth: 36
    functionLinenumber: 227
    functionLinenumberEnd: 238
    functionName: IpfsBackend::rename
    functionSourceFile: /src/opendal/core/services/ipfs/src/backend.rs
    functionUses: 0
    functionsReached:
    - Error::new
    - Err
    linkageType: ''
    returnType: Result
    signature: 'async fn rename(&self,_ctx: &OperationContext,_from: &str,_to: &str,_args:
      OpRename,) -> Result<RpRename>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/core/services/ipfs/src/backend.rs:246,1
    - Dst: Error::new
      Src: /src/opendal/core/services/ipfs/src/backend.rs:246,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - _ctx
    - _path
    - _args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpPresign
    constantsTouched: []
    func_position:
      end: 250
      start: 240
    functionDepth: 36
    functionLinenumber: 240
    functionLinenumberEnd: 250
    functionName: IpfsBackend::presign
    functionSourceFile: /src/opendal/core/services/ipfs/src/backend.rs
    functionUses: 0
    functionsReached:
    - Error::new
    - Err
    linkageType: ''
    returnType: Result
    signature: 'async fn presign(&self,_ctx: &OperationContext,_path: &str,_args:
      OpPresign,) -> Result<RpPresign>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: to_string
      Src: /src/opendal/core/services/ipfs/src/backend.rs:264,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - core
    - ctx
    - path
    argTypes:
    - Arc<IpfsCore>
    - OperationContext
    - '&str'
    constantsTouched: []
    func_position:
      end: 266
      start: 260
    functionDepth: 2
    functionLinenumber: 260
    functionLinenumberEnd: 266
    functionName: DirStream::new
    functionSourceFile: /src/opendal/core/services/ipfs/src/backend.rs
    functionUses: 1
    functionsReached:
    - to_string
    linkageType: ''
    returnType: Self
    signature: 'fn new(core: Arc<IpfsCore>, ctx: OperationContext, path: &str) ->
      Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: ipfs_list
      Src: /src/opendal/core/services/ipfs/src/backend.rs:271,1
    - Dst: status
      Src: /src/opendal/core/services/ipfs/src/backend.rs:273,1
    - Dst: Err
      Src: /src/opendal/core/services/ipfs/src/backend.rs:274,1
    - Dst: core::parse_error
      Src: /src/opendal/core/services/ipfs/src/backend.rs:274,1
    - Dst: into_body
      Src: /src/opendal/core/services/ipfs/src/backend.rs:277,1
    - Dst: PBNode::decode
      Src: /src/opendal/core/services/ipfs/src/backend.rs:278,1
    - Dst: FoyerResult::map_err
      Src: /src/opendal/core/services/ipfs/src/backend.rs:278,1
    - Dst: Error::new
      Src: /src/opendal/core/services/ipfs/src/backend.rs:279,1
    - Dst: Self::set_source
      Src: /src/opendal/core/services/ipfs/src/backend.rs:279,1
    - Dst: into_iter
      Src: /src/opendal/core/services/ipfs/src/backend.rs:282,1
    - Dst: map
      Src: /src/opendal/core/services/ipfs/src/backend.rs:282,1
    - Dst: unwrap
      Src: /src/opendal/core/services/ipfs/src/backend.rs:285,1
    - Dst: "links\n            .into_iter()\n            .map(|v| v.name.unwrap())\n\
        \            .collect::<Vec<String>>"
      Src: /src/opendal/core/services/ipfs/src/backend.rs:282,1
    - Dst: ipfs_stat
      Src: /src/opendal/core/services/ipfs/src/backend.rs:289,1
    - Dst: Result::mode
      Src: /src/opendal/core/services/ipfs/src/backend.rs:291,1
    - Dst: Option::is_dir
      Src: /src/opendal/core/services/ipfs/src/backend.rs:291,1
    - Dst: push_back
      Src: /src/opendal/core/services/ipfs/src/backend.rs:295,1
    - Dst: oio::Entry::new
      Src: /src/opendal/core/services/ipfs/src/backend.rs:295,1
    - Dst: Ok
      Src: /src/opendal/core/services/ipfs/src/backend.rs:299,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 66
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - '&mut oio::PageContext'
    constantsTouched: []
    func_position:
      end: 300
      start: 270
    functionDepth: 38
    functionLinenumber: 270
    functionLinenumberEnd: 300
    functionName: DirStream::next_page
    functionSourceFile: /src/opendal/core/services/ipfs/src/backend.rs
    functionUses: 0
    functionsReached:
    - status
    - map
    - Ok
    - Option::is_dir
    - unwrap
    - Result::mode
    - into_body
    - Self::set_source
    - ipfs_stat
    - ipfs_list
    - oio::Entry::new
    - PBNode::decode
    - push_back
    - FoyerResult::map_err
    - Err
    - Error::new
    - into_iter
    - "links\n            .into_iter()\n            .map(|v| v.name.unwrap())\n  \
      \          .collect::<Vec<String>>"
    - core::parse_error
    linkageType: ''
    returnType: Result
    signature: 'async fn next_page(&self, ctx: &mut oio::PageContext) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::debug_struct
      Src: /src/opendal/core/services/lakefs/src/config.rs:61,1
    - Dst: field
      Src: /src/opendal/core/services/lakefs/src/config.rs:61,1
    - Dst: field
      Src: /src/opendal/core/services/lakefs/src/config.rs:61,1
    - Dst: field
      Src: /src/opendal/core/services/lakefs/src/config.rs:61,1
    - Dst: field
      Src: /src/opendal/core/services/lakefs/src/config.rs:61,1
    - Dst: finish_non_exhaustive
      Src: /src/opendal/core/services/lakefs/src/config.rs:61,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 20
    argCount: 1
    argNames:
    - f
    argTypes:
    - '&mut std::fmt::Formatter<''_>'
    constantsTouched: []
    func_position:
      end: 67
      start: 60
    functionDepth: 5
    functionLinenumber: 60
    functionLinenumberEnd: 67
    functionName: LakefsConfig::fmt
    functionSourceFile: /src/opendal/core/services/lakefs/src/config.rs
    functionUses: 0
    functionsReached:
    - field
    - Result::debug_struct
    - finish_non_exhaustive
    linkageType: ''
    returnType: std::fmt::Result
    signature: 'fn fmt(&self, f: &mut std::fmt::Formatter<''_>) -> std::fmt::Result'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::root
      Src: /src/opendal/core/services/lakefs/src/config.rs:74,1
    - Dst: Result::ok_or_else
      Src: /src/opendal/core/services/lakefs/src/config.rs:74,1
    - Dst: Error::new
      Src: /src/opendal/core/services/lakefs/src/config.rs:75,1
    - Dst: Self::with_context
      Src: /src/opendal/core/services/lakefs/src/config.rs:75,1
    - Dst: split_once
      Src: /src/opendal/core/services/lakefs/src/config.rs:79,1
    - Dst: Some
      Src: /src/opendal/core/services/lakefs/src/config.rs:80,1
    - Dst: is_empty
      Src: /src/opendal/core/services/lakefs/src/config.rs:84,1
    - Dst: Some
      Src: /src/opendal/core/services/lakefs/src/config.rs:87,1
    - Dst: ok_or_else
      Src: /src/opendal/core/services/lakefs/src/config.rs:84,1
    - Dst: Error::new
      Src: /src/opendal/core/services/lakefs/src/config.rs:90,1
    - Dst: Self::with_context
      Src: /src/opendal/core/services/lakefs/src/config.rs:90,1
    - Dst: Result::options
      Src: /src/opendal/core/services/lakefs/src/config.rs:97,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/lakefs/src/config.rs:97,1
    - Dst: Result::authority
      Src: /src/opendal/core/services/lakefs/src/config.rs:98,1
    - Dst: Result::insert
      Src: /src/opendal/core/services/lakefs/src/config.rs:99,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/lakefs/src/config.rs:99,1
    - Dst: Result::insert
      Src: /src/opendal/core/services/lakefs/src/config.rs:101,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/lakefs/src/config.rs:101,1
    - Dst: to_string
      Src: /src/opendal/core/services/lakefs/src/config.rs:101,1
    - Dst: Result::contains_key
      Src: /src/opendal/core/services/lakefs/src/config.rs:104,1
    - Dst: is_empty
      Src: /src/opendal/core/services/lakefs/src/config.rs:105,1
    - Dst: Result::insert
      Src: /src/opendal/core/services/lakefs/src/config.rs:106,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/lakefs/src/config.rs:106,1
    - Dst: to_string
      Src: /src/opendal/core/services/lakefs/src/config.rs:106,1
    - Dst: split_once
      Src: /src/opendal/core/services/lakefs/src/config.rs:109,1
    - Dst: Some
      Src: /src/opendal/core/services/lakefs/src/config.rs:110,1
    - Dst: Self::is_empty
      Src: /src/opendal/core/services/lakefs/src/config.rs:114,1
    - Dst: Result::insert
      Src: /src/opendal/core/services/lakefs/src/config.rs:115,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/lakefs/src/config.rs:115,1
    - Dst: Self::to_string
      Src: /src/opendal/core/services/lakefs/src/config.rs:115,1
    - Dst: is_empty
      Src: /src/opendal/core/services/lakefs/src/config.rs:119,1
    - Dst: Result::insert
      Src: /src/opendal/core/services/lakefs/src/config.rs:121,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/lakefs/src/config.rs:121,1
    - Dst: to_string
      Src: /src/opendal/core/services/lakefs/src/config.rs:121,1
    - Dst: Self::from_iter
      Src: /src/opendal/core/services/lakefs/src/config.rs:126,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 95
    argCount: 1
    argNames:
    - uri
    argTypes:
    - '&OperatorUri'
    constantsTouched: []
    func_position:
      end: 127
      start: 73
    functionDepth: 32
    functionLinenumber: 73
    functionLinenumberEnd: 127
    functionName: LakefsConfig::from_uri
    functionSourceFile: /src/opendal/core/services/lakefs/src/config.rs
    functionUses: 2
    functionsReached:
    - Result::clone
    - to_string
    - Self::from_iter
    - split_once
    - Self::to_string
    - Result::insert
    - Error::new
    - Some
    - is_empty
    - Self::is_empty
    - Result::root
    - Result::ok_or_else
    - '&str::to_string'
    - Result::authority
    - Result::contains_key
    - Self::with_context
    - Result::options
    - ok_or_else
    linkageType: ''
    returnType: Result
    signature: 'fn from_uri(uri: &OperatorUri) -> Result<Self>'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 131
      start: 129
    functionDepth: 0
    functionLinenumber: 129
    functionLinenumberEnd: 131
    functionName: LakefsConfig::into_builder
    functionSourceFile: /src/opendal/core/services/lakefs/src/config.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Self::Builder
    signature: fn into_builder(self) -> Self::Builder
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: OperatorUri::new
      Src: /src/opendal/core/services/lakefs/src/config.rs:140,1
    - Dst: Vec::<(String, String)>::new
      Src: /src/opendal/core/services/lakefs/src/config.rs:142,1
    - Dst: LakefsConfig::from_uri
      Src: /src/opendal/core/services/lakefs/src/config.rs:145,1
    - Dst: Ok
      Src: /src/opendal/core/services/lakefs/src/config.rs:150,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 151
      start: 139
    functionDepth: 29
    functionLinenumber: 139
    functionLinenumberEnd: 151
    functionName: tests::from_uri_sets_endpoint_repository_branch_and_root
    functionSourceFile: /src/opendal/core/services/lakefs/src/config.rs
    functionUses: 0
    functionsReached:
    - Vec::<(String, String)>::new
    - OperatorUri::new
    - Ok
    - LakefsConfig::from_uri
    linkageType: ''
    returnType: Result
    signature: fn from_uri_sets_endpoint_repository_branch_and_root() -> Result<()>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: OperatorUri::new
      Src: /src/opendal/core/services/github/src/config.rs:128,1
    - Dst: Vec::<(String, String)>::new
      Src: /src/opendal/core/services/github/src/config.rs:128,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/services/github/src/config.rs:128,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 131
      start: 127
    functionDepth: 29
    functionLinenumber: 127
    functionLinenumberEnd: 131
    functionName: tests::from_uri_requires_repository
    functionSourceFile: /src/opendal/core/services/github/src/config.rs
    functionUses: 0
    functionsReached:
    - Vec::<(String, String)>::new
    - OperatorUri::new
    - Result::unwrap
    linkageType: ''
    returnType: void
    signature: fn from_uri_requires_repository()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: OperatorUri::new
      Src: /src/opendal/core/services/lakefs/src/config.rs:163,1
    - Dst: LakefsConfig::from_uri
      Src: /src/opendal/core/services/lakefs/src/config.rs:168,1
    - Dst: Ok
      Src: /src/opendal/core/services/lakefs/src/config.rs:171,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 172
      start: 162
    functionDepth: 29
    functionLinenumber: 162
    functionLinenumberEnd: 172
    functionName: tests::from_uri_respects_branch_override_and_sets_root
    functionSourceFile: /src/opendal/core/services/lakefs/src/config.rs
    functionUses: 0
    functionsReached:
    - LakefsConfig::from_uri
    - OperatorUri::new
    - Ok
    linkageType: ''
    returnType: Result
    signature: fn from_uri_respects_branch_override_and_sets_root() -> Result<()>
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - core
    - ctx
    argTypes:
    - Arc<LakefsCore>
    - OperationContext
    constantsTouched: []
    func_position:
      end: 35
      start: 33
    functionDepth: 0
    functionLinenumber: 33
    functionLinenumberEnd: 35
    functionName: LakefsDeleter::new
    functionSourceFile: /src/opendal/core/services/lakefs/src/deleter.rs
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(core: Arc<LakefsCore>, ctx: OperationContext) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/core/services/lakefs/src/deleter.rs:42,1
    - Dst: delete_object
      Src: /src/opendal/core/services/lakefs/src/deleter.rs:45,1
    - Dst: status
      Src: /src/opendal/core/services/lakefs/src/deleter.rs:47,1
    - Dst: Ok
      Src: /src/opendal/core/services/lakefs/src/deleter.rs:50,1
    - Dst: Ok
      Src: /src/opendal/core/services/lakefs/src/deleter.rs:51,1
    - Dst: Err
      Src: /src/opendal/core/services/lakefs/src/deleter.rs:52,1
    - Dst: super::core::parse_error
      Src: /src/opendal/core/services/lakefs/src/deleter.rs:52,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 30
    argCount: 2
    argNames:
    - path
    - args
    argTypes:
    - String
    - OpDelete
    constantsTouched: []
    func_position:
      end: 54
      start: 39
    functionDepth: 34
    functionLinenumber: 39
    functionLinenumberEnd: 54
    functionName: LakefsDeleter::delete_once
    functionSourceFile: /src/opendal/core/services/lakefs/src/deleter.rs
    functionUses: 0
    functionsReached:
    - status
    - Ok
    - delete_object
    - Err
    - super::core::parse_error
    linkageType: ''
    returnType: Result
    signature: 'async fn delete_once(&self, path: String, args: OpDelete) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::map
      Src: /src/opendal/core/services/lakefs/src/lister.rs:53,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 6
    argNames:
    - core
    - ctx
    - path
    - amount
    - after
    - recursive
    argTypes:
    - Arc<LakefsCore>
    - OperationContext
    - String
    - Option<usize>
    - Option<&str>
    - bool
    constantsTouched: []
    func_position:
      end: 55
      start: 38
    functionDepth: 1
    functionLinenumber: 38
    functionLinenumberEnd: 55
    functionName: LakefsLister::new
    functionSourceFile: /src/opendal/core/services/lakefs/src/lister.rs
    functionUses: 1
    functionsReached:
    - Result::map
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(core: Arc<LakefsCore>,ctx: OperationContext,path: String,amount:
      Option<usize>,after: Option<&str>,recursive: bool,) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: list_objects
      Src: /src/opendal/core/services/lakefs/src/lister.rs:60,1
    - Dst: is_empty
      Src: /src/opendal/core/services/lakefs/src/lister.rs:68,1
    - Dst: clone
      Src: /src/opendal/core/services/lakefs/src/lister.rs:69,1
    - Dst: status
      Src: /src/opendal/core/services/lakefs/src/lister.rs:76,1
    - Dst: Self::is_success
      Src: /src/opendal/core/services/lakefs/src/lister.rs:77,1
    - Dst: super::core::parse_error
      Src: /src/opendal/core/services/lakefs/src/lister.rs:78,1
    - Dst: Err
      Src: /src/opendal/core/services/lakefs/src/lister.rs:79,1
    - Dst: into_body
      Src: /src/opendal/core/services/lakefs/src/lister.rs:82,1
    - Dst: serde_json::from_reader
      Src: /src/opendal/core/services/lakefs/src/lister.rs:85,1
    - Dst: Bytes::reader
      Src: /src/opendal/core/services/lakefs/src/lister.rs:85,1
    - Dst: map_err
      Src: /src/opendal/core/services/lakefs/src/lister.rs:85,1
    - Dst: as_str
      Src: /src/opendal/core/services/lakefs/src/lister.rs:90,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/lakefs/src/lister.rs:96,1
    - Dst: Result::set_last_modified
      Src: /src/opendal/core/services/lakefs/src/lister.rs:99,1
    - Dst: Timestamp::from_second
      Src: /src/opendal/core/services/lakefs/src/lister.rs:99,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/services/lakefs/src/lister.rs:99,1
    - Dst: Result::set_content_length
      Src: /src/opendal/core/services/lakefs/src/lister.rs:105,1
    - Dst: clone
      Src: /src/opendal/core/services/lakefs/src/lister.rs:111,1
    - Dst: push_back
      Src: /src/opendal/core/services/lakefs/src/lister.rs:114,1
    - Dst: oio::Entry::new
      Src: /src/opendal/core/services/lakefs/src/lister.rs:114,1
    - Dst: build_rel_path
      Src: /src/opendal/core/services/lakefs/src/lister.rs:115,1
    - Dst: Ok
      Src: /src/opendal/core/services/lakefs/src/lister.rs:120,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 85
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - '&mut oio::PageContext'
    constantsTouched: []
    func_position:
      end: 121
      start: 59
    functionDepth: 38
    functionLinenumber: 59
    functionLinenumberEnd: 121
    functionName: LakefsLister::next_page
    functionSourceFile: /src/opendal/core/services/lakefs/src/lister.rs
    functionUses: 0
    functionsReached:
    - status
    - serde_json::from_reader
    - clone
    - build_rel_path
    - Result::unwrap
    - Timestamp::from_second
    - map_err
    - Ok
    - as_str
    - Bytes::reader
    - Metadata::new
    - into_body
    - is_empty
    - super::core::parse_error
    - Self::is_success
    - oio::Entry::new
    - push_back
    - Result::set_last_modified
    - Err
    - Result::set_content_length
    - list_objects
    linkageType: ''
    returnType: Result
    signature: 'async fn next_page(&self, ctx: &mut oio::PageContext) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: to_string
      Src: /src/opendal/core/services/lakefs/src/reader.rs:43,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 4
    argNames:
    - backend
    - ctx
    - path
    - args
    argTypes:
    - LakefsBackend
    - OperationContext
    - '&str'
    - OpRead
    constantsTouched: []
    func_position:
      end: 46
      start: 34
    functionDepth: 2
    functionLinenumber: 34
    functionLinenumberEnd: 46
    functionName: LakefsReader::new
    functionSourceFile: /src/opendal/core/services/lakefs/src/reader.rs
    functionUses: 1
    functionsReached:
    - to_string
    linkageType: ''
    returnType: Self
    signature: 'pub(super) fn new(backend: LakefsBackend,ctx: OperationContext,path:
      &str,args: OpRead,) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: as_str
      Src: /src/opendal/core/services/lakefs/src/reader.rs:52,1
    - Dst: clone
      Src: /src/opendal/core/services/lakefs/src/reader.rs:53,1
    - Dst: get_object_content
      Src: /src/opendal/core/services/lakefs/src/reader.rs:54,1
    - Dst: status
      Src: /src/opendal/core/services/lakefs/src/reader.rs:59,1
    - Dst: RpRead::new
      Src: /src/opendal/core/services/lakefs/src/reader.rs:63,1
    - Dst: parse_into_metadata
      Src: /src/opendal/core/services/lakefs/src/reader.rs:63,1
    - Dst: headers
      Src: /src/opendal/core/services/lakefs/src/reader.rs:63,1
    - Dst: into_body
      Src: /src/opendal/core/services/lakefs/src/reader.rs:64,1
    - Dst: into_parts
      Src: /src/opendal/core/services/lakefs/src/reader.rs:67,1
    - Dst: to_buffer
      Src: /src/opendal/core/services/lakefs/src/reader.rs:68,1
    - Dst: Err
      Src: /src/opendal/core/services/lakefs/src/reader.rs:69,1
    - Dst: super::core::parse_error
      Src: /src/opendal/core/services/lakefs/src/reader.rs:69,1
    - Dst: Response::from_parts
      Src: /src/opendal/core/services/lakefs/src/reader.rs:69,1
    - Dst: Ok
      Src: /src/opendal/core/services/lakefs/src/reader.rs:73,1
    - Dst: Box::new
      Src: /src/opendal/core/services/lakefs/src/reader.rs:73,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 42
    argCount: 1
    argNames:
    - range
    argTypes:
    - BytesRange
    constantsTouched: []
    func_position:
      end: 74
      start: 50
    functionDepth: 38
    functionLinenumber: 50
    functionLinenumberEnd: 74
    functionName: LakefsReader::open
    functionSourceFile: /src/opendal/core/services/lakefs/src/reader.rs
    functionUses: 0
    functionsReached:
    - parse_into_metadata
    - to_buffer
    - status
    - Ok
    - Box::new
    - into_body
    - clone
    - Err
    - Response::from_parts
    - as_str
    - headers
    - into_parts
    - get_object_content
    - RpRead::new
    - super::core::parse_error
    linkageType: ''
    returnType: Result
    signature: 'async fn open(&self, range: BytesRange) -> Result<(RpRead, Box<dyn
      oio::ReadStreamDyn>)>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::debug_struct
      Src: /src/opendal/core/services/lakefs/src/core.rs:41,1
    - Dst: field
      Src: /src/opendal/core/services/lakefs/src/core.rs:41,1
    - Dst: field
      Src: /src/opendal/core/services/lakefs/src/core.rs:41,1
    - Dst: field
      Src: /src/opendal/core/services/lakefs/src/core.rs:41,1
    - Dst: field
      Src: /src/opendal/core/services/lakefs/src/core.rs:41,1
    - Dst: field
      Src: /src/opendal/core/services/lakefs/src/core.rs:41,1
    - Dst: field
      Src: /src/opendal/core/services/lakefs/src/core.rs:41,1
    - Dst: finish_non_exhaustive
      Src: /src/opendal/core/services/lakefs/src/core.rs:41,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 27
    argCount: 1
    argNames:
    - f
    argTypes:
    - '&mut std::fmt::Formatter<''_>'
    constantsTouched: []
    func_position:
      end: 49
      start: 40
    functionDepth: 5
    functionLinenumber: 40
    functionLinenumberEnd: 49
    functionName: LakefsCore::fmt
    functionSourceFile: /src/opendal/core/services/lakefs/src/core.rs
    functionUses: 0
    functionsReached:
    - field
    - Result::debug_struct
    - finish_non_exhaustive
    linkageType: ''
    returnType: std::fmt::Result
    signature: 'fn fmt(&self, f: &mut std::fmt::Formatter<''_>) -> std::fmt::Result'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/lakefs/src/core.rs:58,1
    - Dst: String::trim_end_matches
      Src: /src/opendal/core/services/lakefs/src/core.rs:58,1
    - Dst: to_string
      Src: /src/opendal/core/services/lakefs/src/core.rs:58,1
    - Dst: Request::get
      Src: /src/opendal/core/services/lakefs/src/core.rs:70,1
    - Dst: format_authorization_by_basic
      Src: /src/opendal/core/services/lakefs/src/core.rs:72,1
    - Dst: Option::header
      Src: /src/opendal/core/services/lakefs/src/core.rs:73,1
    - Dst: Option::extension
      Src: /src/opendal/core/services/lakefs/src/core.rs:75,1
    - Dst: extension
      Src: /src/opendal/core/services/lakefs/src/core.rs:75,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/lakefs/src/core.rs:77,1
    - Dst: Option::body
      Src: /src/opendal/core/services/lakefs/src/core.rs:78,1
    - Dst: Buffer::new
      Src: /src/opendal/core/services/lakefs/src/core.rs:78,1
    - Dst: map_err
      Src: /src/opendal/core/services/lakefs/src/core.rs:78,1
    - Dst: Result::http_transport
      Src: /src/opendal/core/services/lakefs/src/core.rs:80,1
    - Dst: Self::send
      Src: /src/opendal/core/services/lakefs/src/core.rs:80,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 35
    argCount: 2
    argNames:
    - ctx
    - path
    argTypes:
    - '&OperationContext'
    - '&str'
    constantsTouched: []
    func_position:
      end: 81
      start: 53
    functionDepth: 37
    functionLinenumber: 53
    functionLinenumberEnd: 81
    functionName: LakefsCore::get_object_metadata
    functionSourceFile: /src/opendal/core/services/lakefs/src/core.rs
    functionUses: 0
    functionsReached:
    - format_authorization_by_basic
    - to_string
    - Request::get
    - extension
    - Buffer::new
    - map_err
    - Self::send
    - build_abs_path
    - Result::http_transport
    - Option::extension
    - ServiceOperation
    - String::trim_end_matches
    - Option::body
    - Option::header
    linkageType: ''
    returnType: Result
    signature: 'pub async fn get_object_metadata(&self,ctx: &OperationContext,path:
      &str,) -> Result<Response<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/lakefs/src/core.rs:90,1
    - Dst: String::trim_end_matches
      Src: /src/opendal/core/services/lakefs/src/core.rs:90,1
    - Dst: to_string
      Src: /src/opendal/core/services/lakefs/src/core.rs:90,1
    - Dst: Request::get
      Src: /src/opendal/core/services/lakefs/src/core.rs:102,1
    - Dst: format_authorization_by_basic
      Src: /src/opendal/core/services/lakefs/src/core.rs:104,1
    - Dst: Option::header
      Src: /src/opendal/core/services/lakefs/src/core.rs:105,1
    - Dst: (Vec::is_full
      Src: /src/opendal/core/services/lakefs/src/core.rs:107,1
    - Dst: Option::header
      Src: /src/opendal/core/services/lakefs/src/core.rs:108,1
    - Dst: (Vec::to_header
      Src: /src/opendal/core/services/lakefs/src/core.rs:108,1
    - Dst: Option::extension
      Src: /src/opendal/core/services/lakefs/src/core.rs:111,1
    - Dst: extension
      Src: /src/opendal/core/services/lakefs/src/core.rs:111,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/lakefs/src/core.rs:113,1
    - Dst: Option::body
      Src: /src/opendal/core/services/lakefs/src/core.rs:114,1
    - Dst: Buffer::new
      Src: /src/opendal/core/services/lakefs/src/core.rs:114,1
    - Dst: map_err
      Src: /src/opendal/core/services/lakefs/src/core.rs:114,1
    - Dst: Result::http_transport
      Src: /src/opendal/core/services/lakefs/src/core.rs:116,1
    - Dst: Self::fetch
      Src: /src/opendal/core/services/lakefs/src/core.rs:116,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 46
    argCount: 4
    argNames:
    - ctx
    - path
    - range
    - _args
    argTypes:
    - '&OperationContext'
    - '&str'
    - BytesRange
    - '&OpRead'
    constantsTouched: []
    func_position:
      end: 117
      start: 83
    functionDepth: 37
    functionLinenumber: 83
    functionLinenumberEnd: 117
    functionName: LakefsCore::get_object_content
    functionSourceFile: /src/opendal/core/services/lakefs/src/core.rs
    functionUses: 0
    functionsReached:
    - format_authorization_by_basic
    - to_string
    - Request::get
    - (Vec::to_header
    - extension
    - Buffer::new
    - map_err
    - (Vec::is_full
    - build_abs_path
    - Result::http_transport
    - Option::extension
    - Self::fetch
    - ServiceOperation
    - String::trim_end_matches
    - Option::body
    - Option::header
    linkageType: ''
    returnType: Result
    signature: 'pub async fn get_object_content(&self,ctx: &OperationContext,path:
      &str,range: BytesRange,_args: &OpRead,) -> Result<Response<HttpBody>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/lakefs/src/core.rs:127,1
    - Dst: is_empty
      Src: /src/opendal/core/services/lakefs/src/core.rs:134,1
    - Dst: Result::push_str
      Src: /src/opendal/core/services/lakefs/src/core.rs:135,1
    - Dst: object_store::Result::is_empty
      Src: /src/opendal/core/services/lakefs/src/core.rs:138,1
    - Dst: Result::push_str
      Src: /src/opendal/core/services/lakefs/src/core.rs:139,1
    - Dst: Result::push_str
      Src: /src/opendal/core/services/lakefs/src/core.rs:143,1
    - Dst: Result::push_str
      Src: /src/opendal/core/services/lakefs/src/core.rs:147,1
    - Dst: Request::get
      Src: /src/opendal/core/services/lakefs/src/core.rs:150,1
    - Dst: format_authorization_by_basic
      Src: /src/opendal/core/services/lakefs/src/core.rs:152,1
    - Dst: Option::header
      Src: /src/opendal/core/services/lakefs/src/core.rs:153,1
    - Dst: Option::extension
      Src: /src/opendal/core/services/lakefs/src/core.rs:155,1
    - Dst: extension
      Src: /src/opendal/core/services/lakefs/src/core.rs:155,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/lakefs/src/core.rs:157,1
    - Dst: Option::body
      Src: /src/opendal/core/services/lakefs/src/core.rs:158,1
    - Dst: Buffer::new
      Src: /src/opendal/core/services/lakefs/src/core.rs:158,1
    - Dst: map_err
      Src: /src/opendal/core/services/lakefs/src/core.rs:158,1
    - Dst: Result::http_transport
      Src: /src/opendal/core/services/lakefs/src/core.rs:160,1
    - Dst: Self::send
      Src: /src/opendal/core/services/lakefs/src/core.rs:160,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 61
    argCount: 5
    argNames:
    - ctx
    - path
    - delimiter
    - amount
    - after
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    - '&Option<usize>'
    - Option<String>
    constantsTouched: []
    func_position:
      end: 161
      start: 119
    functionDepth: 37
    functionLinenumber: 119
    functionLinenumberEnd: 161
    functionName: LakefsCore::list_objects
    functionSourceFile: /src/opendal/core/services/lakefs/src/core.rs
    functionUses: 0
    functionsReached:
    - format_authorization_by_basic
    - extension
    - Request::get
    - Result::push_str
    - Buffer::new
    - map_err
    - Self::send
    - build_abs_path
    - is_empty
    - Option::extension
    - ServiceOperation
    - object_store::Result::is_empty
    - Result::http_transport
    - Option::body
    - Option::header
    linkageType: ''
    returnType: Result
    signature: 'pub async fn list_objects(&self,ctx: &OperationContext,path: &str,delimiter:
      &str,amount: &Option<usize>,after: Option<String>,) -> Result<Response<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/lakefs/src/core.rs:170,1
    - Dst: String::trim_end_matches
      Src: /src/opendal/core/services/lakefs/src/core.rs:170,1
    - Dst: to_string
      Src: /src/opendal/core/services/lakefs/src/core.rs:170,1
    - Dst: Request::post
      Src: /src/opendal/core/services/lakefs/src/core.rs:182,1
    - Dst: format_authorization_by_basic
      Src: /src/opendal/core/services/lakefs/src/core.rs:184,1
    - Dst: http::header
      Src: /src/opendal/core/services/lakefs/src/core.rs:185,1
    - Dst: extension
      Src: /src/opendal/core/services/lakefs/src/core.rs:187,1
    - Dst: extension
      Src: /src/opendal/core/services/lakefs/src/core.rs:187,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/lakefs/src/core.rs:189,1
    - Dst: body
      Src: /src/opendal/core/services/lakefs/src/core.rs:190,1
    - Dst: map_err
      Src: /src/opendal/core/services/lakefs/src/core.rs:190,1
    - Dst: Result::http_transport
      Src: /src/opendal/core/services/lakefs/src/core.rs:192,1
    - Dst: Self::send
      Src: /src/opendal/core/services/lakefs/src/core.rs:192,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 34
    argCount: 4
    argNames:
    - ctx
    - path
    - _args
    - body
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&OpWrite'
    - Buffer
    constantsTouched: []
    func_position:
      end: 193
      start: 163
    functionDepth: 37
    functionLinenumber: 163
    functionLinenumberEnd: 193
    functionName: LakefsCore::upload_object
    functionSourceFile: /src/opendal/core/services/lakefs/src/core.rs
    functionUses: 0
    functionsReached:
    - format_authorization_by_basic
    - to_string
    - extension
    - map_err
    - Self::send
    - http::header
    - Request::post
    - body
    - build_abs_path
    - Result::http_transport
    - ServiceOperation
    - String::trim_end_matches
    linkageType: ''
    returnType: Result
    signature: 'pub async fn upload_object(&self,ctx: &OperationContext,path: &str,_args:
      &OpWrite,body: Buffer,) -> Result<Response<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/lakefs/src/core.rs:201,1
    - Dst: String::trim_end_matches
      Src: /src/opendal/core/services/lakefs/src/core.rs:201,1
    - Dst: to_string
      Src: /src/opendal/core/services/lakefs/src/core.rs:201,1
    - Dst: Request::delete
      Src: /src/opendal/core/services/lakefs/src/core.rs:213,1
    - Dst: format_authorization_by_basic
      Src: /src/opendal/core/services/lakefs/src/core.rs:215,1
    - Dst: Result::header
      Src: /src/opendal/core/services/lakefs/src/core.rs:216,1
    - Dst: Result::extension
      Src: /src/opendal/core/services/lakefs/src/core.rs:218,1
    - Dst: extension
      Src: /src/opendal/core/services/lakefs/src/core.rs:218,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/lakefs/src/core.rs:220,1
    - Dst: Result::body
      Src: /src/opendal/core/services/lakefs/src/core.rs:221,1
    - Dst: Buffer::new
      Src: /src/opendal/core/services/lakefs/src/core.rs:221,1
    - Dst: map_err
      Src: /src/opendal/core/services/lakefs/src/core.rs:221,1
    - Dst: Result::http_transport
      Src: /src/opendal/core/services/lakefs/src/core.rs:223,1
    - Dst: Self::send
      Src: /src/opendal/core/services/lakefs/src/core.rs:223,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 35
    argCount: 3
    argNames:
    - ctx
    - path
    - _args
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&OpDelete'
    constantsTouched: []
    func_position:
      end: 224
      start: 195
    functionDepth: 32
    functionLinenumber: 195
    functionLinenumberEnd: 224
    functionName: LakefsCore::delete_object
    functionSourceFile: /src/opendal/core/services/lakefs/src/core.rs
    functionUses: 0
    functionsReached:
    - format_authorization_by_basic
    - to_string
    - extension
    - Buffer::new
    - map_err
    - Request::delete
    - Self::send
    - Result::extension
    - build_abs_path
    - Result::header
    - Result::http_transport
    - ServiceOperation
    - Result::body
    - String::trim_end_matches
    linkageType: ''
    returnType: Result
    signature: 'pub async fn delete_object(&self,ctx: &OperationContext,path: &str,_args:
      &OpDelete,) -> Result<Response<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/lakefs/src/core.rs:232,1
    - Dst: String::trim_end_matches
      Src: /src/opendal/core/services/lakefs/src/core.rs:232,1
    - Dst: to_string
      Src: /src/opendal/core/services/lakefs/src/core.rs:232,1
    - Dst: build_abs_path
      Src: /src/opendal/core/services/lakefs/src/core.rs:235,1
    - Dst: String::trim_end_matches
      Src: /src/opendal/core/services/lakefs/src/core.rs:235,1
    - Dst: to_string
      Src: /src/opendal/core/services/lakefs/src/core.rs:235,1
    - Dst: Request::post
      Src: /src/opendal/core/services/lakefs/src/core.rs:247,1
    - Dst: format_authorization_by_basic
      Src: /src/opendal/core/services/lakefs/src/core.rs:249,1
    - Dst: http::header
      Src: /src/opendal/core/services/lakefs/src/core.rs:250,1
    - Dst: http::header
      Src: /src/opendal/core/services/lakefs/src/core.rs:251,1
    - Dst: HashMap::new
      Src: /src/opendal/core/services/lakefs/src/core.rs:252,1
    - Dst: Result::insert
      Src: /src/opendal/core/services/lakefs/src/core.rs:253,1
    - Dst: extension
      Src: /src/opendal/core/services/lakefs/src/core.rs:255,1
    - Dst: extension
      Src: /src/opendal/core/services/lakefs/src/core.rs:255,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/lakefs/src/core.rs:258,1
    - Dst: body
      Src: /src/opendal/core/services/lakefs/src/core.rs:255,1
    - Dst: serde_json::to_vec
      Src: /src/opendal/core/services/lakefs/src/core.rs:259,1
    - Dst: Vec::unwrap
      Src: /src/opendal/core/services/lakefs/src/core.rs:259,1
    - Dst: T::into
      Src: /src/opendal/core/services/lakefs/src/core.rs:259,1
    - Dst: map_err
      Src: /src/opendal/core/services/lakefs/src/core.rs:255,1
    - Dst: Result::http_transport
      Src: /src/opendal/core/services/lakefs/src/core.rs:261,1
    - Dst: Self::send
      Src: /src/opendal/core/services/lakefs/src/core.rs:261,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 55
    argCount: 3
    argNames:
    - ctx
    - path
    - dest
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    constantsTouched: []
    func_position:
      end: 262
      start: 226
    functionDepth: 37
    functionLinenumber: 226
    functionLinenumberEnd: 262
    functionName: LakefsCore::copy_object
    functionSourceFile: /src/opendal/core/services/lakefs/src/core.rs
    functionUses: 0
    functionsReached:
    - format_authorization_by_basic
    - to_string
    - extension
    - map_err
    - Self::send
    - T::into
    - http::header
    - Request::post
    - body
    - Vec::unwrap
    - build_abs_path
    - Result::insert
    - Result::http_transport
    - ServiceOperation
    - String::trim_end_matches
    - HashMap::new
    - serde_json::to_vec
    linkageType: ''
    returnType: Result
    signature: 'pub async fn copy_object(&self,ctx: &OperationContext,path: &str,dest:
      &str,) -> Result<Response<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Metadata::new
      Src: /src/opendal/core/services/lakefs/src/core.rs:274,1
    - Dst: is_empty
      Src: /src/opendal/core/services/lakefs/src/core.rs:277,1
    - Dst: Result::set_etag
      Src: /src/opendal/core/services/lakefs/src/core.rs:278,1
    - Dst: Result::set_content_length
      Src: /src/opendal/core/services/lakefs/src/core.rs:283,1
    - Dst: Result::set_content_type
      Src: /src/opendal/core/services/lakefs/src/core.rs:288,1
    - Dst: Timestamp::from_second
      Src: /src/opendal/core/services/lakefs/src/core.rs:292,1
    - Dst: Result::set_last_modified
      Src: /src/opendal/core/services/lakefs/src/core.rs:293,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 34
    argCount: 1
    argNames:
    - status
    argTypes:
    - '&LakefsStatus'
    constantsTouched: []
    func_position:
      end: 297
      start: 265
    functionDepth: 37
    functionLinenumber: 265
    functionLinenumberEnd: 297
    functionName: LakefsCore::parse_lakefs_status_into_metadata
    functionSourceFile: /src/opendal/core/services/lakefs/src/core.rs
    functionUses: 2
    functionsReached:
    - Metadata::new
    - Result::set_last_modified
    - is_empty
    - Result::set_content_length
    - Result::set_content_type
    - Timestamp::from_second
    - Result::set_etag
    linkageType: ''
    returnType: Metadata
    signature: 'pub fn parse_lakefs_status_into_metadata(status: &LakefsStatus) ->
      Metadata'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 4
    argNames:
    - core
    - ctx
    - path
    - op
    argTypes:
    - Arc<LakefsCore>
    - OperationContext
    - String
    - OpWrite
    constantsTouched: []
    func_position:
      end: 44
      start: 37
    functionDepth: 0
    functionLinenumber: 37
    functionLinenumberEnd: 44
    functionName: LakefsWriter::new
    functionSourceFile: /src/opendal/core/services/lakefs/src/writer.rs
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(core: Arc<LakefsCore>, ctx: OperationContext, path: String,
      op: OpWrite) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: upload_object
      Src: /src/opendal/core/services/lakefs/src/writer.rs:49,1
    - Dst: status
      Src: /src/opendal/core/services/lakefs/src/writer.rs:54,1
    - Dst: into_body
      Src: /src/opendal/core/services/lakefs/src/writer.rs:58,1
    - Dst: to_bytes
      Src: /src/opendal/core/services/lakefs/src/writer.rs:59,1
    - Dst: serde_json::from_slice::<LakefsStatus>
      Src: /src/opendal/core/services/lakefs/src/writer.rs:62,1
    - Dst: Ok
      Src: /src/opendal/core/services/lakefs/src/writer.rs:65,1
    - Dst: LakefsCore::parse_lakefs_status_into_metadata
      Src: /src/opendal/core/services/lakefs/src/writer.rs:65,1
    - Dst: get_object_metadata
      Src: /src/opendal/core/services/lakefs/src/writer.rs:72,1
    - Dst: status
      Src: /src/opendal/core/services/lakefs/src/writer.rs:74,1
    - Dst: serde_json::from_reader
      Src: /src/opendal/core/services/lakefs/src/writer.rs:77,1
    - Dst: into_body
      Src: /src/opendal/core/services/lakefs/src/writer.rs:77,1
    - Dst: reader
      Src: /src/opendal/core/services/lakefs/src/writer.rs:77,1
    - Dst: map_err
      Src: /src/opendal/core/services/lakefs/src/writer.rs:77,1
    - Dst: Ok
      Src: /src/opendal/core/services/lakefs/src/writer.rs:80,1
    - Dst: LakefsCore::parse_lakefs_status_into_metadata
      Src: /src/opendal/core/services/lakefs/src/writer.rs:80,1
    - Dst: Err
      Src: /src/opendal/core/services/lakefs/src/writer.rs:84,1
    - Dst: super::core::parse_error
      Src: /src/opendal/core/services/lakefs/src/writer.rs:84,1
    - Dst: Err
      Src: /src/opendal/core/services/lakefs/src/writer.rs:89,1
    - Dst: super::core::parse_error
      Src: /src/opendal/core/services/lakefs/src/writer.rs:89,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 54
    argCount: 1
    argNames:
    - bs
    argTypes:
    - Buffer
    constantsTouched: []
    func_position:
      end: 91
      start: 48
    functionDepth: 38
    functionLinenumber: 48
    functionLinenumberEnd: 91
    functionName: LakefsWriter::write_once
    functionSourceFile: /src/opendal/core/services/lakefs/src/writer.rs
    functionUses: 0
    functionsReached:
    - map_err
    - reader
    - status
    - Ok
    - serde_json::from_reader
    - into_body
    - LakefsCore::parse_lakefs_status_into_metadata
    - upload_object
    - Err
    - to_bytes
    - super::core::parse_error
    - serde_json::from_slice::<LakefsStatus>
    - get_object_metadata
    linkageType: ''
    returnType: Result
    signature: 'async fn write_once(&self, bs: Buffer) -> Result<Metadata>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: register::<Lakefs>
      Src: /src/opendal/core/services/lakefs/src/lib.rs:39,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - registry
    argTypes:
    - '&opendal_core::OperatorRegistry'
    constantsTouched: []
    func_position:
      end: 40
      start: 38
    functionDepth: 0
    functionLinenumber: 38
    functionLinenumberEnd: 40
    functionName: register_lakefs_service
    functionSourceFile: /src/opendal/core/services/lakefs/src/lib.rs
    functionUses: 1
    functionsReached:
    - register::<Lakefs>
    linkageType: ''
    returnType: void
    signature: 'pub fn register_lakefs_service(registry: &opendal_core::OperatorRegistry)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self::is_empty
      Src: /src/opendal/core/services/lakefs/src/backend.rs:52,1
    - Dst: Some
      Src: /src/opendal/core/services/lakefs/src/backend.rs:53,1
    - Dst: Self::to_string
      Src: /src/opendal/core/services/lakefs/src/backend.rs:53,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 1
    argNames:
    - endpoint
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 56
      start: 51
    functionDepth: 4
    functionLinenumber: 51
    functionLinenumberEnd: 56
    functionName: LakefsBuilder::endpoint
    functionSourceFile: /src/opendal/core/services/lakefs/src/backend.rs
    functionUses: 0
    functionsReached:
    - Self::is_empty
    - Self::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn endpoint(mut self, endpoint: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Option::is_empty
      Src: /src/opendal/core/services/lakefs/src/backend.rs:60,1
    - Dst: Some
      Src: /src/opendal/core/services/lakefs/src/backend.rs:61,1
    - Dst: Option::to_string
      Src: /src/opendal/core/services/lakefs/src/backend.rs:61,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 1
    argNames:
    - username
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 64
      start: 59
    functionDepth: 4
    functionLinenumber: 59
    functionLinenumberEnd: 64
    functionName: LakefsBuilder::username
    functionSourceFile: /src/opendal/core/services/lakefs/src/backend.rs
    functionUses: 0
    functionsReached:
    - Option::to_string
    - Option::is_empty
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn username(mut self, username: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Option::is_empty
      Src: /src/opendal/core/services/lakefs/src/backend.rs:68,1
    - Dst: Some
      Src: /src/opendal/core/services/lakefs/src/backend.rs:69,1
    - Dst: Option::to_string
      Src: /src/opendal/core/services/lakefs/src/backend.rs:69,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 1
    argNames:
    - password
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 72
      start: 67
    functionDepth: 4
    functionLinenumber: 67
    functionLinenumberEnd: 72
    functionName: LakefsBuilder::password
    functionSourceFile: /src/opendal/core/services/lakefs/src/backend.rs
    functionUses: 0
    functionsReached:
    - Option::to_string
    - Option::is_empty
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn password(mut self, password: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self::is_empty
      Src: /src/opendal/core/services/lakefs/src/backend.rs:82,1
    - Dst: Some
      Src: /src/opendal/core/services/lakefs/src/backend.rs:83,1
    - Dst: Self::to_string
      Src: /src/opendal/core/services/lakefs/src/backend.rs:83,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 1
    argNames:
    - branch
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 86
      start: 81
    functionDepth: 4
    functionLinenumber: 81
    functionLinenumberEnd: 86
    functionName: LakefsBuilder::branch
    functionSourceFile: /src/opendal/core/services/lakefs/src/backend.rs
    functionUses: 0
    functionsReached:
    - Self::is_empty
    - Self::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn branch(mut self, branch: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::is_empty
      Src: /src/opendal/core/services/lakefs/src/backend.rs:92,1
    - Dst: Some
      Src: /src/opendal/core/services/lakefs/src/backend.rs:93,1
    - Dst: Result::to_string
      Src: /src/opendal/core/services/lakefs/src/backend.rs:93,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 1
    argNames:
    - root
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 96
      start: 91
    functionDepth: 4
    functionLinenumber: 91
    functionLinenumberEnd: 96
    functionName: LakefsBuilder::root
    functionSourceFile: /src/opendal/core/services/lakefs/src/backend.rs
    functionUses: 0
    functionsReached:
    - Result::is_empty
    - Result::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn root(mut self, root: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: is_empty
      Src: /src/opendal/core/services/lakefs/src/backend.rs:102,1
    - Dst: Some
      Src: /src/opendal/core/services/lakefs/src/backend.rs:103,1
    - Dst: to_string
      Src: /src/opendal/core/services/lakefs/src/backend.rs:103,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 1
    argNames:
    - repository
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 106
      start: 101
    functionDepth: 4
    functionLinenumber: 101
    functionLinenumberEnd: 106
    functionName: LakefsBuilder::repository
    functionSourceFile: /src/opendal/core/services/lakefs/src/backend.rs
    functionUses: 0
    functionsReached:
    - to_string
    - Some
    - is_empty
    linkageType: ''
    returnType: Self
    signature: 'pub fn repository(mut self, repository: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/core/services/lakefs/src/backend.rs:117,1
    - Dst: Self::clone
      Src: /src/opendal/core/services/lakefs/src/backend.rs:117,1
    - Dst: Err
      Src: /src/opendal/core/services/lakefs/src/backend.rs:118,1
    - Dst: Error::new
      Src: /src/opendal/core/services/lakefs/src/backend.rs:118,1
    - Dst: Self::with_operation
      Src: /src/opendal/core/services/lakefs/src/backend.rs:118,1
    - Dst: Self::with_context
      Src: /src/opendal/core/services/lakefs/src/backend.rs:118,1
    - Dst: Ok
      Src: /src/opendal/core/services/lakefs/src/backend.rs:125,1
    - Dst: clone
      Src: /src/opendal/core/services/lakefs/src/backend.rs:125,1
    - Dst: Err
      Src: /src/opendal/core/services/lakefs/src/backend.rs:126,1
    - Dst: Error::new
      Src: /src/opendal/core/services/lakefs/src/backend.rs:126,1
    - Dst: Self::with_operation
      Src: /src/opendal/core/services/lakefs/src/backend.rs:126,1
    - Dst: Self::with_context
      Src: /src/opendal/core/services/lakefs/src/backend.rs:126,1
    - Dst: Self::clone
      Src: /src/opendal/core/services/lakefs/src/backend.rs:133,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/lakefs/src/backend.rs:134,1
    - Dst: normalize_root
      Src: /src/opendal/core/services/lakefs/src/backend.rs:138,1
    - Dst: unwrap_or_default
      Src: /src/opendal/core/services/lakefs/src/backend.rs:138,1
    - Dst: Ok
      Src: /src/opendal/core/services/lakefs/src/backend.rs:142,1
    - Dst: Option::clone
      Src: /src/opendal/core/services/lakefs/src/backend.rs:142,1
    - Dst: Err
      Src: /src/opendal/core/services/lakefs/src/backend.rs:143,1
    - Dst: Error::new
      Src: /src/opendal/core/services/lakefs/src/backend.rs:143,1
    - Dst: Self::with_operation
      Src: /src/opendal/core/services/lakefs/src/backend.rs:143,1
    - Dst: Self::with_context
      Src: /src/opendal/core/services/lakefs/src/backend.rs:143,1
    - Dst: Ok
      Src: /src/opendal/core/services/lakefs/src/backend.rs:149,1
    - Dst: Option::clone
      Src: /src/opendal/core/services/lakefs/src/backend.rs:149,1
    - Dst: Err
      Src: /src/opendal/core/services/lakefs/src/backend.rs:150,1
    - Dst: Error::new
      Src: /src/opendal/core/services/lakefs/src/backend.rs:150,1
    - Dst: Self::with_operation
      Src: /src/opendal/core/services/lakefs/src/backend.rs:150,1
    - Dst: Self::with_context
      Src: /src/opendal/core/services/lakefs/src/backend.rs:150,1
    - Dst: Ok
      Src: /src/opendal/core/services/lakefs/src/backend.rs:155,1
    - Dst: Arc::new
      Src: /src/opendal/core/services/lakefs/src/backend.rs:156,1
    - Dst: ServiceInfo::new
      Src: /src/opendal/core/services/lakefs/src/backend.rs:157,1
    - Dst: Default::default
      Src: /src/opendal/core/services/lakefs/src/backend.rs:169,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 81
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 179
      start: 113
    functionDepth: 36
    functionLinenumber: 113
    functionLinenumberEnd: 179
    functionName: LakefsBuilder::build
    functionSourceFile: /src/opendal/core/services/lakefs/src/backend.rs
    functionUses: 0
    functionsReached:
    - ServiceInfo::new
    - Ok
    - Arc::new
    - Default::default
    - Option::clone
    - clone
    - normalize_root
    - Err
    - Error::new
    - '&str::to_string'
    - Self::clone
    - Self::with_operation
    - Self::with_context
    - unwrap_or_default
    linkageType: ''
    returnType: Result
    signature: fn build(self) -> Result<impl Service>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: clone
      Src: /src/opendal/core/services/lakefs/src/backend.rs:196,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 197
      start: 195
    functionDepth: 2
    functionLinenumber: 195
    functionLinenumberEnd: 197
    functionName: LakefsBackend::info
    functionSourceFile: /src/opendal/core/services/lakefs/src/backend.rs
    functionUses: 0
    functionsReached:
    - clone
    linkageType: ''
    returnType: ServiceInfo
    signature: fn info(&self) -> ServiceInfo
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 201
      start: 199
    functionDepth: 0
    functionLinenumber: 199
    functionLinenumberEnd: 201
    functionName: LakefsBackend::capability
    functionSourceFile: /src/opendal/core/services/lakefs/src/backend.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Capability
    signature: fn capability(&self) -> Capability
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/core/services/lakefs/src/backend.rs:209,1
    - Dst: Error::new
      Src: /src/opendal/core/services/lakefs/src/backend.rs:209,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - _ctx
    - _path
    - _args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpCreateDir
    constantsTouched: []
    func_position:
      end: 213
      start: 203
    functionDepth: 36
    functionLinenumber: 203
    functionLinenumberEnd: 213
    functionName: LakefsBackend::create_dir
    functionSourceFile: /src/opendal/core/services/lakefs/src/backend.rs
    functionUses: 0
    functionsReached:
    - Error::new
    - Err
    linkageType: ''
    returnType: Result
    signature: 'async fn create_dir(&self,_ctx: &OperationContext,_path: &str,_args:
      OpCreateDir,) -> Result<RpCreateDir>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/core/services/lakefs/src/backend.rs:218,1
    - Dst: RpStat::new
      Src: /src/opendal/core/services/lakefs/src/backend.rs:218,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/lakefs/src/backend.rs:218,1
    - Dst: get_object_metadata
      Src: /src/opendal/core/services/lakefs/src/backend.rs:221,1
    - Dst: status
      Src: /src/opendal/core/services/lakefs/src/backend.rs:223,1
    - Dst: into_body
      Src: /src/opendal/core/services/lakefs/src/backend.rs:227,1
    - Dst: serde_json::from_reader
      Src: /src/opendal/core/services/lakefs/src/backend.rs:230,1
    - Dst: Result::reader
      Src: /src/opendal/core/services/lakefs/src/backend.rs:230,1
    - Dst: map_err
      Src: /src/opendal/core/services/lakefs/src/backend.rs:230,1
    - Dst: LakefsCore::parse_lakefs_status_into_metadata
      Src: /src/opendal/core/services/lakefs/src/backend.rs:233,1
    - Dst: Ok
      Src: /src/opendal/core/services/lakefs/src/backend.rs:235,1
    - Dst: RpStat::new
      Src: /src/opendal/core/services/lakefs/src/backend.rs:235,1
    - Dst: Err
      Src: /src/opendal/core/services/lakefs/src/backend.rs:237,1
    - Dst: super::core::parse_error
      Src: /src/opendal/core/services/lakefs/src/backend.rs:237,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 31
    argCount: 3
    argNames:
    - ctx
    - path
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpStat
    constantsTouched: []
    func_position:
      end: 239
      start: 215
    functionDepth: 38
    functionLinenumber: 215
    functionLinenumberEnd: 239
    functionName: LakefsBackend::stat
    functionSourceFile: /src/opendal/core/services/lakefs/src/backend.rs
    functionUses: 0
    functionsReached:
    - map_err
    - Metadata::new
    - status
    - Ok
    - serde_json::from_reader
    - RpStat::new
    - into_body
    - LakefsCore::parse_lakefs_status_into_metadata
    - Err
    - Result::reader
    - super::core::parse_error
    - get_object_metadata
    linkageType: ''
    returnType: Result
    signature: 'async fn stat(&self, ctx: &OperationContext, path: &str, _: OpStat)
      -> Result<RpStat>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/core/services/lakefs/src/backend.rs:242,1
    - Dst: oio::StreamReader::new
      Src: /src/opendal/core/services/lakefs/src/backend.rs:242,1
    - Dst: LakefsReader::new
      Src: /src/opendal/core/services/lakefs/src/backend.rs:242,1
    - Dst: LakefsBackend::clone
      Src: /src/opendal/core/services/lakefs/src/backend.rs:243,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/lakefs/src/backend.rs:244,1
    - Dst: Ok
      Src: /src/opendal/core/services/lakefs/src/backend.rs:250,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpRead
    constantsTouched: []
    func_position:
      end: 251
      start: 240
    functionDepth: 3
    functionLinenumber: 240
    functionLinenumberEnd: 251
    functionName: LakefsBackend::read
    functionSourceFile: /src/opendal/core/services/lakefs/src/backend.rs
    functionUses: 0
    functionsReached:
    - Result::clone
    - Ok
    - oio::StreamReader::new
    - LakefsReader::new
    - LakefsBackend::clone
    linkageType: ''
    returnType: Result
    signature: 'fn read(&self, ctx: &OperationContext, path: &str, args: OpRead) ->
      Result<Self::Reader>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: LakefsLister::new
      Src: /src/opendal/core/services/lakefs/src/backend.rs:255,1
    - Dst: clone
      Src: /src/opendal/core/services/lakefs/src/backend.rs:256,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/lakefs/src/backend.rs:257,1
    - Dst: to_string
      Src: /src/opendal/core/services/lakefs/src/backend.rs:258,1
    - Dst: OpStat::limit
      Src: /src/opendal/core/services/lakefs/src/backend.rs:259,1
    - Dst: OpStat::start_after
      Src: /src/opendal/core/services/lakefs/src/backend.rs:260,1
    - Dst: OpStat::recursive
      Src: /src/opendal/core/services/lakefs/src/backend.rs:261,1
    - Dst: Ok
      Src: /src/opendal/core/services/lakefs/src/backend.rs:264,1
    - Dst: oio::PageLister::new
      Src: /src/opendal/core/services/lakefs/src/backend.rs:264,1
    - Dst: Ok
      Src: /src/opendal/core/services/lakefs/src/backend.rs:267,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 18
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpList
    constantsTouched: []
    func_position:
      end: 268
      start: 253
    functionDepth: 36
    functionLinenumber: 253
    functionLinenumberEnd: 268
    functionName: LakefsBackend::list
    functionSourceFile: /src/opendal/core/services/lakefs/src/backend.rs
    functionUses: 0
    functionsReached:
    - Result::clone
    - to_string
    - LakefsLister::new
    - Ok
    - OpStat::start_after
    - clone
    - oio::PageLister::new
    - OpStat::limit
    - OpStat::recursive
    linkageType: ''
    returnType: Result
    signature: 'fn list(&self, ctx: &OperationContext, path: &str, args: OpList) ->
      Result<Self::Lister>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/core/services/lakefs/src/backend.rs:272,1
    - Dst: oio::OneShotWriter::new
      Src: /src/opendal/core/services/lakefs/src/backend.rs:272,1
    - Dst: LakefsWriter::new
      Src: /src/opendal/core/services/lakefs/src/backend.rs:272,1
    - Dst: clone
      Src: /src/opendal/core/services/lakefs/src/backend.rs:273,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/lakefs/src/backend.rs:274,1
    - Dst: to_string
      Src: /src/opendal/core/services/lakefs/src/backend.rs:275,1
    - Dst: Ok
      Src: /src/opendal/core/services/lakefs/src/backend.rs:280,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpWrite
    constantsTouched: []
    func_position:
      end: 281
      start: 270
    functionDepth: 2
    functionLinenumber: 270
    functionLinenumberEnd: 281
    functionName: LakefsBackend::write
    functionSourceFile: /src/opendal/core/services/lakefs/src/backend.rs
    functionUses: 0
    functionsReached:
    - Result::clone
    - to_string
    - LakefsWriter::new
    - Ok
    - clone
    - oio::OneShotWriter::new
    linkageType: ''
    returnType: Result
    signature: 'fn write(&self, ctx: &OperationContext, path: &str, args: OpWrite)
      -> Result<Self::Writer>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/core/services/lakefs/src/backend.rs:285,1
    - Dst: oio::OneShotDeleter::new
      Src: /src/opendal/core/services/lakefs/src/backend.rs:285,1
    - Dst: LakefsDeleter::new
      Src: /src/opendal/core/services/lakefs/src/backend.rs:285,1
    - Dst: clone
      Src: /src/opendal/core/services/lakefs/src/backend.rs:286,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/lakefs/src/backend.rs:287,1
    - Dst: Ok
      Src: /src/opendal/core/services/lakefs/src/backend.rs:291,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - '&OperationContext'
    constantsTouched: []
    func_position:
      end: 292
      start: 283
    functionDepth: 2
    functionLinenumber: 283
    functionLinenumberEnd: 292
    functionName: LakefsBackend::delete
    functionSourceFile: /src/opendal/core/services/lakefs/src/backend.rs
    functionUses: 0
    functionsReached:
    - oio::OneShotDeleter::new
    - Result::clone
    - Ok
    - clone
    - LakefsDeleter::new
    linkageType: ''
    returnType: Result
    signature: 'fn delete(&self, ctx: &OperationContext) -> Result<Self::Deleter>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: clone
      Src: /src/opendal/core/services/lakefs/src/backend.rs:302,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/lakefs/src/backend.rs:303,1
    - Dst: Result::to_string
      Src: /src/opendal/core/services/lakefs/src/backend.rs:304,1
    - Dst: Result::to_string
      Src: /src/opendal/core/services/lakefs/src/backend.rs:305,1
    - Dst: Ok
      Src: /src/opendal/core/services/lakefs/src/backend.rs:307,1
    - Dst: oio::OneShotCopier::new
      Src: /src/opendal/core/services/lakefs/src/backend.rs:307,1
    - Dst: CompfsCore::copy_object
      Src: /src/opendal/core/services/lakefs/src/backend.rs:308,1
    - Dst: status
      Src: /src/opendal/core/services/lakefs/src/backend.rs:309,1
    - Dst: Ok
      Src: /src/opendal/core/services/lakefs/src/backend.rs:312,1
    - Dst: Metadata::default
      Src: /src/opendal/core/services/lakefs/src/backend.rs:312,1
    - Dst: Err
      Src: /src/opendal/core/services/lakefs/src/backend.rs:313,1
    - Dst: super::core::parse_error
      Src: /src/opendal/core/services/lakefs/src/backend.rs:313,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 26
    argCount: 5
    argNames:
    - ctx
    - from
    - to
    - _args
    - _opts
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    - OpCopy
    - OpCopier
    constantsTouched: []
    func_position:
      end: 316
      start: 294
    functionDepth: 37
    functionLinenumber: 294
    functionLinenumberEnd: 316
    functionName: LakefsBackend::copy
    functionSourceFile: /src/opendal/core/services/lakefs/src/backend.rs
    functionUses: 0
    functionsReached:
    - Result::clone
    - Metadata::default
    - Result::to_string
    - Ok
    - status
    - clone
    - Err
    - CompfsCore::copy_object
    - super::core::parse_error
    - oio::OneShotCopier::new
    linkageType: ''
    returnType: Result
    signature: 'fn copy(&self,ctx: &OperationContext,from: &str,to: &str,_args: OpCopy,_opts:
      OpCopier,) -> Result<Self::Copier>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/core/services/lakefs/src/backend.rs:325,1
    - Dst: Error::new
      Src: /src/opendal/core/services/lakefs/src/backend.rs:325,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - _ctx
    - _from
    - _to
    - _args
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    - OpRename
    constantsTouched: []
    func_position:
      end: 329
      start: 318
    functionDepth: 36
    functionLinenumber: 318
    functionLinenumberEnd: 329
    functionName: LakefsBackend::rename
    functionSourceFile: /src/opendal/core/services/lakefs/src/backend.rs
    functionUses: 0
    functionsReached:
    - Error::new
    - Err
    linkageType: ''
    returnType: Result
    signature: 'async fn rename(&self,_ctx: &OperationContext,_from: &str,_to: &str,_args:
      OpRename,) -> Result<RpRename>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/core/services/lakefs/src/backend.rs:337,1
    - Dst: Error::new
      Src: /src/opendal/core/services/lakefs/src/backend.rs:337,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - _ctx
    - _path
    - _args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpPresign
    constantsTouched: []
    func_position:
      end: 341
      start: 331
    functionDepth: 36
    functionLinenumber: 331
    functionLinenumberEnd: 341
    functionName: LakefsBackend::presign
    functionSourceFile: /src/opendal/core/services/lakefs/src/backend.rs
    functionUses: 0
    functionsReached:
    - Error::new
    - Err
    linkageType: ''
    returnType: Result
    signature: 'async fn presign(&self,_ctx: &OperationContext,_path: &str,_args:
      OpPresign,) -> Result<RpPresign>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::options
      Src: /src/opendal/core/services/rocksdb/src/config.rs:41,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/rocksdb/src/config.rs:41,1
    - Dst: Result::root
      Src: /src/opendal/core/services/rocksdb/src/config.rs:43,1
    - Dst: is_empty
      Src: /src/opendal/core/services/rocksdb/src/config.rs:44,1
    - Dst: Result::entry
      Src: /src/opendal/core/services/rocksdb/src/config.rs:46,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/rocksdb/src/config.rs:46,1
    - Dst: crate::Entry::or_insert_with
      Src: /src/opendal/core/services/rocksdb/src/config.rs:46,1
    - Dst: Self::from_iter
      Src: /src/opendal/core/services/rocksdb/src/config.rs:50,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 20
    argCount: 1
    argNames:
    - uri
    argTypes:
    - '&OperatorUri'
    constantsTouched: []
    func_position:
      end: 51
      start: 40
    functionDepth: 35
    functionLinenumber: 40
    functionLinenumberEnd: 51
    functionName: RocksdbConfig::from_uri
    functionSourceFile: /src/opendal/core/services/rocksdb/src/config.rs
    functionUses: 1
    functionsReached:
    - Result::clone
    - Self::from_iter
    - Result::entry
    - crate::Entry::or_insert_with
    - is_empty
    - Result::root
    - '&str::to_string'
    - Result::options
    linkageType: ''
    returnType: Result
    signature: 'fn from_uri(uri: &OperatorUri) -> Result<Self>'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 55
      start: 53
    functionDepth: 0
    functionLinenumber: 53
    functionLinenumberEnd: 55
    functionName: RocksdbConfig::into_builder
    functionSourceFile: /src/opendal/core/services/rocksdb/src/config.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Self::Builder
    signature: fn into_builder(self) -> Self::Builder
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: OperatorUri::new
      Src: /src/opendal/core/services/rocksdb/src/config.rs:64,1
    - Dst: Vec::<(String, String)>::new
      Src: /src/opendal/core/services/rocksdb/src/config.rs:66,1
    - Dst: RocksdbConfig::from_uri
      Src: /src/opendal/core/services/rocksdb/src/config.rs:69,1
    - Dst: Ok
      Src: /src/opendal/core/services/rocksdb/src/config.rs:72,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 73
      start: 63
    functionDepth: 29
    functionLinenumber: 63
    functionLinenumberEnd: 73
    functionName: tests::from_uri_sets_datadir_and_root
    functionSourceFile: /src/opendal/core/services/rocksdb/src/config.rs
    functionUses: 0
    functionsReached:
    - Vec::<(String, String)>::new
    - OperatorUri::new
    - Ok
    - RocksdbConfig::from_uri
    linkageType: ''
    returnType: Result
    signature: fn from_uri_sets_datadir_and_root() -> Result<()>
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - core
    - root
    argTypes:
    - Arc<RocksdbCore>
    - String
    constantsTouched: []
    func_position:
      end: 33
      start: 31
    functionDepth: 0
    functionLinenumber: 31
    functionLinenumberEnd: 33
    functionName: RocksdbDeleter::new
    functionSourceFile: /src/opendal/core/services/rocksdb/src/deleter.rs
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(core: Arc<RocksdbCore>, root: String) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/rocksdb/src/deleter.rs:38,1
    - Dst: delete
      Src: /src/opendal/core/services/rocksdb/src/deleter.rs:39,1
    - Dst: Ok
      Src: /src/opendal/core/services/rocksdb/src/deleter.rs:40,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 2
    argNames:
    - path
    argTypes:
    - String
    - OpDelete
    constantsTouched: []
    func_position:
      end: 41
      start: 37
    functionDepth: 32
    functionLinenumber: 37
    functionLinenumberEnd: 41
    functionName: RocksdbDeleter::delete_once
    functionSourceFile: /src/opendal/core/services/rocksdb/src/deleter.rs
    functionUses: 0
    functionsReached:
    - Ok
    - build_abs_path
    - delete
    linkageType: ''
    returnType: Result
    signature: 'async fn delete_once(&self, path: String, _: OpDelete) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: CompfsCore::list
      Src: /src/opendal/core/services/rocksdb/src/lister.rs:33,1
    - Dst: Ok
      Src: /src/opendal/core/services/rocksdb/src/lister.rs:35,1
    - Dst: into_iter
      Src: /src/opendal/core/services/rocksdb/src/lister.rs:37,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 3
    argNames:
    - core
    - root
    - path
    argTypes:
    - Arc<RocksdbCore>
    - String
    - String
    constantsTouched: []
    func_position:
      end: 39
      start: 32
    functionDepth: 2
    functionLinenumber: 32
    functionLinenumberEnd: 39
    functionName: RocksdbLister::new
    functionSourceFile: /src/opendal/core/services/rocksdb/src/lister.rs
    functionUses: 1
    functionsReached:
    - CompfsCore::list
    - Ok
    - into_iter
    linkageType: ''
    returnType: Result
    signature: 'pub fn new(core: Arc<RocksdbCore>, root: String, path: String) ->
      Result<Self>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: next
      Src: /src/opendal/core/services/rocksdb/src/lister.rs:44,1
    - Dst: build_rel_path
      Src: /src/opendal/core/services/rocksdb/src/lister.rs:45,1
    - Dst: FoyerKey::ends_with
      Src: /src/opendal/core/services/rocksdb/src/lister.rs:48,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/rocksdb/src/lister.rs:53,1
    - Dst: anyhow::Result::mode
      Src: /src/opendal/core/services/rocksdb/src/lister.rs:54,1
    - Dst: Option::is_file
      Src: /src/opendal/core/services/rocksdb/src/lister.rs:54,1
    - Dst: anyhow::Result::set_content_length
      Src: /src/opendal/core/services/rocksdb/src/lister.rs:55,1
    - Dst: oio::Entry::new
      Src: /src/opendal/core/services/rocksdb/src/lister.rs:57,1
    - Dst: Ok
      Src: /src/opendal/core/services/rocksdb/src/lister.rs:58,1
    - Dst: Some
      Src: /src/opendal/core/services/rocksdb/src/lister.rs:58,1
    - Dst: Ok
      Src: /src/opendal/core/services/rocksdb/src/lister.rs:61,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 29
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 62
      start: 43
    functionDepth: 4
    functionLinenumber: 43
    functionLinenumberEnd: 62
    functionName: RocksdbLister::next
    functionSourceFile: /src/opendal/core/services/rocksdb/src/lister.rs
    functionUses: 0
    functionsReached:
    - next
    - Metadata::new
    - anyhow::Result::set_content_length
    - oio::Entry::new
    - Ok
    - anyhow::Result::mode
    - build_rel_path
    - Option::is_file
    - Some
    - FoyerKey::ends_with
    linkageType: ''
    returnType: Result
    signature: async fn next(&mut self) -> Result<Option<oio::Entry>>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: to_string
      Src: /src/opendal/core/services/rocksdb/src/reader.rs:32,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - backend
    - path
    argTypes:
    - RocksdbBackend
    - '&str'
    - OpRead
    constantsTouched: []
    func_position:
      end: 34
      start: 29
    functionDepth: 2
    functionLinenumber: 29
    functionLinenumberEnd: 34
    functionName: RocksdbReader::new
    functionSourceFile: /src/opendal/core/services/rocksdb/src/reader.rs
    functionUses: 1
    functionsReached:
    - to_string
    linkageType: ''
    returnType: Self
    signature: 'pub(super) fn new(backend: RocksdbBackend, path: &str, _: OpRead)
      -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: as_str
      Src: /src/opendal/core/services/rocksdb/src/reader.rs:40,1
    - Dst: build_abs_path
      Src: /src/opendal/core/services/rocksdb/src/reader.rs:41,1
    - Dst: get
      Src: /src/opendal/core/services/rocksdb/src/reader.rs:42,1
    - Dst: Err
      Src: /src/opendal/core/services/rocksdb/src/reader.rs:45,1
    - Dst: Error::new
      Src: /src/opendal/core/services/rocksdb/src/reader.rs:45,1
    - Dst: Result::slice
      Src: /src/opendal/core/services/rocksdb/src/reader.rs:48,1
    - Dst: (Vec::to_content_range
      Src: /src/opendal/core/services/rocksdb/src/reader.rs:48,1
    - Dst: Result::len
      Src: /src/opendal/core/services/rocksdb/src/reader.rs:48,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/rocksdb/src/reader.rs:49,1
    - Dst: Self::with_content_length
      Src: /src/opendal/core/services/rocksdb/src/reader.rs:49,1
    - Dst: Result::len
      Src: /src/opendal/core/services/rocksdb/src/reader.rs:49,1
    - Dst: Ok
      Src: /src/opendal/core/services/rocksdb/src/reader.rs:50,1
    - Dst: RpRead::new
      Src: /src/opendal/core/services/rocksdb/src/reader.rs:51,1
    - Dst: Box::new
      Src: /src/opendal/core/services/rocksdb/src/reader.rs:52,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 36
    argCount: 1
    argNames:
    - range
    argTypes:
    - BytesRange
    constantsTouched: []
    func_position:
      end: 54
      start: 38
    functionDepth: 36
    functionLinenumber: 38
    functionLinenumberEnd: 54
    functionName: RocksdbReader::open
    functionSourceFile: /src/opendal/core/services/rocksdb/src/reader.rs
    functionUses: 0
    functionsReached:
    - Metadata::new
    - get
    - Ok
    - Box::new
    - Self::with_content_length
    - build_abs_path
    - Error::new
    - Err
    - as_str
    - Result::slice
    - (Vec::to_content_range
    - Result::len
    - RpRead::new
    linkageType: ''
    returnType: Result
    signature: 'async fn open(&self, range: BytesRange) -> Result<(RpRead, Box<dyn
      oio::ReadStreamDyn>)>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::debug_struct
      Src: /src/opendal/core/services/rocksdb/src/core.rs:32,1
    - Dst: field
      Src: /src/opendal/core/services/rocksdb/src/core.rs:32,1
    - Dst: path
      Src: /src/opendal/core/services/rocksdb/src/core.rs:33,1
    - Dst: finish
      Src: /src/opendal/core/services/rocksdb/src/core.rs:32,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 1
    argNames:
    - f
    argTypes:
    - '&mut std::fmt::Formatter<''_>'
    constantsTouched: []
    func_position:
      end: 35
      start: 31
    functionDepth: 34
    functionLinenumber: 31
    functionLinenumberEnd: 35
    functionName: RocksdbCore::fmt
    functionSourceFile: /src/opendal/core/services/rocksdb/src/core.rs
    functionUses: 0
    functionsReached:
    - field
    - finish
    - Result::debug_struct
    - path
    linkageType: ''
    returnType: std::fmt::Result
    signature: 'fn fmt(&self, f: &mut std::fmt::Formatter<''_>) -> std::fmt::Result'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: get
      Src: /src/opendal/core/services/rocksdb/src/core.rs:40,1
    - Dst: map_err
      Src: /src/opendal/core/services/rocksdb/src/core.rs:40,1
    - Dst: Ok
      Src: /src/opendal/core/services/rocksdb/src/core.rs:41,1
    - Dst: bool::map
      Src: /src/opendal/core/services/rocksdb/src/core.rs:41,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - path
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 42
      start: 39
    functionDepth: 2
    functionLinenumber: 39
    functionLinenumberEnd: 42
    functionName: RocksdbCore::get
    functionSourceFile: /src/opendal/core/services/rocksdb/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - bool::map
    - get
    - Ok
    linkageType: ''
    returnType: Result
    signature: 'pub fn get(&self, path: &str) -> Result<Option<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: put
      Src: /src/opendal/core/services/rocksdb/src/core.rs:45,1
    - Dst: Vec::to_vec
      Src: /src/opendal/core/services/rocksdb/src/core.rs:46,1
    - Dst: map_err
      Src: /src/opendal/core/services/rocksdb/src/core.rs:45,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 2
    argNames:
    - path
    - value
    argTypes:
    - '&str'
    - Buffer
    constantsTouched: []
    func_position:
      end: 48
      start: 44
    functionDepth: 4
    functionLinenumber: 44
    functionLinenumberEnd: 48
    functionName: RocksdbCore::set
    functionSourceFile: /src/opendal/core/services/rocksdb/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - Vec::to_vec
    - put
    linkageType: ''
    returnType: Result
    signature: 'pub fn set(&self, path: &str, value: Buffer) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: delete
      Src: /src/opendal/core/services/rocksdb/src/core.rs:51,1
    - Dst: map_err
      Src: /src/opendal/core/services/rocksdb/src/core.rs:51,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - path
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 52
      start: 50
    functionDepth: 32
    functionLinenumber: 50
    functionLinenumberEnd: 52
    functionName: RocksdbCore::delete
    functionSourceFile: /src/opendal/core/services/rocksdb/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - delete
    linkageType: ''
    returnType: Result
    signature: 'pub fn delete(&self, path: &str) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: prefix_iterator
      Src: /src/opendal/core/services/rocksdb/src/core.rs:55,1
    - Dst: Vec::default
      Src: /src/opendal/core/services/rocksdb/src/core.rs:56,1
    - Dst: crate::Entry::map_err
      Src: /src/opendal/core/services/rocksdb/src/core.rs:59,1
    - Dst: String::from_utf8_lossy
      Src: /src/opendal/core/services/rocksdb/src/core.rs:60,1
    - Dst: FoyerKey::starts_with
      Src: /src/opendal/core/services/rocksdb/src/core.rs:61,1
    - Dst: Self::push
      Src: /src/opendal/core/services/rocksdb/src/core.rs:65,1
    - Dst: FoyerKey::to_string
      Src: /src/opendal/core/services/rocksdb/src/core.rs:65,1
    - Dst: Vec::len
      Src: /src/opendal/core/services/rocksdb/src/core.rs:65,1
    - Dst: Ok
      Src: /src/opendal/core/services/rocksdb/src/core.rs:68,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 28
    argCount: 1
    argNames:
    - path
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 69
      start: 54
    functionDepth: 5
    functionLinenumber: 54
    functionLinenumberEnd: 69
    functionName: RocksdbCore::list
    functionSourceFile: /src/opendal/core/services/rocksdb/src/core.rs
    functionUses: 0
    functionsReached:
    - prefix_iterator
    - Ok
    - FoyerKey::starts_with
    - Self::push
    - Vec::default
    - FoyerKey::to_string
    - crate::Entry::map_err
    - String::from_utf8_lossy
    - Vec::len
    linkageType: ''
    returnType: Result
    signature: 'pub fn list(&self, path: &str) -> Result<Vec<(String, u64)>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Error::new
      Src: /src/opendal/core/services/rocksdb/src/core.rs:73,1
    - Dst: Self::set_source
      Src: /src/opendal/core/services/rocksdb/src/core.rs:73,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - e
    argTypes:
    - rocksdb::Error
    constantsTouched: []
    func_position:
      end: 74
      start: 72
    functionDepth: 36
    functionLinenumber: 72
    functionLinenumberEnd: 74
    functionName: parse_rocksdb_error
    functionSourceFile: /src/opendal/core/services/rocksdb/src/core.rs
    functionUses: 0
    functionsReached:
    - Self::set_source
    - Error::new
    linkageType: ''
    returnType: Error
    signature: 'fn parse_rocksdb_error(e: rocksdb::Error) -> Error'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: oio::QueueBuf::new
      Src: /src/opendal/core/services/rocksdb/src/writer.rs:36,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - core
    - path
    argTypes:
    - Arc<RocksdbCore>
    - String
    constantsTouched: []
    func_position:
      end: 38
      start: 32
    functionDepth: 4
    functionLinenumber: 32
    functionLinenumberEnd: 38
    functionName: RocksdbWriter::new
    functionSourceFile: /src/opendal/core/services/rocksdb/src/writer.rs
    functionUses: 1
    functionsReached:
    - oio::QueueBuf::new
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(core: Arc<RocksdbCore>, path: String) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: push
      Src: /src/opendal/core/services/rocksdb/src/writer.rs:43,1
    - Dst: Ok
      Src: /src/opendal/core/services/rocksdb/src/writer.rs:44,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - bs
    argTypes:
    - Buffer
    constantsTouched: []
    func_position:
      end: 45
      start: 42
    functionDepth: 5
    functionLinenumber: 42
    functionLinenumberEnd: 45
    functionName: RocksdbWriter::write
    functionSourceFile: /src/opendal/core/services/rocksdb/src/writer.rs
    functionUses: 0
    functionsReached:
    - Ok
    - push
    linkageType: ''
    returnType: Result
    signature: 'async fn write(&mut self, bs: Buffer) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: clone
      Src: /src/opendal/core/services/rocksdb/src/writer.rs:48,1
    - Dst: collect
      Src: /src/opendal/core/services/rocksdb/src/writer.rs:48,1
    - Dst: io::Result::len
      Src: /src/opendal/core/services/rocksdb/src/writer.rs:49,1
    - Dst: set
      Src: /src/opendal/core/services/rocksdb/src/writer.rs:50,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/rocksdb/src/writer.rs:52,1
    - Dst: EntryMode::from_path
      Src: /src/opendal/core/services/rocksdb/src/writer.rs:52,1
    - Dst: Self::with_content_length
      Src: /src/opendal/core/services/rocksdb/src/writer.rs:52,1
    - Dst: Ok
      Src: /src/opendal/core/services/rocksdb/src/writer.rs:53,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 22
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 54
      start: 47
    functionDepth: 36
    functionLinenumber: 47
    functionLinenumberEnd: 54
    functionName: RocksdbWriter::close
    functionSourceFile: /src/opendal/core/services/rocksdb/src/writer.rs
    functionUses: 0
    functionsReached:
    - collect
    - Metadata::new
    - Ok
    - io::Result::len
    - set
    - Self::with_content_length
    - clone
    - EntryMode::from_path
    linkageType: ''
    returnType: Result
    signature: async fn close(&mut self) -> Result<Metadata>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: clear
      Src: /src/opendal/core/services/rocksdb/src/writer.rs:57,1
    - Dst: Ok
      Src: /src/opendal/core/services/rocksdb/src/writer.rs:58,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 59
      start: 56
    functionDepth: 2
    functionLinenumber: 56
    functionLinenumberEnd: 59
    functionName: RocksdbWriter::abort
    functionSourceFile: /src/opendal/core/services/rocksdb/src/writer.rs
    functionUses: 0
    functionsReached:
    - clear
    - Ok
    linkageType: ''
    returnType: Result
    signature: async fn abort(&mut self) -> Result<()>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: register::<Rocksdb>
      Src: /src/opendal/core/services/rocksdb/src/lib.rs:23,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - registry
    argTypes:
    - '&opendal_core::OperatorRegistry'
    constantsTouched: []
    func_position:
      end: 24
      start: 22
    functionDepth: 0
    functionLinenumber: 22
    functionLinenumberEnd: 24
    functionName: register_rocksdb_service
    functionSourceFile: /src/opendal/core/services/rocksdb/src/lib.rs
    functionUses: 1
    functionsReached:
    - register::<Rocksdb>
    linkageType: ''
    returnType: void
    signature: 'pub fn register_rocksdb_service(registry: &opendal_core::OperatorRegistry)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Some
      Src: /src/opendal/core/services/rocksdb/src/backend.rs:42,1
    - Dst: into
      Src: /src/opendal/core/services/rocksdb/src/backend.rs:42,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - path
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 44
      start: 41
    functionDepth: 29
    functionLinenumber: 41
    functionLinenumberEnd: 44
    functionName: RocksdbBuilder::datadir
    functionSourceFile: /src/opendal/core/services/rocksdb/src/backend.rs
    functionUses: 0
    functionsReached:
    - into
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn datadir(mut self, path: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::is_empty
      Src: /src/opendal/core/services/rocksdb/src/backend.rs:50,1
    - Dst: Some
      Src: /src/opendal/core/services/rocksdb/src/backend.rs:53,1
    - Dst: Result::to_string
      Src: /src/opendal/core/services/rocksdb/src/backend.rs:53,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - root
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 57
      start: 49
    functionDepth: 4
    functionLinenumber: 49
    functionLinenumberEnd: 57
    functionName: RocksdbBuilder::root
    functionSourceFile: /src/opendal/core/services/rocksdb/src/backend.rs
    functionUses: 0
    functionsReached:
    - Result::is_empty
    - Result::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn root(mut self, root: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: ok_or_else
      Src: /src/opendal/core/services/rocksdb/src/backend.rs:64,1
    - Dst: Error::new
      Src: /src/opendal/core/services/rocksdb/src/backend.rs:65,1
    - Dst: Self::with_context
      Src: /src/opendal/core/services/rocksdb/src/backend.rs:65,1
    - Dst: DB::open_default
      Src: /src/opendal/core/services/rocksdb/src/backend.rs:68,1
    - Dst: map_err
      Src: /src/opendal/core/services/rocksdb/src/backend.rs:68,1
    - Dst: Error::new
      Src: /src/opendal/core/services/rocksdb/src/backend.rs:69,1
    - Dst: Self::with_context
      Src: /src/opendal/core/services/rocksdb/src/backend.rs:69,1
    - Dst: Self::with_context
      Src: /src/opendal/core/services/rocksdb/src/backend.rs:69,1
    - Dst: Self::set_source
      Src: /src/opendal/core/services/rocksdb/src/backend.rs:69,1
    - Dst: normalize_root
      Src: /src/opendal/core/services/rocksdb/src/backend.rs:75,1
    - Dst: unwrap_or_default
      Src: /src/opendal/core/services/rocksdb/src/backend.rs:75,1
    - Dst: Ok
      Src: /src/opendal/core/services/rocksdb/src/backend.rs:77,1
    - Dst: RocksdbBackend::new
      Src: /src/opendal/core/services/rocksdb/src/backend.rs:77,1
    - Dst: Arc::new
      Src: /src/opendal/core/services/rocksdb/src/backend.rs:77,1
    - Dst: Self::with_normalized_root
      Src: /src/opendal/core/services/rocksdb/src/backend.rs:77,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 34
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 78
      start: 63
    functionDepth: 36
    functionLinenumber: 63
    functionLinenumberEnd: 78
    functionName: RocksdbBuilder::build
    functionSourceFile: /src/opendal/core/services/rocksdb/src/backend.rs
    functionUses: 0
    functionsReached:
    - map_err
    - Ok
    - Self::with_normalized_root
    - Arc::new
    - normalize_root
    - DB::open_default
    - Error::new
    - RocksdbBackend::new
    - Self::set_source
    - Self::with_context
    - unwrap_or_default
    - ok_or_else
    linkageType: ''
    returnType: Result
    signature: fn build(self) -> Result<impl Service>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: ServiceInfo::new
      Src: /src/opendal/core/services/rocksdb/src/backend.rs:92,1
    - Dst: path
      Src: /src/opendal/core/services/rocksdb/src/backend.rs:92,1
    - Dst: to_string_lossy
      Src: /src/opendal/core/services/rocksdb/src/backend.rs:92,1
    - Dst: Default::default
      Src: /src/opendal/core/services/rocksdb/src/backend.rs:101,1
    - Dst: Arc::new
      Src: /src/opendal/core/services/rocksdb/src/backend.rs:105,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/rocksdb/src/backend.rs:106,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 1
    argNames:
    - core
    argTypes:
    - RocksdbCore
    constantsTouched: []
    func_position:
      end: 110
      start: 91
    functionDepth: 33
    functionLinenumber: 91
    functionLinenumberEnd: 110
    functionName: RocksdbBackend::new
    functionSourceFile: /src/opendal/core/services/rocksdb/src/backend.rs
    functionUses: 1
    functionsReached:
    - ServiceInfo::new
    - Arc::new
    - Default::default
    - '&str::to_string'
    - path
    - to_string_lossy
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(core: RocksdbCore) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: with_root
      Src: /src/opendal/core/services/rocksdb/src/backend.rs:113,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 1
    argNames:
    - root
    argTypes:
    - String
    constantsTouched: []
    func_position:
      end: 116
      start: 112
    functionDepth: 33
    functionLinenumber: 112
    functionLinenumberEnd: 116
    functionName: RocksdbBackend::with_normalized_root
    functionSourceFile: /src/opendal/core/services/rocksdb/src/backend.rs
    functionUses: 0
    functionsReached:
    - with_root
    linkageType: ''
    returnType: Self
    signature: 'fn with_normalized_root(mut self, root: String) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: clone
      Src: /src/opendal/core/services/rocksdb/src/backend.rs:127,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 128
      start: 126
    functionDepth: 2
    functionLinenumber: 126
    functionLinenumberEnd: 128
    functionName: RocksdbBackend::info
    functionSourceFile: /src/opendal/core/services/rocksdb/src/backend.rs
    functionUses: 0
    functionsReached:
    - clone
    linkageType: ''
    returnType: ServiceInfo
    signature: fn info(&self) -> ServiceInfo
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 132
      start: 130
    functionDepth: 0
    functionLinenumber: 130
    functionLinenumberEnd: 132
    functionName: RocksdbBackend::capability
    functionSourceFile: /src/opendal/core/services/rocksdb/src/backend.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Capability
    signature: fn capability(&self) -> Capability
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/core/services/rocksdb/src/backend.rs:140,1
    - Dst: Error::new
      Src: /src/opendal/core/services/rocksdb/src/backend.rs:140,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - _ctx
    - _path
    - _args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpCreateDir
    constantsTouched: []
    func_position:
      end: 144
      start: 134
    functionDepth: 36
    functionLinenumber: 134
    functionLinenumberEnd: 144
    functionName: RocksdbBackend::create_dir
    functionSourceFile: /src/opendal/core/services/rocksdb/src/backend.rs
    functionUses: 0
    functionsReached:
    - Error::new
    - Err
    linkageType: ''
    returnType: Result
    signature: 'async fn create_dir(&self,_ctx: &OperationContext,_path: &str,_args:
      OpCreateDir,) -> Result<RpCreateDir>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/rocksdb/src/backend.rs:147,1
    - Dst: build_abs_path
      Src: /src/opendal/core/services/rocksdb/src/backend.rs:149,1
    - Dst: Ok
      Src: /src/opendal/core/services/rocksdb/src/backend.rs:150,1
    - Dst: RpStat::new
      Src: /src/opendal/core/services/rocksdb/src/backend.rs:150,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/rocksdb/src/backend.rs:150,1
    - Dst: get
      Src: /src/opendal/core/services/rocksdb/src/backend.rs:152,1
    - Dst: Ok
      Src: /src/opendal/core/services/rocksdb/src/backend.rs:154,1
    - Dst: RpStat::new
      Src: /src/opendal/core/services/rocksdb/src/backend.rs:154,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/rocksdb/src/backend.rs:155,1
    - Dst: Self::with_content_length
      Src: /src/opendal/core/services/rocksdb/src/backend.rs:155,1
    - Dst: Result::len
      Src: /src/opendal/core/services/rocksdb/src/backend.rs:155,1
    - Dst: Err
      Src: /src/opendal/core/services/rocksdb/src/backend.rs:157,1
    - Dst: Error::new
      Src: /src/opendal/core/services/rocksdb/src/backend.rs:157,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 29
    argCount: 3
    argNames:
    - _ctx
    - path
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpStat
    constantsTouched: []
    func_position:
      end: 160
      start: 146
    functionDepth: 36
    functionLinenumber: 146
    functionLinenumberEnd: 160
    functionName: RocksdbBackend::stat
    functionSourceFile: /src/opendal/core/services/rocksdb/src/backend.rs
    functionUses: 0
    functionsReached:
    - Metadata::new
    - get
    - Ok
    - Self::with_content_length
    - RpStat::new
    - build_abs_path
    - Err
    - Error::new
    - Result::len
    linkageType: ''
    returnType: Result
    signature: 'async fn stat(&self, _ctx: &OperationContext, path: &str, _: OpStat)
      -> Result<RpStat>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/core/services/rocksdb/src/backend.rs:163,1
    - Dst: oio::StreamReader::new
      Src: /src/opendal/core/services/rocksdb/src/backend.rs:163,1
    - Dst: RocksdbReader::new
      Src: /src/opendal/core/services/rocksdb/src/backend.rs:163,1
    - Dst: RocksdbBackend::clone
      Src: /src/opendal/core/services/rocksdb/src/backend.rs:164,1
    - Dst: Ok
      Src: /src/opendal/core/services/rocksdb/src/backend.rs:170,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - _ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpRead
    constantsTouched: []
    func_position:
      end: 171
      start: 161
    functionDepth: 3
    functionLinenumber: 161
    functionLinenumberEnd: 171
    functionName: RocksdbBackend::read
    functionSourceFile: /src/opendal/core/services/rocksdb/src/backend.rs
    functionUses: 0
    functionsReached:
    - oio::StreamReader::new
    - RocksdbReader::new
    - Ok
    - RocksdbBackend::clone
    linkageType: ''
    returnType: Result
    signature: 'fn read(&self, _ctx: &OperationContext, path: &str, args: OpRead)
      -> Result<Self::Reader>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/rocksdb/src/backend.rs:175,1
    - Dst: RocksdbWriter::new
      Src: /src/opendal/core/services/rocksdb/src/backend.rs:176,1
    - Dst: clone
      Src: /src/opendal/core/services/rocksdb/src/backend.rs:176,1
    - Dst: Ok
      Src: /src/opendal/core/services/rocksdb/src/backend.rs:177,1
    - Dst: Ok
      Src: /src/opendal/core/services/rocksdb/src/backend.rs:180,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 3
    argNames:
    - _ctx
    - path
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpWrite
    constantsTouched: []
    func_position:
      end: 181
      start: 173
    functionDepth: 5
    functionLinenumber: 173
    functionLinenumberEnd: 181
    functionName: RocksdbBackend::write
    functionSourceFile: /src/opendal/core/services/rocksdb/src/backend.rs
    functionUses: 0
    functionsReached:
    - RocksdbWriter::new
    - Ok
    - clone
    - build_abs_path
    linkageType: ''
    returnType: Result
    signature: 'fn write(&self, _ctx: &OperationContext, path: &str, _: OpWrite) ->
      Result<Self::Writer>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: RocksdbDeleter::new
      Src: /src/opendal/core/services/rocksdb/src/backend.rs:185,1
    - Dst: clone
      Src: /src/opendal/core/services/rocksdb/src/backend.rs:185,1
    - Dst: clone
      Src: /src/opendal/core/services/rocksdb/src/backend.rs:185,1
    - Dst: Ok
      Src: /src/opendal/core/services/rocksdb/src/backend.rs:186,1
    - Dst: oio::OneShotDeleter::new
      Src: /src/opendal/core/services/rocksdb/src/backend.rs:186,1
    - Dst: Ok
      Src: /src/opendal/core/services/rocksdb/src/backend.rs:189,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 1
    argNames:
    - _ctx
    argTypes:
    - '&OperationContext'
    constantsTouched: []
    func_position:
      end: 190
      start: 183
    functionDepth: 2
    functionLinenumber: 183
    functionLinenumberEnd: 190
    functionName: RocksdbBackend::delete
    functionSourceFile: /src/opendal/core/services/rocksdb/src/backend.rs
    functionUses: 0
    functionsReached:
    - oio::OneShotDeleter::new
    - clone
    - RocksdbDeleter::new
    - Ok
    linkageType: ''
    returnType: Result
    signature: 'fn delete(&self, _ctx: &OperationContext) -> Result<Self::Deleter>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/rocksdb/src/backend.rs:194,1
    - Dst: RocksdbLister::new
      Src: /src/opendal/core/services/rocksdb/src/backend.rs:195,1
    - Dst: clone
      Src: /src/opendal/core/services/rocksdb/src/backend.rs:195,1
    - Dst: clone
      Src: /src/opendal/core/services/rocksdb/src/backend.rs:195,1
    - Dst: Ok
      Src: /src/opendal/core/services/rocksdb/src/backend.rs:196,1
    - Dst: oio::HierarchyLister::new
      Src: /src/opendal/core/services/rocksdb/src/backend.rs:196,1
    - Dst: OpStat::recursive
      Src: /src/opendal/core/services/rocksdb/src/backend.rs:196,1
    - Dst: Ok
      Src: /src/opendal/core/services/rocksdb/src/backend.rs:199,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 17
    argCount: 3
    argNames:
    - _ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpList
    constantsTouched: []
    func_position:
      end: 200
      start: 192
    functionDepth: 36
    functionLinenumber: 192
    functionLinenumberEnd: 200
    functionName: RocksdbBackend::list
    functionSourceFile: /src/opendal/core/services/rocksdb/src/backend.rs
    functionUses: 0
    functionsReached:
    - oio::HierarchyLister::new
    - Ok
    - RocksdbLister::new
    - clone
    - build_abs_path
    - OpStat::recursive
    linkageType: ''
    returnType: Result
    signature: 'fn list(&self, _ctx: &OperationContext, path: &str, args: OpList)
      -> Result<Self::Lister>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/core/services/rocksdb/src/backend.rs:210,1
    - Dst: Error::new
      Src: /src/opendal/core/services/rocksdb/src/backend.rs:210,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 5
    argNames:
    - _ctx
    - _from
    - _to
    - _args
    - _opts
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    - OpCopy
    - OpCopier
    constantsTouched: []
    func_position:
      end: 214
      start: 202
    functionDepth: 36
    functionLinenumber: 202
    functionLinenumberEnd: 214
    functionName: RocksdbBackend::copy
    functionSourceFile: /src/opendal/core/services/rocksdb/src/backend.rs
    functionUses: 0
    functionsReached:
    - Error::new
    - Err
    linkageType: ''
    returnType: Result
    signature: 'fn copy(&self,_ctx: &OperationContext,_from: &str,_to: &str,_args:
      OpCopy,_opts: OpCopier,) -> Result<Self::Copier>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/core/services/rocksdb/src/backend.rs:223,1
    - Dst: Error::new
      Src: /src/opendal/core/services/rocksdb/src/backend.rs:223,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - _ctx
    - _from
    - _to
    - _args
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    - OpRename
    constantsTouched: []
    func_position:
      end: 227
      start: 216
    functionDepth: 36
    functionLinenumber: 216
    functionLinenumberEnd: 227
    functionName: RocksdbBackend::rename
    functionSourceFile: /src/opendal/core/services/rocksdb/src/backend.rs
    functionUses: 0
    functionsReached:
    - Error::new
    - Err
    linkageType: ''
    returnType: Result
    signature: 'async fn rename(&self,_ctx: &OperationContext,_from: &str,_to: &str,_args:
      OpRename,) -> Result<RpRename>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/core/services/rocksdb/src/backend.rs:235,1
    - Dst: Error::new
      Src: /src/opendal/core/services/rocksdb/src/backend.rs:235,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - _ctx
    - _path
    - _args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpPresign
    constantsTouched: []
    func_position:
      end: 239
      start: 229
    functionDepth: 36
    functionLinenumber: 229
    functionLinenumberEnd: 239
    functionName: RocksdbBackend::presign
    functionSourceFile: /src/opendal/core/services/rocksdb/src/backend.rs
    functionUses: 0
    functionsReached:
    - Error::new
    - Err
    linkageType: ''
    returnType: Result
    signature: 'async fn presign(&self,_ctx: &OperationContext,_path: &str,_args:
      OpPresign,) -> Result<RpPresign>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::options
      Src: /src/opendal/core/services/mini_moka/src/config.rs:52,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/mini_moka/src/config.rs:52,1
    - Dst: Result::root
      Src: /src/opendal/core/services/mini_moka/src/config.rs:54,1
    - Dst: Result::is_empty
      Src: /src/opendal/core/services/mini_moka/src/config.rs:55,1
    - Dst: Result::insert
      Src: /src/opendal/core/services/mini_moka/src/config.rs:57,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/mini_moka/src/config.rs:57,1
    - Dst: Result::to_string
      Src: /src/opendal/core/services/mini_moka/src/config.rs:57,1
    - Dst: Self::from_iter
      Src: /src/opendal/core/services/mini_moka/src/config.rs:60,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 19
    argCount: 1
    argNames:
    - uri
    argTypes:
    - '&OperatorUri'
    constantsTouched: []
    func_position:
      end: 61
      start: 51
    functionDepth: 35
    functionLinenumber: 51
    functionLinenumberEnd: 61
    functionName: MiniMokaConfig::from_uri
    functionSourceFile: /src/opendal/core/services/mini_moka/src/config.rs
    functionUses: 1
    functionsReached:
    - Result::clone
    - Self::from_iter
    - Result::to_string
    - Result::insert
    - Result::is_empty
    - Result::root
    - '&str::to_string'
    - Result::options
    linkageType: ''
    returnType: Result
    signature: 'fn from_uri(uri: &OperatorUri) -> Result<Self>'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 65
      start: 63
    functionDepth: 0
    functionLinenumber: 63
    functionLinenumberEnd: 65
    functionName: MiniMokaConfig::into_builder
    functionSourceFile: /src/opendal/core/services/mini_moka/src/config.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Self::Builder
    signature: fn into_builder(self) -> Self::Builder
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: OperatorUri::new
      Src: /src/opendal/core/services/mini_moka/src/config.rs:74,1
    - Dst: MiniMokaConfig::from_uri
      Src: /src/opendal/core/services/mini_moka/src/config.rs:79,1
    - Dst: Ok
      Src: /src/opendal/core/services/mini_moka/src/config.rs:82,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 83
      start: 73
    functionDepth: 29
    functionLinenumber: 73
    functionLinenumberEnd: 83
    functionName: tests::from_uri_sets_root_and_preserves_ttl
    functionSourceFile: /src/opendal/core/services/mini_moka/src/config.rs
    functionUses: 0
    functionsReached:
    - OperatorUri::new
    - MiniMokaConfig::from_uri
    - Ok
    linkageType: ''
    returnType: Result
    signature: fn from_uri_sets_root_and_preserves_ttl() -> Result<()>
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - core
    - root
    argTypes:
    - Arc<MiniMokaCore>
    - String
    constantsTouched: []
    func_position:
      end: 33
      start: 31
    functionDepth: 0
    functionLinenumber: 31
    functionLinenumberEnd: 33
    functionName: MiniMokaDeleter::new
    functionSourceFile: /src/opendal/core/services/mini_moka/src/deleter.rs
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(core: Arc<MiniMokaCore>, root: String) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/mini_moka/src/deleter.rs:38,1
    - Dst: invalidate
      Src: /src/opendal/core/services/mini_moka/src/deleter.rs:39,1
    - Dst: Ok
      Src: /src/opendal/core/services/mini_moka/src/deleter.rs:40,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 2
    argNames:
    - path
    argTypes:
    - String
    - OpDelete
    constantsTouched: []
    func_position:
      end: 41
      start: 37
    functionDepth: 3
    functionLinenumber: 37
    functionLinenumberEnd: 41
    functionName: MiniMokaDeleter::delete_once
    functionSourceFile: /src/opendal/core/services/mini_moka/src/deleter.rs
    functionUses: 0
    functionsReached:
    - Ok
    - invalidate
    - build_abs_path
    linkageType: ''
    returnType: Result
    signature: 'async fn delete_once(&self, path: String, _: OpDelete) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: iter
      Src: /src/opendal/core/services/mini_moka/src/lister.rs:33,1
    - Dst: map
      Src: /src/opendal/core/services/mini_moka/src/lister.rs:33,1
    - Dst: crate::Entry::key
      Src: /src/opendal/core/services/mini_moka/src/lister.rs:36,1
    - Dst: FoyerKey::to_string
      Src: /src/opendal/core/services/mini_moka/src/lister.rs:36,1
    - Dst: crate::Entry::value
      Src: /src/opendal/core/services/mini_moka/src/lister.rs:36,1
    - Dst: clone
      Src: /src/opendal/core/services/mini_moka/src/lister.rs:36,1
    - Dst: collect
      Src: /src/opendal/core/services/mini_moka/src/lister.rs:33,1
    - Dst: into_iter
      Src: /src/opendal/core/services/mini_moka/src/lister.rs:41,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 21
    argCount: 3
    argNames:
    - core
    - root
    - _path
    argTypes:
    - Arc<MiniMokaCore>
    - String
    - String
    constantsTouched: []
    func_position:
      end: 43
      start: 32
    functionDepth: 36
    functionLinenumber: 32
    functionLinenumberEnd: 43
    functionName: MiniMokaLister::new
    functionSourceFile: /src/opendal/core/services/mini_moka/src/lister.rs
    functionUses: 1
    functionsReached:
    - collect
    - iter
    - crate::Entry::key
    - clone
    - FoyerKey::to_string
    - into_iter
    - map
    - crate::Entry::value
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(core: Arc<MiniMokaCore>, root: String, _path: String) ->
      Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: next
      Src: /src/opendal/core/services/mini_moka/src/lister.rs:48,1
    - Dst: build_rel_path
      Src: /src/opendal/core/services/mini_moka/src/lister.rs:50,1
    - Dst: Ok
      Src: /src/opendal/core/services/mini_moka/src/lister.rs:52,1
    - Dst: Some
      Src: /src/opendal/core/services/mini_moka/src/lister.rs:52,1
    - Dst: oio::Entry::new
      Src: /src/opendal/core/services/mini_moka/src/lister.rs:52,1
    - Dst: Ok
      Src: /src/opendal/core/services/mini_moka/src/lister.rs:54,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 56
      start: 47
    functionDepth: 4
    functionLinenumber: 47
    functionLinenumberEnd: 56
    functionName: MiniMokaLister::next
    functionSourceFile: /src/opendal/core/services/mini_moka/src/lister.rs
    functionUses: 0
    functionsReached:
    - next
    - oio::Entry::new
    - Ok
    - build_rel_path
    - Some
    linkageType: ''
    returnType: Result
    signature: async fn next(&mut self) -> Result<Option<oio::Entry>>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: to_string
      Src: /src/opendal/core/services/mini_moka/src/reader.rs:32,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - backend
    - path
    argTypes:
    - MiniMokaBackend
    - '&str'
    - OpRead
    constantsTouched: []
    func_position:
      end: 34
      start: 29
    functionDepth: 2
    functionLinenumber: 29
    functionLinenumberEnd: 34
    functionName: MiniMokaReader::new
    functionSourceFile: /src/opendal/core/services/mini_moka/src/reader.rs
    functionUses: 1
    functionsReached:
    - to_string
    linkageType: ''
    returnType: Self
    signature: 'pub(super) fn new(backend: MiniMokaBackend, path: &str, _: OpRead)
      -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: as_str
      Src: /src/opendal/core/services/mini_moka/src/reader.rs:40,1
    - Dst: build_abs_path
      Src: /src/opendal/core/services/mini_moka/src/reader.rs:41,1
    - Dst: get
      Src: /src/opendal/core/services/mini_moka/src/reader.rs:43,1
    - Dst: len
      Src: /src/opendal/core/services/mini_moka/src/reader.rs:45,1
    - Dst: slice
      Src: /src/opendal/core/services/mini_moka/src/reader.rs:46,1
    - Dst: (Vec::to_content_range
      Src: /src/opendal/core/services/mini_moka/src/reader.rs:48,1
    - Dst: len
      Src: /src/opendal/core/services/mini_moka/src/reader.rs:48,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/mini_moka/src/reader.rs:49,1
    - Dst: Self::with_content_length
      Src: /src/opendal/core/services/mini_moka/src/reader.rs:49,1
    - Dst: Ok
      Src: /src/opendal/core/services/mini_moka/src/reader.rs:51,1
    - Dst: RpRead::new
      Src: /src/opendal/core/services/mini_moka/src/reader.rs:52,1
    - Dst: Box::new
      Src: /src/opendal/core/services/mini_moka/src/reader.rs:53,1
    - Dst: Err
      Src: /src/opendal/core/services/mini_moka/src/reader.rs:56,1
    - Dst: Error::new
      Src: /src/opendal/core/services/mini_moka/src/reader.rs:56,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 37
    argCount: 1
    argNames:
    - range
    argTypes:
    - BytesRange
    constantsTouched: []
    func_position:
      end: 58
      start: 38
    functionDepth: 37
    functionLinenumber: 38
    functionLinenumberEnd: 58
    functionName: MiniMokaReader::open
    functionSourceFile: /src/opendal/core/services/mini_moka/src/reader.rs
    functionUses: 0
    functionsReached:
    - Metadata::new
    - get
    - slice
    - Ok
    - Box::new
    - Self::with_content_length
    - build_abs_path
    - RpRead::new
    - Err
    - as_str
    - Error::new
    - (Vec::to_content_range
    - len
    linkageType: ''
    returnType: Result
    signature: 'async fn open(&self, range: BytesRange) -> Result<(RpRead, Box<dyn
      oio::ReadStreamDyn>)>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::debug_struct
      Src: /src/opendal/core/services/mini_moka/src/core.rs:39,1
    - Dst: field
      Src: /src/opendal/core/services/mini_moka/src/core.rs:39,1
    - Dst: weighted_size
      Src: /src/opendal/core/services/mini_moka/src/core.rs:40,1
    - Dst: field
      Src: /src/opendal/core/services/mini_moka/src/core.rs:39,1
    - Dst: entry_count
      Src: /src/opendal/core/services/mini_moka/src/core.rs:41,1
    - Dst: finish
      Src: /src/opendal/core/services/mini_moka/src/core.rs:39,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 16
    argCount: 1
    argNames:
    - f
    argTypes:
    - '&mut std::fmt::Formatter<''_>'
    constantsTouched: []
    func_position:
      end: 43
      start: 38
    functionDepth: 5
    functionLinenumber: 38
    functionLinenumberEnd: 43
    functionName: MiniMokaCore::fmt
    functionSourceFile: /src/opendal/core/services/mini_moka/src/core.rs
    functionUses: 0
    functionsReached:
    - finish
    - field
    - weighted_size
    - entry_count
    - Result::debug_struct
    linkageType: ''
    returnType: std::fmt::Result
    signature: 'fn fmt(&self, f: &mut std::fmt::Formatter<''_>) -> std::fmt::Result'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: get
      Src: /src/opendal/core/services/mini_moka/src/core.rs:48,1
    - Dst: FoyerKey::to_string
      Src: /src/opendal/core/services/mini_moka/src/core.rs:48,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - key
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 49
      start: 47
    functionDepth: 2
    functionLinenumber: 47
    functionLinenumberEnd: 49
    functionName: MiniMokaCore::get
    functionSourceFile: /src/opendal/core/services/mini_moka/src/core.rs
    functionUses: 0
    functionsReached:
    - get
    - FoyerKey::to_string
    linkageType: ''
    returnType: Option
    signature: 'pub fn get(&self, key: &str) -> Option<MiniMokaValue>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: oio::QueueBuf::new
      Src: /src/opendal/core/services/mini_moka/src/writer.rs:38,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - core
    - path
    - op
    argTypes:
    - Arc<MiniMokaCore>
    - String
    - OpWrite
    constantsTouched: []
    func_position:
      end: 40
      start: 33
    functionDepth: 4
    functionLinenumber: 33
    functionLinenumberEnd: 40
    functionName: MiniMokaWriter::new
    functionSourceFile: /src/opendal/core/services/mini_moka/src/writer.rs
    functionUses: 1
    functionsReached:
    - oio::QueueBuf::new
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(core: Arc<MiniMokaCore>, path: String, op: OpWrite) ->
      Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: push
      Src: /src/opendal/core/services/mini_moka/src/writer.rs:45,1
    - Dst: Ok
      Src: /src/opendal/core/services/mini_moka/src/writer.rs:46,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - bs
    argTypes:
    - Buffer
    constantsTouched: []
    func_position:
      end: 47
      start: 44
    functionDepth: 5
    functionLinenumber: 44
    functionLinenumberEnd: 47
    functionName: MiniMokaWriter::write
    functionSourceFile: /src/opendal/core/services/mini_moka/src/writer.rs
    functionUses: 0
    functionsReached:
    - Ok
    - push
    linkageType: ''
    returnType: Result
    signature: 'async fn write(&mut self, bs: Buffer) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: clone
      Src: /src/opendal/core/services/mini_moka/src/writer.rs:50,1
    - Dst: collect
      Src: /src/opendal/core/services/mini_moka/src/writer.rs:50,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/mini_moka/src/writer.rs:52,1
    - Dst: EntryMode::from_path
      Src: /src/opendal/core/services/mini_moka/src/writer.rs:52,1
    - Dst: storage::Result::set_content_length
      Src: /src/opendal/core/services/mini_moka/src/writer.rs:53,1
    - Dst: io::Result::len
      Src: /src/opendal/core/services/mini_moka/src/writer.rs:53,1
    - Dst: storage::Result::set_last_modified
      Src: /src/opendal/core/services/mini_moka/src/writer.rs:54,1
    - Dst: Timestamp::now
      Src: /src/opendal/core/services/mini_moka/src/writer.rs:54,1
    - Dst: content_type
      Src: /src/opendal/core/services/mini_moka/src/writer.rs:57,1
    - Dst: storage::Result::set_content_type
      Src: /src/opendal/core/services/mini_moka/src/writer.rs:58,1
    - Dst: content_disposition
      Src: /src/opendal/core/services/mini_moka/src/writer.rs:60,1
    - Dst: storage::Result::set_content_disposition
      Src: /src/opendal/core/services/mini_moka/src/writer.rs:61,1
    - Dst: content_encoding
      Src: /src/opendal/core/services/mini_moka/src/writer.rs:63,1
    - Dst: storage::Result::set_content_encoding
      Src: /src/opendal/core/services/mini_moka/src/writer.rs:64,1
    - Dst: cache_control
      Src: /src/opendal/core/services/mini_moka/src/writer.rs:66,1
    - Dst: storage::Result::set_cache_control
      Src: /src/opendal/core/services/mini_moka/src/writer.rs:67,1
    - Dst: storage::Result::clone
      Src: /src/opendal/core/services/mini_moka/src/writer.rs:71,1
    - Dst: insert
      Src: /src/opendal/core/services/mini_moka/src/writer.rs:75,1
    - Dst: clone
      Src: /src/opendal/core/services/mini_moka/src/writer.rs:75,1
    - Dst: Ok
      Src: /src/opendal/core/services/mini_moka/src/writer.rs:77,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 63
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 78
      start: 49
    functionDepth: 36
    functionLinenumber: 49
    functionLinenumberEnd: 78
    functionName: MiniMokaWriter::close
    functionSourceFile: /src/opendal/core/services/mini_moka/src/writer.rs
    functionUses: 0
    functionsReached:
    - collect
    - storage::Result::set_content_encoding
    - storage::Result::set_last_modified
    - storage::Result::set_content_type
    - io::Result::len
    - clone
    - storage::Result::clone
    - Timestamp::now
    - Ok
    - content_type
    - Metadata::new
    - insert
    - content_encoding
    - storage::Result::set_content_length
    - cache_control
    - storage::Result::set_cache_control
    - EntryMode::from_path
    - content_disposition
    - storage::Result::set_content_disposition
    linkageType: ''
    returnType: Result
    signature: async fn close(&mut self) -> Result<Metadata>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: clear
      Src: /src/opendal/core/services/mini_moka/src/writer.rs:81,1
    - Dst: Ok
      Src: /src/opendal/core/services/mini_moka/src/writer.rs:82,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 83
      start: 80
    functionDepth: 2
    functionLinenumber: 80
    functionLinenumberEnd: 83
    functionName: MiniMokaWriter::abort
    functionSourceFile: /src/opendal/core/services/mini_moka/src/writer.rs
    functionUses: 0
    functionsReached:
    - clear
    - Ok
    linkageType: ''
    returnType: Result
    signature: async fn abort(&mut self) -> Result<()>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: register::<MiniMoka>
      Src: /src/opendal/core/services/mini_moka/src/lib.rs:39,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - registry
    argTypes:
    - '&opendal_core::OperatorRegistry'
    constantsTouched: []
    func_position:
      end: 40
      start: 38
    functionDepth: 0
    functionLinenumber: 38
    functionLinenumberEnd: 40
    functionName: register_mini_moka_service
    functionSourceFile: /src/opendal/core/services/mini_moka/src/lib.rs
    functionUses: 1
    functionsReached:
    - register::<MiniMoka>
    linkageType: ''
    returnType: void
    signature: 'pub fn register_mini_moka_service(registry: &opendal_core::OperatorRegistry)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self::default
      Src: /src/opendal/core/services/mini_moka/src/backend.rs:42,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 43
      start: 41
    functionDepth: 3
    functionLinenumber: 41
    functionLinenumberEnd: 43
    functionName: MiniMokaBuilder::new
    functionSourceFile: /src/opendal/core/services/mini_moka/src/backend.rs
    functionUses: 0
    functionsReached:
    - Self::default
    linkageType: ''
    returnType: Self
    signature: pub fn new() -> Self
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Some
      Src: /src/opendal/core/services/mini_moka/src/backend.rs:50,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - v
    argTypes:
    - u64
    constantsTouched: []
    func_position:
      end: 53
      start: 48
    functionDepth: 0
    functionLinenumber: 48
    functionLinenumberEnd: 53
    functionName: MiniMokaBuilder::max_capacity
    functionSourceFile: /src/opendal/core/services/mini_moka/src/backend.rs
    functionUses: 0
    functionsReached:
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn max_capacity(mut self, v: u64) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::is_zero
      Src: /src/opendal/core/services/mini_moka/src/backend.rs:59,1
    - Dst: Some
      Src: /src/opendal/core/services/mini_moka/src/backend.rs:60,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - v
    argTypes:
    - Duration
    constantsTouched: []
    func_position:
      end: 63
      start: 58
    functionDepth: 0
    functionLinenumber: 58
    functionLinenumberEnd: 63
    functionName: MiniMokaBuilder::time_to_live
    functionSourceFile: /src/opendal/core/services/mini_moka/src/backend.rs
    functionUses: 0
    functionsReached:
    - Result::is_zero
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn time_to_live(mut self, v: Duration) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::is_zero
      Src: /src/opendal/core/services/mini_moka/src/backend.rs:69,1
    - Dst: Some
      Src: /src/opendal/core/services/mini_moka/src/backend.rs:70,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - v
    argTypes:
    - Duration
    constantsTouched: []
    func_position:
      end: 73
      start: 68
    functionDepth: 0
    functionLinenumber: 68
    functionLinenumberEnd: 73
    functionName: MiniMokaBuilder::time_to_idle
    functionSourceFile: /src/opendal/core/services/mini_moka/src/backend.rs
    functionUses: 0
    functionsReached:
    - Result::is_zero
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn time_to_idle(mut self, v: Duration) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: is_empty
      Src: /src/opendal/core/services/mini_moka/src/backend.rs:77,1
    - Dst: Some
      Src: /src/opendal/core/services/mini_moka/src/backend.rs:80,1
    - Dst: to_string
      Src: /src/opendal/core/services/mini_moka/src/backend.rs:80,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - path
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 84
      start: 76
    functionDepth: 4
    functionLinenumber: 76
    functionLinenumberEnd: 84
    functionName: MiniMokaBuilder::root
    functionSourceFile: /src/opendal/core/services/mini_moka/src/backend.rs
    functionUses: 0
    functionsReached:
    - to_string
    - Some
    - is_empty
    linkageType: ''
    returnType: Self
    signature: 'pub fn root(mut self, path: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: mini_moka::sync::Cache::builder
      Src: /src/opendal/core/services/mini_moka/src/backend.rs:94,1
    - Dst: OtelMetricsLayerBuilder::weigher
      Src: /src/opendal/core/services/mini_moka/src/backend.rs:97,1
    - Dst: Result::len
      Src: /src/opendal/core/services/mini_moka/src/backend.rs:97,1
    - Dst: len
      Src: /src/opendal/core/services/mini_moka/src/backend.rs:97,1
    - Dst: OtelMetricsLayerBuilder::max_capacity
      Src: /src/opendal/core/services/mini_moka/src/backend.rs:100,1
    - Dst: as_deref
      Src: /src/opendal/core/services/mini_moka/src/backend.rs:102,1
    - Dst: signed_to_duration
      Src: /src/opendal/core/services/mini_moka/src/backend.rs:103,1
    - Dst: OtelMetricsLayerBuilder::time_to_live
      Src: /src/opendal/core/services/mini_moka/src/backend.rs:104,1
    - Dst: as_deref
      Src: /src/opendal/core/services/mini_moka/src/backend.rs:106,1
    - Dst: signed_to_duration
      Src: /src/opendal/core/services/mini_moka/src/backend.rs:107,1
    - Dst: OtelMetricsLayerBuilder::time_to_idle
      Src: /src/opendal/core/services/mini_moka/src/backend.rs:108,1
    - Dst: OtelMetricsLayerBuilder::build
      Src: /src/opendal/core/services/mini_moka/src/backend.rs:111,1
    - Dst: normalize_root
      Src: /src/opendal/core/services/mini_moka/src/backend.rs:113,1
    - Dst: as_deref
      Src: /src/opendal/core/services/mini_moka/src/backend.rs:113,1
    - Dst: unwrap_or
      Src: /src/opendal/core/services/mini_moka/src/backend.rs:113,1
    - Dst: Arc::new
      Src: /src/opendal/core/services/mini_moka/src/backend.rs:115,1
    - Dst: Ok
      Src: /src/opendal/core/services/mini_moka/src/backend.rs:118,1
    - Dst: MiniMokaBackend::new
      Src: /src/opendal/core/services/mini_moka/src/backend.rs:118,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 61
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 119
      start: 90
    functionDepth: 37
    functionLinenumber: 90
    functionLinenumberEnd: 119
    functionName: MiniMokaBuilder::build
    functionSourceFile: /src/opendal/core/services/mini_moka/src/backend.rs
    functionUses: 0
    functionsReached:
    - Ok
    - OtelMetricsLayerBuilder::time_to_idle
    - as_deref
    - Arc::new
    - mini_moka::sync::Cache::builder
    - normalize_root
    - OtelMetricsLayerBuilder::max_capacity
    - OtelMetricsLayerBuilder::time_to_live
    - Result::len
    - signed_to_duration
    - len
    - OtelMetricsLayerBuilder::weigher
    - unwrap_or
    - MiniMokaBackend::new
    - OtelMetricsLayerBuilder::build
    linkageType: ''
    returnType: Result
    signature: fn build(self) -> Result<impl Service>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Default::default
      Src: /src/opendal/core/services/mini_moka/src/backend.rs:139,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - core
    - root
    argTypes:
    - Arc<MiniMokaCore>
    - String
    constantsTouched: []
    func_position:
      end: 147
      start: 130
    functionDepth: 3
    functionLinenumber: 130
    functionLinenumberEnd: 147
    functionName: MiniMokaBackend::new
    functionSourceFile: /src/opendal/core/services/mini_moka/src/backend.rs
    functionUses: 1
    functionsReached:
    - Default::default
    linkageType: ''
    returnType: Self
    signature: 'fn new(core: Arc<MiniMokaCore>, root: String) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: ServiceInfo::new
      Src: /src/opendal/core/services/mini_moka/src/backend.rs:158,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 159
      start: 157
    functionDepth: 33
    functionLinenumber: 157
    functionLinenumberEnd: 159
    functionName: MiniMokaBackend::info
    functionSourceFile: /src/opendal/core/services/mini_moka/src/backend.rs
    functionUses: 0
    functionsReached:
    - ServiceInfo::new
    linkageType: ''
    returnType: ServiceInfo
    signature: fn info(&self) -> ServiceInfo
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 163
      start: 161
    functionDepth: 0
    functionLinenumber: 161
    functionLinenumberEnd: 163
    functionName: MiniMokaBackend::capability
    functionSourceFile: /src/opendal/core/services/mini_moka/src/backend.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Capability
    signature: fn capability(&self) -> Capability
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/core/services/mini_moka/src/backend.rs:171,1
    - Dst: Error::new
      Src: /src/opendal/core/services/mini_moka/src/backend.rs:171,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - _ctx
    - _path
    - _args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpCreateDir
    constantsTouched: []
    func_position:
      end: 175
      start: 165
    functionDepth: 36
    functionLinenumber: 165
    functionLinenumberEnd: 175
    functionName: MiniMokaBackend::create_dir
    functionSourceFile: /src/opendal/core/services/mini_moka/src/backend.rs
    functionUses: 0
    functionsReached:
    - Error::new
    - Err
    linkageType: ''
    returnType: Result
    signature: 'async fn create_dir(&self,_ctx: &OperationContext,_path: &str,_args:
      OpCreateDir,) -> Result<RpCreateDir>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/mini_moka/src/backend.rs:178,1
    - Dst: get
      Src: /src/opendal/core/services/mini_moka/src/backend.rs:181,1
    - Dst: clone
      Src: /src/opendal/core/services/mini_moka/src/backend.rs:183,1
    - Dst: ends_with
      Src: /src/opendal/core/services/mini_moka/src/backend.rs:184,1
    - Dst: anyhow::Result::set_mode
      Src: /src/opendal/core/services/mini_moka/src/backend.rs:185,1
    - Dst: anyhow::Result::set_mode
      Src: /src/opendal/core/services/mini_moka/src/backend.rs:187,1
    - Dst: Ok
      Src: /src/opendal/core/services/mini_moka/src/backend.rs:189,1
    - Dst: RpStat::new
      Src: /src/opendal/core/services/mini_moka/src/backend.rs:189,1
    - Dst: ends_with
      Src: /src/opendal/core/services/mini_moka/src/backend.rs:192,1
    - Dst: iter
      Src: /src/opendal/core/services/mini_moka/src/backend.rs:193,1
    - Dst: any
      Src: /src/opendal/core/services/mini_moka/src/backend.rs:193,1
    - Dst: crate::Entry::key
      Src: /src/opendal/core/services/mini_moka/src/backend.rs:197,1
    - Dst: FoyerKey::starts_with
      Src: /src/opendal/core/services/mini_moka/src/backend.rs:197,1
    - Dst: crate::Entry::key
      Src: /src/opendal/core/services/mini_moka/src/backend.rs:197,1
    - Dst: Metadata::default
      Src: /src/opendal/core/services/mini_moka/src/backend.rs:200,1
    - Dst: anyhow::Result::set_mode
      Src: /src/opendal/core/services/mini_moka/src/backend.rs:201,1
    - Dst: Ok
      Src: /src/opendal/core/services/mini_moka/src/backend.rs:202,1
    - Dst: RpStat::new
      Src: /src/opendal/core/services/mini_moka/src/backend.rs:202,1
    - Dst: Err
      Src: /src/opendal/core/services/mini_moka/src/backend.rs:206,1
    - Dst: Error::new
      Src: /src/opendal/core/services/mini_moka/src/backend.rs:206,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 57
    argCount: 3
    argNames:
    - _ctx
    - path
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpStat
    constantsTouched: []
    func_position:
      end: 209
      start: 177
    functionDepth: 36
    functionLinenumber: 177
    functionLinenumberEnd: 209
    functionName: MiniMokaBackend::stat
    functionSourceFile: /src/opendal/core/services/mini_moka/src/backend.rs
    functionUses: 0
    functionsReached:
    - iter
    - get
    - Metadata::default
    - Ok
    - crate::Entry::key
    - anyhow::Result::set_mode
    - FoyerKey::starts_with
    - ends_with
    - RpStat::new
    - clone
    - build_abs_path
    - Err
    - Error::new
    - any
    linkageType: ''
    returnType: Result
    signature: 'async fn stat(&self, _ctx: &OperationContext, path: &str, _: OpStat)
      -> Result<RpStat>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/core/services/mini_moka/src/backend.rs:212,1
    - Dst: oio::StreamReader::new
      Src: /src/opendal/core/services/mini_moka/src/backend.rs:212,1
    - Dst: MiniMokaReader::new
      Src: /src/opendal/core/services/mini_moka/src/backend.rs:212,1
    - Dst: MiniMokaBackend::clone
      Src: /src/opendal/core/services/mini_moka/src/backend.rs:213,1
    - Dst: Ok
      Src: /src/opendal/core/services/mini_moka/src/backend.rs:219,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - _ctx
    - path
    - op
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpRead
    constantsTouched: []
    func_position:
      end: 220
      start: 210
    functionDepth: 3
    functionLinenumber: 210
    functionLinenumberEnd: 220
    functionName: MiniMokaBackend::read
    functionSourceFile: /src/opendal/core/services/mini_moka/src/backend.rs
    functionUses: 0
    functionsReached:
    - oio::StreamReader::new
    - MiniMokaReader::new
    - MiniMokaBackend::clone
    - Ok
    linkageType: ''
    returnType: Result
    signature: 'fn read(&self, _ctx: &OperationContext, path: &str, op: OpRead) ->
      Result<Self::Reader>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/mini_moka/src/backend.rs:224,1
    - Dst: MiniMokaWriter::new
      Src: /src/opendal/core/services/mini_moka/src/backend.rs:225,1
    - Dst: clone
      Src: /src/opendal/core/services/mini_moka/src/backend.rs:225,1
    - Dst: Ok
      Src: /src/opendal/core/services/mini_moka/src/backend.rs:226,1
    - Dst: Ok
      Src: /src/opendal/core/services/mini_moka/src/backend.rs:229,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 3
    argNames:
    - _ctx
    - path
    - op
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpWrite
    constantsTouched: []
    func_position:
      end: 230
      start: 222
    functionDepth: 5
    functionLinenumber: 222
    functionLinenumberEnd: 230
    functionName: MiniMokaBackend::write
    functionSourceFile: /src/opendal/core/services/mini_moka/src/backend.rs
    functionUses: 0
    functionsReached:
    - MiniMokaWriter::new
    - Ok
    - clone
    - build_abs_path
    linkageType: ''
    returnType: Result
    signature: 'fn write(&self, _ctx: &OperationContext, path: &str, op: OpWrite)
      -> Result<Self::Writer>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: oio::OneShotDeleter::new
      Src: /src/opendal/core/services/mini_moka/src/backend.rs:234,1
    - Dst: MiniMokaDeleter::new
      Src: /src/opendal/core/services/mini_moka/src/backend.rs:234,1
    - Dst: clone
      Src: /src/opendal/core/services/mini_moka/src/backend.rs:235,1
    - Dst: clone
      Src: /src/opendal/core/services/mini_moka/src/backend.rs:236,1
    - Dst: Ok
      Src: /src/opendal/core/services/mini_moka/src/backend.rs:238,1
    - Dst: Ok
      Src: /src/opendal/core/services/mini_moka/src/backend.rs:241,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 1
    argNames:
    - _ctx
    argTypes:
    - '&OperationContext'
    constantsTouched: []
    func_position:
      end: 242
      start: 232
    functionDepth: 2
    functionLinenumber: 232
    functionLinenumberEnd: 242
    functionName: MiniMokaBackend::delete
    functionSourceFile: /src/opendal/core/services/mini_moka/src/backend.rs
    functionUses: 0
    functionsReached:
    - oio::OneShotDeleter::new
    - MiniMokaDeleter::new
    - clone
    - Ok
    linkageType: ''
    returnType: Result
    signature: 'fn delete(&self, _ctx: &OperationContext) -> Result<Self::Deleter>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/mini_moka/src/backend.rs:246,1
    - Dst: MiniMokaLister::new
      Src: /src/opendal/core/services/mini_moka/src/backend.rs:248,1
    - Dst: clone
      Src: /src/opendal/core/services/mini_moka/src/backend.rs:248,1
    - Dst: clone
      Src: /src/opendal/core/services/mini_moka/src/backend.rs:248,1
    - Dst: oio::HierarchyLister::new
      Src: /src/opendal/core/services/mini_moka/src/backend.rs:249,1
    - Dst: recursive
      Src: /src/opendal/core/services/mini_moka/src/backend.rs:249,1
    - Dst: Ok
      Src: /src/opendal/core/services/mini_moka/src/backend.rs:251,1
    - Dst: Ok
      Src: /src/opendal/core/services/mini_moka/src/backend.rs:254,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 16
    argCount: 3
    argNames:
    - _ctx
    - path
    - op
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpList
    constantsTouched: []
    func_position:
      end: 255
      start: 244
    functionDepth: 37
    functionLinenumber: 244
    functionLinenumberEnd: 255
    functionName: MiniMokaBackend::list
    functionSourceFile: /src/opendal/core/services/mini_moka/src/backend.rs
    functionUses: 0
    functionsReached:
    - oio::HierarchyLister::new
    - Ok
    - recursive
    - clone
    - build_abs_path
    - MiniMokaLister::new
    linkageType: ''
    returnType: Result
    signature: 'fn list(&self, _ctx: &OperationContext, path: &str, op: OpList) ->
      Result<Self::Lister>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/core/services/mini_moka/src/backend.rs:265,1
    - Dst: Error::new
      Src: /src/opendal/core/services/mini_moka/src/backend.rs:265,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 5
    argNames:
    - _ctx
    - _from
    - _to
    - _args
    - _opts
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    - OpCopy
    - OpCopier
    constantsTouched: []
    func_position:
      end: 269
      start: 257
    functionDepth: 36
    functionLinenumber: 257
    functionLinenumberEnd: 269
    functionName: MiniMokaBackend::copy
    functionSourceFile: /src/opendal/core/services/mini_moka/src/backend.rs
    functionUses: 0
    functionsReached:
    - Error::new
    - Err
    linkageType: ''
    returnType: Result
    signature: 'fn copy(&self,_ctx: &OperationContext,_from: &str,_to: &str,_args:
      OpCopy,_opts: OpCopier,) -> Result<Self::Copier>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/core/services/mini_moka/src/backend.rs:278,1
    - Dst: Error::new
      Src: /src/opendal/core/services/mini_moka/src/backend.rs:278,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - _ctx
    - _from
    - _to
    - _args
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    - OpRename
    constantsTouched: []
    func_position:
      end: 282
      start: 271
    functionDepth: 36
    functionLinenumber: 271
    functionLinenumberEnd: 282
    functionName: MiniMokaBackend::rename
    functionSourceFile: /src/opendal/core/services/mini_moka/src/backend.rs
    functionUses: 0
    functionsReached:
    - Error::new
    - Err
    linkageType: ''
    returnType: Result
    signature: 'async fn rename(&self,_ctx: &OperationContext,_from: &str,_to: &str,_args:
      OpRename,) -> Result<RpRename>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/core/services/mini_moka/src/backend.rs:290,1
    - Dst: Error::new
      Src: /src/opendal/core/services/mini_moka/src/backend.rs:290,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - _ctx
    - _path
    - _args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpPresign
    constantsTouched: []
    func_position:
      end: 294
      start: 284
    functionDepth: 36
    functionLinenumber: 284
    functionLinenumberEnd: 294
    functionName: MiniMokaBackend::presign
    functionSourceFile: /src/opendal/core/services/mini_moka/src/backend.rs
    functionUses: 0
    functionsReached:
    - Error::new
    - Err
    linkageType: ''
    returnType: Result
    signature: 'async fn presign(&self,_ctx: &OperationContext,_path: &str,_args:
      OpPresign,) -> Result<RpPresign>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::debug_struct
      Src: /src/opendal/core/services/etcd/src/config.rs:64,1
    - Dst: field
      Src: /src/opendal/core/services/etcd/src/config.rs:64,1
    - Dst: field
      Src: /src/opendal/core/services/etcd/src/config.rs:64,1
    - Dst: field
      Src: /src/opendal/core/services/etcd/src/config.rs:64,1
    - Dst: field
      Src: /src/opendal/core/services/etcd/src/config.rs:64,1
    - Dst: field
      Src: /src/opendal/core/services/etcd/src/config.rs:64,1
    - Dst: field
      Src: /src/opendal/core/services/etcd/src/config.rs:64,1
    - Dst: finish_non_exhaustive
      Src: /src/opendal/core/services/etcd/src/config.rs:64,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 28
    argCount: 1
    argNames:
    - f
    argTypes:
    - '&mut std::fmt::Formatter<''_>'
    constantsTouched: []
    func_position:
      end: 72
      start: 63
    functionDepth: 5
    functionLinenumber: 63
    functionLinenumberEnd: 72
    functionName: EtcdConfig::fmt
    functionSourceFile: /src/opendal/core/services/etcd/src/config.rs
    functionUses: 0
    functionsReached:
    - field
    - Result::debug_struct
    - finish_non_exhaustive
    linkageType: ''
    returnType: std::fmt::Result
    signature: 'fn fmt(&self, f: &mut std::fmt::Formatter<''_>) -> std::fmt::Result'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::options
      Src: /src/opendal/core/services/etcd/src/config.rs:79,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/etcd/src/config.rs:79,1
    - Dst: Result::authority
      Src: /src/opendal/core/services/etcd/src/config.rs:81,1
    - Dst: Result::entry
      Src: /src/opendal/core/services/etcd/src/config.rs:82,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/etcd/src/config.rs:82,1
    - Dst: crate::Entry::or_insert_with
      Src: /src/opendal/core/services/etcd/src/config.rs:82,1
    - Dst: Result::root
      Src: /src/opendal/core/services/etcd/src/config.rs:86,1
    - Dst: Result::is_empty
      Src: /src/opendal/core/services/etcd/src/config.rs:87,1
    - Dst: Result::insert
      Src: /src/opendal/core/services/etcd/src/config.rs:89,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/etcd/src/config.rs:89,1
    - Dst: Result::to_string
      Src: /src/opendal/core/services/etcd/src/config.rs:89,1
    - Dst: Self::from_iter
      Src: /src/opendal/core/services/etcd/src/config.rs:92,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 31
    argCount: 1
    argNames:
    - uri
    argTypes:
    - '&opendal_core::OperatorUri'
    constantsTouched: []
    func_position:
      end: 93
      start: 78
    functionDepth: 35
    functionLinenumber: 78
    functionLinenumberEnd: 93
    functionName: EtcdConfig::from_uri
    functionSourceFile: /src/opendal/core/services/etcd/src/config.rs
    functionUses: 1
    functionsReached:
    - Result::clone
    - Self::from_iter
    - Result::to_string
    - Result::entry
    - crate::Entry::or_insert_with
    - Result::insert
    - Result::is_empty
    - '&str::to_string'
    - Result::root
    - Result::authority
    - Result::options
    linkageType: ''
    returnType: opendal_core::Result
    signature: 'fn from_uri(uri: &opendal_core::OperatorUri) -> opendal_core::Result<Self>'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 97
      start: 95
    functionDepth: 0
    functionLinenumber: 95
    functionLinenumberEnd: 97
    functionName: EtcdConfig::into_builder
    functionSourceFile: /src/opendal/core/services/etcd/src/config.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Self::Builder
    signature: fn into_builder(self) -> Self::Builder
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: OperatorUri::new
      Src: /src/opendal/core/services/etcd/src/config.rs:108,1
    - Dst: Vec::<(String, String)>::new
      Src: /src/opendal/core/services/etcd/src/config.rs:110,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/services/etcd/src/config.rs:108,1
    - Dst: EtcdConfig::from_uri
      Src: /src/opendal/core/services/etcd/src/config.rs:114,1
    - Dst: opendal_core::Result::unwrap
      Src: /src/opendal/core/services/etcd/src/config.rs:114,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 117
      start: 107
    functionDepth: 29
    functionLinenumber: 107
    functionLinenumberEnd: 117
    functionName: tests::from_uri_sets_endpoints_and_root
    functionSourceFile: /src/opendal/core/services/etcd/src/config.rs
    functionUses: 0
    functionsReached:
    - Vec::<(String, String)>::new
    - OperatorUri::new
    - Result::unwrap
    - EtcdConfig::from_uri
    - opendal_core::Result::unwrap
    linkageType: ''
    returnType: void
    signature: fn from_uri_sets_endpoints_and_root()
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - core
    - root
    argTypes:
    - Arc<EtcdCore>
    - String
    constantsTouched: []
    func_position:
      end: 33
      start: 31
    functionDepth: 0
    functionLinenumber: 31
    functionLinenumberEnd: 33
    functionName: EtcdDeleter::new
    functionSourceFile: /src/opendal/core/services/etcd/src/deleter.rs
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(core: Arc<EtcdCore>, root: String) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/etcd/src/deleter.rs:38,1
    - Dst: delete
      Src: /src/opendal/core/services/etcd/src/deleter.rs:39,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 2
    argNames:
    - path
    - _args
    argTypes:
    - String
    - OpDelete
    constantsTouched: []
    func_position:
      end: 40
      start: 37
    functionDepth: 32
    functionLinenumber: 37
    functionLinenumberEnd: 40
    functionName: EtcdDeleter::delete_once
    functionSourceFile: /src/opendal/core/services/etcd/src/deleter.rs
    functionUses: 0
    functionsReached:
    - build_abs_path
    - delete
    linkageType: ''
    returnType: Result
    signature: 'async fn delete_once(&self, path: String, _args: OpDelete) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: opendal_core::raw::build_abs_path
      Src: /src/opendal/core/services/etcd/src/lister.rs:34,1
    - Dst: CompfsCore::conn
      Src: /src/opendal/core/services/etcd/src/lister.rs:37,1
    - Dst: Some
      Src: /src/opendal/core/services/etcd/src/lister.rs:38,1
    - Dst: etcd_client::GetOptions::new
      Src: /src/opendal/core/services/etcd/src/lister.rs:39,1
    - Dst: Self::with_prefix
      Src: /src/opendal/core/services/etcd/src/lister.rs:39,1
    - Dst: with_keys_only
      Src: /src/opendal/core/services/etcd/src/lister.rs:39,1
    - Dst: Result::get
      Src: /src/opendal/core/services/etcd/src/lister.rs:43,1
    - Dst: String::as_str
      Src: /src/opendal/core/services/etcd/src/lister.rs:44,1
    - Dst: map_err
      Src: /src/opendal/core/services/etcd/src/lister.rs:43,1
    - Dst: Vec::new
      Src: /src/opendal/core/services/etcd/src/lister.rs:49,1
    - Dst: kvs
      Src: /src/opendal/core/services/etcd/src/lister.rs:50,1
    - Dst: key_str
      Src: /src/opendal/core/services/etcd/src/lister.rs:51,1
    - Dst: map
      Src: /src/opendal/core/services/etcd/src/lister.rs:51,1
    - Dst: map_err
      Src: /src/opendal/core/services/etcd/src/lister.rs:51,1
    - Dst: Error::new
      Src: /src/opendal/core/services/etcd/src/lister.rs:52,1
    - Dst: Self::set_source
      Src: /src/opendal/core/services/etcd/src/lister.rs:52,1
    - Dst: push
      Src: /src/opendal/core/services/etcd/src/lister.rs:55,1
    - Dst: Ok
      Src: /src/opendal/core/services/etcd/src/lister.rs:58,1
    - Dst: into_iter
      Src: /src/opendal/core/services/etcd/src/lister.rs:61,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 44
    argCount: 3
    argNames:
    - core
    - root
    - path
    argTypes:
    - Arc<EtcdCore>
    - String
    - String
    constantsTouched: []
    func_position:
      end: 63
      start: 33
    functionDepth: 36
    functionLinenumber: 33
    functionLinenumberEnd: 63
    functionName: EtcdLister::new
    functionSourceFile: /src/opendal/core/services/etcd/src/lister.rs
    functionUses: 1
    functionsReached:
    - map_err
    - Self::set_source
    - opendal_core::raw::build_abs_path
    - CompfsCore::conn
    - push
    - etcd_client::GetOptions::new
    - kvs
    - Ok
    - Some
    - String::as_str
    - map
    - Vec::new
    - Error::new
    - into_iter
    - Self::with_prefix
    - with_keys_only
    - Result::get
    - key_str
    linkageType: ''
    returnType: Result
    signature: 'pub async fn new(core: Arc<EtcdCore>, root: String, path: String)
      -> Result<Self>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: by_ref
      Src: /src/opendal/core/services/etcd/src/lister.rs:68,1
    - Dst: FoyerKey::starts_with
      Src: /src/opendal/core/services/etcd/src/lister.rs:69,1
    - Dst: opendal_core::raw::build_rel_path
      Src: /src/opendal/core/services/etcd/src/lister.rs:70,1
    - Dst: Entry::new
      Src: /src/opendal/core/services/etcd/src/lister.rs:72,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/etcd/src/lister.rs:72,1
    - Dst: EntryMode::from_path
      Src: /src/opendal/core/services/etcd/src/lister.rs:72,1
    - Dst: Ok
      Src: /src/opendal/core/services/etcd/src/lister.rs:73,1
    - Dst: Some
      Src: /src/opendal/core/services/etcd/src/lister.rs:73,1
    - Dst: Ok
      Src: /src/opendal/core/services/etcd/src/lister.rs:77,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 25
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 78
      start: 67
    functionDepth: 1
    functionLinenumber: 67
    functionLinenumberEnd: 78
    functionName: EtcdLister::next
    functionSourceFile: /src/opendal/core/services/etcd/src/lister.rs
    functionUses: 0
    functionsReached:
    - Entry::new
    - by_ref
    - Metadata::new
    - Ok
    - FoyerKey::starts_with
    - EntryMode::from_path
    - Some
    - opendal_core::raw::build_rel_path
    linkageType: ''
    returnType: Result
    signature: async fn next(&mut self) -> Result<Option<Entry>>
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 3
    argNames:
    - core
    - root
    - path
    argTypes:
    - Arc<EtcdCore>
    - String
    - String
    constantsTouched: []
    func_position:
      end: 96
      start: 89
    functionDepth: 0
    functionLinenumber: 89
    functionLinenumberEnd: 96
    functionName: EtcdLazyLister::new
    functionSourceFile: /src/opendal/core/services/etcd/src/lister.rs
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(core: Arc<EtcdCore>, root: String, path: String) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: is_none
      Src: /src/opendal/core/services/etcd/src/lister.rs:101,1
    - Dst: Some
      Src: /src/opendal/core/services/etcd/src/lister.rs:102,1
    - Dst: EtcdLister::new
      Src: /src/opendal/core/services/etcd/src/lister.rs:103,1
    - Dst: clone
      Src: /src/opendal/core/services/etcd/src/lister.rs:103,1
    - Dst: clone
      Src: /src/opendal/core/services/etcd/src/lister.rs:103,1
    - Dst: clone
      Src: /src/opendal/core/services/etcd/src/lister.rs:103,1
    - Dst: as_mut
      Src: /src/opendal/core/services/etcd/src/lister.rs:107,1
    - Dst: expect
      Src: /src/opendal/core/services/etcd/src/lister.rs:107,1
    - Dst: next
      Src: /src/opendal/core/services/etcd/src/lister.rs:107,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 29
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 112
      start: 100
    functionDepth: 37
    functionLinenumber: 100
    functionLinenumberEnd: 112
    functionName: EtcdLazyLister::next
    functionSourceFile: /src/opendal/core/services/etcd/src/lister.rs
    functionUses: 0
    functionsReached:
    - is_none
    - as_mut
    - next
    - expect
    - EtcdLister::new
    - clone
    - Some
    linkageType: ''
    returnType: Result
    signature: async fn next(&mut self) -> Result<Option<Entry>>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: to_string
      Src: /src/opendal/core/services/etcd/src/reader.rs:32,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - backend
    - path
    argTypes:
    - EtcdBackend
    - '&str'
    - OpRead
    constantsTouched: []
    func_position:
      end: 34
      start: 29
    functionDepth: 2
    functionLinenumber: 29
    functionLinenumberEnd: 34
    functionName: EtcdReader::new
    functionSourceFile: /src/opendal/core/services/etcd/src/reader.rs
    functionUses: 1
    functionsReached:
    - to_string
    linkageType: ''
    returnType: Self
    signature: 'pub(super) fn new(backend: EtcdBackend, path: &str, _: OpRead) ->
      Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: as_str
      Src: /src/opendal/core/services/etcd/src/reader.rs:40,1
    - Dst: build_abs_path
      Src: /src/opendal/core/services/etcd/src/reader.rs:41,1
    - Dst: root
      Src: /src/opendal/core/services/etcd/src/reader.rs:41,1
    - Dst: get
      Src: /src/opendal/core/services/etcd/src/reader.rs:43,1
    - Dst: len
      Src: /src/opendal/core/services/etcd/src/reader.rs:45,1
    - Dst: slice
      Src: /src/opendal/core/services/etcd/src/reader.rs:46,1
    - Dst: (Vec::to_content_range
      Src: /src/opendal/core/services/etcd/src/reader.rs:46,1
    - Dst: len
      Src: /src/opendal/core/services/etcd/src/reader.rs:46,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/etcd/src/reader.rs:47,1
    - Dst: Self::with_content_length
      Src: /src/opendal/core/services/etcd/src/reader.rs:47,1
    - Dst: Ok
      Src: /src/opendal/core/services/etcd/src/reader.rs:49,1
    - Dst: RpRead::new
      Src: /src/opendal/core/services/etcd/src/reader.rs:50,1
    - Dst: Box::new
      Src: /src/opendal/core/services/etcd/src/reader.rs:51,1
    - Dst: Err
      Src: /src/opendal/core/services/etcd/src/reader.rs:54,1
    - Dst: Error::new
      Src: /src/opendal/core/services/etcd/src/reader.rs:54,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 38
    argCount: 1
    argNames:
    - range
    argTypes:
    - BytesRange
    constantsTouched: []
    func_position:
      end: 56
      start: 38
    functionDepth: 32
    functionLinenumber: 38
    functionLinenumberEnd: 56
    functionName: EtcdReader::open
    functionSourceFile: /src/opendal/core/services/etcd/src/reader.rs
    functionUses: 0
    functionsReached:
    - Metadata::new
    - get
    - slice
    - Ok
    - Box::new
    - Self::with_content_length
    - build_abs_path
    - RpRead::new
    - Err
    - as_str
    - root
    - (Vec::to_content_range
    - Error::new
    - len
    linkageType: ''
    returnType: Result
    signature: 'async fn open(&self, range: BytesRange) -> Result<(RpRead, Box<dyn
      oio::ReadStreamDyn>)>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::debug_struct
      Src: /src/opendal/core/services/etcd/src/core.rs:70,1
    - Dst: field
      Src: /src/opendal/core/services/etcd/src/core.rs:70,1
    - Dst: join
      Src: /src/opendal/core/services/etcd/src/core.rs:71,1
    - Dst: field
      Src: /src/opendal/core/services/etcd/src/core.rs:70,1
    - Dst: clone
      Src: /src/opendal/core/services/etcd/src/core.rs:72,1
    - Dst: finish_non_exhaustive
      Src: /src/opendal/core/services/etcd/src/core.rs:70,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 16
    argCount: 1
    argNames:
    - f
    argTypes:
    - '&mut std::fmt::Formatter<''_>'
    constantsTouched: []
    func_position:
      end: 74
      start: 69
    functionDepth: 33
    functionLinenumber: 69
    functionLinenumberEnd: 74
    functionName: EtcdCore::fmt
    functionSourceFile: /src/opendal/core/services/etcd/src/core.rs
    functionUses: 0
    functionsReached:
    - field
    - finish_non_exhaustive
    - join
    - clone
    - Result::debug_struct
    linkageType: ''
    returnType: std::fmt::Result
    signature: 'fn fmt(&self, f: &mut std::fmt::Formatter<''_>) -> std::fmt::Result'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: bounded::Pool::new
      Src: /src/opendal/core/services/etcd/src/core.rs:79,1
    - Dst: bounded::PoolConfig::new
      Src: /src/opendal/core/services/etcd/src/core.rs:80,1
    - Dst: Self::clone
      Src: /src/opendal/core/services/etcd/src/core.rs:82,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/etcd/src/core.rs:83,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 2
    argNames:
    - endpoints
    - options
    argTypes:
    - Vec<String>
    - ConnectOptions
    constantsTouched: []
    func_position:
      end: 92
      start: 78
    functionDepth: 2
    functionLinenumber: 78
    functionLinenumberEnd: 92
    functionName: EtcdCore::new
    functionSourceFile: /src/opendal/core/services/etcd/src/core.rs
    functionUses: 1
    functionsReached:
    - Self::clone
    - Result::clone
    - bounded::PoolConfig::new
    - bounded::Pool::new
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(endpoints: Vec<String>, options: ConnectOptions) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: get
      Src: /src/opendal/core/services/etcd/src/core.rs:95,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 106
      start: 94
    functionDepth: 2
    functionLinenumber: 94
    functionLinenumberEnd: 106
    functionName: EtcdCore::conn
    functionSourceFile: /src/opendal/core/services/etcd/src/core.rs
    functionUses: 4
    functionsReached:
    - get
    linkageType: ''
    returnType: Result
    signature: pub async fn conn(&self) -> Result<bounded::Object<Manager>>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: EtcdCore::conn
      Src: /src/opendal/core/services/etcd/src/core.rs:109,1
    - Dst: Some
      Src: /src/opendal/core/services/etcd/src/core.rs:110,1
    - Dst: etcd_client::GetOptions::new
      Src: /src/opendal/core/services/etcd/src/core.rs:111,1
    - Dst: Self::with_prefix
      Src: /src/opendal/core/services/etcd/src/core.rs:111,1
    - Dst: with_keys_only
      Src: /src/opendal/core/services/etcd/src/core.rs:111,1
    - Dst: with_limit
      Src: /src/opendal/core/services/etcd/src/core.rs:111,1
    - Dst: Result::get
      Src: /src/opendal/core/services/etcd/src/core.rs:116,1
    - Dst: map_err
      Src: /src/opendal/core/services/etcd/src/core.rs:116,1
    - Dst: Ok
      Src: /src/opendal/core/services/etcd/src/core.rs:120,1
    - Dst: kvs
      Src: /src/opendal/core/services/etcd/src/core.rs:120,1
    - Dst: is_empty
      Src: /src/opendal/core/services/etcd/src/core.rs:120,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 24
    argCount: 1
    argNames:
    - prefix
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 121
      start: 108
    functionDepth: 4
    functionLinenumber: 108
    functionLinenumberEnd: 121
    functionName: EtcdCore::has_prefix
    functionSourceFile: /src/opendal/core/services/etcd/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - with_limit
    - Ok
    - etcd_client::GetOptions::new
    - kvs
    - Some
    - is_empty
    - Self::with_prefix
    - with_keys_only
    - EtcdCore::conn
    - Result::get
    linkageType: ''
    returnType: Result
    signature: 'pub async fn has_prefix(&self, prefix: &str) -> Result<bool>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: EtcdCore::conn
      Src: /src/opendal/core/services/etcd/src/core.rs:126,1
    - Dst: Result::get
      Src: /src/opendal/core/services/etcd/src/core.rs:127,1
    - Dst: map_err
      Src: /src/opendal/core/services/etcd/src/core.rs:127,1
    - Dst: kvs
      Src: /src/opendal/core/services/etcd/src/core.rs:128,1
    - Dst: first
      Src: /src/opendal/core/services/etcd/src/core.rs:128,1
    - Dst: Ok
      Src: /src/opendal/core/services/etcd/src/core.rs:129,1
    - Dst: Some
      Src: /src/opendal/core/services/etcd/src/core.rs:129,1
    - Dst: Buffer::from
      Src: /src/opendal/core/services/etcd/src/core.rs:129,1
    - Dst: value
      Src: /src/opendal/core/services/etcd/src/core.rs:129,1
    - Dst: to_vec
      Src: /src/opendal/core/services/etcd/src/core.rs:129,1
    - Dst: Ok
      Src: /src/opendal/core/services/etcd/src/core.rs:131,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 24
    argCount: 1
    argNames:
    - key
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 133
      start: 125
    functionDepth: 40
    functionLinenumber: 125
    functionLinenumberEnd: 133
    functionName: EtcdCore::get
    functionSourceFile: /src/opendal/core/services/etcd/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - Ok
    - kvs
    - Some
    - Buffer::from
    - to_vec
    - value
    - EtcdCore::conn
    - Result::get
    - first
    linkageType: ''
    returnType: Result
    signature: 'pub async fn get(&self, key: &str) -> Result<Option<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: EtcdCore::conn
      Src: /src/opendal/core/services/etcd/src/core.rs:136,1
    - Dst: Result::put
      Src: /src/opendal/core/services/etcd/src/core.rs:137,1
    - Dst: Vec::to_vec
      Src: /src/opendal/core/services/etcd/src/core.rs:138,1
    - Dst: map_err
      Src: /src/opendal/core/services/etcd/src/core.rs:137,1
    - Dst: Ok
      Src: /src/opendal/core/services/etcd/src/core.rs:141,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 2
    argNames:
    - key
    - value
    argTypes:
    - '&str'
    - Buffer
    constantsTouched: []
    func_position:
      end: 142
      start: 135
    functionDepth: 4
    functionLinenumber: 135
    functionLinenumberEnd: 142
    functionName: EtcdCore::set
    functionSourceFile: /src/opendal/core/services/etcd/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - Ok
    - Result::put
    - Vec::to_vec
    - EtcdCore::conn
    linkageType: ''
    returnType: Result
    signature: 'pub async fn set(&self, key: &str, value: Buffer) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: EtcdCore::conn
      Src: /src/opendal/core/services/etcd/src/core.rs:145,1
    - Dst: Result::delete
      Src: /src/opendal/core/services/etcd/src/core.rs:146,1
    - Dst: map_err
      Src: /src/opendal/core/services/etcd/src/core.rs:146,1
    - Dst: Ok
      Src: /src/opendal/core/services/etcd/src/core.rs:147,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 1
    argNames:
    - key
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 148
      start: 144
    functionDepth: 32
    functionLinenumber: 144
    functionLinenumberEnd: 148
    functionName: EtcdCore::delete
    functionSourceFile: /src/opendal/core/services/etcd/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - EtcdCore::conn
    - Result::delete
    - Ok
    linkageType: ''
    returnType: Result
    signature: 'pub async fn delete(&self, key: &str) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Error::new
      Src: /src/opendal/core/services/etcd/src/core.rs:157,1
    - Dst: Result::to_string
      Src: /src/opendal/core/services/etcd/src/core.rs:157,1
    - Dst: as_str
      Src: /src/opendal/core/services/etcd/src/core.rs:157,1
    - Dst: Self::set_source
      Src: /src/opendal/core/services/etcd/src/core.rs:157,1
    - Dst: Self::set_temporary
      Src: /src/opendal/core/services/etcd/src/core.rs:157,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 1
    argNames:
    - e
    argTypes:
    - EtcdError
    constantsTouched: []
    func_position:
      end: 160
      start: 156
    functionDepth: 36
    functionLinenumber: 156
    functionLinenumberEnd: 160
    functionName: error::format_etcd_error
    functionSourceFile: /src/opendal/core/services/etcd/src/core.rs
    functionUses: 0
    functionsReached:
    - Result::to_string
    - Error::new
    - as_str
    - Self::set_temporary
    - Self::set_source
    linkageType: ''
    returnType: Error
    signature: 'pub fn format_etcd_error(e: EtcdError) -> Error'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: oio::QueueBuf::new
      Src: /src/opendal/core/services/etcd/src/writer.rs:35,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - core
    - path
    argTypes:
    - Arc<EtcdCore>
    - String
    constantsTouched: []
    func_position:
      end: 37
      start: 31
    functionDepth: 4
    functionLinenumber: 31
    functionLinenumberEnd: 37
    functionName: EtcdWriter::new
    functionSourceFile: /src/opendal/core/services/etcd/src/writer.rs
    functionUses: 1
    functionsReached:
    - oio::QueueBuf::new
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(core: Arc<EtcdCore>, path: String) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: push
      Src: /src/opendal/core/services/etcd/src/writer.rs:42,1
    - Dst: Ok
      Src: /src/opendal/core/services/etcd/src/writer.rs:43,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - bs
    argTypes:
    - Buffer
    constantsTouched: []
    func_position:
      end: 44
      start: 41
    functionDepth: 5
    functionLinenumber: 41
    functionLinenumberEnd: 44
    functionName: EtcdWriter::write
    functionSourceFile: /src/opendal/core/services/etcd/src/writer.rs
    functionUses: 0
    functionsReached:
    - Ok
    - push
    linkageType: ''
    returnType: Result
    signature: 'async fn write(&mut self, bs: Buffer) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: clone
      Src: /src/opendal/core/services/etcd/src/writer.rs:47,1
    - Dst: collect
      Src: /src/opendal/core/services/etcd/src/writer.rs:47,1
    - Dst: set
      Src: /src/opendal/core/services/etcd/src/writer.rs:49,1
    - Dst: io::Result::clone
      Src: /src/opendal/core/services/etcd/src/writer.rs:49,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/etcd/src/writer.rs:51,1
    - Dst: EntryMode::from_path
      Src: /src/opendal/core/services/etcd/src/writer.rs:51,1
    - Dst: anyhow::Result::set_content_length
      Src: /src/opendal/core/services/etcd/src/writer.rs:52,1
    - Dst: io::Result::len
      Src: /src/opendal/core/services/etcd/src/writer.rs:52,1
    - Dst: Ok
      Src: /src/opendal/core/services/etcd/src/writer.rs:54,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 26
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 55
      start: 46
    functionDepth: 36
    functionLinenumber: 46
    functionLinenumberEnd: 55
    functionName: EtcdWriter::close
    functionSourceFile: /src/opendal/core/services/etcd/src/writer.rs
    functionUses: 0
    functionsReached:
    - collect
    - Metadata::new
    - anyhow::Result::set_content_length
    - Ok
    - io::Result::len
    - set
    - clone
    - EntryMode::from_path
    - io::Result::clone
    linkageType: ''
    returnType: Result
    signature: async fn close(&mut self) -> Result<Metadata>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: clear
      Src: /src/opendal/core/services/etcd/src/writer.rs:58,1
    - Dst: Ok
      Src: /src/opendal/core/services/etcd/src/writer.rs:59,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 60
      start: 57
    functionDepth: 2
    functionLinenumber: 57
    functionLinenumberEnd: 60
    functionName: EtcdWriter::abort
    functionSourceFile: /src/opendal/core/services/etcd/src/writer.rs
    functionUses: 0
    functionsReached:
    - clear
    - Ok
    linkageType: ''
    returnType: Result
    signature: async fn abort(&mut self) -> Result<()>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: register::<Etcd>
      Src: /src/opendal/core/services/etcd/src/lib.rs:39,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - registry
    argTypes:
    - '&opendal_core::OperatorRegistry'
    constantsTouched: []
    func_position:
      end: 40
      start: 38
    functionDepth: 0
    functionLinenumber: 38
    functionLinenumberEnd: 40
    functionName: register_etcd_service
    functionSourceFile: /src/opendal/core/services/etcd/src/lib.rs
    functionUses: 1
    functionsReached:
    - register::<Etcd>
    linkageType: ''
    returnType: void
    signature: 'pub fn register_etcd_service(registry: &opendal_core::OperatorRegistry)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self::is_empty
      Src: /src/opendal/core/services/etcd/src/backend.rs:48,1
    - Dst: Some
      Src: /src/opendal/core/services/etcd/src/backend.rs:49,1
    - Dst: Self::to_owned
      Src: /src/opendal/core/services/etcd/src/backend.rs:49,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 1
    argNames:
    - endpoints
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 52
      start: 47
    functionDepth: 4
    functionLinenumber: 47
    functionLinenumberEnd: 52
    functionName: EtcdBuilder::endpoints
    functionSourceFile: /src/opendal/core/services/etcd/src/backend.rs
    functionUses: 0
    functionsReached:
    - Self::is_empty
    - Self::to_owned
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn endpoints(mut self, endpoints: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Option::is_empty
      Src: /src/opendal/core/services/etcd/src/backend.rs:58,1
    - Dst: Some
      Src: /src/opendal/core/services/etcd/src/backend.rs:59,1
    - Dst: Option::to_owned
      Src: /src/opendal/core/services/etcd/src/backend.rs:59,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 1
    argNames:
    - username
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 62
      start: 57
    functionDepth: 4
    functionLinenumber: 57
    functionLinenumberEnd: 62
    functionName: EtcdBuilder::username
    functionSourceFile: /src/opendal/core/services/etcd/src/backend.rs
    functionUses: 0
    functionsReached:
    - Option::is_empty
    - Option::to_owned
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn username(mut self, username: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Option::is_empty
      Src: /src/opendal/core/services/etcd/src/backend.rs:68,1
    - Dst: Some
      Src: /src/opendal/core/services/etcd/src/backend.rs:69,1
    - Dst: Option::to_owned
      Src: /src/opendal/core/services/etcd/src/backend.rs:69,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 1
    argNames:
    - password
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 72
      start: 67
    functionDepth: 4
    functionLinenumber: 67
    functionLinenumberEnd: 72
    functionName: EtcdBuilder::password
    functionSourceFile: /src/opendal/core/services/etcd/src/backend.rs
    functionUses: 0
    functionsReached:
    - Option::is_empty
    - Option::to_owned
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn password(mut self, password: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::is_empty
      Src: /src/opendal/core/services/etcd/src/backend.rs:78,1
    - Dst: Some
      Src: /src/opendal/core/services/etcd/src/backend.rs:81,1
    - Dst: Result::to_string
      Src: /src/opendal/core/services/etcd/src/backend.rs:81,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - root
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 85
      start: 77
    functionDepth: 4
    functionLinenumber: 77
    functionLinenumberEnd: 85
    functionName: EtcdBuilder::root
    functionSourceFile: /src/opendal/core/services/etcd/src/backend.rs
    functionUses: 0
    functionsReached:
    - Result::is_empty
    - Result::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn root(mut self, root: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self::is_empty
      Src: /src/opendal/core/services/etcd/src/backend.rs:91,1
    - Dst: Some
      Src: /src/opendal/core/services/etcd/src/backend.rs:92,1
    - Dst: Self::to_string
      Src: /src/opendal/core/services/etcd/src/backend.rs:92,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 1
    argNames:
    - ca_path
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 95
      start: 90
    functionDepth: 4
    functionLinenumber: 90
    functionLinenumberEnd: 95
    functionName: EtcdBuilder::ca_path
    functionSourceFile: /src/opendal/core/services/etcd/src/backend.rs
    functionUses: 0
    functionsReached:
    - Self::is_empty
    - Self::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn ca_path(mut self, ca_path: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self::is_empty
      Src: /src/opendal/core/services/etcd/src/backend.rs:101,1
    - Dst: Some
      Src: /src/opendal/core/services/etcd/src/backend.rs:102,1
    - Dst: Self::to_string
      Src: /src/opendal/core/services/etcd/src/backend.rs:102,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 1
    argNames:
    - cert_path
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 105
      start: 100
    functionDepth: 4
    functionLinenumber: 100
    functionLinenumberEnd: 105
    functionName: EtcdBuilder::cert_path
    functionSourceFile: /src/opendal/core/services/etcd/src/backend.rs
    functionUses: 0
    functionsReached:
    - Self::is_empty
    - Self::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn cert_path(mut self, cert_path: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self::is_empty
      Src: /src/opendal/core/services/etcd/src/backend.rs:111,1
    - Dst: Some
      Src: /src/opendal/core/services/etcd/src/backend.rs:112,1
    - Dst: Self::to_string
      Src: /src/opendal/core/services/etcd/src/backend.rs:112,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 1
    argNames:
    - key_path
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 115
      start: 110
    functionDepth: 4
    functionLinenumber: 110
    functionLinenumberEnd: 115
    functionName: EtcdBuilder::key_path
    functionSourceFile: /src/opendal/core/services/etcd/src/backend.rs
    functionUses: 0
    functionsReached:
    - Self::is_empty
    - Self::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn key_path(mut self, key_path: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: clone
      Src: /src/opendal/core/services/etcd/src/backend.rs:122,1
    - Dst: unwrap_or_else
      Src: /src/opendal/core/services/etcd/src/backend.rs:122,1
    - Dst: to_string
      Src: /src/opendal/core/services/etcd/src/backend.rs:126,1
    - Dst: Self::split
      Src: /src/opendal/core/services/etcd/src/backend.rs:128,1
    - Dst: map
      Src: /src/opendal/core/services/etcd/src/backend.rs:128,1
    - Dst: to_string
      Src: /src/opendal/core/services/etcd/src/backend.rs:128,1
    - Dst: collect
      Src: /src/opendal/core/services/etcd/src/backend.rs:128,1
    - Dst: ConnectOptions::new
      Src: /src/opendal/core/services/etcd/src/backend.rs:130,1
    - Dst: is_some
      Src: /src/opendal/core/services/etcd/src/backend.rs:132,1
    - Dst: is_some
      Src: /src/opendal/core/services/etcd/src/backend.rs:133,1
    - Dst: is_some
      Src: /src/opendal/core/services/etcd/src/backend.rs:134,1
    - Dst: EtcdBuilder::load_pem
      Src: /src/opendal/core/services/etcd/src/backend.rs:136,1
    - Dst: clone
      Src: /src/opendal/core/services/etcd/src/backend.rs:136,1
    - Dst: unwrap
      Src: /src/opendal/core/services/etcd/src/backend.rs:136,1
    - Dst: as_str
      Src: /src/opendal/core/services/etcd/src/backend.rs:136,1
    - Dst: EtcdBuilder::load_pem
      Src: /src/opendal/core/services/etcd/src/backend.rs:137,1
    - Dst: clone
      Src: /src/opendal/core/services/etcd/src/backend.rs:137,1
    - Dst: unwrap
      Src: /src/opendal/core/services/etcd/src/backend.rs:137,1
    - Dst: as_str
      Src: /src/opendal/core/services/etcd/src/backend.rs:137,1
    - Dst: EtcdBuilder::load_pem
      Src: /src/opendal/core/services/etcd/src/backend.rs:138,1
    - Dst: clone
      Src: /src/opendal/core/services/etcd/src/backend.rs:138,1
    - Dst: unwrap
      Src: /src/opendal/core/services/etcd/src/backend.rs:138,1
    - Dst: as_str
      Src: /src/opendal/core/services/etcd/src/backend.rs:138,1
    - Dst: TlsOptions::default
      Src: /src/opendal/core/services/etcd/src/backend.rs:140,1
    - Dst: Self::ca_certificate
      Src: /src/opendal/core/services/etcd/src/backend.rs:140,1
    - Dst: Certificate::from_pem
      Src: /src/opendal/core/services/etcd/src/backend.rs:141,1
    - Dst: identity
      Src: /src/opendal/core/services/etcd/src/backend.rs:140,1
    - Dst: Identity::from_pem
      Src: /src/opendal/core/services/etcd/src/backend.rs:142,1
    - Dst: Result::with_tls
      Src: /src/opendal/core/services/etcd/src/backend.rs:143,1
    - Dst: clone
      Src: /src/opendal/core/services/etcd/src/backend.rs:146,1
    - Dst: Result::with_user
      Src: /src/opendal/core/services/etcd/src/backend.rs:147,1
    - Dst: clone
      Src: /src/opendal/core/services/etcd/src/backend.rs:149,1
    - Dst: unwrap_or
      Src: /src/opendal/core/services/etcd/src/backend.rs:149,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/etcd/src/backend.rs:149,1
    - Dst: normalize_root
      Src: /src/opendal/core/services/etcd/src/backend.rs:153,1
    - Dst: clone
      Src: /src/opendal/core/services/etcd/src/backend.rs:154,1
    - Dst: unwrap_or_else
      Src: /src/opendal/core/services/etcd/src/backend.rs:154,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/etcd/src/backend.rs:157,1
    - Dst: as_str
      Src: /src/opendal/core/services/etcd/src/backend.rs:154,1
    - Dst: EtcdCore::new
      Src: /src/opendal/core/services/etcd/src/backend.rs:161,1
    - Dst: Ok
      Src: /src/opendal/core/services/etcd/src/backend.rs:162,1
    - Dst: EtcdBackend::new
      Src: /src/opendal/core/services/etcd/src/backend.rs:162,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 113
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 163
      start: 121
    functionDepth: 36
    functionLinenumber: 121
    functionLinenumberEnd: 163
    functionName: EtcdBuilder::build
    functionSourceFile: /src/opendal/core/services/etcd/src/backend.rs
    functionUses: 0
    functionsReached:
    - collect
    - Identity::from_pem
    - ConnectOptions::new
    - clone
    - map
    - Self::split
    - is_some
    - unwrap_or_else
    - Ok
    - unwrap
    - normalize_root
    - as_str
    - identity
    - '&str::to_string'
    - Result::with_tls
    - Certificate::from_pem
    - unwrap_or
    - Result::with_user
    - EtcdCore::new
    - to_string
    - EtcdBuilder::load_pem
    - Self::ca_certificate
    - EtcdBackend::new
    - TlsOptions::default
    linkageType: ''
    returnType: Result
    signature: fn build(self) -> Result<impl Service>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: std::fs::read_to_string
      Src: /src/opendal/core/services/etcd/src/backend.rs:168,1
    - Dst: map_err
      Src: /src/opendal/core/services/etcd/src/backend.rs:168,1
    - Dst: Error::new
      Src: /src/opendal/core/services/etcd/src/backend.rs:169,1
    - Dst: Self::set_source
      Src: /src/opendal/core/services/etcd/src/backend.rs:169,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - path
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 170
      start: 167
    functionDepth: 36
    functionLinenumber: 167
    functionLinenumberEnd: 170
    functionName: EtcdBuilder::load_pem
    functionSourceFile: /src/opendal/core/services/etcd/src/backend.rs
    functionUses: 1
    functionsReached:
    - map_err
    - Self::set_source
    - std::fs::read_to_string
    - Error::new
    linkageType: ''
    returnType: Result
    signature: 'fn load_pem(&self, path: &str) -> Result<String>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: ServiceInfo::new
      Src: /src/opendal/core/services/etcd/src/backend.rs:182,1
    - Dst: Default::default
      Src: /src/opendal/core/services/etcd/src/backend.rs:195,1
    - Dst: Arc::new
      Src: /src/opendal/core/services/etcd/src/backend.rs:199,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - core
    - root
    argTypes:
    - EtcdCore
    - '&str'
    constantsTouched: []
    func_position:
      end: 203
      start: 181
    functionDepth: 33
    functionLinenumber: 181
    functionLinenumberEnd: 203
    functionName: EtcdBackend::new
    functionSourceFile: /src/opendal/core/services/etcd/src/backend.rs
    functionUses: 1
    functionsReached:
    - Arc::new
    - ServiceInfo::new
    - Default::default
    linkageType: ''
    returnType: Self
    signature: 'fn new(core: EtcdCore, root: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: clone
      Src: /src/opendal/core/services/etcd/src/backend.rs:214,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 215
      start: 213
    functionDepth: 2
    functionLinenumber: 213
    functionLinenumberEnd: 215
    functionName: EtcdBackend::info
    functionSourceFile: /src/opendal/core/services/etcd/src/backend.rs
    functionUses: 0
    functionsReached:
    - clone
    linkageType: ''
    returnType: ServiceInfo
    signature: fn info(&self) -> ServiceInfo
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 219
      start: 217
    functionDepth: 0
    functionLinenumber: 217
    functionLinenumberEnd: 219
    functionName: EtcdBackend::capability
    functionSourceFile: /src/opendal/core/services/etcd/src/backend.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Capability
    signature: fn capability(&self) -> Capability
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/etcd/src/backend.rs:227,1
    - Dst: root
      Src: /src/opendal/core/services/etcd/src/backend.rs:227,1
    - Dst: String::ends_with
      Src: /src/opendal/core/services/etcd/src/backend.rs:231,1
    - Dst: set
      Src: /src/opendal/core/services/etcd/src/backend.rs:238,1
    - Dst: Buffer::new
      Src: /src/opendal/core/services/etcd/src/backend.rs:238,1
    - Dst: Ok
      Src: /src/opendal/core/services/etcd/src/backend.rs:240,1
    - Dst: RpCreateDir::default
      Src: /src/opendal/core/services/etcd/src/backend.rs:240,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 18
    argCount: 3
    argNames:
    - _ctx
    - path
    - _args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpCreateDir
    constantsTouched: []
    func_position:
      end: 241
      start: 221
    functionDepth: 32
    functionLinenumber: 221
    functionLinenumberEnd: 241
    functionName: EtcdBackend::create_dir
    functionSourceFile: /src/opendal/core/services/etcd/src/backend.rs
    functionUses: 0
    functionsReached:
    - Buffer::new
    - Ok
    - RpCreateDir::default
    - String::ends_with
    - set
    - build_abs_path
    - root
    linkageType: ''
    returnType: Result
    signature: 'async fn create_dir(&self,_ctx: &OperationContext,path: &str,_args:
      OpCreateDir,) -> Result<RpCreateDir>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/etcd/src/backend.rs:244,1
    - Dst: root
      Src: /src/opendal/core/services/etcd/src/backend.rs:244,1
    - Dst: get
      Src: /src/opendal/core/services/etcd/src/backend.rs:247,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/etcd/src/backend.rs:249,1
    - Dst: EntryMode::from_path
      Src: /src/opendal/core/services/etcd/src/backend.rs:249,1
    - Dst: anyhow::Result::set_content_length
      Src: /src/opendal/core/services/etcd/src/backend.rs:250,1
    - Dst: len
      Src: /src/opendal/core/services/etcd/src/backend.rs:250,1
    - Dst: Ok
      Src: /src/opendal/core/services/etcd/src/backend.rs:251,1
    - Dst: RpStat::new
      Src: /src/opendal/core/services/etcd/src/backend.rs:251,1
    - Dst: String::ends_with
      Src: /src/opendal/core/services/etcd/src/backend.rs:255,1
    - Dst: has_prefix
      Src: /src/opendal/core/services/etcd/src/backend.rs:262,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/etcd/src/backend.rs:265,1
    - Dst: Ok
      Src: /src/opendal/core/services/etcd/src/backend.rs:266,1
    - Dst: RpStat::new
      Src: /src/opendal/core/services/etcd/src/backend.rs:266,1
    - Dst: Err
      Src: /src/opendal/core/services/etcd/src/backend.rs:268,1
    - Dst: Error::new
      Src: /src/opendal/core/services/etcd/src/backend.rs:268,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 40
    argCount: 3
    argNames:
    - _ctx
    - path
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpStat
    constantsTouched: []
    func_position:
      end: 272
      start: 243
    functionDepth: 32
    functionLinenumber: 243
    functionLinenumberEnd: 272
    functionName: EtcdBackend::stat
    functionSourceFile: /src/opendal/core/services/etcd/src/backend.rs
    functionUses: 0
    functionsReached:
    - Metadata::new
    - get
    - anyhow::Result::set_content_length
    - Ok
    - String::ends_with
    - RpStat::new
    - EntryMode::from_path
    - build_abs_path
    - Err
    - Error::new
    - root
    - has_prefix
    - len
    linkageType: ''
    returnType: Result
    signature: 'async fn stat(&self, _ctx: &OperationContext, path: &str, _: OpStat)
      -> Result<RpStat>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/core/services/etcd/src/backend.rs:275,1
    - Dst: oio::StreamReader::new
      Src: /src/opendal/core/services/etcd/src/backend.rs:275,1
    - Dst: EtcdReader::new
      Src: /src/opendal/core/services/etcd/src/backend.rs:275,1
    - Dst: EtcdBackend::clone
      Src: /src/opendal/core/services/etcd/src/backend.rs:276,1
    - Dst: Ok
      Src: /src/opendal/core/services/etcd/src/backend.rs:282,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - _ctx
    - path
    - op
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpRead
    constantsTouched: []
    func_position:
      end: 283
      start: 273
    functionDepth: 3
    functionLinenumber: 273
    functionLinenumberEnd: 283
    functionName: EtcdBackend::read
    functionSourceFile: /src/opendal/core/services/etcd/src/backend.rs
    functionUses: 0
    functionsReached:
    - oio::StreamReader::new
    - EtcdBackend::clone
    - Ok
    - EtcdReader::new
    linkageType: ''
    returnType: Result
    signature: 'fn read(&self, _ctx: &OperationContext, path: &str, op: OpRead) ->
      Result<Self::Reader>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/etcd/src/backend.rs:287,1
    - Dst: root
      Src: /src/opendal/core/services/etcd/src/backend.rs:287,1
    - Dst: EtcdWriter::new
      Src: /src/opendal/core/services/etcd/src/backend.rs:288,1
    - Dst: clone
      Src: /src/opendal/core/services/etcd/src/backend.rs:288,1
    - Dst: Ok
      Src: /src/opendal/core/services/etcd/src/backend.rs:289,1
    - Dst: Ok
      Src: /src/opendal/core/services/etcd/src/backend.rs:292,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 3
    argNames:
    - _ctx
    - path
    - _op
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpWrite
    constantsTouched: []
    func_position:
      end: 293
      start: 285
    functionDepth: 32
    functionLinenumber: 285
    functionLinenumberEnd: 293
    functionName: EtcdBackend::write
    functionSourceFile: /src/opendal/core/services/etcd/src/backend.rs
    functionUses: 0
    functionsReached:
    - Ok
    - EtcdWriter::new
    - clone
    - build_abs_path
    - root
    linkageType: ''
    returnType: Result
    signature: 'fn write(&self, _ctx: &OperationContext, path: &str, _op: OpWrite)
      -> Result<Self::Writer>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: oio::OneShotDeleter::new
      Src: /src/opendal/core/services/etcd/src/backend.rs:297,1
    - Dst: EtcdDeleter::new
      Src: /src/opendal/core/services/etcd/src/backend.rs:297,1
    - Dst: clone
      Src: /src/opendal/core/services/etcd/src/backend.rs:298,1
    - Dst: root
      Src: /src/opendal/core/services/etcd/src/backend.rs:299,1
    - Dst: to_string
      Src: /src/opendal/core/services/etcd/src/backend.rs:299,1
    - Dst: Ok
      Src: /src/opendal/core/services/etcd/src/backend.rs:301,1
    - Dst: Ok
      Src: /src/opendal/core/services/etcd/src/backend.rs:304,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 1
    argNames:
    - _ctx
    argTypes:
    - '&OperationContext'
    constantsTouched: []
    func_position:
      end: 305
      start: 295
    functionDepth: 32
    functionLinenumber: 295
    functionLinenumberEnd: 305
    functionName: EtcdBackend::delete
    functionSourceFile: /src/opendal/core/services/etcd/src/backend.rs
    functionUses: 0
    functionsReached:
    - oio::OneShotDeleter::new
    - to_string
    - Ok
    - EtcdDeleter::new
    - clone
    - root
    linkageType: ''
    returnType: Result
    signature: 'fn delete(&self, _ctx: &OperationContext) -> Result<Self::Deleter>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: EtcdLazyLister::new
      Src: /src/opendal/core/services/etcd/src/backend.rs:309,1
    - Dst: clone
      Src: /src/opendal/core/services/etcd/src/backend.rs:310,1
    - Dst: root
      Src: /src/opendal/core/services/etcd/src/backend.rs:311,1
    - Dst: to_string
      Src: /src/opendal/core/services/etcd/src/backend.rs:311,1
    - Dst: to_string
      Src: /src/opendal/core/services/etcd/src/backend.rs:312,1
    - Dst: oio::HierarchyLister::new
      Src: /src/opendal/core/services/etcd/src/backend.rs:314,1
    - Dst: OpStat::recursive
      Src: /src/opendal/core/services/etcd/src/backend.rs:314,1
    - Dst: Ok
      Src: /src/opendal/core/services/etcd/src/backend.rs:315,1
    - Dst: Ok
      Src: /src/opendal/core/services/etcd/src/backend.rs:318,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 17
    argCount: 3
    argNames:
    - _ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpList
    constantsTouched: []
    func_position:
      end: 319
      start: 307
    functionDepth: 32
    functionLinenumber: 307
    functionLinenumberEnd: 319
    functionName: EtcdBackend::list
    functionSourceFile: /src/opendal/core/services/etcd/src/backend.rs
    functionUses: 0
    functionsReached:
    - oio::HierarchyLister::new
    - to_string
    - EtcdLazyLister::new
    - Ok
    - clone
    - root
    - OpStat::recursive
    linkageType: ''
    returnType: Result
    signature: 'fn list(&self, _ctx: &OperationContext, path: &str, args: OpList)
      -> Result<Self::Lister>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/core/services/etcd/src/backend.rs:329,1
    - Dst: Error::new
      Src: /src/opendal/core/services/etcd/src/backend.rs:329,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 5
    argNames:
    - _ctx
    - _from
    - _to
    - _args
    - _opts
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    - OpCopy
    - OpCopier
    constantsTouched: []
    func_position:
      end: 333
      start: 321
    functionDepth: 36
    functionLinenumber: 321
    functionLinenumberEnd: 333
    functionName: EtcdBackend::copy
    functionSourceFile: /src/opendal/core/services/etcd/src/backend.rs
    functionUses: 0
    functionsReached:
    - Error::new
    - Err
    linkageType: ''
    returnType: Result
    signature: 'fn copy(&self,_ctx: &OperationContext,_from: &str,_to: &str,_args:
      OpCopy,_opts: OpCopier,) -> Result<Self::Copier>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/core/services/etcd/src/backend.rs:342,1
    - Dst: Error::new
      Src: /src/opendal/core/services/etcd/src/backend.rs:342,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - _ctx
    - _from
    - _to
    - _args
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    - OpRename
    constantsTouched: []
    func_position:
      end: 346
      start: 335
    functionDepth: 36
    functionLinenumber: 335
    functionLinenumberEnd: 346
    functionName: EtcdBackend::rename
    functionSourceFile: /src/opendal/core/services/etcd/src/backend.rs
    functionUses: 0
    functionsReached:
    - Error::new
    - Err
    linkageType: ''
    returnType: Result
    signature: 'async fn rename(&self,_ctx: &OperationContext,_from: &str,_to: &str,_args:
      OpRename,) -> Result<RpRename>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/core/services/etcd/src/backend.rs:354,1
    - Dst: Error::new
      Src: /src/opendal/core/services/etcd/src/backend.rs:354,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - _ctx
    - _path
    - _args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpPresign
    constantsTouched: []
    func_position:
      end: 358
      start: 348
    functionDepth: 36
    functionLinenumber: 348
    functionLinenumberEnd: 358
    functionName: EtcdBackend::presign
    functionSourceFile: /src/opendal/core/services/etcd/src/backend.rs
    functionUses: 0
    functionsReached:
    - Error::new
    - Err
    linkageType: ''
    returnType: Result
    signature: 'async fn presign(&self,_ctx: &OperationContext,_path: &str,_args:
      OpPresign,) -> Result<RpPresign>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: parse_connection_string
      Src: /src/opendal/core/services/azure-common/src/lib.rs:71,1
    - Dst: collect_blob_development_config
      Src: /src/opendal/core/services/azure-common/src/lib.rs:75,1
    - Dst: Ok
      Src: /src/opendal/core/services/azure-common/src/lib.rs:76,1
    - Dst: Some
      Src: /src/opendal/core/services/azure-common/src/lib.rs:77,1
    - Dst: Some
      Src: /src/opendal/core/services/azure-common/src/lib.rs:78,1
    - Dst: Some
      Src: /src/opendal/core/services/azure-common/src/lib.rs:79,1
    - Dst: Default::default
      Src: /src/opendal/core/services/azure-common/src/lib.rs:80,1
    - Dst: get
      Src: /src/opendal/core/services/azure-common/src/lib.rs:86,1
    - Dst: cloned
      Src: /src/opendal/core/services/azure-common/src/lib.rs:86,1
    - Dst: collect_endpoint
      Src: /src/opendal/core/services/azure-common/src/lib.rs:87,1
    - Dst: Default::default
      Src: /src/opendal/core/services/azure-common/src/lib.rs:88,1
    - Dst: collect_credentials
      Src: /src/opendal/core/services/azure-common/src/lib.rs:91,1
    - Dst: set_credentials
      Src: /src/opendal/core/services/azure-common/src/lib.rs:92,1
    - Dst: Ok
      Src: /src/opendal/core/services/azure-common/src/lib.rs:95,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 39
    argCount: 2
    argNames:
    - conn_str
    - storage
    argTypes:
    - '&str'
    - AzureStorageService
    constantsTouched: []
    func_position:
      end: 96
      start: 67
    functionDepth: 37
    functionLinenumber: 67
    functionLinenumberEnd: 96
    functionName: azure_config_from_connection_string
    functionSourceFile: /src/opendal/core/services/azure-common/src/lib.rs
    functionUses: 4
    functionsReached:
    - get
    - set_credentials
    - Ok
    - Default::default
    - Some
    - parse_connection_string
    - collect_blob_development_config
    - cloned
    - collect_endpoint
    - collect_credentials
    linkageType: ''
    returnType: Result
    signature: 'pub fn azure_config_from_connection_string(conn_str: &str,storage:
      AzureStorageService,) -> Result<AzureStorageConfig>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self::strip_prefix
      Src: /src/opendal/core/services/azure-common/src/lib.rs:124,1
    - Dst: or_else
      Src: /src/opendal/core/services/azure-common/src/lib.rs:124,1
    - Dst: Self::strip_prefix
      Src: /src/opendal/core/services/azure-common/src/lib.rs:126,1
    - Dst: unwrap_or
      Src: /src/opendal/core/services/azure-common/src/lib.rs:124,1
    - Dst: Self::split_once
      Src: /src/opendal/core/services/azure-common/src/lib.rs:129,1
    - Dst: split_once
      Src: /src/opendal/core/services/azure-common/src/lib.rs:130,1
    - Dst: contains
      Src: /src/opendal/core/services/azure-common/src/lib.rs:132,1
    - Dst: trim_end_matches
      Src: /src/opendal/core/services/azure-common/src/lib.rs:132,1
    - Dst: Some
      Src: /src/opendal/core/services/azure-common/src/lib.rs:133,1
    - Dst: Self::to_string
      Src: /src/opendal/core/services/azure-common/src/lib.rs:133,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 27
    argCount: 1
    argNames:
    - endpoint
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 137
      start: 116
    functionDepth: 2
    functionLinenumber: 116
    functionLinenumberEnd: 137
    functionName: azure_account_name_from_endpoint
    functionSourceFile: /src/opendal/core/services/azure-common/src/lib.rs
    functionUses: 4
    functionsReached:
    - Self::split_once
    - or_else
    - split_once
    - Self::to_string
    - trim_end_matches
    - Some
    - contains
    - Self::strip_prefix
    - unwrap_or
    linkageType: ''
    returnType: Option
    signature: 'pub fn azure_account_name_from_endpoint(endpoint: &str) -> Option<String>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: '&str::trim'
      Src: /src/opendal/core/services/azure-common/src/lib.rs:142,1
    - Dst: replace
      Src: /src/opendal/core/services/azure-common/src/lib.rs:142,1
    - Dst: split
      Src: /src/opendal/core/services/azure-common/src/lib.rs:142,1
    - Dst: filter
      Src: /src/opendal/core/services/azure-common/src/lib.rs:142,1
    - Dst: Self::is_empty
      Src: /src/opendal/core/services/azure-common/src/lib.rs:146,1
    - Dst: map
      Src: /src/opendal/core/services/azure-common/src/lib.rs:142,1
    - Dst: Self::trim
      Src: /src/opendal/core/services/azure-common/src/lib.rs:148,1
    - Dst: split_once
      Src: /src/opendal/core/services/azure-common/src/lib.rs:148,1
    - Dst: ok_or
      Src: /src/opendal/core/services/azure-common/src/lib.rs:148,1
    - Dst: Error::new
      Src: /src/opendal/core/services/azure-common/src/lib.rs:148,1
    - Dst: Ok
      Src: /src/opendal/core/services/azure-common/src/lib.rs:152,1
    - Dst: FoyerKey::to_string
      Src: /src/opendal/core/services/azure-common/src/lib.rs:152,1
    - Dst: Vec::to_string
      Src: /src/opendal/core/services/azure-common/src/lib.rs:152,1
    - Dst: collect
      Src: /src/opendal/core/services/azure-common/src/lib.rs:142,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 31
    argCount: 1
    argNames:
    - conn_str
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 155
      start: 141
    functionDepth: 36
    functionLinenumber: 141
    functionLinenumberEnd: 155
    functionName: parse_connection_string
    functionSourceFile: /src/opendal/core/services/azure-common/src/lib.rs
    functionUses: 1
    functionsReached:
    - '&str::trim'
    - collect
    - filter
    - Self::trim
    - split_once
    - Ok
    - split
    - replace
    - Error::new
    - Self::is_empty
    - map
    - FoyerKey::to_string
    - Vec::to_string
    - ok_or
    linkageType: ''
    returnType: Result
    signature: 'fn parse_connection_string(conn_str: &str) -> Result<HashMap<String,
      String>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: '&HashMap<String, String>::get'
      Src: /src/opendal/core/services/azure-common/src/lib.rs:173,1
    - Dst: Some
      Src: /src/opendal/core/services/azure-common/src/lib.rs:173,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/azure-common/src/lib.rs:173,1
    - Dst: '&HashMap<String, String>::get'
      Src: /src/opendal/core/services/azure-common/src/lib.rs:177,1
    - Dst: Option::cloned
      Src: /src/opendal/core/services/azure-common/src/lib.rs:177,1
    - Dst: unwrap_or
      Src: /src/opendal/core/services/azure-common/src/lib.rs:177,1
    - Dst: to_string
      Src: /src/opendal/core/services/azure-common/src/lib.rs:180,1
    - Dst: '&HashMap<String, String>::get'
      Src: /src/opendal/core/services/azure-common/src/lib.rs:181,1
    - Dst: Option::cloned
      Src: /src/opendal/core/services/azure-common/src/lib.rs:181,1
    - Dst: unwrap_or
      Src: /src/opendal/core/services/azure-common/src/lib.rs:181,1
    - Dst: to_string
      Src: /src/opendal/core/services/azure-common/src/lib.rs:184,1
    - Dst: '&HashMap<String, String>::get'
      Src: /src/opendal/core/services/azure-common/src/lib.rs:185,1
    - Dst: Option::cloned
      Src: /src/opendal/core/services/azure-common/src/lib.rs:185,1
    - Dst: unwrap_or
      Src: /src/opendal/core/services/azure-common/src/lib.rs:185,1
    - Dst: to_string
      Src: /src/opendal/core/services/azure-common/src/lib.rs:188,1
    - Dst: Some
      Src: /src/opendal/core/services/azure-common/src/lib.rs:190,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 38
    argCount: 2
    argNames:
    - key_values
    - storage
    argTypes:
    - '&HashMap<String, String>'
    - '&AzureStorageService'
    constantsTouched: []
    func_position:
      end: 195
      start: 157
    functionDepth: 2
    functionLinenumber: 157
    functionLinenumberEnd: 195
    functionName: collect_blob_development_config
    functionSourceFile: /src/opendal/core/services/azure-common/src/lib.rs
    functionUses: 1
    functionsReached:
    - to_string
    - Some
    - '&str::to_string'
    - '&HashMap<String, String>::get'
    - Option::cloned
    - unwrap_or
    linkageType: ''
    returnType: Option
    signature: 'fn collect_blob_development_config(key_values: &HashMap<String, String>,storage:
      &AzureStorageService,) -> Option<DevelopmentStorageConfig>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: collect_or_build_endpoint
      Src: /src/opendal/core/services/azure-common/src/lib.rs:213,1
    - Dst: collect_or_build_endpoint
      Src: /src/opendal/core/services/azure-common/src/lib.rs:214,1
    - Dst: collect_endpoint_from_parts
      Src: /src/opendal/core/services/azure-common/src/lib.rs:218,1
    - Dst: Ok
      Src: /src/opendal/core/services/azure-common/src/lib.rs:219,1
    - Dst: Some
      Src: /src/opendal/core/services/azure-common/src/lib.rs:219,1
    - Dst: clone
      Src: /src/opendal/core/services/azure-common/src/lib.rs:219,1
    - Dst: Ok
      Src: /src/opendal/core/services/azure-common/src/lib.rs:221,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 2
    argNames:
    - key_values
    - storage
    argTypes:
    - '&HashMap<String, String>'
    - '&AzureStorageService'
    constantsTouched: []
    func_position:
      end: 225
      start: 208
    functionDepth: 38
    functionLinenumber: 208
    functionLinenumberEnd: 225
    functionName: collect_endpoint
    functionSourceFile: /src/opendal/core/services/azure-common/src/lib.rs
    functionUses: 1
    functionsReached:
    - Ok
    - clone
    - Some
    - collect_or_build_endpoint
    - collect_endpoint_from_parts
    linkageType: ''
    returnType: Result
    signature: 'fn collect_endpoint(key_values: &HashMap<String, String>,storage:
      &AzureStorageService,) -> Result<Option<String>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: '&HashMap<String, String>::get'
      Src: /src/opendal/core/services/azure-common/src/lib.rs:228,1
    - Dst: Some
      Src: /src/opendal/core/services/azure-common/src/lib.rs:229,1
    - Dst: AzureStorageCredential::SharedAccessSignature
      Src: /src/opendal/core/services/azure-common/src/lib.rs:229,1
    - Dst: Self::clone
      Src: /src/opendal/core/services/azure-common/src/lib.rs:230,1
    - Dst: '&HashMap<String, String>::get'
      Src: /src/opendal/core/services/azure-common/src/lib.rs:233,1
    - Dst: '&HashMap<String, String>::get'
      Src: /src/opendal/core/services/azure-common/src/lib.rs:233,1
    - Dst: Some
      Src: /src/opendal/core/services/azure-common/src/lib.rs:235,1
    - Dst: AzureStorageCredential::SharedKey
      Src: /src/opendal/core/services/azure-common/src/lib.rs:235,1
    - Dst: Self::clone
      Src: /src/opendal/core/services/azure-common/src/lib.rs:236,1
    - Dst: Self::clone
      Src: /src/opendal/core/services/azure-common/src/lib.rs:237,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 20
    argCount: 1
    argNames:
    - key_values
    argTypes:
    - '&HashMap<String, String>'
    constantsTouched: []
    func_position:
      end: 246
      start: 227
    functionDepth: 2
    functionLinenumber: 227
    functionLinenumberEnd: 246
    functionName: collect_credentials
    functionSourceFile: /src/opendal/core/services/azure-common/src/lib.rs
    functionUses: 1
    functionsReached:
    - AzureStorageCredential::SharedKey
    - Some
    - Self::clone
    - '&HashMap<String, String>::get'
    - AzureStorageCredential::SharedAccessSignature
    linkageType: ''
    returnType: Option
    signature: 'fn collect_credentials(key_values: &HashMap<String, String>) -> Option<AzureStorageCredential>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Some
      Src: /src/opendal/core/services/azure-common/src/lib.rs:251,1
    - Dst: Some
      Src: /src/opendal/core/services/azure-common/src/lib.rs:254,1
    - Dst: Some
      Src: /src/opendal/core/services/azure-common/src/lib.rs:255,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 14
    argCount: 2
    argNames:
    - config
    - creds
    argTypes:
    - '&mut AzureStorageConfig'
    - AzureStorageCredential
    constantsTouched: []
    func_position:
      end: 258
      start: 248
    functionDepth: 0
    functionLinenumber: 248
    functionLinenumberEnd: 258
    functionName: set_credentials
    functionSourceFile: /src/opendal/core/services/azure-common/src/lib.rs
    functionUses: 1
    functionsReached:
    - Some
    linkageType: ''
    returnType: void
    signature: 'fn set_credentials(config: &mut AzureStorageConfig, creds: AzureStorageCredential)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: '&HashMap<String, String>::get'
      Src: /src/opendal/core/services/azure-common/src/lib.rs:265,1
    - Dst: Ok
      Src: /src/opendal/core/services/azure-common/src/lib.rs:266,1
    - Dst: Some
      Src: /src/opendal/core/services/azure-common/src/lib.rs:266,1
    - Dst: Self::clone
      Src: /src/opendal/core/services/azure-common/src/lib.rs:266,1
    - Dst: collect_endpoint_from_parts
      Src: /src/opendal/core/services/azure-common/src/lib.rs:267,1
    - Dst: Ok
      Src: /src/opendal/core/services/azure-common/src/lib.rs:268,1
    - Dst: Some
      Src: /src/opendal/core/services/azure-common/src/lib.rs:268,1
    - Dst: clone
      Src: /src/opendal/core/services/azure-common/src/lib.rs:268,1
    - Dst: Ok
      Src: /src/opendal/core/services/azure-common/src/lib.rs:270,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 3
    argNames:
    - key_values
    - endpoint_key
    - service_name
    argTypes:
    - '&HashMap<String, String>'
    - '&str'
    - '&str'
    constantsTouched: []
    func_position:
      end: 272
      start: 260
    functionDepth: 37
    functionLinenumber: 260
    functionLinenumberEnd: 272
    functionName: collect_or_build_endpoint
    functionSourceFile: /src/opendal/core/services/azure-common/src/lib.rs
    functionUses: 1
    functionsReached:
    - Ok
    - clone
    - Some
    - Self::clone
    - '&HashMap<String, String>::get'
    - collect_endpoint_from_parts
    linkageType: ''
    returnType: Result
    signature: 'fn collect_or_build_endpoint(key_values: &HashMap<String, String>,endpoint_key:
      &str,service_name: &str,) -> Result<Option<String>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: '&HashMap<String, String>::get'
      Src: /src/opendal/core/services/azure-common/src/lib.rs:279,1
    - Dst: '&HashMap<String, String>::get'
      Src: /src/opendal/core/services/azure-common/src/lib.rs:280,1
    - Dst: Ok
      Src: /src/opendal/core/services/azure-common/src/lib.rs:283,1
    - Dst: '&HashMap<String, String>::get'
      Src: /src/opendal/core/services/azure-common/src/lib.rs:286,1
    - Dst: Option::map
      Src: /src/opendal/core/services/azure-common/src/lib.rs:286,1
    - Dst: Result::unwrap_or
      Src: /src/opendal/core/services/azure-common/src/lib.rs:286,1
    - Dst: Err
      Src: /src/opendal/core/services/azure-common/src/lib.rs:291,1
    - Dst: Error::new
      Src: /src/opendal/core/services/azure-common/src/lib.rs:291,1
    - Dst: Ok
      Src: /src/opendal/core/services/azure-common/src/lib.rs:297,1
    - Dst: Some
      Src: /src/opendal/core/services/azure-common/src/lib.rs:297,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 26
    argCount: 2
    argNames:
    - key_values
    - storage_endpoint_name
    argTypes:
    - '&HashMap<String, String>'
    - '&str'
    constantsTouched: []
    func_position:
      end: 300
      start: 274
    functionDepth: 36
    functionLinenumber: 274
    functionLinenumberEnd: 300
    functionName: collect_endpoint_from_parts
    functionSourceFile: /src/opendal/core/services/azure-common/src/lib.rs
    functionUses: 2
    functionsReached:
    - Ok
    - Option::map
    - Err
    - Error::new
    - Some
    - '&HashMap<String, String>::get'
    - Result::unwrap_or
    linkageType: ''
    returnType: Result
    signature: 'fn collect_endpoint_from_parts(key_values: &HashMap<String, String>,storage_endpoint_name:
      &str,) -> Result<Option<String>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: extensions.get::<Uri>
      Src: /src/opendal/core/services/azure-common/src/lib.rs:310,1
    - Dst: Error::with_context
      Src: /src/opendal/core/services/azure-common/src/lib.rs:311,1
    - Dst: censor_sas_uri
      Src: /src/opendal/core/services/azure-common/src/lib.rs:311,1
    - Dst: remove
      Src: /src/opendal/core/services/azure-common/src/lib.rs:315,1
    - Dst: remove
      Src: /src/opendal/core/services/azure-common/src/lib.rs:316,1
    - Dst: remove
      Src: /src/opendal/core/services/azure-common/src/lib.rs:317,1
    - Dst: Error::with_context
      Src: /src/opendal/core/services/azure-common/src/lib.rs:319,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 26
    argCount: 2
    argNames:
    - err
    - parts
    argTypes:
    - Error
    - Parts
    constantsTouched: []
    func_position:
      end: 322
      start: 309
    functionDepth: 37
    functionLinenumber: 309
    functionLinenumberEnd: 322
    functionName: with_azure_error_response_context
    functionSourceFile: /src/opendal/core/services/azure-common/src/lib.rs
    functionUses: 0
    functionsReached:
    - Error::with_context
    - extensions.get::<Uri>
    - remove
    - censor_sas_uri
    linkageType: ''
    returnType: Error
    signature: 'pub fn with_azure_error_response_context(mut err: Error, mut parts:
      Parts) -> Error'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::query
      Src: /src/opendal/core/services/azure-common/src/lib.rs:325,1
    - Dst: Result::path
      Src: /src/opendal/core/services/azure-common/src/lib.rs:335,1
    - Dst: Result::split
      Src: /src/opendal/core/services/azure-common/src/lib.rs:336,1
    - Dst: filter
      Src: /src/opendal/core/services/azure-common/src/lib.rs:336,1
    - Dst: starts_with
      Src: /src/opendal/core/services/azure-common/src/lib.rs:338,1
    - Dst: "split(\"&\")\n            .filter(|p| !p.starts_with(\"sig=\"))\n    \
        \        .collect::<Vec<_>>"
      Src: /src/opendal/core/services/azure-common/src/lib.rs:336,1
    - Dst: join
      Src: /src/opendal/core/services/azure-common/src/lib.rs:336,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/azure-common/src/lib.rs:341,1
    - Dst: Self::into_parts
      Src: /src/opendal/core/services/azure-common/src/lib.rs:341,1
    - Dst: Some
      Src: /src/opendal/core/services/azure-common/src/lib.rs:342,1
    - Dst: try_into
      Src: /src/opendal/core/services/azure-common/src/lib.rs:342,1
    - Dst: unwrap
      Src: /src/opendal/core/services/azure-common/src/lib.rs:342,1
    - Dst: Uri::from_parts
      Src: /src/opendal/core/services/azure-common/src/lib.rs:343,1
    - Dst: Self::unwrap
      Src: /src/opendal/core/services/azure-common/src/lib.rs:343,1
    - Dst: T::to_string
      Src: /src/opendal/core/services/azure-common/src/lib.rs:343,1
    - Dst: Result::to_string
      Src: /src/opendal/core/services/azure-common/src/lib.rs:345,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 37
    argCount: 1
    argNames:
    - uri
    argTypes:
    - '&Uri'
    constantsTouched: []
    func_position:
      end: 347
      start: 324
    functionDepth: 36
    functionLinenumber: 324
    functionLinenumberEnd: 347
    functionName: censor_sas_uri
    functionSourceFile: /src/opendal/core/services/azure-common/src/lib.rs
    functionUses: 1
    functionsReached:
    - Result::clone
    - filter
    - starts_with
    - Result::split
    - try_into
    - Self::unwrap
    - "split(\"&\")\n            .filter(|p| !p.starts_with(\"sig=\"))\n         \
      \   .collect::<Vec<_>>"
    - join
    - Result::to_string
    - unwrap
    - Some
    - Result::query
    - Self::into_parts
    - T::to_string
    - Uri::from_parts
    - Result::path
    linkageType: ''
    returnType: String
    signature: 'fn censor_sas_uri(uri: &Uri) -> String'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: push
      Src: /src/opendal/core/services/azure-common/src/lib.rs:476,1
    - Dst: Some
      Src: /src/opendal/core/services/azure-common/src/lib.rs:479,1
    - Dst: Some
      Src: /src/opendal/core/services/azure-common/src/lib.rs:480,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/azure-common/src/lib.rs:480,1
    - Dst: Some
      Src: /src/opendal/core/services/azure-common/src/lib.rs:481,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/azure-common/src/lib.rs:481,1
    - Dst: Default::default
      Src: /src/opendal/core/services/azure-common/src/lib.rs:482,1
    - Dst: extend
      Src: /src/opendal/core/services/azure-common/src/lib.rs:487,1
    - Dst: push
      Src: /src/opendal/core/services/azure-common/src/lib.rs:513,1
    - Dst: Some
      Src: /src/opendal/core/services/azure-common/src/lib.rs:516,1
    - Dst: AzureStorageConfig::default
      Src: /src/opendal/core/services/azure-common/src/lib.rs:516,1
    - Dst: azure_config_from_connection_string
      Src: /src/opendal/core/services/azure-common/src/lib.rs:520,1
    - Dst: assert_azure_storage_config_eq
      Src: /src/opendal/core/services/azure-common/src/lib.rs:523,1
    - Dst: Result::expect
      Src: /src/opendal/core/services/azure-common/src/lib.rs:523,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 36
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 528
      start: 361
    functionDepth: 38
    functionLinenumber: 361
    functionLinenumberEnd: 528
    functionName: tests::test_azure_config_from_connection_string
    functionSourceFile: /src/opendal/core/services/azure-common/src/lib.rs
    functionUses: 0
    functionsReached:
    - AzureStorageConfig::default
    - push
    - assert_azure_storage_config_eq
    - Result::expect
    - Default::default
    - azure_config_from_connection_string
    - Some
    - '&str::to_string'
    - extend
    linkageType: ''
    returnType: void
    signature: fn test_azure_config_from_connection_string()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: azure_account_name_from_endpoint
      Src: /src/opendal/core/services/azure-common/src/lib.rs:548,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 555
      start: 531
    functionDepth: 3
    functionLinenumber: 531
    functionLinenumberEnd: 555
    functionName: tests::test_azure_account_name_from_endpoint
    functionSourceFile: /src/opendal/core/services/azure-common/src/lib.rs
    functionUses: 0
    functionsReached:
    - azure_account_name_from_endpoint
    linkageType: ''
    returnType: void
    signature: fn test_azure_account_name_from_endpoint()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: '&str::parse'
      Src: /src/opendal/core/services/azure-common/src/lib.rs:559,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/services/azure-common/src/lib.rs:559,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 564
      start: 558
    functionDepth: 33
    functionLinenumber: 558
    functionLinenumberEnd: 564
    functionName: tests::test_azure_uri_context_removes_sig
    functionSourceFile: /src/opendal/core/services/azure-common/src/lib.rs
    functionUses: 0
    functionsReached:
    - '&str::parse'
    - Result::unwrap
    linkageType: ''
    returnType: void
    signature: fn test_azure_uri_context_removes_sig()
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - actual
    - expected
    - name
    argTypes:
    - '&AzureStorageConfig'
    - '&AzureStorageConfig'
    - '&str'
    constantsTouched: []
    func_position:
      end: 588
      start: 567
    functionDepth: 0
    functionLinenumber: 567
    functionLinenumberEnd: 588
    functionName: tests::assert_azure_storage_config_eq
    functionSourceFile: /src/opendal/core/services/azure-common/src/lib.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: 'fn assert_azure_storage_config_eq(actual: &AzureStorageConfig,expected:
      &AzureStorageConfig,name: &str,)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::debug_struct
      Src: /src/opendal/core/services/postgresql/src/config.rs:55,1
    - Dst: field
      Src: /src/opendal/core/services/postgresql/src/config.rs:55,1
    - Dst: field
      Src: /src/opendal/core/services/postgresql/src/config.rs:55,1
    - Dst: field
      Src: /src/opendal/core/services/postgresql/src/config.rs:55,1
    - Dst: field
      Src: /src/opendal/core/services/postgresql/src/config.rs:55,1
    - Dst: finish_non_exhaustive
      Src: /src/opendal/core/services/postgresql/src/config.rs:55,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 20
    argCount: 1
    argNames:
    - f
    argTypes:
    - '&mut std::fmt::Formatter<''_>'
    constantsTouched: []
    func_position:
      end: 61
      start: 54
    functionDepth: 5
    functionLinenumber: 54
    functionLinenumberEnd: 61
    functionName: PostgresqlConfig::fmt
    functionSourceFile: /src/opendal/core/services/postgresql/src/config.rs
    functionUses: 0
    functionsReached:
    - field
    - Result::debug_struct
    - finish_non_exhaustive
    linkageType: ''
    returnType: std::fmt::Result
    signature: 'fn fmt(&self, f: &mut std::fmt::Formatter<''_>) -> std::fmt::Result'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::options
      Src: /src/opendal/core/services/postgresql/src/config.rs:68,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/postgresql/src/config.rs:68,1
    - Dst: Result::authority
      Src: /src/opendal/core/services/postgresql/src/config.rs:70,1
    - Dst: Result::entry
      Src: /src/opendal/core/services/postgresql/src/config.rs:71,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/postgresql/src/config.rs:71,1
    - Dst: crate::Entry::or_insert_with
      Src: /src/opendal/core/services/postgresql/src/config.rs:71,1
    - Dst: Result::root
      Src: /src/opendal/core/services/postgresql/src/config.rs:75,1
    - Dst: is_empty
      Src: /src/opendal/core/services/postgresql/src/config.rs:76,1
    - Dst: split_once
      Src: /src/opendal/core/services/postgresql/src/config.rs:78,1
    - Dst: Some
      Src: /src/opendal/core/services/postgresql/src/config.rs:79,1
    - Dst: is_empty
      Src: /src/opendal/core/services/postgresql/src/config.rs:83,1
    - Dst: Result::entry
      Src: /src/opendal/core/services/postgresql/src/config.rs:84,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/postgresql/src/config.rs:84,1
    - Dst: crate::Entry::or_insert_with
      Src: /src/opendal/core/services/postgresql/src/config.rs:84,1
    - Dst: to_string
      Src: /src/opendal/core/services/postgresql/src/config.rs:85,1
    - Dst: Result::is_empty
      Src: /src/opendal/core/services/postgresql/src/config.rs:89,1
    - Dst: Result::insert
      Src: /src/opendal/core/services/postgresql/src/config.rs:91,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/postgresql/src/config.rs:91,1
    - Dst: Result::to_string
      Src: /src/opendal/core/services/postgresql/src/config.rs:91,1
    - Dst: Self::from_iter
      Src: /src/opendal/core/services/postgresql/src/config.rs:95,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 57
    argCount: 1
    argNames:
    - uri
    argTypes:
    - '&opendal_core::OperatorUri'
    constantsTouched: []
    func_position:
      end: 96
      start: 67
    functionDepth: 35
    functionLinenumber: 67
    functionLinenumberEnd: 96
    functionName: PostgresqlConfig::from_uri
    functionSourceFile: /src/opendal/core/services/postgresql/src/config.rs
    functionUses: 0
    functionsReached:
    - Result::clone
    - to_string
    - Self::from_iter
    - split_once
    - Result::to_string
    - Result::entry
    - crate::Entry::or_insert_with
    - Result::insert
    - is_empty
    - Some
    - Result::is_empty
    - '&str::to_string'
    - Result::root
    - Result::authority
    - Result::options
    linkageType: ''
    returnType: opendal_core::Result
    signature: 'fn from_uri(uri: &opendal_core::OperatorUri) -> opendal_core::Result<Self>'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 100
      start: 98
    functionDepth: 0
    functionLinenumber: 98
    functionLinenumberEnd: 100
    functionName: PostgresqlConfig::into_builder
    functionSourceFile: /src/opendal/core/services/postgresql/src/config.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Self::Builder
    signature: fn into_builder(self) -> Self::Builder
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: OperatorUri::new
      Src: /src/opendal/core/services/sqlite/src/config.rs:118,1
    - Dst: Vec::<(String, String)>::new
      Src: /src/opendal/core/services/sqlite/src/config.rs:118,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/services/sqlite/src/config.rs:118,1
    - Dst: SqliteConfig::from_uri
      Src: /src/opendal/core/services/sqlite/src/config.rs:120,1
    - Dst: opendal_core::Result::unwrap
      Src: /src/opendal/core/services/sqlite/src/config.rs:120,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 124
      start: 116
    functionDepth: 29
    functionLinenumber: 116
    functionLinenumberEnd: 124
    functionName: tests::from_uri_sets_connection_string_table_and_root
    functionSourceFile: /src/opendal/core/services/sqlite/src/config.rs
    functionUses: 0
    functionsReached:
    - Vec::<(String, String)>::new
    - OperatorUri::new
    - SqliteConfig::from_uri
    - Result::unwrap
    - opendal_core::Result::unwrap
    linkageType: ''
    returnType: void
    signature: fn from_uri_sets_connection_string_table_and_root()
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - core
    - root
    argTypes:
    - Arc<PostgresqlCore>
    - String
    constantsTouched: []
    func_position:
      end: 33
      start: 31
    functionDepth: 0
    functionLinenumber: 31
    functionLinenumberEnd: 33
    functionName: PostgresqlDeleter::new
    functionSourceFile: /src/opendal/core/services/postgresql/src/deleter.rs
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(core: Arc<PostgresqlCore>, root: String) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/postgresql/src/deleter.rs:38,1
    - Dst: delete
      Src: /src/opendal/core/services/postgresql/src/deleter.rs:39,1
    - Dst: Ok
      Src: /src/opendal/core/services/postgresql/src/deleter.rs:40,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 2
    argNames:
    - path
    argTypes:
    - String
    - OpDelete
    constantsTouched: []
    func_position:
      end: 41
      start: 37
    functionDepth: 32
    functionLinenumber: 37
    functionLinenumberEnd: 41
    functionName: PostgresqlDeleter::delete_once
    functionSourceFile: /src/opendal/core/services/postgresql/src/deleter.rs
    functionUses: 0
    functionsReached:
    - Ok
    - build_abs_path
    - delete
    linkageType: ''
    returnType: Result
    signature: 'async fn delete_once(&self, path: String, _: OpDelete) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: to_string
      Src: /src/opendal/core/services/postgresql/src/reader.rs:32,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - backend
    - path
    argTypes:
    - PostgresqlBackend
    - '&str'
    - OpRead
    constantsTouched: []
    func_position:
      end: 34
      start: 29
    functionDepth: 2
    functionLinenumber: 29
    functionLinenumberEnd: 34
    functionName: PostgresqlReader::new
    functionSourceFile: /src/opendal/core/services/postgresql/src/reader.rs
    functionUses: 1
    functionsReached:
    - to_string
    linkageType: ''
    returnType: Self
    signature: 'pub(super) fn new(backend: PostgresqlBackend, path: &str, _: OpRead)
      -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: as_str
      Src: /src/opendal/core/services/postgresql/src/reader.rs:40,1
    - Dst: build_abs_path
      Src: /src/opendal/core/services/postgresql/src/reader.rs:41,1
    - Dst: get
      Src: /src/opendal/core/services/postgresql/src/reader.rs:42,1
    - Dst: Err
      Src: /src/opendal/core/services/postgresql/src/reader.rs:45,1
    - Dst: Error::new
      Src: /src/opendal/core/services/postgresql/src/reader.rs:45,1
    - Dst: Result::slice
      Src: /src/opendal/core/services/postgresql/src/reader.rs:51,1
    - Dst: (Vec::to_content_range
      Src: /src/opendal/core/services/postgresql/src/reader.rs:51,1
    - Dst: Result::len
      Src: /src/opendal/core/services/postgresql/src/reader.rs:51,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/postgresql/src/reader.rs:52,1
    - Dst: Self::with_content_length
      Src: /src/opendal/core/services/postgresql/src/reader.rs:52,1
    - Dst: Result::len
      Src: /src/opendal/core/services/postgresql/src/reader.rs:52,1
    - Dst: Ok
      Src: /src/opendal/core/services/postgresql/src/reader.rs:53,1
    - Dst: RpRead::new
      Src: /src/opendal/core/services/postgresql/src/reader.rs:54,1
    - Dst: Box::new
      Src: /src/opendal/core/services/postgresql/src/reader.rs:55,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 37
    argCount: 1
    argNames:
    - range
    argTypes:
    - BytesRange
    constantsTouched: []
    func_position:
      end: 57
      start: 38
    functionDepth: 36
    functionLinenumber: 38
    functionLinenumberEnd: 57
    functionName: PostgresqlReader::open
    functionSourceFile: /src/opendal/core/services/postgresql/src/reader.rs
    functionUses: 0
    functionsReached:
    - Metadata::new
    - get
    - Ok
    - Box::new
    - Self::with_content_length
    - build_abs_path
    - Error::new
    - Err
    - as_str
    - Result::slice
    - (Vec::to_content_range
    - Result::len
    - RpRead::new
    linkageType: ''
    returnType: Result
    signature: 'async fn open(&self, range: BytesRange) -> Result<(RpRead, Box<dyn
      oio::ReadStreamDyn>)>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: get_or_try_init
      Src: /src/opendal/core/services/postgresql/src/core.rs:36,1
    - Dst: PgPool::connect_with
      Src: /src/opendal/core/services/postgresql/src/core.rs:38,1
    - Dst: clone
      Src: /src/opendal/core/services/postgresql/src/core.rs:38,1
    - Dst: map_err
      Src: /src/opendal/core/services/postgresql/src/core.rs:38,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 43
      start: 35
    functionDepth: 2
    functionLinenumber: 35
    functionLinenumberEnd: 43
    functionName: PostgresqlCore::get_client
    functionSourceFile: /src/opendal/core/services/postgresql/src/core.rs
    functionUses: 4
    functionsReached:
    - get_or_try_init
    - map_err
    - PgPool::connect_with
    - clone
    linkageType: ''
    returnType: Result
    signature: async fn get_client(&self) -> Result<&PgPool>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: PostgresqlCore::get_client
      Src: /src/opendal/core/services/postgresql/src/core.rs:46,1
    - Dst: sqlx::query_scalar
      Src: /src/opendal/core/services/postgresql/src/core.rs:56,1
    - Dst: bind
      Src: /src/opendal/core/services/postgresql/src/core.rs:56,1
    - Dst: fetch_optional
      Src: /src/opendal/core/services/postgresql/src/core.rs:56,1
    - Dst: map_err
      Src: /src/opendal/core/services/postgresql/src/core.rs:56,1
    - Dst: Ok
      Src: /src/opendal/core/services/postgresql/src/core.rs:65,1
    - Dst: Vec::map
      Src: /src/opendal/core/services/postgresql/src/core.rs:65,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 1
    argNames:
    - path
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 66
      start: 45
    functionDepth: 3
    functionLinenumber: 45
    functionLinenumberEnd: 66
    functionName: PostgresqlCore::get
    functionSourceFile: /src/opendal/core/services/postgresql/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - Ok
    - fetch_optional
    - sqlx::query_scalar
    - bind
    - PostgresqlCore::get_client
    - Vec::map
    linkageType: ''
    returnType: Result
    signature: 'pub async fn get(&self, path: &str) -> Result<Option<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: PostgresqlCore::get_client
      Src: /src/opendal/core/services/postgresql/src/core.rs:69,1
    - Dst: sqlx::query_scalar
      Src: /src/opendal/core/services/postgresql/src/core.rs:71,1
    - Dst: bind
      Src: /src/opendal/core/services/postgresql/src/core.rs:71,1
    - Dst: fetch_optional
      Src: /src/opendal/core/services/postgresql/src/core.rs:71,1
    - Dst: map_err
      Src: /src/opendal/core/services/postgresql/src/core.rs:71,1
    - Dst: Vec::map
      Src: /src/opendal/core/services/postgresql/src/core.rs:80,1
    - Dst: Result::try_into
      Src: /src/opendal/core/services/postgresql/src/core.rs:82,1
    - Dst: map_err
      Src: /src/opendal/core/services/postgresql/src/core.rs:82,1
    - Dst: Error::new
      Src: /src/opendal/core/services/postgresql/src/core.rs:83,1
    - Dst: Self::set_source
      Src: /src/opendal/core/services/postgresql/src/core.rs:83,1
    - Dst: Result::transpose
      Src: /src/opendal/core/services/postgresql/src/core.rs:80,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 27
    argCount: 1
    argNames:
    - path
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 88
      start: 68
    functionDepth: 36
    functionLinenumber: 68
    functionLinenumberEnd: 88
    functionName: PostgresqlCore::get_length
    functionSourceFile: /src/opendal/core/services/postgresql/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - fetch_optional
    - sqlx::query_scalar
    - bind
    - Error::new
    - PostgresqlCore::get_client
    - Result::try_into
    - Self::set_source
    - Vec::map
    - Result::transpose
    linkageType: ''
    returnType: Result
    signature: 'pub async fn get_length(&self, path: &str) -> Result<Option<usize>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: PostgresqlCore::get_client
      Src: /src/opendal/core/services/postgresql/src/core.rs:91,1
    - Dst: sqlx::query
      Src: /src/opendal/core/services/postgresql/src/core.rs:96,1
    - Dst: Result::bind
      Src: /src/opendal/core/services/postgresql/src/core.rs:96,1
    - Dst: bind
      Src: /src/opendal/core/services/postgresql/src/core.rs:96,1
    - Dst: Vec::to_vec
      Src: /src/opendal/core/services/postgresql/src/core.rs:103,1
    - Dst: execute
      Src: /src/opendal/core/services/postgresql/src/core.rs:96,1
    - Dst: map_err
      Src: /src/opendal/core/services/postgresql/src/core.rs:96,1
    - Dst: Ok
      Src: /src/opendal/core/services/postgresql/src/core.rs:108,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 27
    argCount: 2
    argNames:
    - path
    - value
    argTypes:
    - '&str'
    - Buffer
    constantsTouched: []
    func_position:
      end: 109
      start: 90
    functionDepth: 36
    functionLinenumber: 90
    functionLinenumberEnd: 109
    functionName: PostgresqlCore::set
    functionSourceFile: /src/opendal/core/services/postgresql/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - Result::bind
    - Ok
    - sqlx::query
    - bind
    - PostgresqlCore::get_client
    - Vec::to_vec
    - execute
    linkageType: ''
    returnType: Result
    signature: 'pub async fn set(&self, path: &str, value: Buffer) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: PostgresqlCore::get_client
      Src: /src/opendal/core/services/postgresql/src/core.rs:112,1
    - Dst: sqlx::query
      Src: /src/opendal/core/services/postgresql/src/core.rs:114,1
    - Dst: Result::bind
      Src: /src/opendal/core/services/postgresql/src/core.rs:114,1
    - Dst: execute
      Src: /src/opendal/core/services/postgresql/src/core.rs:114,1
    - Dst: map_err
      Src: /src/opendal/core/services/postgresql/src/core.rs:114,1
    - Dst: Ok
      Src: /src/opendal/core/services/postgresql/src/core.rs:123,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 1
    argNames:
    - path
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 124
      start: 111
    functionDepth: 36
    functionLinenumber: 111
    functionLinenumberEnd: 124
    functionName: PostgresqlCore::delete
    functionSourceFile: /src/opendal/core/services/postgresql/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - Result::bind
    - Ok
    - sqlx::query
    - PostgresqlCore::get_client
    - execute
    linkageType: ''
    returnType: Result
    signature: 'pub async fn delete(&self, path: &str) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Error::new
      Src: /src/opendal/core/services/postgresql/src/core.rs:128,1
    - Dst: Self::set_source
      Src: /src/opendal/core/services/postgresql/src/core.rs:128,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - err
    argTypes:
    - sqlx::Error
    constantsTouched: []
    func_position:
      end: 129
      start: 127
    functionDepth: 36
    functionLinenumber: 127
    functionLinenumberEnd: 129
    functionName: parse_postgres_error
    functionSourceFile: /src/opendal/core/services/postgresql/src/core.rs
    functionUses: 0
    functionsReached:
    - Self::set_source
    - Error::new
    linkageType: ''
    returnType: Error
    signature: 'fn parse_postgres_error(err: sqlx::Error) -> Error'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: oio::QueueBuf::new
      Src: /src/opendal/core/services/postgresql/src/writer.rs:35,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - core
    - path
    argTypes:
    - Arc<PostgresqlCore>
    - String
    constantsTouched: []
    func_position:
      end: 37
      start: 31
    functionDepth: 4
    functionLinenumber: 31
    functionLinenumberEnd: 37
    functionName: PostgresqlWriter::new
    functionSourceFile: /src/opendal/core/services/postgresql/src/writer.rs
    functionUses: 1
    functionsReached:
    - oio::QueueBuf::new
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(core: Arc<PostgresqlCore>, path: String) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: push
      Src: /src/opendal/core/services/postgresql/src/writer.rs:42,1
    - Dst: Ok
      Src: /src/opendal/core/services/postgresql/src/writer.rs:43,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - bs
    argTypes:
    - Buffer
    constantsTouched: []
    func_position:
      end: 44
      start: 41
    functionDepth: 5
    functionLinenumber: 41
    functionLinenumberEnd: 44
    functionName: PostgresqlWriter::write
    functionSourceFile: /src/opendal/core/services/postgresql/src/writer.rs
    functionUses: 0
    functionsReached:
    - Ok
    - push
    linkageType: ''
    returnType: Result
    signature: 'async fn write(&mut self, bs: Buffer) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: clone
      Src: /src/opendal/core/services/postgresql/src/writer.rs:47,1
    - Dst: collect
      Src: /src/opendal/core/services/postgresql/src/writer.rs:47,1
    - Dst: io::Result::len
      Src: /src/opendal/core/services/postgresql/src/writer.rs:48,1
    - Dst: set
      Src: /src/opendal/core/services/postgresql/src/writer.rs:49,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/postgresql/src/writer.rs:51,1
    - Dst: EntryMode::from_path
      Src: /src/opendal/core/services/postgresql/src/writer.rs:51,1
    - Dst: Self::with_content_length
      Src: /src/opendal/core/services/postgresql/src/writer.rs:51,1
    - Dst: Ok
      Src: /src/opendal/core/services/postgresql/src/writer.rs:52,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 23
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 53
      start: 46
    functionDepth: 36
    functionLinenumber: 46
    functionLinenumberEnd: 53
    functionName: PostgresqlWriter::close
    functionSourceFile: /src/opendal/core/services/postgresql/src/writer.rs
    functionUses: 0
    functionsReached:
    - collect
    - Metadata::new
    - Ok
    - io::Result::len
    - set
    - Self::with_content_length
    - clone
    - EntryMode::from_path
    linkageType: ''
    returnType: Result
    signature: async fn close(&mut self) -> Result<Metadata>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: clear
      Src: /src/opendal/core/services/postgresql/src/writer.rs:56,1
    - Dst: Ok
      Src: /src/opendal/core/services/postgresql/src/writer.rs:57,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 58
      start: 55
    functionDepth: 2
    functionLinenumber: 55
    functionLinenumberEnd: 58
    functionName: PostgresqlWriter::abort
    functionSourceFile: /src/opendal/core/services/postgresql/src/writer.rs
    functionUses: 0
    functionsReached:
    - clear
    - Ok
    linkageType: ''
    returnType: Result
    signature: async fn abort(&mut self) -> Result<()>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: register::<Postgresql>
      Src: /src/opendal/core/services/postgresql/src/lib.rs:23,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - registry
    argTypes:
    - '&opendal_core::OperatorRegistry'
    constantsTouched: []
    func_position:
      end: 24
      start: 22
    functionDepth: 0
    functionLinenumber: 22
    functionLinenumberEnd: 24
    functionName: register_postgresql_service
    functionSourceFile: /src/opendal/core/services/postgresql/src/lib.rs
    functionUses: 1
    functionsReached:
    - register::<Postgresql>
    linkageType: ''
    returnType: void
    signature: 'pub fn register_postgresql_service(registry: &opendal_core::OperatorRegistry)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::is_empty
      Src: /src/opendal/core/services/postgresql/src/backend.rs:51,1
    - Dst: Some
      Src: /src/opendal/core/services/postgresql/src/backend.rs:52,1
    - Dst: Result::to_string
      Src: /src/opendal/core/services/postgresql/src/backend.rs:52,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 1
    argNames:
    - v
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 55
      start: 50
    functionDepth: 4
    functionLinenumber: 50
    functionLinenumberEnd: 55
    functionName: PostgresqlBuilder::connection_string
    functionSourceFile: /src/opendal/core/services/postgresql/src/backend.rs
    functionUses: 0
    functionsReached:
    - Result::is_empty
    - Result::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn connection_string(mut self, v: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::is_empty
      Src: /src/opendal/core/services/postgresql/src/backend.rs:61,1
    - Dst: Some
      Src: /src/opendal/core/services/postgresql/src/backend.rs:64,1
    - Dst: Result::to_string
      Src: /src/opendal/core/services/postgresql/src/backend.rs:64,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - root
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 68
      start: 60
    functionDepth: 4
    functionLinenumber: 60
    functionLinenumberEnd: 68
    functionName: PostgresqlBuilder::root
    functionSourceFile: /src/opendal/core/services/postgresql/src/backend.rs
    functionUses: 0
    functionsReached:
    - Result::is_empty
    - Result::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn root(mut self, root: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self::is_empty
      Src: /src/opendal/core/services/postgresql/src/backend.rs:72,1
    - Dst: Some
      Src: /src/opendal/core/services/postgresql/src/backend.rs:73,1
    - Dst: Self::to_string
      Src: /src/opendal/core/services/postgresql/src/backend.rs:73,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 1
    argNames:
    - table
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 76
      start: 71
    functionDepth: 4
    functionLinenumber: 71
    functionLinenumberEnd: 76
    functionName: PostgresqlBuilder::table
    functionSourceFile: /src/opendal/core/services/postgresql/src/backend.rs
    functionUses: 0
    functionsReached:
    - Self::is_empty
    - Self::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn table(mut self, table: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self::is_empty
      Src: /src/opendal/core/services/postgresql/src/backend.rs:82,1
    - Dst: Some
      Src: /src/opendal/core/services/postgresql/src/backend.rs:83,1
    - Dst: Self::to_string
      Src: /src/opendal/core/services/postgresql/src/backend.rs:83,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 1
    argNames:
    - key_field
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 86
      start: 81
    functionDepth: 4
    functionLinenumber: 81
    functionLinenumberEnd: 86
    functionName: PostgresqlBuilder::key_field
    functionSourceFile: /src/opendal/core/services/postgresql/src/backend.rs
    functionUses: 0
    functionsReached:
    - Self::is_empty
    - Self::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn key_field(mut self, key_field: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self::is_empty
      Src: /src/opendal/core/services/postgresql/src/backend.rs:92,1
    - Dst: Some
      Src: /src/opendal/core/services/postgresql/src/backend.rs:93,1
    - Dst: Self::to_string
      Src: /src/opendal/core/services/postgresql/src/backend.rs:93,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 1
    argNames:
    - value_field
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 96
      start: 91
    functionDepth: 4
    functionLinenumber: 91
    functionLinenumberEnd: 96
    functionName: PostgresqlBuilder::value_field
    functionSourceFile: /src/opendal/core/services/postgresql/src/backend.rs
    functionUses: 0
    functionsReached:
    - Self::is_empty
    - Self::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn value_field(mut self, value_field: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/core/services/postgresql/src/backend.rs:106,1
    - Dst: Error::new
      Src: /src/opendal/core/services/postgresql/src/backend.rs:107,1
    - Dst: Self::with_context
      Src: /src/opendal/core/services/postgresql/src/backend.rs:107,1
    - Dst: parse::<PgConnectOptions>
      Src: /src/opendal/core/services/postgresql/src/backend.rs:113,1
    - Dst: map_err
      Src: /src/opendal/core/services/postgresql/src/backend.rs:113,1
    - Dst: Error::new
      Src: /src/opendal/core/services/postgresql/src/backend.rs:114,1
    - Dst: Self::with_context
      Src: /src/opendal/core/services/postgresql/src/backend.rs:114,1
    - Dst: Self::set_source
      Src: /src/opendal/core/services/postgresql/src/backend.rs:114,1
    - Dst: Err
      Src: /src/opendal/core/services/postgresql/src/backend.rs:122,1
    - Dst: Error::new
      Src: /src/opendal/core/services/postgresql/src/backend.rs:122,1
    - Dst: Self::with_context
      Src: /src/opendal/core/services/postgresql/src/backend.rs:122,1
    - Dst: unwrap_or_else
      Src: /src/opendal/core/services/postgresql/src/backend.rs:127,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/postgresql/src/backend.rs:127,1
    - Dst: unwrap_or_else
      Src: /src/opendal/core/services/postgresql/src/backend.rs:129,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/postgresql/src/backend.rs:132,1
    - Dst: normalize_root
      Src: /src/opendal/core/services/postgresql/src/backend.rs:134,1
    - Dst: unwrap_or_else
      Src: /src/opendal/core/services/postgresql/src/backend.rs:134,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/postgresql/src/backend.rs:134,1
    - Dst: as_str
      Src: /src/opendal/core/services/postgresql/src/backend.rs:134,1
    - Dst: Ok
      Src: /src/opendal/core/services/postgresql/src/backend.rs:136,1
    - Dst: PostgresqlBackend::new
      Src: /src/opendal/core/services/postgresql/src/backend.rs:136,1
    - Dst: OnceCell::new
      Src: /src/opendal/core/services/postgresql/src/backend.rs:137,1
    - Dst: Self::with_normalized_root
      Src: /src/opendal/core/services/postgresql/src/backend.rs:136,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 59
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 144
      start: 102
    functionDepth: 36
    functionLinenumber: 102
    functionLinenumberEnd: 144
    functionName: PostgresqlBuilder::build
    functionSourceFile: /src/opendal/core/services/postgresql/src/backend.rs
    functionUses: 0
    functionsReached:
    - map_err
    - parse::<PgConnectOptions>
    - Ok
    - Self::with_normalized_root
    - normalize_root
    - Error::new
    - Err
    - as_str
    - PostgresqlBackend::new
    - '&str::to_string'
    - OnceCell::new
    - Self::set_source
    - Self::with_context
    - unwrap_or_else
    linkageType: ''
    returnType: Result
    signature: fn build(self) -> Result<impl Service>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: ServiceInfo::new
      Src: /src/opendal/core/services/postgresql/src/backend.rs:158,1
    - Dst: Default::default
      Src: /src/opendal/core/services/postgresql/src/backend.rs:166,1
    - Dst: Arc::new
      Src: /src/opendal/core/services/postgresql/src/backend.rs:170,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/postgresql/src/backend.rs:171,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 1
    argNames:
    - core
    argTypes:
    - PostgresqlCore
    constantsTouched: []
    func_position:
      end: 175
      start: 157
    functionDepth: 33
    functionLinenumber: 157
    functionLinenumberEnd: 175
    functionName: PostgresqlBackend::new
    functionSourceFile: /src/opendal/core/services/postgresql/src/backend.rs
    functionUses: 1
    functionsReached:
    - Arc::new
    - ServiceInfo::new
    - '&str::to_string'
    - Default::default
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(core: PostgresqlCore) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: with_root
      Src: /src/opendal/core/services/postgresql/src/backend.rs:178,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 1
    argNames:
    - root
    argTypes:
    - String
    constantsTouched: []
    func_position:
      end: 181
      start: 177
    functionDepth: 33
    functionLinenumber: 177
    functionLinenumberEnd: 181
    functionName: PostgresqlBackend::with_normalized_root
    functionSourceFile: /src/opendal/core/services/postgresql/src/backend.rs
    functionUses: 0
    functionsReached:
    - with_root
    linkageType: ''
    returnType: Self
    signature: 'fn with_normalized_root(mut self, root: String) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: clone
      Src: /src/opendal/core/services/postgresql/src/backend.rs:192,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 193
      start: 191
    functionDepth: 2
    functionLinenumber: 191
    functionLinenumberEnd: 193
    functionName: PostgresqlBackend::info
    functionSourceFile: /src/opendal/core/services/postgresql/src/backend.rs
    functionUses: 0
    functionsReached:
    - clone
    linkageType: ''
    returnType: ServiceInfo
    signature: fn info(&self) -> ServiceInfo
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 197
      start: 195
    functionDepth: 0
    functionLinenumber: 195
    functionLinenumberEnd: 197
    functionName: PostgresqlBackend::capability
    functionSourceFile: /src/opendal/core/services/postgresql/src/backend.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Capability
    signature: fn capability(&self) -> Capability
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/core/services/postgresql/src/backend.rs:205,1
    - Dst: Error::new
      Src: /src/opendal/core/services/postgresql/src/backend.rs:205,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - _ctx
    - _path
    - _args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpCreateDir
    constantsTouched: []
    func_position:
      end: 209
      start: 199
    functionDepth: 36
    functionLinenumber: 199
    functionLinenumberEnd: 209
    functionName: PostgresqlBackend::create_dir
    functionSourceFile: /src/opendal/core/services/postgresql/src/backend.rs
    functionUses: 0
    functionsReached:
    - Error::new
    - Err
    linkageType: ''
    returnType: Result
    signature: 'async fn create_dir(&self,_ctx: &OperationContext,_path: &str,_args:
      OpCreateDir,) -> Result<RpCreateDir>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/postgresql/src/backend.rs:212,1
    - Dst: build_abs_path
      Src: /src/opendal/core/services/postgresql/src/backend.rs:214,1
    - Dst: Ok
      Src: /src/opendal/core/services/postgresql/src/backend.rs:215,1
    - Dst: RpStat::new
      Src: /src/opendal/core/services/postgresql/src/backend.rs:215,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/postgresql/src/backend.rs:215,1
    - Dst: get_length
      Src: /src/opendal/core/services/postgresql/src/backend.rs:217,1
    - Dst: Ok
      Src: /src/opendal/core/services/postgresql/src/backend.rs:218,1
    - Dst: RpStat::new
      Src: /src/opendal/core/services/postgresql/src/backend.rs:218,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/postgresql/src/backend.rs:219,1
    - Dst: Self::with_content_length
      Src: /src/opendal/core/services/postgresql/src/backend.rs:219,1
    - Dst: Err
      Src: /src/opendal/core/services/postgresql/src/backend.rs:221,1
    - Dst: Error::new
      Src: /src/opendal/core/services/postgresql/src/backend.rs:221,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 28
    argCount: 3
    argNames:
    - _ctx
    - path
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpStat
    constantsTouched: []
    func_position:
      end: 227
      start: 211
    functionDepth: 35
    functionLinenumber: 211
    functionLinenumberEnd: 227
    functionName: PostgresqlBackend::stat
    functionSourceFile: /src/opendal/core/services/postgresql/src/backend.rs
    functionUses: 0
    functionsReached:
    - Metadata::new
    - Ok
    - Self::with_content_length
    - get_length
    - RpStat::new
    - build_abs_path
    - Err
    - Error::new
    linkageType: ''
    returnType: Result
    signature: 'async fn stat(&self, _ctx: &OperationContext, path: &str, _: OpStat)
      -> Result<RpStat>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/core/services/postgresql/src/backend.rs:230,1
    - Dst: oio::StreamReader::new
      Src: /src/opendal/core/services/postgresql/src/backend.rs:230,1
    - Dst: PostgresqlReader::new
      Src: /src/opendal/core/services/postgresql/src/backend.rs:230,1
    - Dst: PostgresqlBackend::clone
      Src: /src/opendal/core/services/postgresql/src/backend.rs:231,1
    - Dst: Ok
      Src: /src/opendal/core/services/postgresql/src/backend.rs:237,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - _ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpRead
    constantsTouched: []
    func_position:
      end: 238
      start: 228
    functionDepth: 3
    functionLinenumber: 228
    functionLinenumberEnd: 238
    functionName: PostgresqlBackend::read
    functionSourceFile: /src/opendal/core/services/postgresql/src/backend.rs
    functionUses: 0
    functionsReached:
    - oio::StreamReader::new
    - PostgresqlBackend::clone
    - PostgresqlReader::new
    - Ok
    linkageType: ''
    returnType: Result
    signature: 'fn read(&self, _ctx: &OperationContext, path: &str, args: OpRead)
      -> Result<Self::Reader>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/postgresql/src/backend.rs:242,1
    - Dst: Ok
      Src: /src/opendal/core/services/postgresql/src/backend.rs:243,1
    - Dst: PostgresqlWriter::new
      Src: /src/opendal/core/services/postgresql/src/backend.rs:243,1
    - Dst: clone
      Src: /src/opendal/core/services/postgresql/src/backend.rs:243,1
    - Dst: Ok
      Src: /src/opendal/core/services/postgresql/src/backend.rs:246,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 3
    argNames:
    - _ctx
    - path
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpWrite
    constantsTouched: []
    func_position:
      end: 247
      start: 240
    functionDepth: 5
    functionLinenumber: 240
    functionLinenumberEnd: 247
    functionName: PostgresqlBackend::write
    functionSourceFile: /src/opendal/core/services/postgresql/src/backend.rs
    functionUses: 0
    functionsReached:
    - PostgresqlWriter::new
    - Ok
    - clone
    - build_abs_path
    linkageType: ''
    returnType: Result
    signature: 'fn write(&self, _ctx: &OperationContext, path: &str, _: OpWrite) ->
      Result<Self::Writer>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/core/services/postgresql/src/backend.rs:251,1
    - Dst: oio::OneShotDeleter::new
      Src: /src/opendal/core/services/postgresql/src/backend.rs:251,1
    - Dst: PostgresqlDeleter::new
      Src: /src/opendal/core/services/postgresql/src/backend.rs:251,1
    - Dst: clone
      Src: /src/opendal/core/services/postgresql/src/backend.rs:252,1
    - Dst: clone
      Src: /src/opendal/core/services/postgresql/src/backend.rs:253,1
    - Dst: Ok
      Src: /src/opendal/core/services/postgresql/src/backend.rs:257,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 1
    argNames:
    - _ctx
    argTypes:
    - '&OperationContext'
    constantsTouched: []
    func_position:
      end: 258
      start: 249
    functionDepth: 2
    functionLinenumber: 249
    functionLinenumberEnd: 258
    functionName: PostgresqlBackend::delete
    functionSourceFile: /src/opendal/core/services/postgresql/src/backend.rs
    functionUses: 0
    functionsReached:
    - oio::OneShotDeleter::new
    - PostgresqlDeleter::new
    - clone
    - Ok
    linkageType: ''
    returnType: Result
    signature: 'fn delete(&self, _ctx: &OperationContext) -> Result<Self::Deleter>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/core/services/postgresql/src/backend.rs:261,1
    - Dst: Error::new
      Src: /src/opendal/core/services/postgresql/src/backend.rs:261,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - _ctx
    - _path
    - _args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpList
    constantsTouched: []
    func_position:
      end: 265
      start: 260
    functionDepth: 36
    functionLinenumber: 260
    functionLinenumberEnd: 265
    functionName: PostgresqlBackend::list
    functionSourceFile: /src/opendal/core/services/postgresql/src/backend.rs
    functionUses: 0
    functionsReached:
    - Error::new
    - Err
    linkageType: ''
    returnType: Result
    signature: 'fn list(&self, _ctx: &OperationContext, _path: &str, _args: OpList)
      -> Result<Self::Lister>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/core/services/postgresql/src/backend.rs:275,1
    - Dst: Error::new
      Src: /src/opendal/core/services/postgresql/src/backend.rs:275,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 5
    argNames:
    - _ctx
    - _from
    - _to
    - _args
    - _opts
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    - OpCopy
    - OpCopier
    constantsTouched: []
    func_position:
      end: 279
      start: 267
    functionDepth: 36
    functionLinenumber: 267
    functionLinenumberEnd: 279
    functionName: PostgresqlBackend::copy
    functionSourceFile: /src/opendal/core/services/postgresql/src/backend.rs
    functionUses: 0
    functionsReached:
    - Error::new
    - Err
    linkageType: ''
    returnType: Result
    signature: 'fn copy(&self,_ctx: &OperationContext,_from: &str,_to: &str,_args:
      OpCopy,_opts: OpCopier,) -> Result<Self::Copier>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/core/services/postgresql/src/backend.rs:288,1
    - Dst: Error::new
      Src: /src/opendal/core/services/postgresql/src/backend.rs:288,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - _ctx
    - _from
    - _to
    - _args
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    - OpRename
    constantsTouched: []
    func_position:
      end: 292
      start: 281
    functionDepth: 36
    functionLinenumber: 281
    functionLinenumberEnd: 292
    functionName: PostgresqlBackend::rename
    functionSourceFile: /src/opendal/core/services/postgresql/src/backend.rs
    functionUses: 0
    functionsReached:
    - Error::new
    - Err
    linkageType: ''
    returnType: Result
    signature: 'async fn rename(&self,_ctx: &OperationContext,_from: &str,_to: &str,_args:
      OpRename,) -> Result<RpRename>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/core/services/postgresql/src/backend.rs:300,1
    - Dst: Error::new
      Src: /src/opendal/core/services/postgresql/src/backend.rs:300,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - _ctx
    - _path
    - _args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpPresign
    constantsTouched: []
    func_position:
      end: 304
      start: 294
    functionDepth: 36
    functionLinenumber: 294
    functionLinenumberEnd: 304
    functionName: PostgresqlBackend::presign
    functionSourceFile: /src/opendal/core/services/postgresql/src/backend.rs
    functionUses: 0
    functionsReached:
    - Error::new
    - Err
    linkageType: ''
    returnType: Result
    signature: 'async fn presign(&self,_ctx: &OperationContext,_path: &str,_args:
      OpPresign,) -> Result<RpPresign>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::debug_struct
      Src: /src/opendal/core/services/sled/src/config.rs:40,1
    - Dst: field
      Src: /src/opendal/core/services/sled/src/config.rs:40,1
    - Dst: field
      Src: /src/opendal/core/services/sled/src/config.rs:40,1
    - Dst: finish_non_exhaustive
      Src: /src/opendal/core/services/sled/src/config.rs:40,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 1
    argNames:
    - f
    argTypes:
    - '&mut std::fmt::Formatter<''_>'
    constantsTouched: []
    func_position:
      end: 44
      start: 39
    functionDepth: 5
    functionLinenumber: 39
    functionLinenumberEnd: 44
    functionName: SledConfig::fmt
    functionSourceFile: /src/opendal/core/services/sled/src/config.rs
    functionUses: 0
    functionsReached:
    - field
    - Result::debug_struct
    - finish_non_exhaustive
    linkageType: ''
    returnType: std::fmt::Result
    signature: 'fn fmt(&self, f: &mut std::fmt::Formatter<''_>) -> std::fmt::Result'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::options
      Src: /src/opendal/core/services/sled/src/config.rs:51,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/sled/src/config.rs:51,1
    - Dst: Result::root
      Src: /src/opendal/core/services/sled/src/config.rs:53,1
    - Dst: is_empty
      Src: /src/opendal/core/services/sled/src/config.rs:54,1
    - Dst: Result::entry
      Src: /src/opendal/core/services/sled/src/config.rs:56,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/sled/src/config.rs:56,1
    - Dst: crate::Entry::or_insert_with
      Src: /src/opendal/core/services/sled/src/config.rs:56,1
    - Dst: Self::from_iter
      Src: /src/opendal/core/services/sled/src/config.rs:60,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 20
    argCount: 1
    argNames:
    - uri
    argTypes:
    - '&opendal_core::OperatorUri'
    constantsTouched: []
    func_position:
      end: 61
      start: 50
    functionDepth: 35
    functionLinenumber: 50
    functionLinenumberEnd: 61
    functionName: SledConfig::from_uri
    functionSourceFile: /src/opendal/core/services/sled/src/config.rs
    functionUses: 1
    functionsReached:
    - Result::clone
    - Self::from_iter
    - Result::entry
    - crate::Entry::or_insert_with
    - is_empty
    - Result::root
    - '&str::to_string'
    - Result::options
    linkageType: ''
    returnType: opendal_core::Result
    signature: 'fn from_uri(uri: &opendal_core::OperatorUri) -> opendal_core::Result<Self>'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 65
      start: 63
    functionDepth: 0
    functionLinenumber: 63
    functionLinenumberEnd: 65
    functionName: SledConfig::into_builder
    functionSourceFile: /src/opendal/core/services/sled/src/config.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Self::Builder
    signature: fn into_builder(self) -> Self::Builder
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: OperatorUri::new
      Src: /src/opendal/core/services/sled/src/config.rs:76,1
    - Dst: Vec::<(String, String)>::new
      Src: /src/opendal/core/services/sled/src/config.rs:78,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/services/sled/src/config.rs:76,1
    - Dst: SledConfig::from_uri
      Src: /src/opendal/core/services/sled/src/config.rs:82,1
    - Dst: opendal_core::Result::unwrap
      Src: /src/opendal/core/services/sled/src/config.rs:82,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 86
      start: 75
    functionDepth: 29
    functionLinenumber: 75
    functionLinenumberEnd: 86
    functionName: tests::from_uri_sets_datadir_tree_and_root
    functionSourceFile: /src/opendal/core/services/sled/src/config.rs
    functionUses: 0
    functionsReached:
    - Vec::<(String, String)>::new
    - OperatorUri::new
    - SledConfig::from_uri
    - Result::unwrap
    - opendal_core::Result::unwrap
    linkageType: ''
    returnType: void
    signature: fn from_uri_sets_datadir_tree_and_root()
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - core
    - root
    argTypes:
    - Arc<SledCore>
    - String
    constantsTouched: []
    func_position:
      end: 33
      start: 31
    functionDepth: 0
    functionLinenumber: 31
    functionLinenumberEnd: 33
    functionName: SledDeleter::new
    functionSourceFile: /src/opendal/core/services/sled/src/deleter.rs
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(core: Arc<SledCore>, root: String) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/sled/src/deleter.rs:38,1
    - Dst: delete
      Src: /src/opendal/core/services/sled/src/deleter.rs:39,1
    - Dst: Ok
      Src: /src/opendal/core/services/sled/src/deleter.rs:40,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 2
    argNames:
    - path
    argTypes:
    - String
    - OpDelete
    constantsTouched: []
    func_position:
      end: 41
      start: 37
    functionDepth: 32
    functionLinenumber: 37
    functionLinenumberEnd: 41
    functionName: SledDeleter::delete_once
    functionSourceFile: /src/opendal/core/services/sled/src/deleter.rs
    functionUses: 0
    functionsReached:
    - Ok
    - build_abs_path
    - delete
    linkageType: ''
    returnType: Result
    signature: 'async fn delete_once(&self, path: String, _: OpDelete) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: CompfsCore::list
      Src: /src/opendal/core/services/sled/src/lister.rs:33,1
    - Dst: Ok
      Src: /src/opendal/core/services/sled/src/lister.rs:35,1
    - Dst: into_iter
      Src: /src/opendal/core/services/sled/src/lister.rs:37,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 3
    argNames:
    - core
    - root
    - path
    argTypes:
    - Arc<SledCore>
    - String
    - String
    constantsTouched: []
    func_position:
      end: 39
      start: 32
    functionDepth: 2
    functionLinenumber: 32
    functionLinenumberEnd: 39
    functionName: SledLister::new
    functionSourceFile: /src/opendal/core/services/sled/src/lister.rs
    functionUses: 1
    functionsReached:
    - CompfsCore::list
    - Ok
    - into_iter
    linkageType: ''
    returnType: Result
    signature: 'pub fn new(core: Arc<SledCore>, root: String, path: String) -> Result<Self>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: next
      Src: /src/opendal/core/services/sled/src/lister.rs:44,1
    - Dst: build_rel_path
      Src: /src/opendal/core/services/sled/src/lister.rs:45,1
    - Dst: FoyerKey::ends_with
      Src: /src/opendal/core/services/sled/src/lister.rs:48,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/sled/src/lister.rs:53,1
    - Dst: anyhow::Result::mode
      Src: /src/opendal/core/services/sled/src/lister.rs:54,1
    - Dst: Option::is_file
      Src: /src/opendal/core/services/sled/src/lister.rs:54,1
    - Dst: anyhow::Result::set_content_length
      Src: /src/opendal/core/services/sled/src/lister.rs:55,1
    - Dst: oio::Entry::new
      Src: /src/opendal/core/services/sled/src/lister.rs:57,1
    - Dst: Ok
      Src: /src/opendal/core/services/sled/src/lister.rs:58,1
    - Dst: Some
      Src: /src/opendal/core/services/sled/src/lister.rs:58,1
    - Dst: Ok
      Src: /src/opendal/core/services/sled/src/lister.rs:61,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 29
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 62
      start: 43
    functionDepth: 4
    functionLinenumber: 43
    functionLinenumberEnd: 62
    functionName: SledLister::next
    functionSourceFile: /src/opendal/core/services/sled/src/lister.rs
    functionUses: 0
    functionsReached:
    - next
    - Metadata::new
    - anyhow::Result::set_content_length
    - oio::Entry::new
    - Ok
    - anyhow::Result::mode
    - build_rel_path
    - Option::is_file
    - Some
    - FoyerKey::ends_with
    linkageType: ''
    returnType: Result
    signature: async fn next(&mut self) -> Result<Option<oio::Entry>>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: to_string
      Src: /src/opendal/core/services/sled/src/reader.rs:32,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - backend
    - path
    argTypes:
    - SledBackend
    - '&str'
    - OpRead
    constantsTouched: []
    func_position:
      end: 34
      start: 29
    functionDepth: 2
    functionLinenumber: 29
    functionLinenumberEnd: 34
    functionName: SledReader::new
    functionSourceFile: /src/opendal/core/services/sled/src/reader.rs
    functionUses: 1
    functionsReached:
    - to_string
    linkageType: ''
    returnType: Self
    signature: 'pub(super) fn new(backend: SledBackend, path: &str, _: OpRead) ->
      Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: as_str
      Src: /src/opendal/core/services/sled/src/reader.rs:40,1
    - Dst: build_abs_path
      Src: /src/opendal/core/services/sled/src/reader.rs:41,1
    - Dst: get
      Src: /src/opendal/core/services/sled/src/reader.rs:42,1
    - Dst: Err
      Src: /src/opendal/core/services/sled/src/reader.rs:45,1
    - Dst: Error::new
      Src: /src/opendal/core/services/sled/src/reader.rs:45,1
    - Dst: Result::slice
      Src: /src/opendal/core/services/sled/src/reader.rs:48,1
    - Dst: (Vec::to_content_range
      Src: /src/opendal/core/services/sled/src/reader.rs:48,1
    - Dst: Result::len
      Src: /src/opendal/core/services/sled/src/reader.rs:48,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/sled/src/reader.rs:49,1
    - Dst: Self::with_content_length
      Src: /src/opendal/core/services/sled/src/reader.rs:49,1
    - Dst: Result::len
      Src: /src/opendal/core/services/sled/src/reader.rs:49,1
    - Dst: Ok
      Src: /src/opendal/core/services/sled/src/reader.rs:50,1
    - Dst: RpRead::new
      Src: /src/opendal/core/services/sled/src/reader.rs:51,1
    - Dst: Box::new
      Src: /src/opendal/core/services/sled/src/reader.rs:52,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 36
    argCount: 1
    argNames:
    - range
    argTypes:
    - BytesRange
    constantsTouched: []
    func_position:
      end: 54
      start: 38
    functionDepth: 36
    functionLinenumber: 38
    functionLinenumberEnd: 54
    functionName: SledReader::open
    functionSourceFile: /src/opendal/core/services/sled/src/reader.rs
    functionUses: 0
    functionsReached:
    - Metadata::new
    - get
    - Ok
    - Box::new
    - Self::with_content_length
    - build_abs_path
    - Error::new
    - Err
    - as_str
    - Result::slice
    - (Vec::to_content_range
    - Result::len
    - RpRead::new
    linkageType: ''
    returnType: Result
    signature: 'async fn open(&self, range: BytesRange) -> Result<(RpRead, Box<dyn
      oio::ReadStreamDyn>)>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::debug_struct
      Src: /src/opendal/core/services/sled/src/core.rs:30,1
    - Dst: field
      Src: /src/opendal/core/services/sled/src/core.rs:30,1
    - Dst: finish
      Src: /src/opendal/core/services/sled/src/core.rs:30,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - f
    argTypes:
    - '&mut std::fmt::Formatter<''_>'
    constantsTouched: []
    func_position:
      end: 33
      start: 29
    functionDepth: 5
    functionLinenumber: 29
    functionLinenumberEnd: 33
    functionName: SledCore::fmt
    functionSourceFile: /src/opendal/core/services/sled/src/core.rs
    functionUses: 0
    functionsReached:
    - field
    - finish
    - Result::debug_struct
    linkageType: ''
    returnType: std::fmt::Result
    signature: 'fn fmt(&self, f: &mut std::fmt::Formatter<''_>) -> std::fmt::Result'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: get
      Src: /src/opendal/core/services/sled/src/core.rs:38,1
    - Dst: map_err
      Src: /src/opendal/core/services/sled/src/core.rs:38,1
    - Dst: Ok
      Src: /src/opendal/core/services/sled/src/core.rs:39,1
    - Dst: map
      Src: /src/opendal/core/services/sled/src/core.rs:39,1
    - Dst: Buffer::from
      Src: /src/opendal/core/services/sled/src/core.rs:39,1
    - Dst: Result::to_vec
      Src: /src/opendal/core/services/sled/src/core.rs:39,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 1
    argNames:
    - path
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 40
      start: 37
    functionDepth: 40
    functionLinenumber: 37
    functionLinenumberEnd: 40
    functionName: SledCore::get
    functionSourceFile: /src/opendal/core/services/sled/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - get
    - Ok
    - Result::to_vec
    - map
    - Buffer::from
    linkageType: ''
    returnType: Result
    signature: 'pub fn get(&self, path: &str) -> Result<Option<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: insert
      Src: /src/opendal/core/services/sled/src/core.rs:43,1
    - Dst: Vec::to_vec
      Src: /src/opendal/core/services/sled/src/core.rs:44,1
    - Dst: map_err
      Src: /src/opendal/core/services/sled/src/core.rs:43,1
    - Dst: Ok
      Src: /src/opendal/core/services/sled/src/core.rs:46,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 2
    argNames:
    - path
    - value
    argTypes:
    - '&str'
    - Buffer
    constantsTouched: []
    func_position:
      end: 47
      start: 42
    functionDepth: 6
    functionLinenumber: 42
    functionLinenumberEnd: 47
    functionName: SledCore::set
    functionSourceFile: /src/opendal/core/services/sled/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - insert
    - Vec::to_vec
    - Ok
    linkageType: ''
    returnType: Result
    signature: 'pub fn set(&self, path: &str, value: Buffer) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: remove
      Src: /src/opendal/core/services/sled/src/core.rs:50,1
    - Dst: map_err
      Src: /src/opendal/core/services/sled/src/core.rs:50,1
    - Dst: Ok
      Src: /src/opendal/core/services/sled/src/core.rs:51,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - path
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 52
      start: 49
    functionDepth: 36
    functionLinenumber: 49
    functionLinenumberEnd: 52
    functionName: SledCore::delete
    functionSourceFile: /src/opendal/core/services/sled/src/core.rs
    functionUses: 0
    functionsReached:
    - remove
    - map_err
    - Ok
    linkageType: ''
    returnType: Result
    signature: 'pub fn delete(&self, path: &str) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: scan_prefix
      Src: /src/opendal/core/services/sled/src/core.rs:55,1
    - Dst: Vec::default
      Src: /src/opendal/core/services/sled/src/core.rs:56,1
    - Dst: Result::map_err
      Src: /src/opendal/core/services/sled/src/core.rs:59,1
    - Dst: FoyerKey::to_vec
      Src: /src/opendal/core/services/sled/src/core.rs:60,1
    - Dst: String::from_utf8
      Src: /src/opendal/core/services/sled/src/core.rs:61,1
    - Dst: map_err
      Src: /src/opendal/core/services/sled/src/core.rs:61,1
    - Dst: Error::new
      Src: /src/opendal/core/services/sled/src/core.rs:62,1
    - Dst: Self::set_source
      Src: /src/opendal/core/services/sled/src/core.rs:62,1
    - Dst: Self::push
      Src: /src/opendal/core/services/sled/src/core.rs:66,1
    - Dst: Vec::len
      Src: /src/opendal/core/services/sled/src/core.rs:66,1
    - Dst: Ok
      Src: /src/opendal/core/services/sled/src/core.rs:69,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 27
    argCount: 1
    argNames:
    - path
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 70
      start: 54
    functionDepth: 36
    functionLinenumber: 54
    functionLinenumberEnd: 70
    functionName: SledCore::list
    functionSourceFile: /src/opendal/core/services/sled/src/core.rs
    functionUses: 0
    functionsReached:
    - Result::map_err
    - map_err
    - String::from_utf8
    - scan_prefix
    - Ok
    - FoyerKey::to_vec
    - Self::push
    - Vec::default
    - Error::new
    - Self::set_source
    - Vec::len
    linkageType: ''
    returnType: Result
    signature: 'pub fn list(&self, path: &str) -> Result<Vec<(String, u64)>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Error::new
      Src: /src/opendal/integrations/object_store/src/service/error.rs:24,1
    - Dst: Self::set_source
      Src: /src/opendal/integrations/object_store/src/service/error.rs:24,1
    - Dst: Error::new
      Src: /src/opendal/integrations/object_store/src/service/error.rs:28,1
    - Dst: Self::set_source
      Src: /src/opendal/integrations/object_store/src/service/error.rs:28,1
    - Dst: Error::new
      Src: /src/opendal/integrations/object_store/src/service/error.rs:33,1
    - Dst: Self::set_source
      Src: /src/opendal/integrations/object_store/src/service/error.rs:33,1
    - Dst: Error::new
      Src: /src/opendal/integrations/object_store/src/service/error.rs:37,1
    - Dst: Self::set_source
      Src: /src/opendal/integrations/object_store/src/service/error.rs:37,1
    - Dst: Error::new
      Src: /src/opendal/integrations/object_store/src/service/error.rs:41,1
    - Dst: Self::set_source
      Src: /src/opendal/integrations/object_store/src/service/error.rs:41,1
    - Dst: Error::new
      Src: /src/opendal/integrations/object_store/src/service/error.rs:45,1
    - Dst: Self::set_source
      Src: /src/opendal/integrations/object_store/src/service/error.rs:45,1
    - Dst: Error::new
      Src: /src/opendal/integrations/object_store/src/service/error.rs:49,1
    - Dst: Self::set_source
      Src: /src/opendal/integrations/object_store/src/service/error.rs:49,1
    - Dst: Error::new
      Src: /src/opendal/integrations/object_store/src/service/error.rs:52,1
    - Dst: Self::set_source
      Src: /src/opendal/integrations/object_store/src/service/error.rs:52,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 26
    argCount: 1
    argNames:
    - err
    argTypes:
    - object_store::Error
    constantsTouched: []
    func_position:
      end: 54
      start: 21
    functionDepth: 36
    functionLinenumber: 21
    functionLinenumberEnd: 54
    functionName: parse_error
    functionSourceFile: /src/opendal/integrations/object_store/src/service/error.rs
    functionUses: 335
    functionsReached:
    - Self::set_source
    - Error::new
    linkageType: ''
    returnType: Error
    signature: 'pub(crate) fn parse_error(err: object_store::Error) -> Error'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: oio::QueueBuf::new
      Src: /src/opendal/core/services/sled/src/writer.rs:35,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - core
    - path
    argTypes:
    - Arc<SledCore>
    - String
    constantsTouched: []
    func_position:
      end: 37
      start: 31
    functionDepth: 4
    functionLinenumber: 31
    functionLinenumberEnd: 37
    functionName: SledWriter::new
    functionSourceFile: /src/opendal/core/services/sled/src/writer.rs
    functionUses: 1
    functionsReached:
    - oio::QueueBuf::new
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(core: Arc<SledCore>, path: String) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: push
      Src: /src/opendal/core/services/sled/src/writer.rs:42,1
    - Dst: Ok
      Src: /src/opendal/core/services/sled/src/writer.rs:43,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - bs
    argTypes:
    - Buffer
    constantsTouched: []
    func_position:
      end: 44
      start: 41
    functionDepth: 5
    functionLinenumber: 41
    functionLinenumberEnd: 44
    functionName: SledWriter::write
    functionSourceFile: /src/opendal/core/services/sled/src/writer.rs
    functionUses: 0
    functionsReached:
    - Ok
    - push
    linkageType: ''
    returnType: Result
    signature: 'async fn write(&mut self, bs: Buffer) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: clone
      Src: /src/opendal/core/services/sled/src/writer.rs:47,1
    - Dst: collect
      Src: /src/opendal/core/services/sled/src/writer.rs:47,1
    - Dst: io::Result::len
      Src: /src/opendal/core/services/sled/src/writer.rs:48,1
    - Dst: set
      Src: /src/opendal/core/services/sled/src/writer.rs:49,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/sled/src/writer.rs:51,1
    - Dst: EntryMode::from_path
      Src: /src/opendal/core/services/sled/src/writer.rs:51,1
    - Dst: Self::with_content_length
      Src: /src/opendal/core/services/sled/src/writer.rs:51,1
    - Dst: Ok
      Src: /src/opendal/core/services/sled/src/writer.rs:52,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 22
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 53
      start: 46
    functionDepth: 36
    functionLinenumber: 46
    functionLinenumberEnd: 53
    functionName: SledWriter::close
    functionSourceFile: /src/opendal/core/services/sled/src/writer.rs
    functionUses: 0
    functionsReached:
    - collect
    - Metadata::new
    - Ok
    - io::Result::len
    - set
    - Self::with_content_length
    - clone
    - EntryMode::from_path
    linkageType: ''
    returnType: Result
    signature: async fn close(&mut self) -> Result<Metadata>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: clear
      Src: /src/opendal/core/services/sled/src/writer.rs:56,1
    - Dst: Ok
      Src: /src/opendal/core/services/sled/src/writer.rs:57,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 58
      start: 55
    functionDepth: 2
    functionLinenumber: 55
    functionLinenumberEnd: 58
    functionName: SledWriter::abort
    functionSourceFile: /src/opendal/core/services/sled/src/writer.rs
    functionUses: 0
    functionsReached:
    - clear
    - Ok
    linkageType: ''
    returnType: Result
    signature: async fn abort(&mut self) -> Result<()>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: register::<Sled>
      Src: /src/opendal/core/services/sled/src/lib.rs:23,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - registry
    argTypes:
    - '&opendal_core::OperatorRegistry'
    constantsTouched: []
    func_position:
      end: 24
      start: 22
    functionDepth: 0
    functionLinenumber: 22
    functionLinenumberEnd: 24
    functionName: register_sled_service
    functionSourceFile: /src/opendal/core/services/sled/src/lib.rs
    functionUses: 1
    functionsReached:
    - register::<Sled>
    linkageType: ''
    returnType: void
    signature: 'pub fn register_sled_service(registry: &opendal_core::OperatorRegistry)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Some
      Src: /src/opendal/core/services/sled/src/backend.rs:43,1
    - Dst: into
      Src: /src/opendal/core/services/sled/src/backend.rs:43,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - path
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 45
      start: 42
    functionDepth: 29
    functionLinenumber: 42
    functionLinenumberEnd: 45
    functionName: SledBuilder::datadir
    functionSourceFile: /src/opendal/core/services/sled/src/backend.rs
    functionUses: 0
    functionsReached:
    - into
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn datadir(mut self, path: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Some
      Src: /src/opendal/core/services/sled/src/backend.rs:49,1
    - Dst: Self::into
      Src: /src/opendal/core/services/sled/src/backend.rs:49,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - tree
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 51
      start: 48
    functionDepth: 29
    functionLinenumber: 48
    functionLinenumberEnd: 51
    functionName: SledBuilder::tree
    functionSourceFile: /src/opendal/core/services/sled/src/backend.rs
    functionUses: 0
    functionsReached:
    - Self::into
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn tree(mut self, tree: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::is_empty
      Src: /src/opendal/core/services/sled/src/backend.rs:55,1
    - Dst: Some
      Src: /src/opendal/core/services/sled/src/backend.rs:58,1
    - Dst: Result::to_string
      Src: /src/opendal/core/services/sled/src/backend.rs:58,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - root
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 62
      start: 54
    functionDepth: 4
    functionLinenumber: 54
    functionLinenumberEnd: 62
    functionName: SledBuilder::root
    functionSourceFile: /src/opendal/core/services/sled/src/backend.rs
    functionUses: 0
    functionsReached:
    - Result::is_empty
    - Result::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn root(mut self, root: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: ok_or_else
      Src: /src/opendal/core/services/sled/src/backend.rs:69,1
    - Dst: Error::new
      Src: /src/opendal/core/services/sled/src/backend.rs:70,1
    - Dst: Self::with_context
      Src: /src/opendal/core/services/sled/src/backend.rs:70,1
    - Dst: sled::open
      Src: /src/opendal/core/services/sled/src/backend.rs:74,1
    - Dst: Result::map_err
      Src: /src/opendal/core/services/sled/src/backend.rs:74,1
    - Dst: Error::new
      Src: /src/opendal/core/services/sled/src/backend.rs:75,1
    - Dst: Self::with_context
      Src: /src/opendal/core/services/sled/src/backend.rs:75,1
    - Dst: Self::with_context
      Src: /src/opendal/core/services/sled/src/backend.rs:75,1
    - Dst: clone
      Src: /src/opendal/core/services/sled/src/backend.rs:77,1
    - Dst: Self::set_source
      Src: /src/opendal/core/services/sled/src/backend.rs:75,1
    - Dst: unwrap_or_else
      Src: /src/opendal/core/services/sled/src/backend.rs:82,1
    - Dst: to_string
      Src: /src/opendal/core/services/sled/src/backend.rs:85,1
    - Dst: i64::open_tree
      Src: /src/opendal/core/services/sled/src/backend.rs:87,1
    - Dst: map_err
      Src: /src/opendal/core/services/sled/src/backend.rs:87,1
    - Dst: Error::new
      Src: /src/opendal/core/services/sled/src/backend.rs:88,1
    - Dst: Self::with_context
      Src: /src/opendal/core/services/sled/src/backend.rs:88,1
    - Dst: Self::with_context
      Src: /src/opendal/core/services/sled/src/backend.rs:88,1
    - Dst: clone
      Src: /src/opendal/core/services/sled/src/backend.rs:90,1
    - Dst: Self::with_context
      Src: /src/opendal/core/services/sled/src/backend.rs:88,1
    - Dst: clone
      Src: /src/opendal/core/services/sled/src/backend.rs:91,1
    - Dst: Self::set_source
      Src: /src/opendal/core/services/sled/src/backend.rs:88,1
    - Dst: normalize_root
      Src: /src/opendal/core/services/sled/src/backend.rs:95,1
    - Dst: unwrap_or_default
      Src: /src/opendal/core/services/sled/src/backend.rs:95,1
    - Dst: Ok
      Src: /src/opendal/core/services/sled/src/backend.rs:97,1
    - Dst: SledBackend::new
      Src: /src/opendal/core/services/sled/src/backend.rs:97,1
    - Dst: Self::with_normalized_root
      Src: /src/opendal/core/services/sled/src/backend.rs:97,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 62
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 102
      start: 68
    functionDepth: 36
    functionLinenumber: 68
    functionLinenumberEnd: 102
    functionName: SledBuilder::build
    functionSourceFile: /src/opendal/core/services/sled/src/backend.rs
    functionUses: 0
    functionsReached:
    - Result::map_err
    - to_string
    - map_err
    - unwrap_or_else
    - SledBackend::new
    - sled::open
    - i64::open_tree
    - Ok
    - Self::with_normalized_root
    - clone
    - normalize_root
    - Error::new
    - Self::set_source
    - Self::with_context
    - unwrap_or_default
    - ok_or_else
    linkageType: ''
    returnType: Result
    signature: fn build(self) -> Result<impl Service>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: ServiceInfo::new
      Src: /src/opendal/core/services/sled/src/backend.rs:116,1
    - Dst: Default::default
      Src: /src/opendal/core/services/sled/src/backend.rs:125,1
    - Dst: Arc::new
      Src: /src/opendal/core/services/sled/src/backend.rs:129,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/sled/src/backend.rs:130,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 1
    argNames:
    - core
    argTypes:
    - SledCore
    constantsTouched: []
    func_position:
      end: 134
      start: 115
    functionDepth: 33
    functionLinenumber: 115
    functionLinenumberEnd: 134
    functionName: SledBackend::new
    functionSourceFile: /src/opendal/core/services/sled/src/backend.rs
    functionUses: 1
    functionsReached:
    - Arc::new
    - ServiceInfo::new
    - '&str::to_string'
    - Default::default
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(core: SledCore) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: with_root
      Src: /src/opendal/core/services/sled/src/backend.rs:137,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 1
    argNames:
    - root
    argTypes:
    - String
    constantsTouched: []
    func_position:
      end: 140
      start: 136
    functionDepth: 33
    functionLinenumber: 136
    functionLinenumberEnd: 140
    functionName: SledBackend::with_normalized_root
    functionSourceFile: /src/opendal/core/services/sled/src/backend.rs
    functionUses: 0
    functionsReached:
    - with_root
    linkageType: ''
    returnType: Self
    signature: 'fn with_normalized_root(mut self, root: String) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: clone
      Src: /src/opendal/core/services/sled/src/backend.rs:151,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 152
      start: 150
    functionDepth: 2
    functionLinenumber: 150
    functionLinenumberEnd: 152
    functionName: SledBackend::info
    functionSourceFile: /src/opendal/core/services/sled/src/backend.rs
    functionUses: 0
    functionsReached:
    - clone
    linkageType: ''
    returnType: ServiceInfo
    signature: fn info(&self) -> ServiceInfo
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 156
      start: 154
    functionDepth: 0
    functionLinenumber: 154
    functionLinenumberEnd: 156
    functionName: SledBackend::capability
    functionSourceFile: /src/opendal/core/services/sled/src/backend.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Capability
    signature: fn capability(&self) -> Capability
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/core/services/sled/src/backend.rs:164,1
    - Dst: Error::new
      Src: /src/opendal/core/services/sled/src/backend.rs:164,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - _ctx
    - _path
    - _args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpCreateDir
    constantsTouched: []
    func_position:
      end: 168
      start: 158
    functionDepth: 36
    functionLinenumber: 158
    functionLinenumberEnd: 168
    functionName: SledBackend::create_dir
    functionSourceFile: /src/opendal/core/services/sled/src/backend.rs
    functionUses: 0
    functionsReached:
    - Error::new
    - Err
    linkageType: ''
    returnType: Result
    signature: 'async fn create_dir(&self,_ctx: &OperationContext,_path: &str,_args:
      OpCreateDir,) -> Result<RpCreateDir>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/sled/src/backend.rs:171,1
    - Dst: build_abs_path
      Src: /src/opendal/core/services/sled/src/backend.rs:173,1
    - Dst: Ok
      Src: /src/opendal/core/services/sled/src/backend.rs:174,1
    - Dst: RpStat::new
      Src: /src/opendal/core/services/sled/src/backend.rs:174,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/sled/src/backend.rs:174,1
    - Dst: get
      Src: /src/opendal/core/services/sled/src/backend.rs:176,1
    - Dst: Ok
      Src: /src/opendal/core/services/sled/src/backend.rs:178,1
    - Dst: RpStat::new
      Src: /src/opendal/core/services/sled/src/backend.rs:178,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/sled/src/backend.rs:179,1
    - Dst: Self::with_content_length
      Src: /src/opendal/core/services/sled/src/backend.rs:179,1
    - Dst: Result::len
      Src: /src/opendal/core/services/sled/src/backend.rs:179,1
    - Dst: Err
      Src: /src/opendal/core/services/sled/src/backend.rs:181,1
    - Dst: Error::new
      Src: /src/opendal/core/services/sled/src/backend.rs:181,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 29
    argCount: 3
    argNames:
    - _ctx
    - path
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpStat
    constantsTouched: []
    func_position:
      end: 184
      start: 170
    functionDepth: 36
    functionLinenumber: 170
    functionLinenumberEnd: 184
    functionName: SledBackend::stat
    functionSourceFile: /src/opendal/core/services/sled/src/backend.rs
    functionUses: 0
    functionsReached:
    - Metadata::new
    - get
    - Ok
    - Self::with_content_length
    - RpStat::new
    - build_abs_path
    - Err
    - Error::new
    - Result::len
    linkageType: ''
    returnType: Result
    signature: 'async fn stat(&self, _ctx: &OperationContext, path: &str, _: OpStat)
      -> Result<RpStat>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/core/services/sled/src/backend.rs:187,1
    - Dst: oio::StreamReader::new
      Src: /src/opendal/core/services/sled/src/backend.rs:187,1
    - Dst: SledReader::new
      Src: /src/opendal/core/services/sled/src/backend.rs:187,1
    - Dst: SledBackend::clone
      Src: /src/opendal/core/services/sled/src/backend.rs:188,1
    - Dst: Ok
      Src: /src/opendal/core/services/sled/src/backend.rs:194,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - _ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpRead
    constantsTouched: []
    func_position:
      end: 195
      start: 185
    functionDepth: 3
    functionLinenumber: 185
    functionLinenumberEnd: 195
    functionName: SledBackend::read
    functionSourceFile: /src/opendal/core/services/sled/src/backend.rs
    functionUses: 0
    functionsReached:
    - oio::StreamReader::new
    - SledBackend::clone
    - Ok
    - SledReader::new
    linkageType: ''
    returnType: Result
    signature: 'fn read(&self, _ctx: &OperationContext, path: &str, args: OpRead)
      -> Result<Self::Reader>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/sled/src/backend.rs:199,1
    - Dst: SledWriter::new
      Src: /src/opendal/core/services/sled/src/backend.rs:200,1
    - Dst: clone
      Src: /src/opendal/core/services/sled/src/backend.rs:200,1
    - Dst: Ok
      Src: /src/opendal/core/services/sled/src/backend.rs:201,1
    - Dst: Ok
      Src: /src/opendal/core/services/sled/src/backend.rs:204,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 3
    argNames:
    - _ctx
    - path
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpWrite
    constantsTouched: []
    func_position:
      end: 205
      start: 197
    functionDepth: 5
    functionLinenumber: 197
    functionLinenumberEnd: 205
    functionName: SledBackend::write
    functionSourceFile: /src/opendal/core/services/sled/src/backend.rs
    functionUses: 0
    functionsReached:
    - SledWriter::new
    - Ok
    - clone
    - build_abs_path
    linkageType: ''
    returnType: Result
    signature: 'fn write(&self, _ctx: &OperationContext, path: &str, _: OpWrite) ->
      Result<Self::Writer>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: SledDeleter::new
      Src: /src/opendal/core/services/sled/src/backend.rs:209,1
    - Dst: clone
      Src: /src/opendal/core/services/sled/src/backend.rs:209,1
    - Dst: clone
      Src: /src/opendal/core/services/sled/src/backend.rs:209,1
    - Dst: Ok
      Src: /src/opendal/core/services/sled/src/backend.rs:210,1
    - Dst: oio::OneShotDeleter::new
      Src: /src/opendal/core/services/sled/src/backend.rs:210,1
    - Dst: Ok
      Src: /src/opendal/core/services/sled/src/backend.rs:213,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 1
    argNames:
    - _ctx
    argTypes:
    - '&OperationContext'
    constantsTouched: []
    func_position:
      end: 214
      start: 207
    functionDepth: 2
    functionLinenumber: 207
    functionLinenumberEnd: 214
    functionName: SledBackend::delete
    functionSourceFile: /src/opendal/core/services/sled/src/backend.rs
    functionUses: 0
    functionsReached:
    - oio::OneShotDeleter::new
    - clone
    - SledDeleter::new
    - Ok
    linkageType: ''
    returnType: Result
    signature: 'fn delete(&self, _ctx: &OperationContext) -> Result<Self::Deleter>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/sled/src/backend.rs:218,1
    - Dst: SledLister::new
      Src: /src/opendal/core/services/sled/src/backend.rs:219,1
    - Dst: clone
      Src: /src/opendal/core/services/sled/src/backend.rs:219,1
    - Dst: clone
      Src: /src/opendal/core/services/sled/src/backend.rs:219,1
    - Dst: Ok
      Src: /src/opendal/core/services/sled/src/backend.rs:220,1
    - Dst: oio::HierarchyLister::new
      Src: /src/opendal/core/services/sled/src/backend.rs:220,1
    - Dst: OpStat::recursive
      Src: /src/opendal/core/services/sled/src/backend.rs:220,1
    - Dst: Ok
      Src: /src/opendal/core/services/sled/src/backend.rs:223,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 17
    argCount: 3
    argNames:
    - _ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpList
    constantsTouched: []
    func_position:
      end: 224
      start: 216
    functionDepth: 36
    functionLinenumber: 216
    functionLinenumberEnd: 224
    functionName: SledBackend::list
    functionSourceFile: /src/opendal/core/services/sled/src/backend.rs
    functionUses: 0
    functionsReached:
    - oio::HierarchyLister::new
    - Ok
    - SledLister::new
    - clone
    - build_abs_path
    - OpStat::recursive
    linkageType: ''
    returnType: Result
    signature: 'fn list(&self, _ctx: &OperationContext, path: &str, args: OpList)
      -> Result<Self::Lister>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/core/services/sled/src/backend.rs:234,1
    - Dst: Error::new
      Src: /src/opendal/core/services/sled/src/backend.rs:234,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 5
    argNames:
    - _ctx
    - _from
    - _to
    - _args
    - _opts
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    - OpCopy
    - OpCopier
    constantsTouched: []
    func_position:
      end: 238
      start: 226
    functionDepth: 36
    functionLinenumber: 226
    functionLinenumberEnd: 238
    functionName: SledBackend::copy
    functionSourceFile: /src/opendal/core/services/sled/src/backend.rs
    functionUses: 0
    functionsReached:
    - Error::new
    - Err
    linkageType: ''
    returnType: Result
    signature: 'fn copy(&self,_ctx: &OperationContext,_from: &str,_to: &str,_args:
      OpCopy,_opts: OpCopier,) -> Result<Self::Copier>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/core/services/sled/src/backend.rs:247,1
    - Dst: Error::new
      Src: /src/opendal/core/services/sled/src/backend.rs:247,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - _ctx
    - _from
    - _to
    - _args
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    - OpRename
    constantsTouched: []
    func_position:
      end: 251
      start: 240
    functionDepth: 36
    functionLinenumber: 240
    functionLinenumberEnd: 251
    functionName: SledBackend::rename
    functionSourceFile: /src/opendal/core/services/sled/src/backend.rs
    functionUses: 0
    functionsReached:
    - Error::new
    - Err
    linkageType: ''
    returnType: Result
    signature: 'async fn rename(&self,_ctx: &OperationContext,_from: &str,_to: &str,_args:
      OpRename,) -> Result<RpRename>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/core/services/sled/src/backend.rs:259,1
    - Dst: Error::new
      Src: /src/opendal/core/services/sled/src/backend.rs:259,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - _ctx
    - _path
    - _args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpPresign
    constantsTouched: []
    func_position:
      end: 263
      start: 253
    functionDepth: 36
    functionLinenumber: 253
    functionLinenumberEnd: 263
    functionName: SledBackend::presign
    functionSourceFile: /src/opendal/core/services/sled/src/backend.rs
    functionUses: 0
    functionsReached:
    - Error::new
    - Err
    linkageType: ''
    returnType: Result
    signature: 'async fn presign(&self,_ctx: &OperationContext,_path: &str,_args:
      OpPresign,) -> Result<RpPresign>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::debug_struct
      Src: /src/opendal/core/services/hf/src/config.rs:67,1
    - Dst: field
      Src: /src/opendal/core/services/hf/src/config.rs:67,1
    - Dst: as_ref
      Src: /src/opendal/core/services/hf/src/config.rs:70,1
    - Dst: map
      Src: /src/opendal/core/services/hf/src/config.rs:70,1
    - Dst: field
      Src: /src/opendal/core/services/hf/src/config.rs:67,1
    - Dst: field
      Src: /src/opendal/core/services/hf/src/config.rs:67,1
    - Dst: field
      Src: /src/opendal/core/services/hf/src/config.rs:67,1
    - Dst: field
      Src: /src/opendal/core/services/hf/src/config.rs:67,1
    - Dst: finish_non_exhaustive
      Src: /src/opendal/core/services/hf/src/config.rs:67,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 28
    argCount: 1
    argNames:
    - f
    argTypes:
    - '&mut std::fmt::Formatter<''_>'
    constantsTouched: []
    func_position:
      end: 77
      start: 66
    functionDepth: 5
    functionLinenumber: 66
    functionLinenumberEnd: 77
    functionName: HfConfig::fmt
    functionSourceFile: /src/opendal/core/services/hf/src/config.rs
    functionUses: 0
    functionsReached:
    - field
    - finish_non_exhaustive
    - map
    - as_ref
    - Result::debug_struct
    linkageType: ''
    returnType: std::fmt::Result
    signature: 'fn fmt(&self, f: &mut std::fmt::Formatter<''_>) -> std::fmt::Result'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::options
      Src: /src/opendal/core/services/hf/src/config.rs:84,1
    - Dst: String::new
      Src: /src/opendal/core/services/hf/src/config.rs:89,1
    - Dst: Result::name
      Src: /src/opendal/core/services/hf/src/config.rs:90,1
    - Dst: Result::is_empty
      Src: /src/opendal/core/services/hf/src/config.rs:91,1
    - Dst: push_str
      Src: /src/opendal/core/services/hf/src/config.rs:93,1
    - Dst: Result::root
      Src: /src/opendal/core/services/hf/src/config.rs:95,1
    - Dst: Result::is_empty
      Src: /src/opendal/core/services/hf/src/config.rs:96,1
    - Dst: is_empty
      Src: /src/opendal/core/services/hf/src/config.rs:98,1
    - Dst: push
      Src: /src/opendal/core/services/hf/src/config.rs:99,1
    - Dst: push_str
      Src: /src/opendal/core/services/hf/src/config.rs:101,1
    - Dst: object_store::Result::get
      Src: /src/opendal/core/services/hf/src/config.rs:104,1
    - Dst: Option::map
      Src: /src/opendal/core/services/hf/src/config.rs:104,1
    - Dst: HfDownloadMode::parse
      Src: /src/opendal/core/services/hf/src/config.rs:106,1
    - Dst: Result::transpose
      Src: /src/opendal/core/services/hf/src/config.rs:104,1
    - Dst: is_empty
      Src: /src/opendal/core/services/hf/src/config.rs:109,1
    - Dst: HfUri::parse
      Src: /src/opendal/core/services/hf/src/config.rs:111,1
    - Dst: Ok
      Src: /src/opendal/core/services/hf/src/config.rs:112,1
    - Dst: Some
      Src: /src/opendal/core/services/hf/src/config.rs:113,1
    - Dst: Some
      Src: /src/opendal/core/services/hf/src/config.rs:114,1
    - Dst: object_store::Result::get
      Src: /src/opendal/core/services/hf/src/config.rs:116,1
    - Dst: Option::cloned
      Src: /src/opendal/core/services/hf/src/config.rs:116,1
    - Dst: object_store::Result::get
      Src: /src/opendal/core/services/hf/src/config.rs:117,1
    - Dst: Option::cloned
      Src: /src/opendal/core/services/hf/src/config.rs:117,1
    - Dst: object_store::Result::get
      Src: /src/opendal/core/services/hf/src/config.rs:118,1
    - Dst: Option::cloned
      Src: /src/opendal/core/services/hf/src/config.rs:118,1
    - Dst: object_store::Result::get
      Src: /src/opendal/core/services/hf/src/config.rs:123,1
    - Dst: Option::ok_or_else
      Src: /src/opendal/core/services/hf/src/config.rs:123,1
    - Dst: opendal_core::Error::new
      Src: /src/opendal/core/services/hf/src/config.rs:126,1
    - Dst: Self::with_context
      Src: /src/opendal/core/services/hf/src/config.rs:126,1
    - Dst: and_then
      Src: /src/opendal/core/services/hf/src/config.rs:123,1
    - Dst: HfRepoType::parse
      Src: /src/opendal/core/services/hf/src/config.rs:132,1
    - Dst: Ok
      Src: /src/opendal/core/services/hf/src/config.rs:133,1
    - Dst: Some
      Src: /src/opendal/core/services/hf/src/config.rs:134,1
    - Dst: object_store::Result::get
      Src: /src/opendal/core/services/hf/src/config.rs:135,1
    - Dst: Option::cloned
      Src: /src/opendal/core/services/hf/src/config.rs:135,1
    - Dst: object_store::Result::get
      Src: /src/opendal/core/services/hf/src/config.rs:136,1
    - Dst: Option::cloned
      Src: /src/opendal/core/services/hf/src/config.rs:136,1
    - Dst: object_store::Result::get
      Src: /src/opendal/core/services/hf/src/config.rs:137,1
    - Dst: Option::cloned
      Src: /src/opendal/core/services/hf/src/config.rs:137,1
    - Dst: object_store::Result::get
      Src: /src/opendal/core/services/hf/src/config.rs:138,1
    - Dst: Option::cloned
      Src: /src/opendal/core/services/hf/src/config.rs:138,1
    - Dst: object_store::Result::get
      Src: /src/opendal/core/services/hf/src/config.rs:139,1
    - Dst: Option::cloned
      Src: /src/opendal/core/services/hf/src/config.rs:139,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 106
    argCount: 1
    argNames:
    - uri
    argTypes:
    - '&opendal_core::OperatorUri'
    constantsTouched: []
    func_position:
      end: 143
      start: 83
    functionDepth: 35
    functionLinenumber: 83
    functionLinenumberEnd: 143
    functionName: HfConfig::from_uri
    functionSourceFile: /src/opendal/core/services/hf/src/config.rs
    functionUses: 4
    functionsReached:
    - push
    - HfDownloadMode::parse
    - HfUri::parse
    - Result::is_empty
    - Result::root
    - Self::with_context
    - object_store::Result::get
    - Ok
    - and_then
    - HfRepoType::parse
    - Result::transpose
    - Option::cloned
    - Option::ok_or_else
    - push_str
    - is_empty
    - Some
    - String::new
    - Option::map
    - Result::name
    - opendal_core::Error::new
    - Result::options
    linkageType: ''
    returnType: opendal_core::Result
    signature: 'fn from_uri(uri: &opendal_core::OperatorUri) -> opendal_core::Result<Self>'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 147
      start: 145
    functionDepth: 0
    functionLinenumber: 145
    functionLinenumberEnd: 147
    functionName: HfConfig::into_builder
    functionSourceFile: /src/opendal/core/services/hf/src/config.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Self::Builder
    signature: fn into_builder(self) -> Self::Builder
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: OperatorUri::new
      Src: /src/opendal/core/services/hf/src/config.rs:158,1
    - Dst: Vec::<(String, String)>::new
      Src: /src/opendal/core/services/hf/src/config.rs:160,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/services/hf/src/config.rs:158,1
    - Dst: HfConfig::from_uri
      Src: /src/opendal/core/services/hf/src/config.rs:164,1
    - Dst: opendal_core::Result::unwrap
      Src: /src/opendal/core/services/hf/src/config.rs:164,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 169
      start: 157
    functionDepth: 31
    functionLinenumber: 157
    functionLinenumberEnd: 169
    functionName: tests::from_uri_with_all_components
    functionSourceFile: /src/opendal/core/services/hf/src/config.rs
    functionUses: 0
    functionsReached:
    - HfConfig::from_uri
    - Vec::<(String, String)>::new
    - OperatorUri::new
    - Result::unwrap
    - opendal_core::Result::unwrap
    linkageType: ''
    returnType: void
    signature: fn from_uri_with_all_components()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: OperatorUri::new
      Src: /src/opendal/core/services/hf/src/config.rs:174,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/services/hf/src/config.rs:174,1
    - Dst: HfConfig::from_uri
      Src: /src/opendal/core/services/hf/src/config.rs:188,1
    - Dst: opendal_core::Result::unwrap
      Src: /src/opendal/core/services/hf/src/config.rs:188,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 193
      start: 172
    functionDepth: 29
    functionLinenumber: 172
    functionLinenumberEnd: 193
    functionName: tests::from_uri_via_iter_options
    functionSourceFile: /src/opendal/core/services/hf/src/config.rs
    functionUses: 0
    functionsReached:
    - opendal_core::Result::unwrap
    - OperatorUri::new
    - Result::unwrap
    - HfConfig::from_uri
    linkageType: ''
    returnType: void
    signature: fn from_uri_via_iter_options()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: OperatorUri::new
      Src: /src/opendal/core/services/hf/src/config.rs:197,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/services/hf/src/config.rs:197,1
    - Dst: HfConfig::from_uri
      Src: /src/opendal/core/services/hf/src/config.rs:207,1
    - Dst: opendal_core::Result::unwrap
      Src: /src/opendal/core/services/hf/src/config.rs:207,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 209
      start: 196
    functionDepth: 29
    functionLinenumber: 196
    functionLinenumberEnd: 209
    functionName: tests::from_uri_download_mode_http
    functionSourceFile: /src/opendal/core/services/hf/src/config.rs
    functionUses: 0
    functionsReached:
    - opendal_core::Result::unwrap
    - OperatorUri::new
    - Result::unwrap
    - HfConfig::from_uri
    linkageType: ''
    returnType: void
    signature: fn from_uri_download_mode_http()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: OperatorUri::new
      Src: /src/opendal/core/services/hf/src/config.rs:213,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/services/hf/src/config.rs:213,1
    - Dst: HfConfig::from_uri
      Src: /src/opendal/core/services/hf/src/config.rs:222,1
    - Dst: opendal_core::Result::unwrap
      Src: /src/opendal/core/services/hf/src/config.rs:222,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 224
      start: 212
    functionDepth: 29
    functionLinenumber: 212
    functionLinenumberEnd: 224
    functionName: tests::from_uri_download_mode_defaults_to_xet
    functionSourceFile: /src/opendal/core/services/hf/src/config.rs
    functionUses: 0
    functionsReached:
    - opendal_core::Result::unwrap
    - OperatorUri::new
    - Result::unwrap
    - HfConfig::from_uri
    linkageType: ''
    returnType: void
    signature: fn from_uri_download_mode_defaults_to_xet()
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - core
    - ctx
    argTypes:
    - Arc<HfCore>
    - OperationContext
    constantsTouched: []
    func_position:
      end: 33
      start: 31
    functionDepth: 0
    functionLinenumber: 31
    functionLinenumberEnd: 33
    functionName: HfDeleter::new
    functionSourceFile: /src/opendal/core/services/hf/src/deleter.rs
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(core: Arc<HfCore>, ctx: OperationContext) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::is_empty
      Src: /src/opendal/core/services/hf/src/deleter.rs:36,1
    - Dst: Ok
      Src: /src/opendal/core/services/hf/src/deleter.rs:37,1
    - Dst: is_bucket
      Src: /src/opendal/core/services/hf/src/deleter.rs:40,1
    - Dst: Result::into_iter
      Src: /src/opendal/core/services/hf/src/deleter.rs:41,1
    - Dst: map
      Src: /src/opendal/core/services/hf/src/deleter.rs:41,1
    - Dst: collect
      Src: /src/opendal/core/services/hf/src/deleter.rs:41,1
    - Dst: commit_bucket
      Src: /src/opendal/core/services/hf/src/deleter.rs:45,1
    - Dst: map
      Src: /src/opendal/core/services/hf/src/deleter.rs:45,1
    - Dst: Vec::new
      Src: /src/opendal/core/services/hf/src/deleter.rs:47,1
    - Dst: Vec::new
      Src: /src/opendal/core/services/hf/src/deleter.rs:48,1
    - Dst: ends_with
      Src: /src/opendal/core/services/hf/src/deleter.rs:50,1
    - Dst: Self::push
      Src: /src/opendal/core/services/hf/src/deleter.rs:51,1
    - Dst: Self::push
      Src: /src/opendal/core/services/hf/src/deleter.rs:53,1
    - Dst: commit_git
      Src: /src/opendal/core/services/hf/src/deleter.rs:56,1
    - Dst: map
      Src: /src/opendal/core/services/hf/src/deleter.rs:56,1
    - Dst: Ok
      Src: /src/opendal/core/services/hf/src/deleter.rs:63,1
    - Dst: Error::kind
      Src: /src/opendal/core/services/hf/src/deleter.rs:64,1
    - Dst: Ok
      Src: /src/opendal/core/services/hf/src/deleter.rs:64,1
    - Dst: Err
      Src: /src/opendal/core/services/hf/src/deleter.rs:65,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 67
    argCount: 1
    argNames:
    - paths
    argTypes:
    - Vec<String>
    constantsTouched: []
    func_position:
      end: 67
      start: 35
    functionDepth: 36
    functionLinenumber: 35
    functionLinenumberEnd: 67
    functionName: HfDeleter::delete_paths
    functionSourceFile: /src/opendal/core/services/hf/src/deleter.rs
    functionUses: 2
    functionsReached:
    - collect
    - Ok
    - Result::into_iter
    - Self::push
    - ends_with
    - commit_git
    - commit_bucket
    - map
    - Err
    - Result::is_empty
    - Error::kind
    - is_bucket
    - Vec::new
    linkageType: ''
    returnType: Result
    signature: 'async fn delete_paths(&self, paths: Vec<String>) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: repo_path
      Src: /src/opendal/core/services/hf/src/deleter.rs:72,1
    - Dst: HfDeleter::delete_paths
      Src: /src/opendal/core/services/hf/src/deleter.rs:73,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - path
    argTypes:
    - String
    - OpDelete
    constantsTouched: []
    func_position:
      end: 74
      start: 71
    functionDepth: 37
    functionLinenumber: 71
    functionLinenumberEnd: 74
    functionName: HfDeleter::delete_once
    functionSourceFile: /src/opendal/core/services/hf/src/deleter.rs
    functionUses: 0
    functionsReached:
    - repo_path
    - HfDeleter::delete_paths
    linkageType: ''
    returnType: Result
    signature: 'async fn delete_once(&self, path: String, _: OpDelete) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::iter
      Src: /src/opendal/core/services/hf/src/deleter.rs:77,1
    - Dst: map
      Src: /src/opendal/core/services/hf/src/deleter.rs:77,1
    - Dst: repo_path
      Src: /src/opendal/core/services/hf/src/deleter.rs:79,1
    - Dst: Result::collect
      Src: /src/opendal/core/services/hf/src/deleter.rs:77,1
    - Dst: HfDeleter::delete_paths
      Src: /src/opendal/core/services/hf/src/deleter.rs:82,1
    - Dst: Ok
      Src: /src/opendal/core/services/hf/src/deleter.rs:83,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 17
    argCount: 1
    argNames:
    - batch
    argTypes:
    - Vec<(String, OpDelete)>
    constantsTouched: []
    func_position:
      end: 87
      start: 76
    functionDepth: 36
    functionLinenumber: 76
    functionLinenumberEnd: 87
    functionName: HfDeleter::delete_batch
    functionSourceFile: /src/opendal/core/services/hf/src/deleter.rs
    functionUses: 0
    functionsReached:
    - Ok
    - repo_path
    - Result::iter
    - map
    - Result::collect
    - HfDeleter::delete_paths
    linkageType: ''
    returnType: Result
    signature: 'async fn delete_batch(&self, batch: Vec<(String, OpDelete)>) -> Result<BatchDeleteResult>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: create_test_core
      Src: /src/opendal/core/services/hf/src/deleter.rs:101,1
    - Dst: Some
      Src: /src/opendal/core/services/hf/src/deleter.rs:107,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/hf/src/deleter.rs:107,1
    - Dst: HfDeleter::new
      Src: /src/opendal/core/services/hf/src/deleter.rs:109,1
    - Dst: Arc::new
      Src: /src/opendal/core/services/hf/src/deleter.rs:109,1
    - Dst: Result::delete_batch
      Src: /src/opendal/core/services/hf/src/deleter.rs:117,1
    - Dst: serde_json::from_str
      Src: /src/opendal/core/services/hf/src/deleter.rs:119,1
    - Dst: get_captured_body
      Src: /src/opendal/core/services/hf/src/deleter.rs:119,1
    - Dst: Result::expect
      Src: /src/opendal/core/services/hf/src/deleter.rs:119,1
    - Dst: as_array
      Src: /src/opendal/core/services/hf/src/deleter.rs:121,1
    - Dst: unwrap
      Src: /src/opendal/core/services/hf/src/deleter.rs:121,1
    - Dst: iter
      Src: /src/opendal/core/services/hf/src/deleter.rs:121,1
    - Dst: map
      Src: /src/opendal/core/services/hf/src/deleter.rs:121,1
    - Dst: as_str
      Src: /src/opendal/core/services/hf/src/deleter.rs:125,1
    - Dst: unwrap
      Src: /src/opendal/core/services/hf/src/deleter.rs:125,1
    - Dst: collect
      Src: /src/opendal/core/services/hf/src/deleter.rs:121,1
    - Dst: as_array
      Src: /src/opendal/core/services/hf/src/deleter.rs:130,1
    - Dst: unwrap
      Src: /src/opendal/core/services/hf/src/deleter.rs:130,1
    - Dst: iter
      Src: /src/opendal/core/services/hf/src/deleter.rs:130,1
    - Dst: map
      Src: /src/opendal/core/services/hf/src/deleter.rs:130,1
    - Dst: as_str
      Src: /src/opendal/core/services/hf/src/deleter.rs:134,1
    - Dst: unwrap
      Src: /src/opendal/core/services/hf/src/deleter.rs:134,1
    - Dst: collect
      Src: /src/opendal/core/services/hf/src/deleter.rs:130,1
    - Dst: Ok
      Src: /src/opendal/core/services/hf/src/deleter.rs:139,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 60
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 140
      start: 100
    functionDepth: 34
    functionLinenumber: 100
    functionLinenumberEnd: 140
    functionName: tests::test_git_delete_separates_files_and_folders
    functionSourceFile: /src/opendal/core/services/hf/src/deleter.rs
    functionUses: 0
    functionsReached:
    - collect
    - iter
    - Ok
    - serde_json::from_str
    - Result::expect
    - Arc::new
    - create_test_core
    - unwrap
    - Some
    - Result::delete_batch
    - map
    - as_str
    - '&str::to_string'
    - HfDeleter::new
    - as_array
    - get_captured_body
    linkageType: ''
    returnType: Result
    signature: async fn test_git_delete_separates_files_and_folders() -> Result<()>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: '&str::split'
      Src: /src/opendal/core/services/hf/src/lister.rs:31,1
    - Dst: Result::contains
      Src: /src/opendal/core/services/hf/src/lister.rs:32,1
    - Dst: Result::contains
      Src: /src/opendal/core/services/hf/src/lister.rs:32,1
    - Dst: Result::split_once
      Src: /src/opendal/core/services/hf/src/lister.rs:33,1
    - Dst: split_once
      Src: /src/opendal/core/services/hf/src/lister.rs:34,1
    - Dst: Result::split_once
      Src: /src/opendal/core/services/hf/src/lister.rs:35,1
    - Dst: Result::split
      Src: /src/opendal/core/services/hf/src/lister.rs:36,1
    - Dst: find_map
      Src: /src/opendal/core/services/hf/src/lister.rs:36,1
    - Dst: strip_prefix
      Src: /src/opendal/core/services/hf/src/lister.rs:38,1
    - Dst: map
      Src: /src/opendal/core/services/hf/src/lister.rs:36,1
    - Dst: Result::to_string
      Src: /src/opendal/core/services/hf/src/lister.rs:39,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 35
    argCount: 1
    argNames:
    - link_str
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 43
      start: 30
    functionDepth: 2
    functionLinenumber: 30
    functionLinenumberEnd: 43
    functionName: parse_next_cursor
    functionSourceFile: /src/opendal/core/services/hf/src/lister.rs
    functionUses: 0
    functionsReached:
    - '&str::split'
    - Result::contains
    - split_once
    - Result::split
    - Result::to_string
    - find_map
    - map
    - strip_prefix
    - Result::split_once
    linkageType: ''
    returnType: Option
    signature: 'fn parse_next_cursor(link_str: &str) -> Option<String>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: is_empty
      Src: /src/opendal/core/services/hf/src/lister.rs:57,1
    - Dst: ends_with
      Src: /src/opendal/core/services/hf/src/lister.rs:57,1
    - Dst: rfind
      Src: /src/opendal/core/services/hf/src/lister.rs:67,1
    - Dst: to_string
      Src: /src/opendal/core/services/hf/src/lister.rs:68,1
    - Dst: String::new
      Src: /src/opendal/core/services/hf/src/lister.rs:69,1
    - Dst: Some
      Src: /src/opendal/core/services/hf/src/lister.rs:75,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 19
    argCount: 4
    argNames:
    - core
    - ctx
    - path
    - recursive
    argTypes:
    - Arc<HfCore>
    - OperationContext
    - String
    - bool
    constantsTouched: []
    func_position:
      end: 79
      start: 56
    functionDepth: 4
    functionLinenumber: 56
    functionLinenumberEnd: 79
    functionName: HfLister::new
    functionSourceFile: /src/opendal/core/services/hf/src/lister.rs
    functionUses: 2
    functionsReached:
    - to_string
    - String::new
    - rfind
    - ends_with
    - is_empty
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(core: Arc<HfCore>, ctx: OperationContext, path: String,
      recursive: bool) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: uri
      Src: /src/opendal/core/services/hf/src/lister.rs:87,1
    - Dst: Result::file_tree_url
      Src: /src/opendal/core/services/hf/src/lister.rs:88,1
    - Dst: request
      Src: /src/opendal/core/services/hf/src/lister.rs:90,1
    - Dst: body
      Src: /src/opendal/core/services/hf/src/lister.rs:90,1
    - Dst: Buffer::new
      Src: /src/opendal/core/services/hf/src/lister.rs:93,1
    - Dst: map_err
      Src: /src/opendal/core/services/hf/src/lister.rs:90,1
    - Dst: "core\n            .send_parse::<Vec<PathInfo>>"
      Src: /src/opendal/core/services/hf/src/lister.rs:95,1
    - Dst: get
      Src: /src/opendal/core/services/hf/src/lister.rs:100,1
    - Dst: and_then
      Src: /src/opendal/core/services/hf/src/lister.rs:100,1
    - Dst: Result::to_str
      Src: /src/opendal/core/services/hf/src/lister.rs:103,1
    - Dst: Result::ok
      Src: /src/opendal/core/services/hf/src/lister.rs:103,1
    - Dst: and_then
      Src: /src/opendal/core/services/hf/src/lister.rs:100,1
    - Dst: Ok
      Src: /src/opendal/core/services/hf/src/lister.rs:106,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 40
    argCount: 3
    argNames:
    - path
    - recursive
    - cursor
    argTypes:
    - '&str'
    - bool
    - Option<&str>
    constantsTouched: []
    func_position:
      end: 107
      start: 81
    functionDepth: 39
    functionLinenumber: 81
    functionLinenumberEnd: 107
    functionName: HfLister::file_tree
    functionSourceFile: /src/opendal/core/services/hf/src/lister.rs
    functionUses: 1
    functionsReached:
    - map_err
    - Buffer::new
    - get
    - Result::ok
    - Result::to_str
    - "core\n            .send_parse::<Vec<PathInfo>>"
    - and_then
    - Ok
    - body
    - request
    - Result::file_tree_url
    - uri
    linkageType: ''
    returnType: Result
    signature: 'async fn file_tree(&self,path: &str,recursive: bool,cursor: Option<&str>,)
      -> Result<FileTree>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: is_empty
      Src: /src/opendal/core/services/hf/src/lister.rs:112,1
    - Dst: Some
      Src: /src/opendal/core/services/hf/src/lister.rs:115,1
    - Dst: as_str
      Src: /src/opendal/core/services/hf/src/lister.rs:115,1
    - Dst: HfLister::file_tree
      Src: /src/opendal/core/services/hf/src/lister.rs:118,1
    - Dst: Result::kind
      Src: /src/opendal/core/services/hf/src/lister.rs:124,1
    - Dst: Ok
      Src: /src/opendal/core/services/hf/src/lister.rs:126,1
    - Dst: Err
      Src: /src/opendal/core/services/hf/src/lister.rs:128,1
    - Dst: ServiceInfo::metadata
      Src: /src/opendal/core/services/hf/src/lister.rs:138,1
    - Dst: Result::mode
      Src: /src/opendal/core/services/hf/src/lister.rs:139,1
    - Dst: clone
      Src: /src/opendal/core/services/hf/src/lister.rs:142,1
    - Dst: build_rel_path
      Src: /src/opendal/core/services/hf/src/lister.rs:144,1
    - Dst: String::starts_with
      Src: /src/opendal/core/services/hf/src/lister.rs:148,1
    - Dst: Result::as_str
      Src: /src/opendal/core/services/hf/src/lister.rs:148,1
    - Dst: push_back
      Src: /src/opendal/core/services/hf/src/lister.rs:153,1
    - Dst: oio::Entry::new
      Src: /src/opendal/core/services/hf/src/lister.rs:153,1
    - Dst: Ok
      Src: /src/opendal/core/services/hf/src/lister.rs:156,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 73
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - '&mut oio::PageContext'
    constantsTouched: []
    func_position:
      end: 157
      start: 111
    functionDepth: 40
    functionLinenumber: 111
    functionLinenumberEnd: 157
    functionName: HfLister::next_page
    functionSourceFile: /src/opendal/core/services/hf/src/lister.rs
    functionUses: 0
    functionsReached:
    - String::starts_with
    - oio::Entry::new
    - HfLister::file_tree
    - Ok
    - push_back
    - clone
    - build_rel_path
    - Some
    - is_empty
    - as_str
    - Err
    - Result::mode
    - Result::kind
    - Result::as_str
    - ServiceInfo::metadata
    linkageType: ''
    returnType: Result
    signature: 'async fn next_page(&self, ctx: &mut oio::PageContext) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 175
      start: 171
    functionDepth: 0
    functionLinenumber: 171
    functionLinenumberEnd: 175
    functionName: tests::test_parse_next_cursor
    functionSourceFile: /src/opendal/core/services/hf/src/lister.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: fn test_parse_next_cursor()
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 182
      start: 178
    functionDepth: 0
    functionLinenumber: 178
    functionLinenumberEnd: 182
    functionName: tests::test_parse_next_cursor_no_next
    functionSourceFile: /src/opendal/core/services/hf/src/lister.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: fn test_parse_next_cursor_no_next()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: create_test_core
      Src: /src/opendal/core/services/hf/src/lister.rs:186,1
    - Dst: HfLister::new
      Src: /src/opendal/core/services/hf/src/lister.rs:192,1
    - Dst: Arc::new
      Src: /src/opendal/core/services/hf/src/lister.rs:192,1
    - Dst: String::new
      Src: /src/opendal/core/services/hf/src/lister.rs:192,1
    - Dst: String::new
      Src: /src/opendal/core/services/hf/src/lister.rs:195,1
    - Dst: VecDeque::new
      Src: /src/opendal/core/services/hf/src/lister.rs:196,1
    - Dst: Result::next_page
      Src: /src/opendal/core/services/hf/src/lister.rs:199,1
    - Dst: pop_front
      Src: /src/opendal/core/services/hf/src/lister.rs:206,1
    - Dst: expect
      Src: /src/opendal/core/services/hf/src/lister.rs:206,1
    - Dst: Ok
      Src: /src/opendal/core/services/hf/src/lister.rs:211,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 25
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 212
      start: 185
    functionDepth: 34
    functionLinenumber: 185
    functionLinenumberEnd: 212
    functionName: tests::test_list_model_root
    functionSourceFile: /src/opendal/core/services/hf/src/lister.rs
    functionUses: 0
    functionsReached:
    - expect
    - String::new
    - HfLister::new
    - pop_front
    - Ok
    - Arc::new
    - create_test_core
    - VecDeque::new
    - Result::next_page
    linkageType: ''
    returnType: Result
    signature: async fn test_list_model_root() -> Result<()>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: CompfsCore::resolve
      Src: /src/opendal/core/services/hf/src/reader.rs:37,1
    - Dst: headers
      Src: /src/opendal/core/services/hf/src/reader.rs:38,1
    - Dst: contains_key
      Src: /src/opendal/core/services/hf/src/reader.rs:38,1
    - Dst: into_parts
      Src: /src/opendal/core/services/hf/src/reader.rs:39,1
    - Dst: to_buffer
      Src: /src/opendal/core/services/hf/src/reader.rs:40,1
    - Dst: serde_json::from_reader
      Src: /src/opendal/core/services/hf/src/reader.rs:42,1
    - Dst: io::Result::reader
      Src: /src/opendal/core/services/hf/src/reader.rs:42,1
    - Dst: map_err
      Src: /src/opendal/core/services/hf/src/reader.rs:42,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/hf/src/reader.rs:43,1
    - Dst: Self::with_content_length
      Src: /src/opendal/core/services/hf/src/reader.rs:43,1
    - Dst: Self::try_new_xet
      Src: /src/opendal/core/services/hf/src/reader.rs:45,1
    - Dst: XetFileInfo::new
      Src: /src/opendal/core/services/hf/src/reader.rs:45,1
    - Dst: Ok
      Src: /src/opendal/core/services/hf/src/reader.rs:46,1
    - Dst: RpRead::new
      Src: /src/opendal/core/services/hf/src/reader.rs:46,1
    - Dst: parse_into_metadata
      Src: /src/opendal/core/services/hf/src/reader.rs:48,1
    - Dst: headers
      Src: /src/opendal/core/services/hf/src/reader.rs:48,1
    - Dst: Ok
      Src: /src/opendal/core/services/hf/src/reader.rs:49,1
    - Dst: RpRead::new
      Src: /src/opendal/core/services/hf/src/reader.rs:49,1
    - Dst: Self::Http
      Src: /src/opendal/core/services/hf/src/reader.rs:49,1
    - Dst: into_body
      Src: /src/opendal/core/services/hf/src/reader.rs:49,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 47
    argCount: 4
    argNames:
    - core
    - ctx
    - path
    - range
    argTypes:
    - '&HfCore'
    - '&OperationContext'
    - '&str'
    - BytesRange
    constantsTouched: []
    func_position:
      end: 51
      start: 31
    functionDepth: 36
    functionLinenumber: 31
    functionLinenumberEnd: 51
    functionName: HfReadStream::try_new
    functionSourceFile: /src/opendal/core/services/hf/src/reader.rs
    functionUses: 4
    functionsReached:
    - map_err
    - Metadata::new
    - to_buffer
    - parse_into_metadata
    - Ok
    - io::Result::reader
    - serde_json::from_reader
    - Self::with_content_length
    - Self::try_new_xet
    - into_body
    - XetFileInfo::new
    - headers
    - into_parts
    - contains_key
    - Self::Http
    - RpRead::new
    - CompfsCore::resolve
    linkageType: ''
    returnType: Result
    signature: 'pub async fn try_new(core: &HfCore,ctx: &OperationContext,path: &str,range:
      BytesRange,) -> Result<(RpRead, Self)>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: CompfsCore::xet_download_group
      Src: /src/opendal/core/services/hf/src/reader.rs:58,1
    - Dst: (Vec::is_full
      Src: /src/opendal/core/services/hf/src/reader.rs:60,1
    - Dst: (Vec::offset
      Src: /src/opendal/core/services/hf/src/reader.rs:63,1
    - Dst: (Vec::size
      Src: /src/opendal/core/services/hf/src/reader.rs:64,1
    - Dst: Option::map
      Src: /src/opendal/core/services/hf/src/reader.rs:64,1
    - Dst: Result::unwrap_or
      Src: /src/opendal/core/services/hf/src/reader.rs:64,1
    - Dst: Some
      Src: /src/opendal/core/services/hf/src/reader.rs:65,1
    - Dst: Result::download_stream
      Src: /src/opendal/core/services/hf/src/reader.rs:68,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/hf/src/reader.rs:69,1
    - Dst: map_err
      Src: /src/opendal/core/services/hf/src/reader.rs:68,1
    - Dst: Error::new
      Src: /src/opendal/core/services/hf/src/reader.rs:72,1
    - Dst: Self::set_source
      Src: /src/opendal/core/services/hf/src/reader.rs:72,1
    - Dst: Result::start
      Src: /src/opendal/core/services/hf/src/reader.rs:78,1
    - Dst: Ok
      Src: /src/opendal/core/services/hf/src/reader.rs:79,1
    - Dst: Self::Xet
      Src: /src/opendal/core/services/hf/src/reader.rs:79,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 36
    argCount: 3
    argNames:
    - core
    - file_info
    - range
    argTypes:
    - '&HfCore'
    - '&XetFileInfo'
    - BytesRange
    constantsTouched: []
    func_position:
      end: 80
      start: 53
    functionDepth: 37
    functionLinenumber: 53
    functionLinenumberEnd: 80
    functionName: HfReadStream::try_new_xet
    functionSourceFile: /src/opendal/core/services/hf/src/reader.rs
    functionUses: 0
    functionsReached:
    - Result::clone
    - CompfsCore::xet_download_group
    - map_err
    - Self::Xet
    - Ok
    - (Vec::size
    - Option::map
    - (Vec::is_full
    - Some
    - Error::new
    - Result::start
    - (Vec::offset
    - Result::download_stream
    - Self::set_source
    - Result::unwrap_or
    linkageType: ''
    returnType: Result
    signature: 'async fn try_new_xet(core: &HfCore,file_info: &XetFileInfo,range:
      BytesRange,) -> Result<Self>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Error::new
      Src: /src/opendal/core/services/hf/src/reader.rs:84,1
    - Dst: Self::set_source
      Src: /src/opendal/core/services/hf/src/reader.rs:84,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - e
    argTypes:
    - SessionError
    constantsTouched: []
    func_position:
      end: 85
      start: 83
    functionDepth: 36
    functionLinenumber: 83
    functionLinenumberEnd: 85
    functionName: map_session_error
    functionSourceFile: /src/opendal/core/services/hf/src/reader.rs
    functionUses: 1
    functionsReached:
    - Self::set_source
    - Error::new
    linkageType: ''
    returnType: Error
    signature: 'fn map_session_error(e: SessionError) -> Error'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: read
      Src: /src/opendal/core/services/hf/src/reader.rs:90,1
    - Dst: Result::next
      Src: /src/opendal/core/services/hf/src/reader.rs:91,1
    - Dst: Ok
      Src: /src/opendal/core/services/hf/src/reader.rs:92,1
    - Dst: Buffer::from
      Src: /src/opendal/core/services/hf/src/reader.rs:92,1
    - Dst: Ok
      Src: /src/opendal/core/services/hf/src/reader.rs:93,1
    - Dst: Buffer::new
      Src: /src/opendal/core/services/hf/src/reader.rs:93,1
    - Dst: Err
      Src: /src/opendal/core/services/hf/src/reader.rs:94,1
    - Dst: map_session_error
      Src: /src/opendal/core/services/hf/src/reader.rs:94,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 97
      start: 88
    functionDepth: 31
    functionLinenumber: 88
    functionLinenumberEnd: 97
    functionName: HfReadStream::read
    functionSourceFile: /src/opendal/core/services/hf/src/reader.rs
    functionUses: 0
    functionsReached:
    - read
    - Buffer::new
    - map_session_error
    - Ok
    - Err
    - Result::next
    - Buffer::from
    linkageType: ''
    returnType: Result
    signature: async fn read(&mut self) -> Result<Buffer>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: to_string
      Src: /src/opendal/core/services/hf/src/reader.rs:112,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 4
    argNames:
    - backend
    - ctx
    - path
    argTypes:
    - HfBackend
    - OperationContext
    - '&str'
    - OpRead
    constantsTouched: []
    func_position:
      end: 114
      start: 108
    functionDepth: 2
    functionLinenumber: 108
    functionLinenumberEnd: 114
    functionName: HfReader::new
    functionSourceFile: /src/opendal/core/services/hf/src/reader.rs
    functionUses: 1
    functionsReached:
    - to_string
    linkageType: ''
    returnType: Self
    signature: 'pub(super) fn new(backend: HfBackend, ctx: OperationContext, path:
      &str, _: OpRead) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: as_str
      Src: /src/opendal/core/services/hf/src/reader.rs:120,1
    - Dst: HfReadStream::try_new
      Src: /src/opendal/core/services/hf/src/reader.rs:121,1
    - Dst: Ok
      Src: /src/opendal/core/services/hf/src/reader.rs:122,1
    - Dst: Box::new
      Src: /src/opendal/core/services/hf/src/reader.rs:122,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 16
    argCount: 1
    argNames:
    - range
    argTypes:
    - BytesRange
    constantsTouched: []
    func_position:
      end: 123
      start: 118
    functionDepth: 37
    functionLinenumber: 118
    functionLinenumberEnd: 123
    functionName: HfReader::open
    functionSourceFile: /src/opendal/core/services/hf/src/reader.rs
    functionUses: 0
    functionsReached:
    - Box::new
    - as_str
    - HfReadStream::try_new
    - Ok
    linkageType: ''
    returnType: Result
    signature: 'async fn open(&self, range: BytesRange) -> Result<(RpRead, Box<dyn
      oio::ReadStreamDyn>)>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: create_test_core
      Src: /src/opendal/core/services/hf/src/reader.rs:141,1
    - Dst: HfReadStream::try_new
      Src: /src/opendal/core/services/hf/src/reader.rs:149,1
    - Dst: BytesRange::default
      Src: /src/opendal/core/services/hf/src/reader.rs:149,1
    - Dst: anyhow::Result::read
      Src: /src/opendal/core/services/hf/src/reader.rs:156,1
    - Dst: Ok
      Src: /src/opendal/core/services/hf/src/reader.rs:159,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 160
      start: 140
    functionDepth: 34
    functionLinenumber: 140
    functionLinenumberEnd: 160
    functionName: tests::test_http_read_uses_resolve_url
    functionSourceFile: /src/opendal/core/services/hf/src/reader.rs
    functionUses: 0
    functionsReached:
    - BytesRange::default
    - Ok
    - HfReadStream::try_new
    - create_test_core
    - anyhow::Result::read
    linkageType: ''
    returnType: Result
    signature: async fn test_http_read_uses_resolve_url() -> Result<()>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: create_test_core
      Src: /src/opendal/core/services/hf/src/reader.rs:164,1
    - Dst: HfReadStream::try_new
      Src: /src/opendal/core/services/hf/src/reader.rs:172,1
    - Dst: BytesRange::default
      Src: /src/opendal/core/services/hf/src/reader.rs:172,1
    - Dst: RpRead::metadata
      Src: /src/opendal/core/services/hf/src/reader.rs:173,1
    - Dst: Option::expect
      Src: /src/opendal/core/services/hf/src/reader.rs:173,1
    - Dst: anyhow::Result::read
      Src: /src/opendal/core/services/hf/src/reader.rs:179,1
    - Dst: Ok
      Src: /src/opendal/core/services/hf/src/reader.rs:182,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 21
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 183
      start: 163
    functionDepth: 34
    functionLinenumber: 163
    functionLinenumberEnd: 183
    functionName: tests::test_http_read_returns_metadata
    functionSourceFile: /src/opendal/core/services/hf/src/reader.rs
    functionUses: 0
    functionsReached:
    - BytesRange::default
    - Option::expect
    - Ok
    - HfReadStream::try_new
    - create_test_core
    - anyhow::Result::read
    - RpRead::metadata
    linkageType: ''
    returnType: Result
    signature: async fn test_http_read_returns_metadata() -> Result<()>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: mbpp_operator
      Src: /src/opendal/core/services/hf/src/reader.rs:191,1
    - Dst: read
      Src: /src/opendal/core/services/hf/src/reader.rs:192,1
    - Dst: expect
      Src: /src/opendal/core/services/hf/src/reader.rs:192,1
    - Dst: anyhow::Result::to_vec
      Src: /src/opendal/core/services/hf/src/reader.rs:196,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 200
      start: 190
    functionDepth: 39
    functionLinenumber: 190
    functionLinenumberEnd: 200
    functionName: tests::test_read_xet_parquet
    functionSourceFile: /src/opendal/core/services/hf/src/reader.rs
    functionUses: 0
    functionsReached:
    - read
    - anyhow::Result::to_vec
    - expect
    - mbpp_operator
    linkageType: ''
    returnType: void
    signature: async fn test_read_xet_parquet()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: testing_dataset_core
      Src: /src/opendal/core/services/hf/src/reader.rs:211,1
    - Dst: OperationContext::new
      Src: /src/opendal/core/services/hf/src/reader.rs:212,1
    - Dst: Self::with_http_transport
      Src: /src/opendal/core/services/hf/src/reader.rs:212,1
    - Dst: HttpTransporter::new
      Src: /src/opendal/core/services/hf/src/reader.rs:212,1
    - Dst: opendal_http_transport_reqwest::ReqwestTransport::default
      Src: /src/opendal/core/services/hf/src/reader.rs:213,1
    - Dst: CompfsCore::commit_git
      Src: /src/opendal/core/services/hf/src/reader.rs:218,1
    - Dst: expect
      Src: /src/opendal/core/services/hf/src/reader.rs:218,1
    - Dst: HfReadStream::try_new
      Src: /src/opendal/core/services/hf/src/reader.rs:232,1
    - Dst: BytesRange::default
      Src: /src/opendal/core/services/hf/src/reader.rs:232,1
    - Dst: expect
      Src: /src/opendal/core/services/hf/src/reader.rs:232,1
    - Dst: Vec::new
      Src: /src/opendal/core/services/hf/src/reader.rs:241,1
    - Dst: anyhow::Result::read
      Src: /src/opendal/core/services/hf/src/reader.rs:243,1
    - Dst: expect
      Src: /src/opendal/core/services/hf/src/reader.rs:243,1
    - Dst: Result::is_empty
      Src: /src/opendal/core/services/hf/src/reader.rs:244,1
    - Dst: io::Result::extend_from_slice
      Src: /src/opendal/core/services/hf/src/reader.rs:247,1
    - Dst: Result::to_bytes
      Src: /src/opendal/core/services/hf/src/reader.rs:247,1
    - Dst: CompfsCore::commit_git
      Src: /src/opendal/core/services/hf/src/reader.rs:251,1
    - Dst: ok
      Src: /src/opendal/core/services/hf/src/reader.rs:251,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 49
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 262
      start: 208
    functionDepth: 34
    functionLinenumber: 208
    functionLinenumberEnd: 262
    functionName: tests::test_xet_mode_falls_back_to_http_for_non_xet_file
    functionSourceFile: /src/opendal/core/services/hf/src/reader.rs
    functionUses: 0
    functionsReached:
    - HttpTransporter::new
    - BytesRange::default
    - expect
    - ok
    - HfReadStream::try_new
    - CompfsCore::commit_git
    - anyhow::Result::read
    - Result::to_bytes
    - OperationContext::new
    - io::Result::extend_from_slice
    - Self::with_http_transport
    - opendal_http_transport_reqwest::ReqwestTransport::default
    - Result::is_empty
    - testing_dataset_core
    - Vec::new
    linkageType: ''
    returnType: void
    signature: async fn test_xet_mode_falls_back_to_http_for_non_xet_file()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: mbpp_operator
      Src: /src/opendal/core/services/hf/src/reader.rs:268,1
    - Dst: read_with
      Src: /src/opendal/core/services/hf/src/reader.rs:269,1
    - Dst: FutureRead::range
      Src: /src/opendal/core/services/hf/src/reader.rs:269,1
    - Dst: expect
      Src: /src/opendal/core/services/hf/src/reader.rs:269,1
    - Dst: anyhow::Result::to_vec
      Src: /src/opendal/core/services/hf/src/reader.rs:274,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 277
      start: 267
    functionDepth: 39
    functionLinenumber: 267
    functionLinenumberEnd: 277
    functionName: tests::test_read_xet_range
    functionSourceFile: /src/opendal/core/services/hf/src/reader.rs
    functionUses: 0
    functionsReached:
    - expect
    - FutureRead::range
    - read_with
    - mbpp_operator
    - anyhow::Result::to_vec
    linkageType: ''
    returnType: void
    signature: async fn test_read_xet_range()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: to_lowercase
      Src: /src/opendal/core/services/hf/src/core.rs:46,1
    - Dst: replace
      Src: /src/opendal/core/services/hf/src/core.rs:46,1
    - Dst: as_str
      Src: /src/opendal/core/services/hf/src/core.rs:46,1
    - Dst: Ok
      Src: /src/opendal/core/services/hf/src/core.rs:47,1
    - Dst: Ok
      Src: /src/opendal/core/services/hf/src/core.rs:48,1
    - Dst: Ok
      Src: /src/opendal/core/services/hf/src/core.rs:49,1
    - Dst: Ok
      Src: /src/opendal/core/services/hf/src/core.rs:50,1
    - Dst: Err
      Src: /src/opendal/core/services/hf/src/core.rs:51,1
    - Dst: Error::new
      Src: /src/opendal/core/services/hf/src/core.rs:51,1
    - Dst: Self::with_context
      Src: /src/opendal/core/services/hf/src/core.rs:51,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 16
    argCount: 1
    argNames:
    - s
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 57
      start: 45
    functionDepth: 36
    functionLinenumber: 45
    functionLinenumberEnd: 57
    functionName: HfRepoType::parse
    functionSourceFile: /src/opendal/core/services/hf/src/core.rs
    functionUses: 2
    functionsReached:
    - Ok
    - to_lowercase
    - replace
    - Err
    - Error::new
    - as_str
    - Self::with_context
    linkageType: ''
    returnType: Result
    signature: 'pub fn parse(s: &str) -> Result<Self>'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 66
      start: 59
    functionDepth: 0
    functionLinenumber: 59
    functionLinenumberEnd: 66
    functionName: HfRepoType::as_str
    functionSourceFile: /src/opendal/core/services/hf/src/core.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: '&''static str'
    signature: pub fn as_str(&self) -> &'static str
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 75
      start: 68
    functionDepth: 0
    functionLinenumber: 68
    functionLinenumberEnd: 75
    functionName: HfRepoType::as_plural_str
    functionSourceFile: /src/opendal/core/services/hf/src/core.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: '&''static str'
    signature: pub fn as_plural_str(&self) -> &'static str
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: to_lowercase
      Src: /src/opendal/core/services/hf/src/core.rs:93,1
    - Dst: as_str
      Src: /src/opendal/core/services/hf/src/core.rs:93,1
    - Dst: Ok
      Src: /src/opendal/core/services/hf/src/core.rs:94,1
    - Dst: Ok
      Src: /src/opendal/core/services/hf/src/core.rs:95,1
    - Dst: Err
      Src: /src/opendal/core/services/hf/src/core.rs:96,1
    - Dst: Error::new
      Src: /src/opendal/core/services/hf/src/core.rs:96,1
    - Dst: Self::with_context
      Src: /src/opendal/core/services/hf/src/core.rs:96,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 1
    argNames:
    - s
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 102
      start: 92
    functionDepth: 36
    functionLinenumber: 92
    functionLinenumberEnd: 102
    functionName: HfDownloadMode::parse
    functionSourceFile: /src/opendal/core/services/hf/src/core.rs
    functionUses: 2
    functionsReached:
    - Ok
    - to_lowercase
    - Error::new
    - Err
    - as_str
    - Self::with_context
    linkageType: ''
    returnType: Result
    signature: 'pub fn parse(s: &str) -> Result<Self>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: as_str
      Src: /src/opendal/core/services/hf/src/core.rs:194,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 199
      start: 193
    functionDepth: 1
    functionLinenumber: 193
    functionLinenumberEnd: 199
    functionName: PathInfo::entry_mode
    functionSourceFile: /src/opendal/core/services/hf/src/core.rs
    functionUses: 1
    functionsReached:
    - as_str
    linkageType: ''
    returnType: EntryMode
    signature: pub fn entry_mode(&self) -> EntryMode
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: PathInfo::entry_mode
      Src: /src/opendal/core/services/hf/src/core.rs:202,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/hf/src/core.rs:203,1
    - Dst: as_ref
      Src: /src/opendal/core/services/hf/src/core.rs:205,1
    - Dst: Result::set_last_modified
      Src: /src/opendal/core/services/hf/src/core.rs:206,1
    - Dst: date.parse::<Timestamp>
      Src: /src/opendal/core/services/hf/src/core.rs:206,1
    - Dst: Result::set_content_length
      Src: /src/opendal/core/services/hf/src/core.rs:210,1
    - Dst: Result::set_etag
      Src: /src/opendal/core/services/hf/src/core.rs:213,1
    - Dst: Result::set_etag
      Src: /src/opendal/core/services/hf/src/core.rs:215,1
    - Dst: Ok
      Src: /src/opendal/core/services/hf/src/core.rs:219,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 38
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 220
      start: 201
    functionDepth: 3
    functionLinenumber: 201
    functionLinenumberEnd: 220
    functionName: PathInfo::metadata
    functionSourceFile: /src/opendal/core/services/hf/src/core.rs
    functionUses: 0
    functionsReached:
    - Metadata::new
    - PathInfo::entry_mode
    - Ok
    - Result::set_last_modified
    - Result::set_content_length
    - as_ref
    - date.parse::<Timestamp>
    - Result::set_etag
    linkageType: ''
    returnType: Result
    signature: pub fn metadata(&self) -> Result<Metadata>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::debug_struct
      Src: /src/opendal/core/services/hf/src/core.rs:251,1
    - Dst: field
      Src: /src/opendal/core/services/hf/src/core.rs:251,1
    - Dst: field
      Src: /src/opendal/core/services/hf/src/core.rs:251,1
    - Dst: field
      Src: /src/opendal/core/services/hf/src/core.rs:251,1
    - Dst: finish_non_exhaustive
      Src: /src/opendal/core/services/hf/src/core.rs:251,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 16
    argCount: 1
    argNames:
    - f
    argTypes:
    - '&mut std::fmt::Formatter<''_>'
    constantsTouched: []
    func_position:
      end: 256
      start: 250
    functionDepth: 5
    functionLinenumber: 250
    functionLinenumberEnd: 256
    functionName: HfCore::fmt
    functionSourceFile: /src/opendal/core/services/hf/src/core.rs
    functionUses: 0
    functionsReached:
    - field
    - Result::debug_struct
    - finish_non_exhaustive
    linkageType: ''
    returnType: std::fmt::Result
    signature: 'fn fmt(&self, f: &mut std::fmt::Formatter<''_>) -> std::fmt::Result'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 8
    argNames:
    - info
    - capability
    - repo
    - root
    - token
    - endpoint
    - xet_session
    - download_mode
    argTypes:
    - ServiceInfo
    - Capability
    - HfRepo
    - String
    - Option<String>
    - String
    - XetSession
    - HfDownloadMode
    constantsTouched: []
    func_position:
      end: 281
      start: 261
    functionDepth: 0
    functionLinenumber: 261
    functionLinenumberEnd: 281
    functionName: HfCore::new
    functionSourceFile: /src/opendal/core/services/hf/src/core.rs
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(info: ServiceInfo,capability: Capability,repo: HfRepo,root:
      String,token: Option<String>,endpoint: String,xet_session: XetSession,download_mode:
      HfDownloadMode,) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: XetSessionBuilder::new
      Src: /src/opendal/core/services/hf/src/core.rs:292,1
    - Dst: Self::build
      Src: /src/opendal/core/services/hf/src/core.rs:292,1
    - Dst: Result::map_err
      Src: /src/opendal/core/services/hf/src/core.rs:292,1
    - Dst: Error::new
      Src: /src/opendal/core/services/hf/src/core.rs:293,1
    - Dst: Self::set_source
      Src: /src/opendal/core/services/hf/src/core.rs:293,1
    - Dst: Ok
      Src: /src/opendal/core/services/hf/src/core.rs:296,1
    - Dst: Self::new
      Src: /src/opendal/core/services/hf/src/core.rs:296,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 7
    argNames:
    - info
    - capability
    - repo
    - root
    - token
    - endpoint
    - download_mode
    argTypes:
    - ServiceInfo
    - Capability
    - HfRepo
    - String
    - Option<String>
    - String
    - HfDownloadMode
    constantsTouched: []
    func_position:
      end: 306
      start: 283
    functionDepth: 37
    functionLinenumber: 283
    functionLinenumberEnd: 306
    functionName: HfCore::build
    functionSourceFile: /src/opendal/core/services/hf/src/core.rs
    functionUses: 2
    functionsReached:
    - Result::map_err
    - Ok
    - XetSessionBuilder::new
    - Self::new
    - Error::new
    - Self::set_source
    - Self::build
    linkageType: ''
    returnType: Result
    signature: 'pub fn build(info: ServiceInfo,capability: Capability,repo: HfRepo,root:
      String,token: Option<String>,endpoint: String,download_mode: HfDownloadMode,)
      -> Result<Self>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: http::HeaderMap::new
      Src: /src/opendal/core/services/hf/src/core.rs:309,1
    - Dst: parse
      Src: /src/opendal/core/services/hf/src/core.rs:311,1
    - Dst: HashMap::insert
      Src: /src/opendal/core/services/hf/src/core.rs:313,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 316
      start: 308
    functionDepth: 35
    functionLinenumber: 308
    functionLinenumberEnd: 316
    functionName: HfCore::xet_token_refresh_headers
    functionSourceFile: /src/opendal/core/services/hf/src/core.rs
    functionUses: 2
    functionsReached:
    - HashMap::insert
    - parse
    - http::HeaderMap::new
    linkageType: ''
    returnType: http::HeaderMap
    signature: fn xet_token_refresh_headers(&self) -> http::HeaderMap
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: xet_token_url
      Src: /src/opendal/core/services/hf/src/core.rs:322,1
    - Dst: HfCore::xet_token_refresh_headers
      Src: /src/opendal/core/services/hf/src/core.rs:323,1
    - Dst: new_upload_commit
      Src: /src/opendal/core/services/hf/src/core.rs:324,1
    - Dst: map_err
      Src: /src/opendal/core/services/hf/src/core.rs:324,1
    - Dst: Error::new
      Src: /src/opendal/core/services/hf/src/core.rs:327,1
    - Dst: Self::set_source
      Src: /src/opendal/core/services/hf/src/core.rs:327,1
    - Dst: with_token_refresh_url
      Src: /src/opendal/core/services/hf/src/core.rs:324,1
    - Dst: build
      Src: /src/opendal/core/services/hf/src/core.rs:324,1
    - Dst: map_err
      Src: /src/opendal/core/services/hf/src/core.rs:324,1
    - Dst: Error::new
      Src: /src/opendal/core/services/hf/src/core.rs:334,1
    - Dst: Self::set_source
      Src: /src/opendal/core/services/hf/src/core.rs:334,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 28
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 337
      start: 321
    functionDepth: 36
    functionLinenumber: 321
    functionLinenumberEnd: 337
    functionName: HfCore::xet_upload_commit
    functionSourceFile: /src/opendal/core/services/hf/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - new_upload_commit
    - build
    - Error::new
    - HfCore::xet_token_refresh_headers
    - xet_token_url
    - with_token_refresh_url
    - Self::set_source
    linkageType: ''
    returnType: Result
    signature: pub(super) async fn xet_upload_commit(&self) -> Result<XetUploadCommit>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: xet_token_url
      Src: /src/opendal/core/services/hf/src/core.rs:343,1
    - Dst: HfCore::xet_token_refresh_headers
      Src: /src/opendal/core/services/hf/src/core.rs:344,1
    - Dst: new_download_stream_group
      Src: /src/opendal/core/services/hf/src/core.rs:345,1
    - Dst: map_err
      Src: /src/opendal/core/services/hf/src/core.rs:345,1
    - Dst: Error::new
      Src: /src/opendal/core/services/hf/src/core.rs:348,1
    - Dst: Self::set_source
      Src: /src/opendal/core/services/hf/src/core.rs:348,1
    - Dst: with_token_refresh_url
      Src: /src/opendal/core/services/hf/src/core.rs:345,1
    - Dst: build
      Src: /src/opendal/core/services/hf/src/core.rs:345,1
    - Dst: map_err
      Src: /src/opendal/core/services/hf/src/core.rs:345,1
    - Dst: Error::new
      Src: /src/opendal/core/services/hf/src/core.rs:358,1
    - Dst: Self::set_source
      Src: /src/opendal/core/services/hf/src/core.rs:358,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 28
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 364
      start: 342
    functionDepth: 36
    functionLinenumber: 342
    functionLinenumberEnd: 364
    functionName: HfCore::xet_download_group
    functionSourceFile: /src/opendal/core/services/hf/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - build
    - Error::new
    - new_download_stream_group
    - HfCore::xet_token_refresh_headers
    - xet_token_url
    - with_token_refresh_url
    - Self::set_source
    linkageType: ''
    returnType: Result
    signature: pub(super) async fn xet_download_group(&self) -> Result<XetDownloadStreamGroup>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Request::builder
      Src: /src/opendal/core/services/hf/src/core.rs:377,1
    - Dst: OtelMetricsLayerBuilder::method
      Src: /src/opendal/core/services/hf/src/core.rs:377,1
    - Dst: '&str::uri'
      Src: /src/opendal/core/services/hf/src/core.rs:377,1
    - Dst: Result::extension
      Src: /src/opendal/core/services/hf/src/core.rs:377,1
    - Dst: extension
      Src: /src/opendal/core/services/hf/src/core.rs:377,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/hf/src/core.rs:381,1
    - Dst: format_authorization_by_bearer
      Src: /src/opendal/core/services/hf/src/core.rs:384,1
    - Dst: http::header
      Src: /src/opendal/core/services/hf/src/core.rs:385,1
    - Dst: Err
      Src: /src/opendal/core/services/hf/src/core.rs:389,1
    - Dst: Error::new
      Src: /src/opendal/core/services/hf/src/core.rs:389,1
    - Dst: Ok
      Src: /src/opendal/core/services/hf/src/core.rs:396,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 26
    argCount: 4
    argNames:
    - method
    - url
    - op
    - service_operation
    argTypes:
    - http::Method
    - '&str'
    - Operation
    - '&''static str'
    constantsTouched: []
    func_position:
      end: 397
      start: 370
    functionDepth: 37
    functionLinenumber: 370
    functionLinenumberEnd: 397
    functionName: HfCore::request
    functionSourceFile: /src/opendal/core/services/hf/src/core.rs
    functionUses: 4
    functionsReached:
    - format_authorization_by_bearer
    - extension
    - Ok
    - Result::extension
    - http::header
    - Err
    - OtelMetricsLayerBuilder::method
    - '&str::uri'
    - Error::new
    - ServiceOperation
    - Request::builder
    linkageType: ''
    returnType: Result
    signature: 'pub(super) fn request(&self,method: http::Method,url: &str,op: Operation,service_operation:
      &''static str,) -> Result<http::request::Builder>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: uri
      Src: /src/opendal/core/services/hf/src/core.rs:401,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - path
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 402
      start: 400
    functionDepth: 5
    functionLinenumber: 400
    functionLinenumberEnd: 402
    functionName: HfCore::uri
    functionSourceFile: /src/opendal/core/services/hf/src/core.rs
    functionUses: 2
    functionsReached:
    - uri
    linkageType: ''
    returnType: HfUri
    signature: 'pub(super) fn uri(&self, path: &str) -> HfUri'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/hf/src/core.rs:407,1
    - Dst: String::trim_start_matches
      Src: /src/opendal/core/services/hf/src/core.rs:407,1
    - Dst: to_string
      Src: /src/opendal/core/services/hf/src/core.rs:407,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - path
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 410
      start: 406
    functionDepth: 3
    functionLinenumber: 406
    functionLinenumberEnd: 410
    functionName: HfCore::repo_path
    functionSourceFile: /src/opendal/core/services/hf/src/core.rs
    functionUses: 0
    functionsReached:
    - to_string
    - String::trim_start_matches
    - build_abs_path
    linkageType: ''
    returnType: String
    signature: 'pub(super) fn repo_path(&self, path: &str) -> String'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::http_transport
      Src: /src/opendal/core/services/hf/src/core.rs:421,1
    - Dst: Self::fetch
      Src: /src/opendal/core/services/hf/src/core.rs:421,1
    - Dst: into_parts
      Src: /src/opendal/core/services/hf/src/core.rs:422,1
    - Dst: is_success
      Src: /src/opendal/core/services/hf/src/core.rs:423,1
    - Dst: Ok
      Src: /src/opendal/core/services/hf/src/core.rs:424,1
    - Dst: Response::from_parts
      Src: /src/opendal/core/services/hf/src/core.rs:424,1
    - Dst: Err
      Src: /src/opendal/core/services/hf/src/core.rs:427,1
    - Dst: parse_error
      Src: /src/opendal/core/services/hf/src/core.rs:427,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 2
    argNames:
    - ctx
    - req
    argTypes:
    - '&OperationContext'
    - Request<Buffer>
    constantsTouched: []
    func_position:
      end: 429
      start: 416
    functionDepth: 37
    functionLinenumber: 416
    functionLinenumberEnd: 429
    functionName: HfCore::send
    functionSourceFile: /src/opendal/core/services/hf/src/core.rs
    functionUses: 2
    functionsReached:
    - is_success
    - Ok
    - parse_error
    - Err
    - Response::from_parts
    - Self::fetch
    - into_parts
    - Result::http_transport
    linkageType: ''
    returnType: Result
    signature: 'async fn send(&self,ctx: &OperationContext,req: Request<Buffer>,)
      -> Result<Response<HttpBody>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: HfCore::send
      Src: /src/opendal/core/services/hf/src/core.rs:440,1
    - Dst: into_parts
      Src: /src/opendal/core/services/hf/src/core.rs:440,1
    - Dst: to_buffer
      Src: /src/opendal/core/services/hf/src/core.rs:441,1
    - Dst: serde_json::from_reader
      Src: /src/opendal/core/services/hf/src/core.rs:443,1
    - Dst: reader
      Src: /src/opendal/core/services/hf/src/core.rs:443,1
    - Dst: map_err
      Src: /src/opendal/core/services/hf/src/core.rs:443,1
    - Dst: Ok
      Src: /src/opendal/core/services/hf/src/core.rs:444,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 2
    argNames:
    - ctx
    - req
    argTypes:
    - '&OperationContext'
    - Request<Buffer>
    constantsTouched: []
    func_position:
      end: 445
      start: 435
    functionDepth: 38
    functionLinenumber: 435
    functionLinenumberEnd: 445
    functionName: HfCore::send_parse
    functionSourceFile: /src/opendal/core/services/hf/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - to_buffer
    - reader
    - Ok
    - serde_json::from_reader
    - HfCore::send
    - into_parts
    linkageType: ''
    returnType: Result
    signature: 'pub(super) async fn send_parse<T: serde::de::DeserializeOwned>(&self,ctx:
      &OperationContext,req: Request<Buffer>,) -> Result<(http::response::Parts, T)>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: HfCore::uri
      Src: /src/opendal/core/services/hf/src/core.rs:448,1
    - Dst: Result::paths_info_url
      Src: /src/opendal/core/services/hf/src/core.rs:449,1
    - Dst: HfCore::request
      Src: /src/opendal/core/services/hf/src/core.rs:452,1
    - Dst: http::header
      Src: /src/opendal/core/services/hf/src/core.rs:452,1
    - Dst: body
      Src: /src/opendal/core/services/hf/src/core.rs:452,1
    - Dst: Buffer::from
      Src: /src/opendal/core/services/hf/src/core.rs:455,1
    - Dst: Bytes::from
      Src: /src/opendal/core/services/hf/src/core.rs:455,1
    - Dst: map_err
      Src: /src/opendal/core/services/hf/src/core.rs:452,1
    - Dst: send_parse::<Vec<PathInfo>>
      Src: /src/opendal/core/services/hf/src/core.rs:457,1
    - Dst: is_empty
      Src: /src/opendal/core/services/hf/src/core.rs:460,1
    - Dst: Err
      Src: /src/opendal/core/services/hf/src/core.rs:461,1
    - Dst: Error::new
      Src: /src/opendal/core/services/hf/src/core.rs:461,1
    - Dst: Ok
      Src: /src/opendal/core/services/hf/src/core.rs:464,1
    - Dst: remove
      Src: /src/opendal/core/services/hf/src/core.rs:464,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 34
    argCount: 2
    argNames:
    - ctx
    - path
    argTypes:
    - '&OperationContext'
    - '&str'
    constantsTouched: []
    func_position:
      end: 465
      start: 447
    functionDepth: 38
    functionLinenumber: 447
    functionLinenumberEnd: 465
    functionName: HfCore::path_info
    functionSourceFile: /src/opendal/core/services/hf/src/core.rs
    functionUses: 1
    functionsReached:
    - map_err
    - HfCore::request
    - Ok
    - remove
    - http::header
    - body
    - Result::paths_info_url
    - HfCore::uri
    - is_empty
    - Bytes::from
    - Err
    - Error::new
    - send_parse::<Vec<PathInfo>>
    - Buffer::from
    linkageType: ''
    returnType: Result
    signature: 'pub(super) async fn path_info(&self, ctx: &OperationContext, path:
      &str) -> Result<PathInfo>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: HfCore::uri
      Src: /src/opendal/core/services/hf/src/core.rs:479,1
    - Dst: Result::resolve_url
      Src: /src/opendal/core/services/hf/src/core.rs:480,1
    - Dst: revision
      Src: /src/opendal/core/services/hf/src/core.rs:480,1
    - Dst: HfCore::request
      Src: /src/opendal/core/services/hf/src/core.rs:482,1
    - Dst: http::header
      Src: /src/opendal/core/services/hf/src/core.rs:485,1
    - Dst: (Vec::is_full
      Src: /src/opendal/core/services/hf/src/core.rs:488,1
    - Dst: http::header
      Src: /src/opendal/core/services/hf/src/core.rs:489,1
    - Dst: (Vec::to_header
      Src: /src/opendal/core/services/hf/src/core.rs:489,1
    - Dst: body
      Src: /src/opendal/core/services/hf/src/core.rs:492,1
    - Dst: Buffer::new
      Src: /src/opendal/core/services/hf/src/core.rs:492,1
    - Dst: map_err
      Src: /src/opendal/core/services/hf/src/core.rs:492,1
    - Dst: Result::http_transport
      Src: /src/opendal/core/services/hf/src/core.rs:493,1
    - Dst: Self::fetch
      Src: /src/opendal/core/services/hf/src/core.rs:493,1
    - Dst: status
      Src: /src/opendal/core/services/hf/src/core.rs:495,1
    - Dst: is_success
      Src: /src/opendal/core/services/hf/src/core.rs:495,1
    - Dst: status
      Src: /src/opendal/core/services/hf/src/core.rs:496,1
    - Dst: into_parts
      Src: /src/opendal/core/services/hf/src/core.rs:500,1
    - Dst: parse_error
      Src: /src/opendal/core/services/hf/src/core.rs:501,1
    - Dst: HfCore::path_info
      Src: /src/opendal/core/services/hf/src/core.rs:502,1
    - Dst: is_ok
      Src: /src/opendal/core/services/hf/src/core.rs:502,1
    - Dst: Error::set_temporary
      Src: /src/opendal/core/services/hf/src/core.rs:503,1
    - Dst: Err
      Src: /src/opendal/core/services/hf/src/core.rs:505,1
    - Dst: Ok
      Src: /src/opendal/core/services/hf/src/core.rs:508,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 72
    argCount: 4
    argNames:
    - ctx
    - path
    - range
    - mode
    argTypes:
    - '&OperationContext'
    - '&str'
    - BytesRange
    - HfDownloadMode
    constantsTouched: []
    func_position:
      end: 509
      start: 472
    functionDepth: 35
    functionLinenumber: 472
    functionLinenumberEnd: 509
    functionName: HfCore::resolve
    functionSourceFile: /src/opendal/core/services/hf/src/core.rs
    functionUses: 0
    functionsReached:
    - Buffer::new
    - is_success
    - HfCore::path_info
    - status
    - Result::resolve_url
    - HfCore::uri
    - map_err
    - HfCore::request
    - Ok
    - (Vec::is_full
    - Result::http_transport
    - http::header
    - parse_error
    - Self::fetch
    - (Vec::to_header
    - is_ok
    - Error::set_temporary
    - body
    - Err
    - into_parts
    - revision
    linkageType: ''
    returnType: Result
    signature: 'pub(super) async fn resolve(&self,ctx: &OperationContext,path: &str,range:
      BytesRange,mode: HfDownloadMode,) -> Result<Response<HttpBody>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: git_commit_url
      Src: /src/opendal/core/services/hf/src/core.rs:522,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/hf/src/core.rs:525,1
    - Dst: serde_json::to_vec
      Src: /src/opendal/core/services/hf/src/core.rs:532,1
    - Dst: Vec::map_err
      Src: /src/opendal/core/services/hf/src/core.rs:532,1
    - Dst: HfCore::request
      Src: /src/opendal/core/services/hf/src/core.rs:534,1
    - Dst: http::header
      Src: /src/opendal/core/services/hf/src/core.rs:534,1
    - Dst: http::header
      Src: /src/opendal/core/services/hf/src/core.rs:534,1
    - Dst: len
      Src: /src/opendal/core/services/hf/src/core.rs:537,1
    - Dst: body
      Src: /src/opendal/core/services/hf/src/core.rs:534,1
    - Dst: Buffer::from
      Src: /src/opendal/core/services/hf/src/core.rs:538,1
    - Dst: map_err
      Src: /src/opendal/core/services/hf/src/core.rs:534,1
    - Dst: send_parse::<CommitResponse>
      Src: /src/opendal/core/services/hf/src/core.rs:541,1
    - Dst: Ok
      Src: /src/opendal/core/services/hf/src/core.rs:542,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 34
    argCount: 5
    argNames:
    - ctx
    - regular_files
    - lfs_files
    - deleted_files
    - deleted_folders
    argTypes:
    - '&OperationContext'
    - Vec<CommitFile>
    - Vec<LfsFile>
    - Vec<DeletedFile>
    - Vec<DeletedFolder>
    constantsTouched: []
    func_position:
      end: 543
      start: 514
    functionDepth: 38
    functionLinenumber: 514
    functionLinenumberEnd: 543
    functionName: HfCore::commit_git
    functionSourceFile: /src/opendal/core/services/hf/src/core.rs
    functionUses: 0
    functionsReached:
    - git_commit_url
    - map_err
    - HfCore::request
    - Ok
    - http::header
    - body
    - '&str::to_string'
    - Vec::map_err
    - Buffer::from
    - send_parse::<CommitResponse>
    - len
    - serde_json::to_vec
    linkageType: ''
    returnType: Result
    signature: 'pub(super) async fn commit_git(&self,ctx: &OperationContext,regular_files:
      Vec<CommitFile>,lfs_files: Vec<LfsFile>,deleted_files: Vec<DeletedFile>,deleted_folders:
      Vec<DeletedFolder>,) -> Result<CommitResponse>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self::is_empty
      Src: /src/opendal/core/services/hf/src/core.rs:553,1
    - Dst: Err
      Src: /src/opendal/core/services/hf/src/core.rs:554,1
    - Dst: Error::new
      Src: /src/opendal/core/services/hf/src/core.rs:554,1
    - Dst: bucket_batch_url
      Src: /src/opendal/core/services/hf/src/core.rs:560,1
    - Dst: String::new
      Src: /src/opendal/core/services/hf/src/core.rs:562,1
    - Dst: serde_json::to_string
      Src: /src/opendal/core/services/hf/src/core.rs:564,1
    - Dst: map_err
      Src: /src/opendal/core/services/hf/src/core.rs:564,1
    - Dst: Self::push_str
      Src: /src/opendal/core/services/hf/src/core.rs:565,1
    - Dst: Self::push
      Src: /src/opendal/core/services/hf/src/core.rs:566,1
    - Dst: HfCore::request
      Src: /src/opendal/core/services/hf/src/core.rs:569,1
    - Dst: http::header
      Src: /src/opendal/core/services/hf/src/core.rs:569,1
    - Dst: http::header
      Src: /src/opendal/core/services/hf/src/core.rs:569,1
    - Dst: Self::len
      Src: /src/opendal/core/services/hf/src/core.rs:572,1
    - Dst: body
      Src: /src/opendal/core/services/hf/src/core.rs:569,1
    - Dst: Buffer::from
      Src: /src/opendal/core/services/hf/src/core.rs:573,1
    - Dst: Bytes::from
      Src: /src/opendal/core/services/hf/src/core.rs:573,1
    - Dst: map_err
      Src: /src/opendal/core/services/hf/src/core.rs:569,1
    - Dst: HfCore::send
      Src: /src/opendal/core/services/hf/src/core.rs:576,1
    - Dst: Ok
      Src: /src/opendal/core/services/hf/src/core.rs:577,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 52
    argCount: 2
    argNames:
    - ctx
    - operations
    argTypes:
    - '&OperationContext'
    - Vec<BucketOperation>
    constantsTouched: []
    func_position:
      end: 578
      start: 548
    functionDepth: 36
    functionLinenumber: 548
    functionLinenumberEnd: 578
    functionName: HfCore::commit_bucket
    functionSourceFile: /src/opendal/core/services/hf/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - HfCore::request
    - Self::len
    - String::new
    - Ok
    - Self::push
    - http::header
    - body
    - bucket_batch_url
    - Self::is_empty
    - Error::new
    - Err
    - Bytes::from
    - HfCore::send
    - serde_json::to_string
    - Self::push_str
    - Buffer::from
    linkageType: ''
    returnType: Result
    signature: 'pub(super) async fn commit_bucket(&self,ctx: &OperationContext,operations:
      Vec<BucketOperation>,) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: MockHttpTransport::new
      Src: /src/opendal/core/services/hf/src/core.rs:664,1
    - Dst: HttpTransporter::new
      Src: /src/opendal/core/services/hf/src/core.rs:665,1
    - Dst: Self::clone
      Src: /src/opendal/core/services/hf/src/core.rs:665,1
    - Dst: OperationContext::from_parts
      Src: /src/opendal/core/services/hf/src/core.rs:666,1
    - Dst: Executor::default
      Src: /src/opendal/core/services/hf/src/core.rs:666,1
    - Dst: ServiceInfo::new
      Src: /src/opendal/core/services/hf/src/core.rs:668,1
    - Dst: Capability::default
      Src: /src/opendal/core/services/hf/src/core.rs:669,1
    - Dst: XetSessionBuilder::new
      Src: /src/opendal/core/services/hf/src/core.rs:671,1
    - Dst: Self::build
      Src: /src/opendal/core/services/hf/src/core.rs:671,1
    - Dst: Result::expect
      Src: /src/opendal/core/services/hf/src/core.rs:671,1
    - Dst: HfCore::new
      Src: /src/opendal/core/services/hf/src/core.rs:674,1
    - Dst: HfRepo::new
      Src: /src/opendal/core/services/hf/src/core.rs:677,1
    - Dst: Self::to_string
      Src: /src/opendal/core/services/hf/src/core.rs:677,1
    - Dst: Some
      Src: /src/opendal/core/services/hf/src/core.rs:677,1
    - Dst: String::to_string
      Src: /src/opendal/core/services/hf/src/core.rs:677,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/hf/src/core.rs:678,1
    - Dst: Self::to_string
      Src: /src/opendal/core/services/hf/src/core.rs:680,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 25
    argCount: 4
    argNames:
    - repo_type
    - repo_id
    - revision
    - endpoint
    argTypes:
    - HfRepoType
    - '&str'
    - '&str'
    - '&str'
    constantsTouched: []
    func_position:
      end: 686
      start: 658
    functionDepth: 33
    functionLinenumber: 658
    functionLinenumberEnd: 686
    functionName: test_utils::create_test_core
    functionSourceFile: /src/opendal/core/services/hf/src/core.rs
    functionUses: 0
    functionsReached:
    - HttpTransporter::new
    - ServiceInfo::new
    - HfRepo::new
    - XetSessionBuilder::new
    - Result::expect
    - Self::to_string
    - HfCore::new
    - Some
    - Capability::default
    - Executor::default
    - MockHttpTransport::new
    - '&str::to_string'
    - OperationContext::from_parts
    - Self::clone
    - String::to_string
    - Self::build
    linkageType: ''
    returnType: (HfCore, OperationContext, MockHttpTransport)
    signature: 'pub(crate) fn create_test_core(repo_type: HfRepoType,repo_id: &str,revision:
      &str,endpoint: &str,) -> (HfCore, OperationContext, MockHttpTransport)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: create_test_core
      Src: /src/opendal/core/services/hf/src/core.rs:697,1
    - Dst: CompfsCore::path_info
      Src: /src/opendal/core/services/hf/src/core.rs:704,1
    - Dst: get_captured_url
      Src: /src/opendal/core/services/hf/src/core.rs:706,1
    - Dst: Ok
      Src: /src/opendal/core/services/hf/src/core.rs:712,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 713
      start: 696
    functionDepth: 34
    functionLinenumber: 696
    functionLinenumberEnd: 713
    functionName: tests::test_hf_path_info_url_model
    functionSourceFile: /src/opendal/core/services/hf/src/core.rs
    functionUses: 0
    functionsReached:
    - CompfsCore::path_info
    - create_test_core
    - Ok
    - get_captured_url
    linkageType: ''
    returnType: Result
    signature: async fn test_hf_path_info_url_model() -> Result<()>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: create_test_core
      Src: /src/opendal/core/services/hf/src/core.rs:717,1
    - Dst: CompfsCore::path_info
      Src: /src/opendal/core/services/hf/src/core.rs:724,1
    - Dst: get_captured_url
      Src: /src/opendal/core/services/hf/src/core.rs:726,1
    - Dst: Ok
      Src: /src/opendal/core/services/hf/src/core.rs:732,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 733
      start: 716
    functionDepth: 34
    functionLinenumber: 716
    functionLinenumberEnd: 733
    functionName: tests::test_hf_path_info_url_dataset
    functionSourceFile: /src/opendal/core/services/hf/src/core.rs
    functionUses: 0
    functionsReached:
    - CompfsCore::path_info
    - create_test_core
    - Ok
    - get_captured_url
    linkageType: ''
    returnType: Result
    signature: async fn test_hf_path_info_url_dataset() -> Result<()>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: create_test_core
      Src: /src/opendal/core/services/hf/src/core.rs:737,1
    - Dst: CompfsCore::path_info
      Src: /src/opendal/core/services/hf/src/core.rs:744,1
    - Dst: get_captured_url
      Src: /src/opendal/core/services/hf/src/core.rs:746,1
    - Dst: Ok
      Src: /src/opendal/core/services/hf/src/core.rs:752,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 753
      start: 736
    functionDepth: 34
    functionLinenumber: 736
    functionLinenumberEnd: 753
    functionName: tests::test_hf_path_info_url_custom_endpoint
    functionSourceFile: /src/opendal/core/services/hf/src/core.rs
    functionUses: 0
    functionsReached:
    - CompfsCore::path_info
    - create_test_core
    - Ok
    - get_captured_url
    linkageType: ''
    returnType: Result
    signature: async fn test_hf_path_info_url_custom_endpoint() -> Result<()>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: create_test_core
      Src: /src/opendal/core/services/hf/src/core.rs:757,1
    - Dst: CompfsCore::path_info
      Src: /src/opendal/core/services/hf/src/core.rs:764,1
    - Dst: get_captured_url
      Src: /src/opendal/core/services/hf/src/core.rs:766,1
    - Dst: Ok
      Src: /src/opendal/core/services/hf/src/core.rs:772,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 773
      start: 756
    functionDepth: 34
    functionLinenumber: 756
    functionLinenumberEnd: 773
    functionName: tests::test_hf_path_info_url_space
    functionSourceFile: /src/opendal/core/services/hf/src/core.rs
    functionUses: 0
    functionsReached:
    - CompfsCore::path_info
    - create_test_core
    - Ok
    - get_captured_url
    linkageType: ''
    returnType: Result
    signature: async fn test_hf_path_info_url_space() -> Result<()>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Response::builder
      Src: /src/opendal/core/services/hf/src/core.rs:836,1
    - Dst: OtelMetricsLayerBuilder::status
      Src: /src/opendal/core/services/hf/src/core.rs:836,1
    - Dst: Result::header
      Src: /src/opendal/core/services/hf/src/core.rs:836,1
    - Dst: String::body
      Src: /src/opendal/core/services/hf/src/core.rs:836,1
    - Dst: unwrap
      Src: /src/opendal/core/services/hf/src/core.rs:836,1
    - Dst: into_parts
      Src: /src/opendal/core/services/hf/src/core.rs:836,1
    - Dst: parse_error
      Src: /src/opendal/core/services/hf/src/core.rs:846,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 15
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 850
      start: 835
    functionDepth: 38
    functionLinenumber: 835
    functionLinenumberEnd: 850
    functionName: error::test_parse_error_branch_update_conflict_is_temporary
    functionSourceFile: /src/opendal/core/services/hf/src/core.rs
    functionUses: 0
    functionsReached:
    - Response::builder
    - String::body
    - OtelMetricsLayerBuilder::status
    - unwrap
    - parse_error
    - Result::header
    - into_parts
    linkageType: ''
    returnType: void
    signature: fn test_parse_error_branch_update_conflict_is_temporary()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Response::builder
      Src: /src/opendal/core/services/hf/src/core.rs:854,1
    - Dst: OtelMetricsLayerBuilder::status
      Src: /src/opendal/core/services/hf/src/core.rs:854,1
    - Dst: Result::header
      Src: /src/opendal/core/services/hf/src/core.rs:854,1
    - Dst: String::body
      Src: /src/opendal/core/services/hf/src/core.rs:854,1
    - Dst: unwrap
      Src: /src/opendal/core/services/hf/src/core.rs:854,1
    - Dst: into_parts
      Src: /src/opendal/core/services/hf/src/core.rs:854,1
    - Dst: parse_error
      Src: /src/opendal/core/services/hf/src/core.rs:861,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 15
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 865
      start: 853
    functionDepth: 38
    functionLinenumber: 853
    functionLinenumberEnd: 865
    functionName: error::test_parse_error_other_precondition_failed_is_not_temporary
    functionSourceFile: /src/opendal/core/services/hf/src/core.rs
    functionUses: 0
    functionsReached:
    - Response::builder
    - String::body
    - OtelMetricsLayerBuilder::status
    - unwrap
    - parse_error
    - Result::header
    - into_parts
    linkageType: ''
    returnType: void
    signature: fn test_parse_error_other_precondition_failed_is_not_temporary()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: utf8_percent_encode
      Src: /src/opendal/core/services/hf/src/core.rs:1168,1
    - Dst: to_string
      Src: /src/opendal/core/services/hf/src/core.rs:1168,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - revision
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 1169
      start: 1167
    functionDepth: 2
    functionLinenumber: 1167
    functionLinenumberEnd: 1169
    functionName: uri::percent_encode_revision
    functionSourceFile: /src/opendal/core/services/hf/src/core.rs
    functionUses: 0
    functionsReached:
    - to_string
    - utf8_percent_encode
    linkageType: ''
    returnType: String
    signature: 'pub(crate) fn percent_encode_revision(revision: &str) -> String'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: HfUri::parse
      Src: /src/opendal/core/services/hf/src/core.rs:1176,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/services/hf/src/core.rs:1176,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - path
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 1177
      start: 1175
    functionDepth: 33
    functionLinenumber: 1175
    functionLinenumberEnd: 1177
    functionName: uri::resolve
    functionSourceFile: /src/opendal/core/services/hf/src/core.rs
    functionUses: 0
    functionsReached:
    - HfUri::parse
    - Result::unwrap
    linkageType: ''
    returnType: HfUri
    signature: 'fn resolve(path: &str) -> HfUri'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 1195
      start: 1180
    functionDepth: 0
    functionLinenumber: 1180
    functionLinenumberEnd: 1195
    functionName: uri::test_repo_type_parse
    functionSourceFile: /src/opendal/core/services/hf/src/core.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: fn test_repo_type_parse()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: resolve
      Src: /src/opendal/core/services/hf/src/core.rs:1199,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 1204
      start: 1198
    functionDepth: 36
    functionLinenumber: 1198
    functionLinenumberEnd: 1204
    functionName: uri::resolve_with_namespace
    functionSourceFile: /src/opendal/core/services/hf/src/core.rs
    functionUses: 0
    functionsReached:
    - resolve
    linkageType: ''
    returnType: void
    signature: fn resolve_with_namespace()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: resolve
      Src: /src/opendal/core/services/hf/src/core.rs:1208,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 1213
      start: 1207
    functionDepth: 36
    functionLinenumber: 1207
    functionLinenumberEnd: 1213
    functionName: uri::resolve_with_revision
    functionSourceFile: /src/opendal/core/services/hf/src/core.rs
    functionUses: 0
    functionsReached:
    - resolve
    linkageType: ''
    returnType: void
    signature: fn resolve_with_revision()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: resolve
      Src: /src/opendal/core/services/hf/src/core.rs:1217,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 1222
      start: 1216
    functionDepth: 36
    functionLinenumber: 1216
    functionLinenumberEnd: 1222
    functionName: uri::resolve_datasets_prefix
    functionSourceFile: /src/opendal/core/services/hf/src/core.rs
    functionUses: 0
    functionsReached:
    - resolve
    linkageType: ''
    returnType: void
    signature: fn resolve_datasets_prefix()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: resolve
      Src: /src/opendal/core/services/hf/src/core.rs:1226,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 1231
      start: 1225
    functionDepth: 36
    functionLinenumber: 1225
    functionLinenumberEnd: 1231
    functionName: uri::resolve_datasets_prefix_and_revision
    functionSourceFile: /src/opendal/core/services/hf/src/core.rs
    functionUses: 0
    functionsReached:
    - resolve
    linkageType: ''
    returnType: void
    signature: fn resolve_datasets_prefix_and_revision()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: resolve
      Src: /src/opendal/core/services/hf/src/core.rs:1235,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 1240
      start: 1234
    functionDepth: 36
    functionLinenumber: 1234
    functionLinenumberEnd: 1240
    functionName: uri::resolve_with_path_in_repo
    functionSourceFile: /src/opendal/core/services/hf/src/core.rs
    functionUses: 0
    functionsReached:
    - resolve
    linkageType: ''
    returnType: void
    signature: fn resolve_with_path_in_repo()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: resolve
      Src: /src/opendal/core/services/hf/src/core.rs:1244,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 1249
      start: 1243
    functionDepth: 36
    functionLinenumber: 1243
    functionLinenumberEnd: 1249
    functionName: uri::resolve_with_revision_and_path
    functionSourceFile: /src/opendal/core/services/hf/src/core.rs
    functionUses: 0
    functionsReached:
    - resolve
    linkageType: ''
    returnType: void
    signature: fn resolve_with_revision_and_path()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: resolve
      Src: /src/opendal/core/services/hf/src/core.rs:1253,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 1258
      start: 1252
    functionDepth: 36
    functionLinenumber: 1252
    functionLinenumberEnd: 1258
    functionName: uri::resolve_datasets_revision_and_path
    functionSourceFile: /src/opendal/core/services/hf/src/core.rs
    functionUses: 0
    functionsReached:
    - resolve
    linkageType: ''
    returnType: void
    signature: fn resolve_datasets_revision_and_path()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: resolve
      Src: /src/opendal/core/services/hf/src/core.rs:1262,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 1267
      start: 1261
    functionDepth: 36
    functionLinenumber: 1261
    functionLinenumberEnd: 1267
    functionName: uri::resolve_refs_convert_revision
    functionSourceFile: /src/opendal/core/services/hf/src/core.rs
    functionUses: 0
    functionsReached:
    - resolve
    linkageType: ''
    returnType: void
    signature: fn resolve_refs_convert_revision()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: resolve
      Src: /src/opendal/core/services/hf/src/core.rs:1271,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 1276
      start: 1270
    functionDepth: 36
    functionLinenumber: 1270
    functionLinenumberEnd: 1276
    functionName: uri::resolve_refs_pr_revision
    functionSourceFile: /src/opendal/core/services/hf/src/core.rs
    functionUses: 0
    functionsReached:
    - resolve
    linkageType: ''
    returnType: void
    signature: fn resolve_refs_pr_revision()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: resolve
      Src: /src/opendal/core/services/hf/src/core.rs:1280,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 1285
      start: 1279
    functionDepth: 36
    functionLinenumber: 1279
    functionLinenumberEnd: 1285
    functionName: uri::resolve_encoded_revision
    functionSourceFile: /src/opendal/core/services/hf/src/core.rs
    functionUses: 0
    functionsReached:
    - resolve
    linkageType: ''
    returnType: void
    signature: fn resolve_encoded_revision()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: resolve
      Src: /src/opendal/core/services/hf/src/core.rs:1289,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 1294
      start: 1288
    functionDepth: 36
    functionLinenumber: 1288
    functionLinenumberEnd: 1294
    functionName: uri::resolve_at_in_path_not_revision
    functionSourceFile: /src/opendal/core/services/hf/src/core.rs
    functionUses: 0
    functionsReached:
    - resolve
    linkageType: ''
    returnType: void
    signature: fn resolve_at_in_path_not_revision()
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 1300
      start: 1297
    functionDepth: 0
    functionLinenumber: 1297
    functionLinenumberEnd: 1300
    functionName: uri::resolve_bare_repo_type_fails
    functionSourceFile: /src/opendal/core/services/hf/src/core.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: fn resolve_bare_repo_type_fails()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: resolve
      Src: /src/opendal/core/services/hf/src/core.rs:1304,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 1309
      start: 1303
    functionDepth: 36
    functionLinenumber: 1303
    functionLinenumberEnd: 1309
    functionName: uri::resolve_bare_repo_no_namespace
    functionSourceFile: /src/opendal/core/services/hf/src/core.rs
    functionUses: 0
    functionsReached:
    - resolve
    linkageType: ''
    returnType: void
    signature: fn resolve_bare_repo_no_namespace()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: resolve
      Src: /src/opendal/core/services/hf/src/core.rs:1313,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 1318
      start: 1312
    functionDepth: 36
    functionLinenumber: 1312
    functionLinenumberEnd: 1318
    functionName: uri::resolve_bare_repo_with_revision
    functionSourceFile: /src/opendal/core/services/hf/src/core.rs
    functionUses: 0
    functionsReached:
    - resolve
    linkageType: ''
    returnType: void
    signature: fn resolve_bare_repo_with_revision()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: resolve
      Src: /src/opendal/core/services/hf/src/core.rs:1322,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 1327
      start: 1321
    functionDepth: 36
    functionLinenumber: 1321
    functionLinenumberEnd: 1327
    functionName: uri::resolve_bare_dataset_no_namespace
    functionSourceFile: /src/opendal/core/services/hf/src/core.rs
    functionUses: 0
    functionsReached:
    - resolve
    linkageType: ''
    returnType: void
    signature: fn resolve_bare_dataset_no_namespace()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: resolve
      Src: /src/opendal/core/services/hf/src/core.rs:1331,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 1336
      start: 1330
    functionDepth: 36
    functionLinenumber: 1330
    functionLinenumberEnd: 1336
    functionName: uri::resolve_bare_dataset_with_revision
    functionSourceFile: /src/opendal/core/services/hf/src/core.rs
    functionUses: 0
    functionsReached:
    - resolve
    linkageType: ''
    returnType: void
    signature: fn resolve_bare_dataset_with_revision()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: resolve
      Src: /src/opendal/core/services/hf/src/core.rs:1340,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 1345
      start: 1339
    functionDepth: 36
    functionLinenumber: 1339
    functionLinenumberEnd: 1345
    functionName: uri::resolve_models_prefix
    functionSourceFile: /src/opendal/core/services/hf/src/core.rs
    functionUses: 0
    functionsReached:
    - resolve
    linkageType: ''
    returnType: void
    signature: fn resolve_models_prefix()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: resolve
      Src: /src/opendal/core/services/hf/src/core.rs:1349,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 1354
      start: 1348
    functionDepth: 36
    functionLinenumber: 1348
    functionLinenumberEnd: 1354
    functionName: uri::resolve_spaces_prefix
    functionSourceFile: /src/opendal/core/services/hf/src/core.rs
    functionUses: 0
    functionsReached:
    - resolve
    linkageType: ''
    returnType: void
    signature: fn resolve_spaces_prefix()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: resolve
      Src: /src/opendal/core/services/hf/src/core.rs:1358,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 1363
      start: 1357
    functionDepth: 36
    functionLinenumber: 1357
    functionLinenumberEnd: 1363
    functionName: uri::resolve_buckets_prefix
    functionSourceFile: /src/opendal/core/services/hf/src/core.rs
    functionUses: 0
    functionsReached:
    - resolve
    linkageType: ''
    returnType: void
    signature: fn resolve_buckets_prefix()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: resolve
      Src: /src/opendal/core/services/hf/src/core.rs:1367,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 1372
      start: 1366
    functionDepth: 36
    functionLinenumber: 1366
    functionLinenumberEnd: 1372
    functionName: uri::resolve_buckets_with_path
    functionSourceFile: /src/opendal/core/services/hf/src/core.rs
    functionUses: 0
    functionsReached:
    - resolve
    linkageType: ''
    returnType: void
    signature: fn resolve_buckets_with_path()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: resolve
      Src: /src/opendal/core/services/hf/src/core.rs:1376,1
    - Dst: resolve_url
      Src: /src/opendal/core/services/hf/src/core.rs:1377,1
    - Dst: revision
      Src: /src/opendal/core/services/hf/src/core.rs:1377,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 1382
      start: 1375
    functionDepth: 36
    functionLinenumber: 1375
    functionLinenumberEnd: 1382
    functionName: uri::test_bucket_resolve_url
    functionSourceFile: /src/opendal/core/services/hf/src/core.rs
    functionUses: 0
    functionsReached:
    - resolve
    - revision
    - resolve_url
    linkageType: ''
    returnType: void
    signature: fn test_bucket_resolve_url()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: resolve
      Src: /src/opendal/core/services/hf/src/core.rs:1386,1
    - Dst: xet_token_url
      Src: /src/opendal/core/services/hf/src/core.rs:1387,1
    - Dst: xet_token_url
      Src: /src/opendal/core/services/hf/src/core.rs:1388,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 1397
      start: 1385
    functionDepth: 36
    functionLinenumber: 1385
    functionLinenumberEnd: 1397
    functionName: uri::test_bucket_xet_token_urls
    functionSourceFile: /src/opendal/core/services/hf/src/core.rs
    functionUses: 0
    functionsReached:
    - resolve
    - xet_token_url
    linkageType: ''
    returnType: void
    signature: fn test_bucket_xet_token_urls()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: resolve
      Src: /src/opendal/core/services/hf/src/core.rs:1401,1
    - Dst: bucket_batch_url
      Src: /src/opendal/core/services/hf/src/core.rs:1402,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 1404
      start: 1400
    functionDepth: 36
    functionLinenumber: 1400
    functionLinenumberEnd: 1404
    functionName: uri::test_bucket_batch_url
    functionSourceFile: /src/opendal/core/services/hf/src/core.rs
    functionUses: 0
    functionsReached:
    - resolve
    - bucket_batch_url
    linkageType: ''
    returnType: void
    signature: fn test_bucket_batch_url()
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 3
    argNames:
    - core
    - ctx
    - path
    argTypes:
    - Arc<HfCore>
    - OperationContext
    - String
    constantsTouched: []
    func_position:
      end: 54
      start: 47
    functionDepth: 0
    functionLinenumber: 47
    functionLinenumberEnd: 54
    functionName: HfLazyWriter::new
    functionSourceFile: /src/opendal/core/services/hf/src/writer.rs
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(core: Arc<HfCore>, ctx: OperationContext, path: String)
      -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: is_none
      Src: /src/opendal/core/services/hf/src/writer.rs:57,1
    - Dst: HfWriter::try_new
      Src: /src/opendal/core/services/hf/src/writer.rs:59,1
    - Dst: clone
      Src: /src/opendal/core/services/hf/src/writer.rs:59,1
    - Dst: clone
      Src: /src/opendal/core/services/hf/src/writer.rs:59,1
    - Dst: clone
      Src: /src/opendal/core/services/hf/src/writer.rs:59,1
    - Dst: Some
      Src: /src/opendal/core/services/hf/src/writer.rs:60,1
    - Dst: Ok
      Src: /src/opendal/core/services/hf/src/writer.rs:63,1
    - Dst: as_mut
      Src: /src/opendal/core/services/hf/src/writer.rs:63,1
    - Dst: expect
      Src: /src/opendal/core/services/hf/src/writer.rs:63,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 27
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 64
      start: 56
    functionDepth: 38
    functionLinenumber: 56
    functionLinenumberEnd: 64
    functionName: HfLazyWriter::inner
    functionSourceFile: /src/opendal/core/services/hf/src/writer.rs
    functionUses: 2
    functionsReached:
    - is_none
    - as_mut
    - HfWriter::try_new
    - expect
    - Ok
    - clone
    - Some
    linkageType: ''
    returnType: Result
    signature: async fn inner(&mut self) -> Result<&mut HfWriter>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: HfLazyWriter::inner
      Src: /src/opendal/core/services/hf/src/writer.rs:69,1
    - Dst: write
      Src: /src/opendal/core/services/hf/src/writer.rs:69,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 1
    argNames:
    - bs
    argTypes:
    - Buffer
    constantsTouched: []
    func_position:
      end: 70
      start: 68
    functionDepth: 39
    functionLinenumber: 68
    functionLinenumberEnd: 70
    functionName: HfLazyWriter::write
    functionSourceFile: /src/opendal/core/services/hf/src/writer.rs
    functionUses: 0
    functionsReached:
    - write
    - HfLazyWriter::inner
    linkageType: ''
    returnType: Result
    signature: 'async fn write(&mut self, bs: Buffer) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: HfLazyWriter::inner
      Src: /src/opendal/core/services/hf/src/writer.rs:73,1
    - Dst: close
      Src: /src/opendal/core/services/hf/src/writer.rs:73,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 74
      start: 72
    functionDepth: 39
    functionLinenumber: 72
    functionLinenumberEnd: 74
    functionName: HfLazyWriter::close
    functionSourceFile: /src/opendal/core/services/hf/src/writer.rs
    functionUses: 0
    functionsReached:
    - HfLazyWriter::inner
    - close
    linkageType: ''
    returnType: Result
    signature: async fn close(&mut self) -> Result<Metadata>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self::abort
      Src: /src/opendal/core/services/hf/src/writer.rs:78,1
    - Dst: Ok
      Src: /src/opendal/core/services/hf/src/writer.rs:79,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 81
      start: 76
    functionDepth: 31
    functionLinenumber: 76
    functionLinenumberEnd: 81
    functionName: HfLazyWriter::abort
    functionSourceFile: /src/opendal/core/services/hf/src/writer.rs
    functionUses: 0
    functionsReached:
    - Ok
    - Self::abort
    linkageType: ''
    returnType: Result
    signature: async fn abort(&mut self) -> Result<()>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: CompfsCore::xet_upload_commit
      Src: /src/opendal/core/services/hf/src/writer.rs:92,1
    - Dst: Result::upload_stream
      Src: /src/opendal/core/services/hf/src/writer.rs:93,1
    - Dst: map_err
      Src: /src/opendal/core/services/hf/src/writer.rs:93,1
    - Dst: Error::new
      Src: /src/opendal/core/services/hf/src/writer.rs:97,1
    - Dst: Self::set_source
      Src: /src/opendal/core/services/hf/src/writer.rs:97,1
    - Dst: Ok
      Src: /src/opendal/core/services/hf/src/writer.rs:100,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 3
    argNames:
    - core
    - ctx
    - path
    argTypes:
    - Arc<HfCore>
    - OperationContext
    - String
    constantsTouched: []
    func_position:
      end: 108
      start: 91
    functionDepth: 37
    functionLinenumber: 91
    functionLinenumberEnd: 108
    functionName: HfWriter::try_new
    functionSourceFile: /src/opendal/core/services/hf/src/writer.rs
    functionUses: 1
    functionsReached:
    - map_err
    - Ok
    - Error::new
    - Result::upload_stream
    - Self::set_source
    - CompfsCore::xet_upload_commit
    linkageType: ''
    returnType: Result
    signature: 'pub async fn try_new(core: Arc<HfCore>, ctx: OperationContext, path:
      String) -> Result<Self>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: commit
      Src: /src/opendal/core/services/hf/src/writer.rs:119,1
    - Dst: Err
      Src: /src/opendal/core/services/hf/src/writer.rs:122,1
    - Dst: Error::new
      Src: /src/opendal/core/services/hf/src/writer.rs:123,1
    - Dst: Self::set_source
      Src: /src/opendal/core/services/hf/src/writer.rs:123,1
    - Dst: Result::file_size
      Src: /src/opendal/core/services/hf/src/writer.rs:128,1
    - Dst: Self::expect
      Src: /src/opendal/core/services/hf/src/writer.rs:128,1
    - Dst: Metadata::default
      Src: /src/opendal/core/services/hf/src/writer.rs:131,1
    - Dst: Self::with_content_length
      Src: /src/opendal/core/services/hf/src/writer.rs:131,1
    - Dst: repo_path
      Src: /src/opendal/core/services/hf/src/writer.rs:133,1
    - Dst: is_bucket
      Src: /src/opendal/core/services/hf/src/writer.rs:134,1
    - Dst: Result::hash
      Src: /src/opendal/core/services/hf/src/writer.rs:135,1
    - Dst: to_string
      Src: /src/opendal/core/services/hf/src/writer.rs:135,1
    - Dst: commit_bucket
      Src: /src/opendal/core/services/hf/src/writer.rs:136,1
    - Dst: Result::sha256
      Src: /src/opendal/core/services/hf/src/writer.rs:146,1
    - Dst: Self::ok_or_else
      Src: /src/opendal/core/services/hf/src/writer.rs:146,1
    - Dst: Error::new
      Src: /src/opendal/core/services/hf/src/writer.rs:147,1
    - Dst: Self::to_string
      Src: /src/opendal/core/services/hf/src/writer.rs:151,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/hf/src/writer.rs:152,1
    - Dst: commit_git
      Src: /src/opendal/core/services/hf/src/writer.rs:155,1
    - Dst: Ok
      Src: /src/opendal/core/services/hf/src/writer.rs:160,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 63
    argCount: 1
    argNames:
    - file_info
    argTypes:
    - '&XetFileInfo'
    constantsTouched: []
    func_position:
      end: 161
      start: 116
    functionDepth: 37
    functionLinenumber: 116
    functionLinenumberEnd: 161
    functionName: HfWriter::commit
    functionSourceFile: /src/opendal/core/services/hf/src/writer.rs
    functionUses: 1
    functionsReached:
    - Self::to_string
    - Result::sha256
    - Self::ok_or_else
    - Ok
    - Self::expect
    - commit
    - '&str::to_string'
    - is_bucket
    - Result::hash
    - repo_path
    - commit_bucket
    - Self::set_source
    - to_string
    - Metadata::default
    - Self::with_content_length
    - Result::file_size
    - Error::new
    - Err
    - commit_git
    linkageType: ''
    returnType: Result
    signature: 'async fn commit(&mut self, file_info: &XetFileInfo) -> Result<Metadata>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: write
      Src: /src/opendal/core/services/hf/src/writer.rs:166,1
    - Dst: Result::to_bytes
      Src: /src/opendal/core/services/hf/src/writer.rs:166,1
    - Dst: map_err
      Src: /src/opendal/core/services/hf/src/writer.rs:166,1
    - Dst: Error::new
      Src: /src/opendal/core/services/hf/src/writer.rs:167,1
    - Dst: Self::set_source
      Src: /src/opendal/core/services/hf/src/writer.rs:167,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 1
    argNames:
    - bs
    argTypes:
    - Buffer
    constantsTouched: []
    func_position:
      end: 169
      start: 165
    functionDepth: 36
    functionLinenumber: 165
    functionLinenumberEnd: 169
    functionName: HfWriter::write
    functionSourceFile: /src/opendal/core/services/hf/src/writer.rs
    functionUses: 0
    functionsReached:
    - map_err
    - Result::to_bytes
    - Error::new
    - Self::set_source
    - write
    linkageType: ''
    returnType: Result
    signature: 'async fn write(&mut self, bs: Buffer) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: clone
      Src: /src/opendal/core/services/hf/src/writer.rs:172,1
    - Dst: finish
      Src: /src/opendal/core/services/hf/src/writer.rs:174,1
    - Dst: Some
      Src: /src/opendal/core/services/hf/src/writer.rs:179,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/hf/src/writer.rs:179,1
    - Dst: Err
      Src: /src/opendal/core/services/hf/src/writer.rs:183,1
    - Dst: Error::new
      Src: /src/opendal/core/services/hf/src/writer.rs:183,1
    - Dst: Err
      Src: /src/opendal/core/services/hf/src/writer.rs:189,1
    - Dst: Error::new
      Src: /src/opendal/core/services/hf/src/writer.rs:190,1
    - Dst: Self::set_source
      Src: /src/opendal/core/services/hf/src/writer.rs:190,1
    - Dst: HfWriter::commit
      Src: /src/opendal/core/services/hf/src/writer.rs:197,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 30
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 198
      start: 171
    functionDepth: 36
    functionLinenumber: 171
    functionLinenumberEnd: 198
    functionName: HfWriter::close
    functionSourceFile: /src/opendal/core/services/hf/src/writer.rs
    functionUses: 0
    functionsReached:
    - Result::clone
    - finish
    - clone
    - Err
    - Some
    - Error::new
    - Self::set_source
    - HfWriter::commit
    linkageType: ''
    returnType: Result
    signature: async fn close(&mut self) -> Result<Metadata>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: abort
      Src: /src/opendal/core/services/hf/src/writer.rs:201,1
    - Dst: Ok
      Src: /src/opendal/core/services/hf/src/writer.rs:202,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 203
      start: 200
    functionDepth: 31
    functionLinenumber: 200
    functionLinenumberEnd: 203
    functionName: HfWriter::abort
    functionSourceFile: /src/opendal/core/services/hf/src/writer.rs
    functionUses: 0
    functionsReached:
    - Ok
    - abort
    linkageType: ''
    returnType: Result
    signature: async fn abort(&mut self) -> Result<()>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: testing_bucket_operator
      Src: /src/opendal/core/services/hf/src/writer.rs:216,1
    - Dst: write
      Src: /src/opendal/core/services/hf/src/writer.rs:220,1
    - Dst: Result::as_slice
      Src: /src/opendal/core/services/hf/src/writer.rs:220,1
    - Dst: expect
      Src: /src/opendal/core/services/hf/src/writer.rs:220,1
    - Dst: read
      Src: /src/opendal/core/services/hf/src/writer.rs:224,1
    - Dst: expect
      Src: /src/opendal/core/services/hf/src/writer.rs:224,1
    - Dst: delete
      Src: /src/opendal/core/services/hf/src/writer.rs:227,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 18
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 228
      start: 215
    functionDepth: 39
    functionLinenumber: 215
    functionLinenumberEnd: 228
    functionName: tests::test_bucket_write_roundtrip
    functionSourceFile: /src/opendal/core/services/hf/src/writer.rs
    functionUses: 0
    functionsReached:
    - read
    - expect
    - delete
    - testing_bucket_operator
    - Result::as_slice
    - write
    linkageType: ''
    returnType: void
    signature: async fn test_bucket_write_roundtrip()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: register::<Hf>
      Src: /src/opendal/core/services/hf/src/lib.rs:26,1
    - Dst: register::<Hf>
      Src: /src/opendal/core/services/hf/src/lib.rs:27,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - registry
    argTypes:
    - '&opendal_core::OperatorRegistry'
    constantsTouched: []
    func_position:
      end: 28
      start: 25
    functionDepth: 0
    functionLinenumber: 25
    functionLinenumberEnd: 28
    functionName: register_hf_service
    functionSourceFile: /src/opendal/core/services/hf/src/lib.rs
    functionUses: 2
    functionsReached:
    - register::<Hf>
    linkageType: ''
    returnType: void
    signature: 'pub fn register_hf_service(registry: &opendal_core::OperatorRegistry)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Hf::default
      Src: /src/opendal/core/services/hf/src/lib.rs:53,1
    - Dst: Self::repo_id
      Src: /src/opendal/core/services/hf/src/lib.rs:53,1
    - Dst: HfConfig::default
      Src: /src/opendal/core/services/hf/src/lib.rs:54,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 55
      start: 52
    functionDepth: 5
    functionLinenumber: 52
    functionLinenumberEnd: 55
    functionName: tests::type_aliases_are_interchangeable
    functionSourceFile: /src/opendal/core/services/hf/src/lib.rs
    functionUses: 0
    functionsReached:
    - HfConfig::default
    - Hf::default
    - Self::repo_id
    linkageType: ''
    returnType: void
    signature: fn type_aliases_are_interchangeable()
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 61
      start: 58
    functionDepth: 0
    functionLinenumber: 58
    functionLinenumberEnd: 61
    functionName: tests::scheme_constants
    functionSourceFile: /src/opendal/core/services/hf/src/lib.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: fn scheme_constants()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self::is_empty
      Src: /src/opendal/core/services/hf/src/backend.rs:54,1
    - Dst: HfRepoType::parse
      Src: /src/opendal/core/services/hf/src/backend.rs:55,1
    - Dst: Some
      Src: /src/opendal/core/services/hf/src/backend.rs:57,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 1
    argNames:
    - repo_type
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 60
      start: 53
    functionDepth: 37
    functionLinenumber: 53
    functionLinenumberEnd: 60
    functionName: HfBuilder::repo_type
    functionSourceFile: /src/opendal/core/services/hf/src/backend.rs
    functionUses: 0
    functionsReached:
    - Self::is_empty
    - HfRepoType::parse
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn repo_type(mut self, repo_type: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self::is_empty
      Src: /src/opendal/core/services/hf/src/backend.rs:72,1
    - Dst: Some
      Src: /src/opendal/core/services/hf/src/backend.rs:73,1
    - Dst: Self::to_string
      Src: /src/opendal/core/services/hf/src/backend.rs:73,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 1
    argNames:
    - repo_id
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 76
      start: 71
    functionDepth: 4
    functionLinenumber: 71
    functionLinenumberEnd: 76
    functionName: HfBuilder::repo_id
    functionSourceFile: /src/opendal/core/services/hf/src/backend.rs
    functionUses: 0
    functionsReached:
    - Self::is_empty
    - Self::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn repo_id(mut self, repo_id: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: String::is_empty
      Src: /src/opendal/core/services/hf/src/backend.rs:86,1
    - Dst: Some
      Src: /src/opendal/core/services/hf/src/backend.rs:87,1
    - Dst: String::to_string
      Src: /src/opendal/core/services/hf/src/backend.rs:87,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 1
    argNames:
    - revision
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 90
      start: 85
    functionDepth: 4
    functionLinenumber: 85
    functionLinenumberEnd: 90
    functionName: HfBuilder::revision
    functionSourceFile: /src/opendal/core/services/hf/src/backend.rs
    functionUses: 0
    functionsReached:
    - String::is_empty
    - String::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn revision(mut self, revision: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::is_empty
      Src: /src/opendal/core/services/hf/src/backend.rs:96,1
    - Dst: Some
      Src: /src/opendal/core/services/hf/src/backend.rs:99,1
    - Dst: Result::to_string
      Src: /src/opendal/core/services/hf/src/backend.rs:99,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - root
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 103
      start: 95
    functionDepth: 4
    functionLinenumber: 95
    functionLinenumberEnd: 103
    functionName: HfBuilder::root
    functionSourceFile: /src/opendal/core/services/hf/src/backend.rs
    functionUses: 0
    functionsReached:
    - Result::is_empty
    - Result::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn root(mut self, root: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self::is_empty
      Src: /src/opendal/core/services/hf/src/backend.rs:109,1
    - Dst: Some
      Src: /src/opendal/core/services/hf/src/backend.rs:110,1
    - Dst: Self::to_string
      Src: /src/opendal/core/services/hf/src/backend.rs:110,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 1
    argNames:
    - token
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 113
      start: 108
    functionDepth: 4
    functionLinenumber: 108
    functionLinenumberEnd: 113
    functionName: HfBuilder::token
    functionSourceFile: /src/opendal/core/services/hf/src/backend.rs
    functionUses: 0
    functionsReached:
    - Self::is_empty
    - Self::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn token(mut self, token: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Option::is_empty
      Src: /src/opendal/core/services/hf/src/backend.rs:128,1
    - Dst: HfDownloadMode::parse
      Src: /src/opendal/core/services/hf/src/backend.rs:129,1
    - Dst: Some
      Src: /src/opendal/core/services/hf/src/backend.rs:131,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 1
    argNames:
    - mode
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 134
      start: 127
    functionDepth: 37
    functionLinenumber: 127
    functionLinenumberEnd: 134
    functionName: HfBuilder::download_mode
    functionSourceFile: /src/opendal/core/services/hf/src/backend.rs
    functionUses: 0
    functionsReached:
    - Some
    - Option::is_empty
    - HfDownloadMode::parse
    linkageType: ''
    returnType: Self
    signature: 'pub fn download_mode(mut self, mode: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self::is_empty
      Src: /src/opendal/core/services/hf/src/backend.rs:141,1
    - Dst: Some
      Src: /src/opendal/core/services/hf/src/backend.rs:142,1
    - Dst: Self::to_string
      Src: /src/opendal/core/services/hf/src/backend.rs:142,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 1
    argNames:
    - endpoint
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 145
      start: 140
    functionDepth: 4
    functionLinenumber: 140
    functionLinenumberEnd: 145
    functionName: HfBuilder::endpoint
    functionSourceFile: /src/opendal/core/services/hf/src/backend.rs
    functionUses: 0
    functionsReached:
    - Self::is_empty
    - Self::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn endpoint(mut self, endpoint: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: clone
      Src: /src/opendal/core/services/hf/src/backend.rs:148,1
    - Dst: or_else
      Src: /src/opendal/core/services/hf/src/backend.rs:148,1
    - Dst: std::env::var
      Src: /src/opendal/core/services/hf/src/backend.rs:151,1
    - Dst: ok
      Src: /src/opendal/core/services/hf/src/backend.rs:151,1
    - Dst: unwrap_or_else
      Src: /src/opendal/core/services/hf/src/backend.rs:148,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/hf/src/backend.rs:152,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 15
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 153
      start: 147
    functionDepth: 3
    functionLinenumber: 147
    functionLinenumberEnd: 153
    functionName: HfBuilder::hf_endpoint
    functionSourceFile: /src/opendal/core/services/hf/src/backend.rs
    functionUses: 1
    functionsReached:
    - or_else
    - ok
    - clone
    - '&str::to_string'
    - std::env::var
    - unwrap_or_else
    linkageType: ''
    returnType: String
    signature: fn hf_endpoint(&self) -> String
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: std::env::var
      Src: /src/opendal/core/services/hf/src/backend.rs:161,1
    - Dst: Option::is_empty
      Src: /src/opendal/core/services/hf/src/backend.rs:162,1
    - Dst: HfDownloadMode::default
      Src: /src/opendal/core/services/hf/src/backend.rs:166,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 167
      start: 157
    functionDepth: 4
    functionLinenumber: 157
    functionLinenumberEnd: 167
    functionName: HfBuilder::hf_download_mode
    functionSourceFile: /src/opendal/core/services/hf/src/backend.rs
    functionUses: 1
    functionsReached:
    - HfDownloadMode::default
    - std::env::var
    - Option::is_empty
    linkageType: ''
    returnType: HfDownloadMode
    signature: fn hf_download_mode(&self) -> HfDownloadMode
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: std::env::var
      Src: /src/opendal/core/services/hf/src/backend.rs:170,1
    - Dst: Some
      Src: /src/opendal/core/services/hf/src/backend.rs:171,1
    - Dst: PathBuf::from
      Src: /src/opendal/core/services/hf/src/backend.rs:171,1
    - Dst: std::env::var
      Src: /src/opendal/core/services/hf/src/backend.rs:173,1
    - Dst: Some
      Src: /src/opendal/core/services/hf/src/backend.rs:174,1
    - Dst: PathBuf::from
      Src: /src/opendal/core/services/hf/src/backend.rs:174,1
    - Dst: Result::join
      Src: /src/opendal/core/services/hf/src/backend.rs:174,1
    - Dst: std::env::var
      Src: /src/opendal/core/services/hf/src/backend.rs:176,1
    - Dst: ok
      Src: /src/opendal/core/services/hf/src/backend.rs:176,1
    - Dst: Some
      Src: /src/opendal/core/services/hf/src/backend.rs:177,1
    - Dst: PathBuf::from
      Src: /src/opendal/core/services/hf/src/backend.rs:177,1
    - Dst: Result::join
      Src: /src/opendal/core/services/hf/src/backend.rs:177,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 24
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 178
      start: 169
    functionDepth: 32
    functionLinenumber: 169
    functionLinenumberEnd: 178
    functionName: HfBuilder::hf_home
    functionSourceFile: /src/opendal/core/services/hf/src/backend.rs
    functionUses: 0
    functionsReached:
    - PathBuf::from
    - Result::join
    - ok
    - Some
    - std::env::var
    linkageType: ''
    returnType: Option
    signature: fn hf_home() -> Option<PathBuf>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: clone
      Src: /src/opendal/core/services/hf/src/backend.rs:183,1
    - Dst: Some
      Src: /src/opendal/core/services/hf/src/backend.rs:184,1
    - Dst: std::env::var
      Src: /src/opendal/core/services/hf/src/backend.rs:186,1
    - Dst: Option::is_empty
      Src: /src/opendal/core/services/hf/src/backend.rs:187,1
    - Dst: std::env::var
      Src: /src/opendal/core/services/hf/src/backend.rs:191,1
    - Dst: Result::is_empty
      Src: /src/opendal/core/services/hf/src/backend.rs:192,1
    - Dst: Some
      Src: /src/opendal/core/services/hf/src/backend.rs:194,1
    - Dst: std::env::var
      Src: /src/opendal/core/services/hf/src/backend.rs:196,1
    - Dst: Some
      Src: /src/opendal/core/services/hf/src/backend.rs:197,1
    - Dst: PathBuf::from
      Src: /src/opendal/core/services/hf/src/backend.rs:197,1
    - Dst: Self::hf_home
      Src: /src/opendal/core/services/hf/src/backend.rs:199,1
    - Dst: Option::map
      Src: /src/opendal/core/services/hf/src/backend.rs:199,1
    - Dst: Result::join
      Src: /src/opendal/core/services/hf/src/backend.rs:199,1
    - Dst: and_then
      Src: /src/opendal/core/services/hf/src/backend.rs:201,1
    - Dst: std::fs::read_to_string
      Src: /src/opendal/core/services/hf/src/backend.rs:202,1
    - Dst: ok
      Src: /src/opendal/core/services/hf/src/backend.rs:202,1
    - Dst: map
      Src: /src/opendal/core/services/hf/src/backend.rs:201,1
    - Dst: trim
      Src: /src/opendal/core/services/hf/src/backend.rs:203,1
    - Dst: to_string
      Src: /src/opendal/core/services/hf/src/backend.rs:203,1
    - Dst: filter
      Src: /src/opendal/core/services/hf/src/backend.rs:201,1
    - Dst: is_empty
      Src: /src/opendal/core/services/hf/src/backend.rs:204,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 55
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 205
      start: 182
    functionDepth: 32
    functionLinenumber: 182
    functionLinenumberEnd: 205
    functionName: HfBuilder::hf_token
    functionSourceFile: /src/opendal/core/services/hf/src/backend.rs
    functionUses: 5
    functionsReached:
    - PathBuf::from
    - to_string
    - filter
    - Result::join
    - std::fs::read_to_string
    - and_then
    - ok
    - Option::map
    - clone
    - trim
    - Some
    - Self::hf_home
    - map
    - is_empty
    - Result::is_empty
    - Option::is_empty
    - std::env::var
    linkageType: ''
    returnType: Option
    signature: fn hf_token(&self) -> Option<String>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: HfBuilder::hf_token
      Src: /src/opendal/core/services/hf/src/backend.rs:214,1
    - Dst: HfBuilder::hf_endpoint
      Src: /src/opendal/core/services/hf/src/backend.rs:215,1
    - Dst: HfBuilder::hf_download_mode
      Src: /src/opendal/core/services/hf/src/backend.rs:216,1
    - Dst: ok_or_else
      Src: /src/opendal/core/services/hf/src/backend.rs:218,1
    - Dst: Error::new
      Src: /src/opendal/core/services/hf/src/backend.rs:219,1
    - Dst: Self::with_operation
      Src: /src/opendal/core/services/hf/src/backend.rs:219,1
    - Dst: Self::with_context
      Src: /src/opendal/core/services/hf/src/backend.rs:219,1
    - Dst: ok_or_else
      Src: /src/opendal/core/services/hf/src/backend.rs:225,1
    - Dst: Error::new
      Src: /src/opendal/core/services/hf/src/backend.rs:226,1
    - Dst: Self::with_operation
      Src: /src/opendal/core/services/hf/src/backend.rs:226,1
    - Dst: Self::with_context
      Src: /src/opendal/core/services/hf/src/backend.rs:226,1
    - Dst: String::clone
      Src: /src/opendal/core/services/hf/src/backend.rs:233,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/hf/src/backend.rs:234,1
    - Dst: normalize_root
      Src: /src/opendal/core/services/hf/src/backend.rs:238,1
    - Dst: unwrap_or_default
      Src: /src/opendal/core/services/hf/src/backend.rs:238,1
    - Dst: ServiceInfo::new
      Src: /src/opendal/core/services/hf/src/backend.rs:244,1
    - Dst: Self::is_some
      Src: /src/opendal/core/services/hf/src/backend.rs:248,1
    - Dst: Self::is_some
      Src: /src/opendal/core/services/hf/src/backend.rs:249,1
    - Dst: Some
      Src: /src/opendal/core/services/hf/src/backend.rs:250,1
    - Dst: Default::default
      Src: /src/opendal/core/services/hf/src/backend.rs:254,1
    - Dst: HfRepo::new
      Src: /src/opendal/core/services/hf/src/backend.rs:257,1
    - Dst: Some
      Src: /src/opendal/core/services/hf/src/backend.rs:257,1
    - Dst: String::clone
      Src: /src/opendal/core/services/hf/src/backend.rs:257,1
    - Dst: Ok
      Src: /src/opendal/core/services/hf/src/backend.rs:260,1
    - Dst: Arc::new
      Src: /src/opendal/core/services/hf/src/backend.rs:261,1
    - Dst: HfCore::build
      Src: /src/opendal/core/services/hf/src/backend.rs:261,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 68
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 271
      start: 211
    functionDepth: 33
    functionLinenumber: 211
    functionLinenumberEnd: 271
    functionName: HfBuilder::build
    functionSourceFile: /src/opendal/core/services/hf/src/backend.rs
    functionUses: 0
    functionsReached:
    - HfRepo::new
    - Default::default
    - Arc::new
    - Self::with_context
    - ServiceInfo::new
    - Ok
    - String::clone
    - normalize_root
    - HfCore::build
    - '&str::to_string'
    - Self::is_some
    - unwrap_or_default
    - ok_or_else
    - HfBuilder::hf_token
    - Some
    - HfBuilder::hf_endpoint
    - HfBuilder::hf_download_mode
    - Error::new
    - Self::with_operation
    linkageType: ''
    returnType: Result
    signature: fn build(self) -> Result<impl Service>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: clone
      Src: /src/opendal/core/services/hf/src/backend.rs:288,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 289
      start: 287
    functionDepth: 2
    functionLinenumber: 287
    functionLinenumberEnd: 289
    functionName: HfBackend::info
    functionSourceFile: /src/opendal/core/services/hf/src/backend.rs
    functionUses: 0
    functionsReached:
    - clone
    linkageType: ''
    returnType: ServiceInfo
    signature: fn info(&self) -> ServiceInfo
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 293
      start: 291
    functionDepth: 0
    functionLinenumber: 291
    functionLinenumberEnd: 293
    functionName: HfBackend::capability
    functionSourceFile: /src/opendal/core/services/hf/src/backend.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Capability
    signature: fn capability(&self) -> Capability
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/core/services/hf/src/backend.rs:301,1
    - Dst: Error::new
      Src: /src/opendal/core/services/hf/src/backend.rs:301,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - _ctx
    - _path
    - _args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpCreateDir
    constantsTouched: []
    func_position:
      end: 305
      start: 295
    functionDepth: 36
    functionLinenumber: 295
    functionLinenumberEnd: 305
    functionName: HfBackend::create_dir
    functionSourceFile: /src/opendal/core/services/hf/src/backend.rs
    functionUses: 0
    functionsReached:
    - Error::new
    - Err
    linkageType: ''
    returnType: Result
    signature: 'async fn create_dir(&self,_ctx: &OperationContext,_path: &str,_args:
      OpCreateDir,) -> Result<RpCreateDir>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/core/services/hf/src/backend.rs:310,1
    - Dst: RpStat::new
      Src: /src/opendal/core/services/hf/src/backend.rs:310,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/hf/src/backend.rs:310,1
    - Dst: is_bucket
      Src: /src/opendal/core/services/hf/src/backend.rs:314,1
    - Dst: ends_with
      Src: /src/opendal/core/services/hf/src/backend.rs:314,1
    - Dst: Ok
      Src: /src/opendal/core/services/hf/src/backend.rs:315,1
    - Dst: RpStat::new
      Src: /src/opendal/core/services/hf/src/backend.rs:315,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/hf/src/backend.rs:315,1
    - Dst: path_info
      Src: /src/opendal/core/services/hf/src/backend.rs:318,1
    - Dst: Ok
      Src: /src/opendal/core/services/hf/src/backend.rs:319,1
    - Dst: RpStat::new
      Src: /src/opendal/core/services/hf/src/backend.rs:319,1
    - Dst: ServiceInfo::metadata
      Src: /src/opendal/core/services/hf/src/backend.rs:319,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 32
    argCount: 3
    argNames:
    - ctx
    - path
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpStat
    constantsTouched: []
    func_position:
      end: 320
      start: 307
    functionDepth: 39
    functionLinenumber: 307
    functionLinenumberEnd: 320
    functionName: HfBackend::stat
    functionSourceFile: /src/opendal/core/services/hf/src/backend.rs
    functionUses: 0
    functionsReached:
    - Metadata::new
    - Ok
    - ends_with
    - RpStat::new
    - path_info
    - is_bucket
    - ServiceInfo::metadata
    linkageType: ''
    returnType: Result
    signature: 'async fn stat(&self, ctx: &OperationContext, path: &str, _: OpStat)
      -> Result<RpStat>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/core/services/hf/src/backend.rs:323,1
    - Dst: oio::StreamReader::new
      Src: /src/opendal/core/services/hf/src/backend.rs:323,1
    - Dst: HfReader::new
      Src: /src/opendal/core/services/hf/src/backend.rs:323,1
    - Dst: HfBackend::clone
      Src: /src/opendal/core/services/hf/src/backend.rs:324,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/hf/src/backend.rs:325,1
    - Dst: Ok
      Src: /src/opendal/core/services/hf/src/backend.rs:331,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpRead
    constantsTouched: []
    func_position:
      end: 332
      start: 321
    functionDepth: 3
    functionLinenumber: 321
    functionLinenumberEnd: 332
    functionName: HfBackend::read
    functionSourceFile: /src/opendal/core/services/hf/src/backend.rs
    functionUses: 0
    functionsReached:
    - Result::clone
    - Ok
    - oio::StreamReader::new
    - HfReader::new
    - HfBackend::clone
    linkageType: ''
    returnType: Result
    signature: 'fn read(&self, ctx: &OperationContext, path: &str, args: OpRead) ->
      Result<Self::Reader>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: HfLister::new
      Src: /src/opendal/core/services/hf/src/backend.rs:336,1
    - Dst: clone
      Src: /src/opendal/core/services/hf/src/backend.rs:337,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/hf/src/backend.rs:338,1
    - Dst: to_string
      Src: /src/opendal/core/services/hf/src/backend.rs:339,1
    - Dst: OpStat::recursive
      Src: /src/opendal/core/services/hf/src/backend.rs:340,1
    - Dst: Ok
      Src: /src/opendal/core/services/hf/src/backend.rs:342,1
    - Dst: oio::PageLister::new
      Src: /src/opendal/core/services/hf/src/backend.rs:342,1
    - Dst: Ok
      Src: /src/opendal/core/services/hf/src/backend.rs:345,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 14
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpList
    constantsTouched: []
    func_position:
      end: 346
      start: 334
    functionDepth: 36
    functionLinenumber: 334
    functionLinenumberEnd: 346
    functionName: HfBackend::list
    functionSourceFile: /src/opendal/core/services/hf/src/backend.rs
    functionUses: 0
    functionsReached:
    - Result::clone
    - to_string
    - HfLister::new
    - Ok
    - clone
    - oio::PageLister::new
    - OpStat::recursive
    linkageType: ''
    returnType: Result
    signature: 'fn list(&self, ctx: &OperationContext, path: &str, args: OpList) ->
      Result<Self::Lister>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/core/services/hf/src/backend.rs:349,1
    - Dst: HfLazyWriter::new
      Src: /src/opendal/core/services/hf/src/backend.rs:349,1
    - Dst: clone
      Src: /src/opendal/core/services/hf/src/backend.rs:350,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/hf/src/backend.rs:351,1
    - Dst: to_string
      Src: /src/opendal/core/services/hf/src/backend.rs:352,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 3
    argNames:
    - ctx
    - path
    - _args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpWrite
    constantsTouched: []
    func_position:
      end: 354
      start: 348
    functionDepth: 2
    functionLinenumber: 348
    functionLinenumberEnd: 354
    functionName: HfBackend::write
    functionSourceFile: /src/opendal/core/services/hf/src/backend.rs
    functionUses: 0
    functionsReached:
    - Result::clone
    - to_string
    - Ok
    - clone
    - HfLazyWriter::new
    linkageType: ''
    returnType: Result
    signature: 'fn write(&self, ctx: &OperationContext, path: &str, _args: OpWrite)
      -> Result<Self::Writer>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: HfDeleter::new
      Src: /src/opendal/core/services/hf/src/backend.rs:358,1
    - Dst: clone
      Src: /src/opendal/core/services/hf/src/backend.rs:358,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/hf/src/backend.rs:358,1
    - Dst: Ok
      Src: /src/opendal/core/services/hf/src/backend.rs:360,1
    - Dst: oio::BatchDeleter::new
      Src: /src/opendal/core/services/hf/src/backend.rs:360,1
    - Dst: Ok
      Src: /src/opendal/core/services/hf/src/backend.rs:363,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - '&OperationContext'
    constantsTouched: []
    func_position:
      end: 364
      start: 356
    functionDepth: 4
    functionLinenumber: 356
    functionLinenumberEnd: 364
    functionName: HfBackend::delete
    functionSourceFile: /src/opendal/core/services/hf/src/backend.rs
    functionUses: 0
    functionsReached:
    - Result::clone
    - Ok
    - clone
    - HfDeleter::new
    - oio::BatchDeleter::new
    linkageType: ''
    returnType: Result
    signature: 'fn delete(&self, ctx: &OperationContext) -> Result<Self::Deleter>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/core/services/hf/src/backend.rs:374,1
    - Dst: Error::new
      Src: /src/opendal/core/services/hf/src/backend.rs:374,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 5
    argNames:
    - _ctx
    - _from
    - _to
    - _args
    - _opts
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    - OpCopy
    - OpCopier
    constantsTouched: []
    func_position:
      end: 378
      start: 366
    functionDepth: 36
    functionLinenumber: 366
    functionLinenumberEnd: 378
    functionName: HfBackend::copy
    functionSourceFile: /src/opendal/core/services/hf/src/backend.rs
    functionUses: 0
    functionsReached:
    - Error::new
    - Err
    linkageType: ''
    returnType: Result
    signature: 'fn copy(&self,_ctx: &OperationContext,_from: &str,_to: &str,_args:
      OpCopy,_opts: OpCopier,) -> Result<Self::Copier>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/core/services/hf/src/backend.rs:387,1
    - Dst: Error::new
      Src: /src/opendal/core/services/hf/src/backend.rs:387,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - _ctx
    - _from
    - _to
    - _args
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    - OpRename
    constantsTouched: []
    func_position:
      end: 391
      start: 380
    functionDepth: 36
    functionLinenumber: 380
    functionLinenumberEnd: 391
    functionName: HfBackend::rename
    functionSourceFile: /src/opendal/core/services/hf/src/backend.rs
    functionUses: 0
    functionsReached:
    - Error::new
    - Err
    linkageType: ''
    returnType: Result
    signature: 'async fn rename(&self,_ctx: &OperationContext,_from: &str,_to: &str,_args:
      OpRename,) -> Result<RpRename>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/core/services/hf/src/backend.rs:399,1
    - Dst: Error::new
      Src: /src/opendal/core/services/hf/src/backend.rs:399,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - _ctx
    - _path
    - _args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpPresign
    constantsTouched: []
    func_position:
      end: 403
      start: 393
    functionDepth: 36
    functionLinenumber: 393
    functionLinenumberEnd: 403
    functionName: HfBackend::presign
    functionSourceFile: /src/opendal/core/services/hf/src/backend.rs
    functionUses: 0
    functionsReached:
    - Error::new
    - Err
    linkageType: ''
    returnType: Result
    signature: 'async fn presign(&self,_ctx: &OperationContext,_path: &str,_args:
      OpPresign,) -> Result<RpPresign>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: HttpTransporter::new
      Src: /src/opendal/core/services/hf/src/backend.rs:421,1
    - Dst: opendal_http_transport_reqwest::ReqwestTransport::default
      Src: /src/opendal/core/services/hf/src/backend.rs:421,1
    - Dst: with_context
      Src: /src/opendal/core/services/hf/src/backend.rs:422,1
    - Dst: OperationContext::new
      Src: /src/opendal/core/services/hf/src/backend.rs:422,1
    - Dst: Self::with_http_transport
      Src: /src/opendal/core/services/hf/src/backend.rs:422,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - op
    argTypes:
    - Operator
    constantsTouched: []
    func_position:
      end: 423
      start: 419
    functionDepth: 6
    functionLinenumber: 419
    functionLinenumberEnd: 423
    functionName: test_utils::finish_operator
    functionSourceFile: /src/opendal/core/services/hf/src/backend.rs
    functionUses: 0
    functionsReached:
    - HttpTransporter::new
    - OperationContext::new
    - with_context
    - opendal_http_transport_reqwest::ReqwestTransport::default
    - Self::with_http_transport
    linkageType: ''
    returnType: Operator
    signature: 'fn finish_operator(op: Operator) -> Operator'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Operator::new
      Src: /src/opendal/core/services/hf/src/backend.rs:426,1
    - Dst: HfBuilder::default
      Src: /src/opendal/core/services/hf/src/backend.rs:427,1
    - Dst: Self::repo_type
      Src: /src/opendal/core/services/hf/src/backend.rs:427,1
    - Dst: Self::repo_id
      Src: /src/opendal/core/services/hf/src/backend.rs:427,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/services/hf/src/backend.rs:426,1
    - Dst: finish_operator
      Src: /src/opendal/core/services/hf/src/backend.rs:432,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 433
      start: 425
    functionDepth: 38
    functionLinenumber: 425
    functionLinenumberEnd: 433
    functionName: test_utils::mbpp_operator
    functionSourceFile: /src/opendal/core/services/hf/src/backend.rs
    functionUses: 0
    functionsReached:
    - Self::repo_type
    - Operator::new
    - finish_operator
    - Self::repo_id
    - Result::unwrap
    - HfBuilder::default
    linkageType: ''
    returnType: Operator
    signature: pub fn mbpp_operator() -> Operator
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: std::env::var
      Src: /src/opendal/core/services/hf/src/backend.rs:436,1
    - Dst: expect
      Src: /src/opendal/core/services/hf/src/backend.rs:436,1
    - Dst: std::env::var
      Src: /src/opendal/core/services/hf/src/backend.rs:437,1
    - Dst: expect
      Src: /src/opendal/core/services/hf/src/backend.rs:437,1
    - Dst: ServiceInfo::new
      Src: /src/opendal/core/services/hf/src/backend.rs:439,1
    - Dst: Default::default
      Src: /src/opendal/core/services/hf/src/backend.rs:444,1
    - Dst: HfRepo::new
      Src: /src/opendal/core/services/hf/src/backend.rs:447,1
    - Dst: Some
      Src: /src/opendal/core/services/hf/src/backend.rs:447,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/hf/src/backend.rs:447,1
    - Dst: Arc::new
      Src: /src/opendal/core/services/hf/src/backend.rs:449,1
    - Dst: HfCore::build
      Src: /src/opendal/core/services/hf/src/backend.rs:450,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/hf/src/backend.rs:454,1
    - Dst: Some
      Src: /src/opendal/core/services/hf/src/backend.rs:455,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/hf/src/backend.rs:456,1
    - Dst: Result::expect
      Src: /src/opendal/core/services/hf/src/backend.rs:450,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 22
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 461
      start: 435
    functionDepth: 33
    functionLinenumber: 435
    functionLinenumberEnd: 461
    functionName: test_utils::testing_dataset_core
    functionSourceFile: /src/opendal/core/services/hf/src/backend.rs
    functionUses: 0
    functionsReached:
    - ServiceInfo::new
    - expect
    - HfRepo::new
    - Result::expect
    - Default::default
    - Arc::new
    - Some
    - HfCore::build
    - '&str::to_string'
    - std::env::var
    linkageType: ''
    returnType: Arc
    signature: pub fn testing_dataset_core() -> Arc<HfCore>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: std::env::var
      Src: /src/opendal/core/services/hf/src/backend.rs:464,1
    - Dst: expect
      Src: /src/opendal/core/services/hf/src/backend.rs:464,1
    - Dst: std::env::var
      Src: /src/opendal/core/services/hf/src/backend.rs:465,1
    - Dst: expect
      Src: /src/opendal/core/services/hf/src/backend.rs:465,1
    - Dst: Operator::new
      Src: /src/opendal/core/services/hf/src/backend.rs:466,1
    - Dst: HfBuilder::default
      Src: /src/opendal/core/services/hf/src/backend.rs:467,1
    - Dst: Self::repo_type
      Src: /src/opendal/core/services/hf/src/backend.rs:467,1
    - Dst: Self::repo_id
      Src: /src/opendal/core/services/hf/src/backend.rs:467,1
    - Dst: Self::token
      Src: /src/opendal/core/services/hf/src/backend.rs:467,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/services/hf/src/backend.rs:466,1
    - Dst: finish_operator
      Src: /src/opendal/core/services/hf/src/backend.rs:473,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 19
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 474
      start: 463
    functionDepth: 38
    functionLinenumber: 463
    functionLinenumberEnd: 474
    functionName: test_utils::testing_bucket_operator
    functionSourceFile: /src/opendal/core/services/hf/src/backend.rs
    functionUses: 0
    functionsReached:
    - Self::repo_type
    - Operator::new
    - Self::token
    - expect
    - finish_operator
    - Self::repo_id
    - Result::unwrap
    - std::env::var
    - HfBuilder::default
    linkageType: ''
    returnType: Operator
    signature: pub fn testing_bucket_operator() -> Operator
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: HfBuilder::default
      Src: /src/opendal/core/services/hf/src/backend.rs:486,1
    - Dst: Self::token
      Src: /src/opendal/core/services/hf/src/backend.rs:486,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - token
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 487
      start: 485
    functionDepth: 5
    functionLinenumber: 485
    functionLinenumberEnd: 487
    functionName: tests::builder_with_token
    functionSourceFile: /src/opendal/core/services/hf/src/backend.rs
    functionUses: 0
    functionsReached:
    - Self::token
    - HfBuilder::default
    linkageType: ''
    returnType: HfBuilder
    signature: 'fn builder_with_token(token: &str) -> HfBuilder'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: HfBuilder::default
      Src: /src/opendal/core/services/hf/src/backend.rs:490,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 491
      start: 489
    functionDepth: 3
    functionLinenumber: 489
    functionLinenumberEnd: 491
    functionName: tests::builder_no_token
    functionSourceFile: /src/opendal/core/services/hf/src/backend.rs
    functionUses: 0
    functionsReached:
    - HfBuilder::default
    linkageType: ''
    returnType: HfBuilder
    signature: fn builder_no_token() -> HfBuilder
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/opendal/core/services/hf/src/backend.rs:495,1
    - Dst: unwrap
      Src: /src/opendal/core/services/hf/src/backend.rs:495,1
    - Dst: std::env::set_var
      Src: /src/opendal/core/services/hf/src/backend.rs:496,1
    - Dst: builder_with_token
      Src: /src/opendal/core/services/hf/src/backend.rs:497,1
    - Dst: HfBuilder::hf_token
      Src: /src/opendal/core/services/hf/src/backend.rs:497,1
    - Dst: std::env::remove_var
      Src: /src/opendal/core/services/hf/src/backend.rs:498,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 500
      start: 494
    functionDepth: 33
    functionLinenumber: 494
    functionLinenumberEnd: 500
    functionName: tests::hf_token_config_takes_priority_over_env
    functionSourceFile: /src/opendal/core/services/hf/src/backend.rs
    functionUses: 0
    functionsReached:
    - builder_with_token
    - lock
    - HfBuilder::hf_token
    - unwrap
    - std::env::remove_var
    - std::env::set_var
    linkageType: ''
    returnType: void
    signature: fn hf_token_config_takes_priority_over_env()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/opendal/core/services/hf/src/backend.rs:504,1
    - Dst: unwrap
      Src: /src/opendal/core/services/hf/src/backend.rs:504,1
    - Dst: std::env::remove_var
      Src: /src/opendal/core/services/hf/src/backend.rs:505,1
    - Dst: std::env::remove_var
      Src: /src/opendal/core/services/hf/src/backend.rs:506,1
    - Dst: std::env::set_var
      Src: /src/opendal/core/services/hf/src/backend.rs:507,1
    - Dst: builder_no_token
      Src: /src/opendal/core/services/hf/src/backend.rs:508,1
    - Dst: HfBuilder::hf_token
      Src: /src/opendal/core/services/hf/src/backend.rs:508,1
    - Dst: std::env::remove_var
      Src: /src/opendal/core/services/hf/src/backend.rs:509,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 511
      start: 503
    functionDepth: 33
    functionLinenumber: 503
    functionLinenumberEnd: 511
    functionName: tests::hf_token_reads_hf_token_env_var
    functionSourceFile: /src/opendal/core/services/hf/src/backend.rs
    functionUses: 0
    functionsReached:
    - lock
    - builder_no_token
    - HfBuilder::hf_token
    - unwrap
    - std::env::remove_var
    - std::env::set_var
    linkageType: ''
    returnType: void
    signature: fn hf_token_reads_hf_token_env_var()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/opendal/core/services/hf/src/backend.rs:515,1
    - Dst: unwrap
      Src: /src/opendal/core/services/hf/src/backend.rs:515,1
    - Dst: std::env::set_var
      Src: /src/opendal/core/services/hf/src/backend.rs:516,1
    - Dst: std::env::set_var
      Src: /src/opendal/core/services/hf/src/backend.rs:517,1
    - Dst: builder_no_token
      Src: /src/opendal/core/services/hf/src/backend.rs:518,1
    - Dst: HfBuilder::hf_token
      Src: /src/opendal/core/services/hf/src/backend.rs:518,1
    - Dst: std::env::remove_var
      Src: /src/opendal/core/services/hf/src/backend.rs:519,1
    - Dst: std::env::remove_var
      Src: /src/opendal/core/services/hf/src/backend.rs:520,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 522
      start: 514
    functionDepth: 33
    functionLinenumber: 514
    functionLinenumberEnd: 522
    functionName: tests::hf_token_disable_flag_suppresses_discovery
    functionSourceFile: /src/opendal/core/services/hf/src/backend.rs
    functionUses: 0
    functionsReached:
    - lock
    - builder_no_token
    - HfBuilder::hf_token
    - unwrap
    - std::env::remove_var
    - std::env::set_var
    linkageType: ''
    returnType: void
    signature: fn hf_token_disable_flag_suppresses_discovery()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/opendal/core/services/hf/src/backend.rs:526,1
    - Dst: unwrap
      Src: /src/opendal/core/services/hf/src/backend.rs:526,1
    - Dst: std::env::temp_dir
      Src: /src/opendal/core/services/hf/src/backend.rs:527,1
    - Dst: join
      Src: /src/opendal/core/services/hf/src/backend.rs:527,1
    - Dst: std::fs::write
      Src: /src/opendal/core/services/hf/src/backend.rs:528,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/services/hf/src/backend.rs:528,1
    - Dst: std::env::remove_var
      Src: /src/opendal/core/services/hf/src/backend.rs:529,1
    - Dst: std::env::remove_var
      Src: /src/opendal/core/services/hf/src/backend.rs:530,1
    - Dst: std::env::set_var
      Src: /src/opendal/core/services/hf/src/backend.rs:531,1
    - Dst: builder_no_token
      Src: /src/opendal/core/services/hf/src/backend.rs:532,1
    - Dst: HfBuilder::hf_token
      Src: /src/opendal/core/services/hf/src/backend.rs:532,1
    - Dst: std::env::remove_var
      Src: /src/opendal/core/services/hf/src/backend.rs:533,1
    - Dst: std::fs::remove_file
      Src: /src/opendal/core/services/hf/src/backend.rs:534,1
    - Dst: FsFuture::ok
      Src: /src/opendal/core/services/hf/src/backend.rs:534,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 30
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 536
      start: 525
    functionDepth: 33
    functionLinenumber: 525
    functionLinenumberEnd: 536
    functionName: tests::hf_token_reads_from_file_via_hf_token_path
    functionSourceFile: /src/opendal/core/services/hf/src/backend.rs
    functionUses: 0
    functionsReached:
    - lock
    - join
    - builder_no_token
    - HfBuilder::hf_token
    - unwrap
    - std::env::remove_var
    - std::env::temp_dir
    - std::fs::write
    - Result::unwrap
    - std::fs::remove_file
    - std::env::set_var
    - FsFuture::ok
    linkageType: ''
    returnType: void
    signature: fn hf_token_reads_from_file_via_hf_token_path()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/opendal/core/services/hf/src/backend.rs:540,1
    - Dst: unwrap
      Src: /src/opendal/core/services/hf/src/backend.rs:540,1
    - Dst: std::env::remove_var
      Src: /src/opendal/core/services/hf/src/backend.rs:541,1
    - Dst: HfBuilder::default
      Src: /src/opendal/core/services/hf/src/backend.rs:542,1
    - Dst: Self::hf_endpoint
      Src: /src/opendal/core/services/hf/src/backend.rs:542,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 544
      start: 539
    functionDepth: 33
    functionLinenumber: 539
    functionLinenumberEnd: 544
    functionName: tests::hf_endpoint_returns_default
    functionSourceFile: /src/opendal/core/services/hf/src/backend.rs
    functionUses: 0
    functionsReached:
    - lock
    - unwrap
    - std::env::remove_var
    - Self::hf_endpoint
    - HfBuilder::default
    linkageType: ''
    returnType: void
    signature: fn hf_endpoint_returns_default()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/opendal/core/services/hf/src/backend.rs:548,1
    - Dst: unwrap
      Src: /src/opendal/core/services/hf/src/backend.rs:548,1
    - Dst: std::env::set_var
      Src: /src/opendal/core/services/hf/src/backend.rs:549,1
    - Dst: HfBuilder::default
      Src: /src/opendal/core/services/hf/src/backend.rs:550,1
    - Dst: Self::endpoint
      Src: /src/opendal/core/services/hf/src/backend.rs:550,1
    - Dst: Self::hf_endpoint
      Src: /src/opendal/core/services/hf/src/backend.rs:550,1
    - Dst: std::env::remove_var
      Src: /src/opendal/core/services/hf/src/backend.rs:553,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 555
      start: 547
    functionDepth: 33
    functionLinenumber: 547
    functionLinenumberEnd: 555
    functionName: tests::hf_endpoint_config_takes_priority_over_env
    functionSourceFile: /src/opendal/core/services/hf/src/backend.rs
    functionUses: 0
    functionsReached:
    - lock
    - Self::endpoint
    - unwrap
    - std::env::remove_var
    - Self::hf_endpoint
    - std::env::set_var
    - HfBuilder::default
    linkageType: ''
    returnType: void
    signature: fn hf_endpoint_config_takes_priority_over_env()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/opendal/core/services/hf/src/backend.rs:559,1
    - Dst: unwrap
      Src: /src/opendal/core/services/hf/src/backend.rs:559,1
    - Dst: std::env::set_var
      Src: /src/opendal/core/services/hf/src/backend.rs:560,1
    - Dst: HfBuilder::default
      Src: /src/opendal/core/services/hf/src/backend.rs:561,1
    - Dst: Self::hf_endpoint
      Src: /src/opendal/core/services/hf/src/backend.rs:561,1
    - Dst: std::env::remove_var
      Src: /src/opendal/core/services/hf/src/backend.rs:562,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 564
      start: 558
    functionDepth: 33
    functionLinenumber: 558
    functionLinenumberEnd: 564
    functionName: tests::hf_endpoint_reads_hf_endpoint_env_var
    functionSourceFile: /src/opendal/core/services/hf/src/backend.rs
    functionUses: 0
    functionsReached:
    - lock
    - unwrap
    - std::env::remove_var
    - Self::hf_endpoint
    - std::env::set_var
    - HfBuilder::default
    linkageType: ''
    returnType: void
    signature: fn hf_endpoint_reads_hf_endpoint_env_var()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/opendal/core/services/hf/src/backend.rs:568,1
    - Dst: unwrap
      Src: /src/opendal/core/services/hf/src/backend.rs:568,1
    - Dst: std::env::remove_var
      Src: /src/opendal/core/services/hf/src/backend.rs:569,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 571
      start: 567
    functionDepth: 33
    functionLinenumber: 567
    functionLinenumberEnd: 571
    functionName: tests::hf_download_mode_defaults_to_xet
    functionSourceFile: /src/opendal/core/services/hf/src/backend.rs
    functionUses: 0
    functionsReached:
    - unwrap
    - std::env::remove_var
    - lock
    linkageType: ''
    returnType: void
    signature: fn hf_download_mode_defaults_to_xet()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/opendal/core/services/hf/src/backend.rs:575,1
    - Dst: unwrap
      Src: /src/opendal/core/services/hf/src/backend.rs:575,1
    - Dst: std::env::set_var
      Src: /src/opendal/core/services/hf/src/backend.rs:576,1
    - Dst: HfBuilder::default
      Src: /src/opendal/core/services/hf/src/backend.rs:577,1
    - Dst: Self::hf_download_mode
      Src: /src/opendal/core/services/hf/src/backend.rs:577,1
    - Dst: std::env::remove_var
      Src: /src/opendal/core/services/hf/src/backend.rs:578,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 580
      start: 574
    functionDepth: 33
    functionLinenumber: 574
    functionLinenumberEnd: 580
    functionName: tests::hf_download_mode_disable_xet_env_forces_http
    functionSourceFile: /src/opendal/core/services/hf/src/backend.rs
    functionUses: 0
    functionsReached:
    - lock
    - unwrap
    - std::env::remove_var
    - Self::hf_download_mode
    - std::env::set_var
    - HfBuilder::default
    linkageType: ''
    returnType: void
    signature: fn hf_download_mode_disable_xet_env_forces_http()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/opendal/core/services/hf/src/backend.rs:584,1
    - Dst: unwrap
      Src: /src/opendal/core/services/hf/src/backend.rs:584,1
    - Dst: std::env::set_var
      Src: /src/opendal/core/services/hf/src/backend.rs:585,1
    - Dst: HfBuilder::default
      Src: /src/opendal/core/services/hf/src/backend.rs:586,1
    - Dst: Self::download_mode
      Src: /src/opendal/core/services/hf/src/backend.rs:586,1
    - Dst: Self::hf_download_mode
      Src: /src/opendal/core/services/hf/src/backend.rs:586,1
    - Dst: std::env::remove_var
      Src: /src/opendal/core/services/hf/src/backend.rs:587,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 589
      start: 583
    functionDepth: 33
    functionLinenumber: 583
    functionLinenumberEnd: 589
    functionName: tests::hf_download_mode_config_takes_priority_over_env
    functionSourceFile: /src/opendal/core/services/hf/src/backend.rs
    functionUses: 0
    functionsReached:
    - lock
    - Self::download_mode
    - unwrap
    - std::env::remove_var
    - Self::hf_download_mode
    - std::env::set_var
    - HfBuilder::default
    linkageType: ''
    returnType: void
    signature: fn hf_download_mode_config_takes_priority_over_env()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/opendal/core/services/hf/src/backend.rs:593,1
    - Dst: unwrap
      Src: /src/opendal/core/services/hf/src/backend.rs:593,1
    - Dst: std::env::set_var
      Src: /src/opendal/core/services/hf/src/backend.rs:594,1
    - Dst: HfBuilder::default
      Src: /src/opendal/core/services/hf/src/backend.rs:595,1
    - Dst: Self::hf_download_mode
      Src: /src/opendal/core/services/hf/src/backend.rs:595,1
    - Dst: std::env::remove_var
      Src: /src/opendal/core/services/hf/src/backend.rs:596,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 598
      start: 592
    functionDepth: 33
    functionLinenumber: 592
    functionLinenumberEnd: 598
    functionName: tests::hf_download_mode_empty_env_keeps_xet
    functionSourceFile: /src/opendal/core/services/hf/src/backend.rs
    functionUses: 0
    functionsReached:
    - lock
    - unwrap
    - std::env::remove_var
    - Self::hf_download_mode
    - std::env::set_var
    - HfBuilder::default
    linkageType: ''
    returnType: void
    signature: fn hf_download_mode_empty_env_keeps_xet()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: HfBuilder::default
      Src: /src/opendal/core/services/hf/src/backend.rs:602,1
    - Dst: Self::repo_id
      Src: /src/opendal/core/services/hf/src/backend.rs:602,1
    - Dst: Self::repo_type
      Src: /src/opendal/core/services/hf/src/backend.rs:602,1
    - Dst: Self::build
      Src: /src/opendal/core/services/hf/src/backend.rs:602,1
    - Dst: Result::expect
      Src: /src/opendal/core/services/hf/src/backend.rs:602,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 607
      start: 601
    functionDepth: 38
    functionLinenumber: 601
    functionLinenumberEnd: 607
    functionName: tests::build_accepts_datasets_alias
    functionSourceFile: /src/opendal/core/services/hf/src/backend.rs
    functionUses: 0
    functionsReached:
    - Self::repo_type
    - Result::expect
    - Self::repo_id
    - Self::build
    - HfBuilder::default
    linkageType: ''
    returnType: void
    signature: fn build_accepts_datasets_alias()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: HfBuilder::default
      Src: /src/opendal/core/services/hf/src/backend.rs:611,1
    - Dst: Self::repo_id
      Src: /src/opendal/core/services/hf/src/backend.rs:611,1
    - Dst: Self::repo_type
      Src: /src/opendal/core/services/hf/src/backend.rs:611,1
    - Dst: Self::build
      Src: /src/opendal/core/services/hf/src/backend.rs:611,1
    - Dst: Result::expect
      Src: /src/opendal/core/services/hf/src/backend.rs:611,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 616
      start: 610
    functionDepth: 38
    functionLinenumber: 610
    functionLinenumberEnd: 616
    functionName: tests::build_accepts_space_repo_type
    functionSourceFile: /src/opendal/core/services/hf/src/backend.rs
    functionUses: 0
    functionsReached:
    - Self::repo_type
    - Result::expect
    - Self::repo_id
    - Self::build
    - HfBuilder::default
    linkageType: ''
    returnType: void
    signature: fn build_accepts_space_repo_type()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: OperatorRegistry::get
      Src: /src/opendal/core/services/hf/src/backend.rs:622,1
    - Dst: super::super::register_hf_service
      Src: /src/opendal/core/services/hf/src/backend.rs:623,1
    - Dst: load
      Src: /src/opendal/core/services/hf/src/backend.rs:626,1
    - Dst: Result::expect
      Src: /src/opendal/core/services/hf/src/backend.rs:626,1
    - Dst: load
      Src: /src/opendal/core/services/hf/src/backend.rs:632,1
    - Dst: Result::expect
      Src: /src/opendal/core/services/hf/src/backend.rs:632,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 636
      start: 619
    functionDepth: 35
    functionLinenumber: 619
    functionLinenumberEnd: 636
    functionName: tests::test_both_schemes_are_supported
    functionSourceFile: /src/opendal/core/services/hf/src/backend.rs
    functionUses: 0
    functionsReached:
    - Result::expect
    - OperatorRegistry::get
    - super::super::register_hf_service
    - load
    linkageType: ''
    returnType: void
    signature: fn test_both_schemes_are_supported()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::debug_struct
      Src: /src/opendal/core/services/mysql/src/config.rs:55,1
    - Dst: field
      Src: /src/opendal/core/services/mysql/src/config.rs:55,1
    - Dst: field
      Src: /src/opendal/core/services/mysql/src/config.rs:55,1
    - Dst: field
      Src: /src/opendal/core/services/mysql/src/config.rs:55,1
    - Dst: field
      Src: /src/opendal/core/services/mysql/src/config.rs:55,1
    - Dst: finish_non_exhaustive
      Src: /src/opendal/core/services/mysql/src/config.rs:55,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 20
    argCount: 1
    argNames:
    - f
    argTypes:
    - '&mut std::fmt::Formatter<''_>'
    constantsTouched: []
    func_position:
      end: 61
      start: 54
    functionDepth: 5
    functionLinenumber: 54
    functionLinenumberEnd: 61
    functionName: MysqlConfig::fmt
    functionSourceFile: /src/opendal/core/services/mysql/src/config.rs
    functionUses: 0
    functionsReached:
    - field
    - Result::debug_struct
    - finish_non_exhaustive
    linkageType: ''
    returnType: std::fmt::Result
    signature: 'fn fmt(&self, f: &mut std::fmt::Formatter<''_>) -> std::fmt::Result'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::options
      Src: /src/opendal/core/services/mysql/src/config.rs:68,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/mysql/src/config.rs:68,1
    - Dst: Result::authority
      Src: /src/opendal/core/services/mysql/src/config.rs:70,1
    - Dst: Result::entry
      Src: /src/opendal/core/services/mysql/src/config.rs:71,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/mysql/src/config.rs:71,1
    - Dst: crate::Entry::or_insert_with
      Src: /src/opendal/core/services/mysql/src/config.rs:71,1
    - Dst: Result::root
      Src: /src/opendal/core/services/mysql/src/config.rs:75,1
    - Dst: is_empty
      Src: /src/opendal/core/services/mysql/src/config.rs:76,1
    - Dst: split_once
      Src: /src/opendal/core/services/mysql/src/config.rs:78,1
    - Dst: Some
      Src: /src/opendal/core/services/mysql/src/config.rs:79,1
    - Dst: is_empty
      Src: /src/opendal/core/services/mysql/src/config.rs:83,1
    - Dst: Result::entry
      Src: /src/opendal/core/services/mysql/src/config.rs:84,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/mysql/src/config.rs:84,1
    - Dst: crate::Entry::or_insert_with
      Src: /src/opendal/core/services/mysql/src/config.rs:84,1
    - Dst: to_string
      Src: /src/opendal/core/services/mysql/src/config.rs:85,1
    - Dst: Result::is_empty
      Src: /src/opendal/core/services/mysql/src/config.rs:89,1
    - Dst: Result::insert
      Src: /src/opendal/core/services/mysql/src/config.rs:91,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/mysql/src/config.rs:91,1
    - Dst: Result::to_string
      Src: /src/opendal/core/services/mysql/src/config.rs:91,1
    - Dst: Self::from_iter
      Src: /src/opendal/core/services/mysql/src/config.rs:95,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 57
    argCount: 1
    argNames:
    - uri
    argTypes:
    - '&opendal_core::OperatorUri'
    constantsTouched: []
    func_position:
      end: 96
      start: 67
    functionDepth: 35
    functionLinenumber: 67
    functionLinenumberEnd: 96
    functionName: MysqlConfig::from_uri
    functionSourceFile: /src/opendal/core/services/mysql/src/config.rs
    functionUses: 1
    functionsReached:
    - Result::clone
    - to_string
    - Self::from_iter
    - split_once
    - Result::to_string
    - Result::entry
    - crate::Entry::or_insert_with
    - Result::insert
    - is_empty
    - Some
    - Result::is_empty
    - '&str::to_string'
    - Result::root
    - Result::authority
    - Result::options
    linkageType: ''
    returnType: opendal_core::Result
    signature: 'fn from_uri(uri: &opendal_core::OperatorUri) -> opendal_core::Result<Self>'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 100
      start: 98
    functionDepth: 0
    functionLinenumber: 98
    functionLinenumberEnd: 100
    functionName: MysqlConfig::into_builder
    functionSourceFile: /src/opendal/core/services/mysql/src/config.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Self::Builder
    signature: fn into_builder(self) -> Self::Builder
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: OperatorUri::new
      Src: /src/opendal/core/services/mysql/src/config.rs:128,1
    - Dst: Vec::<(String, String)>::new
      Src: /src/opendal/core/services/mysql/src/config.rs:130,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/services/mysql/src/config.rs:128,1
    - Dst: MysqlConfig::from_uri
      Src: /src/opendal/core/services/mysql/src/config.rs:134,1
    - Dst: opendal_core::Result::unwrap
      Src: /src/opendal/core/services/mysql/src/config.rs:134,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 137
      start: 127
    functionDepth: 29
    functionLinenumber: 127
    functionLinenumberEnd: 137
    functionName: tests::from_uri_respects_existing_table
    functionSourceFile: /src/opendal/core/services/mysql/src/config.rs
    functionUses: 0
    functionsReached:
    - MysqlConfig::from_uri
    - Vec::<(String, String)>::new
    - OperatorUri::new
    - Result::unwrap
    - opendal_core::Result::unwrap
    linkageType: ''
    returnType: void
    signature: fn from_uri_respects_existing_table()
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - core
    - root
    argTypes:
    - Arc<MysqlCore>
    - String
    constantsTouched: []
    func_position:
      end: 33
      start: 31
    functionDepth: 0
    functionLinenumber: 31
    functionLinenumberEnd: 33
    functionName: MysqlDeleter::new
    functionSourceFile: /src/opendal/core/services/mysql/src/deleter.rs
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(core: Arc<MysqlCore>, root: String) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/mysql/src/deleter.rs:38,1
    - Dst: delete
      Src: /src/opendal/core/services/mysql/src/deleter.rs:39,1
    - Dst: Ok
      Src: /src/opendal/core/services/mysql/src/deleter.rs:40,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 2
    argNames:
    - path
    argTypes:
    - String
    - OpDelete
    constantsTouched: []
    func_position:
      end: 41
      start: 37
    functionDepth: 32
    functionLinenumber: 37
    functionLinenumberEnd: 41
    functionName: MysqlDeleter::delete_once
    functionSourceFile: /src/opendal/core/services/mysql/src/deleter.rs
    functionUses: 0
    functionsReached:
    - Ok
    - build_abs_path
    - delete
    linkageType: ''
    returnType: Result
    signature: 'async fn delete_once(&self, path: String, _: OpDelete) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: CompfsCore::list
      Src: /src/opendal/core/services/mysql/src/lister.rs:35,1
    - Dst: opendal_core::raw::build_abs_path
      Src: /src/opendal/core/services/mysql/src/lister.rs:35,1
    - Dst: into_iter
      Src: /src/opendal/core/services/mysql/src/lister.rs:35,1
    - Dst: Ok
      Src: /src/opendal/core/services/mysql/src/lister.rs:36,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 3
    argNames:
    - core
    - root
    - path
    argTypes:
    - Arc<MysqlCore>
    - String
    - String
    constantsTouched: []
    func_position:
      end: 37
      start: 34
    functionDepth: 2
    functionLinenumber: 34
    functionLinenumberEnd: 37
    functionName: MysqlLister::new
    functionSourceFile: /src/opendal/core/services/mysql/src/lister.rs
    functionUses: 1
    functionsReached:
    - CompfsCore::list
    - opendal_core::raw::build_abs_path
    - Ok
    - into_iter
    linkageType: ''
    returnType: Result
    signature: 'pub async fn new(core: Arc<MysqlCore>, root: String, path: String)
      -> Result<Self>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: next
      Src: /src/opendal/core/services/mysql/src/lister.rs:42,1
    - Dst: Ok
      Src: /src/opendal/core/services/mysql/src/lister.rs:43,1
    - Dst: opendal_core::raw::build_rel_path
      Src: /src/opendal/core/services/mysql/src/lister.rs:46,1
    - Dst: is_empty
      Src: /src/opendal/core/services/mysql/src/lister.rs:47,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/mysql/src/lister.rs:48,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/mysql/src/lister.rs:50,1
    - Dst: EntryMode::from_path
      Src: /src/opendal/core/services/mysql/src/lister.rs:50,1
    - Dst: Ok
      Src: /src/opendal/core/services/mysql/src/lister.rs:51,1
    - Dst: Some
      Src: /src/opendal/core/services/mysql/src/lister.rs:51,1
    - Dst: Entry::new
      Src: /src/opendal/core/services/mysql/src/lister.rs:51,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 25
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 52
      start: 41
    functionDepth: 4
    functionLinenumber: 41
    functionLinenumberEnd: 52
    functionName: MysqlLister::next
    functionSourceFile: /src/opendal/core/services/mysql/src/lister.rs
    functionUses: 0
    functionsReached:
    - next
    - Entry::new
    - Metadata::new
    - Ok
    - EntryMode::from_path
    - is_empty
    - Some
    - '&str::to_string'
    - opendal_core::raw::build_rel_path
    linkageType: ''
    returnType: Result
    signature: async fn next(&mut self) -> Result<Option<Entry>>
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 3
    argNames:
    - core
    - root
    - path
    argTypes:
    - Arc<MysqlCore>
    - String
    - String
    constantsTouched: []
    func_position:
      end: 70
      start: 63
    functionDepth: 0
    functionLinenumber: 63
    functionLinenumberEnd: 70
    functionName: MysqlLazyLister::new
    functionSourceFile: /src/opendal/core/services/mysql/src/lister.rs
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(core: Arc<MysqlCore>, root: String, path: String) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: is_none
      Src: /src/opendal/core/services/mysql/src/lister.rs:75,1
    - Dst: Some
      Src: /src/opendal/core/services/mysql/src/lister.rs:76,1
    - Dst: MysqlLister::new
      Src: /src/opendal/core/services/mysql/src/lister.rs:77,1
    - Dst: clone
      Src: /src/opendal/core/services/mysql/src/lister.rs:77,1
    - Dst: clone
      Src: /src/opendal/core/services/mysql/src/lister.rs:77,1
    - Dst: clone
      Src: /src/opendal/core/services/mysql/src/lister.rs:77,1
    - Dst: as_mut
      Src: /src/opendal/core/services/mysql/src/lister.rs:81,1
    - Dst: expect
      Src: /src/opendal/core/services/mysql/src/lister.rs:81,1
    - Dst: next
      Src: /src/opendal/core/services/mysql/src/lister.rs:81,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 29
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 86
      start: 74
    functionDepth: 3
    functionLinenumber: 74
    functionLinenumberEnd: 86
    functionName: MysqlLazyLister::next
    functionSourceFile: /src/opendal/core/services/mysql/src/lister.rs
    functionUses: 0
    functionsReached:
    - is_none
    - as_mut
    - next
    - expect
    - clone
    - Some
    - MysqlLister::new
    linkageType: ''
    returnType: Result
    signature: async fn next(&mut self) -> Result<Option<Entry>>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: to_string
      Src: /src/opendal/core/services/mysql/src/reader.rs:33,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - backend
    - path
    argTypes:
    - MysqlBackend
    - '&str'
    - OpRead
    constantsTouched: []
    func_position:
      end: 35
      start: 30
    functionDepth: 2
    functionLinenumber: 30
    functionLinenumberEnd: 35
    functionName: MysqlReader::new
    functionSourceFile: /src/opendal/core/services/mysql/src/reader.rs
    functionUses: 1
    functionsReached:
    - to_string
    linkageType: ''
    returnType: Self
    signature: 'pub(super) fn new(backend: MysqlBackend, path: &str, _: OpRead) ->
      Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: as_str
      Src: /src/opendal/core/services/mysql/src/reader.rs:41,1
    - Dst: build_abs_path
      Src: /src/opendal/core/services/mysql/src/reader.rs:42,1
    - Dst: get
      Src: /src/opendal/core/services/mysql/src/reader.rs:43,1
    - Dst: Err
      Src: /src/opendal/core/services/mysql/src/reader.rs:45,1
    - Dst: Error::new
      Src: /src/opendal/core/services/mysql/src/reader.rs:45,1
    - Dst: Result::slice
      Src: /src/opendal/core/services/mysql/src/reader.rs:47,1
    - Dst: (Vec::to_content_range
      Src: /src/opendal/core/services/mysql/src/reader.rs:47,1
    - Dst: Result::len
      Src: /src/opendal/core/services/mysql/src/reader.rs:47,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/mysql/src/reader.rs:48,1
    - Dst: Self::with_content_length
      Src: /src/opendal/core/services/mysql/src/reader.rs:48,1
    - Dst: Result::len
      Src: /src/opendal/core/services/mysql/src/reader.rs:48,1
    - Dst: Ok
      Src: /src/opendal/core/services/mysql/src/reader.rs:49,1
    - Dst: RpRead::new
      Src: /src/opendal/core/services/mysql/src/reader.rs:50,1
    - Dst: Box::new
      Src: /src/opendal/core/services/mysql/src/reader.rs:51,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 36
    argCount: 1
    argNames:
    - range
    argTypes:
    - BytesRange
    constantsTouched: []
    func_position:
      end: 53
      start: 39
    functionDepth: 36
    functionLinenumber: 39
    functionLinenumberEnd: 53
    functionName: MysqlReader::open
    functionSourceFile: /src/opendal/core/services/mysql/src/reader.rs
    functionUses: 0
    functionsReached:
    - Metadata::new
    - get
    - Ok
    - Box::new
    - Self::with_content_length
    - build_abs_path
    - Error::new
    - Err
    - as_str
    - Result::slice
    - (Vec::to_content_range
    - Result::len
    - RpRead::new
    linkageType: ''
    returnType: Result
    signature: 'async fn open(&self, range: BytesRange) -> Result<(RpRead, Box<dyn
      oio::ReadStreamDyn>)>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: get_or_try_init
      Src: /src/opendal/core/services/mysql/src/core.rs:36,1
    - Dst: MySqlPool::connect_with
      Src: /src/opendal/core/services/mysql/src/core.rs:38,1
    - Dst: clone
      Src: /src/opendal/core/services/mysql/src/core.rs:38,1
    - Dst: map_err
      Src: /src/opendal/core/services/mysql/src/core.rs:38,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 43
      start: 35
    functionDepth: 2
    functionLinenumber: 35
    functionLinenumberEnd: 43
    functionName: MysqlCore::get_client
    functionSourceFile: /src/opendal/core/services/mysql/src/core.rs
    functionUses: 5
    functionsReached:
    - get_or_try_init
    - map_err
    - MySqlPool::connect_with
    - clone
    linkageType: ''
    returnType: Result
    signature: async fn get_client(&self) -> Result<&MySqlPool>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: MysqlCore::get_client
      Src: /src/opendal/core/services/mysql/src/core.rs:46,1
    - Dst: sqlx::query_scalar
      Src: /src/opendal/core/services/mysql/src/core.rs:58,1
    - Dst: bind
      Src: /src/opendal/core/services/mysql/src/core.rs:58,1
    - Dst: fetch_optional
      Src: /src/opendal/core/services/mysql/src/core.rs:58,1
    - Dst: map_err
      Src: /src/opendal/core/services/mysql/src/core.rs:58,1
    - Dst: Ok
      Src: /src/opendal/core/services/mysql/src/core.rs:67,1
    - Dst: Vec::map
      Src: /src/opendal/core/services/mysql/src/core.rs:67,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 1
    argNames:
    - path
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 68
      start: 45
    functionDepth: 3
    functionLinenumber: 45
    functionLinenumberEnd: 68
    functionName: MysqlCore::get
    functionSourceFile: /src/opendal/core/services/mysql/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - MysqlCore::get_client
    - Ok
    - fetch_optional
    - sqlx::query_scalar
    - bind
    - Vec::map
    linkageType: ''
    returnType: Result
    signature: 'pub async fn get(&self, path: &str) -> Result<Option<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: MysqlCore::get_client
      Src: /src/opendal/core/services/mysql/src/core.rs:71,1
    - Dst: sqlx::query_scalar
      Src: /src/opendal/core/services/mysql/src/core.rs:73,1
    - Dst: bind
      Src: /src/opendal/core/services/mysql/src/core.rs:73,1
    - Dst: fetch_optional
      Src: /src/opendal/core/services/mysql/src/core.rs:73,1
    - Dst: map_err
      Src: /src/opendal/core/services/mysql/src/core.rs:73,1
    - Dst: Vec::map
      Src: /src/opendal/core/services/mysql/src/core.rs:82,1
    - Dst: Result::try_into
      Src: /src/opendal/core/services/mysql/src/core.rs:84,1
    - Dst: map_err
      Src: /src/opendal/core/services/mysql/src/core.rs:84,1
    - Dst: Error::new
      Src: /src/opendal/core/services/mysql/src/core.rs:85,1
    - Dst: Self::set_source
      Src: /src/opendal/core/services/mysql/src/core.rs:85,1
    - Dst: Result::transpose
      Src: /src/opendal/core/services/mysql/src/core.rs:82,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 27
    argCount: 1
    argNames:
    - path
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 90
      start: 70
    functionDepth: 36
    functionLinenumber: 70
    functionLinenumberEnd: 90
    functionName: MysqlCore::get_length
    functionSourceFile: /src/opendal/core/services/mysql/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - MysqlCore::get_client
    - fetch_optional
    - sqlx::query_scalar
    - bind
    - Error::new
    - Result::try_into
    - Self::set_source
    - Vec::map
    - Result::transpose
    linkageType: ''
    returnType: Result
    signature: 'pub async fn get_length(&self, path: &str) -> Result<Option<usize>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: MysqlCore::get_client
      Src: /src/opendal/core/services/mysql/src/core.rs:93,1
    - Dst: sqlx::query
      Src: /src/opendal/core/services/mysql/src/core.rs:95,1
    - Dst: Result::bind
      Src: /src/opendal/core/services/mysql/src/core.rs:95,1
    - Dst: bind
      Src: /src/opendal/core/services/mysql/src/core.rs:95,1
    - Dst: Vec::to_vec
      Src: /src/opendal/core/services/mysql/src/core.rs:101,1
    - Dst: execute
      Src: /src/opendal/core/services/mysql/src/core.rs:95,1
    - Dst: map_err
      Src: /src/opendal/core/services/mysql/src/core.rs:95,1
    - Dst: Ok
      Src: /src/opendal/core/services/mysql/src/core.rs:106,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 21
    argCount: 2
    argNames:
    - path
    - value
    argTypes:
    - '&str'
    - Buffer
    constantsTouched: []
    func_position:
      end: 107
      start: 92
    functionDepth: 36
    functionLinenumber: 92
    functionLinenumberEnd: 107
    functionName: MysqlCore::set
    functionSourceFile: /src/opendal/core/services/mysql/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - Result::bind
    - MysqlCore::get_client
    - sqlx::query
    - Ok
    - bind
    - Vec::to_vec
    - execute
    linkageType: ''
    returnType: Result
    signature: 'pub async fn set(&self, path: &str, value: Buffer) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: MysqlCore::get_client
      Src: /src/opendal/core/services/mysql/src/core.rs:110,1
    - Dst: sqlx::query
      Src: /src/opendal/core/services/mysql/src/core.rs:112,1
    - Dst: Result::bind
      Src: /src/opendal/core/services/mysql/src/core.rs:112,1
    - Dst: execute
      Src: /src/opendal/core/services/mysql/src/core.rs:112,1
    - Dst: map_err
      Src: /src/opendal/core/services/mysql/src/core.rs:112,1
    - Dst: Ok
      Src: /src/opendal/core/services/mysql/src/core.rs:121,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 1
    argNames:
    - path
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 122
      start: 109
    functionDepth: 36
    functionLinenumber: 109
    functionLinenumberEnd: 122
    functionName: MysqlCore::delete
    functionSourceFile: /src/opendal/core/services/mysql/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - Result::bind
    - MysqlCore::get_client
    - sqlx::query
    - Ok
    - execute
    linkageType: ''
    returnType: Result
    signature: 'pub async fn delete(&self, path: &str) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: MysqlCore::get_client
      Src: /src/opendal/core/services/mysql/src/core.rs:125,1
    - Dst: push_str
      Src: /src/opendal/core/services/mysql/src/core.rs:131,1
    - Dst: escape_like
      Src: /src/opendal/core/services/mysql/src/core.rs:133,1
    - Dst: sqlx::query_scalar
      Src: /src/opendal/core/services/mysql/src/core.rs:134,1
    - Dst: bind
      Src: /src/opendal/core/services/mysql/src/core.rs:134,1
    - Dst: fetch_all
      Src: /src/opendal/core/services/mysql/src/core.rs:134,1
    - Dst: map_err
      Src: /src/opendal/core/services/mysql/src/core.rs:134,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 18
    argCount: 1
    argNames:
    - path
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 139
      start: 124
    functionDepth: 32
    functionLinenumber: 124
    functionLinenumberEnd: 139
    functionName: MysqlCore::list
    functionSourceFile: /src/opendal/core/services/mysql/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - MysqlCore::get_client
    - push_str
    - sqlx::query_scalar
    - bind
    - escape_like
    - fetch_all
    linkageType: ''
    returnType: Result
    signature: 'pub async fn list(&self, path: &str) -> Result<Vec<String>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: String::with_capacity
      Src: /src/opendal/core/services/mysql/src/core.rs:144,1
    - Dst: len
      Src: /src/opendal/core/services/mysql/src/core.rs:144,1
    - Dst: chars
      Src: /src/opendal/core/services/mysql/src/core.rs:145,1
    - Dst: Self::push
      Src: /src/opendal/core/services/mysql/src/core.rs:148,1
    - Dst: Self::push
      Src: /src/opendal/core/services/mysql/src/core.rs:149,1
    - Dst: Self::push
      Src: /src/opendal/core/services/mysql/src/core.rs:152,1
    - Dst: Self::push
      Src: /src/opendal/core/services/mysql/src/core.rs:153,1
    - Dst: Self::push
      Src: /src/opendal/core/services/mysql/src/core.rs:155,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 24
    argCount: 1
    argNames:
    - s
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 159
      start: 142
    functionDepth: 31
    functionLinenumber: 142
    functionLinenumberEnd: 159
    functionName: escape_like
    functionSourceFile: /src/opendal/core/services/mysql/src/core.rs
    functionUses: 1
    functionsReached:
    - String::with_capacity
    - len
    - Self::push
    - chars
    linkageType: ''
    returnType: String
    signature: 'fn escape_like(s: &str) -> String'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Error::new
      Src: /src/opendal/core/services/mysql/src/core.rs:162,1
    - Dst: Self::set_source
      Src: /src/opendal/core/services/mysql/src/core.rs:162,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - err
    argTypes:
    - sqlx::Error
    constantsTouched: []
    func_position:
      end: 163
      start: 161
    functionDepth: 36
    functionLinenumber: 161
    functionLinenumberEnd: 163
    functionName: parse_mysql_error
    functionSourceFile: /src/opendal/core/services/mysql/src/core.rs
    functionUses: 0
    functionsReached:
    - Self::set_source
    - Error::new
    linkageType: ''
    returnType: Error
    signature: 'fn parse_mysql_error(err: sqlx::Error) -> Error'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 173
      start: 170
    functionDepth: 0
    functionLinenumber: 170
    functionLinenumberEnd: 173
    functionName: tests::test_escape_like_basic
    functionSourceFile: /src/opendal/core/services/mysql/src/core.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: fn test_escape_like_basic()
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 180
      start: 176
    functionDepth: 0
    functionLinenumber: 176
    functionLinenumberEnd: 180
    functionName: tests::test_escape_like_wildcards
    functionSourceFile: /src/opendal/core/services/mysql/src/core.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: fn test_escape_like_wildcards()
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 186
      start: 183
    functionDepth: 0
    functionLinenumber: 183
    functionLinenumberEnd: 186
    functionName: tests::test_escape_like_escape_char
    functionSourceFile: /src/opendal/core/services/mysql/src/core.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: fn test_escape_like_escape_char()
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 194
      start: 189
    functionDepth: 0
    functionLinenumber: 189
    functionLinenumberEnd: 194
    functionName: tests::test_escape_like_mixed
    functionSourceFile: /src/opendal/core/services/mysql/src/core.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: fn test_escape_like_mixed()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: oio::QueueBuf::new
      Src: /src/opendal/core/services/mysql/src/writer.rs:35,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - core
    - path
    argTypes:
    - Arc<MysqlCore>
    - String
    constantsTouched: []
    func_position:
      end: 37
      start: 31
    functionDepth: 4
    functionLinenumber: 31
    functionLinenumberEnd: 37
    functionName: MysqlWriter::new
    functionSourceFile: /src/opendal/core/services/mysql/src/writer.rs
    functionUses: 1
    functionsReached:
    - oio::QueueBuf::new
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(core: Arc<MysqlCore>, path: String) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: push
      Src: /src/opendal/core/services/mysql/src/writer.rs:42,1
    - Dst: Ok
      Src: /src/opendal/core/services/mysql/src/writer.rs:43,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - bs
    argTypes:
    - Buffer
    constantsTouched: []
    func_position:
      end: 44
      start: 41
    functionDepth: 5
    functionLinenumber: 41
    functionLinenumberEnd: 44
    functionName: MysqlWriter::write
    functionSourceFile: /src/opendal/core/services/mysql/src/writer.rs
    functionUses: 0
    functionsReached:
    - Ok
    - push
    linkageType: ''
    returnType: Result
    signature: 'async fn write(&mut self, bs: Buffer) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: clone
      Src: /src/opendal/core/services/mysql/src/writer.rs:47,1
    - Dst: collect
      Src: /src/opendal/core/services/mysql/src/writer.rs:47,1
    - Dst: io::Result::len
      Src: /src/opendal/core/services/mysql/src/writer.rs:48,1
    - Dst: set
      Src: /src/opendal/core/services/mysql/src/writer.rs:49,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/mysql/src/writer.rs:51,1
    - Dst: EntryMode::from_path
      Src: /src/opendal/core/services/mysql/src/writer.rs:51,1
    - Dst: Self::with_content_length
      Src: /src/opendal/core/services/mysql/src/writer.rs:51,1
    - Dst: Ok
      Src: /src/opendal/core/services/mysql/src/writer.rs:52,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 23
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 53
      start: 46
    functionDepth: 36
    functionLinenumber: 46
    functionLinenumberEnd: 53
    functionName: MysqlWriter::close
    functionSourceFile: /src/opendal/core/services/mysql/src/writer.rs
    functionUses: 0
    functionsReached:
    - collect
    - Metadata::new
    - Ok
    - io::Result::len
    - set
    - Self::with_content_length
    - clone
    - EntryMode::from_path
    linkageType: ''
    returnType: Result
    signature: async fn close(&mut self) -> Result<Metadata>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: clear
      Src: /src/opendal/core/services/mysql/src/writer.rs:56,1
    - Dst: Ok
      Src: /src/opendal/core/services/mysql/src/writer.rs:57,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 58
      start: 55
    functionDepth: 2
    functionLinenumber: 55
    functionLinenumberEnd: 58
    functionName: MysqlWriter::abort
    functionSourceFile: /src/opendal/core/services/mysql/src/writer.rs
    functionUses: 0
    functionsReached:
    - clear
    - Ok
    linkageType: ''
    returnType: Result
    signature: async fn abort(&mut self) -> Result<()>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: register::<Mysql>
      Src: /src/opendal/core/services/mysql/src/lib.rs:23,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - registry
    argTypes:
    - '&opendal_core::OperatorRegistry'
    constantsTouched: []
    func_position:
      end: 24
      start: 22
    functionDepth: 0
    functionLinenumber: 22
    functionLinenumberEnd: 24
    functionName: register_mysql_service
    functionSourceFile: /src/opendal/core/services/mysql/src/lib.rs
    functionUses: 1
    functionsReached:
    - register::<Mysql>
    linkageType: ''
    returnType: void
    signature: 'pub fn register_mysql_service(registry: &opendal_core::OperatorRegistry)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::is_empty
      Src: /src/opendal/core/services/mysql/src/backend.rs:57,1
    - Dst: Some
      Src: /src/opendal/core/services/mysql/src/backend.rs:58,1
    - Dst: Result::to_string
      Src: /src/opendal/core/services/mysql/src/backend.rs:58,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 1
    argNames:
    - v
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 61
      start: 56
    functionDepth: 4
    functionLinenumber: 56
    functionLinenumberEnd: 61
    functionName: MysqlBuilder::connection_string
    functionSourceFile: /src/opendal/core/services/mysql/src/backend.rs
    functionUses: 0
    functionsReached:
    - Result::is_empty
    - Result::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn connection_string(mut self, v: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::is_empty
      Src: /src/opendal/core/services/mysql/src/backend.rs:67,1
    - Dst: Some
      Src: /src/opendal/core/services/mysql/src/backend.rs:70,1
    - Dst: Result::to_string
      Src: /src/opendal/core/services/mysql/src/backend.rs:70,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - root
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 74
      start: 66
    functionDepth: 4
    functionLinenumber: 66
    functionLinenumberEnd: 74
    functionName: MysqlBuilder::root
    functionSourceFile: /src/opendal/core/services/mysql/src/backend.rs
    functionUses: 0
    functionsReached:
    - Result::is_empty
    - Result::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn root(mut self, root: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self::is_empty
      Src: /src/opendal/core/services/mysql/src/backend.rs:78,1
    - Dst: Some
      Src: /src/opendal/core/services/mysql/src/backend.rs:79,1
    - Dst: Self::to_string
      Src: /src/opendal/core/services/mysql/src/backend.rs:79,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 1
    argNames:
    - table
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 82
      start: 77
    functionDepth: 4
    functionLinenumber: 77
    functionLinenumberEnd: 82
    functionName: MysqlBuilder::table
    functionSourceFile: /src/opendal/core/services/mysql/src/backend.rs
    functionUses: 0
    functionsReached:
    - Self::is_empty
    - Self::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn table(mut self, table: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self::is_empty
      Src: /src/opendal/core/services/mysql/src/backend.rs:88,1
    - Dst: Some
      Src: /src/opendal/core/services/mysql/src/backend.rs:89,1
    - Dst: Self::to_string
      Src: /src/opendal/core/services/mysql/src/backend.rs:89,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 1
    argNames:
    - key_field
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 92
      start: 87
    functionDepth: 4
    functionLinenumber: 87
    functionLinenumberEnd: 92
    functionName: MysqlBuilder::key_field
    functionSourceFile: /src/opendal/core/services/mysql/src/backend.rs
    functionUses: 0
    functionsReached:
    - Self::is_empty
    - Self::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn key_field(mut self, key_field: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self::is_empty
      Src: /src/opendal/core/services/mysql/src/backend.rs:98,1
    - Dst: Some
      Src: /src/opendal/core/services/mysql/src/backend.rs:99,1
    - Dst: Self::to_string
      Src: /src/opendal/core/services/mysql/src/backend.rs:99,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 1
    argNames:
    - value_field
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 102
      start: 97
    functionDepth: 4
    functionLinenumber: 97
    functionLinenumberEnd: 102
    functionName: MysqlBuilder::value_field
    functionSourceFile: /src/opendal/core/services/mysql/src/backend.rs
    functionUses: 0
    functionsReached:
    - Self::is_empty
    - Self::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn value_field(mut self, value_field: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/core/services/mysql/src/backend.rs:112,1
    - Dst: Error::new
      Src: /src/opendal/core/services/mysql/src/backend.rs:113,1
    - Dst: Self::with_context
      Src: /src/opendal/core/services/mysql/src/backend.rs:113,1
    - Dst: parse::<MySqlConnectOptions>
      Src: /src/opendal/core/services/mysql/src/backend.rs:119,1
    - Dst: map_err
      Src: /src/opendal/core/services/mysql/src/backend.rs:119,1
    - Dst: Error::new
      Src: /src/opendal/core/services/mysql/src/backend.rs:120,1
    - Dst: Self::with_context
      Src: /src/opendal/core/services/mysql/src/backend.rs:120,1
    - Dst: Self::set_source
      Src: /src/opendal/core/services/mysql/src/backend.rs:120,1
    - Dst: Err
      Src: /src/opendal/core/services/mysql/src/backend.rs:128,1
    - Dst: Error::new
      Src: /src/opendal/core/services/mysql/src/backend.rs:128,1
    - Dst: Self::with_context
      Src: /src/opendal/core/services/mysql/src/backend.rs:128,1
    - Dst: unwrap_or_else
      Src: /src/opendal/core/services/mysql/src/backend.rs:133,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/mysql/src/backend.rs:133,1
    - Dst: unwrap_or_else
      Src: /src/opendal/core/services/mysql/src/backend.rs:135,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/mysql/src/backend.rs:138,1
    - Dst: normalize_root
      Src: /src/opendal/core/services/mysql/src/backend.rs:140,1
    - Dst: unwrap_or_else
      Src: /src/opendal/core/services/mysql/src/backend.rs:140,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/mysql/src/backend.rs:140,1
    - Dst: as_str
      Src: /src/opendal/core/services/mysql/src/backend.rs:140,1
    - Dst: Ok
      Src: /src/opendal/core/services/mysql/src/backend.rs:142,1
    - Dst: MysqlBackend::new
      Src: /src/opendal/core/services/mysql/src/backend.rs:142,1
    - Dst: OnceCell::new
      Src: /src/opendal/core/services/mysql/src/backend.rs:143,1
    - Dst: Self::with_normalized_root
      Src: /src/opendal/core/services/mysql/src/backend.rs:142,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 59
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 150
      start: 108
    functionDepth: 36
    functionLinenumber: 108
    functionLinenumberEnd: 150
    functionName: MysqlBuilder::build
    functionSourceFile: /src/opendal/core/services/mysql/src/backend.rs
    functionUses: 0
    functionsReached:
    - map_err
    - MysqlBackend::new
    - Ok
    - Self::with_normalized_root
    - normalize_root
    - Error::new
    - parse::<MySqlConnectOptions>
    - Err
    - as_str
    - '&str::to_string'
    - OnceCell::new
    - Self::set_source
    - Self::with_context
    - unwrap_or_else
    linkageType: ''
    returnType: Result
    signature: fn build(self) -> Result<impl Service>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: ServiceInfo::new
      Src: /src/opendal/core/services/mysql/src/backend.rs:164,1
    - Dst: Default::default
      Src: /src/opendal/core/services/mysql/src/backend.rs:174,1
    - Dst: Arc::new
      Src: /src/opendal/core/services/mysql/src/backend.rs:178,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/mysql/src/backend.rs:179,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 1
    argNames:
    - core
    argTypes:
    - MysqlCore
    constantsTouched: []
    func_position:
      end: 183
      start: 163
    functionDepth: 33
    functionLinenumber: 163
    functionLinenumberEnd: 183
    functionName: MysqlBackend::new
    functionSourceFile: /src/opendal/core/services/mysql/src/backend.rs
    functionUses: 1
    functionsReached:
    - Arc::new
    - ServiceInfo::new
    - '&str::to_string'
    - Default::default
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(core: MysqlCore) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: with_root
      Src: /src/opendal/core/services/mysql/src/backend.rs:186,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 1
    argNames:
    - root
    argTypes:
    - String
    constantsTouched: []
    func_position:
      end: 189
      start: 185
    functionDepth: 33
    functionLinenumber: 185
    functionLinenumberEnd: 189
    functionName: MysqlBackend::with_normalized_root
    functionSourceFile: /src/opendal/core/services/mysql/src/backend.rs
    functionUses: 0
    functionsReached:
    - with_root
    linkageType: ''
    returnType: Self
    signature: 'fn with_normalized_root(mut self, root: String) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: clone
      Src: /src/opendal/core/services/mysql/src/backend.rs:200,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 201
      start: 199
    functionDepth: 2
    functionLinenumber: 199
    functionLinenumberEnd: 201
    functionName: MysqlBackend::info
    functionSourceFile: /src/opendal/core/services/mysql/src/backend.rs
    functionUses: 0
    functionsReached:
    - clone
    linkageType: ''
    returnType: ServiceInfo
    signature: fn info(&self) -> ServiceInfo
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 205
      start: 203
    functionDepth: 0
    functionLinenumber: 203
    functionLinenumberEnd: 205
    functionName: MysqlBackend::capability
    functionSourceFile: /src/opendal/core/services/mysql/src/backend.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Capability
    signature: fn capability(&self) -> Capability
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/core/services/mysql/src/backend.rs:213,1
    - Dst: Error::new
      Src: /src/opendal/core/services/mysql/src/backend.rs:213,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - _ctx
    - _path
    - _args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpCreateDir
    constantsTouched: []
    func_position:
      end: 217
      start: 207
    functionDepth: 36
    functionLinenumber: 207
    functionLinenumberEnd: 217
    functionName: MysqlBackend::create_dir
    functionSourceFile: /src/opendal/core/services/mysql/src/backend.rs
    functionUses: 0
    functionsReached:
    - Error::new
    - Err
    linkageType: ''
    returnType: Result
    signature: 'async fn create_dir(&self,_ctx: &OperationContext,_path: &str,_args:
      OpCreateDir,) -> Result<RpCreateDir>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/mysql/src/backend.rs:220,1
    - Dst: build_abs_path
      Src: /src/opendal/core/services/mysql/src/backend.rs:222,1
    - Dst: Ok
      Src: /src/opendal/core/services/mysql/src/backend.rs:223,1
    - Dst: RpStat::new
      Src: /src/opendal/core/services/mysql/src/backend.rs:223,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/mysql/src/backend.rs:223,1
    - Dst: get_length
      Src: /src/opendal/core/services/mysql/src/backend.rs:225,1
    - Dst: Ok
      Src: /src/opendal/core/services/mysql/src/backend.rs:226,1
    - Dst: RpStat::new
      Src: /src/opendal/core/services/mysql/src/backend.rs:226,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/mysql/src/backend.rs:227,1
    - Dst: Self::with_content_length
      Src: /src/opendal/core/services/mysql/src/backend.rs:227,1
    - Dst: Err
      Src: /src/opendal/core/services/mysql/src/backend.rs:229,1
    - Dst: Error::new
      Src: /src/opendal/core/services/mysql/src/backend.rs:229,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 28
    argCount: 3
    argNames:
    - _ctx
    - path
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpStat
    constantsTouched: []
    func_position:
      end: 232
      start: 219
    functionDepth: 35
    functionLinenumber: 219
    functionLinenumberEnd: 232
    functionName: MysqlBackend::stat
    functionSourceFile: /src/opendal/core/services/mysql/src/backend.rs
    functionUses: 0
    functionsReached:
    - Metadata::new
    - Ok
    - Self::with_content_length
    - get_length
    - RpStat::new
    - build_abs_path
    - Err
    - Error::new
    linkageType: ''
    returnType: Result
    signature: 'async fn stat(&self, _ctx: &OperationContext, path: &str, _: OpStat)
      -> Result<RpStat>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/core/services/mysql/src/backend.rs:235,1
    - Dst: oio::StreamReader::new
      Src: /src/opendal/core/services/mysql/src/backend.rs:235,1
    - Dst: MysqlReader::new
      Src: /src/opendal/core/services/mysql/src/backend.rs:235,1
    - Dst: MysqlBackend::clone
      Src: /src/opendal/core/services/mysql/src/backend.rs:236,1
    - Dst: Ok
      Src: /src/opendal/core/services/mysql/src/backend.rs:242,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - _ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpRead
    constantsTouched: []
    func_position:
      end: 243
      start: 233
    functionDepth: 3
    functionLinenumber: 233
    functionLinenumberEnd: 243
    functionName: MysqlBackend::read
    functionSourceFile: /src/opendal/core/services/mysql/src/backend.rs
    functionUses: 0
    functionsReached:
    - oio::StreamReader::new
    - MysqlReader::new
    - MysqlBackend::clone
    - Ok
    linkageType: ''
    returnType: Result
    signature: 'fn read(&self, _ctx: &OperationContext, path: &str, args: OpRead)
      -> Result<Self::Reader>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/mysql/src/backend.rs:247,1
    - Dst: Ok
      Src: /src/opendal/core/services/mysql/src/backend.rs:248,1
    - Dst: MysqlWriter::new
      Src: /src/opendal/core/services/mysql/src/backend.rs:248,1
    - Dst: clone
      Src: /src/opendal/core/services/mysql/src/backend.rs:248,1
    - Dst: Ok
      Src: /src/opendal/core/services/mysql/src/backend.rs:251,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 3
    argNames:
    - _ctx
    - path
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpWrite
    constantsTouched: []
    func_position:
      end: 252
      start: 245
    functionDepth: 5
    functionLinenumber: 245
    functionLinenumberEnd: 252
    functionName: MysqlBackend::write
    functionSourceFile: /src/opendal/core/services/mysql/src/backend.rs
    functionUses: 0
    functionsReached:
    - MysqlWriter::new
    - Ok
    - clone
    - build_abs_path
    linkageType: ''
    returnType: Result
    signature: 'fn write(&self, _ctx: &OperationContext, path: &str, _: OpWrite) ->
      Result<Self::Writer>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/core/services/mysql/src/backend.rs:256,1
    - Dst: oio::OneShotDeleter::new
      Src: /src/opendal/core/services/mysql/src/backend.rs:256,1
    - Dst: MysqlDeleter::new
      Src: /src/opendal/core/services/mysql/src/backend.rs:256,1
    - Dst: clone
      Src: /src/opendal/core/services/mysql/src/backend.rs:257,1
    - Dst: clone
      Src: /src/opendal/core/services/mysql/src/backend.rs:258,1
    - Dst: Ok
      Src: /src/opendal/core/services/mysql/src/backend.rs:262,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 1
    argNames:
    - _ctx
    argTypes:
    - '&OperationContext'
    constantsTouched: []
    func_position:
      end: 263
      start: 254
    functionDepth: 2
    functionLinenumber: 254
    functionLinenumberEnd: 263
    functionName: MysqlBackend::delete
    functionSourceFile: /src/opendal/core/services/mysql/src/backend.rs
    functionUses: 0
    functionsReached:
    - oio::OneShotDeleter::new
    - MysqlDeleter::new
    - clone
    - Ok
    linkageType: ''
    returnType: Result
    signature: 'fn delete(&self, _ctx: &OperationContext) -> Result<Self::Deleter>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: MysqlLazyLister::new
      Src: /src/opendal/core/services/mysql/src/backend.rs:268,1
    - Dst: clone
      Src: /src/opendal/core/services/mysql/src/backend.rs:268,1
    - Dst: clone
      Src: /src/opendal/core/services/mysql/src/backend.rs:268,1
    - Dst: to_string
      Src: /src/opendal/core/services/mysql/src/backend.rs:268,1
    - Dst: oio::HierarchyLister::new
      Src: /src/opendal/core/services/mysql/src/backend.rs:269,1
    - Dst: OpStat::recursive
      Src: /src/opendal/core/services/mysql/src/backend.rs:269,1
    - Dst: Ok
      Src: /src/opendal/core/services/mysql/src/backend.rs:270,1
    - Dst: Ok
      Src: /src/opendal/core/services/mysql/src/backend.rs:273,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 15
    argCount: 3
    argNames:
    - _ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpList
    constantsTouched: []
    func_position:
      end: 274
      start: 265
    functionDepth: 36
    functionLinenumber: 265
    functionLinenumberEnd: 274
    functionName: MysqlBackend::list
    functionSourceFile: /src/opendal/core/services/mysql/src/backend.rs
    functionUses: 0
    functionsReached:
    - oio::HierarchyLister::new
    - to_string
    - Ok
    - clone
    - MysqlLazyLister::new
    - OpStat::recursive
    linkageType: ''
    returnType: Result
    signature: 'fn list(&self, _ctx: &OperationContext, path: &str, args: OpList)
      -> Result<Self::Lister>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/core/services/mysql/src/backend.rs:284,1
    - Dst: Error::new
      Src: /src/opendal/core/services/mysql/src/backend.rs:284,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 5
    argNames:
    - _ctx
    - _from
    - _to
    - _args
    - _opts
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    - OpCopy
    - OpCopier
    constantsTouched: []
    func_position:
      end: 288
      start: 276
    functionDepth: 36
    functionLinenumber: 276
    functionLinenumberEnd: 288
    functionName: MysqlBackend::copy
    functionSourceFile: /src/opendal/core/services/mysql/src/backend.rs
    functionUses: 0
    functionsReached:
    - Error::new
    - Err
    linkageType: ''
    returnType: Result
    signature: 'fn copy(&self,_ctx: &OperationContext,_from: &str,_to: &str,_args:
      OpCopy,_opts: OpCopier,) -> Result<Self::Copier>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/core/services/mysql/src/backend.rs:297,1
    - Dst: Error::new
      Src: /src/opendal/core/services/mysql/src/backend.rs:297,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - _ctx
    - _from
    - _to
    - _args
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    - OpRename
    constantsTouched: []
    func_position:
      end: 301
      start: 290
    functionDepth: 36
    functionLinenumber: 290
    functionLinenumberEnd: 301
    functionName: MysqlBackend::rename
    functionSourceFile: /src/opendal/core/services/mysql/src/backend.rs
    functionUses: 0
    functionsReached:
    - Error::new
    - Err
    linkageType: ''
    returnType: Result
    signature: 'async fn rename(&self,_ctx: &OperationContext,_from: &str,_to: &str,_args:
      OpRename,) -> Result<RpRename>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/core/services/mysql/src/backend.rs:309,1
    - Dst: Error::new
      Src: /src/opendal/core/services/mysql/src/backend.rs:309,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - _ctx
    - _path
    - _args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpPresign
    constantsTouched: []
    func_position:
      end: 313
      start: 303
    functionDepth: 36
    functionLinenumber: 303
    functionLinenumberEnd: 313
    functionName: MysqlBackend::presign
    functionSourceFile: /src/opendal/core/services/mysql/src/backend.rs
    functionUses: 0
    functionsReached:
    - Error::new
    - Err
    linkageType: ''
    returnType: Result
    signature: 'async fn presign(&self,_ctx: &OperationContext,_path: &str,_args:
      OpPresign,) -> Result<RpPresign>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::options
      Src: /src/opendal/core/services/ipmfs/src/config.rs:38,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/ipmfs/src/config.rs:38,1
    - Dst: Result::authority
      Src: /src/opendal/core/services/ipmfs/src/config.rs:39,1
    - Dst: Result::insert
      Src: /src/opendal/core/services/ipmfs/src/config.rs:40,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/ipmfs/src/config.rs:40,1
    - Dst: Result::root
      Src: /src/opendal/core/services/ipmfs/src/config.rs:43,1
    - Dst: Result::is_empty
      Src: /src/opendal/core/services/ipmfs/src/config.rs:44,1
    - Dst: Result::insert
      Src: /src/opendal/core/services/ipmfs/src/config.rs:46,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/ipmfs/src/config.rs:46,1
    - Dst: Result::to_string
      Src: /src/opendal/core/services/ipmfs/src/config.rs:46,1
    - Dst: Self::from_iter
      Src: /src/opendal/core/services/ipmfs/src/config.rs:49,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 28
    argCount: 1
    argNames:
    - uri
    argTypes:
    - '&opendal_core::OperatorUri'
    constantsTouched: []
    func_position:
      end: 50
      start: 37
    functionDepth: 35
    functionLinenumber: 37
    functionLinenumberEnd: 50
    functionName: IpmfsConfig::from_uri
    functionSourceFile: /src/opendal/core/services/ipmfs/src/config.rs
    functionUses: 0
    functionsReached:
    - Result::clone
    - Self::from_iter
    - Result::to_string
    - Result::insert
    - Result::is_empty
    - '&str::to_string'
    - Result::root
    - Result::authority
    - Result::options
    linkageType: ''
    returnType: opendal_core::Result
    signature: 'fn from_uri(uri: &opendal_core::OperatorUri) -> opendal_core::Result<Self>'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 54
      start: 52
    functionDepth: 0
    functionLinenumber: 52
    functionLinenumberEnd: 54
    functionName: IpmfsConfig::into_builder
    functionSourceFile: /src/opendal/core/services/ipmfs/src/config.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Self::Builder
    signature: fn into_builder(self) -> Self::Builder
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - core
    - ctx
    argTypes:
    - Arc<IpmfsCore>
    - OperationContext
    constantsTouched: []
    func_position:
      end: 35
      start: 33
    functionDepth: 0
    functionLinenumber: 33
    functionLinenumberEnd: 35
    functionName: IpmfsDeleter::new
    functionSourceFile: /src/opendal/core/services/ipmfs/src/deleter.rs
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(core: Arc<IpmfsCore>, ctx: OperationContext) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: ipmfs_rm
      Src: /src/opendal/core/services/ipmfs/src/deleter.rs:40,1
    - Dst: status
      Src: /src/opendal/core/services/ipmfs/src/deleter.rs:42,1
    - Dst: Ok
      Src: /src/opendal/core/services/ipmfs/src/deleter.rs:45,1
    - Dst: Err
      Src: /src/opendal/core/services/ipmfs/src/deleter.rs:46,1
    - Dst: super::core::parse_error
      Src: /src/opendal/core/services/ipmfs/src/deleter.rs:46,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 2
    argNames:
    - path
    argTypes:
    - String
    - OpDelete
    constantsTouched: []
    func_position:
      end: 48
      start: 39
    functionDepth: 38
    functionLinenumber: 39
    functionLinenumberEnd: 48
    functionName: IpmfsDeleter::delete_once
    functionSourceFile: /src/opendal/core/services/ipmfs/src/deleter.rs
    functionUses: 0
    functionsReached:
    - status
    - Ok
    - Err
    - ipmfs_rm
    - super::core::parse_error
    linkageType: ''
    returnType: Result
    signature: 'async fn delete_once(&self, path: String, _: OpDelete) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::to_string
      Src: /src/opendal/core/services/ipmfs/src/lister.rs:45,1
    - Dst: to_string
      Src: /src/opendal/core/services/ipmfs/src/lister.rs:46,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 4
    argNames:
    - core
    - ctx
    - root
    - path
    argTypes:
    - Arc<IpmfsCore>
    - OperationContext
    - '&str'
    - '&str'
    constantsTouched: []
    func_position:
      end: 48
      start: 41
    functionDepth: 2
    functionLinenumber: 41
    functionLinenumberEnd: 48
    functionName: IpmfsLister::new
    functionSourceFile: /src/opendal/core/services/ipmfs/src/lister.rs
    functionUses: 1
    functionsReached:
    - to_string
    - Result::to_string
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(core: Arc<IpmfsCore>, ctx: OperationContext, root: &str,
      path: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: ipmfs_ls
      Src: /src/opendal/core/services/ipmfs/src/lister.rs:53,1
    - Dst: status
      Src: /src/opendal/core/services/ipmfs/src/lister.rs:55,1
    - Dst: super::core::parse_error
      Src: /src/opendal/core/services/ipmfs/src/lister.rs:56,1
    - Dst: Ok
      Src: /src/opendal/core/services/ipmfs/src/lister.rs:60,1
    - Dst: Err
      Src: /src/opendal/core/services/ipmfs/src/lister.rs:62,1
    - Dst: is_empty
      Src: /src/opendal/core/services/ipmfs/src/lister.rs:66,1
    - Dst: build_abs_path
      Src: /src/opendal/core/services/ipmfs/src/lister.rs:67,1
    - Dst: as_str
      Src: /src/opendal/core/services/ipmfs/src/lister.rs:67,1
    - Dst: build_rel_path
      Src: /src/opendal/core/services/ipmfs/src/lister.rs:68,1
    - Dst: push_back
      Src: /src/opendal/core/services/ipmfs/src/lister.rs:70,1
    - Dst: oio::Entry::new
      Src: /src/opendal/core/services/ipmfs/src/lister.rs:71,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/ipmfs/src/lister.rs:71,1
    - Dst: into_body
      Src: /src/opendal/core/services/ipmfs/src/lister.rs:74,1
    - Dst: serde_json::from_reader
      Src: /src/opendal/core/services/ipmfs/src/lister.rs:76,1
    - Dst: Result::reader
      Src: /src/opendal/core/services/ipmfs/src/lister.rs:76,1
    - Dst: map_err
      Src: /src/opendal/core/services/ipmfs/src/lister.rs:76,1
    - Dst: unwrap_or_default
      Src: /src/opendal/core/services/ipmfs/src/lister.rs:81,1
    - Dst: Buffer::mode
      Src: /src/opendal/core/services/ipmfs/src/lister.rs:82,1
    - Dst: build_rel_path
      Src: /src/opendal/core/services/ipmfs/src/lister.rs:88,1
    - Dst: push_back
      Src: /src/opendal/core/services/ipmfs/src/lister.rs:90,1
    - Dst: oio::Entry::new
      Src: /src/opendal/core/services/ipmfs/src/lister.rs:90,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/ipmfs/src/lister.rs:92,1
    - Dst: Buffer::mode
      Src: /src/opendal/core/services/ipmfs/src/lister.rs:92,1
    - Dst: Self::with_content_length
      Src: /src/opendal/core/services/ipmfs/src/lister.rs:92,1
    - Dst: Ok
      Src: /src/opendal/core/services/ipmfs/src/lister.rs:96,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 89
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - '&mut oio::PageContext'
    constantsTouched: []
    func_position:
      end: 97
      start: 52
    functionDepth: 38
    functionLinenumber: 52
    functionLinenumberEnd: 97
    functionName: IpmfsLister::next_page
    functionSourceFile: /src/opendal/core/services/ipmfs/src/lister.rs
    functionUses: 0
    functionsReached:
    - status
    - serde_json::from_reader
    - build_rel_path
    - Result::reader
    - map_err
    - Ok
    - as_str
    - unwrap_or_default
    - Metadata::new
    - Buffer::mode
    - into_body
    - build_abs_path
    - is_empty
    - super::core::parse_error
    - oio::Entry::new
    - push_back
    - Self::with_content_length
    - Err
    - ipmfs_ls
    linkageType: ''
    returnType: Result
    signature: 'async fn next_page(&self, ctx: &mut oio::PageContext) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 130
      start: 124
    functionDepth: 0
    functionLinenumber: 124
    functionLinenumberEnd: 130
    functionName: IpfsLsResponseEntry::mode
    functionSourceFile: /src/opendal/core/services/ipmfs/src/lister.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: EntryMode
    signature: fn mode(&self) -> EntryMode
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: to_string
      Src: /src/opendal/core/services/ipmfs/src/reader.rs:37,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 4
    argNames:
    - backend
    - ctx
    - path
    argTypes:
    - IpmfsBackend
    - OperationContext
    - '&str'
    - OpRead
    constantsTouched: []
    func_position:
      end: 39
      start: 33
    functionDepth: 2
    functionLinenumber: 33
    functionLinenumberEnd: 39
    functionName: IpmfsReader::new
    functionSourceFile: /src/opendal/core/services/ipmfs/src/reader.rs
    functionUses: 1
    functionsReached:
    - to_string
    linkageType: ''
    returnType: Self
    signature: 'pub(super) fn new(backend: IpmfsBackend, ctx: OperationContext, path:
      &str, _: OpRead) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: as_str
      Src: /src/opendal/core/services/ipmfs/src/reader.rs:45,1
    - Dst: ipmfs_read
      Src: /src/opendal/core/services/ipmfs/src/reader.rs:46,1
    - Dst: status
      Src: /src/opendal/core/services/ipmfs/src/reader.rs:48,1
    - Dst: RpRead::default
      Src: /src/opendal/core/services/ipmfs/src/reader.rs:51,1
    - Dst: into_body
      Src: /src/opendal/core/services/ipmfs/src/reader.rs:51,1
    - Dst: into_parts
      Src: /src/opendal/core/services/ipmfs/src/reader.rs:53,1
    - Dst: to_buffer
      Src: /src/opendal/core/services/ipmfs/src/reader.rs:54,1
    - Dst: Err
      Src: /src/opendal/core/services/ipmfs/src/reader.rs:55,1
    - Dst: super::core::parse_error
      Src: /src/opendal/core/services/ipmfs/src/reader.rs:55,1
    - Dst: Response::from_parts
      Src: /src/opendal/core/services/ipmfs/src/reader.rs:55,1
    - Dst: Ok
      Src: /src/opendal/core/services/ipmfs/src/reader.rs:59,1
    - Dst: Box::new
      Src: /src/opendal/core/services/ipmfs/src/reader.rs:59,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 34
    argCount: 1
    argNames:
    - range
    argTypes:
    - BytesRange
    constantsTouched: []
    func_position:
      end: 60
      start: 43
    functionDepth: 38
    functionLinenumber: 43
    functionLinenumberEnd: 60
    functionName: IpmfsReader::open
    functionSourceFile: /src/opendal/core/services/ipmfs/src/reader.rs
    functionUses: 0
    functionsReached:
    - to_buffer
    - status
    - Ok
    - Box::new
    - into_body
    - Err
    - Response::from_parts
    - as_str
    - into_parts
    - RpRead::default
    - super::core::parse_error
    - ipmfs_read
    linkageType: ''
    returnType: Result
    signature: 'async fn open(&self, range: BytesRange) -> Result<(RpRead, Box<dyn
      oio::ReadStreamDyn>)>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::debug_struct
      Src: /src/opendal/core/services/ipmfs/src/core.rs:36,1
    - Dst: field
      Src: /src/opendal/core/services/ipmfs/src/core.rs:36,1
    - Dst: field
      Src: /src/opendal/core/services/ipmfs/src/core.rs:36,1
    - Dst: finish_non_exhaustive
      Src: /src/opendal/core/services/ipmfs/src/core.rs:36,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 1
    argNames:
    - f
    argTypes:
    - '&mut std::fmt::Formatter<''_>'
    constantsTouched: []
    func_position:
      end: 40
      start: 35
    functionDepth: 5
    functionLinenumber: 35
    functionLinenumberEnd: 40
    functionName: IpmfsCore::fmt
    functionSourceFile: /src/opendal/core/services/ipmfs/src/core.rs
    functionUses: 0
    functionsReached:
    - field
    - Result::debug_struct
    - finish_non_exhaustive
    linkageType: ''
    returnType: std::fmt::Result
    signature: 'fn fmt(&self, f: &mut std::fmt::Formatter<''_>) -> std::fmt::Result'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_rooted_abs_path
      Src: /src/opendal/core/services/ipmfs/src/core.rs:45,1
    - Dst: Request::post
      Src: /src/opendal/core/services/ipmfs/src/core.rs:53,1
    - Dst: extension
      Src: /src/opendal/core/services/ipmfs/src/core.rs:53,1
    - Dst: extension
      Src: /src/opendal/core/services/ipmfs/src/core.rs:53,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/ipmfs/src/core.rs:55,1
    - Dst: body
      Src: /src/opendal/core/services/ipmfs/src/core.rs:56,1
    - Dst: Buffer::new
      Src: /src/opendal/core/services/ipmfs/src/core.rs:56,1
    - Dst: map_err
      Src: /src/opendal/core/services/ipmfs/src/core.rs:56,1
    - Dst: Result::http_transport
      Src: /src/opendal/core/services/ipmfs/src/core.rs:58,1
    - Dst: Self::send
      Src: /src/opendal/core/services/ipmfs/src/core.rs:58,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 20
    argCount: 2
    argNames:
    - ctx
    - path
    argTypes:
    - '&OperationContext'
    - '&str'
    constantsTouched: []
    func_position:
      end: 59
      start: 44
    functionDepth: 37
    functionLinenumber: 44
    functionLinenumberEnd: 59
    functionName: IpmfsCore::ipmfs_stat
    functionSourceFile: /src/opendal/core/services/ipmfs/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - extension
    - Buffer::new
    - Self::send
    - Request::post
    - body
    - build_rooted_abs_path
    - ServiceOperation
    - Result::http_transport
    linkageType: ''
    returnType: Result
    signature: 'pub async fn ipmfs_stat(&self, ctx: &OperationContext, path: &str)
      -> Result<Response<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_rooted_abs_path
      Src: /src/opendal/core/services/ipmfs/src/core.rs:67,1
    - Dst: expect
      Src: /src/opendal/core/services/ipmfs/src/core.rs:75,1
    - Dst: (Vec::size
      Src: /src/opendal/core/services/ipmfs/src/core.rs:76,1
    - Dst: expect
      Src: /src/opendal/core/services/ipmfs/src/core.rs:77,1
    - Dst: Request::post
      Src: /src/opendal/core/services/ipmfs/src/core.rs:80,1
    - Dst: extension
      Src: /src/opendal/core/services/ipmfs/src/core.rs:80,1
    - Dst: extension
      Src: /src/opendal/core/services/ipmfs/src/core.rs:80,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/ipmfs/src/core.rs:82,1
    - Dst: body
      Src: /src/opendal/core/services/ipmfs/src/core.rs:83,1
    - Dst: Buffer::new
      Src: /src/opendal/core/services/ipmfs/src/core.rs:83,1
    - Dst: map_err
      Src: /src/opendal/core/services/ipmfs/src/core.rs:83,1
    - Dst: Result::http_transport
      Src: /src/opendal/core/services/ipmfs/src/core.rs:85,1
    - Dst: Self::fetch
      Src: /src/opendal/core/services/ipmfs/src/core.rs:85,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 29
    argCount: 3
    argNames:
    - ctx
    - path
    - range
    argTypes:
    - '&OperationContext'
    - '&str'
    - BytesRange
    constantsTouched: []
    func_position:
      end: 86
      start: 61
    functionDepth: 3
    functionLinenumber: 61
    functionLinenumberEnd: 86
    functionName: IpmfsCore::ipmfs_read
    functionSourceFile: /src/opendal/core/services/ipmfs/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - extension
    - Buffer::new
    - expect
    - (Vec::size
    - Request::post
    - body
    - build_rooted_abs_path
    - Self::fetch
    - ServiceOperation
    - Result::http_transport
    linkageType: ''
    returnType: Result
    signature: 'pub async fn ipmfs_read(&self,ctx: &OperationContext,path: &str,range:
      BytesRange,) -> Result<Response<HttpBody>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_rooted_abs_path
      Src: /src/opendal/core/services/ipmfs/src/core.rs:89,1
    - Dst: Request::post
      Src: /src/opendal/core/services/ipmfs/src/core.rs:97,1
    - Dst: extension
      Src: /src/opendal/core/services/ipmfs/src/core.rs:97,1
    - Dst: extension
      Src: /src/opendal/core/services/ipmfs/src/core.rs:97,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/ipmfs/src/core.rs:99,1
    - Dst: body
      Src: /src/opendal/core/services/ipmfs/src/core.rs:100,1
    - Dst: Buffer::new
      Src: /src/opendal/core/services/ipmfs/src/core.rs:100,1
    - Dst: map_err
      Src: /src/opendal/core/services/ipmfs/src/core.rs:100,1
    - Dst: Result::http_transport
      Src: /src/opendal/core/services/ipmfs/src/core.rs:102,1
    - Dst: Self::send
      Src: /src/opendal/core/services/ipmfs/src/core.rs:102,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 20
    argCount: 2
    argNames:
    - ctx
    - path
    argTypes:
    - '&OperationContext'
    - '&str'
    constantsTouched: []
    func_position:
      end: 103
      start: 88
    functionDepth: 37
    functionLinenumber: 88
    functionLinenumberEnd: 103
    functionName: IpmfsCore::ipmfs_rm
    functionSourceFile: /src/opendal/core/services/ipmfs/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - extension
    - Buffer::new
    - Self::send
    - Request::post
    - body
    - build_rooted_abs_path
    - ServiceOperation
    - Result::http_transport
    linkageType: ''
    returnType: Result
    signature: 'pub async fn ipmfs_rm(&self, ctx: &OperationContext, path: &str) ->
      Result<Response<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_rooted_abs_path
      Src: /src/opendal/core/services/ipmfs/src/core.rs:110,1
    - Dst: Request::post
      Src: /src/opendal/core/services/ipmfs/src/core.rs:118,1
    - Dst: extension
      Src: /src/opendal/core/services/ipmfs/src/core.rs:118,1
    - Dst: extension
      Src: /src/opendal/core/services/ipmfs/src/core.rs:118,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/ipmfs/src/core.rs:120,1
    - Dst: body
      Src: /src/opendal/core/services/ipmfs/src/core.rs:121,1
    - Dst: Buffer::new
      Src: /src/opendal/core/services/ipmfs/src/core.rs:121,1
    - Dst: map_err
      Src: /src/opendal/core/services/ipmfs/src/core.rs:121,1
    - Dst: Result::http_transport
      Src: /src/opendal/core/services/ipmfs/src/core.rs:123,1
    - Dst: Self::send
      Src: /src/opendal/core/services/ipmfs/src/core.rs:123,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 20
    argCount: 2
    argNames:
    - ctx
    - path
    argTypes:
    - '&OperationContext'
    - '&str'
    constantsTouched: []
    func_position:
      end: 124
      start: 105
    functionDepth: 37
    functionLinenumber: 105
    functionLinenumberEnd: 124
    functionName: IpmfsCore::ipmfs_ls
    functionSourceFile: /src/opendal/core/services/ipmfs/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - extension
    - Buffer::new
    - Self::send
    - Request::post
    - body
    - build_rooted_abs_path
    - ServiceOperation
    - Result::http_transport
    linkageType: ''
    returnType: Result
    signature: 'pub(crate) async fn ipmfs_ls(&self,ctx: &OperationContext,path: &str,)
      -> Result<Response<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_rooted_abs_path
      Src: /src/opendal/core/services/ipmfs/src/core.rs:131,1
    - Dst: Request::post
      Src: /src/opendal/core/services/ipmfs/src/core.rs:139,1
    - Dst: extension
      Src: /src/opendal/core/services/ipmfs/src/core.rs:139,1
    - Dst: extension
      Src: /src/opendal/core/services/ipmfs/src/core.rs:139,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/ipmfs/src/core.rs:141,1
    - Dst: body
      Src: /src/opendal/core/services/ipmfs/src/core.rs:142,1
    - Dst: Buffer::new
      Src: /src/opendal/core/services/ipmfs/src/core.rs:142,1
    - Dst: map_err
      Src: /src/opendal/core/services/ipmfs/src/core.rs:142,1
    - Dst: Result::http_transport
      Src: /src/opendal/core/services/ipmfs/src/core.rs:144,1
    - Dst: Self::send
      Src: /src/opendal/core/services/ipmfs/src/core.rs:144,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 20
    argCount: 2
    argNames:
    - ctx
    - path
    argTypes:
    - '&OperationContext'
    - '&str'
    constantsTouched: []
    func_position:
      end: 145
      start: 126
    functionDepth: 37
    functionLinenumber: 126
    functionLinenumberEnd: 145
    functionName: IpmfsCore::ipmfs_mkdir
    functionSourceFile: /src/opendal/core/services/ipmfs/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - extension
    - Buffer::new
    - Self::send
    - Request::post
    - body
    - build_rooted_abs_path
    - ServiceOperation
    - Result::http_transport
    linkageType: ''
    returnType: Result
    signature: 'pub async fn ipmfs_mkdir(&self,ctx: &OperationContext,path: &str,)
      -> Result<Response<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_rooted_abs_path
      Src: /src/opendal/core/services/ipmfs/src/core.rs:154,1
    - Dst: Multipart::new
      Src: /src/opendal/core/services/ipmfs/src/core.rs:162,1
    - Dst: Self::part
      Src: /src/opendal/core/services/ipmfs/src/core.rs:162,1
    - Dst: FormDataPart::new
      Src: /src/opendal/core/services/ipmfs/src/core.rs:162,1
    - Dst: Self::content
      Src: /src/opendal/core/services/ipmfs/src/core.rs:162,1
    - Dst: Request::post
      Src: /src/opendal/core/services/ipmfs/src/core.rs:164,1
    - Dst: extension
      Src: /src/opendal/core/services/ipmfs/src/core.rs:164,1
    - Dst: extension
      Src: /src/opendal/core/services/ipmfs/src/core.rs:164,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/ipmfs/src/core.rs:166,1
    - Dst: apply
      Src: /src/opendal/core/services/ipmfs/src/core.rs:167,1
    - Dst: Result::http_transport
      Src: /src/opendal/core/services/ipmfs/src/core.rs:169,1
    - Dst: Self::send
      Src: /src/opendal/core/services/ipmfs/src/core.rs:169,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 23
    argCount: 3
    argNames:
    - ctx
    - path
    - body
    argTypes:
    - '&OperationContext'
    - '&str'
    - Buffer
    constantsTouched: []
    func_position:
      end: 170
      start: 148
    functionDepth: 36
    functionLinenumber: 148
    functionLinenumberEnd: 170
    functionName: IpmfsCore::ipmfs_write
    functionSourceFile: /src/opendal/core/services/ipmfs/src/core.rs
    functionUses: 0
    functionsReached:
    - Multipart::new
    - extension
    - apply
    - Self::content
    - Self::send
    - Request::post
    - FormDataPart::new
    - build_rooted_abs_path
    - Self::part
    - ServiceOperation
    - Result::http_transport
    linkageType: ''
    returnType: Result
    signature: 'pub async fn ipmfs_write(&self,ctx: &OperationContext,path: &str,body:
      Buffer,) -> Result<Response<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 3
    argNames:
    - core
    - ctx
    - path
    argTypes:
    - Arc<IpmfsCore>
    - OperationContext
    - String
    constantsTouched: []
    func_position:
      end: 36
      start: 34
    functionDepth: 0
    functionLinenumber: 34
    functionLinenumberEnd: 36
    functionName: IpmfsWriter::new
    functionSourceFile: /src/opendal/core/services/ipmfs/src/writer.rs
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(core: Arc<IpmfsCore>, ctx: OperationContext, path: String)
      -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: ipmfs_write
      Src: /src/opendal/core/services/ipmfs/src/writer.rs:41,1
    - Dst: status
      Src: /src/opendal/core/services/ipmfs/src/writer.rs:43,1
    - Dst: Ok
      Src: /src/opendal/core/services/ipmfs/src/writer.rs:46,1
    - Dst: Metadata::default
      Src: /src/opendal/core/services/ipmfs/src/writer.rs:46,1
    - Dst: Err
      Src: /src/opendal/core/services/ipmfs/src/writer.rs:47,1
    - Dst: super::core::parse_error
      Src: /src/opendal/core/services/ipmfs/src/writer.rs:47,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 1
    argNames:
    - bs
    argTypes:
    - Buffer
    constantsTouched: []
    func_position:
      end: 49
      start: 40
    functionDepth: 37
    functionLinenumber: 40
    functionLinenumberEnd: 49
    functionName: IpmfsWriter::write_once
    functionSourceFile: /src/opendal/core/services/ipmfs/src/writer.rs
    functionUses: 0
    functionsReached:
    - Metadata::default
    - status
    - Ok
    - Err
    - ipmfs_write
    - super::core::parse_error
    linkageType: ''
    returnType: Result
    signature: 'async fn write_once(&self, bs: Buffer) -> Result<Metadata>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: register::<Ipmfs>
      Src: /src/opendal/core/services/ipmfs/src/lib.rs:23,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - registry
    argTypes:
    - '&opendal_core::OperatorRegistry'
    constantsTouched: []
    func_position:
      end: 24
      start: 22
    functionDepth: 0
    functionLinenumber: 22
    functionLinenumberEnd: 24
    functionName: register_ipmfs_service
    functionSourceFile: /src/opendal/core/services/ipmfs/src/lib.rs
    functionUses: 1
    functionsReached:
    - register::<Ipmfs>
    linkageType: ''
    returnType: void
    signature: 'pub fn register_ipmfs_service(registry: &opendal_core::OperatorRegistry)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::debug_struct
      Src: /src/opendal/core/services/ipmfs/src/backend.rs:86,1
    - Dst: field
      Src: /src/opendal/core/services/ipmfs/src/backend.rs:86,1
    - Dst: finish_non_exhaustive
      Src: /src/opendal/core/services/ipmfs/src/backend.rs:86,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - f
    argTypes:
    - '&mut std::fmt::Formatter<''_>'
    constantsTouched: []
    func_position:
      end: 89
      start: 85
    functionDepth: 5
    functionLinenumber: 85
    functionLinenumberEnd: 89
    functionName: IpmfsBuilder::fmt
    functionSourceFile: /src/opendal/core/services/ipmfs/src/backend.rs
    functionUses: 0
    functionsReached:
    - field
    - Result::debug_struct
    - finish_non_exhaustive
    linkageType: ''
    returnType: std::fmt::Result
    signature: 'fn fmt(&self, f: &mut std::fmt::Formatter<''_>) -> std::fmt::Result'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::is_empty
      Src: /src/opendal/core/services/ipmfs/src/backend.rs:95,1
    - Dst: Some
      Src: /src/opendal/core/services/ipmfs/src/backend.rs:98,1
    - Dst: Result::to_string
      Src: /src/opendal/core/services/ipmfs/src/backend.rs:98,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - root
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 102
      start: 94
    functionDepth: 4
    functionLinenumber: 94
    functionLinenumberEnd: 102
    functionName: IpmfsBuilder::root
    functionSourceFile: /src/opendal/core/services/ipmfs/src/backend.rs
    functionUses: 0
    functionsReached:
    - Result::is_empty
    - Result::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn root(mut self, root: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self::is_empty
      Src: /src/opendal/core/services/ipmfs/src/backend.rs:108,1
    - Dst: Some
      Src: /src/opendal/core/services/ipmfs/src/backend.rs:111,1
    - Dst: Self::to_string
      Src: /src/opendal/core/services/ipmfs/src/backend.rs:111,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - endpoint
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 114
      start: 107
    functionDepth: 4
    functionLinenumber: 107
    functionLinenumberEnd: 114
    functionName: IpmfsBuilder::endpoint
    functionSourceFile: /src/opendal/core/services/ipmfs/src/backend.rs
    functionUses: 0
    functionsReached:
    - Self::is_empty
    - Self::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn endpoint(mut self, endpoint: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: normalize_root
      Src: /src/opendal/core/services/ipmfs/src/backend.rs:121,1
    - Dst: unwrap_or_default
      Src: /src/opendal/core/services/ipmfs/src/backend.rs:121,1
    - Dst: clone
      Src: /src/opendal/core/services/ipmfs/src/backend.rs:124,1
    - Dst: unwrap_or_else
      Src: /src/opendal/core/services/ipmfs/src/backend.rs:124,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/ipmfs/src/backend.rs:128,1
    - Dst: ServiceInfo::new
      Src: /src/opendal/core/services/ipmfs/src/backend.rs:130,1
    - Dst: Default::default
      Src: /src/opendal/core/services/ipmfs/src/backend.rs:143,1
    - Dst: Arc::new
      Src: /src/opendal/core/services/ipmfs/src/backend.rs:147,1
    - Dst: Result::to_string
      Src: /src/opendal/core/services/ipmfs/src/backend.rs:150,1
    - Dst: Self::to_string
      Src: /src/opendal/core/services/ipmfs/src/backend.rs:151,1
    - Dst: Ok
      Src: /src/opendal/core/services/ipmfs/src/backend.rs:154,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 28
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 155
      start: 120
    functionDepth: 34
    functionLinenumber: 120
    functionLinenumberEnd: 155
    functionName: IpmfsBuilder::build
    functionSourceFile: /src/opendal/core/services/ipmfs/src/backend.rs
    functionUses: 0
    functionsReached:
    - ServiceInfo::new
    - Result::to_string
    - Ok
    - Self::to_string
    - Default::default
    - Arc::new
    - clone
    - normalize_root
    - '&str::to_string'
    - unwrap_or_default
    - unwrap_or_else
    linkageType: ''
    returnType: Result
    signature: fn build(self) -> Result<impl Service>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: clone
      Src: /src/opendal/core/services/ipmfs/src/backend.rs:171,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 172
      start: 170
    functionDepth: 2
    functionLinenumber: 170
    functionLinenumberEnd: 172
    functionName: IpmfsBackend::info
    functionSourceFile: /src/opendal/core/services/ipmfs/src/backend.rs
    functionUses: 0
    functionsReached:
    - clone
    linkageType: ''
    returnType: ServiceInfo
    signature: fn info(&self) -> ServiceInfo
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 176
      start: 174
    functionDepth: 0
    functionLinenumber: 174
    functionLinenumberEnd: 176
    functionName: IpmfsBackend::capability
    functionSourceFile: /src/opendal/core/services/ipmfs/src/backend.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Capability
    signature: fn capability(&self) -> Capability
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: ipmfs_mkdir
      Src: /src/opendal/core/services/ipmfs/src/backend.rs:184,1
    - Dst: status
      Src: /src/opendal/core/services/ipmfs/src/backend.rs:186,1
    - Dst: Ok
      Src: /src/opendal/core/services/ipmfs/src/backend.rs:189,1
    - Dst: RpCreateDir::default
      Src: /src/opendal/core/services/ipmfs/src/backend.rs:189,1
    - Dst: Err
      Src: /src/opendal/core/services/ipmfs/src/backend.rs:190,1
    - Dst: super::core::parse_error
      Src: /src/opendal/core/services/ipmfs/src/backend.rs:190,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 3
    argNames:
    - ctx
    - path
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpCreateDir
    constantsTouched: []
    func_position:
      end: 192
      start: 178
    functionDepth: 38
    functionLinenumber: 178
    functionLinenumberEnd: 192
    functionName: IpmfsBackend::create_dir
    functionSourceFile: /src/opendal/core/services/ipmfs/src/backend.rs
    functionUses: 0
    functionsReached:
    - ipmfs_mkdir
    - status
    - RpCreateDir::default
    - Ok
    - Err
    - super::core::parse_error
    linkageType: ''
    returnType: Result
    signature: 'async fn create_dir(&self,ctx: &OperationContext,path: &str,_: OpCreateDir,)
      -> Result<RpCreateDir>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/core/services/ipmfs/src/backend.rs:197,1
    - Dst: RpStat::new
      Src: /src/opendal/core/services/ipmfs/src/backend.rs:197,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/ipmfs/src/backend.rs:197,1
    - Dst: ipmfs_stat
      Src: /src/opendal/core/services/ipmfs/src/backend.rs:200,1
    - Dst: status
      Src: /src/opendal/core/services/ipmfs/src/backend.rs:202,1
    - Dst: into_body
      Src: /src/opendal/core/services/ipmfs/src/backend.rs:206,1
    - Dst: serde_json::from_reader
      Src: /src/opendal/core/services/ipmfs/src/backend.rs:209,1
    - Dst: Result::reader
      Src: /src/opendal/core/services/ipmfs/src/backend.rs:209,1
    - Dst: map_err
      Src: /src/opendal/core/services/ipmfs/src/backend.rs:209,1
    - Dst: as_str
      Src: /src/opendal/core/services/ipmfs/src/backend.rs:211,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/ipmfs/src/backend.rs:217,1
    - Dst: Result::set_content_length
      Src: /src/opendal/core/services/ipmfs/src/backend.rs:218,1
    - Dst: Ok
      Src: /src/opendal/core/services/ipmfs/src/backend.rs:220,1
    - Dst: RpStat::new
      Src: /src/opendal/core/services/ipmfs/src/backend.rs:220,1
    - Dst: Err
      Src: /src/opendal/core/services/ipmfs/src/backend.rs:222,1
    - Dst: super::core::parse_error
      Src: /src/opendal/core/services/ipmfs/src/backend.rs:222,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 38
    argCount: 3
    argNames:
    - ctx
    - path
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpStat
    constantsTouched: []
    func_position:
      end: 224
      start: 194
    functionDepth: 38
    functionLinenumber: 194
    functionLinenumberEnd: 224
    functionName: IpmfsBackend::stat
    functionSourceFile: /src/opendal/core/services/ipmfs/src/backend.rs
    functionUses: 0
    functionsReached:
    - map_err
    - Metadata::new
    - status
    - Ok
    - serde_json::from_reader
    - ipmfs_stat
    - RpStat::new
    - into_body
    - Err
    - as_str
    - Result::set_content_length
    - Result::reader
    - super::core::parse_error
    linkageType: ''
    returnType: Result
    signature: 'async fn stat(&self, ctx: &OperationContext, path: &str, _: OpStat)
      -> Result<RpStat>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/core/services/ipmfs/src/backend.rs:227,1
    - Dst: oio::StreamReader::new
      Src: /src/opendal/core/services/ipmfs/src/backend.rs:227,1
    - Dst: IpmfsReader::new
      Src: /src/opendal/core/services/ipmfs/src/backend.rs:227,1
    - Dst: IpmfsBackend::clone
      Src: /src/opendal/core/services/ipmfs/src/backend.rs:228,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/ipmfs/src/backend.rs:229,1
    - Dst: Ok
      Src: /src/opendal/core/services/ipmfs/src/backend.rs:235,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpRead
    constantsTouched: []
    func_position:
      end: 236
      start: 225
    functionDepth: 3
    functionLinenumber: 225
    functionLinenumberEnd: 236
    functionName: IpmfsBackend::read
    functionSourceFile: /src/opendal/core/services/ipmfs/src/backend.rs
    functionUses: 0
    functionsReached:
    - Result::clone
    - Ok
    - oio::StreamReader::new
    - IpmfsReader::new
    - IpmfsBackend::clone
    linkageType: ''
    returnType: Result
    signature: 'fn read(&self, ctx: &OperationContext, path: &str, args: OpRead) ->
      Result<Self::Reader>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/core/services/ipmfs/src/backend.rs:240,1
    - Dst: oio::OneShotWriter::new
      Src: /src/opendal/core/services/ipmfs/src/backend.rs:240,1
    - Dst: IpmfsWriter::new
      Src: /src/opendal/core/services/ipmfs/src/backend.rs:240,1
    - Dst: clone
      Src: /src/opendal/core/services/ipmfs/src/backend.rs:241,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/ipmfs/src/backend.rs:242,1
    - Dst: to_string
      Src: /src/opendal/core/services/ipmfs/src/backend.rs:243,1
    - Dst: Ok
      Src: /src/opendal/core/services/ipmfs/src/backend.rs:247,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 3
    argNames:
    - ctx
    - path
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpWrite
    constantsTouched: []
    func_position:
      end: 248
      start: 238
    functionDepth: 2
    functionLinenumber: 238
    functionLinenumberEnd: 248
    functionName: IpmfsBackend::write
    functionSourceFile: /src/opendal/core/services/ipmfs/src/backend.rs
    functionUses: 0
    functionsReached:
    - Result::clone
    - to_string
    - Ok
    - clone
    - oio::OneShotWriter::new
    - IpmfsWriter::new
    linkageType: ''
    returnType: Result
    signature: 'fn write(&self, ctx: &OperationContext, path: &str, _: OpWrite) ->
      Result<Self::Writer>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/core/services/ipmfs/src/backend.rs:252,1
    - Dst: oio::OneShotDeleter::new
      Src: /src/opendal/core/services/ipmfs/src/backend.rs:252,1
    - Dst: IpmfsDeleter::new
      Src: /src/opendal/core/services/ipmfs/src/backend.rs:252,1
    - Dst: clone
      Src: /src/opendal/core/services/ipmfs/src/backend.rs:253,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/ipmfs/src/backend.rs:254,1
    - Dst: Ok
      Src: /src/opendal/core/services/ipmfs/src/backend.rs:258,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - '&OperationContext'
    constantsTouched: []
    func_position:
      end: 259
      start: 250
    functionDepth: 2
    functionLinenumber: 250
    functionLinenumberEnd: 259
    functionName: IpmfsBackend::delete
    functionSourceFile: /src/opendal/core/services/ipmfs/src/backend.rs
    functionUses: 0
    functionsReached:
    - oio::OneShotDeleter::new
    - Result::clone
    - Ok
    - IpmfsDeleter::new
    - clone
    linkageType: ''
    returnType: Result
    signature: 'fn delete(&self, ctx: &OperationContext) -> Result<Self::Deleter>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: IpmfsLister::new
      Src: /src/opendal/core/services/ipmfs/src/backend.rs:263,1
    - Dst: clone
      Src: /src/opendal/core/services/ipmfs/src/backend.rs:263,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/ipmfs/src/backend.rs:263,1
    - Dst: Ok
      Src: /src/opendal/core/services/ipmfs/src/backend.rs:264,1
    - Dst: oio::PageLister::new
      Src: /src/opendal/core/services/ipmfs/src/backend.rs:264,1
    - Dst: Ok
      Src: /src/opendal/core/services/ipmfs/src/backend.rs:267,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 3
    argNames:
    - ctx
    - path
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpList
    constantsTouched: []
    func_position:
      end: 268
      start: 261
    functionDepth: 3
    functionLinenumber: 261
    functionLinenumberEnd: 268
    functionName: IpmfsBackend::list
    functionSourceFile: /src/opendal/core/services/ipmfs/src/backend.rs
    functionUses: 0
    functionsReached:
    - Result::clone
    - Ok
    - clone
    - oio::PageLister::new
    - IpmfsLister::new
    linkageType: ''
    returnType: Result
    signature: 'fn list(&self, ctx: &OperationContext, path: &str, _: OpList) -> Result<Self::Lister>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/core/services/ipmfs/src/backend.rs:278,1
    - Dst: Error::new
      Src: /src/opendal/core/services/ipmfs/src/backend.rs:278,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 5
    argNames:
    - _ctx
    - _from
    - _to
    - _args
    - _opts
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    - OpCopy
    - OpCopier
    constantsTouched: []
    func_position:
      end: 282
      start: 270
    functionDepth: 36
    functionLinenumber: 270
    functionLinenumberEnd: 282
    functionName: IpmfsBackend::copy
    functionSourceFile: /src/opendal/core/services/ipmfs/src/backend.rs
    functionUses: 0
    functionsReached:
    - Error::new
    - Err
    linkageType: ''
    returnType: Result
    signature: 'fn copy(&self,_ctx: &OperationContext,_from: &str,_to: &str,_args:
      OpCopy,_opts: OpCopier,) -> Result<Self::Copier>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/core/services/ipmfs/src/backend.rs:291,1
    - Dst: Error::new
      Src: /src/opendal/core/services/ipmfs/src/backend.rs:291,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - _ctx
    - _from
    - _to
    - _args
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    - OpRename
    constantsTouched: []
    func_position:
      end: 295
      start: 284
    functionDepth: 36
    functionLinenumber: 284
    functionLinenumberEnd: 295
    functionName: IpmfsBackend::rename
    functionSourceFile: /src/opendal/core/services/ipmfs/src/backend.rs
    functionUses: 0
    functionsReached:
    - Error::new
    - Err
    linkageType: ''
    returnType: Result
    signature: 'async fn rename(&self,_ctx: &OperationContext,_from: &str,_to: &str,_args:
      OpRename,) -> Result<RpRename>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/core/services/ipmfs/src/backend.rs:303,1
    - Dst: Error::new
      Src: /src/opendal/core/services/ipmfs/src/backend.rs:303,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - _ctx
    - _path
    - _args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpPresign
    constantsTouched: []
    func_position:
      end: 307
      start: 297
    functionDepth: 36
    functionLinenumber: 297
    functionLinenumberEnd: 307
    functionName: IpmfsBackend::presign
    functionSourceFile: /src/opendal/core/services/ipmfs/src/backend.rs
    functionUses: 0
    functionsReached:
    - Error::new
    - Err
    linkageType: ''
    returnType: Result
    signature: 'async fn presign(&self,_ctx: &OperationContext,_path: &str,_args:
      OpPresign,) -> Result<RpPresign>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::debug_struct
      Src: /src/opendal/core/services/upyun/src/config.rs:45,1
    - Dst: field
      Src: /src/opendal/core/services/upyun/src/config.rs:45,1
    - Dst: field
      Src: /src/opendal/core/services/upyun/src/config.rs:45,1
    - Dst: field
      Src: /src/opendal/core/services/upyun/src/config.rs:45,1
    - Dst: finish_non_exhaustive
      Src: /src/opendal/core/services/upyun/src/config.rs:45,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 16
    argCount: 1
    argNames:
    - f
    argTypes:
    - '&mut std::fmt::Formatter<''_>'
    constantsTouched: []
    func_position:
      end: 50
      start: 44
    functionDepth: 5
    functionLinenumber: 44
    functionLinenumberEnd: 50
    functionName: UpyunConfig::fmt
    functionSourceFile: /src/opendal/core/services/upyun/src/config.rs
    functionUses: 0
    functionsReached:
    - field
    - Result::debug_struct
    - finish_non_exhaustive
    linkageType: ''
    returnType: std::fmt::Result
    signature: 'fn fmt(&self, f: &mut std::fmt::Formatter<''_>) -> std::fmt::Result'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::options
      Src: /src/opendal/core/services/upyun/src/config.rs:57,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/upyun/src/config.rs:57,1
    - Dst: Result::name
      Src: /src/opendal/core/services/upyun/src/config.rs:59,1
    - Dst: Result::insert
      Src: /src/opendal/core/services/upyun/src/config.rs:60,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/upyun/src/config.rs:60,1
    - Dst: Result::to_string
      Src: /src/opendal/core/services/upyun/src/config.rs:60,1
    - Dst: Result::root
      Src: /src/opendal/core/services/upyun/src/config.rs:63,1
    - Dst: Result::insert
      Src: /src/opendal/core/services/upyun/src/config.rs:64,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/upyun/src/config.rs:64,1
    - Dst: Result::to_string
      Src: /src/opendal/core/services/upyun/src/config.rs:64,1
    - Dst: Self::from_iter
      Src: /src/opendal/core/services/upyun/src/config.rs:67,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 27
    argCount: 1
    argNames:
    - uri
    argTypes:
    - '&OperatorUri'
    constantsTouched: []
    func_position:
      end: 68
      start: 56
    functionDepth: 35
    functionLinenumber: 56
    functionLinenumberEnd: 68
    functionName: UpyunConfig::from_uri
    functionSourceFile: /src/opendal/core/services/upyun/src/config.rs
    functionUses: 0
    functionsReached:
    - Result::clone
    - Self::from_iter
    - Result::to_string
    - Result::insert
    - Result::name
    - '&str::to_string'
    - Result::root
    - Result::options
    linkageType: ''
    returnType: Result
    signature: 'fn from_uri(uri: &OperatorUri) -> Result<Self>'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 72
      start: 70
    functionDepth: 0
    functionLinenumber: 70
    functionLinenumberEnd: 72
    functionName: UpyunConfig::into_builder
    functionSourceFile: /src/opendal/core/services/upyun/src/config.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Self::Builder
    signature: fn into_builder(self) -> Self::Builder
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - core
    - ctx
    argTypes:
    - Arc<UpyunCore>
    - OperationContext
    constantsTouched: []
    func_position:
      end: 35
      start: 33
    functionDepth: 0
    functionLinenumber: 33
    functionLinenumberEnd: 35
    functionName: UpyunDeleter::new
    functionSourceFile: /src/opendal/core/services/upyun/src/deleter.rs
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(core: Arc<UpyunCore>, ctx: OperationContext) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: delete
      Src: /src/opendal/core/services/upyun/src/deleter.rs:40,1
    - Dst: status
      Src: /src/opendal/core/services/upyun/src/deleter.rs:42,1
    - Dst: Ok
      Src: /src/opendal/core/services/upyun/src/deleter.rs:45,1
    - Dst: Ok
      Src: /src/opendal/core/services/upyun/src/deleter.rs:47,1
    - Dst: Err
      Src: /src/opendal/core/services/upyun/src/deleter.rs:48,1
    - Dst: super::core::parse_error
      Src: /src/opendal/core/services/upyun/src/deleter.rs:48,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 18
    argCount: 2
    argNames:
    - path
    argTypes:
    - String
    - OpDelete
    constantsTouched: []
    func_position:
      end: 50
      start: 39
    functionDepth: 32
    functionLinenumber: 39
    functionLinenumberEnd: 50
    functionName: UpyunDeleter::delete_once
    functionSourceFile: /src/opendal/core/services/upyun/src/deleter.rs
    functionUses: 0
    functionsReached:
    - status
    - Ok
    - delete
    - Err
    - super::core::parse_error
    linkageType: ''
    returnType: Result
    signature: 'async fn delete_once(&self, path: String, _: OpDelete) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: to_string
      Src: /src/opendal/core/services/upyun/src/lister.rs:46,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 4
    argNames:
    - core
    - ctx
    - path
    - limit
    argTypes:
    - Arc<UpyunCore>
    - OperationContext
    - '&str'
    - Option<usize>
    constantsTouched: []
    func_position:
      end: 49
      start: 37
    functionDepth: 2
    functionLinenumber: 37
    functionLinenumberEnd: 49
    functionName: UpyunLister::new
    functionSourceFile: /src/opendal/core/services/upyun/src/lister.rs
    functionUses: 1
    functionsReached:
    - to_string
    linkageType: ''
    returnType: Self
    signature: 'pub(super) fn new(core: Arc<UpyunCore>,ctx: OperationContext,path:
      &str,limit: Option<usize>,) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: list_objects
      Src: /src/opendal/core/services/upyun/src/lister.rs:54,1
    - Dst: status
      Src: /src/opendal/core/services/upyun/src/lister.rs:59,1
    - Dst: Ok
      Src: /src/opendal/core/services/upyun/src/lister.rs:61,1
    - Dst: status
      Src: /src/opendal/core/services/upyun/src/lister.rs:64,1
    - Dst: Ok
      Src: /src/opendal/core/services/upyun/src/lister.rs:68,1
    - Dst: Err
      Src: /src/opendal/core/services/upyun/src/lister.rs:71,1
    - Dst: super::core::parse_error
      Src: /src/opendal/core/services/upyun/src/lister.rs:71,1
    - Dst: into_body
      Src: /src/opendal/core/services/upyun/src/lister.rs:75,1
    - Dst: serde_json::from_reader
      Src: /src/opendal/core/services/upyun/src/lister.rs:78,1
    - Dst: Result::reader
      Src: /src/opendal/core/services/upyun/src/lister.rs:78,1
    - Dst: map_err
      Src: /src/opendal/core/services/upyun/src/lister.rs:78,1
    - Dst: build_abs_path
      Src: /src/opendal/core/services/upyun/src/lister.rs:87,1
    - Dst: normalize_root
      Src: /src/opendal/core/services/upyun/src/lister.rs:87,1
    - Dst: oio::Entry::new
      Src: /src/opendal/core/services/upyun/src/lister.rs:91,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/upyun/src/lister.rs:91,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/upyun/src/lister.rs:93,1
    - Dst: Self::with_content_length
      Src: /src/opendal/core/services/upyun/src/lister.rs:93,1
    - Dst: Self::with_content_type
      Src: /src/opendal/core/services/upyun/src/lister.rs:93,1
    - Dst: Result::with_last_modified
      Src: /src/opendal/core/services/upyun/src/lister.rs:93,1
    - Dst: Timestamp::from_second
      Src: /src/opendal/core/services/upyun/src/lister.rs:96,1
    - Dst: oio::Entry::new
      Src: /src/opendal/core/services/upyun/src/lister.rs:97,1
    - Dst: push_back
      Src: /src/opendal/core/services/upyun/src/lister.rs:100,1
    - Dst: Ok
      Src: /src/opendal/core/services/upyun/src/lister.rs:103,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 92
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - '&mut oio::PageContext'
    constantsTouched: []
    func_position:
      end: 104
      start: 53
    functionDepth: 38
    functionLinenumber: 53
    functionLinenumberEnd: 104
    functionName: UpyunLister::next_page
    functionSourceFile: /src/opendal/core/services/upyun/src/lister.rs
    functionUses: 0
    functionsReached:
    - map_err
    - Metadata::new
    - oio::Entry::new
    - status
    - Ok
    - push_back
    - serde_json::from_reader
    - Self::with_content_length
    - into_body
    - normalize_root
    - build_abs_path
    - Err
    - Self::with_content_type
    - Timestamp::from_second
    - Result::with_last_modified
    - Result::reader
    - super::core::parse_error
    - list_objects
    linkageType: ''
    returnType: Result
    signature: 'async fn next_page(&self, ctx: &mut oio::PageContext) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: to_string
      Src: /src/opendal/core/services/upyun/src/reader.rs:37,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 4
    argNames:
    - backend
    - ctx
    - path
    argTypes:
    - UpyunBackend
    - OperationContext
    - '&str'
    - OpRead
    constantsTouched: []
    func_position:
      end: 39
      start: 33
    functionDepth: 2
    functionLinenumber: 33
    functionLinenumberEnd: 39
    functionName: UpyunReader::new
    functionSourceFile: /src/opendal/core/services/upyun/src/reader.rs
    functionUses: 1
    functionsReached:
    - to_string
    linkageType: ''
    returnType: Self
    signature: 'pub(super) fn new(backend: UpyunBackend, ctx: OperationContext, path:
      &str, _: OpRead) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: as_str
      Src: /src/opendal/core/services/upyun/src/reader.rs:45,1
    - Dst: download_file
      Src: /src/opendal/core/services/upyun/src/reader.rs:46,1
    - Dst: status
      Src: /src/opendal/core/services/upyun/src/reader.rs:48,1
    - Dst: RpRead::new
      Src: /src/opendal/core/services/upyun/src/reader.rs:52,1
    - Dst: parse_into_metadata
      Src: /src/opendal/core/services/upyun/src/reader.rs:52,1
    - Dst: headers
      Src: /src/opendal/core/services/upyun/src/reader.rs:52,1
    - Dst: into_body
      Src: /src/opendal/core/services/upyun/src/reader.rs:53,1
    - Dst: into_parts
      Src: /src/opendal/core/services/upyun/src/reader.rs:56,1
    - Dst: to_buffer
      Src: /src/opendal/core/services/upyun/src/reader.rs:57,1
    - Dst: Err
      Src: /src/opendal/core/services/upyun/src/reader.rs:58,1
    - Dst: super::core::parse_error
      Src: /src/opendal/core/services/upyun/src/reader.rs:58,1
    - Dst: Response::from_parts
      Src: /src/opendal/core/services/upyun/src/reader.rs:58,1
    - Dst: Ok
      Src: /src/opendal/core/services/upyun/src/reader.rs:62,1
    - Dst: Box::new
      Src: /src/opendal/core/services/upyun/src/reader.rs:62,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 38
    argCount: 1
    argNames:
    - range
    argTypes:
    - BytesRange
    constantsTouched: []
    func_position:
      end: 63
      start: 43
    functionDepth: 36
    functionLinenumber: 43
    functionLinenumberEnd: 63
    functionName: UpyunReader::open
    functionSourceFile: /src/opendal/core/services/upyun/src/reader.rs
    functionUses: 0
    functionsReached:
    - parse_into_metadata
    - to_buffer
    - status
    - download_file
    - Ok
    - Box::new
    - into_body
    - Err
    - Response::from_parts
    - as_str
    - headers
    - into_parts
    - RpRead::new
    - super::core::parse_error
    linkageType: ''
    returnType: Result
    signature: 'async fn open(&self, range: BytesRange) -> Result<(RpRead, Box<dyn
      oio::ReadStreamDyn>)>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::debug_struct
      Src: /src/opendal/core/services/upyun/src/core.rs:73,1
    - Dst: field
      Src: /src/opendal/core/services/upyun/src/core.rs:73,1
    - Dst: field
      Src: /src/opendal/core/services/upyun/src/core.rs:73,1
    - Dst: field
      Src: /src/opendal/core/services/upyun/src/core.rs:73,1
    - Dst: finish_non_exhaustive
      Src: /src/opendal/core/services/upyun/src/core.rs:73,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 16
    argCount: 1
    argNames:
    - f
    argTypes:
    - '&mut std::fmt::Formatter<''_>'
    constantsTouched: []
    func_position:
      end: 78
      start: 72
    functionDepth: 5
    functionLinenumber: 72
    functionLinenumberEnd: 78
    functionName: UpyunCore::fmt
    functionSourceFile: /src/opendal/core/services/upyun/src/core.rs
    functionUses: 0
    functionsReached:
    - field
    - Result::debug_struct
    - finish_non_exhaustive
    linkageType: ''
    returnType: std::fmt::Result
    signature: 'fn fmt(&self, f: &mut std::fmt::Formatter<''_>) -> std::fmt::Result'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::http_transport
      Src: /src/opendal/core/services/upyun/src/core.rs:88,1
    - Dst: Self::send
      Src: /src/opendal/core/services/upyun/src/core.rs:88,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - ctx
    - req
    argTypes:
    - '&OperationContext'
    - Request<Buffer>
    constantsTouched: []
    func_position:
      end: 89
      start: 83
    functionDepth: 37
    functionLinenumber: 83
    functionLinenumberEnd: 89
    functionName: UpyunCore::send
    functionSourceFile: /src/opendal/core/services/upyun/src/core.rs
    functionUses: 8
    functionsReached:
    - Result::http_transport
    - Self::send
    linkageType: ''
    returnType: Result
    signature: 'pub async fn send(&self,ctx: &OperationContext,req: Request<Buffer>,)
      -> Result<Response<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Timestamp::now
      Src: /src/opendal/core/services/upyun/src/core.rs:93,1
    - Dst: Self::format_http_date
      Src: /src/opendal/core/services/upyun/src/core.rs:93,1
    - Dst: authorization
      Src: /src/opendal/core/services/upyun/src/core.rs:95,1
    - Dst: '&mut Request<Buffer>::method'
      Src: /src/opendal/core/services/upyun/src/core.rs:96,1
    - Dst: '&str::as_str'
      Src: /src/opendal/core/services/upyun/src/core.rs:96,1
    - Dst: '&mut Request<Buffer>::uri'
      Src: /src/opendal/core/services/upyun/src/core.rs:96,1
    - Dst: Result::path
      Src: /src/opendal/core/services/upyun/src/core.rs:96,1
    - Dst: '&mut Request<Buffer>::headers_mut'
      Src: /src/opendal/core/services/upyun/src/core.rs:98,1
    - Dst: insert
      Src: /src/opendal/core/services/upyun/src/core.rs:98,1
    - Dst: String::parse
      Src: /src/opendal/core/services/upyun/src/core.rs:99,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/services/upyun/src/core.rs:99,1
    - Dst: '&mut Request<Buffer>::headers_mut'
      Src: /src/opendal/core/services/upyun/src/core.rs:100,1
    - Dst: insert
      Src: /src/opendal/core/services/upyun/src/core.rs:100,1
    - Dst: String::parse
      Src: /src/opendal/core/services/upyun/src/core.rs:100,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/services/upyun/src/core.rs:100,1
    - Dst: Ok
      Src: /src/opendal/core/services/upyun/src/core.rs:102,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 35
    argCount: 1
    argNames:
    - req
    argTypes:
    - '&mut Request<Buffer>'
    constantsTouched: []
    func_position:
      end: 103
      start: 91
    functionDepth: 34
    functionLinenumber: 91
    functionLinenumberEnd: 103
    functionName: UpyunCore::sign
    functionSourceFile: /src/opendal/core/services/upyun/src/core.rs
    functionUses: 11
    functionsReached:
    - Timestamp::now
    - authorization
    - '&mut Request<Buffer>::headers_mut'
    - insert
    - Ok
    - String::parse
    - '&mut Request<Buffer>::uri'
    - '&mut Request<Buffer>::method'
    - Self::format_http_date
    - Result::unwrap
    - '&str::as_str'
    - Result::path
    linkageType: ''
    returnType: Result
    signature: 'pub fn sign(&self, req: &mut Request<Buffer>) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/upyun/src/core.rs:113,1
    - Dst: Request::get
      Src: /src/opendal/core/services/upyun/src/core.rs:121,1
    - Dst: Option::header
      Src: /src/opendal/core/services/upyun/src/core.rs:123,1
    - Dst: (Vec::to_header
      Src: /src/opendal/core/services/upyun/src/core.rs:124,1
    - Dst: String::extension
      Src: /src/opendal/core/services/upyun/src/core.rs:123,1
    - Dst: extension
      Src: /src/opendal/core/services/upyun/src/core.rs:123,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/upyun/src/core.rs:126,1
    - Dst: body
      Src: /src/opendal/core/services/upyun/src/core.rs:123,1
    - Dst: Buffer::new
      Src: /src/opendal/core/services/upyun/src/core.rs:127,1
    - Dst: map_err
      Src: /src/opendal/core/services/upyun/src/core.rs:123,1
    - Dst: UpyunCore::sign
      Src: /src/opendal/core/services/upyun/src/core.rs:130,1
    - Dst: Result::http_transport
      Src: /src/opendal/core/services/upyun/src/core.rs:132,1
    - Dst: Self::fetch
      Src: /src/opendal/core/services/upyun/src/core.rs:132,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 29
    argCount: 3
    argNames:
    - ctx
    - path
    - range
    argTypes:
    - '&OperationContext'
    - '&str'
    - BytesRange
    constantsTouched: []
    func_position:
      end: 133
      start: 107
    functionDepth: 35
    functionLinenumber: 107
    functionLinenumberEnd: 133
    functionName: UpyunCore::download_file
    functionSourceFile: /src/opendal/core/services/upyun/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - extension
    - Request::get
    - (Vec::to_header
    - Buffer::new
    - body
    - build_abs_path
    - Self::fetch
    - ServiceOperation
    - Result::http_transport
    - String::extension
    - UpyunCore::sign
    - Option::header
    linkageType: ''
    returnType: Result
    signature: 'pub async fn download_file(&self,ctx: &OperationContext,path: &str,range:
      BytesRange,) -> Result<Response<HttpBody>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/upyun/src/core.rs:136,1
    - Dst: Request::head
      Src: /src/opendal/core/services/upyun/src/core.rs:144,1
    - Dst: Result::extension
      Src: /src/opendal/core/services/upyun/src/core.rs:146,1
    - Dst: extension
      Src: /src/opendal/core/services/upyun/src/core.rs:146,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/upyun/src/core.rs:148,1
    - Dst: body
      Src: /src/opendal/core/services/upyun/src/core.rs:146,1
    - Dst: Buffer::new
      Src: /src/opendal/core/services/upyun/src/core.rs:149,1
    - Dst: map_err
      Src: /src/opendal/core/services/upyun/src/core.rs:146,1
    - Dst: UpyunCore::sign
      Src: /src/opendal/core/services/upyun/src/core.rs:152,1
    - Dst: UpyunCore::send
      Src: /src/opendal/core/services/upyun/src/core.rs:154,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 23
    argCount: 2
    argNames:
    - ctx
    - path
    argTypes:
    - '&OperationContext'
    - '&str'
    constantsTouched: []
    func_position:
      end: 155
      start: 135
    functionDepth: 38
    functionLinenumber: 135
    functionLinenumberEnd: 155
    functionName: UpyunCore::info
    functionSourceFile: /src/opendal/core/services/upyun/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - extension
    - Request::head
    - Buffer::new
    - Result::extension
    - body
    - UpyunCore::send
    - build_abs_path
    - ServiceOperation
    - UpyunCore::sign
    linkageType: ''
    returnType: Result
    signature: 'pub async fn info(&self, ctx: &OperationContext, path: &str) -> Result<Response<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/upyun/src/core.rs:164,1
    - Dst: Request::put
      Src: /src/opendal/core/services/upyun/src/core.rs:172,1
    - Dst: DeleteInput::header
      Src: /src/opendal/core/services/upyun/src/core.rs:175,1
    - Dst: Option::to_string
      Src: /src/opendal/core/services/upyun/src/core.rs:175,1
    - Dst: OpStat::content_type
      Src: /src/opendal/core/services/upyun/src/core.rs:178,1
    - Dst: DeleteInput::header
      Src: /src/opendal/core/services/upyun/src/core.rs:179,1
    - Dst: OpStat::content_disposition
      Src: /src/opendal/core/services/upyun/src/core.rs:182,1
    - Dst: DeleteInput::header
      Src: /src/opendal/core/services/upyun/src/core.rs:183,1
    - Dst: OpStat::cache_control
      Src: /src/opendal/core/services/upyun/src/core.rs:186,1
    - Dst: DeleteInput::header
      Src: /src/opendal/core/services/upyun/src/core.rs:187,1
    - Dst: DeleteInput::extension
      Src: /src/opendal/core/services/upyun/src/core.rs:190,1
    - Dst: extension
      Src: /src/opendal/core/services/upyun/src/core.rs:190,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/upyun/src/core.rs:192,1
    - Dst: DeleteInput::body
      Src: /src/opendal/core/services/upyun/src/core.rs:195,1
    - Dst: map_err
      Src: /src/opendal/core/services/upyun/src/core.rs:195,1
    - Dst: UpyunCore::sign
      Src: /src/opendal/core/services/upyun/src/core.rs:197,1
    - Dst: Ok
      Src: /src/opendal/core/services/upyun/src/core.rs:199,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 49
    argCount: 4
    argNames:
    - path
    - size
    - args
    - body
    argTypes:
    - '&str'
    - Option<u64>
    - '&OpWrite'
    - Buffer
    constantsTouched: []
    func_position:
      end: 200
      start: 157
    functionDepth: 32
    functionLinenumber: 157
    functionLinenumberEnd: 200
    functionName: UpyunCore::upload
    functionSourceFile: /src/opendal/core/services/upyun/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - extension
    - Option::to_string
    - Request::put
    - Ok
    - OpStat::content_disposition
    - OpStat::cache_control
    - build_abs_path
    - DeleteInput::header
    - ServiceOperation
    - DeleteInput::body
    - UpyunCore::sign
    - DeleteInput::extension
    - OpStat::content_type
    linkageType: ''
    returnType: Result
    signature: 'pub fn upload(&self,path: &str,size: Option<u64>,args: &OpWrite,body:
      Buffer,) -> Result<Request<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/upyun/src/core.rs:203,1
    - Dst: Request::delete
      Src: /src/opendal/core/services/upyun/src/core.rs:211,1
    - Dst: Result::extension
      Src: /src/opendal/core/services/upyun/src/core.rs:213,1
    - Dst: extension
      Src: /src/opendal/core/services/upyun/src/core.rs:213,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/upyun/src/core.rs:215,1
    - Dst: Result::body
      Src: /src/opendal/core/services/upyun/src/core.rs:217,1
    - Dst: Buffer::new
      Src: /src/opendal/core/services/upyun/src/core.rs:217,1
    - Dst: map_err
      Src: /src/opendal/core/services/upyun/src/core.rs:217,1
    - Dst: UpyunCore::sign
      Src: /src/opendal/core/services/upyun/src/core.rs:219,1
    - Dst: UpyunCore::send
      Src: /src/opendal/core/services/upyun/src/core.rs:221,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 23
    argCount: 2
    argNames:
    - ctx
    - path
    argTypes:
    - '&OperationContext'
    - '&str'
    constantsTouched: []
    func_position:
      end: 222
      start: 202
    functionDepth: 32
    functionLinenumber: 202
    functionLinenumberEnd: 222
    functionName: UpyunCore::delete
    functionSourceFile: /src/opendal/core/services/upyun/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - extension
    - Buffer::new
    - Request::delete
    - Result::extension
    - UpyunCore::send
    - build_abs_path
    - ServiceOperation
    - Result::body
    - UpyunCore::sign
    linkageType: ''
    returnType: Result
    signature: 'pub async fn delete(&self, ctx: &OperationContext, path: &str) ->
      Result<Response<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/upyun/src/core.rs:231,1
    - Dst: Request::put
      Src: /src/opendal/core/services/upyun/src/core.rs:239,1
    - Dst: DeleteInput::header
      Src: /src/opendal/core/services/upyun/src/core.rs:241,1
    - Dst: DeleteInput::header
      Src: /src/opendal/core/services/upyun/src/core.rs:243,1
    - Dst: DeleteInput::header
      Src: /src/opendal/core/services/upyun/src/core.rs:245,1
    - Dst: DeleteInput::extension
      Src: /src/opendal/core/services/upyun/src/core.rs:247,1
    - Dst: extension
      Src: /src/opendal/core/services/upyun/src/core.rs:247,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/upyun/src/core.rs:249,1
    - Dst: DeleteInput::body
      Src: /src/opendal/core/services/upyun/src/core.rs:252,1
    - Dst: Buffer::new
      Src: /src/opendal/core/services/upyun/src/core.rs:252,1
    - Dst: map_err
      Src: /src/opendal/core/services/upyun/src/core.rs:252,1
    - Dst: UpyunCore::sign
      Src: /src/opendal/core/services/upyun/src/core.rs:254,1
    - Dst: UpyunCore::send
      Src: /src/opendal/core/services/upyun/src/core.rs:256,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 35
    argCount: 3
    argNames:
    - ctx
    - from
    - to
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    constantsTouched: []
    func_position:
      end: 257
      start: 224
    functionDepth: 35
    functionLinenumber: 224
    functionLinenumberEnd: 257
    functionName: UpyunCore::copy
    functionSourceFile: /src/opendal/core/services/upyun/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - extension
    - Buffer::new
    - Request::put
    - UpyunCore::send
    - build_abs_path
    - DeleteInput::header
    - ServiceOperation
    - DeleteInput::body
    - UpyunCore::sign
    - DeleteInput::extension
    linkageType: ''
    returnType: Result
    signature: 'pub async fn copy(&self,ctx: &OperationContext,from: &str,to: &str,)
      -> Result<Response<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/upyun/src/core.rs:266,1
    - Dst: Request::put
      Src: /src/opendal/core/services/upyun/src/core.rs:274,1
    - Dst: DeleteInput::header
      Src: /src/opendal/core/services/upyun/src/core.rs:276,1
    - Dst: DeleteInput::header
      Src: /src/opendal/core/services/upyun/src/core.rs:278,1
    - Dst: DeleteInput::header
      Src: /src/opendal/core/services/upyun/src/core.rs:280,1
    - Dst: DeleteInput::extension
      Src: /src/opendal/core/services/upyun/src/core.rs:282,1
    - Dst: extension
      Src: /src/opendal/core/services/upyun/src/core.rs:282,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/upyun/src/core.rs:284,1
    - Dst: DeleteInput::body
      Src: /src/opendal/core/services/upyun/src/core.rs:287,1
    - Dst: Buffer::new
      Src: /src/opendal/core/services/upyun/src/core.rs:287,1
    - Dst: map_err
      Src: /src/opendal/core/services/upyun/src/core.rs:287,1
    - Dst: UpyunCore::sign
      Src: /src/opendal/core/services/upyun/src/core.rs:289,1
    - Dst: UpyunCore::send
      Src: /src/opendal/core/services/upyun/src/core.rs:291,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 35
    argCount: 3
    argNames:
    - ctx
    - from
    - to
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    constantsTouched: []
    func_position:
      end: 292
      start: 259
    functionDepth: 35
    functionLinenumber: 259
    functionLinenumberEnd: 292
    functionName: UpyunCore::move_object
    functionSourceFile: /src/opendal/core/services/upyun/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - extension
    - Buffer::new
    - Request::put
    - UpyunCore::send
    - build_abs_path
    - DeleteInput::header
    - ServiceOperation
    - DeleteInput::body
    - UpyunCore::sign
    - DeleteInput::extension
    linkageType: ''
    returnType: Result
    signature: 'pub async fn move_object(&self,ctx: &OperationContext,from: &str,to:
      &str,) -> Result<Response<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/upyun/src/core.rs:295,1
    - Dst: len
      Src: /src/opendal/core/services/upyun/src/core.rs:296,1
    - Dst: to_string
      Src: /src/opendal/core/services/upyun/src/core.rs:296,1
    - Dst: Request::post
      Src: /src/opendal/core/services/upyun/src/core.rs:304,1
    - Dst: http::header
      Src: /src/opendal/core/services/upyun/src/core.rs:306,1
    - Dst: http::header
      Src: /src/opendal/core/services/upyun/src/core.rs:308,1
    - Dst: extension
      Src: /src/opendal/core/services/upyun/src/core.rs:310,1
    - Dst: extension
      Src: /src/opendal/core/services/upyun/src/core.rs:310,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/upyun/src/core.rs:312,1
    - Dst: body
      Src: /src/opendal/core/services/upyun/src/core.rs:314,1
    - Dst: Buffer::new
      Src: /src/opendal/core/services/upyun/src/core.rs:314,1
    - Dst: map_err
      Src: /src/opendal/core/services/upyun/src/core.rs:314,1
    - Dst: UpyunCore::sign
      Src: /src/opendal/core/services/upyun/src/core.rs:316,1
    - Dst: UpyunCore::send
      Src: /src/opendal/core/services/upyun/src/core.rs:318,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 38
    argCount: 2
    argNames:
    - ctx
    - path
    argTypes:
    - '&OperationContext'
    - '&str'
    constantsTouched: []
    func_position:
      end: 319
      start: 294
    functionDepth: 35
    functionLinenumber: 294
    functionLinenumberEnd: 319
    functionName: UpyunCore::create_dir
    functionSourceFile: /src/opendal/core/services/upyun/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - to_string
    - extension
    - Buffer::new
    - http::header
    - Request::post
    - body
    - UpyunCore::send
    - build_abs_path
    - ServiceOperation
    - len
    - UpyunCore::sign
    linkageType: ''
    returnType: Result
    signature: 'pub async fn create_dir(&self, ctx: &OperationContext, path: &str)
      -> Result<Response<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/upyun/src/core.rs:327,1
    - Dst: Request::put
      Src: /src/opendal/core/services/upyun/src/core.rs:335,1
    - Dst: DeleteInput::header
      Src: /src/opendal/core/services/upyun/src/core.rs:337,1
    - Dst: DeleteInput::header
      Src: /src/opendal/core/services/upyun/src/core.rs:339,1
    - Dst: OpStat::content_type
      Src: /src/opendal/core/services/upyun/src/core.rs:341,1
    - Dst: DeleteInput::header
      Src: /src/opendal/core/services/upyun/src/core.rs:342,1
    - Dst: OpStat::content_disposition
      Src: /src/opendal/core/services/upyun/src/core.rs:345,1
    - Dst: DeleteInput::header
      Src: /src/opendal/core/services/upyun/src/core.rs:346,1
    - Dst: OpStat::cache_control
      Src: /src/opendal/core/services/upyun/src/core.rs:349,1
    - Dst: DeleteInput::header
      Src: /src/opendal/core/services/upyun/src/core.rs:350,1
    - Dst: DeleteInput::extension
      Src: /src/opendal/core/services/upyun/src/core.rs:353,1
    - Dst: extension
      Src: /src/opendal/core/services/upyun/src/core.rs:353,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/upyun/src/core.rs:355,1
    - Dst: DeleteInput::body
      Src: /src/opendal/core/services/upyun/src/core.rs:357,1
    - Dst: Buffer::new
      Src: /src/opendal/core/services/upyun/src/core.rs:357,1
    - Dst: map_err
      Src: /src/opendal/core/services/upyun/src/core.rs:357,1
    - Dst: UpyunCore::sign
      Src: /src/opendal/core/services/upyun/src/core.rs:359,1
    - Dst: UpyunCore::send
      Src: /src/opendal/core/services/upyun/src/core.rs:361,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 53
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&OpWrite'
    constantsTouched: []
    func_position:
      end: 362
      start: 321
    functionDepth: 32
    functionLinenumber: 321
    functionLinenumberEnd: 362
    functionName: UpyunCore::initiate_multipart_upload
    functionSourceFile: /src/opendal/core/services/upyun/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - extension
    - Buffer::new
    - Request::put
    - OpStat::content_disposition
    - OpStat::cache_control
    - build_abs_path
    - UpyunCore::send
    - DeleteInput::header
    - ServiceOperation
    - DeleteInput::body
    - UpyunCore::sign
    - DeleteInput::extension
    - OpStat::content_type
    linkageType: ''
    returnType: Result
    signature: 'pub async fn initiate_multipart_upload(&self,ctx: &OperationContext,path:
      &str,args: &OpWrite,) -> Result<Response<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/upyun/src/core.rs:372,1
    - Dst: Request::put
      Src: /src/opendal/core/services/upyun/src/core.rs:380,1
    - Dst: DeleteInput::header
      Src: /src/opendal/core/services/upyun/src/core.rs:382,1
    - Dst: DeleteInput::header
      Src: /src/opendal/core/services/upyun/src/core.rs:384,1
    - Dst: DeleteInput::header
      Src: /src/opendal/core/services/upyun/src/core.rs:386,1
    - Dst: DeleteInput::header
      Src: /src/opendal/core/services/upyun/src/core.rs:388,1
    - Dst: DeleteInput::extension
      Src: /src/opendal/core/services/upyun/src/core.rs:390,1
    - Dst: extension
      Src: /src/opendal/core/services/upyun/src/core.rs:390,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/upyun/src/core.rs:392,1
    - Dst: DeleteInput::body
      Src: /src/opendal/core/services/upyun/src/core.rs:395,1
    - Dst: map_err
      Src: /src/opendal/core/services/upyun/src/core.rs:395,1
    - Dst: UpyunCore::sign
      Src: /src/opendal/core/services/upyun/src/core.rs:397,1
    - Dst: Ok
      Src: /src/opendal/core/services/upyun/src/core.rs:399,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 37
    argCount: 5
    argNames:
    - path
    - upload_id
    - part_number
    - size
    - body
    argTypes:
    - '&str'
    - '&str'
    - usize
    - u64
    - Buffer
    constantsTouched: []
    func_position:
      end: 400
      start: 364
    functionDepth: 35
    functionLinenumber: 364
    functionLinenumberEnd: 400
    functionName: UpyunCore::upload_part
    functionSourceFile: /src/opendal/core/services/upyun/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - extension
    - Request::put
    - Ok
    - build_abs_path
    - DeleteInput::header
    - ServiceOperation
    - DeleteInput::body
    - UpyunCore::sign
    - DeleteInput::extension
    linkageType: ''
    returnType: Result
    signature: 'pub fn upload_part(&self,path: &str,upload_id: &str,part_number: usize,size:
      u64,body: Buffer,) -> Result<Request<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/upyun/src/core.rs:408,1
    - Dst: Request::put
      Src: /src/opendal/core/services/upyun/src/core.rs:416,1
    - Dst: DeleteInput::header
      Src: /src/opendal/core/services/upyun/src/core.rs:418,1
    - Dst: DeleteInput::header
      Src: /src/opendal/core/services/upyun/src/core.rs:420,1
    - Dst: DeleteInput::extension
      Src: /src/opendal/core/services/upyun/src/core.rs:422,1
    - Dst: extension
      Src: /src/opendal/core/services/upyun/src/core.rs:422,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/upyun/src/core.rs:424,1
    - Dst: DeleteInput::body
      Src: /src/opendal/core/services/upyun/src/core.rs:426,1
    - Dst: Buffer::new
      Src: /src/opendal/core/services/upyun/src/core.rs:426,1
    - Dst: map_err
      Src: /src/opendal/core/services/upyun/src/core.rs:426,1
    - Dst: UpyunCore::sign
      Src: /src/opendal/core/services/upyun/src/core.rs:428,1
    - Dst: UpyunCore::send
      Src: /src/opendal/core/services/upyun/src/core.rs:430,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 31
    argCount: 3
    argNames:
    - ctx
    - path
    - upload_id
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    constantsTouched: []
    func_position:
      end: 431
      start: 402
    functionDepth: 35
    functionLinenumber: 402
    functionLinenumberEnd: 431
    functionName: UpyunCore::complete_multipart_upload
    functionSourceFile: /src/opendal/core/services/upyun/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - extension
    - Buffer::new
    - Request::put
    - UpyunCore::send
    - build_abs_path
    - DeleteInput::header
    - ServiceOperation
    - DeleteInput::body
    - UpyunCore::sign
    - DeleteInput::extension
    linkageType: ''
    returnType: Result
    signature: 'pub async fn complete_multipart_upload(&self,ctx: &OperationContext,path:
      &str,upload_id: &str,) -> Result<Response<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/upyun/src/core.rs:440,1
    - Dst: Request::get
      Src: /src/opendal/core/services/upyun/src/core.rs:448,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/upyun/src/core.rs:448,1
    - Dst: Option::header
      Src: /src/opendal/core/services/upyun/src/core.rs:450,1
    - Dst: is_empty
      Src: /src/opendal/core/services/upyun/src/core.rs:452,1
    - Dst: Option::header
      Src: /src/opendal/core/services/upyun/src/core.rs:453,1
    - Dst: Option::header
      Src: /src/opendal/core/services/upyun/src/core.rs:460,1
    - Dst: Option::extension
      Src: /src/opendal/core/services/upyun/src/core.rs:463,1
    - Dst: extension
      Src: /src/opendal/core/services/upyun/src/core.rs:463,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/upyun/src/core.rs:465,1
    - Dst: Option::body
      Src: /src/opendal/core/services/upyun/src/core.rs:468,1
    - Dst: Buffer::new
      Src: /src/opendal/core/services/upyun/src/core.rs:468,1
    - Dst: map_err
      Src: /src/opendal/core/services/upyun/src/core.rs:468,1
    - Dst: UpyunCore::sign
      Src: /src/opendal/core/services/upyun/src/core.rs:470,1
    - Dst: UpyunCore::send
      Src: /src/opendal/core/services/upyun/src/core.rs:472,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 49
    argCount: 4
    argNames:
    - ctx
    - path
    - iter
    - limit
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    - Option<usize>
    constantsTouched: []
    func_position:
      end: 473
      start: 433
    functionDepth: 35
    functionLinenumber: 433
    functionLinenumberEnd: 473
    functionName: UpyunCore::list_objects
    functionSourceFile: /src/opendal/core/services/upyun/src/core.rs
    functionUses: 0
    functionsReached:
    - Result::clone
    - extension
    - Request::get
    - Buffer::new
    - map_err
    - UpyunCore::send
    - build_abs_path
    - is_empty
    - Option::extension
    - ServiceOperation
    - UpyunCore::sign
    - Option::body
    - Option::header
    linkageType: ''
    returnType: Result
    signature: 'pub async fn list_objects(&self,ctx: &OperationContext,path: &str,iter:
      &str,limit: Option<usize>,) -> Result<Response<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::into_iter
      Src: /src/opendal/core/services/upyun/src/core.rs:488,1
    - Dst: filter
      Src: /src/opendal/core/services/upyun/src/core.rs:488,1
    - Dst: is_empty
      Src: /src/opendal/core/services/upyun/src/core.rs:490,1
    - Dst: "into_iter()\n            .filter(|s| !s.is_empty())\n            .collect::<Vec<&str>>"
      Src: /src/opendal/core/services/upyun/src/core.rs:488,1
    - Dst: join
      Src: /src/opendal/core/services/upyun/src/core.rs:488,1
    - Dst: HmacSha1::new_from_slice
      Src: /src/opendal/core/services/upyun/src/core.rs:494,1
    - Dst: format_md5
      Src: /src/opendal/core/services/upyun/src/core.rs:494,1
    - Dst: as_bytes
      Src: /src/opendal/core/services/upyun/src/core.rs:494,1
    - Dst: String::as_bytes
      Src: /src/opendal/core/services/upyun/src/core.rs:494,1
    - Dst: expect
      Src: /src/opendal/core/services/upyun/src/core.rs:494,1
    - Dst: update
      Src: /src/opendal/core/services/upyun/src/core.rs:496,1
    - Dst: Result::as_bytes
      Src: /src/opendal/core/services/upyun/src/core.rs:496,1
    - Dst: finalize
      Src: /src/opendal/core/services/upyun/src/core.rs:497,1
    - Dst: into_bytes
      Src: /src/opendal/core/services/upyun/src/core.rs:497,1
    - Dst: encode
      Src: /src/opendal/core/services/upyun/src/core.rs:499,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 32
    argCount: 3
    argNames:
    - date
    - method
    - uri
    argTypes:
    - '&str'
    - '&str'
    - '&str'
    constantsTouched: []
    func_position:
      end: 501
      start: 485
    functionDepth: 33
    functionLinenumber: 485
    functionLinenumberEnd: 501
    functionName: UpyunSigner::authorization
    functionSourceFile: /src/opendal/core/services/upyun/src/core.rs
    functionUses: 0
    functionsReached:
    - filter
    - HmacSha1::new_from_slice
    - as_bytes
    - join
    - Result::into_iter
    - expect
    - finalize
    - encode
    - update
    - is_empty
    - into_bytes
    - format_md5
    - String::as_bytes
    - Result::as_bytes
    - "into_iter()\n            .filter(|s| !s.is_empty())\n            .collect::<Vec<&str>>"
    linkageType: ''
    returnType: String
    signature: 'pub fn authorization(&self, date: &str, method: &str, uri: &str) ->
      String'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Metadata::new
      Src: /src/opendal/core/services/yandex-disk/src/core.rs:338,1
    - Dst: Result::set_last_modified
      Src: /src/opendal/core/services/yandex-disk/src/core.rs:340,1
    - Dst: modified.parse::<Timestamp>
      Src: /src/opendal/core/services/yandex-disk/src/core.rs:340,1
    - Dst: Result::set_content_md5
      Src: /src/opendal/core/services/yandex-disk/src/core.rs:343,1
    - Dst: Result::set_content_type
      Src: /src/opendal/core/services/yandex-disk/src/core.rs:347,1
    - Dst: Result::set_content_length
      Src: /src/opendal/core/services/yandex-disk/src/core.rs:351,1
    - Dst: Ok
      Src: /src/opendal/core/services/yandex-disk/src/core.rs:354,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 32
    argCount: 1
    argNames:
    - mf
    argTypes:
    - MetainformationResponse
    constantsTouched: []
    func_position:
      end: 355
      start: 331
    functionDepth: 3
    functionLinenumber: 331
    functionLinenumberEnd: 355
    functionName: parse_info
    functionSourceFile: /src/opendal/core/services/yandex-disk/src/core.rs
    functionUses: 3
    functionsReached:
    - Metadata::new
    - Ok
    - Result::set_last_modified
    - Result::set_content_length
    - Result::set_content_type
    - Result::set_content_md5
    - modified.parse::<Timestamp>
    linkageType: ''
    returnType: Result
    signature: 'pub(super) fn parse_info(mf: MetainformationResponse) -> Result<Metadata>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: md5::Md5::new
      Src: /src/opendal/core/services/upyun/src/core.rs:542,1
    - Dst: Self::update
      Src: /src/opendal/core/services/upyun/src/core.rs:543,1
    - Dst: format_digest_hex
      Src: /src/opendal/core/services/upyun/src/core.rs:545,1
    - Dst: Self::finalize
      Src: /src/opendal/core/services/upyun/src/core.rs:545,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - bs
    argTypes:
    - '&[u8]'
    constantsTouched: []
    func_position:
      end: 546
      start: 541
    functionDepth: 37
    functionLinenumber: 541
    functionLinenumberEnd: 546
    functionName: format_md5
    functionSourceFile: /src/opendal/core/services/upyun/src/core.rs
    functionUses: 1
    functionsReached:
    - format_digest_hex
    - md5::Md5::new
    - Self::finalize
    - Self::update
    linkageType: ''
    returnType: String
    signature: 'pub fn format_md5(bs: &[u8]) -> String'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 4
    argNames:
    - core
    - ctx
    - op
    - path
    argTypes:
    - Arc<UpyunCore>
    - OperationContext
    - OpWrite
    - String
    constantsTouched: []
    func_position:
      end: 45
      start: 38
    functionDepth: 0
    functionLinenumber: 38
    functionLinenumberEnd: 45
    functionName: UpyunWriter::new
    functionSourceFile: /src/opendal/core/services/upyun/src/writer.rs
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(core: Arc<UpyunCore>, ctx: OperationContext, op: OpWrite,
      path: String) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: upload
      Src: /src/opendal/core/services/upyun/src/writer.rs:50,1
    - Dst: Some
      Src: /src/opendal/core/services/upyun/src/writer.rs:50,1
    - Dst: send
      Src: /src/opendal/core/services/upyun/src/writer.rs:52,1
    - Dst: status
      Src: /src/opendal/core/services/upyun/src/writer.rs:54,1
    - Dst: Ok
      Src: /src/opendal/core/services/upyun/src/writer.rs:57,1
    - Dst: Metadata::default
      Src: /src/opendal/core/services/upyun/src/writer.rs:57,1
    - Dst: Err
      Src: /src/opendal/core/services/upyun/src/writer.rs:58,1
    - Dst: super::core::parse_error
      Src: /src/opendal/core/services/upyun/src/writer.rs:58,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 24
    argCount: 2
    argNames:
    - size
    - body
    argTypes:
    - u64
    - Buffer
    constantsTouched: []
    func_position:
      end: 60
      start: 49
    functionDepth: 37
    functionLinenumber: 49
    functionLinenumberEnd: 60
    functionName: UpyunWriter::write_once
    functionSourceFile: /src/opendal/core/services/upyun/src/writer.rs
    functionUses: 0
    functionsReached:
    - Metadata::default
    - status
    - Ok
    - Some
    - Err
    - send
    - super::core::parse_error
    - upload
    linkageType: ''
    returnType: Result
    signature: 'async fn write_once(&self, size: u64, body: Buffer) -> Result<Metadata>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: initiate_multipart_upload
      Src: /src/opendal/core/services/upyun/src/writer.rs:63,1
    - Dst: status
      Src: /src/opendal/core/services/upyun/src/writer.rs:68,1
    - Dst: parse_header_to_str
      Src: /src/opendal/core/services/upyun/src/writer.rs:73,1
    - Dst: headers
      Src: /src/opendal/core/services/upyun/src/writer.rs:73,1
    - Dst: ok_or
      Src: /src/opendal/core/services/upyun/src/writer.rs:73,1
    - Dst: Error::new
      Src: /src/opendal/core/services/upyun/src/writer.rs:73,1
    - Dst: Ok
      Src: /src/opendal/core/services/upyun/src/writer.rs:78,1
    - Dst: Result::to_string
      Src: /src/opendal/core/services/upyun/src/writer.rs:78,1
    - Dst: Err
      Src: /src/opendal/core/services/upyun/src/writer.rs:80,1
    - Dst: super::core::parse_error
      Src: /src/opendal/core/services/upyun/src/writer.rs:80,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 28
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 82
      start: 62
    functionDepth: 33
    functionLinenumber: 62
    functionLinenumberEnd: 82
    functionName: UpyunWriter::initiate_part
    functionSourceFile: /src/opendal/core/services/upyun/src/writer.rs
    functionUses: 0
    functionsReached:
    - status
    - Ok
    - Result::to_string
    - parse_header_to_str
    - initiate_multipart_upload
    - Error::new
    - Err
    - headers
    - super::core::parse_error
    - ok_or
    linkageType: ''
    returnType: Result
    signature: async fn initiate_part(&self) -> Result<String>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: upload_part
      Src: /src/opendal/core/services/upyun/src/writer.rs:91,1
    - Dst: send
      Src: /src/opendal/core/services/upyun/src/writer.rs:95,1
    - Dst: status
      Src: /src/opendal/core/services/upyun/src/writer.rs:97,1
    - Dst: Ok
      Src: /src/opendal/core/services/upyun/src/writer.rs:100,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/upyun/src/writer.rs:102,1
    - Dst: Err
      Src: /src/opendal/core/services/upyun/src/writer.rs:106,1
    - Dst: super::core::parse_error
      Src: /src/opendal/core/services/upyun/src/writer.rs:106,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 23
    argCount: 4
    argNames:
    - upload_id
    - part_number
    - size
    - body
    argTypes:
    - '&str'
    - usize
    - u64
    - Buffer
    constantsTouched: []
    func_position:
      end: 108
      start: 84
    functionDepth: 36
    functionLinenumber: 84
    functionLinenumberEnd: 108
    functionName: UpyunWriter::write_part
    functionSourceFile: /src/opendal/core/services/upyun/src/writer.rs
    functionUses: 0
    functionsReached:
    - status
    - Ok
    - Err
    - '&str::to_string'
    - upload_part
    - send
    - super::core::parse_error
    linkageType: ''
    returnType: Result
    signature: 'async fn write_part(&self,upload_id: &str,part_number: usize,size:
      u64,body: Buffer,) -> Result<oio::MultipartPart>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: complete_multipart_upload
      Src: /src/opendal/core/services/upyun/src/writer.rs:115,1
    - Dst: status
      Src: /src/opendal/core/services/upyun/src/writer.rs:120,1
    - Dst: Ok
      Src: /src/opendal/core/services/upyun/src/writer.rs:123,1
    - Dst: Metadata::default
      Src: /src/opendal/core/services/upyun/src/writer.rs:123,1
    - Dst: Err
      Src: /src/opendal/core/services/upyun/src/writer.rs:124,1
    - Dst: super::core::parse_error
      Src: /src/opendal/core/services/upyun/src/writer.rs:124,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 2
    argNames:
    - upload_id
    - _parts
    argTypes:
    - '&str'
    - '&[oio::MultipartPart]'
    constantsTouched: []
    func_position:
      end: 126
      start: 110
    functionDepth: 33
    functionLinenumber: 110
    functionLinenumberEnd: 126
    functionName: UpyunWriter::complete_part
    functionSourceFile: /src/opendal/core/services/upyun/src/writer.rs
    functionUses: 0
    functionsReached:
    - Metadata::default
    - status
    - Ok
    - Err
    - complete_multipart_upload
    - super::core::parse_error
    linkageType: ''
    returnType: Result
    signature: 'async fn complete_part(&self,upload_id: &str,_parts: &[oio::MultipartPart],)
      -> Result<Metadata>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/core/services/upyun/src/writer.rs:129,1
    - Dst: Error::new
      Src: /src/opendal/core/services/upyun/src/writer.rs:129,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - _upload_id
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 133
      start: 128
    functionDepth: 36
    functionLinenumber: 128
    functionLinenumberEnd: 133
    functionName: UpyunWriter::abort_part
    functionSourceFile: /src/opendal/core/services/upyun/src/writer.rs
    functionUses: 0
    functionsReached:
    - Error::new
    - Err
    linkageType: ''
    returnType: Result
    signature: 'async fn abort_part(&self, _upload_id: &str) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: register::<Upyun>
      Src: /src/opendal/core/services/upyun/src/lib.rs:39,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - registry
    argTypes:
    - '&opendal_core::OperatorRegistry'
    constantsTouched: []
    func_position:
      end: 40
      start: 38
    functionDepth: 0
    functionLinenumber: 38
    functionLinenumberEnd: 40
    functionName: register_upyun_service
    functionSourceFile: /src/opendal/core/services/upyun/src/lib.rs
    functionUses: 1
    functionsReached:
    - register::<Upyun>
    linkageType: ''
    returnType: void
    signature: 'pub fn register_upyun_service(registry: &opendal_core::OperatorRegistry)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::debug_struct
      Src: /src/opendal/core/services/upyun/src/backend.rs:45,1
    - Dst: field
      Src: /src/opendal/core/services/upyun/src/backend.rs:45,1
    - Dst: finish_non_exhaustive
      Src: /src/opendal/core/services/upyun/src/backend.rs:45,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - f
    argTypes:
    - '&mut std::fmt::Formatter<''_>'
    constantsTouched: []
    func_position:
      end: 48
      start: 44
    functionDepth: 5
    functionLinenumber: 44
    functionLinenumberEnd: 48
    functionName: UpyunBuilder::fmt
    functionSourceFile: /src/opendal/core/services/upyun/src/backend.rs
    functionUses: 0
    functionsReached:
    - field
    - Result::debug_struct
    - finish_non_exhaustive
    linkageType: ''
    returnType: std::fmt::Result
    signature: 'fn fmt(&self, f: &mut std::fmt::Formatter<''_>) -> std::fmt::Result'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::is_empty
      Src: /src/opendal/core/services/upyun/src/backend.rs:56,1
    - Dst: Some
      Src: /src/opendal/core/services/upyun/src/backend.rs:59,1
    - Dst: Result::to_string
      Src: /src/opendal/core/services/upyun/src/backend.rs:59,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - root
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 63
      start: 55
    functionDepth: 4
    functionLinenumber: 55
    functionLinenumberEnd: 63
    functionName: UpyunBuilder::root
    functionSourceFile: /src/opendal/core/services/upyun/src/backend.rs
    functionUses: 0
    functionsReached:
    - Result::is_empty
    - Result::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn root(mut self, root: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: usize::to_string
      Src: /src/opendal/core/services/upyun/src/backend.rs:69,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - bucket
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 72
      start: 68
    functionDepth: 2
    functionLinenumber: 68
    functionLinenumberEnd: 72
    functionName: UpyunBuilder::bucket
    functionSourceFile: /src/opendal/core/services/upyun/src/backend.rs
    functionUses: 0
    functionsReached:
    - usize::to_string
    linkageType: ''
    returnType: Self
    signature: 'pub fn bucket(mut self, bucket: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::is_empty
      Src: /src/opendal/core/services/upyun/src/backend.rs:78,1
    - Dst: Some
      Src: /src/opendal/core/services/upyun/src/backend.rs:81,1
    - Dst: Result::to_string
      Src: /src/opendal/core/services/upyun/src/backend.rs:81,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - operator
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 85
      start: 77
    functionDepth: 4
    functionLinenumber: 77
    functionLinenumberEnd: 85
    functionName: UpyunBuilder::operator
    functionSourceFile: /src/opendal/core/services/upyun/src/backend.rs
    functionUses: 0
    functionsReached:
    - Result::is_empty
    - Result::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn operator(mut self, operator: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Option::is_empty
      Src: /src/opendal/core/services/upyun/src/backend.rs:91,1
    - Dst: Some
      Src: /src/opendal/core/services/upyun/src/backend.rs:94,1
    - Dst: Option::to_string
      Src: /src/opendal/core/services/upyun/src/backend.rs:94,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - password
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 98
      start: 90
    functionDepth: 4
    functionLinenumber: 90
    functionLinenumberEnd: 98
    functionName: UpyunBuilder::password
    functionSourceFile: /src/opendal/core/services/upyun/src/backend.rs
    functionUses: 0
    functionsReached:
    - Option::to_string
    - Option::is_empty
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn password(mut self, password: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: normalize_root
      Src: /src/opendal/core/services/upyun/src/backend.rs:108,1
    - Dst: clone
      Src: /src/opendal/core/services/upyun/src/backend.rs:108,1
    - Dst: unwrap_or_default
      Src: /src/opendal/core/services/upyun/src/backend.rs:108,1
    - Dst: is_empty
      Src: /src/opendal/core/services/upyun/src/backend.rs:112,1
    - Dst: Err
      Src: /src/opendal/core/services/upyun/src/backend.rs:113,1
    - Dst: Error::new
      Src: /src/opendal/core/services/upyun/src/backend.rs:113,1
    - Dst: Self::with_operation
      Src: /src/opendal/core/services/upyun/src/backend.rs:113,1
    - Dst: Self::with_context
      Src: /src/opendal/core/services/upyun/src/backend.rs:113,1
    - Dst: Ok
      Src: /src/opendal/core/services/upyun/src/backend.rs:121,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/upyun/src/backend.rs:121,1
    - Dst: Err
      Src: /src/opendal/core/services/upyun/src/backend.rs:122,1
    - Dst: Error::new
      Src: /src/opendal/core/services/upyun/src/backend.rs:122,1
    - Dst: Self::with_operation
      Src: /src/opendal/core/services/upyun/src/backend.rs:122,1
    - Dst: Self::with_context
      Src: /src/opendal/core/services/upyun/src/backend.rs:122,1
    - Dst: Ok
      Src: /src/opendal/core/services/upyun/src/backend.rs:128,1
    - Dst: Option::clone
      Src: /src/opendal/core/services/upyun/src/backend.rs:128,1
    - Dst: Err
      Src: /src/opendal/core/services/upyun/src/backend.rs:129,1
    - Dst: Error::new
      Src: /src/opendal/core/services/upyun/src/backend.rs:129,1
    - Dst: Self::with_operation
      Src: /src/opendal/core/services/upyun/src/backend.rs:129,1
    - Dst: Self::with_context
      Src: /src/opendal/core/services/upyun/src/backend.rs:129,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/upyun/src/backend.rs:135,1
    - Dst: Option::clone
      Src: /src/opendal/core/services/upyun/src/backend.rs:136,1
    - Dst: Ok
      Src: /src/opendal/core/services/upyun/src/backend.rs:139,1
    - Dst: Arc::new
      Src: /src/opendal/core/services/upyun/src/backend.rs:140,1
    - Dst: ServiceInfo::new
      Src: /src/opendal/core/services/upyun/src/backend.rs:141,1
    - Dst: Some
      Src: /src/opendal/core/services/upyun/src/backend.rs:157,1
    - Dst: Some
      Src: /src/opendal/core/services/upyun/src/backend.rs:158,1
    - Dst: Default::default
      Src: /src/opendal/core/services/upyun/src/backend.rs:169,1
    - Dst: clone
      Src: /src/opendal/core/services/upyun/src/backend.rs:173,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 75
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 177
      start: 105
    functionDepth: 34
    functionLinenumber: 105
    functionLinenumberEnd: 177
    functionName: UpyunBuilder::build
    functionSourceFile: /src/opendal/core/services/upyun/src/backend.rs
    functionUses: 0
    functionsReached:
    - Result::clone
    - ServiceInfo::new
    - Ok
    - Arc::new
    - Default::default
    - Option::clone
    - clone
    - normalize_root
    - Err
    - is_empty
    - Error::new
    - Some
    - Self::with_operation
    - Self::with_context
    - unwrap_or_default
    linkageType: ''
    returnType: Result
    signature: fn build(self) -> Result<impl Service>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: clone
      Src: /src/opendal/core/services/upyun/src/backend.rs:194,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 195
      start: 193
    functionDepth: 2
    functionLinenumber: 193
    functionLinenumberEnd: 195
    functionName: UpyunBackend::info
    functionSourceFile: /src/opendal/core/services/upyun/src/backend.rs
    functionUses: 0
    functionsReached:
    - clone
    linkageType: ''
    returnType: ServiceInfo
    signature: fn info(&self) -> ServiceInfo
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 199
      start: 197
    functionDepth: 0
    functionLinenumber: 197
    functionLinenumberEnd: 199
    functionName: UpyunBackend::capability
    functionSourceFile: /src/opendal/core/services/upyun/src/backend.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Capability
    signature: fn capability(&self) -> Capability
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: create_dir
      Src: /src/opendal/core/services/upyun/src/backend.rs:207,1
    - Dst: status
      Src: /src/opendal/core/services/upyun/src/backend.rs:209,1
    - Dst: Ok
      Src: /src/opendal/core/services/upyun/src/backend.rs:212,1
    - Dst: RpCreateDir::default
      Src: /src/opendal/core/services/upyun/src/backend.rs:212,1
    - Dst: Err
      Src: /src/opendal/core/services/upyun/src/backend.rs:213,1
    - Dst: super::core::parse_error
      Src: /src/opendal/core/services/upyun/src/backend.rs:213,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 3
    argNames:
    - ctx
    - path
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpCreateDir
    constantsTouched: []
    func_position:
      end: 215
      start: 201
    functionDepth: 35
    functionLinenumber: 201
    functionLinenumberEnd: 215
    functionName: UpyunBackend::create_dir
    functionSourceFile: /src/opendal/core/services/upyun/src/backend.rs
    functionUses: 0
    functionsReached:
    - status
    - RpCreateDir::default
    - Ok
    - Err
    - create_dir
    - super::core::parse_error
    linkageType: ''
    returnType: Result
    signature: 'async fn create_dir(&self,ctx: &OperationContext,path: &str,_: OpCreateDir,)
      -> Result<RpCreateDir>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: info
      Src: /src/opendal/core/services/upyun/src/backend.rs:218,1
    - Dst: status
      Src: /src/opendal/core/services/upyun/src/backend.rs:220,1
    - Dst: parse_info
      Src: /src/opendal/core/services/upyun/src/backend.rs:223,1
    - Dst: headers
      Src: /src/opendal/core/services/upyun/src/backend.rs:223,1
    - Dst: Result::map
      Src: /src/opendal/core/services/upyun/src/backend.rs:223,1
    - Dst: Err
      Src: /src/opendal/core/services/upyun/src/backend.rs:224,1
    - Dst: super::core::parse_error
      Src: /src/opendal/core/services/upyun/src/backend.rs:224,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 3
    argNames:
    - ctx
    - path
    - _args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpStat
    constantsTouched: []
    func_position:
      end: 226
      start: 217
    functionDepth: 38
    functionLinenumber: 217
    functionLinenumberEnd: 226
    functionName: UpyunBackend::stat
    functionSourceFile: /src/opendal/core/services/upyun/src/backend.rs
    functionUses: 0
    functionsReached:
    - info
    - status
    - Err
    - headers
    - Result::map
    - parse_info
    - super::core::parse_error
    linkageType: ''
    returnType: Result
    signature: 'async fn stat(&self, ctx: &OperationContext, path: &str, _args: OpStat)
      -> Result<RpStat>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/core/services/upyun/src/backend.rs:229,1
    - Dst: oio::StreamReader::new
      Src: /src/opendal/core/services/upyun/src/backend.rs:229,1
    - Dst: UpyunReader::new
      Src: /src/opendal/core/services/upyun/src/backend.rs:229,1
    - Dst: UpyunBackend::clone
      Src: /src/opendal/core/services/upyun/src/backend.rs:230,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/upyun/src/backend.rs:231,1
    - Dst: Ok
      Src: /src/opendal/core/services/upyun/src/backend.rs:237,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpRead
    constantsTouched: []
    func_position:
      end: 238
      start: 227
    functionDepth: 3
    functionLinenumber: 227
    functionLinenumberEnd: 238
    functionName: UpyunBackend::read
    functionSourceFile: /src/opendal/core/services/upyun/src/backend.rs
    functionUses: 0
    functionsReached:
    - Result::clone
    - UpyunBackend::clone
    - Ok
    - oio::StreamReader::new
    - UpyunReader::new
    linkageType: ''
    returnType: Result
    signature: 'fn read(&self, ctx: &OperationContext, path: &str, args: OpRead) ->
      Result<Self::Reader>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: OpStat::concurrent
      Src: /src/opendal/core/services/upyun/src/backend.rs:242,1
    - Dst: UpyunWriter::new
      Src: /src/opendal/core/services/upyun/src/backend.rs:243,1
    - Dst: clone
      Src: /src/opendal/core/services/upyun/src/backend.rs:243,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/upyun/src/backend.rs:243,1
    - Dst: to_string
      Src: /src/opendal/core/services/upyun/src/backend.rs:243,1
    - Dst: oio::MultipartWriter::new
      Src: /src/opendal/core/services/upyun/src/backend.rs:245,1
    - Dst: Result::executor
      Src: /src/opendal/core/services/upyun/src/backend.rs:245,1
    - Dst: Self::clone
      Src: /src/opendal/core/services/upyun/src/backend.rs:245,1
    - Dst: Ok
      Src: /src/opendal/core/services/upyun/src/backend.rs:247,1
    - Dst: Ok
      Src: /src/opendal/core/services/upyun/src/backend.rs:250,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 18
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpWrite
    constantsTouched: []
    func_position:
      end: 251
      start: 240
    functionDepth: 37
    functionLinenumber: 240
    functionLinenumberEnd: 251
    functionName: UpyunBackend::write
    functionSourceFile: /src/opendal/core/services/upyun/src/backend.rs
    functionUses: 0
    functionsReached:
    - Result::clone
    - to_string
    - oio::MultipartWriter::new
    - Ok
    - UpyunWriter::new
    - Result::executor
    - clone
    - OpStat::concurrent
    - Self::clone
    linkageType: ''
    returnType: Result
    signature: 'fn write(&self, ctx: &OperationContext, path: &str, args: OpWrite)
      -> Result<Self::Writer>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/core/services/upyun/src/backend.rs:255,1
    - Dst: oio::OneShotDeleter::new
      Src: /src/opendal/core/services/upyun/src/backend.rs:255,1
    - Dst: UpyunDeleter::new
      Src: /src/opendal/core/services/upyun/src/backend.rs:255,1
    - Dst: clone
      Src: /src/opendal/core/services/upyun/src/backend.rs:256,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/upyun/src/backend.rs:257,1
    - Dst: Ok
      Src: /src/opendal/core/services/upyun/src/backend.rs:261,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - '&OperationContext'
    constantsTouched: []
    func_position:
      end: 262
      start: 253
    functionDepth: 2
    functionLinenumber: 253
    functionLinenumberEnd: 262
    functionName: UpyunBackend::delete
    functionSourceFile: /src/opendal/core/services/upyun/src/backend.rs
    functionUses: 0
    functionsReached:
    - oio::OneShotDeleter::new
    - Result::clone
    - Ok
    - clone
    - UpyunDeleter::new
    linkageType: ''
    returnType: Result
    signature: 'fn delete(&self, ctx: &OperationContext) -> Result<Self::Deleter>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: UpyunLister::new
      Src: /src/opendal/core/services/upyun/src/backend.rs:266,1
    - Dst: clone
      Src: /src/opendal/core/services/upyun/src/backend.rs:266,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/upyun/src/backend.rs:266,1
    - Dst: OpStat::limit
      Src: /src/opendal/core/services/upyun/src/backend.rs:266,1
    - Dst: Ok
      Src: /src/opendal/core/services/upyun/src/backend.rs:267,1
    - Dst: oio::PageLister::new
      Src: /src/opendal/core/services/upyun/src/backend.rs:267,1
    - Dst: Ok
      Src: /src/opendal/core/services/upyun/src/backend.rs:270,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpList
    constantsTouched: []
    func_position:
      end: 271
      start: 264
    functionDepth: 36
    functionLinenumber: 264
    functionLinenumberEnd: 271
    functionName: UpyunBackend::list
    functionSourceFile: /src/opendal/core/services/upyun/src/backend.rs
    functionUses: 0
    functionsReached:
    - Result::clone
    - Ok
    - UpyunLister::new
    - clone
    - oio::PageLister::new
    - OpStat::limit
    linkageType: ''
    returnType: Result
    signature: 'fn list(&self, ctx: &OperationContext, path: &str, args: OpList) ->
      Result<Self::Lister>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: clone
      Src: /src/opendal/core/services/upyun/src/backend.rs:281,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/upyun/src/backend.rs:282,1
    - Dst: Result::to_string
      Src: /src/opendal/core/services/upyun/src/backend.rs:283,1
    - Dst: Result::to_string
      Src: /src/opendal/core/services/upyun/src/backend.rs:284,1
    - Dst: Ok
      Src: /src/opendal/core/services/upyun/src/backend.rs:286,1
    - Dst: oio::OneShotCopier::new
      Src: /src/opendal/core/services/upyun/src/backend.rs:286,1
    - Dst: CompfsCore::copy
      Src: /src/opendal/core/services/upyun/src/backend.rs:287,1
    - Dst: status
      Src: /src/opendal/core/services/upyun/src/backend.rs:288,1
    - Dst: Ok
      Src: /src/opendal/core/services/upyun/src/backend.rs:291,1
    - Dst: Metadata::default
      Src: /src/opendal/core/services/upyun/src/backend.rs:291,1
    - Dst: Err
      Src: /src/opendal/core/services/upyun/src/backend.rs:292,1
    - Dst: super::core::parse_error
      Src: /src/opendal/core/services/upyun/src/backend.rs:292,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 26
    argCount: 5
    argNames:
    - ctx
    - from
    - to
    - _args
    - _opts
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    - OpCopy
    - OpCopier
    constantsTouched: []
    func_position:
      end: 295
      start: 273
    functionDepth: 34
    functionLinenumber: 273
    functionLinenumberEnd: 295
    functionName: UpyunBackend::copy
    functionSourceFile: /src/opendal/core/services/upyun/src/backend.rs
    functionUses: 0
    functionsReached:
    - Result::clone
    - Metadata::default
    - Result::to_string
    - Ok
    - status
    - clone
    - Err
    - CompfsCore::copy
    - super::core::parse_error
    - oio::OneShotCopier::new
    linkageType: ''
    returnType: Result
    signature: 'fn copy(&self,ctx: &OperationContext,from: &str,to: &str,_args: OpCopy,_opts:
      OpCopier,) -> Result<Self::Copier>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: move_object
      Src: /src/opendal/core/services/upyun/src/backend.rs:304,1
    - Dst: status
      Src: /src/opendal/core/services/upyun/src/backend.rs:306,1
    - Dst: Ok
      Src: /src/opendal/core/services/upyun/src/backend.rs:309,1
    - Dst: RpRename::default
      Src: /src/opendal/core/services/upyun/src/backend.rs:309,1
    - Dst: Err
      Src: /src/opendal/core/services/upyun/src/backend.rs:310,1
    - Dst: super::core::parse_error
      Src: /src/opendal/core/services/upyun/src/backend.rs:310,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 4
    argNames:
    - ctx
    - from
    - to
    - _args
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    - OpRename
    constantsTouched: []
    func_position:
      end: 312
      start: 297
    functionDepth: 36
    functionLinenumber: 297
    functionLinenumberEnd: 312
    functionName: UpyunBackend::rename
    functionSourceFile: /src/opendal/core/services/upyun/src/backend.rs
    functionUses: 0
    functionsReached:
    - status
    - Ok
    - move_object
    - Err
    - RpRename::default
    - super::core::parse_error
    linkageType: ''
    returnType: Result
    signature: 'async fn rename(&self,ctx: &OperationContext,from: &str,to: &str,_args:
      OpRename,) -> Result<RpRename>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/core/services/upyun/src/backend.rs:320,1
    - Dst: Error::new
      Src: /src/opendal/core/services/upyun/src/backend.rs:320,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - _ctx
    - _path
    - _args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpPresign
    constantsTouched: []
    func_position:
      end: 324
      start: 314
    functionDepth: 36
    functionLinenumber: 314
    functionLinenumberEnd: 324
    functionName: UpyunBackend::presign
    functionSourceFile: /src/opendal/core/services/upyun/src/backend.rs
    functionUses: 0
    functionsReached:
    - Error::new
    - Err
    linkageType: ''
    returnType: Result
    signature: 'async fn presign(&self,_ctx: &OperationContext,_path: &str,_args:
      OpPresign,) -> Result<RpPresign>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::debug_struct
      Src: /src/opendal/core/services/dbfs/src/config.rs:38,1
    - Dst: field
      Src: /src/opendal/core/services/dbfs/src/config.rs:38,1
    - Dst: field
      Src: /src/opendal/core/services/dbfs/src/config.rs:38,1
    - Dst: finish_non_exhaustive
      Src: /src/opendal/core/services/dbfs/src/config.rs:38,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 1
    argNames:
    - f
    argTypes:
    - '&mut std::fmt::Formatter<''_>'
    constantsTouched: []
    func_position:
      end: 42
      start: 37
    functionDepth: 5
    functionLinenumber: 37
    functionLinenumberEnd: 42
    functionName: DbfsConfig::fmt
    functionSourceFile: /src/opendal/core/services/dbfs/src/config.rs
    functionUses: 0
    functionsReached:
    - field
    - Result::debug_struct
    - finish_non_exhaustive
    linkageType: ''
    returnType: std::fmt::Result
    signature: 'fn fmt(&self, f: &mut std::fmt::Formatter<''_>) -> std::fmt::Result'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::options
      Src: /src/opendal/core/services/dbfs/src/config.rs:49,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/dbfs/src/config.rs:49,1
    - Dst: Result::authority
      Src: /src/opendal/core/services/dbfs/src/config.rs:50,1
    - Dst: Result::insert
      Src: /src/opendal/core/services/dbfs/src/config.rs:51,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/dbfs/src/config.rs:51,1
    - Dst: Result::root
      Src: /src/opendal/core/services/dbfs/src/config.rs:54,1
    - Dst: Result::is_empty
      Src: /src/opendal/core/services/dbfs/src/config.rs:55,1
    - Dst: Result::insert
      Src: /src/opendal/core/services/dbfs/src/config.rs:57,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/dbfs/src/config.rs:57,1
    - Dst: Result::to_string
      Src: /src/opendal/core/services/dbfs/src/config.rs:57,1
    - Dst: Self::from_iter
      Src: /src/opendal/core/services/dbfs/src/config.rs:60,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 28
    argCount: 1
    argNames:
    - uri
    argTypes:
    - '&opendal_core::OperatorUri'
    constantsTouched: []
    func_position:
      end: 61
      start: 48
    functionDepth: 35
    functionLinenumber: 48
    functionLinenumberEnd: 61
    functionName: DbfsConfig::from_uri
    functionSourceFile: /src/opendal/core/services/dbfs/src/config.rs
    functionUses: 0
    functionsReached:
    - Result::clone
    - Self::from_iter
    - Result::to_string
    - Result::insert
    - Result::is_empty
    - '&str::to_string'
    - Result::root
    - Result::authority
    - Result::options
    linkageType: ''
    returnType: opendal_core::Result
    signature: 'fn from_uri(uri: &opendal_core::OperatorUri) -> opendal_core::Result<Self>'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 65
      start: 63
    functionDepth: 0
    functionLinenumber: 63
    functionLinenumberEnd: 65
    functionName: DbfsConfig::into_builder
    functionSourceFile: /src/opendal/core/services/dbfs/src/config.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Self::Builder
    signature: fn into_builder(self) -> Self::Builder
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - core
    - ctx
    argTypes:
    - Arc<DbfsCore>
    - OperationContext
    constantsTouched: []
    func_position:
      end: 35
      start: 33
    functionDepth: 0
    functionLinenumber: 33
    functionLinenumberEnd: 35
    functionName: DbfsDeleter::new
    functionSourceFile: /src/opendal/core/services/dbfs/src/deleter.rs
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(core: Arc<DbfsCore>, ctx: OperationContext) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: dbfs_delete
      Src: /src/opendal/core/services/dbfs/src/deleter.rs:40,1
    - Dst: status
      Src: /src/opendal/core/services/dbfs/src/deleter.rs:42,1
    - Dst: Ok
      Src: /src/opendal/core/services/dbfs/src/deleter.rs:46,1
    - Dst: Err
      Src: /src/opendal/core/services/dbfs/src/deleter.rs:47,1
    - Dst: super::core::parse_error
      Src: /src/opendal/core/services/dbfs/src/deleter.rs:47,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 2
    argNames:
    - path
    argTypes:
    - String
    - OpDelete
    constantsTouched: []
    func_position:
      end: 49
      start: 39
    functionDepth: 41
    functionLinenumber: 39
    functionLinenumberEnd: 49
    functionName: DbfsDeleter::delete_once
    functionSourceFile: /src/opendal/core/services/dbfs/src/deleter.rs
    functionUses: 0
    functionsReached:
    - status
    - Ok
    - Err
    - dbfs_delete
    - super::core::parse_error
    linkageType: ''
    returnType: Result
    signature: 'async fn delete_once(&self, path: String, _: OpDelete) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 3
    argNames:
    - core
    - ctx
    - path
    argTypes:
    - Arc<DbfsCore>
    - OperationContext
    - String
    constantsTouched: []
    func_position:
      end: 38
      start: 36
    functionDepth: 0
    functionLinenumber: 36
    functionLinenumberEnd: 38
    functionName: DbfsLister::new
    functionSourceFile: /src/opendal/core/services/dbfs/src/lister.rs
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(core: Arc<DbfsCore>, ctx: OperationContext, path: String)
      -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: dbfs_list
      Src: /src/opendal/core/services/dbfs/src/lister.rs:43,1
    - Dst: status
      Src: /src/opendal/core/services/dbfs/src/lister.rs:45,1
    - Dst: Self::is_success
      Src: /src/opendal/core/services/dbfs/src/lister.rs:46,1
    - Dst: Ok
      Src: /src/opendal/core/services/dbfs/src/lister.rs:49,1
    - Dst: super::core::parse_error
      Src: /src/opendal/core/services/dbfs/src/lister.rs:51,1
    - Dst: Err
      Src: /src/opendal/core/services/dbfs/src/lister.rs:52,1
    - Dst: into_body
      Src: /src/opendal/core/services/dbfs/src/lister.rs:55,1
    - Dst: serde_json::from_reader
      Src: /src/opendal/core/services/dbfs/src/lister.rs:57,1
    - Dst: Bytes::reader
      Src: /src/opendal/core/services/dbfs/src/lister.rs:57,1
    - Dst: map_err
      Src: /src/opendal/core/services/dbfs/src/lister.rs:57,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/dbfs/src/lister.rs:65,1
    - Dst: Result::set_last_modified
      Src: /src/opendal/core/services/dbfs/src/lister.rs:66,1
    - Dst: Timestamp::from_millisecond
      Src: /src/opendal/core/services/dbfs/src/lister.rs:66,1
    - Dst: oio::Entry::new
      Src: /src/opendal/core/services/dbfs/src/lister.rs:67,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/dbfs/src/lister.rs:70,1
    - Dst: Result::set_last_modified
      Src: /src/opendal/core/services/dbfs/src/lister.rs:71,1
    - Dst: Timestamp::from_millisecond
      Src: /src/opendal/core/services/dbfs/src/lister.rs:71,1
    - Dst: Result::set_content_length
      Src: /src/opendal/core/services/dbfs/src/lister.rs:72,1
    - Dst: oio::Entry::new
      Src: /src/opendal/core/services/dbfs/src/lister.rs:73,1
    - Dst: push_back
      Src: /src/opendal/core/services/dbfs/src/lister.rs:76,1
    - Dst: Ok
      Src: /src/opendal/core/services/dbfs/src/lister.rs:78,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 76
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - '&mut oio::PageContext'
    constantsTouched: []
    func_position:
      end: 79
      start: 42
    functionDepth: 38
    functionLinenumber: 42
    functionLinenumberEnd: 79
    functionName: DbfsLister::next_page
    functionSourceFile: /src/opendal/core/services/dbfs/src/lister.rs
    functionUses: 0
    functionsReached:
    - dbfs_list
    - Self::is_success
    - map_err
    - Metadata::new
    - oio::Entry::new
    - status
    - Ok
    - push_back
    - serde_json::from_reader
    - into_body
    - Result::set_last_modified
    - Err
    - Result::set_content_length
    - Timestamp::from_millisecond
    - super::core::parse_error
    - Bytes::reader
    linkageType: ''
    returnType: Result
    signature: 'async fn next_page(&self, ctx: &mut oio::PageContext) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::debug_struct
      Src: /src/opendal/core/services/dbfs/src/core.rs:40,1
    - Dst: field
      Src: /src/opendal/core/services/dbfs/src/core.rs:40,1
    - Dst: field
      Src: /src/opendal/core/services/dbfs/src/core.rs:40,1
    - Dst: field
      Src: /src/opendal/core/services/dbfs/src/core.rs:40,1
    - Dst: finish_non_exhaustive
      Src: /src/opendal/core/services/dbfs/src/core.rs:40,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 15
    argCount: 1
    argNames:
    - f
    argTypes:
    - '&mut std::fmt::Formatter<''_>'
    constantsTouched: []
    func_position:
      end: 45
      start: 39
    functionDepth: 5
    functionLinenumber: 39
    functionLinenumberEnd: 45
    functionName: DbfsCore::fmt
    functionSourceFile: /src/opendal/core/services/dbfs/src/core.rs
    functionUses: 0
    functionsReached:
    - field
    - Result::debug_struct
    - finish_non_exhaustive
    linkageType: ''
    returnType: std::fmt::Result
    signature: 'fn fmt(&self, f: &mut std::fmt::Formatter<''_>) -> std::fmt::Result'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Request::post
      Src: /src/opendal/core/services/dbfs/src/core.rs:55,1
    - Dst: http::header
      Src: /src/opendal/core/services/dbfs/src/core.rs:58,1
    - Dst: build_rooted_abs_path
      Src: /src/opendal/core/services/dbfs/src/core.rs:60,1
    - Dst: String::trim_end_matches
      Src: /src/opendal/core/services/dbfs/src/core.rs:60,1
    - Dst: to_string
      Src: /src/opendal/core/services/dbfs/src/core.rs:60,1
    - Dst: Buffer::from
      Src: /src/opendal/core/services/dbfs/src/core.rs:67,1
    - Dst: Bytes::from
      Src: /src/opendal/core/services/dbfs/src/core.rs:67,1
    - Dst: to_string
      Src: /src/opendal/core/services/dbfs/src/core.rs:67,1
    - Dst: extension
      Src: /src/opendal/core/services/dbfs/src/core.rs:69,1
    - Dst: extension
      Src: /src/opendal/core/services/dbfs/src/core.rs:69,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/dbfs/src/core.rs:71,1
    - Dst: body
      Src: /src/opendal/core/services/dbfs/src/core.rs:69,1
    - Dst: map_err
      Src: /src/opendal/core/services/dbfs/src/core.rs:69,1
    - Dst: Result::http_transport
      Src: /src/opendal/core/services/dbfs/src/core.rs:75,1
    - Dst: Self::send
      Src: /src/opendal/core/services/dbfs/src/core.rs:75,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 33
    argCount: 2
    argNames:
    - ctx
    - path
    argTypes:
    - '&OperationContext'
    - '&str'
    constantsTouched: []
    func_position:
      end: 76
      start: 49
    functionDepth: 40
    functionLinenumber: 49
    functionLinenumberEnd: 76
    functionName: DbfsCore::dbfs_create_dir
    functionSourceFile: /src/opendal/core/services/dbfs/src/core.rs
    functionUses: 1
    functionsReached:
    - map_err
    - to_string
    - extension
    - Self::send
    - http::header
    - Request::post
    - body
    - build_rooted_abs_path
    - Result::http_transport
    - Bytes::from
    - ServiceOperation
    - String::trim_end_matches
    - Buffer::from
    linkageType: ''
    returnType: Result
    signature: 'pub async fn dbfs_create_dir(&self,ctx: &OperationContext,path: &str,)
      -> Result<Response<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Request::post
      Src: /src/opendal/core/services/dbfs/src/core.rs:84,1
    - Dst: http::header
      Src: /src/opendal/core/services/dbfs/src/core.rs:87,1
    - Dst: build_rooted_abs_path
      Src: /src/opendal/core/services/dbfs/src/core.rs:89,1
    - Dst: String::trim_end_matches
      Src: /src/opendal/core/services/dbfs/src/core.rs:89,1
    - Dst: to_string
      Src: /src/opendal/core/services/dbfs/src/core.rs:89,1
    - Dst: Buffer::from
      Src: /src/opendal/core/services/dbfs/src/core.rs:99,1
    - Dst: Bytes::from
      Src: /src/opendal/core/services/dbfs/src/core.rs:99,1
    - Dst: to_string
      Src: /src/opendal/core/services/dbfs/src/core.rs:99,1
    - Dst: extension
      Src: /src/opendal/core/services/dbfs/src/core.rs:101,1
    - Dst: extension
      Src: /src/opendal/core/services/dbfs/src/core.rs:101,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/dbfs/src/core.rs:103,1
    - Dst: body
      Src: /src/opendal/core/services/dbfs/src/core.rs:101,1
    - Dst: map_err
      Src: /src/opendal/core/services/dbfs/src/core.rs:101,1
    - Dst: Result::http_transport
      Src: /src/opendal/core/services/dbfs/src/core.rs:107,1
    - Dst: Self::send
      Src: /src/opendal/core/services/dbfs/src/core.rs:107,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 33
    argCount: 2
    argNames:
    - ctx
    - path
    argTypes:
    - '&OperationContext'
    - '&str'
    constantsTouched: []
    func_position:
      end: 108
      start: 78
    functionDepth: 40
    functionLinenumber: 78
    functionLinenumberEnd: 108
    functionName: DbfsCore::dbfs_delete
    functionSourceFile: /src/opendal/core/services/dbfs/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - to_string
    - extension
    - Self::send
    - http::header
    - Request::post
    - body
    - build_rooted_abs_path
    - Result::http_transport
    - Bytes::from
    - ServiceOperation
    - String::trim_end_matches
    - Buffer::from
    linkageType: ''
    returnType: Result
    signature: 'pub async fn dbfs_delete(&self,ctx: &OperationContext,path: &str,)
      -> Result<Response<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_rooted_abs_path
      Src: /src/opendal/core/services/dbfs/src/core.rs:116,1
    - Dst: build_rooted_abs_path
      Src: /src/opendal/core/services/dbfs/src/core.rs:117,1
    - Dst: Request::post
      Src: /src/opendal/core/services/dbfs/src/core.rs:120,1
    - Dst: http::header
      Src: /src/opendal/core/services/dbfs/src/core.rs:123,1
    - Dst: Buffer::from
      Src: /src/opendal/core/services/dbfs/src/core.rs:130,1
    - Dst: Bytes::from
      Src: /src/opendal/core/services/dbfs/src/core.rs:130,1
    - Dst: to_string
      Src: /src/opendal/core/services/dbfs/src/core.rs:130,1
    - Dst: extension
      Src: /src/opendal/core/services/dbfs/src/core.rs:132,1
    - Dst: extension
      Src: /src/opendal/core/services/dbfs/src/core.rs:132,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/dbfs/src/core.rs:134,1
    - Dst: body
      Src: /src/opendal/core/services/dbfs/src/core.rs:132,1
    - Dst: map_err
      Src: /src/opendal/core/services/dbfs/src/core.rs:132,1
    - Dst: Result::http_transport
      Src: /src/opendal/core/services/dbfs/src/core.rs:138,1
    - Dst: Self::send
      Src: /src/opendal/core/services/dbfs/src/core.rs:138,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 32
    argCount: 3
    argNames:
    - ctx
    - from
    - to
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    constantsTouched: []
    func_position:
      end: 139
      start: 110
    functionDepth: 40
    functionLinenumber: 110
    functionLinenumberEnd: 139
    functionName: DbfsCore::dbfs_rename
    functionSourceFile: /src/opendal/core/services/dbfs/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - to_string
    - extension
    - Self::send
    - http::header
    - Request::post
    - body
    - build_rooted_abs_path
    - Bytes::from
    - ServiceOperation
    - Result::http_transport
    - Buffer::from
    linkageType: ''
    returnType: Result
    signature: 'pub async fn dbfs_rename(&self,ctx: &OperationContext,from: &str,to:
      &str,) -> Result<Response<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_rooted_abs_path
      Src: /src/opendal/core/services/dbfs/src/core.rs:142,1
    - Dst: String::trim_end_matches
      Src: /src/opendal/core/services/dbfs/src/core.rs:142,1
    - Dst: to_string
      Src: /src/opendal/core/services/dbfs/src/core.rs:142,1
    - Dst: Request::get
      Src: /src/opendal/core/services/dbfs/src/core.rs:151,1
    - Dst: Option::header
      Src: /src/opendal/core/services/dbfs/src/core.rs:154,1
    - Dst: Option::extension
      Src: /src/opendal/core/services/dbfs/src/core.rs:156,1
    - Dst: extension
      Src: /src/opendal/core/services/dbfs/src/core.rs:156,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/dbfs/src/core.rs:158,1
    - Dst: body
      Src: /src/opendal/core/services/dbfs/src/core.rs:156,1
    - Dst: Buffer::new
      Src: /src/opendal/core/services/dbfs/src/core.rs:159,1
    - Dst: map_err
      Src: /src/opendal/core/services/dbfs/src/core.rs:156,1
    - Dst: Result::http_transport
      Src: /src/opendal/core/services/dbfs/src/core.rs:162,1
    - Dst: Self::send
      Src: /src/opendal/core/services/dbfs/src/core.rs:162,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 29
    argCount: 2
    argNames:
    - ctx
    - path
    argTypes:
    - '&OperationContext'
    - '&str'
    constantsTouched: []
    func_position:
      end: 163
      start: 141
    functionDepth: 37
    functionLinenumber: 141
    functionLinenumberEnd: 163
    functionName: DbfsCore::dbfs_list
    functionSourceFile: /src/opendal/core/services/dbfs/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - to_string
    - Request::get
    - extension
    - Buffer::new
    - Self::send
    - body
    - build_rooted_abs_path
    - Result::http_transport
    - Option::extension
    - ServiceOperation
    - String::trim_end_matches
    - Option::header
    linkageType: ''
    returnType: Result
    signature: 'pub async fn dbfs_list(&self, ctx: &OperationContext, path: &str)
      -> Result<Response<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: encode
      Src: /src/opendal/core/services/dbfs/src/core.rs:168,1
    - Dst: Request::post
      Src: /src/opendal/core/services/dbfs/src/core.rs:169,1
    - Dst: http::header
      Src: /src/opendal/core/services/dbfs/src/core.rs:172,1
    - Dst: Buffer::from
      Src: /src/opendal/core/services/dbfs/src/core.rs:180,1
    - Dst: Bytes::from
      Src: /src/opendal/core/services/dbfs/src/core.rs:180,1
    - Dst: to_string
      Src: /src/opendal/core/services/dbfs/src/core.rs:180,1
    - Dst: extension
      Src: /src/opendal/core/services/dbfs/src/core.rs:182,1
    - Dst: extension
      Src: /src/opendal/core/services/dbfs/src/core.rs:182,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/dbfs/src/core.rs:183,1
    - Dst: body
      Src: /src/opendal/core/services/dbfs/src/core.rs:182,1
    - Dst: map_err
      Src: /src/opendal/core/services/dbfs/src/core.rs:182,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 22
    argCount: 2
    argNames:
    - path
    - body
    argTypes:
    - '&str'
    - Bytes
    constantsTouched: []
    func_position:
      end: 186
      start: 165
    functionDepth: 31
    functionLinenumber: 165
    functionLinenumberEnd: 186
    functionName: DbfsCore::dbfs_create_file_request
    functionSourceFile: /src/opendal/core/services/dbfs/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - to_string
    - extension
    - encode
    - http::header
    - Request::post
    - body
    - Bytes::from
    - ServiceOperation
    - Buffer::from
    linkageType: ''
    returnType: Result
    signature: 'pub fn dbfs_create_file_request(&self, path: &str, body: Bytes) ->
      Result<Request<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_rooted_abs_path
      Src: /src/opendal/core/services/dbfs/src/core.rs:193,1
    - Dst: String::trim_end_matches
      Src: /src/opendal/core/services/dbfs/src/core.rs:193,1
    - Dst: to_string
      Src: /src/opendal/core/services/dbfs/src/core.rs:193,1
    - Dst: Request::get
      Src: /src/opendal/core/services/dbfs/src/core.rs:203,1
    - Dst: Option::header
      Src: /src/opendal/core/services/dbfs/src/core.rs:206,1
    - Dst: Option::extension
      Src: /src/opendal/core/services/dbfs/src/core.rs:208,1
    - Dst: extension
      Src: /src/opendal/core/services/dbfs/src/core.rs:208,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/dbfs/src/core.rs:210,1
    - Dst: body
      Src: /src/opendal/core/services/dbfs/src/core.rs:208,1
    - Dst: Buffer::new
      Src: /src/opendal/core/services/dbfs/src/core.rs:211,1
    - Dst: map_err
      Src: /src/opendal/core/services/dbfs/src/core.rs:208,1
    - Dst: Result::http_transport
      Src: /src/opendal/core/services/dbfs/src/core.rs:214,1
    - Dst: Self::send
      Src: /src/opendal/core/services/dbfs/src/core.rs:214,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 29
    argCount: 2
    argNames:
    - ctx
    - path
    argTypes:
    - '&OperationContext'
    - '&str'
    constantsTouched: []
    func_position:
      end: 215
      start: 188
    functionDepth: 37
    functionLinenumber: 188
    functionLinenumberEnd: 215
    functionName: DbfsCore::dbfs_get_status
    functionSourceFile: /src/opendal/core/services/dbfs/src/core.rs
    functionUses: 1
    functionsReached:
    - map_err
    - to_string
    - Request::get
    - extension
    - Buffer::new
    - Self::send
    - body
    - build_rooted_abs_path
    - Result::http_transport
    - Option::extension
    - ServiceOperation
    - String::trim_end_matches
    - Option::header
    linkageType: ''
    returnType: Result
    signature: 'pub async fn dbfs_get_status(&self,ctx: &OperationContext,path: &str,)
      -> Result<Response<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: DbfsCore::dbfs_get_status
      Src: /src/opendal/core/services/dbfs/src/core.rs:218,1
    - Dst: status
      Src: /src/opendal/core/services/dbfs/src/core.rs:220,1
    - Dst: Ok
      Src: /src/opendal/core/services/dbfs/src/core.rs:221,1
    - Dst: DbfsCore::dbfs_create_dir
      Src: /src/opendal/core/services/dbfs/src/core.rs:223,1
    - Dst: Err
      Src: /src/opendal/core/services/dbfs/src/core.rs:225,1
    - Dst: parse_error
      Src: /src/opendal/core/services/dbfs/src/core.rs:225,1
    - Dst: Ok
      Src: /src/opendal/core/services/dbfs/src/core.rs:227,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 21
    argCount: 2
    argNames:
    - ctx
    - path
    argTypes:
    - '&OperationContext'
    - '&str'
    constantsTouched: []
    func_position:
      end: 228
      start: 217
    functionDepth: 38
    functionLinenumber: 217
    functionLinenumberEnd: 228
    functionName: DbfsCore::dbfs_ensure_parent_path
    functionSourceFile: /src/opendal/core/services/dbfs/src/core.rs
    functionUses: 0
    functionsReached:
    - status
    - Ok
    - parse_error
    - Err
    - DbfsCore::dbfs_create_dir
    - DbfsCore::dbfs_get_status
    linkageType: ''
    returnType: Result
    signature: 'pub async fn dbfs_ensure_parent_path(&self, ctx: &OperationContext,
      path: &str) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 4
    argNames:
    - core
    - ctx
    - _op
    - path
    argTypes:
    - Arc<DbfsCore>
    - OperationContext
    - OpWrite
    - String
    constantsTouched: []
    func_position:
      end: 38
      start: 36
    functionDepth: 0
    functionLinenumber: 36
    functionLinenumberEnd: 38
    functionName: DbfsWriter::new
    functionSourceFile: /src/opendal/core/services/dbfs/src/writer.rs
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(core: Arc<DbfsCore>, ctx: OperationContext, _op: OpWrite,
      path: String) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::len
      Src: /src/opendal/core/services/dbfs/src/writer.rs:43,1
    - Dst: Err
      Src: /src/opendal/core/services/dbfs/src/writer.rs:47,1
    - Dst: Error::new
      Src: /src/opendal/core/services/dbfs/src/writer.rs:47,1
    - Dst: dbfs_create_file_request
      Src: /src/opendal/core/services/dbfs/src/writer.rs:53,1
    - Dst: Result::to_bytes
      Src: /src/opendal/core/services/dbfs/src/writer.rs:55,1
    - Dst: http_transport
      Src: /src/opendal/core/services/dbfs/src/writer.rs:57,1
    - Dst: send
      Src: /src/opendal/core/services/dbfs/src/writer.rs:57,1
    - Dst: status
      Src: /src/opendal/core/services/dbfs/src/writer.rs:59,1
    - Dst: Ok
      Src: /src/opendal/core/services/dbfs/src/writer.rs:61,1
    - Dst: Metadata::default
      Src: /src/opendal/core/services/dbfs/src/writer.rs:61,1
    - Dst: Err
      Src: /src/opendal/core/services/dbfs/src/writer.rs:62,1
    - Dst: super::core::parse_error
      Src: /src/opendal/core/services/dbfs/src/writer.rs:62,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 32
    argCount: 1
    argNames:
    - bs
    argTypes:
    - Buffer
    constantsTouched: []
    func_position:
      end: 64
      start: 42
    functionDepth: 36
    functionLinenumber: 42
    functionLinenumberEnd: 64
    functionName: DbfsWriter::write_once
    functionSourceFile: /src/opendal/core/services/dbfs/src/writer.rs
    functionUses: 0
    functionsReached:
    - http_transport
    - Metadata::default
    - status
    - Ok
    - Result::to_bytes
    - send
    - Error::new
    - Err
    - Result::len
    - dbfs_create_file_request
    - super::core::parse_error
    linkageType: ''
    returnType: Result
    signature: 'async fn write_once(&self, bs: Buffer) -> Result<Metadata>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: register::<Dbfs>
      Src: /src/opendal/core/services/dbfs/src/lib.rs:38,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - registry
    argTypes:
    - '&opendal_core::OperatorRegistry'
    constantsTouched: []
    func_position:
      end: 39
      start: 37
    functionDepth: 0
    functionLinenumber: 37
    functionLinenumberEnd: 39
    functionName: register_dbfs_service
    functionSourceFile: /src/opendal/core/services/dbfs/src/lib.rs
    functionUses: 1
    functionsReached:
    - register::<Dbfs>
    linkageType: ''
    returnType: void
    signature: 'pub fn register_dbfs_service(registry: &opendal_core::OperatorRegistry)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::is_empty
      Src: /src/opendal/core/services/dbfs/src/backend.rs:47,1
    - Dst: Some
      Src: /src/opendal/core/services/dbfs/src/backend.rs:50,1
    - Dst: Result::to_string
      Src: /src/opendal/core/services/dbfs/src/backend.rs:50,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - root
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 54
      start: 46
    functionDepth: 4
    functionLinenumber: 46
    functionLinenumberEnd: 54
    functionName: DbfsBuilder::root
    functionSourceFile: /src/opendal/core/services/dbfs/src/backend.rs
    functionUses: 0
    functionsReached:
    - Result::is_empty
    - Result::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn root(mut self, root: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self::is_empty
      Src: /src/opendal/core/services/dbfs/src/backend.rs:63,1
    - Dst: Some
      Src: /src/opendal/core/services/dbfs/src/backend.rs:66,1
    - Dst: Self::trim_end_matches
      Src: /src/opendal/core/services/dbfs/src/backend.rs:66,1
    - Dst: to_string
      Src: /src/opendal/core/services/dbfs/src/backend.rs:66,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 1
    argNames:
    - endpoint
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 69
      start: 62
    functionDepth: 4
    functionLinenumber: 62
    functionLinenumberEnd: 69
    functionName: DbfsBuilder::endpoint
    functionSourceFile: /src/opendal/core/services/dbfs/src/backend.rs
    functionUses: 0
    functionsReached:
    - Self::is_empty
    - to_string
    - Self::trim_end_matches
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn endpoint(mut self, endpoint: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self::is_empty
      Src: /src/opendal/core/services/dbfs/src/backend.rs:73,1
    - Dst: Some
      Src: /src/opendal/core/services/dbfs/src/backend.rs:74,1
    - Dst: Self::to_string
      Src: /src/opendal/core/services/dbfs/src/backend.rs:74,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 1
    argNames:
    - token
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 77
      start: 72
    functionDepth: 4
    functionLinenumber: 72
    functionLinenumberEnd: 77
    functionName: DbfsBuilder::token
    functionSourceFile: /src/opendal/core/services/dbfs/src/backend.rs
    functionUses: 0
    functionsReached:
    - Self::is_empty
    - Self::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn token(mut self, token: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: normalize_root
      Src: /src/opendal/core/services/dbfs/src/backend.rs:87,1
    - Dst: unwrap_or_default
      Src: /src/opendal/core/services/dbfs/src/backend.rs:87,1
    - Dst: Ok
      Src: /src/opendal/core/services/dbfs/src/backend.rs:91,1
    - Dst: Self::clone
      Src: /src/opendal/core/services/dbfs/src/backend.rs:91,1
    - Dst: Err
      Src: /src/opendal/core/services/dbfs/src/backend.rs:92,1
    - Dst: Error::new
      Src: /src/opendal/core/services/dbfs/src/backend.rs:92,1
    - Dst: Self::with_operation
      Src: /src/opendal/core/services/dbfs/src/backend.rs:92,1
    - Dst: Self::with_context
      Src: /src/opendal/core/services/dbfs/src/backend.rs:92,1
    - Dst: Err
      Src: /src/opendal/core/services/dbfs/src/backend.rs:101,1
    - Dst: Error::new
      Src: /src/opendal/core/services/dbfs/src/backend.rs:101,1
    - Dst: Default::default
      Src: /src/opendal/core/services/dbfs/src/backend.rs:120,1
    - Dst: Ok
      Src: /src/opendal/core/services/dbfs/src/backend.rs:123,1
    - Dst: Arc::new
      Src: /src/opendal/core/services/dbfs/src/backend.rs:124,1
    - Dst: Self::to_string
      Src: /src/opendal/core/services/dbfs/src/backend.rs:126,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 38
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 131
      start: 84
    functionDepth: 34
    functionLinenumber: 84
    functionLinenumberEnd: 131
    functionName: DbfsBuilder::build
    functionSourceFile: /src/opendal/core/services/dbfs/src/backend.rs
    functionUses: 0
    functionsReached:
    - Ok
    - Self::to_string
    - Default::default
    - Arc::new
    - normalize_root
    - Err
    - Error::new
    - Self::clone
    - Self::with_operation
    - Self::with_context
    - unwrap_or_default
    linkageType: ''
    returnType: Result
    signature: fn build(self) -> Result<impl Service>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: ServiceInfo::new
      Src: /src/opendal/core/services/dbfs/src/backend.rs:149,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 150
      start: 148
    functionDepth: 33
    functionLinenumber: 148
    functionLinenumberEnd: 150
    functionName: DbfsBackend::info
    functionSourceFile: /src/opendal/core/services/dbfs/src/backend.rs
    functionUses: 0
    functionsReached:
    - ServiceInfo::new
    linkageType: ''
    returnType: ServiceInfo
    signature: fn info(&self) -> ServiceInfo
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 154
      start: 152
    functionDepth: 0
    functionLinenumber: 152
    functionLinenumberEnd: 154
    functionName: DbfsBackend::capability
    functionSourceFile: /src/opendal/core/services/dbfs/src/backend.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Capability
    signature: fn capability(&self) -> Capability
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: dbfs_create_dir
      Src: /src/opendal/core/services/dbfs/src/backend.rs:162,1
    - Dst: status
      Src: /src/opendal/core/services/dbfs/src/backend.rs:164,1
    - Dst: Ok
      Src: /src/opendal/core/services/dbfs/src/backend.rs:167,1
    - Dst: RpCreateDir::default
      Src: /src/opendal/core/services/dbfs/src/backend.rs:167,1
    - Dst: Err
      Src: /src/opendal/core/services/dbfs/src/backend.rs:168,1
    - Dst: super::core::parse_error
      Src: /src/opendal/core/services/dbfs/src/backend.rs:168,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 3
    argNames:
    - ctx
    - path
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpCreateDir
    constantsTouched: []
    func_position:
      end: 170
      start: 156
    functionDepth: 41
    functionLinenumber: 156
    functionLinenumberEnd: 170
    functionName: DbfsBackend::create_dir
    functionSourceFile: /src/opendal/core/services/dbfs/src/backend.rs
    functionUses: 0
    functionsReached:
    - status
    - RpCreateDir::default
    - Ok
    - Err
    - dbfs_create_dir
    - super::core::parse_error
    linkageType: ''
    returnType: Result
    signature: 'async fn create_dir(&self,ctx: &OperationContext,path: &str,_: OpCreateDir,)
      -> Result<RpCreateDir>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/core/services/dbfs/src/backend.rs:175,1
    - Dst: RpStat::new
      Src: /src/opendal/core/services/dbfs/src/backend.rs:175,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/dbfs/src/backend.rs:175,1
    - Dst: dbfs_get_status
      Src: /src/opendal/core/services/dbfs/src/backend.rs:178,1
    - Dst: status
      Src: /src/opendal/core/services/dbfs/src/backend.rs:180,1
    - Dst: parse_into_metadata
      Src: /src/opendal/core/services/dbfs/src/backend.rs:184,1
    - Dst: headers
      Src: /src/opendal/core/services/dbfs/src/backend.rs:184,1
    - Dst: into_body
      Src: /src/opendal/core/services/dbfs/src/backend.rs:185,1
    - Dst: serde_json::from_reader
      Src: /src/opendal/core/services/dbfs/src/backend.rs:187,1
    - Dst: Result::reader
      Src: /src/opendal/core/services/dbfs/src/backend.rs:187,1
    - Dst: map_err
      Src: /src/opendal/core/services/dbfs/src/backend.rs:187,1
    - Dst: Result::set_last_modified
      Src: /src/opendal/core/services/dbfs/src/backend.rs:188,1
    - Dst: Timestamp::from_millisecond
      Src: /src/opendal/core/services/dbfs/src/backend.rs:188,1
    - Dst: Result::set_mode
      Src: /src/opendal/core/services/dbfs/src/backend.rs:192,1
    - Dst: Result::set_mode
      Src: /src/opendal/core/services/dbfs/src/backend.rs:194,1
    - Dst: Result::set_content_length
      Src: /src/opendal/core/services/dbfs/src/backend.rs:195,1
    - Dst: Ok
      Src: /src/opendal/core/services/dbfs/src/backend.rs:198,1
    - Dst: RpStat::new
      Src: /src/opendal/core/services/dbfs/src/backend.rs:198,1
    - Dst: ends_with
      Src: /src/opendal/core/services/dbfs/src/backend.rs:200,1
    - Dst: Ok
      Src: /src/opendal/core/services/dbfs/src/backend.rs:201,1
    - Dst: RpStat::new
      Src: /src/opendal/core/services/dbfs/src/backend.rs:201,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/dbfs/src/backend.rs:201,1
    - Dst: Err
      Src: /src/opendal/core/services/dbfs/src/backend.rs:203,1
    - Dst: super::core::parse_error
      Src: /src/opendal/core/services/dbfs/src/backend.rs:203,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 56
    argCount: 3
    argNames:
    - ctx
    - path
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpStat
    constantsTouched: []
    func_position:
      end: 205
      start: 172
    functionDepth: 38
    functionLinenumber: 172
    functionLinenumberEnd: 205
    functionName: DbfsBackend::stat
    functionSourceFile: /src/opendal/core/services/dbfs/src/backend.rs
    functionUses: 0
    functionsReached:
    - map_err
    - Metadata::new
    - parse_into_metadata
    - status
    - Ok
    - serde_json::from_reader
    - RpStat::new
    - into_body
    - ends_with
    - Result::set_last_modified
    - Err
    - Result::set_mode
    - Result::set_content_length
    - headers
    - Timestamp::from_millisecond
    - Result::reader
    - dbfs_get_status
    - super::core::parse_error
    linkageType: ''
    returnType: Result
    signature: 'async fn stat(&self, ctx: &OperationContext, path: &str, _: OpStat)
      -> Result<RpStat>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/core/services/dbfs/src/backend.rs:208,1
    - Dst: Error::new
      Src: /src/opendal/core/services/dbfs/src/backend.rs:208,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - _ctx
    - _path
    - _args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpRead
    constantsTouched: []
    func_position:
      end: 212
      start: 207
    functionDepth: 36
    functionLinenumber: 207
    functionLinenumberEnd: 212
    functionName: DbfsBackend::read
    functionSourceFile: /src/opendal/core/services/dbfs/src/backend.rs
    functionUses: 0
    functionsReached:
    - Error::new
    - Err
    linkageType: ''
    returnType: Result
    signature: 'fn read(&self, _ctx: &OperationContext, _path: &str, _args: OpRead)
      -> Result<Self::Reader>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/core/services/dbfs/src/backend.rs:216,1
    - Dst: oio::OneShotWriter::new
      Src: /src/opendal/core/services/dbfs/src/backend.rs:216,1
    - Dst: DbfsWriter::new
      Src: /src/opendal/core/services/dbfs/src/backend.rs:216,1
    - Dst: clone
      Src: /src/opendal/core/services/dbfs/src/backend.rs:217,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/dbfs/src/backend.rs:218,1
    - Dst: to_string
      Src: /src/opendal/core/services/dbfs/src/backend.rs:220,1
    - Dst: Ok
      Src: /src/opendal/core/services/dbfs/src/backend.rs:224,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpWrite
    constantsTouched: []
    func_position:
      end: 225
      start: 214
    functionDepth: 2
    functionLinenumber: 214
    functionLinenumberEnd: 225
    functionName: DbfsBackend::write
    functionSourceFile: /src/opendal/core/services/dbfs/src/backend.rs
    functionUses: 0
    functionsReached:
    - Result::clone
    - to_string
    - Ok
    - clone
    - oio::OneShotWriter::new
    - DbfsWriter::new
    linkageType: ''
    returnType: Result
    signature: 'fn write(&self, ctx: &OperationContext, path: &str, args: OpWrite)
      -> Result<Self::Writer>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/core/services/dbfs/src/backend.rs:229,1
    - Dst: oio::OneShotDeleter::new
      Src: /src/opendal/core/services/dbfs/src/backend.rs:229,1
    - Dst: DbfsDeleter::new
      Src: /src/opendal/core/services/dbfs/src/backend.rs:229,1
    - Dst: clone
      Src: /src/opendal/core/services/dbfs/src/backend.rs:230,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/dbfs/src/backend.rs:231,1
    - Dst: Ok
      Src: /src/opendal/core/services/dbfs/src/backend.rs:235,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - '&OperationContext'
    constantsTouched: []
    func_position:
      end: 236
      start: 227
    functionDepth: 2
    functionLinenumber: 227
    functionLinenumberEnd: 236
    functionName: DbfsBackend::delete
    functionSourceFile: /src/opendal/core/services/dbfs/src/backend.rs
    functionUses: 0
    functionsReached:
    - oio::OneShotDeleter::new
    - Result::clone
    - Ok
    - clone
    - DbfsDeleter::new
    linkageType: ''
    returnType: Result
    signature: 'fn delete(&self, ctx: &OperationContext) -> Result<Self::Deleter>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: DbfsLister::new
      Src: /src/opendal/core/services/dbfs/src/backend.rs:240,1
    - Dst: clone
      Src: /src/opendal/core/services/dbfs/src/backend.rs:240,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/dbfs/src/backend.rs:240,1
    - Dst: to_string
      Src: /src/opendal/core/services/dbfs/src/backend.rs:240,1
    - Dst: Ok
      Src: /src/opendal/core/services/dbfs/src/backend.rs:242,1
    - Dst: oio::PageLister::new
      Src: /src/opendal/core/services/dbfs/src/backend.rs:242,1
    - Dst: Ok
      Src: /src/opendal/core/services/dbfs/src/backend.rs:245,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 3
    argNames:
    - ctx
    - path
    - _args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpList
    constantsTouched: []
    func_position:
      end: 246
      start: 238
    functionDepth: 3
    functionLinenumber: 238
    functionLinenumberEnd: 246
    functionName: DbfsBackend::list
    functionSourceFile: /src/opendal/core/services/dbfs/src/backend.rs
    functionUses: 0
    functionsReached:
    - Result::clone
    - to_string
    - Ok
    - clone
    - oio::PageLister::new
    - DbfsLister::new
    linkageType: ''
    returnType: Result
    signature: 'fn list(&self, ctx: &OperationContext, path: &str, _args: OpList)
      -> Result<Self::Lister>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: dbfs_ensure_parent_path
      Src: /src/opendal/core/services/dbfs/src/backend.rs:255,1
    - Dst: dbfs_rename
      Src: /src/opendal/core/services/dbfs/src/backend.rs:257,1
    - Dst: status
      Src: /src/opendal/core/services/dbfs/src/backend.rs:259,1
    - Dst: Ok
      Src: /src/opendal/core/services/dbfs/src/backend.rs:262,1
    - Dst: RpRename::default
      Src: /src/opendal/core/services/dbfs/src/backend.rs:262,1
    - Dst: Err
      Src: /src/opendal/core/services/dbfs/src/backend.rs:263,1
    - Dst: super::core::parse_error
      Src: /src/opendal/core/services/dbfs/src/backend.rs:263,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 19
    argCount: 4
    argNames:
    - ctx
    - from
    - to
    - _args
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    - OpRename
    constantsTouched: []
    func_position:
      end: 265
      start: 248
    functionDepth: 39
    functionLinenumber: 248
    functionLinenumberEnd: 265
    functionName: DbfsBackend::rename
    functionSourceFile: /src/opendal/core/services/dbfs/src/backend.rs
    functionUses: 0
    functionsReached:
    - status
    - Ok
    - Err
    - dbfs_ensure_parent_path
    - dbfs_rename
    - RpRename::default
    - super::core::parse_error
    linkageType: ''
    returnType: Result
    signature: 'async fn rename(&self,ctx: &OperationContext,from: &str,to: &str,_args:
      OpRename,) -> Result<RpRename>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/core/services/dbfs/src/backend.rs:275,1
    - Dst: Error::new
      Src: /src/opendal/core/services/dbfs/src/backend.rs:275,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 5
    argNames:
    - _ctx
    - _from
    - _to
    - _args
    - _opts
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    - OpCopy
    - OpCopier
    constantsTouched: []
    func_position:
      end: 279
      start: 267
    functionDepth: 36
    functionLinenumber: 267
    functionLinenumberEnd: 279
    functionName: DbfsBackend::copy
    functionSourceFile: /src/opendal/core/services/dbfs/src/backend.rs
    functionUses: 0
    functionsReached:
    - Error::new
    - Err
    linkageType: ''
    returnType: Result
    signature: 'fn copy(&self,_ctx: &OperationContext,_from: &str,_to: &str,_args:
      OpCopy,_opts: OpCopier,) -> Result<Self::Copier>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/core/services/dbfs/src/backend.rs:287,1
    - Dst: Error::new
      Src: /src/opendal/core/services/dbfs/src/backend.rs:287,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - _ctx
    - _path
    - _args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpPresign
    constantsTouched: []
    func_position:
      end: 291
      start: 281
    functionDepth: 36
    functionLinenumber: 281
    functionLinenumberEnd: 291
    functionName: DbfsBackend::presign
    functionSourceFile: /src/opendal/core/services/dbfs/src/backend.rs
    functionUses: 0
    functionsReached:
    - Error::new
    - Err
    linkageType: ''
    returnType: Result
    signature: 'async fn presign(&self,_ctx: &OperationContext,_path: &str,_args:
      OpPresign,) -> Result<RpPresign>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::debug_struct
      Src: /src/opendal/core/services/cloudflare-kv/src/config.rs:45,1
    - Dst: field
      Src: /src/opendal/core/services/cloudflare-kv/src/config.rs:45,1
    - Dst: field
      Src: /src/opendal/core/services/cloudflare-kv/src/config.rs:45,1
    - Dst: field
      Src: /src/opendal/core/services/cloudflare-kv/src/config.rs:45,1
    - Dst: field
      Src: /src/opendal/core/services/cloudflare-kv/src/config.rs:45,1
    - Dst: finish_non_exhaustive
      Src: /src/opendal/core/services/cloudflare-kv/src/config.rs:45,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 20
    argCount: 1
    argNames:
    - f
    argTypes:
    - '&mut std::fmt::Formatter<''_>'
    constantsTouched: []
    func_position:
      end: 51
      start: 44
    functionDepth: 5
    functionLinenumber: 44
    functionLinenumberEnd: 51
    functionName: CloudflareKvConfig::fmt
    functionSourceFile: /src/opendal/core/services/cloudflare-kv/src/config.rs
    functionUses: 0
    functionsReached:
    - field
    - Result::debug_struct
    - finish_non_exhaustive
    linkageType: ''
    returnType: std::fmt::Result
    signature: 'fn fmt(&self, f: &mut std::fmt::Formatter<''_>) -> std::fmt::Result'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::name
      Src: /src/opendal/core/services/cloudflare-kv/src/config.rs:58,1
    - Dst: Result::ok_or_else
      Src: /src/opendal/core/services/cloudflare-kv/src/config.rs:58,1
    - Dst: opendal_core::Error::new
      Src: /src/opendal/core/services/cloudflare-kv/src/config.rs:59,1
    - Dst: Self::with_context
      Src: /src/opendal/core/services/cloudflare-kv/src/config.rs:59,1
    - Dst: Result::root
      Src: /src/opendal/core/services/cloudflare-kv/src/config.rs:66,1
    - Dst: Result::ok_or_else
      Src: /src/opendal/core/services/cloudflare-kv/src/config.rs:66,1
    - Dst: opendal_core::Error::new
      Src: /src/opendal/core/services/cloudflare-kv/src/config.rs:67,1
    - Dst: Self::with_context
      Src: /src/opendal/core/services/cloudflare-kv/src/config.rs:67,1
    - Dst: splitn
      Src: /src/opendal/core/services/cloudflare-kv/src/config.rs:74,1
    - Dst: next
      Src: /src/opendal/core/services/cloudflare-kv/src/config.rs:75,1
    - Dst: filter
      Src: /src/opendal/core/services/cloudflare-kv/src/config.rs:75,1
    - Dst: is_empty
      Src: /src/opendal/core/services/cloudflare-kv/src/config.rs:75,1
    - Dst: ok_or_else
      Src: /src/opendal/core/services/cloudflare-kv/src/config.rs:75,1
    - Dst: opendal_core::Error::new
      Src: /src/opendal/core/services/cloudflare-kv/src/config.rs:76,1
    - Dst: Self::with_context
      Src: /src/opendal/core/services/cloudflare-kv/src/config.rs:76,1
    - Dst: Result::options
      Src: /src/opendal/core/services/cloudflare-kv/src/config.rs:83,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/cloudflare-kv/src/config.rs:83,1
    - Dst: Result::insert
      Src: /src/opendal/core/services/cloudflare-kv/src/config.rs:84,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/cloudflare-kv/src/config.rs:84,1
    - Dst: Self::to_string
      Src: /src/opendal/core/services/cloudflare-kv/src/config.rs:84,1
    - Dst: Result::insert
      Src: /src/opendal/core/services/cloudflare-kv/src/config.rs:85,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/cloudflare-kv/src/config.rs:85,1
    - Dst: Self::to_string
      Src: /src/opendal/core/services/cloudflare-kv/src/config.rs:85,1
    - Dst: next
      Src: /src/opendal/core/services/cloudflare-kv/src/config.rs:87,1
    - Dst: is_empty
      Src: /src/opendal/core/services/cloudflare-kv/src/config.rs:88,1
    - Dst: Result::insert
      Src: /src/opendal/core/services/cloudflare-kv/src/config.rs:90,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/cloudflare-kv/src/config.rs:90,1
    - Dst: to_string
      Src: /src/opendal/core/services/cloudflare-kv/src/config.rs:90,1
    - Dst: Self::from_iter
      Src: /src/opendal/core/services/cloudflare-kv/src/config.rs:93,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 68
    argCount: 1
    argNames:
    - uri
    argTypes:
    - '&opendal_core::OperatorUri'
    constantsTouched: []
    func_position:
      end: 94
      start: 57
    functionDepth: 31
    functionLinenumber: 57
    functionLinenumberEnd: 94
    functionName: CloudflareKvConfig::from_uri
    functionSourceFile: /src/opendal/core/services/cloudflare-kv/src/config.rs
    functionUses: 1
    functionsReached:
    - next
    - Result::clone
    - filter
    - to_string
    - Self::from_iter
    - Self::to_string
    - Result::insert
    - is_empty
    - Result::name
    - Result::ok_or_else
    - Result::root
    - '&str::to_string'
    - opendal_core::Error::new
    - splitn
    - Self::with_context
    - Result::options
    - ok_or_else
    linkageType: ''
    returnType: opendal_core::Result
    signature: 'fn from_uri(uri: &opendal_core::OperatorUri) -> opendal_core::Result<Self>'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 98
      start: 96
    functionDepth: 0
    functionLinenumber: 96
    functionLinenumberEnd: 98
    functionName: CloudflareKvConfig::into_builder
    functionSourceFile: /src/opendal/core/services/cloudflare-kv/src/config.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Self::Builder
    signature: fn into_builder(self) -> Self::Builder
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: OperatorUri::new
      Src: /src/opendal/core/services/cloudflare-kv/src/config.rs:109,1
    - Dst: Vec::<(String, String)>::new
      Src: /src/opendal/core/services/cloudflare-kv/src/config.rs:111,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/services/cloudflare-kv/src/config.rs:109,1
    - Dst: CloudflareKvConfig::from_uri
      Src: /src/opendal/core/services/cloudflare-kv/src/config.rs:115,1
    - Dst: opendal_core::Result::unwrap
      Src: /src/opendal/core/services/cloudflare-kv/src/config.rs:115,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 119
      start: 108
    functionDepth: 29
    functionLinenumber: 108
    functionLinenumberEnd: 119
    functionName: tests::from_uri_extracts_ids_and_root
    functionSourceFile: /src/opendal/core/services/cloudflare-kv/src/config.rs
    functionUses: 0
    functionsReached:
    - CloudflareKvConfig::from_uri
    - Vec::<(String, String)>::new
    - OperatorUri::new
    - Result::unwrap
    - opendal_core::Result::unwrap
    linkageType: ''
    returnType: void
    signature: fn from_uri_extracts_ids_and_root()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: OperatorUri::new
      Src: /src/opendal/core/services/cloudflare-kv/src/config.rs:124,1
    - Dst: Vec::<(String, String)>::new
      Src: /src/opendal/core/services/cloudflare-kv/src/config.rs:124,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/services/cloudflare-kv/src/config.rs:124,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 127
      start: 122
    functionDepth: 29
    functionLinenumber: 122
    functionLinenumberEnd: 127
    functionName: tests::from_uri_requires_namespace
    functionSourceFile: /src/opendal/core/services/cloudflare-kv/src/config.rs
    functionUses: 0
    functionsReached:
    - Vec::<(String, String)>::new
    - OperatorUri::new
    - Result::unwrap
    linkageType: ''
    returnType: void
    signature: fn from_uri_requires_namespace()
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - core
    - ctx
    argTypes:
    - Arc<CloudflareKvCore>
    - OperationContext
    constantsTouched: []
    func_position:
      end: 38
      start: 36
    functionDepth: 0
    functionLinenumber: 36
    functionLinenumberEnd: 38
    functionName: CloudflareKvDeleter::new
    functionSourceFile: /src/opendal/core/services/cloudflare-kv/src/deleter.rs
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(core: Arc<CloudflareKvCore>, ctx: OperationContext) ->
      Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/cloudflare-kv/src/deleter.rs:43,1
    - Dst: root
      Src: /src/opendal/core/services/cloudflare-kv/src/deleter.rs:43,1
    - Dst: delete
      Src: /src/opendal/core/services/cloudflare-kv/src/deleter.rs:44,1
    - Dst: trim_end_matches
      Src: /src/opendal/core/services/cloudflare-kv/src/deleter.rs:46,1
    - Dst: to_string
      Src: /src/opendal/core/services/cloudflare-kv/src/deleter.rs:46,1
    - Dst: status
      Src: /src/opendal/core/services/cloudflare-kv/src/deleter.rs:49,1
    - Dst: Err
      Src: /src/opendal/core/services/cloudflare-kv/src/deleter.rs:52,1
    - Dst: super::core::parse_error
      Src: /src/opendal/core/services/cloudflare-kv/src/deleter.rs:52,1
    - Dst: clone
      Src: /src/opendal/core/services/cloudflare-kv/src/deleter.rs:52,1
    - Dst: clone
      Src: /src/opendal/core/services/cloudflare-kv/src/deleter.rs:55,1
    - Dst: into_body
      Src: /src/opendal/core/services/cloudflare-kv/src/deleter.rs:55,1
    - Dst: serde_json::from_reader
      Src: /src/opendal/core/services/cloudflare-kv/src/deleter.rs:57,1
    - Dst: Result::reader
      Src: /src/opendal/core/services/cloudflare-kv/src/deleter.rs:57,1
    - Dst: map_err
      Src: /src/opendal/core/services/cloudflare-kv/src/deleter.rs:57,1
    - Dst: Err
      Src: /src/opendal/core/services/cloudflare-kv/src/deleter.rs:60,1
    - Dst: super::core::parse_error
      Src: /src/opendal/core/services/cloudflare-kv/src/deleter.rs:60,1
    - Dst: clone
      Src: /src/opendal/core/services/cloudflare-kv/src/deleter.rs:60,1
    - Dst: Ok
      Src: /src/opendal/core/services/cloudflare-kv/src/deleter.rs:63,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 53
    argCount: 2
    argNames:
    - path
    argTypes:
    - String
    - OpDelete
    constantsTouched: []
    func_position:
      end: 64
      start: 42
    functionDepth: 32
    functionLinenumber: 42
    functionLinenumberEnd: 64
    functionName: CloudflareKvDeleter::delete_once
    functionSourceFile: /src/opendal/core/services/cloudflare-kv/src/deleter.rs
    functionUses: 0
    functionsReached:
    - map_err
    - to_string
    - status
    - Ok
    - delete
    - serde_json::from_reader
    - trim_end_matches
    - into_body
    - clone
    - build_abs_path
    - Err
    - root
    - Result::reader
    - super::core::parse_error
    linkageType: ''
    returnType: Result
    signature: 'async fn delete_once(&self, path: String, _: OpDelete) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::iter
      Src: /src/opendal/core/services/cloudflare-kv/src/deleter.rs:67,1
    - Dst: map
      Src: /src/opendal/core/services/cloudflare-kv/src/deleter.rs:67,1
    - Dst: build_abs_path
      Src: /src/opendal/core/services/cloudflare-kv/src/deleter.rs:70,1
    - Dst: root
      Src: /src/opendal/core/services/cloudflare-kv/src/deleter.rs:70,1
    - Dst: trim_end_matches
      Src: /src/opendal/core/services/cloudflare-kv/src/deleter.rs:71,1
    - Dst: to_string
      Src: /src/opendal/core/services/cloudflare-kv/src/deleter.rs:71,1
    - Dst: "iter()\n            .map(|path| {\n                let path = build_abs_path(&self.core.info.root(),\
        \ &path.0);\n                path.trim_end_matches('/').to_string()\n    \
        \        })\n            .collect::<Vec<String>>"
      Src: /src/opendal/core/services/cloudflare-kv/src/deleter.rs:67,1
    - Dst: delete
      Src: /src/opendal/core/services/cloudflare-kv/src/deleter.rs:75,1
    - Dst: status
      Src: /src/opendal/core/services/cloudflare-kv/src/deleter.rs:77,1
    - Dst: Err
      Src: /src/opendal/core/services/cloudflare-kv/src/deleter.rs:80,1
    - Dst: super::core::parse_error
      Src: /src/opendal/core/services/cloudflare-kv/src/deleter.rs:80,1
    - Dst: into_body
      Src: /src/opendal/core/services/cloudflare-kv/src/deleter.rs:83,1
    - Dst: serde_json::from_reader
      Src: /src/opendal/core/services/cloudflare-kv/src/deleter.rs:86,1
    - Dst: Result::reader
      Src: /src/opendal/core/services/cloudflare-kv/src/deleter.rs:86,1
    - Dst: map_err
      Src: /src/opendal/core/services/cloudflare-kv/src/deleter.rs:86,1
    - Dst: Err
      Src: /src/opendal/core/services/cloudflare-kv/src/deleter.rs:91,1
    - Dst: Error::new
      Src: /src/opendal/core/services/cloudflare-kv/src/deleter.rs:91,1
    - Dst: Vec::with_capacity
      Src: /src/opendal/core/services/cloudflare-kv/src/deleter.rs:103,1
    - Dst: min
      Src: /src/opendal/core/services/cloudflare-kv/src/deleter.rs:103,1
    - Dst: Result::len
      Src: /src/opendal/core/services/cloudflare-kv/src/deleter.rs:103,1
    - Dst: Vec::with_capacity
      Src: /src/opendal/core/services/cloudflare-kv/src/deleter.rs:104,1
    - Dst: len
      Src: /src/opendal/core/services/cloudflare-kv/src/deleter.rs:104,1
    - Dst: contains
      Src: /src/opendal/core/services/cloudflare-kv/src/deleter.rs:108,1
    - Dst: push
      Src: /src/opendal/core/services/cloudflare-kv/src/deleter.rs:109,1
    - Dst: Error::new
      Src: /src/opendal/core/services/cloudflare-kv/src/deleter.rs:112,1
    - Dst: push
      Src: /src/opendal/core/services/cloudflare-kv/src/deleter.rs:118,1
    - Dst: Ok
      Src: /src/opendal/core/services/cloudflare-kv/src/deleter.rs:122,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 85
    argCount: 1
    argNames:
    - batch
    argTypes:
    - Vec<(String, OpDelete)>
    constantsTouched: []
    func_position:
      end: 123
      start: 66
    functionDepth: 32
    functionLinenumber: 66
    functionLinenumberEnd: 123
    functionName: CloudflareKvDeleter::delete_batch
    functionSourceFile: /src/opendal/core/services/cloudflare-kv/src/deleter.rs
    functionUses: 0
    functionsReached:
    - status
    - Vec::with_capacity
    - push
    - serde_json::from_reader
    - map
    - Result::len
    - Result::reader
    - "iter()\n            .map(|path| {\n                let path = build_abs_path(&self.core.info.root(),\
      \ &path.0);\n                path.trim_end_matches('/').to_string()\n      \
      \      })\n            .collect::<Vec<String>>"
    - map_err
    - Ok
    - delete
    - Result::iter
    - root
    - min
    - contains
    - len
    - trim_end_matches
    - into_body
    - build_abs_path
    - super::core::parse_error
    - to_string
    - Err
    - Error::new
    linkageType: ''
    returnType: Result
    signature: 'async fn delete_batch(&self, batch: Vec<(String, OpDelete)>) -> Result<BatchDeleteResult>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: to_string
      Src: /src/opendal/core/services/cloudflare-kv/src/lister.rs:49,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 5
    argNames:
    - core
    - ctx
    - path
    - recursive
    - limit
    argTypes:
    - Arc<CloudflareKvCore>
    - OperationContext
    - '&str'
    - bool
    - Option<usize>
    constantsTouched: []
    func_position:
      end: 53
      start: 38
    functionDepth: 2
    functionLinenumber: 38
    functionLinenumberEnd: 53
    functionName: CloudflareKvLister::new
    functionSourceFile: /src/opendal/core/services/cloudflare-kv/src/lister.rs
    functionUses: 1
    functionsReached:
    - to_string
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(core: Arc<CloudflareKvCore>,ctx: OperationContext,path:
      &str,recursive: bool,limit: Option<usize>,) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: clone
      Src: /src/opendal/core/services/cloudflare-kv/src/lister.rs:56,1
    - Dst: clone
      Src: /src/opendal/core/services/cloudflare-kv/src/lister.rs:57,1
    - Dst: Result::ends_with
      Src: /src/opendal/core/services/cloudflare-kv/src/lister.rs:59,1
    - Dst: Result::replace
      Src: /src/opendal/core/services/cloudflare-kv/src/lister.rs:63,1
    - Dst: Result::trim_start_matches
      Src: /src/opendal/core/services/cloudflare-kv/src/lister.rs:63,1
    - Dst: Result::is_empty
      Src: /src/opendal/core/services/cloudflare-kv/src/lister.rs:66,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/cloudflare-kv/src/lister.rs:67,1
    - Dst: Result::ends_with
      Src: /src/opendal/core/services/cloudflare-kv/src/lister.rs:70,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/cloudflare-kv/src/lister.rs:71,1
    - Dst: Self::with_etag
      Src: /src/opendal/core/services/cloudflare-kv/src/lister.rs:71,1
    - Dst: build_tmp_path_of
      Src: /src/opendal/core/services/cloudflare-kv/src/lister.rs:72,1
    - Dst: Self::with_content_length
      Src: /src/opendal/core/services/cloudflare-kv/src/lister.rs:71,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/cloudflare-kv/src/lister.rs:75,1
    - Dst: Self::with_etag
      Src: /src/opendal/core/services/cloudflare-kv/src/lister.rs:75,1
    - Dst: Self::with_content_length
      Src: /src/opendal/core/services/cloudflare-kv/src/lister.rs:75,1
    - Dst: Self::with_last_modified
      Src: /src/opendal/core/services/cloudflare-kv/src/lister.rs:75,1
    - Dst: last_modified.parse::<Timestamp>
      Src: /src/opendal/core/services/cloudflare-kv/src/lister.rs:78,1
    - Dst: Ok
      Src: /src/opendal/core/services/cloudflare-kv/src/lister.rs:81,1
    - Dst: oio::Entry::new
      Src: /src/opendal/core/services/cloudflare-kv/src/lister.rs:81,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 53
    argCount: 2
    argNames:
    - item
    - root
    argTypes:
    - '&CfKvListKey'
    - '&str'
    constantsTouched: []
    func_position:
      end: 82
      start: 55
    functionDepth: 36
    functionLinenumber: 55
    functionLinenumberEnd: 82
    functionName: CloudflareKvLister::build_entry_for_item
    functionSourceFile: /src/opendal/core/services/cloudflare-kv/src/lister.rs
    functionUses: 2
    functionsReached:
    - Result::trim_start_matches
    - Metadata::new
    - build_tmp_path_of
    - oio::Entry::new
    - Ok
    - Result::ends_with
    - Self::with_content_length
    - Self::with_last_modified
    - clone
    - Result::is_empty
    - '&str::to_string'
    - last_modified.parse::<Timestamp>
    - Result::replace
    - Self::with_etag
    linkageType: ''
    returnType: Result
    signature: 'fn build_entry_for_item(&self, item: &CfKvListKey, root: &str) ->
      Result<oio::Entry>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: bool::iter
      Src: /src/opendal/core/services/cloudflare-kv/src/lister.rs:90,1
    - Dst: find
      Src: /src/opendal/core/services/cloudflare-kv/src/lister.rs:90,1
    - Dst: CloudflareKvLister::build_entry_for_item
      Src: /src/opendal/core/services/cloudflare-kv/src/lister.rs:91,1
    - Dst: push_back
      Src: /src/opendal/core/services/cloudflare-kv/src/lister.rs:92,1
    - Dst: bool::is_empty
      Src: /src/opendal/core/services/cloudflare-kv/src/lister.rs:93,1
    - Dst: replace
      Src: /src/opendal/core/services/cloudflare-kv/src/lister.rs:94,1
    - Dst: Result::trim_start_matches
      Src: /src/opendal/core/services/cloudflare-kv/src/lister.rs:94,1
    - Dst: oio::Entry::new
      Src: /src/opendal/core/services/cloudflare-kv/src/lister.rs:95,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/cloudflare-kv/src/lister.rs:97,1
    - Dst: Self::with_etag
      Src: /src/opendal/core/services/cloudflare-kv/src/lister.rs:97,1
    - Dst: build_tmp_path_of
      Src: /src/opendal/core/services/cloudflare-kv/src/lister.rs:98,1
    - Dst: Self::with_content_length
      Src: /src/opendal/core/services/cloudflare-kv/src/lister.rs:97,1
    - Dst: push_back
      Src: /src/opendal/core/services/cloudflare-kv/src/lister.rs:101,1
    - Dst: Ok
      Src: /src/opendal/core/services/cloudflare-kv/src/lister.rs:104,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 44
    argCount: 3
    argNames:
    - ctx
    - result
    - root
    argTypes:
    - '&mut oio::PageContext'
    - '&[CfKvListKey]'
    - '&str'
    constantsTouched: []
    func_position:
      end: 105
      start: 84
    functionDepth: 37
    functionLinenumber: 84
    functionLinenumberEnd: 105
    functionName: CloudflareKvLister::handle_non_recursive_file_list
    functionSourceFile: /src/opendal/core/services/cloudflare-kv/src/lister.rs
    functionUses: 1
    functionsReached:
    - Result::trim_start_matches
    - Metadata::new
    - oio::Entry::new
    - find
    - build_tmp_path_of
    - Ok
    - push_back
    - Self::with_etag
    - Self::with_content_length
    - replace
    - bool::is_empty
    - CloudflareKvLister::build_entry_for_item
    - bool::iter
    linkageType: ''
    returnType: Result
    signature: 'fn handle_non_recursive_file_list(&self,ctx: &mut oio::PageContext,result:
      &[CfKvListKey],root: &str,) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: trim_end_matches
      Src: /src/opendal/core/services/cloudflare-kv/src/lister.rs:110,1
    - Dst: list
      Src: /src/opendal/core/services/cloudflare-kv/src/lister.rs:111,1
    - Dst: Some
      Src: /src/opendal/core/services/cloudflare-kv/src/lister.rs:113,1
    - Dst: clone
      Src: /src/opendal/core/services/cloudflare-kv/src/lister.rs:113,1
    - Dst: status
      Src: /src/opendal/core/services/cloudflare-kv/src/lister.rs:116,1
    - Dst: Err
      Src: /src/opendal/core/services/cloudflare-kv/src/lister.rs:117,1
    - Dst: super::core::parse_error
      Src: /src/opendal/core/services/cloudflare-kv/src/lister.rs:117,1
    - Dst: into_body
      Src: /src/opendal/core/services/cloudflare-kv/src/lister.rs:120,1
    - Dst: serde_json::from_reader
      Src: /src/opendal/core/services/cloudflare-kv/src/lister.rs:122,1
    - Dst: Result::reader
      Src: /src/opendal/core/services/cloudflare-kv/src/lister.rs:122,1
    - Dst: map_err
      Src: /src/opendal/core/services/cloudflare-kv/src/lister.rs:122,1
    - Dst: Err
      Src: /src/opendal/core/services/cloudflare-kv/src/lister.rs:125,1
    - Dst: Error::new
      Src: /src/opendal/core/services/cloudflare-kv/src/lister.rs:125,1
    - Dst: and_then
      Src: /src/opendal/core/services/cloudflare-kv/src/lister.rs:131,1
    - Dst: map_or
      Src: /src/opendal/core/services/cloudflare-kv/src/lister.rs:131,1
    - Dst: String::new
      Src: /src/opendal/core/services/cloudflare-kv/src/lister.rs:134,1
    - Dst: Option::clone
      Src: /src/opendal/core/services/cloudflare-kv/src/lister.rs:135,1
    - Dst: Option::is_empty
      Src: /src/opendal/core/services/cloudflare-kv/src/lister.rs:135,1
    - Dst: root
      Src: /src/opendal/core/services/cloudflare-kv/src/lister.rs:142,1
    - Dst: to_string
      Src: /src/opendal/core/services/cloudflare-kv/src/lister.rs:142,1
    - Dst: ends_with
      Src: /src/opendal/core/services/cloudflare-kv/src/lister.rs:144,1
    - Dst: CloudflareKvLister::handle_non_recursive_file_list
      Src: /src/opendal/core/services/cloudflare-kv/src/lister.rs:145,1
    - Dst: Ok
      Src: /src/opendal/core/services/cloudflare-kv/src/lister.rs:146,1
    - Dst: clone
      Src: /src/opendal/core/services/cloudflare-kv/src/lister.rs:150,1
    - Dst: Result::ends_with
      Src: /src/opendal/core/services/cloudflare-kv/src/lister.rs:151,1
    - Dst: Result::strip_prefix
      Src: /src/opendal/core/services/cloudflare-kv/src/lister.rs:157,1
    - Dst: trim_end_matches
      Src: /src/opendal/core/services/cloudflare-kv/src/lister.rs:158,1
    - Dst: contains
      Src: /src/opendal/core/services/cloudflare-kv/src/lister.rs:158,1
    - Dst: CloudflareKvLister::build_entry_for_item
      Src: /src/opendal/core/services/cloudflare-kv/src/lister.rs:166,1
    - Dst: push_back
      Src: /src/opendal/core/services/cloudflare-kv/src/lister.rs:167,1
    - Dst: Ok
      Src: /src/opendal/core/services/cloudflare-kv/src/lister.rs:171,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 137
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - '&mut oio::PageContext'
    constantsTouched: []
    func_position:
      end: 172
      start: 109
    functionDepth: 38
    functionLinenumber: 109
    functionLinenumberEnd: 172
    functionName: CloudflareKvLister::next_page
    functionSourceFile: /src/opendal/core/services/cloudflare-kv/src/lister.rs
    functionUses: 0
    functionsReached:
    - status
    - Result::ends_with
    - serde_json::from_reader
    - ends_with
    - clone
    - Result::reader
    - map_err
    - and_then
    - Ok
    - Result::strip_prefix
    - root
    - Option::is_empty
    - contains
    - CloudflareKvLister::build_entry_for_item
    - trim_end_matches
    - into_body
    - Some
    - CloudflareKvLister::handle_non_recursive_file_list
    - super::core::parse_error
    - to_string
    - String::new
    - push_back
    - map_or
    - Err
    - Error::new
    - list
    - Option::clone
    linkageType: ''
    returnType: Result
    signature: 'async fn next_page(&self, ctx: &mut oio::PageContext) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: to_string
      Src: /src/opendal/core/services/cloudflare-kv/src/reader.rs:44,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 4
    argNames:
    - backend
    - ctx
    - path
    - args
    argTypes:
    - CloudflareKvBackend
    - OperationContext
    - '&str'
    - OpRead
    constantsTouched: []
    func_position:
      end: 47
      start: 35
    functionDepth: 2
    functionLinenumber: 35
    functionLinenumberEnd: 47
    functionName: CloudflareKvReader::new
    functionSourceFile: /src/opendal/core/services/cloudflare-kv/src/reader.rs
    functionUses: 1
    functionsReached:
    - to_string
    linkageType: ''
    returnType: Self
    signature: 'pub(super) fn new(backend: CloudflareKvBackend,ctx: OperationContext,path:
      &str,args: OpRead,) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: as_str
      Src: /src/opendal/core/services/cloudflare-kv/src/reader.rs:53,1
    - Dst: clone
      Src: /src/opendal/core/services/cloudflare-kv/src/reader.rs:54,1
    - Dst: build_abs_path
      Src: /src/opendal/core/services/cloudflare-kv/src/reader.rs:55,1
    - Dst: root
      Src: /src/opendal/core/services/cloudflare-kv/src/reader.rs:55,1
    - Dst: get
      Src: /src/opendal/core/services/cloudflare-kv/src/reader.rs:56,1
    - Dst: status
      Src: /src/opendal/core/services/cloudflare-kv/src/reader.rs:58,1
    - Dst: Err
      Src: /src/opendal/core/services/cloudflare-kv/src/reader.rs:61,1
    - Dst: super::core::parse_error
      Src: /src/opendal/core/services/cloudflare-kv/src/reader.rs:61,1
    - Dst: into_body
      Src: /src/opendal/core/services/cloudflare-kv/src/reader.rs:64,1
    - Dst: OpStat::if_match
      Src: /src/opendal/core/services/cloudflare-kv/src/reader.rs:66,1
    - Dst: Option::is_some
      Src: /src/opendal/core/services/cloudflare-kv/src/reader.rs:66,1
    - Dst: OpStat::if_none_match
      Src: /src/opendal/core/services/cloudflare-kv/src/reader.rs:67,1
    - Dst: Option::is_some
      Src: /src/opendal/core/services/cloudflare-kv/src/reader.rs:67,1
    - Dst: OpStat::if_modified_since
      Src: /src/opendal/core/services/cloudflare-kv/src/reader.rs:68,1
    - Dst: Option::is_some
      Src: /src/opendal/core/services/cloudflare-kv/src/reader.rs:68,1
    - Dst: OpStat::if_unmodified_since
      Src: /src/opendal/core/services/cloudflare-kv/src/reader.rs:69,1
    - Dst: Option::is_some
      Src: /src/opendal/core/services/cloudflare-kv/src/reader.rs:69,1
    - Dst: metadata
      Src: /src/opendal/core/services/cloudflare-kv/src/reader.rs:71,1
    - Dst: status
      Src: /src/opendal/core/services/cloudflare-kv/src/reader.rs:73,1
    - Dst: Err
      Src: /src/opendal/core/services/cloudflare-kv/src/reader.rs:74,1
    - Dst: super::core::parse_error
      Src: /src/opendal/core/services/cloudflare-kv/src/reader.rs:74,1
    - Dst: serde_json::from_reader
      Src: /src/opendal/core/services/cloudflare-kv/src/reader.rs:78,1
    - Dst: into_body
      Src: /src/opendal/core/services/cloudflare-kv/src/reader.rs:78,1
    - Dst: reader
      Src: /src/opendal/core/services/cloudflare-kv/src/reader.rs:78,1
    - Dst: map_err
      Src: /src/opendal/core/services/cloudflare-kv/src/reader.rs:78,1
    - Dst: is_some
      Src: /src/opendal/core/services/cloudflare-kv/src/reader.rs:81,1
    - Dst: Err
      Src: /src/opendal/core/services/cloudflare-kv/src/reader.rs:82,1
    - Dst: Error::new
      Src: /src/opendal/core/services/cloudflare-kv/src/reader.rs:82,1
    - Dst: unwrap
      Src: /src/opendal/core/services/cloudflare-kv/src/reader.rs:88,1
    - Dst: OpStat::if_match
      Src: /src/opendal/core/services/cloudflare-kv/src/reader.rs:91,1
    - Dst: Err
      Src: /src/opendal/core/services/cloudflare-kv/src/reader.rs:94,1
    - Dst: Error::new
      Src: /src/opendal/core/services/cloudflare-kv/src/reader.rs:94,1
    - Dst: OpStat::if_none_match
      Src: /src/opendal/core/services/cloudflare-kv/src/reader.rs:98,1
    - Dst: Err
      Src: /src/opendal/core/services/cloudflare-kv/src/reader.rs:101,1
    - Dst: Error::new
      Src: /src/opendal/core/services/cloudflare-kv/src/reader.rs:101,1
    - Dst: "last_modified\n                .parse::<Timestamp>"
      Src: /src/opendal/core/services/cloudflare-kv/src/reader.rs:108,1
    - Dst: map_err
      Src: /src/opendal/core/services/cloudflare-kv/src/reader.rs:108,1
    - Dst: Error::new
      Src: /src/opendal/core/services/cloudflare-kv/src/reader.rs:111,1
    - Dst: OpStat::if_modified_since
      Src: /src/opendal/core/services/cloudflare-kv/src/reader.rs:114,1
    - Dst: Option::gt
      Src: /src/opendal/core/services/cloudflare-kv/src/reader.rs:115,1
    - Dst: Err
      Src: /src/opendal/core/services/cloudflare-kv/src/reader.rs:117,1
    - Dst: Error::new
      Src: /src/opendal/core/services/cloudflare-kv/src/reader.rs:117,1
    - Dst: OpStat::if_unmodified_since
      Src: /src/opendal/core/services/cloudflare-kv/src/reader.rs:124,1
    - Dst: Option::le
      Src: /src/opendal/core/services/cloudflare-kv/src/reader.rs:125,1
    - Dst: Err
      Src: /src/opendal/core/services/cloudflare-kv/src/reader.rs:127,1
    - Dst: Error::new
      Src: /src/opendal/core/services/cloudflare-kv/src/reader.rs:127,1
    - Dst: len
      Src: /src/opendal/core/services/cloudflare-kv/src/reader.rs:134,1
    - Dst: slice
      Src: /src/opendal/core/services/cloudflare-kv/src/reader.rs:135,1
    - Dst: (Vec::to_content_range
      Src: /src/opendal/core/services/cloudflare-kv/src/reader.rs:135,1
    - Dst: len
      Src: /src/opendal/core/services/cloudflare-kv/src/reader.rs:135,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/cloudflare-kv/src/reader.rs:136,1
    - Dst: Self::with_content_length
      Src: /src/opendal/core/services/cloudflare-kv/src/reader.rs:136,1
    - Dst: Ok
      Src: /src/opendal/core/services/cloudflare-kv/src/reader.rs:137,1
    - Dst: RpRead::new
      Src: /src/opendal/core/services/cloudflare-kv/src/reader.rs:138,1
    - Dst: Box::new
      Src: /src/opendal/core/services/cloudflare-kv/src/reader.rs:139,1
    CyclomaticComplexity: 23
    EdgeCount: 23
    ICount: 168
    argCount: 1
    argNames:
    - range
    argTypes:
    - BytesRange
    constantsTouched: []
    func_position:
      end: 141
      start: 51
    functionDepth: 32
    functionLinenumber: 51
    functionLinenumberEnd: 141
    functionName: CloudflareKvReader::open
    functionSourceFile: /src/opendal/core/services/cloudflare-kv/src/reader.rs
    functionUses: 0
    functionsReached:
    - Option::le
    - Option::is_some
    - status
    - OpStat::if_unmodified_since
    - serde_json::from_reader
    - Box::new
    - clone
    - is_some
    - map_err
    - get
    - reader
    - Ok
    - OpStat::if_modified_since
    - unwrap
    - as_str
    - root
    - len
    - RpRead::new
    - OpStat::if_match
    - Metadata::new
    - slice
    - into_body
    - build_abs_path
    - "last_modified\n                .parse::<Timestamp>"
    - super::core::parse_error
    - Self::with_content_length
    - metadata
    - Option::gt
    - Err
    - OpStat::if_none_match
    - Error::new
    - (Vec::to_content_range
    linkageType: ''
    returnType: Result
    signature: 'async fn open(&self, range: BytesRange) -> Result<(RpRead, Box<dyn
      oio::ReadStreamDyn>)>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::http_transport
      Src: /src/opendal/core/services/cloudflare-kv/src/core.rs:42,1
    - Dst: Self::send
      Src: /src/opendal/core/services/cloudflare-kv/src/core.rs:42,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - ctx
    - req
    argTypes:
    - '&OperationContext'
    - Request<Buffer>
    constantsTouched: []
    func_position:
      end: 43
      start: 41
    functionDepth: 37
    functionLinenumber: 41
    functionLinenumberEnd: 43
    functionName: CloudflareKvCore::send
    functionSourceFile: /src/opendal/core/services/cloudflare-kv/src/core.rs
    functionUses: 5
    functionsReached:
    - Result::http_transport
    - Self::send
    linkageType: ''
    returnType: Result
    signature: 'async fn send(&self, ctx: &OperationContext, req: Request<Buffer>)
      -> Result<Response<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: request::Builder::header
      Src: /src/opendal/core/services/cloudflare-kv/src/core.rs:46,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - req
    argTypes:
    - request::Builder
    constantsTouched: []
    func_position:
      end: 47
      start: 45
    functionDepth: 0
    functionLinenumber: 45
    functionLinenumberEnd: 47
    functionName: CloudflareKvCore::sign
    functionSourceFile: /src/opendal/core/services/cloudflare-kv/src/core.rs
    functionUses: 5
    functionsReached:
    - request::Builder::header
    linkageType: ''
    returnType: request::Builder
    signature: 'fn sign(&self, req: request::Builder) -> request::Builder'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 55
      start: 49
    functionDepth: 0
    functionLinenumber: 49
    functionLinenumberEnd: 55
    functionName: CloudflareKvCore::url_prefix
    functionSourceFile: /src/opendal/core/services/cloudflare-kv/src/core.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: String
    signature: fn url_prefix(&self) -> String
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Request::get
      Src: /src/opendal/core/services/cloudflare-kv/src/core.rs:66,1
    - Dst: CloudflareKvCore::sign
      Src: /src/opendal/core/services/cloudflare-kv/src/core.rs:67,1
    - Dst: request::Builder::extension
      Src: /src/opendal/core/services/cloudflare-kv/src/core.rs:69,1
    - Dst: extension
      Src: /src/opendal/core/services/cloudflare-kv/src/core.rs:69,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/cloudflare-kv/src/core.rs:71,1
    - Dst: body
      Src: /src/opendal/core/services/cloudflare-kv/src/core.rs:69,1
    - Dst: Buffer::new
      Src: /src/opendal/core/services/cloudflare-kv/src/core.rs:72,1
    - Dst: map_err
      Src: /src/opendal/core/services/cloudflare-kv/src/core.rs:69,1
    - Dst: CloudflareKvCore::send
      Src: /src/opendal/core/services/cloudflare-kv/src/core.rs:75,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 17
    argCount: 2
    argNames:
    - ctx
    - path
    argTypes:
    - '&OperationContext'
    - '&str'
    constantsTouched: []
    func_position:
      end: 76
      start: 59
    functionDepth: 38
    functionLinenumber: 59
    functionLinenumberEnd: 76
    functionName: CloudflareKvCore::metadata
    functionSourceFile: /src/opendal/core/services/cloudflare-kv/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - extension
    - Request::get
    - Buffer::new
    - request::Builder::extension
    - CloudflareKvCore::sign
    - body
    - CloudflareKvCore::send
    - ServiceOperation
    linkageType: ''
    returnType: Result
    signature: 'pub async fn metadata(&self, ctx: &OperationContext, path: &str) ->
      Result<Response<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Request::get
      Src: /src/opendal/core/services/cloudflare-kv/src/core.rs:80,1
    - Dst: CloudflareKvCore::sign
      Src: /src/opendal/core/services/cloudflare-kv/src/core.rs:82,1
    - Dst: request::Builder::extension
      Src: /src/opendal/core/services/cloudflare-kv/src/core.rs:84,1
    - Dst: extension
      Src: /src/opendal/core/services/cloudflare-kv/src/core.rs:84,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/cloudflare-kv/src/core.rs:86,1
    - Dst: body
      Src: /src/opendal/core/services/cloudflare-kv/src/core.rs:84,1
    - Dst: Buffer::new
      Src: /src/opendal/core/services/cloudflare-kv/src/core.rs:87,1
    - Dst: map_err
      Src: /src/opendal/core/services/cloudflare-kv/src/core.rs:84,1
    - Dst: CloudflareKvCore::send
      Src: /src/opendal/core/services/cloudflare-kv/src/core.rs:90,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 17
    argCount: 2
    argNames:
    - ctx
    - path
    argTypes:
    - '&OperationContext'
    - '&str'
    constantsTouched: []
    func_position:
      end: 91
      start: 78
    functionDepth: 38
    functionLinenumber: 78
    functionLinenumberEnd: 91
    functionName: CloudflareKvCore::get
    functionSourceFile: /src/opendal/core/services/cloudflare-kv/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - extension
    - Request::get
    - Buffer::new
    - request::Builder::extension
    - CloudflareKvCore::sign
    - body
    - CloudflareKvCore::send
    - ServiceOperation
    linkageType: ''
    returnType: Result
    signature: 'pub async fn get(&self, ctx: &OperationContext, path: &str) -> Result<Response<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Request::put
      Src: /src/opendal/core/services/cloudflare-kv/src/core.rs:102,1
    - Dst: CloudflareKvCore::sign
      Src: /src/opendal/core/services/cloudflare-kv/src/core.rs:103,1
    - Dst: request::Builder::extension
      Src: /src/opendal/core/services/cloudflare-kv/src/core.rs:104,1
    - Dst: extension
      Src: /src/opendal/core/services/cloudflare-kv/src/core.rs:104,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/cloudflare-kv/src/core.rs:106,1
    - Dst: Multipart::new
      Src: /src/opendal/core/services/cloudflare-kv/src/core.rs:108,1
    - Dst: Self::part
      Src: /src/opendal/core/services/cloudflare-kv/src/core.rs:108,1
    - Dst: FormDataPart::new
      Src: /src/opendal/core/services/cloudflare-kv/src/core.rs:109,1
    - Dst: Self::content
      Src: /src/opendal/core/services/cloudflare-kv/src/core.rs:109,1
    - Dst: Self::part
      Src: /src/opendal/core/services/cloudflare-kv/src/core.rs:108,1
    - Dst: FormDataPart::new
      Src: /src/opendal/core/services/cloudflare-kv/src/core.rs:111,1
    - Dst: Self::content
      Src: /src/opendal/core/services/cloudflare-kv/src/core.rs:111,1
    - Dst: serde_json::to_string
      Src: /src/opendal/core/services/cloudflare-kv/src/core.rs:112,1
    - Dst: map_err
      Src: /src/opendal/core/services/cloudflare-kv/src/core.rs:112,1
    - Dst: part
      Src: /src/opendal/core/services/cloudflare-kv/src/core.rs:116,1
    - Dst: FormDataPart::new
      Src: /src/opendal/core/services/cloudflare-kv/src/core.rs:117,1
    - Dst: Self::content
      Src: /src/opendal/core/services/cloudflare-kv/src/core.rs:117,1
    - Dst: as_secs
      Src: /src/opendal/core/services/cloudflare-kv/src/core.rs:117,1
    - Dst: to_string
      Src: /src/opendal/core/services/cloudflare-kv/src/core.rs:117,1
    - Dst: apply
      Src: /src/opendal/core/services/cloudflare-kv/src/core.rs:121,1
    - Dst: CloudflareKvCore::send
      Src: /src/opendal/core/services/cloudflare-kv/src/core.rs:123,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 44
    argCount: 4
    argNames:
    - ctx
    - path
    - value
    - metadata
    argTypes:
    - '&OperationContext'
    - '&str'
    - Buffer
    - CfKvMetadata
    constantsTouched: []
    func_position:
      end: 124
      start: 93
    functionDepth: 36
    functionLinenumber: 93
    functionLinenumberEnd: 124
    functionName: CloudflareKvCore::set
    functionSourceFile: /src/opendal/core/services/cloudflare-kv/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - extension
    - Multipart::new
    - as_secs
    - request::Builder::extension
    - Request::put
    - CloudflareKvCore::sign
    - Self::content
    - to_string
    - apply
    - CloudflareKvCore::send
    - FormDataPart::new
    - Self::part
    - ServiceOperation
    - serde_json::to_string
    - part
    linkageType: ''
    returnType: Result
    signature: 'pub async fn set(&self,ctx: &OperationContext,path: &str,value: Buffer,metadata:
      CfKvMetadata,) -> Result<Response<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Request::post
      Src: /src/opendal/core/services/cloudflare-kv/src/core.rs:133,1
    - Dst: CloudflareKvCore::sign
      Src: /src/opendal/core/services/cloudflare-kv/src/core.rs:135,1
    - Dst: request::Builder::extension
      Src: /src/opendal/core/services/cloudflare-kv/src/core.rs:137,1
    - Dst: extension
      Src: /src/opendal/core/services/cloudflare-kv/src/core.rs:137,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/cloudflare-kv/src/core.rs:139,1
    - Dst: http::header
      Src: /src/opendal/core/services/cloudflare-kv/src/core.rs:137,1
    - Dst: body
      Src: /src/opendal/core/services/cloudflare-kv/src/core.rs:137,1
    - Dst: Buffer::from
      Src: /src/opendal/core/services/cloudflare-kv/src/core.rs:141,1
    - Dst: to_string
      Src: /src/opendal/core/services/cloudflare-kv/src/core.rs:141,1
    - Dst: map_err
      Src: /src/opendal/core/services/cloudflare-kv/src/core.rs:137,1
    - Dst: CloudflareKvCore::send
      Src: /src/opendal/core/services/cloudflare-kv/src/core.rs:144,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 23
    argCount: 2
    argNames:
    - ctx
    - paths
    argTypes:
    - '&OperationContext'
    - '&[String]'
    constantsTouched: []
    func_position:
      end: 145
      start: 126
    functionDepth: 40
    functionLinenumber: 126
    functionLinenumberEnd: 145
    functionName: CloudflareKvCore::delete
    functionSourceFile: /src/opendal/core/services/cloudflare-kv/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - extension
    - to_string
    - request::Builder::extension
    - CloudflareKvCore::sign
    - http::header
    - Request::post
    - body
    - CloudflareKvCore::send
    - ServiceOperation
    - Buffer::from
    linkageType: ''
    returnType: Result
    signature: 'pub async fn delete(&self,ctx: &OperationContext,paths: &[String],)
      -> Result<Response<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: QueryPairsWriter::new
      Src: /src/opendal/core/services/cloudflare-kv/src/core.rs:155,1
    - Dst: Option::is_empty
      Src: /src/opendal/core/services/cloudflare-kv/src/core.rs:157,1
    - Dst: Result::push
      Src: /src/opendal/core/services/cloudflare-kv/src/core.rs:159,1
    - Dst: Result::push
      Src: /src/opendal/core/services/cloudflare-kv/src/core.rs:161,1
    - Dst: Result::unwrap_or
      Src: /src/opendal/core/services/cloudflare-kv/src/core.rs:161,1
    - Dst: to_string
      Src: /src/opendal/core/services/cloudflare-kv/src/core.rs:161,1
    - Dst: Result::push
      Src: /src/opendal/core/services/cloudflare-kv/src/core.rs:162,1
    - Dst: percent_encode_path
      Src: /src/opendal/core/services/cloudflare-kv/src/core.rs:162,1
    - Dst: Request::get
      Src: /src/opendal/core/services/cloudflare-kv/src/core.rs:164,1
    - Dst: Result::finish
      Src: /src/opendal/core/services/cloudflare-kv/src/core.rs:164,1
    - Dst: CloudflareKvCore::sign
      Src: /src/opendal/core/services/cloudflare-kv/src/core.rs:166,1
    - Dst: request::Builder::extension
      Src: /src/opendal/core/services/cloudflare-kv/src/core.rs:167,1
    - Dst: extension
      Src: /src/opendal/core/services/cloudflare-kv/src/core.rs:167,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/cloudflare-kv/src/core.rs:169,1
    - Dst: body
      Src: /src/opendal/core/services/cloudflare-kv/src/core.rs:167,1
    - Dst: Buffer::new
      Src: /src/opendal/core/services/cloudflare-kv/src/core.rs:170,1
    - Dst: map_err
      Src: /src/opendal/core/services/cloudflare-kv/src/core.rs:167,1
    - Dst: CloudflareKvCore::send
      Src: /src/opendal/core/services/cloudflare-kv/src/core.rs:173,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 46
    argCount: 4
    argNames:
    - ctx
    - prefix
    - limit
    - cursor
    argTypes:
    - '&OperationContext'
    - '&str'
    - Option<usize>
    - Option<String>
    constantsTouched: []
    func_position:
      end: 174
      start: 147
    functionDepth: 38
    functionLinenumber: 147
    functionLinenumberEnd: 174
    functionName: CloudflareKvCore::list
    functionSourceFile: /src/opendal/core/services/cloudflare-kv/src/core.rs
    functionUses: 0
    functionsReached:
    - QueryPairsWriter::new
    - to_string
    - Request::get
    - extension
    - CloudflareKvCore::sign
    - request::Builder::extension
    - Buffer::new
    - map_err
    - body
    - CloudflareKvCore::send
    - Result::finish
    - Result::push
    - Option::is_empty
    - percent_encode_path
    - ServiceOperation
    - Result::unwrap_or
    linkageType: ''
    returnType: Result
    signature: 'pub async fn list(&self,ctx: &OperationContext,prefix: &str,limit:
      Option<usize>,cursor: Option<String>,) -> Result<Response<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: is_empty
      Src: /src/opendal/core/services/cloudflare-kv/src/core.rs:226,1
    - Dst: Some
      Src: /src/opendal/core/services/cloudflare-kv/src/core.rs:232,1
    - Dst: Some
      Src: /src/opendal/core/services/cloudflare-kv/src/core.rs:234,1
    - Dst: Some
      Src: /src/opendal/core/services/cloudflare-kv/src/core.rs:236,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 16
    argCount: 1
    argNames:
    - errors
    argTypes:
    - Vec<CfKvError>
    constantsTouched: []
    func_position:
      end: 239
      start: 225
    functionDepth: 4
    functionLinenumber: 225
    functionLinenumberEnd: 239
    functionName: error::parse_cfkv_error_code
    functionSourceFile: /src/opendal/core/services/cloudflare-kv/src/core.rs
    functionUses: 0
    functionsReached:
    - Some
    - is_empty
    linkageType: ''
    returnType: Option
    signature: 'pub(crate) fn parse_cfkv_error_code(errors: Vec<CfKvError>) -> Option<(ErrorKind,
      bool)>'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 3
    argNames:
    - core
    - ctx
    - path
    argTypes:
    - Arc<CloudflareKvCore>
    - OperationContext
    - String
    constantsTouched: []
    func_position:
      end: 37
      start: 35
    functionDepth: 0
    functionLinenumber: 35
    functionLinenumberEnd: 37
    functionName: CloudflareWriter::new
    functionSourceFile: /src/opendal/core/services/cloudflare-kv/src/writer.rs
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(core: Arc<CloudflareKvCore>, ctx: OperationContext, path:
      String) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_tmp_path_of
      Src: /src/opendal/core/services/cloudflare-kv/src/writer.rs:43,1
    - Dst: Timestamp::now
      Src: /src/opendal/core/services/cloudflare-kv/src/writer.rs:44,1
    - Dst: Self::to_string
      Src: /src/opendal/core/services/cloudflare-kv/src/writer.rs:44,1
    - Dst: Result::len
      Src: /src/opendal/core/services/cloudflare-kv/src/writer.rs:45,1
    - Dst: ends_with
      Src: /src/opendal/core/services/cloudflare-kv/src/writer.rs:46,1
    - Dst: set
      Src: /src/opendal/core/services/cloudflare-kv/src/writer.rs:49,1
    - Dst: clone
      Src: /src/opendal/core/services/cloudflare-kv/src/writer.rs:51,1
    - Dst: status
      Src: /src/opendal/core/services/cloudflare-kv/src/writer.rs:54,1
    - Dst: Metadata::default
      Src: /src/opendal/core/services/cloudflare-kv/src/writer.rs:58,1
    - Dst: anyhow::Result::set_etag
      Src: /src/opendal/core/services/cloudflare-kv/src/writer.rs:59,1
    - Dst: anyhow::Result::set_last_modified
      Src: /src/opendal/core/services/cloudflare-kv/src/writer.rs:60,1
    - Dst: last_modified.parse::<Timestamp>
      Src: /src/opendal/core/services/cloudflare-kv/src/writer.rs:60,1
    - Dst: anyhow::Result::set_content_length
      Src: /src/opendal/core/services/cloudflare-kv/src/writer.rs:61,1
    - Dst: Ok
      Src: /src/opendal/core/services/cloudflare-kv/src/writer.rs:63,1
    - Dst: Err
      Src: /src/opendal/core/services/cloudflare-kv/src/writer.rs:65,1
    - Dst: super::core::parse_error
      Src: /src/opendal/core/services/cloudflare-kv/src/writer.rs:65,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 48
    argCount: 1
    argNames:
    - bs
    argTypes:
    - Buffer
    constantsTouched: []
    func_position:
      end: 67
      start: 41
    functionDepth: 36
    functionLinenumber: 41
    functionLinenumberEnd: 67
    functionName: CloudflareWriter::write_once
    functionSourceFile: /src/opendal/core/services/cloudflare-kv/src/writer.rs
    functionUses: 0
    functionsReached:
    - Timestamp::now
    - build_tmp_path_of
    - anyhow::Result::set_content_length
    - Metadata::default
    - status
    - Ok
    - Self::to_string
    - anyhow::Result::set_last_modified
    - ends_with
    - set
    - clone
    - Err
    - last_modified.parse::<Timestamp>
    - Result::len
    - super::core::parse_error
    - anyhow::Result::set_etag
    linkageType: ''
    returnType: Result
    signature: 'async fn write_once(&self, bs: Buffer) -> Result<Metadata>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: register::<CloudflareKv>
      Src: /src/opendal/core/services/cloudflare-kv/src/lib.rs:39,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - registry
    argTypes:
    - '&opendal_core::OperatorRegistry'
    constantsTouched: []
    func_position:
      end: 40
      start: 38
    functionDepth: 0
    functionLinenumber: 38
    functionLinenumberEnd: 40
    functionName: register_cloudflare_kv_service
    functionSourceFile: /src/opendal/core/services/cloudflare-kv/src/lib.rs
    functionUses: 1
    functionsReached:
    - register::<CloudflareKv>
    linkageType: ''
    returnType: void
    signature: 'pub fn register_cloudflare_kv_service(registry: &opendal_core::OperatorRegistry)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::debug_struct
      Src: /src/opendal/core/services/cloudflare-kv/src/backend.rs:44,1
    - Dst: field
      Src: /src/opendal/core/services/cloudflare-kv/src/backend.rs:44,1
    - Dst: finish_non_exhaustive
      Src: /src/opendal/core/services/cloudflare-kv/src/backend.rs:44,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - f
    argTypes:
    - '&mut std::fmt::Formatter<''_>'
    constantsTouched: []
    func_position:
      end: 47
      start: 43
    functionDepth: 5
    functionLinenumber: 43
    functionLinenumberEnd: 47
    functionName: CloudflareKvBuilder::fmt
    functionSourceFile: /src/opendal/core/services/cloudflare-kv/src/backend.rs
    functionUses: 0
    functionsReached:
    - field
    - Result::debug_struct
    - finish_non_exhaustive
    linkageType: ''
    returnType: std::fmt::Result
    signature: 'fn fmt(&self, f: &mut std::fmt::Formatter<''_>) -> std::fmt::Result'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self::is_empty
      Src: /src/opendal/core/services/cloudflare-kv/src/backend.rs:53,1
    - Dst: Some
      Src: /src/opendal/core/services/cloudflare-kv/src/backend.rs:54,1
    - Dst: Self::to_string
      Src: /src/opendal/core/services/cloudflare-kv/src/backend.rs:54,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 1
    argNames:
    - api_token
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 57
      start: 52
    functionDepth: 4
    functionLinenumber: 52
    functionLinenumberEnd: 57
    functionName: CloudflareKvBuilder::api_token
    functionSourceFile: /src/opendal/core/services/cloudflare-kv/src/backend.rs
    functionUses: 0
    functionsReached:
    - Self::is_empty
    - Self::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn api_token(mut self, api_token: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self::is_empty
      Src: /src/opendal/core/services/cloudflare-kv/src/backend.rs:61,1
    - Dst: Some
      Src: /src/opendal/core/services/cloudflare-kv/src/backend.rs:62,1
    - Dst: Self::to_string
      Src: /src/opendal/core/services/cloudflare-kv/src/backend.rs:62,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 1
    argNames:
    - account_id
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 65
      start: 60
    functionDepth: 4
    functionLinenumber: 60
    functionLinenumberEnd: 65
    functionName: CloudflareKvBuilder::account_id
    functionSourceFile: /src/opendal/core/services/cloudflare-kv/src/backend.rs
    functionUses: 0
    functionsReached:
    - Self::is_empty
    - Self::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn account_id(mut self, account_id: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self::is_empty
      Src: /src/opendal/core/services/cloudflare-kv/src/backend.rs:69,1
    - Dst: Some
      Src: /src/opendal/core/services/cloudflare-kv/src/backend.rs:70,1
    - Dst: Self::to_string
      Src: /src/opendal/core/services/cloudflare-kv/src/backend.rs:70,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 1
    argNames:
    - namespace_id
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 73
      start: 68
    functionDepth: 4
    functionLinenumber: 68
    functionLinenumberEnd: 73
    functionName: CloudflareKvBuilder::namespace_id
    functionSourceFile: /src/opendal/core/services/cloudflare-kv/src/backend.rs
    functionUses: 0
    functionsReached:
    - Self::is_empty
    - Self::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn namespace_id(mut self, namespace_id: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Some
      Src: /src/opendal/core/services/cloudflare-kv/src/backend.rs:79,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - ttl
    argTypes:
    - Duration
    constantsTouched: []
    func_position:
      end: 81
      start: 78
    functionDepth: 0
    functionLinenumber: 78
    functionLinenumberEnd: 81
    functionName: CloudflareKvBuilder::default_ttl
    functionSourceFile: /src/opendal/core/services/cloudflare-kv/src/backend.rs
    functionUses: 0
    functionsReached:
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn default_ttl(mut self, ttl: Duration) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::is_empty
      Src: /src/opendal/core/services/cloudflare-kv/src/backend.rs:85,1
    - Dst: Some
      Src: /src/opendal/core/services/cloudflare-kv/src/backend.rs:88,1
    - Dst: Result::to_string
      Src: /src/opendal/core/services/cloudflare-kv/src/backend.rs:88,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - root
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 92
      start: 84
    functionDepth: 4
    functionLinenumber: 84
    functionLinenumberEnd: 92
    functionName: CloudflareKvBuilder::root
    functionSourceFile: /src/opendal/core/services/cloudflare-kv/src/backend.rs
    functionUses: 0
    functionsReached:
    - Result::is_empty
    - Result::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn root(mut self, root: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: format_authorization_by_bearer
      Src: /src/opendal/core/services/cloudflare-kv/src/backend.rs:100,1
    - Dst: Err
      Src: /src/opendal/core/services/cloudflare-kv/src/backend.rs:102,1
    - Dst: Error::new
      Src: /src/opendal/core/services/cloudflare-kv/src/backend.rs:102,1
    - Dst: clone
      Src: /src/opendal/core/services/cloudflare-kv/src/backend.rs:109,1
    - Dst: Err
      Src: /src/opendal/core/services/cloudflare-kv/src/backend.rs:110,1
    - Dst: Error::new
      Src: /src/opendal/core/services/cloudflare-kv/src/backend.rs:110,1
    - Dst: clone
      Src: /src/opendal/core/services/cloudflare-kv/src/backend.rs:116,1
    - Dst: Err
      Src: /src/opendal/core/services/cloudflare-kv/src/backend.rs:117,1
    - Dst: Error::new
      Src: /src/opendal/core/services/cloudflare-kv/src/backend.rs:117,1
    - Dst: Duration::from_secs
      Src: /src/opendal/core/services/cloudflare-kv/src/backend.rs:125,1
    - Dst: Err
      Src: /src/opendal/core/services/cloudflare-kv/src/backend.rs:127,1
    - Dst: Error::new
      Src: /src/opendal/core/services/cloudflare-kv/src/backend.rs:127,1
    - Dst: normalize_root
      Src: /src/opendal/core/services/cloudflare-kv/src/backend.rs:133,1
    - Dst: clone
      Src: /src/opendal/core/services/cloudflare-kv/src/backend.rs:134,1
    - Dst: unwrap_or_else
      Src: /src/opendal/core/services/cloudflare-kv/src/backend.rs:134,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/cloudflare-kv/src/backend.rs:137,1
    - Dst: as_str
      Src: /src/opendal/core/services/cloudflare-kv/src/backend.rs:134,1
    - Dst: Ok
      Src: /src/opendal/core/services/cloudflare-kv/src/backend.rs:141,1
    - Dst: Arc::new
      Src: /src/opendal/core/services/cloudflare-kv/src/backend.rs:142,1
    - Dst: ServiceInfo::new
      Src: /src/opendal/core/services/cloudflare-kv/src/backend.rs:147,1
    - Dst: Some
      Src: /src/opendal/core/services/cloudflare-kv/src/backend.rs:165,1
    - Dst: Some
      Src: /src/opendal/core/services/cloudflare-kv/src/backend.rs:172,1
    - Dst: Default::default
      Src: /src/opendal/core/services/cloudflare-kv/src/backend.rs:174,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 62
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 178
      start: 98
    functionDepth: 37
    functionLinenumber: 98
    functionLinenumberEnd: 178
    functionName: CloudflareKvBuilder::build
    functionSourceFile: /src/opendal/core/services/cloudflare-kv/src/backend.rs
    functionUses: 0
    functionsReached:
    - format_authorization_by_bearer
    - ServiceInfo::new
    - Ok
    - Arc::new
    - Default::default
    - clone
    - normalize_root
    - Error::new
    - Err
    - as_str
    - Some
    - '&str::to_string'
    - Duration::from_secs
    - unwrap_or_else
    linkageType: ''
    returnType: Result
    signature: fn build(self) -> Result<impl Service>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: clone
      Src: /src/opendal/core/services/cloudflare-kv/src/backend.rs:194,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 195
      start: 193
    functionDepth: 2
    functionLinenumber: 193
    functionLinenumberEnd: 195
    functionName: CloudflareKvBackend::info
    functionSourceFile: /src/opendal/core/services/cloudflare-kv/src/backend.rs
    functionUses: 0
    functionsReached:
    - clone
    linkageType: ''
    returnType: ServiceInfo
    signature: fn info(&self) -> ServiceInfo
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 199
      start: 197
    functionDepth: 0
    functionLinenumber: 197
    functionLinenumberEnd: 199
    functionName: CloudflareKvBackend::capability
    functionSourceFile: /src/opendal/core/services/cloudflare-kv/src/backend.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Capability
    signature: fn capability(&self) -> Capability
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/cloudflare-kv/src/backend.rs:207,1
    - Dst: root
      Src: /src/opendal/core/services/cloudflare-kv/src/backend.rs:207,1
    - Dst: build_abs_path
      Src: /src/opendal/core/services/cloudflare-kv/src/backend.rs:209,1
    - Dst: root
      Src: /src/opendal/core/services/cloudflare-kv/src/backend.rs:209,1
    - Dst: Ok
      Src: /src/opendal/core/services/cloudflare-kv/src/backend.rs:210,1
    - Dst: RpCreateDir::default
      Src: /src/opendal/core/services/cloudflare-kv/src/backend.rs:210,1
    - Dst: trim_start_matches
      Src: /src/opendal/core/services/cloudflare-kv/src/backend.rs:214,1
    - Dst: trim_end_matches
      Src: /src/opendal/core/services/cloudflare-kv/src/backend.rs:214,1
    - Dst: split
      Src: /src/opendal/core/services/cloudflare-kv/src/backend.rs:214,1
    - Dst: collect
      Src: /src/opendal/core/services/cloudflare-kv/src/backend.rs:214,1
    - Dst: String::from
      Src: /src/opendal/core/services/cloudflare-kv/src/backend.rs:221,1
    - Dst: Self::ends_with
      Src: /src/opendal/core/services/cloudflare-kv/src/backend.rs:224,1
    - Dst: Self::push
      Src: /src/opendal/core/services/cloudflare-kv/src/backend.rs:225,1
    - Dst: Self::push_str
      Src: /src/opendal/core/services/cloudflare-kv/src/backend.rs:227,1
    - Dst: Self::push
      Src: /src/opendal/core/services/cloudflare-kv/src/backend.rs:228,1
    - Dst: build_tmp_path_of
      Src: /src/opendal/core/services/cloudflare-kv/src/backend.rs:232,1
    - Dst: Timestamp::now
      Src: /src/opendal/core/services/cloudflare-kv/src/backend.rs:233,1
    - Dst: Self::to_string
      Src: /src/opendal/core/services/cloudflare-kv/src/backend.rs:233,1
    - Dst: set
      Src: /src/opendal/core/services/cloudflare-kv/src/backend.rs:239,1
    - Dst: Buffer::new
      Src: /src/opendal/core/services/cloudflare-kv/src/backend.rs:240,1
    - Dst: Ok
      Src: /src/opendal/core/services/cloudflare-kv/src/backend.rs:244,1
    - Dst: RpCreateDir::default
      Src: /src/opendal/core/services/cloudflare-kv/src/backend.rs:244,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 60
    argCount: 3
    argNames:
    - ctx
    - path
    - _args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpCreateDir
    constantsTouched: []
    func_position:
      end: 245
      start: 201
    functionDepth: 32
    functionLinenumber: 201
    functionLinenumberEnd: 245
    functionName: CloudflareKvBackend::create_dir
    functionSourceFile: /src/opendal/core/services/cloudflare-kv/src/backend.rs
    functionUses: 0
    functionsReached:
    - trim_start_matches
    - collect
    - build_tmp_path_of
    - Self::ends_with
    - Timestamp::now
    - RpCreateDir::default
    - Ok
    - Self::to_string
    - Self::push
    - Buffer::new
    - trim_end_matches
    - split
    - String::from
    - build_abs_path
    - set
    - root
    - Self::push_str
    linkageType: ''
    returnType: Result
    signature: 'async fn create_dir(&self,ctx: &OperationContext,path: &str,_args:
      OpCreateDir,) -> Result<RpCreateDir>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/cloudflare-kv/src/backend.rs:248,1
    - Dst: root
      Src: /src/opendal/core/services/cloudflare-kv/src/backend.rs:248,1
    - Dst: trim_end_matches
      Src: /src/opendal/core/services/cloudflare-kv/src/backend.rs:249,1
    - Dst: metadata
      Src: /src/opendal/core/services/cloudflare-kv/src/backend.rs:251,1
    - Dst: status
      Src: /src/opendal/core/services/cloudflare-kv/src/backend.rs:254,1
    - Dst: ends_with
      Src: /src/opendal/core/services/cloudflare-kv/src/backend.rs:256,1
    - Dst: status
      Src: /src/opendal/core/services/cloudflare-kv/src/backend.rs:256,1
    - Dst: list
      Src: /src/opendal/core/services/cloudflare-kv/src/backend.rs:258,1
    - Dst: status
      Src: /src/opendal/core/services/cloudflare-kv/src/backend.rs:260,1
    - Dst: into_body
      Src: /src/opendal/core/services/cloudflare-kv/src/backend.rs:261,1
    - Dst: serde_json::from_reader
      Src: /src/opendal/core/services/cloudflare-kv/src/backend.rs:262,1
    - Dst: reader
      Src: /src/opendal/core/services/cloudflare-kv/src/backend.rs:262,1
    - Dst: map_err
      Src: /src/opendal/core/services/cloudflare-kv/src/backend.rs:262,1
    - Dst: is_empty
      Src: /src/opendal/core/services/cloudflare-kv/src/backend.rs:267,1
    - Dst: Ok
      Src: /src/opendal/core/services/cloudflare-kv/src/backend.rs:269,1
    - Dst: RpStat::new
      Src: /src/opendal/core/services/cloudflare-kv/src/backend.rs:269,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/cloudflare-kv/src/backend.rs:269,1
    - Dst: Err
      Src: /src/opendal/core/services/cloudflare-kv/src/backend.rs:273,1
    - Dst: Error::new
      Src: /src/opendal/core/services/cloudflare-kv/src/backend.rs:273,1
    - Dst: Err
      Src: /src/opendal/core/services/cloudflare-kv/src/backend.rs:281,1
    - Dst: super::core::parse_error
      Src: /src/opendal/core/services/cloudflare-kv/src/backend.rs:281,1
    - Dst: into_body
      Src: /src/opendal/core/services/cloudflare-kv/src/backend.rs:284,1
    - Dst: serde_json::from_reader
      Src: /src/opendal/core/services/cloudflare-kv/src/backend.rs:286,1
    - Dst: reader
      Src: /src/opendal/core/services/cloudflare-kv/src/backend.rs:286,1
    - Dst: map_err
      Src: /src/opendal/core/services/cloudflare-kv/src/backend.rs:286,1
    - Dst: Err
      Src: /src/opendal/core/services/cloudflare-kv/src/backend.rs:289,1
    - Dst: Error::new
      Src: /src/opendal/core/services/cloudflare-kv/src/backend.rs:289,1
    - Dst: ends_with
      Src: /src/opendal/core/services/cloudflare-kv/src/backend.rs:297,1
    - Dst: Err
      Src: /src/opendal/core/services/cloudflare-kv/src/backend.rs:298,1
    - Dst: Error::new
      Src: /src/opendal/core/services/cloudflare-kv/src/backend.rs:298,1
    - Dst: Err
      Src: /src/opendal/core/services/cloudflare-kv/src/backend.rs:307,1
    - Dst: Error::new
      Src: /src/opendal/core/services/cloudflare-kv/src/backend.rs:307,1
    - Dst: OpStat::if_match
      Src: /src/opendal/core/services/cloudflare-kv/src/backend.rs:315,1
    - Dst: Err
      Src: /src/opendal/core/services/cloudflare-kv/src/backend.rs:318,1
    - Dst: Error::new
      Src: /src/opendal/core/services/cloudflare-kv/src/backend.rs:318,1
    - Dst: OpStat::if_none_match
      Src: /src/opendal/core/services/cloudflare-kv/src/backend.rs:322,1
    - Dst: Err
      Src: /src/opendal/core/services/cloudflare-kv/src/backend.rs:325,1
    - Dst: Error::new
      Src: /src/opendal/core/services/cloudflare-kv/src/backend.rs:325,1
    - Dst: "last_modified\n            .parse::<Timestamp>"
      Src: /src/opendal/core/services/cloudflare-kv/src/backend.rs:332,1
    - Dst: map_err
      Src: /src/opendal/core/services/cloudflare-kv/src/backend.rs:332,1
    - Dst: Error::new
      Src: /src/opendal/core/services/cloudflare-kv/src/backend.rs:335,1
    - Dst: OpStat::if_modified_since
      Src: /src/opendal/core/services/cloudflare-kv/src/backend.rs:338,1
    - Dst: Option::gt
      Src: /src/opendal/core/services/cloudflare-kv/src/backend.rs:339,1
    - Dst: Err
      Src: /src/opendal/core/services/cloudflare-kv/src/backend.rs:341,1
    - Dst: Error::new
      Src: /src/opendal/core/services/cloudflare-kv/src/backend.rs:341,1
    - Dst: OpStat::if_unmodified_since
      Src: /src/opendal/core/services/cloudflare-kv/src/backend.rs:348,1
    - Dst: Option::le
      Src: /src/opendal/core/services/cloudflare-kv/src/backend.rs:349,1
    - Dst: Err
      Src: /src/opendal/core/services/cloudflare-kv/src/backend.rs:351,1
    - Dst: Error::new
      Src: /src/opendal/core/services/cloudflare-kv/src/backend.rs:351,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/cloudflare-kv/src/backend.rs:357,1
    - Dst: Self::with_etag
      Src: /src/opendal/core/services/cloudflare-kv/src/backend.rs:357,1
    - Dst: Self::with_content_length
      Src: /src/opendal/core/services/cloudflare-kv/src/backend.rs:357,1
    - Dst: Self::with_last_modified
      Src: /src/opendal/core/services/cloudflare-kv/src/backend.rs:357,1
    - Dst: last_modified.parse::<Timestamp>
      Src: /src/opendal/core/services/cloudflare-kv/src/backend.rs:364,1
    - Dst: Ok
      Src: /src/opendal/core/services/cloudflare-kv/src/backend.rs:366,1
    - Dst: RpStat::new
      Src: /src/opendal/core/services/cloudflare-kv/src/backend.rs:366,1
    CyclomaticComplexity: 27
    EdgeCount: 27
    ICount: 171
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpStat
    constantsTouched: []
    func_position:
      end: 367
      start: 247
    functionDepth: 32
    functionLinenumber: 247
    functionLinenumberEnd: 367
    functionName: CloudflareKvBackend::stat
    functionSourceFile: /src/opendal/core/services/cloudflare-kv/src/backend.rs
    functionUses: 0
    functionsReached:
    - Option::le
    - status
    - OpStat::if_unmodified_since
    - serde_json::from_reader
    - ends_with
    - Self::with_last_modified
    - Self::with_etag
    - map_err
    - reader
    - Ok
    - OpStat::if_modified_since
    - root
    - last_modified.parse::<Timestamp>
    - OpStat::if_match
    - Metadata::new
    - trim_end_matches
    - into_body
    - build_abs_path
    - is_empty
    - super::core::parse_error
    - "last_modified\n            .parse::<Timestamp>"
    - Self::with_content_length
    - metadata
    - RpStat::new
    - Option::gt
    - Err
    - Error::new
    - list
    - OpStat::if_none_match
    linkageType: ''
    returnType: Result
    signature: 'async fn stat(&self, ctx: &OperationContext, path: &str, args: OpStat)
      -> Result<RpStat>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/core/services/cloudflare-kv/src/backend.rs:370,1
    - Dst: oio::StreamReader::new
      Src: /src/opendal/core/services/cloudflare-kv/src/backend.rs:370,1
    - Dst: CloudflareKvReader::new
      Src: /src/opendal/core/services/cloudflare-kv/src/backend.rs:370,1
    - Dst: CloudflareKvBackend::clone
      Src: /src/opendal/core/services/cloudflare-kv/src/backend.rs:371,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/cloudflare-kv/src/backend.rs:372,1
    - Dst: Ok
      Src: /src/opendal/core/services/cloudflare-kv/src/backend.rs:378,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpRead
    constantsTouched: []
    func_position:
      end: 379
      start: 368
    functionDepth: 3
    functionLinenumber: 368
    functionLinenumberEnd: 379
    functionName: CloudflareKvBackend::read
    functionSourceFile: /src/opendal/core/services/cloudflare-kv/src/backend.rs
    functionUses: 0
    functionsReached:
    - Result::clone
    - CloudflareKvBackend::clone
    - Ok
    - oio::StreamReader::new
    - CloudflareKvReader::new
    linkageType: ''
    returnType: Result
    signature: 'fn read(&self, ctx: &OperationContext, path: &str, args: OpRead) ->
      Result<Self::Reader>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/cloudflare-kv/src/backend.rs:383,1
    - Dst: root
      Src: /src/opendal/core/services/cloudflare-kv/src/backend.rs:383,1
    - Dst: CloudflareWriter::new
      Src: /src/opendal/core/services/cloudflare-kv/src/backend.rs:384,1
    - Dst: clone
      Src: /src/opendal/core/services/cloudflare-kv/src/backend.rs:384,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/cloudflare-kv/src/backend.rs:384,1
    - Dst: oio::OneShotWriter::new
      Src: /src/opendal/core/services/cloudflare-kv/src/backend.rs:386,1
    - Dst: Ok
      Src: /src/opendal/core/services/cloudflare-kv/src/backend.rs:388,1
    - Dst: Ok
      Src: /src/opendal/core/services/cloudflare-kv/src/backend.rs:391,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 16
    argCount: 3
    argNames:
    - ctx
    - path
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpWrite
    constantsTouched: []
    func_position:
      end: 392
      start: 381
    functionDepth: 32
    functionLinenumber: 381
    functionLinenumberEnd: 392
    functionName: CloudflareKvBackend::write
    functionSourceFile: /src/opendal/core/services/cloudflare-kv/src/backend.rs
    functionUses: 0
    functionsReached:
    - Result::clone
    - CloudflareWriter::new
    - Ok
    - clone
    - build_abs_path
    - oio::OneShotWriter::new
    - root
    linkageType: ''
    returnType: Result
    signature: 'fn write(&self, ctx: &OperationContext, path: &str, _: OpWrite) ->
      Result<Self::Writer>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/core/services/cloudflare-kv/src/backend.rs:396,1
    - Dst: oio::BatchDeleter::new
      Src: /src/opendal/core/services/cloudflare-kv/src/backend.rs:396,1
    - Dst: CloudflareKvDeleter::new
      Src: /src/opendal/core/services/cloudflare-kv/src/backend.rs:397,1
    - Dst: clone
      Src: /src/opendal/core/services/cloudflare-kv/src/backend.rs:397,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/cloudflare-kv/src/backend.rs:397,1
    - Dst: Ok
      Src: /src/opendal/core/services/cloudflare-kv/src/backend.rs:402,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - '&OperationContext'
    constantsTouched: []
    func_position:
      end: 403
      start: 394
    functionDepth: 4
    functionLinenumber: 394
    functionLinenumberEnd: 403
    functionName: CloudflareKvBackend::delete
    functionSourceFile: /src/opendal/core/services/cloudflare-kv/src/backend.rs
    functionUses: 0
    functionsReached:
    - Result::clone
    - Ok
    - clone
    - CloudflareKvDeleter::new
    - oio::BatchDeleter::new
    linkageType: ''
    returnType: Result
    signature: 'fn delete(&self, ctx: &OperationContext) -> Result<Self::Deleter>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/cloudflare-kv/src/backend.rs:407,1
    - Dst: root
      Src: /src/opendal/core/services/cloudflare-kv/src/backend.rs:407,1
    - Dst: OpStat::limit
      Src: /src/opendal/core/services/cloudflare-kv/src/backend.rs:409,1
    - Dst: contains
      Src: /src/opendal/core/services/cloudflare-kv/src/backend.rs:412,1
    - Dst: CloudflareKvLister::new
      Src: /src/opendal/core/services/cloudflare-kv/src/backend.rs:421,1
    - Dst: clone
      Src: /src/opendal/core/services/cloudflare-kv/src/backend.rs:422,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/cloudflare-kv/src/backend.rs:423,1
    - Dst: OpStat::recursive
      Src: /src/opendal/core/services/cloudflare-kv/src/backend.rs:425,1
    - Dst: Some
      Src: /src/opendal/core/services/cloudflare-kv/src/backend.rs:426,1
    - Dst: Ok
      Src: /src/opendal/core/services/cloudflare-kv/src/backend.rs:429,1
    - Dst: oio::PageLister::new
      Src: /src/opendal/core/services/cloudflare-kv/src/backend.rs:429,1
    - Dst: Ok
      Src: /src/opendal/core/services/cloudflare-kv/src/backend.rs:432,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 31
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpList
    constantsTouched: []
    func_position:
      end: 433
      start: 405
    functionDepth: 32
    functionLinenumber: 405
    functionLinenumberEnd: 433
    functionName: CloudflareKvBackend::list
    functionSourceFile: /src/opendal/core/services/cloudflare-kv/src/backend.rs
    functionUses: 0
    functionsReached:
    - Result::clone
    - Ok
    - clone
    - build_abs_path
    - Some
    - CloudflareKvLister::new
    - root
    - oio::PageLister::new
    - contains
    - OpStat::limit
    - OpStat::recursive
    linkageType: ''
    returnType: Result
    signature: 'fn list(&self, ctx: &OperationContext, path: &str, args: OpList) ->
      Result<Self::Lister>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/core/services/cloudflare-kv/src/backend.rs:443,1
    - Dst: Error::new
      Src: /src/opendal/core/services/cloudflare-kv/src/backend.rs:443,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 5
    argNames:
    - _ctx
    - _from
    - _to
    - _args
    - _opts
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    - OpCopy
    - OpCopier
    constantsTouched: []
    func_position:
      end: 447
      start: 435
    functionDepth: 36
    functionLinenumber: 435
    functionLinenumberEnd: 447
    functionName: CloudflareKvBackend::copy
    functionSourceFile: /src/opendal/core/services/cloudflare-kv/src/backend.rs
    functionUses: 0
    functionsReached:
    - Error::new
    - Err
    linkageType: ''
    returnType: Result
    signature: 'fn copy(&self,_ctx: &OperationContext,_from: &str,_to: &str,_args:
      OpCopy,_opts: OpCopier,) -> Result<Self::Copier>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/core/services/cloudflare-kv/src/backend.rs:456,1
    - Dst: Error::new
      Src: /src/opendal/core/services/cloudflare-kv/src/backend.rs:456,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - _ctx
    - _from
    - _to
    - _args
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    - OpRename
    constantsTouched: []
    func_position:
      end: 460
      start: 449
    functionDepth: 36
    functionLinenumber: 449
    functionLinenumberEnd: 460
    functionName: CloudflareKvBackend::rename
    functionSourceFile: /src/opendal/core/services/cloudflare-kv/src/backend.rs
    functionUses: 0
    functionsReached:
    - Error::new
    - Err
    linkageType: ''
    returnType: Result
    signature: 'async fn rename(&self,_ctx: &OperationContext,_from: &str,_to: &str,_args:
      OpRename,) -> Result<RpRename>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/core/services/cloudflare-kv/src/backend.rs:468,1
    - Dst: Error::new
      Src: /src/opendal/core/services/cloudflare-kv/src/backend.rs:468,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - _ctx
    - _path
    - _args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpPresign
    constantsTouched: []
    func_position:
      end: 472
      start: 462
    functionDepth: 36
    functionLinenumber: 462
    functionLinenumberEnd: 472
    functionName: CloudflareKvBackend::presign
    functionSourceFile: /src/opendal/core/services/cloudflare-kv/src/backend.rs
    functionUses: 0
    functionsReached:
    - Error::new
    - Err
    linkageType: ''
    returnType: Result
    signature: 'async fn presign(&self,_ctx: &OperationContext,_path: &str,_args:
      OpPresign,) -> Result<RpPresign>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::debug_struct
      Src: /src/opendal/core/services/koofr/src/config.rs:45,1
    - Dst: field
      Src: /src/opendal/core/services/koofr/src/config.rs:45,1
    - Dst: field
      Src: /src/opendal/core/services/koofr/src/config.rs:45,1
    - Dst: finish_non_exhaustive
      Src: /src/opendal/core/services/koofr/src/config.rs:45,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 1
    argNames:
    - f
    argTypes:
    - '&mut std::fmt::Formatter<''_>'
    constantsTouched: []
    func_position:
      end: 49
      start: 44
    functionDepth: 5
    functionLinenumber: 44
    functionLinenumberEnd: 49
    functionName: KoofrConfig::fmt
    functionSourceFile: /src/opendal/core/services/koofr/src/config.rs
    functionUses: 0
    functionsReached:
    - field
    - Result::debug_struct
    - finish_non_exhaustive
    linkageType: ''
    returnType: std::fmt::Result
    signature: 'fn fmt(&self, f: &mut std::fmt::Formatter<''_>) -> std::fmt::Result'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::root
      Src: /src/opendal/core/services/koofr/src/config.rs:56,1
    - Dst: Result::ok_or_else
      Src: /src/opendal/core/services/koofr/src/config.rs:56,1
    - Dst: opendal_core::Error::new
      Src: /src/opendal/core/services/koofr/src/config.rs:57,1
    - Dst: Self::with_context
      Src: /src/opendal/core/services/koofr/src/config.rs:57,1
    - Dst: splitn
      Src: /src/opendal/core/services/koofr/src/config.rs:64,1
    - Dst: next
      Src: /src/opendal/core/services/koofr/src/config.rs:65,1
    - Dst: filter
      Src: /src/opendal/core/services/koofr/src/config.rs:65,1
    - Dst: is_empty
      Src: /src/opendal/core/services/koofr/src/config.rs:65,1
    - Dst: ok_or_else
      Src: /src/opendal/core/services/koofr/src/config.rs:65,1
    - Dst: opendal_core::Error::new
      Src: /src/opendal/core/services/koofr/src/config.rs:66,1
    - Dst: Self::with_context
      Src: /src/opendal/core/services/koofr/src/config.rs:66,1
    - Dst: Result::options
      Src: /src/opendal/core/services/koofr/src/config.rs:73,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/koofr/src/config.rs:73,1
    - Dst: Result::authority
      Src: /src/opendal/core/services/koofr/src/config.rs:74,1
    - Dst: Result::insert
      Src: /src/opendal/core/services/koofr/src/config.rs:75,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/koofr/src/config.rs:75,1
    - Dst: Result::insert
      Src: /src/opendal/core/services/koofr/src/config.rs:77,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/koofr/src/config.rs:77,1
    - Dst: Self::to_string
      Src: /src/opendal/core/services/koofr/src/config.rs:77,1
    - Dst: next
      Src: /src/opendal/core/services/koofr/src/config.rs:79,1
    - Dst: is_empty
      Src: /src/opendal/core/services/koofr/src/config.rs:80,1
    - Dst: Result::insert
      Src: /src/opendal/core/services/koofr/src/config.rs:82,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/koofr/src/config.rs:82,1
    - Dst: to_string
      Src: /src/opendal/core/services/koofr/src/config.rs:82,1
    - Dst: Self::from_iter
      Src: /src/opendal/core/services/koofr/src/config.rs:85,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 61
    argCount: 1
    argNames:
    - uri
    argTypes:
    - '&opendal_core::OperatorUri'
    constantsTouched: []
    func_position:
      end: 86
      start: 55
    functionDepth: 32
    functionLinenumber: 55
    functionLinenumberEnd: 86
    functionName: KoofrConfig::from_uri
    functionSourceFile: /src/opendal/core/services/koofr/src/config.rs
    functionUses: 1
    functionsReached:
    - next
    - Result::clone
    - filter
    - to_string
    - Self::from_iter
    - Self::to_string
    - Result::insert
    - is_empty
    - Result::root
    - Result::ok_or_else
    - '&str::to_string'
    - Result::authority
    - opendal_core::Error::new
    - splitn
    - Self::with_context
    - Result::options
    - ok_or_else
    linkageType: ''
    returnType: opendal_core::Result
    signature: 'fn from_uri(uri: &opendal_core::OperatorUri) -> opendal_core::Result<Self>'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 90
      start: 88
    functionDepth: 0
    functionLinenumber: 88
    functionLinenumberEnd: 90
    functionName: KoofrConfig::into_builder
    functionSourceFile: /src/opendal/core/services/koofr/src/config.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Self::Builder
    signature: fn into_builder(self) -> Self::Builder
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: OperatorUri::new
      Src: /src/opendal/core/services/koofr/src/config.rs:101,1
    - Dst: Vec::<(String, String)>::new
      Src: /src/opendal/core/services/koofr/src/config.rs:103,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/services/koofr/src/config.rs:101,1
    - Dst: KoofrConfig::from_uri
      Src: /src/opendal/core/services/koofr/src/config.rs:107,1
    - Dst: opendal_core::Result::unwrap
      Src: /src/opendal/core/services/koofr/src/config.rs:107,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 111
      start: 100
    functionDepth: 29
    functionLinenumber: 100
    functionLinenumberEnd: 111
    functionName: tests::from_uri_sets_endpoint_email_and_root
    functionSourceFile: /src/opendal/core/services/koofr/src/config.rs
    functionUses: 0
    functionsReached:
    - Vec::<(String, String)>::new
    - OperatorUri::new
    - KoofrConfig::from_uri
    - Result::unwrap
    - opendal_core::Result::unwrap
    linkageType: ''
    returnType: void
    signature: fn from_uri_sets_endpoint_email_and_root()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: OperatorUri::new
      Src: /src/opendal/core/services/koofr/src/config.rs:116,1
    - Dst: Vec::<(String, String)>::new
      Src: /src/opendal/core/services/koofr/src/config.rs:116,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/services/koofr/src/config.rs:116,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 119
      start: 114
    functionDepth: 29
    functionLinenumber: 114
    functionLinenumberEnd: 119
    functionName: tests::from_uri_requires_email_segment
    functionSourceFile: /src/opendal/core/services/koofr/src/config.rs
    functionUses: 0
    functionsReached:
    - Vec::<(String, String)>::new
    - OperatorUri::new
    - Result::unwrap
    linkageType: ''
    returnType: void
    signature: fn from_uri_requires_email_segment()
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - core
    - ctx
    argTypes:
    - Arc<KoofrCore>
    - OperationContext
    constantsTouched: []
    func_position:
      end: 35
      start: 33
    functionDepth: 0
    functionLinenumber: 33
    functionLinenumberEnd: 35
    functionName: KoofrDeleter::new
    functionSourceFile: /src/opendal/core/services/koofr/src/deleter.rs
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(core: Arc<KoofrCore>, ctx: OperationContext) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: remove
      Src: /src/opendal/core/services/koofr/src/deleter.rs:40,1
    - Dst: status
      Src: /src/opendal/core/services/koofr/src/deleter.rs:42,1
    - Dst: Ok
      Src: /src/opendal/core/services/koofr/src/deleter.rs:45,1
    - Dst: Ok
      Src: /src/opendal/core/services/koofr/src/deleter.rs:47,1
    - Dst: Err
      Src: /src/opendal/core/services/koofr/src/deleter.rs:48,1
    - Dst: super::core::parse_error
      Src: /src/opendal/core/services/koofr/src/deleter.rs:48,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 18
    argCount: 2
    argNames:
    - path
    argTypes:
    - String
    - OpDelete
    constantsTouched: []
    func_position:
      end: 50
      start: 39
    functionDepth: 36
    functionLinenumber: 39
    functionLinenumberEnd: 50
    functionName: KoofrDeleter::delete_once
    functionSourceFile: /src/opendal/core/services/koofr/src/deleter.rs
    functionUses: 0
    functionsReached:
    - status
    - Ok
    - remove
    - Err
    - super::core::parse_error
    linkageType: ''
    returnType: Result
    signature: 'async fn delete_once(&self, path: String, _: OpDelete) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: to_string
      Src: /src/opendal/core/services/koofr/src/lister.rs:44,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - core
    - ctx
    - path
    argTypes:
    - Arc<KoofrCore>
    - OperationContext
    - '&str'
    constantsTouched: []
    func_position:
      end: 46
      start: 40
    functionDepth: 2
    functionLinenumber: 40
    functionLinenumberEnd: 46
    functionName: KoofrLister::new
    functionSourceFile: /src/opendal/core/services/koofr/src/lister.rs
    functionUses: 1
    functionsReached:
    - to_string
    linkageType: ''
    returnType: Self
    signature: 'pub(super) fn new(core: Arc<KoofrCore>, ctx: OperationContext, path:
      &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: list
      Src: /src/opendal/core/services/koofr/src/lister.rs:51,1
    - Dst: status
      Src: /src/opendal/core/services/koofr/src/lister.rs:53,1
    - Dst: Ok
      Src: /src/opendal/core/services/koofr/src/lister.rs:55,1
    - Dst: status
      Src: /src/opendal/core/services/koofr/src/lister.rs:58,1
    - Dst: Err
      Src: /src/opendal/core/services/koofr/src/lister.rs:61,1
    - Dst: super::core::parse_error
      Src: /src/opendal/core/services/koofr/src/lister.rs:61,1
    - Dst: into_body
      Src: /src/opendal/core/services/koofr/src/lister.rs:65,1
    - Dst: serde_json::from_reader
      Src: /src/opendal/core/services/koofr/src/lister.rs:68,1
    - Dst: Result::reader
      Src: /src/opendal/core/services/koofr/src/lister.rs:68,1
    - Dst: map_err
      Src: /src/opendal/core/services/koofr/src/lister.rs:68,1
    - Dst: build_abs_path
      Src: /src/opendal/core/services/koofr/src/lister.rs:71,1
    - Dst: normalize_root
      Src: /src/opendal/core/services/koofr/src/lister.rs:71,1
    - Dst: Entry::new
      Src: /src/opendal/core/services/koofr/src/lister.rs:75,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/koofr/src/lister.rs:75,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/koofr/src/lister.rs:77,1
    - Dst: Self::with_content_length
      Src: /src/opendal/core/services/koofr/src/lister.rs:77,1
    - Dst: Self::with_content_type
      Src: /src/opendal/core/services/koofr/src/lister.rs:77,1
    - Dst: Result::with_last_modified
      Src: /src/opendal/core/services/koofr/src/lister.rs:77,1
    - Dst: Timestamp::from_millisecond
      Src: /src/opendal/core/services/koofr/src/lister.rs:80,1
    - Dst: Entry::new
      Src: /src/opendal/core/services/koofr/src/lister.rs:81,1
    - Dst: push_back
      Src: /src/opendal/core/services/koofr/src/lister.rs:84,1
    - Dst: Ok
      Src: /src/opendal/core/services/koofr/src/lister.rs:89,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 76
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - '&mut oio::PageContext'
    constantsTouched: []
    func_position:
      end: 90
      start: 50
    functionDepth: 38
    functionLinenumber: 50
    functionLinenumberEnd: 90
    functionName: KoofrLister::next_page
    functionSourceFile: /src/opendal/core/services/koofr/src/lister.rs
    functionUses: 0
    functionsReached:
    - map_err
    - Entry::new
    - Metadata::new
    - status
    - Ok
    - push_back
    - serde_json::from_reader
    - Self::with_content_length
    - into_body
    - normalize_root
    - build_abs_path
    - Err
    - list
    - Self::with_content_type
    - Timestamp::from_millisecond
    - Result::with_last_modified
    - Result::reader
    - super::core::parse_error
    linkageType: ''
    returnType: Result
    signature: 'async fn next_page(&self, ctx: &mut oio::PageContext) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: to_string
      Src: /src/opendal/core/services/koofr/src/reader.rs:37,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 4
    argNames:
    - backend
    - ctx
    - path
    argTypes:
    - KoofrBackend
    - OperationContext
    - '&str'
    - OpRead
    constantsTouched: []
    func_position:
      end: 39
      start: 33
    functionDepth: 2
    functionLinenumber: 33
    functionLinenumberEnd: 39
    functionName: KoofrReader::new
    functionSourceFile: /src/opendal/core/services/koofr/src/reader.rs
    functionUses: 1
    functionsReached:
    - to_string
    linkageType: ''
    returnType: Self
    signature: 'pub(super) fn new(backend: KoofrBackend, ctx: OperationContext, path:
      &str, _: OpRead) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: as_str
      Src: /src/opendal/core/services/koofr/src/reader.rs:45,1
    - Dst: get
      Src: /src/opendal/core/services/koofr/src/reader.rs:46,1
    - Dst: status
      Src: /src/opendal/core/services/koofr/src/reader.rs:48,1
    - Dst: RpRead::new
      Src: /src/opendal/core/services/koofr/src/reader.rs:51,1
    - Dst: parse_into_metadata
      Src: /src/opendal/core/services/koofr/src/reader.rs:51,1
    - Dst: headers
      Src: /src/opendal/core/services/koofr/src/reader.rs:51,1
    - Dst: into_body
      Src: /src/opendal/core/services/koofr/src/reader.rs:52,1
    - Dst: into_parts
      Src: /src/opendal/core/services/koofr/src/reader.rs:55,1
    - Dst: to_buffer
      Src: /src/opendal/core/services/koofr/src/reader.rs:56,1
    - Dst: Err
      Src: /src/opendal/core/services/koofr/src/reader.rs:57,1
    - Dst: super::core::parse_error
      Src: /src/opendal/core/services/koofr/src/reader.rs:57,1
    - Dst: Response::from_parts
      Src: /src/opendal/core/services/koofr/src/reader.rs:57,1
    - Dst: Ok
      Src: /src/opendal/core/services/koofr/src/reader.rs:61,1
    - Dst: Box::new
      Src: /src/opendal/core/services/koofr/src/reader.rs:61,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 38
    argCount: 1
    argNames:
    - range
    argTypes:
    - BytesRange
    constantsTouched: []
    func_position:
      end: 62
      start: 43
    functionDepth: 38
    functionLinenumber: 43
    functionLinenumberEnd: 62
    functionName: KoofrReader::open
    functionSourceFile: /src/opendal/core/services/koofr/src/reader.rs
    functionUses: 0
    functionsReached:
    - parse_into_metadata
    - get
    - to_buffer
    - status
    - Ok
    - Box::new
    - into_body
    - Err
    - Response::from_parts
    - as_str
    - headers
    - into_parts
    - RpRead::new
    - super::core::parse_error
    linkageType: ''
    returnType: Result
    signature: 'async fn open(&self, range: BytesRange) -> Result<(RpRead, Box<dyn
      oio::ReadStreamDyn>)>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::debug_struct
      Src: /src/opendal/core/services/koofr/src/core.rs:59,1
    - Dst: field
      Src: /src/opendal/core/services/koofr/src/core.rs:59,1
    - Dst: field
      Src: /src/opendal/core/services/koofr/src/core.rs:59,1
    - Dst: field
      Src: /src/opendal/core/services/koofr/src/core.rs:59,1
    - Dst: finish_non_exhaustive
      Src: /src/opendal/core/services/koofr/src/core.rs:59,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 16
    argCount: 1
    argNames:
    - f
    argTypes:
    - '&mut std::fmt::Formatter<''_>'
    constantsTouched: []
    func_position:
      end: 64
      start: 58
    functionDepth: 5
    functionLinenumber: 58
    functionLinenumberEnd: 64
    functionName: KoofrCore::fmt
    functionSourceFile: /src/opendal/core/services/koofr/src/core.rs
    functionUses: 0
    functionsReached:
    - field
    - Result::debug_struct
    - finish_non_exhaustive
    linkageType: ''
    returnType: std::fmt::Result
    signature: 'fn fmt(&self, f: &mut std::fmt::Formatter<''_>) -> std::fmt::Result'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::http_transport
      Src: /src/opendal/core/services/koofr/src/core.rs:74,1
    - Dst: Self::send
      Src: /src/opendal/core/services/koofr/src/core.rs:74,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - ctx
    - req
    argTypes:
    - '&OperationContext'
    - Request<Buffer>
    constantsTouched: []
    func_position:
      end: 75
      start: 69
    functionDepth: 37
    functionLinenumber: 69
    functionLinenumberEnd: 75
    functionName: KoofrCore::send
    functionSourceFile: /src/opendal/core/services/koofr/src/core.rs
    functionUses: 7
    functionsReached:
    - Result::http_transport
    - Self::send
    linkageType: ''
    returnType: Result
    signature: 'pub async fn send(&self,ctx: &OperationContext,req: Request<Buffer>,)
      -> Result<Response<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: get_or_try_init
      Src: /src/opendal/core/services/koofr/src/core.rs:78,1
    - Dst: Request::get
      Src: /src/opendal/core/services/koofr/src/core.rs:80,1
    - Dst: KoofrCore::sign
      Src: /src/opendal/core/services/koofr/src/core.rs:82,1
    - Dst: Option::body
      Src: /src/opendal/core/services/koofr/src/core.rs:84,1
    - Dst: Buffer::new
      Src: /src/opendal/core/services/koofr/src/core.rs:84,1
    - Dst: map_err
      Src: /src/opendal/core/services/koofr/src/core.rs:84,1
    - Dst: KoofrCore::send
      Src: /src/opendal/core/services/koofr/src/core.rs:86,1
    - Dst: status
      Src: /src/opendal/core/services/koofr/src/core.rs:88,1
    - Dst: Err
      Src: /src/opendal/core/services/koofr/src/core.rs:91,1
    - Dst: parse_error
      Src: /src/opendal/core/services/koofr/src/core.rs:91,1
    - Dst: into_body
      Src: /src/opendal/core/services/koofr/src/core.rs:94,1
    - Dst: serde_json::from_reader
      Src: /src/opendal/core/services/koofr/src/core.rs:97,1
    - Dst: Result::reader
      Src: /src/opendal/core/services/koofr/src/core.rs:97,1
    - Dst: map_err
      Src: /src/opendal/core/services/koofr/src/core.rs:97,1
    - Dst: Ok
      Src: /src/opendal/core/services/koofr/src/core.rs:101,1
    - Dst: Err
      Src: /src/opendal/core/services/koofr/src/core.rs:105,1
    - Dst: Error::new
      Src: /src/opendal/core/services/koofr/src/core.rs:105,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 49
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - '&OperationContext'
    constantsTouched: []
    func_position:
      end: 108
      start: 77
    functionDepth: 34
    functionLinenumber: 77
    functionLinenumberEnd: 108
    functionName: KoofrCore::get_mount_id
    functionSourceFile: /src/opendal/core/services/koofr/src/core.rs
    functionUses: 8
    functionsReached:
    - map_err
    - Request::get
    - Buffer::new
    - status
    - Ok
    - get_or_try_init
    - serde_json::from_reader
    - parse_error
    - into_body
    - Err
    - Error::new
    - KoofrCore::sign
    - KoofrCore::send
    - Result::reader
    - Option::body
    linkageType: ''
    returnType: Result
    signature: 'pub async fn get_mount_id(&self, ctx: &OperationContext) -> Result<&String>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/opendal/core/services/koofr/src/core.rs:115,1
    - Dst: is_empty
      Src: /src/opendal/core/services/koofr/src/core.rs:116,1
    - Dst: Ok
      Src: /src/opendal/core/services/koofr/src/core.rs:117,1
    - Dst: request::Builder::header
      Src: /src/opendal/core/services/koofr/src/core.rs:117,1
    - Dst: serde_json::to_vec
      Src: /src/opendal/core/services/koofr/src/core.rs:130,1
    - Dst: Vec::map_err
      Src: /src/opendal/core/services/koofr/src/core.rs:130,1
    - Dst: Request::post
      Src: /src/opendal/core/services/koofr/src/core.rs:132,1
    - Dst: http::header
      Src: /src/opendal/core/services/koofr/src/core.rs:132,1
    - Dst: body
      Src: /src/opendal/core/services/koofr/src/core.rs:132,1
    - Dst: Buffer::from
      Src: /src/opendal/core/services/koofr/src/core.rs:134,1
    - Dst: Bytes::from
      Src: /src/opendal/core/services/koofr/src/core.rs:134,1
    - Dst: map_err
      Src: /src/opendal/core/services/koofr/src/core.rs:132,1
    - Dst: Result::http_transport
      Src: /src/opendal/core/services/koofr/src/core.rs:137,1
    - Dst: Self::send
      Src: /src/opendal/core/services/koofr/src/core.rs:137,1
    - Dst: status
      Src: /src/opendal/core/services/koofr/src/core.rs:139,1
    - Dst: Err
      Src: /src/opendal/core/services/koofr/src/core.rs:142,1
    - Dst: parse_error
      Src: /src/opendal/core/services/koofr/src/core.rs:142,1
    - Dst: into_body
      Src: /src/opendal/core/services/koofr/src/core.rs:145,1
    - Dst: serde_json::from_reader
      Src: /src/opendal/core/services/koofr/src/core.rs:147,1
    - Dst: Result::reader
      Src: /src/opendal/core/services/koofr/src/core.rs:147,1
    - Dst: map_err
      Src: /src/opendal/core/services/koofr/src/core.rs:147,1
    - Dst: Ok
      Src: /src/opendal/core/services/koofr/src/core.rs:151,1
    - Dst: request::Builder::header
      Src: /src/opendal/core/services/koofr/src/core.rs:151,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 60
    argCount: 2
    argNames:
    - ctx
    - req
    argTypes:
    - '&OperationContext'
    - request::Builder
    constantsTouched: []
    func_position:
      end: 155
      start: 110
    functionDepth: 33
    functionLinenumber: 110
    functionLinenumberEnd: 155
    functionName: KoofrCore::sign
    functionSourceFile: /src/opendal/core/services/koofr/src/core.rs
    functionUses: 9
    functionsReached:
    - status
    - Self::send
    - serde_json::from_reader
    - Result::reader
    - map_err
    - Ok
    - Result::http_transport
    - Buffer::from
    - http::header
    - parse_error
    - into_body
    - is_empty
    - Bytes::from
    - lock
    - Request::post
    - body
    - request::Builder::header
    - Err
    - Vec::map_err
    - serde_json::to_vec
    linkageType: ''
    returnType: Result
    signature: 'pub async fn sign(&self,ctx: &OperationContext,req: request::Builder,)
      -> Result<request::Builder>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: VecDeque::default
      Src: /src/opendal/core/services/koofr/src/core.rs:160,1
    - Dst: build_abs_path
      Src: /src/opendal/core/services/koofr/src/core.rs:162,1
    - Dst: get_parent
      Src: /src/opendal/core/services/koofr/src/core.rs:165,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/koofr/src/core.rs:165,1
    - Dst: push_front
      Src: /src/opendal/core/services/koofr/src/core.rs:167,1
    - Dst: '&str::clone'
      Src: /src/opendal/core/services/koofr/src/core.rs:167,1
    - Dst: KoofrCore::create_dir
      Src: /src/opendal/core/services/koofr/src/core.rs:172,1
    - Dst: Ok
      Src: /src/opendal/core/services/koofr/src/core.rs:175,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 28
    argCount: 2
    argNames:
    - ctx
    - path
    argTypes:
    - '&OperationContext'
    - '&str'
    constantsTouched: []
    func_position:
      end: 176
      start: 159
    functionDepth: 37
    functionLinenumber: 159
    functionLinenumberEnd: 176
    functionName: KoofrCore::ensure_dir_exists
    functionSourceFile: /src/opendal/core/services/koofr/src/core.rs
    functionUses: 0
    functionsReached:
    - push_front
    - VecDeque::default
    - get_parent
    - Ok
    - build_abs_path
    - '&str::clone'
    - '&str::to_string'
    - KoofrCore::create_dir
    linkageType: ''
    returnType: Result
    signature: 'pub async fn ensure_dir_exists(&self, ctx: &OperationContext, path:
      &str) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: KoofrCore::info
      Src: /src/opendal/core/services/koofr/src/core.rs:179,1
    - Dst: status
      Src: /src/opendal/core/services/koofr/src/core.rs:181,1
    - Dst: get_basename
      Src: /src/opendal/core/services/koofr/src/core.rs:185,1
    - Dst: '&str::trim_end_matches'
      Src: /src/opendal/core/services/koofr/src/core.rs:185,1
    - Dst: get_parent
      Src: /src/opendal/core/services/koofr/src/core.rs:186,1
    - Dst: KoofrCore::get_mount_id
      Src: /src/opendal/core/services/koofr/src/core.rs:188,1
    - Dst: serde_json::to_vec
      Src: /src/opendal/core/services/koofr/src/core.rs:201,1
    - Dst: Vec::map_err
      Src: /src/opendal/core/services/koofr/src/core.rs:201,1
    - Dst: Request::post
      Src: /src/opendal/core/services/koofr/src/core.rs:203,1
    - Dst: KoofrCore::sign
      Src: /src/opendal/core/services/koofr/src/core.rs:205,1
    - Dst: http::header
      Src: /src/opendal/core/services/koofr/src/core.rs:207,1
    - Dst: extension
      Src: /src/opendal/core/services/koofr/src/core.rs:207,1
    - Dst: extension
      Src: /src/opendal/core/services/koofr/src/core.rs:207,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/koofr/src/core.rs:210,1
    - Dst: body
      Src: /src/opendal/core/services/koofr/src/core.rs:207,1
    - Dst: Buffer::from
      Src: /src/opendal/core/services/koofr/src/core.rs:211,1
    - Dst: Bytes::from
      Src: /src/opendal/core/services/koofr/src/core.rs:211,1
    - Dst: map_err
      Src: /src/opendal/core/services/koofr/src/core.rs:207,1
    - Dst: Result::http_transport
      Src: /src/opendal/core/services/koofr/src/core.rs:214,1
    - Dst: Self::send
      Src: /src/opendal/core/services/koofr/src/core.rs:214,1
    - Dst: status
      Src: /src/opendal/core/services/koofr/src/core.rs:216,1
    - Dst: Ok
      Src: /src/opendal/core/services/koofr/src/core.rs:221,1
    - Dst: Err
      Src: /src/opendal/core/services/koofr/src/core.rs:222,1
    - Dst: parse_error
      Src: /src/opendal/core/services/koofr/src/core.rs:222,1
    - Dst: Ok
      Src: /src/opendal/core/services/koofr/src/core.rs:225,1
    - Dst: Err
      Src: /src/opendal/core/services/koofr/src/core.rs:226,1
    - Dst: parse_error
      Src: /src/opendal/core/services/koofr/src/core.rs:226,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 58
    argCount: 2
    argNames:
    - ctx
    - path
    argTypes:
    - '&OperationContext'
    - '&str'
    constantsTouched: []
    func_position:
      end: 228
      start: 178
    functionDepth: 36
    functionLinenumber: 178
    functionLinenumberEnd: 228
    functionName: KoofrCore::create_dir
    functionSourceFile: /src/opendal/core/services/koofr/src/core.rs
    functionUses: 1
    functionsReached:
    - status
    - Self::send
    - KoofrCore::info
    - map_err
    - extension
    - Ok
    - ServiceOperation
    - Result::http_transport
    - KoofrCore::get_mount_id
    - Buffer::from
    - http::header
    - parse_error
    - Bytes::from
    - '&str::trim_end_matches'
    - get_parent
    - Request::post
    - get_basename
    - body
    - Err
    - KoofrCore::sign
    - Vec::map_err
    - serde_json::to_vec
    linkageType: ''
    returnType: Result
    signature: 'pub async fn create_dir(&self, ctx: &OperationContext, path: &str)
      -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: KoofrCore::get_mount_id
      Src: /src/opendal/core/services/koofr/src/core.rs:231,1
    - Dst: Request::get
      Src: /src/opendal/core/services/koofr/src/core.rs:240,1
    - Dst: KoofrCore::sign
      Src: /src/opendal/core/services/koofr/src/core.rs:242,1
    - Dst: Option::extension
      Src: /src/opendal/core/services/koofr/src/core.rs:244,1
    - Dst: extension
      Src: /src/opendal/core/services/koofr/src/core.rs:244,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/koofr/src/core.rs:246,1
    - Dst: body
      Src: /src/opendal/core/services/koofr/src/core.rs:244,1
    - Dst: Buffer::new
      Src: /src/opendal/core/services/koofr/src/core.rs:247,1
    - Dst: map_err
      Src: /src/opendal/core/services/koofr/src/core.rs:244,1
    - Dst: KoofrCore::send
      Src: /src/opendal/core/services/koofr/src/core.rs:250,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 23
    argCount: 2
    argNames:
    - ctx
    - path
    argTypes:
    - '&OperationContext'
    - '&str'
    constantsTouched: []
    func_position:
      end: 251
      start: 230
    functionDepth: 35
    functionLinenumber: 230
    functionLinenumberEnd: 251
    functionName: KoofrCore::info
    functionSourceFile: /src/opendal/core/services/koofr/src/core.rs
    functionUses: 1
    functionsReached:
    - map_err
    - extension
    - Request::get
    - Buffer::new
    - body
    - KoofrCore::send
    - Option::extension
    - KoofrCore::sign
    - ServiceOperation
    - KoofrCore::get_mount_id
    linkageType: ''
    returnType: Result
    signature: 'pub async fn info(&self, ctx: &OperationContext, path: &str) -> Result<Response<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_rooted_abs_path
      Src: /src/opendal/core/services/koofr/src/core.rs:259,1
    - Dst: KoofrCore::get_mount_id
      Src: /src/opendal/core/services/koofr/src/core.rs:261,1
    - Dst: Request::get
      Src: /src/opendal/core/services/koofr/src/core.rs:270,1
    - Dst: Option::header
      Src: /src/opendal/core/services/koofr/src/core.rs:270,1
    - Dst: (Vec::to_header
      Src: /src/opendal/core/services/koofr/src/core.rs:270,1
    - Dst: KoofrCore::sign
      Src: /src/opendal/core/services/koofr/src/core.rs:272,1
    - Dst: String::extension
      Src: /src/opendal/core/services/koofr/src/core.rs:274,1
    - Dst: extension
      Src: /src/opendal/core/services/koofr/src/core.rs:274,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/koofr/src/core.rs:276,1
    - Dst: body
      Src: /src/opendal/core/services/koofr/src/core.rs:274,1
    - Dst: Buffer::new
      Src: /src/opendal/core/services/koofr/src/core.rs:277,1
    - Dst: map_err
      Src: /src/opendal/core/services/koofr/src/core.rs:274,1
    - Dst: Result::http_transport
      Src: /src/opendal/core/services/koofr/src/core.rs:280,1
    - Dst: Self::fetch
      Src: /src/opendal/core/services/koofr/src/core.rs:280,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 32
    argCount: 3
    argNames:
    - ctx
    - path
    - range
    argTypes:
    - '&OperationContext'
    - '&str'
    - BytesRange
    constantsTouched: []
    func_position:
      end: 281
      start: 253
    functionDepth: 35
    functionLinenumber: 253
    functionLinenumberEnd: 281
    functionName: KoofrCore::get
    functionSourceFile: /src/opendal/core/services/koofr/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - extension
    - Request::get
    - (Vec::to_header
    - Buffer::new
    - body
    - build_rooted_abs_path
    - Result::http_transport
    - KoofrCore::sign
    - ServiceOperation
    - Self::fetch
    - KoofrCore::get_mount_id
    - String::extension
    - Option::header
    linkageType: ''
    returnType: Result
    signature: 'pub async fn get(&self,ctx: &OperationContext,path: &str,range: BytesRange,)
      -> Result<Response<HttpBody>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_rooted_abs_path
      Src: /src/opendal/core/services/koofr/src/core.rs:289,1
    - Dst: get_basename
      Src: /src/opendal/core/services/koofr/src/core.rs:291,1
    - Dst: get_parent
      Src: /src/opendal/core/services/koofr/src/core.rs:292,1
    - Dst: KoofrCore::get_mount_id
      Src: /src/opendal/core/services/koofr/src/core.rs:294,1
    - Dst: FormDataPart::new
      Src: /src/opendal/core/services/koofr/src/core.rs:304,1
    - Dst: Self::header
      Src: /src/opendal/core/services/koofr/src/core.rs:304,1
    - Dst: parse
      Src: /src/opendal/core/services/koofr/src/core.rs:307,1
    - Dst: unwrap
      Src: /src/opendal/core/services/koofr/src/core.rs:307,1
    - Dst: String::content
      Src: /src/opendal/core/services/koofr/src/core.rs:304,1
    - Dst: Multipart::new
      Src: /src/opendal/core/services/koofr/src/core.rs:313,1
    - Dst: Self::part
      Src: /src/opendal/core/services/koofr/src/core.rs:313,1
    - Dst: Request::post
      Src: /src/opendal/core/services/koofr/src/core.rs:315,1
    - Dst: KoofrCore::sign
      Src: /src/opendal/core/services/koofr/src/core.rs:317,1
    - Dst: extension
      Src: /src/opendal/core/services/koofr/src/core.rs:319,1
    - Dst: extension
      Src: /src/opendal/core/services/koofr/src/core.rs:319,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/koofr/src/core.rs:321,1
    - Dst: apply
      Src: /src/opendal/core/services/koofr/src/core.rs:323,1
    - Dst: KoofrCore::send
      Src: /src/opendal/core/services/koofr/src/core.rs:325,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 39
    argCount: 3
    argNames:
    - ctx
    - path
    - bs
    argTypes:
    - '&OperationContext'
    - '&str'
    - Buffer
    constantsTouched: []
    func_position:
      end: 326
      start: 283
    functionDepth: 35
    functionLinenumber: 283
    functionLinenumberEnd: 326
    functionName: KoofrCore::put
    functionSourceFile: /src/opendal/core/services/koofr/src/core.rs
    functionUses: 0
    functionsReached:
    - Multipart::new
    - extension
    - apply
    - get_parent
    - unwrap
    - get_basename
    - FormDataPart::new
    - build_rooted_abs_path
    - Request::post
    - Self::part
    - KoofrCore::send
    - parse
    - KoofrCore::sign
    - ServiceOperation
    - KoofrCore::get_mount_id
    - String::content
    - Self::header
    linkageType: ''
    returnType: Result
    signature: 'pub async fn put(&self,ctx: &OperationContext,path: &str,bs: Buffer,)
      -> Result<Response<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_rooted_abs_path
      Src: /src/opendal/core/services/koofr/src/core.rs:329,1
    - Dst: KoofrCore::get_mount_id
      Src: /src/opendal/core/services/koofr/src/core.rs:331,1
    - Dst: Request::delete
      Src: /src/opendal/core/services/koofr/src/core.rs:340,1
    - Dst: KoofrCore::sign
      Src: /src/opendal/core/services/koofr/src/core.rs:342,1
    - Dst: Result::extension
      Src: /src/opendal/core/services/koofr/src/core.rs:344,1
    - Dst: extension
      Src: /src/opendal/core/services/koofr/src/core.rs:344,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/koofr/src/core.rs:346,1
    - Dst: body
      Src: /src/opendal/core/services/koofr/src/core.rs:344,1
    - Dst: Buffer::new
      Src: /src/opendal/core/services/koofr/src/core.rs:347,1
    - Dst: map_err
      Src: /src/opendal/core/services/koofr/src/core.rs:344,1
    - Dst: KoofrCore::send
      Src: /src/opendal/core/services/koofr/src/core.rs:350,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 26
    argCount: 2
    argNames:
    - ctx
    - path
    argTypes:
    - '&OperationContext'
    - '&str'
    constantsTouched: []
    func_position:
      end: 351
      start: 328
    functionDepth: 35
    functionLinenumber: 328
    functionLinenumberEnd: 351
    functionName: KoofrCore::remove
    functionSourceFile: /src/opendal/core/services/koofr/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - extension
    - Buffer::new
    - Request::delete
    - Result::extension
    - body
    - build_rooted_abs_path
    - KoofrCore::send
    - KoofrCore::sign
    - ServiceOperation
    - KoofrCore::get_mount_id
    linkageType: ''
    returnType: Result
    signature: 'pub async fn remove(&self, ctx: &OperationContext, path: &str) ->
      Result<Response<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_rooted_abs_path
      Src: /src/opendal/core/services/koofr/src/core.rs:359,1
    - Dst: build_rooted_abs_path
      Src: /src/opendal/core/services/koofr/src/core.rs:360,1
    - Dst: KoofrCore::get_mount_id
      Src: /src/opendal/core/services/koofr/src/core.rs:362,1
    - Dst: serde_json::to_vec
      Src: /src/opendal/core/services/koofr/src/core.rs:376,1
    - Dst: Vec::map_err
      Src: /src/opendal/core/services/koofr/src/core.rs:376,1
    - Dst: Request::put
      Src: /src/opendal/core/services/koofr/src/core.rs:378,1
    - Dst: KoofrCore::sign
      Src: /src/opendal/core/services/koofr/src/core.rs:380,1
    - Dst: DeleteInput::header
      Src: /src/opendal/core/services/koofr/src/core.rs:382,1
    - Dst: String::extension
      Src: /src/opendal/core/services/koofr/src/core.rs:382,1
    - Dst: extension
      Src: /src/opendal/core/services/koofr/src/core.rs:382,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/koofr/src/core.rs:385,1
    - Dst: body
      Src: /src/opendal/core/services/koofr/src/core.rs:382,1
    - Dst: Buffer::from
      Src: /src/opendal/core/services/koofr/src/core.rs:386,1
    - Dst: Bytes::from
      Src: /src/opendal/core/services/koofr/src/core.rs:386,1
    - Dst: map_err
      Src: /src/opendal/core/services/koofr/src/core.rs:382,1
    - Dst: KoofrCore::send
      Src: /src/opendal/core/services/koofr/src/core.rs:389,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 37
    argCount: 3
    argNames:
    - ctx
    - from
    - to
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    constantsTouched: []
    func_position:
      end: 390
      start: 353
    functionDepth: 35
    functionLinenumber: 353
    functionLinenumberEnd: 390
    functionName: KoofrCore::copy
    functionSourceFile: /src/opendal/core/services/koofr/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - extension
    - Request::put
    - body
    - build_rooted_abs_path
    - KoofrCore::send
    - DeleteInput::header
    - Bytes::from
    - KoofrCore::sign
    - Vec::map_err
    - ServiceOperation
    - Buffer::from
    - KoofrCore::get_mount_id
    - String::extension
    - serde_json::to_vec
    linkageType: ''
    returnType: Result
    signature: 'pub async fn copy(&self,ctx: &OperationContext,from: &str,to: &str,)
      -> Result<Response<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_rooted_abs_path
      Src: /src/opendal/core/services/koofr/src/core.rs:398,1
    - Dst: build_rooted_abs_path
      Src: /src/opendal/core/services/koofr/src/core.rs:399,1
    - Dst: KoofrCore::get_mount_id
      Src: /src/opendal/core/services/koofr/src/core.rs:401,1
    - Dst: serde_json::to_vec
      Src: /src/opendal/core/services/koofr/src/core.rs:415,1
    - Dst: Vec::map_err
      Src: /src/opendal/core/services/koofr/src/core.rs:415,1
    - Dst: Request::put
      Src: /src/opendal/core/services/koofr/src/core.rs:417,1
    - Dst: KoofrCore::sign
      Src: /src/opendal/core/services/koofr/src/core.rs:419,1
    - Dst: DeleteInput::header
      Src: /src/opendal/core/services/koofr/src/core.rs:421,1
    - Dst: String::extension
      Src: /src/opendal/core/services/koofr/src/core.rs:421,1
    - Dst: extension
      Src: /src/opendal/core/services/koofr/src/core.rs:421,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/koofr/src/core.rs:424,1
    - Dst: body
      Src: /src/opendal/core/services/koofr/src/core.rs:421,1
    - Dst: Buffer::from
      Src: /src/opendal/core/services/koofr/src/core.rs:425,1
    - Dst: Bytes::from
      Src: /src/opendal/core/services/koofr/src/core.rs:425,1
    - Dst: map_err
      Src: /src/opendal/core/services/koofr/src/core.rs:421,1
    - Dst: KoofrCore::send
      Src: /src/opendal/core/services/koofr/src/core.rs:428,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 37
    argCount: 3
    argNames:
    - ctx
    - from
    - to
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    constantsTouched: []
    func_position:
      end: 429
      start: 392
    functionDepth: 35
    functionLinenumber: 392
    functionLinenumberEnd: 429
    functionName: KoofrCore::move_object
    functionSourceFile: /src/opendal/core/services/koofr/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - extension
    - Request::put
    - body
    - build_rooted_abs_path
    - KoofrCore::send
    - DeleteInput::header
    - Bytes::from
    - KoofrCore::sign
    - Vec::map_err
    - ServiceOperation
    - Buffer::from
    - KoofrCore::get_mount_id
    - String::extension
    - serde_json::to_vec
    linkageType: ''
    returnType: Result
    signature: 'pub async fn move_object(&self,ctx: &OperationContext,from: &str,to:
      &str,) -> Result<Response<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_rooted_abs_path
      Src: /src/opendal/core/services/koofr/src/core.rs:432,1
    - Dst: KoofrCore::get_mount_id
      Src: /src/opendal/core/services/koofr/src/core.rs:434,1
    - Dst: Request::get
      Src: /src/opendal/core/services/koofr/src/core.rs:443,1
    - Dst: KoofrCore::sign
      Src: /src/opendal/core/services/koofr/src/core.rs:445,1
    - Dst: Option::extension
      Src: /src/opendal/core/services/koofr/src/core.rs:447,1
    - Dst: extension
      Src: /src/opendal/core/services/koofr/src/core.rs:447,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/koofr/src/core.rs:449,1
    - Dst: body
      Src: /src/opendal/core/services/koofr/src/core.rs:447,1
    - Dst: Buffer::new
      Src: /src/opendal/core/services/koofr/src/core.rs:450,1
    - Dst: map_err
      Src: /src/opendal/core/services/koofr/src/core.rs:447,1
    - Dst: KoofrCore::send
      Src: /src/opendal/core/services/koofr/src/core.rs:453,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 26
    argCount: 2
    argNames:
    - ctx
    - path
    argTypes:
    - '&OperationContext'
    - '&str'
    constantsTouched: []
    func_position:
      end: 454
      start: 431
    functionDepth: 35
    functionLinenumber: 431
    functionLinenumberEnd: 454
    functionName: KoofrCore::list
    functionSourceFile: /src/opendal/core/services/koofr/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - extension
    - Request::get
    - Buffer::new
    - body
    - build_rooted_abs_path
    - KoofrCore::send
    - Option::extension
    - KoofrCore::sign
    - ServiceOperation
    - KoofrCore::get_mount_id
    linkageType: ''
    returnType: Result
    signature: 'pub async fn list(&self, ctx: &OperationContext, path: &str) -> Result<Response<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 3
    argNames:
    - core
    - ctx
    - path
    argTypes:
    - Arc<KoofrCore>
    - OperationContext
    - String
    constantsTouched: []
    func_position:
      end: 40
      start: 38
    functionDepth: 0
    functionLinenumber: 38
    functionLinenumberEnd: 40
    functionName: KoofrWriter::new
    functionSourceFile: /src/opendal/core/services/koofr/src/writer.rs
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(core: Arc<KoofrCore>, ctx: OperationContext, path: String)
      -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Metadata::new
      Src: /src/opendal/core/services/koofr/src/writer.rs:49,1
    - Dst: Result::set_content_length
      Src: /src/opendal/core/services/koofr/src/writer.rs:50,1
    - Dst: Result::set_content_type
      Src: /src/opendal/core/services/koofr/src/writer.rs:51,1
    - Dst: Result::set_last_modified
      Src: /src/opendal/core/services/koofr/src/writer.rs:52,1
    - Dst: Timestamp::from_millisecond
      Src: /src/opendal/core/services/koofr/src/writer.rs:52,1
    - Dst: Ok
      Src: /src/opendal/core/services/koofr/src/writer.rs:54,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 20
    argCount: 1
    argNames:
    - file
    argTypes:
    - '&File'
    constantsTouched: []
    func_position:
      end: 55
      start: 42
    functionDepth: 37
    functionLinenumber: 42
    functionLinenumberEnd: 55
    functionName: KoofrWriter::parse_metadata
    functionSourceFile: /src/opendal/core/services/koofr/src/writer.rs
    functionUses: 0
    functionsReached:
    - Metadata::new
    - Ok
    - Result::set_last_modified
    - Result::set_content_length
    - Result::set_content_type
    - Timestamp::from_millisecond
    linkageType: ''
    returnType: Result
    signature: 'fn parse_metadata(file: &File) -> Result<Metadata>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: ensure_dir_exists
      Src: /src/opendal/core/services/koofr/src/writer.rs:60,1
    - Dst: put
      Src: /src/opendal/core/services/koofr/src/writer.rs:62,1
    - Dst: status
      Src: /src/opendal/core/services/koofr/src/writer.rs:64,1
    - Dst: into_body
      Src: /src/opendal/core/services/koofr/src/writer.rs:68,1
    - Dst: serde_json::from_reader
      Src: /src/opendal/core/services/koofr/src/writer.rs:70,1
    - Dst: reader
      Src: /src/opendal/core/services/koofr/src/writer.rs:70,1
    - Dst: map_err
      Src: /src/opendal/core/services/koofr/src/writer.rs:70,1
    - Dst: Self::parse_metadata
      Src: /src/opendal/core/services/koofr/src/writer.rs:71,1
    - Dst: Ok
      Src: /src/opendal/core/services/koofr/src/writer.rs:72,1
    - Dst: Err
      Src: /src/opendal/core/services/koofr/src/writer.rs:74,1
    - Dst: super::core::parse_error
      Src: /src/opendal/core/services/koofr/src/writer.rs:74,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 37
    argCount: 1
    argNames:
    - bs
    argTypes:
    - Buffer
    constantsTouched: []
    func_position:
      end: 76
      start: 59
    functionDepth: 34
    functionLinenumber: 59
    functionLinenumberEnd: 76
    functionName: KoofrWriter::write_once
    functionSourceFile: /src/opendal/core/services/koofr/src/writer.rs
    functionUses: 0
    functionsReached:
    - map_err
    - reader
    - status
    - Ok
    - serde_json::from_reader
    - into_body
    - Err
    - Self::parse_metadata
    - put
    - super::core::parse_error
    - ensure_dir_exists
    linkageType: ''
    returnType: Result
    signature: 'async fn write_once(&self, bs: Buffer) -> Result<Metadata>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: register::<Koofr>
      Src: /src/opendal/core/services/koofr/src/lib.rs:23,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - registry
    argTypes:
    - '&opendal_core::OperatorRegistry'
    constantsTouched: []
    func_position:
      end: 24
      start: 22
    functionDepth: 0
    functionLinenumber: 22
    functionLinenumberEnd: 24
    functionName: register_koofr_service
    functionSourceFile: /src/opendal/core/services/koofr/src/lib.rs
    functionUses: 1
    functionsReached:
    - register::<Koofr>
    linkageType: ''
    returnType: void
    signature: 'pub fn register_koofr_service(registry: &opendal_core::OperatorRegistry)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::debug_struct
      Src: /src/opendal/core/services/koofr/src/backend.rs:50,1
    - Dst: field
      Src: /src/opendal/core/services/koofr/src/backend.rs:50,1
    - Dst: finish_non_exhaustive
      Src: /src/opendal/core/services/koofr/src/backend.rs:50,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - f
    argTypes:
    - '&mut std::fmt::Formatter<''_>'
    constantsTouched: []
    func_position:
      end: 53
      start: 49
    functionDepth: 5
    functionLinenumber: 49
    functionLinenumberEnd: 53
    functionName: KoofrBuilder::fmt
    functionSourceFile: /src/opendal/core/services/koofr/src/backend.rs
    functionUses: 0
    functionsReached:
    - field
    - Result::debug_struct
    - finish_non_exhaustive
    linkageType: ''
    returnType: std::fmt::Result
    signature: 'fn fmt(&self, f: &mut std::fmt::Formatter<''_>) -> std::fmt::Result'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::is_empty
      Src: /src/opendal/core/services/koofr/src/backend.rs:61,1
    - Dst: Some
      Src: /src/opendal/core/services/koofr/src/backend.rs:64,1
    - Dst: Result::to_string
      Src: /src/opendal/core/services/koofr/src/backend.rs:64,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - root
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 68
      start: 60
    functionDepth: 4
    functionLinenumber: 60
    functionLinenumberEnd: 68
    functionName: KoofrBuilder::root
    functionSourceFile: /src/opendal/core/services/koofr/src/backend.rs
    functionUses: 0
    functionsReached:
    - Result::is_empty
    - Result::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn root(mut self, root: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self::to_string
      Src: /src/opendal/core/services/koofr/src/backend.rs:74,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - endpoint
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 77
      start: 73
    functionDepth: 2
    functionLinenumber: 73
    functionLinenumberEnd: 77
    functionName: KoofrBuilder::endpoint
    functionSourceFile: /src/opendal/core/services/koofr/src/backend.rs
    functionUses: 0
    functionsReached:
    - Self::to_string
    linkageType: ''
    returnType: Self
    signature: 'pub fn endpoint(mut self, endpoint: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self::to_string
      Src: /src/opendal/core/services/koofr/src/backend.rs:83,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - email
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 86
      start: 82
    functionDepth: 2
    functionLinenumber: 82
    functionLinenumberEnd: 86
    functionName: KoofrBuilder::email
    functionSourceFile: /src/opendal/core/services/koofr/src/backend.rs
    functionUses: 0
    functionsReached:
    - Self::to_string
    linkageType: ''
    returnType: Self
    signature: 'pub fn email(mut self, email: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Option::is_empty
      Src: /src/opendal/core/services/koofr/src/backend.rs:99,1
    - Dst: Some
      Src: /src/opendal/core/services/koofr/src/backend.rs:102,1
    - Dst: Option::to_string
      Src: /src/opendal/core/services/koofr/src/backend.rs:102,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - password
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 106
      start: 98
    functionDepth: 4
    functionLinenumber: 98
    functionLinenumberEnd: 106
    functionName: KoofrBuilder::password
    functionSourceFile: /src/opendal/core/services/koofr/src/backend.rs
    functionUses: 0
    functionsReached:
    - Option::to_string
    - Option::is_empty
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn password(mut self, password: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: normalize_root
      Src: /src/opendal/core/services/koofr/src/backend.rs:116,1
    - Dst: clone
      Src: /src/opendal/core/services/koofr/src/backend.rs:116,1
    - Dst: unwrap_or_default
      Src: /src/opendal/core/services/koofr/src/backend.rs:116,1
    - Dst: is_empty
      Src: /src/opendal/core/services/koofr/src/backend.rs:119,1
    - Dst: Err
      Src: /src/opendal/core/services/koofr/src/backend.rs:120,1
    - Dst: Error::new
      Src: /src/opendal/core/services/koofr/src/backend.rs:120,1
    - Dst: Self::with_operation
      Src: /src/opendal/core/services/koofr/src/backend.rs:120,1
    - Dst: Self::with_context
      Src: /src/opendal/core/services/koofr/src/backend.rs:120,1
    - Dst: is_empty
      Src: /src/opendal/core/services/koofr/src/backend.rs:127,1
    - Dst: Err
      Src: /src/opendal/core/services/koofr/src/backend.rs:128,1
    - Dst: Error::new
      Src: /src/opendal/core/services/koofr/src/backend.rs:128,1
    - Dst: Self::with_operation
      Src: /src/opendal/core/services/koofr/src/backend.rs:128,1
    - Dst: Self::with_context
      Src: /src/opendal/core/services/koofr/src/backend.rs:128,1
    - Dst: Ok
      Src: /src/opendal/core/services/koofr/src/backend.rs:136,1
    - Dst: Option::clone
      Src: /src/opendal/core/services/koofr/src/backend.rs:136,1
    - Dst: Err
      Src: /src/opendal/core/services/koofr/src/backend.rs:137,1
    - Dst: Error::new
      Src: /src/opendal/core/services/koofr/src/backend.rs:137,1
    - Dst: Self::with_operation
      Src: /src/opendal/core/services/koofr/src/backend.rs:137,1
    - Dst: Self::with_context
      Src: /src/opendal/core/services/koofr/src/backend.rs:137,1
    - Dst: Arc::new
      Src: /src/opendal/core/services/koofr/src/backend.rs:142,1
    - Dst: Mutex::new
      Src: /src/opendal/core/services/koofr/src/backend.rs:142,1
    - Dst: KoofrSigner::default
      Src: /src/opendal/core/services/koofr/src/backend.rs:142,1
    - Dst: Ok
      Src: /src/opendal/core/services/koofr/src/backend.rs:144,1
    - Dst: Arc::new
      Src: /src/opendal/core/services/koofr/src/backend.rs:145,1
    - Dst: ServiceInfo::new
      Src: /src/opendal/core/services/koofr/src/backend.rs:146,1
    - Dst: Default::default
      Src: /src/opendal/core/services/koofr/src/backend.rs:168,1
    - Dst: clone
      Src: /src/opendal/core/services/koofr/src/backend.rs:171,1
    - Dst: clone
      Src: /src/opendal/core/services/koofr/src/backend.rs:172,1
    - Dst: OnceCell::new
      Src: /src/opendal/core/services/koofr/src/backend.rs:174,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 74
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 178
      start: 113
    functionDepth: 34
    functionLinenumber: 113
    functionLinenumberEnd: 178
    functionName: KoofrBuilder::build
    functionSourceFile: /src/opendal/core/services/koofr/src/backend.rs
    functionUses: 0
    functionsReached:
    - ServiceInfo::new
    - Ok
    - Arc::new
    - Default::default
    - Option::clone
    - clone
    - normalize_root
    - Err
    - is_empty
    - Error::new
    - KoofrSigner::default
    - OnceCell::new
    - Self::with_operation
    - Self::with_context
    - unwrap_or_default
    - Mutex::new
    linkageType: ''
    returnType: Result
    signature: fn build(self) -> Result<impl Service>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: clone
      Src: /src/opendal/core/services/koofr/src/backend.rs:195,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 196
      start: 194
    functionDepth: 2
    functionLinenumber: 194
    functionLinenumberEnd: 196
    functionName: KoofrBackend::info
    functionSourceFile: /src/opendal/core/services/koofr/src/backend.rs
    functionUses: 0
    functionsReached:
    - clone
    linkageType: ''
    returnType: ServiceInfo
    signature: fn info(&self) -> ServiceInfo
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 200
      start: 198
    functionDepth: 0
    functionLinenumber: 198
    functionLinenumberEnd: 200
    functionName: KoofrBackend::capability
    functionSourceFile: /src/opendal/core/services/koofr/src/backend.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Capability
    signature: fn capability(&self) -> Capability
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: ensure_dir_exists
      Src: /src/opendal/core/services/koofr/src/backend.rs:208,1
    - Dst: create_dir
      Src: /src/opendal/core/services/koofr/src/backend.rs:209,1
    - Dst: build_abs_path
      Src: /src/opendal/core/services/koofr/src/backend.rs:210,1
    - Dst: Ok
      Src: /src/opendal/core/services/koofr/src/backend.rs:212,1
    - Dst: RpCreateDir::default
      Src: /src/opendal/core/services/koofr/src/backend.rs:212,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 19
    argCount: 3
    argNames:
    - ctx
    - path
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpCreateDir
    constantsTouched: []
    func_position:
      end: 213
      start: 202
    functionDepth: 34
    functionLinenumber: 202
    functionLinenumberEnd: 213
    functionName: KoofrBackend::create_dir
    functionSourceFile: /src/opendal/core/services/koofr/src/backend.rs
    functionUses: 0
    functionsReached:
    - RpCreateDir::default
    - Ok
    - build_abs_path
    - create_dir
    - ensure_dir_exists
    linkageType: ''
    returnType: Result
    signature: 'async fn create_dir(&self,ctx: &OperationContext,path: &str,_: OpCreateDir,)
      -> Result<RpCreateDir>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_rooted_abs_path
      Src: /src/opendal/core/services/koofr/src/backend.rs:216,1
    - Dst: info
      Src: /src/opendal/core/services/koofr/src/backend.rs:217,1
    - Dst: status
      Src: /src/opendal/core/services/koofr/src/backend.rs:219,1
    - Dst: into_body
      Src: /src/opendal/core/services/koofr/src/backend.rs:223,1
    - Dst: serde_json::from_reader
      Src: /src/opendal/core/services/koofr/src/backend.rs:226,1
    - Dst: Result::reader
      Src: /src/opendal/core/services/koofr/src/backend.rs:226,1
    - Dst: map_err
      Src: /src/opendal/core/services/koofr/src/backend.rs:226,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/koofr/src/backend.rs:234,1
    - Dst: storage::Result::set_content_length
      Src: /src/opendal/core/services/koofr/src/backend.rs:236,1
    - Dst: '&mut Self::set_content_type'
      Src: /src/opendal/core/services/koofr/src/backend.rs:236,1
    - Dst: '&mut Self::set_last_modified'
      Src: /src/opendal/core/services/koofr/src/backend.rs:236,1
    - Dst: Timestamp::from_millisecond
      Src: /src/opendal/core/services/koofr/src/backend.rs:238,1
    - Dst: Ok
      Src: /src/opendal/core/services/koofr/src/backend.rs:240,1
    - Dst: RpStat::new
      Src: /src/opendal/core/services/koofr/src/backend.rs:240,1
    - Dst: Err
      Src: /src/opendal/core/services/koofr/src/backend.rs:242,1
    - Dst: super::core::parse_error
      Src: /src/opendal/core/services/koofr/src/backend.rs:242,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 43
    argCount: 3
    argNames:
    - ctx
    - path
    - _args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpStat
    constantsTouched: []
    func_position:
      end: 244
      start: 215
    functionDepth: 38
    functionLinenumber: 215
    functionLinenumberEnd: 244
    functionName: KoofrBackend::stat
    functionSourceFile: /src/opendal/core/services/koofr/src/backend.rs
    functionUses: 0
    functionsReached:
    - map_err
    - info
    - Metadata::new
    - status
    - Ok
    - '&mut Self::set_content_type'
    - serde_json::from_reader
    - RpStat::new
    - into_body
    - build_rooted_abs_path
    - storage::Result::set_content_length
    - '&mut Self::set_last_modified'
    - Err
    - Timestamp::from_millisecond
    - Result::reader
    - super::core::parse_error
    linkageType: ''
    returnType: Result
    signature: 'async fn stat(&self, ctx: &OperationContext, path: &str, _args: OpStat)
      -> Result<RpStat>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/core/services/koofr/src/backend.rs:247,1
    - Dst: oio::StreamReader::new
      Src: /src/opendal/core/services/koofr/src/backend.rs:247,1
    - Dst: KoofrReader::new
      Src: /src/opendal/core/services/koofr/src/backend.rs:247,1
    - Dst: KoofrBackend::clone
      Src: /src/opendal/core/services/koofr/src/backend.rs:248,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/koofr/src/backend.rs:249,1
    - Dst: Ok
      Src: /src/opendal/core/services/koofr/src/backend.rs:255,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpRead
    constantsTouched: []
    func_position:
      end: 256
      start: 245
    functionDepth: 3
    functionLinenumber: 245
    functionLinenumberEnd: 256
    functionName: KoofrBackend::read
    functionSourceFile: /src/opendal/core/services/koofr/src/backend.rs
    functionUses: 0
    functionsReached:
    - Result::clone
    - Ok
    - oio::StreamReader::new
    - KoofrBackend::clone
    - KoofrReader::new
    linkageType: ''
    returnType: Result
    signature: 'fn read(&self, ctx: &OperationContext, path: &str, args: OpRead) ->
      Result<Self::Reader>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: KoofrWriter::new
      Src: /src/opendal/core/services/koofr/src/backend.rs:260,1
    - Dst: clone
      Src: /src/opendal/core/services/koofr/src/backend.rs:260,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/koofr/src/backend.rs:260,1
    - Dst: to_string
      Src: /src/opendal/core/services/koofr/src/backend.rs:260,1
    - Dst: oio::OneShotWriter::new
      Src: /src/opendal/core/services/koofr/src/backend.rs:262,1
    - Dst: Ok
      Src: /src/opendal/core/services/koofr/src/backend.rs:264,1
    - Dst: Ok
      Src: /src/opendal/core/services/koofr/src/backend.rs:267,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 3
    argNames:
    - ctx
    - path
    - _args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpWrite
    constantsTouched: []
    func_position:
      end: 268
      start: 258
    functionDepth: 2
    functionLinenumber: 258
    functionLinenumberEnd: 268
    functionName: KoofrBackend::write
    functionSourceFile: /src/opendal/core/services/koofr/src/backend.rs
    functionUses: 0
    functionsReached:
    - Result::clone
    - to_string
    - Ok
    - KoofrWriter::new
    - clone
    - oio::OneShotWriter::new
    linkageType: ''
    returnType: Result
    signature: 'fn write(&self, ctx: &OperationContext, path: &str, _args: OpWrite)
      -> Result<Self::Writer>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/core/services/koofr/src/backend.rs:272,1
    - Dst: oio::OneShotDeleter::new
      Src: /src/opendal/core/services/koofr/src/backend.rs:272,1
    - Dst: KoofrDeleter::new
      Src: /src/opendal/core/services/koofr/src/backend.rs:272,1
    - Dst: clone
      Src: /src/opendal/core/services/koofr/src/backend.rs:273,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/koofr/src/backend.rs:274,1
    - Dst: Ok
      Src: /src/opendal/core/services/koofr/src/backend.rs:278,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - '&OperationContext'
    constantsTouched: []
    func_position:
      end: 279
      start: 270
    functionDepth: 2
    functionLinenumber: 270
    functionLinenumberEnd: 279
    functionName: KoofrBackend::delete
    functionSourceFile: /src/opendal/core/services/koofr/src/backend.rs
    functionUses: 0
    functionsReached:
    - oio::OneShotDeleter::new
    - Result::clone
    - Ok
    - clone
    - KoofrDeleter::new
    linkageType: ''
    returnType: Result
    signature: 'fn delete(&self, ctx: &OperationContext) -> Result<Self::Deleter>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: KoofrLister::new
      Src: /src/opendal/core/services/koofr/src/backend.rs:283,1
    - Dst: clone
      Src: /src/opendal/core/services/koofr/src/backend.rs:283,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/koofr/src/backend.rs:283,1
    - Dst: Ok
      Src: /src/opendal/core/services/koofr/src/backend.rs:284,1
    - Dst: oio::PageLister::new
      Src: /src/opendal/core/services/koofr/src/backend.rs:284,1
    - Dst: Ok
      Src: /src/opendal/core/services/koofr/src/backend.rs:287,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 3
    argNames:
    - ctx
    - path
    - _args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpList
    constantsTouched: []
    func_position:
      end: 288
      start: 281
    functionDepth: 3
    functionLinenumber: 281
    functionLinenumberEnd: 288
    functionName: KoofrBackend::list
    functionSourceFile: /src/opendal/core/services/koofr/src/backend.rs
    functionUses: 0
    functionsReached:
    - Result::clone
    - Ok
    - clone
    - oio::PageLister::new
    - KoofrLister::new
    linkageType: ''
    returnType: Result
    signature: 'fn list(&self, ctx: &OperationContext, path: &str, _args: OpList)
      -> Result<Self::Lister>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: clone
      Src: /src/opendal/core/services/koofr/src/backend.rs:298,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/koofr/src/backend.rs:299,1
    - Dst: Result::to_string
      Src: /src/opendal/core/services/koofr/src/backend.rs:300,1
    - Dst: Result::to_string
      Src: /src/opendal/core/services/koofr/src/backend.rs:301,1
    - Dst: Ok
      Src: /src/opendal/core/services/koofr/src/backend.rs:303,1
    - Dst: oio::OneShotCopier::new
      Src: /src/opendal/core/services/koofr/src/backend.rs:303,1
    - Dst: CompfsCore::ensure_dir_exists
      Src: /src/opendal/core/services/koofr/src/backend.rs:304,1
    - Dst: Ok
      Src: /src/opendal/core/services/koofr/src/backend.rs:306,1
    - Dst: Metadata::default
      Src: /src/opendal/core/services/koofr/src/backend.rs:306,1
    - Dst: CompfsCore::remove
      Src: /src/opendal/core/services/koofr/src/backend.rs:308,1
    - Dst: status
      Src: /src/opendal/core/services/koofr/src/backend.rs:310,1
    - Dst: Err
      Src: /src/opendal/core/services/koofr/src/backend.rs:313,1
    - Dst: super::core::parse_error
      Src: /src/opendal/core/services/koofr/src/backend.rs:313,1
    - Dst: CompfsCore::copy
      Src: /src/opendal/core/services/koofr/src/backend.rs:315,1
    - Dst: status
      Src: /src/opendal/core/services/koofr/src/backend.rs:317,1
    - Dst: Ok
      Src: /src/opendal/core/services/koofr/src/backend.rs:320,1
    - Dst: Metadata::default
      Src: /src/opendal/core/services/koofr/src/backend.rs:320,1
    - Dst: Err
      Src: /src/opendal/core/services/koofr/src/backend.rs:321,1
    - Dst: super::core::parse_error
      Src: /src/opendal/core/services/koofr/src/backend.rs:321,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 53
    argCount: 5
    argNames:
    - ctx
    - from
    - to
    - _args
    - _opts
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    - OpCopy
    - OpCopier
    constantsTouched: []
    func_position:
      end: 326
      start: 290
    functionDepth: 34
    functionLinenumber: 290
    functionLinenumberEnd: 326
    functionName: KoofrBackend::copy
    functionSourceFile: /src/opendal/core/services/koofr/src/backend.rs
    functionUses: 0
    functionsReached:
    - Result::clone
    - Metadata::default
    - Result::to_string
    - Ok
    - status
    - CompfsCore::remove
    - clone
    - Err
    - CompfsCore::copy
    - super::core::parse_error
    - oio::OneShotCopier::new
    - CompfsCore::ensure_dir_exists
    linkageType: ''
    returnType: Result
    signature: 'fn copy(&self,ctx: &OperationContext,from: &str,to: &str,_args: OpCopy,_opts:
      OpCopier,) -> Result<Self::Copier>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: ensure_dir_exists
      Src: /src/opendal/core/services/koofr/src/backend.rs:335,1
    - Dst: Ok
      Src: /src/opendal/core/services/koofr/src/backend.rs:338,1
    - Dst: RpRename::default
      Src: /src/opendal/core/services/koofr/src/backend.rs:338,1
    - Dst: remove
      Src: /src/opendal/core/services/koofr/src/backend.rs:341,1
    - Dst: status
      Src: /src/opendal/core/services/koofr/src/backend.rs:343,1
    - Dst: Err
      Src: /src/opendal/core/services/koofr/src/backend.rs:346,1
    - Dst: super::core::parse_error
      Src: /src/opendal/core/services/koofr/src/backend.rs:346,1
    - Dst: move_object
      Src: /src/opendal/core/services/koofr/src/backend.rs:349,1
    - Dst: status
      Src: /src/opendal/core/services/koofr/src/backend.rs:351,1
    - Dst: Ok
      Src: /src/opendal/core/services/koofr/src/backend.rs:354,1
    - Dst: RpRename::default
      Src: /src/opendal/core/services/koofr/src/backend.rs:354,1
    - Dst: Err
      Src: /src/opendal/core/services/koofr/src/backend.rs:355,1
    - Dst: super::core::parse_error
      Src: /src/opendal/core/services/koofr/src/backend.rs:355,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 42
    argCount: 4
    argNames:
    - ctx
    - from
    - to
    - _args
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    - OpRename
    constantsTouched: []
    func_position:
      end: 357
      start: 328
    functionDepth: 34
    functionLinenumber: 328
    functionLinenumberEnd: 357
    functionName: KoofrBackend::rename
    functionSourceFile: /src/opendal/core/services/koofr/src/backend.rs
    functionUses: 0
    functionsReached:
    - status
    - Ok
    - remove
    - move_object
    - Err
    - RpRename::default
    - super::core::parse_error
    - ensure_dir_exists
    linkageType: ''
    returnType: Result
    signature: 'async fn rename(&self,ctx: &OperationContext,from: &str,to: &str,_args:
      OpRename,) -> Result<RpRename>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/core/services/koofr/src/backend.rs:365,1
    - Dst: Error::new
      Src: /src/opendal/core/services/koofr/src/backend.rs:365,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - _ctx
    - _path
    - _args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpPresign
    constantsTouched: []
    func_position:
      end: 369
      start: 359
    functionDepth: 36
    functionLinenumber: 359
    functionLinenumberEnd: 369
    functionName: KoofrBackend::presign
    functionSourceFile: /src/opendal/core/services/koofr/src/backend.rs
    functionUses: 0
    functionsReached:
    - Error::new
    - Err
    linkageType: ''
    returnType: Result
    signature: 'async fn presign(&self,_ctx: &OperationContext,_path: &str,_args:
      OpPresign,) -> Result<RpPresign>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::options
      Src: /src/opendal/core/services/foyer/src/config.rs:65,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/foyer/src/config.rs:65,1
    - Dst: Result::option
      Src: /src/opendal/core/services/foyer/src/config.rs:67,1
    - Dst: Result::insert
      Src: /src/opendal/core/services/foyer/src/config.rs:68,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/foyer/src/config.rs:68,1
    - Dst: Result::to_string
      Src: /src/opendal/core/services/foyer/src/config.rs:68,1
    - Dst: Result::root
      Src: /src/opendal/core/services/foyer/src/config.rs:71,1
    - Dst: Result::is_empty
      Src: /src/opendal/core/services/foyer/src/config.rs:72,1
    - Dst: Result::insert
      Src: /src/opendal/core/services/foyer/src/config.rs:74,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/foyer/src/config.rs:74,1
    - Dst: Result::to_string
      Src: /src/opendal/core/services/foyer/src/config.rs:74,1
    - Dst: Self::from_iter
      Src: /src/opendal/core/services/foyer/src/config.rs:77,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 30
    argCount: 1
    argNames:
    - uri
    argTypes:
    - '&OperatorUri'
    constantsTouched: []
    func_position:
      end: 78
      start: 64
    functionDepth: 35
    functionLinenumber: 64
    functionLinenumberEnd: 78
    functionName: FoyerConfig::from_uri
    functionSourceFile: /src/opendal/core/services/foyer/src/config.rs
    functionUses: 4
    functionsReached:
    - Result::clone
    - Self::from_iter
    - Result::option
    - Result::to_string
    - Result::insert
    - Result::is_empty
    - '&str::to_string'
    - Result::root
    - Result::options
    linkageType: ''
    returnType: Result
    signature: 'fn from_uri(uri: &OperatorUri) -> Result<Self>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Default::default
      Src: /src/opendal/core/services/foyer/src/config.rs:83,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 85
      start: 80
    functionDepth: 3
    functionLinenumber: 80
    functionLinenumberEnd: 85
    functionName: FoyerConfig::into_builder
    functionSourceFile: /src/opendal/core/services/foyer/src/config.rs
    functionUses: 0
    functionsReached:
    - Default::default
    linkageType: ''
    returnType: Self::Builder
    signature: fn into_builder(self) -> Self::Builder
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: OperatorUri::new
      Src: /src/opendal/core/services/foyer/src/config.rs:94,1
    - Dst: Vec::<(String, String)>::new
      Src: /src/opendal/core/services/foyer/src/config.rs:96,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/services/foyer/src/config.rs:94,1
    - Dst: FoyerConfig::from_uri
      Src: /src/opendal/core/services/foyer/src/config.rs:100,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/services/foyer/src/config.rs:100,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 104
      start: 93
    functionDepth: 29
    functionLinenumber: 93
    functionLinenumberEnd: 104
    functionName: tests::test_from_uri_sets_memory
    functionSourceFile: /src/opendal/core/services/foyer/src/config.rs
    functionUses: 0
    functionsReached:
    - Vec::<(String, String)>::new
    - OperatorUri::new
    - FoyerConfig::from_uri
    - Result::unwrap
    linkageType: ''
    returnType: void
    signature: fn test_from_uri_sets_memory()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: OperatorUri::new
      Src: /src/opendal/core/services/foyer/src/config.rs:109,1
    - Dst: Vec::<(String, String)>::new
      Src: /src/opendal/core/services/foyer/src/config.rs:109,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/services/foyer/src/config.rs:109,1
    - Dst: FoyerConfig::from_uri
      Src: /src/opendal/core/services/foyer/src/config.rs:111,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/services/foyer/src/config.rs:111,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 114
      start: 107
    functionDepth: 29
    functionLinenumber: 107
    functionLinenumberEnd: 114
    functionName: tests::test_from_uri_sets_name_and_root
    functionSourceFile: /src/opendal/core/services/foyer/src/config.rs
    functionUses: 0
    functionsReached:
    - Vec::<(String, String)>::new
    - OperatorUri::new
    - FoyerConfig::from_uri
    - Result::unwrap
    linkageType: ''
    returnType: void
    signature: fn test_from_uri_sets_name_and_root()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: OperatorUri::new
      Src: /src/opendal/core/services/foyer/src/config.rs:118,1
    - Dst: Vec::<(String, String)>::new
      Src: /src/opendal/core/services/foyer/src/config.rs:120,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/services/foyer/src/config.rs:118,1
    - Dst: FoyerConfig::from_uri
      Src: /src/opendal/core/services/foyer/src/config.rs:124,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/services/foyer/src/config.rs:124,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 129
      start: 117
    functionDepth: 29
    functionLinenumber: 117
    functionLinenumberEnd: 129
    functionName: tests::test_from_uri_sets_disk_config
    functionSourceFile: /src/opendal/core/services/foyer/src/config.rs
    functionUses: 0
    functionsReached:
    - Vec::<(String, String)>::new
    - OperatorUri::new
    - FoyerConfig::from_uri
    - Result::unwrap
    linkageType: ''
    returnType: void
    signature: fn test_from_uri_sets_disk_config()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: OperatorUri::new
      Src: /src/opendal/core/services/foyer/src/config.rs:133,1
    - Dst: Vec::<(String, String)>::new
      Src: /src/opendal/core/services/foyer/src/config.rs:135,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/services/foyer/src/config.rs:133,1
    - Dst: FoyerConfig::from_uri
      Src: /src/opendal/core/services/foyer/src/config.rs:139,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/services/foyer/src/config.rs:139,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 142
      start: 132
    functionDepth: 29
    functionLinenumber: 132
    functionLinenumberEnd: 142
    functionName: tests::test_from_uri_sets_recovery_and_shards
    functionSourceFile: /src/opendal/core/services/foyer/src/config.rs
    functionUses: 0
    functionsReached:
    - Vec::<(String, String)>::new
    - OperatorUri::new
    - FoyerConfig::from_uri
    - Result::unwrap
    linkageType: ''
    returnType: void
    signature: fn test_from_uri_sets_recovery_and_shards()
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - core
    - root
    argTypes:
    - Arc<FoyerCore>
    - String
    constantsTouched: []
    func_position:
      end: 33
      start: 31
    functionDepth: 0
    functionLinenumber: 31
    functionLinenumberEnd: 33
    functionName: FoyerDeleter::new
    functionSourceFile: /src/opendal/core/services/foyer/src/deleter.rs
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(core: Arc<FoyerCore>, root: String) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/foyer/src/deleter.rs:38,1
    - Dst: remove
      Src: /src/opendal/core/services/foyer/src/deleter.rs:39,1
    - Dst: Ok
      Src: /src/opendal/core/services/foyer/src/deleter.rs:40,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 2
    argNames:
    - path
    argTypes:
    - String
    - OpDelete
    constantsTouched: []
    func_position:
      end: 41
      start: 37
    functionDepth: 36
    functionLinenumber: 37
    functionLinenumberEnd: 41
    functionName: FoyerDeleter::delete_once
    functionSourceFile: /src/opendal/core/services/foyer/src/deleter.rs
    functionUses: 0
    functionsReached:
    - remove
    - Ok
    - build_abs_path
    linkageType: ''
    returnType: Result
    signature: 'async fn delete_once(&self, path: String, _: OpDelete) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: to_string
      Src: /src/opendal/core/services/foyer/src/reader.rs:32,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - backend
    - path
    argTypes:
    - FoyerBackend
    - '&str'
    - OpRead
    constantsTouched: []
    func_position:
      end: 34
      start: 29
    functionDepth: 2
    functionLinenumber: 29
    functionLinenumberEnd: 34
    functionName: FoyerReader::new
    functionSourceFile: /src/opendal/core/services/foyer/src/reader.rs
    functionUses: 1
    functionsReached:
    - to_string
    linkageType: ''
    returnType: Self
    signature: 'pub(super) fn new(backend: FoyerBackend, path: &str, _: OpRead) ->
      Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: as_str
      Src: /src/opendal/core/services/foyer/src/reader.rs:40,1
    - Dst: build_abs_path
      Src: /src/opendal/core/services/foyer/src/reader.rs:41,1
    - Dst: get
      Src: /src/opendal/core/services/foyer/src/reader.rs:43,1
    - Dst: Err
      Src: /src/opendal/core/services/foyer/src/reader.rs:45,1
    - Dst: Error::new
      Src: /src/opendal/core/services/foyer/src/reader.rs:45,1
    - Dst: len
      Src: /src/opendal/core/services/foyer/src/reader.rs:47,1
    - Dst: slice
      Src: /src/opendal/core/services/foyer/src/reader.rs:49,1
    - Dst: (Vec::to_content_range
      Src: /src/opendal/core/services/foyer/src/reader.rs:49,1
    - Dst: len
      Src: /src/opendal/core/services/foyer/src/reader.rs:49,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/foyer/src/reader.rs:51,1
    - Dst: Self::with_content_length
      Src: /src/opendal/core/services/foyer/src/reader.rs:51,1
    - Dst: Ok
      Src: /src/opendal/core/services/foyer/src/reader.rs:52,1
    - Dst: RpRead::new
      Src: /src/opendal/core/services/foyer/src/reader.rs:53,1
    - Dst: Box::new
      Src: /src/opendal/core/services/foyer/src/reader.rs:54,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 36
    argCount: 1
    argNames:
    - range
    argTypes:
    - BytesRange
    constantsTouched: []
    func_position:
      end: 56
      start: 38
    functionDepth: 36
    functionLinenumber: 38
    functionLinenumberEnd: 56
    functionName: FoyerReader::open
    functionSourceFile: /src/opendal/core/services/foyer/src/reader.rs
    functionUses: 0
    functionsReached:
    - Metadata::new
    - get
    - slice
    - Ok
    - Box::new
    - Self::with_content_length
    - build_abs_path
    - Error::new
    - Err
    - as_str
    - RpRead::new
    - (Vec::to_content_range
    - len
    linkageType: ''
    returnType: Result
    signature: 'async fn open(&self, range: BytesRange) -> Result<(RpRead, Box<dyn
      oio::ReadStreamDyn>)>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::debug_struct
      Src: /src/opendal/core/services/foyer/src/core.rs:53,1
    - Dst: field
      Src: /src/opendal/core/services/foyer/src/core.rs:53,1
    - Dst: finish_non_exhaustive
      Src: /src/opendal/core/services/foyer/src/core.rs:53,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 1
    argNames:
    - f
    argTypes:
    - '&mut std::fmt::Formatter<''_>'
    constantsTouched: []
    func_position:
      end: 56
      start: 52
    functionDepth: 5
    functionLinenumber: 52
    functionLinenumberEnd: 56
    functionName: FoyerCore::fmt
    functionSourceFile: /src/opendal/core/services/foyer/src/core.rs
    functionUses: 0
    functionsReached:
    - field
    - Result::debug_struct
    - finish_non_exhaustive
    linkageType: ''
    returnType: std::fmt::Result
    signature: 'fn fmt(&self, f: &mut std::fmt::Formatter<''_>) -> std::fmt::Result'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: '&str::to_lowercase'
      Src: /src/opendal/core/services/foyer/src/core.rs:64,1
    - Dst: as_str
      Src: /src/opendal/core/services/foyer/src/core.rs:64,1
    - Dst: Ok
      Src: /src/opendal/core/services/foyer/src/core.rs:65,1
    - Dst: Ok
      Src: /src/opendal/core/services/foyer/src/core.rs:66,1
    - Dst: Ok
      Src: /src/opendal/core/services/foyer/src/core.rs:67,1
    - Dst: Err
      Src: /src/opendal/core/services/foyer/src/core.rs:68,1
    - Dst: Error::new
      Src: /src/opendal/core/services/foyer/src/core.rs:68,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 1
    argNames:
    - mode_str
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 76
      start: 63
    functionDepth: 36
    functionLinenumber: 63
    functionLinenumberEnd: 76
    functionName: parse_recover_mode
    functionSourceFile: /src/opendal/core/services/foyer/src/core.rs
    functionUses: 1
    functionsReached:
    - Ok
    - Error::new
    - Err
    - as_str
    - '&str::to_lowercase'
    linkageType: ''
    returnType: Result
    signature: 'fn parse_recover_mode(mode_str: &str) -> Result<RecoverMode>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: std::sync::OnceLock::new
      Src: /src/opendal/core/services/foyer/src/core.rs:84,1
    - Dst: Arc::new
      Src: /src/opendal/core/services/foyer/src/core.rs:85,1
    - Dst: Mutex::new
      Src: /src/opendal/core/services/foyer/src/core.rs:85,1
    - Dst: HashSet::new
      Src: /src/opendal/core/services/foyer/src/core.rs:85,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - config
    argTypes:
    - FoyerConfig
    constantsTouched: []
    func_position:
      end: 88
      start: 82
    functionDepth: 2
    functionLinenumber: 82
    functionLinenumberEnd: 88
    functionName: FoyerCore::new
    functionSourceFile: /src/opendal/core/services/foyer/src/core.rs
    functionUses: 1
    functionsReached:
    - Arc::new
    - std::sync::OnceLock::new
    - Mutex::new
    - HashSet::new
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(config: FoyerConfig) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: set
      Src: /src/opendal/core/services/foyer/src/core.rs:92,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - cache
    argTypes:
    - Arc<HybridCache<FoyerKey, FoyerValue>>
    constantsTouched: []
    func_position:
      end: 94
      start: 91
    functionDepth: 34
    functionLinenumber: 91
    functionLinenumberEnd: 94
    functionName: FoyerCore::with_cache
    functionSourceFile: /src/opendal/core/services/foyer/src/core.rs
    functionUses: 0
    functionsReached:
    - set
    linkageType: ''
    returnType: Self
    signature: 'pub(crate) fn with_cache(self, cache: Arc<HybridCache<FoyerKey, FoyerValue>>)
      -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: get
      Src: /src/opendal/core/services/foyer/src/core.rs:98,1
    - Dst: Ok
      Src: /src/opendal/core/services/foyer/src/core.rs:99,1
    - Dst: HybridCache::clone
      Src: /src/opendal/core/services/foyer/src/core.rs:99,1
    - Dst: unwrap_or
      Src: /src/opendal/core/services/foyer/src/core.rs:102,1
    - Dst: unwrap_or
      Src: /src/opendal/core/services/foyer/src/core.rs:103,1
    - Dst: parse_recover_mode
      Src: /src/opendal/core/services/foyer/src/core.rs:105,1
    - Dst: HybridCacheBuilder::new
      Src: /src/opendal/core/services/foyer/src/core.rs:110,1
    - Dst: Self::memory
      Src: /src/opendal/core/services/foyer/src/core.rs:110,1
    - Dst: with_shards
      Src: /src/opendal/core/services/foyer/src/core.rs:110,1
    - Dst: storage
      Src: /src/opendal/core/services/foyer/src/core.rs:110,1
    - Dst: with_recover_mode
      Src: /src/opendal/core/services/foyer/src/core.rs:110,1
    - Dst: PathBuf::from
      Src: /src/opendal/core/services/foyer/src/core.rs:118,1
    - Dst: FsDeviceBuilder::new
      Src: /src/opendal/core/services/foyer/src/core.rs:120,1
    - Dst: Self::with_capacity
      Src: /src/opendal/core/services/foyer/src/core.rs:123,1
    - Dst: unwrap_or
      Src: /src/opendal/core/services/foyer/src/core.rs:126,1
    - Dst: Self::build
      Src: /src/opendal/core/services/foyer/src/core.rs:130,1
    - Dst: Result::map_err
      Src: /src/opendal/core/services/foyer/src/core.rs:130,1
    - Dst: Error::new
      Src: /src/opendal/core/services/foyer/src/core.rs:131,1
    - Dst: Self::set_source
      Src: /src/opendal/core/services/foyer/src/core.rs:131,1
    - Dst: OtelMetricsLayerBuilder::with_engine_config
      Src: /src/opendal/core/services/foyer/src/core.rs:135,1
    - Dst: BlockEngineConfig::new
      Src: /src/opendal/core/services/foyer/src/core.rs:136,1
    - Dst: Self::with_block_size
      Src: /src/opendal/core/services/foyer/src/core.rs:136,1
    - Dst: Arc::new
      Src: /src/opendal/core/services/foyer/src/core.rs:139,1
    - Dst: OtelMetricsLayerBuilder::build
      Src: /src/opendal/core/services/foyer/src/core.rs:139,1
    - Dst: map_err
      Src: /src/opendal/core/services/foyer/src/core.rs:139,1
    - Dst: Error::new
      Src: /src/opendal/core/services/foyer/src/core.rs:140,1
    - Dst: Self::set_source
      Src: /src/opendal/core/services/foyer/src/core.rs:140,1
    - Dst: set
      Src: /src/opendal/core/services/foyer/src/core.rs:143,1
    - Dst: HybridCache::clone
      Src: /src/opendal/core/services/foyer/src/core.rs:143,1
    - Dst: is_err
      Src: /src/opendal/core/services/foyer/src/core.rs:143,1
    - Dst: get
      Src: /src/opendal/core/services/foyer/src/core.rs:144,1
    - Dst: cloned
      Src: /src/opendal/core/services/foyer/src/core.rs:144,1
    - Dst: ok_or_else
      Src: /src/opendal/core/services/foyer/src/core.rs:144,1
    - Dst: Error::new
      Src: /src/opendal/core/services/foyer/src/core.rs:145,1
    - Dst: Ok
      Src: /src/opendal/core/services/foyer/src/core.rs:149,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 98
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 150
      start: 97
    functionDepth: 37
    functionLinenumber: 97
    functionLinenumberEnd: 150
    functionName: FoyerCore::get_cache
    functionSourceFile: /src/opendal/core/services/foyer/src/core.rs
    functionUses: 3
    functionsReached:
    - is_err
    - Arc::new
    - HybridCache::clone
    - HybridCacheBuilder::new
    - OtelMetricsLayerBuilder::with_engine_config
    - OtelMetricsLayerBuilder::build
    - map_err
    - get
    - Ok
    - Self::memory
    - ok_or_else
    - unwrap_or
    - PathBuf::from
    - Result::map_err
    - storage
    - with_recover_mode
    - FsDeviceBuilder::new
    - with_shards
    - cloned
    - Self::set_source
    - Self::with_block_size
    - parse_recover_mode
    - Self::with_capacity
    - BlockEngineConfig::new
    - set
    - Error::new
    - Self::build
    linkageType: ''
    returnType: Result
    signature: async fn get_cache(&self) -> Result<Arc<HybridCache<FoyerKey, FoyerValue>>>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: as_deref
      Src: /src/opendal/core/services/foyer/src/core.rs:153,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 154
      start: 152
    functionDepth: 0
    functionLinenumber: 152
    functionLinenumberEnd: 154
    functionName: FoyerCore::name
    functionSourceFile: /src/opendal/core/services/foyer/src/core.rs
    functionUses: 0
    functionsReached:
    - as_deref
    linkageType: ''
    returnType: Option
    signature: pub fn name(&self) -> Option<&str>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: FoyerCore::get_cache
      Src: /src/opendal/core/services/foyer/src/core.rs:157,1
    - Dst: FoyerKey::to_string
      Src: /src/opendal/core/services/foyer/src/core.rs:159,1
    - Dst: lock
      Src: /src/opendal/core/services/foyer/src/core.rs:161,1
    - Dst: expect
      Src: /src/opendal/core/services/foyer/src/core.rs:161,1
    - Dst: contains
      Src: /src/opendal/core/services/foyer/src/core.rs:161,1
    - Dst: Ok
      Src: /src/opendal/core/services/foyer/src/core.rs:167,1
    - Dst: HybridCache::get
      Src: /src/opendal/core/services/foyer/src/core.rs:170,1
    - Dst: Ok
      Src: /src/opendal/core/services/foyer/src/core.rs:171,1
    - Dst: Some
      Src: /src/opendal/core/services/foyer/src/core.rs:171,1
    - Dst: crate::Entry::value
      Src: /src/opendal/core/services/foyer/src/core.rs:171,1
    - Dst: clone
      Src: /src/opendal/core/services/foyer/src/core.rs:171,1
    - Dst: Ok
      Src: /src/opendal/core/services/foyer/src/core.rs:172,1
    - Dst: Ok
      Src: /src/opendal/core/services/foyer/src/core.rs:173,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 35
    argCount: 1
    argNames:
    - key
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 175
      start: 156
    functionDepth: 38
    functionLinenumber: 156
    functionLinenumberEnd: 175
    functionName: FoyerCore::get
    functionSourceFile: /src/opendal/core/services/foyer/src/core.rs
    functionUses: 0
    functionsReached:
    - FoyerCore::get_cache
    - HybridCache::get
    - expect
    - lock
    - Ok
    - clone
    - FoyerKey::to_string
    - Some
    - contains
    - crate::Entry::value
    linkageType: ''
    returnType: Result
    signature: 'pub async fn get(&self, key: &str) -> Result<Option<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: FoyerCore::get_cache
      Src: /src/opendal/core/services/foyer/src/core.rs:178,1
    - Dst: FoyerKey::to_string
      Src: /src/opendal/core/services/foyer/src/core.rs:180,1
    - Dst: HybridCache::insert
      Src: /src/opendal/core/services/foyer/src/core.rs:182,1
    - Dst: FoyerKey::clone
      Src: /src/opendal/core/services/foyer/src/core.rs:182,1
    - Dst: super::FoyerValue
      Src: /src/opendal/core/services/foyer/src/core.rs:182,1
    - Dst: lock
      Src: /src/opendal/core/services/foyer/src/core.rs:183,1
    - Dst: expect
      Src: /src/opendal/core/services/foyer/src/core.rs:183,1
    - Dst: remove
      Src: /src/opendal/core/services/foyer/src/core.rs:183,1
    - Dst: Ok
      Src: /src/opendal/core/services/foyer/src/core.rs:187,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 24
    argCount: 2
    argNames:
    - key
    - value
    argTypes:
    - '&str'
    - Buffer
    constantsTouched: []
    func_position:
      end: 188
      start: 177
    functionDepth: 38
    functionLinenumber: 177
    functionLinenumberEnd: 188
    functionName: FoyerCore::insert
    functionSourceFile: /src/opendal/core/services/foyer/src/core.rs
    functionUses: 0
    functionsReached:
    - FoyerCore::get_cache
    - HybridCache::insert
    - expect
    - lock
    - Ok
    - remove
    - FoyerKey::to_string
    - super::FoyerValue
    - FoyerKey::clone
    linkageType: ''
    returnType: Result
    signature: 'pub async fn insert(&self, key: &str, value: Buffer) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: FoyerCore::get_cache
      Src: /src/opendal/core/services/foyer/src/core.rs:191,1
    - Dst: FoyerKey::to_string
      Src: /src/opendal/core/services/foyer/src/core.rs:193,1
    - Dst: HybridCache::remove
      Src: /src/opendal/core/services/foyer/src/core.rs:195,1
    - Dst: lock
      Src: /src/opendal/core/services/foyer/src/core.rs:196,1
    - Dst: expect
      Src: /src/opendal/core/services/foyer/src/core.rs:196,1
    - Dst: insert
      Src: /src/opendal/core/services/foyer/src/core.rs:196,1
    - Dst: Ok
      Src: /src/opendal/core/services/foyer/src/core.rs:200,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 21
    argCount: 1
    argNames:
    - key
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 201
      start: 190
    functionDepth: 38
    functionLinenumber: 190
    functionLinenumberEnd: 201
    functionName: FoyerCore::remove
    functionSourceFile: /src/opendal/core/services/foyer/src/core.rs
    functionUses: 0
    functionsReached:
    - FoyerCore::get_cache
    - HybridCache::remove
    - insert
    - expect
    - lock
    - Ok
    - FoyerKey::to_string
    linkageType: ''
    returnType: Result
    signature: 'pub async fn remove(&self, key: &str) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: oio::QueueBuf::new
      Src: /src/opendal/core/services/foyer/src/writer.rs:36,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - core
    - path
    argTypes:
    - Arc<FoyerCore>
    - String
    constantsTouched: []
    func_position:
      end: 38
      start: 32
    functionDepth: 4
    functionLinenumber: 32
    functionLinenumberEnd: 38
    functionName: FoyerWriter::new
    functionSourceFile: /src/opendal/core/services/foyer/src/writer.rs
    functionUses: 1
    functionsReached:
    - oio::QueueBuf::new
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(core: Arc<FoyerCore>, path: String) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: push
      Src: /src/opendal/core/services/foyer/src/writer.rs:43,1
    - Dst: Ok
      Src: /src/opendal/core/services/foyer/src/writer.rs:44,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - bs
    argTypes:
    - Buffer
    constantsTouched: []
    func_position:
      end: 45
      start: 42
    functionDepth: 5
    functionLinenumber: 42
    functionLinenumberEnd: 45
    functionName: FoyerWriter::write
    functionSourceFile: /src/opendal/core/services/foyer/src/writer.rs
    functionUses: 0
    functionsReached:
    - Ok
    - push
    linkageType: ''
    returnType: Result
    signature: 'async fn write(&mut self, bs: Buffer) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: clone
      Src: /src/opendal/core/services/foyer/src/writer.rs:48,1
    - Dst: collect
      Src: /src/opendal/core/services/foyer/src/writer.rs:48,1
    - Dst: io::Result::len
      Src: /src/opendal/core/services/foyer/src/writer.rs:49,1
    - Dst: insert
      Src: /src/opendal/core/services/foyer/src/writer.rs:50,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/foyer/src/writer.rs:52,1
    - Dst: EntryMode::from_path
      Src: /src/opendal/core/services/foyer/src/writer.rs:52,1
    - Dst: Self::with_content_length
      Src: /src/opendal/core/services/foyer/src/writer.rs:52,1
    - Dst: Ok
      Src: /src/opendal/core/services/foyer/src/writer.rs:53,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 23
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 54
      start: 47
    functionDepth: 36
    functionLinenumber: 47
    functionLinenumberEnd: 54
    functionName: FoyerWriter::close
    functionSourceFile: /src/opendal/core/services/foyer/src/writer.rs
    functionUses: 0
    functionsReached:
    - collect
    - insert
    - Metadata::new
    - Ok
    - io::Result::len
    - Self::with_content_length
    - clone
    - EntryMode::from_path
    linkageType: ''
    returnType: Result
    signature: async fn close(&mut self) -> Result<Metadata>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: clear
      Src: /src/opendal/core/services/foyer/src/writer.rs:57,1
    - Dst: Ok
      Src: /src/opendal/core/services/foyer/src/writer.rs:58,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 59
      start: 56
    functionDepth: 2
    functionLinenumber: 56
    functionLinenumberEnd: 59
    functionName: FoyerWriter::abort
    functionSourceFile: /src/opendal/core/services/foyer/src/writer.rs
    functionUses: 0
    functionsReached:
    - clear
    - Ok
    linkageType: ''
    returnType: Result
    signature: async fn abort(&mut self) -> Result<()>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: register::<Foyer>
      Src: /src/opendal/core/services/foyer/src/lib.rs:126,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - registry
    argTypes:
    - '&opendal_core::OperatorRegistry'
    constantsTouched: []
    func_position:
      end: 127
      start: 125
    functionDepth: 0
    functionLinenumber: 125
    functionLinenumberEnd: 127
    functionName: register_foyer_service
    functionSourceFile: /src/opendal/core/services/foyer/src/lib.rs
    functionUses: 1
    functionsReached:
    - register::<Foyer>
    linkageType: ''
    returnType: void
    signature: 'pub fn register_foyer_service(registry: &opendal_core::OperatorRegistry)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: tempfile::tempdir
      Src: /src/opendal/core/services/foyer/src/lib.rs:150,1
    - Dst: unwrap
      Src: /src/opendal/core/services/foyer/src/lib.rs:150,1
    - Dst: HybridCacheBuilder::new
      Src: /src/opendal/core/services/foyer/src/lib.rs:152,1
    - Dst: Self::memory
      Src: /src/opendal/core/services/foyer/src/lib.rs:152,1
    - Dst: with_shards
      Src: /src/opendal/core/services/foyer/src/lib.rs:152,1
    - Dst: storage
      Src: /src/opendal/core/services/foyer/src/lib.rs:152,1
    - Dst: with_engine_config
      Src: /src/opendal/core/services/foyer/src/lib.rs:152,1
    - Dst: BlockEngineConfig::new
      Src: /src/opendal/core/services/foyer/src/lib.rs:157,1
    - Dst: FsDeviceBuilder::new
      Src: /src/opendal/core/services/foyer/src/lib.rs:158,1
    - Dst: Result::path
      Src: /src/opendal/core/services/foyer/src/lib.rs:158,1
    - Dst: Self::with_capacity
      Src: /src/opendal/core/services/foyer/src/lib.rs:158,1
    - Dst: build
      Src: /src/opendal/core/services/foyer/src/lib.rs:158,1
    - Dst: unwrap
      Src: /src/opendal/core/services/foyer/src/lib.rs:158,1
    - Dst: Self::with_block_size
      Src: /src/opendal/core/services/foyer/src/lib.rs:157,1
    - Dst: with_recover_mode
      Src: /src/opendal/core/services/foyer/src/lib.rs:152,1
    - Dst: build
      Src: /src/opendal/core/services/foyer/src/lib.rs:152,1
    - Dst: unwrap
      Src: /src/opendal/core/services/foyer/src/lib.rs:152,1
    - Dst: Operator::new
      Src: /src/opendal/core/services/foyer/src/lib.rs:170,1
    - Dst: Foyer::new
      Src: /src/opendal/core/services/foyer/src/lib.rs:170,1
    - Dst: Self::cache
      Src: /src/opendal/core/services/foyer/src/lib.rs:170,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/services/foyer/src/lib.rs:170,1
    - Dst: write
      Src: /src/opendal/core/services/foyer/src/lib.rs:174,1
    - Dst: key
      Src: /src/opendal/core/services/foyer/src/lib.rs:174,1
    - Dst: value
      Src: /src/opendal/core/services/foyer/src/lib.rs:174,1
    - Dst: unwrap
      Src: /src/opendal/core/services/foyer/src/lib.rs:174,1
    - Dst: read
      Src: /src/opendal/core/services/foyer/src/lib.rs:179,1
    - Dst: key
      Src: /src/opendal/core/services/foyer/src/lib.rs:179,1
    - Dst: unwrap
      Src: /src/opendal/core/services/foyer/src/lib.rs:179,1
    - Dst: stat
      Src: /src/opendal/core/services/foyer/src/lib.rs:185,1
    - Dst: key
      Src: /src/opendal/core/services/foyer/src/lib.rs:185,1
    - Dst: unwrap
      Src: /src/opendal/core/services/foyer/src/lib.rs:185,1
    - Dst: delete
      Src: /src/opendal/core/services/foyer/src/lib.rs:191,1
    - Dst: key
      Src: /src/opendal/core/services/foyer/src/lib.rs:191,1
    - Dst: unwrap
      Src: /src/opendal/core/services/foyer/src/lib.rs:191,1
    - Dst: read
      Src: /src/opendal/core/services/foyer/src/lib.rs:196,1
    - Dst: key
      Src: /src/opendal/core/services/foyer/src/lib.rs:196,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 94
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 199
      start: 149
    functionDepth: 35
    functionLinenumber: 149
    functionLinenumberEnd: 199
    functionName: tests::test_basic_operations
    functionSourceFile: /src/opendal/core/services/foyer/src/lib.rs
    functionUses: 0
    functionsReached:
    - Result::unwrap
    - HybridCacheBuilder::new
    - value
    - write
    - delete
    - unwrap
    - Self::memory
    - stat
    - with_engine_config
    - read
    - storage
    - FsDeviceBuilder::new
    - with_recover_mode
    - with_shards
    - Self::with_block_size
    - Result::path
    - key
    - Operator::new
    - Foyer::new
    - tempfile::tempdir
    - Self::with_capacity
    - build
    - BlockEngineConfig::new
    - Self::cache
    linkageType: ''
    returnType: void
    signature: async fn test_basic_operations()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: tempfile::tempdir
      Src: /src/opendal/core/services/foyer/src/lib.rs:203,1
    - Dst: unwrap
      Src: /src/opendal/core/services/foyer/src/lib.rs:203,1
    - Dst: HybridCacheBuilder::new
      Src: /src/opendal/core/services/foyer/src/lib.rs:205,1
    - Dst: Self::memory
      Src: /src/opendal/core/services/foyer/src/lib.rs:205,1
    - Dst: with_shards
      Src: /src/opendal/core/services/foyer/src/lib.rs:205,1
    - Dst: storage
      Src: /src/opendal/core/services/foyer/src/lib.rs:205,1
    - Dst: with_engine_config
      Src: /src/opendal/core/services/foyer/src/lib.rs:205,1
    - Dst: BlockEngineConfig::new
      Src: /src/opendal/core/services/foyer/src/lib.rs:210,1
    - Dst: FsDeviceBuilder::new
      Src: /src/opendal/core/services/foyer/src/lib.rs:211,1
    - Dst: Result::path
      Src: /src/opendal/core/services/foyer/src/lib.rs:211,1
    - Dst: Self::with_capacity
      Src: /src/opendal/core/services/foyer/src/lib.rs:211,1
    - Dst: build
      Src: /src/opendal/core/services/foyer/src/lib.rs:211,1
    - Dst: unwrap
      Src: /src/opendal/core/services/foyer/src/lib.rs:211,1
    - Dst: Self::with_block_size
      Src: /src/opendal/core/services/foyer/src/lib.rs:210,1
    - Dst: with_recover_mode
      Src: /src/opendal/core/services/foyer/src/lib.rs:205,1
    - Dst: build
      Src: /src/opendal/core/services/foyer/src/lib.rs:205,1
    - Dst: unwrap
      Src: /src/opendal/core/services/foyer/src/lib.rs:205,1
    - Dst: Operator::new
      Src: /src/opendal/core/services/foyer/src/lib.rs:223,1
    - Dst: Foyer::new
      Src: /src/opendal/core/services/foyer/src/lib.rs:223,1
    - Dst: Self::cache
      Src: /src/opendal/core/services/foyer/src/lib.rs:223,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/services/foyer/src/lib.rs:223,1
    - Dst: collect
      Src: /src/opendal/core/services/foyer/src/lib.rs:225,1
    - Dst: write
      Src: /src/opendal/core/services/foyer/src/lib.rs:226,1
    - Dst: anyhow::Result::clone
      Src: /src/opendal/core/services/foyer/src/lib.rs:226,1
    - Dst: unwrap
      Src: /src/opendal/core/services/foyer/src/lib.rs:226,1
    - Dst: read_with
      Src: /src/opendal/core/services/foyer/src/lib.rs:229,1
    - Dst: FutureRead::range
      Src: /src/opendal/core/services/foyer/src/lib.rs:229,1
    - Dst: unwrap
      Src: /src/opendal/core/services/foyer/src/lib.rs:229,1
    - Dst: read_with
      Src: /src/opendal/core/services/foyer/src/lib.rs:232,1
    - Dst: FutureRead::range
      Src: /src/opendal/core/services/foyer/src/lib.rs:232,1
    - Dst: unwrap_err
      Src: /src/opendal/core/services/foyer/src/lib.rs:232,1
    - Dst: read_with
      Src: /src/opendal/core/services/foyer/src/lib.rs:235,1
    - Dst: FutureRead::range
      Src: /src/opendal/core/services/foyer/src/lib.rs:235,1
    - Dst: unwrap
      Src: /src/opendal/core/services/foyer/src/lib.rs:235,1
    - Dst: read_with
      Src: /src/opendal/core/services/foyer/src/lib.rs:238,1
    - Dst: FutureRead::range
      Src: /src/opendal/core/services/foyer/src/lib.rs:238,1
    - Dst: unwrap
      Src: /src/opendal/core/services/foyer/src/lib.rs:238,1
    - Dst: read_with
      Src: /src/opendal/core/services/foyer/src/lib.rs:241,1
    - Dst: FutureRead::range
      Src: /src/opendal/core/services/foyer/src/lib.rs:241,1
    - Dst: unwrap
      Src: /src/opendal/core/services/foyer/src/lib.rs:241,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 98
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 243
      start: 202
    functionDepth: 35
    functionLinenumber: 202
    functionLinenumberEnd: 243
    functionName: tests::test_range_read
    functionSourceFile: /src/opendal/core/services/foyer/src/lib.rs
    functionUses: 0
    functionsReached:
    - collect
    - read_with
    - Result::unwrap
    - HybridCacheBuilder::new
    - write
    - unwrap_err
    - FutureRead::range
    - unwrap
    - Self::memory
    - with_engine_config
    - storage
    - FsDeviceBuilder::new
    - with_recover_mode
    - with_shards
    - Self::with_block_size
    - Result::path
    - Operator::new
    - Foyer::new
    - tempfile::tempdir
    - Self::with_capacity
    - build
    - BlockEngineConfig::new
    - anyhow::Result::clone
    - Self::cache
    linkageType: ''
    returnType: void
    signature: async fn test_range_read()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: tempfile::tempdir
      Src: /src/opendal/core/services/foyer/src/lib.rs:247,1
    - Dst: unwrap
      Src: /src/opendal/core/services/foyer/src/lib.rs:247,1
    - Dst: Operator::new
      Src: /src/opendal/core/services/foyer/src/lib.rs:250,1
    - Dst: Foyer::new
      Src: /src/opendal/core/services/foyer/src/lib.rs:251,1
    - Dst: Self::memory
      Src: /src/opendal/core/services/foyer/src/lib.rs:251,1
    - Dst: disk_path
      Src: /src/opendal/core/services/foyer/src/lib.rs:251,1
    - Dst: Result::path
      Src: /src/opendal/core/services/foyer/src/lib.rs:253,1
    - Dst: to_str
      Src: /src/opendal/core/services/foyer/src/lib.rs:253,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/services/foyer/src/lib.rs:253,1
    - Dst: Self::disk_capacity
      Src: /src/opendal/core/services/foyer/src/lib.rs:251,1
    - Dst: Self::disk_file_size
      Src: /src/opendal/core/services/foyer/src/lib.rs:251,1
    - Dst: Self::recover_mode
      Src: /src/opendal/core/services/foyer/src/lib.rs:251,1
    - Dst: Result::shards
      Src: /src/opendal/core/services/foyer/src/lib.rs:251,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/services/foyer/src/lib.rs:250,1
    - Dst: write
      Src: /src/opendal/core/services/foyer/src/lib.rs:263,1
    - Dst: key
      Src: /src/opendal/core/services/foyer/src/lib.rs:263,1
    - Dst: value
      Src: /src/opendal/core/services/foyer/src/lib.rs:263,1
    - Dst: unwrap
      Src: /src/opendal/core/services/foyer/src/lib.rs:263,1
    - Dst: read
      Src: /src/opendal/core/services/foyer/src/lib.rs:268,1
    - Dst: key
      Src: /src/opendal/core/services/foyer/src/lib.rs:268,1
    - Dst: unwrap
      Src: /src/opendal/core/services/foyer/src/lib.rs:268,1
    - Dst: delete
      Src: /src/opendal/core/services/foyer/src/lib.rs:274,1
    - Dst: key
      Src: /src/opendal/core/services/foyer/src/lib.rs:274,1
    - Dst: unwrap
      Src: /src/opendal/core/services/foyer/src/lib.rs:274,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 63
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 276
      start: 246
    functionDepth: 35
    functionLinenumber: 246
    functionLinenumberEnd: 276
    functionName: tests::test_hybrid_cache_via_config
    functionSourceFile: /src/opendal/core/services/foyer/src/lib.rs
    functionUses: 0
    functionsReached:
    - read
    - Operator::new
    - Foyer::new
    - tempfile::tempdir
    - to_str
    - delete
    - unwrap
    - Self::disk_file_size
    - write
    - Self::disk_capacity
    - Self::memory
    - disk_path
    - Result::unwrap
    - Result::shards
    - value
    - Result::path
    - Self::recover_mode
    - key
    linkageType: ''
    returnType: void
    signature: async fn test_hybrid_cache_via_config()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::debug_struct
      Src: /src/opendal/core/services/foyer/src/backend.rs:45,1
    - Dst: field
      Src: /src/opendal/core/services/foyer/src/backend.rs:45,1
    - Dst: finish_non_exhaustive
      Src: /src/opendal/core/services/foyer/src/backend.rs:45,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - f
    argTypes:
    - '&mut std::fmt::Formatter<''_>'
    constantsTouched: []
    func_position:
      end: 48
      start: 44
    functionDepth: 5
    functionLinenumber: 44
    functionLinenumberEnd: 48
    functionName: FoyerBuilder::fmt
    functionSourceFile: /src/opendal/core/services/foyer/src/backend.rs
    functionUses: 0
    functionsReached:
    - field
    - Result::debug_struct
    - finish_non_exhaustive
    linkageType: ''
    returnType: std::fmt::Result
    signature: 'fn fmt(&self, f: &mut std::fmt::Formatter<''_>) -> std::fmt::Result'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Default::default
      Src: /src/opendal/core/services/foyer/src/backend.rs:67,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 69
      start: 65
    functionDepth: 3
    functionLinenumber: 65
    functionLinenumberEnd: 69
    functionName: FoyerBuilder::new
    functionSourceFile: /src/opendal/core/services/foyer/src/backend.rs
    functionUses: 0
    functionsReached:
    - Default::default
    linkageType: ''
    returnType: Self
    signature: pub fn new() -> Self
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::is_empty
      Src: /src/opendal/core/services/foyer/src/backend.rs:73,1
    - Dst: Some
      Src: /src/opendal/core/services/foyer/src/backend.rs:74,1
    - Dst: Result::to_owned
      Src: /src/opendal/core/services/foyer/src/backend.rs:74,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 1
    argNames:
    - name
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 77
      start: 72
    functionDepth: 4
    functionLinenumber: 72
    functionLinenumberEnd: 77
    functionName: FoyerBuilder::name
    functionSourceFile: /src/opendal/core/services/foyer/src/backend.rs
    functionUses: 0
    functionsReached:
    - Result::to_owned
    - Result::is_empty
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn name(mut self, name: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Some
      Src: /src/opendal/core/services/foyer/src/backend.rs:102,1
    - Dst: Arc::new
      Src: /src/opendal/core/services/foyer/src/backend.rs:102,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - cache
    argTypes:
    - HybridCache<FoyerKey, FoyerValue>
    constantsTouched: []
    func_position:
      end: 104
      start: 101
    functionDepth: 2
    functionLinenumber: 101
    functionLinenumberEnd: 104
    functionName: FoyerBuilder::cache
    functionSourceFile: /src/opendal/core/services/foyer/src/backend.rs
    functionUses: 0
    functionsReached:
    - Arc::new
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn cache(mut self, cache: HybridCache<FoyerKey, FoyerValue>) ->
      Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: is_empty
      Src: /src/opendal/core/services/foyer/src/backend.rs:110,1
    - Dst: Some
      Src: /src/opendal/core/services/foyer/src/backend.rs:113,1
    - Dst: to_string
      Src: /src/opendal/core/services/foyer/src/backend.rs:113,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - path
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 116
      start: 109
    functionDepth: 4
    functionLinenumber: 109
    functionLinenumberEnd: 116
    functionName: FoyerBuilder::root
    functionSourceFile: /src/opendal/core/services/foyer/src/backend.rs
    functionUses: 0
    functionsReached:
    - to_string
    - Some
    - is_empty
    linkageType: ''
    returnType: Self
    signature: 'pub fn root(mut self, path: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Some
      Src: /src/opendal/core/services/foyer/src/backend.rs:125,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - size
    argTypes:
    - usize
    constantsTouched: []
    func_position:
      end: 127
      start: 124
    functionDepth: 0
    functionLinenumber: 124
    functionLinenumberEnd: 127
    functionName: FoyerBuilder::memory
    functionSourceFile: /src/opendal/core/services/foyer/src/backend.rs
    functionUses: 0
    functionsReached:
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn memory(mut self, size: usize) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: is_empty
      Src: /src/opendal/core/services/foyer/src/backend.rs:134,1
    - Dst: Some
      Src: /src/opendal/core/services/foyer/src/backend.rs:137,1
    - Dst: to_string
      Src: /src/opendal/core/services/foyer/src/backend.rs:137,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - path
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 140
      start: 133
    functionDepth: 4
    functionLinenumber: 133
    functionLinenumberEnd: 140
    functionName: FoyerBuilder::disk_path
    functionSourceFile: /src/opendal/core/services/foyer/src/backend.rs
    functionUses: 0
    functionsReached:
    - to_string
    - Some
    - is_empty
    linkageType: ''
    returnType: Self
    signature: 'pub fn disk_path(mut self, path: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Some
      Src: /src/opendal/core/services/foyer/src/backend.rs:146,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - size
    argTypes:
    - usize
    constantsTouched: []
    func_position:
      end: 148
      start: 145
    functionDepth: 0
    functionLinenumber: 145
    functionLinenumberEnd: 148
    functionName: FoyerBuilder::disk_capacity
    functionSourceFile: /src/opendal/core/services/foyer/src/backend.rs
    functionUses: 0
    functionsReached:
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn disk_capacity(mut self, size: usize) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Some
      Src: /src/opendal/core/services/foyer/src/backend.rs:155,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - size
    argTypes:
    - usize
    constantsTouched: []
    func_position:
      end: 157
      start: 154
    functionDepth: 0
    functionLinenumber: 154
    functionLinenumberEnd: 157
    functionName: FoyerBuilder::disk_file_size
    functionSourceFile: /src/opendal/core/services/foyer/src/backend.rs
    functionUses: 0
    functionsReached:
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn disk_file_size(mut self, size: usize) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Option::is_empty
      Src: /src/opendal/core/services/foyer/src/backend.rs:166,1
    - Dst: Some
      Src: /src/opendal/core/services/foyer/src/backend.rs:167,1
    - Dst: Option::to_string
      Src: /src/opendal/core/services/foyer/src/backend.rs:167,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 1
    argNames:
    - mode
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 170
      start: 165
    functionDepth: 4
    functionLinenumber: 165
    functionLinenumberEnd: 170
    functionName: FoyerBuilder::recover_mode
    functionSourceFile: /src/opendal/core/services/foyer/src/backend.rs
    functionUses: 0
    functionsReached:
    - Option::to_string
    - Option::is_empty
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn recover_mode(mut self, mode: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Some
      Src: /src/opendal/core/services/foyer/src/backend.rs:176,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - count
    argTypes:
    - usize
    constantsTouched: []
    func_position:
      end: 178
      start: 175
    functionDepth: 0
    functionLinenumber: 175
    functionLinenumberEnd: 178
    functionName: FoyerBuilder::shards
    functionSourceFile: /src/opendal/core/services/foyer/src/backend.rs
    functionUses: 0
    functionsReached:
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn shards(mut self, count: usize) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: normalize_root
      Src: /src/opendal/core/services/foyer/src/backend.rs:187,1
    - Dst: clone
      Src: /src/opendal/core/services/foyer/src/backend.rs:188,1
    - Dst: unwrap_or_else
      Src: /src/opendal/core/services/foyer/src/backend.rs:188,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/foyer/src/backend.rs:191,1
    - Dst: as_str
      Src: /src/opendal/core/services/foyer/src/backend.rs:188,1
    - Dst: FoyerCore::new
      Src: /src/opendal/core/services/foyer/src/backend.rs:195,1
    - Dst: clone
      Src: /src/opendal/core/services/foyer/src/backend.rs:195,1
    - Dst: CompfsCore::with_cache
      Src: /src/opendal/core/services/foyer/src/backend.rs:197,1
    - Dst: HybridCache::clone
      Src: /src/opendal/core/services/foyer/src/backend.rs:197,1
    - Dst: Ok
      Src: /src/opendal/core/services/foyer/src/backend.rs:202,1
    - Dst: FoyerBackend::new
      Src: /src/opendal/core/services/foyer/src/backend.rs:202,1
    - Dst: Self::with_normalized_root
      Src: /src/opendal/core/services/foyer/src/backend.rs:202,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 31
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 203
      start: 184
    functionDepth: 34
    functionLinenumber: 184
    functionLinenumberEnd: 203
    functionName: FoyerBuilder::build
    functionSourceFile: /src/opendal/core/services/foyer/src/backend.rs
    functionUses: 0
    functionsReached:
    - CompfsCore::with_cache
    - FoyerCore::new
    - Ok
    - HybridCache::clone
    - clone
    - normalize_root
    - as_str
    - '&str::to_string'
    - FoyerBackend::new
    - Self::with_normalized_root
    - unwrap_or_else
    linkageType: ''
    returnType: Result
    signature: fn build(self) -> Result<impl Service>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: ServiceInfo::new
      Src: /src/opendal/core/services/foyer/src/backend.rs:216,1
    - Dst: CompfsCore::name
      Src: /src/opendal/core/services/foyer/src/backend.rs:216,1
    - Dst: Result::unwrap_or
      Src: /src/opendal/core/services/foyer/src/backend.rs:216,1
    - Dst: Default::default
      Src: /src/opendal/core/services/foyer/src/backend.rs:224,1
    - Dst: Arc::new
      Src: /src/opendal/core/services/foyer/src/backend.rs:228,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/foyer/src/backend.rs:229,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 1
    argNames:
    - core
    argTypes:
    - FoyerCore
    constantsTouched: []
    func_position:
      end: 233
      start: 215
    functionDepth: 33
    functionLinenumber: 215
    functionLinenumberEnd: 233
    functionName: FoyerBackend::new
    functionSourceFile: /src/opendal/core/services/foyer/src/backend.rs
    functionUses: 1
    functionsReached:
    - ServiceInfo::new
    - Arc::new
    - Default::default
    - CompfsCore::name
    - '&str::to_string'
    - Result::unwrap_or
    linkageType: ''
    returnType: Self
    signature: 'fn new(core: FoyerCore) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: with_root
      Src: /src/opendal/core/services/foyer/src/backend.rs:236,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 1
    argNames:
    - root
    argTypes:
    - String
    constantsTouched: []
    func_position:
      end: 239
      start: 235
    functionDepth: 33
    functionLinenumber: 235
    functionLinenumberEnd: 239
    functionName: FoyerBackend::with_normalized_root
    functionSourceFile: /src/opendal/core/services/foyer/src/backend.rs
    functionUses: 0
    functionsReached:
    - with_root
    linkageType: ''
    returnType: Self
    signature: 'fn with_normalized_root(mut self, root: String) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: clone
      Src: /src/opendal/core/services/foyer/src/backend.rs:250,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 251
      start: 249
    functionDepth: 2
    functionLinenumber: 249
    functionLinenumberEnd: 251
    functionName: FoyerBackend::info
    functionSourceFile: /src/opendal/core/services/foyer/src/backend.rs
    functionUses: 0
    functionsReached:
    - clone
    linkageType: ''
    returnType: ServiceInfo
    signature: fn info(&self) -> ServiceInfo
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 255
      start: 253
    functionDepth: 0
    functionLinenumber: 253
    functionLinenumberEnd: 255
    functionName: FoyerBackend::capability
    functionSourceFile: /src/opendal/core/services/foyer/src/backend.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Capability
    signature: fn capability(&self) -> Capability
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/core/services/foyer/src/backend.rs:263,1
    - Dst: Error::new
      Src: /src/opendal/core/services/foyer/src/backend.rs:263,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - _ctx
    - _path
    - _args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpCreateDir
    constantsTouched: []
    func_position:
      end: 267
      start: 257
    functionDepth: 36
    functionLinenumber: 257
    functionLinenumberEnd: 267
    functionName: FoyerBackend::create_dir
    functionSourceFile: /src/opendal/core/services/foyer/src/backend.rs
    functionUses: 0
    functionsReached:
    - Error::new
    - Err
    linkageType: ''
    returnType: Result
    signature: 'async fn create_dir(&self,_ctx: &OperationContext,_path: &str,_args:
      OpCreateDir,) -> Result<RpCreateDir>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/foyer/src/backend.rs:270,1
    - Dst: build_abs_path
      Src: /src/opendal/core/services/foyer/src/backend.rs:272,1
    - Dst: Ok
      Src: /src/opendal/core/services/foyer/src/backend.rs:273,1
    - Dst: RpStat::new
      Src: /src/opendal/core/services/foyer/src/backend.rs:273,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/foyer/src/backend.rs:273,1
    - Dst: get
      Src: /src/opendal/core/services/foyer/src/backend.rs:275,1
    - Dst: Ok
      Src: /src/opendal/core/services/foyer/src/backend.rs:276,1
    - Dst: RpStat::new
      Src: /src/opendal/core/services/foyer/src/backend.rs:276,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/foyer/src/backend.rs:277,1
    - Dst: Self::with_content_length
      Src: /src/opendal/core/services/foyer/src/backend.rs:277,1
    - Dst: Result::len
      Src: /src/opendal/core/services/foyer/src/backend.rs:277,1
    - Dst: Err
      Src: /src/opendal/core/services/foyer/src/backend.rs:279,1
    - Dst: Error::new
      Src: /src/opendal/core/services/foyer/src/backend.rs:279,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 30
    argCount: 3
    argNames:
    - _ctx
    - path
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpStat
    constantsTouched: []
    func_position:
      end: 282
      start: 269
    functionDepth: 36
    functionLinenumber: 269
    functionLinenumberEnd: 282
    functionName: FoyerBackend::stat
    functionSourceFile: /src/opendal/core/services/foyer/src/backend.rs
    functionUses: 0
    functionsReached:
    - Metadata::new
    - get
    - Ok
    - Self::with_content_length
    - RpStat::new
    - build_abs_path
    - Err
    - Error::new
    - Result::len
    linkageType: ''
    returnType: Result
    signature: 'async fn stat(&self, _ctx: &OperationContext, path: &str, _: OpStat)
      -> Result<RpStat>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/core/services/foyer/src/backend.rs:285,1
    - Dst: oio::StreamReader::new
      Src: /src/opendal/core/services/foyer/src/backend.rs:285,1
    - Dst: FoyerReader::new
      Src: /src/opendal/core/services/foyer/src/backend.rs:285,1
    - Dst: FoyerBackend::clone
      Src: /src/opendal/core/services/foyer/src/backend.rs:286,1
    - Dst: Ok
      Src: /src/opendal/core/services/foyer/src/backend.rs:292,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - _ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpRead
    constantsTouched: []
    func_position:
      end: 293
      start: 283
    functionDepth: 3
    functionLinenumber: 283
    functionLinenumberEnd: 293
    functionName: FoyerBackend::read
    functionSourceFile: /src/opendal/core/services/foyer/src/backend.rs
    functionUses: 0
    functionsReached:
    - oio::StreamReader::new
    - FoyerReader::new
    - FoyerBackend::clone
    - Ok
    linkageType: ''
    returnType: Result
    signature: 'fn read(&self, _ctx: &OperationContext, path: &str, args: OpRead)
      -> Result<Self::Reader>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/foyer/src/backend.rs:297,1
    - Dst: Ok
      Src: /src/opendal/core/services/foyer/src/backend.rs:298,1
    - Dst: FoyerWriter::new
      Src: /src/opendal/core/services/foyer/src/backend.rs:298,1
    - Dst: clone
      Src: /src/opendal/core/services/foyer/src/backend.rs:298,1
    - Dst: Ok
      Src: /src/opendal/core/services/foyer/src/backend.rs:301,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 3
    argNames:
    - _ctx
    - path
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpWrite
    constantsTouched: []
    func_position:
      end: 302
      start: 295
    functionDepth: 5
    functionLinenumber: 295
    functionLinenumberEnd: 302
    functionName: FoyerBackend::write
    functionSourceFile: /src/opendal/core/services/foyer/src/backend.rs
    functionUses: 0
    functionsReached:
    - FoyerWriter::new
    - Ok
    - clone
    - build_abs_path
    linkageType: ''
    returnType: Result
    signature: 'fn write(&self, _ctx: &OperationContext, path: &str, _: OpWrite) ->
      Result<Self::Writer>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/core/services/foyer/src/backend.rs:306,1
    - Dst: oio::OneShotDeleter::new
      Src: /src/opendal/core/services/foyer/src/backend.rs:306,1
    - Dst: FoyerDeleter::new
      Src: /src/opendal/core/services/foyer/src/backend.rs:306,1
    - Dst: clone
      Src: /src/opendal/core/services/foyer/src/backend.rs:307,1
    - Dst: clone
      Src: /src/opendal/core/services/foyer/src/backend.rs:308,1
    - Dst: Ok
      Src: /src/opendal/core/services/foyer/src/backend.rs:312,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 1
    argNames:
    - _ctx
    argTypes:
    - '&OperationContext'
    constantsTouched: []
    func_position:
      end: 313
      start: 304
    functionDepth: 2
    functionLinenumber: 304
    functionLinenumberEnd: 313
    functionName: FoyerBackend::delete
    functionSourceFile: /src/opendal/core/services/foyer/src/backend.rs
    functionUses: 0
    functionsReached:
    - oio::OneShotDeleter::new
    - clone
    - FoyerDeleter::new
    - Ok
    linkageType: ''
    returnType: Result
    signature: 'fn delete(&self, _ctx: &OperationContext) -> Result<Self::Deleter>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/core/services/foyer/src/backend.rs:316,1
    - Dst: Error::new
      Src: /src/opendal/core/services/foyer/src/backend.rs:316,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - _ctx
    - _path
    - _args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpList
    constantsTouched: []
    func_position:
      end: 320
      start: 315
    functionDepth: 36
    functionLinenumber: 315
    functionLinenumberEnd: 320
    functionName: FoyerBackend::list
    functionSourceFile: /src/opendal/core/services/foyer/src/backend.rs
    functionUses: 0
    functionsReached:
    - Error::new
    - Err
    linkageType: ''
    returnType: Result
    signature: 'fn list(&self, _ctx: &OperationContext, _path: &str, _args: OpList)
      -> Result<Self::Lister>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/core/services/foyer/src/backend.rs:330,1
    - Dst: Error::new
      Src: /src/opendal/core/services/foyer/src/backend.rs:330,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 5
    argNames:
    - _ctx
    - _from
    - _to
    - _args
    - _opts
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    - OpCopy
    - OpCopier
    constantsTouched: []
    func_position:
      end: 334
      start: 322
    functionDepth: 36
    functionLinenumber: 322
    functionLinenumberEnd: 334
    functionName: FoyerBackend::copy
    functionSourceFile: /src/opendal/core/services/foyer/src/backend.rs
    functionUses: 0
    functionsReached:
    - Error::new
    - Err
    linkageType: ''
    returnType: Result
    signature: 'fn copy(&self,_ctx: &OperationContext,_from: &str,_to: &str,_args:
      OpCopy,_opts: OpCopier,) -> Result<Self::Copier>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/core/services/foyer/src/backend.rs:343,1
    - Dst: Error::new
      Src: /src/opendal/core/services/foyer/src/backend.rs:343,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - _ctx
    - _from
    - _to
    - _args
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    - OpRename
    constantsTouched: []
    func_position:
      end: 347
      start: 336
    functionDepth: 36
    functionLinenumber: 336
    functionLinenumberEnd: 347
    functionName: FoyerBackend::rename
    functionSourceFile: /src/opendal/core/services/foyer/src/backend.rs
    functionUses: 0
    functionsReached:
    - Error::new
    - Err
    linkageType: ''
    returnType: Result
    signature: 'async fn rename(&self,_ctx: &OperationContext,_from: &str,_to: &str,_args:
      OpRename,) -> Result<RpRename>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/core/services/foyer/src/backend.rs:355,1
    - Dst: Error::new
      Src: /src/opendal/core/services/foyer/src/backend.rs:355,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - _ctx
    - _path
    - _args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpPresign
    constantsTouched: []
    func_position:
      end: 359
      start: 349
    functionDepth: 36
    functionLinenumber: 349
    functionLinenumberEnd: 359
    functionName: FoyerBackend::presign
    functionSourceFile: /src/opendal/core/services/foyer/src/backend.rs
    functionUses: 0
    functionsReached:
    - Error::new
    - Err
    linkageType: ''
    returnType: Result
    signature: 'async fn presign(&self,_ctx: &OperationContext,_path: &str,_args:
      OpPresign,) -> Result<RpPresign>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::debug_struct
      Src: /src/opendal/core/services/http/src/config.rs:44,1
    - Dst: field
      Src: /src/opendal/core/services/http/src/config.rs:44,1
    - Dst: field
      Src: /src/opendal/core/services/http/src/config.rs:44,1
    - Dst: finish_non_exhaustive
      Src: /src/opendal/core/services/http/src/config.rs:44,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 1
    argNames:
    - f
    argTypes:
    - '&mut std::fmt::Formatter<''_>'
    constantsTouched: []
    func_position:
      end: 48
      start: 43
    functionDepth: 5
    functionLinenumber: 43
    functionLinenumberEnd: 48
    functionName: HttpConfig::fmt
    functionSourceFile: /src/opendal/core/services/http/src/config.rs
    functionUses: 0
    functionsReached:
    - field
    - Result::debug_struct
    - finish_non_exhaustive
    linkageType: ''
    returnType: std::fmt::Result
    signature: 'fn fmt(&self, f: &mut std::fmt::Formatter<''_>) -> std::fmt::Result'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::options
      Src: /src/opendal/core/services/http/src/config.rs:55,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/http/src/config.rs:55,1
    - Dst: Result::authority
      Src: /src/opendal/core/services/http/src/config.rs:56,1
    - Dst: Result::insert
      Src: /src/opendal/core/services/http/src/config.rs:57,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/http/src/config.rs:58,1
    - Dst: Result::root
      Src: /src/opendal/core/services/http/src/config.rs:63,1
    - Dst: Result::insert
      Src: /src/opendal/core/services/http/src/config.rs:64,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/http/src/config.rs:64,1
    - Dst: Result::to_string
      Src: /src/opendal/core/services/http/src/config.rs:64,1
    - Dst: Self::from_iter
      Src: /src/opendal/core/services/http/src/config.rs:67,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 25
    argCount: 1
    argNames:
    - uri
    argTypes:
    - '&opendal_core::OperatorUri'
    constantsTouched: []
    func_position:
      end: 68
      start: 54
    functionDepth: 35
    functionLinenumber: 54
    functionLinenumberEnd: 68
    functionName: HttpConfig::from_uri
    functionSourceFile: /src/opendal/core/services/http/src/config.rs
    functionUses: 2
    functionsReached:
    - Result::clone
    - Self::from_iter
    - Result::to_string
    - Result::insert
    - '&str::to_string'
    - Result::root
    - Result::authority
    - Result::options
    linkageType: ''
    returnType: opendal_core::Result
    signature: 'fn from_uri(uri: &opendal_core::OperatorUri) -> opendal_core::Result<Self>'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 72
      start: 70
    functionDepth: 0
    functionLinenumber: 70
    functionLinenumberEnd: 72
    functionName: HttpConfig::into_builder
    functionSourceFile: /src/opendal/core/services/http/src/config.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Self::Builder
    signature: fn into_builder(self) -> Self::Builder
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: std::sync::Once::new
      Src: /src/opendal/core/services/http/src/config.rs:83,1
    - Dst: Result::call_once
      Src: /src/opendal/core/services/http/src/config.rs:84,1
    - Dst: opendal_core::OperatorRegistry::get
      Src: /src/opendal/core/services/http/src/config.rs:85,1
    - Dst: crate::register_http_service
      Src: /src/opendal/core/services/http/src/config.rs:86,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 88
      start: 82
    functionDepth: 1
    functionLinenumber: 82
    functionLinenumberEnd: 88
    functionName: tests::register_http
    functionSourceFile: /src/opendal/core/services/http/src/config.rs
    functionUses: 0
    functionsReached:
    - opendal_core::OperatorRegistry::get
    - Result::call_once
    - std::sync::Once::new
    - crate::register_http_service
    linkageType: ''
    returnType: void
    signature: fn register_http()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: OperatorUri::new
      Src: /src/opendal/core/services/http/src/config.rs:113,1
    - Dst: Vec::<(String, String)>::new
      Src: /src/opendal/core/services/http/src/config.rs:115,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/services/http/src/config.rs:113,1
    - Dst: HttpConfig::from_uri
      Src: /src/opendal/core/services/http/src/config.rs:118,1
    - Dst: opendal_core::Result::unwrap
      Src: /src/opendal/core/services/http/src/config.rs:118,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 122
      start: 112
    functionDepth: 29
    functionLinenumber: 112
    functionLinenumberEnd: 122
    functionName: tests::from_uri_preserves_query_options
    functionSourceFile: /src/opendal/core/services/http/src/config.rs
    functionUses: 0
    functionsReached:
    - Vec::<(String, String)>::new
    - OperatorUri::new
    - HttpConfig::from_uri
    - Result::unwrap
    - opendal_core::Result::unwrap
    linkageType: ''
    returnType: void
    signature: fn from_uri_preserves_query_options()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: OperatorUri::new
      Src: /src/opendal/core/services/webdav/src/config.rs:169,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/services/webdav/src/config.rs:169,1
    - Dst: WebdavConfig::from_uri
      Src: /src/opendal/core/services/webdav/src/config.rs:178,1
    - Dst: opendal_core::Result::unwrap
      Src: /src/opendal/core/services/webdav/src/config.rs:178,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 180
      start: 168
    functionDepth: 29
    functionLinenumber: 168
    functionLinenumberEnd: 180
    functionName: tests::from_uri_ignores_endpoint_override
    functionSourceFile: /src/opendal/core/services/webdav/src/config.rs
    functionUses: 0
    functionsReached:
    - OperatorUri::new
    - WebdavConfig::from_uri
    - Result::unwrap
    - opendal_core::Result::unwrap
    linkageType: ''
    returnType: void
    signature: fn from_uri_ignores_endpoint_override()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: register_http
      Src: /src/opendal/core/services/http/src/config.rs:141,1
    - Dst: Operator::from_uri
      Src: /src/opendal/core/services/http/src/config.rs:142,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/services/http/src/config.rs:142,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 144
      start: 140
    functionDepth: 35
    functionLinenumber: 140
    functionLinenumberEnd: 144
    functionName: tests::operator_from_uri_http
    functionSourceFile: /src/opendal/core/services/http/src/config.rs
    functionUses: 0
    functionsReached:
    - register_http
    - Operator::from_uri
    - Result::unwrap
    linkageType: ''
    returnType: void
    signature: fn operator_from_uri_http()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: register_http
      Src: /src/opendal/core/services/http/src/config.rs:148,1
    - Dst: Operator::from_uri
      Src: /src/opendal/core/services/http/src/config.rs:149,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/services/http/src/config.rs:149,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 151
      start: 147
    functionDepth: 35
    functionLinenumber: 147
    functionLinenumberEnd: 151
    functionName: tests::operator_from_uri_https
    functionSourceFile: /src/opendal/core/services/http/src/config.rs
    functionUses: 0
    functionsReached:
    - register_http
    - Operator::from_uri
    - Result::unwrap
    linkageType: ''
    returnType: void
    signature: fn operator_from_uri_https()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: OperatorUri::new
      Src: /src/opendal/core/services/http/src/config.rs:156,1
    - Dst: Vec::<(String, String)>::new
      Src: /src/opendal/core/services/http/src/config.rs:156,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/services/http/src/config.rs:156,1
    - Dst: HttpConfig::from_uri
      Src: /src/opendal/core/services/http/src/config.rs:157,1
    - Dst: opendal_core::Result::unwrap
      Src: /src/opendal/core/services/http/src/config.rs:157,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 159
      start: 154
    functionDepth: 29
    functionLinenumber: 154
    functionLinenumberEnd: 159
    functionName: tests::from_uri_with_https_scheme
    functionSourceFile: /src/opendal/core/services/http/src/config.rs
    functionUses: 0
    functionsReached:
    - Vec::<(String, String)>::new
    - OperatorUri::new
    - HttpConfig::from_uri
    - Result::unwrap
    - opendal_core::Result::unwrap
    linkageType: ''
    returnType: void
    signature: fn from_uri_with_https_scheme()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: to_string
      Src: /src/opendal/core/services/http/src/reader.rs:43,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 4
    argNames:
    - backend
    - ctx
    - path
    - args
    argTypes:
    - HttpBackend
    - OperationContext
    - '&str'
    - OpRead
    constantsTouched: []
    func_position:
      end: 46
      start: 34
    functionDepth: 2
    functionLinenumber: 34
    functionLinenumberEnd: 46
    functionName: HttpReader::new
    functionSourceFile: /src/opendal/core/services/http/src/reader.rs
    functionUses: 1
    functionsReached:
    - to_string
    linkageType: ''
    returnType: Self
    signature: 'pub(super) fn new(backend: HttpBackend,ctx: OperationContext,path:
      &str,args: OpRead,) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: as_str
      Src: /src/opendal/core/services/http/src/reader.rs:52,1
    - Dst: clone
      Src: /src/opendal/core/services/http/src/reader.rs:53,1
    - Dst: http_get
      Src: /src/opendal/core/services/http/src/reader.rs:54,1
    - Dst: status
      Src: /src/opendal/core/services/http/src/reader.rs:56,1
    - Dst: RpRead::new
      Src: /src/opendal/core/services/http/src/reader.rs:60,1
    - Dst: parse_into_metadata
      Src: /src/opendal/core/services/http/src/reader.rs:60,1
    - Dst: headers
      Src: /src/opendal/core/services/http/src/reader.rs:60,1
    - Dst: into_body
      Src: /src/opendal/core/services/http/src/reader.rs:61,1
    - Dst: into_parts
      Src: /src/opendal/core/services/http/src/reader.rs:64,1
    - Dst: to_buffer
      Src: /src/opendal/core/services/http/src/reader.rs:65,1
    - Dst: Err
      Src: /src/opendal/core/services/http/src/reader.rs:66,1
    - Dst: super::core::parse_error
      Src: /src/opendal/core/services/http/src/reader.rs:66,1
    - Dst: Response::from_parts
      Src: /src/opendal/core/services/http/src/reader.rs:66,1
    - Dst: Ok
      Src: /src/opendal/core/services/http/src/reader.rs:70,1
    - Dst: Box::new
      Src: /src/opendal/core/services/http/src/reader.rs:70,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 42
    argCount: 1
    argNames:
    - range
    argTypes:
    - BytesRange
    constantsTouched: []
    func_position:
      end: 71
      start: 50
    functionDepth: 38
    functionLinenumber: 50
    functionLinenumberEnd: 71
    functionName: HttpReader::open
    functionSourceFile: /src/opendal/core/services/http/src/reader.rs
    functionUses: 0
    functionsReached:
    - parse_into_metadata
    - to_buffer
    - status
    - Ok
    - Box::new
    - into_body
    - clone
    - Err
    - Response::from_parts
    - as_str
    - http_get
    - headers
    - into_parts
    - RpRead::new
    - super::core::parse_error
    linkageType: ''
    returnType: Result
    signature: 'async fn open(&self, range: BytesRange) -> Result<(RpRead, Box<dyn
      oio::ReadStreamDyn>)>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::debug_struct
      Src: /src/opendal/core/services/http/src/core.rs:43,1
    - Dst: field
      Src: /src/opendal/core/services/http/src/core.rs:43,1
    - Dst: field
      Src: /src/opendal/core/services/http/src/core.rs:43,1
    - Dst: finish_non_exhaustive
      Src: /src/opendal/core/services/http/src/core.rs:43,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 1
    argNames:
    - f
    argTypes:
    - '&mut std::fmt::Formatter<''_>'
    constantsTouched: []
    func_position:
      end: 47
      start: 42
    functionDepth: 5
    functionLinenumber: 42
    functionLinenumberEnd: 47
    functionName: HttpCore::fmt
    functionSourceFile: /src/opendal/core/services/http/src/core.rs
    functionUses: 0
    functionsReached:
    - field
    - Result::debug_struct
    - finish_non_exhaustive
    linkageType: ''
    returnType: std::fmt::Result
    signature: 'fn fmt(&self, f: &mut std::fmt::Formatter<''_>) -> std::fmt::Result'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: is_some
      Src: /src/opendal/core/services/http/src/core.rs:52,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 53
      start: 51
    functionDepth: 0
    functionLinenumber: 51
    functionLinenumberEnd: 53
    functionName: HttpCore::has_authorization
    functionSourceFile: /src/opendal/core/services/http/src/core.rs
    functionUses: 0
    functionsReached:
    - is_some
    linkageType: ''
    returnType: bool
    signature: pub fn has_authorization(&self) -> bool
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_rooted_abs_path
      Src: /src/opendal/core/services/http/src/core.rs:61,1
    - Dst: Request::get
      Src: /src/opendal/core/services/http/src/core.rs:65,1
    - Dst: OpStat::if_match
      Src: /src/opendal/core/services/http/src/core.rs:67,1
    - Dst: Option::header
      Src: /src/opendal/core/services/http/src/core.rs:68,1
    - Dst: OpStat::if_none_match
      Src: /src/opendal/core/services/http/src/core.rs:71,1
    - Dst: Option::header
      Src: /src/opendal/core/services/http/src/core.rs:72,1
    - Dst: OpStat::if_modified_since
      Src: /src/opendal/core/services/http/src/core.rs:75,1
    - Dst: Option::header
      Src: /src/opendal/core/services/http/src/core.rs:76,1
    - Dst: Result::format_http_date
      Src: /src/opendal/core/services/http/src/core.rs:76,1
    - Dst: OpStat::if_unmodified_since
      Src: /src/opendal/core/services/http/src/core.rs:79,1
    - Dst: Option::header
      Src: /src/opendal/core/services/http/src/core.rs:80,1
    - Dst: Result::format_http_date
      Src: /src/opendal/core/services/http/src/core.rs:80,1
    - Dst: Option::header
      Src: /src/opendal/core/services/http/src/core.rs:84,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/http/src/core.rs:84,1
    - Dst: (Vec::is_full
      Src: /src/opendal/core/services/http/src/core.rs:87,1
    - Dst: Option::header
      Src: /src/opendal/core/services/http/src/core.rs:88,1
    - Dst: (Vec::to_header
      Src: /src/opendal/core/services/http/src/core.rs:88,1
    - Dst: Option::extension
      Src: /src/opendal/core/services/http/src/core.rs:91,1
    - Dst: extension
      Src: /src/opendal/core/services/http/src/core.rs:91,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/http/src/core.rs:93,1
    - Dst: Option::body
      Src: /src/opendal/core/services/http/src/core.rs:95,1
    - Dst: Buffer::new
      Src: /src/opendal/core/services/http/src/core.rs:95,1
    - Dst: map_err
      Src: /src/opendal/core/services/http/src/core.rs:95,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 71
    argCount: 3
    argNames:
    - path
    - range
    - args
    argTypes:
    - '&str'
    - BytesRange
    - '&OpRead'
    constantsTouched: []
    func_position:
      end: 96
      start: 55
    functionDepth: 3
    functionLinenumber: 55
    functionLinenumberEnd: 96
    functionName: HttpCore::http_get_request
    functionSourceFile: /src/opendal/core/services/http/src/core.rs
    functionUses: 1
    functionsReached:
    - Result::clone
    - extension
    - Request::get
    - (Vec::to_header
    - Buffer::new
    - map_err
    - OpStat::if_modified_since
    - OpStat::if_unmodified_since
    - (Vec::is_full
    - Option::body
    - build_rooted_abs_path
    - OpStat::if_none_match
    - Option::extension
    - ServiceOperation
    - Result::format_http_date
    - OpStat::if_match
    - Option::header
    linkageType: ''
    returnType: Result
    signature: 'pub fn http_get_request(&self,path: &str,range: BytesRange,args: &OpRead,)
      -> Result<Request<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: HttpCore::http_get_request
      Src: /src/opendal/core/services/http/src/core.rs:105,1
    - Dst: Result::http_transport
      Src: /src/opendal/core/services/http/src/core.rs:106,1
    - Dst: Self::fetch
      Src: /src/opendal/core/services/http/src/core.rs:106,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 4
    argNames:
    - ctx
    - path
    - range
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - BytesRange
    - '&OpRead'
    constantsTouched: []
    func_position:
      end: 107
      start: 98
    functionDepth: 4
    functionLinenumber: 98
    functionLinenumberEnd: 107
    functionName: HttpCore::http_get
    functionSourceFile: /src/opendal/core/services/http/src/core.rs
    functionUses: 0
    functionsReached:
    - Result::http_transport
    - HttpCore::http_get_request
    - Self::fetch
    linkageType: ''
    returnType: Result
    signature: 'pub async fn http_get(&self,ctx: &OperationContext,path: &str,range:
      BytesRange,args: &OpRead,) -> Result<Response<HttpBody>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_rooted_abs_path
      Src: /src/opendal/core/services/http/src/core.rs:110,1
    - Dst: Request::head
      Src: /src/opendal/core/services/http/src/core.rs:114,1
    - Dst: OpStat::if_match
      Src: /src/opendal/core/services/http/src/core.rs:116,1
    - Dst: Result::header
      Src: /src/opendal/core/services/http/src/core.rs:117,1
    - Dst: OpStat::if_none_match
      Src: /src/opendal/core/services/http/src/core.rs:120,1
    - Dst: Result::header
      Src: /src/opendal/core/services/http/src/core.rs:121,1
    - Dst: OpStat::if_modified_since
      Src: /src/opendal/core/services/http/src/core.rs:124,1
    - Dst: Result::header
      Src: /src/opendal/core/services/http/src/core.rs:125,1
    - Dst: Result::format_http_date
      Src: /src/opendal/core/services/http/src/core.rs:125,1
    - Dst: OpStat::if_unmodified_since
      Src: /src/opendal/core/services/http/src/core.rs:128,1
    - Dst: Result::header
      Src: /src/opendal/core/services/http/src/core.rs:129,1
    - Dst: Result::format_http_date
      Src: /src/opendal/core/services/http/src/core.rs:129,1
    - Dst: Result::header
      Src: /src/opendal/core/services/http/src/core.rs:133,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/http/src/core.rs:133,1
    - Dst: Result::extension
      Src: /src/opendal/core/services/http/src/core.rs:136,1
    - Dst: extension
      Src: /src/opendal/core/services/http/src/core.rs:136,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/http/src/core.rs:138,1
    - Dst: Result::body
      Src: /src/opendal/core/services/http/src/core.rs:140,1
    - Dst: Buffer::new
      Src: /src/opendal/core/services/http/src/core.rs:140,1
    - Dst: map_err
      Src: /src/opendal/core/services/http/src/core.rs:140,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 60
    argCount: 2
    argNames:
    - path
    - args
    argTypes:
    - '&str'
    - '&OpStat'
    constantsTouched: []
    func_position:
      end: 141
      start: 109
    functionDepth: 38
    functionLinenumber: 109
    functionLinenumberEnd: 141
    functionName: HttpCore::http_head_request
    functionSourceFile: /src/opendal/core/services/http/src/core.rs
    functionUses: 1
    functionsReached:
    - Result::clone
    - extension
    - Request::head
    - Buffer::new
    - map_err
    - OpStat::if_modified_since
    - Result::extension
    - OpStat::if_unmodified_since
    - build_rooted_abs_path
    - Result::header
    - OpStat::if_none_match
    - ServiceOperation
    - Result::body
    - Result::format_http_date
    - OpStat::if_match
    linkageType: ''
    returnType: Result
    signature: 'pub fn http_head_request(&self, path: &str, args: &OpStat) -> Result<Request<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: HttpCore::http_head_request
      Src: /src/opendal/core/services/http/src/core.rs:149,1
    - Dst: Result::http_transport
      Src: /src/opendal/core/services/http/src/core.rs:150,1
    - Dst: Self::send
      Src: /src/opendal/core/services/http/src/core.rs:150,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&OpStat'
    constantsTouched: []
    func_position:
      end: 151
      start: 143
    functionDepth: 39
    functionLinenumber: 143
    functionLinenumberEnd: 151
    functionName: HttpCore::http_head
    functionSourceFile: /src/opendal/core/services/http/src/core.rs
    functionUses: 0
    functionsReached:
    - Result::http_transport
    - Self::send
    - HttpCore::http_head_request
    linkageType: ''
    returnType: Result
    signature: 'pub async fn http_head(&self,ctx: &OperationContext,path: &str,args:
      &OpStat,) -> Result<Response<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: register::<Http>
      Src: /src/opendal/core/services/http/src/lib.rs:38,1
    - Dst: register::<Http>
      Src: /src/opendal/core/services/http/src/lib.rs:39,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - registry
    argTypes:
    - '&opendal_core::OperatorRegistry'
    constantsTouched: []
    func_position:
      end: 40
      start: 37
    functionDepth: 0
    functionLinenumber: 37
    functionLinenumberEnd: 40
    functionName: register_http_service
    functionSourceFile: /src/opendal/core/services/http/src/lib.rs
    functionUses: 2
    functionsReached:
    - register::<Http>
    linkageType: ''
    returnType: void
    signature: 'pub fn register_http_service(registry: &opendal_core::OperatorRegistry)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::debug_struct
      Src: /src/opendal/core/services/http/src/backend.rs:41,1
    - Dst: field
      Src: /src/opendal/core/services/http/src/backend.rs:41,1
    - Dst: finish_non_exhaustive
      Src: /src/opendal/core/services/http/src/backend.rs:41,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - f
    argTypes:
    - '&mut std::fmt::Formatter<''_>'
    constantsTouched: []
    func_position:
      end: 44
      start: 40
    functionDepth: 5
    functionLinenumber: 40
    functionLinenumberEnd: 44
    functionName: HttpBuilder::fmt
    functionSourceFile: /src/opendal/core/services/http/src/backend.rs
    functionUses: 0
    functionsReached:
    - field
    - Result::debug_struct
    - finish_non_exhaustive
    linkageType: ''
    returnType: std::fmt::Result
    signature: 'fn fmt(&self, f: &mut std::fmt::Formatter<''_>) -> std::fmt::Result'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self::is_empty
      Src: /src/opendal/core/services/http/src/backend.rs:52,1
    - Dst: Some
      Src: /src/opendal/core/services/http/src/backend.rs:55,1
    - Dst: Self::to_string
      Src: /src/opendal/core/services/http/src/backend.rs:55,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - endpoint
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 59
      start: 51
    functionDepth: 4
    functionLinenumber: 51
    functionLinenumberEnd: 59
    functionName: HttpBuilder::endpoint
    functionSourceFile: /src/opendal/core/services/http/src/backend.rs
    functionUses: 0
    functionsReached:
    - Self::is_empty
    - Self::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn endpoint(mut self, endpoint: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Option::is_empty
      Src: /src/opendal/core/services/http/src/backend.rs:65,1
    - Dst: Some
      Src: /src/opendal/core/services/http/src/backend.rs:66,1
    - Dst: Option::to_owned
      Src: /src/opendal/core/services/http/src/backend.rs:66,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 1
    argNames:
    - username
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 69
      start: 64
    functionDepth: 4
    functionLinenumber: 64
    functionLinenumberEnd: 69
    functionName: HttpBuilder::username
    functionSourceFile: /src/opendal/core/services/http/src/backend.rs
    functionUses: 0
    functionsReached:
    - Option::is_empty
    - Option::to_owned
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn username(mut self, username: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Option::is_empty
      Src: /src/opendal/core/services/http/src/backend.rs:75,1
    - Dst: Some
      Src: /src/opendal/core/services/http/src/backend.rs:76,1
    - Dst: Option::to_owned
      Src: /src/opendal/core/services/http/src/backend.rs:76,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 1
    argNames:
    - password
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 79
      start: 74
    functionDepth: 4
    functionLinenumber: 74
    functionLinenumberEnd: 79
    functionName: HttpBuilder::password
    functionSourceFile: /src/opendal/core/services/http/src/backend.rs
    functionUses: 0
    functionsReached:
    - Option::is_empty
    - Option::to_owned
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn password(mut self, password: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self::is_empty
      Src: /src/opendal/core/services/http/src/backend.rs:85,1
    - Dst: Some
      Src: /src/opendal/core/services/http/src/backend.rs:86,1
    - Dst: Self::to_string
      Src: /src/opendal/core/services/http/src/backend.rs:86,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 1
    argNames:
    - token
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 89
      start: 84
    functionDepth: 4
    functionLinenumber: 84
    functionLinenumberEnd: 89
    functionName: HttpBuilder::token
    functionSourceFile: /src/opendal/core/services/http/src/backend.rs
    functionUses: 0
    functionsReached:
    - Self::is_empty
    - Self::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn token(mut self, token: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::is_empty
      Src: /src/opendal/core/services/http/src/backend.rs:93,1
    - Dst: Some
      Src: /src/opendal/core/services/http/src/backend.rs:96,1
    - Dst: Result::to_string
      Src: /src/opendal/core/services/http/src/backend.rs:96,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - root
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 100
      start: 92
    functionDepth: 4
    functionLinenumber: 92
    functionLinenumberEnd: 100
    functionName: HttpBuilder::root
    functionSourceFile: /src/opendal/core/services/http/src/backend.rs
    functionUses: 0
    functionsReached:
    - Result::is_empty
    - Result::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn root(mut self, root: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/core/services/http/src/backend.rs:112,1
    - Dst: Error::new
      Src: /src/opendal/core/services/http/src/backend.rs:112,1
    - Dst: Self::with_context
      Src: /src/opendal/core/services/http/src/backend.rs:112,1
    - Dst: normalize_root
      Src: /src/opendal/core/services/http/src/backend.rs:117,1
    - Dst: unwrap_or_default
      Src: /src/opendal/core/services/http/src/backend.rs:117,1
    - Dst: Some
      Src: /src/opendal/core/services/http/src/backend.rs:122,1
    - Dst: format_authorization_by_basic
      Src: /src/opendal/core/services/http/src/backend.rs:122,1
    - Dst: as_deref
      Src: /src/opendal/core/services/http/src/backend.rs:124,1
    - Dst: unwrap_or_default
      Src: /src/opendal/core/services/http/src/backend.rs:124,1
    - Dst: Some
      Src: /src/opendal/core/services/http/src/backend.rs:128,1
    - Dst: format_authorization_by_bearer
      Src: /src/opendal/core/services/http/src/backend.rs:128,1
    - Dst: ServiceInfo::new
      Src: /src/opendal/core/services/http/src/backend.rs:131,1
    - Dst: Result::is_none
      Src: /src/opendal/core/services/http/src/backend.rs:147,1
    - Dst: Result::is_none
      Src: /src/opendal/core/services/http/src/backend.rs:148,1
    - Dst: Result::is_none
      Src: /src/opendal/core/services/http/src/backend.rs:149,1
    - Dst: Default::default
      Src: /src/opendal/core/services/http/src/backend.rs:153,1
    - Dst: Arc::new
      Src: /src/opendal/core/services/http/src/backend.rs:158,1
    - Dst: Self::to_string
      Src: /src/opendal/core/services/http/src/backend.rs:161,1
    - Dst: Ok
      Src: /src/opendal/core/services/http/src/backend.rs:166,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 59
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 167
      start: 106
    functionDepth: 36
    functionLinenumber: 106
    functionLinenumberEnd: 167
    functionName: HttpBuilder::build
    functionSourceFile: /src/opendal/core/services/http/src/backend.rs
    functionUses: 0
    functionsReached:
    - format_authorization_by_basic
    - format_authorization_by_bearer
    - ServiceInfo::new
    - Ok
    - Self::to_string
    - as_deref
    - Default::default
    - Arc::new
    - normalize_root
    - Error::new
    - Err
    - Some
    - Result::is_none
    - Self::with_context
    - unwrap_or_default
    linkageType: ''
    returnType: Result
    signature: fn build(self) -> Result<impl Service>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: clone
      Src: /src/opendal/core/services/http/src/backend.rs:184,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 185
      start: 183
    functionDepth: 2
    functionLinenumber: 183
    functionLinenumberEnd: 185
    functionName: HttpBackend::info
    functionSourceFile: /src/opendal/core/services/http/src/backend.rs
    functionUses: 0
    functionsReached:
    - clone
    linkageType: ''
    returnType: ServiceInfo
    signature: fn info(&self) -> ServiceInfo
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 189
      start: 187
    functionDepth: 0
    functionLinenumber: 187
    functionLinenumberEnd: 189
    functionName: HttpBackend::capability
    functionSourceFile: /src/opendal/core/services/http/src/backend.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Capability
    signature: fn capability(&self) -> Capability
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/core/services/http/src/backend.rs:197,1
    - Dst: Error::new
      Src: /src/opendal/core/services/http/src/backend.rs:197,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - _ctx
    - _path
    - _args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpCreateDir
    constantsTouched: []
    func_position:
      end: 201
      start: 191
    functionDepth: 36
    functionLinenumber: 191
    functionLinenumberEnd: 201
    functionName: HttpBackend::create_dir
    functionSourceFile: /src/opendal/core/services/http/src/backend.rs
    functionUses: 0
    functionsReached:
    - Error::new
    - Err
    linkageType: ''
    returnType: Result
    signature: 'async fn create_dir(&self,_ctx: &OperationContext,_path: &str,_args:
      OpCreateDir,) -> Result<RpCreateDir>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/core/services/http/src/backend.rs:206,1
    - Dst: RpStat::new
      Src: /src/opendal/core/services/http/src/backend.rs:206,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/http/src/backend.rs:206,1
    - Dst: http_head
      Src: /src/opendal/core/services/http/src/backend.rs:209,1
    - Dst: status
      Src: /src/opendal/core/services/http/src/backend.rs:211,1
    - Dst: parse_into_metadata
      Src: /src/opendal/core/services/http/src/backend.rs:214,1
    - Dst: headers
      Src: /src/opendal/core/services/http/src/backend.rs:214,1
    - Dst: Result::map
      Src: /src/opendal/core/services/http/src/backend.rs:214,1
    - Dst: ends_with
      Src: /src/opendal/core/services/http/src/backend.rs:217,1
    - Dst: Ok
      Src: /src/opendal/core/services/http/src/backend.rs:218,1
    - Dst: RpStat::new
      Src: /src/opendal/core/services/http/src/backend.rs:218,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/http/src/backend.rs:218,1
    - Dst: Err
      Src: /src/opendal/core/services/http/src/backend.rs:220,1
    - Dst: super::core::parse_error
      Src: /src/opendal/core/services/http/src/backend.rs:220,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 30
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpStat
    constantsTouched: []
    func_position:
      end: 222
      start: 203
    functionDepth: 40
    functionLinenumber: 203
    functionLinenumberEnd: 222
    functionName: HttpBackend::stat
    functionSourceFile: /src/opendal/core/services/http/src/backend.rs
    functionUses: 0
    functionsReached:
    - Metadata::new
    - http_head
    - parse_into_metadata
    - status
    - Ok
    - RpStat::new
    - ends_with
    - Err
    - headers
    - Result::map
    - super::core::parse_error
    linkageType: ''
    returnType: Result
    signature: 'async fn stat(&self, ctx: &OperationContext, path: &str, args: OpStat)
      -> Result<RpStat>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/core/services/http/src/backend.rs:225,1
    - Dst: oio::StreamReader::new
      Src: /src/opendal/core/services/http/src/backend.rs:225,1
    - Dst: HttpReader::new
      Src: /src/opendal/core/services/http/src/backend.rs:225,1
    - Dst: HttpBackend::clone
      Src: /src/opendal/core/services/http/src/backend.rs:226,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/http/src/backend.rs:227,1
    - Dst: Ok
      Src: /src/opendal/core/services/http/src/backend.rs:233,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpRead
    constantsTouched: []
    func_position:
      end: 234
      start: 223
    functionDepth: 3
    functionLinenumber: 223
    functionLinenumberEnd: 234
    functionName: HttpBackend::read
    functionSourceFile: /src/opendal/core/services/http/src/backend.rs
    functionUses: 0
    functionsReached:
    - Result::clone
    - Ok
    - HttpBackend::clone
    - oio::StreamReader::new
    - HttpReader::new
    linkageType: ''
    returnType: Result
    signature: 'fn read(&self, ctx: &OperationContext, path: &str, args: OpRead) ->
      Result<Self::Reader>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/core/services/http/src/backend.rs:237,1
    - Dst: Error::new
      Src: /src/opendal/core/services/http/src/backend.rs:237,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - _ctx
    - _path
    - _args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpWrite
    constantsTouched: []
    func_position:
      end: 241
      start: 236
    functionDepth: 36
    functionLinenumber: 236
    functionLinenumberEnd: 241
    functionName: HttpBackend::write
    functionSourceFile: /src/opendal/core/services/http/src/backend.rs
    functionUses: 0
    functionsReached:
    - Error::new
    - Err
    linkageType: ''
    returnType: Result
    signature: 'fn write(&self, _ctx: &OperationContext, _path: &str, _args: OpWrite)
      -> Result<Self::Writer>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/core/services/http/src/backend.rs:244,1
    - Dst: Error::new
      Src: /src/opendal/core/services/http/src/backend.rs:244,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - _ctx
    argTypes:
    - '&OperationContext'
    constantsTouched: []
    func_position:
      end: 248
      start: 243
    functionDepth: 36
    functionLinenumber: 243
    functionLinenumberEnd: 248
    functionName: HttpBackend::delete
    functionSourceFile: /src/opendal/core/services/http/src/backend.rs
    functionUses: 0
    functionsReached:
    - Error::new
    - Err
    linkageType: ''
    returnType: Result
    signature: 'fn delete(&self, _ctx: &OperationContext) -> Result<Self::Deleter>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/core/services/http/src/backend.rs:251,1
    - Dst: Error::new
      Src: /src/opendal/core/services/http/src/backend.rs:251,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - _ctx
    - _path
    - _args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpList
    constantsTouched: []
    func_position:
      end: 255
      start: 250
    functionDepth: 36
    functionLinenumber: 250
    functionLinenumberEnd: 255
    functionName: HttpBackend::list
    functionSourceFile: /src/opendal/core/services/http/src/backend.rs
    functionUses: 0
    functionsReached:
    - Error::new
    - Err
    linkageType: ''
    returnType: Result
    signature: 'fn list(&self, _ctx: &OperationContext, _path: &str, _args: OpList)
      -> Result<Self::Lister>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/core/services/http/src/backend.rs:265,1
    - Dst: Error::new
      Src: /src/opendal/core/services/http/src/backend.rs:265,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 5
    argNames:
    - _ctx
    - _from
    - _to
    - _args
    - _opts
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    - OpCopy
    - OpCopier
    constantsTouched: []
    func_position:
      end: 269
      start: 257
    functionDepth: 36
    functionLinenumber: 257
    functionLinenumberEnd: 269
    functionName: HttpBackend::copy
    functionSourceFile: /src/opendal/core/services/http/src/backend.rs
    functionUses: 0
    functionsReached:
    - Error::new
    - Err
    linkageType: ''
    returnType: Result
    signature: 'fn copy(&self,_ctx: &OperationContext,_from: &str,_to: &str,_args:
      OpCopy,_opts: OpCopier,) -> Result<Self::Copier>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/core/services/http/src/backend.rs:278,1
    - Dst: Error::new
      Src: /src/opendal/core/services/http/src/backend.rs:278,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - _ctx
    - _from
    - _to
    - _args
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    - OpRename
    constantsTouched: []
    func_position:
      end: 282
      start: 271
    functionDepth: 36
    functionLinenumber: 271
    functionLinenumberEnd: 282
    functionName: HttpBackend::rename
    functionSourceFile: /src/opendal/core/services/http/src/backend.rs
    functionUses: 0
    functionsReached:
    - Error::new
    - Err
    linkageType: ''
    returnType: Result
    signature: 'async fn rename(&self,_ctx: &OperationContext,_from: &str,_to: &str,_args:
      OpRename,) -> Result<RpRename>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: has_authorization
      Src: /src/opendal/core/services/http/src/backend.rs:290,1
    - Dst: Err
      Src: /src/opendal/core/services/http/src/backend.rs:291,1
    - Dst: Error::new
      Src: /src/opendal/core/services/http/src/backend.rs:291,1
    - Dst: OpStat::operation
      Src: /src/opendal/core/services/http/src/backend.rs:297,1
    - Dst: http_head_request
      Src: /src/opendal/core/services/http/src/backend.rs:298,1
    - Dst: http_get_request
      Src: /src/opendal/core/services/http/src/backend.rs:299,1
    - Dst: Err
      Src: /src/opendal/core/services/http/src/backend.rs:301,1
    - Dst: Error::new
      Src: /src/opendal/core/services/http/src/backend.rs:301,1
    - Dst: into_parts
      Src: /src/opendal/core/services/http/src/backend.rs:308,1
    - Dst: Ok
      Src: /src/opendal/core/services/http/src/backend.rs:310,1
    - Dst: RpPresign::new
      Src: /src/opendal/core/services/http/src/backend.rs:310,1
    - Dst: PresignedRequest::new
      Src: /src/opendal/core/services/http/src/backend.rs:310,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 33
    argCount: 3
    argNames:
    - _ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpPresign
    constantsTouched: []
    func_position:
      end: 315
      start: 284
    functionDepth: 36
    functionLinenumber: 284
    functionLinenumberEnd: 315
    functionName: HttpBackend::presign
    functionSourceFile: /src/opendal/core/services/http/src/backend.rs
    functionUses: 0
    functionsReached:
    - Ok
    - OpStat::operation
    - http_get_request
    - has_authorization
    - Error::new
    - Err
    - http_head_request
    - RpPresign::new
    - into_parts
    - PresignedRequest::new
    linkageType: ''
    returnType: Result
    signature: 'async fn presign(&self,_ctx: &OperationContext,path: &str,args: OpPresign,)
      -> Result<RpPresign>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::debug_struct
      Src: /src/opendal/core/services/goosefs/src/config.rs:86,1
    - Dst: field
      Src: /src/opendal/core/services/goosefs/src/config.rs:86,1
    - Dst: field
      Src: /src/opendal/core/services/goosefs/src/config.rs:86,1
    - Dst: field
      Src: /src/opendal/core/services/goosefs/src/config.rs:86,1
    - Dst: field
      Src: /src/opendal/core/services/goosefs/src/config.rs:86,1
    - Dst: field
      Src: /src/opendal/core/services/goosefs/src/config.rs:86,1
    - Dst: field
      Src: /src/opendal/core/services/goosefs/src/config.rs:86,1
    - Dst: field
      Src: /src/opendal/core/services/goosefs/src/config.rs:86,1
    - Dst: finish_non_exhaustive
      Src: /src/opendal/core/services/goosefs/src/config.rs:86,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 32
    argCount: 1
    argNames:
    - f
    argTypes:
    - '&mut std::fmt::Formatter<''_>'
    constantsTouched: []
    func_position:
      end: 95
      start: 85
    functionDepth: 5
    functionLinenumber: 85
    functionLinenumberEnd: 95
    functionName: GoosefsConfig::fmt
    functionSourceFile: /src/opendal/core/services/goosefs/src/config.rs
    functionUses: 0
    functionsReached:
    - field
    - Result::debug_struct
    - finish_non_exhaustive
    linkageType: ''
    returnType: std::fmt::Result
    signature: 'fn fmt(&self, f: &mut std::fmt::Formatter<''_>) -> std::fmt::Result'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::options
      Src: /src/opendal/core/services/goosefs/src/config.rs:102,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/goosefs/src/config.rs:102,1
    - Dst: Result::authority
      Src: /src/opendal/core/services/goosefs/src/config.rs:103,1
    - Dst: Result::insert
      Src: /src/opendal/core/services/goosefs/src/config.rs:105,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/goosefs/src/config.rs:105,1
    - Dst: Option::to_string
      Src: /src/opendal/core/services/goosefs/src/config.rs:105,1
    - Dst: Result::root
      Src: /src/opendal/core/services/goosefs/src/config.rs:107,1
    - Dst: Result::is_empty
      Src: /src/opendal/core/services/goosefs/src/config.rs:108,1
    - Dst: Result::insert
      Src: /src/opendal/core/services/goosefs/src/config.rs:110,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/goosefs/src/config.rs:110,1
    - Dst: Result::to_string
      Src: /src/opendal/core/services/goosefs/src/config.rs:110,1
    - Dst: Self::from_iter
      Src: /src/opendal/core/services/goosefs/src/config.rs:112,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 30
    argCount: 1
    argNames:
    - uri
    argTypes:
    - '&opendal_core::OperatorUri'
    constantsTouched: []
    func_position:
      end: 113
      start: 101
    functionDepth: 35
    functionLinenumber: 101
    functionLinenumberEnd: 113
    functionName: GoosefsConfig::from_uri
    functionSourceFile: /src/opendal/core/services/goosefs/src/config.rs
    functionUses: 3
    functionsReached:
    - Result::clone
    - Self::from_iter
    - Option::to_string
    - Result::to_string
    - Result::insert
    - Result::is_empty
    - '&str::to_string'
    - Result::root
    - Result::authority
    - Result::options
    linkageType: ''
    returnType: opendal_core::Result
    signature: 'fn from_uri(uri: &opendal_core::OperatorUri) -> opendal_core::Result<Self>'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 117
      start: 115
    functionDepth: 0
    functionLinenumber: 115
    functionLinenumberEnd: 117
    functionName: GoosefsConfig::into_builder
    functionSourceFile: /src/opendal/core/services/goosefs/src/config.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Self::Builder
    signature: fn into_builder(self) -> Self::Builder
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: OperatorUri::new
      Src: /src/opendal/core/services/goosefs/src/config.rs:133,1
    - Dst: Vec::<(String, String)>::new
      Src: /src/opendal/core/services/goosefs/src/config.rs:135,1
    - Dst: Result::expect
      Src: /src/opendal/core/services/goosefs/src/config.rs:133,1
    - Dst: GoosefsConfig::from_uri
      Src: /src/opendal/core/services/goosefs/src/config.rs:139,1
    - Dst: opendal_core::Result::expect
      Src: /src/opendal/core/services/goosefs/src/config.rs:139,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 146
      start: 132
    functionDepth: 29
    functionLinenumber: 132
    functionLinenumberEnd: 146
    functionName: tests::from_uri_sets_master_addr_and_root
    functionSourceFile: /src/opendal/core/services/goosefs/src/config.rs
    functionUses: 0
    functionsReached:
    - Result::expect
    - Vec::<(String, String)>::new
    - OperatorUri::new
    - GoosefsConfig::from_uri
    - opendal_core::Result::expect
    linkageType: ''
    returnType: void
    signature: fn from_uri_sets_master_addr_and_root()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: OperatorUri::new
      Src: /src/opendal/core/services/goosefs/src/config.rs:152,1
    - Dst: Vec::<(String, String)>::new
      Src: /src/opendal/core/services/goosefs/src/config.rs:152,1
    - Dst: Result::expect
      Src: /src/opendal/core/services/goosefs/src/config.rs:152,1
    - Dst: GoosefsConfig::from_uri
      Src: /src/opendal/core/services/goosefs/src/config.rs:155,1
    - Dst: opendal_core::Result::expect
      Src: /src/opendal/core/services/goosefs/src/config.rs:155,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 163
      start: 151
    functionDepth: 29
    functionLinenumber: 151
    functionLinenumberEnd: 163
    functionName: tests::from_uri_without_path_leaves_root_none
    functionSourceFile: /src/opendal/core/services/goosefs/src/config.rs
    functionUses: 0
    functionsReached:
    - Result::expect
    - Vec::<(String, String)>::new
    - OperatorUri::new
    - GoosefsConfig::from_uri
    - opendal_core::Result::expect
    linkageType: ''
    returnType: void
    signature: fn from_uri_without_path_leaves_root_none()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: OperatorUri::new
      Src: /src/opendal/core/services/goosefs/src/config.rs:175,1
    - Dst: Result::expect
      Src: /src/opendal/core/services/goosefs/src/config.rs:175,1
    - Dst: GoosefsConfig::from_uri
      Src: /src/opendal/core/services/goosefs/src/config.rs:184,1
    - Dst: opendal_core::Result::expect
      Src: /src/opendal/core/services/goosefs/src/config.rs:184,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 193
      start: 174
    functionDepth: 29
    functionLinenumber: 174
    functionLinenumberEnd: 193
    functionName: tests::from_uri_authority_overrides_extra_master_addr
    functionSourceFile: /src/opendal/core/services/goosefs/src/config.rs
    functionUses: 0
    functionsReached:
    - GoosefsConfig::from_uri
    - OperatorUri::new
    - opendal_core::Result::expect
    - Result::expect
    linkageType: ''
    returnType: void
    signature: fn from_uri_authority_overrides_extra_master_addr()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: HashMap::new
      Src: /src/opendal/core/services/goosefs/src/config.rs:202,1
    - Dst: Result::insert
      Src: /src/opendal/core/services/goosefs/src/config.rs:203,1
    - Dst: '&str::into'
      Src: /src/opendal/core/services/goosefs/src/config.rs:203,1
    - Dst: '&str::into'
      Src: /src/opendal/core/services/goosefs/src/config.rs:203,1
    - Dst: Result::insert
      Src: /src/opendal/core/services/goosefs/src/config.rs:204,1
    - Dst: '&str::into'
      Src: /src/opendal/core/services/goosefs/src/config.rs:204,1
    - Dst: '&str::into'
      Src: /src/opendal/core/services/goosefs/src/config.rs:204,1
    - Dst: Result::insert
      Src: /src/opendal/core/services/goosefs/src/config.rs:205,1
    - Dst: '&str::into'
      Src: /src/opendal/core/services/goosefs/src/config.rs:205,1
    - Dst: '&str::into'
      Src: /src/opendal/core/services/goosefs/src/config.rs:205,1
    - Dst: Result::insert
      Src: /src/opendal/core/services/goosefs/src/config.rs:206,1
    - Dst: '&str::into'
      Src: /src/opendal/core/services/goosefs/src/config.rs:206,1
    - Dst: '&str::into'
      Src: /src/opendal/core/services/goosefs/src/config.rs:206,1
    - Dst: Result::insert
      Src: /src/opendal/core/services/goosefs/src/config.rs:207,1
    - Dst: '&str::into'
      Src: /src/opendal/core/services/goosefs/src/config.rs:207,1
    - Dst: '&str::into'
      Src: /src/opendal/core/services/goosefs/src/config.rs:207,1
    - Dst: GoosefsConfig::from_iter
      Src: /src/opendal/core/services/goosefs/src/config.rs:209,1
    - Dst: Result::expect
      Src: /src/opendal/core/services/goosefs/src/config.rs:209,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 44
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 216
      start: 199
    functionDepth: 29
    functionLinenumber: 199
    functionLinenumberEnd: 216
    functionName: tests::from_iter_picks_up_every_known_field
    functionSourceFile: /src/opendal/core/services/goosefs/src/config.rs
    functionUses: 0
    functionsReached:
    - Result::expect
    - Result::insert
    - GoosefsConfig::from_iter
    - HashMap::new
    - '&str::into'
    linkageType: ''
    returnType: void
    signature: fn from_iter_picks_up_every_known_field()
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - core
    argTypes:
    - Arc<GoosefsCore>
    constantsTouched: []
    func_position:
      end: 31
      start: 29
    functionDepth: 0
    functionLinenumber: 29
    functionLinenumberEnd: 31
    functionName: GoosefsDeleter::new
    functionSourceFile: /src/opendal/core/services/goosefs/src/deleter.rs
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(core: Arc<GoosefsCore>) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: delete
      Src: /src/opendal/core/services/goosefs/src/deleter.rs:36,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - path
    argTypes:
    - String
    - OpDelete
    constantsTouched: []
    func_position:
      end: 37
      start: 35
    functionDepth: 32
    functionLinenumber: 35
    functionLinenumberEnd: 37
    functionName: GoosefsDeleter::delete_once
    functionSourceFile: /src/opendal/core/services/goosefs/src/deleter.rs
    functionUses: 0
    functionsReached:
    - delete
    linkageType: ''
    returnType: Result
    signature: 'async fn delete_once(&self, path: String, _: OpDelete) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: to_string
      Src: /src/opendal/core/services/goosefs/src/lister.rs:37,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - core
    - path
    argTypes:
    - Arc<GoosefsCore>
    - '&str'
    constantsTouched: []
    func_position:
      end: 39
      start: 34
    functionDepth: 2
    functionLinenumber: 34
    functionLinenumberEnd: 39
    functionName: GoosefsLister::new
    functionSourceFile: /src/opendal/core/services/goosefs/src/lister.rs
    functionUses: 1
    functionsReached:
    - to_string
    linkageType: ''
    returnType: Self
    signature: 'pub(super) fn new(core: Arc<GoosefsCore>, path: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: list_status
      Src: /src/opendal/core/services/goosefs/src/lister.rs:56,1
    - Dst: is_empty
      Src: /src/opendal/core/services/goosefs/src/lister.rs:66,1
    - Dst: ends_with
      Src: /src/opendal/core/services/goosefs/src/lister.rs:66,1
    - Dst: push_back
      Src: /src/opendal/core/services/goosefs/src/lister.rs:67,1
    - Dst: Entry::new
      Src: /src/opendal/core/services/goosefs/src/lister.rs:68,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/goosefs/src/lister.rs:68,1
    - Dst: file_info_to_entry
      Src: /src/opendal/core/services/goosefs/src/lister.rs:72,1
    - Dst: push_back
      Src: /src/opendal/core/services/goosefs/src/lister.rs:80,1
    - Dst: Entry::new
      Src: /src/opendal/core/services/goosefs/src/lister.rs:80,1
    - Dst: Ok
      Src: /src/opendal/core/services/goosefs/src/lister.rs:83,1
    - Dst: Result::kind
      Src: /src/opendal/core/services/goosefs/src/lister.rs:86,1
    - Dst: Ok
      Src: /src/opendal/core/services/goosefs/src/lister.rs:90,1
    - Dst: Err
      Src: /src/opendal/core/services/goosefs/src/lister.rs:92,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 63
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - '&mut oio::PageContext'
    constantsTouched: []
    func_position:
      end: 95
      start: 43
    functionDepth: 38
    functionLinenumber: 43
    functionLinenumberEnd: 95
    functionName: GoosefsLister::next_page
    functionSourceFile: /src/opendal/core/services/goosefs/src/lister.rs
    functionUses: 0
    functionsReached:
    - Entry::new
    - Metadata::new
    - Ok
    - push_back
    - ends_with
    - is_empty
    - Err
    - file_info_to_entry
    - list_status
    - Result::kind
    linkageType: ''
    returnType: Result
    signature: 'async fn next_page(&self, ctx: &mut oio::PageContext) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 4
    argNames:
    - core
    - path
    - range
    - content_length
    argTypes:
    - Arc<GoosefsCore>
    - String
    - BytesRange
    - Option<u64>
    constantsTouched: []
    func_position:
      end: 55
      start: 41
    functionDepth: 0
    functionLinenumber: 41
    functionLinenumberEnd: 55
    functionName: GoosefsReadStream::new
    functionSourceFile: /src/opendal/core/services/goosefs/src/reader.rs
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(core: Arc<GoosefsCore>,path: String,range: BytesRange,content_length:
      Option<u64>,) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: offset
      Src: /src/opendal/core/services/goosefs/src/reader.rs:60,1
    - Dst: size
      Src: /src/opendal/core/services/goosefs/src/reader.rs:61,1
    - Dst: open_reader
      Src: /src/opendal/core/services/goosefs/src/reader.rs:71,1
    - Dst: open_range_reader
      Src: /src/opendal/core/services/goosefs/src/reader.rs:72,1
    - Dst: ok_or_else
      Src: /src/opendal/core/services/goosefs/src/reader.rs:74,1
    - Dst: Error::new
      Src: /src/opendal/core/services/goosefs/src/reader.rs:75,1
    - Dst: Result::saturating_sub
      Src: /src/opendal/core/services/goosefs/src/reader.rs:80,1
    - Dst: open_range_reader
      Src: /src/opendal/core/services/goosefs/src/reader.rs:85,1
    - Dst: open_range_reader
      Src: /src/opendal/core/services/goosefs/src/reader.rs:87,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 44
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 91
      start: 59
    functionDepth: 37
    functionLinenumber: 59
    functionLinenumberEnd: 91
    functionName: GoosefsReadStream::open
    functionSourceFile: /src/opendal/core/services/goosefs/src/reader.rs
    functionUses: 1
    functionsReached:
    - Result::saturating_sub
    - open_reader
    - offset
    - size
    - Error::new
    - open_range_reader
    - ok_or_else
    linkageType: ''
    returnType: Result
    signature: async fn open(&self) -> Result<SdkReader>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/core/services/goosefs/src/reader.rs:97,1
    - Dst: Buffer::new
      Src: /src/opendal/core/services/goosefs/src/reader.rs:97,1
    - Dst: is_none
      Src: /src/opendal/core/services/goosefs/src/reader.rs:101,1
    - Dst: Some
      Src: /src/opendal/core/services/goosefs/src/reader.rs:102,1
    - Dst: GoosefsReadStream::open
      Src: /src/opendal/core/services/goosefs/src/reader.rs:102,1
    - Dst: as_mut
      Src: /src/opendal/core/services/goosefs/src/reader.rs:104,1
    - Dst: expect
      Src: /src/opendal/core/services/goosefs/src/reader.rs:104,1
    - Dst: anyhow::Result::read_next_block
      Src: /src/opendal/core/services/goosefs/src/reader.rs:106,1
    - Dst: map_err
      Src: /src/opendal/core/services/goosefs/src/reader.rs:106,1
    - Dst: Ok
      Src: /src/opendal/core/services/goosefs/src/reader.rs:107,1
    - Dst: Buffer::from
      Src: /src/opendal/core/services/goosefs/src/reader.rs:107,1
    - Dst: Ok
      Src: /src/opendal/core/services/goosefs/src/reader.rs:110,1
    - Dst: Buffer::new
      Src: /src/opendal/core/services/goosefs/src/reader.rs:110,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 40
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 113
      start: 95
    functionDepth: 38
    functionLinenumber: 95
    functionLinenumberEnd: 113
    functionName: GoosefsReadStream::read
    functionSourceFile: /src/opendal/core/services/goosefs/src/reader.rs
    functionUses: 0
    functionsReached:
    - is_none
    - as_mut
    - Buffer::new
    - GoosefsReadStream::open
    - map_err
    - expect
    - Ok
    - anyhow::Result::read_next_block
    - Some
    - Buffer::from
    linkageType: ''
    returnType: Result
    signature: async fn read(&mut self) -> Result<Buffer>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: to_string
      Src: /src/opendal/core/services/goosefs/src/reader.rs:126,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - backend
    - path
    argTypes:
    - GoosefsBackend
    - '&str'
    - OpRead
    constantsTouched: []
    func_position:
      end: 128
      start: 123
    functionDepth: 2
    functionLinenumber: 123
    functionLinenumberEnd: 128
    functionName: GoosefsReader::new
    functionSourceFile: /src/opendal/core/services/goosefs/src/reader.rs
    functionUses: 1
    functionsReached:
    - to_string
    linkageType: ''
    returnType: Self
    signature: 'pub(super) fn new(backend: GoosefsBackend, path: &str, _: OpRead)
      -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: as_str
      Src: /src/opendal/core/services/goosefs/src/reader.rs:134,1
    - Dst: (Vec::offset
      Src: /src/opendal/core/services/goosefs/src/reader.rs:136,1
    - Dst: (Vec::size
      Src: /src/opendal/core/services/goosefs/src/reader.rs:136,1
    - Dst: Option::is_none
      Src: /src/opendal/core/services/goosefs/src/reader.rs:136,1
    - Dst: get_status
      Src: /src/opendal/core/services/goosefs/src/reader.rs:137,1
    - Dst: Some
      Src: /src/opendal/core/services/goosefs/src/reader.rs:138,1
    - Dst: file_info_to_metadata
      Src: /src/opendal/core/services/goosefs/src/reader.rs:139,1
    - Dst: content_length
      Src: /src/opendal/core/services/goosefs/src/reader.rs:139,1
    - Dst: RpRead::default
      Src: /src/opendal/core/services/goosefs/src/reader.rs:147,1
    - Dst: GoosefsReadStream::new
      Src: /src/opendal/core/services/goosefs/src/reader.rs:148,1
    - Dst: clone
      Src: /src/opendal/core/services/goosefs/src/reader.rs:149,1
    - Dst: to_string
      Src: /src/opendal/core/services/goosefs/src/reader.rs:150,1
    - Dst: Ok
      Src: /src/opendal/core/services/goosefs/src/reader.rs:155,1
    - Dst: Box::new
      Src: /src/opendal/core/services/goosefs/src/reader.rs:155,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 37
    argCount: 1
    argNames:
    - range
    argTypes:
    - BytesRange
    constantsTouched: []
    func_position:
      end: 156
      start: 132
    functionDepth: 38
    functionLinenumber: 132
    functionLinenumberEnd: 156
    functionName: GoosefsReader::open
    functionSourceFile: /src/opendal/core/services/goosefs/src/reader.rs
    functionUses: 0
    functionsReached:
    - GoosefsReadStream::new
    - to_string
    - Ok
    - (Vec::size
    - Box::new
    - content_length
    - clone
    - Some
    - as_str
    - (Vec::offset
    - RpRead::default
    - Option::is_none
    - get_status
    - file_info_to_metadata
    linkageType: ''
    returnType: Result
    signature: 'async fn open(&self, range: BytesRange) -> Result<(RpRead, Box<dyn
      oio::ReadStreamDyn>)>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: load
      Src: /src/opendal/core/services/goosefs/src/core.rs:87,1
    - Dst: Result::debug_struct
      Src: /src/opendal/core/services/goosefs/src/core.rs:88,1
    - Dst: field
      Src: /src/opendal/core/services/goosefs/src/core.rs:88,1
    - Dst: field
      Src: /src/opendal/core/services/goosefs/src/core.rs:88,1
    - Dst: field
      Src: /src/opendal/core/services/goosefs/src/core.rs:88,1
    - Dst: finish_non_exhaustive
      Src: /src/opendal/core/services/goosefs/src/core.rs:88,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 19
    argCount: 1
    argNames:
    - f
    argTypes:
    - '&mut std::fmt::Formatter<''_>'
    constantsTouched: []
    func_position:
      end: 93
      start: 86
    functionDepth: 35
    functionLinenumber: 86
    functionLinenumberEnd: 93
    functionName: GoosefsCore::fmt
    functionSourceFile: /src/opendal/core/services/goosefs/src/core.rs
    functionUses: 0
    functionsReached:
    - field
    - Result::debug_struct
    - finish_non_exhaustive
    - load
    linkageType: ''
    returnType: std::fmt::Result
    signature: 'fn fmt(&self, f: &mut std::fmt::Formatter<''_>) -> std::fmt::Result'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Arc::new
      Src: /src/opendal/core/services/goosefs/src/core.rs:112,1
    - Dst: RwLock::new
      Src: /src/opendal/core/services/goosefs/src/core.rs:112,1
    - Dst: Arc::new
      Src: /src/opendal/core/services/goosefs/src/core.rs:113,1
    - Dst: AtomicU32::new
      Src: /src/opendal/core/services/goosefs/src/core.rs:113,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 4
    argNames:
    - info
    - capability
    - root
    - config
    argTypes:
    - ServiceInfo
    - Capability
    - String
    - ClientConfig
    constantsTouched: []
    func_position:
      end: 115
      start: 101
    functionDepth: 2
    functionLinenumber: 101
    functionLinenumberEnd: 115
    functionName: GoosefsCore::new
    functionSourceFile: /src/opendal/core/services/goosefs/src/core.rs
    functionUses: 1
    functionsReached:
    - RwLock::new
    - Arc::new
    - AtomicU32::new
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(info: ServiceInfo,capability: Capability,root: String,config:
      ClientConfig,) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: std::process::id
      Src: /src/opendal/core/services/goosefs/src/core.rs:138,1
    - Dst: load
      Src: /src/opendal/core/services/goosefs/src/core.rs:139,1
    - Dst: read
      Src: /src/opendal/core/services/goosefs/src/core.rs:143,1
    - Dst: Ok
      Src: /src/opendal/core/services/goosefs/src/core.rs:145,1
    - Dst: Arc::clone
      Src: /src/opendal/core/services/goosefs/src/core.rs:145,1
    - Dst: write
      Src: /src/opendal/core/services/goosefs/src/core.rs:151,1
    - Dst: load
      Src: /src/opendal/core/services/goosefs/src/core.rs:155,1
    - Dst: Ok
      Src: /src/opendal/core/services/goosefs/src/core.rs:159,1
    - Dst: Arc::clone
      Src: /src/opendal/core/services/goosefs/src/core.rs:159,1
    - Dst: FileSystemContext::connect
      Src: /src/opendal/core/services/goosefs/src/core.rs:174,1
    - Dst: clone
      Src: /src/opendal/core/services/goosefs/src/core.rs:174,1
    - Dst: map_err
      Src: /src/opendal/core/services/goosefs/src/core.rs:174,1
    - Dst: Some
      Src: /src/opendal/core/services/goosefs/src/core.rs:177,1
    - Dst: Arc::clone
      Src: /src/opendal/core/services/goosefs/src/core.rs:177,1
    - Dst: store
      Src: /src/opendal/core/services/goosefs/src/core.rs:178,1
    - Dst: Ok
      Src: /src/opendal/core/services/goosefs/src/core.rs:180,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 61
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 181
      start: 137
    functionDepth: 35
    functionLinenumber: 137
    functionLinenumberEnd: 181
    functionName: GoosefsCore::ctx
    functionSourceFile: /src/opendal/core/services/goosefs/src/core.rs
    functionUses: 6
    functionsReached:
    - map_err
    - read
    - Ok
    - clone
    - load
    - Some
    - store
    - FileSystemContext::connect
    - std::process::id
    - write
    - Arc::clone
    linkageType: ''
    returnType: Result
    signature: async fn ctx(&self) -> Result<Arc<FileSystemContext>>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/core/services/goosefs/src/core.rs:185,1
    - Dst: GoosefsCore::ctx
      Src: /src/opendal/core/services/goosefs/src/core.rs:185,1
    - Dst: acquire_master
      Src: /src/opendal/core/services/goosefs/src/core.rs:185,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 186
      start: 184
    functionDepth: 36
    functionLinenumber: 184
    functionLinenumberEnd: 186
    functionName: GoosefsCore::master
    functionSourceFile: /src/opendal/core/services/goosefs/src/core.rs
    functionUses: 5
    functionsReached:
    - acquire_master
    - GoosefsCore::ctx
    - Ok
    linkageType: ''
    returnType: Result
    signature: async fn master(&self) -> Result<Arc<MasterClient>>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: write
      Src: /src/opendal/core/services/goosefs/src/core.rs:195,1
    - Dst: store
      Src: /src/opendal/core/services/goosefs/src/core.rs:197,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 199
      start: 194
    functionDepth: 36
    functionLinenumber: 194
    functionLinenumberEnd: 199
    functionName: GoosefsCore::reset_ctx
    functionSourceFile: /src/opendal/core/services/goosefs/src/core.rs
    functionUses: 3
    functionsReached:
    - write
    - store
    linkageType: ''
    returnType: void
    signature: async fn reset_ctx(&self)
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_rooted_abs_path
      Src: /src/opendal/core/services/goosefs/src/core.rs:203,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - path
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 204
      start: 202
    functionDepth: 3
    functionLinenumber: 202
    functionLinenumberEnd: 204
    functionName: GoosefsCore::full_path
    functionSourceFile: /src/opendal/core/services/goosefs/src/core.rs
    functionUses: 10
    functionsReached:
    - build_rooted_abs_path
    linkageType: ''
    returnType: String
    signature: 'fn full_path(&self, path: &str) -> String'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: GoosefsCore::full_path
      Src: /src/opendal/core/services/goosefs/src/core.rs:212,1
    - Dst: GoosefsCore::master
      Src: /src/opendal/core/services/goosefs/src/core.rs:213,1
    - Dst: Result::create_directory
      Src: /src/opendal/core/services/goosefs/src/core.rs:214,1
    - Dst: map_err
      Src: /src/opendal/core/services/goosefs/src/core.rs:214,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 1
    argNames:
    - path
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 218
      start: 211
    functionDepth: 37
    functionLinenumber: 211
    functionLinenumberEnd: 218
    functionName: GoosefsCore::create_dir
    functionSourceFile: /src/opendal/core/services/goosefs/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - Result::create_directory
    - GoosefsCore::master
    - GoosefsCore::full_path
    linkageType: ''
    returnType: Result
    signature: 'pub async fn create_dir(&self, path: &str) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: GoosefsCore::full_path
      Src: /src/opendal/core/services/goosefs/src/core.rs:221,1
    - Dst: GoosefsCore::master
      Src: /src/opendal/core/services/goosefs/src/core.rs:222,1
    - Dst: Result::get_status
      Src: /src/opendal/core/services/goosefs/src/core.rs:223,1
    - Dst: map_err
      Src: /src/opendal/core/services/goosefs/src/core.rs:223,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 1
    argNames:
    - path
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 224
      start: 220
    functionDepth: 37
    functionLinenumber: 220
    functionLinenumberEnd: 224
    functionName: GoosefsCore::get_status
    functionSourceFile: /src/opendal/core/services/goosefs/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - Result::get_status
    - GoosefsCore::master
    - GoosefsCore::full_path
    linkageType: ''
    returnType: Result
    signature: 'pub async fn get_status(&self, path: &str) -> Result<FileInfo>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: GoosefsCore::full_path
      Src: /src/opendal/core/services/goosefs/src/core.rs:227,1
    - Dst: GoosefsCore::master
      Src: /src/opendal/core/services/goosefs/src/core.rs:228,1
    - Dst: Result::list_status
      Src: /src/opendal/core/services/goosefs/src/core.rs:229,1
    - Dst: map_err
      Src: /src/opendal/core/services/goosefs/src/core.rs:229,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 1
    argNames:
    - path
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 230
      start: 226
    functionDepth: 37
    functionLinenumber: 226
    functionLinenumberEnd: 230
    functionName: GoosefsCore::list_status
    functionSourceFile: /src/opendal/core/services/goosefs/src/core.rs
    functionUses: 0
    functionsReached:
    - Result::list_status
    - map_err
    - GoosefsCore::master
    - GoosefsCore::full_path
    linkageType: ''
    returnType: Result
    signature: 'pub async fn list_status(&self, path: &str) -> Result<Vec<FileInfo>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: GoosefsCore::full_path
      Src: /src/opendal/core/services/goosefs/src/core.rs:233,1
    - Dst: GoosefsCore::master
      Src: /src/opendal/core/services/goosefs/src/core.rs:234,1
    - Dst: Result::delete
      Src: /src/opendal/core/services/goosefs/src/core.rs:235,1
    - Dst: Ok
      Src: /src/opendal/core/services/goosefs/src/core.rs:236,1
    - Dst: Ok
      Src: /src/opendal/core/services/goosefs/src/core.rs:240,1
    - Dst: Err
      Src: /src/opendal/core/services/goosefs/src/core.rs:242,1
    - Dst: parse_error
      Src: /src/opendal/core/services/goosefs/src/core.rs:242,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 20
    argCount: 1
    argNames:
    - path
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 246
      start: 232
    functionDepth: 37
    functionLinenumber: 232
    functionLinenumberEnd: 246
    functionName: GoosefsCore::delete
    functionSourceFile: /src/opendal/core/services/goosefs/src/core.rs
    functionUses: 0
    functionsReached:
    - Ok
    - parse_error
    - GoosefsCore::master
    - Err
    - GoosefsCore::full_path
    - Result::delete
    linkageType: ''
    returnType: Result
    signature: 'pub async fn delete(&self, path: &str) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: GoosefsCore::full_path
      Src: /src/opendal/core/services/goosefs/src/core.rs:249,1
    - Dst: GoosefsCore::full_path
      Src: /src/opendal/core/services/goosefs/src/core.rs:250,1
    - Dst: GoosefsCore::master
      Src: /src/opendal/core/services/goosefs/src/core.rs:251,1
    - Dst: Result::get_status
      Src: /src/opendal/core/services/goosefs/src/core.rs:271,1
    - Dst: unwrap_or
      Src: /src/opendal/core/services/goosefs/src/core.rs:273,1
    - Dst: Err
      Src: /src/opendal/core/services/goosefs/src/core.rs:274,1
    - Dst: Error::new
      Src: /src/opendal/core/services/goosefs/src/core.rs:274,1
    - Dst: Self::with_context
      Src: /src/opendal/core/services/goosefs/src/core.rs:274,1
    - Dst: Self::with_context
      Src: /src/opendal/core/services/goosefs/src/core.rs:274,1
    - Dst: Self::with_context
      Src: /src/opendal/core/services/goosefs/src/core.rs:274,1
    - Dst: Result::delete
      Src: /src/opendal/core/services/goosefs/src/core.rs:285,1
    - Dst: map_err
      Src: /src/opendal/core/services/goosefs/src/core.rs:285,1
    - Dst: parent_of
      Src: /src/opendal/core/services/goosefs/src/core.rs:292,1
    - Dst: Result::create_directory
      Src: /src/opendal/core/services/goosefs/src/core.rs:293,1
    - Dst: map_err
      Src: /src/opendal/core/services/goosefs/src/core.rs:293,1
    - Dst: Err
      Src: /src/opendal/core/services/goosefs/src/core.rs:299,1
    - Dst: parse_error
      Src: /src/opendal/core/services/goosefs/src/core.rs:299,1
    - Dst: Result::rename
      Src: /src/opendal/core/services/goosefs/src/core.rs:302,1
    - Dst: map_err
      Src: /src/opendal/core/services/goosefs/src/core.rs:302,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 58
    argCount: 2
    argNames:
    - from
    - to
    argTypes:
    - '&str'
    - '&str'
    constantsTouched: []
    func_position:
      end: 303
      start: 248
    functionDepth: 37
    functionLinenumber: 248
    functionLinenumberEnd: 303
    functionName: GoosefsCore::rename
    functionSourceFile: /src/opendal/core/services/goosefs/src/core.rs
    functionUses: 0
    functionsReached:
    - Result::delete
    - map_err
    - Result::create_directory
    - Result::rename
    - parse_error
    - GoosefsCore::master
    - Err
    - GoosefsCore::full_path
    - Error::new
    - parent_of
    - Self::with_context
    - Result::get_status
    - unwrap_or
    linkageType: ''
    returnType: Result
    signature: 'pub async fn rename(&self, from: &str, to: &str) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: GoosefsCore::full_path
      Src: /src/opendal/core/services/goosefs/src/core.rs:344,1
    - Dst: GoosefsCore::ctx
      Src: /src/opendal/core/services/goosefs/src/core.rs:345,1
    - Dst: GoosefsFileReader::read_range_with_context
      Src: /src/opendal/core/services/goosefs/src/core.rs:349,1
    - Dst: GoosefsFileReader::read_file_with_context
      Src: /src/opendal/core/services/goosefs/src/core.rs:351,1
    - Dst: Ok
      Src: /src/opendal/core/services/goosefs/src/core.rs:355,1
    - Dst: Result::is_authentication_failed
      Src: /src/opendal/core/services/goosefs/src/core.rs:356,1
    - Dst: GoosefsCore::reset_ctx
      Src: /src/opendal/core/services/goosefs/src/core.rs:364,1
    - Dst: GoosefsCore::ctx
      Src: /src/opendal/core/services/goosefs/src/core.rs:365,1
    - Dst: GoosefsFileReader::read_range_with_context
      Src: /src/opendal/core/services/goosefs/src/core.rs:368,1
    - Dst: map_err
      Src: /src/opendal/core/services/goosefs/src/core.rs:368,1
    - Dst: GoosefsFileReader::read_file_with_context
      Src: /src/opendal/core/services/goosefs/src/core.rs:372,1
    - Dst: map_err
      Src: /src/opendal/core/services/goosefs/src/core.rs:372,1
    - Dst: Err
      Src: /src/opendal/core/services/goosefs/src/core.rs:377,1
    - Dst: parse_error
      Src: /src/opendal/core/services/goosefs/src/core.rs:377,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 43
    argCount: 3
    argNames:
    - path
    - offset
    - length
    argTypes:
    - '&str'
    - Option<u64>
    - Option<u64>
    constantsTouched: []
    func_position:
      end: 379
      start: 338
    functionDepth: 36
    functionLinenumber: 338
    functionLinenumberEnd: 379
    functionName: GoosefsCore::read_file
    functionSourceFile: /src/opendal/core/services/goosefs/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - GoosefsCore::ctx
    - Ok
    - GoosefsFileReader::read_range_with_context
    - parse_error
    - GoosefsCore::full_path
    - Err
    - Result::is_authentication_failed
    - GoosefsCore::reset_ctx
    - GoosefsFileReader::read_file_with_context
    linkageType: ''
    returnType: Result
    signature: 'pub async fn read_file(&self,path: &str,offset: Option<u64>,length:
      Option<u64>,) -> Result<bytes::Bytes>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: GoosefsCore::full_path
      Src: /src/opendal/core/services/goosefs/src/core.rs:384,1
    - Dst: GoosefsCore::ctx
      Src: /src/opendal/core/services/goosefs/src/core.rs:385,1
    - Dst: GoosefsFileWriter::create_with_context
      Src: /src/opendal/core/services/goosefs/src/core.rs:386,1
    - Dst: map_err
      Src: /src/opendal/core/services/goosefs/src/core.rs:386,1
    - Dst: Result::write
      Src: /src/opendal/core/services/goosefs/src/core.rs:389,1
    - Dst: map_err
      Src: /src/opendal/core/services/goosefs/src/core.rs:389,1
    - Dst: Result::close
      Src: /src/opendal/core/services/goosefs/src/core.rs:390,1
    - Dst: map_err
      Src: /src/opendal/core/services/goosefs/src/core.rs:390,1
    - Dst: Ok
      Src: /src/opendal/core/services/goosefs/src/core.rs:391,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 28
    argCount: 2
    argNames:
    - path
    - data
    argTypes:
    - '&str'
    - '&[u8]'
    constantsTouched: []
    func_position:
      end: 392
      start: 383
    functionDepth: 36
    functionLinenumber: 383
    functionLinenumberEnd: 392
    functionName: GoosefsCore::write_file
    functionSourceFile: /src/opendal/core/services/goosefs/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - GoosefsCore::ctx
    - Ok
    - GoosefsFileWriter::create_with_context
    - GoosefsCore::full_path
    - Result::close
    - Result::write
    linkageType: ''
    returnType: Result
    signature: 'pub async fn write_file(&self, path: &str, data: &[u8]) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: GoosefsCore::full_path
      Src: /src/opendal/core/services/goosefs/src/core.rs:396,1
    - Dst: GoosefsCore::ctx
      Src: /src/opendal/core/services/goosefs/src/core.rs:397,1
    - Dst: GoosefsFileWriter::create_with_context
      Src: /src/opendal/core/services/goosefs/src/core.rs:398,1
    - Dst: map_err
      Src: /src/opendal/core/services/goosefs/src/core.rs:398,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 1
    argNames:
    - path
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 401
      start: 395
    functionDepth: 36
    functionLinenumber: 395
    functionLinenumberEnd: 401
    functionName: GoosefsCore::create_writer
    functionSourceFile: /src/opendal/core/services/goosefs/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - GoosefsCore::ctx
    - GoosefsFileWriter::create_with_context
    - GoosefsCore::full_path
    linkageType: ''
    returnType: Result
    signature: 'pub async fn create_writer(&self, path: &str) -> Result<GoosefsFileWriter>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: GoosefsCore::full_path
      Src: /src/opendal/core/services/goosefs/src/core.rs:411,1
    - Dst: GoosefsCore::ctx
      Src: /src/opendal/core/services/goosefs/src/core.rs:412,1
    - Dst: GoosefsFileReader::open_with_context
      Src: /src/opendal/core/services/goosefs/src/core.rs:413,1
    - Dst: Ok
      Src: /src/opendal/core/services/goosefs/src/core.rs:414,1
    - Dst: Result::is_authentication_failed
      Src: /src/opendal/core/services/goosefs/src/core.rs:415,1
    - Dst: GoosefsCore::reset_ctx
      Src: /src/opendal/core/services/goosefs/src/core.rs:421,1
    - Dst: GoosefsCore::ctx
      Src: /src/opendal/core/services/goosefs/src/core.rs:422,1
    - Dst: GoosefsFileReader::open_with_context
      Src: /src/opendal/core/services/goosefs/src/core.rs:423,1
    - Dst: map_err
      Src: /src/opendal/core/services/goosefs/src/core.rs:423,1
    - Dst: Err
      Src: /src/opendal/core/services/goosefs/src/core.rs:427,1
    - Dst: parse_error
      Src: /src/opendal/core/services/goosefs/src/core.rs:427,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 30
    argCount: 1
    argNames:
    - path
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 429
      start: 410
    functionDepth: 36
    functionLinenumber: 410
    functionLinenumberEnd: 429
    functionName: GoosefsCore::open_reader
    functionSourceFile: /src/opendal/core/services/goosefs/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - GoosefsFileReader::open_with_context
    - GoosefsCore::ctx
    - Ok
    - parse_error
    - GoosefsCore::full_path
    - Err
    - Result::is_authentication_failed
    - GoosefsCore::reset_ctx
    linkageType: ''
    returnType: Result
    signature: 'pub async fn open_reader(&self, path: &str) -> Result<GoosefsFileReader>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: GoosefsCore::full_path
      Src: /src/opendal/core/services/goosefs/src/core.rs:440,1
    - Dst: GoosefsCore::ctx
      Src: /src/opendal/core/services/goosefs/src/core.rs:441,1
    - Dst: GoosefsFileReader::open_range_with_context
      Src: /src/opendal/core/services/goosefs/src/core.rs:442,1
    - Dst: Ok
      Src: /src/opendal/core/services/goosefs/src/core.rs:443,1
    - Dst: Result::is_authentication_failed
      Src: /src/opendal/core/services/goosefs/src/core.rs:444,1
    - Dst: GoosefsCore::reset_ctx
      Src: /src/opendal/core/services/goosefs/src/core.rs:452,1
    - Dst: GoosefsCore::ctx
      Src: /src/opendal/core/services/goosefs/src/core.rs:453,1
    - Dst: GoosefsFileReader::open_range_with_context
      Src: /src/opendal/core/services/goosefs/src/core.rs:454,1
    - Dst: map_err
      Src: /src/opendal/core/services/goosefs/src/core.rs:454,1
    - Dst: Err
      Src: /src/opendal/core/services/goosefs/src/core.rs:458,1
    - Dst: parse_error
      Src: /src/opendal/core/services/goosefs/src/core.rs:458,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 30
    argCount: 3
    argNames:
    - path
    - offset
    - length
    argTypes:
    - '&str'
    - u64
    - u64
    constantsTouched: []
    func_position:
      end: 460
      start: 434
    functionDepth: 36
    functionLinenumber: 434
    functionLinenumberEnd: 460
    functionName: GoosefsCore::open_range_reader
    functionSourceFile: /src/opendal/core/services/goosefs/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - GoosefsCore::ctx
    - Ok
    - parse_error
    - GoosefsCore::full_path
    - Err
    - GoosefsFileReader::open_range_with_context
    - Result::is_authentication_failed
    - GoosefsCore::reset_ctx
    linkageType: ''
    returnType: Result
    signature: 'pub async fn open_range_reader(&self,path: &str,offset: u64,length:
      u64,) -> Result<GoosefsFileReader>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: unwrap_or
      Src: /src/opendal/core/services/goosefs/src/core.rs:466,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/goosefs/src/core.rs:467,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/goosefs/src/core.rs:469,1
    - Dst: anyhow::Result::set_content_length
      Src: /src/opendal/core/services/goosefs/src/core.rs:473,1
    - Dst: Timestamp::from_millisecond
      Src: /src/opendal/core/services/goosefs/src/core.rs:476,1
    - Dst: anyhow::Result::set_last_modified
      Src: /src/opendal/core/services/goosefs/src/core.rs:478,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 20
    argCount: 1
    argNames:
    - info
    argTypes:
    - '&FileInfo'
    constantsTouched: []
    func_position:
      end: 481
      start: 465
    functionDepth: 37
    functionLinenumber: 465
    functionLinenumberEnd: 481
    functionName: GoosefsCore::file_info_to_metadata
    functionSourceFile: /src/opendal/core/services/goosefs/src/core.rs
    functionUses: 1
    functionsReached:
    - Metadata::new
    - anyhow::Result::set_content_length
    - anyhow::Result::set_last_modified
    - Timestamp::from_millisecond
    - unwrap_or
    linkageType: ''
    returnType: Metadata
    signature: 'pub fn file_info_to_metadata(&self, info: &FileInfo) -> Metadata'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: clone
      Src: /src/opendal/core/services/goosefs/src/core.rs:486,1
    - Dst: unwrap_or_default
      Src: /src/opendal/core/services/goosefs/src/core.rs:486,1
    - Dst: unwrap_or
      Src: /src/opendal/core/services/goosefs/src/core.rs:487,1
    - Dst: build_rel_path
      Src: /src/opendal/core/services/goosefs/src/core.rs:492,1
    - Dst: Ok
      Src: /src/opendal/core/services/goosefs/src/core.rs:493,1
    - Dst: GoosefsCore::file_info_to_metadata
      Src: /src/opendal/core/services/goosefs/src/core.rs:493,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 17
    argCount: 1
    argNames:
    - info
    argTypes:
    - '&FileInfo'
    constantsTouched: []
    func_position:
      end: 494
      start: 485
    functionDepth: 38
    functionLinenumber: 485
    functionLinenumberEnd: 494
    functionName: GoosefsCore::file_info_to_entry
    functionSourceFile: /src/opendal/core/services/goosefs/src/core.rs
    functionUses: 0
    functionsReached:
    - Ok
    - clone
    - build_rel_path
    - GoosefsCore::file_info_to_metadata
    - unwrap_or_default
    - unwrap_or
    linkageType: ''
    returnType: Result
    signature: 'pub fn file_info_to_entry(&self, info: &FileInfo) -> Result<(String,
      Metadata)>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: strip_suffix
      Src: /src/opendal/core/services/goosefs/src/core.rs:511,1
    - Dst: unwrap_or
      Src: /src/opendal/core/services/goosefs/src/core.rs:511,1
    - Dst: rfind
      Src: /src/opendal/core/services/goosefs/src/core.rs:512,1
    - Dst: Some
      Src: /src/opendal/core/services/goosefs/src/core.rs:516,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 1
    argNames:
    - path
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 520
      start: 508
    functionDepth: 0
    functionLinenumber: 508
    functionLinenumberEnd: 520
    functionName: parent_of
    functionSourceFile: /src/opendal/core/services/goosefs/src/core.rs
    functionUses: 1
    functionsReached:
    - Some
    - rfind
    - strip_suffix
    - unwrap_or
    linkageType: ''
    returnType: Option
    signature: 'fn parent_of(path: &str) -> Option<&str>'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 529
      start: 527
    functionDepth: 0
    functionLinenumber: 527
    functionLinenumberEnd: 529
    functionName: tests::parent_of_root_returns_none
    functionSourceFile: /src/opendal/core/services/goosefs/src/core.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: fn parent_of_root_returns_none()
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 537
      start: 532
    functionDepth: 0
    functionLinenumber: 532
    functionLinenumberEnd: 537
    functionName: tests::parent_of_top_level_entry_returns_none
    functionSourceFile: /src/opendal/core/services/goosefs/src/core.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: fn parent_of_top_level_entry_returns_none()
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 544
      start: 540
    functionDepth: 0
    functionLinenumber: 540
    functionLinenumberEnd: 544
    functionName: tests::parent_of_nested_entry_returns_parent
    functionSourceFile: /src/opendal/core/services/goosefs/src/core.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: fn parent_of_nested_entry_returns_parent()
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 552
      start: 547
    functionDepth: 0
    functionLinenumber: 547
    functionLinenumberEnd: 552
    functionName: tests::parent_of_relative_path_returns_none
    functionSourceFile: /src/opendal/core/services/goosefs/src/core.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: fn parent_of_relative_path_returns_none()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: parse_error
      Src: /src/opendal/core/services/goosefs/src/core.rs:643,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - err
    argTypes:
    - GfsError
    constantsTouched: []
    func_position:
      end: 644
      start: 642
    functionDepth: 37
    functionLinenumber: 642
    functionLinenumberEnd: 644
    functionName: error::run
    functionSourceFile: /src/opendal/core/services/goosefs/src/core.rs
    functionUses: 0
    functionsReached:
    - parse_error
    linkageType: ''
    returnType: Error
    signature: 'fn run(err: GfsError) -> Error'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: run
      Src: /src/opendal/core/services/goosefs/src/core.rs:648,1
    - Dst: '&str::into'
      Src: /src/opendal/core/services/goosefs/src/core.rs:649,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 660
      start: 647
    functionDepth: 35
    functionLinenumber: 647
    functionLinenumberEnd: 660
    functionName: error::not_found_maps_to_not_found_and_is_permanent
    functionSourceFile: /src/opendal/core/services/goosefs/src/core.rs
    functionUses: 0
    functionsReached:
    - run
    - '&str::into'
    linkageType: ''
    returnType: void
    signature: fn not_found_maps_to_not_found_and_is_permanent()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: run
      Src: /src/opendal/core/services/goosefs/src/core.rs:664,1
    - Dst: '&str::into'
      Src: /src/opendal/core/services/goosefs/src/core.rs:665,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 670
      start: 663
    functionDepth: 35
    functionLinenumber: 663
    functionLinenumberEnd: 670
    functionName: error::already_exists_maps_to_already_exists
    functionSourceFile: /src/opendal/core/services/goosefs/src/core.rs
    functionUses: 0
    functionsReached:
    - run
    - '&str::into'
    linkageType: ''
    returnType: void
    signature: fn already_exists_maps_to_already_exists()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: run
      Src: /src/opendal/core/services/goosefs/src/core.rs:674,1
    - Dst: '&str::into'
      Src: /src/opendal/core/services/goosefs/src/core.rs:675,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 679
      start: 673
    functionDepth: 35
    functionLinenumber: 673
    functionLinenumberEnd: 679
    functionName: error::permission_denied_maps_and_is_permanent
    functionSourceFile: /src/opendal/core/services/goosefs/src/core.rs
    functionUses: 0
    functionsReached:
    - run
    - '&str::into'
    linkageType: ''
    returnType: void
    signature: fn permission_denied_maps_and_is_permanent()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: run
      Src: /src/opendal/core/services/goosefs/src/core.rs:683,1
    - Dst: '&str::into'
      Src: /src/opendal/core/services/goosefs/src/core.rs:684,1
    - Dst: run
      Src: /src/opendal/core/services/goosefs/src/core.rs:689,1
    - Dst: '&str::into'
      Src: /src/opendal/core/services/goosefs/src/core.rs:690,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 694
      start: 682
    functionDepth: 35
    functionLinenumber: 682
    functionLinenumberEnd: 694
    functionName: error::invalid_argument_and_config_error_both_map_to_config_invalid
    functionSourceFile: /src/opendal/core/services/goosefs/src/core.rs
    functionUses: 0
    functionsReached:
    - run
    - '&str::into'
    linkageType: ''
    returnType: void
    signature: fn invalid_argument_and_config_error_both_map_to_config_invalid()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: '&str::into'
      Src: /src/opendal/core/services/goosefs/src/core.rs:703,1
    - Dst: '&str::into'
      Src: /src/opendal/core/services/goosefs/src/core.rs:709,1
    - Dst: '&str::into'
      Src: /src/opendal/core/services/goosefs/src/core.rs:715,1
    - Dst: run
      Src: /src/opendal/core/services/goosefs/src/core.rs:720,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 18
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 732
      start: 699
    functionDepth: 29
    functionLinenumber: 699
    functionLinenumberEnd: 732
    functionName: error::transient_errors_are_marked_temporary
    functionSourceFile: /src/opendal/core/services/goosefs/src/core.rs
    functionUses: 0
    functionsReached:
    - run
    - '&str::into'
    linkageType: ''
    returnType: void
    signature: fn transient_errors_are_marked_temporary()
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 3
    argNames:
    - core
    - op
    - path
    argTypes:
    - Arc<GoosefsCore>
    - OpWrite
    - String
    constantsTouched: []
    func_position:
      end: 108
      start: 100
    functionDepth: 0
    functionLinenumber: 100
    functionLinenumberEnd: 108
    functionName: GoosefsWriter::new
    functionSourceFile: /src/opendal/core/services/goosefs/src/writer.rs
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(core: Arc<GoosefsCore>, op: OpWrite, path: String) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: rfind
      Src: /src/opendal/core/services/goosefs/src/writer.rs:130,1
    - Dst: std::process::id
      Src: /src/opendal/core/services/goosefs/src/writer.rs:135,1
    - Dst: fetch_add
      Src: /src/opendal/core/services/goosefs/src/writer.rs:136,1
    - Dst: SystemTime::now
      Src: /src/opendal/core/services/goosefs/src/writer.rs:137,1
    - Dst: Self::duration_since
      Src: /src/opendal/core/services/goosefs/src/writer.rs:137,1
    - Dst: map
      Src: /src/opendal/core/services/goosefs/src/writer.rs:137,1
    - Dst: Result::as_nanos
      Src: /src/opendal/core/services/goosefs/src/writer.rs:139,1
    - Dst: unwrap_or
      Src: /src/opendal/core/services/goosefs/src/writer.rs:137,1
    - Dst: Result::is_empty
      Src: /src/opendal/core/services/goosefs/src/writer.rs:142,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 29
    argCount: 1
    argNames:
    - path
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 147
      start: 126
    functionDepth: 4
    functionLinenumber: 126
    functionLinenumberEnd: 147
    functionName: GoosefsWriter::make_tmp_path
    functionSourceFile: /src/opendal/core/services/goosefs/src/writer.rs
    functionUses: 0
    functionsReached:
    - Self::duration_since
    - fetch_add
    - rfind
    - SystemTime::now
    - map
    - Result::is_empty
    - Result::as_nanos
    - std::process::id
    - unwrap_or
    linkageType: ''
    returnType: String
    signature: 'fn make_tmp_path(path: &str) -> String'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: is_none
      Src: /src/opendal/core/services/goosefs/src/writer.rs:152,1
    - Dst: if_not_exists
      Src: /src/opendal/core/services/goosefs/src/writer.rs:159,1
    - Dst: get_status
      Src: /src/opendal/core/services/goosefs/src/writer.rs:159,1
    - Dst: is_ok
      Src: /src/opendal/core/services/goosefs/src/writer.rs:159,1
    - Dst: Err
      Src: /src/opendal/core/services/goosefs/src/writer.rs:160,1
    - Dst: Error::new
      Src: /src/opendal/core/services/goosefs/src/writer.rs:160,1
    - Dst: Self::make_tmp_path
      Src: /src/opendal/core/services/goosefs/src/writer.rs:166,1
    - Dst: create_writer
      Src: /src/opendal/core/services/goosefs/src/writer.rs:167,1
    - Dst: Some
      Src: /src/opendal/core/services/goosefs/src/writer.rs:168,1
    - Dst: Some
      Src: /src/opendal/core/services/goosefs/src/writer.rs:169,1
    - Dst: Ok
      Src: /src/opendal/core/services/goosefs/src/writer.rs:171,1
    - Dst: as_mut
      Src: /src/opendal/core/services/goosefs/src/writer.rs:171,1
    - Dst: expect
      Src: /src/opendal/core/services/goosefs/src/writer.rs:171,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 46
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 172
      start: 151
    functionDepth: 32
    functionLinenumber: 151
    functionLinenumberEnd: 172
    functionName: GoosefsWriter::ensure_writer
    functionSourceFile: /src/opendal/core/services/goosefs/src/writer.rs
    functionUses: 1
    functionsReached:
    - is_none
    - as_mut
    - is_ok
    - expect
    - Ok
    - Err
    - Error::new
    - Some
    - create_writer
    - Self::make_tmp_path
    - if_not_exists
    - get_status
    linkageType: ''
    returnType: Result
    signature: async fn ensure_writer(&mut self) -> Result<&mut ClientWriter>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: take
      Src: /src/opendal/core/services/goosefs/src/writer.rs:183,1
    - Dst: Ok
      Src: /src/opendal/core/services/goosefs/src/writer.rs:186,1
    - Dst: if_not_exists
      Src: /src/opendal/core/services/goosefs/src/writer.rs:191,1
    - Dst: get_status
      Src: /src/opendal/core/services/goosefs/src/writer.rs:191,1
    - Dst: is_ok
      Src: /src/opendal/core/services/goosefs/src/writer.rs:191,1
    - Dst: delete
      Src: /src/opendal/core/services/goosefs/src/writer.rs:193,1
    - Dst: Err
      Src: /src/opendal/core/services/goosefs/src/writer.rs:194,1
    - Dst: Error::new
      Src: /src/opendal/core/services/goosefs/src/writer.rs:194,1
    - Dst: if_not_exists
      Src: /src/opendal/core/services/goosefs/src/writer.rs:205,1
    - Dst: delete
      Src: /src/opendal/core/services/goosefs/src/writer.rs:206,1
    - Dst: rename
      Src: /src/opendal/core/services/goosefs/src/writer.rs:209,1
    - Dst: Ok
      Src: /src/opendal/core/services/goosefs/src/writer.rs:210,1
    - Dst: delete
      Src: /src/opendal/core/services/goosefs/src/writer.rs:216,1
    - Dst: Err
      Src: /src/opendal/core/services/goosefs/src/writer.rs:217,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 59
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 220
      start: 182
    functionDepth: 32
    functionLinenumber: 182
    functionLinenumberEnd: 220
    functionName: GoosefsWriter::finalize_rename
    functionSourceFile: /src/opendal/core/services/goosefs/src/writer.rs
    functionUses: 1
    functionsReached:
    - is_ok
    - Ok
    - delete
    - Err
    - take
    - Error::new
    - rename
    - if_not_exists
    - get_status
    linkageType: ''
    returnType: Result
    signature: async fn finalize_rename(&mut self) -> Result<()>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: GoosefsWriter::ensure_writer
      Src: /src/opendal/core/services/goosefs/src/writer.rs:225,1
    - Dst: Result::write
      Src: /src/opendal/core/services/goosefs/src/writer.rs:234,1
    - Dst: map_err
      Src: /src/opendal/core/services/goosefs/src/writer.rs:234,1
    - Dst: Ok
      Src: /src/opendal/core/services/goosefs/src/writer.rs:236,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 1
    argNames:
    - bs
    argTypes:
    - Buffer
    constantsTouched: []
    func_position:
      end: 237
      start: 224
    functionDepth: 33
    functionLinenumber: 224
    functionLinenumberEnd: 237
    functionName: GoosefsWriter::write
    functionSourceFile: /src/opendal/core/services/goosefs/src/writer.rs
    functionUses: 0
    functionsReached:
    - map_err
    - GoosefsWriter::ensure_writer
    - Result::write
    - Ok
    linkageType: ''
    returnType: Result
    signature: 'async fn write(&mut self, bs: Buffer) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: take
      Src: /src/opendal/core/services/goosefs/src/writer.rs:240,1
    - Dst: Result::close
      Src: /src/opendal/core/services/goosefs/src/writer.rs:243,1
    - Dst: map_err
      Src: /src/opendal/core/services/goosefs/src/writer.rs:243,1
    - Dst: take
      Src: /src/opendal/core/services/goosefs/src/writer.rs:246,1
    - Dst: delete
      Src: /src/opendal/core/services/goosefs/src/writer.rs:247,1
    - Dst: Err
      Src: /src/opendal/core/services/goosefs/src/writer.rs:249,1
    - Dst: GoosefsWriter::finalize_rename
      Src: /src/opendal/core/services/goosefs/src/writer.rs:251,1
    - Dst: Ok
      Src: /src/opendal/core/services/goosefs/src/writer.rs:252,1
    - Dst: Metadata::default
      Src: /src/opendal/core/services/goosefs/src/writer.rs:252,1
    - Dst: if_not_exists
      Src: /src/opendal/core/services/goosefs/src/writer.rs:261,1
    - Dst: get_status
      Src: /src/opendal/core/services/goosefs/src/writer.rs:261,1
    - Dst: is_ok
      Src: /src/opendal/core/services/goosefs/src/writer.rs:261,1
    - Dst: Err
      Src: /src/opendal/core/services/goosefs/src/writer.rs:262,1
    - Dst: Error::new
      Src: /src/opendal/core/services/goosefs/src/writer.rs:262,1
    - Dst: Self::make_tmp_path
      Src: /src/opendal/core/services/goosefs/src/writer.rs:268,1
    - Dst: create_writer
      Src: /src/opendal/core/services/goosefs/src/writer.rs:269,1
    - Dst: Self::close
      Src: /src/opendal/core/services/goosefs/src/writer.rs:270,1
    - Dst: map_err
      Src: /src/opendal/core/services/goosefs/src/writer.rs:270,1
    - Dst: delete
      Src: /src/opendal/core/services/goosefs/src/writer.rs:271,1
    - Dst: Err
      Src: /src/opendal/core/services/goosefs/src/writer.rs:272,1
    - Dst: Some
      Src: /src/opendal/core/services/goosefs/src/writer.rs:274,1
    - Dst: GoosefsWriter::finalize_rename
      Src: /src/opendal/core/services/goosefs/src/writer.rs:275,1
    - Dst: Ok
      Src: /src/opendal/core/services/goosefs/src/writer.rs:276,1
    - Dst: Metadata::default
      Src: /src/opendal/core/services/goosefs/src/writer.rs:276,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 87
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 277
      start: 239
    functionDepth: 32
    functionLinenumber: 239
    functionLinenumberEnd: 277
    functionName: GoosefsWriter::close
    functionSourceFile: /src/opendal/core/services/goosefs/src/writer.rs
    functionUses: 0
    functionsReached:
    - map_err
    - is_ok
    - Metadata::default
    - Ok
    - delete
    - GoosefsWriter::finalize_rename
    - Err
    - take
    - Result::close
    - Error::new
    - create_writer
    - Self::make_tmp_path
    - Some
    - if_not_exists
    - Self::close
    - get_status
    linkageType: ''
    returnType: Result
    signature: async fn close(&mut self) -> Result<Metadata>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: take
      Src: /src/opendal/core/services/goosefs/src/writer.rs:286,1
    - Dst: Result::cancel
      Src: /src/opendal/core/services/goosefs/src/writer.rs:296,1
    - Dst: take
      Src: /src/opendal/core/services/goosefs/src/writer.rs:299,1
    - Dst: delete
      Src: /src/opendal/core/services/goosefs/src/writer.rs:302,1
    - Dst: Ok
      Src: /src/opendal/core/services/goosefs/src/writer.rs:304,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 20
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 305
      start: 279
    functionDepth: 32
    functionLinenumber: 279
    functionLinenumberEnd: 305
    functionName: GoosefsWriter::abort
    functionSourceFile: /src/opendal/core/services/goosefs/src/writer.rs
    functionUses: 0
    functionsReached:
    - take
    - Result::cancel
    - Ok
    - delete
    linkageType: ''
    returnType: Result
    signature: async fn abort(&mut self) -> Result<()>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: register::<GooseFs>
      Src: /src/opendal/core/services/goosefs/src/lib.rs:23,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - registry
    argTypes:
    - '&opendal_core::OperatorRegistry'
    constantsTouched: []
    func_position:
      end: 24
      start: 22
    functionDepth: 0
    functionLinenumber: 22
    functionLinenumberEnd: 24
    functionName: register_goosefs_service
    functionSourceFile: /src/opendal/core/services/goosefs/src/lib.rs
    functionUses: 1
    functionsReached:
    - register::<GooseFs>
    linkageType: ''
    returnType: void
    signature: 'pub fn register_goosefs_service(registry: &opendal_core::OperatorRegistry)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::debug_struct
      Src: /src/opendal/core/services/goosefs/src/backend.rs:43,1
    - Dst: field
      Src: /src/opendal/core/services/goosefs/src/backend.rs:43,1
    - Dst: finish_non_exhaustive
      Src: /src/opendal/core/services/goosefs/src/backend.rs:43,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - f
    argTypes:
    - '&mut std::fmt::Formatter<''_>'
    constantsTouched: []
    func_position:
      end: 46
      start: 42
    functionDepth: 5
    functionLinenumber: 42
    functionLinenumberEnd: 46
    functionName: GoosefsBuilder::fmt
    functionSourceFile: /src/opendal/core/services/goosefs/src/backend.rs
    functionUses: 0
    functionsReached:
    - field
    - Result::debug_struct
    - finish_non_exhaustive
    linkageType: ''
    returnType: std::fmt::Result
    signature: 'fn fmt(&self, f: &mut std::fmt::Formatter<''_>) -> std::fmt::Result'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::is_empty
      Src: /src/opendal/core/services/goosefs/src/backend.rs:54,1
    - Dst: Some
      Src: /src/opendal/core/services/goosefs/src/backend.rs:57,1
    - Dst: Result::to_string
      Src: /src/opendal/core/services/goosefs/src/backend.rs:57,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - root
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 60
      start: 53
    functionDepth: 4
    functionLinenumber: 53
    functionLinenumberEnd: 60
    functionName: GoosefsBuilder::root
    functionSourceFile: /src/opendal/core/services/goosefs/src/backend.rs
    functionUses: 0
    functionsReached:
    - Result::is_empty
    - Result::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn root(mut self, root: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: is_empty
      Src: /src/opendal/core/services/goosefs/src/backend.rs:74,1
    - Dst: Some
      Src: /src/opendal/core/services/goosefs/src/backend.rs:75,1
    - Dst: to_string
      Src: /src/opendal/core/services/goosefs/src/backend.rs:75,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 1
    argNames:
    - addr
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 78
      start: 73
    functionDepth: 4
    functionLinenumber: 73
    functionLinenumberEnd: 78
    functionName: GoosefsBuilder::master_addr
    functionSourceFile: /src/opendal/core/services/goosefs/src/backend.rs
    functionUses: 0
    functionsReached:
    - to_string
    - Some
    - is_empty
    linkageType: ''
    returnType: Self
    signature: 'pub fn master_addr(mut self, addr: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Some
      Src: /src/opendal/core/services/goosefs/src/backend.rs:82,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - size
    argTypes:
    - u64
    constantsTouched: []
    func_position:
      end: 84
      start: 81
    functionDepth: 0
    functionLinenumber: 81
    functionLinenumberEnd: 84
    functionName: GoosefsBuilder::block_size
    functionSourceFile: /src/opendal/core/services/goosefs/src/backend.rs
    functionUses: 0
    functionsReached:
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn block_size(mut self, size: u64) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Some
      Src: /src/opendal/core/services/goosefs/src/backend.rs:88,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - size
    argTypes:
    - u64
    constantsTouched: []
    func_position:
      end: 90
      start: 87
    functionDepth: 0
    functionLinenumber: 87
    functionLinenumberEnd: 90
    functionName: GoosefsBuilder::chunk_size
    functionSourceFile: /src/opendal/core/services/goosefs/src/backend.rs
    functionUses: 0
    functionsReached:
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn chunk_size(mut self, size: u64) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: '&str::is_empty'
      Src: /src/opendal/core/services/goosefs/src/backend.rs:96,1
    - Dst: Some
      Src: /src/opendal/core/services/goosefs/src/backend.rs:97,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/goosefs/src/backend.rs:97,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 1
    argNames:
    - wt
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 100
      start: 95
    functionDepth: 4
    functionLinenumber: 95
    functionLinenumberEnd: 100
    functionName: GoosefsBuilder::write_type
    functionSourceFile: /src/opendal/core/services/goosefs/src/backend.rs
    functionUses: 0
    functionsReached:
    - '&str::to_string'
    - '&str::is_empty'
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn write_type(mut self, wt: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self::is_empty
      Src: /src/opendal/core/services/goosefs/src/backend.rs:108,1
    - Dst: Some
      Src: /src/opendal/core/services/goosefs/src/backend.rs:109,1
    - Dst: Self::to_string
      Src: /src/opendal/core/services/goosefs/src/backend.rs:109,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 1
    argNames:
    - auth_type
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 112
      start: 107
    functionDepth: 4
    functionLinenumber: 107
    functionLinenumberEnd: 112
    functionName: GoosefsBuilder::auth_type
    functionSourceFile: /src/opendal/core/services/goosefs/src/backend.rs
    functionUses: 0
    functionsReached:
    - Self::is_empty
    - Self::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn auth_type(mut self, auth_type: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Option::is_empty
      Src: /src/opendal/core/services/goosefs/src/backend.rs:119,1
    - Dst: Some
      Src: /src/opendal/core/services/goosefs/src/backend.rs:120,1
    - Dst: Option::to_string
      Src: /src/opendal/core/services/goosefs/src/backend.rs:120,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 1
    argNames:
    - username
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 123
      start: 118
    functionDepth: 4
    functionLinenumber: 118
    functionLinenumberEnd: 123
    functionName: GoosefsBuilder::auth_username
    functionSourceFile: /src/opendal/core/services/goosefs/src/backend.rs
    functionUses: 0
    functionsReached:
    - Option::to_string
    - Option::is_empty
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn auth_username(mut self, username: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: normalize_root
      Src: /src/opendal/core/services/goosefs/src/backend.rs:133,1
    - Dst: clone
      Src: /src/opendal/core/services/goosefs/src/backend.rs:133,1
    - Dst: unwrap_or_default
      Src: /src/opendal/core/services/goosefs/src/backend.rs:133,1
    - Dst: goosefs_sdk::config::GoosefsConfig::from_properties_auto
      Src: /src/opendal/core/services/goosefs/src/backend.rs:159,1
    - Dst: map_err
      Src: /src/opendal/core/services/goosefs/src/backend.rs:159,1
    - Dst: Error::new
      Src: /src/opendal/core/services/goosefs/src/backend.rs:161,1
    - Dst: Self::with_operation
      Src: /src/opendal/core/services/goosefs/src/backend.rs:161,1
    - Dst: Self::with_context
      Src: /src/opendal/core/services/goosefs/src/backend.rs:161,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/goosefs/src/backend.rs:170,1
    - Dst: split
      Src: /src/opendal/core/services/goosefs/src/backend.rs:174,1
    - Dst: map
      Src: /src/opendal/core/services/goosefs/src/backend.rs:174,1
    - Dst: trim
      Src: /src/opendal/core/services/goosefs/src/backend.rs:176,1
    - Dst: to_string
      Src: /src/opendal/core/services/goosefs/src/backend.rs:176,1
    - Dst: filter
      Src: /src/opendal/core/services/goosefs/src/backend.rs:174,1
    - Dst: is_empty
      Src: /src/opendal/core/services/goosefs/src/backend.rs:177,1
    - Dst: collect
      Src: /src/opendal/core/services/goosefs/src/backend.rs:174,1
    - Dst: is_empty
      Src: /src/opendal/core/services/goosefs/src/backend.rs:180,1
    - Dst: Err
      Src: /src/opendal/core/services/goosefs/src/backend.rs:181,1
    - Dst: Error::new
      Src: /src/opendal/core/services/goosefs/src/backend.rs:181,1
    - Dst: Self::with_operation
      Src: /src/opendal/core/services/goosefs/src/backend.rs:181,1
    - Dst: Self::with_context
      Src: /src/opendal/core/services/goosefs/src/backend.rs:181,1
    - Dst: len
      Src: /src/opendal/core/services/goosefs/src/backend.rs:189,1
    - Dst: clone
      Src: /src/opendal/core/services/goosefs/src/backend.rs:190,1
    - Dst: Vec::new
      Src: /src/opendal/core/services/goosefs/src/backend.rs:191,1
    - Dst: clone
      Src: /src/opendal/core/services/goosefs/src/backend.rs:193,1
    - Dst: is_empty
      Src: /src/opendal/core/services/goosefs/src/backend.rs:201,1
    - Dst: is_empty
      Src: /src/opendal/core/services/goosefs/src/backend.rs:201,1
    - Dst: Err
      Src: /src/opendal/core/services/goosefs/src/backend.rs:202,1
    - Dst: Error::new
      Src: /src/opendal/core/services/goosefs/src/backend.rs:202,1
    - Dst: Self::with_operation
      Src: /src/opendal/core/services/goosefs/src/backend.rs:202,1
    - Dst: Self::with_context
      Src: /src/opendal/core/services/goosefs/src/backend.rs:202,1
    - Dst: to_lowercase
      Src: /src/opendal/core/services/goosefs/src/backend.rs:230,1
    - Dst: as_str
      Src: /src/opendal/core/services/goosefs/src/backend.rs:230,1
    - Dst: Some
      Src: /src/opendal/core/services/goosefs/src/backend.rs:238,1
    - Dst: with_auth_type_str
      Src: /src/opendal/core/services/goosefs/src/backend.rs:243,1
    - Dst: map_err
      Src: /src/opendal/core/services/goosefs/src/backend.rs:243,1
    - Dst: Error::new
      Src: /src/opendal/core/services/goosefs/src/backend.rs:246,1
    - Dst: Self::with_operation
      Src: /src/opendal/core/services/goosefs/src/backend.rs:246,1
    - Dst: Self::with_context
      Src: /src/opendal/core/services/goosefs/src/backend.rs:246,1
    - Dst: with_auth_username
      Src: /src/opendal/core/services/goosefs/src/backend.rs:256,1
    - Dst: validate
      Src: /src/opendal/core/services/goosefs/src/backend.rs:260,1
    - Dst: map_err
      Src: /src/opendal/core/services/goosefs/src/backend.rs:260,1
    - Dst: Error::new
      Src: /src/opendal/core/services/goosefs/src/backend.rs:261,1
    - Dst: Self::with_operation
      Src: /src/opendal/core/services/goosefs/src/backend.rs:261,1
    - Dst: Self::with_context
      Src: /src/opendal/core/services/goosefs/src/backend.rs:261,1
    - Dst: Ok
      Src: /src/opendal/core/services/goosefs/src/backend.rs:269,1
    - Dst: Arc::new
      Src: /src/opendal/core/services/goosefs/src/backend.rs:270,1
    - Dst: GoosefsCore::new
      Src: /src/opendal/core/services/goosefs/src/backend.rs:270,1
    - Dst: ServiceInfo::new
      Src: /src/opendal/core/services/goosefs/src/backend.rs:271,1
    - Dst: Default::default
      Src: /src/opendal/core/services/goosefs/src/backend.rs:286,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 172
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 292
      start: 130
    functionDepth: 34
    functionLinenumber: 130
    functionLinenumberEnd: 292
    functionName: GoosefsBuilder::build
    functionSourceFile: /src/opendal/core/services/goosefs/src/backend.rs
    functionUses: 0
    functionsReached:
    - collect
    - GoosefsCore::new
    - Arc::new
    - Default::default
    - clone
    - map
    - validate
    - with_auth_type_str
    - Vec::new
    - Self::with_context
    - map_err
    - Result::clone
    - ServiceInfo::new
    - Ok
    - to_lowercase
    - normalize_root
    - as_str
    - len
    - unwrap_or_default
    - trim
    - is_empty
    - Some
    - to_string
    - filter
    - with_auth_username
    - split
    - Error::new
    - Err
    - Self::with_operation
    - goosefs_sdk::config::GoosefsConfig::from_properties_auto
    linkageType: ''
    returnType: Result
    signature: fn build(self) -> Result<impl Service>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: clone
      Src: /src/opendal/core/services/goosefs/src/backend.rs:308,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 309
      start: 307
    functionDepth: 2
    functionLinenumber: 307
    functionLinenumberEnd: 309
    functionName: GoosefsBackend::info
    functionSourceFile: /src/opendal/core/services/goosefs/src/backend.rs
    functionUses: 0
    functionsReached:
    - clone
    linkageType: ''
    returnType: ServiceInfo
    signature: fn info(&self) -> ServiceInfo
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 313
      start: 311
    functionDepth: 0
    functionLinenumber: 311
    functionLinenumberEnd: 313
    functionName: GoosefsBackend::capability
    functionSourceFile: /src/opendal/core/services/goosefs/src/backend.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Capability
    signature: fn capability(&self) -> Capability
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: create_dir
      Src: /src/opendal/core/services/goosefs/src/backend.rs:321,1
    - Dst: Ok
      Src: /src/opendal/core/services/goosefs/src/backend.rs:322,1
    - Dst: RpCreateDir::default
      Src: /src/opendal/core/services/goosefs/src/backend.rs:322,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 3
    argNames:
    - _ctx
    - path
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpCreateDir
    constantsTouched: []
    func_position:
      end: 323
      start: 315
    functionDepth: 35
    functionLinenumber: 315
    functionLinenumberEnd: 323
    functionName: GoosefsBackend::create_dir
    functionSourceFile: /src/opendal/core/services/goosefs/src/backend.rs
    functionUses: 0
    functionsReached:
    - RpCreateDir::default
    - create_dir
    - Ok
    linkageType: ''
    returnType: Result
    signature: 'async fn create_dir(&self,_ctx: &OperationContext,path: &str,_: OpCreateDir,)
      -> Result<RpCreateDir>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: get_status
      Src: /src/opendal/core/services/goosefs/src/backend.rs:326,1
    - Dst: Ok
      Src: /src/opendal/core/services/goosefs/src/backend.rs:327,1
    - Dst: RpStat::new
      Src: /src/opendal/core/services/goosefs/src/backend.rs:327,1
    - Dst: file_info_to_metadata
      Src: /src/opendal/core/services/goosefs/src/backend.rs:327,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 3
    argNames:
    - _ctx
    - path
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpStat
    constantsTouched: []
    func_position:
      end: 328
      start: 325
    functionDepth: 38
    functionLinenumber: 325
    functionLinenumberEnd: 328
    functionName: GoosefsBackend::stat
    functionSourceFile: /src/opendal/core/services/goosefs/src/backend.rs
    functionUses: 0
    functionsReached:
    - file_info_to_metadata
    - RpStat::new
    - get_status
    - Ok
    linkageType: ''
    returnType: Result
    signature: 'async fn stat(&self, _ctx: &OperationContext, path: &str, _: OpStat)
      -> Result<RpStat>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/core/services/goosefs/src/backend.rs:331,1
    - Dst: oio::StreamReader::new
      Src: /src/opendal/core/services/goosefs/src/backend.rs:331,1
    - Dst: GoosefsReader::new
      Src: /src/opendal/core/services/goosefs/src/backend.rs:331,1
    - Dst: GoosefsBackend::clone
      Src: /src/opendal/core/services/goosefs/src/backend.rs:332,1
    - Dst: Ok
      Src: /src/opendal/core/services/goosefs/src/backend.rs:338,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - _ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpRead
    constantsTouched: []
    func_position:
      end: 339
      start: 329
    functionDepth: 3
    functionLinenumber: 329
    functionLinenumberEnd: 339
    functionName: GoosefsBackend::read
    functionSourceFile: /src/opendal/core/services/goosefs/src/backend.rs
    functionUses: 0
    functionsReached:
    - oio::StreamReader::new
    - GoosefsBackend::clone
    - GoosefsReader::new
    - Ok
    linkageType: ''
    returnType: Result
    signature: 'fn read(&self, _ctx: &OperationContext, path: &str, args: OpRead)
      -> Result<Self::Reader>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: GoosefsWriter::new
      Src: /src/opendal/core/services/goosefs/src/backend.rs:343,1
    - Dst: clone
      Src: /src/opendal/core/services/goosefs/src/backend.rs:343,1
    - Dst: OpStat::clone
      Src: /src/opendal/core/services/goosefs/src/backend.rs:343,1
    - Dst: to_string
      Src: /src/opendal/core/services/goosefs/src/backend.rs:343,1
    - Dst: Ok
      Src: /src/opendal/core/services/goosefs/src/backend.rs:344,1
    - Dst: Ok
      Src: /src/opendal/core/services/goosefs/src/backend.rs:347,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 3
    argNames:
    - _ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpWrite
    constantsTouched: []
    func_position:
      end: 348
      start: 341
    functionDepth: 2
    functionLinenumber: 341
    functionLinenumberEnd: 348
    functionName: GoosefsBackend::write
    functionSourceFile: /src/opendal/core/services/goosefs/src/backend.rs
    functionUses: 0
    functionsReached:
    - OpStat::clone
    - to_string
    - Ok
    - clone
    - GoosefsWriter::new
    linkageType: ''
    returnType: Result
    signature: 'fn write(&self, _ctx: &OperationContext, path: &str, args: OpWrite)
      -> Result<Self::Writer>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/core/services/goosefs/src/backend.rs:352,1
    - Dst: oio::OneShotDeleter::new
      Src: /src/opendal/core/services/goosefs/src/backend.rs:352,1
    - Dst: GoosefsDeleter::new
      Src: /src/opendal/core/services/goosefs/src/backend.rs:352,1
    - Dst: clone
      Src: /src/opendal/core/services/goosefs/src/backend.rs:353,1
    - Dst: Ok
      Src: /src/opendal/core/services/goosefs/src/backend.rs:357,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - _ctx
    argTypes:
    - '&OperationContext'
    constantsTouched: []
    func_position:
      end: 358
      start: 350
    functionDepth: 2
    functionLinenumber: 350
    functionLinenumberEnd: 358
    functionName: GoosefsBackend::delete
    functionSourceFile: /src/opendal/core/services/goosefs/src/backend.rs
    functionUses: 0
    functionsReached:
    - oio::OneShotDeleter::new
    - GoosefsDeleter::new
    - clone
    - Ok
    linkageType: ''
    returnType: Result
    signature: 'fn delete(&self, _ctx: &OperationContext) -> Result<Self::Deleter>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: GoosefsLister::new
      Src: /src/opendal/core/services/goosefs/src/backend.rs:362,1
    - Dst: clone
      Src: /src/opendal/core/services/goosefs/src/backend.rs:362,1
    - Dst: Ok
      Src: /src/opendal/core/services/goosefs/src/backend.rs:363,1
    - Dst: oio::PageLister::new
      Src: /src/opendal/core/services/goosefs/src/backend.rs:363,1
    - Dst: Ok
      Src: /src/opendal/core/services/goosefs/src/backend.rs:366,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 3
    argNames:
    - _ctx
    - path
    - _args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpList
    constantsTouched: []
    func_position:
      end: 367
      start: 360
    functionDepth: 3
    functionLinenumber: 360
    functionLinenumberEnd: 367
    functionName: GoosefsBackend::list
    functionSourceFile: /src/opendal/core/services/goosefs/src/backend.rs
    functionUses: 0
    functionsReached:
    - oio::PageLister::new
    - Ok
    - clone
    - GoosefsLister::new
    linkageType: ''
    returnType: Result
    signature: 'fn list(&self, _ctx: &OperationContext, path: &str, _args: OpList)
      -> Result<Self::Lister>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/core/services/goosefs/src/backend.rs:377,1
    - Dst: Error::new
      Src: /src/opendal/core/services/goosefs/src/backend.rs:377,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 5
    argNames:
    - _ctx
    - _from
    - _to
    - _args
    - _opts
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    - OpCopy
    - OpCopier
    constantsTouched: []
    func_position:
      end: 381
      start: 369
    functionDepth: 36
    functionLinenumber: 369
    functionLinenumberEnd: 381
    functionName: GoosefsBackend::copy
    functionSourceFile: /src/opendal/core/services/goosefs/src/backend.rs
    functionUses: 0
    functionsReached:
    - Error::new
    - Err
    linkageType: ''
    returnType: Result
    signature: 'fn copy(&self,_ctx: &OperationContext,_from: &str,_to: &str,_args:
      OpCopy,_opts: OpCopier,) -> Result<Self::Copier>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: rename
      Src: /src/opendal/core/services/goosefs/src/backend.rs:390,1
    - Dst: Ok
      Src: /src/opendal/core/services/goosefs/src/backend.rs:391,1
    - Dst: RpRename::default
      Src: /src/opendal/core/services/goosefs/src/backend.rs:391,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 4
    argNames:
    - _ctx
    - from
    - to
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    - OpRename
    constantsTouched: []
    func_position:
      end: 392
      start: 383
    functionDepth: 3
    functionLinenumber: 383
    functionLinenumberEnd: 392
    functionName: GoosefsBackend::rename
    functionSourceFile: /src/opendal/core/services/goosefs/src/backend.rs
    functionUses: 0
    functionsReached:
    - rename
    - RpRename::default
    - Ok
    linkageType: ''
    returnType: Result
    signature: 'async fn rename(&self,_ctx: &OperationContext,from: &str,to: &str,_:
      OpRename,) -> Result<RpRename>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/core/services/goosefs/src/backend.rs:400,1
    - Dst: Error::new
      Src: /src/opendal/core/services/goosefs/src/backend.rs:400,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - _ctx
    - _path
    - _args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpPresign
    constantsTouched: []
    func_position:
      end: 404
      start: 394
    functionDepth: 36
    functionLinenumber: 394
    functionLinenumberEnd: 404
    functionName: GoosefsBackend::presign
    functionSourceFile: /src/opendal/core/services/goosefs/src/backend.rs
    functionUses: 0
    functionsReached:
    - Error::new
    - Err
    linkageType: ''
    returnType: Result
    signature: 'async fn presign(&self,_ctx: &OperationContext,_path: &str,_args:
      OpPresign,) -> Result<RpPresign>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: GoosefsBuilder::default
      Src: /src/opendal/core/services/goosefs/src/backend.rs:413,1
    - Dst: Self::root
      Src: /src/opendal/core/services/goosefs/src/backend.rs:413,1
    - Dst: Result::master_addr
      Src: /src/opendal/core/services/goosefs/src/backend.rs:413,1
    - Dst: build
      Src: /src/opendal/core/services/goosefs/src/backend.rs:413,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 418
      start: 412
    functionDepth: 32
    functionLinenumber: 412
    functionLinenumberEnd: 418
    functionName: tests::test_builder_build
    functionSourceFile: /src/opendal/core/services/goosefs/src/backend.rs
    functionUses: 0
    functionsReached:
    - build
    - Self::root
    - GoosefsBuilder::default
    - Result::master_addr
    linkageType: ''
    returnType: void
    signature: fn test_builder_build()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: GoosefsBuilder::default
      Src: /src/opendal/core/services/goosefs/src/backend.rs:422,1
    - Dst: Self::root
      Src: /src/opendal/core/services/goosefs/src/backend.rs:422,1
    - Dst: Result::master_addr
      Src: /src/opendal/core/services/goosefs/src/backend.rs:422,1
    - Dst: build
      Src: /src/opendal/core/services/goosefs/src/backend.rs:422,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 427
      start: 421
    functionDepth: 32
    functionLinenumber: 421
    functionLinenumberEnd: 427
    functionName: tests::test_builder_ha
    functionSourceFile: /src/opendal/core/services/goosefs/src/backend.rs
    functionUses: 0
    functionsReached:
    - build
    - Self::root
    - GoosefsBuilder::default
    - Result::master_addr
    linkageType: ''
    returnType: void
    signature: fn test_builder_ha()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: GoosefsBuilder::default
      Src: /src/opendal/core/services/goosefs/src/backend.rs:436,1
    - Dst: Self::root
      Src: /src/opendal/core/services/goosefs/src/backend.rs:436,1
    - Dst: Result::master_addr
      Src: /src/opendal/core/services/goosefs/src/backend.rs:436,1
    - Dst: build
      Src: /src/opendal/core/services/goosefs/src/backend.rs:436,1
    - Dst: (String, String)::expect_err
      Src: /src/opendal/core/services/goosefs/src/backend.rs:436,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 446
      start: 435
    functionDepth: 32
    functionLinenumber: 435
    functionLinenumberEnd: 446
    functionName: tests::test_builder_blank_master_addr_fails
    functionSourceFile: /src/opendal/core/services/goosefs/src/backend.rs
    functionUses: 0
    functionsReached:
    - build
    - (String, String)::expect_err
    - GoosefsBuilder::default
    - Result::master_addr
    - Self::root
    linkageType: ''
    returnType: void
    signature: fn test_builder_blank_master_addr_fails()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::options
      Src: /src/opendal/core/services/redb/src/config.rs:40,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/redb/src/config.rs:40,1
    - Dst: Result::root
      Src: /src/opendal/core/services/redb/src/config.rs:42,1
    - Dst: is_empty
      Src: /src/opendal/core/services/redb/src/config.rs:43,1
    - Dst: Result::entry
      Src: /src/opendal/core/services/redb/src/config.rs:45,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/redb/src/config.rs:45,1
    - Dst: crate::Entry::or_insert_with
      Src: /src/opendal/core/services/redb/src/config.rs:45,1
    - Dst: Self::from_iter
      Src: /src/opendal/core/services/redb/src/config.rs:49,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 20
    argCount: 1
    argNames:
    - uri
    argTypes:
    - '&opendal_core::OperatorUri'
    constantsTouched: []
    func_position:
      end: 50
      start: 39
    functionDepth: 35
    functionLinenumber: 39
    functionLinenumberEnd: 50
    functionName: RedbConfig::from_uri
    functionSourceFile: /src/opendal/core/services/redb/src/config.rs
    functionUses: 1
    functionsReached:
    - Result::clone
    - Self::from_iter
    - Result::entry
    - crate::Entry::or_insert_with
    - is_empty
    - Result::root
    - '&str::to_string'
    - Result::options
    linkageType: ''
    returnType: opendal_core::Result
    signature: 'fn from_uri(uri: &opendal_core::OperatorUri) -> opendal_core::Result<Self>'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 57
      start: 52
    functionDepth: 0
    functionLinenumber: 52
    functionLinenumberEnd: 57
    functionName: RedbConfig::into_builder
    functionSourceFile: /src/opendal/core/services/redb/src/config.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Self::Builder
    signature: fn into_builder(self) -> Self::Builder
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: OperatorUri::new
      Src: /src/opendal/core/services/redb/src/config.rs:68,1
    - Dst: Vec::<(String, String)>::new
      Src: /src/opendal/core/services/redb/src/config.rs:70,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/services/redb/src/config.rs:68,1
    - Dst: RedbConfig::from_uri
      Src: /src/opendal/core/services/redb/src/config.rs:74,1
    - Dst: opendal_core::Result::unwrap
      Src: /src/opendal/core/services/redb/src/config.rs:74,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 78
      start: 67
    functionDepth: 29
    functionLinenumber: 67
    functionLinenumberEnd: 78
    functionName: tests::from_uri_sets_datadir_table_and_root
    functionSourceFile: /src/opendal/core/services/redb/src/config.rs
    functionUses: 0
    functionsReached:
    - RedbConfig::from_uri
    - Vec::<(String, String)>::new
    - OperatorUri::new
    - Result::unwrap
    - opendal_core::Result::unwrap
    linkageType: ''
    returnType: void
    signature: fn from_uri_sets_datadir_table_and_root()
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - core
    - root
    argTypes:
    - Arc<RedbCore>
    - String
    constantsTouched: []
    func_position:
      end: 33
      start: 31
    functionDepth: 0
    functionLinenumber: 31
    functionLinenumberEnd: 33
    functionName: RedbDeleter::new
    functionSourceFile: /src/opendal/core/services/redb/src/deleter.rs
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(core: Arc<RedbCore>, root: String) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/redb/src/deleter.rs:38,1
    - Dst: delete
      Src: /src/opendal/core/services/redb/src/deleter.rs:39,1
    - Dst: Ok
      Src: /src/opendal/core/services/redb/src/deleter.rs:40,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 2
    argNames:
    - path
    argTypes:
    - String
    - OpDelete
    constantsTouched: []
    func_position:
      end: 41
      start: 37
    functionDepth: 32
    functionLinenumber: 37
    functionLinenumberEnd: 41
    functionName: RedbDeleter::delete_once
    functionSourceFile: /src/opendal/core/services/redb/src/deleter.rs
    functionUses: 0
    functionsReached:
    - Ok
    - build_abs_path
    - delete
    linkageType: ''
    returnType: Result
    signature: 'async fn delete_once(&self, path: String, _: OpDelete) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: to_string
      Src: /src/opendal/core/services/redb/src/reader.rs:32,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - backend
    - path
    argTypes:
    - RedbBackend
    - '&str'
    - OpRead
    constantsTouched: []
    func_position:
      end: 34
      start: 29
    functionDepth: 2
    functionLinenumber: 29
    functionLinenumberEnd: 34
    functionName: RedbReader::new
    functionSourceFile: /src/opendal/core/services/redb/src/reader.rs
    functionUses: 1
    functionsReached:
    - to_string
    linkageType: ''
    returnType: Self
    signature: 'pub(super) fn new(backend: RedbBackend, path: &str, _: OpRead) ->
      Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: as_str
      Src: /src/opendal/core/services/redb/src/reader.rs:40,1
    - Dst: build_abs_path
      Src: /src/opendal/core/services/redb/src/reader.rs:41,1
    - Dst: get
      Src: /src/opendal/core/services/redb/src/reader.rs:42,1
    - Dst: Err
      Src: /src/opendal/core/services/redb/src/reader.rs:45,1
    - Dst: Error::new
      Src: /src/opendal/core/services/redb/src/reader.rs:45,1
    - Dst: Result::slice
      Src: /src/opendal/core/services/redb/src/reader.rs:48,1
    - Dst: (Vec::to_content_range
      Src: /src/opendal/core/services/redb/src/reader.rs:48,1
    - Dst: Result::len
      Src: /src/opendal/core/services/redb/src/reader.rs:48,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/redb/src/reader.rs:49,1
    - Dst: Self::with_content_length
      Src: /src/opendal/core/services/redb/src/reader.rs:49,1
    - Dst: Result::len
      Src: /src/opendal/core/services/redb/src/reader.rs:49,1
    - Dst: Ok
      Src: /src/opendal/core/services/redb/src/reader.rs:50,1
    - Dst: RpRead::new
      Src: /src/opendal/core/services/redb/src/reader.rs:51,1
    - Dst: Box::new
      Src: /src/opendal/core/services/redb/src/reader.rs:52,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 36
    argCount: 1
    argNames:
    - range
    argTypes:
    - BytesRange
    constantsTouched: []
    func_position:
      end: 54
      start: 38
    functionDepth: 36
    functionLinenumber: 38
    functionLinenumberEnd: 54
    functionName: RedbReader::open
    functionSourceFile: /src/opendal/core/services/redb/src/reader.rs
    functionUses: 0
    functionsReached:
    - Metadata::new
    - get
    - Ok
    - Box::new
    - Self::with_content_length
    - build_abs_path
    - Error::new
    - Err
    - as_str
    - Result::slice
    - (Vec::to_content_range
    - Result::len
    - RpRead::new
    linkageType: ''
    returnType: Result
    signature: 'async fn open(&self, range: BytesRange) -> Result<(RpRead, Box<dyn
      oio::ReadStreamDyn>)>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::debug_struct
      Src: /src/opendal/core/services/redb/src/core.rs:33,1
    - Dst: field
      Src: /src/opendal/core/services/redb/src/core.rs:33,1
    - Dst: field
      Src: /src/opendal/core/services/redb/src/core.rs:33,1
    - Dst: finish_non_exhaustive
      Src: /src/opendal/core/services/redb/src/core.rs:33,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 1
    argNames:
    - f
    argTypes:
    - '&mut std::fmt::Formatter<''_>'
    constantsTouched: []
    func_position:
      end: 37
      start: 32
    functionDepth: 5
    functionLinenumber: 32
    functionLinenumberEnd: 37
    functionName: RedbCore::fmt
    functionSourceFile: /src/opendal/core/services/redb/src/core.rs
    functionUses: 0
    functionsReached:
    - field
    - Result::debug_struct
    - finish_non_exhaustive
    linkageType: ''
    returnType: std::fmt::Result
    signature: 'fn fmt(&self, f: &mut std::fmt::Formatter<''_>) -> std::fmt::Result'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: begin_read
      Src: /src/opendal/core/services/redb/src/core.rs:42,1
    - Dst: map_err
      Src: /src/opendal/core/services/redb/src/core.rs:42,1
    - Dst: redb::TableDefinition::new
      Src: /src/opendal/core/services/redb/src/core.rs:45,1
    - Dst: open_table
      Src: /src/opendal/core/services/redb/src/core.rs:47,1
    - Dst: map_err
      Src: /src/opendal/core/services/redb/src/core.rs:47,1
    - Dst: Self::get
      Src: /src/opendal/core/services/redb/src/core.rs:51,1
    - Dst: Ok
      Src: /src/opendal/core/services/redb/src/core.rs:52,1
    - Dst: Some
      Src: /src/opendal/core/services/redb/src/core.rs:52,1
    - Dst: Result::value
      Src: /src/opendal/core/services/redb/src/core.rs:52,1
    - Dst: Vec::to_vec
      Src: /src/opendal/core/services/redb/src/core.rs:52,1
    - Dst: Ok
      Src: /src/opendal/core/services/redb/src/core.rs:53,1
    - Dst: Err
      Src: /src/opendal/core/services/redb/src/core.rs:54,1
    - Dst: parse_storage_error
      Src: /src/opendal/core/services/redb/src/core.rs:54,1
    - Dst: Ok
      Src: /src/opendal/core/services/redb/src/core.rs:56,1
    - Dst: bool::map
      Src: /src/opendal/core/services/redb/src/core.rs:56,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 30
    argCount: 1
    argNames:
    - path
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 57
      start: 41
    functionDepth: 37
    functionLinenumber: 41
    functionLinenumberEnd: 57
    functionName: RedbCore::get
    functionSourceFile: /src/opendal/core/services/redb/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - Ok
    - parse_storage_error
    - Some
    - Err
    - Result::value
    - Vec::to_vec
    - bool::map
    - redb::TableDefinition::new
    - begin_read
    - Self::get
    - open_table
    linkageType: ''
    returnType: Result
    signature: 'pub fn get(&self, path: &str) -> Result<Option<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: begin_write
      Src: /src/opendal/core/services/redb/src/core.rs:60,1
    - Dst: map_err
      Src: /src/opendal/core/services/redb/src/core.rs:60,1
    - Dst: redb::TableDefinition::new
      Src: /src/opendal/core/services/redb/src/core.rs:63,1
    - Dst: open_table
      Src: /src/opendal/core/services/redb/src/core.rs:66,1
    - Dst: map_err
      Src: /src/opendal/core/services/redb/src/core.rs:66,1
    - Dst: Self::insert
      Src: /src/opendal/core/services/redb/src/core.rs:70,1
    - Dst: Vec::to_vec
      Src: /src/opendal/core/services/redb/src/core.rs:71,1
    - Dst: map_err
      Src: /src/opendal/core/services/redb/src/core.rs:70,1
    - Dst: commit
      Src: /src/opendal/core/services/redb/src/core.rs:75,1
    - Dst: map_err
      Src: /src/opendal/core/services/redb/src/core.rs:75,1
    - Dst: Ok
      Src: /src/opendal/core/services/redb/src/core.rs:76,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 33
    argCount: 2
    argNames:
    - path
    - value
    argTypes:
    - '&str'
    - Buffer
    constantsTouched: []
    func_position:
      end: 77
      start: 59
    functionDepth: 37
    functionLinenumber: 59
    functionLinenumberEnd: 77
    functionName: RedbCore::set
    functionSourceFile: /src/opendal/core/services/redb/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - begin_write
    - Ok
    - Self::insert
    - commit
    - Vec::to_vec
    - redb::TableDefinition::new
    - open_table
    linkageType: ''
    returnType: Result
    signature: 'pub fn set(&self, path: &str, value: Buffer) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: begin_write
      Src: /src/opendal/core/services/redb/src/core.rs:80,1
    - Dst: map_err
      Src: /src/opendal/core/services/redb/src/core.rs:80,1
    - Dst: redb::TableDefinition::new
      Src: /src/opendal/core/services/redb/src/core.rs:83,1
    - Dst: open_table
      Src: /src/opendal/core/services/redb/src/core.rs:86,1
    - Dst: map_err
      Src: /src/opendal/core/services/redb/src/core.rs:86,1
    - Dst: Self::remove
      Src: /src/opendal/core/services/redb/src/core.rs:90,1
    - Dst: Result::map_err
      Src: /src/opendal/core/services/redb/src/core.rs:90,1
    - Dst: commit
      Src: /src/opendal/core/services/redb/src/core.rs:93,1
    - Dst: map_err
      Src: /src/opendal/core/services/redb/src/core.rs:93,1
    - Dst: Ok
      Src: /src/opendal/core/services/redb/src/core.rs:94,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 29
    argCount: 1
    argNames:
    - path
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 95
      start: 79
    functionDepth: 36
    functionLinenumber: 79
    functionLinenumberEnd: 95
    functionName: RedbCore::delete
    functionSourceFile: /src/opendal/core/services/redb/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - begin_write
    - Result::map_err
    - Ok
    - Self::remove
    - commit
    - redb::TableDefinition::new
    - open_table
    linkageType: ''
    returnType: Result
    signature: 'pub fn delete(&self, path: &str) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Error::new
      Src: /src/opendal/core/services/redb/src/core.rs:99,1
    - Dst: Self::set_source
      Src: /src/opendal/core/services/redb/src/core.rs:99,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - e
    argTypes:
    - redb::TransactionError
    constantsTouched: []
    func_position:
      end: 100
      start: 98
    functionDepth: 36
    functionLinenumber: 98
    functionLinenumberEnd: 100
    functionName: parse_transaction_error
    functionSourceFile: /src/opendal/core/services/redb/src/core.rs
    functionUses: 0
    functionsReached:
    - Self::set_source
    - Error::new
    linkageType: ''
    returnType: Error
    signature: 'fn parse_transaction_error(e: redb::TransactionError) -> Error'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Error::new
      Src: /src/opendal/core/services/redb/src/core.rs:105,1
    - Dst: Self::set_source
      Src: /src/opendal/core/services/redb/src/core.rs:105,1
    - Dst: Error::new
      Src: /src/opendal/core/services/redb/src/core.rs:107,1
    - Dst: Self::set_source
      Src: /src/opendal/core/services/redb/src/core.rs:107,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - e
    argTypes:
    - redb::TableError
    constantsTouched: []
    func_position:
      end: 109
      start: 102
    functionDepth: 36
    functionLinenumber: 102
    functionLinenumberEnd: 109
    functionName: parse_table_error
    functionSourceFile: /src/opendal/core/services/redb/src/core.rs
    functionUses: 1
    functionsReached:
    - Self::set_source
    - Error::new
    linkageType: ''
    returnType: Error
    signature: 'fn parse_table_error(e: redb::TableError) -> Error'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Error::new
      Src: /src/opendal/core/services/redb/src/core.rs:112,1
    - Dst: Self::set_source
      Src: /src/opendal/core/services/redb/src/core.rs:112,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - e
    argTypes:
    - redb::StorageError
    constantsTouched: []
    func_position:
      end: 113
      start: 111
    functionDepth: 36
    functionLinenumber: 111
    functionLinenumberEnd: 113
    functionName: parse_storage_error
    functionSourceFile: /src/opendal/core/services/redb/src/core.rs
    functionUses: 1
    functionsReached:
    - Self::set_source
    - Error::new
    linkageType: ''
    returnType: Error
    signature: 'fn parse_storage_error(e: redb::StorageError) -> Error'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Error::new
      Src: /src/opendal/core/services/redb/src/core.rs:116,1
    - Dst: Self::set_source
      Src: /src/opendal/core/services/redb/src/core.rs:116,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - e
    argTypes:
    - redb::CommitError
    constantsTouched: []
    func_position:
      end: 117
      start: 115
    functionDepth: 36
    functionLinenumber: 115
    functionLinenumberEnd: 117
    functionName: parse_commit_error
    functionSourceFile: /src/opendal/core/services/redb/src/core.rs
    functionUses: 0
    functionsReached:
    - Self::set_source
    - Error::new
    linkageType: ''
    returnType: Error
    signature: 'fn parse_commit_error(e: redb::CommitError) -> Error'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Error::new
      Src: /src/opendal/core/services/redb/src/core.rs:120,1
    - Dst: Self::set_source
      Src: /src/opendal/core/services/redb/src/core.rs:120,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - e
    argTypes:
    - redb::DatabaseError
    constantsTouched: []
    func_position:
      end: 121
      start: 119
    functionDepth: 36
    functionLinenumber: 119
    functionLinenumberEnd: 121
    functionName: parse_database_error
    functionSourceFile: /src/opendal/core/services/redb/src/core.rs
    functionUses: 0
    functionsReached:
    - Self::set_source
    - Error::new
    linkageType: ''
    returnType: Error
    signature: 'pub fn parse_database_error(e: redb::DatabaseError) -> Error'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: i64::begin_read
      Src: /src/opendal/core/services/redb/src/core.rs:130,1
    - Dst: map_err
      Src: /src/opendal/core/services/redb/src/core.rs:130,1
    - Dst: redb::TableDefinition::new
      Src: /src/opendal/core/services/redb/src/core.rs:132,1
    - Dst: open_table
      Src: /src/opendal/core/services/redb/src/core.rs:134,1
    - Dst: Ok
      Src: /src/opendal/core/services/redb/src/core.rs:135,1
    - Dst: Err
      Src: /src/opendal/core/services/redb/src/core.rs:137,1
    - Dst: parse_table_error
      Src: /src/opendal/core/services/redb/src/core.rs:137,1
    - Dst: i64::begin_write
      Src: /src/opendal/core/services/redb/src/core.rs:142,1
    - Dst: map_err
      Src: /src/opendal/core/services/redb/src/core.rs:142,1
    - Dst: redb::TableDefinition::new
      Src: /src/opendal/core/services/redb/src/core.rs:144,1
    - Dst: open_table
      Src: /src/opendal/core/services/redb/src/core.rs:146,1
    - Dst: map_err
      Src: /src/opendal/core/services/redb/src/core.rs:146,1
    - Dst: commit
      Src: /src/opendal/core/services/redb/src/core.rs:149,1
    - Dst: map_err
      Src: /src/opendal/core/services/redb/src/core.rs:149,1
    - Dst: Ok
      Src: /src/opendal/core/services/redb/src/core.rs:152,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 39
    argCount: 2
    argNames:
    - db
    - table
    argTypes:
    - '&redb::Database'
    - '&str'
    constantsTouched: []
    func_position:
      end: 153
      start: 124
    functionDepth: 37
    functionLinenumber: 124
    functionLinenumberEnd: 153
    functionName: create_table
    functionSourceFile: /src/opendal/core/services/redb/src/core.rs
    functionUses: 4
    functionsReached:
    - map_err
    - i64::begin_write
    - Ok
    - parse_table_error
    - Err
    - commit
    - redb::TableDefinition::new
    - i64::begin_read
    - open_table
    linkageType: ''
    returnType: Result
    signature: 'pub fn create_table(db: &redb::Database, table: &str) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: oio::QueueBuf::new
      Src: /src/opendal/core/services/redb/src/writer.rs:35,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - core
    - path
    argTypes:
    - Arc<RedbCore>
    - String
    constantsTouched: []
    func_position:
      end: 37
      start: 31
    functionDepth: 4
    functionLinenumber: 31
    functionLinenumberEnd: 37
    functionName: RedbWriter::new
    functionSourceFile: /src/opendal/core/services/redb/src/writer.rs
    functionUses: 1
    functionsReached:
    - oio::QueueBuf::new
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(core: Arc<RedbCore>, path: String) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: push
      Src: /src/opendal/core/services/redb/src/writer.rs:42,1
    - Dst: Ok
      Src: /src/opendal/core/services/redb/src/writer.rs:43,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - bs
    argTypes:
    - Buffer
    constantsTouched: []
    func_position:
      end: 44
      start: 41
    functionDepth: 5
    functionLinenumber: 41
    functionLinenumberEnd: 44
    functionName: RedbWriter::write
    functionSourceFile: /src/opendal/core/services/redb/src/writer.rs
    functionUses: 0
    functionsReached:
    - Ok
    - push
    linkageType: ''
    returnType: Result
    signature: 'async fn write(&mut self, bs: Buffer) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: clone
      Src: /src/opendal/core/services/redb/src/writer.rs:47,1
    - Dst: collect
      Src: /src/opendal/core/services/redb/src/writer.rs:47,1
    - Dst: io::Result::len
      Src: /src/opendal/core/services/redb/src/writer.rs:48,1
    - Dst: set
      Src: /src/opendal/core/services/redb/src/writer.rs:49,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/redb/src/writer.rs:51,1
    - Dst: EntryMode::from_path
      Src: /src/opendal/core/services/redb/src/writer.rs:51,1
    - Dst: Self::with_content_length
      Src: /src/opendal/core/services/redb/src/writer.rs:51,1
    - Dst: Ok
      Src: /src/opendal/core/services/redb/src/writer.rs:52,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 22
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 53
      start: 46
    functionDepth: 36
    functionLinenumber: 46
    functionLinenumberEnd: 53
    functionName: RedbWriter::close
    functionSourceFile: /src/opendal/core/services/redb/src/writer.rs
    functionUses: 0
    functionsReached:
    - collect
    - Metadata::new
    - Ok
    - io::Result::len
    - set
    - Self::with_content_length
    - clone
    - EntryMode::from_path
    linkageType: ''
    returnType: Result
    signature: async fn close(&mut self) -> Result<Metadata>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: clear
      Src: /src/opendal/core/services/redb/src/writer.rs:56,1
    - Dst: Ok
      Src: /src/opendal/core/services/redb/src/writer.rs:57,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 58
      start: 55
    functionDepth: 2
    functionLinenumber: 55
    functionLinenumberEnd: 58
    functionName: RedbWriter::abort
    functionSourceFile: /src/opendal/core/services/redb/src/writer.rs
    functionUses: 0
    functionsReached:
    - clear
    - Ok
    linkageType: ''
    returnType: Result
    signature: async fn abort(&mut self) -> Result<()>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: register::<Redb>
      Src: /src/opendal/core/services/redb/src/lib.rs:37,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - registry
    argTypes:
    - '&opendal_core::OperatorRegistry'
    constantsTouched: []
    func_position:
      end: 38
      start: 36
    functionDepth: 0
    functionLinenumber: 36
    functionLinenumberEnd: 38
    functionName: register_redb_service
    functionSourceFile: /src/opendal/core/services/redb/src/lib.rs
    functionUses: 1
    functionsReached:
    - register::<Redb>
    linkageType: ''
    returnType: void
    signature: 'pub fn register_redb_service(registry: &opendal_core::OperatorRegistry)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::debug_struct
      Src: /src/opendal/core/services/redb/src/backend.rs:41,1
    - Dst: field
      Src: /src/opendal/core/services/redb/src/backend.rs:41,1
    - Dst: finish_non_exhaustive
      Src: /src/opendal/core/services/redb/src/backend.rs:41,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - f
    argTypes:
    - '&mut std::fmt::Formatter<''_>'
    constantsTouched: []
    func_position:
      end: 44
      start: 40
    functionDepth: 5
    functionLinenumber: 40
    functionLinenumberEnd: 44
    functionName: RedbBuilder::fmt
    functionSourceFile: /src/opendal/core/services/redb/src/backend.rs
    functionUses: 0
    functionsReached:
    - field
    - Result::debug_struct
    - finish_non_exhaustive
    linkageType: ''
    returnType: std::fmt::Result
    signature: 'fn fmt(&self, f: &mut std::fmt::Formatter<''_>) -> std::fmt::Result'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Some
      Src: /src/opendal/core/services/redb/src/backend.rs:61,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - db
    argTypes:
    - Arc<redb::Database>
    constantsTouched: []
    func_position:
      end: 63
      start: 60
    functionDepth: 0
    functionLinenumber: 60
    functionLinenumberEnd: 63
    functionName: RedbBuilder::database
    functionSourceFile: /src/opendal/core/services/redb/src/backend.rs
    functionUses: 0
    functionsReached:
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn database(mut self, db: Arc<redb::Database>) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Some
      Src: /src/opendal/core/services/redb/src/backend.rs:79,1
    - Dst: into
      Src: /src/opendal/core/services/redb/src/backend.rs:79,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - path
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 81
      start: 78
    functionDepth: 29
    functionLinenumber: 78
    functionLinenumberEnd: 81
    functionName: RedbBuilder::datadir
    functionSourceFile: /src/opendal/core/services/redb/src/backend.rs
    functionUses: 0
    functionsReached:
    - into
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn datadir(mut self, path: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Some
      Src: /src/opendal/core/services/redb/src/backend.rs:85,1
    - Dst: Self::into
      Src: /src/opendal/core/services/redb/src/backend.rs:85,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - table
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 87
      start: 84
    functionDepth: 29
    functionLinenumber: 84
    functionLinenumberEnd: 87
    functionName: RedbBuilder::table
    functionSourceFile: /src/opendal/core/services/redb/src/backend.rs
    functionUses: 0
    functionsReached:
    - Self::into
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn table(mut self, table: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Some
      Src: /src/opendal/core/services/redb/src/backend.rs:91,1
    - Dst: into
      Src: /src/opendal/core/services/redb/src/backend.rs:91,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - path
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 93
      start: 90
    functionDepth: 29
    functionLinenumber: 90
    functionLinenumberEnd: 93
    functionName: RedbBuilder::root
    functionSourceFile: /src/opendal/core/services/redb/src/backend.rs
    functionUses: 0
    functionsReached:
    - into
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn root(mut self, path: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: ok_or_else
      Src: /src/opendal/core/services/redb/src/backend.rs:100,1
    - Dst: Error::new
      Src: /src/opendal/core/services/redb/src/backend.rs:101,1
    - Dst: Self::with_context
      Src: /src/opendal/core/services/redb/src/backend.rs:101,1
    - Dst: ok_or_else
      Src: /src/opendal/core/services/redb/src/backend.rs:108,1
    - Dst: Error::new
      Src: /src/opendal/core/services/redb/src/backend.rs:109,1
    - Dst: Self::with_context
      Src: /src/opendal/core/services/redb/src/backend.rs:109,1
    - Dst: redb::Database::create
      Src: /src/opendal/core/services/redb/src/backend.rs:113,1
    - Dst: Result::map_err
      Src: /src/opendal/core/services/redb/src/backend.rs:113,1
    - Dst: into
      Src: /src/opendal/core/services/redb/src/backend.rs:113,1
    - Dst: Some
      Src: /src/opendal/core/services/redb/src/backend.rs:117,1
    - Dst: create_table
      Src: /src/opendal/core/services/redb/src/backend.rs:120,1
    - Dst: normalize_root
      Src: /src/opendal/core/services/redb/src/backend.rs:122,1
    - Dst: unwrap_or_default
      Src: /src/opendal/core/services/redb/src/backend.rs:122,1
    - Dst: Ok
      Src: /src/opendal/core/services/redb/src/backend.rs:124,1
    - Dst: RedbBackend::new
      Src: /src/opendal/core/services/redb/src/backend.rs:124,1
    - Dst: Self::with_normalized_root
      Src: /src/opendal/core/services/redb/src/backend.rs:124,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 46
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 130
      start: 99
    functionDepth: 36
    functionLinenumber: 99
    functionLinenumberEnd: 130
    functionName: RedbBuilder::build
    functionSourceFile: /src/opendal/core/services/redb/src/backend.rs
    functionUses: 0
    functionsReached:
    - Result::map_err
    - Ok
    - Self::with_normalized_root
    - redb::Database::create
    - into
    - normalize_root
    - Error::new
    - Some
    - RedbBackend::new
    - create_table
    - Self::with_context
    - unwrap_or_default
    - ok_or_else
    linkageType: ''
    returnType: Result
    signature: fn build(self) -> Result<impl Service>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: ServiceInfo::new
      Src: /src/opendal/core/services/redb/src/backend.rs:144,1
    - Dst: Default::default
      Src: /src/opendal/core/services/redb/src/backend.rs:151,1
    - Dst: Arc::new
      Src: /src/opendal/core/services/redb/src/backend.rs:155,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/redb/src/backend.rs:156,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 1
    argNames:
    - core
    argTypes:
    - RedbCore
    constantsTouched: []
    func_position:
      end: 160
      start: 143
    functionDepth: 33
    functionLinenumber: 143
    functionLinenumberEnd: 160
    functionName: RedbBackend::new
    functionSourceFile: /src/opendal/core/services/redb/src/backend.rs
    functionUses: 1
    functionsReached:
    - Arc::new
    - ServiceInfo::new
    - '&str::to_string'
    - Default::default
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(core: RedbCore) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: with_root
      Src: /src/opendal/core/services/redb/src/backend.rs:163,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 1
    argNames:
    - root
    argTypes:
    - String
    constantsTouched: []
    func_position:
      end: 166
      start: 162
    functionDepth: 33
    functionLinenumber: 162
    functionLinenumberEnd: 166
    functionName: RedbBackend::with_normalized_root
    functionSourceFile: /src/opendal/core/services/redb/src/backend.rs
    functionUses: 0
    functionsReached:
    - with_root
    linkageType: ''
    returnType: Self
    signature: 'fn with_normalized_root(mut self, root: String) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: clone
      Src: /src/opendal/core/services/redb/src/backend.rs:177,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 178
      start: 176
    functionDepth: 2
    functionLinenumber: 176
    functionLinenumberEnd: 178
    functionName: RedbBackend::info
    functionSourceFile: /src/opendal/core/services/redb/src/backend.rs
    functionUses: 0
    functionsReached:
    - clone
    linkageType: ''
    returnType: ServiceInfo
    signature: fn info(&self) -> ServiceInfo
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 182
      start: 180
    functionDepth: 0
    functionLinenumber: 180
    functionLinenumberEnd: 182
    functionName: RedbBackend::capability
    functionSourceFile: /src/opendal/core/services/redb/src/backend.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Capability
    signature: fn capability(&self) -> Capability
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/core/services/redb/src/backend.rs:190,1
    - Dst: Error::new
      Src: /src/opendal/core/services/redb/src/backend.rs:190,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - _ctx
    - _path
    - _args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpCreateDir
    constantsTouched: []
    func_position:
      end: 194
      start: 184
    functionDepth: 36
    functionLinenumber: 184
    functionLinenumberEnd: 194
    functionName: RedbBackend::create_dir
    functionSourceFile: /src/opendal/core/services/redb/src/backend.rs
    functionUses: 0
    functionsReached:
    - Error::new
    - Err
    linkageType: ''
    returnType: Result
    signature: 'async fn create_dir(&self,_ctx: &OperationContext,_path: &str,_args:
      OpCreateDir,) -> Result<RpCreateDir>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/redb/src/backend.rs:197,1
    - Dst: build_abs_path
      Src: /src/opendal/core/services/redb/src/backend.rs:199,1
    - Dst: Ok
      Src: /src/opendal/core/services/redb/src/backend.rs:200,1
    - Dst: RpStat::new
      Src: /src/opendal/core/services/redb/src/backend.rs:200,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/redb/src/backend.rs:200,1
    - Dst: get
      Src: /src/opendal/core/services/redb/src/backend.rs:202,1
    - Dst: Ok
      Src: /src/opendal/core/services/redb/src/backend.rs:204,1
    - Dst: RpStat::new
      Src: /src/opendal/core/services/redb/src/backend.rs:204,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/redb/src/backend.rs:205,1
    - Dst: Self::with_content_length
      Src: /src/opendal/core/services/redb/src/backend.rs:205,1
    - Dst: Result::len
      Src: /src/opendal/core/services/redb/src/backend.rs:205,1
    - Dst: Err
      Src: /src/opendal/core/services/redb/src/backend.rs:207,1
    - Dst: Error::new
      Src: /src/opendal/core/services/redb/src/backend.rs:207,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 29
    argCount: 3
    argNames:
    - _ctx
    - path
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpStat
    constantsTouched: []
    func_position:
      end: 210
      start: 196
    functionDepth: 36
    functionLinenumber: 196
    functionLinenumberEnd: 210
    functionName: RedbBackend::stat
    functionSourceFile: /src/opendal/core/services/redb/src/backend.rs
    functionUses: 0
    functionsReached:
    - Metadata::new
    - get
    - Ok
    - Self::with_content_length
    - RpStat::new
    - build_abs_path
    - Err
    - Error::new
    - Result::len
    linkageType: ''
    returnType: Result
    signature: 'async fn stat(&self, _ctx: &OperationContext, path: &str, _: OpStat)
      -> Result<RpStat>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/core/services/redb/src/backend.rs:213,1
    - Dst: oio::StreamReader::new
      Src: /src/opendal/core/services/redb/src/backend.rs:213,1
    - Dst: RedbReader::new
      Src: /src/opendal/core/services/redb/src/backend.rs:213,1
    - Dst: RedbBackend::clone
      Src: /src/opendal/core/services/redb/src/backend.rs:214,1
    - Dst: Ok
      Src: /src/opendal/core/services/redb/src/backend.rs:220,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - _ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpRead
    constantsTouched: []
    func_position:
      end: 221
      start: 211
    functionDepth: 3
    functionLinenumber: 211
    functionLinenumberEnd: 221
    functionName: RedbBackend::read
    functionSourceFile: /src/opendal/core/services/redb/src/backend.rs
    functionUses: 0
    functionsReached:
    - oio::StreamReader::new
    - RedbBackend::clone
    - RedbReader::new
    - Ok
    linkageType: ''
    returnType: Result
    signature: 'fn read(&self, _ctx: &OperationContext, path: &str, args: OpRead)
      -> Result<Self::Reader>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/redb/src/backend.rs:225,1
    - Dst: Ok
      Src: /src/opendal/core/services/redb/src/backend.rs:226,1
    - Dst: RedbWriter::new
      Src: /src/opendal/core/services/redb/src/backend.rs:226,1
    - Dst: clone
      Src: /src/opendal/core/services/redb/src/backend.rs:226,1
    - Dst: Ok
      Src: /src/opendal/core/services/redb/src/backend.rs:229,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 3
    argNames:
    - _ctx
    - path
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpWrite
    constantsTouched: []
    func_position:
      end: 230
      start: 223
    functionDepth: 5
    functionLinenumber: 223
    functionLinenumberEnd: 230
    functionName: RedbBackend::write
    functionSourceFile: /src/opendal/core/services/redb/src/backend.rs
    functionUses: 0
    functionsReached:
    - RedbWriter::new
    - Ok
    - clone
    - build_abs_path
    linkageType: ''
    returnType: Result
    signature: 'fn write(&self, _ctx: &OperationContext, path: &str, _: OpWrite) ->
      Result<Self::Writer>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/core/services/redb/src/backend.rs:234,1
    - Dst: oio::OneShotDeleter::new
      Src: /src/opendal/core/services/redb/src/backend.rs:234,1
    - Dst: RedbDeleter::new
      Src: /src/opendal/core/services/redb/src/backend.rs:234,1
    - Dst: clone
      Src: /src/opendal/core/services/redb/src/backend.rs:235,1
    - Dst: clone
      Src: /src/opendal/core/services/redb/src/backend.rs:236,1
    - Dst: Ok
      Src: /src/opendal/core/services/redb/src/backend.rs:240,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 1
    argNames:
    - _ctx
    argTypes:
    - '&OperationContext'
    constantsTouched: []
    func_position:
      end: 241
      start: 232
    functionDepth: 2
    functionLinenumber: 232
    functionLinenumberEnd: 241
    functionName: RedbBackend::delete
    functionSourceFile: /src/opendal/core/services/redb/src/backend.rs
    functionUses: 0
    functionsReached:
    - oio::OneShotDeleter::new
    - RedbDeleter::new
    - clone
    - Ok
    linkageType: ''
    returnType: Result
    signature: 'fn delete(&self, _ctx: &OperationContext) -> Result<Self::Deleter>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/core/services/redb/src/backend.rs:244,1
    - Dst: Error::new
      Src: /src/opendal/core/services/redb/src/backend.rs:244,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - _ctx
    - _path
    - _args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpList
    constantsTouched: []
    func_position:
      end: 248
      start: 243
    functionDepth: 36
    functionLinenumber: 243
    functionLinenumberEnd: 248
    functionName: RedbBackend::list
    functionSourceFile: /src/opendal/core/services/redb/src/backend.rs
    functionUses: 0
    functionsReached:
    - Error::new
    - Err
    linkageType: ''
    returnType: Result
    signature: 'fn list(&self, _ctx: &OperationContext, _path: &str, _args: OpList)
      -> Result<Self::Lister>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/core/services/redb/src/backend.rs:258,1
    - Dst: Error::new
      Src: /src/opendal/core/services/redb/src/backend.rs:258,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 5
    argNames:
    - _ctx
    - _from
    - _to
    - _args
    - _opts
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    - OpCopy
    - OpCopier
    constantsTouched: []
    func_position:
      end: 262
      start: 250
    functionDepth: 36
    functionLinenumber: 250
    functionLinenumberEnd: 262
    functionName: RedbBackend::copy
    functionSourceFile: /src/opendal/core/services/redb/src/backend.rs
    functionUses: 0
    functionsReached:
    - Error::new
    - Err
    linkageType: ''
    returnType: Result
    signature: 'fn copy(&self,_ctx: &OperationContext,_from: &str,_to: &str,_args:
      OpCopy,_opts: OpCopier,) -> Result<Self::Copier>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/core/services/redb/src/backend.rs:271,1
    - Dst: Error::new
      Src: /src/opendal/core/services/redb/src/backend.rs:271,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - _ctx
    - _from
    - _to
    - _args
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    - OpRename
    constantsTouched: []
    func_position:
      end: 275
      start: 264
    functionDepth: 36
    functionLinenumber: 264
    functionLinenumberEnd: 275
    functionName: RedbBackend::rename
    functionSourceFile: /src/opendal/core/services/redb/src/backend.rs
    functionUses: 0
    functionsReached:
    - Error::new
    - Err
    linkageType: ''
    returnType: Result
    signature: 'async fn rename(&self,_ctx: &OperationContext,_from: &str,_to: &str,_args:
      OpRename,) -> Result<RpRename>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/core/services/redb/src/backend.rs:283,1
    - Dst: Error::new
      Src: /src/opendal/core/services/redb/src/backend.rs:283,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - _ctx
    - _path
    - _args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpPresign
    constantsTouched: []
    func_position:
      end: 287
      start: 277
    functionDepth: 36
    functionLinenumber: 277
    functionLinenumberEnd: 287
    functionName: RedbBackend::presign
    functionSourceFile: /src/opendal/core/services/redb/src/backend.rs
    functionUses: 0
    functionsReached:
    - Error::new
    - Err
    linkageType: ''
    returnType: Result
    signature: 'async fn presign(&self,_ctx: &OperationContext,_path: &str,_args:
      OpPresign,) -> Result<RpPresign>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::debug_struct
      Src: /src/opendal/core/services/tos/src/config.rs:93,1
    - Dst: field
      Src: /src/opendal/core/services/tos/src/config.rs:93,1
    - Dst: field
      Src: /src/opendal/core/services/tos/src/config.rs:93,1
    - Dst: field
      Src: /src/opendal/core/services/tos/src/config.rs:93,1
    - Dst: field
      Src: /src/opendal/core/services/tos/src/config.rs:93,1
    - Dst: finish_non_exhaustive
      Src: /src/opendal/core/services/tos/src/config.rs:93,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 20
    argCount: 1
    argNames:
    - f
    argTypes:
    - '&mut std::fmt::Formatter<''_>'
    constantsTouched: []
    func_position:
      end: 99
      start: 92
    functionDepth: 5
    functionLinenumber: 92
    functionLinenumberEnd: 99
    functionName: TosConfig::fmt
    functionSourceFile: /src/opendal/core/services/tos/src/config.rs
    functionUses: 0
    functionsReached:
    - field
    - Result::debug_struct
    - finish_non_exhaustive
    linkageType: ''
    returnType: std::fmt::Result
    signature: 'fn fmt(&self, f: &mut std::fmt::Formatter<''_>) -> std::fmt::Result'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::options
      Src: /src/opendal/core/services/tos/src/config.rs:106,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/tos/src/config.rs:106,1
    - Dst: Result::name
      Src: /src/opendal/core/services/tos/src/config.rs:108,1
    - Dst: Result::insert
      Src: /src/opendal/core/services/tos/src/config.rs:109,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/tos/src/config.rs:109,1
    - Dst: Result::to_string
      Src: /src/opendal/core/services/tos/src/config.rs:109,1
    - Dst: Result::root
      Src: /src/opendal/core/services/tos/src/config.rs:112,1
    - Dst: Result::insert
      Src: /src/opendal/core/services/tos/src/config.rs:113,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/tos/src/config.rs:113,1
    - Dst: Result::to_string
      Src: /src/opendal/core/services/tos/src/config.rs:113,1
    - Dst: Self::from_iter
      Src: /src/opendal/core/services/tos/src/config.rs:116,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 27
    argCount: 1
    argNames:
    - uri
    argTypes:
    - '&OperatorUri'
    constantsTouched: []
    func_position:
      end: 117
      start: 105
    functionDepth: 35
    functionLinenumber: 105
    functionLinenumberEnd: 117
    functionName: TosConfig::from_uri
    functionSourceFile: /src/opendal/core/services/tos/src/config.rs
    functionUses: 1
    functionsReached:
    - Result::clone
    - Self::from_iter
    - Result::to_string
    - Result::insert
    - Result::name
    - '&str::to_string'
    - Result::root
    - Result::options
    linkageType: ''
    returnType: Result
    signature: 'fn from_uri(uri: &OperatorUri) -> Result<Self>'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 121
      start: 119
    functionDepth: 0
    functionLinenumber: 119
    functionLinenumberEnd: 121
    functionName: TosConfig::into_builder
    functionSourceFile: /src/opendal/core/services/tos/src/config.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Self::Builder
    signature: fn into_builder(self) -> Self::Builder
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: serde_json::from_str
      Src: /src/opendal/core/services/tos/src/config.rs:142,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/services/tos/src/config.rs:142,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 151
      start: 133
    functionDepth: 34
    functionLinenumber: 133
    functionLinenumberEnd: 151
    functionName: tests::test_tos_config_original_field_names
    functionSourceFile: /src/opendal/core/services/tos/src/config.rs
    functionUses: 0
    functionsReached:
    - Result::unwrap
    - serde_json::from_str
    linkageType: ''
    returnType: void
    signature: fn test_tos_config_original_field_names()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: serde_json::from_str
      Src: /src/opendal/core/services/tos/src/config.rs:161,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/services/tos/src/config.rs:161,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 165
      start: 154
    functionDepth: 34
    functionLinenumber: 154
    functionLinenumberEnd: 165
    functionName: tests::test_tos_config_tos_prefixed_aliases
    functionSourceFile: /src/opendal/core/services/tos/src/config.rs
    functionUses: 0
    functionsReached:
    - Result::unwrap
    - serde_json::from_str
    linkageType: ''
    returnType: void
    signature: fn test_tos_config_tos_prefixed_aliases()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: serde_json::from_str
      Src: /src/opendal/core/services/tos/src/config.rs:175,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/services/tos/src/config.rs:175,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 179
      start: 168
    functionDepth: 34
    functionLinenumber: 168
    functionLinenumberEnd: 179
    functionName: tests::test_tos_config_volcengine_prefixed_aliases
    functionSourceFile: /src/opendal/core/services/tos/src/config.rs
    functionUses: 0
    functionsReached:
    - Result::unwrap
    - serde_json::from_str
    linkageType: ''
    returnType: void
    signature: fn test_tos_config_volcengine_prefixed_aliases()
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - core
    - ctx
    argTypes:
    - Arc<TosCore>
    - OperationContext
    constantsTouched: []
    func_position:
      end: 37
      start: 35
    functionDepth: 0
    functionLinenumber: 35
    functionLinenumberEnd: 37
    functionName: TosDeleter::new
    functionSourceFile: /src/opendal/core/services/tos/src/deleter.rs
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(core: Arc<TosCore>, ctx: OperationContext) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/core/services/tos/src/deleter.rs:43,1
    - Dst: tos_delete_object
      Src: /src/opendal/core/services/tos/src/deleter.rs:46,1
    - Dst: status
      Src: /src/opendal/core/services/tos/src/deleter.rs:48,1
    - Dst: Ok
      Src: /src/opendal/core/services/tos/src/deleter.rs:51,1
    - Dst: Ok
      Src: /src/opendal/core/services/tos/src/deleter.rs:52,1
    - Dst: Err
      Src: /src/opendal/core/services/tos/src/deleter.rs:53,1
    - Dst: crate::core::parse_error
      Src: /src/opendal/core/services/tos/src/deleter.rs:53,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 30
    argCount: 2
    argNames:
    - path
    - args
    argTypes:
    - String
    - OpDelete
    constantsTouched: []
    func_position:
      end: 55
      start: 41
    functionDepth: 33
    functionLinenumber: 41
    functionLinenumberEnd: 55
    functionName: TosDeleter::delete_once
    functionSourceFile: /src/opendal/core/services/tos/src/deleter.rs
    functionUses: 0
    functionsReached:
    - status
    - Ok
    - Err
    - crate::core::parse_error
    - tos_delete_object
    linkageType: ''
    returnType: Result
    signature: 'async fn delete_once(&self, path: String, args: OpDelete) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: tos_delete_objects
      Src: /src/opendal/core/services/tos/src/deleter.rs:58,1
    - Dst: status
      Src: /src/opendal/core/services/tos/src/deleter.rs:60,1
    - Dst: Err
      Src: /src/opendal/core/services/tos/src/deleter.rs:62,1
    - Dst: crate::core::parse_error
      Src: /src/opendal/core/services/tos/src/deleter.rs:62,1
    - Dst: into_body
      Src: /src/opendal/core/services/tos/src/deleter.rs:65,1
    - Dst: serde_json::from_reader
      Src: /src/opendal/core/services/tos/src/deleter.rs:68,1
    - Dst: Result::reader
      Src: /src/opendal/core/services/tos/src/deleter.rs:68,1
    - Dst: map_err
      Src: /src/opendal/core/services/tos/src/deleter.rs:68,1
    - Dst: Vec::with_capacity
      Src: /src/opendal/core/services/tos/src/deleter.rs:73,1
    - Dst: Result::len
      Src: /src/opendal/core/services/tos/src/deleter.rs:73,1
    - Dst: usize::saturating_sub
      Src: /src/opendal/core/services/tos/src/deleter.rs:73,1
    - Dst: len
      Src: /src/opendal/core/services/tos/src/deleter.rs:73,1
    - Dst: Vec::with_capacity
      Src: /src/opendal/core/services/tos/src/deleter.rs:74,1
    - Dst: len
      Src: /src/opendal/core/services/tos/src/deleter.rs:74,1
    - Dst: build_abs_path
      Src: /src/opendal/core/services/tos/src/deleter.rs:77,1
    - Dst: iter
      Src: /src/opendal/core/services/tos/src/deleter.rs:78,1
    - Dst: position
      Src: /src/opendal/core/services/tos/src/deleter.rs:78,1
    - Dst: as_deref
      Src: /src/opendal/core/services/tos/src/deleter.rs:80,1
    - Dst: version
      Src: /src/opendal/core/services/tos/src/deleter.rs:80,1
    - Dst: swap_remove
      Src: /src/opendal/core/services/tos/src/deleter.rs:82,1
    - Dst: push
      Src: /src/opendal/core/services/tos/src/deleter.rs:83,1
    - Dst: parse_delete_objects_result_error
      Src: /src/opendal/core/services/tos/src/deleter.rs:85,1
    - Dst: Result::iter
      Src: /src/opendal/core/services/tos/src/deleter.rs:86,1
    - Dst: position
      Src: /src/opendal/core/services/tos/src/deleter.rs:86,1
    - Dst: version
      Src: /src/opendal/core/services/tos/src/deleter.rs:88,1
    - Dst: Result::is_none
      Src: /src/opendal/core/services/tos/src/deleter.rs:88,1
    - Dst: as_deref
      Src: /src/opendal/core/services/tos/src/deleter.rs:88,1
    - Dst: version
      Src: /src/opendal/core/services/tos/src/deleter.rs:88,1
    - Dst: Result::swap_remove
      Src: /src/opendal/core/services/tos/src/deleter.rs:90,1
    - Dst: version
      Src: /src/opendal/core/services/tos/src/deleter.rs:91,1
    - Dst: Result::is_some
      Src: /src/opendal/core/services/tos/src/deleter.rs:91,1
    - Dst: with_version
      Src: /src/opendal/core/services/tos/src/deleter.rs:93,1
    - Dst: push
      Src: /src/opendal/core/services/tos/src/deleter.rs:100,1
    - Dst: push
      Src: /src/opendal/core/services/tos/src/deleter.rs:102,1
    - Dst: Ok
      Src: /src/opendal/core/services/tos/src/deleter.rs:106,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 114
    argCount: 1
    argNames:
    - batch
    argTypes:
    - Vec<(String, OpDelete)>
    constantsTouched: []
    func_position:
      end: 107
      start: 57
    functionDepth: 33
    functionLinenumber: 57
    functionLinenumberEnd: 107
    functionName: TosDeleter::delete_batch
    functionSourceFile: /src/opendal/core/services/tos/src/deleter.rs
    functionUses: 0
    functionsReached:
    - status
    - Vec::with_capacity
    - push
    - as_deref
    - serde_json::from_reader
    - position
    - Result::len
    - Result::reader
    - swap_remove
    - map_err
    - tos_delete_objects
    - iter
    - Ok
    - Result::iter
    - len
    - Result::is_some
    - Result::is_none
    - into_body
    - build_abs_path
    - Result::swap_remove
    - with_version
    - Err
    - usize::saturating_sub
    - parse_delete_objects_result_error
    - crate::core::parse_error
    - version
    linkageType: ''
    returnType: Result
    signature: 'async fn delete_batch(&self, batch: Vec<(String, OpDelete)>) -> Result<BatchDeleteResult>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: OpStat::recursive
      Src: /src/opendal/core/services/tos/src/lister.rs:45,1
    - Dst: OpStat::start_after
      Src: /src/opendal/core/services/tos/src/lister.rs:46,1
    - Dst: Result::map
      Src: /src/opendal/core/services/tos/src/lister.rs:46,1
    - Dst: to_string
      Src: /src/opendal/core/services/tos/src/lister.rs:52,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 4
    argNames:
    - core
    - ctx
    - path
    - args
    argTypes:
    - Arc<TosCore>
    - OperationContext
    - '&str'
    - OpList
    constantsTouched: []
    func_position:
      end: 58
      start: 44
    functionDepth: 36
    functionLinenumber: 44
    functionLinenumberEnd: 58
    functionName: TosLister::new
    functionSourceFile: /src/opendal/core/services/tos/src/lister.rs
    functionUses: 1
    functionsReached:
    - OpStat::start_after
    - Result::map
    - to_string
    - OpStat::recursive
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(core: Arc<TosCore>, ctx: OperationContext, path: &str,
      args: OpList) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: tos_list_objects_v2
      Src: /src/opendal/core/services/tos/src/lister.rs:63,1
    - Dst: limit
      Src: /src/opendal/core/services/tos/src/lister.rs:70,1
    - Dst: is_empty
      Src: /src/opendal/core/services/tos/src/lister.rs:71,1
    - Dst: clone
      Src: /src/opendal/core/services/tos/src/lister.rs:72,1
    - Dst: status
      Src: /src/opendal/core/services/tos/src/lister.rs:79,1
    - Dst: Err
      Src: /src/opendal/core/services/tos/src/lister.rs:80,1
    - Dst: core::parse_error
      Src: /src/opendal/core/services/tos/src/lister.rs:80,1
    - Dst: into_body
      Src: /src/opendal/core/services/tos/src/lister.rs:83,1
    - Dst: serde_json::from_reader
      Src: /src/opendal/core/services/tos/src/lister.rs:85,1
    - Dst: Result::reader
      Src: /src/opendal/core/services/tos/src/lister.rs:85,1
    - Dst: map_err
      Src: /src/opendal/core/services/tos/src/lister.rs:85,1
    - Dst: clone
      Src: /src/opendal/core/services/tos/src/lister.rs:88,1
    - Dst: unwrap_or_default
      Src: /src/opendal/core/services/tos/src/lister.rs:88,1
    - Dst: oio::Entry::new
      Src: /src/opendal/core/services/tos/src/lister.rs:91,1
    - Dst: build_rel_path
      Src: /src/opendal/core/services/tos/src/lister.rs:92,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/tos/src/lister.rs:93,1
    - Dst: push_back
      Src: /src/opendal/core/services/tos/src/lister.rs:96,1
    - Dst: build_rel_path
      Src: /src/opendal/core/services/tos/src/lister.rs:100,1
    - Dst: is_empty
      Src: /src/opendal/core/services/tos/src/lister.rs:101,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/tos/src/lister.rs:102,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/tos/src/lister.rs:105,1
    - Dst: EntryMode::from_path
      Src: /src/opendal/core/services/tos/src/lister.rs:105,1
    - Dst: Result::set_is_current
      Src: /src/opendal/core/services/tos/src/lister.rs:106,1
    - Dst: Result::set_etag
      Src: /src/opendal/core/services/tos/src/lister.rs:108,1
    - Dst: Result::set_content_md5
      Src: /src/opendal/core/services/tos/src/lister.rs:109,1
    - Dst: Option::trim_matches
      Src: /src/opendal/core/services/tos/src/lister.rs:109,1
    - Dst: Result::set_content_length
      Src: /src/opendal/core/services/tos/src/lister.rs:111,1
    - Dst: Result::set_last_modified
      Src: /src/opendal/core/services/tos/src/lister.rs:112,1
    - Dst: last_modified.parse::<Timestamp>
      Src: /src/opendal/core/services/tos/src/lister.rs:112,1
    - Dst: oio::Entry::with
      Src: /src/opendal/core/services/tos/src/lister.rs:114,1
    - Dst: push_back
      Src: /src/opendal/core/services/tos/src/lister.rs:115,1
    - Dst: Ok
      Src: /src/opendal/core/services/tos/src/lister.rs:118,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 121
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - '&mut oio::PageContext'
    constantsTouched: []
    func_position:
      end: 119
      start: 62
    functionDepth: 37
    functionLinenumber: 62
    functionLinenumberEnd: 119
    functionName: TosLister::next_page
    functionSourceFile: /src/opendal/core/services/tos/src/lister.rs
    functionUses: 0
    functionsReached:
    - status
    - serde_json::from_reader
    - clone
    - build_rel_path
    - Result::reader
    - tos_list_objects_v2
    - map_err
    - Ok
    - oio::Entry::with
    - '&str::to_string'
    - last_modified.parse::<Timestamp>
    - Result::set_etag
    - unwrap_or_default
    - Result::set_content_md5
    - Metadata::new
    - Result::set_is_current
    - limit
    - into_body
    - is_empty
    - oio::Entry::new
    - push_back
    - Option::trim_matches
    - EntryMode::from_path
    - Result::set_last_modified
    - Err
    - Result::set_content_length
    - core::parse_error
    linkageType: ''
    returnType: Result
    signature: 'async fn next_page(&self, ctx: &mut oio::PageContext) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: OpStat::recursive
      Src: /src/opendal/core/services/tos/src/lister.rs:135,1
    - Dst: OpStat::start_after
      Src: /src/opendal/core/services/tos/src/lister.rs:136,1
    - Dst: Result::map
      Src: /src/opendal/core/services/tos/src/lister.rs:136,1
    - Dst: build_abs_path
      Src: /src/opendal/core/services/tos/src/lister.rs:138,1
    - Dst: to_string
      Src: /src/opendal/core/services/tos/src/lister.rs:143,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 14
    argCount: 4
    argNames:
    - core
    - ctx
    - path
    - args
    argTypes:
    - Arc<TosCore>
    - OperationContext
    - '&str'
    - OpList
    constantsTouched: []
    func_position:
      end: 148
      start: 134
    functionDepth: 36
    functionLinenumber: 134
    functionLinenumberEnd: 148
    functionName: TosObjectVersionsLister::new
    functionSourceFile: /src/opendal/core/services/tos/src/lister.rs
    functionUses: 1
    functionsReached:
    - to_string
    - OpStat::start_after
    - build_abs_path
    - Result::map
    - OpStat::recursive
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(core: Arc<TosCore>, ctx: OperationContext, path: &str,
      args: OpList) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: rsplit_once
      Src: /src/opendal/core/services/tos/src/lister.rs:153,1
    - Dst: Result::as_str
      Src: /src/opendal/core/services/tos/src/lister.rs:157,1
    - Dst: tos_list_object_versions
      Src: /src/opendal/core/services/tos/src/lister.rs:162,1
    - Dst: limit
      Src: /src/opendal/core/services/tos/src/lister.rs:168,1
    - Dst: status
      Src: /src/opendal/core/services/tos/src/lister.rs:174,1
    - Dst: Err
      Src: /src/opendal/core/services/tos/src/lister.rs:175,1
    - Dst: core::parse_error
      Src: /src/opendal/core/services/tos/src/lister.rs:175,1
    - Dst: into_body
      Src: /src/opendal/core/services/tos/src/lister.rs:178,1
    - Dst: serde_json::from_reader
      Src: /src/opendal/core/services/tos/src/lister.rs:180,1
    - Dst: Result::reader
      Src: /src/opendal/core/services/tos/src/lister.rs:180,1
    - Dst: map_err
      Src: /src/opendal/core/services/tos/src/lister.rs:180,1
    - Dst: oio::Entry::new
      Src: /src/opendal/core/services/tos/src/lister.rs:194,1
    - Dst: build_rel_path
      Src: /src/opendal/core/services/tos/src/lister.rs:195,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/tos/src/lister.rs:196,1
    - Dst: push_back
      Src: /src/opendal/core/services/tos/src/lister.rs:199,1
    - Dst: versions
      Src: /src/opendal/core/services/tos/src/lister.rs:203,1
    - Dst: build_rel_path
      Src: /src/opendal/core/services/tos/src/lister.rs:207,1
    - Dst: is_empty
      Src: /src/opendal/core/services/tos/src/lister.rs:208,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/tos/src/lister.rs:209,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/tos/src/lister.rs:212,1
    - Dst: EntryMode::from_path
      Src: /src/opendal/core/services/tos/src/lister.rs:212,1
    - Dst: Result::set_version
      Src: /src/opendal/core/services/tos/src/lister.rs:213,1
    - Dst: Result::set_is_current
      Src: /src/opendal/core/services/tos/src/lister.rs:214,1
    - Dst: Result::set_content_length
      Src: /src/opendal/core/services/tos/src/lister.rs:215,1
    - Dst: Result::set_last_modified
      Src: /src/opendal/core/services/tos/src/lister.rs:216,1
    - Dst: last_modified.parse::<Timestamp>
      Src: /src/opendal/core/services/tos/src/lister.rs:216,1
    - Dst: Result::set_etag
      Src: /src/opendal/core/services/tos/src/lister.rs:219,1
    - Dst: Result::set_content_md5
      Src: /src/opendal/core/services/tos/src/lister.rs:220,1
    - Dst: Option::trim_matches
      Src: /src/opendal/core/services/tos/src/lister.rs:220,1
    - Dst: oio::Entry::with
      Src: /src/opendal/core/services/tos/src/lister.rs:223,1
    - Dst: push_back
      Src: /src/opendal/core/services/tos/src/lister.rs:224,1
    - Dst: deleted
      Src: /src/opendal/core/services/tos/src/lister.rs:227,1
    - Dst: build_rel_path
      Src: /src/opendal/core/services/tos/src/lister.rs:229,1
    - Dst: is_empty
      Src: /src/opendal/core/services/tos/src/lister.rs:230,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/tos/src/lister.rs:231,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/tos/src/lister.rs:234,1
    - Dst: Result::set_version
      Src: /src/opendal/core/services/tos/src/lister.rs:235,1
    - Dst: Result::set_is_deleted
      Src: /src/opendal/core/services/tos/src/lister.rs:236,1
    - Dst: Result::set_is_current
      Src: /src/opendal/core/services/tos/src/lister.rs:237,1
    - Dst: Result::set_last_modified
      Src: /src/opendal/core/services/tos/src/lister.rs:238,1
    - Dst: last_modified.parse::<Timestamp>
      Src: /src/opendal/core/services/tos/src/lister.rs:238,1
    - Dst: oio::Entry::with
      Src: /src/opendal/core/services/tos/src/lister.rs:240,1
    - Dst: push_back
      Src: /src/opendal/core/services/tos/src/lister.rs:241,1
    - Dst: Ok
      Src: /src/opendal/core/services/tos/src/lister.rs:245,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 183
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - '&mut oio::PageContext'
    constantsTouched: []
    func_position:
      end: 246
      start: 152
    functionDepth: 37
    functionLinenumber: 152
    functionLinenumberEnd: 246
    functionName: TosObjectVersionsLister::next_page
    functionSourceFile: /src/opendal/core/services/tos/src/lister.rs
    functionUses: 0
    functionsReached:
    - status
    - serde_json::from_reader
    - build_rel_path
    - Result::reader
    - map_err
    - Ok
    - oio::Entry::with
    - '&str::to_string'
    - last_modified.parse::<Timestamp>
    - Result::as_str
    - Result::set_etag
    - Result::set_content_md5
    - Metadata::new
    - Result::set_is_current
    - deleted
    - limit
    - into_body
    - is_empty
    - rsplit_once
    - Result::set_is_deleted
    - oio::Entry::new
    - versions
    - push_back
    - Option::trim_matches
    - Result::set_version
    - EntryMode::from_path
    - Result::set_last_modified
    - Err
    - Result::set_content_length
    - core::parse_error
    - tos_list_object_versions
    linkageType: ''
    returnType: Result
    signature: 'async fn next_page(&self, ctx: &mut oio::PageContext) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: to_string
      Src: /src/opendal/core/services/tos/src/reader.rs:45,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 4
    argNames:
    - backend
    - ctx
    - path
    - args
    argTypes:
    - TosBackend
    - OperationContext
    - '&str'
    - OpRead
    constantsTouched: []
    func_position:
      end: 48
      start: 36
    functionDepth: 2
    functionLinenumber: 36
    functionLinenumberEnd: 48
    functionName: TosReader::new
    functionSourceFile: /src/opendal/core/services/tos/src/reader.rs
    functionUses: 1
    functionsReached:
    - to_string
    linkageType: ''
    returnType: Self
    signature: 'pub(super) fn new(backend: TosBackend,ctx: OperationContext,path:
      &str,args: OpRead,) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: as_str
      Src: /src/opendal/core/services/tos/src/reader.rs:54,1
    - Dst: clone
      Src: /src/opendal/core/services/tos/src/reader.rs:55,1
    - Dst: tos_get_object
      Src: /src/opendal/core/services/tos/src/reader.rs:56,1
    - Dst: status
      Src: /src/opendal/core/services/tos/src/reader.rs:61,1
    - Dst: RpRead::new
      Src: /src/opendal/core/services/tos/src/reader.rs:64,1
    - Dst: parse_into_metadata
      Src: /src/opendal/core/services/tos/src/reader.rs:64,1
    - Dst: headers
      Src: /src/opendal/core/services/tos/src/reader.rs:64,1
    - Dst: into_body
      Src: /src/opendal/core/services/tos/src/reader.rs:65,1
    - Dst: into_parts
      Src: /src/opendal/core/services/tos/src/reader.rs:68,1
    - Dst: to_buffer
      Src: /src/opendal/core/services/tos/src/reader.rs:69,1
    - Dst: Err
      Src: /src/opendal/core/services/tos/src/reader.rs:70,1
    - Dst: core::parse_error
      Src: /src/opendal/core/services/tos/src/reader.rs:70,1
    - Dst: Response::from_parts
      Src: /src/opendal/core/services/tos/src/reader.rs:70,1
    - Dst: Ok
      Src: /src/opendal/core/services/tos/src/reader.rs:74,1
    - Dst: Box::new
      Src: /src/opendal/core/services/tos/src/reader.rs:74,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 42
    argCount: 1
    argNames:
    - range
    argTypes:
    - BytesRange
    constantsTouched: []
    func_position:
      end: 75
      start: 52
    functionDepth: 37
    functionLinenumber: 52
    functionLinenumberEnd: 75
    functionName: TosReader::open
    functionSourceFile: /src/opendal/core/services/tos/src/reader.rs
    functionUses: 0
    functionsReached:
    - parse_into_metadata
    - to_buffer
    - status
    - Ok
    - Box::new
    - into_body
    - tos_get_object
    - clone
    - Err
    - Response::from_parts
    - as_str
    - headers
    - into_parts
    - core::parse_error
    - RpRead::new
    linkageType: ''
    returnType: Result
    signature: 'async fn open(&self, range: BytesRange) -> Result<(RpRead, Box<dyn
      oio::ReadStreamDyn>)>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: ok_or_else
      Src: /src/opendal/core/services/tos/src/copier.rs:40,1
    - Dst: Error::new
      Src: /src/opendal/core/services/tos/src/copier.rs:41,1
    - Dst: object_store::Result::chunk
      Src: /src/opendal/core/services/tos/src/copier.rs:47,1
    - Dst: ok_or_else
      Src: /src/opendal/core/services/tos/src/copier.rs:49,1
    - Dst: Error::new
      Src: /src/opendal/core/services/tos/src/copier.rs:50,1
    - Dst: Result::clamp
      Src: /src/opendal/core/services/tos/src/copier.rs:55,1
    - Dst: u64::saturating_sub
      Src: /src/opendal/core/services/tos/src/copier.rs:56,1
    - Dst: Ok
      Src: /src/opendal/core/services/tos/src/copier.rs:64,1
    - Dst: oio::MultipartCopier::new
      Src: /src/opendal/core/services/tos/src/copier.rs:64,1
    - Dst: Result::executor
      Src: /src/opendal/core/services/tos/src/copier.rs:65,1
    - Dst: Self::clone
      Src: /src/opendal/core/services/tos/src/copier.rs:65,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/tos/src/copier.rs:68,1
    - Dst: Result::to_string
      Src: /src/opendal/core/services/tos/src/copier.rs:69,1
    - Dst: Result::to_string
      Src: /src/opendal/core/services/tos/src/copier.rs:70,1
    - Dst: object_store::Result::source_content_length_hint
      Src: /src/opendal/core/services/tos/src/copier.rs:73,1
    - Dst: object_store::Result::concurrent
      Src: /src/opendal/core/services/tos/src/copier.rs:76,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 42
    argCount: 6
    argNames:
    - core
    - ctx
    - from
    - to
    - args
    - opts
    argTypes:
    - Arc<TosCore>
    - '&OperationContext'
    - '&str'
    - '&str'
    - OpCopy
    - OpCopier
    constantsTouched: []
    func_position:
      end: 78
      start: 31
    functionDepth: 36
    functionLinenumber: 31
    functionLinenumberEnd: 78
    functionName: new_tos_copier
    functionSourceFile: /src/opendal/core/services/tos/src/copier.rs
    functionUses: 1
    functionsReached:
    - Result::clone
    - Result::to_string
    - Ok
    - u64::saturating_sub
    - object_store::Result::chunk
    - object_store::Result::concurrent
    - Result::executor
    - Error::new
    - object_store::Result::source_content_length_hint
    - Self::clone
    - oio::MultipartCopier::new
    - Result::clamp
    - ok_or_else
    linkageType: ''
    returnType: Result
    signature: 'pub fn new_tos_copier(core: Arc<TosCore>,ctx: &OperationContext,from:
      &str,to: &str,args: OpCopy,opts: OpCopier,) -> Result<TosCopiers>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: tos_head_object
      Src: /src/opendal/core/services/tos/src/copier.rs:90,1
    - Dst: OpStat::default
      Src: /src/opendal/core/services/tos/src/copier.rs:92,1
    - Dst: status
      Src: /src/opendal/core/services/tos/src/copier.rs:95,1
    - Dst: headers
      Src: /src/opendal/core/services/tos/src/copier.rs:97,1
    - Dst: core::tos_parse_into_metadata
      Src: /src/opendal/core/services/tos/src/copier.rs:98,1
    - Dst: Err
      Src: /src/opendal/core/services/tos/src/copier.rs:100,1
    - Dst: core::parse_error
      Src: /src/opendal/core/services/tos/src/copier.rs:100,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 21
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 102
      start: 89
    functionDepth: 40
    functionLinenumber: 89
    functionLinenumberEnd: 102
    functionName: TosCopier::source_metadata
    functionSourceFile: /src/opendal/core/services/tos/src/copier.rs
    functionUses: 0
    functionsReached:
    - status
    - tos_head_object
    - Err
    - core::tos_parse_into_metadata
    - headers
    - core::parse_error
    - OpStat::default
    linkageType: ''
    returnType: Result
    signature: async fn source_metadata(&self) -> Result<Metadata>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: tos_copy_object
      Src: /src/opendal/core/services/tos/src/copier.rs:105,1
    - Dst: status
      Src: /src/opendal/core/services/tos/src/copier.rs:110,1
    - Dst: serde_json::from_reader
      Src: /src/opendal/core/services/tos/src/copier.rs:112,1
    - Dst: into_body
      Src: /src/opendal/core/services/tos/src/copier.rs:112,1
    - Dst: reader
      Src: /src/opendal/core/services/tos/src/copier.rs:112,1
    - Dst: map_err
      Src: /src/opendal/core/services/tos/src/copier.rs:112,1
    - Dst: is_empty
      Src: /src/opendal/core/services/tos/src/copier.rs:114,1
    - Dst: Err
      Src: /src/opendal/core/services/tos/src/copier.rs:115,1
    - Dst: Error::new
      Src: /src/opendal/core/services/tos/src/copier.rs:115,1
    - Dst: Self::set_temporary
      Src: /src/opendal/core/services/tos/src/copier.rs:115,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/tos/src/copier.rs:122,1
    - Dst: EntryMode::from_path
      Src: /src/opendal/core/services/tos/src/copier.rs:122,1
    - Dst: Result::set_etag
      Src: /src/opendal/core/services/tos/src/copier.rs:123,1
    - Dst: trim_matches
      Src: /src/opendal/core/services/tos/src/copier.rs:123,1
    - Dst: Ok
      Src: /src/opendal/core/services/tos/src/copier.rs:124,1
    - Dst: Err
      Src: /src/opendal/core/services/tos/src/copier.rs:126,1
    - Dst: core::parse_error
      Src: /src/opendal/core/services/tos/src/copier.rs:126,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 49
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 128
      start: 104
    functionDepth: 33
    functionLinenumber: 104
    functionLinenumberEnd: 128
    functionName: TosCopier::copy_once
    functionSourceFile: /src/opendal/core/services/tos/src/copier.rs
    functionUses: 0
    functionsReached:
    - map_err
    - Metadata::new
    - reader
    - status
    - tos_copy_object
    - trim_matches
    - Ok
    - serde_json::from_reader
    - into_body
    - EntryMode::from_path
    - is_empty
    - Err
    - Error::new
    - Self::set_temporary
    - core::parse_error
    - Result::set_etag
    linkageType: ''
    returnType: Result
    signature: async fn copy_once(&self) -> Result<Metadata>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: tos_initiate_multipart_copy
      Src: /src/opendal/core/services/tos/src/copier.rs:131,1
    - Dst: status
      Src: /src/opendal/core/services/tos/src/copier.rs:136,1
    - Dst: serde_json::from_reader
      Src: /src/opendal/core/services/tos/src/copier.rs:139,1
    - Dst: into_body
      Src: /src/opendal/core/services/tos/src/copier.rs:139,1
    - Dst: reader
      Src: /src/opendal/core/services/tos/src/copier.rs:139,1
    - Dst: map_err
      Src: /src/opendal/core/services/tos/src/copier.rs:139,1
    - Dst: Ok
      Src: /src/opendal/core/services/tos/src/copier.rs:142,1
    - Dst: Err
      Src: /src/opendal/core/services/tos/src/copier.rs:144,1
    - Dst: core::parse_error
      Src: /src/opendal/core/services/tos/src/copier.rs:144,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 25
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 146
      start: 130
    functionDepth: 37
    functionLinenumber: 130
    functionLinenumberEnd: 146
    functionName: TosCopier::initiate_copy
    functionSourceFile: /src/opendal/core/services/tos/src/copier.rs
    functionUses: 0
    functionsReached:
    - map_err
    - reader
    - status
    - Ok
    - serde_json::from_reader
    - into_body
    - Err
    - core::parse_error
    - tos_initiate_multipart_copy
    linkageType: ''
    returnType: Result
    signature: async fn initiate_copy(&self) -> Result<String>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: (Vec::size
      Src: /src/opendal/core/services/tos/src/copier.rs:154,1
    - Dst: Option::expect
      Src: /src/opendal/core/services/tos/src/copier.rs:154,1
    - Dst: tos_upload_part_copy_request
      Src: /src/opendal/core/services/tos/src/copier.rs:157,1
    - Dst: send
      Src: /src/opendal/core/services/tos/src/copier.rs:166,1
    - Dst: status
      Src: /src/opendal/core/services/tos/src/copier.rs:168,1
    - Dst: serde_json::from_reader
      Src: /src/opendal/core/services/tos/src/copier.rs:171,1
    - Dst: into_body
      Src: /src/opendal/core/services/tos/src/copier.rs:171,1
    - Dst: reader
      Src: /src/opendal/core/services/tos/src/copier.rs:171,1
    - Dst: map_err
      Src: /src/opendal/core/services/tos/src/copier.rs:171,1
    - Dst: is_empty
      Src: /src/opendal/core/services/tos/src/copier.rs:173,1
    - Dst: Err
      Src: /src/opendal/core/services/tos/src/copier.rs:174,1
    - Dst: Error::new
      Src: /src/opendal/core/services/tos/src/copier.rs:174,1
    - Dst: Self::set_temporary
      Src: /src/opendal/core/services/tos/src/copier.rs:174,1
    - Dst: Ok
      Src: /src/opendal/core/services/tos/src/copier.rs:181,1
    - Dst: trim_matches
      Src: /src/opendal/core/services/tos/src/copier.rs:183,1
    - Dst: to_string
      Src: /src/opendal/core/services/tos/src/copier.rs:183,1
    - Dst: Some
      Src: /src/opendal/core/services/tos/src/copier.rs:185,1
    - Dst: Err
      Src: /src/opendal/core/services/tos/src/copier.rs:188,1
    - Dst: core::parse_error
      Src: /src/opendal/core/services/tos/src/copier.rs:188,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 54
    argCount: 3
    argNames:
    - upload_id
    - part_number
    - range
    argTypes:
    - '&str'
    - usize
    - BytesRange
    constantsTouched: []
    func_position:
      end: 190
      start: 148
    functionDepth: 37
    functionLinenumber: 148
    functionLinenumberEnd: 190
    functionName: TosCopier::copy_part
    functionSourceFile: /src/opendal/core/services/tos/src/copier.rs
    functionUses: 0
    functionsReached:
    - map_err
    - to_string
    - Option::expect
    - status
    - reader
    - (Vec::size
    - Ok
    - trim_matches
    - serde_json::from_reader
    - into_body
    - is_empty
    - Err
    - Error::new
    - Self::set_temporary
    - Some
    - core::parse_error
    - tos_upload_part_copy_request
    - send
    linkageType: ''
    returnType: Result
    signature: 'async fn copy_part(&self,upload_id: &str,part_number: usize,range:
      BytesRange,) -> Result<oio::MultipartPart>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: (String, Metadata)::iter
      Src: /src/opendal/core/services/tos/src/copier.rs:197,1
    - Dst: map
      Src: /src/opendal/core/services/tos/src/copier.rs:197,1
    - Dst: clone
      Src: /src/opendal/core/services/tos/src/copier.rs:201,1
    - Dst: Result::collect
      Src: /src/opendal/core/services/tos/src/copier.rs:197,1
    - Dst: tos_complete_multipart_copy
      Src: /src/opendal/core/services/tos/src/copier.rs:205,1
    - Dst: status
      Src: /src/opendal/core/services/tos/src/copier.rs:210,1
    - Dst: serde_json::from_reader
      Src: /src/opendal/core/services/tos/src/copier.rs:213,1
    - Dst: into_body
      Src: /src/opendal/core/services/tos/src/copier.rs:213,1
    - Dst: reader
      Src: /src/opendal/core/services/tos/src/copier.rs:213,1
    - Dst: map_err
      Src: /src/opendal/core/services/tos/src/copier.rs:213,1
    - Dst: is_empty
      Src: /src/opendal/core/services/tos/src/copier.rs:215,1
    - Dst: Err
      Src: /src/opendal/core/services/tos/src/copier.rs:216,1
    - Dst: Error::new
      Src: /src/opendal/core/services/tos/src/copier.rs:216,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/tos/src/copier.rs:219,1
    - Dst: EntryMode::from_path
      Src: /src/opendal/core/services/tos/src/copier.rs:219,1
    - Dst: is_empty
      Src: /src/opendal/core/services/tos/src/copier.rs:220,1
    - Dst: Result::set_etag
      Src: /src/opendal/core/services/tos/src/copier.rs:221,1
    - Dst: trim_matches
      Src: /src/opendal/core/services/tos/src/copier.rs:221,1
    - Dst: is_empty
      Src: /src/opendal/core/services/tos/src/copier.rs:223,1
    - Dst: Result::set_version
      Src: /src/opendal/core/services/tos/src/copier.rs:224,1
    - Dst: Ok
      Src: /src/opendal/core/services/tos/src/copier.rs:227,1
    - Dst: Err
      Src: /src/opendal/core/services/tos/src/copier.rs:229,1
    - Dst: core::parse_error
      Src: /src/opendal/core/services/tos/src/copier.rs:229,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 76
    argCount: 2
    argNames:
    - upload_id
    - parts
    argTypes:
    - '&str'
    - '&[oio::MultipartPart]'
    constantsTouched: []
    func_position:
      end: 231
      start: 192
    functionDepth: 36
    functionLinenumber: 192
    functionLinenumberEnd: 231
    functionName: TosCopier::complete_copy
    functionSourceFile: /src/opendal/core/services/tos/src/copier.rs
    functionUses: 0
    functionsReached:
    - status
    - serde_json::from_reader
    - clone
    - map
    - (String, Metadata)::iter
    - map_err
    - reader
    - Ok
    - Result::set_etag
    - Metadata::new
    - trim_matches
    - tos_complete_multipart_copy
    - into_body
    - is_empty
    - Result::set_version
    - EntryMode::from_path
    - Err
    - Error::new
    - Result::collect
    - core::parse_error
    linkageType: ''
    returnType: Result
    signature: 'async fn complete_copy(&self,upload_id: &str,parts: &[oio::MultipartPart],)
      -> Result<Metadata>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: tos_abort_multipart_copy
      Src: /src/opendal/core/services/tos/src/copier.rs:234,1
    - Dst: status
      Src: /src/opendal/core/services/tos/src/copier.rs:238,1
    - Dst: Ok
      Src: /src/opendal/core/services/tos/src/copier.rs:239,1
    - Dst: Err
      Src: /src/opendal/core/services/tos/src/copier.rs:240,1
    - Dst: core::parse_error
      Src: /src/opendal/core/services/tos/src/copier.rs:240,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 1
    argNames:
    - upload_id
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 242
      start: 233
    functionDepth: 33
    functionLinenumber: 233
    functionLinenumberEnd: 242
    functionName: TosCopier::abort_copy
    functionSourceFile: /src/opendal/core/services/tos/src/copier.rs
    functionUses: 0
    functionsReached:
    - status
    - Ok
    - tos_abort_multipart_copy
    - Err
    - core::parse_error
    linkageType: ''
    returnType: Result
    signature: 'async fn abort_copy(&self, upload_id: &str) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::debug_struct
      Src: /src/opendal/core/services/tos/src/core.rs:84,1
    - Dst: field
      Src: /src/opendal/core/services/tos/src/core.rs:84,1
    - Dst: field
      Src: /src/opendal/core/services/tos/src/core.rs:84,1
    - Dst: field
      Src: /src/opendal/core/services/tos/src/core.rs:84,1
    - Dst: finish_non_exhaustive
      Src: /src/opendal/core/services/tos/src/core.rs:84,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 16
    argCount: 1
    argNames:
    - f
    argTypes:
    - '&mut std::fmt::Formatter<''_>'
    constantsTouched: []
    func_position:
      end: 89
      start: 83
    functionDepth: 5
    functionLinenumber: 83
    functionLinenumberEnd: 89
    functionName: TosCore::fmt
    functionSourceFile: /src/opendal/core/services/tos/src/core.rs
    functionUses: 0
    functionsReached:
    - field
    - Result::debug_struct
    - finish_non_exhaustive
    linkageType: ''
    returnType: std::fmt::Result
    signature: 'fn fmt(&self, f: &mut std::fmt::Formatter<''_>) -> std::fmt::Result'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: clone
      Src: /src/opendal/core/services/tos/src/core.rs:94,1
    - Dst: with_context
      Src: /src/opendal/core/services/tos/src/core.rs:94,1
    - Dst: Context::new
      Src: /src/opendal/core/services/tos/src/core.rs:95,1
    - Dst: Self::with_file_read
      Src: /src/opendal/core/services/tos/src/core.rs:95,1
    - Dst: with_http_send
      Src: /src/opendal/core/services/tos/src/core.rs:95,1
    - Dst: Result::http_transport
      Src: /src/opendal/core/services/tos/src/core.rs:97,1
    - Dst: Self::clone
      Src: /src/opendal/core/services/tos/src/core.rs:97,1
    - Dst: with_env
      Src: /src/opendal/core/services/tos/src/core.rs:95,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 16
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - '&OperationContext'
    constantsTouched: []
    func_position:
      end: 100
      start: 93
    functionDepth: 6
    functionLinenumber: 93
    functionLinenumberEnd: 100
    functionName: TosCore::signer
    functionSourceFile: /src/opendal/core/services/tos/src/core.rs
    functionUses: 2
    functionsReached:
    - with_http_send
    - with_env
    - Context::new
    - clone
    - with_context
    - Self::clone
    - Self::with_file_read
    - Result::http_transport
    linkageType: ''
    returnType: Signer
    signature: 'fn signer(&self, ctx: &OperationContext) -> Signer<Credential>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Request<Buffer>::into_parts
      Src: /src/opendal/core/services/tos/src/core.rs:107,1
    - Dst: TosCore::signer
      Src: /src/opendal/core/services/tos/src/core.rs:110,1
    - Dst: Signer::sign
      Src: /src/opendal/core/services/tos/src/core.rs:110,1
    - Dst: map_err
      Src: /src/opendal/core/services/tos/src/core.rs:110,1
    - Dst: new_request_sign_error
      Src: /src/opendal/core/services/tos/src/core.rs:113,1
    - Dst: Result::into
      Src: /src/opendal/core/services/tos/src/core.rs:113,1
    - Dst: insert
      Src: /src/opendal/core/services/tos/src/core.rs:116,1
    - Dst: HeaderValue::from_str
      Src: /src/opendal/core/services/tos/src/core.rs:118,1
    - Dst: Result::expect
      Src: /src/opendal/core/services/tos/src/core.rs:118,1
    - Dst: Result::http_transport
      Src: /src/opendal/core/services/tos/src/core.rs:122,1
    - Dst: Self::send
      Src: /src/opendal/core/services/tos/src/core.rs:122,1
    - Dst: Request::from_parts
      Src: /src/opendal/core/services/tos/src/core.rs:124,1
    - Dst: Ok
      Src: /src/opendal/core/services/tos/src/core.rs:127,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 36
    argCount: 2
    argNames:
    - ctx
    - req
    argTypes:
    - '&OperationContext'
    - Request<Buffer>
    constantsTouched: []
    func_position:
      end: 128
      start: 102
    functionDepth: 35
    functionLinenumber: 102
    functionLinenumberEnd: 128
    functionName: TosCore::send
    functionSourceFile: /src/opendal/core/services/tos/src/core.rs
    functionUses: 12
    functionsReached:
    - map_err
    - insert
    - Self::send
    - Result::expect
    - Request::from_parts
    - Ok
    - Signer::sign
    - Result::into
    - Request<Buffer>::into_parts
    - HeaderValue::from_str
    - Result::http_transport
    - TosCore::signer
    - new_request_sign_error
    linkageType: ''
    returnType: Result
    signature: 'pub async fn send(&self,ctx: &OperationContext,req: Request<Buffer>,)
      -> Result<Response<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Request<Buffer>::into_parts
      Src: /src/opendal/core/services/tos/src/core.rs:135,1
    - Dst: TosCore::signer
      Src: /src/opendal/core/services/tos/src/core.rs:138,1
    - Dst: Signer::sign
      Src: /src/opendal/core/services/tos/src/core.rs:138,1
    - Dst: map_err
      Src: /src/opendal/core/services/tos/src/core.rs:138,1
    - Dst: new_request_sign_error
      Src: /src/opendal/core/services/tos/src/core.rs:141,1
    - Dst: Result::into
      Src: /src/opendal/core/services/tos/src/core.rs:141,1
    - Dst: remove
      Src: /src/opendal/core/services/tos/src/core.rs:143,1
    - Dst: insert
      Src: /src/opendal/core/services/tos/src/core.rs:146,1
    - Dst: HeaderValue::from_str
      Src: /src/opendal/core/services/tos/src/core.rs:148,1
    - Dst: Result::expect
      Src: /src/opendal/core/services/tos/src/core.rs:148,1
    - Dst: Result::http_transport
      Src: /src/opendal/core/services/tos/src/core.rs:152,1
    - Dst: Self::fetch
      Src: /src/opendal/core/services/tos/src/core.rs:152,1
    - Dst: Request::from_parts
      Src: /src/opendal/core/services/tos/src/core.rs:153,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 38
    argCount: 2
    argNames:
    - ctx
    - req
    argTypes:
    - '&OperationContext'
    - Request<Buffer>
    constantsTouched: []
    func_position:
      end: 155
      start: 130
    functionDepth: 35
    functionLinenumber: 130
    functionLinenumberEnd: 155
    functionName: TosCore::fetch
    functionSourceFile: /src/opendal/core/services/tos/src/core.rs
    functionUses: 1
    functionsReached:
    - map_err
    - insert
    - Request::from_parts
    - Result::expect
    - remove
    - Signer::sign
    - Result::into
    - Request<Buffer>::into_parts
    - HeaderValue::from_str
    - Self::fetch
    - Result::http_transport
    - TosCore::signer
    - new_request_sign_error
    linkageType: ''
    returnType: Result
    signature: 'pub async fn fetch(&self,ctx: &OperationContext,req: Request<Buffer>,)
      -> Result<Response<HttpBody>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: http::request::Builder::header
      Src: /src/opendal/core/services/tos/src/core.rs:164,1
    - Dst: Option::to_string
      Src: /src/opendal/core/services/tos/src/core.rs:164,1
    - Dst: OpStat::content_type
      Src: /src/opendal/core/services/tos/src/core.rs:167,1
    - Dst: http::request::Builder::header
      Src: /src/opendal/core/services/tos/src/core.rs:168,1
    - Dst: OpStat::cache_control
      Src: /src/opendal/core/services/tos/src/core.rs:171,1
    - Dst: http::request::Builder::header
      Src: /src/opendal/core/services/tos/src/core.rs:172,1
    - Dst: OpStat::content_encoding
      Src: /src/opendal/core/services/tos/src/core.rs:175,1
    - Dst: http::request::Builder::header
      Src: /src/opendal/core/services/tos/src/core.rs:176,1
    - Dst: OpStat::content_disposition
      Src: /src/opendal/core/services/tos/src/core.rs:179,1
    - Dst: http::request::Builder::header
      Src: /src/opendal/core/services/tos/src/core.rs:180,1
    - Dst: OpStat::if_match
      Src: /src/opendal/core/services/tos/src/core.rs:183,1
    - Dst: http::request::Builder::header
      Src: /src/opendal/core/services/tos/src/core.rs:184,1
    - Dst: OpStat::if_not_exists
      Src: /src/opendal/core/services/tos/src/core.rs:187,1
    - Dst: http::request::Builder::header
      Src: /src/opendal/core/services/tos/src/core.rs:188,1
    - Dst: http::request::Builder::header
      Src: /src/opendal/core/services/tos/src/core.rs:192,1
    - Dst: http::HeaderName::from_static
      Src: /src/opendal/core/services/tos/src/core.rs:193,1
    - Dst: OpStat::user_metadata
      Src: /src/opendal/core/services/tos/src/core.rs:198,1
    - Dst: http::request::Builder::header
      Src: /src/opendal/core/services/tos/src/core.rs:200,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 75
    argCount: 3
    argNames:
    - req
    - size
    - args
    argTypes:
    - http::request::Builder
    - Option<u64>
    - '&OpWrite'
    constantsTouched: []
    func_position:
      end: 205
      start: 157
    functionDepth: 32
    functionLinenumber: 157
    functionLinenumberEnd: 205
    functionName: TosCore::insert_metadata_headers
    functionSourceFile: /src/opendal/core/services/tos/src/core.rs
    functionUses: 1
    functionsReached:
    - Option::to_string
    - http::request::Builder::header
    - OpStat::content_encoding
    - OpStat::content_disposition
    - OpStat::cache_control
    - http::HeaderName::from_static
    - OpStat::user_metadata
    - OpStat::if_match
    - OpStat::if_not_exists
    - OpStat::content_type
    linkageType: ''
    returnType: http::request::Builder
    signature: 'pub fn insert_metadata_headers(&self,mut req: http::request::Builder,size:
      Option<u64>,args: &OpWrite,) -> http::request::Builder'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/tos/src/core.rs:213,1
    - Dst: Vec::new
      Src: /src/opendal/core/services/tos/src/core.rs:222,1
    - Dst: OpStat::override_content_disposition
      Src: /src/opendal/core/services/tos/src/core.rs:223,1
    - Dst: Self::push
      Src: /src/opendal/core/services/tos/src/core.rs:224,1
    - Dst: OpStat::override_content_type
      Src: /src/opendal/core/services/tos/src/core.rs:230,1
    - Dst: Self::push
      Src: /src/opendal/core/services/tos/src/core.rs:231,1
    - Dst: OpStat::override_cache_control
      Src: /src/opendal/core/services/tos/src/core.rs:237,1
    - Dst: Self::push
      Src: /src/opendal/core/services/tos/src/core.rs:238,1
    - Dst: OpStat::version
      Src: /src/opendal/core/services/tos/src/core.rs:244,1
    - Dst: Self::push
      Src: /src/opendal/core/services/tos/src/core.rs:245,1
    - Dst: Self::is_empty
      Src: /src/opendal/core/services/tos/src/core.rs:251,1
    - Dst: Result::push_str
      Src: /src/opendal/core/services/tos/src/core.rs:252,1
    - Dst: Request::get
      Src: /src/opendal/core/services/tos/src/core.rs:255,1
    - Dst: (Vec::is_full
      Src: /src/opendal/core/services/tos/src/core.rs:257,1
    - Dst: Option::header
      Src: /src/opendal/core/services/tos/src/core.rs:258,1
    - Dst: (Vec::to_header
      Src: /src/opendal/core/services/tos/src/core.rs:258,1
    - Dst: OpStat::if_none_match
      Src: /src/opendal/core/services/tos/src/core.rs:261,1
    - Dst: Option::header
      Src: /src/opendal/core/services/tos/src/core.rs:262,1
    - Dst: OpStat::if_match
      Src: /src/opendal/core/services/tos/src/core.rs:265,1
    - Dst: Option::header
      Src: /src/opendal/core/services/tos/src/core.rs:266,1
    - Dst: OpStat::if_modified_since
      Src: /src/opendal/core/services/tos/src/core.rs:269,1
    - Dst: Option::header
      Src: /src/opendal/core/services/tos/src/core.rs:270,1
    - Dst: Result::format_http_date
      Src: /src/opendal/core/services/tos/src/core.rs:272,1
    - Dst: OpStat::if_unmodified_since
      Src: /src/opendal/core/services/tos/src/core.rs:276,1
    - Dst: Option::header
      Src: /src/opendal/core/services/tos/src/core.rs:277,1
    - Dst: Result::format_http_date
      Src: /src/opendal/core/services/tos/src/core.rs:279,1
    - Dst: Option::extension
      Src: /src/opendal/core/services/tos/src/core.rs:283,1
    - Dst: extension
      Src: /src/opendal/core/services/tos/src/core.rs:283,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/tos/src/core.rs:285,1
    - Dst: Option::body
      Src: /src/opendal/core/services/tos/src/core.rs:287,1
    - Dst: Buffer::new
      Src: /src/opendal/core/services/tos/src/core.rs:287,1
    - Dst: map_err
      Src: /src/opendal/core/services/tos/src/core.rs:287,1
    - Dst: Ok
      Src: /src/opendal/core/services/tos/src/core.rs:289,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 104
    argCount: 3
    argNames:
    - path
    - range
    - args
    argTypes:
    - '&str'
    - BytesRange
    - '&OpRead'
    constantsTouched: []
    func_position:
      end: 290
      start: 207
    functionDepth: 5
    functionLinenumber: 207
    functionLinenumberEnd: 290
    functionName: TosCore::tos_get_object_request
    functionSourceFile: /src/opendal/core/services/tos/src/core.rs
    functionUses: 1
    functionsReached:
    - Buffer::new
    - Result::push_str
    - OpStat::if_unmodified_since
    - OpStat::override_content_disposition
    - Vec::new
    - Option::body
    - map_err
    - extension
    - Ok
    - OpStat::if_modified_since
    - (Vec::is_full
    - Self::is_empty
    - ServiceOperation
    - Result::format_http_date
    - OpStat::if_match
    - OpStat::override_cache_control
    - Self::push
    - build_abs_path
    - Option::header
    - OpStat::version
    - Request::get
    - (Vec::to_header
    - OpStat::override_content_type
    - OpStat::if_none_match
    - Option::extension
    linkageType: ''
    returnType: Result
    signature: 'pub fn tos_get_object_request(&self,path: &str,range: BytesRange,args:
      &OpRead,) -> Result<Request<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: TosCore::tos_get_object_request
      Src: /src/opendal/core/services/tos/src/core.rs:299,1
    - Dst: TosCore::fetch
      Src: /src/opendal/core/services/tos/src/core.rs:300,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 4
    argNames:
    - ctx
    - path
    - range
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - BytesRange
    - '&OpRead'
    constantsTouched: []
    func_position:
      end: 301
      start: 292
    functionDepth: 36
    functionLinenumber: 292
    functionLinenumberEnd: 301
    functionName: TosCore::tos_get_object
    functionSourceFile: /src/opendal/core/services/tos/src/core.rs
    functionUses: 0
    functionsReached:
    - TosCore::fetch
    - TosCore::tos_get_object_request
    linkageType: ''
    returnType: Result
    signature: 'pub async fn tos_get_object(&self,ctx: &OperationContext,path: &str,range:
      BytesRange,args: &OpRead,) -> Result<Response<HttpBody>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/tos/src/core.rs:310,1
    - Dst: Request::put
      Src: /src/opendal/core/services/tos/src/core.rs:319,1
    - Dst: TosCore::insert_metadata_headers
      Src: /src/opendal/core/services/tos/src/core.rs:321,1
    - Dst: DeleteInput::extension
      Src: /src/opendal/core/services/tos/src/core.rs:323,1
    - Dst: extension
      Src: /src/opendal/core/services/tos/src/core.rs:323,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/tos/src/core.rs:325,1
    - Dst: DeleteInput::body
      Src: /src/opendal/core/services/tos/src/core.rs:327,1
    - Dst: map_err
      Src: /src/opendal/core/services/tos/src/core.rs:327,1
    - Dst: Ok
      Src: /src/opendal/core/services/tos/src/core.rs:329,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 22
    argCount: 4
    argNames:
    - path
    - size
    - args
    - body
    argTypes:
    - '&str'
    - Option<u64>
    - '&OpWrite'
    - Buffer
    constantsTouched: []
    func_position:
      end: 330
      start: 303
    functionDepth: 33
    functionLinenumber: 303
    functionLinenumberEnd: 330
    functionName: TosCore::tos_put_object_request
    functionSourceFile: /src/opendal/core/services/tos/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - extension
    - Request::put
    - Ok
    - TosCore::insert_metadata_headers
    - build_abs_path
    - ServiceOperation
    - DeleteInput::body
    - DeleteInput::extension
    linkageType: ''
    returnType: Result
    signature: 'pub fn tos_put_object_request(&self,path: &str,size: Option<u64>,args:
      &OpWrite,body: Buffer,) -> Result<Request<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/tos/src/core.rs:333,1
    - Dst: Vec::new
      Src: /src/opendal/core/services/tos/src/core.rs:342,1
    - Dst: OpStat::override_content_disposition
      Src: /src/opendal/core/services/tos/src/core.rs:343,1
    - Dst: Self::push
      Src: /src/opendal/core/services/tos/src/core.rs:344,1
    - Dst: OpStat::override_content_type
      Src: /src/opendal/core/services/tos/src/core.rs:350,1
    - Dst: Self::push
      Src: /src/opendal/core/services/tos/src/core.rs:351,1
    - Dst: OpStat::override_cache_control
      Src: /src/opendal/core/services/tos/src/core.rs:357,1
    - Dst: Self::push
      Src: /src/opendal/core/services/tos/src/core.rs:358,1
    - Dst: OpStat::version
      Src: /src/opendal/core/services/tos/src/core.rs:364,1
    - Dst: Self::push
      Src: /src/opendal/core/services/tos/src/core.rs:365,1
    - Dst: Self::is_empty
      Src: /src/opendal/core/services/tos/src/core.rs:371,1
    - Dst: Result::push_str
      Src: /src/opendal/core/services/tos/src/core.rs:372,1
    - Dst: Request::head
      Src: /src/opendal/core/services/tos/src/core.rs:375,1
    - Dst: OpStat::if_none_match
      Src: /src/opendal/core/services/tos/src/core.rs:377,1
    - Dst: Result::header
      Src: /src/opendal/core/services/tos/src/core.rs:378,1
    - Dst: OpStat::if_match
      Src: /src/opendal/core/services/tos/src/core.rs:380,1
    - Dst: Result::header
      Src: /src/opendal/core/services/tos/src/core.rs:381,1
    - Dst: OpStat::if_modified_since
      Src: /src/opendal/core/services/tos/src/core.rs:384,1
    - Dst: Result::header
      Src: /src/opendal/core/services/tos/src/core.rs:385,1
    - Dst: Result::format_http_date
      Src: /src/opendal/core/services/tos/src/core.rs:387,1
    - Dst: OpStat::if_unmodified_since
      Src: /src/opendal/core/services/tos/src/core.rs:390,1
    - Dst: Result::header
      Src: /src/opendal/core/services/tos/src/core.rs:391,1
    - Dst: Result::format_http_date
      Src: /src/opendal/core/services/tos/src/core.rs:393,1
    - Dst: Result::extension
      Src: /src/opendal/core/services/tos/src/core.rs:397,1
    - Dst: extension
      Src: /src/opendal/core/services/tos/src/core.rs:397,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/tos/src/core.rs:399,1
    - Dst: Result::body
      Src: /src/opendal/core/services/tos/src/core.rs:401,1
    - Dst: Buffer::new
      Src: /src/opendal/core/services/tos/src/core.rs:401,1
    - Dst: map_err
      Src: /src/opendal/core/services/tos/src/core.rs:401,1
    - Dst: Ok
      Src: /src/opendal/core/services/tos/src/core.rs:403,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 93
    argCount: 2
    argNames:
    - path
    - args
    argTypes:
    - '&str'
    - OpStat
    constantsTouched: []
    func_position:
      end: 404
      start: 332
    functionDepth: 38
    functionLinenumber: 332
    functionLinenumberEnd: 404
    functionName: TosCore::tos_head_object_request
    functionSourceFile: /src/opendal/core/services/tos/src/core.rs
    functionUses: 1
    functionsReached:
    - Buffer::new
    - Result::push_str
    - OpStat::if_unmodified_since
    - OpStat::override_content_disposition
    - Vec::new
    - map_err
    - extension
    - Ok
    - OpStat::if_modified_since
    - Self::is_empty
    - ServiceOperation
    - Result::body
    - Result::format_http_date
    - OpStat::if_match
    - OpStat::override_cache_control
    - Self::push
    - build_abs_path
    - Result::header
    - OpStat::version
    - Request::head
    - OpStat::override_content_type
    - Result::extension
    - OpStat::if_none_match
    linkageType: ''
    returnType: Result
    signature: 'pub fn tos_head_object_request(&self, path: &str, args: OpStat) ->
      Result<Request<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: TosCore::tos_head_object_request
      Src: /src/opendal/core/services/tos/src/core.rs:412,1
    - Dst: TosCore::send
      Src: /src/opendal/core/services/tos/src/core.rs:413,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpStat
    constantsTouched: []
    func_position:
      end: 414
      start: 406
    functionDepth: 39
    functionLinenumber: 406
    functionLinenumberEnd: 414
    functionName: TosCore::tos_head_object
    functionSourceFile: /src/opendal/core/services/tos/src/core.rs
    functionUses: 0
    functionsReached:
    - TosCore::tos_head_object_request
    - TosCore::send
    linkageType: ''
    returnType: Result
    signature: 'pub async fn tos_head_object(&self,ctx: &OperationContext,path: &str,args:
      OpStat,) -> Result<Response<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/tos/src/core.rs:422,1
    - Dst: Vec::new
      Src: /src/opendal/core/services/tos/src/core.rs:431,1
    - Dst: OpStat::version
      Src: /src/opendal/core/services/tos/src/core.rs:433,1
    - Dst: Self::push
      Src: /src/opendal/core/services/tos/src/core.rs:434,1
    - Dst: Self::is_empty
      Src: /src/opendal/core/services/tos/src/core.rs:441,1
    - Dst: Result::push_str
      Src: /src/opendal/core/services/tos/src/core.rs:442,1
    - Dst: Request::delete
      Src: /src/opendal/core/services/tos/src/core.rs:445,1
    - Dst: Result::extension
      Src: /src/opendal/core/services/tos/src/core.rs:447,1
    - Dst: extension
      Src: /src/opendal/core/services/tos/src/core.rs:447,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/tos/src/core.rs:449,1
    - Dst: body
      Src: /src/opendal/core/services/tos/src/core.rs:447,1
    - Dst: Buffer::new
      Src: /src/opendal/core/services/tos/src/core.rs:450,1
    - Dst: map_err
      Src: /src/opendal/core/services/tos/src/core.rs:447,1
    - Dst: TosCore::send
      Src: /src/opendal/core/services/tos/src/core.rs:453,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 36
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&OpDelete'
    constantsTouched: []
    func_position:
      end: 454
      start: 416
    functionDepth: 32
    functionLinenumber: 416
    functionLinenumberEnd: 454
    functionName: TosCore::tos_delete_object
    functionSourceFile: /src/opendal/core/services/tos/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - OpStat::version
    - extension
    - Result::push_str
    - Buffer::new
    - Request::delete
    - Result::extension
    - Self::push
    - body
    - build_abs_path
    - Self::is_empty
    - ServiceOperation
    - Vec::new
    - TosCore::send
    linkageType: ''
    returnType: Result
    signature: 'pub async fn tos_delete_object(&self,ctx: &OperationContext,path:
      &str,args: &OpDelete,) -> Result<Response<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Request::post
      Src: /src/opendal/core/services/tos/src/core.rs:463,1
    - Dst: serde_json::to_string
      Src: /src/opendal/core/services/tos/src/core.rs:465,1
    - Dst: Result::iter
      Src: /src/opendal/core/services/tos/src/core.rs:466,1
    - Dst: map
      Src: /src/opendal/core/services/tos/src/core.rs:466,1
    - Dst: build_abs_path
      Src: /src/opendal/core/services/tos/src/core.rs:469,1
    - Dst: version
      Src: /src/opendal/core/services/tos/src/core.rs:470,1
    - Dst: Result::map
      Src: /src/opendal/core/services/tos/src/core.rs:470,1
    - Dst: Result::to_owned
      Src: /src/opendal/core/services/tos/src/core.rs:470,1
    - Dst: Result::collect
      Src: /src/opendal/core/services/tos/src/core.rs:466,1
    - Dst: map_err
      Src: /src/opendal/core/services/tos/src/core.rs:465,1
    - Dst: header
      Src: /src/opendal/core/services/tos/src/core.rs:477,1
    - Dst: Result::len
      Src: /src/opendal/core/services/tos/src/core.rs:477,1
    - Dst: header
      Src: /src/opendal/core/services/tos/src/core.rs:478,1
    - Dst: header
      Src: /src/opendal/core/services/tos/src/core.rs:479,1
    - Dst: format_content_md5
      Src: /src/opendal/core/services/tos/src/core.rs:479,1
    - Dst: Result::as_bytes
      Src: /src/opendal/core/services/tos/src/core.rs:479,1
    - Dst: extension
      Src: /src/opendal/core/services/tos/src/core.rs:481,1
    - Dst: extension
      Src: /src/opendal/core/services/tos/src/core.rs:481,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/tos/src/core.rs:483,1
    - Dst: body
      Src: /src/opendal/core/services/tos/src/core.rs:485,1
    - Dst: Buffer::from
      Src: /src/opendal/core/services/tos/src/core.rs:486,1
    - Dst: map_err
      Src: /src/opendal/core/services/tos/src/core.rs:485,1
    - Dst: TosCore::send
      Src: /src/opendal/core/services/tos/src/core.rs:489,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 59
    argCount: 2
    argNames:
    - ctx
    - paths
    argTypes:
    - '&OperationContext'
    - '&[(String, OpDelete)]'
    constantsTouched: []
    func_position:
      end: 490
      start: 456
    functionDepth: 32
    functionLinenumber: 456
    functionLinenumberEnd: 490
    functionName: TosCore::tos_delete_objects
    functionSourceFile: /src/opendal/core/services/tos/src/core.rs
    functionUses: 0
    functionsReached:
    - map
    - Result::len
    - Result::to_owned
    - TosCore::send
    - Result::as_bytes
    - map_err
    - extension
    - Result::iter
    - ServiceOperation
    - Result::map
    - Buffer::from
    - build_abs_path
    - serde_json::to_string
    - format_content_md5
    - Request::post
    - body
    - Result::collect
    - version
    - header
    linkageType: ''
    returnType: Result
    signature: 'pub async fn tos_delete_objects(&self,ctx: &OperationContext,paths:
      &[(String, OpDelete)],) -> Result<Response<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/tos/src/core.rs:499,1
    - Dst: build_abs_path
      Src: /src/opendal/core/services/tos/src/core.rs:500,1
    - Dst: Request::put
      Src: /src/opendal/core/services/tos/src/core.rs:510,1
    - Dst: DeleteInput::header
      Src: /src/opendal/core/services/tos/src/core.rs:510,1
    - Dst: String::header
      Src: /src/opendal/core/services/tos/src/core.rs:510,1
    - Dst: OpStat::if_not_exists
      Src: /src/opendal/core/services/tos/src/core.rs:514,1
    - Dst: String::header
      Src: /src/opendal/core/services/tos/src/core.rs:515,1
    - Dst: String::extension
      Src: /src/opendal/core/services/tos/src/core.rs:518,1
    - Dst: extension
      Src: /src/opendal/core/services/tos/src/core.rs:518,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/tos/src/core.rs:520,1
    - Dst: body
      Src: /src/opendal/core/services/tos/src/core.rs:518,1
    - Dst: Buffer::new
      Src: /src/opendal/core/services/tos/src/core.rs:521,1
    - Dst: map_err
      Src: /src/opendal/core/services/tos/src/core.rs:518,1
    - Dst: TosCore::send
      Src: /src/opendal/core/services/tos/src/core.rs:524,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 34
    argCount: 4
    argNames:
    - ctx
    - from
    - to
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    - '&OpCopy'
    constantsTouched: []
    func_position:
      end: 525
      start: 492
    functionDepth: 32
    functionLinenumber: 492
    functionLinenumberEnd: 525
    functionName: TosCore::tos_copy_object
    functionSourceFile: /src/opendal/core/services/tos/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - extension
    - Buffer::new
    - Request::put
    - TosCore::send
    - body
    - build_abs_path
    - DeleteInput::header
    - String::header
    - ServiceOperation
    - String::extension
    - OpStat::if_not_exists
    linkageType: ''
    returnType: Result
    signature: 'pub async fn tos_copy_object(&self,ctx: &OperationContext,from: &str,to:
      &str,args: &OpCopy,) -> Result<Response<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/tos/src/core.rs:532,1
    - Dst: Request::post
      Src: /src/opendal/core/services/tos/src/core.rs:541,1
    - Dst: header
      Src: /src/opendal/core/services/tos/src/core.rs:541,1
    - Dst: header
      Src: /src/opendal/core/services/tos/src/core.rs:544,1
    - Dst: http::HeaderName::from_static
      Src: /src/opendal/core/services/tos/src/core.rs:545,1
    - Dst: extension
      Src: /src/opendal/core/services/tos/src/core.rs:550,1
    - Dst: extension
      Src: /src/opendal/core/services/tos/src/core.rs:550,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/tos/src/core.rs:552,1
    - Dst: body
      Src: /src/opendal/core/services/tos/src/core.rs:550,1
    - Dst: Buffer::new
      Src: /src/opendal/core/services/tos/src/core.rs:553,1
    - Dst: map_err
      Src: /src/opendal/core/services/tos/src/core.rs:550,1
    - Dst: TosCore::send
      Src: /src/opendal/core/services/tos/src/core.rs:556,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 30
    argCount: 2
    argNames:
    - ctx
    - path
    argTypes:
    - '&OperationContext'
    - '&str'
    constantsTouched: []
    func_position:
      end: 557
      start: 527
    functionDepth: 36
    functionLinenumber: 527
    functionLinenumberEnd: 557
    functionName: TosCore::tos_initiate_multipart_copy
    functionSourceFile: /src/opendal/core/services/tos/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - extension
    - Buffer::new
    - Request::post
    - body
    - http::HeaderName::from_static
    - build_abs_path
    - ServiceOperation
    - TosCore::send
    - header
    linkageType: ''
    returnType: Result
    signature: 'pub async fn tos_initiate_multipart_copy(&self,ctx: &OperationContext,path:
      &str,) -> Result<Response<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/tos/src/core.rs:563,1
    - Dst: build_abs_path
      Src: /src/opendal/core/services/tos/src/core.rs:564,1
    - Dst: Request::put
      Src: /src/opendal/core/services/tos/src/core.rs:576,1
    - Dst: DeleteInput::extension
      Src: /src/opendal/core/services/tos/src/core.rs:576,1
    - Dst: extension
      Src: /src/opendal/core/services/tos/src/core.rs:576,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/tos/src/core.rs:578,1
    - Dst: header
      Src: /src/opendal/core/services/tos/src/core.rs:576,1
    - Dst: header
      Src: /src/opendal/core/services/tos/src/core.rs:576,1
    - Dst: to_header
      Src: /src/opendal/core/services/tos/src/core.rs:580,1
    - Dst: body
      Src: /src/opendal/core/services/tos/src/core.rs:582,1
    - Dst: Buffer::new
      Src: /src/opendal/core/services/tos/src/core.rs:582,1
    - Dst: map_err
      Src: /src/opendal/core/services/tos/src/core.rs:582,1
    - Dst: Ok
      Src: /src/opendal/core/services/tos/src/core.rs:584,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 29
    argCount: 1
    argNames:
    - input
    argTypes:
    - TosUploadPartCopyRequest<'_>
    constantsTouched: []
    func_position:
      end: 585
      start: 559
    functionDepth: 3
    functionLinenumber: 559
    functionLinenumberEnd: 585
    functionName: TosCore::tos_upload_part_copy_request
    functionSourceFile: /src/opendal/core/services/tos/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - extension
    - Buffer::new
    - Request::put
    - Ok
    - body
    - build_abs_path
    - to_header
    - ServiceOperation
    - DeleteInput::extension
    - header
    linkageType: ''
    returnType: Result
    signature: 'pub fn tos_upload_part_copy_request(&self,input: TosUploadPartCopyRequest<''_>,)
      -> Result<Request<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/tos/src/core.rs:595,1
    - Dst: serde_json::to_string
      Src: /src/opendal/core/services/tos/src/core.rs:605,1
    - Dst: map_err
      Src: /src/opendal/core/services/tos/src/core.rs:605,1
    - Dst: Request::post
      Src: /src/opendal/core/services/tos/src/core.rs:608,1
    - Dst: header
      Src: /src/opendal/core/services/tos/src/core.rs:608,1
    - Dst: Result::len
      Src: /src/opendal/core/services/tos/src/core.rs:609,1
    - Dst: header
      Src: /src/opendal/core/services/tos/src/core.rs:608,1
    - Dst: OpStat::if_not_exists
      Src: /src/opendal/core/services/tos/src/core.rs:612,1
    - Dst: header
      Src: /src/opendal/core/services/tos/src/core.rs:613,1
    - Dst: extension
      Src: /src/opendal/core/services/tos/src/core.rs:616,1
    - Dst: extension
      Src: /src/opendal/core/services/tos/src/core.rs:616,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/tos/src/core.rs:618,1
    - Dst: body
      Src: /src/opendal/core/services/tos/src/core.rs:616,1
    - Dst: Buffer::from
      Src: /src/opendal/core/services/tos/src/core.rs:619,1
    - Dst: map_err
      Src: /src/opendal/core/services/tos/src/core.rs:616,1
    - Dst: TosCore::send
      Src: /src/opendal/core/services/tos/src/core.rs:622,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 39
    argCount: 5
    argNames:
    - ctx
    - path
    - upload_id
    - parts
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    - Vec<CompleteMultipartUploadRequestPart>
    - '&OpCopy'
    constantsTouched: []
    func_position:
      end: 623
      start: 587
    functionDepth: 32
    functionLinenumber: 587
    functionLinenumberEnd: 623
    functionName: TosCore::tos_complete_multipart_copy
    functionSourceFile: /src/opendal/core/services/tos/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - extension
    - TosCore::send
    - Request::post
    - body
    - build_abs_path
    - ServiceOperation
    - serde_json::to_string
    - Result::len
    - OpStat::if_not_exists
    - Buffer::from
    - header
    linkageType: ''
    returnType: Result
    signature: 'pub async fn tos_complete_multipart_copy(&self,ctx: &OperationContext,path:
      &str,upload_id: &str,parts: Vec<CompleteMultipartUploadRequestPart>,args: &OpCopy,)
      -> Result<Response<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/tos/src/core.rs:631,1
    - Dst: Request::delete
      Src: /src/opendal/core/services/tos/src/core.rs:641,1
    - Dst: Result::extension
      Src: /src/opendal/core/services/tos/src/core.rs:641,1
    - Dst: extension
      Src: /src/opendal/core/services/tos/src/core.rs:641,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/tos/src/core.rs:643,1
    - Dst: body
      Src: /src/opendal/core/services/tos/src/core.rs:641,1
    - Dst: Buffer::new
      Src: /src/opendal/core/services/tos/src/core.rs:644,1
    - Dst: map_err
      Src: /src/opendal/core/services/tos/src/core.rs:641,1
    - Dst: TosCore::send
      Src: /src/opendal/core/services/tos/src/core.rs:647,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 19
    argCount: 3
    argNames:
    - ctx
    - path
    - upload_id
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    constantsTouched: []
    func_position:
      end: 648
      start: 625
    functionDepth: 32
    functionLinenumber: 625
    functionLinenumberEnd: 648
    functionName: TosCore::tos_abort_multipart_copy
    functionSourceFile: /src/opendal/core/services/tos/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - extension
    - Buffer::new
    - Request::delete
    - Result::extension
    - body
    - build_abs_path
    - ServiceOperation
    - TosCore::send
    linkageType: ''
    returnType: Result
    signature: 'pub async fn tos_abort_multipart_copy(&self,ctx: &OperationContext,path:
      &str,upload_id: &str,) -> Result<Response<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/tos/src/core.rs:659,1
    - Dst: QueryPairsWriter::new
      Src: /src/opendal/core/services/tos/src/core.rs:662,1
    - Dst: Result::push
      Src: /src/opendal/core/services/tos/src/core.rs:663,1
    - Dst: is_empty
      Src: /src/opendal/core/services/tos/src/core.rs:665,1
    - Dst: Result::push
      Src: /src/opendal/core/services/tos/src/core.rs:666,1
    - Dst: reqsign_volcengine_tos::percent_encode_query
      Src: /src/opendal/core/services/tos/src/core.rs:666,1
    - Dst: object_store::Result::is_empty
      Src: /src/opendal/core/services/tos/src/core.rs:668,1
    - Dst: Result::push
      Src: /src/opendal/core/services/tos/src/core.rs:669,1
    - Dst: reqsign_volcengine_tos::percent_encode_query
      Src: /src/opendal/core/services/tos/src/core.rs:669,1
    - Dst: Result::push
      Src: /src/opendal/core/services/tos/src/core.rs:672,1
    - Dst: Result::to_string
      Src: /src/opendal/core/services/tos/src/core.rs:672,1
    - Dst: is_empty
      Src: /src/opendal/core/services/tos/src/core.rs:675,1
    - Dst: Result::starts_with
      Src: /src/opendal/core/services/tos/src/core.rs:675,1
    - Dst: build_abs_path
      Src: /src/opendal/core/services/tos/src/core.rs:677,1
    - Dst: Result::push
      Src: /src/opendal/core/services/tos/src/core.rs:678,1
    - Dst: reqsign_volcengine_tos::percent_encode_query
      Src: /src/opendal/core/services/tos/src/core.rs:678,1
    - Dst: '&str::is_empty'
      Src: /src/opendal/core/services/tos/src/core.rs:680,1
    - Dst: Result::push
      Src: /src/opendal/core/services/tos/src/core.rs:681,1
    - Dst: reqsign_volcengine_tos::percent_encode_query
      Src: /src/opendal/core/services/tos/src/core.rs:683,1
    - Dst: Request::get
      Src: /src/opendal/core/services/tos/src/core.rs:687,1
    - Dst: Result::finish
      Src: /src/opendal/core/services/tos/src/core.rs:687,1
    - Dst: Option::extension
      Src: /src/opendal/core/services/tos/src/core.rs:687,1
    - Dst: extension
      Src: /src/opendal/core/services/tos/src/core.rs:687,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/tos/src/core.rs:689,1
    - Dst: body
      Src: /src/opendal/core/services/tos/src/core.rs:687,1
    - Dst: Buffer::new
      Src: /src/opendal/core/services/tos/src/core.rs:690,1
    - Dst: map_err
      Src: /src/opendal/core/services/tos/src/core.rs:687,1
    - Dst: TosCore::send
      Src: /src/opendal/core/services/tos/src/core.rs:693,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 90
    argCount: 6
    argNames:
    - ctx
    - path
    - continuation_token
    - delimiter
    - limit
    - start_after
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    - '&str'
    - Option<usize>
    - Option<String>
    constantsTouched: []
    func_position:
      end: 694
      start: 650
    functionDepth: 36
    functionLinenumber: 650
    functionLinenumberEnd: 694
    functionName: TosCore::tos_list_objects_v2
    functionSourceFile: /src/opendal/core/services/tos/src/core.rs
    functionUses: 0
    functionsReached:
    - QueryPairsWriter::new
    - extension
    - Request::get
    - Result::starts_with
    - Buffer::new
    - Result::to_string
    - map_err
    - body
    - build_abs_path
    - is_empty
    - '&str::is_empty'
    - Result::finish
    - Result::push
    - Option::extension
    - ServiceOperation
    - object_store::Result::is_empty
    - reqsign_volcengine_tos::percent_encode_query
    - TosCore::send
    linkageType: ''
    returnType: Result
    signature: 'pub async fn tos_list_objects_v2(&self,ctx: &OperationContext,path:
      &str,continuation_token: &str,delimiter: &str,limit: Option<usize>,start_after:
      Option<String>,) -> Result<Response<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/tos/src/core.rs:705,1
    - Dst: QueryPairsWriter::new
      Src: /src/opendal/core/services/tos/src/core.rs:708,1
    - Dst: Result::push
      Src: /src/opendal/core/services/tos/src/core.rs:709,1
    - Dst: is_empty
      Src: /src/opendal/core/services/tos/src/core.rs:711,1
    - Dst: Result::push
      Src: /src/opendal/core/services/tos/src/core.rs:712,1
    - Dst: reqsign_volcengine_tos::percent_encode_query
      Src: /src/opendal/core/services/tos/src/core.rs:712,1
    - Dst: object_store::Result::is_empty
      Src: /src/opendal/core/services/tos/src/core.rs:714,1
    - Dst: Result::push
      Src: /src/opendal/core/services/tos/src/core.rs:715,1
    - Dst: reqsign_volcengine_tos::percent_encode_query
      Src: /src/opendal/core/services/tos/src/core.rs:715,1
    - Dst: Result::push
      Src: /src/opendal/core/services/tos/src/core.rs:718,1
    - Dst: Result::to_string
      Src: /src/opendal/core/services/tos/src/core.rs:718,1
    - Dst: '&str::is_empty'
      Src: /src/opendal/core/services/tos/src/core.rs:720,1
    - Dst: Result::push
      Src: /src/opendal/core/services/tos/src/core.rs:721,1
    - Dst: reqsign_volcengine_tos::percent_encode_query
      Src: /src/opendal/core/services/tos/src/core.rs:721,1
    - Dst: '&str::is_empty'
      Src: /src/opendal/core/services/tos/src/core.rs:723,1
    - Dst: Result::push
      Src: /src/opendal/core/services/tos/src/core.rs:724,1
    - Dst: reqsign_volcengine_tos::percent_encode_query
      Src: /src/opendal/core/services/tos/src/core.rs:726,1
    - Dst: Request::get
      Src: /src/opendal/core/services/tos/src/core.rs:730,1
    - Dst: Result::finish
      Src: /src/opendal/core/services/tos/src/core.rs:730,1
    - Dst: Option::extension
      Src: /src/opendal/core/services/tos/src/core.rs:730,1
    - Dst: extension
      Src: /src/opendal/core/services/tos/src/core.rs:730,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/tos/src/core.rs:732,1
    - Dst: body
      Src: /src/opendal/core/services/tos/src/core.rs:730,1
    - Dst: Buffer::new
      Src: /src/opendal/core/services/tos/src/core.rs:733,1
    - Dst: map_err
      Src: /src/opendal/core/services/tos/src/core.rs:730,1
    - Dst: TosCore::send
      Src: /src/opendal/core/services/tos/src/core.rs:736,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 80
    argCount: 6
    argNames:
    - ctx
    - prefix
    - delimiter
    - limit
    - key_marker
    - version_id_marker
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    - Option<usize>
    - '&str'
    - '&str'
    constantsTouched: []
    func_position:
      end: 737
      start: 696
    functionDepth: 36
    functionLinenumber: 696
    functionLinenumberEnd: 737
    functionName: TosCore::tos_list_object_versions
    functionSourceFile: /src/opendal/core/services/tos/src/core.rs
    functionUses: 0
    functionsReached:
    - QueryPairsWriter::new
    - extension
    - Request::get
    - Buffer::new
    - map_err
    - Result::to_string
    - body
    - build_abs_path
    - is_empty
    - '&str::is_empty'
    - Result::finish
    - Result::push
    - Option::extension
    - ServiceOperation
    - object_store::Result::is_empty
    - reqsign_volcengine_tos::percent_encode_query
    - TosCore::send
    linkageType: ''
    returnType: Result
    signature: 'pub async fn tos_list_object_versions(&self,ctx: &OperationContext,prefix:
      &str,delimiter: &str,limit: Option<usize>,key_marker: &str,version_id_marker:
      &str,) -> Result<Response<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/tos/src/core.rs:745,1
    - Dst: Request::post
      Src: /src/opendal/core/services/tos/src/core.rs:754,1
    - Dst: OpStat::content_type
      Src: /src/opendal/core/services/tos/src/core.rs:756,1
    - Dst: header
      Src: /src/opendal/core/services/tos/src/core.rs:757,1
    - Dst: OpStat::cache_control
      Src: /src/opendal/core/services/tos/src/core.rs:760,1
    - Dst: header
      Src: /src/opendal/core/services/tos/src/core.rs:761,1
    - Dst: OpStat::content_encoding
      Src: /src/opendal/core/services/tos/src/core.rs:764,1
    - Dst: header
      Src: /src/opendal/core/services/tos/src/core.rs:765,1
    - Dst: OpStat::content_disposition
      Src: /src/opendal/core/services/tos/src/core.rs:768,1
    - Dst: header
      Src: /src/opendal/core/services/tos/src/core.rs:769,1
    - Dst: header
      Src: /src/opendal/core/services/tos/src/core.rs:773,1
    - Dst: http::HeaderName::from_static
      Src: /src/opendal/core/services/tos/src/core.rs:774,1
    - Dst: OpStat::user_metadata
      Src: /src/opendal/core/services/tos/src/core.rs:779,1
    - Dst: header
      Src: /src/opendal/core/services/tos/src/core.rs:781,1
    - Dst: extension
      Src: /src/opendal/core/services/tos/src/core.rs:785,1
    - Dst: extension
      Src: /src/opendal/core/services/tos/src/core.rs:785,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/tos/src/core.rs:787,1
    - Dst: body
      Src: /src/opendal/core/services/tos/src/core.rs:789,1
    - Dst: Buffer::new
      Src: /src/opendal/core/services/tos/src/core.rs:789,1
    - Dst: map_err
      Src: /src/opendal/core/services/tos/src/core.rs:789,1
    - Dst: TosCore::send
      Src: /src/opendal/core/services/tos/src/core.rs:791,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 72
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&OpWrite'
    constantsTouched: []
    func_position:
      end: 792
      start: 739
    functionDepth: 32
    functionLinenumber: 739
    functionLinenumberEnd: 792
    functionName: TosCore::tos_initiate_multipart_upload
    functionSourceFile: /src/opendal/core/services/tos/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - extension
    - Buffer::new
    - OpStat::content_encoding
    - Request::post
    - OpStat::content_disposition
    - OpStat::cache_control
    - build_abs_path
    - http::HeaderName::from_static
    - body
    - ServiceOperation
    - OpStat::user_metadata
    - TosCore::send
    - OpStat::content_type
    - header
    linkageType: ''
    returnType: Result
    signature: 'pub async fn tos_initiate_multipart_upload(&self,ctx: &OperationContext,path:
      &str,args: &OpWrite,) -> Result<Response<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/tos/src/core.rs:802,1
    - Dst: Request::put
      Src: /src/opendal/core/services/tos/src/core.rs:813,1
    - Dst: DeleteInput::header
      Src: /src/opendal/core/services/tos/src/core.rs:813,1
    - Dst: String::extension
      Src: /src/opendal/core/services/tos/src/core.rs:813,1
    - Dst: extension
      Src: /src/opendal/core/services/tos/src/core.rs:813,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/tos/src/core.rs:816,1
    - Dst: body
      Src: /src/opendal/core/services/tos/src/core.rs:813,1
    - Dst: map_err
      Src: /src/opendal/core/services/tos/src/core.rs:813,1
    - Dst: Ok
      Src: /src/opendal/core/services/tos/src/core.rs:820,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 18
    argCount: 5
    argNames:
    - path
    - upload_id
    - part_number
    - size
    - body
    argTypes:
    - '&str'
    - '&str'
    - usize
    - u64
    - Buffer
    constantsTouched: []
    func_position:
      end: 821
      start: 794
    functionDepth: 3
    functionLinenumber: 794
    functionLinenumberEnd: 821
    functionName: TosCore::tos_upload_part_request
    functionSourceFile: /src/opendal/core/services/tos/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - extension
    - Request::put
    - Ok
    - body
    - build_abs_path
    - DeleteInput::header
    - ServiceOperation
    - String::extension
    linkageType: ''
    returnType: Result
    signature: 'pub fn tos_upload_part_request(&self,path: &str,upload_id: &str,part_number:
      usize,size: u64,body: Buffer,) -> Result<Request<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/tos/src/core.rs:831,1
    - Dst: serde_json::to_string
      Src: /src/opendal/core/services/tos/src/core.rs:841,1
    - Dst: map_err
      Src: /src/opendal/core/services/tos/src/core.rs:841,1
    - Dst: Request::post
      Src: /src/opendal/core/services/tos/src/core.rs:844,1
    - Dst: header
      Src: /src/opendal/core/services/tos/src/core.rs:844,1
    - Dst: Result::len
      Src: /src/opendal/core/services/tos/src/core.rs:845,1
    - Dst: header
      Src: /src/opendal/core/services/tos/src/core.rs:844,1
    - Dst: OpStat::if_match
      Src: /src/opendal/core/services/tos/src/core.rs:848,1
    - Dst: header
      Src: /src/opendal/core/services/tos/src/core.rs:849,1
    - Dst: OpStat::if_not_exists
      Src: /src/opendal/core/services/tos/src/core.rs:851,1
    - Dst: header
      Src: /src/opendal/core/services/tos/src/core.rs:852,1
    - Dst: extension
      Src: /src/opendal/core/services/tos/src/core.rs:855,1
    - Dst: extension
      Src: /src/opendal/core/services/tos/src/core.rs:855,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/tos/src/core.rs:857,1
    - Dst: body
      Src: /src/opendal/core/services/tos/src/core.rs:855,1
    - Dst: Buffer::from
      Src: /src/opendal/core/services/tos/src/core.rs:858,1
    - Dst: map_err
      Src: /src/opendal/core/services/tos/src/core.rs:855,1
    - Dst: TosCore::send
      Src: /src/opendal/core/services/tos/src/core.rs:861,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 47
    argCount: 5
    argNames:
    - ctx
    - path
    - upload_id
    - parts
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    - Vec<CompleteMultipartUploadRequestPart>
    - '&OpWrite'
    constantsTouched: []
    func_position:
      end: 862
      start: 823
    functionDepth: 32
    functionLinenumber: 823
    functionLinenumberEnd: 862
    functionName: TosCore::tos_complete_multipart_upload
    functionSourceFile: /src/opendal/core/services/tos/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - extension
    - TosCore::send
    - Request::post
    - body
    - build_abs_path
    - ServiceOperation
    - serde_json::to_string
    - Result::len
    - OpStat::if_match
    - OpStat::if_not_exists
    - Buffer::from
    - header
    linkageType: ''
    returnType: Result
    signature: 'pub async fn tos_complete_multipart_upload(&self,ctx: &OperationContext,path:
      &str,upload_id: &str,parts: Vec<CompleteMultipartUploadRequestPart>,args: &OpWrite,)
      -> Result<Response<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/tos/src/core.rs:870,1
    - Dst: Request::delete
      Src: /src/opendal/core/services/tos/src/core.rs:880,1
    - Dst: Result::extension
      Src: /src/opendal/core/services/tos/src/core.rs:880,1
    - Dst: extension
      Src: /src/opendal/core/services/tos/src/core.rs:880,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/tos/src/core.rs:882,1
    - Dst: body
      Src: /src/opendal/core/services/tos/src/core.rs:880,1
    - Dst: Buffer::new
      Src: /src/opendal/core/services/tos/src/core.rs:883,1
    - Dst: map_err
      Src: /src/opendal/core/services/tos/src/core.rs:880,1
    - Dst: TosCore::send
      Src: /src/opendal/core/services/tos/src/core.rs:886,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 19
    argCount: 3
    argNames:
    - ctx
    - path
    - upload_id
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    constantsTouched: []
    func_position:
      end: 887
      start: 864
    functionDepth: 32
    functionLinenumber: 864
    functionLinenumberEnd: 887
    functionName: TosCore::tos_abort_multipart_upload
    functionSourceFile: /src/opendal/core/services/tos/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - extension
    - Buffer::new
    - Request::delete
    - Result::extension
    - body
    - build_abs_path
    - ServiceOperation
    - TosCore::send
    linkageType: ''
    returnType: Result
    signature: 'pub async fn tos_abort_multipart_upload(&self,ctx: &OperationContext,path:
      &str,upload_id: &str,) -> Result<Response<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: de::from_reader::<_, TosError>
      Src: /src/opendal/core/services/tos/src/core.rs:1112,1
    - Dst: Result::chunk
      Src: /src/opendal/core/services/tos/src/core.rs:1112,1
    - Dst: Result::reader
      Src: /src/opendal/core/services/tos/src/core.rs:1112,1
    - Dst: or_else
      Src: /src/opendal/core/services/tos/src/core.rs:1112,1
    - Dst: serde_json::from_slice::<TosError>
      Src: /src/opendal/core/services/tos/src/core.rs:1113,1
    - Dst: ok
      Src: /src/opendal/core/services/tos/src/core.rs:1112,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 1
    argNames:
    - bs
    argTypes:
    - '&bytes::Bytes'
    constantsTouched: []
    func_position:
      end: 1115
      start: 1111
    functionDepth: 37
    functionLinenumber: 1111
    functionLinenumberEnd: 1115
    functionName: error::parse_tos_error
    functionSourceFile: /src/opendal/core/services/tos/src/core.rs
    functionUses: 0
    functionsReached:
    - or_else
    - de::from_reader::<_, TosError>
    - ok
    - serde_json::from_slice::<TosError>
    - Result::chunk
    - Result::reader
    linkageType: ''
    returnType: Option
    signature: 'fn parse_tos_error(bs: &bytes::Bytes) -> Option<TosError>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Some
      Src: /src/opendal/core/services/tos/src/core.rs:1121,1
    - Dst: Some
      Src: /src/opendal/core/services/tos/src/core.rs:1122,1
    - Dst: Some
      Src: /src/opendal/core/services/tos/src/core.rs:1123,1
    - Dst: Some
      Src: /src/opendal/core/services/tos/src/core.rs:1124,1
    - Dst: Some
      Src: /src/opendal/core/services/tos/src/core.rs:1125,1
    - Dst: Some
      Src: /src/opendal/core/services/tos/src/core.rs:1126,1
    - Dst: Some
      Src: /src/opendal/core/services/tos/src/core.rs:1127,1
    - Dst: Some
      Src: /src/opendal/core/services/tos/src/core.rs:1128,1
    - Dst: Some
      Src: /src/opendal/core/services/tos/src/core.rs:1129,1
    - Dst: Some
      Src: /src/opendal/core/services/tos/src/core.rs:1131,1
    - Dst: Some
      Src: /src/opendal/core/services/tos/src/core.rs:1134,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 24
    argCount: 1
    argNames:
    - code
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 1138
      start: 1119
    functionDepth: 0
    functionLinenumber: 1119
    functionLinenumberEnd: 1138
    functionName: error::parse_tos_error_code
    functionSourceFile: /src/opendal/core/services/tos/src/core.rs
    functionUses: 0
    functionsReached:
    - Some
    linkageType: ''
    returnType: Option
    signature: 'pub fn parse_tos_error_code(code: &str) -> Option<(ErrorKind, bool)>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: bytes::Bytes::from
      Src: /src/opendal/core/services/tos/src/core.rs:1169,1
    - Dst: parse_tos_error
      Src: /src/opendal/core/services/tos/src/core.rs:1173,1
    - Dst: Option::expect
      Src: /src/opendal/core/services/tos/src/core.rs:1173,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 1178
      start: 1168
    functionDepth: 38
    functionLinenumber: 1168
    functionLinenumberEnd: 1178
    functionName: error::test_parse_json_error
    functionSourceFile: /src/opendal/core/services/tos/src/core.rs
    functionUses: 0
    functionsReached:
    - Option::expect
    - parse_tos_error
    - bytes::Bytes::from
    linkageType: ''
    returnType: void
    signature: fn test_parse_json_error()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: parse_header_to_str
      Src: /src/opendal/core/services/tos/src/core.rs:1211,1
    - Dst: map
      Src: /src/opendal/core/services/tos/src/core.rs:1211,1
    - Dst: Option::trim_matches
      Src: /src/opendal/core/services/tos/src/core.rs:1211,1
    - Dst: Ok
      Src: /src/opendal/core/services/tos/src/core.rs:1212,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - headers
    argTypes:
    - '&HeaderMap'
    constantsTouched: []
    func_position:
      end: 1213
      start: 1210
    functionDepth: 38
    functionLinenumber: 1210
    functionLinenumberEnd: 1213
    functionName: utils::tos_parse_etag
    functionSourceFile: /src/opendal/core/services/tos/src/core.rs
    functionUses: 0
    functionsReached:
    - Option::trim_matches
    - map
    - parse_header_to_str
    - Ok
    linkageType: ''
    returnType: opendal_core::Result
    signature: 'pub fn tos_parse_etag(headers: &HeaderMap) -> opendal_core::Result<Option<&str>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: parse_into_metadata
      Src: /src/opendal/core/services/tos/src/core.rs:1219,1
    - Dst: tos_parse_etag
      Src: /src/opendal/core/services/tos/src/core.rs:1221,1
    - Dst: anyhow::Result::set_etag
      Src: /src/opendal/core/services/tos/src/core.rs:1222,1
    - Dst: Ok
      Src: /src/opendal/core/services/tos/src/core.rs:1225,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 2
    argNames:
    - path
    - headers
    argTypes:
    - '&str'
    - '&HeaderMap'
    constantsTouched: []
    func_position:
      end: 1226
      start: 1215
    functionDepth: 40
    functionLinenumber: 1215
    functionLinenumberEnd: 1226
    functionName: utils::tos_parse_into_metadata
    functionSourceFile: /src/opendal/core/services/tos/src/core.rs
    functionUses: 0
    functionsReached:
    - parse_into_metadata
    - Ok
    - tos_parse_etag
    - anyhow::Result::set_etag
    linkageType: ''
    returnType: opendal_core::Result
    signature: 'pub(crate) fn tos_parse_into_metadata(path: &str,headers: &HeaderMap,)
      -> opendal_core::Result<Metadata>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: to_string
      Src: /src/opendal/core/services/tos/src/writer.rs:44,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 4
    argNames:
    - core
    - ctx
    - path
    - op
    argTypes:
    - Arc<TosCore>
    - OperationContext
    - '&str'
    - OpWrite
    constantsTouched: []
    func_position:
      end: 47
      start: 40
    functionDepth: 2
    functionLinenumber: 40
    functionLinenumberEnd: 47
    functionName: TosWriter::new
    functionSourceFile: /src/opendal/core/services/tos/src/writer.rs
    functionUses: 1
    functionsReached:
    - to_string
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(core: Arc<TosCore>, ctx: OperationContext, path: &str,
      op: OpWrite) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Metadata::new
      Src: /src/opendal/core/services/tos/src/writer.rs:50,1
    - Dst: EntryMode::from_path
      Src: /src/opendal/core/services/tos/src/writer.rs:50,1
    - Dst: core::tos_parse_etag
      Src: /src/opendal/core/services/tos/src/writer.rs:51,1
    - Dst: Result::set_etag
      Src: /src/opendal/core/services/tos/src/writer.rs:52,1
    - Dst: parse_header_to_str
      Src: /src/opendal/core/services/tos/src/writer.rs:54,1
    - Dst: Result::set_version
      Src: /src/opendal/core/services/tos/src/writer.rs:55,1
    - Dst: parse_header_to_str
      Src: /src/opendal/core/services/tos/src/writer.rs:58,1
    - Dst: and_then
      Src: /src/opendal/core/services/tos/src/writer.rs:58,1
    - Dst: Option::parse
      Src: /src/opendal/core/services/tos/src/writer.rs:58,1
    - Dst: Result::ok
      Src: /src/opendal/core/services/tos/src/writer.rs:58,1
    - Dst: Result::set_content_length
      Src: /src/opendal/core/services/tos/src/writer.rs:60,1
    - Dst: Ok
      Src: /src/opendal/core/services/tos/src/writer.rs:62,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 31
    argCount: 2
    argNames:
    - path
    - headers
    argTypes:
    - '&str'
    - '&http::HeaderMap'
    constantsTouched: []
    func_position:
      end: 63
      start: 49
    functionDepth: 39
    functionLinenumber: 49
    functionLinenumberEnd: 63
    functionName: TosWriter::parse_header_into_meta
    functionSourceFile: /src/opendal/core/services/tos/src/writer.rs
    functionUses: 2
    functionsReached:
    - Metadata::new
    - Result::ok
    - and_then
    - Ok
    - Option::parse
    - parse_header_to_str
    - EntryMode::from_path
    - Result::set_version
    - Result::set_content_length
    - Result::set_etag
    - core::tos_parse_etag
    linkageType: ''
    returnType: Result
    signature: 'fn parse_header_into_meta(path: &str, headers: &http::HeaderMap) ->
      Result<Metadata>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: tos_put_object_request
      Src: /src/opendal/core/services/tos/src/writer.rs:68,1
    - Dst: Some
      Src: /src/opendal/core/services/tos/src/writer.rs:70,1
    - Dst: send
      Src: /src/opendal/core/services/tos/src/writer.rs:72,1
    - Dst: status
      Src: /src/opendal/core/services/tos/src/writer.rs:74,1
    - Dst: TosWriter::parse_header_into_meta
      Src: /src/opendal/core/services/tos/src/writer.rs:76,1
    - Dst: headers
      Src: /src/opendal/core/services/tos/src/writer.rs:76,1
    - Dst: Ok
      Src: /src/opendal/core/services/tos/src/writer.rs:79,1
    - Dst: Err
      Src: /src/opendal/core/services/tos/src/writer.rs:80,1
    - Dst: core::parse_error
      Src: /src/opendal/core/services/tos/src/writer.rs:80,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 29
    argCount: 2
    argNames:
    - size
    - body
    argTypes:
    - u64
    - Buffer
    constantsTouched: []
    func_position:
      end: 82
      start: 67
    functionDepth: 34
    functionLinenumber: 67
    functionLinenumberEnd: 82
    functionName: TosWriter::write_once
    functionSourceFile: /src/opendal/core/services/tos/src/writer.rs
    functionUses: 0
    functionsReached:
    - TosWriter::parse_header_into_meta
    - status
    - Ok
    - Some
    - Err
    - headers
    - tos_put_object_request
    - core::parse_error
    - send
    linkageType: ''
    returnType: Result
    signature: 'async fn write_once(&self, size: u64, body: Buffer) -> Result<Metadata>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: tos_initiate_multipart_upload
      Src: /src/opendal/core/services/tos/src/writer.rs:85,1
    - Dst: status
      Src: /src/opendal/core/services/tos/src/writer.rs:90,1
    - Dst: serde_json::from_reader
      Src: /src/opendal/core/services/tos/src/writer.rs:95,1
    - Dst: into_body
      Src: /src/opendal/core/services/tos/src/writer.rs:95,1
    - Dst: reader
      Src: /src/opendal/core/services/tos/src/writer.rs:95,1
    - Dst: map_err
      Src: /src/opendal/core/services/tos/src/writer.rs:95,1
    - Dst: Ok
      Src: /src/opendal/core/services/tos/src/writer.rs:98,1
    - Dst: Err
      Src: /src/opendal/core/services/tos/src/writer.rs:100,1
    - Dst: core::parse_error
      Src: /src/opendal/core/services/tos/src/writer.rs:100,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 27
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 102
      start: 84
    functionDepth: 33
    functionLinenumber: 84
    functionLinenumberEnd: 102
    functionName: TosWriter::initiate_part
    functionSourceFile: /src/opendal/core/services/tos/src/writer.rs
    functionUses: 0
    functionsReached:
    - map_err
    - reader
    - status
    - Ok
    - serde_json::from_reader
    - into_body
    - tos_initiate_multipart_upload
    - Err
    - core::parse_error
    linkageType: ''
    returnType: Result
    signature: async fn initiate_part(&self) -> Result<String>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: tos_upload_part_request
      Src: /src/opendal/core/services/tos/src/writer.rs:114,1
    - Dst: send
      Src: /src/opendal/core/services/tos/src/writer.rs:117,1
    - Dst: status
      Src: /src/opendal/core/services/tos/src/writer.rs:118,1
    - Dst: core::tos_parse_etag
      Src: /src/opendal/core/services/tos/src/writer.rs:122,1
    - Dst: headers
      Src: /src/opendal/core/services/tos/src/writer.rs:122,1
    - Dst: ok_or_else
      Src: /src/opendal/core/services/tos/src/writer.rs:122,1
    - Dst: Error::new
      Src: /src/opendal/core/services/tos/src/writer.rs:124,1
    - Dst: to_string
      Src: /src/opendal/core/services/tos/src/writer.rs:122,1
    - Dst: Ok
      Src: /src/opendal/core/services/tos/src/writer.rs:131,1
    - Dst: Err
      Src: /src/opendal/core/services/tos/src/writer.rs:138,1
    - Dst: core::parse_error
      Src: /src/opendal/core/services/tos/src/writer.rs:138,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 33
    argCount: 4
    argNames:
    - upload_id
    - part_number
    - size
    - body
    argTypes:
    - '&str'
    - usize
    - u64
    - Buffer
    constantsTouched: []
    func_position:
      end: 140
      start: 104
    functionDepth: 37
    functionLinenumber: 104
    functionLinenumberEnd: 140
    functionName: TosWriter::write_part
    functionSourceFile: /src/opendal/core/services/tos/src/writer.rs
    functionUses: 0
    functionsReached:
    - tos_upload_part_request
    - to_string
    - status
    - Ok
    - Error::new
    - Err
    - headers
    - core::parse_error
    - send
    - core::tos_parse_etag
    - ok_or_else
    linkageType: ''
    returnType: Result
    signature: 'async fn write_part(&self,upload_id: &str,part_number: usize,size:
      u64,body: Buffer,) -> Result<oio::MultipartPart>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: (String, Metadata)::iter
      Src: /src/opendal/core/services/tos/src/writer.rs:147,1
    - Dst: map
      Src: /src/opendal/core/services/tos/src/writer.rs:147,1
    - Dst: clone
      Src: /src/opendal/core/services/tos/src/writer.rs:151,1
    - Dst: Result::collect
      Src: /src/opendal/core/services/tos/src/writer.rs:147,1
    - Dst: tos_complete_multipart_upload
      Src: /src/opendal/core/services/tos/src/writer.rs:155,1
    - Dst: status
      Src: /src/opendal/core/services/tos/src/writer.rs:160,1
    - Dst: TosWriter::parse_header_into_meta
      Src: /src/opendal/core/services/tos/src/writer.rs:161,1
    - Dst: headers
      Src: /src/opendal/core/services/tos/src/writer.rs:161,1
    - Dst: serde_json::from_reader
      Src: /src/opendal/core/services/tos/src/writer.rs:166,1
    - Dst: into_body
      Src: /src/opendal/core/services/tos/src/writer.rs:166,1
    - Dst: reader
      Src: /src/opendal/core/services/tos/src/writer.rs:166,1
    - Dst: map_err
      Src: /src/opendal/core/services/tos/src/writer.rs:166,1
    - Dst: is_empty
      Src: /src/opendal/core/services/tos/src/writer.rs:168,1
    - Dst: Err
      Src: /src/opendal/core/services/tos/src/writer.rs:169,1
    - Dst: Error::new
      Src: /src/opendal/core/services/tos/src/writer.rs:169,1
    - Dst: is_empty
      Src: /src/opendal/core/services/tos/src/writer.rs:171,1
    - Dst: Result::set_etag
      Src: /src/opendal/core/services/tos/src/writer.rs:174,1
    - Dst: trim_matches
      Src: /src/opendal/core/services/tos/src/writer.rs:174,1
    - Dst: is_empty
      Src: /src/opendal/core/services/tos/src/writer.rs:176,1
    - Dst: Result::set_version
      Src: /src/opendal/core/services/tos/src/writer.rs:177,1
    - Dst: Ok
      Src: /src/opendal/core/services/tos/src/writer.rs:180,1
    - Dst: Err
      Src: /src/opendal/core/services/tos/src/writer.rs:182,1
    - Dst: core::parse_error
      Src: /src/opendal/core/services/tos/src/writer.rs:182,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 78
    argCount: 2
    argNames:
    - upload_id
    - parts
    argTypes:
    - '&str'
    - '&[oio::MultipartPart]'
    constantsTouched: []
    func_position:
      end: 184
      start: 142
    functionDepth: 36
    functionLinenumber: 142
    functionLinenumberEnd: 184
    functionName: TosWriter::complete_part
    functionSourceFile: /src/opendal/core/services/tos/src/writer.rs
    functionUses: 0
    functionsReached:
    - status
    - serde_json::from_reader
    - clone
    - map
    - (String, Metadata)::iter
    - map_err
    - reader
    - Ok
    - tos_complete_multipart_upload
    - headers
    - Result::set_etag
    - TosWriter::parse_header_into_meta
    - trim_matches
    - into_body
    - is_empty
    - Result::set_version
    - Err
    - Error::new
    - Result::collect
    - core::parse_error
    linkageType: ''
    returnType: Result
    signature: 'async fn complete_part(&self,upload_id: &str,parts: &[oio::MultipartPart],)
      -> Result<Metadata>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: tos_abort_multipart_upload
      Src: /src/opendal/core/services/tos/src/writer.rs:187,1
    - Dst: status
      Src: /src/opendal/core/services/tos/src/writer.rs:192,1
    - Dst: Ok
      Src: /src/opendal/core/services/tos/src/writer.rs:193,1
    - Dst: Err
      Src: /src/opendal/core/services/tos/src/writer.rs:194,1
    - Dst: core::parse_error
      Src: /src/opendal/core/services/tos/src/writer.rs:194,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 1
    argNames:
    - upload_id
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 196
      start: 186
    functionDepth: 33
    functionLinenumber: 186
    functionLinenumberEnd: 196
    functionName: TosWriter::abort_part
    functionSourceFile: /src/opendal/core/services/tos/src/writer.rs
    functionUses: 0
    functionsReached:
    - status
    - Ok
    - Err
    - tos_abort_multipart_upload
    - core::parse_error
    linkageType: ''
    returnType: Result
    signature: 'async fn abort_part(&self, upload_id: &str) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: register::<Tos>
      Src: /src/opendal/core/services/tos/src/lib.rs:39,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - registry
    argTypes:
    - '&opendal_core::OperatorRegistry'
    constantsTouched: []
    func_position:
      end: 40
      start: 38
    functionDepth: 0
    functionLinenumber: 38
    functionLinenumberEnd: 40
    functionName: register_tos_service
    functionSourceFile: /src/opendal/core/services/tos/src/lib.rs
    functionUses: 1
    functionsReached:
    - register::<Tos>
    linkageType: ''
    returnType: void
    signature: 'pub fn register_tos_service(registry: &opendal_core::OperatorRegistry)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::debug_struct
      Src: /src/opendal/core/services/tos/src/backend.rs:52,1
    - Dst: field
      Src: /src/opendal/core/services/tos/src/backend.rs:52,1
    - Dst: finish_non_exhaustive
      Src: /src/opendal/core/services/tos/src/backend.rs:52,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - f
    argTypes:
    - '&mut std::fmt::Formatter<''_>'
    constantsTouched: []
    func_position:
      end: 55
      start: 51
    functionDepth: 5
    functionLinenumber: 51
    functionLinenumberEnd: 55
    functionName: TosBuilder::fmt
    functionSourceFile: /src/opendal/core/services/tos/src/backend.rs
    functionUses: 0
    functionsReached:
    - field
    - Result::debug_struct
    - finish_non_exhaustive
    linkageType: ''
    returnType: std::fmt::Result
    signature: 'fn fmt(&self, f: &mut std::fmt::Formatter<''_>) -> std::fmt::Result'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::is_empty
      Src: /src/opendal/core/services/tos/src/backend.rs:63,1
    - Dst: Some
      Src: /src/opendal/core/services/tos/src/backend.rs:66,1
    - Dst: Result::to_string
      Src: /src/opendal/core/services/tos/src/backend.rs:66,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - root
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 69
      start: 62
    functionDepth: 4
    functionLinenumber: 62
    functionLinenumberEnd: 69
    functionName: TosBuilder::root
    functionSourceFile: /src/opendal/core/services/tos/src/backend.rs
    functionUses: 0
    functionsReached:
    - Result::is_empty
    - Result::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn root(mut self, root: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: usize::to_string
      Src: /src/opendal/core/services/tos/src/backend.rs:73,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - bucket
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 75
      start: 72
    functionDepth: 2
    functionLinenumber: 72
    functionLinenumberEnd: 75
    functionName: TosBuilder::bucket
    functionSourceFile: /src/opendal/core/services/tos/src/backend.rs
    functionUses: 0
    functionsReached:
    - usize::to_string
    linkageType: ''
    returnType: Self
    signature: 'pub fn bucket(mut self, bucket: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self::is_empty
      Src: /src/opendal/core/services/tos/src/backend.rs:86,1
    - Dst: Some
      Src: /src/opendal/core/services/tos/src/backend.rs:87,1
    - Dst: Self::trim_end_matches
      Src: /src/opendal/core/services/tos/src/backend.rs:87,1
    - Dst: to_string
      Src: /src/opendal/core/services/tos/src/backend.rs:87,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 14
    argCount: 1
    argNames:
    - endpoint
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 90
      start: 85
    functionDepth: 4
    functionLinenumber: 85
    functionLinenumberEnd: 90
    functionName: TosBuilder::endpoint
    functionSourceFile: /src/opendal/core/services/tos/src/backend.rs
    functionUses: 0
    functionsReached:
    - Self::is_empty
    - to_string
    - Self::trim_end_matches
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn endpoint(mut self, endpoint: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self::is_empty
      Src: /src/opendal/core/services/tos/src/backend.rs:99,1
    - Dst: Some
      Src: /src/opendal/core/services/tos/src/backend.rs:100,1
    - Dst: Self::to_string
      Src: /src/opendal/core/services/tos/src/backend.rs:100,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 1
    argNames:
    - region
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 103
      start: 98
    functionDepth: 4
    functionLinenumber: 98
    functionLinenumberEnd: 103
    functionName: TosBuilder::region
    functionSourceFile: /src/opendal/core/services/tos/src/backend.rs
    functionUses: 0
    functionsReached:
    - Self::is_empty
    - Self::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn region(mut self, region: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Some
      Src: /src/opendal/core/services/tos/src/backend.rs:110,1
    - Dst: Result::to_string
      Src: /src/opendal/core/services/tos/src/backend.rs:110,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - v
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 112
      start: 109
    functionDepth: 2
    functionLinenumber: 109
    functionLinenumberEnd: 112
    functionName: TosBuilder::access_key_id
    functionSourceFile: /src/opendal/core/services/tos/src/backend.rs
    functionUses: 0
    functionsReached:
    - Result::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn access_key_id(mut self, v: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Some
      Src: /src/opendal/core/services/tos/src/backend.rs:119,1
    - Dst: Result::to_string
      Src: /src/opendal/core/services/tos/src/backend.rs:119,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - v
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 121
      start: 118
    functionDepth: 2
    functionLinenumber: 118
    functionLinenumberEnd: 121
    functionName: TosBuilder::secret_access_key
    functionSourceFile: /src/opendal/core/services/tos/src/backend.rs
    functionUses: 0
    functionsReached:
    - Result::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn secret_access_key(mut self, v: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Some
      Src: /src/opendal/core/services/tos/src/backend.rs:125,1
    - Dst: Result::to_string
      Src: /src/opendal/core/services/tos/src/backend.rs:125,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - v
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 127
      start: 124
    functionDepth: 2
    functionLinenumber: 124
    functionLinenumberEnd: 127
    functionName: TosBuilder::security_token
    functionSourceFile: /src/opendal/core/services/tos/src/backend.rs
    functionUses: 0
    functionsReached:
    - Result::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn security_token(mut self, v: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 133
      start: 130
    functionDepth: 0
    functionLinenumber: 130
    functionLinenumberEnd: 133
    functionName: TosBuilder::skip_signature
    functionSourceFile: /src/opendal/core/services/tos/src/backend.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: pub fn skip_signature(mut self) -> Self
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: clone
      Src: /src/opendal/core/services/tos/src/backend.rs:141,1
    - Dst: unwrap_or_else
      Src: /src/opendal/core/services/tos/src/backend.rs:141,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/tos/src/backend.rs:144,1
    - Dst: is_none
      Src: /src/opendal/core/services/tos/src/backend.rs:146,1
    - Dst: Some
      Src: /src/opendal/core/services/tos/src/backend.rs:147,1
    - Dst: clone
      Src: /src/opendal/core/services/tos/src/backend.rs:150,1
    - Dst: unwrap
      Src: /src/opendal/core/services/tos/src/backend.rs:150,1
    - Dst: clone
      Src: /src/opendal/core/services/tos/src/backend.rs:151,1
    - Dst: normalize_root
      Src: /src/opendal/core/services/tos/src/backend.rs:152,1
    - Dst: clone
      Src: /src/opendal/core/services/tos/src/backend.rs:152,1
    - Dst: unwrap_or_default
      Src: /src/opendal/core/services/tos/src/backend.rs:152,1
    - Dst: Context::new
      Src: /src/opendal/core/services/tos/src/backend.rs:154,1
    - Dst: Self::with_file_read
      Src: /src/opendal/core/services/tos/src/backend.rs:154,1
    - Dst: with_env
      Src: /src/opendal/core/services/tos/src/backend.rs:154,1
    - Dst: ProvideCredentialChain::new
      Src: /src/opendal/core/services/tos/src/backend.rs:156,1
    - Dst: Self::push
      Src: /src/opendal/core/services/tos/src/backend.rs:156,1
    - Dst: EnvCredentialProvider::new
      Src: /src/opendal/core/services/tos/src/backend.rs:156,1
    - Dst: as_deref
      Src: /src/opendal/core/services/tos/src/backend.rs:159,1
    - Dst: StaticCredentialProvider::new
      Src: /src/opendal/core/services/tos/src/backend.rs:160,1
    - Dst: Self::with_security_token
      Src: /src/opendal/core/services/tos/src/backend.rs:160,1
    - Dst: StaticCredentialProvider::new
      Src: /src/opendal/core/services/tos/src/backend.rs:162,1
    - Dst: Self::push_front
      Src: /src/opendal/core/services/tos/src/backend.rs:164,1
    - Dst: RequestSigner::new
      Src: /src/opendal/core/services/tos/src/backend.rs:167,1
    - Dst: Signer::new
      Src: /src/opendal/core/services/tos/src/backend.rs:168,1
    - Dst: ServiceInfo::new
      Src: /src/opendal/core/services/tos/src/backend.rs:170,1
    - Dst: Some
      Src: /src/opendal/core/services/tos/src/backend.rs:191,1
    - Dst: Some
      Src: /src/opendal/core/services/tos/src/backend.rs:193,1
    - Dst: Some
      Src: /src/opendal/core/services/tos/src/backend.rs:195,1
    - Dst: Some
      Src: /src/opendal/core/services/tos/src/backend.rs:199,1
    - Dst: Some
      Src: /src/opendal/core/services/tos/src/backend.rs:204,1
    - Dst: Some
      Src: /src/opendal/core/services/tos/src/backend.rs:206,1
    - Dst: Some
      Src: /src/opendal/core/services/tos/src/backend.rs:208,1
    - Dst: Default::default
      Src: /src/opendal/core/services/tos/src/backend.rs:226,1
    - Dst: Self::strip_prefix
      Src: /src/opendal/core/services/tos/src/backend.rs:230,1
    - Dst: Self::strip_prefix
      Src: /src/opendal/core/services/tos/src/backend.rs:232,1
    - Dst: Self::clone
      Src: /src/opendal/core/services/tos/src/backend.rs:242,1
    - Dst: to_string
      Src: /src/opendal/core/services/tos/src/backend.rs:243,1
    - Dst: Ok
      Src: /src/opendal/core/services/tos/src/backend.rs:250,1
    - Dst: Arc::new
      Src: /src/opendal/core/services/tos/src/backend.rs:251,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 104
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 253
      start: 139
    functionDepth: 35
    functionLinenumber: 139
    functionLinenumberEnd: 253
    functionName: TosBuilder::build
    functionSourceFile: /src/opendal/core/services/tos/src/backend.rs
    functionUses: 0
    functionsReached:
    - is_none
    - as_deref
    - Self::push_front
    - Default::default
    - EnvCredentialProvider::new
    - clone
    - Arc::new
    - ProvideCredentialChain::new
    - Signer::new
    - Self::clone
    - unwrap_or_else
    - ServiceInfo::new
    - Context::new
    - Ok
    - unwrap
    - normalize_root
    - '&str::to_string'
    - Self::strip_prefix
    - RequestSigner::new
    - unwrap_or_default
    - Self::push
    - Some
    - to_string
    - with_env
    - Self::with_file_read
    - Self::with_security_token
    - StaticCredentialProvider::new
    linkageType: ''
    returnType: Result
    signature: fn build(self) -> Result<impl Service>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: clone
      Src: /src/opendal/core/services/tos/src/backend.rs:269,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 270
      start: 268
    functionDepth: 2
    functionLinenumber: 268
    functionLinenumberEnd: 270
    functionName: TosBackend::info
    functionSourceFile: /src/opendal/core/services/tos/src/backend.rs
    functionUses: 0
    functionsReached:
    - clone
    linkageType: ''
    returnType: ServiceInfo
    signature: fn info(&self) -> ServiceInfo
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 274
      start: 272
    functionDepth: 0
    functionLinenumber: 272
    functionLinenumberEnd: 274
    functionName: TosBackend::capability
    functionSourceFile: /src/opendal/core/services/tos/src/backend.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Capability
    signature: fn capability(&self) -> Capability
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/core/services/tos/src/backend.rs:282,1
    - Dst: Error::new
      Src: /src/opendal/core/services/tos/src/backend.rs:282,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - _ctx
    - _path
    - _args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpCreateDir
    constantsTouched: []
    func_position:
      end: 286
      start: 276
    functionDepth: 36
    functionLinenumber: 276
    functionLinenumberEnd: 286
    functionName: TosBackend::create_dir
    functionSourceFile: /src/opendal/core/services/tos/src/backend.rs
    functionUses: 0
    functionsReached:
    - Error::new
    - Err
    linkageType: ''
    returnType: Result
    signature: 'async fn create_dir(&self,_ctx: &OperationContext,_path: &str,_args:
      OpCreateDir,) -> Result<RpCreateDir>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: tos_head_object
      Src: /src/opendal/core/services/tos/src/backend.rs:289,1
    - Dst: status
      Src: /src/opendal/core/services/tos/src/backend.rs:291,1
    - Dst: headers
      Src: /src/opendal/core/services/tos/src/backend.rs:295,1
    - Dst: core::tos_parse_into_metadata
      Src: /src/opendal/core/services/tos/src/backend.rs:296,1
    - Dst: parse_prefixed_headers
      Src: /src/opendal/core/services/tos/src/backend.rs:298,1
    - Dst: HashMap::is_empty
      Src: /src/opendal/core/services/tos/src/backend.rs:299,1
    - Dst: Result::with_user_metadata
      Src: /src/opendal/core/services/tos/src/backend.rs:300,1
    - Dst: parse_header_to_str
      Src: /src/opendal/core/services/tos/src/backend.rs:303,1
    - Dst: Result::set_version
      Src: /src/opendal/core/services/tos/src/backend.rs:304,1
    - Dst: parse_header_to_str
      Src: /src/opendal/core/services/tos/src/backend.rs:307,1
    - Dst: map
      Src: /src/opendal/core/services/tos/src/backend.rs:307,1
    - Dst: parse::<bool>
      Src: /src/opendal/core/services/tos/src/backend.rs:309,1
    - Dst: map_err
      Src: /src/opendal/core/services/tos/src/backend.rs:309,1
    - Dst: Error::new
      Src: /src/opendal/core/services/tos/src/backend.rs:310,1
    - Dst: Self::set_source
      Src: /src/opendal/core/services/tos/src/backend.rs:310,1
    - Dst: transpose
      Src: /src/opendal/core/services/tos/src/backend.rs:307,1
    - Dst: Result::with_mode
      Src: /src/opendal/core/services/tos/src/backend.rs:316,1
    - Dst: Ok
      Src: /src/opendal/core/services/tos/src/backend.rs:323,1
    - Dst: RpStat::new
      Src: /src/opendal/core/services/tos/src/backend.rs:323,1
    - Dst: Err
      Src: /src/opendal/core/services/tos/src/backend.rs:325,1
    - Dst: core::parse_error
      Src: /src/opendal/core/services/tos/src/backend.rs:325,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 57
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpStat
    constantsTouched: []
    func_position:
      end: 327
      start: 288
    functionDepth: 40
    functionLinenumber: 288
    functionLinenumberEnd: 327
    functionName: TosBackend::stat
    functionSourceFile: /src/opendal/core/services/tos/src/backend.rs
    functionUses: 0
    functionsReached:
    - status
    - map
    - map_err
    - Result::with_mode
    - Ok
    - parse_header_to_str
    - Result::with_user_metadata
    - core::tos_parse_into_metadata
    - headers
    - parse_prefixed_headers
    - Self::set_source
    - transpose
    - HashMap::is_empty
    - tos_head_object
    - RpStat::new
    - Result::set_version
    - parse::<bool>
    - Error::new
    - Err
    - core::parse_error
    linkageType: ''
    returnType: Result
    signature: 'async fn stat(&self, ctx: &OperationContext, path: &str, args: OpStat)
      -> Result<RpStat>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/core/services/tos/src/backend.rs:330,1
    - Dst: oio::StreamReader::new
      Src: /src/opendal/core/services/tos/src/backend.rs:330,1
    - Dst: TosReader::new
      Src: /src/opendal/core/services/tos/src/backend.rs:330,1
    - Dst: TosBackend::clone
      Src: /src/opendal/core/services/tos/src/backend.rs:331,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/tos/src/backend.rs:332,1
    - Dst: Ok
      Src: /src/opendal/core/services/tos/src/backend.rs:338,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpRead
    constantsTouched: []
    func_position:
      end: 339
      start: 328
    functionDepth: 3
    functionLinenumber: 328
    functionLinenumberEnd: 339
    functionName: TosBackend::read
    functionSourceFile: /src/opendal/core/services/tos/src/backend.rs
    functionUses: 0
    functionsReached:
    - Result::clone
    - Ok
    - TosBackend::clone
    - oio::StreamReader::new
    - TosReader::new
    linkageType: ''
    returnType: Result
    signature: 'fn read(&self, ctx: &OperationContext, path: &str, args: OpRead) ->
      Result<Self::Reader>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: TosWriter::new
      Src: /src/opendal/core/services/tos/src/backend.rs:343,1
    - Dst: clone
      Src: /src/opendal/core/services/tos/src/backend.rs:343,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/tos/src/backend.rs:343,1
    - Dst: OpStat::clone
      Src: /src/opendal/core/services/tos/src/backend.rs:343,1
    - Dst: oio::MultipartWriter::new
      Src: /src/opendal/core/services/tos/src/backend.rs:345,1
    - Dst: Result::executor
      Src: /src/opendal/core/services/tos/src/backend.rs:345,1
    - Dst: Self::clone
      Src: /src/opendal/core/services/tos/src/backend.rs:345,1
    - Dst: OpStat::concurrent
      Src: /src/opendal/core/services/tos/src/backend.rs:345,1
    - Dst: Ok
      Src: /src/opendal/core/services/tos/src/backend.rs:347,1
    - Dst: Ok
      Src: /src/opendal/core/services/tos/src/backend.rs:350,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 18
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpWrite
    constantsTouched: []
    func_position:
      end: 351
      start: 341
    functionDepth: 30
    functionLinenumber: 341
    functionLinenumberEnd: 351
    functionName: TosBackend::write
    functionSourceFile: /src/opendal/core/services/tos/src/backend.rs
    functionUses: 0
    functionsReached:
    - Result::clone
    - oio::MultipartWriter::new
    - OpStat::clone
    - TosWriter::new
    - Ok
    - Result::executor
    - clone
    - Self::clone
    - OpStat::concurrent
    linkageType: ''
    returnType: Result
    signature: 'fn write(&self, ctx: &OperationContext, path: &str, args: OpWrite)
      -> Result<Self::Writer>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: TosDeleter::new
      Src: /src/opendal/core/services/tos/src/backend.rs:355,1
    - Dst: clone
      Src: /src/opendal/core/services/tos/src/backend.rs:355,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/tos/src/backend.rs:355,1
    - Dst: Ok
      Src: /src/opendal/core/services/tos/src/backend.rs:356,1
    - Dst: oio::BatchDeleter::new
      Src: /src/opendal/core/services/tos/src/backend.rs:356,1
    - Dst: Ok
      Src: /src/opendal/core/services/tos/src/backend.rs:362,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - '&OperationContext'
    constantsTouched: []
    func_position:
      end: 363
      start: 353
    functionDepth: 4
    functionLinenumber: 353
    functionLinenumberEnd: 363
    functionName: TosBackend::delete
    functionSourceFile: /src/opendal/core/services/tos/src/backend.rs
    functionUses: 0
    functionsReached:
    - Result::clone
    - Ok
    - clone
    - TosDeleter::new
    - oio::BatchDeleter::new
    linkageType: ''
    returnType: Result
    signature: 'fn delete(&self, ctx: &OperationContext) -> Result<Self::Deleter>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: OpStat::versions
      Src: /src/opendal/core/services/tos/src/backend.rs:367,1
    - Dst: OpStat::deleted
      Src: /src/opendal/core/services/tos/src/backend.rs:367,1
    - Dst: TwoWays::Two
      Src: /src/opendal/core/services/tos/src/backend.rs:368,1
    - Dst: oio::PageLister::new
      Src: /src/opendal/core/services/tos/src/backend.rs:368,1
    - Dst: TosObjectVersionsLister::new
      Src: /src/opendal/core/services/tos/src/backend.rs:368,1
    - Dst: clone
      Src: /src/opendal/core/services/tos/src/backend.rs:369,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/tos/src/backend.rs:370,1
    - Dst: TwoWays::One
      Src: /src/opendal/core/services/tos/src/backend.rs:375,1
    - Dst: oio::PageLister::new
      Src: /src/opendal/core/services/tos/src/backend.rs:375,1
    - Dst: TosLister::new
      Src: /src/opendal/core/services/tos/src/backend.rs:375,1
    - Dst: clone
      Src: /src/opendal/core/services/tos/src/backend.rs:376,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/tos/src/backend.rs:377,1
    - Dst: Ok
      Src: /src/opendal/core/services/tos/src/backend.rs:382,1
    - Dst: Ok
      Src: /src/opendal/core/services/tos/src/backend.rs:385,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 25
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpList
    constantsTouched: []
    func_position:
      end: 386
      start: 365
    functionDepth: 35
    functionLinenumber: 365
    functionLinenumberEnd: 386
    functionName: TosBackend::list
    functionSourceFile: /src/opendal/core/services/tos/src/backend.rs
    functionUses: 0
    functionsReached:
    - Result::clone
    - TosLister::new
    - Ok
    - OpStat::versions
    - TosObjectVersionsLister::new
    - clone
    - TwoWays::One
    - oio::PageLister::new
    - TwoWays::Two
    - OpStat::deleted
    linkageType: ''
    returnType: Result
    signature: 'fn list(&self, ctx: &OperationContext, path: &str, args: OpList) ->
      Result<Self::Lister>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: copier::new_tos_copier
      Src: /src/opendal/core/services/tos/src/backend.rs:397,1
    - Dst: clone
      Src: /src/opendal/core/services/tos/src/backend.rs:397,1
    - Dst: Ok
      Src: /src/opendal/core/services/tos/src/backend.rs:398,1
    - Dst: Ok
      Src: /src/opendal/core/services/tos/src/backend.rs:401,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 5
    argNames:
    - ctx
    - from
    - to
    - args
    - opts
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    - OpCopy
    - OpCopier
    constantsTouched: []
    func_position:
      end: 402
      start: 388
    functionDepth: 37
    functionLinenumber: 388
    functionLinenumberEnd: 402
    functionName: TosBackend::copy
    functionSourceFile: /src/opendal/core/services/tos/src/backend.rs
    functionUses: 0
    functionsReached:
    - copier::new_tos_copier
    - clone
    - Ok
    linkageType: ''
    returnType: Result
    signature: 'fn copy(&self,ctx: &OperationContext,from: &str,to: &str,args: OpCopy,opts:
      OpCopier,) -> Result<Self::Copier>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/core/services/tos/src/backend.rs:411,1
    - Dst: Error::new
      Src: /src/opendal/core/services/tos/src/backend.rs:411,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - _ctx
    - _from
    - _to
    - _args
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    - OpRename
    constantsTouched: []
    func_position:
      end: 415
      start: 404
    functionDepth: 36
    functionLinenumber: 404
    functionLinenumberEnd: 415
    functionName: TosBackend::rename
    functionSourceFile: /src/opendal/core/services/tos/src/backend.rs
    functionUses: 0
    functionsReached:
    - Error::new
    - Err
    linkageType: ''
    returnType: Result
    signature: 'async fn rename(&self,_ctx: &OperationContext,_from: &str,_to: &str,_args:
      OpRename,) -> Result<RpRename>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/core/services/tos/src/backend.rs:423,1
    - Dst: Error::new
      Src: /src/opendal/core/services/tos/src/backend.rs:423,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - _ctx
    - _path
    - _args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpPresign
    constantsTouched: []
    func_position:
      end: 427
      start: 417
    functionDepth: 36
    functionLinenumber: 417
    functionLinenumberEnd: 427
    functionName: TosBackend::presign
    functionSourceFile: /src/opendal/core/services/tos/src/backend.rs
    functionUses: 0
    functionsReached:
    - Error::new
    - Err
    linkageType: ''
    returnType: Result
    signature: 'async fn presign(&self,_ctx: &OperationContext,_path: &str,_args:
      OpPresign,) -> Result<RpPresign>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::debug_struct
      Src: /src/opendal/core/services/azfile/src/config.rs:45,1
    - Dst: field
      Src: /src/opendal/core/services/azfile/src/config.rs:45,1
    - Dst: field
      Src: /src/opendal/core/services/azfile/src/config.rs:45,1
    - Dst: field
      Src: /src/opendal/core/services/azfile/src/config.rs:45,1
    - Dst: finish_non_exhaustive
      Src: /src/opendal/core/services/azfile/src/config.rs:45,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 16
    argCount: 1
    argNames:
    - f
    argTypes:
    - '&mut std::fmt::Formatter<''_>'
    constantsTouched: []
    func_position:
      end: 50
      start: 44
    functionDepth: 5
    functionLinenumber: 44
    functionLinenumberEnd: 50
    functionName: AzfileConfig::fmt
    functionSourceFile: /src/opendal/core/services/azfile/src/config.rs
    functionUses: 0
    functionsReached:
    - field
    - Result::debug_struct
    - finish_non_exhaustive
    linkageType: ''
    returnType: std::fmt::Result
    signature: 'fn fmt(&self, f: &mut std::fmt::Formatter<''_>) -> std::fmt::Result'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::options
      Src: /src/opendal/core/services/azfile/src/config.rs:57,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/azfile/src/config.rs:57,1
    - Dst: Result::authority
      Src: /src/opendal/core/services/azfile/src/config.rs:58,1
    - Dst: Result::insert
      Src: /src/opendal/core/services/azfile/src/config.rs:59,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/azfile/src/config.rs:59,1
    - Dst: Result::name
      Src: /src/opendal/core/services/azfile/src/config.rs:62,1
    - Dst: Result::and_then
      Src: /src/opendal/core/services/azfile/src/config.rs:62,1
    - Dst: Self::split
      Src: /src/opendal/core/services/azfile/src/config.rs:64,1
    - Dst: next
      Src: /src/opendal/core/services/azfile/src/config.rs:64,1
    - Dst: filter
      Src: /src/opendal/core/services/azfile/src/config.rs:62,1
    - Dst: is_empty
      Src: /src/opendal/core/services/azfile/src/config.rs:65,1
    - Dst: Result::entry
      Src: /src/opendal/core/services/azfile/src/config.rs:67,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/azfile/src/config.rs:67,1
    - Dst: crate::Entry::or_insert_with
      Src: /src/opendal/core/services/azfile/src/config.rs:67,1
    - Dst: to_string
      Src: /src/opendal/core/services/azfile/src/config.rs:68,1
    - Dst: Result::root
      Src: /src/opendal/core/services/azfile/src/config.rs:71,1
    - Dst: Result::split_once
      Src: /src/opendal/core/services/azfile/src/config.rs:72,1
    - Dst: is_empty
      Src: /src/opendal/core/services/azfile/src/config.rs:73,1
    - Dst: Err
      Src: /src/opendal/core/services/azfile/src/config.rs:74,1
    - Dst: opendal_core::Error::new
      Src: /src/opendal/core/services/azfile/src/config.rs:74,1
    - Dst: Self::with_context
      Src: /src/opendal/core/services/azfile/src/config.rs:74,1
    - Dst: Result::insert
      Src: /src/opendal/core/services/azfile/src/config.rs:80,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/azfile/src/config.rs:80,1
    - Dst: to_string
      Src: /src/opendal/core/services/azfile/src/config.rs:80,1
    - Dst: is_empty
      Src: /src/opendal/core/services/azfile/src/config.rs:81,1
    - Dst: Result::insert
      Src: /src/opendal/core/services/azfile/src/config.rs:82,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/azfile/src/config.rs:82,1
    - Dst: to_string
      Src: /src/opendal/core/services/azfile/src/config.rs:82,1
    - Dst: Result::is_empty
      Src: /src/opendal/core/services/azfile/src/config.rs:84,1
    - Dst: Result::insert
      Src: /src/opendal/core/services/azfile/src/config.rs:85,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/azfile/src/config.rs:85,1
    - Dst: Result::to_string
      Src: /src/opendal/core/services/azfile/src/config.rs:85,1
    - Dst: Result::contains_key
      Src: /src/opendal/core/services/azfile/src/config.rs:89,1
    - Dst: Err
      Src: /src/opendal/core/services/azfile/src/config.rs:90,1
    - Dst: opendal_core::Error::new
      Src: /src/opendal/core/services/azfile/src/config.rs:90,1
    - Dst: Self::with_context
      Src: /src/opendal/core/services/azfile/src/config.rs:90,1
    - Dst: Self::from_iter
      Src: /src/opendal/core/services/azfile/src/config.rs:97,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 100
    argCount: 1
    argNames:
    - uri
    argTypes:
    - '&opendal_core::OperatorUri'
    constantsTouched: []
    func_position:
      end: 98
      start: 56
    functionDepth: 35
    functionLinenumber: 56
    functionLinenumberEnd: 98
    functionName: AzfileConfig::from_uri
    functionSourceFile: /src/opendal/core/services/azfile/src/config.rs
    functionUses: 2
    functionsReached:
    - Self::split
    - Result::root
    - Result::is_empty
    - Self::with_context
    - Result::clone
    - Result::to_string
    - crate::Entry::or_insert_with
    - '&str::to_string'
    - Result::entry
    - next
    - Self::from_iter
    - Result::insert
    - is_empty
    - Result::contains_key
    - Result::split_once
    - to_string
    - filter
    - Result::and_then
    - Err
    - Result::name
    - Result::authority
    - opendal_core::Error::new
    - Result::options
    linkageType: ''
    returnType: opendal_core::Result
    signature: 'fn from_uri(uri: &opendal_core::OperatorUri) -> opendal_core::Result<Self>'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 103
      start: 101
    functionDepth: 0
    functionLinenumber: 101
    functionLinenumberEnd: 103
    functionName: AzfileConfig::into_builder
    functionSourceFile: /src/opendal/core/services/azfile/src/config.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Self::Builder
    signature: fn into_builder(self) -> Self::Builder
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: OperatorUri::new
      Src: /src/opendal/core/services/azfile/src/config.rs:114,1
    - Dst: Vec::<(String, String)>::new
      Src: /src/opendal/core/services/azfile/src/config.rs:116,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/services/azfile/src/config.rs:114,1
    - Dst: AzfileConfig::from_uri
      Src: /src/opendal/core/services/azfile/src/config.rs:120,1
    - Dst: opendal_core::Result::unwrap
      Src: /src/opendal/core/services/azfile/src/config.rs:120,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 128
      start: 113
    functionDepth: 29
    functionLinenumber: 113
    functionLinenumberEnd: 128
    functionName: tests::from_uri_sets_endpoint_share_root_and_account
    functionSourceFile: /src/opendal/core/services/azfile/src/config.rs
    functionUses: 0
    functionsReached:
    - Vec::<(String, String)>::new
    - OperatorUri::new
    - Result::unwrap
    - AzfileConfig::from_uri
    - opendal_core::Result::unwrap
    linkageType: ''
    returnType: void
    signature: fn from_uri_sets_endpoint_share_root_and_account()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: OperatorUri::new
      Src: /src/opendal/core/services/azfile/src/config.rs:132,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/services/azfile/src/config.rs:132,1
    - Dst: AzfileConfig::from_uri
      Src: /src/opendal/core/services/azfile/src/config.rs:138,1
    - Dst: opendal_core::Result::unwrap
      Src: /src/opendal/core/services/azfile/src/config.rs:138,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 144
      start: 131
    functionDepth: 29
    functionLinenumber: 131
    functionLinenumberEnd: 144
    functionName: tests::from_uri_accepts_share_from_query
    functionSourceFile: /src/opendal/core/services/azfile/src/config.rs
    functionUses: 0
    functionsReached:
    - opendal_core::Result::unwrap
    - OperatorUri::new
    - Result::unwrap
    - AzfileConfig::from_uri
    linkageType: ''
    returnType: void
    signature: fn from_uri_accepts_share_from_query()
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - core
    - ctx
    argTypes:
    - Arc<AzfileCore>
    - OperationContext
    constantsTouched: []
    func_position:
      end: 35
      start: 33
    functionDepth: 0
    functionLinenumber: 33
    functionLinenumberEnd: 35
    functionName: AzfileDeleter::new
    functionSourceFile: /src/opendal/core/services/azfile/src/deleter.rs
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(core: Arc<AzfileCore>, ctx: OperationContext) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: ends_with
      Src: /src/opendal/core/services/azfile/src/deleter.rs:40,1
    - Dst: azfile_delete_dir
      Src: /src/opendal/core/services/azfile/src/deleter.rs:41,1
    - Dst: azfile_delete_file
      Src: /src/opendal/core/services/azfile/src/deleter.rs:43,1
    - Dst: status
      Src: /src/opendal/core/services/azfile/src/deleter.rs:46,1
    - Dst: Ok
      Src: /src/opendal/core/services/azfile/src/deleter.rs:48,1
    - Dst: Err
      Src: /src/opendal/core/services/azfile/src/deleter.rs:49,1
    - Dst: super::core::parse_error
      Src: /src/opendal/core/services/azfile/src/deleter.rs:49,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 27
    argCount: 2
    argNames:
    - path
    argTypes:
    - String
    - OpDelete
    constantsTouched: []
    func_position:
      end: 51
      start: 39
    functionDepth: 33
    functionLinenumber: 39
    functionLinenumberEnd: 51
    functionName: AzfileDeleter::delete_once
    functionSourceFile: /src/opendal/core/services/azfile/src/deleter.rs
    functionUses: 0
    functionsReached:
    - azfile_delete_dir
    - status
    - Ok
    - ends_with
    - Err
    - azfile_delete_file
    - super::core::parse_error
    linkageType: ''
    returnType: Result
    signature: 'async fn delete_once(&self, path: String, _: OpDelete) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 4
    argNames:
    - core
    - ctx
    - path
    - limit
    argTypes:
    - Arc<AzfileCore>
    - OperationContext
    - String
    - Option<usize>
    constantsTouched: []
    func_position:
      end: 50
      start: 38
    functionDepth: 0
    functionLinenumber: 38
    functionLinenumberEnd: 50
    functionName: AzfileLister::new
    functionSourceFile: /src/opendal/core/services/azfile/src/lister.rs
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(core: Arc<AzfileCore>,ctx: OperationContext,path: String,limit:
      Option<usize>,) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: azfile_list
      Src: /src/opendal/core/services/azfile/src/lister.rs:55,1
    - Dst: status
      Src: /src/opendal/core/services/azfile/src/lister.rs:60,1
    - Dst: Ok
      Src: /src/opendal/core/services/azfile/src/lister.rs:65,1
    - Dst: Err
      Src: /src/opendal/core/services/azfile/src/lister.rs:67,1
    - Dst: super::core::parse_error
      Src: /src/opendal/core/services/azfile/src/lister.rs:67,1
    - Dst: is_empty
      Src: /src/opendal/core/services/azfile/src/lister.rs:71,1
    - Dst: oio::Entry::new
      Src: /src/opendal/core/services/azfile/src/lister.rs:72,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/azfile/src/lister.rs:72,1
    - Dst: push_back
      Src: /src/opendal/core/services/azfile/src/lister.rs:73,1
    - Dst: into_body
      Src: /src/opendal/core/services/azfile/src/lister.rs:76,1
    - Dst: de::from_reader
      Src: /src/opendal/core/services/azfile/src/lister.rs:79,1
    - Dst: Result::reader
      Src: /src/opendal/core/services/azfile/src/lister.rs:79,1
    - Dst: map_err
      Src: /src/opendal/core/services/azfile/src/lister.rs:79,1
    - Dst: is_empty
      Src: /src/opendal/core/services/azfile/src/lister.rs:81,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/azfile/src/lister.rs:88,1
    - Dst: Self::with_etag
      Src: /src/opendal/core/services/azfile/src/lister.rs:88,1
    - Dst: Self::with_last_modified
      Src: /src/opendal/core/services/azfile/src/lister.rs:88,1
    - Dst: Timestamp::parse_rfc2822
      Src: /src/opendal/core/services/azfile/src/lister.rs:90,1
    - Dst: Result::set_content_length
      Src: /src/opendal/core/services/azfile/src/lister.rs:92,1
    - Dst: clone
      Src: /src/opendal/core/services/azfile/src/lister.rs:94,1
    - Dst: trim_start_matches
      Src: /src/opendal/core/services/azfile/src/lister.rs:94,1
    - Dst: to_string
      Src: /src/opendal/core/services/azfile/src/lister.rs:94,1
    - Dst: push_back
      Src: /src/opendal/core/services/azfile/src/lister.rs:95,1
    - Dst: oio::Entry::new
      Src: /src/opendal/core/services/azfile/src/lister.rs:95,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/azfile/src/lister.rs:99,1
    - Dst: Self::with_etag
      Src: /src/opendal/core/services/azfile/src/lister.rs:99,1
    - Dst: Self::with_last_modified
      Src: /src/opendal/core/services/azfile/src/lister.rs:99,1
    - Dst: Timestamp::parse_rfc2822
      Src: /src/opendal/core/services/azfile/src/lister.rs:101,1
    - Dst: clone
      Src: /src/opendal/core/services/azfile/src/lister.rs:102,1
    - Dst: trim_start_matches
      Src: /src/opendal/core/services/azfile/src/lister.rs:102,1
    - Dst: to_string
      Src: /src/opendal/core/services/azfile/src/lister.rs:102,1
    - Dst: push_back
      Src: /src/opendal/core/services/azfile/src/lister.rs:103,1
    - Dst: oio::Entry::new
      Src: /src/opendal/core/services/azfile/src/lister.rs:103,1
    - Dst: Ok
      Src: /src/opendal/core/services/azfile/src/lister.rs:106,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 142
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - '&mut oio::PageContext'
    constantsTouched: []
    func_position:
      end: 107
      start: 54
    functionDepth: 37
    functionLinenumber: 54
    functionLinenumberEnd: 107
    functionName: AzfileLister::next_page
    functionSourceFile: /src/opendal/core/services/azfile/src/lister.rs
    functionUses: 0
    functionsReached:
    - status
    - Self::with_last_modified
    - clone
    - Result::reader
    - Self::with_etag
    - map_err
    - Ok
    - azfile_list
    - Metadata::new
    - Timestamp::parse_rfc2822
    - into_body
    - is_empty
    - de::from_reader
    - super::core::parse_error
    - trim_start_matches
    - to_string
    - oio::Entry::new
    - push_back
    - Err
    - Result::set_content_length
    linkageType: ''
    returnType: Result
    signature: 'async fn next_page(&self, ctx: &mut oio::PageContext) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: from_str
      Src: /src/opendal/core/services/azfile/src/lister.rs:214,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/services/azfile/src/lister.rs:214,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 229
      start: 175
    functionDepth: 34
    functionLinenumber: 175
    functionLinenumberEnd: 229
    functionName: tests::test_parse_list_result
    functionSourceFile: /src/opendal/core/services/azfile/src/lister.rs
    functionUses: 0
    functionsReached:
    - from_str
    - Result::unwrap
    linkageType: ''
    returnType: void
    signature: fn test_parse_list_result()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: to_string
      Src: /src/opendal/core/services/azfile/src/reader.rs:42,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 4
    argNames:
    - backend
    - ctx
    - path
    argTypes:
    - AzfileBackend
    - OperationContext
    - '&str'
    - OpRead
    constantsTouched: []
    func_position:
      end: 44
      start: 33
    functionDepth: 2
    functionLinenumber: 33
    functionLinenumberEnd: 44
    functionName: AzfileReader::new
    functionSourceFile: /src/opendal/core/services/azfile/src/reader.rs
    functionUses: 1
    functionsReached:
    - to_string
    linkageType: ''
    returnType: Self
    signature: 'pub(super) fn new(backend: AzfileBackend,ctx: OperationContext,path:
      &str,_: OpRead,) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: as_str
      Src: /src/opendal/core/services/azfile/src/reader.rs:50,1
    - Dst: azfile_read
      Src: /src/opendal/core/services/azfile/src/reader.rs:51,1
    - Dst: status
      Src: /src/opendal/core/services/azfile/src/reader.rs:53,1
    - Dst: RpRead::new
      Src: /src/opendal/core/services/azfile/src/reader.rs:56,1
    - Dst: parse_into_metadata
      Src: /src/opendal/core/services/azfile/src/reader.rs:56,1
    - Dst: headers
      Src: /src/opendal/core/services/azfile/src/reader.rs:56,1
    - Dst: into_body
      Src: /src/opendal/core/services/azfile/src/reader.rs:57,1
    - Dst: into_parts
      Src: /src/opendal/core/services/azfile/src/reader.rs:60,1
    - Dst: to_buffer
      Src: /src/opendal/core/services/azfile/src/reader.rs:61,1
    - Dst: Err
      Src: /src/opendal/core/services/azfile/src/reader.rs:62,1
    - Dst: super::core::parse_error
      Src: /src/opendal/core/services/azfile/src/reader.rs:62,1
    - Dst: Response::from_parts
      Src: /src/opendal/core/services/azfile/src/reader.rs:62,1
    - Dst: Ok
      Src: /src/opendal/core/services/azfile/src/reader.rs:66,1
    - Dst: Box::new
      Src: /src/opendal/core/services/azfile/src/reader.rs:66,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 38
    argCount: 1
    argNames:
    - range
    argTypes:
    - BytesRange
    constantsTouched: []
    func_position:
      end: 67
      start: 48
    functionDepth: 37
    functionLinenumber: 48
    functionLinenumberEnd: 67
    functionName: AzfileReader::open
    functionSourceFile: /src/opendal/core/services/azfile/src/reader.rs
    functionUses: 0
    functionsReached:
    - parse_into_metadata
    - azfile_read
    - to_buffer
    - status
    - Ok
    - Box::new
    - into_body
    - Err
    - Response::from_parts
    - as_str
    - headers
    - into_parts
    - RpRead::new
    - super::core::parse_error
    linkageType: ''
    returnType: Result
    signature: 'async fn open(&self, range: BytesRange) -> Result<(RpRead, Box<dyn
      oio::ReadStreamDyn>)>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::debug_struct
      Src: /src/opendal/core/services/azfile/src/core.rs:56,1
    - Dst: field
      Src: /src/opendal/core/services/azfile/src/core.rs:56,1
    - Dst: field
      Src: /src/opendal/core/services/azfile/src/core.rs:56,1
    - Dst: field
      Src: /src/opendal/core/services/azfile/src/core.rs:56,1
    - Dst: finish_non_exhaustive
      Src: /src/opendal/core/services/azfile/src/core.rs:56,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 16
    argCount: 1
    argNames:
    - f
    argTypes:
    - '&mut std::fmt::Formatter<''_>'
    constantsTouched: []
    func_position:
      end: 61
      start: 55
    functionDepth: 5
    functionLinenumber: 55
    functionLinenumberEnd: 61
    functionName: AzfileCore::fmt
    functionSourceFile: /src/opendal/core/services/azfile/src/core.rs
    functionUses: 0
    functionsReached:
    - field
    - Result::debug_struct
    - finish_non_exhaustive
    linkageType: ''
    returnType: std::fmt::Result
    signature: 'fn fmt(&self, f: &mut std::fmt::Formatter<''_>) -> std::fmt::Result'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: clone
      Src: /src/opendal/core/services/azfile/src/core.rs:66,1
    - Dst: with_context
      Src: /src/opendal/core/services/azfile/src/core.rs:66,1
    - Dst: clone
      Src: /src/opendal/core/services/azfile/src/core.rs:67,1
    - Dst: with_http_send
      Src: /src/opendal/core/services/azfile/src/core.rs:67,1
    - Dst: Result::http_transport
      Src: /src/opendal/core/services/azfile/src/core.rs:69,1
    - Dst: Self::clone
      Src: /src/opendal/core/services/azfile/src/core.rs:69,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 14
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - '&OperationContext'
    constantsTouched: []
    func_position:
      end: 71
      start: 65
    functionDepth: 6
    functionLinenumber: 65
    functionLinenumberEnd: 71
    functionName: AzfileCore::signer
    functionSourceFile: /src/opendal/core/services/azfile/src/core.rs
    functionUses: 1
    functionsReached:
    - with_http_send
    - clone
    - with_context
    - Self::clone
    - Result::http_transport
    linkageType: ''
    returnType: Signer
    signature: 'fn signer(&self, ctx: &OperationContext) -> Signer<Credential>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Request<T>::into_parts
      Src: /src/opendal/core/services/azfile/src/core.rs:74,1
    - Dst: insert
      Src: /src/opendal/core/services/azfile/src/core.rs:77,1
    - Dst: HeaderName::from_static
      Src: /src/opendal/core/services/azfile/src/core.rs:78,1
    - Dst: HeaderValue::from_static
      Src: /src/opendal/core/services/azfile/src/core.rs:80,1
    - Dst: AzfileCore::signer
      Src: /src/opendal/core/services/azfile/src/core.rs:83,1
    - Dst: Signer::sign
      Src: /src/opendal/core/services/azfile/src/core.rs:83,1
    - Dst: map_err
      Src: /src/opendal/core/services/azfile/src/core.rs:83,1
    - Dst: new_request_sign_error
      Src: /src/opendal/core/services/azfile/src/core.rs:86,1
    - Dst: Result::into
      Src: /src/opendal/core/services/azfile/src/core.rs:86,1
    - Dst: Ok
      Src: /src/opendal/core/services/azfile/src/core.rs:88,1
    - Dst: Request::from_parts
      Src: /src/opendal/core/services/azfile/src/core.rs:88,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 24
    argCount: 2
    argNames:
    - ctx
    - req
    argTypes:
    - '&OperationContext'
    - Request<T>
    constantsTouched: []
    func_position:
      end: 89
      start: 73
    functionDepth: 35
    functionLinenumber: 73
    functionLinenumberEnd: 89
    functionName: AzfileCore::sign
    functionSourceFile: /src/opendal/core/services/azfile/src/core.rs
    functionUses: 10
    functionsReached:
    - map_err
    - insert
    - HeaderValue::from_static
    - Ok
    - Signer::sign
    - HeaderName::from_static
    - Request<T>::into_parts
    - Result::into
    - AzfileCore::signer
    - Request::from_parts
    - new_request_sign_error
    linkageType: ''
    returnType: Result
    signature: 'pub async fn sign<T>(&self, ctx: &OperationContext, req: Request<T>)
      -> Result<Request<T>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::http_transport
      Src: /src/opendal/core/services/azfile/src/core.rs:97,1
    - Dst: Self::send
      Src: /src/opendal/core/services/azfile/src/core.rs:97,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - ctx
    - req
    argTypes:
    - '&OperationContext'
    - Request<Buffer>
    constantsTouched: []
    func_position:
      end: 98
      start: 92
    functionDepth: 37
    functionLinenumber: 92
    functionLinenumberEnd: 98
    functionName: AzfileCore::send
    functionSourceFile: /src/opendal/core/services/azfile/src/core.rs
    functionUses: 9
    functionsReached:
    - Result::http_transport
    - Self::send
    linkageType: ''
    returnType: Result
    signature: 'pub async fn send(&self,ctx: &OperationContext,req: Request<Buffer>,)
      -> Result<Response<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/azfile/src/core.rs:106,1
    - Dst: Request::get
      Src: /src/opendal/core/services/azfile/src/core.rs:115,1
    - Dst: (Vec::is_full
      Src: /src/opendal/core/services/azfile/src/core.rs:117,1
    - Dst: Option::header
      Src: /src/opendal/core/services/azfile/src/core.rs:118,1
    - Dst: (Vec::to_header
      Src: /src/opendal/core/services/azfile/src/core.rs:118,1
    - Dst: Option::extension
      Src: /src/opendal/core/services/azfile/src/core.rs:121,1
    - Dst: extension
      Src: /src/opendal/core/services/azfile/src/core.rs:121,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/azfile/src/core.rs:123,1
    - Dst: Option::body
      Src: /src/opendal/core/services/azfile/src/core.rs:125,1
    - Dst: Buffer::new
      Src: /src/opendal/core/services/azfile/src/core.rs:125,1
    - Dst: map_err
      Src: /src/opendal/core/services/azfile/src/core.rs:125,1
    - Dst: AzfileCore::sign
      Src: /src/opendal/core/services/azfile/src/core.rs:126,1
    - Dst: Result::http_transport
      Src: /src/opendal/core/services/azfile/src/core.rs:127,1
    - Dst: Self::fetch
      Src: /src/opendal/core/services/azfile/src/core.rs:127,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 36
    argCount: 3
    argNames:
    - ctx
    - path
    - range
    argTypes:
    - '&OperationContext'
    - '&str'
    - BytesRange
    constantsTouched: []
    func_position:
      end: 128
      start: 100
    functionDepth: 36
    functionLinenumber: 100
    functionLinenumberEnd: 128
    functionName: AzfileCore::azfile_read
    functionSourceFile: /src/opendal/core/services/azfile/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - extension
    - Request::get
    - (Vec::to_header
    - Buffer::new
    - (Vec::is_full
    - build_abs_path
    - Option::extension
    - AzfileCore::sign
    - ServiceOperation
    - Self::fetch
    - Result::http_transport
    - Option::body
    - Option::header
    linkageType: ''
    returnType: Result
    signature: 'pub async fn azfile_read(&self,ctx: &OperationContext,path: &str,range:
      BytesRange,) -> Result<Response<HttpBody>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/azfile/src/core.rs:137,1
    - Dst: String::trim_start_matches
      Src: /src/opendal/core/services/azfile/src/core.rs:137,1
    - Dst: to_string
      Src: /src/opendal/core/services/azfile/src/core.rs:137,1
    - Dst: Request::put
      Src: /src/opendal/core/services/azfile/src/core.rs:147,1
    - Dst: DeleteInput::header
      Src: /src/opendal/core/services/azfile/src/core.rs:151,1
    - Dst: DeleteInput::header
      Src: /src/opendal/core/services/azfile/src/core.rs:153,1
    - Dst: DeleteInput::header
      Src: /src/opendal/core/services/azfile/src/core.rs:156,1
    - Dst: OpStat::content_type
      Src: /src/opendal/core/services/azfile/src/core.rs:158,1
    - Dst: DeleteInput::header
      Src: /src/opendal/core/services/azfile/src/core.rs:159,1
    - Dst: OpStat::content_disposition
      Src: /src/opendal/core/services/azfile/src/core.rs:162,1
    - Dst: DeleteInput::header
      Src: /src/opendal/core/services/azfile/src/core.rs:163,1
    - Dst: OpStat::user_metadata
      Src: /src/opendal/core/services/azfile/src/core.rs:167,1
    - Dst: DeleteInput::header
      Src: /src/opendal/core/services/azfile/src/core.rs:169,1
    - Dst: DeleteInput::extension
      Src: /src/opendal/core/services/azfile/src/core.rs:173,1
    - Dst: extension
      Src: /src/opendal/core/services/azfile/src/core.rs:173,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/azfile/src/core.rs:175,1
    - Dst: DeleteInput::body
      Src: /src/opendal/core/services/azfile/src/core.rs:177,1
    - Dst: Buffer::new
      Src: /src/opendal/core/services/azfile/src/core.rs:177,1
    - Dst: map_err
      Src: /src/opendal/core/services/azfile/src/core.rs:177,1
    - Dst: AzfileCore::sign
      Src: /src/opendal/core/services/azfile/src/core.rs:178,1
    - Dst: AzfileCore::send
      Src: /src/opendal/core/services/azfile/src/core.rs:179,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 65
    argCount: 4
    argNames:
    - ctx
    - path
    - size
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - usize
    - '&OpWrite'
    constantsTouched: []
    func_position:
      end: 180
      start: 130
    functionDepth: 32
    functionLinenumber: 130
    functionLinenumberEnd: 180
    functionName: AzfileCore::azfile_create_file
    functionSourceFile: /src/opendal/core/services/azfile/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - to_string
    - extension
    - Buffer::new
    - Request::put
    - String::trim_start_matches
    - OpStat::content_disposition
    - AzfileCore::send
    - build_abs_path
    - DeleteInput::header
    - AzfileCore::sign
    - ServiceOperation
    - OpStat::user_metadata
    - DeleteInput::body
    - DeleteInput::extension
    - OpStat::content_type
    linkageType: ''
    returnType: Result
    signature: 'pub async fn azfile_create_file(&self,ctx: &OperationContext,path:
      &str,size: usize,args: &OpWrite,) -> Result<Response<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/azfile/src/core.rs:190,1
    - Dst: String::trim_start_matches
      Src: /src/opendal/core/services/azfile/src/core.rs:190,1
    - Dst: to_string
      Src: /src/opendal/core/services/azfile/src/core.rs:190,1
    - Dst: Request::put
      Src: /src/opendal/core/services/azfile/src/core.rs:201,1
    - Dst: DeleteInput::header
      Src: /src/opendal/core/services/azfile/src/core.rs:203,1
    - Dst: DeleteInput::header
      Src: /src/opendal/core/services/azfile/src/core.rs:205,1
    - Dst: DeleteInput::header
      Src: /src/opendal/core/services/azfile/src/core.rs:207,1
    - Dst: BytesRange::from
      Src: /src/opendal/core/services/azfile/src/core.rs:209,1
    - Dst: Self::to_header
      Src: /src/opendal/core/services/azfile/src/core.rs:209,1
    - Dst: DeleteInput::extension
      Src: /src/opendal/core/services/azfile/src/core.rs:212,1
    - Dst: extension
      Src: /src/opendal/core/services/azfile/src/core.rs:212,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/azfile/src/core.rs:214,1
    - Dst: DeleteInput::body
      Src: /src/opendal/core/services/azfile/src/core.rs:216,1
    - Dst: map_err
      Src: /src/opendal/core/services/azfile/src/core.rs:216,1
    - Dst: AzfileCore::sign
      Src: /src/opendal/core/services/azfile/src/core.rs:217,1
    - Dst: AzfileCore::send
      Src: /src/opendal/core/services/azfile/src/core.rs:218,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 43
    argCount: 5
    argNames:
    - ctx
    - path
    - size
    - position
    - body
    argTypes:
    - '&OperationContext'
    - '&str'
    - u64
    - u64
    - Buffer
    constantsTouched: []
    func_position:
      end: 219
      start: 182
    functionDepth: 36
    functionLinenumber: 182
    functionLinenumberEnd: 219
    functionName: AzfileCore::azfile_update
    functionSourceFile: /src/opendal/core/services/azfile/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - to_string
    - extension
    - Request::put
    - Self::to_header
    - BytesRange::from
    - String::trim_start_matches
    - AzfileCore::send
    - build_abs_path
    - DeleteInput::header
    - AzfileCore::sign
    - ServiceOperation
    - DeleteInput::body
    - DeleteInput::extension
    linkageType: ''
    returnType: Result
    signature: 'pub async fn azfile_update(&self,ctx: &OperationContext,path: &str,size:
      u64,position: u64,body: Buffer,) -> Result<Response<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/azfile/src/core.rs:226,1
    - Dst: Request::head
      Src: /src/opendal/core/services/azfile/src/core.rs:234,1
    - Dst: Result::extension
      Src: /src/opendal/core/services/azfile/src/core.rs:236,1
    - Dst: extension
      Src: /src/opendal/core/services/azfile/src/core.rs:236,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/azfile/src/core.rs:238,1
    - Dst: Result::body
      Src: /src/opendal/core/services/azfile/src/core.rs:240,1
    - Dst: Buffer::new
      Src: /src/opendal/core/services/azfile/src/core.rs:240,1
    - Dst: map_err
      Src: /src/opendal/core/services/azfile/src/core.rs:240,1
    - Dst: AzfileCore::sign
      Src: /src/opendal/core/services/azfile/src/core.rs:241,1
    - Dst: AzfileCore::send
      Src: /src/opendal/core/services/azfile/src/core.rs:242,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 23
    argCount: 2
    argNames:
    - ctx
    - path
    argTypes:
    - '&OperationContext'
    - '&str'
    constantsTouched: []
    func_position:
      end: 243
      start: 221
    functionDepth: 38
    functionLinenumber: 221
    functionLinenumberEnd: 243
    functionName: AzfileCore::azfile_get_file_properties
    functionSourceFile: /src/opendal/core/services/azfile/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - extension
    - Request::head
    - Buffer::new
    - Result::extension
    - AzfileCore::send
    - build_abs_path
    - AzfileCore::sign
    - ServiceOperation
    - Result::body
    linkageType: ''
    returnType: Result
    signature: 'pub async fn azfile_get_file_properties(&self,ctx: &OperationContext,path:
      &str,) -> Result<Response<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/azfile/src/core.rs:250,1
    - Dst: Request::head
      Src: /src/opendal/core/services/azfile/src/core.rs:259,1
    - Dst: Result::extension
      Src: /src/opendal/core/services/azfile/src/core.rs:261,1
    - Dst: extension
      Src: /src/opendal/core/services/azfile/src/core.rs:261,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/azfile/src/core.rs:263,1
    - Dst: Result::body
      Src: /src/opendal/core/services/azfile/src/core.rs:265,1
    - Dst: Buffer::new
      Src: /src/opendal/core/services/azfile/src/core.rs:265,1
    - Dst: map_err
      Src: /src/opendal/core/services/azfile/src/core.rs:265,1
    - Dst: AzfileCore::sign
      Src: /src/opendal/core/services/azfile/src/core.rs:266,1
    - Dst: AzfileCore::send
      Src: /src/opendal/core/services/azfile/src/core.rs:267,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 23
    argCount: 2
    argNames:
    - ctx
    - path
    argTypes:
    - '&OperationContext'
    - '&str'
    constantsTouched: []
    func_position:
      end: 268
      start: 245
    functionDepth: 38
    functionLinenumber: 245
    functionLinenumberEnd: 268
    functionName: AzfileCore::azfile_get_directory_properties
    functionSourceFile: /src/opendal/core/services/azfile/src/core.rs
    functionUses: 1
    functionsReached:
    - map_err
    - extension
    - Request::head
    - Buffer::new
    - Result::extension
    - AzfileCore::send
    - build_abs_path
    - AzfileCore::sign
    - ServiceOperation
    - Result::body
    linkageType: ''
    returnType: Result
    signature: 'pub async fn azfile_get_directory_properties(&self,ctx: &OperationContext,path:
      &str,) -> Result<Response<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/azfile/src/core.rs:276,1
    - Dst: String::trim_start_matches
      Src: /src/opendal/core/services/azfile/src/core.rs:276,1
    - Dst: to_string
      Src: /src/opendal/core/services/azfile/src/core.rs:276,1
    - Dst: build_abs_path
      Src: /src/opendal/core/services/azfile/src/core.rs:280,1
    - Dst: String::trim_start_matches
      Src: /src/opendal/core/services/azfile/src/core.rs:280,1
    - Dst: to_string
      Src: /src/opendal/core/services/azfile/src/core.rs:280,1
    - Dst: ends_with
      Src: /src/opendal/core/services/azfile/src/core.rs:284,1
    - Dst: Request::put
      Src: /src/opendal/core/services/azfile/src/core.rs:300,1
    - Dst: DeleteInput::header
      Src: /src/opendal/core/services/azfile/src/core.rs:302,1
    - Dst: DeleteInput::header
      Src: /src/opendal/core/services/azfile/src/core.rs:316,1
    - Dst: DeleteInput::header
      Src: /src/opendal/core/services/azfile/src/core.rs:318,1
    - Dst: DeleteInput::extension
      Src: /src/opendal/core/services/azfile/src/core.rs:320,1
    - Dst: extension
      Src: /src/opendal/core/services/azfile/src/core.rs:320,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/azfile/src/core.rs:322,1
    - Dst: DeleteInput::body
      Src: /src/opendal/core/services/azfile/src/core.rs:324,1
    - Dst: Buffer::new
      Src: /src/opendal/core/services/azfile/src/core.rs:324,1
    - Dst: map_err
      Src: /src/opendal/core/services/azfile/src/core.rs:324,1
    - Dst: AzfileCore::sign
      Src: /src/opendal/core/services/azfile/src/core.rs:325,1
    - Dst: AzfileCore::send
      Src: /src/opendal/core/services/azfile/src/core.rs:326,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 50
    argCount: 3
    argNames:
    - ctx
    - path
    - new_path
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    constantsTouched: []
    func_position:
      end: 327
      start: 270
    functionDepth: 36
    functionLinenumber: 270
    functionLinenumberEnd: 327
    functionName: AzfileCore::azfile_rename
    functionSourceFile: /src/opendal/core/services/azfile/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - to_string
    - extension
    - Buffer::new
    - Request::put
    - String::trim_start_matches
    - ends_with
    - AzfileCore::send
    - build_abs_path
    - DeleteInput::header
    - AzfileCore::sign
    - ServiceOperation
    - DeleteInput::body
    - DeleteInput::extension
    linkageType: ''
    returnType: Result
    signature: 'pub async fn azfile_rename(&self,ctx: &OperationContext,path: &str,new_path:
      &str,) -> Result<Response<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/azfile/src/core.rs:334,1
    - Dst: String::trim_start_matches
      Src: /src/opendal/core/services/azfile/src/core.rs:334,1
    - Dst: to_string
      Src: /src/opendal/core/services/azfile/src/core.rs:334,1
    - Dst: Request::put
      Src: /src/opendal/core/services/azfile/src/core.rs:345,1
    - Dst: DeleteInput::header
      Src: /src/opendal/core/services/azfile/src/core.rs:347,1
    - Dst: DeleteInput::extension
      Src: /src/opendal/core/services/azfile/src/core.rs:349,1
    - Dst: extension
      Src: /src/opendal/core/services/azfile/src/core.rs:349,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/azfile/src/core.rs:351,1
    - Dst: DeleteInput::body
      Src: /src/opendal/core/services/azfile/src/core.rs:353,1
    - Dst: Buffer::new
      Src: /src/opendal/core/services/azfile/src/core.rs:353,1
    - Dst: map_err
      Src: /src/opendal/core/services/azfile/src/core.rs:353,1
    - Dst: AzfileCore::sign
      Src: /src/opendal/core/services/azfile/src/core.rs:354,1
    - Dst: AzfileCore::send
      Src: /src/opendal/core/services/azfile/src/core.rs:355,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 31
    argCount: 2
    argNames:
    - ctx
    - path
    argTypes:
    - '&OperationContext'
    - '&str'
    constantsTouched: []
    func_position:
      end: 356
      start: 329
    functionDepth: 36
    functionLinenumber: 329
    functionLinenumberEnd: 356
    functionName: AzfileCore::azfile_create_dir
    functionSourceFile: /src/opendal/core/services/azfile/src/core.rs
    functionUses: 1
    functionsReached:
    - map_err
    - to_string
    - extension
    - Buffer::new
    - Request::put
    - String::trim_start_matches
    - AzfileCore::send
    - build_abs_path
    - DeleteInput::header
    - AzfileCore::sign
    - ServiceOperation
    - DeleteInput::body
    - DeleteInput::extension
    linkageType: ''
    returnType: Result
    signature: 'pub async fn azfile_create_dir(&self,ctx: &OperationContext,path:
      &str,) -> Result<Response<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/azfile/src/core.rs:363,1
    - Dst: String::trim_start_matches
      Src: /src/opendal/core/services/azfile/src/core.rs:363,1
    - Dst: to_string
      Src: /src/opendal/core/services/azfile/src/core.rs:363,1
    - Dst: Request::delete
      Src: /src/opendal/core/services/azfile/src/core.rs:374,1
    - Dst: Result::extension
      Src: /src/opendal/core/services/azfile/src/core.rs:376,1
    - Dst: extension
      Src: /src/opendal/core/services/azfile/src/core.rs:376,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/azfile/src/core.rs:378,1
    - Dst: Result::body
      Src: /src/opendal/core/services/azfile/src/core.rs:380,1
    - Dst: Buffer::new
      Src: /src/opendal/core/services/azfile/src/core.rs:380,1
    - Dst: map_err
      Src: /src/opendal/core/services/azfile/src/core.rs:380,1
    - Dst: AzfileCore::sign
      Src: /src/opendal/core/services/azfile/src/core.rs:381,1
    - Dst: AzfileCore::send
      Src: /src/opendal/core/services/azfile/src/core.rs:382,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 27
    argCount: 2
    argNames:
    - ctx
    - path
    argTypes:
    - '&OperationContext'
    - '&str'
    constantsTouched: []
    func_position:
      end: 383
      start: 358
    functionDepth: 32
    functionLinenumber: 358
    functionLinenumberEnd: 383
    functionName: AzfileCore::azfile_delete_file
    functionSourceFile: /src/opendal/core/services/azfile/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - to_string
    - extension
    - Buffer::new
    - Request::delete
    - Result::extension
    - String::trim_start_matches
    - AzfileCore::send
    - build_abs_path
    - AzfileCore::sign
    - ServiceOperation
    - Result::body
    linkageType: ''
    returnType: Result
    signature: 'pub async fn azfile_delete_file(&self,ctx: &OperationContext,path:
      &str,) -> Result<Response<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/azfile/src/core.rs:390,1
    - Dst: String::trim_start_matches
      Src: /src/opendal/core/services/azfile/src/core.rs:390,1
    - Dst: to_string
      Src: /src/opendal/core/services/azfile/src/core.rs:390,1
    - Dst: Request::delete
      Src: /src/opendal/core/services/azfile/src/core.rs:401,1
    - Dst: Result::extension
      Src: /src/opendal/core/services/azfile/src/core.rs:403,1
    - Dst: extension
      Src: /src/opendal/core/services/azfile/src/core.rs:403,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/azfile/src/core.rs:405,1
    - Dst: Result::body
      Src: /src/opendal/core/services/azfile/src/core.rs:407,1
    - Dst: Buffer::new
      Src: /src/opendal/core/services/azfile/src/core.rs:407,1
    - Dst: map_err
      Src: /src/opendal/core/services/azfile/src/core.rs:407,1
    - Dst: AzfileCore::sign
      Src: /src/opendal/core/services/azfile/src/core.rs:408,1
    - Dst: AzfileCore::send
      Src: /src/opendal/core/services/azfile/src/core.rs:409,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 27
    argCount: 2
    argNames:
    - ctx
    - path
    argTypes:
    - '&OperationContext'
    - '&str'
    constantsTouched: []
    func_position:
      end: 410
      start: 385
    functionDepth: 32
    functionLinenumber: 385
    functionLinenumberEnd: 410
    functionName: AzfileCore::azfile_delete_dir
    functionSourceFile: /src/opendal/core/services/azfile/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - to_string
    - extension
    - Buffer::new
    - Request::delete
    - Result::extension
    - String::trim_start_matches
    - AzfileCore::send
    - build_abs_path
    - AzfileCore::sign
    - ServiceOperation
    - Result::body
    linkageType: ''
    returnType: Result
    signature: 'pub async fn azfile_delete_dir(&self,ctx: &OperationContext,path:
      &str,) -> Result<Response<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/azfile/src/core.rs:419,1
    - Dst: String::trim_start_matches
      Src: /src/opendal/core/services/azfile/src/core.rs:419,1
    - Dst: to_string
      Src: /src/opendal/core/services/azfile/src/core.rs:419,1
    - Dst: QueryPairsWriter::new
      Src: /src/opendal/core/services/azfile/src/core.rs:430,1
    - Dst: Self::push
      Src: /src/opendal/core/services/azfile/src/core.rs:430,1
    - Dst: Self::push
      Src: /src/opendal/core/services/azfile/src/core.rs:430,1
    - Dst: Self::push
      Src: /src/opendal/core/services/azfile/src/core.rs:430,1
    - Dst: '&str::is_empty'
      Src: /src/opendal/core/services/azfile/src/core.rs:435,1
    - Dst: Result::push
      Src: /src/opendal/core/services/azfile/src/core.rs:436,1
    - Dst: Result::push
      Src: /src/opendal/core/services/azfile/src/core.rs:440,1
    - Dst: Result::to_string
      Src: /src/opendal/core/services/azfile/src/core.rs:440,1
    - Dst: Request::get
      Src: /src/opendal/core/services/azfile/src/core.rs:443,1
    - Dst: Result::finish
      Src: /src/opendal/core/services/azfile/src/core.rs:443,1
    - Dst: Option::extension
      Src: /src/opendal/core/services/azfile/src/core.rs:445,1
    - Dst: extension
      Src: /src/opendal/core/services/azfile/src/core.rs:445,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/azfile/src/core.rs:447,1
    - Dst: Option::body
      Src: /src/opendal/core/services/azfile/src/core.rs:449,1
    - Dst: Buffer::new
      Src: /src/opendal/core/services/azfile/src/core.rs:449,1
    - Dst: map_err
      Src: /src/opendal/core/services/azfile/src/core.rs:449,1
    - Dst: AzfileCore::sign
      Src: /src/opendal/core/services/azfile/src/core.rs:450,1
    - Dst: AzfileCore::send
      Src: /src/opendal/core/services/azfile/src/core.rs:451,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 54
    argCount: 4
    argNames:
    - ctx
    - path
    - limit
    - continuation
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&Option<usize>'
    - '&str'
    constantsTouched: []
    func_position:
      end: 452
      start: 412
    functionDepth: 36
    functionLinenumber: 412
    functionLinenumberEnd: 452
    functionName: AzfileCore::azfile_list
    functionSourceFile: /src/opendal/core/services/azfile/src/core.rs
    functionUses: 0
    functionsReached:
    - QueryPairsWriter::new
    - to_string
    - Request::get
    - extension
    - Buffer::new
    - Result::to_string
    - map_err
    - Self::push
    - String::trim_start_matches
    - AzfileCore::send
    - build_abs_path
    - '&str::is_empty'
    - Result::finish
    - Result::push
    - Option::extension
    - AzfileCore::sign
    - ServiceOperation
    - Option::body
    linkageType: ''
    returnType: Result
    signature: 'pub async fn azfile_list(&self,ctx: &OperationContext,path: &str,limit:
      &Option<usize>,continuation: &str,) -> Result<Response<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: VecDeque::default
      Src: /src/opendal/core/services/azfile/src/core.rs:455,1
    - Dst: get_parent
      Src: /src/opendal/core/services/azfile/src/core.rs:459,1
    - Dst: push_front
      Src: /src/opendal/core/services/azfile/src/core.rs:460,1
    - Dst: len
      Src: /src/opendal/core/services/azfile/src/core.rs:463,1
    - Dst: iter
      Src: /src/opendal/core/services/azfile/src/core.rs:464,1
    - Dst: rev
      Src: /src/opendal/core/services/azfile/src/core.rs:464,1
    - Dst: AzfileCore::azfile_get_directory_properties
      Src: /src/opendal/core/services/azfile/src/core.rs:465,1
    - Dst: status
      Src: /src/opendal/core/services/azfile/src/core.rs:466,1
    - Dst: iter
      Src: /src/opendal/core/services/azfile/src/core.rs:473,1
    - Dst: skip
      Src: /src/opendal/core/services/azfile/src/core.rs:473,1
    - Dst: AzfileCore::azfile_create_dir
      Src: /src/opendal/core/services/azfile/src/core.rs:474,1
    - Dst: status
      Src: /src/opendal/core/services/azfile/src/core.rs:476,1
    - Dst: headers
      Src: /src/opendal/core/services/azfile/src/core.rs:480,1
    - Dst: get
      Src: /src/opendal/core/services/azfile/src/core.rs:480,1
    - Dst: map
      Src: /src/opendal/core/services/azfile/src/core.rs:480,1
    - Dst: Vec::to_str
      Src: /src/opendal/core/services/azfile/src/core.rs:483,1
    - Dst: Result::unwrap_or
      Src: /src/opendal/core/services/azfile/src/core.rs:483,1
    - Dst: unwrap_or_else
      Src: /src/opendal/core/services/azfile/src/core.rs:480,1
    - Dst: Err
      Src: /src/opendal/core/services/azfile/src/core.rs:490,1
    - Dst: parse_error
      Src: /src/opendal/core/services/azfile/src/core.rs:490,1
    - Dst: Ok
      Src: /src/opendal/core/services/azfile/src/core.rs:493,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 74
    argCount: 2
    argNames:
    - ctx
    - path
    argTypes:
    - '&OperationContext'
    - '&str'
    constantsTouched: []
    func_position:
      end: 494
      start: 454
    functionDepth: 39
    functionLinenumber: 454
    functionLinenumberEnd: 494
    functionName: AzfileCore::ensure_parent_dir_exists
    functionSourceFile: /src/opendal/core/services/azfile/src/core.rs
    functionUses: 0
    functionsReached:
    - status
    - Vec::to_str
    - map
    - skip
    - AzfileCore::azfile_create_dir
    - Result::unwrap_or
    - unwrap_or_else
    - push_front
    - iter
    - get
    - Ok
    - headers
    - len
    - parse_error
    - VecDeque::default
    - get_parent
    - AzfileCore::azfile_get_directory_properties
    - rev
    - Err
    linkageType: ''
    returnType: Result
    signature: 'pub async fn ensure_parent_dir_exists(&self, ctx: &OperationContext,
      path: &str) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 4
    argNames:
    - core
    - ctx
    - op
    - path
    argTypes:
    - Arc<AzfileCore>
    - OperationContext
    - OpWrite
    - String
    constantsTouched: []
    func_position:
      end: 44
      start: 37
    functionDepth: 0
    functionLinenumber: 37
    functionLinenumberEnd: 44
    functionName: AzfileWriter::new
    functionSourceFile: /src/opendal/core/services/azfile/src/writer.rs
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(core: Arc<AzfileCore>, ctx: OperationContext, op: OpWrite,
      path: String) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: ensure_parent_dir_exists
      Src: /src/opendal/core/services/azfile/src/writer.rs:47,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 50
      start: 46
    functionDepth: 40
    functionLinenumber: 46
    functionLinenumberEnd: 50
    functionName: AzfileWriter::ensure_parent_dir_exists
    functionSourceFile: /src/opendal/core/services/azfile/src/writer.rs
    functionUses: 2
    functionsReached:
    - ensure_parent_dir_exists
    linkageType: ''
    returnType: Result
    signature: async fn ensure_parent_dir_exists(&self) -> Result<()>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Metadata::default
      Src: /src/opendal/core/services/azfile/src/writer.rs:53,1
    - Dst: parse_last_modified
      Src: /src/opendal/core/services/azfile/src/writer.rs:55,1
    - Dst: anyhow::Result::set_last_modified
      Src: /src/opendal/core/services/azfile/src/writer.rs:56,1
    - Dst: parse_etag
      Src: /src/opendal/core/services/azfile/src/writer.rs:58,1
    - Dst: anyhow::Result::set_etag
      Src: /src/opendal/core/services/azfile/src/writer.rs:60,1
    - Dst: Ok
      Src: /src/opendal/core/services/azfile/src/writer.rs:63,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 1
    argNames:
    - headers
    argTypes:
    - '&http::HeaderMap'
    constantsTouched: []
    func_position:
      end: 64
      start: 52
    functionDepth: 39
    functionLinenumber: 52
    functionLinenumberEnd: 64
    functionName: AzfileWriter::parse_metadata
    functionSourceFile: /src/opendal/core/services/azfile/src/writer.rs
    functionUses: 2
    functionsReached:
    - parse_last_modified
    - Metadata::default
    - Ok
    - anyhow::Result::set_last_modified
    - parse_etag
    - anyhow::Result::set_etag
    linkageType: ''
    returnType: Result
    signature: 'fn parse_metadata(headers: &http::HeaderMap) -> Result<Metadata>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: AzfileWriter::ensure_parent_dir_exists
      Src: /src/opendal/core/services/azfile/src/writer.rs:69,1
    - Dst: Result::len
      Src: /src/opendal/core/services/azfile/src/writer.rs:71,1
    - Dst: azfile_create_file
      Src: /src/opendal/core/services/azfile/src/writer.rs:72,1
    - Dst: status
      Src: /src/opendal/core/services/azfile/src/writer.rs:77,1
    - Dst: Err
      Src: /src/opendal/core/services/azfile/src/writer.rs:81,1
    - Dst: super::core::parse_error
      Src: /src/opendal/core/services/azfile/src/writer.rs:81,1
    - Dst: Error::with_operation
      Src: /src/opendal/core/services/azfile/src/writer.rs:81,1
    - Dst: azfile_update
      Src: /src/opendal/core/services/azfile/src/writer.rs:85,1
    - Dst: status
      Src: /src/opendal/core/services/azfile/src/writer.rs:89,1
    - Dst: AzfileWriter::parse_metadata
      Src: /src/opendal/core/services/azfile/src/writer.rs:90,1
    - Dst: headers
      Src: /src/opendal/core/services/azfile/src/writer.rs:90,1
    - Dst: Result::set_content_length
      Src: /src/opendal/core/services/azfile/src/writer.rs:91,1
    - Dst: Ok
      Src: /src/opendal/core/services/azfile/src/writer.rs:93,1
    - Dst: Err
      Src: /src/opendal/core/services/azfile/src/writer.rs:94,1
    - Dst: super::core::parse_error
      Src: /src/opendal/core/services/azfile/src/writer.rs:94,1
    - Dst: Error::with_operation
      Src: /src/opendal/core/services/azfile/src/writer.rs:94,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 55
    argCount: 1
    argNames:
    - bs
    argTypes:
    - Buffer
    constantsTouched: []
    func_position:
      end: 96
      start: 68
    functionDepth: 41
    functionLinenumber: 68
    functionLinenumberEnd: 96
    functionName: AzfileWriter::write_once
    functionSourceFile: /src/opendal/core/services/azfile/src/writer.rs
    functionUses: 0
    functionsReached:
    - AzfileWriter::ensure_parent_dir_exists
    - Error::with_operation
    - status
    - azfile_update
    - Ok
    - azfile_create_file
    - Err
    - AzfileWriter::parse_metadata
    - Result::set_content_length
    - headers
    - Result::len
    - super::core::parse_error
    linkageType: ''
    returnType: Result
    signature: 'async fn write_once(&self, bs: Buffer) -> Result<Metadata>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: AzfileWriter::ensure_parent_dir_exists
      Src: /src/opendal/core/services/azfile/src/writer.rs:101,1
    - Dst: azfile_get_file_properties
      Src: /src/opendal/core/services/azfile/src/writer.rs:103,1
    - Dst: status
      Src: /src/opendal/core/services/azfile/src/writer.rs:108,1
    - Dst: Ok
      Src: /src/opendal/core/services/azfile/src/writer.rs:111,1
    - Dst: parse_content_length
      Src: /src/opendal/core/services/azfile/src/writer.rs:111,1
    - Dst: headers
      Src: /src/opendal/core/services/azfile/src/writer.rs:111,1
    - Dst: unwrap_or_default
      Src: /src/opendal/core/services/azfile/src/writer.rs:111,1
    - Dst: Err
      Src: /src/opendal/core/services/azfile/src/writer.rs:112,1
    - Dst: super::core::parse_error
      Src: /src/opendal/core/services/azfile/src/writer.rs:112,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 27
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 114
      start: 100
    functionDepth: 41
    functionLinenumber: 100
    functionLinenumberEnd: 114
    functionName: AzfileWriter::offset
    functionSourceFile: /src/opendal/core/services/azfile/src/writer.rs
    functionUses: 0
    functionsReached:
    - AzfileWriter::ensure_parent_dir_exists
    - status
    - Ok
    - Err
    - parse_content_length
    - headers
    - azfile_get_file_properties
    - super::core::parse_error
    - unwrap_or_default
    linkageType: ''
    returnType: Result
    signature: async fn offset(&self) -> Result<u64>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: azfile_update
      Src: /src/opendal/core/services/azfile/src/writer.rs:117,1
    - Dst: status
      Src: /src/opendal/core/services/azfile/src/writer.rs:122,1
    - Dst: AzfileWriter::parse_metadata
      Src: /src/opendal/core/services/azfile/src/writer.rs:123,1
    - Dst: headers
      Src: /src/opendal/core/services/azfile/src/writer.rs:123,1
    - Dst: Result::set_content_length
      Src: /src/opendal/core/services/azfile/src/writer.rs:124,1
    - Dst: Ok
      Src: /src/opendal/core/services/azfile/src/writer.rs:126,1
    - Dst: Err
      Src: /src/opendal/core/services/azfile/src/writer.rs:127,1
    - Dst: super::core::parse_error
      Src: /src/opendal/core/services/azfile/src/writer.rs:127,1
    - Dst: Error::with_operation
      Src: /src/opendal/core/services/azfile/src/writer.rs:127,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 26
    argCount: 3
    argNames:
    - offset
    - size
    - body
    argTypes:
    - u64
    - u64
    - Buffer
    constantsTouched: []
    func_position:
      end: 129
      start: 116
    functionDepth: 37
    functionLinenumber: 116
    functionLinenumberEnd: 129
    functionName: AzfileWriter::append
    functionSourceFile: /src/opendal/core/services/azfile/src/writer.rs
    functionUses: 0
    functionsReached:
    - Error::with_operation
    - status
    - azfile_update
    - Ok
    - Err
    - AzfileWriter::parse_metadata
    - Result::set_content_length
    - headers
    - super::core::parse_error
    linkageType: ''
    returnType: Result
    signature: 'async fn append(&self, offset: u64, size: u64, body: Buffer) -> Result<Metadata>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: register::<Azfile>
      Src: /src/opendal/core/services/azfile/src/lib.rs:23,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - registry
    argTypes:
    - '&opendal_core::OperatorRegistry'
    constantsTouched: []
    func_position:
      end: 24
      start: 22
    functionDepth: 0
    functionLinenumber: 22
    functionLinenumberEnd: 24
    functionName: register_azfile_service
    functionSourceFile: /src/opendal/core/services/azfile/src/lib.rs
    functionUses: 1
    functionsReached:
    - register::<Azfile>
    linkageType: ''
    returnType: void
    signature: 'pub fn register_azfile_service(registry: &opendal_core::OperatorRegistry)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: String::new
      Src: /src/opendal/core/services/azfile/src/backend.rs:58,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - config
    argTypes:
    - AzureConnectionConfig
    constantsTouched: []
    func_position:
      end: 60
      start: 51
    functionDepth: 2
    functionLinenumber: 51
    functionLinenumberEnd: 60
    functionName: AzfileConfig::from
    functionSourceFile: /src/opendal/core/services/azfile/src/backend.rs
    functionUses: 1
    functionsReached:
    - String::new
    linkageType: ''
    returnType: Self
    signature: 'fn from(config: AzureConnectionConfig) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::debug_struct
      Src: /src/opendal/core/services/azfile/src/backend.rs:72,1
    - Dst: field
      Src: /src/opendal/core/services/azfile/src/backend.rs:72,1
    - Dst: finish_non_exhaustive
      Src: /src/opendal/core/services/azfile/src/backend.rs:72,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - f
    argTypes:
    - '&mut std::fmt::Formatter<''_>'
    constantsTouched: []
    func_position:
      end: 75
      start: 71
    functionDepth: 5
    functionLinenumber: 71
    functionLinenumberEnd: 75
    functionName: AzfileBuilder::fmt
    functionSourceFile: /src/opendal/core/services/azfile/src/backend.rs
    functionUses: 0
    functionsReached:
    - field
    - Result::debug_struct
    - finish_non_exhaustive
    linkageType: ''
    returnType: std::fmt::Result
    signature: 'fn fmt(&self, f: &mut std::fmt::Formatter<''_>) -> std::fmt::Result'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::is_empty
      Src: /src/opendal/core/services/azfile/src/backend.rs:83,1
    - Dst: Some
      Src: /src/opendal/core/services/azfile/src/backend.rs:86,1
    - Dst: Result::to_string
      Src: /src/opendal/core/services/azfile/src/backend.rs:86,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - root
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 90
      start: 82
    functionDepth: 4
    functionLinenumber: 82
    functionLinenumberEnd: 90
    functionName: AzfileBuilder::root
    functionSourceFile: /src/opendal/core/services/azfile/src/backend.rs
    functionUses: 0
    functionsReached:
    - Result::is_empty
    - Result::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn root(mut self, root: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self::is_empty
      Src: /src/opendal/core/services/azfile/src/backend.rs:94,1
    - Dst: Some
      Src: /src/opendal/core/services/azfile/src/backend.rs:96,1
    - Dst: Self::trim_end_matches
      Src: /src/opendal/core/services/azfile/src/backend.rs:96,1
    - Dst: to_string
      Src: /src/opendal/core/services/azfile/src/backend.rs:96,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 14
    argCount: 1
    argNames:
    - endpoint
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 100
      start: 93
    functionDepth: 4
    functionLinenumber: 93
    functionLinenumberEnd: 100
    functionName: AzfileBuilder::endpoint
    functionSourceFile: /src/opendal/core/services/azfile/src/backend.rs
    functionUses: 0
    functionsReached:
    - Self::is_empty
    - to_string
    - Self::trim_end_matches
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn endpoint(mut self, endpoint: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self::is_empty
      Src: /src/opendal/core/services/azfile/src/backend.rs:107,1
    - Dst: Some
      Src: /src/opendal/core/services/azfile/src/backend.rs:108,1
    - Dst: Self::to_string
      Src: /src/opendal/core/services/azfile/src/backend.rs:108,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 1
    argNames:
    - account_name
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 112
      start: 106
    functionDepth: 4
    functionLinenumber: 106
    functionLinenumberEnd: 112
    functionName: AzfileBuilder::account_name
    functionSourceFile: /src/opendal/core/services/azfile/src/backend.rs
    functionUses: 0
    functionsReached:
    - Self::is_empty
    - Self::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn account_name(mut self, account_name: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self::is_empty
      Src: /src/opendal/core/services/azfile/src/backend.rs:119,1
    - Dst: Some
      Src: /src/opendal/core/services/azfile/src/backend.rs:120,1
    - Dst: Self::to_string
      Src: /src/opendal/core/services/azfile/src/backend.rs:120,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 1
    argNames:
    - account_key
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 124
      start: 118
    functionDepth: 4
    functionLinenumber: 118
    functionLinenumberEnd: 124
    functionName: AzfileBuilder::account_key
    functionSourceFile: /src/opendal/core/services/azfile/src/backend.rs
    functionUses: 0
    functionsReached:
    - Self::is_empty
    - Self::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn account_key(mut self, account_key: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self::is_empty
      Src: /src/opendal/core/services/azfile/src/backend.rs:131,1
    - Dst: Self::to_string
      Src: /src/opendal/core/services/azfile/src/backend.rs:132,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 1
    argNames:
    - share_name
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 136
      start: 130
    functionDepth: 4
    functionLinenumber: 130
    functionLinenumberEnd: 136
    functionName: AzfileBuilder::share_name
    functionSourceFile: /src/opendal/core/services/azfile/src/backend.rs
    functionUses: 0
    functionsReached:
    - Self::is_empty
    - Self::to_string
    linkageType: ''
    returnType: Self
    signature: 'pub fn share_name(mut self, share_name: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: opendal_service_azure_common::azure_config_from_connection_string
      Src: /src/opendal/core/services/azfile/src/backend.rs:157,1
    - Dst: Ok
      Src: /src/opendal/core/services/azfile/src/backend.rs:159,1
    - Dst: AzfileConfig::from
      Src: /src/opendal/core/services/azfile/src/backend.rs:159,1
    - Dst: Self::into_builder
      Src: /src/opendal/core/services/azfile/src/backend.rs:159,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - conn_str
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 160
      start: 156
    functionDepth: 38
    functionLinenumber: 156
    functionLinenumberEnd: 160
    functionName: AzfileBuilder::from_connection_string
    functionSourceFile: /src/opendal/core/services/azfile/src/backend.rs
    functionUses: 0
    functionsReached:
    - Self::into_builder
    - AzfileConfig::from
    - opendal_service_azure_common::azure_config_from_connection_string
    - Ok
    linkageType: ''
    returnType: Result
    signature: 'pub fn from_connection_string(conn_str: &str) -> Result<Self>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: normalize_root
      Src: /src/opendal/core/services/azfile/src/backend.rs:169,1
    - Dst: unwrap_or_default
      Src: /src/opendal/core/services/azfile/src/backend.rs:169,1
    - Dst: Ok
      Src: /src/opendal/core/services/azfile/src/backend.rs:173,1
    - Dst: Self::clone
      Src: /src/opendal/core/services/azfile/src/backend.rs:173,1
    - Dst: Err
      Src: /src/opendal/core/services/azfile/src/backend.rs:174,1
    - Dst: Error::new
      Src: /src/opendal/core/services/azfile/src/backend.rs:174,1
    - Dst: Self::with_operation
      Src: /src/opendal/core/services/azfile/src/backend.rs:174,1
    - Dst: Self::with_context
      Src: /src/opendal/core/services/azfile/src/backend.rs:174,1
    - Dst: clone
      Src: /src/opendal/core/services/azfile/src/backend.rs:180,1
    - Dst: or_else
      Src: /src/opendal/core/services/azfile/src/backend.rs:180,1
    - Dst: azure_account_name_from_endpoint
      Src: /src/opendal/core/services/azfile/src/backend.rs:184,1
    - Dst: Self::as_str
      Src: /src/opendal/core/services/azfile/src/backend.rs:184,1
    - Dst: Ok
      Src: /src/opendal/core/services/azfile/src/backend.rs:187,1
    - Dst: Err
      Src: /src/opendal/core/services/azfile/src/backend.rs:188,1
    - Dst: Error::new
      Src: /src/opendal/core/services/azfile/src/backend.rs:189,1
    - Dst: Self::with_operation
      Src: /src/opendal/core/services/azfile/src/backend.rs:189,1
    - Dst: Self::with_context
      Src: /src/opendal/core/services/azfile/src/backend.rs:189,1
    - Dst: std::collections::HashMap::new
      Src: /src/opendal/core/services/azfile/src/backend.rs:195,1
    - Dst: Self::insert
      Src: /src/opendal/core/services/azfile/src/backend.rs:196,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/azfile/src/backend.rs:196,1
    - Dst: Self::clone
      Src: /src/opendal/core/services/azfile/src/backend.rs:196,1
    - Dst: Self::insert
      Src: /src/opendal/core/services/azfile/src/backend.rs:197,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/azfile/src/backend.rs:198,1
    - Dst: Self::clone
      Src: /src/opendal/core/services/azfile/src/backend.rs:199,1
    - Dst: Self::insert
      Src: /src/opendal/core/services/azfile/src/backend.rs:203,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/azfile/src/backend.rs:203,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/azfile/src/backend.rs:203,1
    - Dst: Self::insert
      Src: /src/opendal/core/services/azfile/src/backend.rs:204,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/azfile/src/backend.rs:204,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/azfile/src/backend.rs:204,1
    - Dst: Self::insert
      Src: /src/opendal/core/services/azfile/src/backend.rs:207,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/azfile/src/backend.rs:207,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/azfile/src/backend.rs:207,1
    - Dst: Context::new
      Src: /src/opendal/core/services/azfile/src/backend.rs:211,1
    - Dst: Self::with_file_read
      Src: /src/opendal/core/services/azfile/src/backend.rs:211,1
    - Dst: with_env
      Src: /src/opendal/core/services/azfile/src/backend.rs:211,1
    - Dst: reqsign_core::OsEnv::home_dir
      Src: /src/opendal/core/services/azfile/src/backend.rs:214,1
    - Dst: DefaultCredentialProvider::new
      Src: /src/opendal/core/services/azfile/src/backend.rs:218,1
    - Dst: as_deref
      Src: /src/opendal/core/services/azfile/src/backend.rs:219,1
    - Dst: Self::push_front
      Src: /src/opendal/core/services/azfile/src/backend.rs:220,1
    - Dst: StaticCredentialProvider::new_shared_key
      Src: /src/opendal/core/services/azfile/src/backend.rs:220,1
    - Dst: as_deref
      Src: /src/opendal/core/services/azfile/src/backend.rs:225,1
    - Dst: Self::push_front
      Src: /src/opendal/core/services/azfile/src/backend.rs:226,1
    - Dst: StaticCredentialProvider::new_sas_token
      Src: /src/opendal/core/services/azfile/src/backend.rs:226,1
    - Dst: Signer::new
      Src: /src/opendal/core/services/azfile/src/backend.rs:230,1
    - Dst: ctx::clone
      Src: /src/opendal/core/services/azfile/src/backend.rs:230,1
    - Dst: RequestSigner::new
      Src: /src/opendal/core/services/azfile/src/backend.rs:230,1
    - Dst: ServiceInfo::new
      Src: /src/opendal/core/services/azfile/src/backend.rs:232,1
    - Dst: Default::default
      Src: /src/opendal/core/services/azfile/src/backend.rs:249,1
    - Dst: Ok
      Src: /src/opendal/core/services/azfile/src/backend.rs:252,1
    - Dst: Arc::new
      Src: /src/opendal/core/services/azfile/src/backend.rs:253,1
    - Dst: clone
      Src: /src/opendal/core/services/azfile/src/backend.rs:260,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 136
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 263
      start: 166
    functionDepth: 34
    functionLinenumber: 166
    functionLinenumberEnd: 263
    functionName: AzfileBuilder::build
    functionSourceFile: /src/opendal/core/services/azfile/src/backend.rs
    functionUses: 0
    functionsReached:
    - azure_account_name_from_endpoint
    - as_deref
    - Self::push_front
    - Default::default
    - Arc::new
    - clone
    - StaticCredentialProvider::new_shared_key
    - Self::clone
    - Signer::new
    - Self::as_str
    - Self::with_context
    - Result::clone
    - ServiceInfo::new
    - or_else
    - Ok
    - Context::new
    - Self::insert
    - normalize_root
    - '&str::to_string'
    - reqsign_core::OsEnv::home_dir
    - unwrap_or_default
    - RequestSigner::new
    - std::collections::HashMap::new
    - StaticCredentialProvider::new_sas_token
    - DefaultCredentialProvider::new
    - with_env
    - ctx::clone
    - Err
    - Error::new
    - Self::with_file_read
    - Self::with_operation
    linkageType: ''
    returnType: Result
    signature: fn build(self) -> Result<impl Service>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: clone
      Src: /src/opendal/core/services/azfile/src/backend.rs:280,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 281
      start: 279
    functionDepth: 2
    functionLinenumber: 279
    functionLinenumberEnd: 281
    functionName: AzfileBackend::info
    functionSourceFile: /src/opendal/core/services/azfile/src/backend.rs
    functionUses: 0
    functionsReached:
    - clone
    linkageType: ''
    returnType: ServiceInfo
    signature: fn info(&self) -> ServiceInfo
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 285
      start: 283
    functionDepth: 0
    functionLinenumber: 283
    functionLinenumberEnd: 285
    functionName: AzfileBackend::capability
    functionSourceFile: /src/opendal/core/services/azfile/src/backend.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Capability
    signature: fn capability(&self) -> Capability
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: ensure_parent_dir_exists
      Src: /src/opendal/core/services/azfile/src/backend.rs:293,1
    - Dst: azfile_create_dir
      Src: /src/opendal/core/services/azfile/src/backend.rs:294,1
    - Dst: status
      Src: /src/opendal/core/services/azfile/src/backend.rs:295,1
    - Dst: Ok
      Src: /src/opendal/core/services/azfile/src/backend.rs:298,1
    - Dst: RpCreateDir::default
      Src: /src/opendal/core/services/azfile/src/backend.rs:298,1
    - Dst: headers
      Src: /src/opendal/core/services/azfile/src/backend.rs:305,1
    - Dst: get
      Src: /src/opendal/core/services/azfile/src/backend.rs:305,1
    - Dst: map
      Src: /src/opendal/core/services/azfile/src/backend.rs:305,1
    - Dst: Vec::to_str
      Src: /src/opendal/core/services/azfile/src/backend.rs:308,1
    - Dst: Result::unwrap_or
      Src: /src/opendal/core/services/azfile/src/backend.rs:308,1
    - Dst: unwrap_or_else
      Src: /src/opendal/core/services/azfile/src/backend.rs:305,1
    - Dst: Ok
      Src: /src/opendal/core/services/azfile/src/backend.rs:312,1
    - Dst: RpCreateDir::default
      Src: /src/opendal/core/services/azfile/src/backend.rs:312,1
    - Dst: Err
      Src: /src/opendal/core/services/azfile/src/backend.rs:314,1
    - Dst: super::core::parse_error
      Src: /src/opendal/core/services/azfile/src/backend.rs:314,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 38
    argCount: 3
    argNames:
    - ctx
    - path
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpCreateDir
    constantsTouched: []
    func_position:
      end: 318
      start: 287
    functionDepth: 40
    functionLinenumber: 287
    functionLinenumberEnd: 318
    functionName: AzfileBackend::create_dir
    functionSourceFile: /src/opendal/core/services/azfile/src/backend.rs
    functionUses: 0
    functionsReached:
    - get
    - status
    - RpCreateDir::default
    - Ok
    - Vec::to_str
    - Err
    - map
    - azfile_create_dir
    - headers
    - Result::unwrap_or
    - super::core::parse_error
    - ensure_parent_dir_exists
    - unwrap_or_else
    linkageType: ''
    returnType: Result
    signature: 'async fn create_dir(&self,ctx: &OperationContext,path: &str,_: OpCreateDir,)
      -> Result<RpCreateDir>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: ends_with
      Src: /src/opendal/core/services/azfile/src/backend.rs:321,1
    - Dst: azfile_get_directory_properties
      Src: /src/opendal/core/services/azfile/src/backend.rs:322,1
    - Dst: azfile_get_file_properties
      Src: /src/opendal/core/services/azfile/src/backend.rs:324,1
    - Dst: status
      Src: /src/opendal/core/services/azfile/src/backend.rs:327,1
    - Dst: headers
      Src: /src/opendal/core/services/azfile/src/backend.rs:330,1
    - Dst: parse_into_metadata
      Src: /src/opendal/core/services/azfile/src/backend.rs:331,1
    - Dst: parse_prefixed_headers
      Src: /src/opendal/core/services/azfile/src/backend.rs:332,1
    - Dst: HashMap::is_empty
      Src: /src/opendal/core/services/azfile/src/backend.rs:333,1
    - Dst: Result::with_user_metadata
      Src: /src/opendal/core/services/azfile/src/backend.rs:334,1
    - Dst: Ok
      Src: /src/opendal/core/services/azfile/src/backend.rs:336,1
    - Dst: RpStat::new
      Src: /src/opendal/core/services/azfile/src/backend.rs:336,1
    - Dst: Err
      Src: /src/opendal/core/services/azfile/src/backend.rs:338,1
    - Dst: super::core::parse_error
      Src: /src/opendal/core/services/azfile/src/backend.rs:338,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 35
    argCount: 3
    argNames:
    - ctx
    - path
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpStat
    constantsTouched: []
    func_position:
      end: 340
      start: 320
    functionDepth: 39
    functionLinenumber: 320
    functionLinenumberEnd: 340
    functionName: AzfileBackend::stat
    functionSourceFile: /src/opendal/core/services/azfile/src/backend.rs
    functionUses: 0
    functionsReached:
    - parse_into_metadata
    - HashMap::is_empty
    - status
    - Ok
    - ends_with
    - RpStat::new
    - azfile_get_directory_properties
    - parse_prefixed_headers
    - Result::with_user_metadata
    - Err
    - headers
    - azfile_get_file_properties
    - super::core::parse_error
    linkageType: ''
    returnType: Result
    signature: 'async fn stat(&self, ctx: &OperationContext, path: &str, _: OpStat)
      -> Result<RpStat>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/core/services/azfile/src/backend.rs:343,1
    - Dst: oio::StreamReader::new
      Src: /src/opendal/core/services/azfile/src/backend.rs:343,1
    - Dst: AzfileReader::new
      Src: /src/opendal/core/services/azfile/src/backend.rs:343,1
    - Dst: AzfileBackend::clone
      Src: /src/opendal/core/services/azfile/src/backend.rs:344,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/azfile/src/backend.rs:345,1
    - Dst: Ok
      Src: /src/opendal/core/services/azfile/src/backend.rs:351,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpRead
    constantsTouched: []
    func_position:
      end: 352
      start: 341
    functionDepth: 3
    functionLinenumber: 341
    functionLinenumberEnd: 352
    functionName: AzfileBackend::read
    functionSourceFile: /src/opendal/core/services/azfile/src/backend.rs
    functionUses: 0
    functionsReached:
    - Result::clone
    - AzfileReader::new
    - Ok
    - oio::StreamReader::new
    - AzfileBackend::clone
    linkageType: ''
    returnType: Result
    signature: 'fn read(&self, ctx: &OperationContext, path: &str, args: OpRead) ->
      Result<Self::Reader>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: AzfileWriter::new
      Src: /src/opendal/core/services/azfile/src/backend.rs:356,1
    - Dst: clone
      Src: /src/opendal/core/services/azfile/src/backend.rs:357,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/azfile/src/backend.rs:358,1
    - Dst: OpStat::clone
      Src: /src/opendal/core/services/azfile/src/backend.rs:359,1
    - Dst: to_string
      Src: /src/opendal/core/services/azfile/src/backend.rs:360,1
    - Dst: OpStat::append
      Src: /src/opendal/core/services/azfile/src/backend.rs:362,1
    - Dst: AzfileWriters::Two
      Src: /src/opendal/core/services/azfile/src/backend.rs:363,1
    - Dst: oio::AppendWriter::new
      Src: /src/opendal/core/services/azfile/src/backend.rs:363,1
    - Dst: AzfileWriters::One
      Src: /src/opendal/core/services/azfile/src/backend.rs:365,1
    - Dst: oio::OneShotWriter::new
      Src: /src/opendal/core/services/azfile/src/backend.rs:365,1
    - Dst: Ok
      Src: /src/opendal/core/services/azfile/src/backend.rs:367,1
    - Dst: Ok
      Src: /src/opendal/core/services/azfile/src/backend.rs:370,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 20
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpWrite
    constantsTouched: []
    func_position:
      end: 371
      start: 354
    functionDepth: 31
    functionLinenumber: 354
    functionLinenumberEnd: 371
    functionName: AzfileBackend::write
    functionSourceFile: /src/opendal/core/services/azfile/src/backend.rs
    functionUses: 0
    functionsReached:
    - Result::clone
    - AzfileWriter::new
    - OpStat::clone
    - to_string
    - Ok
    - clone
    - oio::OneShotWriter::new
    - OpStat::append
    - AzfileWriters::One
    - oio::AppendWriter::new
    - AzfileWriters::Two
    linkageType: ''
    returnType: Result
    signature: 'fn write(&self, ctx: &OperationContext, path: &str, args: OpWrite)
      -> Result<Self::Writer>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/core/services/azfile/src/backend.rs:375,1
    - Dst: oio::OneShotDeleter::new
      Src: /src/opendal/core/services/azfile/src/backend.rs:375,1
    - Dst: AzfileDeleter::new
      Src: /src/opendal/core/services/azfile/src/backend.rs:375,1
    - Dst: clone
      Src: /src/opendal/core/services/azfile/src/backend.rs:376,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/azfile/src/backend.rs:377,1
    - Dst: Ok
      Src: /src/opendal/core/services/azfile/src/backend.rs:381,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - '&OperationContext'
    constantsTouched: []
    func_position:
      end: 382
      start: 373
    functionDepth: 2
    functionLinenumber: 373
    functionLinenumberEnd: 382
    functionName: AzfileBackend::delete
    functionSourceFile: /src/opendal/core/services/azfile/src/backend.rs
    functionUses: 0
    functionsReached:
    - oio::OneShotDeleter::new
    - Result::clone
    - Ok
    - AzfileDeleter::new
    - clone
    linkageType: ''
    returnType: Result
    signature: 'fn delete(&self, ctx: &OperationContext) -> Result<Self::Deleter>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: AzfileLister::new
      Src: /src/opendal/core/services/azfile/src/backend.rs:386,1
    - Dst: clone
      Src: /src/opendal/core/services/azfile/src/backend.rs:387,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/azfile/src/backend.rs:388,1
    - Dst: to_string
      Src: /src/opendal/core/services/azfile/src/backend.rs:389,1
    - Dst: OpStat::limit
      Src: /src/opendal/core/services/azfile/src/backend.rs:390,1
    - Dst: Ok
      Src: /src/opendal/core/services/azfile/src/backend.rs:393,1
    - Dst: oio::PageLister::new
      Src: /src/opendal/core/services/azfile/src/backend.rs:393,1
    - Dst: Ok
      Src: /src/opendal/core/services/azfile/src/backend.rs:396,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 14
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpList
    constantsTouched: []
    func_position:
      end: 397
      start: 384
    functionDepth: 36
    functionLinenumber: 384
    functionLinenumberEnd: 397
    functionName: AzfileBackend::list
    functionSourceFile: /src/opendal/core/services/azfile/src/backend.rs
    functionUses: 0
    functionsReached:
    - Result::clone
    - to_string
    - Ok
    - clone
    - oio::PageLister::new
    - AzfileLister::new
    - OpStat::limit
    linkageType: ''
    returnType: Result
    signature: 'fn list(&self, ctx: &OperationContext, path: &str, args: OpList) ->
      Result<Self::Lister>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/core/services/azfile/src/backend.rs:407,1
    - Dst: Error::new
      Src: /src/opendal/core/services/azfile/src/backend.rs:407,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 5
    argNames:
    - _ctx
    - _from
    - _to
    - _args
    - _opts
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    - OpCopy
    - OpCopier
    constantsTouched: []
    func_position:
      end: 411
      start: 399
    functionDepth: 36
    functionLinenumber: 399
    functionLinenumberEnd: 411
    functionName: AzfileBackend::copy
    functionSourceFile: /src/opendal/core/services/azfile/src/backend.rs
    functionUses: 0
    functionsReached:
    - Error::new
    - Err
    linkageType: ''
    returnType: Result
    signature: 'fn copy(&self,_ctx: &OperationContext,_from: &str,_to: &str,_args:
      OpCopy,_opts: OpCopier,) -> Result<Self::Copier>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: ensure_parent_dir_exists
      Src: /src/opendal/core/services/azfile/src/backend.rs:420,1
    - Dst: azfile_rename
      Src: /src/opendal/core/services/azfile/src/backend.rs:421,1
    - Dst: status
      Src: /src/opendal/core/services/azfile/src/backend.rs:422,1
    - Dst: Ok
      Src: /src/opendal/core/services/azfile/src/backend.rs:424,1
    - Dst: RpRename::default
      Src: /src/opendal/core/services/azfile/src/backend.rs:424,1
    - Dst: Err
      Src: /src/opendal/core/services/azfile/src/backend.rs:425,1
    - Dst: super::core::parse_error
      Src: /src/opendal/core/services/azfile/src/backend.rs:425,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 19
    argCount: 4
    argNames:
    - ctx
    - from
    - to
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    - OpRename
    constantsTouched: []
    func_position:
      end: 427
      start: 413
    functionDepth: 40
    functionLinenumber: 413
    functionLinenumberEnd: 427
    functionName: AzfileBackend::rename
    functionSourceFile: /src/opendal/core/services/azfile/src/backend.rs
    functionUses: 0
    functionsReached:
    - status
    - azfile_rename
    - Ok
    - Err
    - RpRename::default
    - super::core::parse_error
    - ensure_parent_dir_exists
    linkageType: ''
    returnType: Result
    signature: 'async fn rename(&self,ctx: &OperationContext,from: &str,to: &str,_:
      OpRename,) -> Result<RpRename>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/core/services/azfile/src/backend.rs:435,1
    - Dst: Error::new
      Src: /src/opendal/core/services/azfile/src/backend.rs:435,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - _ctx
    - _path
    - _args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpPresign
    constantsTouched: []
    func_position:
      end: 439
      start: 429
    functionDepth: 36
    functionLinenumber: 429
    functionLinenumberEnd: 439
    functionName: AzfileBackend::presign
    functionSourceFile: /src/opendal/core/services/azfile/src/backend.rs
    functionUses: 0
    functionsReached:
    - Error::new
    - Err
    linkageType: ''
    returnType: Result
    signature: 'async fn presign(&self,_ctx: &OperationContext,_path: &str,_args:
      OpPresign,) -> Result<RpPresign>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::debug_struct
      Src: /src/opendal/core/services/gridfs/src/config.rs:45,1
    - Dst: field
      Src: /src/opendal/core/services/gridfs/src/config.rs:45,1
    - Dst: field
      Src: /src/opendal/core/services/gridfs/src/config.rs:45,1
    - Dst: field
      Src: /src/opendal/core/services/gridfs/src/config.rs:45,1
    - Dst: field
      Src: /src/opendal/core/services/gridfs/src/config.rs:45,1
    - Dst: finish_non_exhaustive
      Src: /src/opendal/core/services/gridfs/src/config.rs:45,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 20
    argCount: 1
    argNames:
    - f
    argTypes:
    - '&mut std::fmt::Formatter<''_>'
    constantsTouched: []
    func_position:
      end: 51
      start: 44
    functionDepth: 5
    functionLinenumber: 44
    functionLinenumberEnd: 51
    functionName: GridfsConfig::fmt
    functionSourceFile: /src/opendal/core/services/gridfs/src/config.rs
    functionUses: 0
    functionsReached:
    - field
    - Result::debug_struct
    - finish_non_exhaustive
    linkageType: ''
    returnType: std::fmt::Result
    signature: 'fn fmt(&self, f: &mut std::fmt::Formatter<''_>) -> std::fmt::Result'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::options
      Src: /src/opendal/core/services/gridfs/src/config.rs:58,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/gridfs/src/config.rs:58,1
    - Dst: Result::authority
      Src: /src/opendal/core/services/gridfs/src/config.rs:60,1
    - Dst: Result::entry
      Src: /src/opendal/core/services/gridfs/src/config.rs:61,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/gridfs/src/config.rs:61,1
    - Dst: crate::Entry::or_insert_with
      Src: /src/opendal/core/services/gridfs/src/config.rs:61,1
    - Dst: Result::root
      Src: /src/opendal/core/services/gridfs/src/config.rs:65,1
    - Dst: is_empty
      Src: /src/opendal/core/services/gridfs/src/config.rs:66,1
    - Dst: splitn
      Src: /src/opendal/core/services/gridfs/src/config.rs:68,1
    - Dst: next
      Src: /src/opendal/core/services/gridfs/src/config.rs:69,1
    - Dst: Self::is_empty
      Src: /src/opendal/core/services/gridfs/src/config.rs:70,1
    - Dst: Result::entry
      Src: /src/opendal/core/services/gridfs/src/config.rs:72,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/gridfs/src/config.rs:72,1
    - Dst: crate::Entry::or_insert_with
      Src: /src/opendal/core/services/gridfs/src/config.rs:72,1
    - Dst: Self::to_string
      Src: /src/opendal/core/services/gridfs/src/config.rs:73,1
    - Dst: next
      Src: /src/opendal/core/services/gridfs/src/config.rs:75,1
    - Dst: usize::is_empty
      Src: /src/opendal/core/services/gridfs/src/config.rs:76,1
    - Dst: Result::entry
      Src: /src/opendal/core/services/gridfs/src/config.rs:78,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/gridfs/src/config.rs:78,1
    - Dst: crate::Entry::or_insert_with
      Src: /src/opendal/core/services/gridfs/src/config.rs:78,1
    - Dst: usize::to_string
      Src: /src/opendal/core/services/gridfs/src/config.rs:79,1
    - Dst: next
      Src: /src/opendal/core/services/gridfs/src/config.rs:81,1
    - Dst: is_empty
      Src: /src/opendal/core/services/gridfs/src/config.rs:82,1
    - Dst: Result::insert
      Src: /src/opendal/core/services/gridfs/src/config.rs:84,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/gridfs/src/config.rs:84,1
    - Dst: to_string
      Src: /src/opendal/core/services/gridfs/src/config.rs:84,1
    - Dst: Self::from_iter
      Src: /src/opendal/core/services/gridfs/src/config.rs:88,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 74
    argCount: 1
    argNames:
    - uri
    argTypes:
    - '&OperatorUri'
    constantsTouched: []
    func_position:
      end: 89
      start: 57
    functionDepth: 35
    functionLinenumber: 57
    functionLinenumberEnd: 89
    functionName: GridfsConfig::from_uri
    functionSourceFile: /src/opendal/core/services/gridfs/src/config.rs
    functionUses: 1
    functionsReached:
    - Result::clone
    - next
    - to_string
    - Self::from_iter
    - Result::entry
    - Self::to_string
    - crate::Entry::or_insert_with
    - Result::insert
    - is_empty
    - Self::is_empty
    - '&str::to_string'
    - Result::root
    - Result::authority
    - splitn
    - usize::to_string
    - Result::options
    - usize::is_empty
    linkageType: ''
    returnType: Result
    signature: 'fn from_uri(uri: &OperatorUri) -> Result<Self>'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 93
      start: 91
    functionDepth: 0
    functionLinenumber: 91
    functionLinenumberEnd: 93
    functionName: GridfsConfig::into_builder
    functionSourceFile: /src/opendal/core/services/gridfs/src/config.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Self::Builder
    signature: fn into_builder(self) -> Self::Builder
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: OperatorUri::new
      Src: /src/opendal/core/services/gridfs/src/config.rs:102,1
    - Dst: Vec::<(String, String)>::new
      Src: /src/opendal/core/services/gridfs/src/config.rs:104,1
    - Dst: GridfsConfig::from_uri
      Src: /src/opendal/core/services/gridfs/src/config.rs:107,1
    - Dst: Ok
      Src: /src/opendal/core/services/gridfs/src/config.rs:115,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 116
      start: 101
    functionDepth: 29
    functionLinenumber: 101
    functionLinenumberEnd: 116
    functionName: tests::from_uri_sets_connection_database_bucket_and_root
    functionSourceFile: /src/opendal/core/services/gridfs/src/config.rs
    functionUses: 0
    functionsReached:
    - GridfsConfig::from_uri
    - Vec::<(String, String)>::new
    - OperatorUri::new
    - Ok
    linkageType: ''
    returnType: Result
    signature: fn from_uri_sets_connection_database_bucket_and_root() -> Result<()>
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - core
    - root
    argTypes:
    - Arc<GridfsCore>
    - String
    constantsTouched: []
    func_position:
      end: 33
      start: 31
    functionDepth: 0
    functionLinenumber: 31
    functionLinenumberEnd: 33
    functionName: GridfsDeleter::new
    functionSourceFile: /src/opendal/core/services/gridfs/src/deleter.rs
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(core: Arc<GridfsCore>, root: String) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/gridfs/src/deleter.rs:38,1
    - Dst: delete
      Src: /src/opendal/core/services/gridfs/src/deleter.rs:39,1
    - Dst: Ok
      Src: /src/opendal/core/services/gridfs/src/deleter.rs:40,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 2
    argNames:
    - path
    argTypes:
    - String
    - OpDelete
    constantsTouched: []
    func_position:
      end: 41
      start: 37
    functionDepth: 32
    functionLinenumber: 37
    functionLinenumberEnd: 41
    functionName: GridfsDeleter::delete_once
    functionSourceFile: /src/opendal/core/services/gridfs/src/deleter.rs
    functionUses: 0
    functionsReached:
    - Ok
    - build_abs_path
    - delete
    linkageType: ''
    returnType: Result
    signature: 'async fn delete_once(&self, path: String, _: OpDelete) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: to_string
      Src: /src/opendal/core/services/gridfs/src/reader.rs:32,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - backend
    - path
    argTypes:
    - GridfsBackend
    - '&str'
    - OpRead
    constantsTouched: []
    func_position:
      end: 34
      start: 29
    functionDepth: 2
    functionLinenumber: 29
    functionLinenumberEnd: 34
    functionName: GridfsReader::new
    functionSourceFile: /src/opendal/core/services/gridfs/src/reader.rs
    functionUses: 1
    functionsReached:
    - to_string
    linkageType: ''
    returnType: Self
    signature: 'pub(super) fn new(backend: GridfsBackend, path: &str, _: OpRead) ->
      Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: as_str
      Src: /src/opendal/core/services/gridfs/src/reader.rs:40,1
    - Dst: build_abs_path
      Src: /src/opendal/core/services/gridfs/src/reader.rs:41,1
    - Dst: get
      Src: /src/opendal/core/services/gridfs/src/reader.rs:42,1
    - Dst: Err
      Src: /src/opendal/core/services/gridfs/src/reader.rs:45,1
    - Dst: Error::new
      Src: /src/opendal/core/services/gridfs/src/reader.rs:45,1
    - Dst: Result::slice
      Src: /src/opendal/core/services/gridfs/src/reader.rs:48,1
    - Dst: (Vec::to_content_range
      Src: /src/opendal/core/services/gridfs/src/reader.rs:48,1
    - Dst: Result::len
      Src: /src/opendal/core/services/gridfs/src/reader.rs:48,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/gridfs/src/reader.rs:49,1
    - Dst: Self::with_content_length
      Src: /src/opendal/core/services/gridfs/src/reader.rs:49,1
    - Dst: Result::len
      Src: /src/opendal/core/services/gridfs/src/reader.rs:49,1
    - Dst: Ok
      Src: /src/opendal/core/services/gridfs/src/reader.rs:50,1
    - Dst: RpRead::new
      Src: /src/opendal/core/services/gridfs/src/reader.rs:51,1
    - Dst: Box::new
      Src: /src/opendal/core/services/gridfs/src/reader.rs:52,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 37
    argCount: 1
    argNames:
    - range
    argTypes:
    - BytesRange
    constantsTouched: []
    func_position:
      end: 54
      start: 38
    functionDepth: 36
    functionLinenumber: 38
    functionLinenumberEnd: 54
    functionName: GridfsReader::open
    functionSourceFile: /src/opendal/core/services/gridfs/src/reader.rs
    functionUses: 0
    functionsReached:
    - Metadata::new
    - get
    - Ok
    - Box::new
    - Self::with_content_length
    - build_abs_path
    - Error::new
    - Err
    - as_str
    - Result::slice
    - (Vec::to_content_range
    - Result::len
    - RpRead::new
    linkageType: ''
    returnType: Result
    signature: 'async fn open(&self, range: BytesRange) -> Result<(RpRead, Box<dyn
      oio::ReadStreamDyn>)>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::debug_struct
      Src: /src/opendal/core/services/gridfs/src/core.rs:41,1
    - Dst: field
      Src: /src/opendal/core/services/gridfs/src/core.rs:41,1
    - Dst: field
      Src: /src/opendal/core/services/gridfs/src/core.rs:41,1
    - Dst: field
      Src: /src/opendal/core/services/gridfs/src/core.rs:41,1
    - Dst: finish_non_exhaustive
      Src: /src/opendal/core/services/gridfs/src/core.rs:41,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 16
    argCount: 1
    argNames:
    - f
    argTypes:
    - '&mut std::fmt::Formatter<''_>'
    constantsTouched: []
    func_position:
      end: 46
      start: 40
    functionDepth: 5
    functionLinenumber: 40
    functionLinenumberEnd: 46
    functionName: GridfsCore::fmt
    functionSourceFile: /src/opendal/core/services/gridfs/src/core.rs
    functionUses: 0
    functionsReached:
    - field
    - Result::debug_struct
    - finish_non_exhaustive
    linkageType: ''
    returnType: std::fmt::Result
    signature: 'fn fmt(&self, f: &mut std::fmt::Formatter<''_>) -> std::fmt::Result'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: get_or_try_init
      Src: /src/opendal/core/services/gridfs/src/core.rs:51,1
    - Dst: ClientOptions::parse
      Src: /src/opendal/core/services/gridfs/src/core.rs:53,1
    - Dst: map_err
      Src: /src/opendal/core/services/gridfs/src/core.rs:53,1
    - Dst: mongodb::Client::with_options
      Src: /src/opendal/core/services/gridfs/src/core.rs:57,1
    - Dst: OpendalResult::map_err
      Src: /src/opendal/core/services/gridfs/src/core.rs:57,1
    - Dst: GridFsBucketOptions::builder
      Src: /src/opendal/core/services/gridfs/src/core.rs:58,1
    - Dst: OtelMetricsLayerBuilder::bucket_name
      Src: /src/opendal/core/services/gridfs/src/core.rs:58,1
    - Dst: Some
      Src: /src/opendal/core/services/gridfs/src/core.rs:59,1
    - Dst: clone
      Src: /src/opendal/core/services/gridfs/src/core.rs:59,1
    - Dst: chunk_size_bytes
      Src: /src/opendal/core/services/gridfs/src/core.rs:58,1
    - Dst: Some
      Src: /src/opendal/core/services/gridfs/src/core.rs:60,1
    - Dst: build
      Src: /src/opendal/core/services/gridfs/src/core.rs:58,1
    - Dst: Result::database
      Src: /src/opendal/core/services/gridfs/src/core.rs:62,1
    - Dst: Self::gridfs_bucket
      Src: /src/opendal/core/services/gridfs/src/core.rs:62,1
    - Dst: Ok
      Src: /src/opendal/core/services/gridfs/src/core.rs:65,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 36
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 68
      start: 50
    functionDepth: 33
    functionLinenumber: 50
    functionLinenumberEnd: 68
    functionName: GridfsCore::get_bucket
    functionSourceFile: /src/opendal/core/services/gridfs/src/core.rs
    functionUses: 4
    functionsReached:
    - map_err
    - chunk_size_bytes
    - Self::gridfs_bucket
    - get_or_try_init
    - GridFsBucketOptions::builder
    - OtelMetricsLayerBuilder::bucket_name
    - build
    - Ok
    - clone
    - OpendalResult::map_err
    - Some
    - Result::database
    - mongodb::Client::with_options
    - ClientOptions::parse
    linkageType: ''
    returnType: Result
    signature: async fn get_bucket(&self) -> Result<&GridFsBucket>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: usize::find_one
      Src: /src/opendal/core/services/gridfs/src/core.rs:75,1
    - Dst: map_err
      Src: /src/opendal/core/services/gridfs/src/core.rs:75,1
    - Dst: Ok
      Src: /src/opendal/core/services/gridfs/src/core.rs:76,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - bucket
    - path
    argTypes:
    - '&GridFsBucket'
    - '&str'
    constantsTouched: []
    func_position:
      end: 77
      start: 70
    functionDepth: 0
    functionLinenumber: 70
    functionLinenumberEnd: 77
    functionName: GridfsCore::get_one_doc
    functionSourceFile: /src/opendal/core/services/gridfs/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - usize::find_one
    - Ok
    linkageType: ''
    returnType: Result
    signature: 'async fn get_one_doc(bucket: &GridFsBucket,path: &str,) -> Result<Option<FilesCollectionDocument>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: GridfsCore::get_bucket
      Src: /src/opendal/core/services/gridfs/src/core.rs:80,1
    - Dst: Self::get_one_doc
      Src: /src/opendal/core/services/gridfs/src/core.rs:81,1
    - Dst: Ok
      Src: /src/opendal/core/services/gridfs/src/core.rs:82,1
    - Dst: Vec::new
      Src: /src/opendal/core/services/gridfs/src/core.rs:85,1
    - Dst: usize::open_download_stream
      Src: /src/opendal/core/services/gridfs/src/core.rs:87,1
    - Dst: map_err
      Src: /src/opendal/core/services/gridfs/src/core.rs:87,1
    - Dst: Result::read_to_end
      Src: /src/opendal/core/services/gridfs/src/core.rs:91,1
    - Dst: map_err
      Src: /src/opendal/core/services/gridfs/src/core.rs:91,1
    - Dst: Ok
      Src: /src/opendal/core/services/gridfs/src/core.rs:95,1
    - Dst: Some
      Src: /src/opendal/core/services/gridfs/src/core.rs:95,1
    - Dst: Buffer::from
      Src: /src/opendal/core/services/gridfs/src/core.rs:95,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 29
    argCount: 1
    argNames:
    - path
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 96
      start: 79
    functionDepth: 34
    functionLinenumber: 79
    functionLinenumberEnd: 96
    functionName: GridfsCore::get
    functionSourceFile: /src/opendal/core/services/gridfs/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - Ok
    - GridfsCore::get_bucket
    - usize::open_download_stream
    - Some
    - Result::read_to_end
    - Self::get_one_doc
    - Vec::new
    - Buffer::from
    linkageType: ''
    returnType: Result
    signature: 'pub async fn get(&self, path: &str) -> Result<Option<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: GridfsCore::get_bucket
      Src: /src/opendal/core/services/gridfs/src/core.rs:100,1
    - Dst: Self::get_one_doc
      Src: /src/opendal/core/services/gridfs/src/core.rs:101,1
    - Dst: Ok
      Src: /src/opendal/core/services/gridfs/src/core.rs:102,1
    - Dst: Ok
      Src: /src/opendal/core/services/gridfs/src/core.rs:105,1
    - Dst: Some
      Src: /src/opendal/core/services/gridfs/src/core.rs:105,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 1
    argNames:
    - path
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 106
      start: 99
    functionDepth: 34
    functionLinenumber: 99
    functionLinenumberEnd: 106
    functionName: GridfsCore::get_length
    functionSourceFile: /src/opendal/core/services/gridfs/src/core.rs
    functionUses: 0
    functionsReached:
    - GridfsCore::get_bucket
    - Some
    - Ok
    - Self::get_one_doc
    linkageType: ''
    returnType: Result
    signature: 'pub async fn get_length(&self, path: &str) -> Result<Option<usize>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: GridfsCore::get_bucket
      Src: /src/opendal/core/services/gridfs/src/core.rs:109,1
    - Dst: Self::get_one_doc
      Src: /src/opendal/core/services/gridfs/src/core.rs:112,1
    - Dst: usize::delete
      Src: /src/opendal/core/services/gridfs/src/core.rs:114,1
    - Dst: map_err
      Src: /src/opendal/core/services/gridfs/src/core.rs:114,1
    - Dst: usize::open_upload_stream
      Src: /src/opendal/core/services/gridfs/src/core.rs:118,1
    - Dst: map_err
      Src: /src/opendal/core/services/gridfs/src/core.rs:118,1
    - Dst: write_all
      Src: /src/opendal/core/services/gridfs/src/core.rs:122,1
    - Dst: Vec::to_vec
      Src: /src/opendal/core/services/gridfs/src/core.rs:123,1
    - Dst: map_err
      Src: /src/opendal/core/services/gridfs/src/core.rs:122,1
    - Dst: close
      Src: /src/opendal/core/services/gridfs/src/core.rs:126,1
    - Dst: map_err
      Src: /src/opendal/core/services/gridfs/src/core.rs:126,1
    - Dst: Ok
      Src: /src/opendal/core/services/gridfs/src/core.rs:128,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 42
    argCount: 2
    argNames:
    - path
    - value
    argTypes:
    - '&str'
    - Buffer
    constantsTouched: []
    func_position:
      end: 129
      start: 108
    functionDepth: 34
    functionLinenumber: 108
    functionLinenumberEnd: 129
    functionName: GridfsCore::set
    functionSourceFile: /src/opendal/core/services/gridfs/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - usize::open_upload_stream
    - close
    - Ok
    - GridfsCore::get_bucket
    - usize::delete
    - Vec::to_vec
    - write_all
    - Self::get_one_doc
    linkageType: ''
    returnType: Result
    signature: 'pub async fn set(&self, path: &str, value: Buffer) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: GridfsCore::get_bucket
      Src: /src/opendal/core/services/gridfs/src/core.rs:132,1
    - Dst: Self::get_one_doc
      Src: /src/opendal/core/services/gridfs/src/core.rs:133,1
    - Dst: Ok
      Src: /src/opendal/core/services/gridfs/src/core.rs:134,1
    - Dst: usize::delete
      Src: /src/opendal/core/services/gridfs/src/core.rs:138,1
    - Dst: map_err
      Src: /src/opendal/core/services/gridfs/src/core.rs:138,1
    - Dst: Ok
      Src: /src/opendal/core/services/gridfs/src/core.rs:139,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 21
    argCount: 1
    argNames:
    - path
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 140
      start: 131
    functionDepth: 34
    functionLinenumber: 131
    functionLinenumberEnd: 140
    functionName: GridfsCore::delete
    functionSourceFile: /src/opendal/core/services/gridfs/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - Ok
    - GridfsCore::get_bucket
    - usize::delete
    - Self::get_one_doc
    linkageType: ''
    returnType: Result
    signature: 'pub async fn delete(&self, path: &str) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: oio::QueueBuf::new
      Src: /src/opendal/core/services/gridfs/src/writer.rs:36,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - core
    - path
    argTypes:
    - Arc<GridfsCore>
    - String
    constantsTouched: []
    func_position:
      end: 38
      start: 32
    functionDepth: 4
    functionLinenumber: 32
    functionLinenumberEnd: 38
    functionName: GridfsWriter::new
    functionSourceFile: /src/opendal/core/services/gridfs/src/writer.rs
    functionUses: 1
    functionsReached:
    - oio::QueueBuf::new
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(core: Arc<GridfsCore>, path: String) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: push
      Src: /src/opendal/core/services/gridfs/src/writer.rs:43,1
    - Dst: Ok
      Src: /src/opendal/core/services/gridfs/src/writer.rs:44,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - bs
    argTypes:
    - Buffer
    constantsTouched: []
    func_position:
      end: 45
      start: 42
    functionDepth: 5
    functionLinenumber: 42
    functionLinenumberEnd: 45
    functionName: GridfsWriter::write
    functionSourceFile: /src/opendal/core/services/gridfs/src/writer.rs
    functionUses: 0
    functionsReached:
    - Ok
    - push
    linkageType: ''
    returnType: Result
    signature: 'async fn write(&mut self, bs: Buffer) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: clone
      Src: /src/opendal/core/services/gridfs/src/writer.rs:48,1
    - Dst: collect
      Src: /src/opendal/core/services/gridfs/src/writer.rs:48,1
    - Dst: io::Result::len
      Src: /src/opendal/core/services/gridfs/src/writer.rs:49,1
    - Dst: set
      Src: /src/opendal/core/services/gridfs/src/writer.rs:50,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/gridfs/src/writer.rs:52,1
    - Dst: EntryMode::from_path
      Src: /src/opendal/core/services/gridfs/src/writer.rs:52,1
    - Dst: Self::with_content_length
      Src: /src/opendal/core/services/gridfs/src/writer.rs:52,1
    - Dst: Ok
      Src: /src/opendal/core/services/gridfs/src/writer.rs:53,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 23
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 54
      start: 47
    functionDepth: 36
    functionLinenumber: 47
    functionLinenumberEnd: 54
    functionName: GridfsWriter::close
    functionSourceFile: /src/opendal/core/services/gridfs/src/writer.rs
    functionUses: 0
    functionsReached:
    - collect
    - Metadata::new
    - Ok
    - io::Result::len
    - set
    - Self::with_content_length
    - clone
    - EntryMode::from_path
    linkageType: ''
    returnType: Result
    signature: async fn close(&mut self) -> Result<Metadata>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: clear
      Src: /src/opendal/core/services/gridfs/src/writer.rs:57,1
    - Dst: Ok
      Src: /src/opendal/core/services/gridfs/src/writer.rs:58,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 59
      start: 56
    functionDepth: 2
    functionLinenumber: 56
    functionLinenumberEnd: 59
    functionName: GridfsWriter::abort
    functionSourceFile: /src/opendal/core/services/gridfs/src/writer.rs
    functionUses: 0
    functionsReached:
    - clear
    - Ok
    linkageType: ''
    returnType: Result
    signature: async fn abort(&mut self) -> Result<()>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: register::<Gridfs>
      Src: /src/opendal/core/services/gridfs/src/lib.rs:38,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - registry
    argTypes:
    - '&opendal_core::OperatorRegistry'
    constantsTouched: []
    func_position:
      end: 39
      start: 37
    functionDepth: 0
    functionLinenumber: 37
    functionLinenumberEnd: 39
    functionName: register_gridfs_service
    functionSourceFile: /src/opendal/core/services/gridfs/src/lib.rs
    functionUses: 1
    functionsReached:
    - register::<Gridfs>
    linkageType: ''
    returnType: void
    signature: 'pub fn register_gridfs_service(registry: &opendal_core::OperatorRegistry)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::is_empty
      Src: /src/opendal/core/services/gridfs/src/backend.rs:59,1
    - Dst: Some
      Src: /src/opendal/core/services/gridfs/src/backend.rs:60,1
    - Dst: Result::to_string
      Src: /src/opendal/core/services/gridfs/src/backend.rs:60,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 1
    argNames:
    - v
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 63
      start: 58
    functionDepth: 4
    functionLinenumber: 58
    functionLinenumberEnd: 63
    functionName: GridfsBuilder::connection_string
    functionSourceFile: /src/opendal/core/services/gridfs/src/backend.rs
    functionUses: 0
    functionsReached:
    - Result::is_empty
    - Result::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn connection_string(mut self, v: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::is_empty
      Src: /src/opendal/core/services/gridfs/src/backend.rs:69,1
    - Dst: Some
      Src: /src/opendal/core/services/gridfs/src/backend.rs:72,1
    - Dst: Result::to_string
      Src: /src/opendal/core/services/gridfs/src/backend.rs:72,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - root
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 76
      start: 68
    functionDepth: 4
    functionLinenumber: 68
    functionLinenumberEnd: 76
    functionName: GridfsBuilder::root
    functionSourceFile: /src/opendal/core/services/gridfs/src/backend.rs
    functionUses: 0
    functionsReached:
    - Result::is_empty
    - Result::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn root(mut self, root: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self::is_empty
      Src: /src/opendal/core/services/gridfs/src/backend.rs:80,1
    - Dst: Some
      Src: /src/opendal/core/services/gridfs/src/backend.rs:81,1
    - Dst: Self::to_string
      Src: /src/opendal/core/services/gridfs/src/backend.rs:81,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 1
    argNames:
    - database
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 84
      start: 79
    functionDepth: 4
    functionLinenumber: 79
    functionLinenumberEnd: 84
    functionName: GridfsBuilder::database
    functionSourceFile: /src/opendal/core/services/gridfs/src/backend.rs
    functionUses: 0
    functionsReached:
    - Self::is_empty
    - Self::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn database(mut self, database: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: usize::is_empty
      Src: /src/opendal/core/services/gridfs/src/backend.rs:90,1
    - Dst: Some
      Src: /src/opendal/core/services/gridfs/src/backend.rs:91,1
    - Dst: usize::to_string
      Src: /src/opendal/core/services/gridfs/src/backend.rs:91,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 1
    argNames:
    - bucket
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 94
      start: 89
    functionDepth: 4
    functionLinenumber: 89
    functionLinenumberEnd: 94
    functionName: GridfsBuilder::bucket
    functionSourceFile: /src/opendal/core/services/gridfs/src/backend.rs
    functionUses: 0
    functionsReached:
    - Some
    - usize::to_string
    - usize::is_empty
    linkageType: ''
    returnType: Self
    signature: 'pub fn bucket(mut self, bucket: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Some
      Src: /src/opendal/core/services/gridfs/src/backend.rs:101,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - chunk_size
    argTypes:
    - u32
    constantsTouched: []
    func_position:
      end: 104
      start: 99
    functionDepth: 0
    functionLinenumber: 99
    functionLinenumberEnd: 104
    functionName: GridfsBuilder::chunk_size
    functionSourceFile: /src/opendal/core/services/gridfs/src/backend.rs
    functionUses: 0
    functionsReached:
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn chunk_size(mut self, chunk_size: u32) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: clone
      Src: /src/opendal/core/services/gridfs/src/backend.rs:111,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/gridfs/src/backend.rs:112,1
    - Dst: Err
      Src: /src/opendal/core/services/gridfs/src/backend.rs:114,1
    - Dst: Error::new
      Src: /src/opendal/core/services/gridfs/src/backend.rs:115,1
    - Dst: Self::with_context
      Src: /src/opendal/core/services/gridfs/src/backend.rs:115,1
    - Dst: clone
      Src: /src/opendal/core/services/gridfs/src/backend.rs:120,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/gridfs/src/backend.rs:121,1
    - Dst: Err
      Src: /src/opendal/core/services/gridfs/src/backend.rs:123,1
    - Dst: Error::new
      Src: /src/opendal/core/services/gridfs/src/backend.rs:123,1
    - Dst: Self::with_context
      Src: /src/opendal/core/services/gridfs/src/backend.rs:123,1
    - Dst: clone
      Src: /src/opendal/core/services/gridfs/src/backend.rs:127,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/gridfs/src/backend.rs:128,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/gridfs/src/backend.rs:129,1
    - Dst: unwrap_or
      Src: /src/opendal/core/services/gridfs/src/backend.rs:131,1
    - Dst: normalize_root
      Src: /src/opendal/core/services/gridfs/src/backend.rs:133,1
    - Dst: clone
      Src: /src/opendal/core/services/gridfs/src/backend.rs:134,1
    - Dst: unwrap_or_else
      Src: /src/opendal/core/services/gridfs/src/backend.rs:134,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/gridfs/src/backend.rs:137,1
    - Dst: as_str
      Src: /src/opendal/core/services/gridfs/src/backend.rs:134,1
    - Dst: Ok
      Src: /src/opendal/core/services/gridfs/src/backend.rs:141,1
    - Dst: GridfsBackend::new
      Src: /src/opendal/core/services/gridfs/src/backend.rs:141,1
    - Dst: OnceCell::new
      Src: /src/opendal/core/services/gridfs/src/backend.rs:146,1
    - Dst: Self::with_normalized_root
      Src: /src/opendal/core/services/gridfs/src/backend.rs:141,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 60
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 149
      start: 110
    functionDepth: 36
    functionLinenumber: 110
    functionLinenumberEnd: 149
    functionName: GridfsBuilder::build
    functionSourceFile: /src/opendal/core/services/gridfs/src/backend.rs
    functionUses: 0
    functionsReached:
    - Result::clone
    - Ok
    - Self::with_normalized_root
    - clone
    - normalize_root
    - Error::new
    - Err
    - as_str
    - '&str::to_string'
    - GridfsBackend::new
    - OnceCell::new
    - Self::with_context
    - unwrap_or_else
    - unwrap_or
    linkageType: ''
    returnType: Result
    signature: fn build(self) -> Result<impl Service>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: ServiceInfo::new
      Src: /src/opendal/core/services/gridfs/src/backend.rs:163,1
    - Dst: Default::default
      Src: /src/opendal/core/services/gridfs/src/backend.rs:175,1
    - Dst: Arc::new
      Src: /src/opendal/core/services/gridfs/src/backend.rs:179,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/gridfs/src/backend.rs:180,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - core
    argTypes:
    - GridfsCore
    constantsTouched: []
    func_position:
      end: 184
      start: 162
    functionDepth: 33
    functionLinenumber: 162
    functionLinenumberEnd: 184
    functionName: GridfsBackend::new
    functionSourceFile: /src/opendal/core/services/gridfs/src/backend.rs
    functionUses: 1
    functionsReached:
    - Arc::new
    - ServiceInfo::new
    - '&str::to_string'
    - Default::default
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(core: GridfsCore) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: with_root
      Src: /src/opendal/core/services/gridfs/src/backend.rs:187,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 1
    argNames:
    - root
    argTypes:
    - String
    constantsTouched: []
    func_position:
      end: 190
      start: 186
    functionDepth: 33
    functionLinenumber: 186
    functionLinenumberEnd: 190
    functionName: GridfsBackend::with_normalized_root
    functionSourceFile: /src/opendal/core/services/gridfs/src/backend.rs
    functionUses: 0
    functionsReached:
    - with_root
    linkageType: ''
    returnType: Self
    signature: 'fn with_normalized_root(mut self, root: String) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: clone
      Src: /src/opendal/core/services/gridfs/src/backend.rs:201,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 202
      start: 200
    functionDepth: 2
    functionLinenumber: 200
    functionLinenumberEnd: 202
    functionName: GridfsBackend::info
    functionSourceFile: /src/opendal/core/services/gridfs/src/backend.rs
    functionUses: 0
    functionsReached:
    - clone
    linkageType: ''
    returnType: ServiceInfo
    signature: fn info(&self) -> ServiceInfo
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 206
      start: 204
    functionDepth: 0
    functionLinenumber: 204
    functionLinenumberEnd: 206
    functionName: GridfsBackend::capability
    functionSourceFile: /src/opendal/core/services/gridfs/src/backend.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Capability
    signature: fn capability(&self) -> Capability
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/core/services/gridfs/src/backend.rs:214,1
    - Dst: Error::new
      Src: /src/opendal/core/services/gridfs/src/backend.rs:214,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - _ctx
    - _path
    - _args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpCreateDir
    constantsTouched: []
    func_position:
      end: 218
      start: 208
    functionDepth: 36
    functionLinenumber: 208
    functionLinenumberEnd: 218
    functionName: GridfsBackend::create_dir
    functionSourceFile: /src/opendal/core/services/gridfs/src/backend.rs
    functionUses: 0
    functionsReached:
    - Error::new
    - Err
    linkageType: ''
    returnType: Result
    signature: 'async fn create_dir(&self,_ctx: &OperationContext,_path: &str,_args:
      OpCreateDir,) -> Result<RpCreateDir>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/gridfs/src/backend.rs:221,1
    - Dst: build_abs_path
      Src: /src/opendal/core/services/gridfs/src/backend.rs:223,1
    - Dst: Ok
      Src: /src/opendal/core/services/gridfs/src/backend.rs:224,1
    - Dst: RpStat::new
      Src: /src/opendal/core/services/gridfs/src/backend.rs:224,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/gridfs/src/backend.rs:224,1
    - Dst: get_length
      Src: /src/opendal/core/services/gridfs/src/backend.rs:226,1
    - Dst: Ok
      Src: /src/opendal/core/services/gridfs/src/backend.rs:227,1
    - Dst: RpStat::new
      Src: /src/opendal/core/services/gridfs/src/backend.rs:227,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/gridfs/src/backend.rs:228,1
    - Dst: Self::with_content_length
      Src: /src/opendal/core/services/gridfs/src/backend.rs:228,1
    - Dst: Err
      Src: /src/opendal/core/services/gridfs/src/backend.rs:230,1
    - Dst: Error::new
      Src: /src/opendal/core/services/gridfs/src/backend.rs:230,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 28
    argCount: 3
    argNames:
    - _ctx
    - path
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpStat
    constantsTouched: []
    func_position:
      end: 233
      start: 220
    functionDepth: 35
    functionLinenumber: 220
    functionLinenumberEnd: 233
    functionName: GridfsBackend::stat
    functionSourceFile: /src/opendal/core/services/gridfs/src/backend.rs
    functionUses: 0
    functionsReached:
    - Metadata::new
    - Ok
    - Self::with_content_length
    - get_length
    - RpStat::new
    - build_abs_path
    - Err
    - Error::new
    linkageType: ''
    returnType: Result
    signature: 'async fn stat(&self, _ctx: &OperationContext, path: &str, _: OpStat)
      -> Result<RpStat>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/core/services/gridfs/src/backend.rs:236,1
    - Dst: oio::StreamReader::new
      Src: /src/opendal/core/services/gridfs/src/backend.rs:236,1
    - Dst: GridfsReader::new
      Src: /src/opendal/core/services/gridfs/src/backend.rs:236,1
    - Dst: GridfsBackend::clone
      Src: /src/opendal/core/services/gridfs/src/backend.rs:237,1
    - Dst: Ok
      Src: /src/opendal/core/services/gridfs/src/backend.rs:243,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - _ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpRead
    constantsTouched: []
    func_position:
      end: 244
      start: 234
    functionDepth: 3
    functionLinenumber: 234
    functionLinenumberEnd: 244
    functionName: GridfsBackend::read
    functionSourceFile: /src/opendal/core/services/gridfs/src/backend.rs
    functionUses: 0
    functionsReached:
    - oio::StreamReader::new
    - GridfsReader::new
    - GridfsBackend::clone
    - Ok
    linkageType: ''
    returnType: Result
    signature: 'fn read(&self, _ctx: &OperationContext, path: &str, args: OpRead)
      -> Result<Self::Reader>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/gridfs/src/backend.rs:248,1
    - Dst: Ok
      Src: /src/opendal/core/services/gridfs/src/backend.rs:249,1
    - Dst: GridfsWriter::new
      Src: /src/opendal/core/services/gridfs/src/backend.rs:249,1
    - Dst: clone
      Src: /src/opendal/core/services/gridfs/src/backend.rs:249,1
    - Dst: Ok
      Src: /src/opendal/core/services/gridfs/src/backend.rs:252,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 3
    argNames:
    - _ctx
    - path
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpWrite
    constantsTouched: []
    func_position:
      end: 253
      start: 246
    functionDepth: 5
    functionLinenumber: 246
    functionLinenumberEnd: 253
    functionName: GridfsBackend::write
    functionSourceFile: /src/opendal/core/services/gridfs/src/backend.rs
    functionUses: 0
    functionsReached:
    - GridfsWriter::new
    - Ok
    - clone
    - build_abs_path
    linkageType: ''
    returnType: Result
    signature: 'fn write(&self, _ctx: &OperationContext, path: &str, _: OpWrite) ->
      Result<Self::Writer>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/core/services/gridfs/src/backend.rs:257,1
    - Dst: oio::OneShotDeleter::new
      Src: /src/opendal/core/services/gridfs/src/backend.rs:257,1
    - Dst: GridfsDeleter::new
      Src: /src/opendal/core/services/gridfs/src/backend.rs:257,1
    - Dst: clone
      Src: /src/opendal/core/services/gridfs/src/backend.rs:258,1
    - Dst: clone
      Src: /src/opendal/core/services/gridfs/src/backend.rs:259,1
    - Dst: Ok
      Src: /src/opendal/core/services/gridfs/src/backend.rs:263,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 1
    argNames:
    - _ctx
    argTypes:
    - '&OperationContext'
    constantsTouched: []
    func_position:
      end: 264
      start: 255
    functionDepth: 2
    functionLinenumber: 255
    functionLinenumberEnd: 264
    functionName: GridfsBackend::delete
    functionSourceFile: /src/opendal/core/services/gridfs/src/backend.rs
    functionUses: 0
    functionsReached:
    - oio::OneShotDeleter::new
    - clone
    - GridfsDeleter::new
    - Ok
    linkageType: ''
    returnType: Result
    signature: 'fn delete(&self, _ctx: &OperationContext) -> Result<Self::Deleter>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/core/services/gridfs/src/backend.rs:267,1
    - Dst: Error::new
      Src: /src/opendal/core/services/gridfs/src/backend.rs:267,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - _ctx
    - _path
    - _args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpList
    constantsTouched: []
    func_position:
      end: 271
      start: 266
    functionDepth: 36
    functionLinenumber: 266
    functionLinenumberEnd: 271
    functionName: GridfsBackend::list
    functionSourceFile: /src/opendal/core/services/gridfs/src/backend.rs
    functionUses: 0
    functionsReached:
    - Error::new
    - Err
    linkageType: ''
    returnType: Result
    signature: 'fn list(&self, _ctx: &OperationContext, _path: &str, _args: OpList)
      -> Result<Self::Lister>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/core/services/gridfs/src/backend.rs:281,1
    - Dst: Error::new
      Src: /src/opendal/core/services/gridfs/src/backend.rs:281,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 5
    argNames:
    - _ctx
    - _from
    - _to
    - _args
    - _opts
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    - OpCopy
    - OpCopier
    constantsTouched: []
    func_position:
      end: 285
      start: 273
    functionDepth: 36
    functionLinenumber: 273
    functionLinenumberEnd: 285
    functionName: GridfsBackend::copy
    functionSourceFile: /src/opendal/core/services/gridfs/src/backend.rs
    functionUses: 0
    functionsReached:
    - Error::new
    - Err
    linkageType: ''
    returnType: Result
    signature: 'fn copy(&self,_ctx: &OperationContext,_from: &str,_to: &str,_args:
      OpCopy,_opts: OpCopier,) -> Result<Self::Copier>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/core/services/gridfs/src/backend.rs:294,1
    - Dst: Error::new
      Src: /src/opendal/core/services/gridfs/src/backend.rs:294,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - _ctx
    - _from
    - _to
    - _args
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    - OpRename
    constantsTouched: []
    func_position:
      end: 298
      start: 287
    functionDepth: 36
    functionLinenumber: 287
    functionLinenumberEnd: 298
    functionName: GridfsBackend::rename
    functionSourceFile: /src/opendal/core/services/gridfs/src/backend.rs
    functionUses: 0
    functionsReached:
    - Error::new
    - Err
    linkageType: ''
    returnType: Result
    signature: 'async fn rename(&self,_ctx: &OperationContext,_from: &str,_to: &str,_args:
      OpRename,) -> Result<RpRename>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/core/services/gridfs/src/backend.rs:306,1
    - Dst: Error::new
      Src: /src/opendal/core/services/gridfs/src/backend.rs:306,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - _ctx
    - _path
    - _args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpPresign
    constantsTouched: []
    func_position:
      end: 310
      start: 300
    functionDepth: 36
    functionLinenumber: 300
    functionLinenumberEnd: 310
    functionName: GridfsBackend::presign
    functionSourceFile: /src/opendal/core/services/gridfs/src/backend.rs
    functionUses: 0
    functionsReached:
    - Error::new
    - Err
    linkageType: ''
    returnType: Result
    signature: 'async fn presign(&self,_ctx: &OperationContext,_path: &str,_args:
      OpPresign,) -> Result<RpPresign>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::debug_struct
      Src: /src/opendal/core/services/surrealdb/src/config.rs:52,1
    - Dst: field
      Src: /src/opendal/core/services/surrealdb/src/config.rs:52,1
    - Dst: field
      Src: /src/opendal/core/services/surrealdb/src/config.rs:52,1
    - Dst: field
      Src: /src/opendal/core/services/surrealdb/src/config.rs:52,1
    - Dst: field
      Src: /src/opendal/core/services/surrealdb/src/config.rs:52,1
    - Dst: field
      Src: /src/opendal/core/services/surrealdb/src/config.rs:52,1
    - Dst: field
      Src: /src/opendal/core/services/surrealdb/src/config.rs:52,1
    - Dst: field
      Src: /src/opendal/core/services/surrealdb/src/config.rs:52,1
    - Dst: finish_non_exhaustive
      Src: /src/opendal/core/services/surrealdb/src/config.rs:52,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 32
    argCount: 1
    argNames:
    - f
    argTypes:
    - '&mut std::fmt::Formatter<''_>'
    constantsTouched: []
    func_position:
      end: 61
      start: 51
    functionDepth: 5
    functionLinenumber: 51
    functionLinenumberEnd: 61
    functionName: SurrealdbConfig::fmt
    functionSourceFile: /src/opendal/core/services/surrealdb/src/config.rs
    functionUses: 0
    functionsReached:
    - field
    - Result::debug_struct
    - finish_non_exhaustive
    linkageType: ''
    returnType: std::fmt::Result
    signature: 'fn fmt(&self, f: &mut std::fmt::Formatter<''_>) -> std::fmt::Result'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::options
      Src: /src/opendal/core/services/surrealdb/src/config.rs:68,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/surrealdb/src/config.rs:68,1
    - Dst: Result::authority
      Src: /src/opendal/core/services/surrealdb/src/config.rs:70,1
    - Dst: Result::entry
      Src: /src/opendal/core/services/surrealdb/src/config.rs:71,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/surrealdb/src/config.rs:71,1
    - Dst: crate::Entry::or_insert_with
      Src: /src/opendal/core/services/surrealdb/src/config.rs:71,1
    - Dst: Result::root
      Src: /src/opendal/core/services/surrealdb/src/config.rs:75,1
    - Dst: is_empty
      Src: /src/opendal/core/services/surrealdb/src/config.rs:76,1
    - Dst: splitn
      Src: /src/opendal/core/services/surrealdb/src/config.rs:78,1
    - Dst: next
      Src: /src/opendal/core/services/surrealdb/src/config.rs:79,1
    - Dst: is_empty
      Src: /src/opendal/core/services/surrealdb/src/config.rs:80,1
    - Dst: Result::entry
      Src: /src/opendal/core/services/surrealdb/src/config.rs:82,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/surrealdb/src/config.rs:82,1
    - Dst: crate::Entry::or_insert_with
      Src: /src/opendal/core/services/surrealdb/src/config.rs:82,1
    - Dst: to_string
      Src: /src/opendal/core/services/surrealdb/src/config.rs:83,1
    - Dst: next
      Src: /src/opendal/core/services/surrealdb/src/config.rs:85,1
    - Dst: Self::is_empty
      Src: /src/opendal/core/services/surrealdb/src/config.rs:86,1
    - Dst: Result::entry
      Src: /src/opendal/core/services/surrealdb/src/config.rs:88,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/surrealdb/src/config.rs:88,1
    - Dst: crate::Entry::or_insert_with
      Src: /src/opendal/core/services/surrealdb/src/config.rs:88,1
    - Dst: Self::to_string
      Src: /src/opendal/core/services/surrealdb/src/config.rs:89,1
    - Dst: next
      Src: /src/opendal/core/services/surrealdb/src/config.rs:91,1
    - Dst: Self::is_empty
      Src: /src/opendal/core/services/surrealdb/src/config.rs:92,1
    - Dst: Result::entry
      Src: /src/opendal/core/services/surrealdb/src/config.rs:94,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/surrealdb/src/config.rs:94,1
    - Dst: crate::Entry::or_insert_with
      Src: /src/opendal/core/services/surrealdb/src/config.rs:94,1
    - Dst: Self::to_string
      Src: /src/opendal/core/services/surrealdb/src/config.rs:95,1
    - Dst: next
      Src: /src/opendal/core/services/surrealdb/src/config.rs:97,1
    - Dst: is_empty
      Src: /src/opendal/core/services/surrealdb/src/config.rs:98,1
    - Dst: Result::insert
      Src: /src/opendal/core/services/surrealdb/src/config.rs:100,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/surrealdb/src/config.rs:100,1
    - Dst: to_string
      Src: /src/opendal/core/services/surrealdb/src/config.rs:100,1
    - Dst: Self::from_iter
      Src: /src/opendal/core/services/surrealdb/src/config.rs:104,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 91
    argCount: 1
    argNames:
    - uri
    argTypes:
    - '&opendal_core::OperatorUri'
    constantsTouched: []
    func_position:
      end: 105
      start: 67
    functionDepth: 35
    functionLinenumber: 67
    functionLinenumberEnd: 105
    functionName: SurrealdbConfig::from_uri
    functionSourceFile: /src/opendal/core/services/surrealdb/src/config.rs
    functionUses: 1
    functionsReached:
    - Result::clone
    - next
    - to_string
    - Self::from_iter
    - Result::entry
    - Self::to_string
    - crate::Entry::or_insert_with
    - Result::insert
    - is_empty
    - Self::is_empty
    - '&str::to_string'
    - Result::root
    - Result::authority
    - splitn
    - Result::options
    linkageType: ''
    returnType: opendal_core::Result
    signature: 'fn from_uri(uri: &opendal_core::OperatorUri) -> opendal_core::Result<Self>'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 109
      start: 107
    functionDepth: 0
    functionLinenumber: 107
    functionLinenumberEnd: 109
    functionName: SurrealdbConfig::into_builder
    functionSourceFile: /src/opendal/core/services/surrealdb/src/config.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Self::Builder
    signature: fn into_builder(self) -> Self::Builder
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: OperatorUri::new
      Src: /src/opendal/core/services/surrealdb/src/config.rs:120,1
    - Dst: Vec::<(String, String)>::new
      Src: /src/opendal/core/services/surrealdb/src/config.rs:122,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/services/surrealdb/src/config.rs:120,1
    - Dst: SurrealdbConfig::from_uri
      Src: /src/opendal/core/services/surrealdb/src/config.rs:126,1
    - Dst: opendal_core::Result::unwrap
      Src: /src/opendal/core/services/surrealdb/src/config.rs:126,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 135
      start: 119
    functionDepth: 29
    functionLinenumber: 119
    functionLinenumberEnd: 135
    functionName: tests::from_uri_sets_connection_namespace_database_table_and_root
    functionSourceFile: /src/opendal/core/services/surrealdb/src/config.rs
    functionUses: 0
    functionsReached:
    - SurrealdbConfig::from_uri
    - Vec::<(String, String)>::new
    - OperatorUri::new
    - Result::unwrap
    - opendal_core::Result::unwrap
    linkageType: ''
    returnType: void
    signature: fn from_uri_sets_connection_namespace_database_table_and_root()
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - core
    - root
    argTypes:
    - Arc<SurrealdbCore>
    - String
    constantsTouched: []
    func_position:
      end: 33
      start: 31
    functionDepth: 0
    functionLinenumber: 31
    functionLinenumberEnd: 33
    functionName: SurrealdbDeleter::new
    functionSourceFile: /src/opendal/core/services/surrealdb/src/deleter.rs
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(core: Arc<SurrealdbCore>, root: String) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/surrealdb/src/deleter.rs:38,1
    - Dst: delete
      Src: /src/opendal/core/services/surrealdb/src/deleter.rs:39,1
    - Dst: Ok
      Src: /src/opendal/core/services/surrealdb/src/deleter.rs:40,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 2
    argNames:
    - path
    argTypes:
    - String
    - OpDelete
    constantsTouched: []
    func_position:
      end: 41
      start: 37
    functionDepth: 32
    functionLinenumber: 37
    functionLinenumberEnd: 41
    functionName: SurrealdbDeleter::delete_once
    functionSourceFile: /src/opendal/core/services/surrealdb/src/deleter.rs
    functionUses: 0
    functionsReached:
    - Ok
    - build_abs_path
    - delete
    linkageType: ''
    returnType: Result
    signature: 'async fn delete_once(&self, path: String, _: OpDelete) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: to_string
      Src: /src/opendal/core/services/surrealdb/src/reader.rs:32,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - backend
    - path
    argTypes:
    - SurrealdbBackend
    - '&str'
    - OpRead
    constantsTouched: []
    func_position:
      end: 34
      start: 29
    functionDepth: 2
    functionLinenumber: 29
    functionLinenumberEnd: 34
    functionName: SurrealdbReader::new
    functionSourceFile: /src/opendal/core/services/surrealdb/src/reader.rs
    functionUses: 1
    functionsReached:
    - to_string
    linkageType: ''
    returnType: Self
    signature: 'pub(super) fn new(backend: SurrealdbBackend, path: &str, _: OpRead)
      -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: as_str
      Src: /src/opendal/core/services/surrealdb/src/reader.rs:40,1
    - Dst: build_abs_path
      Src: /src/opendal/core/services/surrealdb/src/reader.rs:41,1
    - Dst: get
      Src: /src/opendal/core/services/surrealdb/src/reader.rs:42,1
    - Dst: Err
      Src: /src/opendal/core/services/surrealdb/src/reader.rs:45,1
    - Dst: Error::new
      Src: /src/opendal/core/services/surrealdb/src/reader.rs:45,1
    - Dst: Result::slice
      Src: /src/opendal/core/services/surrealdb/src/reader.rs:48,1
    - Dst: (Vec::to_content_range
      Src: /src/opendal/core/services/surrealdb/src/reader.rs:48,1
    - Dst: Result::len
      Src: /src/opendal/core/services/surrealdb/src/reader.rs:48,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/surrealdb/src/reader.rs:49,1
    - Dst: Self::with_content_length
      Src: /src/opendal/core/services/surrealdb/src/reader.rs:49,1
    - Dst: Result::len
      Src: /src/opendal/core/services/surrealdb/src/reader.rs:49,1
    - Dst: Ok
      Src: /src/opendal/core/services/surrealdb/src/reader.rs:50,1
    - Dst: RpRead::new
      Src: /src/opendal/core/services/surrealdb/src/reader.rs:51,1
    - Dst: Box::new
      Src: /src/opendal/core/services/surrealdb/src/reader.rs:52,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 37
    argCount: 1
    argNames:
    - range
    argTypes:
    - BytesRange
    constantsTouched: []
    func_position:
      end: 54
      start: 38
    functionDepth: 36
    functionLinenumber: 38
    functionLinenumberEnd: 54
    functionName: SurrealdbReader::open
    functionSourceFile: /src/opendal/core/services/surrealdb/src/reader.rs
    functionUses: 0
    functionsReached:
    - Metadata::new
    - get
    - Ok
    - Box::new
    - Self::with_content_length
    - build_abs_path
    - Error::new
    - Err
    - as_str
    - Result::slice
    - (Vec::to_content_range
    - Result::len
    - RpRead::new
    linkageType: ''
    returnType: Result
    signature: 'async fn open(&self, range: BytesRange) -> Result<(RpRead, Box<dyn
      oio::ReadStreamDyn>)>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::debug_struct
      Src: /src/opendal/core/services/surrealdb/src/core.rs:45,1
    - Dst: field
      Src: /src/opendal/core/services/surrealdb/src/core.rs:45,1
    - Dst: field
      Src: /src/opendal/core/services/surrealdb/src/core.rs:45,1
    - Dst: field
      Src: /src/opendal/core/services/surrealdb/src/core.rs:45,1
    - Dst: field
      Src: /src/opendal/core/services/surrealdb/src/core.rs:45,1
    - Dst: field
      Src: /src/opendal/core/services/surrealdb/src/core.rs:45,1
    - Dst: field
      Src: /src/opendal/core/services/surrealdb/src/core.rs:45,1
    - Dst: field
      Src: /src/opendal/core/services/surrealdb/src/core.rs:45,1
    - Dst: finish_non_exhaustive
      Src: /src/opendal/core/services/surrealdb/src/core.rs:45,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 32
    argCount: 1
    argNames:
    - f
    argTypes:
    - '&mut std::fmt::Formatter<''_>'
    constantsTouched: []
    func_position:
      end: 54
      start: 44
    functionDepth: 5
    functionLinenumber: 44
    functionLinenumberEnd: 54
    functionName: SurrealdbCore::fmt
    functionSourceFile: /src/opendal/core/services/surrealdb/src/core.rs
    functionUses: 0
    functionsReached:
    - field
    - Result::debug_struct
    - finish_non_exhaustive
    linkageType: ''
    returnType: std::fmt::Result
    signature: 'fn fmt(&self, f: &mut std::fmt::Formatter<''_>) -> std::fmt::Result'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: get_or_try_init
      Src: /src/opendal/core/services/surrealdb/src/core.rs:59,1
    - Dst: as_str
      Src: /src/opendal/core/services/surrealdb/src/core.rs:61,1
    - Dst: as_str
      Src: /src/opendal/core/services/surrealdb/src/core.rs:62,1
    - Dst: Surreal::init
      Src: /src/opendal/core/services/surrealdb/src/core.rs:64,1
    - Dst: i64::connect
      Src: /src/opendal/core/services/surrealdb/src/core.rs:65,1
    - Dst: clone
      Src: /src/opendal/core/services/surrealdb/src/core.rs:65,1
    - Dst: map_err
      Src: /src/opendal/core/services/surrealdb/src/core.rs:65,1
    - Dst: is_empty
      Src: /src/opendal/core/services/surrealdb/src/core.rs:69,1
    - Dst: is_empty
      Src: /src/opendal/core/services/surrealdb/src/core.rs:69,1
    - Dst: i64::signin
      Src: /src/opendal/core/services/surrealdb/src/core.rs:70,1
    - Dst: to_string
      Src: /src/opendal/core/services/surrealdb/src/core.rs:71,1
    - Dst: Self::to_string
      Src: /src/opendal/core/services/surrealdb/src/core.rs:72,1
    - Dst: clone
      Src: /src/opendal/core/services/surrealdb/src/core.rs:73,1
    - Dst: clone
      Src: /src/opendal/core/services/surrealdb/src/core.rs:74,1
    - Dst: map_err
      Src: /src/opendal/core/services/surrealdb/src/core.rs:70,1
    - Dst: i64::use_ns
      Src: /src/opendal/core/services/surrealdb/src/core.rs:79,1
    - Dst: use_db
      Src: /src/opendal/core/services/surrealdb/src/core.rs:79,1
    - Dst: map_err
      Src: /src/opendal/core/services/surrealdb/src/core.rs:79,1
    - Dst: Ok
      Src: /src/opendal/core/services/surrealdb/src/core.rs:84,1
    - Dst: Arc::new
      Src: /src/opendal/core/services/surrealdb/src/core.rs:84,1
    - Dst: map
      Src: /src/opendal/core/services/surrealdb/src/core.rs:59,1
    - Dst: Result::as_ref
      Src: /src/opendal/core/services/surrealdb/src/core.rs:87,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 67
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 88
      start: 58
    functionDepth: 4
    functionLinenumber: 58
    functionLinenumberEnd: 88
    functionName: SurrealdbCore::get_connection
    functionSourceFile: /src/opendal/core/services/surrealdb/src/core.rs
    functionUses: 4
    functionsReached:
    - map_err
    - to_string
    - Ok
    - Self::to_string
    - get_or_try_init
    - Arc::new
    - clone
    - is_empty
    - as_str
    - i64::connect
    - i64::signin
    - map
    - i64::use_ns
    - Surreal::init
    - Result::as_ref
    - use_db
    linkageType: ''
    returnType: Result
    signature: async fn get_connection(&self) -> Result<&Surreal<Any>>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/surrealdb/src/core.rs:92,1
    - Dst: SurrealdbCore::get_connection
      Src: /src/opendal/core/services/surrealdb/src/core.rs:100,1
    - Dst: query
      Src: /src/opendal/core/services/surrealdb/src/core.rs:100,1
    - Dst: bind
      Src: /src/opendal/core/services/surrealdb/src/core.rs:100,1
    - Dst: bind
      Src: /src/opendal/core/services/surrealdb/src/core.rs:100,1
    - Dst: to_string
      Src: /src/opendal/core/services/surrealdb/src/core.rs:105,1
    - Dst: bind
      Src: /src/opendal/core/services/surrealdb/src/core.rs:100,1
    - Dst: to_string
      Src: /src/opendal/core/services/surrealdb/src/core.rs:106,1
    - Dst: bind
      Src: /src/opendal/core/services/surrealdb/src/core.rs:100,1
    - Dst: to_string
      Src: /src/opendal/core/services/surrealdb/src/core.rs:107,1
    - Dst: map_err
      Src: /src/opendal/core/services/surrealdb/src/core.rs:100,1
    - Dst: bool::take
      Src: /src/opendal/core/services/surrealdb/src/core.rs:111,1
    - Dst: as_str
      Src: /src/opendal/core/services/surrealdb/src/core.rs:112,1
    - Dst: QueueBuf::map_err
      Src: /src/opendal/core/services/surrealdb/src/core.rs:111,1
    - Dst: Ok
      Src: /src/opendal/core/services/surrealdb/src/core.rs:115,1
    - Dst: Vec::map
      Src: /src/opendal/core/services/surrealdb/src/core.rs:115,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 47
    argCount: 1
    argNames:
    - path
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 116
      start: 90
    functionDepth: 36
    functionLinenumber: 90
    functionLinenumberEnd: 116
    functionName: SurrealdbCore::get
    functionSourceFile: /src/opendal/core/services/surrealdb/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - to_string
    - Ok
    - bool::take
    - QueueBuf::map_err
    - bind
    - as_str
    - '&str::to_string'
    - SurrealdbCore::get_connection
    - query
    - Vec::map
    linkageType: ''
    returnType: Result
    signature: 'pub async fn get(&self, path: &str) -> Result<Option<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/surrealdb/src/core.rs:120,1
    - Dst: SurrealdbCore::get_connection
      Src: /src/opendal/core/services/surrealdb/src/core.rs:129,1
    - Dst: query
      Src: /src/opendal/core/services/surrealdb/src/core.rs:129,1
    - Dst: bind
      Src: /src/opendal/core/services/surrealdb/src/core.rs:129,1
    - Dst: bind
      Src: /src/opendal/core/services/surrealdb/src/core.rs:129,1
    - Dst: to_string
      Src: /src/opendal/core/services/surrealdb/src/core.rs:134,1
    - Dst: bind
      Src: /src/opendal/core/services/surrealdb/src/core.rs:129,1
    - Dst: to_string
      Src: /src/opendal/core/services/surrealdb/src/core.rs:135,1
    - Dst: bind
      Src: /src/opendal/core/services/surrealdb/src/core.rs:129,1
    - Dst: to_string
      Src: /src/opendal/core/services/surrealdb/src/core.rs:136,1
    - Dst: map_err
      Src: /src/opendal/core/services/surrealdb/src/core.rs:129,1
    - Dst: bool::take
      Src: /src/opendal/core/services/surrealdb/src/core.rs:140,1
    - Dst: QueueBuf::map_err
      Src: /src/opendal/core/services/surrealdb/src/core.rs:140,1
    - Dst: Vec::map
      Src: /src/opendal/core/services/surrealdb/src/core.rs:144,1
    - Dst: Result::try_into
      Src: /src/opendal/core/services/surrealdb/src/core.rs:146,1
    - Dst: map_err
      Src: /src/opendal/core/services/surrealdb/src/core.rs:146,1
    - Dst: Error::new
      Src: /src/opendal/core/services/surrealdb/src/core.rs:147,1
    - Dst: Self::set_source
      Src: /src/opendal/core/services/surrealdb/src/core.rs:147,1
    - Dst: Result::transpose
      Src: /src/opendal/core/services/surrealdb/src/core.rs:144,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 54
    argCount: 1
    argNames:
    - path
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 152
      start: 118
    functionDepth: 36
    functionLinenumber: 118
    functionLinenumberEnd: 152
    functionName: SurrealdbCore::get_length
    functionSourceFile: /src/opendal/core/services/surrealdb/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - to_string
    - bool::take
    - QueueBuf::map_err
    - bind
    - Error::new
    - '&str::to_string'
    - SurrealdbCore::get_connection
    - Result::try_into
    - query
    - Self::set_source
    - Vec::map
    - Result::transpose
    linkageType: ''
    returnType: Result
    signature: 'pub async fn get_length(&self, path: &str) -> Result<Option<usize>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: SurrealdbCore::get_connection
      Src: /src/opendal/core/services/surrealdb/src/core.rs:161,1
    - Dst: query
      Src: /src/opendal/core/services/surrealdb/src/core.rs:161,1
    - Dst: bind
      Src: /src/opendal/core/services/surrealdb/src/core.rs:161,1
    - Dst: to_string
      Src: /src/opendal/core/services/surrealdb/src/core.rs:164,1
    - Dst: bind
      Src: /src/opendal/core/services/surrealdb/src/core.rs:161,1
    - Dst: Vec::to_vec
      Src: /src/opendal/core/services/surrealdb/src/core.rs:165,1
    - Dst: map_err
      Src: /src/opendal/core/services/surrealdb/src/core.rs:161,1
    - Dst: Ok
      Src: /src/opendal/core/services/surrealdb/src/core.rs:168,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 23
    argCount: 2
    argNames:
    - path
    - value
    argTypes:
    - '&str'
    - Buffer
    constantsTouched: []
    func_position:
      end: 169
      start: 154
    functionDepth: 36
    functionLinenumber: 154
    functionLinenumberEnd: 169
    functionName: SurrealdbCore::set
    functionSourceFile: /src/opendal/core/services/surrealdb/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - to_string
    - Ok
    - bind
    - Vec::to_vec
    - SurrealdbCore::get_connection
    - query
    linkageType: ''
    returnType: Result
    signature: 'pub async fn set(&self, path: &str, value: Buffer) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/surrealdb/src/core.rs:173,1
    - Dst: SurrealdbCore::get_connection
      Src: /src/opendal/core/services/surrealdb/src/core.rs:181,1
    - Dst: query
      Src: /src/opendal/core/services/surrealdb/src/core.rs:181,1
    - Dst: Result::as_str
      Src: /src/opendal/core/services/surrealdb/src/core.rs:183,1
    - Dst: bind
      Src: /src/opendal/core/services/surrealdb/src/core.rs:181,1
    - Dst: to_string
      Src: /src/opendal/core/services/surrealdb/src/core.rs:184,1
    - Dst: bind
      Src: /src/opendal/core/services/surrealdb/src/core.rs:181,1
    - Dst: to_string
      Src: /src/opendal/core/services/surrealdb/src/core.rs:185,1
    - Dst: map_err
      Src: /src/opendal/core/services/surrealdb/src/core.rs:181,1
    - Dst: Ok
      Src: /src/opendal/core/services/surrealdb/src/core.rs:188,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 31
    argCount: 1
    argNames:
    - path
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 189
      start: 171
    functionDepth: 36
    functionLinenumber: 171
    functionLinenumberEnd: 189
    functionName: SurrealdbCore::delete
    functionSourceFile: /src/opendal/core/services/surrealdb/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - to_string
    - Ok
    - bind
    - '&str::to_string'
    - SurrealdbCore::get_connection
    - Result::as_str
    - query
    linkageType: ''
    returnType: Result
    signature: 'pub async fn delete(&self, path: &str) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Error::new
      Src: /src/opendal/core/services/surrealdb/src/core.rs:193,1
    - Dst: Self::set_source
      Src: /src/opendal/core/services/surrealdb/src/core.rs:193,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - err
    argTypes:
    - surrealdb::Error
    constantsTouched: []
    func_position:
      end: 194
      start: 192
    functionDepth: 36
    functionLinenumber: 192
    functionLinenumberEnd: 194
    functionName: parse_surrealdb_error
    functionSourceFile: /src/opendal/core/services/surrealdb/src/core.rs
    functionUses: 0
    functionsReached:
    - Self::set_source
    - Error::new
    linkageType: ''
    returnType: Error
    signature: 'fn parse_surrealdb_error(err: surrealdb::Error) -> Error'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: oio::QueueBuf::new
      Src: /src/opendal/core/services/surrealdb/src/writer.rs:35,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - core
    - path
    argTypes:
    - Arc<SurrealdbCore>
    - String
    constantsTouched: []
    func_position:
      end: 37
      start: 31
    functionDepth: 4
    functionLinenumber: 31
    functionLinenumberEnd: 37
    functionName: SurrealdbWriter::new
    functionSourceFile: /src/opendal/core/services/surrealdb/src/writer.rs
    functionUses: 1
    functionsReached:
    - oio::QueueBuf::new
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(core: Arc<SurrealdbCore>, path: String) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: push
      Src: /src/opendal/core/services/surrealdb/src/writer.rs:42,1
    - Dst: Ok
      Src: /src/opendal/core/services/surrealdb/src/writer.rs:43,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - bs
    argTypes:
    - Buffer
    constantsTouched: []
    func_position:
      end: 44
      start: 41
    functionDepth: 5
    functionLinenumber: 41
    functionLinenumberEnd: 44
    functionName: SurrealdbWriter::write
    functionSourceFile: /src/opendal/core/services/surrealdb/src/writer.rs
    functionUses: 0
    functionsReached:
    - Ok
    - push
    linkageType: ''
    returnType: Result
    signature: 'async fn write(&mut self, bs: Buffer) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: clone
      Src: /src/opendal/core/services/surrealdb/src/writer.rs:47,1
    - Dst: collect
      Src: /src/opendal/core/services/surrealdb/src/writer.rs:47,1
    - Dst: io::Result::len
      Src: /src/opendal/core/services/surrealdb/src/writer.rs:48,1
    - Dst: set
      Src: /src/opendal/core/services/surrealdb/src/writer.rs:49,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/surrealdb/src/writer.rs:51,1
    - Dst: EntryMode::from_path
      Src: /src/opendal/core/services/surrealdb/src/writer.rs:51,1
    - Dst: Self::with_content_length
      Src: /src/opendal/core/services/surrealdb/src/writer.rs:51,1
    - Dst: Ok
      Src: /src/opendal/core/services/surrealdb/src/writer.rs:52,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 23
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 53
      start: 46
    functionDepth: 36
    functionLinenumber: 46
    functionLinenumberEnd: 53
    functionName: SurrealdbWriter::close
    functionSourceFile: /src/opendal/core/services/surrealdb/src/writer.rs
    functionUses: 0
    functionsReached:
    - collect
    - Metadata::new
    - Ok
    - io::Result::len
    - set
    - Self::with_content_length
    - clone
    - EntryMode::from_path
    linkageType: ''
    returnType: Result
    signature: async fn close(&mut self) -> Result<Metadata>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: clear
      Src: /src/opendal/core/services/surrealdb/src/writer.rs:56,1
    - Dst: Ok
      Src: /src/opendal/core/services/surrealdb/src/writer.rs:57,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 58
      start: 55
    functionDepth: 2
    functionLinenumber: 55
    functionLinenumberEnd: 58
    functionName: SurrealdbWriter::abort
    functionSourceFile: /src/opendal/core/services/surrealdb/src/writer.rs
    functionUses: 0
    functionsReached:
    - clear
    - Ok
    linkageType: ''
    returnType: Result
    signature: async fn abort(&mut self) -> Result<()>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: register::<Surrealdb>
      Src: /src/opendal/core/services/surrealdb/src/lib.rs:37,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - registry
    argTypes:
    - '&opendal_core::OperatorRegistry'
    constantsTouched: []
    func_position:
      end: 38
      start: 36
    functionDepth: 0
    functionLinenumber: 36
    functionLinenumberEnd: 38
    functionName: register_surrealdb_service
    functionSourceFile: /src/opendal/core/services/surrealdb/src/lib.rs
    functionUses: 1
    functionsReached:
    - register::<Surrealdb>
    linkageType: ''
    returnType: void
    signature: 'pub fn register_surrealdb_service(registry: &opendal_core::OperatorRegistry)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::is_empty
      Src: /src/opendal/core/services/surrealdb/src/backend.rs:50,1
    - Dst: Some
      Src: /src/opendal/core/services/surrealdb/src/backend.rs:51,1
    - Dst: Result::to_string
      Src: /src/opendal/core/services/surrealdb/src/backend.rs:51,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 1
    argNames:
    - connection_string
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 54
      start: 49
    functionDepth: 4
    functionLinenumber: 49
    functionLinenumberEnd: 54
    functionName: SurrealdbBuilder::connection_string
    functionSourceFile: /src/opendal/core/services/surrealdb/src/backend.rs
    functionUses: 0
    functionsReached:
    - Result::is_empty
    - Result::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn connection_string(mut self, connection_string: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::is_empty
      Src: /src/opendal/core/services/surrealdb/src/backend.rs:60,1
    - Dst: Some
      Src: /src/opendal/core/services/surrealdb/src/backend.rs:63,1
    - Dst: Result::to_string
      Src: /src/opendal/core/services/surrealdb/src/backend.rs:63,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - root
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 67
      start: 59
    functionDepth: 4
    functionLinenumber: 59
    functionLinenumberEnd: 67
    functionName: SurrealdbBuilder::root
    functionSourceFile: /src/opendal/core/services/surrealdb/src/backend.rs
    functionUses: 0
    functionsReached:
    - Result::is_empty
    - Result::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn root(mut self, root: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self::is_empty
      Src: /src/opendal/core/services/surrealdb/src/backend.rs:71,1
    - Dst: Some
      Src: /src/opendal/core/services/surrealdb/src/backend.rs:72,1
    - Dst: Self::to_string
      Src: /src/opendal/core/services/surrealdb/src/backend.rs:72,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 1
    argNames:
    - table
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 75
      start: 70
    functionDepth: 4
    functionLinenumber: 70
    functionLinenumberEnd: 75
    functionName: SurrealdbBuilder::table
    functionSourceFile: /src/opendal/core/services/surrealdb/src/backend.rs
    functionUses: 0
    functionsReached:
    - Self::is_empty
    - Self::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn table(mut self, table: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Option::is_empty
      Src: /src/opendal/core/services/surrealdb/src/backend.rs:79,1
    - Dst: Some
      Src: /src/opendal/core/services/surrealdb/src/backend.rs:80,1
    - Dst: Option::to_string
      Src: /src/opendal/core/services/surrealdb/src/backend.rs:80,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 1
    argNames:
    - username
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 83
      start: 78
    functionDepth: 4
    functionLinenumber: 78
    functionLinenumberEnd: 83
    functionName: SurrealdbBuilder::username
    functionSourceFile: /src/opendal/core/services/surrealdb/src/backend.rs
    functionUses: 0
    functionsReached:
    - Option::to_string
    - Option::is_empty
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn username(mut self, username: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Option::is_empty
      Src: /src/opendal/core/services/surrealdb/src/backend.rs:87,1
    - Dst: Some
      Src: /src/opendal/core/services/surrealdb/src/backend.rs:88,1
    - Dst: Option::to_string
      Src: /src/opendal/core/services/surrealdb/src/backend.rs:88,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 1
    argNames:
    - password
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 91
      start: 86
    functionDepth: 4
    functionLinenumber: 86
    functionLinenumberEnd: 91
    functionName: SurrealdbBuilder::password
    functionSourceFile: /src/opendal/core/services/surrealdb/src/backend.rs
    functionUses: 0
    functionsReached:
    - Option::to_string
    - Option::is_empty
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn password(mut self, password: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: is_empty
      Src: /src/opendal/core/services/surrealdb/src/backend.rs:95,1
    - Dst: Some
      Src: /src/opendal/core/services/surrealdb/src/backend.rs:96,1
    - Dst: to_string
      Src: /src/opendal/core/services/surrealdb/src/backend.rs:96,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 1
    argNames:
    - namespace
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 99
      start: 94
    functionDepth: 4
    functionLinenumber: 94
    functionLinenumberEnd: 99
    functionName: SurrealdbBuilder::namespace
    functionSourceFile: /src/opendal/core/services/surrealdb/src/backend.rs
    functionUses: 0
    functionsReached:
    - to_string
    - Some
    - is_empty
    linkageType: ''
    returnType: Self
    signature: 'pub fn namespace(mut self, namespace: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self::is_empty
      Src: /src/opendal/core/services/surrealdb/src/backend.rs:103,1
    - Dst: Some
      Src: /src/opendal/core/services/surrealdb/src/backend.rs:104,1
    - Dst: Self::to_string
      Src: /src/opendal/core/services/surrealdb/src/backend.rs:104,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 1
    argNames:
    - database
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 107
      start: 102
    functionDepth: 4
    functionLinenumber: 102
    functionLinenumberEnd: 107
    functionName: SurrealdbBuilder::database
    functionSourceFile: /src/opendal/core/services/surrealdb/src/backend.rs
    functionUses: 0
    functionsReached:
    - Self::is_empty
    - Self::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn database(mut self, database: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self::is_empty
      Src: /src/opendal/core/services/surrealdb/src/backend.rs:113,1
    - Dst: Some
      Src: /src/opendal/core/services/surrealdb/src/backend.rs:114,1
    - Dst: Self::to_string
      Src: /src/opendal/core/services/surrealdb/src/backend.rs:114,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 1
    argNames:
    - key_field
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 117
      start: 112
    functionDepth: 4
    functionLinenumber: 112
    functionLinenumberEnd: 117
    functionName: SurrealdbBuilder::key_field
    functionSourceFile: /src/opendal/core/services/surrealdb/src/backend.rs
    functionUses: 0
    functionsReached:
    - Self::is_empty
    - Self::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn key_field(mut self, key_field: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self::is_empty
      Src: /src/opendal/core/services/surrealdb/src/backend.rs:123,1
    - Dst: Some
      Src: /src/opendal/core/services/surrealdb/src/backend.rs:124,1
    - Dst: Self::to_string
      Src: /src/opendal/core/services/surrealdb/src/backend.rs:124,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 1
    argNames:
    - value_field
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 127
      start: 122
    functionDepth: 4
    functionLinenumber: 122
    functionLinenumberEnd: 127
    functionName: SurrealdbBuilder::value_field
    functionSourceFile: /src/opendal/core/services/surrealdb/src/backend.rs
    functionUses: 0
    functionsReached:
    - Self::is_empty
    - Self::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn value_field(mut self, value_field: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: clone
      Src: /src/opendal/core/services/surrealdb/src/backend.rs:134,1
    - Dst: Err
      Src: /src/opendal/core/services/surrealdb/src/backend.rs:137,1
    - Dst: Error::new
      Src: /src/opendal/core/services/surrealdb/src/backend.rs:138,1
    - Dst: Self::with_context
      Src: /src/opendal/core/services/surrealdb/src/backend.rs:138,1
    - Dst: clone
      Src: /src/opendal/core/services/surrealdb/src/backend.rs:144,1
    - Dst: Err
      Src: /src/opendal/core/services/surrealdb/src/backend.rs:147,1
    - Dst: Error::new
      Src: /src/opendal/core/services/surrealdb/src/backend.rs:147,1
    - Dst: Self::with_context
      Src: /src/opendal/core/services/surrealdb/src/backend.rs:147,1
    - Dst: clone
      Src: /src/opendal/core/services/surrealdb/src/backend.rs:151,1
    - Dst: Err
      Src: /src/opendal/core/services/surrealdb/src/backend.rs:154,1
    - Dst: Error::new
      Src: /src/opendal/core/services/surrealdb/src/backend.rs:154,1
    - Dst: Self::with_context
      Src: /src/opendal/core/services/surrealdb/src/backend.rs:154,1
    - Dst: clone
      Src: /src/opendal/core/services/surrealdb/src/backend.rs:158,1
    - Dst: Err
      Src: /src/opendal/core/services/surrealdb/src/backend.rs:161,1
    - Dst: Error::new
      Src: /src/opendal/core/services/surrealdb/src/backend.rs:161,1
    - Dst: Self::with_context
      Src: /src/opendal/core/services/surrealdb/src/backend.rs:161,1
    - Dst: clone
      Src: /src/opendal/core/services/surrealdb/src/backend.rs:166,1
    - Dst: unwrap_or_default
      Src: /src/opendal/core/services/surrealdb/src/backend.rs:166,1
    - Dst: clone
      Src: /src/opendal/core/services/surrealdb/src/backend.rs:167,1
    - Dst: unwrap_or_default
      Src: /src/opendal/core/services/surrealdb/src/backend.rs:167,1
    - Dst: clone
      Src: /src/opendal/core/services/surrealdb/src/backend.rs:168,1
    - Dst: unwrap_or_else
      Src: /src/opendal/core/services/surrealdb/src/backend.rs:168,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/surrealdb/src/backend.rs:172,1
    - Dst: clone
      Src: /src/opendal/core/services/surrealdb/src/backend.rs:173,1
    - Dst: unwrap_or_else
      Src: /src/opendal/core/services/surrealdb/src/backend.rs:173,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/surrealdb/src/backend.rs:177,1
    - Dst: normalize_root
      Src: /src/opendal/core/services/surrealdb/src/backend.rs:178,1
    - Dst: clone
      Src: /src/opendal/core/services/surrealdb/src/backend.rs:179,1
    - Dst: unwrap_or_else
      Src: /src/opendal/core/services/surrealdb/src/backend.rs:179,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/surrealdb/src/backend.rs:182,1
    - Dst: as_str
      Src: /src/opendal/core/services/surrealdb/src/backend.rs:179,1
    - Dst: Ok
      Src: /src/opendal/core/services/surrealdb/src/backend.rs:186,1
    - Dst: SurrealdbBackend::new
      Src: /src/opendal/core/services/surrealdb/src/backend.rs:186,1
    - Dst: OnceCell::new
      Src: /src/opendal/core/services/surrealdb/src/backend.rs:187,1
    - Dst: Self::with_normalized_root
      Src: /src/opendal/core/services/surrealdb/src/backend.rs:186,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 92
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 198
      start: 133
    functionDepth: 36
    functionLinenumber: 133
    functionLinenumberEnd: 198
    functionName: SurrealdbBuilder::build
    functionSourceFile: /src/opendal/core/services/surrealdb/src/backend.rs
    functionUses: 0
    functionsReached:
    - Ok
    - Self::with_normalized_root
    - clone
    - normalize_root
    - Error::new
    - Err
    - as_str
    - SurrealdbBackend::new
    - '&str::to_string'
    - OnceCell::new
    - Self::with_context
    - unwrap_or_default
    - unwrap_or_else
    linkageType: ''
    returnType: Result
    signature: fn build(self) -> Result<impl Service>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: ServiceInfo::new
      Src: /src/opendal/core/services/surrealdb/src/backend.rs:212,1
    - Dst: Default::default
      Src: /src/opendal/core/services/surrealdb/src/backend.rs:220,1
    - Dst: Arc::new
      Src: /src/opendal/core/services/surrealdb/src/backend.rs:224,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/surrealdb/src/backend.rs:225,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 1
    argNames:
    - core
    argTypes:
    - SurrealdbCore
    constantsTouched: []
    func_position:
      end: 229
      start: 211
    functionDepth: 33
    functionLinenumber: 211
    functionLinenumberEnd: 229
    functionName: SurrealdbBackend::new
    functionSourceFile: /src/opendal/core/services/surrealdb/src/backend.rs
    functionUses: 1
    functionsReached:
    - Arc::new
    - ServiceInfo::new
    - '&str::to_string'
    - Default::default
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(core: SurrealdbCore) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: with_root
      Src: /src/opendal/core/services/surrealdb/src/backend.rs:232,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 1
    argNames:
    - root
    argTypes:
    - String
    constantsTouched: []
    func_position:
      end: 235
      start: 231
    functionDepth: 33
    functionLinenumber: 231
    functionLinenumberEnd: 235
    functionName: SurrealdbBackend::with_normalized_root
    functionSourceFile: /src/opendal/core/services/surrealdb/src/backend.rs
    functionUses: 0
    functionsReached:
    - with_root
    linkageType: ''
    returnType: Self
    signature: 'fn with_normalized_root(mut self, root: String) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: clone
      Src: /src/opendal/core/services/surrealdb/src/backend.rs:246,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 247
      start: 245
    functionDepth: 2
    functionLinenumber: 245
    functionLinenumberEnd: 247
    functionName: SurrealdbBackend::info
    functionSourceFile: /src/opendal/core/services/surrealdb/src/backend.rs
    functionUses: 0
    functionsReached:
    - clone
    linkageType: ''
    returnType: ServiceInfo
    signature: fn info(&self) -> ServiceInfo
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 251
      start: 249
    functionDepth: 0
    functionLinenumber: 249
    functionLinenumberEnd: 251
    functionName: SurrealdbBackend::capability
    functionSourceFile: /src/opendal/core/services/surrealdb/src/backend.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Capability
    signature: fn capability(&self) -> Capability
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/core/services/surrealdb/src/backend.rs:259,1
    - Dst: Error::new
      Src: /src/opendal/core/services/surrealdb/src/backend.rs:259,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - _ctx
    - _path
    - _args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpCreateDir
    constantsTouched: []
    func_position:
      end: 263
      start: 253
    functionDepth: 36
    functionLinenumber: 253
    functionLinenumberEnd: 263
    functionName: SurrealdbBackend::create_dir
    functionSourceFile: /src/opendal/core/services/surrealdb/src/backend.rs
    functionUses: 0
    functionsReached:
    - Error::new
    - Err
    linkageType: ''
    returnType: Result
    signature: 'async fn create_dir(&self,_ctx: &OperationContext,_path: &str,_args:
      OpCreateDir,) -> Result<RpCreateDir>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/surrealdb/src/backend.rs:266,1
    - Dst: build_abs_path
      Src: /src/opendal/core/services/surrealdb/src/backend.rs:268,1
    - Dst: Ok
      Src: /src/opendal/core/services/surrealdb/src/backend.rs:269,1
    - Dst: RpStat::new
      Src: /src/opendal/core/services/surrealdb/src/backend.rs:269,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/surrealdb/src/backend.rs:269,1
    - Dst: get_length
      Src: /src/opendal/core/services/surrealdb/src/backend.rs:271,1
    - Dst: Ok
      Src: /src/opendal/core/services/surrealdb/src/backend.rs:272,1
    - Dst: RpStat::new
      Src: /src/opendal/core/services/surrealdb/src/backend.rs:272,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/surrealdb/src/backend.rs:273,1
    - Dst: Self::with_content_length
      Src: /src/opendal/core/services/surrealdb/src/backend.rs:273,1
    - Dst: Err
      Src: /src/opendal/core/services/surrealdb/src/backend.rs:275,1
    - Dst: Error::new
      Src: /src/opendal/core/services/surrealdb/src/backend.rs:275,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 28
    argCount: 3
    argNames:
    - _ctx
    - path
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpStat
    constantsTouched: []
    func_position:
      end: 278
      start: 265
    functionDepth: 35
    functionLinenumber: 265
    functionLinenumberEnd: 278
    functionName: SurrealdbBackend::stat
    functionSourceFile: /src/opendal/core/services/surrealdb/src/backend.rs
    functionUses: 0
    functionsReached:
    - Metadata::new
    - Ok
    - Self::with_content_length
    - get_length
    - RpStat::new
    - build_abs_path
    - Err
    - Error::new
    linkageType: ''
    returnType: Result
    signature: 'async fn stat(&self, _ctx: &OperationContext, path: &str, _: OpStat)
      -> Result<RpStat>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/core/services/surrealdb/src/backend.rs:281,1
    - Dst: oio::StreamReader::new
      Src: /src/opendal/core/services/surrealdb/src/backend.rs:281,1
    - Dst: SurrealdbReader::new
      Src: /src/opendal/core/services/surrealdb/src/backend.rs:281,1
    - Dst: SurrealdbBackend::clone
      Src: /src/opendal/core/services/surrealdb/src/backend.rs:282,1
    - Dst: Ok
      Src: /src/opendal/core/services/surrealdb/src/backend.rs:288,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - _ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpRead
    constantsTouched: []
    func_position:
      end: 289
      start: 279
    functionDepth: 3
    functionLinenumber: 279
    functionLinenumberEnd: 289
    functionName: SurrealdbBackend::read
    functionSourceFile: /src/opendal/core/services/surrealdb/src/backend.rs
    functionUses: 0
    functionsReached:
    - oio::StreamReader::new
    - SurrealdbBackend::clone
    - Ok
    - SurrealdbReader::new
    linkageType: ''
    returnType: Result
    signature: 'fn read(&self, _ctx: &OperationContext, path: &str, args: OpRead)
      -> Result<Self::Reader>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/surrealdb/src/backend.rs:293,1
    - Dst: Ok
      Src: /src/opendal/core/services/surrealdb/src/backend.rs:294,1
    - Dst: SurrealdbWriter::new
      Src: /src/opendal/core/services/surrealdb/src/backend.rs:294,1
    - Dst: clone
      Src: /src/opendal/core/services/surrealdb/src/backend.rs:294,1
    - Dst: Ok
      Src: /src/opendal/core/services/surrealdb/src/backend.rs:297,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 3
    argNames:
    - _ctx
    - path
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpWrite
    constantsTouched: []
    func_position:
      end: 298
      start: 291
    functionDepth: 5
    functionLinenumber: 291
    functionLinenumberEnd: 298
    functionName: SurrealdbBackend::write
    functionSourceFile: /src/opendal/core/services/surrealdb/src/backend.rs
    functionUses: 0
    functionsReached:
    - SurrealdbWriter::new
    - Ok
    - clone
    - build_abs_path
    linkageType: ''
    returnType: Result
    signature: 'fn write(&self, _ctx: &OperationContext, path: &str, _: OpWrite) ->
      Result<Self::Writer>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/core/services/surrealdb/src/backend.rs:302,1
    - Dst: oio::OneShotDeleter::new
      Src: /src/opendal/core/services/surrealdb/src/backend.rs:302,1
    - Dst: SurrealdbDeleter::new
      Src: /src/opendal/core/services/surrealdb/src/backend.rs:302,1
    - Dst: clone
      Src: /src/opendal/core/services/surrealdb/src/backend.rs:303,1
    - Dst: clone
      Src: /src/opendal/core/services/surrealdb/src/backend.rs:304,1
    - Dst: Ok
      Src: /src/opendal/core/services/surrealdb/src/backend.rs:308,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 1
    argNames:
    - _ctx
    argTypes:
    - '&OperationContext'
    constantsTouched: []
    func_position:
      end: 309
      start: 300
    functionDepth: 2
    functionLinenumber: 300
    functionLinenumberEnd: 309
    functionName: SurrealdbBackend::delete
    functionSourceFile: /src/opendal/core/services/surrealdb/src/backend.rs
    functionUses: 0
    functionsReached:
    - oio::OneShotDeleter::new
    - SurrealdbDeleter::new
    - clone
    - Ok
    linkageType: ''
    returnType: Result
    signature: 'fn delete(&self, _ctx: &OperationContext) -> Result<Self::Deleter>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/core/services/surrealdb/src/backend.rs:312,1
    - Dst: Error::new
      Src: /src/opendal/core/services/surrealdb/src/backend.rs:312,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - _ctx
    - _path
    - _args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpList
    constantsTouched: []
    func_position:
      end: 316
      start: 311
    functionDepth: 36
    functionLinenumber: 311
    functionLinenumberEnd: 316
    functionName: SurrealdbBackend::list
    functionSourceFile: /src/opendal/core/services/surrealdb/src/backend.rs
    functionUses: 0
    functionsReached:
    - Error::new
    - Err
    linkageType: ''
    returnType: Result
    signature: 'fn list(&self, _ctx: &OperationContext, _path: &str, _args: OpList)
      -> Result<Self::Lister>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/core/services/surrealdb/src/backend.rs:326,1
    - Dst: Error::new
      Src: /src/opendal/core/services/surrealdb/src/backend.rs:326,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 5
    argNames:
    - _ctx
    - _from
    - _to
    - _args
    - _opts
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    - OpCopy
    - OpCopier
    constantsTouched: []
    func_position:
      end: 330
      start: 318
    functionDepth: 36
    functionLinenumber: 318
    functionLinenumberEnd: 330
    functionName: SurrealdbBackend::copy
    functionSourceFile: /src/opendal/core/services/surrealdb/src/backend.rs
    functionUses: 0
    functionsReached:
    - Error::new
    - Err
    linkageType: ''
    returnType: Result
    signature: 'fn copy(&self,_ctx: &OperationContext,_from: &str,_to: &str,_args:
      OpCopy,_opts: OpCopier,) -> Result<Self::Copier>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/core/services/surrealdb/src/backend.rs:339,1
    - Dst: Error::new
      Src: /src/opendal/core/services/surrealdb/src/backend.rs:339,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - _ctx
    - _from
    - _to
    - _args
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    - OpRename
    constantsTouched: []
    func_position:
      end: 343
      start: 332
    functionDepth: 36
    functionLinenumber: 332
    functionLinenumberEnd: 343
    functionName: SurrealdbBackend::rename
    functionSourceFile: /src/opendal/core/services/surrealdb/src/backend.rs
    functionUses: 0
    functionsReached:
    - Error::new
    - Err
    linkageType: ''
    returnType: Result
    signature: 'async fn rename(&self,_ctx: &OperationContext,_from: &str,_to: &str,_args:
      OpRename,) -> Result<RpRename>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/core/services/surrealdb/src/backend.rs:351,1
    - Dst: Error::new
      Src: /src/opendal/core/services/surrealdb/src/backend.rs:351,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - _ctx
    - _path
    - _args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpPresign
    constantsTouched: []
    func_position:
      end: 355
      start: 345
    functionDepth: 36
    functionLinenumber: 345
    functionLinenumberEnd: 355
    functionName: SurrealdbBackend::presign
    functionSourceFile: /src/opendal/core/services/surrealdb/src/backend.rs
    functionUses: 0
    functionsReached:
    - Error::new
    - Err
    linkageType: ''
    returnType: Result
    signature: 'async fn presign(&self,_ctx: &OperationContext,_path: &str,_args:
      OpPresign,) -> Result<RpPresign>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::debug_struct
      Src: /src/opendal/core/services/cos/src/config.rs:68,1
    - Dst: field
      Src: /src/opendal/core/services/cos/src/config.rs:68,1
    - Dst: field
      Src: /src/opendal/core/services/cos/src/config.rs:68,1
    - Dst: field
      Src: /src/opendal/core/services/cos/src/config.rs:68,1
    - Dst: field
      Src: /src/opendal/core/services/cos/src/config.rs:68,1
    - Dst: as_ref
      Src: /src/opendal/core/services/cos/src/config.rs:74,1
    - Dst: map
      Src: /src/opendal/core/services/cos/src/config.rs:74,1
    - Dst: field
      Src: /src/opendal/core/services/cos/src/config.rs:68,1
    - Dst: finish_non_exhaustive
      Src: /src/opendal/core/services/cos/src/config.rs:68,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 29
    argCount: 1
    argNames:
    - f
    argTypes:
    - '&mut std::fmt::Formatter<''_>'
    constantsTouched: []
    func_position:
      end: 78
      start: 67
    functionDepth: 5
    functionLinenumber: 67
    functionLinenumberEnd: 78
    functionName: CosConfig::fmt
    functionSourceFile: /src/opendal/core/services/cos/src/config.rs
    functionUses: 0
    functionsReached:
    - field
    - finish_non_exhaustive
    - map
    - as_ref
    - Result::debug_struct
    linkageType: ''
    returnType: std::fmt::Result
    signature: 'fn fmt(&self, f: &mut std::fmt::Formatter<''_>) -> std::fmt::Result'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::options
      Src: /src/opendal/core/services/cos/src/config.rs:85,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/cos/src/config.rs:85,1
    - Dst: Result::name
      Src: /src/opendal/core/services/cos/src/config.rs:87,1
    - Dst: Result::insert
      Src: /src/opendal/core/services/cos/src/config.rs:88,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/cos/src/config.rs:88,1
    - Dst: Result::to_string
      Src: /src/opendal/core/services/cos/src/config.rs:88,1
    - Dst: Result::root
      Src: /src/opendal/core/services/cos/src/config.rs:91,1
    - Dst: Result::insert
      Src: /src/opendal/core/services/cos/src/config.rs:92,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/cos/src/config.rs:92,1
    - Dst: Result::to_string
      Src: /src/opendal/core/services/cos/src/config.rs:92,1
    - Dst: Self::from_iter
      Src: /src/opendal/core/services/cos/src/config.rs:95,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 27
    argCount: 1
    argNames:
    - uri
    argTypes:
    - '&OperatorUri'
    constantsTouched: []
    func_position:
      end: 96
      start: 84
    functionDepth: 35
    functionLinenumber: 84
    functionLinenumberEnd: 96
    functionName: CosConfig::from_uri
    functionSourceFile: /src/opendal/core/services/cos/src/config.rs
    functionUses: 2
    functionsReached:
    - Result::clone
    - Self::from_iter
    - Result::to_string
    - Result::insert
    - Result::name
    - '&str::to_string'
    - Result::root
    - Result::options
    linkageType: ''
    returnType: Result
    signature: 'fn from_uri(uri: &OperatorUri) -> Result<Self>'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 100
      start: 98
    functionDepth: 0
    functionLinenumber: 98
    functionLinenumberEnd: 100
    functionName: CosConfig::into_builder
    functionSourceFile: /src/opendal/core/services/cos/src/config.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Self::Builder
    signature: fn into_builder(self) -> Self::Builder
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: OperatorUri::new
      Src: /src/opendal/core/services/cos/src/config.rs:123,1
    - Dst: Vec::<(String, String)>::new
      Src: /src/opendal/core/services/cos/src/config.rs:125,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/services/cos/src/config.rs:123,1
    - Dst: CosConfig::from_uri
      Src: /src/opendal/core/services/cos/src/config.rs:128,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/services/cos/src/config.rs:128,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 131
      start: 122
    functionDepth: 29
    functionLinenumber: 122
    functionLinenumberEnd: 131
    functionName: tests::from_uri_accepts_cosn_scheme
    functionSourceFile: /src/opendal/core/services/cos/src/config.rs
    functionUses: 0
    functionsReached:
    - Vec::<(String, String)>::new
    - OperatorUri::new
    - Result::unwrap
    - CosConfig::from_uri
    linkageType: ''
    returnType: void
    signature: fn from_uri_accepts_cosn_scheme()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: OperatorUri::new
      Src: /src/opendal/core/services/cos/src/config.rs:135,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/services/cos/src/config.rs:135,1
    - Dst: CosConfig::from_uri
      Src: /src/opendal/core/services/cos/src/config.rs:144,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/services/cos/src/config.rs:144,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 148
      start: 134
    functionDepth: 29
    functionLinenumber: 134
    functionLinenumberEnd: 148
    functionName: tests::from_uri_extracts_security_token
    functionSourceFile: /src/opendal/core/services/cos/src/config.rs
    functionUses: 0
    functionsReached:
    - OperatorUri::new
    - Result::unwrap
    - CosConfig::from_uri
    linkageType: ''
    returnType: void
    signature: fn from_uri_extracts_security_token()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Some
      Src: /src/opendal/core/services/cos/src/config.rs:153,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/cos/src/config.rs:153,1
    - Dst: Default::default
      Src: /src/opendal/core/services/cos/src/config.rs:154,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 159
      start: 151
    functionDepth: 3
    functionLinenumber: 151
    functionLinenumberEnd: 159
    functionName: tests::debug_redacts_security_token
    functionSourceFile: /src/opendal/core/services/cos/src/config.rs
    functionUses: 0
    functionsReached:
    - Default::default
    - '&str::to_string'
    - Some
    linkageType: ''
    returnType: void
    signature: fn debug_redacts_security_token()
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - core
    - ctx
    argTypes:
    - Arc<CosCore>
    - OperationContext
    constantsTouched: []
    func_position:
      end: 36
      start: 34
    functionDepth: 0
    functionLinenumber: 34
    functionLinenumberEnd: 36
    functionName: CosDeleter::new
    functionSourceFile: /src/opendal/core/services/cos/src/deleter.rs
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(core: Arc<CosCore>, ctx: OperationContext) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: cos_delete_object
      Src: /src/opendal/core/services/cos/src/deleter.rs:41,1
    - Dst: status
      Src: /src/opendal/core/services/cos/src/deleter.rs:43,1
    - Dst: Ok
      Src: /src/opendal/core/services/cos/src/deleter.rs:46,1
    - Dst: Err
      Src: /src/opendal/core/services/cos/src/deleter.rs:47,1
    - Dst: super::core::parse_error
      Src: /src/opendal/core/services/cos/src/deleter.rs:47,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 2
    argNames:
    - path
    - args
    argTypes:
    - String
    - OpDelete
    constantsTouched: []
    func_position:
      end: 49
      start: 40
    functionDepth: 33
    functionLinenumber: 40
    functionLinenumberEnd: 49
    functionName: CosDeleter::delete_once
    functionSourceFile: /src/opendal/core/services/cos/src/deleter.rs
    functionUses: 0
    functionsReached:
    - status
    - Ok
    - cos_delete_object
    - Err
    - super::core::parse_error
    linkageType: ''
    returnType: Result
    signature: 'async fn delete_once(&self, path: String, args: OpDelete) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: to_string
      Src: /src/opendal/core/services/cos/src/lister.rs:55,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 5
    argNames:
    - core
    - ctx
    - path
    - recursive
    - limit
    argTypes:
    - Arc<CosCore>
    - OperationContext
    - '&str'
    - bool
    - Option<usize>
    constantsTouched: []
    func_position:
      end: 59
      start: 44
    functionDepth: 2
    functionLinenumber: 44
    functionLinenumberEnd: 59
    functionName: CosLister::new
    functionSourceFile: /src/opendal/core/services/cos/src/lister.rs
    functionUses: 1
    functionsReached:
    - to_string
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(core: Arc<CosCore>,ctx: OperationContext,path: &str,recursive:
      bool,limit: Option<usize>,) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: cos_list_objects
      Src: /src/opendal/core/services/cos/src/lister.rs:64,1
    - Dst: status
      Src: /src/opendal/core/services/cos/src/lister.rs:75,1
    - Dst: Err
      Src: /src/opendal/core/services/cos/src/lister.rs:76,1
    - Dst: super::core::parse_error
      Src: /src/opendal/core/services/cos/src/lister.rs:76,1
    - Dst: into_body
      Src: /src/opendal/core/services/cos/src/lister.rs:79,1
    - Dst: de::from_reader
      Src: /src/opendal/core/services/cos/src/lister.rs:82,1
    - Dst: Result::reader
      Src: /src/opendal/core/services/cos/src/lister.rs:82,1
    - Dst: map_err
      Src: /src/opendal/core/services/cos/src/lister.rs:82,1
    - Dst: as_ref
      Src: /src/opendal/core/services/cos/src/lister.rs:87,1
    - Dst: is_empty
      Src: /src/opendal/core/services/cos/src/lister.rs:89,1
    - Dst: clone
      Src: /src/opendal/core/services/cos/src/lister.rs:91,1
    - Dst: unwrap_or_default
      Src: /src/opendal/core/services/cos/src/lister.rs:91,1
    - Dst: oio::Entry::new
      Src: /src/opendal/core/services/cos/src/lister.rs:94,1
    - Dst: build_rel_path
      Src: /src/opendal/core/services/cos/src/lister.rs:95,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/cos/src/lister.rs:96,1
    - Dst: push_back
      Src: /src/opendal/core/services/cos/src/lister.rs:99,1
    - Dst: build_rel_path
      Src: /src/opendal/core/services/cos/src/lister.rs:103,1
    - Dst: is_empty
      Src: /src/opendal/core/services/cos/src/lister.rs:104,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/cos/src/lister.rs:105,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/cos/src/lister.rs:109,1
    - Dst: EntryMode::from_path
      Src: /src/opendal/core/services/cos/src/lister.rs:109,1
    - Dst: Self::with_content_length
      Src: /src/opendal/core/services/cos/src/lister.rs:109,1
    - Dst: Result::set_last_modified
      Src: /src/opendal/core/services/cos/src/lister.rs:110,1
    - Dst: last_modified.parse::<Timestamp>
      Src: /src/opendal/core/services/cos/src/lister.rs:110,1
    - Dst: Result::set_etag
      Src: /src/opendal/core/services/cos/src/lister.rs:112,1
    - Dst: Result::set_content_md5
      Src: /src/opendal/core/services/cos/src/lister.rs:113,1
    - Dst: Option::trim_matches
      Src: /src/opendal/core/services/cos/src/lister.rs:113,1
    - Dst: oio::Entry::with
      Src: /src/opendal/core/services/cos/src/lister.rs:116,1
    - Dst: push_back
      Src: /src/opendal/core/services/cos/src/lister.rs:117,1
    - Dst: Ok
      Src: /src/opendal/core/services/cos/src/lister.rs:120,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 112
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - '&mut oio::PageContext'
    constantsTouched: []
    func_position:
      end: 121
      start: 63
    functionDepth: 37
    functionLinenumber: 63
    functionLinenumberEnd: 121
    functionName: CosLister::next_page
    functionSourceFile: /src/opendal/core/services/cos/src/lister.rs
    functionUses: 0
    functionsReached:
    - status
    - clone
    - build_rel_path
    - Result::reader
    - map_err
    - Ok
    - oio::Entry::with
    - '&str::to_string'
    - last_modified.parse::<Timestamp>
    - Result::set_etag
    - unwrap_or_default
    - Result::set_content_md5
    - Metadata::new
    - into_body
    - de::from_reader
    - is_empty
    - cos_list_objects
    - super::core::parse_error
    - oio::Entry::new
    - push_back
    - Option::trim_matches
    - Self::with_content_length
    - EntryMode::from_path
    - Result::set_last_modified
    - Err
    - as_ref
    linkageType: ''
    returnType: Result
    signature: 'async fn next_page(&self, ctx: &mut oio::PageContext) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: OpStat::recursive
      Src: /src/opendal/core/services/cos/src/lister.rs:138,1
    - Dst: OpStat::start_after
      Src: /src/opendal/core/services/cos/src/lister.rs:139,1
    - Dst: Result::map
      Src: /src/opendal/core/services/cos/src/lister.rs:139,1
    - Dst: build_abs_path
      Src: /src/opendal/core/services/cos/src/lister.rs:141,1
    - Dst: to_string
      Src: /src/opendal/core/services/cos/src/lister.rs:146,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 14
    argCount: 4
    argNames:
    - core
    - ctx
    - path
    - args
    argTypes:
    - Arc<CosCore>
    - OperationContext
    - '&str'
    - OpList
    constantsTouched: []
    func_position:
      end: 151
      start: 137
    functionDepth: 36
    functionLinenumber: 137
    functionLinenumberEnd: 151
    functionName: CosObjectVersionsLister::new
    functionSourceFile: /src/opendal/core/services/cos/src/lister.rs
    functionUses: 1
    functionsReached:
    - to_string
    - OpStat::start_after
    - build_abs_path
    - Result::map
    - OpStat::recursive
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(core: Arc<CosCore>, ctx: OperationContext, path: &str,
      args: OpList) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: rsplit_once
      Src: /src/opendal/core/services/cos/src/lister.rs:156,1
    - Dst: Result::as_str
      Src: /src/opendal/core/services/cos/src/lister.rs:160,1
    - Dst: cos_list_object_versions
      Src: /src/opendal/core/services/cos/src/lister.rs:165,1
    - Dst: limit
      Src: /src/opendal/core/services/cos/src/lister.rs:171,1
    - Dst: status
      Src: /src/opendal/core/services/cos/src/lister.rs:176,1
    - Dst: Err
      Src: /src/opendal/core/services/cos/src/lister.rs:177,1
    - Dst: super::core::parse_error
      Src: /src/opendal/core/services/cos/src/lister.rs:177,1
    - Dst: into_body
      Src: /src/opendal/core/services/cos/src/lister.rs:180,1
    - Dst: de::from_reader
      Src: /src/opendal/core/services/cos/src/lister.rs:181,1
    - Dst: reader
      Src: /src/opendal/core/services/cos/src/lister.rs:181,1
    - Dst: map_err
      Src: /src/opendal/core/services/cos/src/lister.rs:181,1
    - Dst: map_err
      Src: /src/opendal/core/services/cos/src/lister.rs:181,1
    - Dst: oio::Entry::new
      Src: /src/opendal/core/services/cos/src/lister.rs:202,1
    - Dst: build_rel_path
      Src: /src/opendal/core/services/cos/src/lister.rs:203,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/cos/src/lister.rs:204,1
    - Dst: push_back
      Src: /src/opendal/core/services/cos/src/lister.rs:206,1
    - Dst: versions
      Src: /src/opendal/core/services/cos/src/lister.rs:214,1
    - Dst: build_rel_path
      Src: /src/opendal/core/services/cos/src/lister.rs:218,1
    - Dst: is_empty
      Src: /src/opendal/core/services/cos/src/lister.rs:219,1
    - Dst: '&str::to_owned'
      Src: /src/opendal/core/services/cos/src/lister.rs:220,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/cos/src/lister.rs:223,1
    - Dst: EntryMode::from_path
      Src: /src/opendal/core/services/cos/src/lister.rs:223,1
    - Dst: Result::set_version
      Src: /src/opendal/core/services/cos/src/lister.rs:224,1
    - Dst: Result::set_is_current
      Src: /src/opendal/core/services/cos/src/lister.rs:225,1
    - Dst: Result::set_content_length
      Src: /src/opendal/core/services/cos/src/lister.rs:226,1
    - Dst: Result::set_last_modified
      Src: /src/opendal/core/services/cos/src/lister.rs:227,1
    - Dst: last_modified.parse::<Timestamp>
      Src: /src/opendal/core/services/cos/src/lister.rs:227,1
    - Dst: Result::set_etag
      Src: /src/opendal/core/services/cos/src/lister.rs:229,1
    - Dst: Result::set_content_md5
      Src: /src/opendal/core/services/cos/src/lister.rs:230,1
    - Dst: Option::trim_matches
      Src: /src/opendal/core/services/cos/src/lister.rs:230,1
    - Dst: oio::Entry::new
      Src: /src/opendal/core/services/cos/src/lister.rs:233,1
    - Dst: push_back
      Src: /src/opendal/core/services/cos/src/lister.rs:234,1
    - Dst: deleted
      Src: /src/opendal/core/services/cos/src/lister.rs:237,1
    - Dst: build_rel_path
      Src: /src/opendal/core/services/cos/src/lister.rs:239,1
    - Dst: is_empty
      Src: /src/opendal/core/services/cos/src/lister.rs:240,1
    - Dst: '&str::to_owned'
      Src: /src/opendal/core/services/cos/src/lister.rs:241,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/cos/src/lister.rs:244,1
    - Dst: Result::set_version
      Src: /src/opendal/core/services/cos/src/lister.rs:245,1
    - Dst: Result::set_is_deleted
      Src: /src/opendal/core/services/cos/src/lister.rs:246,1
    - Dst: Result::set_is_current
      Src: /src/opendal/core/services/cos/src/lister.rs:247,1
    - Dst: Result::set_last_modified
      Src: /src/opendal/core/services/cos/src/lister.rs:248,1
    - Dst: last_modified.parse::<Timestamp>
      Src: /src/opendal/core/services/cos/src/lister.rs:248,1
    - Dst: oio::Entry::new
      Src: /src/opendal/core/services/cos/src/lister.rs:250,1
    - Dst: push_back
      Src: /src/opendal/core/services/cos/src/lister.rs:251,1
    - Dst: Ok
      Src: /src/opendal/core/services/cos/src/lister.rs:255,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 187
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - '&mut PageContext'
    constantsTouched: []
    func_position:
      end: 256
      start: 155
    functionDepth: 37
    functionLinenumber: 155
    functionLinenumberEnd: 256
    functionName: CosObjectVersionsLister::next_page
    functionSourceFile: /src/opendal/core/services/cos/src/lister.rs
    functionUses: 0
    functionsReached:
    - status
    - build_rel_path
    - '&str::to_owned'
    - map_err
    - reader
    - Ok
    - last_modified.parse::<Timestamp>
    - Result::as_str
    - Result::set_etag
    - Result::set_content_md5
    - Metadata::new
    - Result::set_is_current
    - deleted
    - limit
    - into_body
    - de::from_reader
    - is_empty
    - rsplit_once
    - Result::set_is_deleted
    - super::core::parse_error
    - oio::Entry::new
    - versions
    - push_back
    - Option::trim_matches
    - Result::set_version
    - EntryMode::from_path
    - Result::set_last_modified
    - Err
    - Result::set_content_length
    - cos_list_object_versions
    linkageType: ''
    returnType: Result
    signature: 'async fn next_page(&self, ctx: &mut PageContext) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: to_string
      Src: /src/opendal/core/services/cos/src/reader.rs:43,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 4
    argNames:
    - backend
    - ctx
    - path
    - args
    argTypes:
    - CosBackend
    - OperationContext
    - '&str'
    - OpRead
    constantsTouched: []
    func_position:
      end: 46
      start: 34
    functionDepth: 2
    functionLinenumber: 34
    functionLinenumberEnd: 46
    functionName: CosReader::new
    functionSourceFile: /src/opendal/core/services/cos/src/reader.rs
    functionUses: 1
    functionsReached:
    - to_string
    linkageType: ''
    returnType: Self
    signature: 'pub(super) fn new(backend: CosBackend,ctx: OperationContext,path:
      &str,args: OpRead,) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: as_str
      Src: /src/opendal/core/services/cos/src/reader.rs:52,1
    - Dst: clone
      Src: /src/opendal/core/services/cos/src/reader.rs:53,1
    - Dst: cos_get_object
      Src: /src/opendal/core/services/cos/src/reader.rs:54,1
    - Dst: status
      Src: /src/opendal/core/services/cos/src/reader.rs:59,1
    - Dst: RpRead::new
      Src: /src/opendal/core/services/cos/src/reader.rs:63,1
    - Dst: parse_into_metadata
      Src: /src/opendal/core/services/cos/src/reader.rs:63,1
    - Dst: headers
      Src: /src/opendal/core/services/cos/src/reader.rs:63,1
    - Dst: into_body
      Src: /src/opendal/core/services/cos/src/reader.rs:64,1
    - Dst: into_parts
      Src: /src/opendal/core/services/cos/src/reader.rs:67,1
    - Dst: to_buffer
      Src: /src/opendal/core/services/cos/src/reader.rs:68,1
    - Dst: Err
      Src: /src/opendal/core/services/cos/src/reader.rs:69,1
    - Dst: super::core::parse_error
      Src: /src/opendal/core/services/cos/src/reader.rs:69,1
    - Dst: Response::from_parts
      Src: /src/opendal/core/services/cos/src/reader.rs:69,1
    - Dst: Ok
      Src: /src/opendal/core/services/cos/src/reader.rs:73,1
    - Dst: Box::new
      Src: /src/opendal/core/services/cos/src/reader.rs:73,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 42
    argCount: 1
    argNames:
    - range
    argTypes:
    - BytesRange
    constantsTouched: []
    func_position:
      end: 74
      start: 50
    functionDepth: 37
    functionLinenumber: 50
    functionLinenumberEnd: 74
    functionName: CosReader::open
    functionSourceFile: /src/opendal/core/services/cos/src/reader.rs
    functionUses: 0
    functionsReached:
    - parse_into_metadata
    - to_buffer
    - status
    - Ok
    - Box::new
    - cos_get_object
    - into_body
    - clone
    - Err
    - Response::from_parts
    - as_str
    - headers
    - into_parts
    - RpRead::new
    - super::core::parse_error
    linkageType: ''
    returnType: Result
    signature: 'async fn open(&self, range: BytesRange) -> Result<(RpRead, Box<dyn
      oio::ReadStreamDyn>)>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::debug_struct
      Src: /src/opendal/core/services/cos/src/core.rs:60,1
    - Dst: field
      Src: /src/opendal/core/services/cos/src/core.rs:60,1
    - Dst: field
      Src: /src/opendal/core/services/cos/src/core.rs:60,1
    - Dst: field
      Src: /src/opendal/core/services/cos/src/core.rs:60,1
    - Dst: finish_non_exhaustive
      Src: /src/opendal/core/services/cos/src/core.rs:60,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 16
    argCount: 1
    argNames:
    - f
    argTypes:
    - '&mut std::fmt::Formatter<''_>'
    constantsTouched: []
    func_position:
      end: 65
      start: 59
    functionDepth: 5
    functionLinenumber: 59
    functionLinenumberEnd: 65
    functionName: CosCore::fmt
    functionSourceFile: /src/opendal/core/services/cos/src/core.rs
    functionUses: 0
    functionsReached:
    - field
    - Result::debug_struct
    - finish_non_exhaustive
    linkageType: ''
    returnType: std::fmt::Result
    signature: 'fn fmt(&self, f: &mut std::fmt::Formatter<''_>) -> std::fmt::Result'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: clone
      Src: /src/opendal/core/services/cos/src/core.rs:70,1
    - Dst: with_context
      Src: /src/opendal/core/services/cos/src/core.rs:70,1
    - Dst: Context::new
      Src: /src/opendal/core/services/cos/src/core.rs:71,1
    - Dst: Self::with_file_read
      Src: /src/opendal/core/services/cos/src/core.rs:71,1
    - Dst: with_http_send
      Src: /src/opendal/core/services/cos/src/core.rs:71,1
    - Dst: Result::http_transport
      Src: /src/opendal/core/services/cos/src/core.rs:73,1
    - Dst: Self::clone
      Src: /src/opendal/core/services/cos/src/core.rs:73,1
    - Dst: with_env
      Src: /src/opendal/core/services/cos/src/core.rs:71,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 16
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - '&OperationContext'
    constantsTouched: []
    func_position:
      end: 76
      start: 69
    functionDepth: 6
    functionLinenumber: 69
    functionLinenumberEnd: 76
    functionName: CosCore::signer
    functionSourceFile: /src/opendal/core/services/cos/src/core.rs
    functionUses: 2
    functionsReached:
    - with_http_send
    - with_env
    - Context::new
    - clone
    - with_context
    - Self::clone
    - Self::with_file_read
    - Result::http_transport
    linkageType: ''
    returnType: Signer
    signature: 'fn signer(&self, ctx: &OperationContext) -> Signer<Credential>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Request<T>::into_parts
      Src: /src/opendal/core/services/cos/src/core.rs:79,1
    - Dst: CosCore::signer
      Src: /src/opendal/core/services/cos/src/core.rs:81,1
    - Dst: Signer::sign
      Src: /src/opendal/core/services/cos/src/core.rs:81,1
    - Dst: map_err
      Src: /src/opendal/core/services/cos/src/core.rs:81,1
    - Dst: new_request_sign_error
      Src: /src/opendal/core/services/cos/src/core.rs:84,1
    - Dst: Result::into
      Src: /src/opendal/core/services/cos/src/core.rs:84,1
    - Dst: Ok
      Src: /src/opendal/core/services/cos/src/core.rs:86,1
    - Dst: Request::from_parts
      Src: /src/opendal/core/services/cos/src/core.rs:86,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 18
    argCount: 2
    argNames:
    - ctx
    - req
    argTypes:
    - '&OperationContext'
    - Request<T>
    constantsTouched: []
    func_position:
      end: 87
      start: 78
    functionDepth: 35
    functionLinenumber: 78
    functionLinenumberEnd: 87
    functionName: CosCore::sign
    functionSourceFile: /src/opendal/core/services/cos/src/core.rs
    functionUses: 10
    functionsReached:
    - map_err
    - Ok
    - Signer::sign
    - Request<T>::into_parts
    - CosCore::signer
    - Result::into
    - Request::from_parts
    - new_request_sign_error
    linkageType: ''
    returnType: Result
    signature: 'pub async fn sign<T>(&self, ctx: &OperationContext, req: Request<T>)
      -> Result<Request<T>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Request<T>::into_parts
      Src: /src/opendal/core/services/cos/src/core.rs:95,1
    - Dst: CosCore::signer
      Src: /src/opendal/core/services/cos/src/core.rs:97,1
    - Dst: Signer::sign
      Src: /src/opendal/core/services/cos/src/core.rs:97,1
    - Dst: Some
      Src: /src/opendal/core/services/cos/src/core.rs:98,1
    - Dst: map_err
      Src: /src/opendal/core/services/cos/src/core.rs:97,1
    - Dst: new_request_sign_error
      Src: /src/opendal/core/services/cos/src/core.rs:100,1
    - Dst: Result::into
      Src: /src/opendal/core/services/cos/src/core.rs:100,1
    - Dst: Ok
      Src: /src/opendal/core/services/cos/src/core.rs:102,1
    - Dst: Request::from_parts
      Src: /src/opendal/core/services/cos/src/core.rs:102,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 19
    argCount: 3
    argNames:
    - ctx
    - req
    - duration
    argTypes:
    - '&OperationContext'
    - Request<T>
    - Duration
    constantsTouched: []
    func_position:
      end: 103
      start: 89
    functionDepth: 35
    functionLinenumber: 89
    functionLinenumberEnd: 103
    functionName: CosCore::sign_query
    functionSourceFile: /src/opendal/core/services/cos/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - Ok
    - Signer::sign
    - Some
    - Request<T>::into_parts
    - CosCore::signer
    - Result::into
    - Request::from_parts
    - new_request_sign_error
    linkageType: ''
    returnType: Result
    signature: 'pub async fn sign_query<T>(&self,ctx: &OperationContext,req: Request<T>,duration:
      Duration,) -> Result<Request<T>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::http_transport
      Src: /src/opendal/core/services/cos/src/core.rs:111,1
    - Dst: Self::send
      Src: /src/opendal/core/services/cos/src/core.rs:111,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - ctx
    - req
    argTypes:
    - '&OperationContext'
    - Request<Buffer>
    constantsTouched: []
    func_position:
      end: 112
      start: 106
    functionDepth: 37
    functionLinenumber: 106
    functionLinenumberEnd: 112
    functionName: CosCore::send
    functionSourceFile: /src/opendal/core/services/cos/src/core.rs
    functionUses: 9
    functionsReached:
    - Result::http_transport
    - Self::send
    linkageType: ''
    returnType: Result
    signature: 'pub async fn send(&self,ctx: &OperationContext,req: Request<Buffer>,)
      -> Result<Response<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: CosCore::cos_get_object_request
      Src: /src/opendal/core/services/cos/src/core.rs:123,1
    - Dst: CosCore::sign
      Src: /src/opendal/core/services/cos/src/core.rs:124,1
    - Dst: Result::http_transport
      Src: /src/opendal/core/services/cos/src/core.rs:126,1
    - Dst: Self::fetch
      Src: /src/opendal/core/services/cos/src/core.rs:126,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 4
    argNames:
    - ctx
    - path
    - range
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - BytesRange
    - '&OpRead'
    constantsTouched: []
    func_position:
      end: 127
      start: 116
    functionDepth: 36
    functionLinenumber: 116
    functionLinenumberEnd: 127
    functionName: CosCore::cos_get_object
    functionSourceFile: /src/opendal/core/services/cos/src/core.rs
    functionUses: 0
    functionsReached:
    - Result::http_transport
    - Self::fetch
    - CosCore::sign
    - CosCore::cos_get_object_request
    linkageType: ''
    returnType: Result
    signature: 'pub async fn cos_get_object(&self,ctx: &OperationContext,path: &str,range:
      BytesRange,args: &OpRead,) -> Result<Response<HttpBody>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/cos/src/core.rs:135,1
    - Dst: Vec::new
      Src: /src/opendal/core/services/cos/src/core.rs:139,1
    - Dst: OpStat::version
      Src: /src/opendal/core/services/cos/src/core.rs:140,1
    - Dst: Self::push
      Src: /src/opendal/core/services/cos/src/core.rs:141,1
    - Dst: Self::is_empty
      Src: /src/opendal/core/services/cos/src/core.rs:147,1
    - Dst: Result::push_str
      Src: /src/opendal/core/services/cos/src/core.rs:148,1
    - Dst: Request::get
      Src: /src/opendal/core/services/cos/src/core.rs:151,1
    - Dst: OpStat::if_match
      Src: /src/opendal/core/services/cos/src/core.rs:153,1
    - Dst: Option::header
      Src: /src/opendal/core/services/cos/src/core.rs:154,1
    - Dst: (Vec::is_full
      Src: /src/opendal/core/services/cos/src/core.rs:157,1
    - Dst: Option::header
      Src: /src/opendal/core/services/cos/src/core.rs:158,1
    - Dst: (Vec::to_header
      Src: /src/opendal/core/services/cos/src/core.rs:158,1
    - Dst: OpStat::if_none_match
      Src: /src/opendal/core/services/cos/src/core.rs:161,1
    - Dst: Option::header
      Src: /src/opendal/core/services/cos/src/core.rs:162,1
    - Dst: OpStat::if_modified_since
      Src: /src/opendal/core/services/cos/src/core.rs:165,1
    - Dst: Option::header
      Src: /src/opendal/core/services/cos/src/core.rs:166,1
    - Dst: Result::format_http_date
      Src: /src/opendal/core/services/cos/src/core.rs:166,1
    - Dst: OpStat::if_unmodified_since
      Src: /src/opendal/core/services/cos/src/core.rs:169,1
    - Dst: Option::header
      Src: /src/opendal/core/services/cos/src/core.rs:170,1
    - Dst: Result::format_http_date
      Src: /src/opendal/core/services/cos/src/core.rs:170,1
    - Dst: Option::extension
      Src: /src/opendal/core/services/cos/src/core.rs:173,1
    - Dst: extension
      Src: /src/opendal/core/services/cos/src/core.rs:173,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/cos/src/core.rs:175,1
    - Dst: Option::body
      Src: /src/opendal/core/services/cos/src/core.rs:177,1
    - Dst: Buffer::new
      Src: /src/opendal/core/services/cos/src/core.rs:177,1
    - Dst: map_err
      Src: /src/opendal/core/services/cos/src/core.rs:177,1
    - Dst: Ok
      Src: /src/opendal/core/services/cos/src/core.rs:179,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 79
    argCount: 3
    argNames:
    - path
    - range
    - args
    argTypes:
    - '&str'
    - BytesRange
    - '&OpRead'
    constantsTouched: []
    func_position:
      end: 180
      start: 129
    functionDepth: 5
    functionLinenumber: 129
    functionLinenumberEnd: 180
    functionName: CosCore::cos_get_object_request
    functionSourceFile: /src/opendal/core/services/cos/src/core.rs
    functionUses: 1
    functionsReached:
    - Buffer::new
    - Result::push_str
    - OpStat::if_unmodified_since
    - Vec::new
    - Option::body
    - map_err
    - extension
    - Ok
    - OpStat::if_modified_since
    - (Vec::is_full
    - Self::is_empty
    - ServiceOperation
    - Result::format_http_date
    - OpStat::if_match
    - Self::push
    - build_abs_path
    - Option::header
    - OpStat::version
    - Request::get
    - (Vec::to_header
    - OpStat::if_none_match
    - Option::extension
    linkageType: ''
    returnType: Result
    signature: 'pub fn cos_get_object_request(&self,path: &str,range: BytesRange,args:
      &OpRead,) -> Result<Request<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/cos/src/core.rs:189,1
    - Dst: Request::put
      Src: /src/opendal/core/services/cos/src/core.rs:193,1
    - Dst: DeleteInput::header
      Src: /src/opendal/core/services/cos/src/core.rs:196,1
    - Dst: OpStat::cache_control
      Src: /src/opendal/core/services/cos/src/core.rs:198,1
    - Dst: DeleteInput::header
      Src: /src/opendal/core/services/cos/src/core.rs:199,1
    - Dst: OpStat::content_disposition
      Src: /src/opendal/core/services/cos/src/core.rs:201,1
    - Dst: DeleteInput::header
      Src: /src/opendal/core/services/cos/src/core.rs:202,1
    - Dst: OpStat::content_type
      Src: /src/opendal/core/services/cos/src/core.rs:204,1
    - Dst: DeleteInput::header
      Src: /src/opendal/core/services/cos/src/core.rs:205,1
    - Dst: OpStat::if_not_exists
      Src: /src/opendal/core/services/cos/src/core.rs:216,1
    - Dst: DeleteInput::header
      Src: /src/opendal/core/services/cos/src/core.rs:217,1
    - Dst: OpStat::user_metadata
      Src: /src/opendal/core/services/cos/src/core.rs:221,1
    - Dst: DeleteInput::header
      Src: /src/opendal/core/services/cos/src/core.rs:223,1
    - Dst: DeleteInput::extension
      Src: /src/opendal/core/services/cos/src/core.rs:227,1
    - Dst: extension
      Src: /src/opendal/core/services/cos/src/core.rs:227,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/cos/src/core.rs:229,1
    - Dst: DeleteInput::body
      Src: /src/opendal/core/services/cos/src/core.rs:231,1
    - Dst: map_err
      Src: /src/opendal/core/services/cos/src/core.rs:231,1
    - Dst: Ok
      Src: /src/opendal/core/services/cos/src/core.rs:233,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 58
    argCount: 4
    argNames:
    - path
    - size
    - args
    - body
    argTypes:
    - '&str'
    - Option<u64>
    - '&OpWrite'
    - Buffer
    constantsTouched: []
    func_position:
      end: 234
      start: 182
    functionDepth: 32
    functionLinenumber: 182
    functionLinenumberEnd: 234
    functionName: CosCore::cos_put_object_request
    functionSourceFile: /src/opendal/core/services/cos/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - extension
    - Request::put
    - Ok
    - OpStat::content_disposition
    - OpStat::cache_control
    - build_abs_path
    - DeleteInput::header
    - ServiceOperation
    - OpStat::user_metadata
    - DeleteInput::body
    - DeleteInput::extension
    - OpStat::if_not_exists
    - OpStat::content_type
    linkageType: ''
    returnType: Result
    signature: 'pub fn cos_put_object_request(&self,path: &str,size: Option<u64>,args:
      &OpWrite,body: Buffer,) -> Result<Request<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: CosCore::cos_head_object_request
      Src: /src/opendal/core/services/cos/src/core.rs:242,1
    - Dst: CosCore::sign
      Src: /src/opendal/core/services/cos/src/core.rs:243,1
    - Dst: CosCore::send
      Src: /src/opendal/core/services/cos/src/core.rs:245,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&OpStat'
    constantsTouched: []
    func_position:
      end: 246
      start: 236
    functionDepth: 39
    functionLinenumber: 236
    functionLinenumberEnd: 246
    functionName: CosCore::cos_head_object
    functionSourceFile: /src/opendal/core/services/cos/src/core.rs
    functionUses: 0
    functionsReached:
    - CosCore::cos_head_object_request
    - CosCore::send
    - CosCore::sign
    linkageType: ''
    returnType: Result
    signature: 'pub async fn cos_head_object(&self,ctx: &OperationContext,path: &str,args:
      &OpStat,) -> Result<Response<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/cos/src/core.rs:249,1
    - Dst: Vec::new
      Src: /src/opendal/core/services/cos/src/core.rs:253,1
    - Dst: OpStat::version
      Src: /src/opendal/core/services/cos/src/core.rs:254,1
    - Dst: Self::push
      Src: /src/opendal/core/services/cos/src/core.rs:255,1
    - Dst: Self::is_empty
      Src: /src/opendal/core/services/cos/src/core.rs:261,1
    - Dst: Result::push_str
      Src: /src/opendal/core/services/cos/src/core.rs:262,1
    - Dst: Request::head
      Src: /src/opendal/core/services/cos/src/core.rs:265,1
    - Dst: OpStat::if_match
      Src: /src/opendal/core/services/cos/src/core.rs:267,1
    - Dst: Result::header
      Src: /src/opendal/core/services/cos/src/core.rs:268,1
    - Dst: OpStat::if_none_match
      Src: /src/opendal/core/services/cos/src/core.rs:271,1
    - Dst: Result::header
      Src: /src/opendal/core/services/cos/src/core.rs:272,1
    - Dst: Result::extension
      Src: /src/opendal/core/services/cos/src/core.rs:275,1
    - Dst: extension
      Src: /src/opendal/core/services/cos/src/core.rs:275,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/cos/src/core.rs:277,1
    - Dst: Result::body
      Src: /src/opendal/core/services/cos/src/core.rs:279,1
    - Dst: Buffer::new
      Src: /src/opendal/core/services/cos/src/core.rs:279,1
    - Dst: map_err
      Src: /src/opendal/core/services/cos/src/core.rs:279,1
    - Dst: Ok
      Src: /src/opendal/core/services/cos/src/core.rs:281,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 49
    argCount: 2
    argNames:
    - path
    - args
    argTypes:
    - '&str'
    - '&OpStat'
    constantsTouched: []
    func_position:
      end: 282
      start: 248
    functionDepth: 38
    functionLinenumber: 248
    functionLinenumberEnd: 282
    functionName: CosCore::cos_head_object_request
    functionSourceFile: /src/opendal/core/services/cos/src/core.rs
    functionUses: 1
    functionsReached:
    - map_err
    - OpStat::version
    - Request::head
    - Result::push_str
    - extension
    - Buffer::new
    - Ok
    - Result::extension
    - Self::push
    - build_abs_path
    - Result::header
    - Self::is_empty
    - OpStat::if_none_match
    - ServiceOperation
    - Result::body
    - Vec::new
    - OpStat::if_match
    linkageType: ''
    returnType: Result
    signature: 'pub fn cos_head_object_request(&self, path: &str, args: &OpStat) ->
      Result<Request<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/cos/src/core.rs:290,1
    - Dst: Vec::new
      Src: /src/opendal/core/services/cos/src/core.rs:294,1
    - Dst: OpStat::version
      Src: /src/opendal/core/services/cos/src/core.rs:295,1
    - Dst: Self::push
      Src: /src/opendal/core/services/cos/src/core.rs:296,1
    - Dst: Self::is_empty
      Src: /src/opendal/core/services/cos/src/core.rs:302,1
    - Dst: Result::push_str
      Src: /src/opendal/core/services/cos/src/core.rs:303,1
    - Dst: Request::delete
      Src: /src/opendal/core/services/cos/src/core.rs:306,1
    - Dst: Result::extension
      Src: /src/opendal/core/services/cos/src/core.rs:308,1
    - Dst: extension
      Src: /src/opendal/core/services/cos/src/core.rs:308,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/cos/src/core.rs:310,1
    - Dst: Result::body
      Src: /src/opendal/core/services/cos/src/core.rs:312,1
    - Dst: Buffer::new
      Src: /src/opendal/core/services/cos/src/core.rs:312,1
    - Dst: map_err
      Src: /src/opendal/core/services/cos/src/core.rs:312,1
    - Dst: CosCore::sign
      Src: /src/opendal/core/services/cos/src/core.rs:313,1
    - Dst: CosCore::send
      Src: /src/opendal/core/services/cos/src/core.rs:315,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 39
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&OpDelete'
    constantsTouched: []
    func_position:
      end: 316
      start: 284
    functionDepth: 32
    functionLinenumber: 284
    functionLinenumberEnd: 316
    functionName: CosCore::cos_delete_object
    functionSourceFile: /src/opendal/core/services/cos/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - OpStat::version
    - extension
    - Result::push_str
    - Buffer::new
    - Request::delete
    - Result::extension
    - Self::push
    - CosCore::send
    - build_abs_path
    - Self::is_empty
    - ServiceOperation
    - Result::body
    - Vec::new
    - CosCore::sign
    linkageType: ''
    returnType: Result
    signature: 'pub async fn cos_delete_object(&self,ctx: &OperationContext,path:
      &str,args: &OpDelete,) -> Result<Response<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/cos/src/core.rs:326,1
    - Dst: Request::post
      Src: /src/opendal/core/services/cos/src/core.rs:334,1
    - Dst: header
      Src: /src/opendal/core/services/cos/src/core.rs:336,1
    - Dst: OpStat::content_type
      Src: /src/opendal/core/services/cos/src/core.rs:338,1
    - Dst: header
      Src: /src/opendal/core/services/cos/src/core.rs:339,1
    - Dst: OpStat::content_disposition
      Src: /src/opendal/core/services/cos/src/core.rs:342,1
    - Dst: header
      Src: /src/opendal/core/services/cos/src/core.rs:343,1
    - Dst: OpStat::cache_control
      Src: /src/opendal/core/services/cos/src/core.rs:346,1
    - Dst: header
      Src: /src/opendal/core/services/cos/src/core.rs:347,1
    - Dst: extension
      Src: /src/opendal/core/services/cos/src/core.rs:350,1
    - Dst: extension
      Src: /src/opendal/core/services/cos/src/core.rs:350,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/cos/src/core.rs:352,1
    - Dst: body
      Src: /src/opendal/core/services/cos/src/core.rs:354,1
    - Dst: map_err
      Src: /src/opendal/core/services/cos/src/core.rs:354,1
    - Dst: Ok
      Src: /src/opendal/core/services/cos/src/core.rs:355,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 43
    argCount: 5
    argNames:
    - path
    - position
    - size
    - args
    - body
    argTypes:
    - '&str'
    - u64
    - u64
    - '&OpWrite'
    - Buffer
    constantsTouched: []
    func_position:
      end: 356
      start: 318
    functionDepth: 32
    functionLinenumber: 318
    functionLinenumberEnd: 356
    functionName: CosCore::cos_append_object_request
    functionSourceFile: /src/opendal/core/services/cos/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - extension
    - Ok
    - Request::post
    - OpStat::content_disposition
    - OpStat::cache_control
    - build_abs_path
    - body
    - ServiceOperation
    - OpStat::content_type
    - header
    linkageType: ''
    returnType: Result
    signature: 'pub fn cos_append_object_request(&self,path: &str,position: u64,size:
      u64,args: &OpWrite,body: Buffer,) -> Result<Request<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/cos/src/core.rs:365,1
    - Dst: build_abs_path
      Src: /src/opendal/core/services/cos/src/core.rs:366,1
    - Dst: Request::put
      Src: /src/opendal/core/services/cos/src/core.rs:371,1
    - Dst: DeleteInput::extension
      Src: /src/opendal/core/services/cos/src/core.rs:371,1
    - Dst: extension
      Src: /src/opendal/core/services/cos/src/core.rs:371,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/cos/src/core.rs:373,1
    - Dst: header
      Src: /src/opendal/core/services/cos/src/core.rs:371,1
    - Dst: OpStat::if_not_exists
      Src: /src/opendal/core/services/cos/src/core.rs:380,1
    - Dst: header
      Src: /src/opendal/core/services/cos/src/core.rs:381,1
    - Dst: body
      Src: /src/opendal/core/services/cos/src/core.rs:384,1
    - Dst: Buffer::new
      Src: /src/opendal/core/services/cos/src/core.rs:384,1
    - Dst: map_err
      Src: /src/opendal/core/services/cos/src/core.rs:384,1
    - Dst: CosCore::sign
      Src: /src/opendal/core/services/cos/src/core.rs:386,1
    - Dst: CosCore::send
      Src: /src/opendal/core/services/cos/src/core.rs:388,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 37
    argCount: 4
    argNames:
    - ctx
    - from
    - to
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    - '&OpCopy'
    constantsTouched: []
    func_position:
      end: 389
      start: 358
    functionDepth: 32
    functionLinenumber: 358
    functionLinenumberEnd: 389
    functionName: CosCore::cos_copy_object
    functionSourceFile: /src/opendal/core/services/cos/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - extension
    - Buffer::new
    - Request::put
    - CosCore::send
    - body
    - build_abs_path
    - ServiceOperation
    - DeleteInput::extension
    - OpStat::if_not_exists
    - CosCore::sign
    - header
    linkageType: ''
    returnType: Result
    signature: 'pub async fn cos_copy_object(&self,ctx: &OperationContext,from: &str,to:
      &str,args: &OpCopy,) -> Result<Response<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/cos/src/core.rs:399,1
    - Dst: QueryPairsWriter::new
      Src: /src/opendal/core/services/cos/src/core.rs:401,1
    - Dst: is_empty
      Src: /src/opendal/core/services/cos/src/core.rs:403,1
    - Dst: Result::push
      Src: /src/opendal/core/services/cos/src/core.rs:404,1
    - Dst: percent_encode_path
      Src: /src/opendal/core/services/cos/src/core.rs:404,1
    - Dst: object_store::Result::is_empty
      Src: /src/opendal/core/services/cos/src/core.rs:406,1
    - Dst: Result::push
      Src: /src/opendal/core/services/cos/src/core.rs:407,1
    - Dst: Result::push
      Src: /src/opendal/core/services/cos/src/core.rs:410,1
    - Dst: Result::to_string
      Src: /src/opendal/core/services/cos/src/core.rs:410,1
    - Dst: '&str::is_empty'
      Src: /src/opendal/core/services/cos/src/core.rs:412,1
    - Dst: Result::push
      Src: /src/opendal/core/services/cos/src/core.rs:413,1
    - Dst: Request::get
      Src: /src/opendal/core/services/cos/src/core.rs:416,1
    - Dst: Result::finish
      Src: /src/opendal/core/services/cos/src/core.rs:416,1
    - Dst: Option::extension
      Src: /src/opendal/core/services/cos/src/core.rs:416,1
    - Dst: extension
      Src: /src/opendal/core/services/cos/src/core.rs:416,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/cos/src/core.rs:418,1
    - Dst: body
      Src: /src/opendal/core/services/cos/src/core.rs:416,1
    - Dst: Buffer::new
      Src: /src/opendal/core/services/cos/src/core.rs:419,1
    - Dst: map_err
      Src: /src/opendal/core/services/cos/src/core.rs:416,1
    - Dst: CosCore::sign
      Src: /src/opendal/core/services/cos/src/core.rs:422,1
    - Dst: CosCore::send
      Src: /src/opendal/core/services/cos/src/core.rs:424,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 66
    argCount: 5
    argNames:
    - ctx
    - path
    - next_marker
    - delimiter
    - limit
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    - '&str'
    - Option<usize>
    constantsTouched: []
    func_position:
      end: 425
      start: 391
    functionDepth: 36
    functionLinenumber: 391
    functionLinenumberEnd: 425
    functionName: CosCore::cos_list_objects
    functionSourceFile: /src/opendal/core/services/cos/src/core.rs
    functionUses: 0
    functionsReached:
    - QueryPairsWriter::new
    - extension
    - Request::get
    - Buffer::new
    - map_err
    - Result::to_string
    - CosCore::send
    - body
    - build_abs_path
    - is_empty
    - '&str::is_empty'
    - Result::finish
    - Result::push
    - Option::extension
    - percent_encode_path
    - ServiceOperation
    - object_store::Result::is_empty
    - CosCore::sign
    linkageType: ''
    returnType: Result
    signature: 'pub async fn cos_list_objects(&self,ctx: &OperationContext,path: &str,next_marker:
      &str,delimiter: &str,limit: Option<usize>,) -> Result<Response<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/cos/src/core.rs:433,1
    - Dst: Request::post
      Src: /src/opendal/core/services/cos/src/core.rs:437,1
    - Dst: OpStat::content_type
      Src: /src/opendal/core/services/cos/src/core.rs:439,1
    - Dst: header
      Src: /src/opendal/core/services/cos/src/core.rs:440,1
    - Dst: OpStat::content_disposition
      Src: /src/opendal/core/services/cos/src/core.rs:443,1
    - Dst: header
      Src: /src/opendal/core/services/cos/src/core.rs:444,1
    - Dst: OpStat::cache_control
      Src: /src/opendal/core/services/cos/src/core.rs:447,1
    - Dst: header
      Src: /src/opendal/core/services/cos/src/core.rs:448,1
    - Dst: OpStat::user_metadata
      Src: /src/opendal/core/services/cos/src/core.rs:452,1
    - Dst: header
      Src: /src/opendal/core/services/cos/src/core.rs:454,1
    - Dst: extension
      Src: /src/opendal/core/services/cos/src/core.rs:458,1
    - Dst: extension
      Src: /src/opendal/core/services/cos/src/core.rs:458,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/cos/src/core.rs:460,1
    - Dst: body
      Src: /src/opendal/core/services/cos/src/core.rs:462,1
    - Dst: Buffer::new
      Src: /src/opendal/core/services/cos/src/core.rs:462,1
    - Dst: map_err
      Src: /src/opendal/core/services/cos/src/core.rs:462,1
    - Dst: CosCore::sign
      Src: /src/opendal/core/services/cos/src/core.rs:463,1
    - Dst: CosCore::send
      Src: /src/opendal/core/services/cos/src/core.rs:465,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 53
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&OpWrite'
    constantsTouched: []
    func_position:
      end: 466
      start: 427
    functionDepth: 32
    functionLinenumber: 427
    functionLinenumberEnd: 466
    functionName: CosCore::cos_initiate_multipart_upload
    functionSourceFile: /src/opendal/core/services/cos/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - extension
    - Buffer::new
    - CosCore::send
    - Request::post
    - OpStat::content_disposition
    - OpStat::cache_control
    - build_abs_path
    - body
    - ServiceOperation
    - OpStat::user_metadata
    - CosCore::sign
    - OpStat::content_type
    - header
    linkageType: ''
    returnType: Result
    signature: 'pub async fn cos_initiate_multipart_upload(&self,ctx: &OperationContext,path:
      &str,args: &OpWrite,) -> Result<Response<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/cos/src/core.rs:477,1
    - Dst: Request::put
      Src: /src/opendal/core/services/cos/src/core.rs:487,1
    - Dst: DeleteInput::header
      Src: /src/opendal/core/services/cos/src/core.rs:488,1
    - Dst: DeleteInput::extension
      Src: /src/opendal/core/services/cos/src/core.rs:490,1
    - Dst: extension
      Src: /src/opendal/core/services/cos/src/core.rs:490,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/cos/src/core.rs:492,1
    - Dst: DeleteInput::body
      Src: /src/opendal/core/services/cos/src/core.rs:495,1
    - Dst: map_err
      Src: /src/opendal/core/services/cos/src/core.rs:495,1
    - Dst: CosCore::sign
      Src: /src/opendal/core/services/cos/src/core.rs:496,1
    - Dst: CosCore::send
      Src: /src/opendal/core/services/cos/src/core.rs:498,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 26
    argCount: 6
    argNames:
    - ctx
    - path
    - upload_id
    - part_number
    - size
    - body
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    - usize
    - u64
    - Buffer
    constantsTouched: []
    func_position:
      end: 499
      start: 468
    functionDepth: 36
    functionLinenumber: 468
    functionLinenumberEnd: 499
    functionName: CosCore::cos_upload_part_request
    functionSourceFile: /src/opendal/core/services/cos/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - extension
    - Request::put
    - CosCore::send
    - build_abs_path
    - DeleteInput::header
    - ServiceOperation
    - DeleteInput::body
    - DeleteInput::extension
    - CosCore::sign
    linkageType: ''
    returnType: Result
    signature: 'pub async fn cos_upload_part_request(&self,ctx: &OperationContext,path:
      &str,upload_id: &str,part_number: usize,size: u64,body: Buffer,) -> Result<Response<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/cos/src/core.rs:508,1
    - Dst: Request::post
      Src: /src/opendal/core/services/cos/src/core.rs:517,1
    - Dst: quick_xml::se::to_string
      Src: /src/opendal/core/services/cos/src/core.rs:519,1
    - Dst: map_err
      Src: /src/opendal/core/services/cos/src/core.rs:519,1
    - Dst: header
      Src: /src/opendal/core/services/cos/src/core.rs:522,1
    - Dst: Result::len
      Src: /src/opendal/core/services/cos/src/core.rs:522,1
    - Dst: header
      Src: /src/opendal/core/services/cos/src/core.rs:524,1
    - Dst: extension
      Src: /src/opendal/core/services/cos/src/core.rs:526,1
    - Dst: extension
      Src: /src/opendal/core/services/cos/src/core.rs:526,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/cos/src/core.rs:528,1
    - Dst: body
      Src: /src/opendal/core/services/cos/src/core.rs:530,1
    - Dst: Buffer::from
      Src: /src/opendal/core/services/cos/src/core.rs:531,1
    - Dst: Bytes::from
      Src: /src/opendal/core/services/cos/src/core.rs:531,1
    - Dst: map_err
      Src: /src/opendal/core/services/cos/src/core.rs:530,1
    - Dst: CosCore::sign
      Src: /src/opendal/core/services/cos/src/core.rs:534,1
    - Dst: CosCore::send
      Src: /src/opendal/core/services/cos/src/core.rs:536,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 36
    argCount: 4
    argNames:
    - ctx
    - path
    - upload_id
    - parts
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    - Vec<CompleteMultipartUploadRequestPart>
    constantsTouched: []
    func_position:
      end: 537
      start: 501
    functionDepth: 40
    functionLinenumber: 501
    functionLinenumberEnd: 537
    functionName: CosCore::cos_complete_multipart_upload
    functionSourceFile: /src/opendal/core/services/cos/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - extension
    - CosCore::send
    - Request::post
    - body
    - quick_xml::se::to_string
    - build_abs_path
    - Bytes::from
    - ServiceOperation
    - Result::len
    - CosCore::sign
    - Buffer::from
    - header
    linkageType: ''
    returnType: Result
    signature: 'pub async fn cos_complete_multipart_upload(&self,ctx: &OperationContext,path:
      &str,upload_id: &str,parts: Vec<CompleteMultipartUploadRequestPart>,) -> Result<Response<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/cos/src/core.rs:546,1
    - Dst: Request::delete
      Src: /src/opendal/core/services/cos/src/core.rs:555,1
    - Dst: Result::extension
      Src: /src/opendal/core/services/cos/src/core.rs:555,1
    - Dst: extension
      Src: /src/opendal/core/services/cos/src/core.rs:555,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/cos/src/core.rs:557,1
    - Dst: body
      Src: /src/opendal/core/services/cos/src/core.rs:555,1
    - Dst: Buffer::new
      Src: /src/opendal/core/services/cos/src/core.rs:558,1
    - Dst: map_err
      Src: /src/opendal/core/services/cos/src/core.rs:555,1
    - Dst: CosCore::sign
      Src: /src/opendal/core/services/cos/src/core.rs:560,1
    - Dst: CosCore::send
      Src: /src/opendal/core/services/cos/src/core.rs:561,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 23
    argCount: 3
    argNames:
    - ctx
    - path
    - upload_id
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    constantsTouched: []
    func_position:
      end: 562
      start: 540
    functionDepth: 32
    functionLinenumber: 540
    functionLinenumberEnd: 562
    functionName: CosCore::cos_abort_multipart_upload
    functionSourceFile: /src/opendal/core/services/cos/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - extension
    - Buffer::new
    - Request::delete
    - Result::extension
    - CosCore::send
    - body
    - build_abs_path
    - ServiceOperation
    - CosCore::sign
    linkageType: ''
    returnType: Result
    signature: 'pub async fn cos_abort_multipart_upload(&self,ctx: &OperationContext,path:
      &str,upload_id: &str,) -> Result<Response<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/cos/src/core.rs:573,1
    - Dst: QueryPairsWriter::new
      Src: /src/opendal/core/services/cos/src/core.rs:575,1
    - Dst: Result::push
      Src: /src/opendal/core/services/cos/src/core.rs:576,1
    - Dst: is_empty
      Src: /src/opendal/core/services/cos/src/core.rs:577,1
    - Dst: Result::push
      Src: /src/opendal/core/services/cos/src/core.rs:578,1
    - Dst: percent_encode_path
      Src: /src/opendal/core/services/cos/src/core.rs:578,1
    - Dst: as_str
      Src: /src/opendal/core/services/cos/src/core.rs:578,1
    - Dst: object_store::Result::is_empty
      Src: /src/opendal/core/services/cos/src/core.rs:580,1
    - Dst: Result::push
      Src: /src/opendal/core/services/cos/src/core.rs:581,1
    - Dst: Result::push
      Src: /src/opendal/core/services/cos/src/core.rs:585,1
    - Dst: Result::to_string
      Src: /src/opendal/core/services/cos/src/core.rs:585,1
    - Dst: '&str::is_empty'
      Src: /src/opendal/core/services/cos/src/core.rs:587,1
    - Dst: Result::push
      Src: /src/opendal/core/services/cos/src/core.rs:588,1
    - Dst: percent_encode_path
      Src: /src/opendal/core/services/cos/src/core.rs:588,1
    - Dst: '&str::is_empty'
      Src: /src/opendal/core/services/cos/src/core.rs:590,1
    - Dst: Result::push
      Src: /src/opendal/core/services/cos/src/core.rs:591,1
    - Dst: percent_encode_path
      Src: /src/opendal/core/services/cos/src/core.rs:591,1
    - Dst: Request::get
      Src: /src/opendal/core/services/cos/src/core.rs:594,1
    - Dst: Result::finish
      Src: /src/opendal/core/services/cos/src/core.rs:594,1
    - Dst: Option::extension
      Src: /src/opendal/core/services/cos/src/core.rs:594,1
    - Dst: extension
      Src: /src/opendal/core/services/cos/src/core.rs:594,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/cos/src/core.rs:596,1
    - Dst: body
      Src: /src/opendal/core/services/cos/src/core.rs:594,1
    - Dst: Buffer::new
      Src: /src/opendal/core/services/cos/src/core.rs:597,1
    - Dst: map_err
      Src: /src/opendal/core/services/cos/src/core.rs:594,1
    - Dst: CosCore::sign
      Src: /src/opendal/core/services/cos/src/core.rs:600,1
    - Dst: CosCore::send
      Src: /src/opendal/core/services/cos/src/core.rs:602,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 84
    argCount: 6
    argNames:
    - ctx
    - prefix
    - delimiter
    - limit
    - key_marker
    - version_id_marker
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    - Option<usize>
    - '&str'
    - '&str'
    constantsTouched: []
    func_position:
      end: 603
      start: 564
    functionDepth: 36
    functionLinenumber: 564
    functionLinenumberEnd: 603
    functionName: CosCore::cos_list_object_versions
    functionSourceFile: /src/opendal/core/services/cos/src/core.rs
    functionUses: 0
    functionsReached:
    - Buffer::new
    - Result::finish
    - percent_encode_path
    - map_err
    - extension
    - Result::to_string
    - CosCore::send
    - as_str
    - Result::push
    - ServiceOperation
    - object_store::Result::is_empty
    - CosCore::sign
    - QueryPairsWriter::new
    - build_abs_path
    - is_empty
    - '&str::is_empty'
    - Request::get
    - body
    - Option::extension
    linkageType: ''
    returnType: Result
    signature: 'pub async fn cos_list_object_versions(&self,ctx: &OperationContext,prefix:
      &str,delimiter: &str,limit: Option<usize>,key_marker: &str,version_id_marker:
      &str,) -> Result<Response<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: to_string
      Src: /src/opendal/core/services/cos/src/writer.rs:50,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 4
    argNames:
    - core
    - ctx
    - path
    - op
    argTypes:
    - Arc<CosCore>
    - OperationContext
    - '&str'
    - OpWrite
    constantsTouched: []
    func_position:
      end: 53
      start: 46
    functionDepth: 2
    functionLinenumber: 46
    functionLinenumberEnd: 53
    functionName: CosWriter::new
    functionSourceFile: /src/opendal/core/services/cos/src/writer.rs
    functionUses: 1
    functionsReached:
    - to_string
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(core: Arc<CosCore>, ctx: OperationContext, path: &str,
      op: OpWrite) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Metadata::default
      Src: /src/opendal/core/services/cos/src/writer.rs:56,1
    - Dst: parse_etag
      Src: /src/opendal/core/services/cos/src/writer.rs:57,1
    - Dst: Result::set_etag
      Src: /src/opendal/core/services/cos/src/writer.rs:58,1
    - Dst: parse_content_md5
      Src: /src/opendal/core/services/cos/src/writer.rs:60,1
    - Dst: Result::set_content_md5
      Src: /src/opendal/core/services/cos/src/writer.rs:61,1
    - Dst: parse_header_to_str
      Src: /src/opendal/core/services/cos/src/writer.rs:63,1
    - Dst: Result::set_version
      Src: /src/opendal/core/services/cos/src/writer.rs:66,1
    - Dst: Ok
      Src: /src/opendal/core/services/cos/src/writer.rs:69,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 24
    argCount: 1
    argNames:
    - headers
    argTypes:
    - '&HeaderMap<HeaderValue>'
    constantsTouched: []
    func_position:
      end: 70
      start: 55
    functionDepth: 39
    functionLinenumber: 55
    functionLinenumberEnd: 70
    functionName: CosWriter::parse_metadata
    functionSourceFile: /src/opendal/core/services/cos/src/writer.rs
    functionUses: 0
    functionsReached:
    - parse_content_md5
    - Metadata::default
    - Ok
    - parse_header_to_str
    - Result::set_version
    - parse_etag
    - Result::set_etag
    - Result::set_content_md5
    linkageType: ''
    returnType: Result
    signature: 'fn parse_metadata(headers: &HeaderMap<HeaderValue>) -> Result<Metadata>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: cos_put_object_request
      Src: /src/opendal/core/services/cos/src/writer.rs:75,1
    - Dst: Some
      Src: /src/opendal/core/services/cos/src/writer.rs:77,1
    - Dst: sign
      Src: /src/opendal/core/services/cos/src/writer.rs:79,1
    - Dst: send
      Src: /src/opendal/core/services/cos/src/writer.rs:81,1
    - Dst: Self::parse_metadata
      Src: /src/opendal/core/services/cos/src/writer.rs:83,1
    - Dst: headers
      Src: /src/opendal/core/services/cos/src/writer.rs:83,1
    - Dst: status
      Src: /src/opendal/core/services/cos/src/writer.rs:85,1
    - Dst: Ok
      Src: /src/opendal/core/services/cos/src/writer.rs:88,1
    - Dst: Err
      Src: /src/opendal/core/services/cos/src/writer.rs:89,1
    - Dst: super::core::parse_error
      Src: /src/opendal/core/services/cos/src/writer.rs:89,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 34
    argCount: 2
    argNames:
    - size
    - body
    argTypes:
    - u64
    - Buffer
    constantsTouched: []
    func_position:
      end: 91
      start: 74
    functionDepth: 33
    functionLinenumber: 74
    functionLinenumberEnd: 91
    functionName: CosWriter::write_once
    functionSourceFile: /src/opendal/core/services/cos/src/writer.rs
    functionUses: 0
    functionsReached:
    - status
    - Ok
    - sign
    - Some
    - Err
    - Self::parse_metadata
    - headers
    - send
    - cos_put_object_request
    - super::core::parse_error
    linkageType: ''
    returnType: Result
    signature: 'async fn write_once(&self, size: u64, body: Buffer) -> Result<Metadata>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: cos_initiate_multipart_upload
      Src: /src/opendal/core/services/cos/src/writer.rs:94,1
    - Dst: status
      Src: /src/opendal/core/services/cos/src/writer.rs:99,1
    - Dst: into_body
      Src: /src/opendal/core/services/cos/src/writer.rs:103,1
    - Dst: quick_xml::de::from_reader
      Src: /src/opendal/core/services/cos/src/writer.rs:106,1
    - Dst: bytes::Buf::reader
      Src: /src/opendal/core/services/cos/src/writer.rs:106,1
    - Dst: map_err
      Src: /src/opendal/core/services/cos/src/writer.rs:106,1
    - Dst: Ok
      Src: /src/opendal/core/services/cos/src/writer.rs:109,1
    - Dst: Err
      Src: /src/opendal/core/services/cos/src/writer.rs:111,1
    - Dst: super::core::parse_error
      Src: /src/opendal/core/services/cos/src/writer.rs:111,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 26
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 113
      start: 93
    functionDepth: 33
    functionLinenumber: 93
    functionLinenumberEnd: 113
    functionName: CosWriter::initiate_part
    functionSourceFile: /src/opendal/core/services/cos/src/writer.rs
    functionUses: 0
    functionsReached:
    - map_err
    - status
    - Ok
    - into_body
    - Err
    - bytes::Buf::reader
    - quick_xml::de::from_reader
    - cos_initiate_multipart_upload
    - super::core::parse_error
    linkageType: ''
    returnType: Result
    signature: async fn initiate_part(&self) -> Result<String>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: cos_upload_part_request
      Src: /src/opendal/core/services/cos/src/writer.rs:125,1
    - Dst: status
      Src: /src/opendal/core/services/cos/src/writer.rs:130,1
    - Dst: parse_etag
      Src: /src/opendal/core/services/cos/src/writer.rs:134,1
    - Dst: headers
      Src: /src/opendal/core/services/cos/src/writer.rs:134,1
    - Dst: ok_or_else
      Src: /src/opendal/core/services/cos/src/writer.rs:134,1
    - Dst: Error::new
      Src: /src/opendal/core/services/cos/src/writer.rs:136,1
    - Dst: to_string
      Src: /src/opendal/core/services/cos/src/writer.rs:134,1
    - Dst: Ok
      Src: /src/opendal/core/services/cos/src/writer.rs:143,1
    - Dst: Err
      Src: /src/opendal/core/services/cos/src/writer.rs:150,1
    - Dst: super::core::parse_error
      Src: /src/opendal/core/services/cos/src/writer.rs:150,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 29
    argCount: 4
    argNames:
    - upload_id
    - part_number
    - size
    - body
    argTypes:
    - '&str'
    - usize
    - u64
    - Buffer
    constantsTouched: []
    func_position:
      end: 152
      start: 115
    functionDepth: 37
    functionLinenumber: 115
    functionLinenumberEnd: 152
    functionName: CosWriter::write_part
    functionSourceFile: /src/opendal/core/services/cos/src/writer.rs
    functionUses: 0
    functionsReached:
    - to_string
    - status
    - Ok
    - Error::new
    - Err
    - headers
    - cos_upload_part_request
    - parse_etag
    - super::core::parse_error
    - ok_or_else
    linkageType: ''
    returnType: Result
    signature: 'async fn write_part(&self,upload_id: &str,part_number: usize,size:
      u64,body: Buffer,) -> Result<oio::MultipartPart>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: (String, Metadata)::iter
      Src: /src/opendal/core/services/cos/src/writer.rs:159,1
    - Dst: map
      Src: /src/opendal/core/services/cos/src/writer.rs:159,1
    - Dst: clone
      Src: /src/opendal/core/services/cos/src/writer.rs:163,1
    - Dst: Result::collect
      Src: /src/opendal/core/services/cos/src/writer.rs:159,1
    - Dst: cos_complete_multipart_upload
      Src: /src/opendal/core/services/cos/src/writer.rs:167,1
    - Dst: Self::parse_metadata
      Src: /src/opendal/core/services/cos/src/writer.rs:172,1
    - Dst: headers
      Src: /src/opendal/core/services/cos/src/writer.rs:172,1
    - Dst: quick_xml::de::from_reader
      Src: /src/opendal/core/services/cos/src/writer.rs:175,1
    - Dst: body_mut
      Src: /src/opendal/core/services/cos/src/writer.rs:175,1
    - Dst: reader
      Src: /src/opendal/core/services/cos/src/writer.rs:175,1
    - Dst: map_err
      Src: /src/opendal/core/services/cos/src/writer.rs:175,1
    - Dst: Result::set_etag
      Src: /src/opendal/core/services/cos/src/writer.rs:177,1
    - Dst: status
      Src: /src/opendal/core/services/cos/src/writer.rs:179,1
    - Dst: Ok
      Src: /src/opendal/core/services/cos/src/writer.rs:182,1
    - Dst: Err
      Src: /src/opendal/core/services/cos/src/writer.rs:183,1
    - Dst: super::core::parse_error
      Src: /src/opendal/core/services/cos/src/writer.rs:183,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 45
    argCount: 2
    argNames:
    - upload_id
    - parts
    argTypes:
    - '&str'
    - '&[oio::MultipartPart]'
    constantsTouched: []
    func_position:
      end: 185
      start: 154
    functionDepth: 36
    functionLinenumber: 154
    functionLinenumberEnd: 185
    functionName: CosWriter::complete_part
    functionSourceFile: /src/opendal/core/services/cos/src/writer.rs
    functionUses: 0
    functionsReached:
    - map_err
    - cos_complete_multipart_upload
    - reader
    - status
    - Ok
    - body_mut
    - clone
    - Err
    - map
    - quick_xml::de::from_reader
    - Result::collect
    - Self::parse_metadata
    - headers
    - (String, Metadata)::iter
    - Result::set_etag
    - super::core::parse_error
    linkageType: ''
    returnType: Result
    signature: 'async fn complete_part(&self,upload_id: &str,parts: &[oio::MultipartPart],)
      -> Result<Metadata>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: cos_abort_multipart_upload
      Src: /src/opendal/core/services/cos/src/writer.rs:188,1
    - Dst: status
      Src: /src/opendal/core/services/cos/src/writer.rs:192,1
    - Dst: Ok
      Src: /src/opendal/core/services/cos/src/writer.rs:195,1
    - Dst: Err
      Src: /src/opendal/core/services/cos/src/writer.rs:196,1
    - Dst: super::core::parse_error
      Src: /src/opendal/core/services/cos/src/writer.rs:196,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 1
    argNames:
    - upload_id
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 198
      start: 187
    functionDepth: 33
    functionLinenumber: 187
    functionLinenumberEnd: 198
    functionName: CosWriter::abort_part
    functionSourceFile: /src/opendal/core/services/cos/src/writer.rs
    functionUses: 0
    functionsReached:
    - status
    - Ok
    - Err
    - super::core::parse_error
    - cos_abort_multipart_upload
    linkageType: ''
    returnType: Result
    signature: 'async fn abort_part(&self, upload_id: &str) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: cos_head_object
      Src: /src/opendal/core/services/cos/src/writer.rs:203,1
    - Dst: OpStat::default
      Src: /src/opendal/core/services/cos/src/writer.rs:205,1
    - Dst: status
      Src: /src/opendal/core/services/cos/src/writer.rs:208,1
    - Dst: parse_content_length
      Src: /src/opendal/core/services/cos/src/writer.rs:211,1
    - Dst: headers
      Src: /src/opendal/core/services/cos/src/writer.rs:211,1
    - Dst: ok_or_else
      Src: /src/opendal/core/services/cos/src/writer.rs:211,1
    - Dst: Error::new
      Src: /src/opendal/core/services/cos/src/writer.rs:212,1
    - Dst: Ok
      Src: /src/opendal/core/services/cos/src/writer.rs:217,1
    - Dst: Ok
      Src: /src/opendal/core/services/cos/src/writer.rs:219,1
    - Dst: Err
      Src: /src/opendal/core/services/cos/src/writer.rs:220,1
    - Dst: super::core::parse_error
      Src: /src/opendal/core/services/cos/src/writer.rs:220,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 28
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 222
      start: 202
    functionDepth: 40
    functionLinenumber: 202
    functionLinenumberEnd: 222
    functionName: CosWriter::offset
    functionSourceFile: /src/opendal/core/services/cos/src/writer.rs
    functionUses: 0
    functionsReached:
    - status
    - Ok
    - cos_head_object
    - ok_or_else
    - Error::new
    - parse_content_length
    - Err
    - headers
    - super::core::parse_error
    - OpStat::default
    linkageType: ''
    returnType: Result
    signature: async fn offset(&self) -> Result<u64>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: cos_append_object_request
      Src: /src/opendal/core/services/cos/src/writer.rs:225,1
    - Dst: sign
      Src: /src/opendal/core/services/cos/src/writer.rs:229,1
    - Dst: send
      Src: /src/opendal/core/services/cos/src/writer.rs:231,1
    - Dst: Self::parse_metadata
      Src: /src/opendal/core/services/cos/src/writer.rs:233,1
    - Dst: headers
      Src: /src/opendal/core/services/cos/src/writer.rs:233,1
    - Dst: status
      Src: /src/opendal/core/services/cos/src/writer.rs:235,1
    - Dst: Ok
      Src: /src/opendal/core/services/cos/src/writer.rs:238,1
    - Dst: Err
      Src: /src/opendal/core/services/cos/src/writer.rs:239,1
    - Dst: super::core::parse_error
      Src: /src/opendal/core/services/cos/src/writer.rs:239,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 33
    argCount: 3
    argNames:
    - offset
    - size
    - body
    argTypes:
    - u64
    - u64
    - Buffer
    constantsTouched: []
    func_position:
      end: 241
      start: 224
    functionDepth: 33
    functionLinenumber: 224
    functionLinenumberEnd: 241
    functionName: CosWriter::append
    functionSourceFile: /src/opendal/core/services/cos/src/writer.rs
    functionUses: 0
    functionsReached:
    - status
    - Ok
    - sign
    - Err
    - Self::parse_metadata
    - headers
    - cos_append_object_request
    - send
    - super::core::parse_error
    linkageType: ''
    returnType: Result
    signature: 'async fn append(&self, offset: u64, size: u64, body: Buffer) -> Result<Metadata>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: register::<Cos>
      Src: /src/opendal/core/services/cos/src/lib.rs:35,1
    - Dst: register::<Cos>
      Src: /src/opendal/core/services/cos/src/lib.rs:36,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - registry
    argTypes:
    - '&opendal_core::OperatorRegistry'
    constantsTouched: []
    func_position:
      end: 37
      start: 34
    functionDepth: 0
    functionLinenumber: 34
    functionLinenumberEnd: 37
    functionName: register_cos_service
    functionSourceFile: /src/opendal/core/services/cos/src/lib.rs
    functionUses: 1
    functionsReached:
    - register::<Cos>
    linkageType: ''
    returnType: void
    signature: 'pub fn register_cos_service(registry: &opendal_core::OperatorRegistry)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::debug_struct
      Src: /src/opendal/core/services/cos/src/backend.rs:55,1
    - Dst: field
      Src: /src/opendal/core/services/cos/src/backend.rs:55,1
    - Dst: finish_non_exhaustive
      Src: /src/opendal/core/services/cos/src/backend.rs:55,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - f
    argTypes:
    - '&mut std::fmt::Formatter<''_>'
    constantsTouched: []
    func_position:
      end: 58
      start: 54
    functionDepth: 5
    functionLinenumber: 54
    functionLinenumberEnd: 58
    functionName: CosBuilder::fmt
    functionSourceFile: /src/opendal/core/services/cos/src/backend.rs
    functionUses: 0
    functionsReached:
    - field
    - Result::debug_struct
    - finish_non_exhaustive
    linkageType: ''
    returnType: std::fmt::Result
    signature: 'fn fmt(&self, f: &mut std::fmt::Formatter<''_>) -> std::fmt::Result'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::is_empty
      Src: /src/opendal/core/services/cos/src/backend.rs:66,1
    - Dst: Some
      Src: /src/opendal/core/services/cos/src/backend.rs:69,1
    - Dst: Result::to_string
      Src: /src/opendal/core/services/cos/src/backend.rs:69,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - root
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 73
      start: 65
    functionDepth: 4
    functionLinenumber: 65
    functionLinenumberEnd: 73
    functionName: CosBuilder::root
    functionSourceFile: /src/opendal/core/services/cos/src/backend.rs
    functionUses: 0
    functionsReached:
    - Result::is_empty
    - Result::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn root(mut self, root: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self::is_empty
      Src: /src/opendal/core/services/cos/src/backend.rs:83,1
    - Dst: Some
      Src: /src/opendal/core/services/cos/src/backend.rs:84,1
    - Dst: Self::trim_end_matches
      Src: /src/opendal/core/services/cos/src/backend.rs:84,1
    - Dst: to_string
      Src: /src/opendal/core/services/cos/src/backend.rs:84,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 14
    argCount: 1
    argNames:
    - endpoint
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 88
      start: 82
    functionDepth: 4
    functionLinenumber: 82
    functionLinenumberEnd: 88
    functionName: CosBuilder::endpoint
    functionSourceFile: /src/opendal/core/services/cos/src/backend.rs
    functionUses: 0
    functionsReached:
    - Self::is_empty
    - to_string
    - Self::trim_end_matches
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn endpoint(mut self, endpoint: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self::is_empty
      Src: /src/opendal/core/services/cos/src/backend.rs:94,1
    - Dst: Some
      Src: /src/opendal/core/services/cos/src/backend.rs:95,1
    - Dst: Self::to_string
      Src: /src/opendal/core/services/cos/src/backend.rs:95,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 1
    argNames:
    - secret_id
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 99
      start: 93
    functionDepth: 4
    functionLinenumber: 93
    functionLinenumberEnd: 99
    functionName: CosBuilder::secret_id
    functionSourceFile: /src/opendal/core/services/cos/src/backend.rs
    functionUses: 0
    functionsReached:
    - Self::is_empty
    - Self::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn secret_id(mut self, secret_id: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self::is_empty
      Src: /src/opendal/core/services/cos/src/backend.rs:105,1
    - Dst: Some
      Src: /src/opendal/core/services/cos/src/backend.rs:106,1
    - Dst: Self::to_string
      Src: /src/opendal/core/services/cos/src/backend.rs:106,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 1
    argNames:
    - secret_key
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 110
      start: 104
    functionDepth: 4
    functionLinenumber: 104
    functionLinenumberEnd: 110
    functionName: CosBuilder::secret_key
    functionSourceFile: /src/opendal/core/services/cos/src/backend.rs
    functionUses: 0
    functionsReached:
    - Self::is_empty
    - Self::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn secret_key(mut self, secret_key: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self::is_empty
      Src: /src/opendal/core/services/cos/src/backend.rs:128,1
    - Dst: Some
      Src: /src/opendal/core/services/cos/src/backend.rs:129,1
    - Dst: Self::to_string
      Src: /src/opendal/core/services/cos/src/backend.rs:129,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 1
    argNames:
    - security_token
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 133
      start: 127
    functionDepth: 4
    functionLinenumber: 127
    functionLinenumberEnd: 133
    functionName: CosBuilder::security_token
    functionSourceFile: /src/opendal/core/services/cos/src/backend.rs
    functionUses: 0
    functionsReached:
    - Self::is_empty
    - Self::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn security_token(mut self, security_token: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: usize::is_empty
      Src: /src/opendal/core/services/cos/src/backend.rs:138,1
    - Dst: Some
      Src: /src/opendal/core/services/cos/src/backend.rs:139,1
    - Dst: usize::to_string
      Src: /src/opendal/core/services/cos/src/backend.rs:139,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 1
    argNames:
    - bucket
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 143
      start: 137
    functionDepth: 4
    functionLinenumber: 137
    functionLinenumberEnd: 143
    functionName: CosBuilder::bucket
    functionSourceFile: /src/opendal/core/services/cos/src/backend.rs
    functionUses: 0
    functionsReached:
    - Some
    - usize::to_string
    - usize::is_empty
    linkageType: ''
    returnType: Self
    signature: 'pub fn bucket(mut self, bucket: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 1
    argNames:
    - _enabled
    argTypes:
    - bool
    constantsTouched: []
    func_position:
      end: 152
      start: 150
    functionDepth: 0
    functionLinenumber: 150
    functionLinenumberEnd: 152
    functionName: CosBuilder::enable_versioning
    functionSourceFile: /src/opendal/core/services/cos/src/backend.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: 'pub fn enable_versioning(self, _enabled: bool) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 163
      start: 160
    functionDepth: 0
    functionLinenumber: 160
    functionLinenumberEnd: 163
    functionName: CosBuilder::disable_config_load
    functionSourceFile: /src/opendal/core/services/cos/src/backend.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: pub fn disable_config_load(mut self) -> Self
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: normalize_root
      Src: /src/opendal/core/services/cos/src/backend.rs:172,1
    - Dst: unwrap_or_default
      Src: /src/opendal/core/services/cos/src/backend.rs:172,1
    - Dst: Ok
      Src: /src/opendal/core/services/cos/src/backend.rs:176,1
    - Dst: usize::to_string
      Src: /src/opendal/core/services/cos/src/backend.rs:176,1
    - Dst: Err
      Src: /src/opendal/core/services/cos/src/backend.rs:177,1
    - Dst: Error::new
      Src: /src/opendal/core/services/cos/src/backend.rs:178,1
    - Dst: Self::with_context
      Src: /src/opendal/core/services/cos/src/backend.rs:178,1
    - Dst: parse::<Uri>
      Src: /src/opendal/core/services/cos/src/backend.rs:185,1
    - Dst: map_err
      Src: /src/opendal/core/services/cos/src/backend.rs:185,1
    - Dst: Error::new
      Src: /src/opendal/core/services/cos/src/backend.rs:186,1
    - Dst: Self::with_context
      Src: /src/opendal/core/services/cos/src/backend.rs:186,1
    - Dst: Self::with_context
      Src: /src/opendal/core/services/cos/src/backend.rs:186,1
    - Dst: Self::set_source
      Src: /src/opendal/core/services/cos/src/backend.rs:186,1
    - Dst: Err
      Src: /src/opendal/core/services/cos/src/backend.rs:191,1
    - Dst: Error::new
      Src: /src/opendal/core/services/cos/src/backend.rs:191,1
    - Dst: Self::with_context
      Src: /src/opendal/core/services/cos/src/backend.rs:191,1
    - Dst: Result::scheme_str
      Src: /src/opendal/core/services/cos/src/backend.rs:195,1
    - Dst: to_string
      Src: /src/opendal/core/services/cos/src/backend.rs:196,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/cos/src/backend.rs:197,1
    - Dst: Result::host
      Src: /src/opendal/core/services/cos/src/backend.rs:201,1
    - Dst: Self::unwrap
      Src: /src/opendal/core/services/cos/src/backend.rs:201,1
    - Dst: T::replace
      Src: /src/opendal/core/services/cos/src/backend.rs:201,1
    - Dst: Context::new
      Src: /src/opendal/core/services/cos/src/backend.rs:205,1
    - Dst: Self::with_file_read
      Src: /src/opendal/core/services/cos/src/backend.rs:205,1
    - Dst: with_env
      Src: /src/opendal/core/services/cos/src/backend.rs:205,1
    - Dst: DefaultCredentialProvider::builder
      Src: /src/opendal/core/services/cos/src/backend.rs:210,1
    - Dst: OtelMetricsLayerBuilder::no_env
      Src: /src/opendal/core/services/cos/src/backend.rs:210,1
    - Dst: no_web_identity
      Src: /src/opendal/core/services/cos/src/backend.rs:210,1
    - Dst: build
      Src: /src/opendal/core/services/cos/src/backend.rs:210,1
    - Dst: DefaultCredentialProvider::new
      Src: /src/opendal/core/services/cos/src/backend.rs:215,1
    - Dst: as_deref
      Src: /src/opendal/core/services/cos/src/backend.rs:219,1
    - Dst: as_deref
      Src: /src/opendal/core/services/cos/src/backend.rs:220,1
    - Dst: as_deref
      Src: /src/opendal/core/services/cos/src/backend.rs:222,1
    - Dst: StaticCredentialProvider::with_security_token
      Src: /src/opendal/core/services/cos/src/backend.rs:223,1
    - Dst: StaticCredentialProvider::new
      Src: /src/opendal/core/services/cos/src/backend.rs:225,1
    - Dst: Self::push_front
      Src: /src/opendal/core/services/cos/src/backend.rs:228,1
    - Dst: Signer::new
      Src: /src/opendal/core/services/cos/src/backend.rs:231,1
    - Dst: RequestSigner::new
      Src: /src/opendal/core/services/cos/src/backend.rs:231,1
    - Dst: ServiceInfo::new
      Src: /src/opendal/core/services/cos/src/backend.rs:233,1
    - Dst: Some
      Src: /src/opendal/core/services/cos/src/backend.rs:261,1
    - Dst: Some
      Src: /src/opendal/core/services/cos/src/backend.rs:266,1
    - Dst: Some
      Src: /src/opendal/core/services/cos/src/backend.rs:268,1
    - Dst: Default::default
      Src: /src/opendal/core/services/cos/src/backend.rs:288,1
    - Dst: Ok
      Src: /src/opendal/core/services/cos/src/backend.rs:291,1
    - Dst: Arc::new
      Src: /src/opendal/core/services/cos/src/backend.rs:292,1
    - Dst: usize::clone
      Src: /src/opendal/core/services/cos/src/backend.rs:295,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 116
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 301
      start: 169
    functionDepth: 34
    functionLinenumber: 169
    functionLinenumberEnd: 301
    functionName: CosBuilder::build
    functionSourceFile: /src/opendal/core/services/cos/src/backend.rs
    functionUses: 0
    functionsReached:
    - Self::unwrap
    - as_deref
    - Self::push_front
    - Default::default
    - Arc::new
    - Signer::new
    - Result::host
    - usize::to_string
    - Self::with_context
    - no_web_identity
    - StaticCredentialProvider::with_security_token
    - map_err
    - usize::clone
    - ServiceInfo::new
    - Ok
    - Context::new
    - OtelMetricsLayerBuilder::no_env
    - normalize_root
    - '&str::to_string'
    - unwrap_or_default
    - RequestSigner::new
    - Result::scheme_str
    - DefaultCredentialProvider::new
    - Some
    - Self::set_source
    - to_string
    - with_env
    - parse::<Uri>
    - build
    - T::replace
    - Err
    - Error::new
    - Self::with_file_read
    - DefaultCredentialProvider::builder
    - StaticCredentialProvider::new
    linkageType: ''
    returnType: Result
    signature: fn build(self) -> Result<impl Service>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: clone
      Src: /src/opendal/core/services/cos/src/backend.rs:318,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 319
      start: 317
    functionDepth: 2
    functionLinenumber: 317
    functionLinenumberEnd: 319
    functionName: CosBackend::info
    functionSourceFile: /src/opendal/core/services/cos/src/backend.rs
    functionUses: 0
    functionsReached:
    - clone
    linkageType: ''
    returnType: ServiceInfo
    signature: fn info(&self) -> ServiceInfo
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 323
      start: 321
    functionDepth: 0
    functionLinenumber: 321
    functionLinenumberEnd: 323
    functionName: CosBackend::capability
    functionSourceFile: /src/opendal/core/services/cos/src/backend.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Capability
    signature: fn capability(&self) -> Capability
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/core/services/cos/src/backend.rs:331,1
    - Dst: Error::new
      Src: /src/opendal/core/services/cos/src/backend.rs:331,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - _ctx
    - _path
    - _args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpCreateDir
    constantsTouched: []
    func_position:
      end: 335
      start: 325
    functionDepth: 36
    functionLinenumber: 325
    functionLinenumberEnd: 335
    functionName: CosBackend::create_dir
    functionSourceFile: /src/opendal/core/services/cos/src/backend.rs
    functionUses: 0
    functionsReached:
    - Error::new
    - Err
    linkageType: ''
    returnType: Result
    signature: 'async fn create_dir(&self,_ctx: &OperationContext,_path: &str,_args:
      OpCreateDir,) -> Result<RpCreateDir>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: cos_head_object
      Src: /src/opendal/core/services/cos/src/backend.rs:338,1
    - Dst: status
      Src: /src/opendal/core/services/cos/src/backend.rs:340,1
    - Dst: headers
      Src: /src/opendal/core/services/cos/src/backend.rs:344,1
    - Dst: parse_into_metadata
      Src: /src/opendal/core/services/cos/src/backend.rs:345,1
    - Dst: parse_prefixed_headers
      Src: /src/opendal/core/services/cos/src/backend.rs:347,1
    - Dst: HashMap::is_empty
      Src: /src/opendal/core/services/cos/src/backend.rs:348,1
    - Dst: Result::with_user_metadata
      Src: /src/opendal/core/services/cos/src/backend.rs:349,1
    - Dst: parse_header_to_str
      Src: /src/opendal/core/services/cos/src/backend.rs:352,1
    - Dst: Result::set_version
      Src: /src/opendal/core/services/cos/src/backend.rs:355,1
    - Dst: Ok
      Src: /src/opendal/core/services/cos/src/backend.rs:358,1
    - Dst: RpStat::new
      Src: /src/opendal/core/services/cos/src/backend.rs:358,1
    - Dst: Err
      Src: /src/opendal/core/services/cos/src/backend.rs:360,1
    - Dst: super::core::parse_error
      Src: /src/opendal/core/services/cos/src/backend.rs:360,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 36
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpStat
    constantsTouched: []
    func_position:
      end: 362
      start: 337
    functionDepth: 40
    functionLinenumber: 337
    functionLinenumberEnd: 362
    functionName: CosBackend::stat
    functionSourceFile: /src/opendal/core/services/cos/src/backend.rs
    functionUses: 0
    functionsReached:
    - parse_into_metadata
    - HashMap::is_empty
    - status
    - Ok
    - RpStat::new
    - parse_header_to_str
    - parse_prefixed_headers
    - Result::with_user_metadata
    - cos_head_object
    - Result::set_version
    - Err
    - headers
    - super::core::parse_error
    linkageType: ''
    returnType: Result
    signature: 'async fn stat(&self, ctx: &OperationContext, path: &str, args: OpStat)
      -> Result<RpStat>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/core/services/cos/src/backend.rs:365,1
    - Dst: oio::StreamReader::new
      Src: /src/opendal/core/services/cos/src/backend.rs:365,1
    - Dst: CosReader::new
      Src: /src/opendal/core/services/cos/src/backend.rs:365,1
    - Dst: CosBackend::clone
      Src: /src/opendal/core/services/cos/src/backend.rs:366,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/cos/src/backend.rs:367,1
    - Dst: Ok
      Src: /src/opendal/core/services/cos/src/backend.rs:373,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpRead
    constantsTouched: []
    func_position:
      end: 374
      start: 363
    functionDepth: 3
    functionLinenumber: 363
    functionLinenumberEnd: 374
    functionName: CosBackend::read
    functionSourceFile: /src/opendal/core/services/cos/src/backend.rs
    functionUses: 0
    functionsReached:
    - Result::clone
    - Ok
    - oio::StreamReader::new
    - CosBackend::clone
    - CosReader::new
    linkageType: ''
    returnType: Result
    signature: 'fn read(&self, ctx: &OperationContext, path: &str, args: OpRead) ->
      Result<Self::Reader>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: CosWriter::new
      Src: /src/opendal/core/services/cos/src/backend.rs:378,1
    - Dst: clone
      Src: /src/opendal/core/services/cos/src/backend.rs:378,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/cos/src/backend.rs:378,1
    - Dst: OpStat::clone
      Src: /src/opendal/core/services/cos/src/backend.rs:378,1
    - Dst: OpStat::append
      Src: /src/opendal/core/services/cos/src/backend.rs:380,1
    - Dst: CosWriters::Two
      Src: /src/opendal/core/services/cos/src/backend.rs:381,1
    - Dst: oio::AppendWriter::new
      Src: /src/opendal/core/services/cos/src/backend.rs:381,1
    - Dst: CosWriters::One
      Src: /src/opendal/core/services/cos/src/backend.rs:383,1
    - Dst: oio::MultipartWriter::new
      Src: /src/opendal/core/services/cos/src/backend.rs:383,1
    - Dst: Result::executor
      Src: /src/opendal/core/services/cos/src/backend.rs:384,1
    - Dst: Self::clone
      Src: /src/opendal/core/services/cos/src/backend.rs:384,1
    - Dst: OpStat::concurrent
      Src: /src/opendal/core/services/cos/src/backend.rs:386,1
    - Dst: Ok
      Src: /src/opendal/core/services/cos/src/backend.rs:390,1
    - Dst: Ok
      Src: /src/opendal/core/services/cos/src/backend.rs:393,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 24
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpWrite
    constantsTouched: []
    func_position:
      end: 394
      start: 376
    functionDepth: 31
    functionLinenumber: 376
    functionLinenumberEnd: 394
    functionName: CosBackend::write
    functionSourceFile: /src/opendal/core/services/cos/src/backend.rs
    functionUses: 0
    functionsReached:
    - OpStat::clone
    - Result::clone
    - oio::MultipartWriter::new
    - CosWriters::One
    - Ok
    - Result::executor
    - clone
    - OpStat::append
    - Self::clone
    - OpStat::concurrent
    - CosWriter::new
    - CosWriters::Two
    - oio::AppendWriter::new
    linkageType: ''
    returnType: Result
    signature: 'fn write(&self, ctx: &OperationContext, path: &str, args: OpWrite)
      -> Result<Self::Writer>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/core/services/cos/src/backend.rs:398,1
    - Dst: oio::OneShotDeleter::new
      Src: /src/opendal/core/services/cos/src/backend.rs:398,1
    - Dst: CosDeleter::new
      Src: /src/opendal/core/services/cos/src/backend.rs:398,1
    - Dst: clone
      Src: /src/opendal/core/services/cos/src/backend.rs:399,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/cos/src/backend.rs:400,1
    - Dst: Ok
      Src: /src/opendal/core/services/cos/src/backend.rs:404,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - '&OperationContext'
    constantsTouched: []
    func_position:
      end: 405
      start: 396
    functionDepth: 2
    functionLinenumber: 396
    functionLinenumberEnd: 405
    functionName: CosBackend::delete
    functionSourceFile: /src/opendal/core/services/cos/src/backend.rs
    functionUses: 0
    functionsReached:
    - oio::OneShotDeleter::new
    - Result::clone
    - Ok
    - clone
    - CosDeleter::new
    linkageType: ''
    returnType: Result
    signature: 'fn delete(&self, ctx: &OperationContext) -> Result<Self::Deleter>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: OpStat::versions
      Src: /src/opendal/core/services/cos/src/backend.rs:409,1
    - Dst: OpStat::deleted
      Src: /src/opendal/core/services/cos/src/backend.rs:409,1
    - Dst: TwoWays::Two
      Src: /src/opendal/core/services/cos/src/backend.rs:410,1
    - Dst: oio::PageLister::new
      Src: /src/opendal/core/services/cos/src/backend.rs:410,1
    - Dst: CosObjectVersionsLister::new
      Src: /src/opendal/core/services/cos/src/backend.rs:410,1
    - Dst: clone
      Src: /src/opendal/core/services/cos/src/backend.rs:411,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/cos/src/backend.rs:412,1
    - Dst: TwoWays::One
      Src: /src/opendal/core/services/cos/src/backend.rs:417,1
    - Dst: oio::PageLister::new
      Src: /src/opendal/core/services/cos/src/backend.rs:417,1
    - Dst: CosLister::new
      Src: /src/opendal/core/services/cos/src/backend.rs:417,1
    - Dst: clone
      Src: /src/opendal/core/services/cos/src/backend.rs:418,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/cos/src/backend.rs:419,1
    - Dst: OpStat::recursive
      Src: /src/opendal/core/services/cos/src/backend.rs:421,1
    - Dst: OpStat::limit
      Src: /src/opendal/core/services/cos/src/backend.rs:422,1
    - Dst: Ok
      Src: /src/opendal/core/services/cos/src/backend.rs:426,1
    - Dst: Ok
      Src: /src/opendal/core/services/cos/src/backend.rs:429,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 29
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpList
    constantsTouched: []
    func_position:
      end: 430
      start: 407
    functionDepth: 35
    functionLinenumber: 407
    functionLinenumberEnd: 430
    functionName: CosBackend::list
    functionSourceFile: /src/opendal/core/services/cos/src/backend.rs
    functionUses: 0
    functionsReached:
    - Result::clone
    - Ok
    - OpStat::versions
    - CosLister::new
    - clone
    - TwoWays::One
    - oio::PageLister::new
    - OpStat::recursive
    - CosObjectVersionsLister::new
    - OpStat::limit
    - TwoWays::Two
    - OpStat::deleted
    linkageType: ''
    returnType: Result
    signature: 'fn list(&self, ctx: &OperationContext, path: &str, args: OpList) ->
      Result<Self::Lister>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: clone
      Src: /src/opendal/core/services/cos/src/backend.rs:440,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/cos/src/backend.rs:441,1
    - Dst: Result::to_string
      Src: /src/opendal/core/services/cos/src/backend.rs:442,1
    - Dst: Result::to_string
      Src: /src/opendal/core/services/cos/src/backend.rs:443,1
    - Dst: Ok
      Src: /src/opendal/core/services/cos/src/backend.rs:444,1
    - Dst: oio::OneShotCopier::new
      Src: /src/opendal/core/services/cos/src/backend.rs:444,1
    - Dst: CompfsCore::cos_copy_object
      Src: /src/opendal/core/services/cos/src/backend.rs:445,1
    - Dst: status
      Src: /src/opendal/core/services/cos/src/backend.rs:447,1
    - Dst: Ok
      Src: /src/opendal/core/services/cos/src/backend.rs:450,1
    - Dst: Metadata::default
      Src: /src/opendal/core/services/cos/src/backend.rs:450,1
    - Dst: Err
      Src: /src/opendal/core/services/cos/src/backend.rs:451,1
    - Dst: super::core::parse_error
      Src: /src/opendal/core/services/cos/src/backend.rs:451,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 27
    argCount: 5
    argNames:
    - ctx
    - from
    - to
    - args
    - _opts
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    - OpCopy
    - OpCopier
    constantsTouched: []
    func_position:
      end: 454
      start: 432
    functionDepth: 33
    functionLinenumber: 432
    functionLinenumberEnd: 454
    functionName: CosBackend::copy
    functionSourceFile: /src/opendal/core/services/cos/src/backend.rs
    functionUses: 0
    functionsReached:
    - Result::clone
    - CompfsCore::cos_copy_object
    - Metadata::default
    - Result::to_string
    - Ok
    - status
    - clone
    - Err
    - super::core::parse_error
    - oio::OneShotCopier::new
    linkageType: ''
    returnType: Result
    signature: 'fn copy(&self,ctx: &OperationContext,from: &str,to: &str,args: OpCopy,_opts:
      OpCopier,) -> Result<Self::Copier>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/core/services/cos/src/backend.rs:463,1
    - Dst: Error::new
      Src: /src/opendal/core/services/cos/src/backend.rs:463,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - _ctx
    - _from
    - _to
    - _args
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    - OpRename
    constantsTouched: []
    func_position:
      end: 467
      start: 456
    functionDepth: 36
    functionLinenumber: 456
    functionLinenumberEnd: 467
    functionName: CosBackend::rename
    functionSourceFile: /src/opendal/core/services/cos/src/backend.rs
    functionUses: 0
    functionsReached:
    - Error::new
    - Err
    linkageType: ''
    returnType: Result
    signature: 'async fn rename(&self,_ctx: &OperationContext,_from: &str,_to: &str,_args:
      OpRename,) -> Result<RpRename>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: OpStat::operation
      Src: /src/opendal/core/services/cos/src/backend.rs:475,1
    - Dst: cos_head_object_request
      Src: /src/opendal/core/services/cos/src/backend.rs:476,1
    - Dst: cos_get_object_request
      Src: /src/opendal/core/services/cos/src/backend.rs:477,1
    - Dst: cos_put_object_request
      Src: /src/opendal/core/services/cos/src/backend.rs:479,1
    - Dst: Buffer::new
      Src: /src/opendal/core/services/cos/src/backend.rs:480,1
    - Dst: Err
      Src: /src/opendal/core/services/cos/src/backend.rs:482,1
    - Dst: Error::new
      Src: /src/opendal/core/services/cos/src/backend.rs:482,1
    - Dst: Err
      Src: /src/opendal/core/services/cos/src/backend.rs:486,1
    - Dst: Error::new
      Src: /src/opendal/core/services/cos/src/backend.rs:486,1
    - Dst: sign_query
      Src: /src/opendal/core/services/cos/src/backend.rs:492,1
    - Dst: OpStat::expire
      Src: /src/opendal/core/services/cos/src/backend.rs:492,1
    - Dst: into_parts
      Src: /src/opendal/core/services/cos/src/backend.rs:495,1
    - Dst: Ok
      Src: /src/opendal/core/services/cos/src/backend.rs:497,1
    - Dst: RpPresign::new
      Src: /src/opendal/core/services/cos/src/backend.rs:497,1
    - Dst: PresignedRequest::new
      Src: /src/opendal/core/services/cos/src/backend.rs:497,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 34
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpPresign
    constantsTouched: []
    func_position:
      end: 502
      start: 469
    functionDepth: 39
    functionLinenumber: 469
    functionLinenumberEnd: 502
    functionName: CosBackend::presign
    functionSourceFile: /src/opendal/core/services/cos/src/backend.rs
    functionUses: 0
    functionsReached:
    - sign_query
    - cos_head_object_request
    - Buffer::new
    - Ok
    - OpStat::operation
    - Err
    - Error::new
    - OpStat::expire
    - RpPresign::new
    - PresignedRequest::new
    - into_parts
    - cos_put_object_request
    - cos_get_object_request
    linkageType: ''
    returnType: Result
    signature: 'async fn presign(&self,ctx: &OperationContext,path: &str,args: OpPresign,)
      -> Result<RpPresign>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::debug_struct
      Src: /src/opendal/core/services/d1/src/config.rs:50,1
    - Dst: field
      Src: /src/opendal/core/services/d1/src/config.rs:50,1
    - Dst: field
      Src: /src/opendal/core/services/d1/src/config.rs:50,1
    - Dst: field
      Src: /src/opendal/core/services/d1/src/config.rs:50,1
    - Dst: field
      Src: /src/opendal/core/services/d1/src/config.rs:50,1
    - Dst: finish_non_exhaustive
      Src: /src/opendal/core/services/d1/src/config.rs:50,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 20
    argCount: 1
    argNames:
    - f
    argTypes:
    - '&mut std::fmt::Formatter<''_>'
    constantsTouched: []
    func_position:
      end: 56
      start: 49
    functionDepth: 5
    functionLinenumber: 49
    functionLinenumberEnd: 56
    functionName: D1Config::fmt
    functionSourceFile: /src/opendal/core/services/d1/src/config.rs
    functionUses: 0
    functionsReached:
    - field
    - Result::debug_struct
    - finish_non_exhaustive
    linkageType: ''
    returnType: std::fmt::Result
    signature: 'fn fmt(&self, f: &mut std::fmt::Formatter<''_>) -> std::fmt::Result'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::name
      Src: /src/opendal/core/services/d1/src/config.rs:63,1
    - Dst: Result::ok_or_else
      Src: /src/opendal/core/services/d1/src/config.rs:63,1
    - Dst: opendal_core::Error::new
      Src: /src/opendal/core/services/d1/src/config.rs:64,1
    - Dst: Self::with_context
      Src: /src/opendal/core/services/d1/src/config.rs:64,1
    - Dst: Result::root
      Src: /src/opendal/core/services/d1/src/config.rs:71,1
    - Dst: Result::ok_or_else
      Src: /src/opendal/core/services/d1/src/config.rs:71,1
    - Dst: opendal_core::Error::new
      Src: /src/opendal/core/services/d1/src/config.rs:72,1
    - Dst: Self::with_context
      Src: /src/opendal/core/services/d1/src/config.rs:72,1
    - Dst: splitn
      Src: /src/opendal/core/services/d1/src/config.rs:79,1
    - Dst: next
      Src: /src/opendal/core/services/d1/src/config.rs:80,1
    - Dst: filter
      Src: /src/opendal/core/services/d1/src/config.rs:80,1
    - Dst: is_empty
      Src: /src/opendal/core/services/d1/src/config.rs:80,1
    - Dst: ok_or_else
      Src: /src/opendal/core/services/d1/src/config.rs:80,1
    - Dst: opendal_core::Error::new
      Src: /src/opendal/core/services/d1/src/config.rs:81,1
    - Dst: Self::with_context
      Src: /src/opendal/core/services/d1/src/config.rs:81,1
    - Dst: Result::options
      Src: /src/opendal/core/services/d1/src/config.rs:88,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/d1/src/config.rs:88,1
    - Dst: Result::insert
      Src: /src/opendal/core/services/d1/src/config.rs:89,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/d1/src/config.rs:89,1
    - Dst: Self::to_string
      Src: /src/opendal/core/services/d1/src/config.rs:89,1
    - Dst: Result::insert
      Src: /src/opendal/core/services/d1/src/config.rs:90,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/d1/src/config.rs:90,1
    - Dst: Self::to_string
      Src: /src/opendal/core/services/d1/src/config.rs:90,1
    - Dst: next
      Src: /src/opendal/core/services/d1/src/config.rs:92,1
    - Dst: is_empty
      Src: /src/opendal/core/services/d1/src/config.rs:93,1
    - Dst: Result::insert
      Src: /src/opendal/core/services/d1/src/config.rs:95,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/d1/src/config.rs:95,1
    - Dst: to_string
      Src: /src/opendal/core/services/d1/src/config.rs:95,1
    - Dst: Self::from_iter
      Src: /src/opendal/core/services/d1/src/config.rs:98,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 68
    argCount: 1
    argNames:
    - uri
    argTypes:
    - '&opendal_core::OperatorUri'
    constantsTouched: []
    func_position:
      end: 99
      start: 62
    functionDepth: 31
    functionLinenumber: 62
    functionLinenumberEnd: 99
    functionName: D1Config::from_uri
    functionSourceFile: /src/opendal/core/services/d1/src/config.rs
    functionUses: 1
    functionsReached:
    - next
    - Result::clone
    - filter
    - to_string
    - Self::from_iter
    - Self::to_string
    - Result::insert
    - is_empty
    - Result::name
    - Result::ok_or_else
    - Result::root
    - '&str::to_string'
    - opendal_core::Error::new
    - splitn
    - Self::with_context
    - Result::options
    - ok_or_else
    linkageType: ''
    returnType: opendal_core::Result
    signature: 'fn from_uri(uri: &opendal_core::OperatorUri) -> opendal_core::Result<Self>'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 103
      start: 101
    functionDepth: 0
    functionLinenumber: 101
    functionLinenumberEnd: 103
    functionName: D1Config::into_builder
    functionSourceFile: /src/opendal/core/services/d1/src/config.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Self::Builder
    signature: fn into_builder(self) -> Self::Builder
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: OperatorUri::new
      Src: /src/opendal/core/services/d1/src/config.rs:115,1
    - Dst: Vec::<(String, String)>::new
      Src: /src/opendal/core/services/d1/src/config.rs:115,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/services/d1/src/config.rs:115,1
    - Dst: D1Config::from_uri
      Src: /src/opendal/core/services/d1/src/config.rs:117,1
    - Dst: opendal_core::Result::unwrap
      Src: /src/opendal/core/services/d1/src/config.rs:117,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 121
      start: 113
    functionDepth: 29
    functionLinenumber: 113
    functionLinenumberEnd: 121
    functionName: tests::from_uri_sets_account_database_and_root
    functionSourceFile: /src/opendal/core/services/d1/src/config.rs
    functionUses: 0
    functionsReached:
    - D1Config::from_uri
    - Vec::<(String, String)>::new
    - OperatorUri::new
    - Result::unwrap
    - opendal_core::Result::unwrap
    linkageType: ''
    returnType: void
    signature: fn from_uri_sets_account_database_and_root()
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 3
    argNames:
    - core
    - ctx
    - root
    argTypes:
    - Arc<D1Core>
    - OperationContext
    - String
    constantsTouched: []
    func_position:
      end: 34
      start: 32
    functionDepth: 0
    functionLinenumber: 32
    functionLinenumberEnd: 34
    functionName: D1Deleter::new
    functionSourceFile: /src/opendal/core/services/d1/src/deleter.rs
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(core: Arc<D1Core>, ctx: OperationContext, root: String)
      -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/d1/src/deleter.rs:39,1
    - Dst: delete
      Src: /src/opendal/core/services/d1/src/deleter.rs:40,1
    - Dst: Ok
      Src: /src/opendal/core/services/d1/src/deleter.rs:41,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 15
    argCount: 2
    argNames:
    - path
    argTypes:
    - String
    - OpDelete
    constantsTouched: []
    func_position:
      end: 42
      start: 38
    functionDepth: 32
    functionLinenumber: 38
    functionLinenumberEnd: 42
    functionName: D1Deleter::delete_once
    functionSourceFile: /src/opendal/core/services/d1/src/deleter.rs
    functionUses: 0
    functionsReached:
    - Ok
    - build_abs_path
    - delete
    linkageType: ''
    returnType: Result
    signature: 'async fn delete_once(&self, path: String, _: OpDelete) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: to_string
      Src: /src/opendal/core/services/d1/src/reader.rs:34,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 4
    argNames:
    - backend
    - ctx
    - path
    argTypes:
    - D1Backend
    - OperationContext
    - '&str'
    - OpRead
    constantsTouched: []
    func_position:
      end: 36
      start: 30
    functionDepth: 2
    functionLinenumber: 30
    functionLinenumberEnd: 36
    functionName: D1Reader::new
    functionSourceFile: /src/opendal/core/services/d1/src/reader.rs
    functionUses: 1
    functionsReached:
    - to_string
    linkageType: ''
    returnType: Self
    signature: 'pub(super) fn new(backend: D1Backend, ctx: OperationContext, path:
      &str, _: OpRead) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: as_str
      Src: /src/opendal/core/services/d1/src/reader.rs:42,1
    - Dst: build_abs_path
      Src: /src/opendal/core/services/d1/src/reader.rs:43,1
    - Dst: get
      Src: /src/opendal/core/services/d1/src/reader.rs:44,1
    - Dst: Err
      Src: /src/opendal/core/services/d1/src/reader.rs:47,1
    - Dst: Error::new
      Src: /src/opendal/core/services/d1/src/reader.rs:47,1
    - Dst: Result::slice
      Src: /src/opendal/core/services/d1/src/reader.rs:50,1
    - Dst: (Vec::to_content_range
      Src: /src/opendal/core/services/d1/src/reader.rs:50,1
    - Dst: Result::len
      Src: /src/opendal/core/services/d1/src/reader.rs:50,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/d1/src/reader.rs:51,1
    - Dst: Self::with_content_length
      Src: /src/opendal/core/services/d1/src/reader.rs:51,1
    - Dst: Result::len
      Src: /src/opendal/core/services/d1/src/reader.rs:51,1
    - Dst: Ok
      Src: /src/opendal/core/services/d1/src/reader.rs:52,1
    - Dst: RpRead::new
      Src: /src/opendal/core/services/d1/src/reader.rs:53,1
    - Dst: Box::new
      Src: /src/opendal/core/services/d1/src/reader.rs:54,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 39
    argCount: 1
    argNames:
    - range
    argTypes:
    - BytesRange
    constantsTouched: []
    func_position:
      end: 56
      start: 40
    functionDepth: 36
    functionLinenumber: 40
    functionLinenumberEnd: 56
    functionName: D1Reader::open
    functionSourceFile: /src/opendal/core/services/d1/src/reader.rs
    functionUses: 0
    functionsReached:
    - Metadata::new
    - get
    - Ok
    - Box::new
    - Self::with_content_length
    - build_abs_path
    - Error::new
    - Err
    - as_str
    - Result::slice
    - (Vec::to_content_range
    - Result::len
    - RpRead::new
    linkageType: ''
    returnType: Result
    signature: 'async fn open(&self, range: BytesRange) -> Result<(RpRead, Box<dyn
      oio::ReadStreamDyn>)>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::debug_struct
      Src: /src/opendal/core/services/d1/src/core.rs:42,1
    - Dst: field
      Src: /src/opendal/core/services/d1/src/core.rs:42,1
    - Dst: field
      Src: /src/opendal/core/services/d1/src/core.rs:42,1
    - Dst: field
      Src: /src/opendal/core/services/d1/src/core.rs:42,1
    - Dst: finish_non_exhaustive
      Src: /src/opendal/core/services/d1/src/core.rs:42,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 16
    argCount: 1
    argNames:
    - f
    argTypes:
    - '&mut std::fmt::Formatter<''_>'
    constantsTouched: []
    func_position:
      end: 47
      start: 41
    functionDepth: 5
    functionLinenumber: 41
    functionLinenumberEnd: 47
    functionName: D1Core::fmt
    functionSourceFile: /src/opendal/core/services/d1/src/core.rs
    functionUses: 0
    functionsReached:
    - field
    - Result::debug_struct
    - finish_non_exhaustive
    linkageType: ''
    returnType: std::fmt::Result
    signature: 'fn fmt(&self, f: &mut std::fmt::Formatter<''_>) -> std::fmt::Result'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Request::post
      Src: /src/opendal/core/services/d1/src/core.rs:66,1
    - Dst: http::header
      Src: /src/opendal/core/services/d1/src/core.rs:68,1
    - Dst: http::header
      Src: /src/opendal/core/services/d1/src/core.rs:70,1
    - Dst: serde_json::to_vec
      Src: /src/opendal/core/services/d1/src/core.rs:77,1
    - Dst: Vec::map_err
      Src: /src/opendal/core/services/d1/src/core.rs:77,1
    - Dst: extension
      Src: /src/opendal/core/services/d1/src/core.rs:78,1
    - Dst: extension
      Src: /src/opendal/core/services/d1/src/core.rs:78,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/d1/src/core.rs:79,1
    - Dst: body
      Src: /src/opendal/core/services/d1/src/core.rs:78,1
    - Dst: Buffer::from
      Src: /src/opendal/core/services/d1/src/core.rs:80,1
    - Dst: map_err
      Src: /src/opendal/core/services/d1/src/core.rs:78,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 29
    argCount: 4
    argNames:
    - sql
    - params
    - op
    - service_operation
    argTypes:
    - '&str'
    - Vec<Value>
    - Operation
    - '&''static str'
    constantsTouched: []
    func_position:
      end: 82
      start: 53
    functionDepth: 40
    functionLinenumber: 53
    functionLinenumberEnd: 82
    functionName: D1Core::create_d1_query_request
    functionSourceFile: /src/opendal/core/services/d1/src/core.rs
    functionUses: 4
    functionsReached:
    - map_err
    - extension
    - http::header
    - Request::post
    - body
    - Buffer::from
    - Vec::map_err
    - ServiceOperation
    - serde_json::to_vec
    linkageType: ''
    returnType: Result
    signature: 'fn create_d1_query_request(&self,sql: &str,params: Vec<Value>,op:
      Operation,service_operation: &''static str,) -> Result<Request<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: D1Core::create_d1_query_request
      Src: /src/opendal/core/services/d1/src/core.rs:95,1
    - Dst: Result::http_transport
      Src: /src/opendal/core/services/d1/src/core.rs:97,1
    - Dst: Self::send
      Src: /src/opendal/core/services/d1/src/core.rs:97,1
    - Dst: status
      Src: /src/opendal/core/services/d1/src/core.rs:98,1
    - Dst: into_body
      Src: /src/opendal/core/services/d1/src/core.rs:101,1
    - Dst: to_bytes
      Src: /src/opendal/core/services/d1/src/core.rs:102,1
    - Dst: D1Response::parse
      Src: /src/opendal/core/services/d1/src/core.rs:103,1
    - Dst: Ok
      Src: /src/opendal/core/services/d1/src/core.rs:104,1
    - Dst: get_result
      Src: /src/opendal/core/services/d1/src/core.rs:104,1
    - Dst: Err
      Src: /src/opendal/core/services/d1/src/core.rs:106,1
    - Dst: parse_error
      Src: /src/opendal/core/services/d1/src/core.rs:106,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 28
    argCount: 2
    argNames:
    - ctx
    - path
    argTypes:
    - '&OperationContext'
    - '&str'
    constantsTouched: []
    func_position:
      end: 108
      start: 84
    functionDepth: 41
    functionLinenumber: 84
    functionLinenumberEnd: 108
    functionName: D1Core::get
    functionSourceFile: /src/opendal/core/services/d1/src/core.rs
    functionUses: 0
    functionsReached:
    - status
    - Self::send
    - Ok
    - parse_error
    - into_body
    - Err
    - get_result
    - D1Core::create_d1_query_request
    - Result::http_transport
    - to_bytes
    - D1Response::parse
    linkageType: ''
    returnType: Result
    signature: 'pub async fn get(&self, ctx: &OperationContext, path: &str) -> Result<Option<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: D1Core::create_d1_query_request
      Src: /src/opendal/core/services/d1/src/core.rs:116,1
    - Dst: Result::http_transport
      Src: /src/opendal/core/services/d1/src/core.rs:118,1
    - Dst: Self::send
      Src: /src/opendal/core/services/d1/src/core.rs:118,1
    - Dst: status
      Src: /src/opendal/core/services/d1/src/core.rs:119,1
    - Dst: into_body
      Src: /src/opendal/core/services/d1/src/core.rs:122,1
    - Dst: to_bytes
      Src: /src/opendal/core/services/d1/src/core.rs:123,1
    - Dst: D1Response::parse
      Src: /src/opendal/core/services/d1/src/core.rs:124,1
    - Dst: get_usize_result
      Src: /src/opendal/core/services/d1/src/core.rs:125,1
    - Dst: Err
      Src: /src/opendal/core/services/d1/src/core.rs:127,1
    - Dst: parse_error
      Src: /src/opendal/core/services/d1/src/core.rs:127,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 25
    argCount: 2
    argNames:
    - ctx
    - path
    argTypes:
    - '&OperationContext'
    - '&str'
    constantsTouched: []
    func_position:
      end: 129
      start: 110
    functionDepth: 41
    functionLinenumber: 110
    functionLinenumberEnd: 129
    functionName: D1Core::get_length
    functionSourceFile: /src/opendal/core/services/d1/src/core.rs
    functionUses: 0
    functionsReached:
    - status
    - Self::send
    - parse_error
    - into_body
    - Err
    - D1Core::create_d1_query_request
    - get_usize_result
    - Result::http_transport
    - to_bytes
    - D1Response::parse
    linkageType: ''
    returnType: Result
    signature: 'pub async fn get_length(&self, ctx: &OperationContext, path: &str)
      -> Result<Option<usize>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: D1Core::create_d1_query_request
      Src: /src/opendal/core/services/d1/src/core.rs:143,1
    - Dst: Result::http_transport
      Src: /src/opendal/core/services/d1/src/core.rs:145,1
    - Dst: Self::send
      Src: /src/opendal/core/services/d1/src/core.rs:145,1
    - Dst: status
      Src: /src/opendal/core/services/d1/src/core.rs:146,1
    - Dst: Ok
      Src: /src/opendal/core/services/d1/src/core.rs:148,1
    - Dst: Err
      Src: /src/opendal/core/services/d1/src/core.rs:149,1
    - Dst: parse_error
      Src: /src/opendal/core/services/d1/src/core.rs:149,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 24
    argCount: 3
    argNames:
    - ctx
    - path
    - value
    argTypes:
    - '&OperationContext'
    - '&str'
    - Buffer
    constantsTouched: []
    func_position:
      end: 151
      start: 131
    functionDepth: 41
    functionLinenumber: 131
    functionLinenumberEnd: 151
    functionName: D1Core::set
    functionSourceFile: /src/opendal/core/services/d1/src/core.rs
    functionUses: 0
    functionsReached:
    - status
    - Ok
    - Self::send
    - parse_error
    - Err
    - D1Core::create_d1_query_request
    - Result::http_transport
    linkageType: ''
    returnType: Result
    signature: 'pub async fn set(&self, ctx: &OperationContext, path: &str, value:
      Buffer) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: D1Core::create_d1_query_request
      Src: /src/opendal/core/services/d1/src/core.rs:159,1
    - Dst: Result::http_transport
      Src: /src/opendal/core/services/d1/src/core.rs:161,1
    - Dst: Self::send
      Src: /src/opendal/core/services/d1/src/core.rs:161,1
    - Dst: status
      Src: /src/opendal/core/services/d1/src/core.rs:162,1
    - Dst: Ok
      Src: /src/opendal/core/services/d1/src/core.rs:164,1
    - Dst: Err
      Src: /src/opendal/core/services/d1/src/core.rs:165,1
    - Dst: parse_error
      Src: /src/opendal/core/services/d1/src/core.rs:165,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 2
    argNames:
    - ctx
    - path
    argTypes:
    - '&OperationContext'
    - '&str'
    constantsTouched: []
    func_position:
      end: 167
      start: 153
    functionDepth: 41
    functionLinenumber: 153
    functionLinenumberEnd: 167
    functionName: D1Core::delete
    functionSourceFile: /src/opendal/core/services/d1/src/core.rs
    functionUses: 0
    functionsReached:
    - status
    - Ok
    - Self::send
    - parse_error
    - Err
    - D1Core::create_d1_query_request
    - Result::http_transport
    linkageType: ''
    returnType: Result
    signature: 'pub async fn delete(&self, ctx: &OperationContext, path: &str) ->
      Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: is_empty
      Src: /src/opendal/core/services/d1/src/core.rs:218,1
    - Dst: Some
      Src: /src/opendal/core/services/d1/src/core.rs:224,1
    - Dst: Some
      Src: /src/opendal/core/services/d1/src/core.rs:226,1
    - Dst: Some
      Src: /src/opendal/core/services/d1/src/core.rs:228,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 16
    argCount: 1
    argNames:
    - errors
    argTypes:
    - Vec<D1Error>
    constantsTouched: []
    func_position:
      end: 231
      start: 217
    functionDepth: 4
    functionLinenumber: 217
    functionLinenumberEnd: 231
    functionName: error::parse_d1_error_code
    functionSourceFile: /src/opendal/core/services/d1/src/core.rs
    functionUses: 0
    functionsReached:
    - Some
    - is_empty
    linkageType: ''
    returnType: Option
    signature: 'pub fn parse_d1_error_code(errors: Vec<D1Error>) -> Option<(ErrorKind,
      bool)>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: serde_json::from_slice
      Src: /src/opendal/core/services/d1/src/model.rs:38,1
    - Dst: map_err
      Src: /src/opendal/core/services/d1/src/model.rs:38,1
    - Dst: Error::new
      Src: /src/opendal/core/services/d1/src/model.rs:39,1
    - Dst: Err
      Src: /src/opendal/core/services/d1/src/model.rs:46,1
    - Dst: Error::new
      Src: /src/opendal/core/services/d1/src/model.rs:46,1
    - Dst: String::from_utf8_lossy
      Src: /src/opendal/core/services/d1/src/model.rs:48,1
    - Dst: Ok
      Src: /src/opendal/core/services/d1/src/model.rs:51,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 16
    argCount: 1
    argNames:
    - bs
    argTypes:
    - '&Bytes'
    constantsTouched: []
    func_position:
      end: 52
      start: 37
    functionDepth: 36
    functionLinenumber: 37
    functionLinenumberEnd: 52
    functionName: D1Response::parse
    functionSourceFile: /src/opendal/core/services/d1/src/model.rs
    functionUses: 2
    functionsReached:
    - map_err
    - Ok
    - serde_json::from_slice
    - Err
    - Error::new
    - String::from_utf8_lossy
    linkageType: ''
    returnType: Result
    signature: 'pub fn parse(bs: &Bytes) -> Result<D1Response, Error>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: is_empty
      Src: /src/opendal/core/services/d1/src/model.rs:55,1
    - Dst: is_empty
      Src: /src/opendal/core/services/d1/src/model.rs:55,1
    - Dst: bool::get
      Src: /src/opendal/core/services/d1/src/model.rs:59,1
    - Dst: Vec::new
      Src: /src/opendal/core/services/d1/src/model.rs:63,1
    - Dst: Result::push
      Src: /src/opendal/core/services/d1/src/model.rs:66,1
    - Dst: Result::as_u64
      Src: /src/opendal/core/services/d1/src/model.rs:66,1
    - Dst: unwrap
      Src: /src/opendal/core/services/d1/src/model.rs:66,1
    - Dst: Some
      Src: /src/opendal/core/services/d1/src/model.rs:69,1
    - Dst: Buffer::from
      Src: /src/opendal/core/services/d1/src/model.rs:69,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 37
    argCount: 1
    argNames:
    - key
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 73
      start: 54
    functionDepth: 35
    functionLinenumber: 54
    functionLinenumberEnd: 73
    functionName: D1Response::get_result
    functionSourceFile: /src/opendal/core/services/d1/src/model.rs
    functionUses: 0
    functionsReached:
    - Result::as_u64
    - bool::get
    - unwrap
    - is_empty
    - Some
    - Result::push
    - Vec::new
    - Buffer::from
    linkageType: ''
    returnType: Option
    signature: 'pub fn get_result(&self, key: &str) -> Option<Buffer>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: is_empty
      Src: /src/opendal/core/services/d1/src/model.rs:76,1
    - Dst: is_empty
      Src: /src/opendal/core/services/d1/src/model.rs:76,1
    - Dst: Ok
      Src: /src/opendal/core/services/d1/src/model.rs:77,1
    - Dst: bool::get
      Src: /src/opendal/core/services/d1/src/model.rs:80,1
    - Dst: Ok
      Src: /src/opendal/core/services/d1/src/model.rs:81,1
    - Dst: Result::as_u64
      Src: /src/opendal/core/services/d1/src/model.rs:86,1
    - Dst: ok_or_else
      Src: /src/opendal/core/services/d1/src/model.rs:86,1
    - Dst: Error::new
      Src: /src/opendal/core/services/d1/src/model.rs:87,1
    - Dst: Vec::try_into
      Src: /src/opendal/core/services/d1/src/model.rs:92,1
    - Dst: map
      Src: /src/opendal/core/services/d1/src/model.rs:92,1
    - Dst: map_err
      Src: /src/opendal/core/services/d1/src/model.rs:92,1
    - Dst: Error::new
      Src: /src/opendal/core/services/d1/src/model.rs:93,1
    - Dst: Self::set_source
      Src: /src/opendal/core/services/d1/src/model.rs:93,1
    - Dst: Err
      Src: /src/opendal/core/services/d1/src/model.rs:100,1
    - Dst: Error::new
      Src: /src/opendal/core/services/d1/src/model.rs:100,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 45
    argCount: 1
    argNames:
    - key
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 105
      start: 75
    functionDepth: 36
    functionLinenumber: 75
    functionLinenumberEnd: 105
    functionName: D1Response::get_usize_result
    functionSourceFile: /src/opendal/core/services/d1/src/model.rs
    functionUses: 0
    functionsReached:
    - Vec::try_into
    - map_err
    - Result::as_u64
    - Ok
    - bool::get
    - is_empty
    - Error::new
    - map
    - Err
    - Self::set_source
    - ok_or_else
    linkageType: ''
    returnType: Result
    signature: 'pub fn get_usize_result(&self, key: &str) -> Result<Option<usize>,
      Error>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: serde_json::from_str
      Src: /src/opendal/core/services/d1/src/model.rs:153,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/services/d1/src/model.rs:153,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 155
      start: 124
    functionDepth: 34
    functionLinenumber: 124
    functionLinenumberEnd: 155
    functionName: test::test_deserialize_get_object_json_response
    functionSourceFile: /src/opendal/core/services/d1/src/model.rs
    functionUses: 0
    functionsReached:
    - Result::unwrap
    - serde_json::from_str
    linkageType: ''
    returnType: void
    signature: fn test_deserialize_get_object_json_response()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: serde_json::from_str
      Src: /src/opendal/core/services/d1/src/model.rs:177,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/services/d1/src/model.rs:177,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 183
      start: 158
    functionDepth: 34
    functionLinenumber: 158
    functionLinenumberEnd: 183
    functionName: test::test_get_usize_result
    functionSourceFile: /src/opendal/core/services/d1/src/model.rs
    functionUses: 0
    functionsReached:
    - Result::unwrap
    - serde_json::from_str
    linkageType: ''
    returnType: void
    signature: fn test_get_usize_result()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: oio::QueueBuf::new
      Src: /src/opendal/core/services/d1/src/writer.rs:37,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - core
    - ctx
    - path
    argTypes:
    - Arc<D1Core>
    - OperationContext
    - String
    constantsTouched: []
    func_position:
      end: 39
      start: 32
    functionDepth: 4
    functionLinenumber: 32
    functionLinenumberEnd: 39
    functionName: D1Writer::new
    functionSourceFile: /src/opendal/core/services/d1/src/writer.rs
    functionUses: 1
    functionsReached:
    - oio::QueueBuf::new
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(core: Arc<D1Core>, ctx: OperationContext, path: String)
      -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: push
      Src: /src/opendal/core/services/d1/src/writer.rs:44,1
    - Dst: Ok
      Src: /src/opendal/core/services/d1/src/writer.rs:45,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - bs
    argTypes:
    - Buffer
    constantsTouched: []
    func_position:
      end: 46
      start: 43
    functionDepth: 5
    functionLinenumber: 43
    functionLinenumberEnd: 46
    functionName: D1Writer::write
    functionSourceFile: /src/opendal/core/services/d1/src/writer.rs
    functionUses: 0
    functionsReached:
    - Ok
    - push
    linkageType: ''
    returnType: Result
    signature: 'async fn write(&mut self, bs: Buffer) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: clone
      Src: /src/opendal/core/services/d1/src/writer.rs:49,1
    - Dst: collect
      Src: /src/opendal/core/services/d1/src/writer.rs:49,1
    - Dst: io::Result::len
      Src: /src/opendal/core/services/d1/src/writer.rs:50,1
    - Dst: set
      Src: /src/opendal/core/services/d1/src/writer.rs:51,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/d1/src/writer.rs:53,1
    - Dst: EntryMode::from_path
      Src: /src/opendal/core/services/d1/src/writer.rs:53,1
    - Dst: Self::with_content_length
      Src: /src/opendal/core/services/d1/src/writer.rs:53,1
    - Dst: Ok
      Src: /src/opendal/core/services/d1/src/writer.rs:54,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 25
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 55
      start: 48
    functionDepth: 36
    functionLinenumber: 48
    functionLinenumberEnd: 55
    functionName: D1Writer::close
    functionSourceFile: /src/opendal/core/services/d1/src/writer.rs
    functionUses: 0
    functionsReached:
    - collect
    - Metadata::new
    - Ok
    - io::Result::len
    - set
    - Self::with_content_length
    - clone
    - EntryMode::from_path
    linkageType: ''
    returnType: Result
    signature: async fn close(&mut self) -> Result<Metadata>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: clear
      Src: /src/opendal/core/services/d1/src/writer.rs:58,1
    - Dst: Ok
      Src: /src/opendal/core/services/d1/src/writer.rs:59,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 60
      start: 57
    functionDepth: 2
    functionLinenumber: 57
    functionLinenumberEnd: 60
    functionName: D1Writer::abort
    functionSourceFile: /src/opendal/core/services/d1/src/writer.rs
    functionUses: 0
    functionsReached:
    - clear
    - Ok
    linkageType: ''
    returnType: Result
    signature: async fn abort(&mut self) -> Result<()>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: register::<D1>
      Src: /src/opendal/core/services/d1/src/lib.rs:38,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - registry
    argTypes:
    - '&opendal_core::OperatorRegistry'
    constantsTouched: []
    func_position:
      end: 39
      start: 37
    functionDepth: 0
    functionLinenumber: 37
    functionLinenumberEnd: 39
    functionName: register_d1_service
    functionSourceFile: /src/opendal/core/services/d1/src/lib.rs
    functionUses: 1
    functionsReached:
    - register::<D1>
    linkageType: ''
    returnType: void
    signature: 'pub fn register_d1_service(registry: &opendal_core::OperatorRegistry)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::debug_struct
      Src: /src/opendal/core/services/d1/src/backend.rs:38,1
    - Dst: field
      Src: /src/opendal/core/services/d1/src/backend.rs:38,1
    - Dst: finish_non_exhaustive
      Src: /src/opendal/core/services/d1/src/backend.rs:38,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - f
    argTypes:
    - '&mut std::fmt::Formatter<''_>'
    constantsTouched: []
    func_position:
      end: 41
      start: 37
    functionDepth: 5
    functionLinenumber: 37
    functionLinenumberEnd: 41
    functionName: D1Builder::fmt
    functionSourceFile: /src/opendal/core/services/d1/src/backend.rs
    functionUses: 0
    functionsReached:
    - field
    - Result::debug_struct
    - finish_non_exhaustive
    linkageType: ''
    returnType: std::fmt::Result
    signature: 'fn fmt(&self, f: &mut std::fmt::Formatter<''_>) -> std::fmt::Result'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self::is_empty
      Src: /src/opendal/core/services/d1/src/backend.rs:49,1
    - Dst: Some
      Src: /src/opendal/core/services/d1/src/backend.rs:50,1
    - Dst: Self::to_string
      Src: /src/opendal/core/services/d1/src/backend.rs:50,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 1
    argNames:
    - token
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 53
      start: 48
    functionDepth: 4
    functionLinenumber: 48
    functionLinenumberEnd: 53
    functionName: D1Builder::token
    functionSourceFile: /src/opendal/core/services/d1/src/backend.rs
    functionUses: 0
    functionsReached:
    - Self::is_empty
    - Self::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn token(mut self, token: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self::is_empty
      Src: /src/opendal/core/services/d1/src/backend.rs:60,1
    - Dst: Some
      Src: /src/opendal/core/services/d1/src/backend.rs:61,1
    - Dst: Self::to_string
      Src: /src/opendal/core/services/d1/src/backend.rs:61,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 1
    argNames:
    - account_id
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 64
      start: 59
    functionDepth: 4
    functionLinenumber: 59
    functionLinenumberEnd: 64
    functionName: D1Builder::account_id
    functionSourceFile: /src/opendal/core/services/d1/src/backend.rs
    functionUses: 0
    functionsReached:
    - Self::is_empty
    - Self::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn account_id(mut self, account_id: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self::is_empty
      Src: /src/opendal/core/services/d1/src/backend.rs:71,1
    - Dst: Some
      Src: /src/opendal/core/services/d1/src/backend.rs:72,1
    - Dst: Self::to_string
      Src: /src/opendal/core/services/d1/src/backend.rs:72,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 1
    argNames:
    - database_id
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 75
      start: 70
    functionDepth: 4
    functionLinenumber: 70
    functionLinenumberEnd: 75
    functionName: D1Builder::database_id
    functionSourceFile: /src/opendal/core/services/d1/src/backend.rs
    functionUses: 0
    functionsReached:
    - Self::is_empty
    - Self::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn database_id(mut self, database_id: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::is_empty
      Src: /src/opendal/core/services/d1/src/backend.rs:81,1
    - Dst: Some
      Src: /src/opendal/core/services/d1/src/backend.rs:84,1
    - Dst: Result::to_string
      Src: /src/opendal/core/services/d1/src/backend.rs:84,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - root
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 88
      start: 80
    functionDepth: 4
    functionLinenumber: 80
    functionLinenumberEnd: 88
    functionName: D1Builder::root
    functionSourceFile: /src/opendal/core/services/d1/src/backend.rs
    functionUses: 0
    functionsReached:
    - Result::is_empty
    - Result::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn root(mut self, root: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self::is_empty
      Src: /src/opendal/core/services/d1/src/backend.rs:94,1
    - Dst: Some
      Src: /src/opendal/core/services/d1/src/backend.rs:95,1
    - Dst: Self::to_owned
      Src: /src/opendal/core/services/d1/src/backend.rs:95,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 1
    argNames:
    - table
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 98
      start: 93
    functionDepth: 4
    functionLinenumber: 93
    functionLinenumberEnd: 98
    functionName: D1Builder::table
    functionSourceFile: /src/opendal/core/services/d1/src/backend.rs
    functionUses: 0
    functionsReached:
    - Self::is_empty
    - Self::to_owned
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn table(mut self, table: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self::is_empty
      Src: /src/opendal/core/services/d1/src/backend.rs:104,1
    - Dst: Some
      Src: /src/opendal/core/services/d1/src/backend.rs:105,1
    - Dst: Self::to_string
      Src: /src/opendal/core/services/d1/src/backend.rs:105,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 1
    argNames:
    - key_field
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 108
      start: 103
    functionDepth: 4
    functionLinenumber: 103
    functionLinenumberEnd: 108
    functionName: D1Builder::key_field
    functionSourceFile: /src/opendal/core/services/d1/src/backend.rs
    functionUses: 0
    functionsReached:
    - Self::is_empty
    - Self::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn key_field(mut self, key_field: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self::is_empty
      Src: /src/opendal/core/services/d1/src/backend.rs:114,1
    - Dst: Some
      Src: /src/opendal/core/services/d1/src/backend.rs:115,1
    - Dst: Self::to_string
      Src: /src/opendal/core/services/d1/src/backend.rs:115,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 1
    argNames:
    - value_field
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 118
      start: 113
    functionDepth: 4
    functionLinenumber: 113
    functionLinenumberEnd: 118
    functionName: D1Builder::value_field
    functionSourceFile: /src/opendal/core/services/d1/src/backend.rs
    functionUses: 0
    functionsReached:
    - Self::is_empty
    - Self::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn value_field(mut self, value_field: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Some
      Src: /src/opendal/core/services/d1/src/backend.rs:129,1
    - Dst: format_authorization_by_bearer
      Src: /src/opendal/core/services/d1/src/backend.rs:129,1
    - Dst: Err
      Src: /src/opendal/core/services/d1/src/backend.rs:133,1
    - Dst: Error::new
      Src: /src/opendal/core/services/d1/src/backend.rs:133,1
    - Dst: clone
      Src: /src/opendal/core/services/d1/src/backend.rs:139,1
    - Dst: Err
      Src: /src/opendal/core/services/d1/src/backend.rs:140,1
    - Dst: Error::new
      Src: /src/opendal/core/services/d1/src/backend.rs:140,1
    - Dst: clone
      Src: /src/opendal/core/services/d1/src/backend.rs:146,1
    - Dst: Err
      Src: /src/opendal/core/services/d1/src/backend.rs:147,1
    - Dst: Error::new
      Src: /src/opendal/core/services/d1/src/backend.rs:147,1
    - Dst: clone
      Src: /src/opendal/core/services/d1/src/backend.rs:150,1
    - Dst: unwrap_or_else
      Src: /src/opendal/core/services/d1/src/backend.rs:150,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/d1/src/backend.rs:153,1
    - Dst: clone
      Src: /src/opendal/core/services/d1/src/backend.rs:155,1
    - Dst: unwrap_or_else
      Src: /src/opendal/core/services/d1/src/backend.rs:155,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/d1/src/backend.rs:158,1
    - Dst: normalize_root
      Src: /src/opendal/core/services/d1/src/backend.rs:160,1
    - Dst: clone
      Src: /src/opendal/core/services/d1/src/backend.rs:161,1
    - Dst: unwrap_or_else
      Src: /src/opendal/core/services/d1/src/backend.rs:161,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/d1/src/backend.rs:164,1
    - Dst: as_str
      Src: /src/opendal/core/services/d1/src/backend.rs:161,1
    - Dst: Ok
      Src: /src/opendal/core/services/d1/src/backend.rs:167,1
    - Dst: D1Backend::new
      Src: /src/opendal/core/services/d1/src/backend.rs:167,1
    - Dst: Self::with_normalized_root
      Src: /src/opendal/core/services/d1/src/backend.rs:167,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 60
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 176
      start: 124
    functionDepth: 37
    functionLinenumber: 124
    functionLinenumberEnd: 176
    functionName: D1Builder::build
    functionSourceFile: /src/opendal/core/services/d1/src/backend.rs
    functionUses: 0
    functionsReached:
    - format_authorization_by_bearer
    - D1Backend::new
    - Ok
    - clone
    - normalize_root
    - Err
    - Error::new
    - Some
    - as_str
    - '&str::to_string'
    - Self::with_normalized_root
    - unwrap_or_else
    linkageType: ''
    returnType: Result
    signature: fn build(self) -> Result<impl Service>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: ServiceInfo::new
      Src: /src/opendal/core/services/d1/src/backend.rs:190,1
    - Dst: Some
      Src: /src/opendal/core/services/d1/src/backend.rs:198,1
    - Dst: Default::default
      Src: /src/opendal/core/services/d1/src/backend.rs:201,1
    - Dst: Arc::new
      Src: /src/opendal/core/services/d1/src/backend.rs:205,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/d1/src/backend.rs:206,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 1
    argNames:
    - core
    argTypes:
    - D1Core
    constantsTouched: []
    func_position:
      end: 210
      start: 189
    functionDepth: 33
    functionLinenumber: 189
    functionLinenumberEnd: 210
    functionName: D1Backend::new
    functionSourceFile: /src/opendal/core/services/d1/src/backend.rs
    functionUses: 1
    functionsReached:
    - ServiceInfo::new
    - Arc::new
    - Default::default
    - Some
    - '&str::to_string'
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(core: D1Core) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: with_root
      Src: /src/opendal/core/services/d1/src/backend.rs:213,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 1
    argNames:
    - root
    argTypes:
    - String
    constantsTouched: []
    func_position:
      end: 216
      start: 212
    functionDepth: 33
    functionLinenumber: 212
    functionLinenumberEnd: 216
    functionName: D1Backend::with_normalized_root
    functionSourceFile: /src/opendal/core/services/d1/src/backend.rs
    functionUses: 0
    functionsReached:
    - with_root
    linkageType: ''
    returnType: Self
    signature: 'fn with_normalized_root(mut self, root: String) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: clone
      Src: /src/opendal/core/services/d1/src/backend.rs:227,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 228
      start: 226
    functionDepth: 2
    functionLinenumber: 226
    functionLinenumberEnd: 228
    functionName: D1Backend::info
    functionSourceFile: /src/opendal/core/services/d1/src/backend.rs
    functionUses: 0
    functionsReached:
    - clone
    linkageType: ''
    returnType: ServiceInfo
    signature: fn info(&self) -> ServiceInfo
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 232
      start: 230
    functionDepth: 0
    functionLinenumber: 230
    functionLinenumberEnd: 232
    functionName: D1Backend::capability
    functionSourceFile: /src/opendal/core/services/d1/src/backend.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Capability
    signature: fn capability(&self) -> Capability
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/core/services/d1/src/backend.rs:240,1
    - Dst: Error::new
      Src: /src/opendal/core/services/d1/src/backend.rs:240,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - _ctx
    - _path
    - _args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpCreateDir
    constantsTouched: []
    func_position:
      end: 244
      start: 234
    functionDepth: 36
    functionLinenumber: 234
    functionLinenumberEnd: 244
    functionName: D1Backend::create_dir
    functionSourceFile: /src/opendal/core/services/d1/src/backend.rs
    functionUses: 0
    functionsReached:
    - Error::new
    - Err
    linkageType: ''
    returnType: Result
    signature: 'async fn create_dir(&self,_ctx: &OperationContext,_path: &str,_args:
      OpCreateDir,) -> Result<RpCreateDir>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/d1/src/backend.rs:247,1
    - Dst: build_abs_path
      Src: /src/opendal/core/services/d1/src/backend.rs:249,1
    - Dst: Ok
      Src: /src/opendal/core/services/d1/src/backend.rs:250,1
    - Dst: RpStat::new
      Src: /src/opendal/core/services/d1/src/backend.rs:250,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/d1/src/backend.rs:250,1
    - Dst: get_length
      Src: /src/opendal/core/services/d1/src/backend.rs:252,1
    - Dst: Ok
      Src: /src/opendal/core/services/d1/src/backend.rs:253,1
    - Dst: RpStat::new
      Src: /src/opendal/core/services/d1/src/backend.rs:253,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/d1/src/backend.rs:254,1
    - Dst: Self::with_content_length
      Src: /src/opendal/core/services/d1/src/backend.rs:254,1
    - Dst: Err
      Src: /src/opendal/core/services/d1/src/backend.rs:256,1
    - Dst: Error::new
      Src: /src/opendal/core/services/d1/src/backend.rs:256,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 28
    argCount: 3
    argNames:
    - ctx
    - path
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpStat
    constantsTouched: []
    func_position:
      end: 259
      start: 246
    functionDepth: 35
    functionLinenumber: 246
    functionLinenumberEnd: 259
    functionName: D1Backend::stat
    functionSourceFile: /src/opendal/core/services/d1/src/backend.rs
    functionUses: 0
    functionsReached:
    - Metadata::new
    - Ok
    - Self::with_content_length
    - get_length
    - RpStat::new
    - build_abs_path
    - Err
    - Error::new
    linkageType: ''
    returnType: Result
    signature: 'async fn stat(&self, ctx: &OperationContext, path: &str, _: OpStat)
      -> Result<RpStat>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/core/services/d1/src/backend.rs:262,1
    - Dst: oio::StreamReader::new
      Src: /src/opendal/core/services/d1/src/backend.rs:262,1
    - Dst: D1Reader::new
      Src: /src/opendal/core/services/d1/src/backend.rs:262,1
    - Dst: D1Backend::clone
      Src: /src/opendal/core/services/d1/src/backend.rs:263,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/d1/src/backend.rs:264,1
    - Dst: Ok
      Src: /src/opendal/core/services/d1/src/backend.rs:270,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpRead
    constantsTouched: []
    func_position:
      end: 271
      start: 260
    functionDepth: 3
    functionLinenumber: 260
    functionLinenumberEnd: 271
    functionName: D1Backend::read
    functionSourceFile: /src/opendal/core/services/d1/src/backend.rs
    functionUses: 0
    functionsReached:
    - Result::clone
    - D1Backend::clone
    - Ok
    - oio::StreamReader::new
    - D1Reader::new
    linkageType: ''
    returnType: Result
    signature: 'fn read(&self, ctx: &OperationContext, path: &str, args: OpRead) ->
      Result<Self::Reader>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/d1/src/backend.rs:275,1
    - Dst: Ok
      Src: /src/opendal/core/services/d1/src/backend.rs:276,1
    - Dst: D1Writer::new
      Src: /src/opendal/core/services/d1/src/backend.rs:276,1
    - Dst: clone
      Src: /src/opendal/core/services/d1/src/backend.rs:276,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/d1/src/backend.rs:276,1
    - Dst: Ok
      Src: /src/opendal/core/services/d1/src/backend.rs:279,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 3
    argNames:
    - ctx
    - path
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpWrite
    constantsTouched: []
    func_position:
      end: 280
      start: 273
    functionDepth: 5
    functionLinenumber: 273
    functionLinenumberEnd: 280
    functionName: D1Backend::write
    functionSourceFile: /src/opendal/core/services/d1/src/backend.rs
    functionUses: 0
    functionsReached:
    - Result::clone
    - Ok
    - clone
    - build_abs_path
    - D1Writer::new
    linkageType: ''
    returnType: Result
    signature: 'fn write(&self, ctx: &OperationContext, path: &str, _: OpWrite) ->
      Result<Self::Writer>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/core/services/d1/src/backend.rs:284,1
    - Dst: oio::OneShotDeleter::new
      Src: /src/opendal/core/services/d1/src/backend.rs:284,1
    - Dst: D1Deleter::new
      Src: /src/opendal/core/services/d1/src/backend.rs:284,1
    - Dst: clone
      Src: /src/opendal/core/services/d1/src/backend.rs:285,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/d1/src/backend.rs:286,1
    - Dst: clone
      Src: /src/opendal/core/services/d1/src/backend.rs:287,1
    - Dst: Ok
      Src: /src/opendal/core/services/d1/src/backend.rs:291,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - '&OperationContext'
    constantsTouched: []
    func_position:
      end: 292
      start: 282
    functionDepth: 2
    functionLinenumber: 282
    functionLinenumberEnd: 292
    functionName: D1Backend::delete
    functionSourceFile: /src/opendal/core/services/d1/src/backend.rs
    functionUses: 0
    functionsReached:
    - oio::OneShotDeleter::new
    - Result::clone
    - Ok
    - clone
    - D1Deleter::new
    linkageType: ''
    returnType: Result
    signature: 'fn delete(&self, ctx: &OperationContext) -> Result<Self::Deleter>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/core/services/d1/src/backend.rs:295,1
    - Dst: Error::new
      Src: /src/opendal/core/services/d1/src/backend.rs:295,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - _ctx
    - _path
    - _args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpList
    constantsTouched: []
    func_position:
      end: 299
      start: 294
    functionDepth: 36
    functionLinenumber: 294
    functionLinenumberEnd: 299
    functionName: D1Backend::list
    functionSourceFile: /src/opendal/core/services/d1/src/backend.rs
    functionUses: 0
    functionsReached:
    - Error::new
    - Err
    linkageType: ''
    returnType: Result
    signature: 'fn list(&self, _ctx: &OperationContext, _path: &str, _args: OpList)
      -> Result<Self::Lister>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/core/services/d1/src/backend.rs:309,1
    - Dst: Error::new
      Src: /src/opendal/core/services/d1/src/backend.rs:309,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 5
    argNames:
    - _ctx
    - _from
    - _to
    - _args
    - _opts
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    - OpCopy
    - OpCopier
    constantsTouched: []
    func_position:
      end: 313
      start: 301
    functionDepth: 36
    functionLinenumber: 301
    functionLinenumberEnd: 313
    functionName: D1Backend::copy
    functionSourceFile: /src/opendal/core/services/d1/src/backend.rs
    functionUses: 0
    functionsReached:
    - Error::new
    - Err
    linkageType: ''
    returnType: Result
    signature: 'fn copy(&self,_ctx: &OperationContext,_from: &str,_to: &str,_args:
      OpCopy,_opts: OpCopier,) -> Result<Self::Copier>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/core/services/d1/src/backend.rs:322,1
    - Dst: Error::new
      Src: /src/opendal/core/services/d1/src/backend.rs:322,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - _ctx
    - _from
    - _to
    - _args
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    - OpRename
    constantsTouched: []
    func_position:
      end: 326
      start: 315
    functionDepth: 36
    functionLinenumber: 315
    functionLinenumberEnd: 326
    functionName: D1Backend::rename
    functionSourceFile: /src/opendal/core/services/d1/src/backend.rs
    functionUses: 0
    functionsReached:
    - Error::new
    - Err
    linkageType: ''
    returnType: Result
    signature: 'async fn rename(&self,_ctx: &OperationContext,_from: &str,_to: &str,_args:
      OpRename,) -> Result<RpRename>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/core/services/d1/src/backend.rs:334,1
    - Dst: Error::new
      Src: /src/opendal/core/services/d1/src/backend.rs:334,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - _ctx
    - _path
    - _args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpPresign
    constantsTouched: []
    func_position:
      end: 338
      start: 328
    functionDepth: 36
    functionLinenumber: 328
    functionLinenumberEnd: 338
    functionName: D1Backend::presign
    functionSourceFile: /src/opendal/core/services/d1/src/backend.rs
    functionUses: 0
    functionsReached:
    - Error::new
    - Err
    linkageType: ''
    returnType: Result
    signature: 'async fn presign(&self,_ctx: &OperationContext,_path: &str,_args:
      OpPresign,) -> Result<RpPresign>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::debug_struct
      Src: /src/opendal/core/services/azdls/src/config.rs:70,1
    - Dst: field
      Src: /src/opendal/core/services/azdls/src/config.rs:70,1
    - Dst: field
      Src: /src/opendal/core/services/azdls/src/config.rs:70,1
    - Dst: field
      Src: /src/opendal/core/services/azdls/src/config.rs:70,1
    - Dst: finish_non_exhaustive
      Src: /src/opendal/core/services/azdls/src/config.rs:70,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 16
    argCount: 1
    argNames:
    - f
    argTypes:
    - '&mut std::fmt::Formatter<''_>'
    constantsTouched: []
    func_position:
      end: 75
      start: 69
    functionDepth: 5
    functionLinenumber: 69
    functionLinenumberEnd: 75
    functionName: AzdlsConfig::fmt
    functionSourceFile: /src/opendal/core/services/azdls/src/config.rs
    functionUses: 0
    functionsReached:
    - field
    - Result::debug_struct
    - finish_non_exhaustive
    linkageType: ''
    returnType: std::fmt::Result
    signature: 'fn fmt(&self, f: &mut std::fmt::Formatter<''_>) -> std::fmt::Result'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::options
      Src: /src/opendal/core/services/azdls/src/config.rs:82,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/azdls/src/config.rs:82,1
    - Dst: Result::authority
      Src: /src/opendal/core/services/azdls/src/config.rs:83,1
    - Dst: Result::insert
      Src: /src/opendal/core/services/azdls/src/config.rs:84,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/azdls/src/config.rs:84,1
    - Dst: Result::name
      Src: /src/opendal/core/services/azdls/src/config.rs:87,1
    - Dst: Result::and_then
      Src: /src/opendal/core/services/azdls/src/config.rs:87,1
    - Dst: Self::split
      Src: /src/opendal/core/services/azdls/src/config.rs:89,1
    - Dst: next
      Src: /src/opendal/core/services/azdls/src/config.rs:89,1
    - Dst: filter
      Src: /src/opendal/core/services/azdls/src/config.rs:87,1
    - Dst: is_empty
      Src: /src/opendal/core/services/azdls/src/config.rs:90,1
    - Dst: Result::entry
      Src: /src/opendal/core/services/azdls/src/config.rs:92,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/azdls/src/config.rs:92,1
    - Dst: crate::Entry::or_insert_with
      Src: /src/opendal/core/services/azdls/src/config.rs:92,1
    - Dst: to_string
      Src: /src/opendal/core/services/azdls/src/config.rs:93,1
    - Dst: Result::root
      Src: /src/opendal/core/services/azdls/src/config.rs:96,1
    - Dst: Result::split_once
      Src: /src/opendal/core/services/azdls/src/config.rs:97,1
    - Dst: Self::is_empty
      Src: /src/opendal/core/services/azdls/src/config.rs:98,1
    - Dst: Err
      Src: /src/opendal/core/services/azdls/src/config.rs:99,1
    - Dst: opendal_core::Error::new
      Src: /src/opendal/core/services/azdls/src/config.rs:99,1
    - Dst: Self::with_context
      Src: /src/opendal/core/services/azdls/src/config.rs:99,1
    - Dst: Result::insert
      Src: /src/opendal/core/services/azdls/src/config.rs:105,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/azdls/src/config.rs:105,1
    - Dst: Self::to_string
      Src: /src/opendal/core/services/azdls/src/config.rs:105,1
    - Dst: is_empty
      Src: /src/opendal/core/services/azdls/src/config.rs:106,1
    - Dst: Result::insert
      Src: /src/opendal/core/services/azdls/src/config.rs:107,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/azdls/src/config.rs:107,1
    - Dst: to_string
      Src: /src/opendal/core/services/azdls/src/config.rs:107,1
    - Dst: Result::is_empty
      Src: /src/opendal/core/services/azdls/src/config.rs:109,1
    - Dst: Result::insert
      Src: /src/opendal/core/services/azdls/src/config.rs:110,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/azdls/src/config.rs:110,1
    - Dst: Result::to_string
      Src: /src/opendal/core/services/azdls/src/config.rs:110,1
    - Dst: Result::contains_key
      Src: /src/opendal/core/services/azdls/src/config.rs:114,1
    - Dst: Err
      Src: /src/opendal/core/services/azdls/src/config.rs:115,1
    - Dst: opendal_core::Error::new
      Src: /src/opendal/core/services/azdls/src/config.rs:115,1
    - Dst: Self::with_context
      Src: /src/opendal/core/services/azdls/src/config.rs:115,1
    - Dst: Self::from_iter
      Src: /src/opendal/core/services/azdls/src/config.rs:122,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 100
    argCount: 1
    argNames:
    - uri
    argTypes:
    - '&opendal_core::OperatorUri'
    constantsTouched: []
    func_position:
      end: 123
      start: 81
    functionDepth: 35
    functionLinenumber: 81
    functionLinenumberEnd: 123
    functionName: AzdlsConfig::from_uri
    functionSourceFile: /src/opendal/core/services/azdls/src/config.rs
    functionUses: 2
    functionsReached:
    - Self::to_string
    - Self::split
    - Result::root
    - Result::is_empty
    - Self::with_context
    - Result::clone
    - Result::to_string
    - crate::Entry::or_insert_with
    - Self::is_empty
    - '&str::to_string'
    - Result::entry
    - next
    - Self::from_iter
    - Result::insert
    - is_empty
    - Result::contains_key
    - Result::split_once
    - to_string
    - filter
    - Result::and_then
    - Err
    - Result::name
    - Result::authority
    - opendal_core::Error::new
    - Result::options
    linkageType: ''
    returnType: opendal_core::Result
    signature: 'fn from_uri(uri: &opendal_core::OperatorUri) -> opendal_core::Result<Self>'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 128
      start: 126
    functionDepth: 0
    functionLinenumber: 126
    functionLinenumberEnd: 128
    functionName: AzdlsConfig::into_builder
    functionSourceFile: /src/opendal/core/services/azdls/src/config.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Self::Builder
    signature: fn into_builder(self) -> Self::Builder
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: OperatorUri::new
      Src: /src/opendal/core/services/azdls/src/config.rs:139,1
    - Dst: Vec::<(String, String)>::new
      Src: /src/opendal/core/services/azdls/src/config.rs:141,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/services/azdls/src/config.rs:139,1
    - Dst: AzdlsConfig::from_uri
      Src: /src/opendal/core/services/azdls/src/config.rs:145,1
    - Dst: opendal_core::Result::unwrap
      Src: /src/opendal/core/services/azdls/src/config.rs:145,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 153
      start: 138
    functionDepth: 29
    functionLinenumber: 138
    functionLinenumberEnd: 153
    functionName: tests::from_uri_sets_endpoint_filesystem_root_and_account
    functionSourceFile: /src/opendal/core/services/azdls/src/config.rs
    functionUses: 0
    functionsReached:
    - AzdlsConfig::from_uri
    - Vec::<(String, String)>::new
    - OperatorUri::new
    - Result::unwrap
    - opendal_core::Result::unwrap
    linkageType: ''
    returnType: void
    signature: fn from_uri_sets_endpoint_filesystem_root_and_account()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: OperatorUri::new
      Src: /src/opendal/core/services/azdls/src/config.rs:157,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/services/azdls/src/config.rs:157,1
    - Dst: AzdlsConfig::from_uri
      Src: /src/opendal/core/services/azdls/src/config.rs:163,1
    - Dst: opendal_core::Result::unwrap
      Src: /src/opendal/core/services/azdls/src/config.rs:163,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 165
      start: 156
    functionDepth: 29
    functionLinenumber: 156
    functionLinenumberEnd: 165
    functionName: tests::from_uri_accepts_filesystem_from_query
    functionSourceFile: /src/opendal/core/services/azdls/src/config.rs
    functionUses: 0
    functionsReached:
    - OperatorUri::new
    - AzdlsConfig::from_uri
    - Result::unwrap
    - opendal_core::Result::unwrap
    linkageType: ''
    returnType: void
    signature: fn from_uri_accepts_filesystem_from_query()
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - core
    - ctx
    argTypes:
    - Arc<AzdlsCore>
    - OperationContext
    constantsTouched: []
    func_position:
      end: 35
      start: 33
    functionDepth: 0
    functionLinenumber: 33
    functionLinenumberEnd: 35
    functionName: AzdlsDeleter::new
    functionSourceFile: /src/opendal/core/services/azdls/src/deleter.rs
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(core: Arc<AzdlsCore>, ctx: OperationContext) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: OpStat::recursive
      Src: /src/opendal/core/services/azdls/src/deleter.rs:40,1
    - Dst: azdls_recursive_delete
      Src: /src/opendal/core/services/azdls/src/deleter.rs:41,1
    - Dst: azdls_delete
      Src: /src/opendal/core/services/azdls/src/deleter.rs:43,1
    - Dst: status
      Src: /src/opendal/core/services/azdls/src/deleter.rs:46,1
    - Dst: Ok
      Src: /src/opendal/core/services/azdls/src/deleter.rs:49,1
    - Dst: Err
      Src: /src/opendal/core/services/azdls/src/deleter.rs:50,1
    - Dst: super::core::parse_error
      Src: /src/opendal/core/services/azdls/src/deleter.rs:50,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 27
    argCount: 2
    argNames:
    - path
    - args
    argTypes:
    - String
    - OpDelete
    constantsTouched: []
    func_position:
      end: 52
      start: 39
    functionDepth: 36
    functionLinenumber: 39
    functionLinenumberEnd: 52
    functionName: AzdlsDeleter::delete_once
    functionSourceFile: /src/opendal/core/services/azdls/src/deleter.rs
    functionUses: 0
    functionsReached:
    - azdls_delete
    - status
    - Ok
    - Err
    - azdls_recursive_delete
    - super::core::parse_error
    - OpStat::recursive
    linkageType: ''
    returnType: Result
    signature: 'async fn delete_once(&self, path: String, args: OpDelete) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 4
    argNames:
    - core
    - ctx
    - path
    - limit
    argTypes:
    - Arc<AzdlsCore>
    - OperationContext
    - String
    - Option<usize>
    constantsTouched: []
    func_position:
      end: 50
      start: 38
    functionDepth: 0
    functionLinenumber: 38
    functionLinenumberEnd: 50
    functionName: AzdlsLister::new
    functionSourceFile: /src/opendal/core/services/azdls/src/lister.rs
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(core: Arc<AzdlsCore>,ctx: OperationContext,path: String,limit:
      Option<usize>,) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: azdls_list
      Src: /src/opendal/core/services/azdls/src/lister.rs:55,1
    - Dst: status
      Src: /src/opendal/core/services/azdls/src/lister.rs:61,1
    - Dst: Ok
      Src: /src/opendal/core/services/azdls/src/lister.rs:63,1
    - Dst: status
      Src: /src/opendal/core/services/azdls/src/lister.rs:66,1
    - Dst: Err
      Src: /src/opendal/core/services/azdls/src/lister.rs:67,1
    - Dst: super::core::parse_error
      Src: /src/opendal/core/services/azdls/src/lister.rs:67,1
    - Dst: is_empty
      Src: /src/opendal/core/services/azdls/src/lister.rs:71,1
    - Dst: oio::Entry::new
      Src: /src/opendal/core/services/azdls/src/lister.rs:72,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/azdls/src/lister.rs:72,1
    - Dst: push_back
      Src: /src/opendal/core/services/azdls/src/lister.rs:73,1
    - Dst: headers
      Src: /src/opendal/core/services/azdls/src/lister.rs:77,1
    - Dst: get
      Src: /src/opendal/core/services/azdls/src/lister.rs:77,1
    - Dst: Vec::to_str
      Src: /src/opendal/core/services/azdls/src/lister.rs:78,1
    - Dst: Result::map_err
      Src: /src/opendal/core/services/azdls/src/lister.rs:78,1
    - Dst: Error::new
      Src: /src/opendal/core/services/azdls/src/lister.rs:79,1
    - Dst: Self::set_source
      Src: /src/opendal/core/services/azdls/src/lister.rs:79,1
    - Dst: Vec::to_string
      Src: /src/opendal/core/services/azdls/src/lister.rs:82,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/azdls/src/lister.rs:84,1
    - Dst: into_body
      Src: /src/opendal/core/services/azdls/src/lister.rs:88,1
    - Dst: de::from_reader
      Src: /src/opendal/core/services/azdls/src/lister.rs:90,1
    - Dst: Result::reader
      Src: /src/opendal/core/services/azdls/src/lister.rs:90,1
    - Dst: map_err
      Src: /src/opendal/core/services/azdls/src/lister.rs:90,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/azdls/src/lister.rs:100,1
    - Dst: Self::with_etag
      Src: /src/opendal/core/services/azdls/src/lister.rs:100,1
    - Dst: Self::with_content_length
      Src: /src/opendal/core/services/azdls/src/lister.rs:100,1
    - Dst: parse
      Src: /src/opendal/core/services/azdls/src/lister.rs:103,1
    - Dst: map_err
      Src: /src/opendal/core/services/azdls/src/lister.rs:103,1
    - Dst: Error::new
      Src: /src/opendal/core/services/azdls/src/lister.rs:104,1
    - Dst: Self::set_source
      Src: /src/opendal/core/services/azdls/src/lister.rs:104,1
    - Dst: Self::with_last_modified
      Src: /src/opendal/core/services/azdls/src/lister.rs:100,1
    - Dst: Timestamp::parse_rfc2822
      Src: /src/opendal/core/services/azdls/src/lister.rs:107,1
    - Dst: build_rel_path
      Src: /src/opendal/core/services/azdls/src/lister.rs:109,1
    - Dst: Option::is_dir
      Src: /src/opendal/core/services/azdls/src/lister.rs:110,1
    - Dst: oio::Entry::new
      Src: /src/opendal/core/services/azdls/src/lister.rs:114,1
    - Dst: push_back
      Src: /src/opendal/core/services/azdls/src/lister.rs:116,1
    - Dst: Ok
      Src: /src/opendal/core/services/azdls/src/lister.rs:119,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 131
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - '&mut oio::PageContext'
    constantsTouched: []
    func_position:
      end: 120
      start: 54
    functionDepth: 37
    functionLinenumber: 54
    functionLinenumberEnd: 120
    functionName: AzdlsLister::next_page
    functionSourceFile: /src/opendal/core/services/azdls/src/lister.rs
    functionUses: 0
    functionsReached:
    - status
    - azdls_list
    - Vec::to_str
    - Self::with_last_modified
    - build_rel_path
    - Result::reader
    - Self::with_etag
    - map_err
    - get
    - Ok
    - Option::is_dir
    - headers
    - '&str::to_string'
    - Vec::to_string
    - Result::map_err
    - Metadata::new
    - Timestamp::parse_rfc2822
    - into_body
    - is_empty
    - de::from_reader
    - parse
    - Self::set_source
    - super::core::parse_error
    - oio::Entry::new
    - push_back
    - Self::with_content_length
    - Err
    - Error::new
    linkageType: ''
    returnType: Result
    signature: 'async fn next_page(&self, ctx: &mut oio::PageContext) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Bytes::from
      Src: /src/opendal/core/services/azdls/src/lister.rs:158,1
    - Dst: de::from_slice
      Src: /src/opendal/core/services/azdls/src/lister.rs:161,1
    - Dst: expect
      Src: /src/opendal/core/services/azdls/src/lister.rs:161,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 175
      start: 157
    functionDepth: 32
    functionLinenumber: 157
    functionLinenumberEnd: 175
    functionName: tests::test_parse_path
    functionSourceFile: /src/opendal/core/services/azdls/src/lister.rs
    functionUses: 0
    functionsReached:
    - Bytes::from
    - de::from_slice
    - expect
    linkageType: ''
    returnType: void
    signature: fn test_parse_path()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: to_string
      Src: /src/opendal/core/services/azdls/src/reader.rs:43,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 4
    argNames:
    - backend
    - ctx
    - path
    - args
    argTypes:
    - AzdlsBackend
    - OperationContext
    - '&str'
    - OpRead
    constantsTouched: []
    func_position:
      end: 46
      start: 34
    functionDepth: 2
    functionLinenumber: 34
    functionLinenumberEnd: 46
    functionName: AzdlsReader::new
    functionSourceFile: /src/opendal/core/services/azdls/src/reader.rs
    functionUses: 1
    functionsReached:
    - to_string
    linkageType: ''
    returnType: Self
    signature: 'pub(super) fn new(backend: AzdlsBackend,ctx: OperationContext,path:
      &str,args: OpRead,) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: as_str
      Src: /src/opendal/core/services/azdls/src/reader.rs:52,1
    - Dst: clone
      Src: /src/opendal/core/services/azdls/src/reader.rs:53,1
    - Dst: azdls_read
      Src: /src/opendal/core/services/azdls/src/reader.rs:54,1
    - Dst: status
      Src: /src/opendal/core/services/azdls/src/reader.rs:59,1
    - Dst: RpRead::new
      Src: /src/opendal/core/services/azdls/src/reader.rs:62,1
    - Dst: parse_into_metadata
      Src: /src/opendal/core/services/azdls/src/reader.rs:62,1
    - Dst: headers
      Src: /src/opendal/core/services/azdls/src/reader.rs:62,1
    - Dst: into_body
      Src: /src/opendal/core/services/azdls/src/reader.rs:63,1
    - Dst: into_parts
      Src: /src/opendal/core/services/azdls/src/reader.rs:66,1
    - Dst: to_buffer
      Src: /src/opendal/core/services/azdls/src/reader.rs:67,1
    - Dst: Err
      Src: /src/opendal/core/services/azdls/src/reader.rs:68,1
    - Dst: super::core::parse_error
      Src: /src/opendal/core/services/azdls/src/reader.rs:68,1
    - Dst: Response::from_parts
      Src: /src/opendal/core/services/azdls/src/reader.rs:68,1
    - Dst: Ok
      Src: /src/opendal/core/services/azdls/src/reader.rs:72,1
    - Dst: Box::new
      Src: /src/opendal/core/services/azdls/src/reader.rs:72,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 42
    argCount: 1
    argNames:
    - range
    argTypes:
    - BytesRange
    constantsTouched: []
    func_position:
      end: 73
      start: 50
    functionDepth: 37
    functionLinenumber: 50
    functionLinenumberEnd: 73
    functionName: AzdlsReader::open
    functionSourceFile: /src/opendal/core/services/azdls/src/reader.rs
    functionUses: 0
    functionsReached:
    - parse_into_metadata
    - to_buffer
    - status
    - Ok
    - Box::new
    - azdls_read
    - clone
    - into_body
    - Err
    - Response::from_parts
    - as_str
    - headers
    - into_parts
    - RpRead::new
    - super::core::parse_error
    linkageType: ''
    returnType: Result
    signature: 'async fn open(&self, range: BytesRange) -> Result<(RpRead, Box<dyn
      oio::ReadStreamDyn>)>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::debug_struct
      Src: /src/opendal/core/services/azdls/src/core.rs:65,1
    - Dst: field
      Src: /src/opendal/core/services/azdls/src/core.rs:65,1
    - Dst: field
      Src: /src/opendal/core/services/azdls/src/core.rs:65,1
    - Dst: field
      Src: /src/opendal/core/services/azdls/src/core.rs:65,1
    - Dst: field
      Src: /src/opendal/core/services/azdls/src/core.rs:65,1
    - Dst: finish_non_exhaustive
      Src: /src/opendal/core/services/azdls/src/core.rs:65,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 20
    argCount: 1
    argNames:
    - f
    argTypes:
    - '&mut std::fmt::Formatter<''_>'
    constantsTouched: []
    func_position:
      end: 71
      start: 64
    functionDepth: 5
    functionLinenumber: 64
    functionLinenumberEnd: 71
    functionName: AzdlsCore::fmt
    functionSourceFile: /src/opendal/core/services/azdls/src/core.rs
    functionUses: 0
    functionsReached:
    - field
    - Result::debug_struct
    - finish_non_exhaustive
    linkageType: ''
    returnType: std::fmt::Result
    signature: 'fn fmt(&self, f: &mut std::fmt::Formatter<''_>) -> std::fmt::Result'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: clone
      Src: /src/opendal/core/services/azdls/src/core.rs:76,1
    - Dst: with_context
      Src: /src/opendal/core/services/azdls/src/core.rs:76,1
    - Dst: clone
      Src: /src/opendal/core/services/azdls/src/core.rs:77,1
    - Dst: with_http_send
      Src: /src/opendal/core/services/azdls/src/core.rs:77,1
    - Dst: Result::http_transport
      Src: /src/opendal/core/services/azdls/src/core.rs:79,1
    - Dst: Self::clone
      Src: /src/opendal/core/services/azdls/src/core.rs:79,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 14
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - '&OperationContext'
    constantsTouched: []
    func_position:
      end: 81
      start: 75
    functionDepth: 6
    functionLinenumber: 75
    functionLinenumberEnd: 81
    functionName: AzdlsCore::signer
    functionSourceFile: /src/opendal/core/services/azdls/src/core.rs
    functionUses: 1
    functionsReached:
    - with_http_send
    - clone
    - with_context
    - Self::clone
    - Result::http_transport
    linkageType: ''
    returnType: Signer
    signature: 'fn signer(&self, ctx: &OperationContext) -> Signer<Credential>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Request<T>::into_parts
      Src: /src/opendal/core/services/azdls/src/core.rs:84,1
    - Dst: insert
      Src: /src/opendal/core/services/azdls/src/core.rs:87,1
    - Dst: HeaderName::from_static
      Src: /src/opendal/core/services/azdls/src/core.rs:88,1
    - Dst: HeaderValue::from_static
      Src: /src/opendal/core/services/azdls/src/core.rs:94,1
    - Dst: AzdlsCore::signer
      Src: /src/opendal/core/services/azdls/src/core.rs:97,1
    - Dst: Signer::sign
      Src: /src/opendal/core/services/azdls/src/core.rs:97,1
    - Dst: map_err
      Src: /src/opendal/core/services/azdls/src/core.rs:97,1
    - Dst: new_request_sign_error
      Src: /src/opendal/core/services/azdls/src/core.rs:100,1
    - Dst: Result::into
      Src: /src/opendal/core/services/azdls/src/core.rs:100,1
    - Dst: Ok
      Src: /src/opendal/core/services/azdls/src/core.rs:102,1
    - Dst: Request::from_parts
      Src: /src/opendal/core/services/azdls/src/core.rs:102,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 24
    argCount: 2
    argNames:
    - ctx
    - req
    argTypes:
    - '&OperationContext'
    - Request<T>
    constantsTouched: []
    func_position:
      end: 103
      start: 83
    functionDepth: 35
    functionLinenumber: 83
    functionLinenumberEnd: 103
    functionName: AzdlsCore::sign
    functionSourceFile: /src/opendal/core/services/azdls/src/core.rs
    functionUses: 9
    functionsReached:
    - map_err
    - insert
    - HeaderValue::from_static
    - Ok
    - Signer::sign
    - HeaderName::from_static
    - Request<T>::into_parts
    - Result::into
    - Request::from_parts
    - AzdlsCore::signer
    - new_request_sign_error
    linkageType: ''
    returnType: Result
    signature: 'pub async fn sign<T>(&self, ctx: &OperationContext, req: Request<T>)
      -> Result<Request<T>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::http_transport
      Src: /src/opendal/core/services/azdls/src/core.rs:111,1
    - Dst: Self::send
      Src: /src/opendal/core/services/azdls/src/core.rs:111,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - ctx
    - req
    argTypes:
    - '&OperationContext'
    - Request<Buffer>
    constantsTouched: []
    func_position:
      end: 112
      start: 106
    functionDepth: 37
    functionLinenumber: 106
    functionLinenumberEnd: 112
    functionName: AzdlsCore::send
    functionSourceFile: /src/opendal/core/services/azdls/src/core.rs
    functionUses: 8
    functionsReached:
    - Result::http_transport
    - Self::send
    linkageType: ''
    returnType: Result
    signature: 'pub async fn send(&self,ctx: &OperationContext,req: Request<Buffer>,)
      -> Result<Response<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/azdls/src/core.rs:123,1
    - Dst: Request::get
      Src: /src/opendal/core/services/azdls/src/core.rs:132,1
    - Dst: (Vec::is_full
      Src: /src/opendal/core/services/azdls/src/core.rs:134,1
    - Dst: Option::header
      Src: /src/opendal/core/services/azdls/src/core.rs:135,1
    - Dst: (Vec::to_header
      Src: /src/opendal/core/services/azdls/src/core.rs:135,1
    - Dst: OpStat::if_match
      Src: /src/opendal/core/services/azdls/src/core.rs:138,1
    - Dst: Option::header
      Src: /src/opendal/core/services/azdls/src/core.rs:139,1
    - Dst: OpStat::if_none_match
      Src: /src/opendal/core/services/azdls/src/core.rs:141,1
    - Dst: Option::header
      Src: /src/opendal/core/services/azdls/src/core.rs:142,1
    - Dst: OpStat::if_modified_since
      Src: /src/opendal/core/services/azdls/src/core.rs:144,1
    - Dst: Option::header
      Src: /src/opendal/core/services/azdls/src/core.rs:145,1
    - Dst: Result::format_http_date
      Src: /src/opendal/core/services/azdls/src/core.rs:145,1
    - Dst: OpStat::if_unmodified_since
      Src: /src/opendal/core/services/azdls/src/core.rs:147,1
    - Dst: Option::header
      Src: /src/opendal/core/services/azdls/src/core.rs:148,1
    - Dst: Result::format_http_date
      Src: /src/opendal/core/services/azdls/src/core.rs:148,1
    - Dst: Option::extension
      Src: /src/opendal/core/services/azdls/src/core.rs:151,1
    - Dst: extension
      Src: /src/opendal/core/services/azdls/src/core.rs:151,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/azdls/src/core.rs:153,1
    - Dst: body
      Src: /src/opendal/core/services/azdls/src/core.rs:151,1
    - Dst: Buffer::new
      Src: /src/opendal/core/services/azdls/src/core.rs:154,1
    - Dst: map_err
      Src: /src/opendal/core/services/azdls/src/core.rs:151,1
    - Dst: AzdlsCore::sign
      Src: /src/opendal/core/services/azdls/src/core.rs:157,1
    - Dst: Result::http_transport
      Src: /src/opendal/core/services/azdls/src/core.rs:158,1
    - Dst: Self::fetch
      Src: /src/opendal/core/services/azdls/src/core.rs:158,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 72
    argCount: 4
    argNames:
    - ctx
    - path
    - range
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - BytesRange
    - '&OpRead'
    constantsTouched: []
    func_position:
      end: 159
      start: 116
    functionDepth: 36
    functionLinenumber: 116
    functionLinenumberEnd: 159
    functionName: AzdlsCore::azdls_read
    functionSourceFile: /src/opendal/core/services/azdls/src/core.rs
    functionUses: 0
    functionsReached:
    - Buffer::new
    - OpStat::if_unmodified_since
    - map_err
    - extension
    - AzdlsCore::sign
    - OpStat::if_modified_since
    - (Vec::is_full
    - ServiceOperation
    - Result::http_transport
    - Result::format_http_date
    - OpStat::if_match
    - build_abs_path
    - Self::fetch
    - Option::header
    - Request::get
    - (Vec::to_header
    - body
    - OpStat::if_none_match
    - Option::extension
    linkageType: ''
    returnType: Result
    signature: 'pub async fn azdls_read(&self,ctx: &OperationContext,path: &str,range:
      BytesRange,args: &OpRead,) -> Result<Response<HttpBody>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/azdls/src/core.rs:171,1
    - Dst: String::trim_end_matches
      Src: /src/opendal/core/services/azdls/src/core.rs:171,1
    - Dst: to_string
      Src: /src/opendal/core/services/azdls/src/core.rs:171,1
    - Dst: Request::put
      Src: /src/opendal/core/services/azdls/src/core.rs:182,1
    - Dst: DeleteInput::header
      Src: /src/opendal/core/services/azdls/src/core.rs:185,1
    - Dst: OpStat::content_type
      Src: /src/opendal/core/services/azdls/src/core.rs:187,1
    - Dst: DeleteInput::header
      Src: /src/opendal/core/services/azdls/src/core.rs:188,1
    - Dst: OpStat::content_disposition
      Src: /src/opendal/core/services/azdls/src/core.rs:191,1
    - Dst: DeleteInput::header
      Src: /src/opendal/core/services/azdls/src/core.rs:192,1
    - Dst: OpStat::if_not_exists
      Src: /src/opendal/core/services/azdls/src/core.rs:195,1
    - Dst: DeleteInput::header
      Src: /src/opendal/core/services/azdls/src/core.rs:196,1
    - Dst: OpStat::if_none_match
      Src: /src/opendal/core/services/azdls/src/core.rs:199,1
    - Dst: DeleteInput::header
      Src: /src/opendal/core/services/azdls/src/core.rs:200,1
    - Dst: OpStat::user_metadata
      Src: /src/opendal/core/services/azdls/src/core.rs:203,1
    - Dst: Result::is_empty
      Src: /src/opendal/core/services/azdls/src/core.rs:204,1
    - Dst: DeleteInput::header
      Src: /src/opendal/core/services/azdls/src/core.rs:206,1
    - Dst: encode_user_metadata
      Src: /src/opendal/core/services/azdls/src/core.rs:206,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/azdls/src/core.rs:215,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/azdls/src/core.rs:217,1
    - Dst: DeleteInput::extension
      Src: /src/opendal/core/services/azdls/src/core.rs:220,1
    - Dst: extension
      Src: /src/opendal/core/services/azdls/src/core.rs:220,1
    - Dst: body
      Src: /src/opendal/core/services/azdls/src/core.rs:220,1
    - Dst: Buffer::new
      Src: /src/opendal/core/services/azdls/src/core.rs:223,1
    - Dst: map_err
      Src: /src/opendal/core/services/azdls/src/core.rs:220,1
    - Dst: AzdlsCore::sign
      Src: /src/opendal/core/services/azdls/src/core.rs:226,1
    - Dst: AzdlsCore::send
      Src: /src/opendal/core/services/azdls/src/core.rs:227,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 76
    argCount: 4
    argNames:
    - ctx
    - path
    - resource
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    - '&OpWrite'
    constantsTouched: []
    func_position:
      end: 228
      start: 164
    functionDepth: 32
    functionLinenumber: 164
    functionLinenumberEnd: 228
    functionName: AzdlsCore::azdls_create
    functionSourceFile: /src/opendal/core/services/azdls/src/core.rs
    functionUses: 1
    functionsReached:
    - Buffer::new
    - Request::put
    - OpStat::content_disposition
    - DeleteInput::header
    - Result::is_empty
    - OpStat::user_metadata
    - DeleteInput::extension
    - map_err
    - extension
    - AzdlsCore::sign
    - ServiceOperation
    - build_abs_path
    - AzdlsCore::send
    - String::trim_end_matches
    - OpStat::if_not_exists
    - OpStat::content_type
    - to_string
    - body
    - OpStat::if_none_match
    - encode_user_metadata
    linkageType: ''
    returnType: Result
    signature: 'pub async fn azdls_create(&self,ctx: &OperationContext,path: &str,resource:
      &str,args: &OpWrite,) -> Result<Response<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/azdls/src/core.rs:236,1
    - Dst: build_abs_path
      Src: /src/opendal/core/services/azdls/src/core.rs:237,1
    - Dst: Request::put
      Src: /src/opendal/core/services/azdls/src/core.rs:248,1
    - Dst: DeleteInput::header
      Src: /src/opendal/core/services/azdls/src/core.rs:248,1
    - Dst: String::header
      Src: /src/opendal/core/services/azdls/src/core.rs:248,1
    - Dst: String::extension
      Src: /src/opendal/core/services/azdls/src/core.rs:248,1
    - Dst: extension
      Src: /src/opendal/core/services/azdls/src/core.rs:248,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/azdls/src/core.rs:252,1
    - Dst: body
      Src: /src/opendal/core/services/azdls/src/core.rs:248,1
    - Dst: Buffer::new
      Src: /src/opendal/core/services/azdls/src/core.rs:253,1
    - Dst: map_err
      Src: /src/opendal/core/services/azdls/src/core.rs:248,1
    - Dst: AzdlsCore::sign
      Src: /src/opendal/core/services/azdls/src/core.rs:256,1
    - Dst: AzdlsCore::send
      Src: /src/opendal/core/services/azdls/src/core.rs:257,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 30
    argCount: 3
    argNames:
    - ctx
    - from
    - to
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    constantsTouched: []
    func_position:
      end: 258
      start: 230
    functionDepth: 36
    functionLinenumber: 230
    functionLinenumberEnd: 258
    functionName: AzdlsCore::azdls_rename
    functionSourceFile: /src/opendal/core/services/azdls/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - extension
    - Buffer::new
    - Request::put
    - AzdlsCore::sign
    - body
    - build_abs_path
    - DeleteInput::header
    - String::header
    - ServiceOperation
    - AzdlsCore::send
    - String::extension
    linkageType: ''
    returnType: Result
    signature: 'pub async fn azdls_rename(&self,ctx: &OperationContext,from: &str,to:
      &str,) -> Result<Response<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/azdls/src/core.rs:272,1
    - Dst: Result::push_str
      Src: /src/opendal/core/services/azdls/src/core.rs:283,1
    - Dst: Result::push_str
      Src: /src/opendal/core/services/azdls/src/core.rs:286,1
    - Dst: Request::patch
      Src: /src/opendal/core/services/azdls/src/core.rs:289,1
    - Dst: Result::header
      Src: /src/opendal/core/services/azdls/src/core.rs:292,1
    - Dst: Result::extension
      Src: /src/opendal/core/services/azdls/src/core.rs:295,1
    - Dst: extension
      Src: /src/opendal/core/services/azdls/src/core.rs:295,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/azdls/src/core.rs:297,1
    - Dst: body
      Src: /src/opendal/core/services/azdls/src/core.rs:295,1
    - Dst: map_err
      Src: /src/opendal/core/services/azdls/src/core.rs:295,1
    - Dst: AzdlsCore::sign
      Src: /src/opendal/core/services/azdls/src/core.rs:301,1
    - Dst: AzdlsCore::send
      Src: /src/opendal/core/services/azdls/src/core.rs:302,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 37
    argCount: 7
    argNames:
    - ctx
    - path
    - size
    - position
    - flush
    - close
    - body
    argTypes:
    - '&OperationContext'
    - '&str'
    - Option<u64>
    - u64
    - bool
    - bool
    - Buffer
    constantsTouched: []
    func_position:
      end: 303
      start: 262
    functionDepth: 42
    functionLinenumber: 262
    functionLinenumberEnd: 303
    functionName: AzdlsCore::azdls_append
    functionSourceFile: /src/opendal/core/services/azdls/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - extension
    - Result::push_str
    - AzdlsCore::sign
    - Result::extension
    - body
    - build_abs_path
    - Result::header
    - ServiceOperation
    - AzdlsCore::send
    - Request::patch
    linkageType: ''
    returnType: Result
    signature: 'pub async fn azdls_append(&self,ctx: &OperationContext,path: &str,size:
      Option<u64>,position: u64,flush: bool,close: bool,body: Buffer,) -> Result<Response<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/azdls/src/core.rs:313,1
    - Dst: Result::push_str
      Src: /src/opendal/core/services/azdls/src/core.rs:324,1
    - Dst: Request::patch
      Src: /src/opendal/core/services/azdls/src/core.rs:327,1
    - Dst: Result::header
      Src: /src/opendal/core/services/azdls/src/core.rs:327,1
    - Dst: String::extension
      Src: /src/opendal/core/services/azdls/src/core.rs:327,1
    - Dst: extension
      Src: /src/opendal/core/services/azdls/src/core.rs:327,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/azdls/src/core.rs:330,1
    - Dst: body
      Src: /src/opendal/core/services/azdls/src/core.rs:327,1
    - Dst: Buffer::new
      Src: /src/opendal/core/services/azdls/src/core.rs:331,1
    - Dst: map_err
      Src: /src/opendal/core/services/azdls/src/core.rs:327,1
    - Dst: AzdlsCore::sign
      Src: /src/opendal/core/services/azdls/src/core.rs:334,1
    - Dst: AzdlsCore::send
      Src: /src/opendal/core/services/azdls/src/core.rs:335,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 30
    argCount: 4
    argNames:
    - ctx
    - path
    - position
    - close
    argTypes:
    - '&OperationContext'
    - '&str'
    - u64
    - bool
    constantsTouched: []
    func_position:
      end: 336
      start: 306
    functionDepth: 42
    functionLinenumber: 306
    functionLinenumberEnd: 336
    functionName: AzdlsCore::azdls_flush
    functionSourceFile: /src/opendal/core/services/azdls/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - extension
    - Buffer::new
    - Result::push_str
    - AzdlsCore::sign
    - body
    - build_abs_path
    - Result::header
    - ServiceOperation
    - AzdlsCore::send
    - String::extension
    - Request::patch
    linkageType: ''
    returnType: Result
    signature: 'pub async fn azdls_flush(&self,ctx: &OperationContext,path: &str,position:
      u64,close: bool,) -> Result<Response<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/azdls/src/core.rs:343,1
    - Dst: String::trim_end_matches
      Src: /src/opendal/core/services/azdls/src/core.rs:343,1
    - Dst: to_string
      Src: /src/opendal/core/services/azdls/src/core.rs:343,1
    - Dst: Request::head
      Src: /src/opendal/core/services/azdls/src/core.rs:354,1
    - Dst: Result::extension
      Src: /src/opendal/core/services/azdls/src/core.rs:356,1
    - Dst: extension
      Src: /src/opendal/core/services/azdls/src/core.rs:356,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/azdls/src/core.rs:358,1
    - Dst: body
      Src: /src/opendal/core/services/azdls/src/core.rs:356,1
    - Dst: Buffer::new
      Src: /src/opendal/core/services/azdls/src/core.rs:359,1
    - Dst: map_err
      Src: /src/opendal/core/services/azdls/src/core.rs:356,1
    - Dst: AzdlsCore::sign
      Src: /src/opendal/core/services/azdls/src/core.rs:362,1
    - Dst: AzdlsCore::send
      Src: /src/opendal/core/services/azdls/src/core.rs:363,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 27
    argCount: 2
    argNames:
    - ctx
    - path
    argTypes:
    - '&OperationContext'
    - '&str'
    constantsTouched: []
    func_position:
      end: 364
      start: 338
    functionDepth: 38
    functionLinenumber: 338
    functionLinenumberEnd: 364
    functionName: AzdlsCore::azdls_get_properties
    functionSourceFile: /src/opendal/core/services/azdls/src/core.rs
    functionUses: 1
    functionsReached:
    - map_err
    - to_string
    - Request::head
    - extension
    - Buffer::new
    - AzdlsCore::sign
    - Result::extension
    - body
    - build_abs_path
    - ServiceOperation
    - AzdlsCore::send
    - String::trim_end_matches
    linkageType: ''
    returnType: Result
    signature: 'pub async fn azdls_get_properties(&self,ctx: &OperationContext,path:
      &str,) -> Result<Response<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: AzdlsCore::azdls_get_properties
      Src: /src/opendal/core/services/azdls/src/core.rs:371,1
    - Dst: status
      Src: /src/opendal/core/services/azdls/src/core.rs:373,1
    - Dst: Err
      Src: /src/opendal/core/services/azdls/src/core.rs:374,1
    - Dst: parse_error
      Src: /src/opendal/core/services/azdls/src/core.rs:374,1
    - Dst: headers
      Src: /src/opendal/core/services/azdls/src/core.rs:377,1
    - Dst: parse_into_metadata
      Src: /src/opendal/core/services/azdls/src/core.rs:378,1
    - Dst: parse_header_to_str
      Src: /src/opendal/core/services/azdls/src/core.rs:380,1
    - Dst: Result::set_version
      Src: /src/opendal/core/services/azdls/src/core.rs:381,1
    - Dst: parse_header_to_str
      Src: /src/opendal/core/services/azdls/src/core.rs:384,1
    - Dst: decode_user_metadata
      Src: /src/opendal/core/services/azdls/src/core.rs:385,1
    - Dst: HashMap::is_empty
      Src: /src/opendal/core/services/azdls/src/core.rs:386,1
    - Dst: Result::with_user_metadata
      Src: /src/opendal/core/services/azdls/src/core.rs:387,1
    - Dst: headers
      Src: /src/opendal/core/services/azdls/src/core.rs:391,1
    - Dst: get
      Src: /src/opendal/core/services/azdls/src/core.rs:391,1
    - Dst: ok_or_else
      Src: /src/opendal/core/services/azdls/src/core.rs:391,1
    - Dst: Error::new
      Src: /src/opendal/core/services/azdls/src/core.rs:395,1
    - Dst: to_str
      Src: /src/opendal/core/services/azdls/src/core.rs:391,1
    - Dst: map_err
      Src: /src/opendal/core/services/azdls/src/core.rs:391,1
    - Dst: Error::new
      Src: /src/opendal/core/services/azdls/src/core.rs:402,1
    - Dst: Self::set_source
      Src: /src/opendal/core/services/azdls/src/core.rs:402,1
    - Dst: Ok
      Src: /src/opendal/core/services/azdls/src/core.rs:410,1
    - Dst: Result::with_mode
      Src: /src/opendal/core/services/azdls/src/core.rs:410,1
    - Dst: Ok
      Src: /src/opendal/core/services/azdls/src/core.rs:411,1
    - Dst: Result::with_mode
      Src: /src/opendal/core/services/azdls/src/core.rs:411,1
    - Dst: Err
      Src: /src/opendal/core/services/azdls/src/core.rs:412,1
    - Dst: Error::new
      Src: /src/opendal/core/services/azdls/src/core.rs:412,1
    - Dst: Self::with_context
      Src: /src/opendal/core/services/azdls/src/core.rs:412,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 68
    argCount: 2
    argNames:
    - ctx
    - path
    argTypes:
    - '&OperationContext'
    - '&str'
    constantsTouched: []
    func_position:
      end: 418
      start: 366
    functionDepth: 39
    functionLinenumber: 366
    functionLinenumberEnd: 418
    functionName: AzdlsCore::azdls_stat_metadata
    functionSourceFile: /src/opendal/core/services/azdls/src/core.rs
    functionUses: 0
    functionsReached:
    - status
    - Self::with_context
    - map_err
    - decode_user_metadata
    - Result::with_mode
    - get
    - Ok
    - parse_header_to_str
    - Result::with_user_metadata
    - headers
    - AzdlsCore::azdls_get_properties
    - ok_or_else
    - parse_into_metadata
    - to_str
    - parse_error
    - Self::set_source
    - HashMap::is_empty
    - Result::set_version
    - Err
    - Error::new
    linkageType: ''
    returnType: Result
    signature: 'pub async fn azdls_stat_metadata(&self,ctx: &OperationContext,path:
      &str,) -> Result<Metadata>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/azdls/src/core.rs:425,1
    - Dst: String::trim_end_matches
      Src: /src/opendal/core/services/azdls/src/core.rs:425,1
    - Dst: to_string
      Src: /src/opendal/core/services/azdls/src/core.rs:425,1
    - Dst: Request::delete
      Src: /src/opendal/core/services/azdls/src/core.rs:436,1
    - Dst: Result::extension
      Src: /src/opendal/core/services/azdls/src/core.rs:436,1
    - Dst: extension
      Src: /src/opendal/core/services/azdls/src/core.rs:436,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/azdls/src/core.rs:438,1
    - Dst: body
      Src: /src/opendal/core/services/azdls/src/core.rs:436,1
    - Dst: Buffer::new
      Src: /src/opendal/core/services/azdls/src/core.rs:439,1
    - Dst: map_err
      Src: /src/opendal/core/services/azdls/src/core.rs:436,1
    - Dst: AzdlsCore::sign
      Src: /src/opendal/core/services/azdls/src/core.rs:442,1
    - Dst: AzdlsCore::send
      Src: /src/opendal/core/services/azdls/src/core.rs:443,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 27
    argCount: 2
    argNames:
    - ctx
    - path
    argTypes:
    - '&OperationContext'
    - '&str'
    constantsTouched: []
    func_position:
      end: 444
      start: 420
    functionDepth: 32
    functionLinenumber: 420
    functionLinenumberEnd: 444
    functionName: AzdlsCore::azdls_delete
    functionSourceFile: /src/opendal/core/services/azdls/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - to_string
    - extension
    - Buffer::new
    - AzdlsCore::sign
    - Request::delete
    - Result::extension
    - body
    - build_abs_path
    - ServiceOperation
    - AzdlsCore::send
    - String::trim_end_matches
    linkageType: ''
    returnType: Result
    signature: 'pub async fn azdls_delete(&self,ctx: &OperationContext,path: &str,)
      -> Result<Response<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/azdls/src/core.rs:451,1
    - Dst: String::trim_end_matches
      Src: /src/opendal/core/services/azdls/src/core.rs:451,1
    - Dst: to_string
      Src: /src/opendal/core/services/azdls/src/core.rs:451,1
    - Dst: String::new
      Src: /src/opendal/core/services/azdls/src/core.rs:462,1
    - Dst: QueryPairsWriter::new
      Src: /src/opendal/core/services/azdls/src/core.rs:465,1
    - Dst: Self::push
      Src: /src/opendal/core/services/azdls/src/core.rs:465,1
    - Dst: Result::push
      Src: /src/opendal/core/services/azdls/src/core.rs:468,1
    - Dst: Self::is_empty
      Src: /src/opendal/core/services/azdls/src/core.rs:471,1
    - Dst: Result::push
      Src: /src/opendal/core/services/azdls/src/core.rs:472,1
    - Dst: percent_encode_path
      Src: /src/opendal/core/services/azdls/src/core.rs:472,1
    - Dst: Request::delete
      Src: /src/opendal/core/services/azdls/src/core.rs:475,1
    - Dst: Result::finish
      Src: /src/opendal/core/services/azdls/src/core.rs:475,1
    - Dst: Result::extension
      Src: /src/opendal/core/services/azdls/src/core.rs:475,1
    - Dst: extension
      Src: /src/opendal/core/services/azdls/src/core.rs:475,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/azdls/src/core.rs:477,1
    - Dst: body
      Src: /src/opendal/core/services/azdls/src/core.rs:475,1
    - Dst: Buffer::new
      Src: /src/opendal/core/services/azdls/src/core.rs:478,1
    - Dst: map_err
      Src: /src/opendal/core/services/azdls/src/core.rs:475,1
    - Dst: AzdlsCore::sign
      Src: /src/opendal/core/services/azdls/src/core.rs:481,1
    - Dst: AzdlsCore::send
      Src: /src/opendal/core/services/azdls/src/core.rs:482,1
    - Dst: status
      Src: /src/opendal/core/services/azdls/src/core.rs:484,1
    - Dst: Err
      Src: /src/opendal/core/services/azdls/src/core.rs:487,1
    - Dst: parse_error
      Src: /src/opendal/core/services/azdls/src/core.rs:487,1
    - Dst: headers
      Src: /src/opendal/core/services/azdls/src/core.rs:490,1
    - Dst: get
      Src: /src/opendal/core/services/azdls/src/core.rs:490,1
    - Dst: and_then
      Src: /src/opendal/core/services/azdls/src/core.rs:490,1
    - Dst: Result::to_str
      Src: /src/opendal/core/services/azdls/src/core.rs:493,1
    - Dst: Result::ok
      Src: /src/opendal/core/services/azdls/src/core.rs:493,1
    - Dst: unwrap_or_default
      Src: /src/opendal/core/services/azdls/src/core.rs:490,1
    - Dst: trim
      Src: /src/opendal/core/services/azdls/src/core.rs:490,1
    - Dst: Result::is_empty
      Src: /src/opendal/core/services/azdls/src/core.rs:497,1
    - Dst: Ok
      Src: /src/opendal/core/services/azdls/src/core.rs:498,1
    - Dst: Result::to_string
      Src: /src/opendal/core/services/azdls/src/core.rs:501,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 88
    argCount: 2
    argNames:
    - ctx
    - path
    argTypes:
    - '&OperationContext'
    - '&str'
    constantsTouched: []
    func_position:
      end: 503
      start: 446
    functionDepth: 32
    functionLinenumber: 446
    functionLinenumberEnd: 503
    functionName: AzdlsCore::azdls_recursive_delete
    functionSourceFile: /src/opendal/core/services/azdls/src/core.rs
    functionUses: 0
    functionsReached:
    - Buffer::new
    - status
    - Result::finish
    - Result::is_empty
    - percent_encode_path
    - map_err
    - extension
    - get
    - AzdlsCore::sign
    - Result::to_string
    - and_then
    - Ok
    - Self::is_empty
    - Result::push
    - headers
    - ServiceOperation
    - unwrap_or_default
    - QueryPairsWriter::new
    - Self::push
    - parse_error
    - trim
    - build_abs_path
    - AzdlsCore::send
    - String::trim_end_matches
    - to_string
    - Result::ok
    - Request::delete
    - String::new
    - Result::extension
    - Result::to_str
    - body
    - Err
    linkageType: ''
    returnType: Result
    signature: 'pub async fn azdls_recursive_delete(&self,ctx: &OperationContext,path:
      &str,) -> Result<Response<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/azdls/src/core.rs:512,1
    - Dst: String::trim_end_matches
      Src: /src/opendal/core/services/azdls/src/core.rs:512,1
    - Dst: to_string
      Src: /src/opendal/core/services/azdls/src/core.rs:512,1
    - Dst: QueryPairsWriter::new
      Src: /src/opendal/core/services/azdls/src/core.rs:516,1
    - Dst: Self::push
      Src: /src/opendal/core/services/azdls/src/core.rs:516,1
    - Dst: Self::push
      Src: /src/opendal/core/services/azdls/src/core.rs:516,1
    - Dst: is_empty
      Src: /src/opendal/core/services/azdls/src/core.rs:519,1
    - Dst: Result::push
      Src: /src/opendal/core/services/azdls/src/core.rs:520,1
    - Dst: percent_encode_path
      Src: /src/opendal/core/services/azdls/src/core.rs:520,1
    - Dst: Result::push
      Src: /src/opendal/core/services/azdls/src/core.rs:523,1
    - Dst: Result::to_string
      Src: /src/opendal/core/services/azdls/src/core.rs:523,1
    - Dst: '&str::is_empty'
      Src: /src/opendal/core/services/azdls/src/core.rs:525,1
    - Dst: Result::push
      Src: /src/opendal/core/services/azdls/src/core.rs:526,1
    - Dst: percent_encode_path
      Src: /src/opendal/core/services/azdls/src/core.rs:526,1
    - Dst: Request::get
      Src: /src/opendal/core/services/azdls/src/core.rs:529,1
    - Dst: Result::finish
      Src: /src/opendal/core/services/azdls/src/core.rs:529,1
    - Dst: Option::extension
      Src: /src/opendal/core/services/azdls/src/core.rs:529,1
    - Dst: extension
      Src: /src/opendal/core/services/azdls/src/core.rs:529,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/azdls/src/core.rs:531,1
    - Dst: body
      Src: /src/opendal/core/services/azdls/src/core.rs:529,1
    - Dst: Buffer::new
      Src: /src/opendal/core/services/azdls/src/core.rs:532,1
    - Dst: map_err
      Src: /src/opendal/core/services/azdls/src/core.rs:529,1
    - Dst: AzdlsCore::sign
      Src: /src/opendal/core/services/azdls/src/core.rs:535,1
    - Dst: AzdlsCore::send
      Src: /src/opendal/core/services/azdls/src/core.rs:536,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 66
    argCount: 4
    argNames:
    - ctx
    - path
    - continuation
    - limit
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    - Option<usize>
    constantsTouched: []
    func_position:
      end: 537
      start: 505
    functionDepth: 36
    functionLinenumber: 505
    functionLinenumberEnd: 537
    functionName: AzdlsCore::azdls_list
    functionSourceFile: /src/opendal/core/services/azdls/src/core.rs
    functionUses: 0
    functionsReached:
    - Buffer::new
    - Result::finish
    - percent_encode_path
    - map_err
    - extension
    - AzdlsCore::sign
    - Result::to_string
    - Result::push
    - ServiceOperation
    - QueryPairsWriter::new
    - Self::push
    - build_abs_path
    - is_empty
    - '&str::is_empty'
    - AzdlsCore::send
    - String::trim_end_matches
    - to_string
    - Request::get
    - body
    - Option::extension
    linkageType: ''
    returnType: Result
    signature: 'pub async fn azdls_list(&self,ctx: &OperationContext,path: &str,continuation:
      &str,limit: Option<usize>,) -> Result<Response<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: trim_end_matches
      Src: /src/opendal/core/services/azdls/src/core.rs:544,1
    - Dst: to_string
      Src: /src/opendal/core/services/azdls/src/core.rs:544,1
    - Dst: as_str
      Src: /src/opendal/core/services/azdls/src/core.rs:545,1
    - Dst: split
      Src: /src/opendal/core/services/azdls/src/core.rs:546,1
    - Dst: filter
      Src: /src/opendal/core/services/azdls/src/core.rs:546,1
    - Dst: anyhow::Result::is_empty
      Src: /src/opendal/core/services/azdls/src/core.rs:548,1
    - Dst: collect
      Src: /src/opendal/core/services/azdls/src/core.rs:546,1
    - Dst: (String, Metadata)::is_empty
      Src: /src/opendal/core/services/azdls/src/core.rs:551,1
    - Dst: (String, Metadata)::pop
      Src: /src/opendal/core/services/azdls/src/core.rs:552,1
    - Dst: (String, Metadata)::is_empty
      Src: /src/opendal/core/services/azdls/src/core.rs:555,1
    - Dst: (String, Metadata)::join
      Src: /src/opendal/core/services/azdls/src/core.rs:556,1
    - Dst: AzdlsCore::azdls_create
      Src: /src/opendal/core/services/azdls/src/core.rs:557,1
    - Dst: OpWrite::default
      Src: /src/opendal/core/services/azdls/src/core.rs:558,1
    - Dst: Ok
      Src: /src/opendal/core/services/azdls/src/core.rs:561,1
    - Dst: Some
      Src: /src/opendal/core/services/azdls/src/core.rs:561,1
    - Dst: Ok
      Src: /src/opendal/core/services/azdls/src/core.rs:563,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 41
    argCount: 2
    argNames:
    - ctx
    - path
    argTypes:
    - '&OperationContext'
    - '&str'
    constantsTouched: []
    func_position:
      end: 565
      start: 539
    functionDepth: 36
    functionLinenumber: 539
    functionLinenumberEnd: 565
    functionName: AzdlsCore::azdls_ensure_parent_path
    functionSourceFile: /src/opendal/core/services/azdls/src/core.rs
    functionUses: 0
    functionsReached:
    - to_string
    - filter
    - collect
    - Ok
    - anyhow::Result::is_empty
    - OpWrite::default
    - trim_end_matches
    - split
    - (String, Metadata)::join
    - AzdlsCore::azdls_create
    - Some
    - as_str
    - (String, Metadata)::is_empty
    - (String, Metadata)::pop
    linkageType: ''
    returnType: Result
    signature: 'pub async fn azdls_ensure_parent_path(&self,ctx: &OperationContext,path:
      &str,) -> Result<Option<Response<Buffer>>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: anyhow::Result::iter
      Src: /src/opendal/core/services/azdls/src/core.rs:569,1
    - Dst: map
      Src: /src/opendal/core/services/azdls/src/core.rs:569,1
    - Dst: "iter()\n        .map(|(k, v)| format!(\"{k}={}\", BASE64_STANDARD.encode(v)))\n\
        \        .collect::<Vec<_>>"
      Src: /src/opendal/core/services/azdls/src/core.rs:569,1
    - Dst: join
      Src: /src/opendal/core/services/azdls/src/core.rs:569,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 1
    argNames:
    - metadata
    argTypes:
    - '&HashMap<String, String>'
    constantsTouched: []
    func_position:
      end: 574
      start: 568
    functionDepth: 33
    functionLinenumber: 568
    functionLinenumberEnd: 574
    functionName: encode_user_metadata
    functionSourceFile: /src/opendal/core/services/azdls/src/core.rs
    functionUses: 4
    functionsReached:
    - map
    - join
    - "iter()\n        .map(|(k, v)| format!(\"{k}={}\", BASE64_STANDARD.encode(v)))\n\
      \        .collect::<Vec<_>>"
    - anyhow::Result::iter
    linkageType: ''
    returnType: String
    signature: 'fn encode_user_metadata(metadata: &HashMap<String, String>) -> String'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Vec::split
      Src: /src/opendal/core/services/azdls/src/core.rs:577,1
    - Dst: filter_map
      Src: /src/opendal/core/services/azdls/src/core.rs:577,1
    - Dst: split_once
      Src: /src/opendal/core/services/azdls/src/core.rs:580,1
    - Dst: decode
      Src: /src/opendal/core/services/azdls/src/core.rs:581,1
    - Dst: trim
      Src: /src/opendal/core/services/azdls/src/core.rs:581,1
    - Dst: ok
      Src: /src/opendal/core/services/azdls/src/core.rs:581,1
    - Dst: String::from_utf8
      Src: /src/opendal/core/services/azdls/src/core.rs:582,1
    - Dst: ok
      Src: /src/opendal/core/services/azdls/src/core.rs:582,1
    - Dst: Some
      Src: /src/opendal/core/services/azdls/src/core.rs:583,1
    - Dst: FoyerKey::trim
      Src: /src/opendal/core/services/azdls/src/core.rs:583,1
    - Dst: to_string
      Src: /src/opendal/core/services/azdls/src/core.rs:583,1
    - Dst: collect
      Src: /src/opendal/core/services/azdls/src/core.rs:577,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 27
    argCount: 1
    argNames:
    - value
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 586
      start: 576
    functionDepth: 36
    functionLinenumber: 576
    functionLinenumberEnd: 586
    functionName: decode_user_metadata
    functionSourceFile: /src/opendal/core/services/azdls/src/core.rs
    functionUses: 5
    functionsReached:
    - FoyerKey::trim
    - to_string
    - collect
    - String::from_utf8
    - split_once
    - ok
    - trim
    - Some
    - Vec::split
    - filter_map
    - decode
    linkageType: ''
    returnType: HashMap
    signature: 'fn decode_user_metadata(value: &str) -> HashMap<String, String>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: HashMap::new
      Src: /src/opendal/core/services/azdls/src/core.rs:594,1
    - Dst: DeleteInput::insert
      Src: /src/opendal/core/services/azdls/src/core.rs:595,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/azdls/src/core.rs:595,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/azdls/src/core.rs:595,1
    - Dst: DeleteInput::insert
      Src: /src/opendal/core/services/azdls/src/core.rs:596,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/azdls/src/core.rs:596,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/azdls/src/core.rs:596,1
    - Dst: decode_user_metadata
      Src: /src/opendal/core/services/azdls/src/core.rs:598,1
    - Dst: encode_user_metadata
      Src: /src/opendal/core/services/azdls/src/core.rs:598,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 20
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 600
      start: 593
    functionDepth: 37
    functionLinenumber: 593
    functionLinenumberEnd: 600
    functionName: tests::encode_then_decode_roundtrips
    functionSourceFile: /src/opendal/core/services/azdls/src/core.rs
    functionUses: 0
    functionsReached:
    - decode_user_metadata
    - DeleteInput::insert
    - encode_user_metadata
    - '&str::to_string'
    - HashMap::new
    linkageType: ''
    returnType: void
    signature: fn encode_then_decode_roundtrips()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: HashMap::new
      Src: /src/opendal/core/services/azdls/src/core.rs:604,1
    - Dst: DeleteInput::insert
      Src: /src/opendal/core/services/azdls/src/core.rs:605,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/azdls/src/core.rs:605,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/azdls/src/core.rs:605,1
    - Dst: decode_user_metadata
      Src: /src/opendal/core/services/azdls/src/core.rs:607,1
    - Dst: encode_user_metadata
      Src: /src/opendal/core/services/azdls/src/core.rs:607,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 609
      start: 603
    functionDepth: 37
    functionLinenumber: 603
    functionLinenumberEnd: 609
    functionName: tests::encoded_value_is_base64_so_special_characters_survive
    functionSourceFile: /src/opendal/core/services/azdls/src/core.rs
    functionUses: 0
    functionsReached:
    - decode_user_metadata
    - DeleteInput::insert
    - encode_user_metadata
    - '&str::to_string'
    - HashMap::new
    linkageType: ''
    returnType: void
    signature: fn encoded_value_is_base64_so_special_characters_survive()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: HashMap::new
      Src: /src/opendal/core/services/azdls/src/core.rs:613,1
    - Dst: DeleteInput::insert
      Src: /src/opendal/core/services/azdls/src/core.rs:614,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/azdls/src/core.rs:614,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/azdls/src/core.rs:614,1
    - Dst: decode_user_metadata
      Src: /src/opendal/core/services/azdls/src/core.rs:616,1
    - Dst: encode_user_metadata
      Src: /src/opendal/core/services/azdls/src/core.rs:616,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 618
      start: 612
    functionDepth: 37
    functionLinenumber: 612
    functionLinenumberEnd: 618
    functionName: tests::decode_preserves_utf8_multibyte_values
    functionSourceFile: /src/opendal/core/services/azdls/src/core.rs
    functionUses: 0
    functionsReached:
    - decode_user_metadata
    - DeleteInput::insert
    - encode_user_metadata
    - '&str::to_string'
    - HashMap::new
    linkageType: ''
    returnType: void
    signature: fn decode_preserves_utf8_multibyte_values()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: decode_user_metadata
      Src: /src/opendal/core/services/azdls/src/core.rs:626,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 629
      start: 621
    functionDepth: 37
    functionLinenumber: 621
    functionLinenumberEnd: 629
    functionName: tests::decode_silently_skips_malformed_entries_and_keeps_valid_ones
    functionSourceFile: /src/opendal/core/services/azdls/src/core.rs
    functionUses: 0
    functionsReached:
    - decode_user_metadata
    linkageType: ''
    returnType: void
    signature: fn decode_silently_skips_malformed_entries_and_keeps_valid_ones()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: OnceCell::new
      Src: /src/opendal/core/services/azdls/src/writer.rs:43,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - inner
    argTypes:
    - AzdlsWriter
    constantsTouched: []
    func_position:
      end: 45
      start: 40
    functionDepth: 2
    functionLinenumber: 40
    functionLinenumberEnd: 45
    functionName: AzdlsLazyPositionWriter::new
    functionSourceFile: /src/opendal/core/services/azdls/src/writer.rs
    functionUses: 1
    functionsReached:
    - OnceCell::new
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(inner: AzdlsWriter) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: get_or_try_init
      Src: /src/opendal/core/services/azdls/src/writer.rs:48,1
    - Dst: create_if_needed
      Src: /src/opendal/core/services/azdls/src/writer.rs:49,1
    - Dst: Ok
      Src: /src/opendal/core/services/azdls/src/writer.rs:51,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 52
      start: 47
    functionDepth: 34
    functionLinenumber: 47
    functionLinenumberEnd: 52
    functionName: AzdlsLazyPositionWriter::ensure_created
    functionSourceFile: /src/opendal/core/services/azdls/src/writer.rs
    functionUses: 2
    functionsReached:
    - get_or_try_init
    - create_if_needed
    - Ok
    linkageType: ''
    returnType: Result
    signature: async fn ensure_created(&self) -> Result<()>
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 4
    argNames:
    - core
    - ctx
    - op
    - path
    argTypes:
    - Arc<AzdlsCore>
    - OperationContext
    - OpWrite
    - String
    constantsTouched: []
    func_position:
      end: 71
      start: 64
    functionDepth: 0
    functionLinenumber: 64
    functionLinenumberEnd: 71
    functionName: AzdlsWriter::new
    functionSourceFile: /src/opendal/core/services/azdls/src/writer.rs
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(core: Arc<AzdlsCore>, ctx: OperationContext, op: OpWrite,
      path: String) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: azdls_create
      Src: /src/opendal/core/services/azdls/src/writer.rs:74,1
    - Dst: status
      Src: /src/opendal/core/services/azdls/src/writer.rs:78,1
    - Dst: Ok
      Src: /src/opendal/core/services/azdls/src/writer.rs:79,1
    - Dst: if_not_exists
      Src: /src/opendal/core/services/azdls/src/writer.rs:80,1
    - Dst: Err
      Src: /src/opendal/core/services/azdls/src/writer.rs:81,1
    - Dst: super::core::parse_error
      Src: /src/opendal/core/services/azdls/src/writer.rs:81,1
    - Dst: Error::with_operation
      Src: /src/opendal/core/services/azdls/src/writer.rs:81,1
    - Dst: Ok
      Src: /src/opendal/core/services/azdls/src/writer.rs:83,1
    - Dst: Err
      Src: /src/opendal/core/services/azdls/src/writer.rs:84,1
    - Dst: super::core::parse_error
      Src: /src/opendal/core/services/azdls/src/writer.rs:84,1
    - Dst: Error::with_operation
      Src: /src/opendal/core/services/azdls/src/writer.rs:84,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 30
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 86
      start: 73
    functionDepth: 33
    functionLinenumber: 73
    functionLinenumberEnd: 86
    functionName: AzdlsWriter::create_if_needed
    functionSourceFile: /src/opendal/core/services/azdls/src/writer.rs
    functionUses: 1
    functionsReached:
    - Error::with_operation
    - status
    - Ok
    - azdls_create
    - Err
    - if_not_exists
    - super::core::parse_error
    linkageType: ''
    returnType: Result
    signature: async fn create_if_needed(&self) -> Result<()>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Metadata::default
      Src: /src/opendal/core/services/azdls/src/writer.rs:89,1
    - Dst: parse_last_modified
      Src: /src/opendal/core/services/azdls/src/writer.rs:91,1
    - Dst: anyhow::Result::set_last_modified
      Src: /src/opendal/core/services/azdls/src/writer.rs:92,1
    - Dst: parse_etag
      Src: /src/opendal/core/services/azdls/src/writer.rs:94,1
    - Dst: anyhow::Result::set_etag
      Src: /src/opendal/core/services/azdls/src/writer.rs:96,1
    - Dst: parse_header_to_str
      Src: /src/opendal/core/services/azdls/src/writer.rs:98,1
    - Dst: anyhow::Result::set_version
      Src: /src/opendal/core/services/azdls/src/writer.rs:100,1
    - Dst: Ok
      Src: /src/opendal/core/services/azdls/src/writer.rs:103,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 23
    argCount: 1
    argNames:
    - headers
    argTypes:
    - '&http::HeaderMap'
    constantsTouched: []
    func_position:
      end: 104
      start: 88
    functionDepth: 39
    functionLinenumber: 88
    functionLinenumberEnd: 104
    functionName: AzdlsWriter::parse_metadata
    functionSourceFile: /src/opendal/core/services/azdls/src/writer.rs
    functionUses: 2
    functionsReached:
    - parse_last_modified
    - Metadata::default
    - Ok
    - anyhow::Result::set_last_modified
    - parse_header_to_str
    - parse_etag
    - anyhow::Result::set_version
    - anyhow::Result::set_etag
    linkageType: ''
    returnType: Result
    signature: 'fn parse_metadata(headers: &http::HeaderMap) -> Result<Metadata>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: io::Result::len
      Src: /src/opendal/core/services/azdls/src/writer.rs:109,1
    - Dst: azdls_append
      Src: /src/opendal/core/services/azdls/src/writer.rs:110,1
    - Dst: Some
      Src: /src/opendal/core/services/azdls/src/writer.rs:112,1
    - Dst: status
      Src: /src/opendal/core/services/azdls/src/writer.rs:115,1
    - Dst: Ok
      Src: /src/opendal/core/services/azdls/src/writer.rs:116,1
    - Dst: Err
      Src: /src/opendal/core/services/azdls/src/writer.rs:117,1
    - Dst: super::core::parse_error
      Src: /src/opendal/core/services/azdls/src/writer.rs:117,1
    - Dst: Error::with_operation
      Src: /src/opendal/core/services/azdls/src/writer.rs:117,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 23
    argCount: 2
    argNames:
    - offset
    - buf
    argTypes:
    - u64
    - Buffer
    constantsTouched: []
    func_position:
      end: 119
      start: 108
    functionDepth: 43
    functionLinenumber: 108
    functionLinenumberEnd: 119
    functionName: AzdlsWriter::write_all_at
    functionSourceFile: /src/opendal/core/services/azdls/src/writer.rs
    functionUses: 0
    functionsReached:
    - Error::with_operation
    - status
    - Ok
    - io::Result::len
    - Some
    - Err
    - super::core::parse_error
    - azdls_append
    linkageType: ''
    returnType: Result
    signature: 'async fn write_all_at(&self, offset: u64, buf: Buffer) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: azdls_flush
      Src: /src/opendal/core/services/azdls/src/writer.rs:123,1
    - Dst: AzdlsWriter::parse_metadata
      Src: /src/opendal/core/services/azdls/src/writer.rs:128,1
    - Dst: headers
      Src: /src/opendal/core/services/azdls/src/writer.rs:128,1
    - Dst: Result::set_content_length
      Src: /src/opendal/core/services/azdls/src/writer.rs:129,1
    - Dst: status
      Src: /src/opendal/core/services/azdls/src/writer.rs:131,1
    - Dst: Ok
      Src: /src/opendal/core/services/azdls/src/writer.rs:132,1
    - Dst: Err
      Src: /src/opendal/core/services/azdls/src/writer.rs:133,1
    - Dst: super::core::parse_error
      Src: /src/opendal/core/services/azdls/src/writer.rs:133,1
    - Dst: Error::with_operation
      Src: /src/opendal/core/services/azdls/src/writer.rs:133,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 25
    argCount: 1
    argNames:
    - size
    argTypes:
    - u64
    constantsTouched: []
    func_position:
      end: 135
      start: 121
    functionDepth: 43
    functionLinenumber: 121
    functionLinenumberEnd: 135
    functionName: AzdlsWriter::close
    functionSourceFile: /src/opendal/core/services/azdls/src/writer.rs
    functionUses: 0
    functionsReached:
    - azdls_flush
    - Error::with_operation
    - status
    - Ok
    - Err
    - Result::set_content_length
    - headers
    - AzdlsWriter::parse_metadata
    - super::core::parse_error
    linkageType: ''
    returnType: Result
    signature: 'async fn close(&self, size: u64) -> Result<Metadata>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/core/services/azdls/src/writer.rs:138,1
    - Dst: Error::new
      Src: /src/opendal/core/services/azdls/src/writer.rs:138,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 142
      start: 137
    functionDepth: 36
    functionLinenumber: 137
    functionLinenumberEnd: 142
    functionName: AzdlsWriter::abort
    functionSourceFile: /src/opendal/core/services/azdls/src/writer.rs
    functionUses: 0
    functionsReached:
    - Error::new
    - Err
    linkageType: ''
    returnType: Result
    signature: async fn abort(&self) -> Result<()>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: AzdlsLazyPositionWriter::ensure_created
      Src: /src/opendal/core/services/azdls/src/writer.rs:147,1
    - Dst: write_all_at
      Src: /src/opendal/core/services/azdls/src/writer.rs:148,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 2
    argNames:
    - offset
    - buf
    argTypes:
    - u64
    - Buffer
    constantsTouched: []
    func_position:
      end: 149
      start: 146
    functionDepth: 35
    functionLinenumber: 146
    functionLinenumberEnd: 149
    functionName: AzdlsLazyPositionWriter::write_all_at
    functionSourceFile: /src/opendal/core/services/azdls/src/writer.rs
    functionUses: 0
    functionsReached:
    - AzdlsLazyPositionWriter::ensure_created
    - write_all_at
    linkageType: ''
    returnType: Result
    signature: 'async fn write_all_at(&self, offset: u64, buf: Buffer) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: AzdlsLazyPositionWriter::ensure_created
      Src: /src/opendal/core/services/azdls/src/writer.rs:152,1
    - Dst: close
      Src: /src/opendal/core/services/azdls/src/writer.rs:153,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 1
    argNames:
    - size
    argTypes:
    - u64
    constantsTouched: []
    func_position:
      end: 154
      start: 151
    functionDepth: 35
    functionLinenumber: 151
    functionLinenumberEnd: 154
    functionName: AzdlsLazyPositionWriter::close
    functionSourceFile: /src/opendal/core/services/azdls/src/writer.rs
    functionUses: 0
    functionsReached:
    - AzdlsLazyPositionWriter::ensure_created
    - close
    linkageType: ''
    returnType: Result
    signature: 'async fn close(&self, size: u64) -> Result<Metadata>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: abort
      Src: /src/opendal/core/services/azdls/src/writer.rs:157,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 158
      start: 156
    functionDepth: 31
    functionLinenumber: 156
    functionLinenumberEnd: 158
    functionName: AzdlsLazyPositionWriter::abort
    functionSourceFile: /src/opendal/core/services/azdls/src/writer.rs
    functionUses: 0
    functionsReached:
    - abort
    linkageType: ''
    returnType: Result
    signature: async fn abort(&self) -> Result<()>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: azdls_get_properties
      Src: /src/opendal/core/services/azdls/src/writer.rs:163,1
    - Dst: status
      Src: /src/opendal/core/services/azdls/src/writer.rs:168,1
    - Dst: headers
      Src: /src/opendal/core/services/azdls/src/writer.rs:169,1
    - Dst: Ok
      Src: /src/opendal/core/services/azdls/src/writer.rs:172,1
    - Dst: parse_content_length
      Src: /src/opendal/core/services/azdls/src/writer.rs:172,1
    - Dst: unwrap_or_default
      Src: /src/opendal/core/services/azdls/src/writer.rs:172,1
    - Dst: Ok
      Src: /src/opendal/core/services/azdls/src/writer.rs:173,1
    - Dst: Err
      Src: /src/opendal/core/services/azdls/src/writer.rs:174,1
    - Dst: super::core::parse_error
      Src: /src/opendal/core/services/azdls/src/writer.rs:174,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 23
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 176
      start: 162
    functionDepth: 39
    functionLinenumber: 162
    functionLinenumberEnd: 176
    functionName: AzdlsWriter::offset
    functionSourceFile: /src/opendal/core/services/azdls/src/writer.rs
    functionUses: 0
    functionsReached:
    - status
    - Ok
    - azdls_get_properties
    - Err
    - parse_content_length
    - headers
    - super::core::parse_error
    - unwrap_or_default
    linkageType: ''
    returnType: Result
    signature: async fn offset(&self) -> Result<u64>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: AzdlsWriter::create_if_needed
      Src: /src/opendal/core/services/azdls/src/writer.rs:181,1
    - Dst: azdls_append
      Src: /src/opendal/core/services/azdls/src/writer.rs:185,1
    - Dst: Some
      Src: /src/opendal/core/services/azdls/src/writer.rs:187,1
    - Dst: AzdlsWriter::parse_metadata
      Src: /src/opendal/core/services/azdls/src/writer.rs:190,1
    - Dst: headers
      Src: /src/opendal/core/services/azdls/src/writer.rs:190,1
    - Dst: parse_content_md5
      Src: /src/opendal/core/services/azdls/src/writer.rs:191,1
    - Dst: headers
      Src: /src/opendal/core/services/azdls/src/writer.rs:191,1
    - Dst: Result::set_content_md5
      Src: /src/opendal/core/services/azdls/src/writer.rs:193,1
    - Dst: Result::set_content_length
      Src: /src/opendal/core/services/azdls/src/writer.rs:195,1
    - Dst: status
      Src: /src/opendal/core/services/azdls/src/writer.rs:197,1
    - Dst: Ok
      Src: /src/opendal/core/services/azdls/src/writer.rs:198,1
    - Dst: Err
      Src: /src/opendal/core/services/azdls/src/writer.rs:199,1
    - Dst: super::core::parse_error
      Src: /src/opendal/core/services/azdls/src/writer.rs:199,1
    - Dst: Error::with_operation
      Src: /src/opendal/core/services/azdls/src/writer.rs:199,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 44
    argCount: 3
    argNames:
    - offset
    - size
    - body
    argTypes:
    - u64
    - u64
    - Buffer
    constantsTouched: []
    func_position:
      end: 201
      start: 178
    functionDepth: 34
    functionLinenumber: 178
    functionLinenumberEnd: 201
    functionName: AzdlsWriter::append
    functionSourceFile: /src/opendal/core/services/azdls/src/writer.rs
    functionUses: 0
    functionsReached:
    - parse_content_md5
    - AzdlsWriter::create_if_needed
    - Error::with_operation
    - status
    - Ok
    - Some
    - Err
    - Result::set_content_length
    - headers
    - AzdlsWriter::parse_metadata
    - super::core::parse_error
    - Result::set_content_md5
    - azdls_append
    linkageType: ''
    returnType: Result
    signature: 'async fn append(&self, offset: u64, size: u64, body: Buffer) -> Result<Metadata>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: register::<Azdls>
      Src: /src/opendal/core/services/azdls/src/lib.rs:23,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - registry
    argTypes:
    - '&opendal_core::OperatorRegistry'
    constantsTouched: []
    func_position:
      end: 24
      start: 22
    functionDepth: 0
    functionLinenumber: 22
    functionLinenumberEnd: 24
    functionName: register_azdls_service
    functionSourceFile: /src/opendal/core/services/azdls/src/lib.rs
    functionUses: 1
    functionsReached:
    - register::<Azdls>
    linkageType: ''
    returnType: void
    signature: 'pub fn register_azdls_service(registry: &opendal_core::OperatorRegistry)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Default::default
      Src: /src/opendal/core/services/azdls/src/backend.rs:62,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 1
    argNames:
    - config
    argTypes:
    - AzureConnectionConfig
    constantsTouched: []
    func_position:
      end: 64
      start: 52
    functionDepth: 3
    functionLinenumber: 52
    functionLinenumberEnd: 64
    functionName: AzdlsConfig::from
    functionSourceFile: /src/opendal/core/services/azdls/src/backend.rs
    functionUses: 1
    functionsReached:
    - Default::default
    linkageType: ''
    returnType: Self
    signature: 'fn from(config: AzureConnectionConfig) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::debug_struct
      Src: /src/opendal/core/services/azdls/src/backend.rs:76,1
    - Dst: field
      Src: /src/opendal/core/services/azdls/src/backend.rs:76,1
    - Dst: finish_non_exhaustive
      Src: /src/opendal/core/services/azdls/src/backend.rs:76,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - f
    argTypes:
    - '&mut std::fmt::Formatter<''_>'
    constantsTouched: []
    func_position:
      end: 79
      start: 75
    functionDepth: 5
    functionLinenumber: 75
    functionLinenumberEnd: 79
    functionName: AzdlsBuilder::fmt
    functionSourceFile: /src/opendal/core/services/azdls/src/backend.rs
    functionUses: 0
    functionsReached:
    - field
    - Result::debug_struct
    - finish_non_exhaustive
    linkageType: ''
    returnType: std::fmt::Result
    signature: 'fn fmt(&self, f: &mut std::fmt::Formatter<''_>) -> std::fmt::Result'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::is_empty
      Src: /src/opendal/core/services/azdls/src/backend.rs:87,1
    - Dst: Some
      Src: /src/opendal/core/services/azdls/src/backend.rs:90,1
    - Dst: Result::to_string
      Src: /src/opendal/core/services/azdls/src/backend.rs:90,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - root
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 94
      start: 86
    functionDepth: 4
    functionLinenumber: 86
    functionLinenumberEnd: 94
    functionName: AzdlsBuilder::root
    functionSourceFile: /src/opendal/core/services/azdls/src/backend.rs
    functionUses: 0
    functionsReached:
    - Result::is_empty
    - Result::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn root(mut self, root: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self::to_string
      Src: /src/opendal/core/services/azdls/src/backend.rs:98,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - filesystem
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 101
      start: 97
    functionDepth: 2
    functionLinenumber: 97
    functionLinenumberEnd: 101
    functionName: AzdlsBuilder::filesystem
    functionSourceFile: /src/opendal/core/services/azdls/src/backend.rs
    functionUses: 0
    functionsReached:
    - Self::to_string
    linkageType: ''
    returnType: Self
    signature: 'pub fn filesystem(mut self, filesystem: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self::is_empty
      Src: /src/opendal/core/services/azdls/src/backend.rs:110,1
    - Dst: Some
      Src: /src/opendal/core/services/azdls/src/backend.rs:112,1
    - Dst: Self::trim_end_matches
      Src: /src/opendal/core/services/azdls/src/backend.rs:112,1
    - Dst: to_string
      Src: /src/opendal/core/services/azdls/src/backend.rs:112,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 14
    argCount: 1
    argNames:
    - endpoint
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 116
      start: 109
    functionDepth: 4
    functionLinenumber: 109
    functionLinenumberEnd: 116
    functionName: AzdlsBuilder::endpoint
    functionSourceFile: /src/opendal/core/services/azdls/src/backend.rs
    functionUses: 0
    functionsReached:
    - Self::is_empty
    - to_string
    - Self::trim_end_matches
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn endpoint(mut self, endpoint: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self::is_empty
      Src: /src/opendal/core/services/azdls/src/backend.rs:123,1
    - Dst: Some
      Src: /src/opendal/core/services/azdls/src/backend.rs:124,1
    - Dst: Self::to_string
      Src: /src/opendal/core/services/azdls/src/backend.rs:124,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 1
    argNames:
    - account_name
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 128
      start: 122
    functionDepth: 4
    functionLinenumber: 122
    functionLinenumberEnd: 128
    functionName: AzdlsBuilder::account_name
    functionSourceFile: /src/opendal/core/services/azdls/src/backend.rs
    functionUses: 0
    functionsReached:
    - Self::is_empty
    - Self::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn account_name(mut self, account_name: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self::is_empty
      Src: /src/opendal/core/services/azdls/src/backend.rs:135,1
    - Dst: Some
      Src: /src/opendal/core/services/azdls/src/backend.rs:136,1
    - Dst: Self::to_string
      Src: /src/opendal/core/services/azdls/src/backend.rs:136,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 1
    argNames:
    - account_key
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 140
      start: 134
    functionDepth: 4
    functionLinenumber: 134
    functionLinenumberEnd: 140
    functionName: AzdlsBuilder::account_key
    functionSourceFile: /src/opendal/core/services/azdls/src/backend.rs
    functionUses: 0
    functionsReached:
    - Self::is_empty
    - Self::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn account_key(mut self, account_key: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self::is_empty
      Src: /src/opendal/core/services/azdls/src/backend.rs:148,1
    - Dst: Some
      Src: /src/opendal/core/services/azdls/src/backend.rs:149,1
    - Dst: Self::to_string
      Src: /src/opendal/core/services/azdls/src/backend.rs:149,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 1
    argNames:
    - client_secret
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 153
      start: 147
    functionDepth: 4
    functionLinenumber: 147
    functionLinenumberEnd: 153
    functionName: AzdlsBuilder::client_secret
    functionSourceFile: /src/opendal/core/services/azdls/src/backend.rs
    functionUses: 0
    functionsReached:
    - Self::is_empty
    - Self::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn client_secret(mut self, client_secret: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self::is_empty
      Src: /src/opendal/core/services/azdls/src/backend.rs:161,1
    - Dst: Some
      Src: /src/opendal/core/services/azdls/src/backend.rs:162,1
    - Dst: Self::to_string
      Src: /src/opendal/core/services/azdls/src/backend.rs:162,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 1
    argNames:
    - tenant_id
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 166
      start: 160
    functionDepth: 4
    functionLinenumber: 160
    functionLinenumberEnd: 166
    functionName: AzdlsBuilder::tenant_id
    functionSourceFile: /src/opendal/core/services/azdls/src/backend.rs
    functionUses: 0
    functionsReached:
    - Self::is_empty
    - Self::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn tenant_id(mut self, tenant_id: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self::is_empty
      Src: /src/opendal/core/services/azdls/src/backend.rs:174,1
    - Dst: Some
      Src: /src/opendal/core/services/azdls/src/backend.rs:175,1
    - Dst: Self::to_string
      Src: /src/opendal/core/services/azdls/src/backend.rs:175,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 1
    argNames:
    - client_id
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 179
      start: 173
    functionDepth: 4
    functionLinenumber: 173
    functionLinenumberEnd: 179
    functionName: AzdlsBuilder::client_id
    functionSourceFile: /src/opendal/core/services/azdls/src/backend.rs
    functionUses: 0
    functionsReached:
    - Self::is_empty
    - Self::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn client_id(mut self, client_id: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self::is_empty
      Src: /src/opendal/core/services/azdls/src/backend.rs:183,1
    - Dst: Some
      Src: /src/opendal/core/services/azdls/src/backend.rs:184,1
    - Dst: Self::to_string
      Src: /src/opendal/core/services/azdls/src/backend.rs:184,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 1
    argNames:
    - sas_token
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 188
      start: 182
    functionDepth: 4
    functionLinenumber: 182
    functionLinenumberEnd: 188
    functionName: AzdlsBuilder::sas_token
    functionSourceFile: /src/opendal/core/services/azdls/src/backend.rs
    functionUses: 0
    functionsReached:
    - Self::is_empty
    - Self::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn sas_token(mut self, sas_token: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self::is_empty
      Src: /src/opendal/core/services/azdls/src/backend.rs:196,1
    - Dst: Some
      Src: /src/opendal/core/services/azdls/src/backend.rs:197,1
    - Dst: Self::to_string
      Src: /src/opendal/core/services/azdls/src/backend.rs:197,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 1
    argNames:
    - authority_host
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 201
      start: 195
    functionDepth: 4
    functionLinenumber: 195
    functionLinenumberEnd: 201
    functionName: AzdlsBuilder::authority_host
    functionSourceFile: /src/opendal/core/services/azdls/src/backend.rs
    functionUses: 0
    functionsReached:
    - Self::is_empty
    - Self::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn authority_host(mut self, authority_host: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: opendal_service_azure_common::azure_config_from_connection_string
      Src: /src/opendal/core/services/azdls/src/backend.rs:225,1
    - Dst: Ok
      Src: /src/opendal/core/services/azdls/src/backend.rs:227,1
    - Dst: AzdlsConfig::from
      Src: /src/opendal/core/services/azdls/src/backend.rs:227,1
    - Dst: Self::into_builder
      Src: /src/opendal/core/services/azdls/src/backend.rs:227,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - conn_str
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 228
      start: 224
    functionDepth: 38
    functionLinenumber: 224
    functionLinenumberEnd: 228
    functionName: AzdlsBuilder::from_connection_string
    functionSourceFile: /src/opendal/core/services/azdls/src/backend.rs
    functionUses: 0
    functionsReached:
    - AzdlsConfig::from
    - Self::into_builder
    - opendal_service_azure_common::azure_config_from_connection_string
    - Ok
    linkageType: ''
    returnType: Result
    signature: 'pub fn from_connection_string(conn_str: &str) -> Result<Self>'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - enable
    argTypes:
    - bool
    constantsTouched: []
    func_position:
      end: 234
      start: 231
    functionDepth: 0
    functionLinenumber: 231
    functionLinenumberEnd: 234
    functionName: AzdlsBuilder::enable_hns
    functionSourceFile: /src/opendal/core/services/azdls/src/backend.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: 'pub fn enable_hns(mut self, enable: bool) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: normalize_root
      Src: /src/opendal/core/services/azdls/src/backend.rs:243,1
    - Dst: unwrap_or_default
      Src: /src/opendal/core/services/azdls/src/backend.rs:243,1
    - Dst: is_empty
      Src: /src/opendal/core/services/azdls/src/backend.rs:247,1
    - Dst: Ok
      Src: /src/opendal/core/services/azdls/src/backend.rs:248,1
    - Dst: Err
      Src: /src/opendal/core/services/azdls/src/backend.rs:249,1
    - Dst: Error::new
      Src: /src/opendal/core/services/azdls/src/backend.rs:249,1
    - Dst: Self::with_operation
      Src: /src/opendal/core/services/azdls/src/backend.rs:249,1
    - Dst: Self::with_context
      Src: /src/opendal/core/services/azdls/src/backend.rs:249,1
    - Dst: Ok
      Src: /src/opendal/core/services/azdls/src/backend.rs:256,1
    - Dst: Self::clone
      Src: /src/opendal/core/services/azdls/src/backend.rs:256,1
    - Dst: Self::trim_end_matches
      Src: /src/opendal/core/services/azdls/src/backend.rs:256,1
    - Dst: to_string
      Src: /src/opendal/core/services/azdls/src/backend.rs:256,1
    - Dst: Err
      Src: /src/opendal/core/services/azdls/src/backend.rs:257,1
    - Dst: Error::new
      Src: /src/opendal/core/services/azdls/src/backend.rs:257,1
    - Dst: Self::with_operation
      Src: /src/opendal/core/services/azdls/src/backend.rs:257,1
    - Dst: Self::with_context
      Src: /src/opendal/core/services/azdls/src/backend.rs:257,1
    - Dst: clone
      Src: /src/opendal/core/services/azdls/src/backend.rs:263,1
    - Dst: or_else
      Src: /src/opendal/core/services/azdls/src/backend.rs:263,1
    - Dst: azure_account_name_from_endpoint
      Src: /src/opendal/core/services/azdls/src/backend.rs:267,1
    - Dst: Self::as_str
      Src: /src/opendal/core/services/azdls/src/backend.rs:267,1
    - Dst: std::collections::HashMap::new
      Src: /src/opendal/core/services/azdls/src/backend.rs:269,1
    - Dst: Self::insert
      Src: /src/opendal/core/services/azdls/src/backend.rs:272,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/azdls/src/backend.rs:272,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/azdls/src/backend.rs:272,1
    - Dst: Self::insert
      Src: /src/opendal/core/services/azdls/src/backend.rs:273,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/azdls/src/backend.rs:273,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/azdls/src/backend.rs:273,1
    - Dst: Self::insert
      Src: /src/opendal/core/services/azdls/src/backend.rs:276,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/azdls/src/backend.rs:276,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/azdls/src/backend.rs:276,1
    - Dst: Self::insert
      Src: /src/opendal/core/services/azdls/src/backend.rs:277,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/azdls/src/backend.rs:277,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/azdls/src/backend.rs:277,1
    - Dst: Self::insert
      Src: /src/opendal/core/services/azdls/src/backend.rs:280,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/azdls/src/backend.rs:280,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/azdls/src/backend.rs:280,1
    - Dst: Self::insert
      Src: /src/opendal/core/services/azdls/src/backend.rs:283,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/azdls/src/backend.rs:283,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/azdls/src/backend.rs:283,1
    - Dst: Self::insert
      Src: /src/opendal/core/services/azdls/src/backend.rs:286,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/azdls/src/backend.rs:286,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/azdls/src/backend.rs:286,1
    - Dst: Self::insert
      Src: /src/opendal/core/services/azdls/src/backend.rs:289,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/azdls/src/backend.rs:289,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/azdls/src/backend.rs:289,1
    - Dst: Self::insert
      Src: /src/opendal/core/services/azdls/src/backend.rs:292,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/azdls/src/backend.rs:292,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/azdls/src/backend.rs:292,1
    - Dst: Context::new
      Src: /src/opendal/core/services/azdls/src/backend.rs:296,1
    - Dst: Self::with_file_read
      Src: /src/opendal/core/services/azdls/src/backend.rs:296,1
    - Dst: with_env
      Src: /src/opendal/core/services/azdls/src/backend.rs:296,1
    - Dst: reqsign_core::OsEnv::home_dir
      Src: /src/opendal/core/services/azdls/src/backend.rs:299,1
    - Dst: DefaultCredentialProvider::new
      Src: /src/opendal/core/services/azdls/src/backend.rs:303,1
    - Dst: Self::as_deref
      Src: /src/opendal/core/services/azdls/src/backend.rs:306,1
    - Dst: as_deref
      Src: /src/opendal/core/services/azdls/src/backend.rs:306,1
    - Dst: Self::push_front
      Src: /src/opendal/core/services/azdls/src/backend.rs:308,1
    - Dst: StaticCredentialProvider::new_shared_key
      Src: /src/opendal/core/services/azdls/src/backend.rs:308,1
    - Dst: as_deref
      Src: /src/opendal/core/services/azdls/src/backend.rs:313,1
    - Dst: Self::push_front
      Src: /src/opendal/core/services/azdls/src/backend.rs:314,1
    - Dst: StaticCredentialProvider::new_sas_token
      Src: /src/opendal/core/services/azdls/src/backend.rs:314,1
    - Dst: Signer::new
      Src: /src/opendal/core/services/azdls/src/backend.rs:318,1
    - Dst: ctx::clone
      Src: /src/opendal/core/services/azdls/src/backend.rs:318,1
    - Dst: RequestSigner::new
      Src: /src/opendal/core/services/azdls/src/backend.rs:318,1
    - Dst: ServiceInfo::new
      Src: /src/opendal/core/services/azdls/src/backend.rs:320,1
    - Dst: Default::default
      Src: /src/opendal/core/services/azdls/src/backend.rs:348,1
    - Dst: Ok
      Src: /src/opendal/core/services/azdls/src/backend.rs:351,1
    - Dst: Arc::new
      Src: /src/opendal/core/services/azdls/src/backend.rs:352,1
    - Dst: clone
      Src: /src/opendal/core/services/azdls/src/backend.rs:355,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 203
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 363
      start: 240
    functionDepth: 34
    functionLinenumber: 240
    functionLinenumberEnd: 363
    functionName: AzdlsBuilder::build
    functionSourceFile: /src/opendal/core/services/azdls/src/backend.rs
    functionUses: 0
    functionsReached:
    - Self::trim_end_matches
    - azure_account_name_from_endpoint
    - as_deref
    - Self::push_front
    - Default::default
    - Arc::new
    - clone
    - StaticCredentialProvider::new_shared_key
    - Self::clone
    - Signer::new
    - Self::as_str
    - Self::with_context
    - Result::clone
    - ServiceInfo::new
    - or_else
    - Ok
    - Context::new
    - Self::insert
    - normalize_root
    - '&str::to_string'
    - reqsign_core::OsEnv::home_dir
    - unwrap_or_default
    - RequestSigner::new
    - Self::as_deref
    - std::collections::HashMap::new
    - StaticCredentialProvider::new_sas_token
    - DefaultCredentialProvider::new
    - is_empty
    - to_string
    - with_env
    - ctx::clone
    - Err
    - Error::new
    - Self::with_file_read
    - Self::with_operation
    linkageType: ''
    returnType: Result
    signature: fn build(self) -> Result<impl Service>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: clone
      Src: /src/opendal/core/services/azdls/src/backend.rs:380,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 381
      start: 379
    functionDepth: 2
    functionLinenumber: 379
    functionLinenumberEnd: 381
    functionName: AzdlsBackend::info
    functionSourceFile: /src/opendal/core/services/azdls/src/backend.rs
    functionUses: 0
    functionsReached:
    - clone
    linkageType: ''
    returnType: ServiceInfo
    signature: fn info(&self) -> ServiceInfo
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 385
      start: 383
    functionDepth: 0
    functionLinenumber: 383
    functionLinenumberEnd: 385
    functionName: AzdlsBackend::capability
    functionSourceFile: /src/opendal/core/services/azdls/src/backend.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Capability
    signature: fn capability(&self) -> Capability
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: azdls_create
      Src: /src/opendal/core/services/azdls/src/backend.rs:393,1
    - Dst: OpWrite::default
      Src: /src/opendal/core/services/azdls/src/backend.rs:395,1
    - Dst: status
      Src: /src/opendal/core/services/azdls/src/backend.rs:398,1
    - Dst: Ok
      Src: /src/opendal/core/services/azdls/src/backend.rs:400,1
    - Dst: RpCreateDir::default
      Src: /src/opendal/core/services/azdls/src/backend.rs:400,1
    - Dst: Err
      Src: /src/opendal/core/services/azdls/src/backend.rs:401,1
    - Dst: super::core::parse_error
      Src: /src/opendal/core/services/azdls/src/backend.rs:401,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 3
    argNames:
    - ctx
    - path
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpCreateDir
    constantsTouched: []
    func_position:
      end: 403
      start: 387
    functionDepth: 33
    functionLinenumber: 387
    functionLinenumberEnd: 403
    functionName: AzdlsBackend::create_dir
    functionSourceFile: /src/opendal/core/services/azdls/src/backend.rs
    functionUses: 0
    functionsReached:
    - status
    - RpCreateDir::default
    - Ok
    - OpWrite::default
    - azdls_create
    - Err
    - super::core::parse_error
    linkageType: ''
    returnType: Result
    signature: 'async fn create_dir(&self,ctx: &OperationContext,path: &str,_: OpCreateDir,)
      -> Result<RpCreateDir>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/core/services/azdls/src/backend.rs:409,1
    - Dst: RpStat::new
      Src: /src/opendal/core/services/azdls/src/backend.rs:409,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/azdls/src/backend.rs:409,1
    - Dst: azdls_stat_metadata
      Src: /src/opendal/core/services/azdls/src/backend.rs:412,1
    - Dst: Ok
      Src: /src/opendal/core/services/azdls/src/backend.rs:413,1
    - Dst: RpStat::new
      Src: /src/opendal/core/services/azdls/src/backend.rs:413,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 3
    argNames:
    - ctx
    - path
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpStat
    constantsTouched: []
    func_position:
      end: 414
      start: 405
    functionDepth: 40
    functionLinenumber: 405
    functionLinenumberEnd: 414
    functionName: AzdlsBackend::stat
    functionSourceFile: /src/opendal/core/services/azdls/src/backend.rs
    functionUses: 0
    functionsReached:
    - Metadata::new
    - RpStat::new
    - azdls_stat_metadata
    - Ok
    linkageType: ''
    returnType: Result
    signature: 'async fn stat(&self, ctx: &OperationContext, path: &str, _: OpStat)
      -> Result<RpStat>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/core/services/azdls/src/backend.rs:417,1
    - Dst: oio::StreamReader::new
      Src: /src/opendal/core/services/azdls/src/backend.rs:417,1
    - Dst: AzdlsReader::new
      Src: /src/opendal/core/services/azdls/src/backend.rs:417,1
    - Dst: AzdlsBackend::clone
      Src: /src/opendal/core/services/azdls/src/backend.rs:418,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/azdls/src/backend.rs:419,1
    - Dst: Ok
      Src: /src/opendal/core/services/azdls/src/backend.rs:425,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpRead
    constantsTouched: []
    func_position:
      end: 426
      start: 415
    functionDepth: 3
    functionLinenumber: 415
    functionLinenumberEnd: 426
    functionName: AzdlsBackend::read
    functionSourceFile: /src/opendal/core/services/azdls/src/backend.rs
    functionUses: 0
    functionsReached:
    - Result::clone
    - Ok
    - oio::StreamReader::new
    - AzdlsBackend::clone
    - AzdlsReader::new
    linkageType: ''
    returnType: Result
    signature: 'fn read(&self, ctx: &OperationContext, path: &str, args: OpRead) ->
      Result<Self::Reader>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: OpStat::append
      Src: /src/opendal/core/services/azdls/src/backend.rs:430,1
    - Dst: AzdlsWriter::new
      Src: /src/opendal/core/services/azdls/src/backend.rs:431,1
    - Dst: clone
      Src: /src/opendal/core/services/azdls/src/backend.rs:432,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/azdls/src/backend.rs:433,1
    - Dst: OpStat::clone
      Src: /src/opendal/core/services/azdls/src/backend.rs:434,1
    - Dst: to_string
      Src: /src/opendal/core/services/azdls/src/backend.rs:435,1
    - Dst: Ok
      Src: /src/opendal/core/services/azdls/src/backend.rs:437,1
    - Dst: AzdlsWriters::Two
      Src: /src/opendal/core/services/azdls/src/backend.rs:437,1
    - Dst: oio::AppendWriter::new
      Src: /src/opendal/core/services/azdls/src/backend.rs:437,1
    - Dst: AzdlsWriter::new
      Src: /src/opendal/core/services/azdls/src/backend.rs:439,1
    - Dst: clone
      Src: /src/opendal/core/services/azdls/src/backend.rs:440,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/azdls/src/backend.rs:441,1
    - Dst: OpStat::clone
      Src: /src/opendal/core/services/azdls/src/backend.rs:442,1
    - Dst: to_string
      Src: /src/opendal/core/services/azdls/src/backend.rs:443,1
    - Dst: oio::PositionWriter::new
      Src: /src/opendal/core/services/azdls/src/backend.rs:445,1
    - Dst: Result::executor
      Src: /src/opendal/core/services/azdls/src/backend.rs:446,1
    - Dst: Self::clone
      Src: /src/opendal/core/services/azdls/src/backend.rs:446,1
    - Dst: AzdlsLazyPositionWriter::new
      Src: /src/opendal/core/services/azdls/src/backend.rs:447,1
    - Dst: OpStat::concurrent
      Src: /src/opendal/core/services/azdls/src/backend.rs:448,1
    - Dst: Ok
      Src: /src/opendal/core/services/azdls/src/backend.rs:450,1
    - Dst: AzdlsWriters::One
      Src: /src/opendal/core/services/azdls/src/backend.rs:450,1
    - Dst: Ok
      Src: /src/opendal/core/services/azdls/src/backend.rs:454,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 39
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpWrite
    constantsTouched: []
    func_position:
      end: 455
      start: 428
    functionDepth: 31
    functionLinenumber: 428
    functionLinenumberEnd: 455
    functionName: AzdlsBackend::write
    functionSourceFile: /src/opendal/core/services/azdls/src/backend.rs
    functionUses: 0
    functionsReached:
    - Result::clone
    - OpStat::clone
    - to_string
    - Ok
    - AzdlsWriters::One
    - Result::executor
    - clone
    - AzdlsWriter::new
    - AzdlsWriters::Two
    - OpStat::append
    - AzdlsLazyPositionWriter::new
    - oio::PositionWriter::new
    - Self::clone
    - OpStat::concurrent
    - oio::AppendWriter::new
    linkageType: ''
    returnType: Result
    signature: 'fn write(&self, ctx: &OperationContext, path: &str, args: OpWrite)
      -> Result<Self::Writer>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/core/services/azdls/src/backend.rs:459,1
    - Dst: oio::OneShotDeleter::new
      Src: /src/opendal/core/services/azdls/src/backend.rs:459,1
    - Dst: AzdlsDeleter::new
      Src: /src/opendal/core/services/azdls/src/backend.rs:459,1
    - Dst: clone
      Src: /src/opendal/core/services/azdls/src/backend.rs:460,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/azdls/src/backend.rs:461,1
    - Dst: Ok
      Src: /src/opendal/core/services/azdls/src/backend.rs:465,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - '&OperationContext'
    constantsTouched: []
    func_position:
      end: 466
      start: 457
    functionDepth: 2
    functionLinenumber: 457
    functionLinenumberEnd: 466
    functionName: AzdlsBackend::delete
    functionSourceFile: /src/opendal/core/services/azdls/src/backend.rs
    functionUses: 0
    functionsReached:
    - oio::OneShotDeleter::new
    - Result::clone
    - AzdlsDeleter::new
    - Ok
    - clone
    linkageType: ''
    returnType: Result
    signature: 'fn delete(&self, ctx: &OperationContext) -> Result<Self::Deleter>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: AzdlsLister::new
      Src: /src/opendal/core/services/azdls/src/backend.rs:470,1
    - Dst: clone
      Src: /src/opendal/core/services/azdls/src/backend.rs:471,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/azdls/src/backend.rs:472,1
    - Dst: to_string
      Src: /src/opendal/core/services/azdls/src/backend.rs:473,1
    - Dst: OpStat::limit
      Src: /src/opendal/core/services/azdls/src/backend.rs:474,1
    - Dst: Ok
      Src: /src/opendal/core/services/azdls/src/backend.rs:477,1
    - Dst: oio::PageLister::new
      Src: /src/opendal/core/services/azdls/src/backend.rs:477,1
    - Dst: Ok
      Src: /src/opendal/core/services/azdls/src/backend.rs:480,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 14
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpList
    constantsTouched: []
    func_position:
      end: 481
      start: 468
    functionDepth: 36
    functionLinenumber: 468
    functionLinenumberEnd: 481
    functionName: AzdlsBackend::list
    functionSourceFile: /src/opendal/core/services/azdls/src/backend.rs
    functionUses: 0
    functionsReached:
    - Result::clone
    - to_string
    - Ok
    - clone
    - AzdlsLister::new
    - oio::PageLister::new
    - OpStat::limit
    linkageType: ''
    returnType: Result
    signature: 'fn list(&self, ctx: &OperationContext, path: &str, args: OpList) ->
      Result<Self::Lister>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/core/services/azdls/src/backend.rs:491,1
    - Dst: Error::new
      Src: /src/opendal/core/services/azdls/src/backend.rs:491,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 5
    argNames:
    - _ctx
    - _from
    - _to
    - _args
    - _opts
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    - OpCopy
    - OpCopier
    constantsTouched: []
    func_position:
      end: 495
      start: 483
    functionDepth: 36
    functionLinenumber: 483
    functionLinenumberEnd: 495
    functionName: AzdlsBackend::copy
    functionSourceFile: /src/opendal/core/services/azdls/src/backend.rs
    functionUses: 0
    functionsReached:
    - Error::new
    - Err
    linkageType: ''
    returnType: Result
    signature: 'fn copy(&self,_ctx: &OperationContext,_from: &str,_to: &str,_args:
      OpCopy,_opts: OpCopier,) -> Result<Self::Copier>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: azdls_ensure_parent_path
      Src: /src/opendal/core/services/azdls/src/backend.rs:504,1
    - Dst: status
      Src: /src/opendal/core/services/azdls/src/backend.rs:505,1
    - Dst: Err
      Src: /src/opendal/core/services/azdls/src/backend.rs:508,1
    - Dst: super::core::parse_error
      Src: /src/opendal/core/services/azdls/src/backend.rs:508,1
    - Dst: azdls_rename
      Src: /src/opendal/core/services/azdls/src/backend.rs:512,1
    - Dst: status
      Src: /src/opendal/core/services/azdls/src/backend.rs:514,1
    - Dst: Ok
      Src: /src/opendal/core/services/azdls/src/backend.rs:517,1
    - Dst: RpRename::default
      Src: /src/opendal/core/services/azdls/src/backend.rs:517,1
    - Dst: Err
      Src: /src/opendal/core/services/azdls/src/backend.rs:518,1
    - Dst: super::core::parse_error
      Src: /src/opendal/core/services/azdls/src/backend.rs:518,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 27
    argCount: 4
    argNames:
    - ctx
    - from
    - to
    - _args
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    - OpRename
    constantsTouched: []
    func_position:
      end: 520
      start: 497
    functionDepth: 37
    functionLinenumber: 497
    functionLinenumberEnd: 520
    functionName: AzdlsBackend::rename
    functionSourceFile: /src/opendal/core/services/azdls/src/backend.rs
    functionUses: 0
    functionsReached:
    - status
    - Ok
    - azdls_rename
    - Err
    - azdls_ensure_parent_path
    - RpRename::default
    - super::core::parse_error
    linkageType: ''
    returnType: Result
    signature: 'async fn rename(&self,ctx: &OperationContext,from: &str,to: &str,_args:
      OpRename,) -> Result<RpRename>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/core/services/azdls/src/backend.rs:528,1
    - Dst: Error::new
      Src: /src/opendal/core/services/azdls/src/backend.rs:528,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - _ctx
    - _path
    - _args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpPresign
    constantsTouched: []
    func_position:
      end: 532
      start: 522
    functionDepth: 36
    functionLinenumber: 522
    functionLinenumberEnd: 532
    functionName: AzdlsBackend::presign
    functionSourceFile: /src/opendal/core/services/azdls/src/backend.rs
    functionUses: 0
    functionsReached:
    - Error::new
    - Err
    linkageType: ''
    returnType: Result
    signature: 'async fn presign(&self,_ctx: &OperationContext,_path: &str,_args:
      OpPresign,) -> Result<RpPresign>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::debug_struct
      Src: /src/opendal/core/services/vercel-artifacts/src/config.rs:46,1
    - Dst: finish_non_exhaustive
      Src: /src/opendal/core/services/vercel-artifacts/src/config.rs:46,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - f
    argTypes:
    - '&mut std::fmt::Formatter<''_>'
    constantsTouched: []
    func_position:
      end: 48
      start: 45
    functionDepth: 0
    functionLinenumber: 45
    functionLinenumberEnd: 48
    functionName: VercelArtifactsConfig::fmt
    functionSourceFile: /src/opendal/core/services/vercel-artifacts/src/config.rs
    functionUses: 0
    functionsReached:
    - Result::debug_struct
    - finish_non_exhaustive
    linkageType: ''
    returnType: std::fmt::Result
    signature: 'fn fmt(&self, f: &mut std::fmt::Formatter<''_>) -> std::fmt::Result'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self::from_iter
      Src: /src/opendal/core/services/vercel-artifacts/src/config.rs:55,1
    - Dst: Result::options
      Src: /src/opendal/core/services/vercel-artifacts/src/config.rs:55,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/vercel-artifacts/src/config.rs:55,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - uri
    argTypes:
    - '&opendal_core::OperatorUri'
    constantsTouched: []
    func_position:
      end: 56
      start: 54
    functionDepth: 37
    functionLinenumber: 54
    functionLinenumberEnd: 56
    functionName: VercelArtifactsConfig::from_uri
    functionSourceFile: /src/opendal/core/services/vercel-artifacts/src/config.rs
    functionUses: 2
    functionsReached:
    - Result::clone
    - Self::from_iter
    - Result::options
    linkageType: ''
    returnType: opendal_core::Result
    signature: 'fn from_uri(uri: &opendal_core::OperatorUri) -> opendal_core::Result<Self>'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 60
      start: 58
    functionDepth: 0
    functionLinenumber: 58
    functionLinenumberEnd: 60
    functionName: VercelArtifactsConfig::into_builder
    functionSourceFile: /src/opendal/core/services/vercel-artifacts/src/config.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Self::Builder
    signature: fn into_builder(self) -> Self::Builder
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: OperatorUri::new
      Src: /src/opendal/core/services/vercel-artifacts/src/config.rs:71,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/services/vercel-artifacts/src/config.rs:71,1
    - Dst: VercelArtifactsConfig::from_uri
      Src: /src/opendal/core/services/vercel-artifacts/src/config.rs:77,1
    - Dst: opendal_core::Result::unwrap
      Src: /src/opendal/core/services/vercel-artifacts/src/config.rs:77,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 79
      start: 70
    functionDepth: 29
    functionLinenumber: 70
    functionLinenumberEnd: 79
    functionName: tests::from_uri_loads_access_token
    functionSourceFile: /src/opendal/core/services/vercel-artifacts/src/config.rs
    functionUses: 0
    functionsReached:
    - OperatorUri::new
    - Result::unwrap
    - opendal_core::Result::unwrap
    - VercelArtifactsConfig::from_uri
    linkageType: ''
    returnType: void
    signature: fn from_uri_loads_access_token()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: OperatorUri::new
      Src: /src/opendal/core/services/vercel-artifacts/src/config.rs:83,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/services/vercel-artifacts/src/config.rs:83,1
    - Dst: VercelArtifactsConfig::from_uri
      Src: /src/opendal/core/services/vercel-artifacts/src/config.rs:97,1
    - Dst: opendal_core::Result::unwrap
      Src: /src/opendal/core/services/vercel-artifacts/src/config.rs:97,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 105
      start: 82
    functionDepth: 29
    functionLinenumber: 82
    functionLinenumberEnd: 105
    functionName: tests::from_uri_loads_all_options
    functionSourceFile: /src/opendal/core/services/vercel-artifacts/src/config.rs
    functionUses: 0
    functionsReached:
    - OperatorUri::new
    - Result::unwrap
    - opendal_core::Result::unwrap
    - VercelArtifactsConfig::from_uri
    linkageType: ''
    returnType: void
    signature: fn from_uri_loads_all_options()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: VercelArtifactsConfig::default
      Src: /src/opendal/core/services/vercel-artifacts/src/config.rs:109,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 114
      start: 108
    functionDepth: 3
    functionLinenumber: 108
    functionLinenumberEnd: 114
    functionName: tests::defaults_are_none
    functionSourceFile: /src/opendal/core/services/vercel-artifacts/src/config.rs
    functionUses: 0
    functionsReached:
    - VercelArtifactsConfig::default
    linkageType: ''
    returnType: void
    signature: fn defaults_are_none()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: to_string
      Src: /src/opendal/core/services/vercel-artifacts/src/reader.rs:43,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 4
    argNames:
    - backend
    - ctx
    - path
    - args
    argTypes:
    - VercelArtifactsBackend
    - OperationContext
    - '&str'
    - OpRead
    constantsTouched: []
    func_position:
      end: 46
      start: 34
    functionDepth: 2
    functionLinenumber: 34
    functionLinenumberEnd: 46
    functionName: VercelArtifactsReader::new
    functionSourceFile: /src/opendal/core/services/vercel-artifacts/src/reader.rs
    functionUses: 1
    functionsReached:
    - to_string
    linkageType: ''
    returnType: Self
    signature: 'pub(super) fn new(backend: VercelArtifactsBackend,ctx: OperationContext,path:
      &str,args: OpRead,) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: as_str
      Src: /src/opendal/core/services/vercel-artifacts/src/reader.rs:52,1
    - Dst: clone
      Src: /src/opendal/core/services/vercel-artifacts/src/reader.rs:53,1
    - Dst: vercel_artifacts_get
      Src: /src/opendal/core/services/vercel-artifacts/src/reader.rs:54,1
    - Dst: status
      Src: /src/opendal/core/services/vercel-artifacts/src/reader.rs:59,1
    - Dst: RpRead::new
      Src: /src/opendal/core/services/vercel-artifacts/src/reader.rs:63,1
    - Dst: parse_into_metadata
      Src: /src/opendal/core/services/vercel-artifacts/src/reader.rs:63,1
    - Dst: headers
      Src: /src/opendal/core/services/vercel-artifacts/src/reader.rs:63,1
    - Dst: into_body
      Src: /src/opendal/core/services/vercel-artifacts/src/reader.rs:64,1
    - Dst: into_parts
      Src: /src/opendal/core/services/vercel-artifacts/src/reader.rs:67,1
    - Dst: to_buffer
      Src: /src/opendal/core/services/vercel-artifacts/src/reader.rs:68,1
    - Dst: Err
      Src: /src/opendal/core/services/vercel-artifacts/src/reader.rs:69,1
    - Dst: super::core::parse_error
      Src: /src/opendal/core/services/vercel-artifacts/src/reader.rs:69,1
    - Dst: Response::from_parts
      Src: /src/opendal/core/services/vercel-artifacts/src/reader.rs:69,1
    - Dst: Ok
      Src: /src/opendal/core/services/vercel-artifacts/src/reader.rs:73,1
    - Dst: Box::new
      Src: /src/opendal/core/services/vercel-artifacts/src/reader.rs:73,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 42
    argCount: 1
    argNames:
    - range
    argTypes:
    - BytesRange
    constantsTouched: []
    func_position:
      end: 74
      start: 50
    functionDepth: 38
    functionLinenumber: 50
    functionLinenumberEnd: 74
    functionName: VercelArtifactsReader::open
    functionSourceFile: /src/opendal/core/services/vercel-artifacts/src/reader.rs
    functionUses: 0
    functionsReached:
    - vercel_artifacts_get
    - parse_into_metadata
    - to_buffer
    - status
    - Ok
    - Box::new
    - into_body
    - clone
    - Err
    - Response::from_parts
    - as_str
    - headers
    - into_parts
    - RpRead::new
    - super::core::parse_error
    linkageType: ''
    returnType: Result
    signature: 'async fn open(&self, range: BytesRange) -> Result<(RpRead, Box<dyn
      oio::ReadStreamDyn>)>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::debug_struct
      Src: /src/opendal/core/services/vercel-artifacts/src/core.rs:37,1
    - Dst: finish_non_exhaustive
      Src: /src/opendal/core/services/vercel-artifacts/src/core.rs:37,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - f
    argTypes:
    - '&mut std::fmt::Formatter<''_>'
    constantsTouched: []
    func_position:
      end: 39
      start: 36
    functionDepth: 0
    functionLinenumber: 36
    functionLinenumberEnd: 39
    functionName: VercelArtifactsCore::fmt
    functionSourceFile: /src/opendal/core/services/vercel-artifacts/src/core.rs
    functionUses: 0
    functionsReached:
    - Result::debug_struct
    - finish_non_exhaustive
    linkageType: ''
    returnType: std::fmt::Result
    signature: 'fn fmt(&self, f: &mut std::fmt::Formatter<''_>) -> std::fmt::Result'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Request::get
      Src: /src/opendal/core/services/vercel-artifacts/src/core.rs:57,1
    - Dst: (Vec::is_full
      Src: /src/opendal/core/services/vercel-artifacts/src/core.rs:59,1
    - Dst: Option::header
      Src: /src/opendal/core/services/vercel-artifacts/src/core.rs:60,1
    - Dst: (Vec::to_header
      Src: /src/opendal/core/services/vercel-artifacts/src/core.rs:60,1
    - Dst: Option::header
      Src: /src/opendal/core/services/vercel-artifacts/src/core.rs:64,1
    - Dst: Option::extension
      Src: /src/opendal/core/services/vercel-artifacts/src/core.rs:66,1
    - Dst: extension
      Src: /src/opendal/core/services/vercel-artifacts/src/core.rs:66,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/vercel-artifacts/src/core.rs:68,1
    - Dst: Option::body
      Src: /src/opendal/core/services/vercel-artifacts/src/core.rs:70,1
    - Dst: Buffer::new
      Src: /src/opendal/core/services/vercel-artifacts/src/core.rs:70,1
    - Dst: map_err
      Src: /src/opendal/core/services/vercel-artifacts/src/core.rs:70,1
    - Dst: Result::http_transport
      Src: /src/opendal/core/services/vercel-artifacts/src/core.rs:72,1
    - Dst: Self::fetch
      Src: /src/opendal/core/services/vercel-artifacts/src/core.rs:72,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 35
    argCount: 4
    argNames:
    - ctx
    - hash
    - range
    argTypes:
    - '&OperationContext'
    - '&str'
    - BytesRange
    - '&OpRead'
    constantsTouched: []
    func_position:
      end: 73
      start: 43
    functionDepth: 3
    functionLinenumber: 43
    functionLinenumberEnd: 73
    functionName: VercelArtifactsCore::vercel_artifacts_get
    functionSourceFile: /src/opendal/core/services/vercel-artifacts/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - extension
    - Request::get
    - (Vec::to_header
    - Buffer::new
    - (Vec::is_full
    - Option::extension
    - Self::fetch
    - ServiceOperation
    - Result::http_transport
    - Option::body
    - Option::header
    linkageType: ''
    returnType: Result
    signature: 'pub(crate) async fn vercel_artifacts_get(&self,ctx: &OperationContext,hash:
      &str,range: BytesRange,_: &OpRead,) -> Result<Response<HttpBody>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Request::put
      Src: /src/opendal/core/services/vercel-artifacts/src/core.rs:89,1
    - Dst: DeleteInput::header
      Src: /src/opendal/core/services/vercel-artifacts/src/core.rs:92,1
    - Dst: DeleteInput::header
      Src: /src/opendal/core/services/vercel-artifacts/src/core.rs:93,1
    - Dst: DeleteInput::header
      Src: /src/opendal/core/services/vercel-artifacts/src/core.rs:94,1
    - Dst: DeleteInput::extension
      Src: /src/opendal/core/services/vercel-artifacts/src/core.rs:96,1
    - Dst: extension
      Src: /src/opendal/core/services/vercel-artifacts/src/core.rs:96,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/vercel-artifacts/src/core.rs:98,1
    - Dst: DeleteInput::body
      Src: /src/opendal/core/services/vercel-artifacts/src/core.rs:100,1
    - Dst: map_err
      Src: /src/opendal/core/services/vercel-artifacts/src/core.rs:100,1
    - Dst: Result::http_transport
      Src: /src/opendal/core/services/vercel-artifacts/src/core.rs:102,1
    - Dst: Self::send
      Src: /src/opendal/core/services/vercel-artifacts/src/core.rs:102,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 31
    argCount: 4
    argNames:
    - ctx
    - hash
    - size
    - body
    argTypes:
    - '&OperationContext'
    - '&str'
    - u64
    - Buffer
    constantsTouched: []
    func_position:
      end: 103
      start: 75
    functionDepth: 37
    functionLinenumber: 75
    functionLinenumberEnd: 103
    functionName: VercelArtifactsCore::vercel_artifacts_put
    functionSourceFile: /src/opendal/core/services/vercel-artifacts/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - extension
    - Request::put
    - Self::send
    - Result::http_transport
    - DeleteInput::header
    - ServiceOperation
    - DeleteInput::body
    - DeleteInput::extension
    linkageType: ''
    returnType: Result
    signature: 'pub(crate) async fn vercel_artifacts_put(&self,ctx: &OperationContext,hash:
      &str,size: u64,body: Buffer,) -> Result<Response<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Request::head
      Src: /src/opendal/core/services/vercel-artifacts/src/core.rs:117,1
    - Dst: Result::header
      Src: /src/opendal/core/services/vercel-artifacts/src/core.rs:120,1
    - Dst: Result::header
      Src: /src/opendal/core/services/vercel-artifacts/src/core.rs:121,1
    - Dst: Result::extension
      Src: /src/opendal/core/services/vercel-artifacts/src/core.rs:123,1
    - Dst: extension
      Src: /src/opendal/core/services/vercel-artifacts/src/core.rs:123,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/vercel-artifacts/src/core.rs:125,1
    - Dst: Result::body
      Src: /src/opendal/core/services/vercel-artifacts/src/core.rs:127,1
    - Dst: Buffer::new
      Src: /src/opendal/core/services/vercel-artifacts/src/core.rs:127,1
    - Dst: map_err
      Src: /src/opendal/core/services/vercel-artifacts/src/core.rs:127,1
    - Dst: Result::http_transport
      Src: /src/opendal/core/services/vercel-artifacts/src/core.rs:129,1
    - Dst: Self::send
      Src: /src/opendal/core/services/vercel-artifacts/src/core.rs:129,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 28
    argCount: 2
    argNames:
    - ctx
    - hash
    argTypes:
    - '&OperationContext'
    - '&str'
    constantsTouched: []
    func_position:
      end: 130
      start: 105
    functionDepth: 38
    functionLinenumber: 105
    functionLinenumberEnd: 130
    functionName: VercelArtifactsCore::vercel_artifacts_stat
    functionSourceFile: /src/opendal/core/services/vercel-artifacts/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - extension
    - Request::head
    - Buffer::new
    - Self::send
    - Result::extension
    - Result::header
    - ServiceOperation
    - Result::body
    - Result::http_transport
    linkageType: ''
    returnType: Result
    signature: 'pub(crate) async fn vercel_artifacts_stat(&self,ctx: &OperationContext,hash:
      &str,) -> Result<Response<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 4
    argNames:
    - core
    - ctx
    - op
    - path
    argTypes:
    - Arc<VercelArtifactsCore>
    - OperationContext
    - OpWrite
    - String
    constantsTouched: []
    func_position:
      end: 48
      start: 36
    functionDepth: 0
    functionLinenumber: 36
    functionLinenumberEnd: 48
    functionName: VercelArtifactsWriter::new
    functionSourceFile: /src/opendal/core/services/vercel-artifacts/src/writer.rs
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(core: Arc<VercelArtifactsCore>,ctx: OperationContext,op:
      OpWrite,path: String,) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: vercel_artifacts_put
      Src: /src/opendal/core/services/vercel-artifacts/src/writer.rs:53,1
    - Dst: as_str
      Src: /src/opendal/core/services/vercel-artifacts/src/writer.rs:55,1
    - Dst: Result::len
      Src: /src/opendal/core/services/vercel-artifacts/src/writer.rs:55,1
    - Dst: status
      Src: /src/opendal/core/services/vercel-artifacts/src/writer.rs:58,1
    - Dst: Ok
      Src: /src/opendal/core/services/vercel-artifacts/src/writer.rs:61,1
    - Dst: Metadata::default
      Src: /src/opendal/core/services/vercel-artifacts/src/writer.rs:61,1
    - Dst: Err
      Src: /src/opendal/core/services/vercel-artifacts/src/writer.rs:62,1
    - Dst: super::core::parse_error
      Src: /src/opendal/core/services/vercel-artifacts/src/writer.rs:62,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 21
    argCount: 1
    argNames:
    - bs
    argTypes:
    - Buffer
    constantsTouched: []
    func_position:
      end: 64
      start: 52
    functionDepth: 38
    functionLinenumber: 52
    functionLinenumberEnd: 64
    functionName: VercelArtifactsWriter::write_once
    functionSourceFile: /src/opendal/core/services/vercel-artifacts/src/writer.rs
    functionUses: 0
    functionsReached:
    - Metadata::default
    - status
    - Ok
    - Err
    - as_str
    - vercel_artifacts_put
    - Result::len
    - super::core::parse_error
    linkageType: ''
    returnType: Result
    signature: 'async fn write_once(&self, bs: Buffer) -> Result<Metadata>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: register::<VercelArtifacts>
      Src: /src/opendal/core/services/vercel-artifacts/src/lib.rs:25,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - registry
    argTypes:
    - '&opendal_core::OperatorRegistry'
    constantsTouched: []
    func_position:
      end: 26
      start: 24
    functionDepth: 0
    functionLinenumber: 24
    functionLinenumberEnd: 26
    functionName: register_vercel_artifacts_service
    functionSourceFile: /src/opendal/core/services/vercel-artifacts/src/lib.rs
    functionUses: 1
    functionsReached:
    - register::<VercelArtifacts>
    linkageType: ''
    returnType: void
    signature: 'pub fn register_vercel_artifacts_service(registry: &opendal_core::OperatorRegistry)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::debug_struct
      Src: /src/opendal/core/services/vercel-artifacts/src/backend.rs:44,1
    - Dst: field
      Src: /src/opendal/core/services/vercel-artifacts/src/backend.rs:44,1
    - Dst: finish_non_exhaustive
      Src: /src/opendal/core/services/vercel-artifacts/src/backend.rs:44,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - f
    argTypes:
    - '&mut std::fmt::Formatter<''_>'
    constantsTouched: []
    func_position:
      end: 47
      start: 43
    functionDepth: 5
    functionLinenumber: 43
    functionLinenumberEnd: 47
    functionName: VercelArtifactsBuilder::fmt
    functionSourceFile: /src/opendal/core/services/vercel-artifacts/src/backend.rs
    functionUses: 0
    functionsReached:
    - field
    - Result::debug_struct
    - finish_non_exhaustive
    linkageType: ''
    returnType: std::fmt::Result
    signature: 'fn fmt(&self, f: &mut std::fmt::Formatter<''_>) -> std::fmt::Result'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Some
      Src: /src/opendal/core/services/vercel-artifacts/src/backend.rs:55,1
    - Dst: to_string
      Src: /src/opendal/core/services/vercel-artifacts/src/backend.rs:55,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - access_token
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 57
      start: 54
    functionDepth: 2
    functionLinenumber: 54
    functionLinenumberEnd: 57
    functionName: VercelArtifactsBuilder::access_token
    functionSourceFile: /src/opendal/core/services/vercel-artifacts/src/backend.rs
    functionUses: 0
    functionsReached:
    - to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn access_token(mut self, access_token: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self::is_empty
      Src: /src/opendal/core/services/vercel-artifacts/src/backend.rs:63,1
    - Dst: Some
      Src: /src/opendal/core/services/vercel-artifacts/src/backend.rs:64,1
    - Dst: Self::trim_end_matches
      Src: /src/opendal/core/services/vercel-artifacts/src/backend.rs:64,1
    - Dst: to_string
      Src: /src/opendal/core/services/vercel-artifacts/src/backend.rs:64,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 14
    argCount: 1
    argNames:
    - endpoint
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 67
      start: 62
    functionDepth: 4
    functionLinenumber: 62
    functionLinenumberEnd: 67
    functionName: VercelArtifactsBuilder::endpoint
    functionSourceFile: /src/opendal/core/services/vercel-artifacts/src/backend.rs
    functionUses: 0
    functionsReached:
    - Self::is_empty
    - to_string
    - Self::trim_end_matches
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn endpoint(mut self, endpoint: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self::is_empty
      Src: /src/opendal/core/services/vercel-artifacts/src/backend.rs:73,1
    - Dst: Some
      Src: /src/opendal/core/services/vercel-artifacts/src/backend.rs:74,1
    - Dst: Self::to_string
      Src: /src/opendal/core/services/vercel-artifacts/src/backend.rs:74,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 1
    argNames:
    - team_id
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 77
      start: 72
    functionDepth: 4
    functionLinenumber: 72
    functionLinenumberEnd: 77
    functionName: VercelArtifactsBuilder::team_id
    functionSourceFile: /src/opendal/core/services/vercel-artifacts/src/backend.rs
    functionUses: 0
    functionsReached:
    - Self::is_empty
    - Self::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn team_id(mut self, team_id: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self::is_empty
      Src: /src/opendal/core/services/vercel-artifacts/src/backend.rs:83,1
    - Dst: Some
      Src: /src/opendal/core/services/vercel-artifacts/src/backend.rs:84,1
    - Dst: Self::to_string
      Src: /src/opendal/core/services/vercel-artifacts/src/backend.rs:84,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 1
    argNames:
    - team_slug
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 87
      start: 82
    functionDepth: 4
    functionLinenumber: 82
    functionLinenumberEnd: 87
    functionName: VercelArtifactsBuilder::team_slug
    functionSourceFile: /src/opendal/core/services/vercel-artifacts/src/backend.rs
    functionUses: 0
    functionsReached:
    - Self::is_empty
    - Self::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn team_slug(mut self, team_slug: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: ServiceInfo::new
      Src: /src/opendal/core/services/vercel-artifacts/src/backend.rs:94,1
    - Dst: Default::default
      Src: /src/opendal/core/services/vercel-artifacts/src/backend.rs:105,1
    - Dst: ok_or_else
      Src: /src/opendal/core/services/vercel-artifacts/src/backend.rs:108,1
    - Dst: Error::new
      Src: /src/opendal/core/services/vercel-artifacts/src/backend.rs:111,1
    - Dst: unwrap_or_else
      Src: /src/opendal/core/services/vercel-artifacts/src/backend.rs:113,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/vercel-artifacts/src/backend.rs:116,1
    - Dst: Vec::new
      Src: /src/opendal/core/services/vercel-artifacts/src/backend.rs:118,1
    - Dst: Self::push
      Src: /src/opendal/core/services/vercel-artifacts/src/backend.rs:120,1
    - Dst: Self::push
      Src: /src/opendal/core/services/vercel-artifacts/src/backend.rs:123,1
    - Dst: Self::is_empty
      Src: /src/opendal/core/services/vercel-artifacts/src/backend.rs:125,1
    - Dst: String::new
      Src: /src/opendal/core/services/vercel-artifacts/src/backend.rs:126,1
    - Dst: Ok
      Src: /src/opendal/core/services/vercel-artifacts/src/backend.rs:131,1
    - Dst: Arc::new
      Src: /src/opendal/core/services/vercel-artifacts/src/backend.rs:132,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 42
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 140
      start: 93
    functionDepth: 33
    functionLinenumber: 93
    functionLinenumberEnd: 140
    functionName: VercelArtifactsBuilder::build
    functionSourceFile: /src/opendal/core/services/vercel-artifacts/src/backend.rs
    functionUses: 0
    functionsReached:
    - ServiceInfo::new
    - String::new
    - Ok
    - Self::push
    - Default::default
    - Arc::new
    - Error::new
    - ok_or_else
    - Self::is_empty
    - '&str::to_string'
    - Vec::new
    - unwrap_or_else
    linkageType: ''
    returnType: Result
    signature: fn build(self) -> Result<impl Service>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: clone
      Src: /src/opendal/core/services/vercel-artifacts/src/backend.rs:156,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 157
      start: 155
    functionDepth: 2
    functionLinenumber: 155
    functionLinenumberEnd: 157
    functionName: VercelArtifactsBackend::info
    functionSourceFile: /src/opendal/core/services/vercel-artifacts/src/backend.rs
    functionUses: 0
    functionsReached:
    - clone
    linkageType: ''
    returnType: ServiceInfo
    signature: fn info(&self) -> ServiceInfo
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 161
      start: 159
    functionDepth: 0
    functionLinenumber: 159
    functionLinenumberEnd: 161
    functionName: VercelArtifactsBackend::capability
    functionSourceFile: /src/opendal/core/services/vercel-artifacts/src/backend.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Capability
    signature: fn capability(&self) -> Capability
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/core/services/vercel-artifacts/src/backend.rs:169,1
    - Dst: Error::new
      Src: /src/opendal/core/services/vercel-artifacts/src/backend.rs:169,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - _ctx
    - _path
    - _args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpCreateDir
    constantsTouched: []
    func_position:
      end: 173
      start: 163
    functionDepth: 36
    functionLinenumber: 163
    functionLinenumberEnd: 173
    functionName: VercelArtifactsBackend::create_dir
    functionSourceFile: /src/opendal/core/services/vercel-artifacts/src/backend.rs
    functionUses: 0
    functionsReached:
    - Error::new
    - Err
    linkageType: ''
    returnType: Result
    signature: 'async fn create_dir(&self,_ctx: &OperationContext,_path: &str,_args:
      OpCreateDir,) -> Result<RpCreateDir>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: vercel_artifacts_stat
      Src: /src/opendal/core/services/vercel-artifacts/src/backend.rs:176,1
    - Dst: status
      Src: /src/opendal/core/services/vercel-artifacts/src/backend.rs:178,1
    - Dst: parse_into_metadata
      Src: /src/opendal/core/services/vercel-artifacts/src/backend.rs:182,1
    - Dst: headers
      Src: /src/opendal/core/services/vercel-artifacts/src/backend.rs:182,1
    - Dst: Ok
      Src: /src/opendal/core/services/vercel-artifacts/src/backend.rs:183,1
    - Dst: RpStat::new
      Src: /src/opendal/core/services/vercel-artifacts/src/backend.rs:183,1
    - Dst: Err
      Src: /src/opendal/core/services/vercel-artifacts/src/backend.rs:186,1
    - Dst: super::core::parse_error
      Src: /src/opendal/core/services/vercel-artifacts/src/backend.rs:186,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 3
    argNames:
    - ctx
    - path
    - _args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpStat
    constantsTouched: []
    func_position:
      end: 188
      start: 175
    functionDepth: 39
    functionLinenumber: 175
    functionLinenumberEnd: 188
    functionName: VercelArtifactsBackend::stat
    functionSourceFile: /src/opendal/core/services/vercel-artifacts/src/backend.rs
    functionUses: 0
    functionsReached:
    - vercel_artifacts_stat
    - parse_into_metadata
    - status
    - Ok
    - RpStat::new
    - Err
    - headers
    - super::core::parse_error
    linkageType: ''
    returnType: Result
    signature: 'async fn stat(&self, ctx: &OperationContext, path: &str, _args: OpStat)
      -> Result<RpStat>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/core/services/vercel-artifacts/src/backend.rs:191,1
    - Dst: oio::StreamReader::new
      Src: /src/opendal/core/services/vercel-artifacts/src/backend.rs:191,1
    - Dst: VercelArtifactsReader::new
      Src: /src/opendal/core/services/vercel-artifacts/src/backend.rs:191,1
    - Dst: VercelArtifactsBackend::clone
      Src: /src/opendal/core/services/vercel-artifacts/src/backend.rs:192,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/vercel-artifacts/src/backend.rs:193,1
    - Dst: Ok
      Src: /src/opendal/core/services/vercel-artifacts/src/backend.rs:199,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpRead
    constantsTouched: []
    func_position:
      end: 200
      start: 189
    functionDepth: 3
    functionLinenumber: 189
    functionLinenumberEnd: 200
    functionName: VercelArtifactsBackend::read
    functionSourceFile: /src/opendal/core/services/vercel-artifacts/src/backend.rs
    functionUses: 0
    functionsReached:
    - Result::clone
    - VercelArtifactsBackend::clone
    - Ok
    - oio::StreamReader::new
    - VercelArtifactsReader::new
    linkageType: ''
    returnType: Result
    signature: 'fn read(&self, ctx: &OperationContext, path: &str, args: OpRead) ->
      Result<Self::Reader>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/core/services/vercel-artifacts/src/backend.rs:204,1
    - Dst: oio::OneShotWriter::new
      Src: /src/opendal/core/services/vercel-artifacts/src/backend.rs:204,1
    - Dst: VercelArtifactsWriter::new
      Src: /src/opendal/core/services/vercel-artifacts/src/backend.rs:204,1
    - Dst: clone
      Src: /src/opendal/core/services/vercel-artifacts/src/backend.rs:205,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/vercel-artifacts/src/backend.rs:206,1
    - Dst: to_string
      Src: /src/opendal/core/services/vercel-artifacts/src/backend.rs:208,1
    - Dst: Ok
      Src: /src/opendal/core/services/vercel-artifacts/src/backend.rs:212,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpWrite
    constantsTouched: []
    func_position:
      end: 213
      start: 202
    functionDepth: 2
    functionLinenumber: 202
    functionLinenumberEnd: 213
    functionName: VercelArtifactsBackend::write
    functionSourceFile: /src/opendal/core/services/vercel-artifacts/src/backend.rs
    functionUses: 0
    functionsReached:
    - Result::clone
    - to_string
    - Ok
    - VercelArtifactsWriter::new
    - clone
    - oio::OneShotWriter::new
    linkageType: ''
    returnType: Result
    signature: 'fn write(&self, ctx: &OperationContext, path: &str, args: OpWrite)
      -> Result<Self::Writer>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/core/services/vercel-artifacts/src/backend.rs:216,1
    - Dst: Error::new
      Src: /src/opendal/core/services/vercel-artifacts/src/backend.rs:216,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - _ctx
    argTypes:
    - '&OperationContext'
    constantsTouched: []
    func_position:
      end: 220
      start: 215
    functionDepth: 36
    functionLinenumber: 215
    functionLinenumberEnd: 220
    functionName: VercelArtifactsBackend::delete
    functionSourceFile: /src/opendal/core/services/vercel-artifacts/src/backend.rs
    functionUses: 0
    functionsReached:
    - Error::new
    - Err
    linkageType: ''
    returnType: Result
    signature: 'fn delete(&self, _ctx: &OperationContext) -> Result<Self::Deleter>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/core/services/vercel-artifacts/src/backend.rs:223,1
    - Dst: Error::new
      Src: /src/opendal/core/services/vercel-artifacts/src/backend.rs:223,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - _ctx
    - _path
    - _args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpList
    constantsTouched: []
    func_position:
      end: 227
      start: 222
    functionDepth: 36
    functionLinenumber: 222
    functionLinenumberEnd: 227
    functionName: VercelArtifactsBackend::list
    functionSourceFile: /src/opendal/core/services/vercel-artifacts/src/backend.rs
    functionUses: 0
    functionsReached:
    - Error::new
    - Err
    linkageType: ''
    returnType: Result
    signature: 'fn list(&self, _ctx: &OperationContext, _path: &str, _args: OpList)
      -> Result<Self::Lister>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/core/services/vercel-artifacts/src/backend.rs:237,1
    - Dst: Error::new
      Src: /src/opendal/core/services/vercel-artifacts/src/backend.rs:237,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 5
    argNames:
    - _ctx
    - _from
    - _to
    - _args
    - _opts
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    - OpCopy
    - OpCopier
    constantsTouched: []
    func_position:
      end: 241
      start: 229
    functionDepth: 36
    functionLinenumber: 229
    functionLinenumberEnd: 241
    functionName: VercelArtifactsBackend::copy
    functionSourceFile: /src/opendal/core/services/vercel-artifacts/src/backend.rs
    functionUses: 0
    functionsReached:
    - Error::new
    - Err
    linkageType: ''
    returnType: Result
    signature: 'fn copy(&self,_ctx: &OperationContext,_from: &str,_to: &str,_args:
      OpCopy,_opts: OpCopier,) -> Result<Self::Copier>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/core/services/vercel-artifacts/src/backend.rs:250,1
    - Dst: Error::new
      Src: /src/opendal/core/services/vercel-artifacts/src/backend.rs:250,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - _ctx
    - _from
    - _to
    - _args
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    - OpRename
    constantsTouched: []
    func_position:
      end: 254
      start: 243
    functionDepth: 36
    functionLinenumber: 243
    functionLinenumberEnd: 254
    functionName: VercelArtifactsBackend::rename
    functionSourceFile: /src/opendal/core/services/vercel-artifacts/src/backend.rs
    functionUses: 0
    functionsReached:
    - Error::new
    - Err
    linkageType: ''
    returnType: Result
    signature: 'async fn rename(&self,_ctx: &OperationContext,_from: &str,_to: &str,_args:
      OpRename,) -> Result<RpRename>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/core/services/vercel-artifacts/src/backend.rs:262,1
    - Dst: Error::new
      Src: /src/opendal/core/services/vercel-artifacts/src/backend.rs:262,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - _ctx
    - _path
    - _args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpPresign
    constantsTouched: []
    func_position:
      end: 266
      start: 256
    functionDepth: 36
    functionLinenumber: 256
    functionLinenumberEnd: 266
    functionName: VercelArtifactsBackend::presign
    functionSourceFile: /src/opendal/core/services/vercel-artifacts/src/backend.rs
    functionUses: 0
    functionsReached:
    - Error::new
    - Err
    linkageType: ''
    returnType: Result
    signature: 'async fn presign(&self,_ctx: &OperationContext,_path: &str,_args:
      OpPresign,) -> Result<RpPresign>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::debug_struct
      Src: /src/opendal/core/services/b2/src/config.rs:56,1
    - Dst: field
      Src: /src/opendal/core/services/b2/src/config.rs:56,1
    - Dst: field
      Src: /src/opendal/core/services/b2/src/config.rs:56,1
    - Dst: field
      Src: /src/opendal/core/services/b2/src/config.rs:56,1
    - Dst: field
      Src: /src/opendal/core/services/b2/src/config.rs:56,1
    - Dst: finish_non_exhaustive
      Src: /src/opendal/core/services/b2/src/config.rs:56,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 20
    argCount: 1
    argNames:
    - f
    argTypes:
    - '&mut std::fmt::Formatter<''_>'
    constantsTouched: []
    func_position:
      end: 62
      start: 55
    functionDepth: 5
    functionLinenumber: 55
    functionLinenumberEnd: 62
    functionName: B2Config::fmt
    functionSourceFile: /src/opendal/core/services/b2/src/config.rs
    functionUses: 0
    functionsReached:
    - field
    - Result::debug_struct
    - finish_non_exhaustive
    linkageType: ''
    returnType: std::fmt::Result
    signature: 'fn fmt(&self, f: &mut std::fmt::Formatter<''_>) -> std::fmt::Result'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::options
      Src: /src/opendal/core/services/b2/src/config.rs:69,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/b2/src/config.rs:69,1
    - Dst: Result::name
      Src: /src/opendal/core/services/b2/src/config.rs:71,1
    - Dst: Result::insert
      Src: /src/opendal/core/services/b2/src/config.rs:72,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/b2/src/config.rs:72,1
    - Dst: Result::to_string
      Src: /src/opendal/core/services/b2/src/config.rs:72,1
    - Dst: Result::root
      Src: /src/opendal/core/services/b2/src/config.rs:75,1
    - Dst: Result::insert
      Src: /src/opendal/core/services/b2/src/config.rs:76,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/b2/src/config.rs:76,1
    - Dst: Result::to_string
      Src: /src/opendal/core/services/b2/src/config.rs:76,1
    - Dst: Self::from_iter
      Src: /src/opendal/core/services/b2/src/config.rs:79,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 27
    argCount: 1
    argNames:
    - uri
    argTypes:
    - '&opendal_core::OperatorUri'
    constantsTouched: []
    func_position:
      end: 80
      start: 68
    functionDepth: 35
    functionLinenumber: 68
    functionLinenumberEnd: 80
    functionName: B2Config::from_uri
    functionSourceFile: /src/opendal/core/services/b2/src/config.rs
    functionUses: 0
    functionsReached:
    - Result::clone
    - Self::from_iter
    - Result::to_string
    - Result::insert
    - Result::name
    - '&str::to_string'
    - Result::root
    - Result::options
    linkageType: ''
    returnType: opendal_core::Result
    signature: 'fn from_uri(uri: &opendal_core::OperatorUri) -> opendal_core::Result<Self>'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 84
      start: 82
    functionDepth: 0
    functionLinenumber: 82
    functionLinenumberEnd: 84
    functionName: B2Config::into_builder
    functionSourceFile: /src/opendal/core/services/b2/src/config.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Self::Builder
    signature: fn into_builder(self) -> Self::Builder
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - core
    - ctx
    argTypes:
    - Arc<B2Core>
    - OperationContext
    constantsTouched: []
    func_position:
      end: 35
      start: 33
    functionDepth: 0
    functionLinenumber: 33
    functionLinenumberEnd: 35
    functionName: B2Deleter::new
    functionSourceFile: /src/opendal/core/services/b2/src/deleter.rs
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(core: Arc<B2Core>, ctx: OperationContext) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: hide_file
      Src: /src/opendal/core/services/b2/src/deleter.rs:40,1
    - Dst: status
      Src: /src/opendal/core/services/b2/src/deleter.rs:42,1
    - Dst: Ok
      Src: /src/opendal/core/services/b2/src/deleter.rs:45,1
    - Dst: super::core::parse_error
      Src: /src/opendal/core/services/b2/src/deleter.rs:47,1
    - Dst: Error::kind
      Src: /src/opendal/core/services/b2/src/deleter.rs:48,1
    - Dst: Ok
      Src: /src/opendal/core/services/b2/src/deleter.rs:49,1
    - Dst: Ok
      Src: /src/opendal/core/services/b2/src/deleter.rs:51,1
    - Dst: Err
      Src: /src/opendal/core/services/b2/src/deleter.rs:52,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 24
    argCount: 2
    argNames:
    - path
    argTypes:
    - String
    - OpDelete
    constantsTouched: []
    func_position:
      end: 56
      start: 39
    functionDepth: 33
    functionLinenumber: 39
    functionLinenumberEnd: 56
    functionName: B2Deleter::delete_once
    functionSourceFile: /src/opendal/core/services/b2/src/deleter.rs
    functionUses: 0
    functionsReached:
    - status
    - Ok
    - Err
    - hide_file
    - Error::kind
    - super::core::parse_error
    linkageType: ''
    returnType: Result
    signature: 'async fn delete_once(&self, path: String, _: OpDelete) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Some
      Src: /src/opendal/core/services/b2/src/lister.rs:50,1
    - Dst: to_string
      Src: /src/opendal/core/services/b2/src/lister.rs:55,1
    - Dst: Result::map
      Src: /src/opendal/core/services/b2/src/lister.rs:58,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 6
    argNames:
    - core
    - ctx
    - path
    - recursive
    - limit
    - start_after
    argTypes:
    - Arc<B2Core>
    - OperationContext
    - '&str'
    - bool
    - Option<usize>
    - Option<&str>
    constantsTouched: []
    func_position:
      end: 60
      start: 42
    functionDepth: 2
    functionLinenumber: 42
    functionLinenumberEnd: 60
    functionName: B2Lister::new
    functionSourceFile: /src/opendal/core/services/b2/src/lister.rs
    functionUses: 1
    functionsReached:
    - to_string
    - Result::map
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(core: Arc<B2Core>,ctx: OperationContext,path: &str,recursive:
      bool,limit: Option<usize>,start_after: Option<&str>,) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: list_file_names
      Src: /src/opendal/core/services/b2/src/lister.rs:65,1
    - Dst: Some
      Src: /src/opendal/core/services/b2/src/lister.rs:69,1
    - Dst: is_empty
      Src: /src/opendal/core/services/b2/src/lister.rs:72,1
    - Dst: as_ref
      Src: /src/opendal/core/services/b2/src/lister.rs:73,1
    - Dst: map
      Src: /src/opendal/core/services/b2/src/lister.rs:73,1
    - Dst: build_abs_path
      Src: /src/opendal/core/services/b2/src/lister.rs:75,1
    - Dst: Some
      Src: /src/opendal/core/services/b2/src/lister.rs:77,1
    - Dst: clone
      Src: /src/opendal/core/services/b2/src/lister.rs:77,1
    - Dst: status
      Src: /src/opendal/core/services/b2/src/lister.rs:82,1
    - Dst: Err
      Src: /src/opendal/core/services/b2/src/lister.rs:83,1
    - Dst: super::core::parse_error
      Src: /src/opendal/core/services/b2/src/lister.rs:83,1
    - Dst: into_body
      Src: /src/opendal/core/services/b2/src/lister.rs:86,1
    - Dst: serde_json::from_reader
      Src: /src/opendal/core/services/b2/src/lister.rs:89,1
    - Dst: Result::reader
      Src: /src/opendal/core/services/b2/src/lister.rs:89,1
    - Dst: map_err
      Src: /src/opendal/core/services/b2/src/lister.rs:89,1
    - Dst: clone
      Src: /src/opendal/core/services/b2/src/lister.rs:98,1
    - Dst: build_abs_path
      Src: /src/opendal/core/services/b2/src/lister.rs:99,1
    - Dst: clone
      Src: /src/opendal/core/services/b2/src/lister.rs:103,1
    - Dst: super::core::parse_file_info
      Src: /src/opendal/core/services/b2/src/lister.rs:104,1
    - Dst: push_back
      Src: /src/opendal/core/services/b2/src/lister.rs:106,1
    - Dst: oio::Entry::new
      Src: /src/opendal/core/services/b2/src/lister.rs:106,1
    - Dst: build_rel_path
      Src: /src/opendal/core/services/b2/src/lister.rs:107,1
    - Dst: Ok
      Src: /src/opendal/core/services/b2/src/lister.rs:112,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 90
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - '&mut oio::PageContext'
    constantsTouched: []
    func_position:
      end: 113
      start: 64
    functionDepth: 34
    functionLinenumber: 64
    functionLinenumberEnd: 113
    functionName: B2Lister::next_page
    functionSourceFile: /src/opendal/core/services/b2/src/lister.rs
    functionUses: 0
    functionsReached:
    - status
    - serde_json::from_reader
    - clone
    - build_rel_path
    - map
    - Result::reader
    - map_err
    - super::core::parse_file_info
    - Ok
    - into_body
    - build_abs_path
    - is_empty
    - Some
    - list_file_names
    - super::core::parse_error
    - oio::Entry::new
    - push_back
    - Err
    - as_ref
    linkageType: ''
    returnType: Result
    signature: 'async fn next_page(&self, ctx: &mut oio::PageContext) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: to_string
      Src: /src/opendal/core/services/b2/src/reader.rs:38,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 4
    argNames:
    - backend
    - ctx
    - path
    - args
    argTypes:
    - B2Backend
    - OperationContext
    - '&str'
    - OpRead
    constantsTouched: []
    func_position:
      end: 41
      start: 34
    functionDepth: 2
    functionLinenumber: 34
    functionLinenumberEnd: 41
    functionName: B2Reader::new
    functionSourceFile: /src/opendal/core/services/b2/src/reader.rs
    functionUses: 1
    functionsReached:
    - to_string
    linkageType: ''
    returnType: Self
    signature: 'pub(super) fn new(backend: B2Backend, ctx: OperationContext, path:
      &str, args: OpRead) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: as_str
      Src: /src/opendal/core/services/b2/src/reader.rs:47,1
    - Dst: clone
      Src: /src/opendal/core/services/b2/src/reader.rs:48,1
    - Dst: download_file_by_name
      Src: /src/opendal/core/services/b2/src/reader.rs:49,1
    - Dst: status
      Src: /src/opendal/core/services/b2/src/reader.rs:54,1
    - Dst: RpRead::new
      Src: /src/opendal/core/services/b2/src/reader.rs:57,1
    - Dst: parse_into_metadata
      Src: /src/opendal/core/services/b2/src/reader.rs:57,1
    - Dst: headers
      Src: /src/opendal/core/services/b2/src/reader.rs:57,1
    - Dst: into_body
      Src: /src/opendal/core/services/b2/src/reader.rs:58,1
    - Dst: into_parts
      Src: /src/opendal/core/services/b2/src/reader.rs:61,1
    - Dst: to_buffer
      Src: /src/opendal/core/services/b2/src/reader.rs:62,1
    - Dst: Err
      Src: /src/opendal/core/services/b2/src/reader.rs:63,1
    - Dst: super::core::parse_error
      Src: /src/opendal/core/services/b2/src/reader.rs:63,1
    - Dst: Response::from_parts
      Src: /src/opendal/core/services/b2/src/reader.rs:63,1
    - Dst: Ok
      Src: /src/opendal/core/services/b2/src/reader.rs:67,1
    - Dst: Box::new
      Src: /src/opendal/core/services/b2/src/reader.rs:67,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 42
    argCount: 1
    argNames:
    - range
    argTypes:
    - BytesRange
    constantsTouched: []
    func_position:
      end: 68
      start: 45
    functionDepth: 33
    functionLinenumber: 45
    functionLinenumberEnd: 68
    functionName: B2Reader::open
    functionSourceFile: /src/opendal/core/services/b2/src/reader.rs
    functionUses: 0
    functionsReached:
    - parse_into_metadata
    - to_buffer
    - status
    - Ok
    - Box::new
    - into_body
    - clone
    - Err
    - Response::from_parts
    - as_str
    - headers
    - into_parts
    - RpRead::new
    - super::core::parse_error
    - download_file_by_name
    linkageType: ''
    returnType: Result
    signature: 'async fn open(&self, range: BytesRange) -> Result<(RpRead, Box<dyn
      oio::ReadStreamDyn>)>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::debug_struct
      Src: /src/opendal/core/services/b2/src/core.rs:61,1
    - Dst: field
      Src: /src/opendal/core/services/b2/src/core.rs:61,1
    - Dst: field
      Src: /src/opendal/core/services/b2/src/core.rs:61,1
    - Dst: field
      Src: /src/opendal/core/services/b2/src/core.rs:61,1
    - Dst: finish_non_exhaustive
      Src: /src/opendal/core/services/b2/src/core.rs:61,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 16
    argCount: 1
    argNames:
    - f
    argTypes:
    - '&mut std::fmt::Formatter<''_>'
    constantsTouched: []
    func_position:
      end: 66
      start: 60
    functionDepth: 5
    functionLinenumber: 60
    functionLinenumberEnd: 66
    functionName: B2Core::fmt
    functionSourceFile: /src/opendal/core/services/b2/src/core.rs
    functionUses: 0
    functionsReached:
    - field
    - Result::debug_struct
    - finish_non_exhaustive
    linkageType: ''
    returnType: std::fmt::Result
    signature: 'fn fmt(&self, f: &mut std::fmt::Formatter<''_>) -> std::fmt::Result'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::http_transport
      Src: /src/opendal/core/services/b2/src/core.rs:76,1
    - Dst: Self::send
      Src: /src/opendal/core/services/b2/src/core.rs:76,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - ctx
    - req
    argTypes:
    - '&OperationContext'
    - Request<Buffer>
    constantsTouched: []
    func_position:
      end: 77
      start: 71
    functionDepth: 37
    functionLinenumber: 71
    functionLinenumberEnd: 77
    functionName: B2Core::send
    functionSourceFile: /src/opendal/core/services/b2/src/core.rs
    functionUses: 11
    functionsReached:
    - Result::http_transport
    - Self::send
    linkageType: ''
    returnType: Result
    signature: 'pub async fn send(&self,ctx: &OperationContext,req: Request<Buffer>,)
      -> Result<Response<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: read
      Src: /src/opendal/core/services/b2/src/core.rs:82,1
    - Dst: is_empty
      Src: /src/opendal/core/services/b2/src/core.rs:84,1
    - Dst: Timestamp::now
      Src: /src/opendal/core/services/b2/src/core.rs:85,1
    - Dst: clone
      Src: /src/opendal/core/services/b2/src/core.rs:87,1
    - Dst: Ok
      Src: /src/opendal/core/services/b2/src/core.rs:88,1
    - Dst: write
      Src: /src/opendal/core/services/b2/src/core.rs:93,1
    - Dst: Request::get
      Src: /src/opendal/core/services/b2/src/core.rs:94,1
    - Dst: Option::header
      Src: /src/opendal/core/services/b2/src/core.rs:94,1
    - Dst: format_authorization_by_basic
      Src: /src/opendal/core/services/b2/src/core.rs:97,1
    - Dst: String::body
      Src: /src/opendal/core/services/b2/src/core.rs:94,1
    - Dst: Buffer::new
      Src: /src/opendal/core/services/b2/src/core.rs:102,1
    - Dst: map_err
      Src: /src/opendal/core/services/b2/src/core.rs:94,1
    - Dst: Result::http_transport
      Src: /src/opendal/core/services/b2/src/core.rs:105,1
    - Dst: Self::send
      Src: /src/opendal/core/services/b2/src/core.rs:105,1
    - Dst: status
      Src: /src/opendal/core/services/b2/src/core.rs:106,1
    - Dst: into_body
      Src: /src/opendal/core/services/b2/src/core.rs:110,1
    - Dst: serde_json::from_reader
      Src: /src/opendal/core/services/b2/src/core.rs:112,1
    - Dst: reader
      Src: /src/opendal/core/services/b2/src/core.rs:112,1
    - Dst: map_err
      Src: /src/opendal/core/services/b2/src/core.rs:112,1
    - Dst: clone
      Src: /src/opendal/core/services/b2/src/core.rs:115,1
    - Dst: clone
      Src: /src/opendal/core/services/b2/src/core.rs:116,1
    - Dst: clone
      Src: /src/opendal/core/services/b2/src/core.rs:117,1
    - Dst: Timestamp::now
      Src: /src/opendal/core/services/b2/src/core.rs:119,1
    - Dst: Duration::from_secs
      Src: /src/opendal/core/services/b2/src/core.rs:119,1
    - Dst: Err
      Src: /src/opendal/core/services/b2/src/core.rs:123,1
    - Dst: parse_error
      Src: /src/opendal/core/services/b2/src/core.rs:123,1
    - Dst: Ok
      Src: /src/opendal/core/services/b2/src/core.rs:126,1
    - Dst: clone
      Src: /src/opendal/core/services/b2/src/core.rs:126,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 87
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - '&OperationContext'
    constantsTouched: []
    func_position:
      end: 128
      start: 80
    functionDepth: 31
    functionLinenumber: 80
    functionLinenumberEnd: 128
    functionName: B2Core::get_auth_info
    functionSourceFile: /src/opendal/core/services/b2/src/core.rs
    functionUses: 10
    functionsReached:
    - Buffer::new
    - status
    - Self::send
    - serde_json::from_reader
    - clone
    - write
    - map_err
    - Timestamp::now
    - reader
    - Ok
    - String::body
    - Duration::from_secs
    - Result::http_transport
    - format_authorization_by_basic
    - read
    - parse_error
    - into_body
    - is_empty
    - Option::header
    - Request::get
    - Err
    linkageType: ''
    returnType: Result
    signature: 'pub async fn get_auth_info(&self, ctx: &OperationContext) -> Result<AuthInfo>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/b2/src/core.rs:139,1
    - Dst: B2Core::get_auth_info
      Src: /src/opendal/core/services/b2/src/core.rs:141,1
    - Dst: Request::get
      Src: /src/opendal/core/services/b2/src/core.rs:151,1
    - Dst: Option::header
      Src: /src/opendal/core/services/b2/src/core.rs:153,1
    - Dst: (Vec::is_full
      Src: /src/opendal/core/services/b2/src/core.rs:155,1
    - Dst: Option::header
      Src: /src/opendal/core/services/b2/src/core.rs:156,1
    - Dst: (Vec::to_header
      Src: /src/opendal/core/services/b2/src/core.rs:156,1
    - Dst: Option::extension
      Src: /src/opendal/core/services/b2/src/core.rs:159,1
    - Dst: extension
      Src: /src/opendal/core/services/b2/src/core.rs:159,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/b2/src/core.rs:161,1
    - Dst: Option::body
      Src: /src/opendal/core/services/b2/src/core.rs:163,1
    - Dst: Buffer::new
      Src: /src/opendal/core/services/b2/src/core.rs:163,1
    - Dst: map_err
      Src: /src/opendal/core/services/b2/src/core.rs:163,1
    - Dst: Result::http_transport
      Src: /src/opendal/core/services/b2/src/core.rs:165,1
    - Dst: Self::fetch
      Src: /src/opendal/core/services/b2/src/core.rs:165,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 41
    argCount: 4
    argNames:
    - ctx
    - path
    - range
    - _args
    argTypes:
    - '&OperationContext'
    - '&str'
    - BytesRange
    - '&OpRead'
    constantsTouched: []
    func_position:
      end: 166
      start: 132
    functionDepth: 32
    functionLinenumber: 132
    functionLinenumberEnd: 166
    functionName: B2Core::download_file_by_name
    functionSourceFile: /src/opendal/core/services/b2/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - extension
    - Request::get
    - (Vec::to_header
    - Buffer::new
    - (Vec::is_full
    - build_abs_path
    - B2Core::get_auth_info
    - Option::extension
    - Self::fetch
    - ServiceOperation
    - Result::http_transport
    - Option::body
    - Option::header
    linkageType: ''
    returnType: Result
    signature: 'pub async fn download_file_by_name(&self,ctx: &OperationContext,path:
      &str,range: BytesRange,_args: &OpRead,) -> Result<Response<HttpBody>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: B2Core::get_auth_info
      Src: /src/opendal/core/services/b2/src/core.rs:172,1
    - Dst: Request::get
      Src: /src/opendal/core/services/b2/src/core.rs:179,1
    - Dst: Option::header
      Src: /src/opendal/core/services/b2/src/core.rs:181,1
    - Dst: Option::extension
      Src: /src/opendal/core/services/b2/src/core.rs:183,1
    - Dst: extension
      Src: /src/opendal/core/services/b2/src/core.rs:183,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/b2/src/core.rs:185,1
    - Dst: Option::body
      Src: /src/opendal/core/services/b2/src/core.rs:188,1
    - Dst: Buffer::new
      Src: /src/opendal/core/services/b2/src/core.rs:188,1
    - Dst: map_err
      Src: /src/opendal/core/services/b2/src/core.rs:188,1
    - Dst: B2Core::send
      Src: /src/opendal/core/services/b2/src/core.rs:190,1
    - Dst: status
      Src: /src/opendal/core/services/b2/src/core.rs:191,1
    - Dst: into_body
      Src: /src/opendal/core/services/b2/src/core.rs:194,1
    - Dst: serde_json::from_reader
      Src: /src/opendal/core/services/b2/src/core.rs:195,1
    - Dst: reader
      Src: /src/opendal/core/services/b2/src/core.rs:195,1
    - Dst: map_err
      Src: /src/opendal/core/services/b2/src/core.rs:195,1
    - Dst: Ok
      Src: /src/opendal/core/services/b2/src/core.rs:197,1
    - Dst: Err
      Src: /src/opendal/core/services/b2/src/core.rs:199,1
    - Dst: parse_error
      Src: /src/opendal/core/services/b2/src/core.rs:199,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 41
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - '&OperationContext'
    constantsTouched: []
    func_position:
      end: 201
      start: 168
    functionDepth: 32
    functionLinenumber: 168
    functionLinenumberEnd: 201
    functionName: B2Core::get_upload_url
    functionSourceFile: /src/opendal/core/services/b2/src/core.rs
    functionUses: 1
    functionsReached:
    - map_err
    - extension
    - Request::get
    - Buffer::new
    - B2Core::send
    - status
    - reader
    - Ok
    - serde_json::from_reader
    - parse_error
    - into_body
    - Err
    - B2Core::get_auth_info
    - Option::extension
    - ServiceOperation
    - Option::body
    - Option::header
    linkageType: ''
    returnType: Result
    signature: 'pub(super) async fn get_upload_url(&self,ctx: &OperationContext,)
      -> Result<GetUploadUrlResponse>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/b2/src/core.rs:209,1
    - Dst: B2Core::get_auth_info
      Src: /src/opendal/core/services/b2/src/core.rs:211,1
    - Dst: Request::post
      Src: /src/opendal/core/services/b2/src/core.rs:218,1
    - Dst: http::header
      Src: /src/opendal/core/services/b2/src/core.rs:220,1
    - Dst: clone
      Src: /src/opendal/core/services/b2/src/core.rs:223,1
    - Dst: Duration::as_secs
      Src: /src/opendal/core/services/b2/src/core.rs:225,1
    - Dst: serde_json::to_vec
      Src: /src/opendal/core/services/b2/src/core.rs:227,1
    - Dst: Vec::map_err
      Src: /src/opendal/core/services/b2/src/core.rs:227,1
    - Dst: bytes::Bytes::from
      Src: /src/opendal/core/services/b2/src/core.rs:228,1
    - Dst: body
      Src: /src/opendal/core/services/b2/src/core.rs:230,1
    - Dst: Buffer::from
      Src: /src/opendal/core/services/b2/src/core.rs:231,1
    - Dst: map_err
      Src: /src/opendal/core/services/b2/src/core.rs:230,1
    - Dst: B2Core::send
      Src: /src/opendal/core/services/b2/src/core.rs:234,1
    - Dst: status
      Src: /src/opendal/core/services/b2/src/core.rs:236,1
    - Dst: into_body
      Src: /src/opendal/core/services/b2/src/core.rs:239,1
    - Dst: serde_json::from_reader
      Src: /src/opendal/core/services/b2/src/core.rs:240,1
    - Dst: reader
      Src: /src/opendal/core/services/b2/src/core.rs:240,1
    - Dst: map_err
      Src: /src/opendal/core/services/b2/src/core.rs:240,1
    - Dst: Ok
      Src: /src/opendal/core/services/b2/src/core.rs:242,1
    - Dst: Err
      Src: /src/opendal/core/services/b2/src/core.rs:244,1
    - Dst: parse_error
      Src: /src/opendal/core/services/b2/src/core.rs:244,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 51
    argCount: 3
    argNames:
    - ctx
    - path
    - expire
    argTypes:
    - '&OperationContext'
    - '&str'
    - Duration
    constantsTouched: []
    func_position:
      end: 246
      start: 203
    functionDepth: 32
    functionLinenumber: 203
    functionLinenumberEnd: 246
    functionName: B2Core::get_download_authorization
    functionSourceFile: /src/opendal/core/services/b2/src/core.rs
    functionUses: 0
    functionsReached:
    - status
    - serde_json::from_reader
    - clone
    - map_err
    - reader
    - Ok
    - Buffer::from
    - http::header
    - parse_error
    - into_body
    - build_abs_path
    - B2Core::get_auth_info
    - bytes::Bytes::from
    - B2Core::send
    - Request::post
    - body
    - Err
    - Vec::map_err
    - Duration::as_secs
    - serde_json::to_vec
    linkageType: ''
    returnType: Result
    signature: 'pub async fn get_download_authorization(&self,ctx: &OperationContext,path:
      &str,expire: Duration,) -> Result<GetDownloadAuthorizationResponse>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: B2Core::get_upload_url
      Src: /src/opendal/core/services/b2/src/core.rs:256,1
    - Dst: build_abs_path
      Src: /src/opendal/core/services/b2/src/core.rs:258,1
    - Dst: Request::post
      Src: /src/opendal/core/services/b2/src/core.rs:260,1
    - Dst: http::header
      Src: /src/opendal/core/services/b2/src/core.rs:262,1
    - Dst: percent_encode_path
      Src: /src/opendal/core/services/b2/src/core.rs:262,1
    - Dst: http::header
      Src: /src/opendal/core/services/b2/src/core.rs:264,1
    - Dst: http::header
      Src: /src/opendal/core/services/b2/src/core.rs:266,1
    - Dst: http::header
      Src: /src/opendal/core/services/b2/src/core.rs:269,1
    - Dst: Option::to_string
      Src: /src/opendal/core/services/b2/src/core.rs:269,1
    - Dst: OpStat::content_type
      Src: /src/opendal/core/services/b2/src/core.rs:272,1
    - Dst: http::header
      Src: /src/opendal/core/services/b2/src/core.rs:273,1
    - Dst: http::header
      Src: /src/opendal/core/services/b2/src/core.rs:275,1
    - Dst: OpStat::content_disposition
      Src: /src/opendal/core/services/b2/src/core.rs:278,1
    - Dst: http::header
      Src: /src/opendal/core/services/b2/src/core.rs:279,1
    - Dst: OpStat::user_metadata
      Src: /src/opendal/core/services/b2/src/core.rs:284,1
    - Dst: http::header
      Src: /src/opendal/core/services/b2/src/core.rs:286,1
    - Dst: percent_encode_path
      Src: /src/opendal/core/services/b2/src/core.rs:288,1
    - Dst: extension
      Src: /src/opendal/core/services/b2/src/core.rs:293,1
    - Dst: extension
      Src: /src/opendal/core/services/b2/src/core.rs:293,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/b2/src/core.rs:295,1
    - Dst: body
      Src: /src/opendal/core/services/b2/src/core.rs:298,1
    - Dst: map_err
      Src: /src/opendal/core/services/b2/src/core.rs:298,1
    - Dst: B2Core::send
      Src: /src/opendal/core/services/b2/src/core.rs:300,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 72
    argCount: 5
    argNames:
    - ctx
    - path
    - size
    - args
    - body
    argTypes:
    - '&OperationContext'
    - '&str'
    - Option<u64>
    - '&OpWrite'
    - Buffer
    constantsTouched: []
    func_position:
      end: 301
      start: 248
    functionDepth: 33
    functionLinenumber: 248
    functionLinenumberEnd: 301
    functionName: B2Core::upload_file
    functionSourceFile: /src/opendal/core/services/b2/src/core.rs
    functionUses: 0
    functionsReached:
    - B2Core::get_upload_url
    - extension
    - map_err
    - Option::to_string
    - B2Core::send
    - http::header
    - Request::post
    - OpStat::content_disposition
    - body
    - build_abs_path
    - percent_encode_path
    - OpStat::user_metadata
    - ServiceOperation
    - OpStat::content_type
    linkageType: ''
    returnType: Result
    signature: 'pub async fn upload_file(&self,ctx: &OperationContext,path: &str,size:
      Option<u64>,args: &OpWrite,body: Buffer,) -> Result<Response<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/b2/src/core.rs:309,1
    - Dst: B2Core::get_auth_info
      Src: /src/opendal/core/services/b2/src/core.rs:311,1
    - Dst: Request::post
      Src: /src/opendal/core/services/b2/src/core.rs:315,1
    - Dst: http::header
      Src: /src/opendal/core/services/b2/src/core.rs:317,1
    - Dst: clone
      Src: /src/opendal/core/services/b2/src/core.rs:320,1
    - Dst: percent_encode_path
      Src: /src/opendal/core/services/b2/src/core.rs:321,1
    - Dst: '&str::to_owned'
      Src: /src/opendal/core/services/b2/src/core.rs:322,1
    - Dst: OpStat::content_type
      Src: /src/opendal/core/services/b2/src/core.rs:326,1
    - Dst: OpWrite::clone_into
      Src: /src/opendal/core/services/b2/src/core.rs:327,1
    - Dst: OpStat::user_metadata
      Src: /src/opendal/core/services/b2/src/core.rs:332,1
    - Dst: Result::iter
      Src: /src/opendal/core/services/b2/src/core.rs:333,1
    - Dst: map
      Src: /src/opendal/core/services/b2/src/core.rs:333,1
    - Dst: Result::to_string
      Src: /src/opendal/core/services/b2/src/core.rs:335,1
    - Dst: percent_encode_path
      Src: /src/opendal/core/services/b2/src/core.rs:335,1
    - Dst: Result::collect
      Src: /src/opendal/core/services/b2/src/core.rs:333,1
    - Dst: Some
      Src: /src/opendal/core/services/b2/src/core.rs:337,1
    - Dst: extension
      Src: /src/opendal/core/services/b2/src/core.rs:340,1
    - Dst: extension
      Src: /src/opendal/core/services/b2/src/core.rs:340,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/b2/src/core.rs:342,1
    - Dst: serde_json::to_vec
      Src: /src/opendal/core/services/b2/src/core.rs:345,1
    - Dst: Vec::map_err
      Src: /src/opendal/core/services/b2/src/core.rs:345,1
    - Dst: bytes::Bytes::from
      Src: /src/opendal/core/services/b2/src/core.rs:346,1
    - Dst: body
      Src: /src/opendal/core/services/b2/src/core.rs:348,1
    - Dst: Buffer::from
      Src: /src/opendal/core/services/b2/src/core.rs:349,1
    - Dst: map_err
      Src: /src/opendal/core/services/b2/src/core.rs:348,1
    - Dst: B2Core::send
      Src: /src/opendal/core/services/b2/src/core.rs:352,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 69
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&OpWrite'
    constantsTouched: []
    func_position:
      end: 353
      start: 303
    functionDepth: 32
    functionLinenumber: 303
    functionLinenumberEnd: 353
    functionName: B2Core::start_large_file
    functionSourceFile: /src/opendal/core/services/b2/src/core.rs
    functionUses: 0
    functionsReached:
    - clone
    - map
    - percent_encode_path
    - OpStat::user_metadata
    - '&str::to_owned'
    - map_err
    - extension
    - Result::to_string
    - Result::iter
    - ServiceOperation
    - Buffer::from
    - http::header
    - build_abs_path
    - Some
    - B2Core::get_auth_info
    - bytes::Bytes::from
    - OpStat::content_type
    - B2Core::send
    - Request::post
    - body
    - OpWrite::clone_into
    - Result::collect
    - Vec::map_err
    - serde_json::to_vec
    linkageType: ''
    returnType: Result
    signature: 'pub async fn start_large_file(&self,ctx: &OperationContext,path: &str,args:
      &OpWrite,) -> Result<Response<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: B2Core::get_auth_info
      Src: /src/opendal/core/services/b2/src/core.rs:360,1
    - Dst: Request::get
      Src: /src/opendal/core/services/b2/src/core.rs:367,1
    - Dst: Option::header
      Src: /src/opendal/core/services/b2/src/core.rs:369,1
    - Dst: Option::extension
      Src: /src/opendal/core/services/b2/src/core.rs:371,1
    - Dst: extension
      Src: /src/opendal/core/services/b2/src/core.rs:371,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/b2/src/core.rs:373,1
    - Dst: Option::body
      Src: /src/opendal/core/services/b2/src/core.rs:376,1
    - Dst: Buffer::new
      Src: /src/opendal/core/services/b2/src/core.rs:376,1
    - Dst: map_err
      Src: /src/opendal/core/services/b2/src/core.rs:376,1
    - Dst: B2Core::send
      Src: /src/opendal/core/services/b2/src/core.rs:378,1
    - Dst: status
      Src: /src/opendal/core/services/b2/src/core.rs:380,1
    - Dst: into_body
      Src: /src/opendal/core/services/b2/src/core.rs:383,1
    - Dst: serde_json::from_reader
      Src: /src/opendal/core/services/b2/src/core.rs:384,1
    - Dst: reader
      Src: /src/opendal/core/services/b2/src/core.rs:384,1
    - Dst: map_err
      Src: /src/opendal/core/services/b2/src/core.rs:384,1
    - Dst: Ok
      Src: /src/opendal/core/services/b2/src/core.rs:386,1
    - Dst: Err
      Src: /src/opendal/core/services/b2/src/core.rs:388,1
    - Dst: parse_error
      Src: /src/opendal/core/services/b2/src/core.rs:388,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 41
    argCount: 2
    argNames:
    - ctx
    - file_id
    argTypes:
    - '&OperationContext'
    - '&str'
    constantsTouched: []
    func_position:
      end: 390
      start: 355
    functionDepth: 32
    functionLinenumber: 355
    functionLinenumberEnd: 390
    functionName: B2Core::get_upload_part_url
    functionSourceFile: /src/opendal/core/services/b2/src/core.rs
    functionUses: 1
    functionsReached:
    - map_err
    - extension
    - Request::get
    - Buffer::new
    - B2Core::send
    - status
    - reader
    - Ok
    - serde_json::from_reader
    - parse_error
    - into_body
    - Err
    - B2Core::get_auth_info
    - Option::extension
    - ServiceOperation
    - Option::body
    - Option::header
    linkageType: ''
    returnType: Result
    signature: 'pub async fn get_upload_part_url(&self,ctx: &OperationContext,file_id:
      &str,) -> Result<GetUploadPartUrlResponse>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: B2Core::get_upload_part_url
      Src: /src/opendal/core/services/b2/src/core.rs:400,1
    - Dst: Request::post
      Src: /src/opendal/core/services/b2/src/core.rs:402,1
    - Dst: http::header
      Src: /src/opendal/core/services/b2/src/core.rs:404,1
    - Dst: usize::to_string
      Src: /src/opendal/core/services/b2/src/core.rs:404,1
    - Dst: http::header
      Src: /src/opendal/core/services/b2/src/core.rs:406,1
    - Dst: Option::to_string
      Src: /src/opendal/core/services/b2/src/core.rs:406,1
    - Dst: http::header
      Src: /src/opendal/core/services/b2/src/core.rs:408,1
    - Dst: http::header
      Src: /src/opendal/core/services/b2/src/core.rs:410,1
    - Dst: extension
      Src: /src/opendal/core/services/b2/src/core.rs:412,1
    - Dst: extension
      Src: /src/opendal/core/services/b2/src/core.rs:412,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/b2/src/core.rs:414,1
    - Dst: body
      Src: /src/opendal/core/services/b2/src/core.rs:417,1
    - Dst: map_err
      Src: /src/opendal/core/services/b2/src/core.rs:417,1
    - Dst: B2Core::send
      Src: /src/opendal/core/services/b2/src/core.rs:419,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 40
    argCount: 5
    argNames:
    - ctx
    - file_id
    - part_number
    - size
    - body
    argTypes:
    - '&OperationContext'
    - '&str'
    - usize
    - u64
    - Buffer
    constantsTouched: []
    func_position:
      end: 420
      start: 392
    functionDepth: 33
    functionLinenumber: 392
    functionLinenumberEnd: 420
    functionName: B2Core::upload_part
    functionSourceFile: /src/opendal/core/services/b2/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - extension
    - Option::to_string
    - B2Core::send
    - B2Core::get_upload_part_url
    - http::header
    - Request::post
    - body
    - ServiceOperation
    - usize::to_string
    linkageType: ''
    returnType: Result
    signature: 'pub async fn upload_part(&self,ctx: &OperationContext,file_id: &str,part_number:
      usize,size: u64,body: Buffer,) -> Result<Response<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: B2Core::get_auth_info
      Src: /src/opendal/core/services/b2/src/core.rs:428,1
    - Dst: Request::post
      Src: /src/opendal/core/services/b2/src/core.rs:432,1
    - Dst: http::header
      Src: /src/opendal/core/services/b2/src/core.rs:434,1
    - Dst: extension
      Src: /src/opendal/core/services/b2/src/core.rs:436,1
    - Dst: extension
      Src: /src/opendal/core/services/b2/src/core.rs:436,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/b2/src/core.rs:438,1
    - Dst: serde_json::to_vec
      Src: /src/opendal/core/services/b2/src/core.rs:440,1
    - Dst: to_owned
      Src: /src/opendal/core/services/b2/src/core.rs:441,1
    - Dst: Vec::map_err
      Src: /src/opendal/core/services/b2/src/core.rs:440,1
    - Dst: bytes::Bytes::from
      Src: /src/opendal/core/services/b2/src/core.rs:445,1
    - Dst: body
      Src: /src/opendal/core/services/b2/src/core.rs:448,1
    - Dst: Buffer::from
      Src: /src/opendal/core/services/b2/src/core.rs:449,1
    - Dst: map_err
      Src: /src/opendal/core/services/b2/src/core.rs:448,1
    - Dst: B2Core::send
      Src: /src/opendal/core/services/b2/src/core.rs:452,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 34
    argCount: 3
    argNames:
    - ctx
    - file_id
    - part_sha1_array
    argTypes:
    - '&OperationContext'
    - '&str'
    - Vec<String>
    constantsTouched: []
    func_position:
      end: 453
      start: 422
    functionDepth: 32
    functionLinenumber: 422
    functionLinenumberEnd: 453
    functionName: B2Core::finish_large_file
    functionSourceFile: /src/opendal/core/services/b2/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - extension
    - B2Core::send
    - http::header
    - Request::post
    - bytes::Bytes::from
    - body
    - B2Core::get_auth_info
    - Buffer::from
    - ServiceOperation
    - to_owned
    - Vec::map_err
    - serde_json::to_vec
    linkageType: ''
    returnType: Result
    signature: 'pub async fn finish_large_file(&self,ctx: &OperationContext,file_id:
      &str,part_sha1_array: Vec<String>,) -> Result<Response<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: B2Core::get_auth_info
      Src: /src/opendal/core/services/b2/src/core.rs:460,1
    - Dst: Request::post
      Src: /src/opendal/core/services/b2/src/core.rs:464,1
    - Dst: http::header
      Src: /src/opendal/core/services/b2/src/core.rs:466,1
    - Dst: extension
      Src: /src/opendal/core/services/b2/src/core.rs:468,1
    - Dst: extension
      Src: /src/opendal/core/services/b2/src/core.rs:468,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/b2/src/core.rs:470,1
    - Dst: serde_json::to_vec
      Src: /src/opendal/core/services/b2/src/core.rs:472,1
    - Dst: to_owned
      Src: /src/opendal/core/services/b2/src/core.rs:473,1
    - Dst: Vec::map_err
      Src: /src/opendal/core/services/b2/src/core.rs:472,1
    - Dst: bytes::Bytes::from
      Src: /src/opendal/core/services/b2/src/core.rs:476,1
    - Dst: body
      Src: /src/opendal/core/services/b2/src/core.rs:479,1
    - Dst: Buffer::from
      Src: /src/opendal/core/services/b2/src/core.rs:480,1
    - Dst: map_err
      Src: /src/opendal/core/services/b2/src/core.rs:479,1
    - Dst: B2Core::send
      Src: /src/opendal/core/services/b2/src/core.rs:483,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 34
    argCount: 2
    argNames:
    - ctx
    - file_id
    argTypes:
    - '&OperationContext'
    - '&str'
    constantsTouched: []
    func_position:
      end: 484
      start: 455
    functionDepth: 32
    functionLinenumber: 455
    functionLinenumberEnd: 484
    functionName: B2Core::cancel_large_file
    functionSourceFile: /src/opendal/core/services/b2/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - extension
    - B2Core::send
    - http::header
    - Request::post
    - bytes::Bytes::from
    - body
    - B2Core::get_auth_info
    - Buffer::from
    - ServiceOperation
    - to_owned
    - Vec::map_err
    - serde_json::to_vec
    linkageType: ''
    returnType: Result
    signature: 'pub async fn cancel_large_file(&self,ctx: &OperationContext,file_id:
      &str,) -> Result<Response<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: B2Core::list_file_names_raw
      Src: /src/opendal/core/services/b2/src/core.rs:492,1
    - Dst: Some
      Src: /src/opendal/core/services/b2/src/core.rs:493,1
    - Dst: status
      Src: /src/opendal/core/services/b2/src/core.rs:496,1
    - Dst: into_body
      Src: /src/opendal/core/services/b2/src/core.rs:499,1
    - Dst: serde_json::from_reader
      Src: /src/opendal/core/services/b2/src/core.rs:501,1
    - Dst: Result::reader
      Src: /src/opendal/core/services/b2/src/core.rs:501,1
    - Dst: map_err
      Src: /src/opendal/core/services/b2/src/core.rs:501,1
    - Dst: is_empty
      Src: /src/opendal/core/services/b2/src/core.rs:503,1
    - Dst: Err
      Src: /src/opendal/core/services/b2/src/core.rs:504,1
    - Dst: Error::new
      Src: /src/opendal/core/services/b2/src/core.rs:504,1
    - Dst: Ok
      Src: /src/opendal/core/services/b2/src/core.rs:506,1
    - Dst: swap_remove
      Src: /src/opendal/core/services/b2/src/core.rs:506,1
    - Dst: Err
      Src: /src/opendal/core/services/b2/src/core.rs:508,1
    - Dst: parse_error
      Src: /src/opendal/core/services/b2/src/core.rs:508,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 32
    argCount: 3
    argNames:
    - ctx
    - path
    - delimiter
    argTypes:
    - '&OperationContext'
    - '&str'
    - Option<&str>
    constantsTouched: []
    func_position:
      end: 510
      start: 486
    functionDepth: 33
    functionLinenumber: 486
    functionLinenumberEnd: 510
    functionName: B2Core::get_file_info
    functionSourceFile: /src/opendal/core/services/b2/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - status
    - B2Core::list_file_names_raw
    - Ok
    - serde_json::from_reader
    - parse_error
    - into_body
    - Some
    - is_empty
    - Err
    - Error::new
    - Result::reader
    - swap_remove
    linkageType: ''
    returnType: Result
    signature: 'pub async fn get_file_info(&self,ctx: &OperationContext,path: &str,delimiter:
      Option<&str>,) -> Result<File>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: B2Core::list_file_names_raw
      Src: /src/opendal/core/services/b2/src/core.rs:520,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 5
    argNames:
    - ctx
    - prefix
    - delimiter
    - limit
    - start_after
    argTypes:
    - '&OperationContext'
    - Option<&str>
    - Option<&str>
    - Option<usize>
    - Option<String>
    constantsTouched: []
    func_position:
      end: 522
      start: 512
    functionDepth: 33
    functionLinenumber: 512
    functionLinenumberEnd: 522
    functionName: B2Core::list_file_names
    functionSourceFile: /src/opendal/core/services/b2/src/core.rs
    functionUses: 0
    functionsReached:
    - B2Core::list_file_names_raw
    linkageType: ''
    returnType: Result
    signature: 'pub async fn list_file_names(&self,ctx: &OperationContext,prefix:
      Option<&str>,delimiter: Option<&str>,limit: Option<usize>,start_after: Option<String>,)
      -> Result<Response<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: B2Core::get_auth_info
      Src: /src/opendal/core/services/b2/src/core.rs:533,1
    - Dst: QueryPairsWriter::new
      Src: /src/opendal/core/services/b2/src/core.rs:537,1
    - Dst: Result::push
      Src: /src/opendal/core/services/b2/src/core.rs:538,1
    - Dst: build_abs_path
      Src: /src/opendal/core/services/b2/src/core.rs:541,1
    - Dst: Result::is_empty
      Src: /src/opendal/core/services/b2/src/core.rs:542,1
    - Dst: Result::push
      Src: /src/opendal/core/services/b2/src/core.rs:543,1
    - Dst: percent_encode_path
      Src: /src/opendal/core/services/b2/src/core.rs:543,1
    - Dst: Result::push
      Src: /src/opendal/core/services/b2/src/core.rs:548,1
    - Dst: Result::to_string
      Src: /src/opendal/core/services/b2/src/core.rs:548,1
    - Dst: Result::push
      Src: /src/opendal/core/services/b2/src/core.rs:552,1
    - Dst: percent_encode_path
      Src: /src/opendal/core/services/b2/src/core.rs:552,1
    - Dst: Result::push
      Src: /src/opendal/core/services/b2/src/core.rs:556,1
    - Dst: Request::get
      Src: /src/opendal/core/services/b2/src/core.rs:559,1
    - Dst: Result::finish
      Src: /src/opendal/core/services/b2/src/core.rs:559,1
    - Dst: Option::header
      Src: /src/opendal/core/services/b2/src/core.rs:561,1
    - Dst: Option::extension
      Src: /src/opendal/core/services/b2/src/core.rs:563,1
    - Dst: extension
      Src: /src/opendal/core/services/b2/src/core.rs:563,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/b2/src/core.rs:565,1
    - Dst: Option::body
      Src: /src/opendal/core/services/b2/src/core.rs:568,1
    - Dst: Buffer::new
      Src: /src/opendal/core/services/b2/src/core.rs:568,1
    - Dst: map_err
      Src: /src/opendal/core/services/b2/src/core.rs:568,1
    - Dst: B2Core::send
      Src: /src/opendal/core/services/b2/src/core.rs:570,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 77
    argCount: 6
    argNames:
    - ctx
    - prefix
    - delimiter
    - limit
    - start_after
    - operation
    argTypes:
    - '&OperationContext'
    - Option<&str>
    - Option<&str>
    - Option<usize>
    - Option<String>
    - Operation
    constantsTouched: []
    func_position:
      end: 571
      start: 524
    functionDepth: 32
    functionLinenumber: 524
    functionLinenumberEnd: 571
    functionName: B2Core::list_file_names_raw
    functionSourceFile: /src/opendal/core/services/b2/src/core.rs
    functionUses: 2
    functionsReached:
    - QueryPairsWriter::new
    - extension
    - Request::get
    - Buffer::new
    - map_err
    - Result::to_string
    - B2Core::send
    - build_abs_path
    - Result::finish
    - B2Core::get_auth_info
    - Result::is_empty
    - Result::push
    - percent_encode_path
    - Option::extension
    - ServiceOperation
    - Option::body
    - Option::header
    linkageType: ''
    returnType: Result
    signature: 'async fn list_file_names_raw(&self,ctx: &OperationContext,prefix:
      Option<&str>,delimiter: Option<&str>,limit: Option<usize>,start_after: Option<String>,operation:
      Operation,) -> Result<Response<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/b2/src/core.rs:579,1
    - Dst: B2Core::get_auth_info
      Src: /src/opendal/core/services/b2/src/core.rs:581,1
    - Dst: Request::post
      Src: /src/opendal/core/services/b2/src/core.rs:585,1
    - Dst: http::header
      Src: /src/opendal/core/services/b2/src/core.rs:587,1
    - Dst: extension
      Src: /src/opendal/core/services/b2/src/core.rs:589,1
    - Dst: extension
      Src: /src/opendal/core/services/b2/src/core.rs:589,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/b2/src/core.rs:591,1
    - Dst: serde_json::to_vec
      Src: /src/opendal/core/services/b2/src/core.rs:598,1
    - Dst: Vec::map_err
      Src: /src/opendal/core/services/b2/src/core.rs:598,1
    - Dst: bytes::Bytes::from
      Src: /src/opendal/core/services/b2/src/core.rs:599,1
    - Dst: body
      Src: /src/opendal/core/services/b2/src/core.rs:602,1
    - Dst: Buffer::from
      Src: /src/opendal/core/services/b2/src/core.rs:603,1
    - Dst: map_err
      Src: /src/opendal/core/services/b2/src/core.rs:602,1
    - Dst: B2Core::send
      Src: /src/opendal/core/services/b2/src/core.rs:606,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 34
    argCount: 3
    argNames:
    - ctx
    - source_file_id
    - to
    argTypes:
    - '&OperationContext'
    - String
    - '&str'
    constantsTouched: []
    func_position:
      end: 607
      start: 573
    functionDepth: 32
    functionLinenumber: 573
    functionLinenumberEnd: 607
    functionName: B2Core::copy_file
    functionSourceFile: /src/opendal/core/services/b2/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - extension
    - B2Core::send
    - http::header
    - Request::post
    - body
    - build_abs_path
    - B2Core::get_auth_info
    - Buffer::from
    - ServiceOperation
    - Vec::map_err
    - bytes::Bytes::from
    - serde_json::to_vec
    linkageType: ''
    returnType: Result
    signature: 'pub async fn copy_file(&self,ctx: &OperationContext,source_file_id:
      String,to: &str,) -> Result<Response<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/b2/src/core.rs:610,1
    - Dst: B2Core::get_auth_info
      Src: /src/opendal/core/services/b2/src/core.rs:612,1
    - Dst: Request::post
      Src: /src/opendal/core/services/b2/src/core.rs:616,1
    - Dst: http::header
      Src: /src/opendal/core/services/b2/src/core.rs:618,1
    - Dst: extension
      Src: /src/opendal/core/services/b2/src/core.rs:620,1
    - Dst: extension
      Src: /src/opendal/core/services/b2/src/core.rs:620,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/b2/src/core.rs:622,1
    - Dst: clone
      Src: /src/opendal/core/services/b2/src/core.rs:625,1
    - Dst: to_string
      Src: /src/opendal/core/services/b2/src/core.rs:626,1
    - Dst: serde_json::to_vec
      Src: /src/opendal/core/services/b2/src/core.rs:629,1
    - Dst: Vec::map_err
      Src: /src/opendal/core/services/b2/src/core.rs:629,1
    - Dst: bytes::Bytes::from
      Src: /src/opendal/core/services/b2/src/core.rs:630,1
    - Dst: body
      Src: /src/opendal/core/services/b2/src/core.rs:633,1
    - Dst: Buffer::from
      Src: /src/opendal/core/services/b2/src/core.rs:634,1
    - Dst: map_err
      Src: /src/opendal/core/services/b2/src/core.rs:633,1
    - Dst: B2Core::send
      Src: /src/opendal/core/services/b2/src/core.rs:637,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 39
    argCount: 2
    argNames:
    - ctx
    - path
    argTypes:
    - '&OperationContext'
    - '&str'
    constantsTouched: []
    func_position:
      end: 638
      start: 609
    functionDepth: 32
    functionLinenumber: 609
    functionLinenumberEnd: 638
    functionName: B2Core::hide_file
    functionSourceFile: /src/opendal/core/services/b2/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - extension
    - to_string
    - B2Core::send
    - http::header
    - Request::post
    - body
    - clone
    - build_abs_path
    - B2Core::get_auth_info
    - Buffer::from
    - ServiceOperation
    - Vec::map_err
    - bytes::Bytes::from
    - serde_json::to_vec
    linkageType: ''
    returnType: Result
    signature: 'pub async fn hide_file(&self, ctx: &OperationContext, path: &str)
      -> Result<Response<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: String::new
      Src: /src/opendal/core/services/b2/src/core.rs:665,1
    - Dst: String::new
      Src: /src/opendal/core/services/b2/src/core.rs:666,1
    - Dst: String::new
      Src: /src/opendal/core/services/b2/src/core.rs:669,1
    - Dst: String::new
      Src: /src/opendal/core/services/b2/src/core.rs:670,1
    - Dst: String::new
      Src: /src/opendal/core/services/b2/src/core.rs:671,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 675
      start: 663
    functionDepth: 2
    functionLinenumber: 663
    functionLinenumberEnd: 675
    functionName: B2Signer::default
    functionSourceFile: /src/opendal/core/services/b2/src/core.rs
    functionUses: 0
    functionsReached:
    - String::new
    linkageType: ''
    returnType: Self
    signature: fn default() -> Self
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: ends_with
      Src: /src/opendal/core/services/b2/src/core.rs:785,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/b2/src/core.rs:786,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/b2/src/core.rs:789,1
    - Dst: anyhow::Result::set_content_length
      Src: /src/opendal/core/services/b2/src/core.rs:791,1
    - Dst: anyhow::Result::set_content_md5
      Src: /src/opendal/core/services/b2/src/core.rs:794,1
    - Dst: anyhow::Result::set_content_type
      Src: /src/opendal/core/services/b2/src/core.rs:798,1
    - Dst: is_empty
      Src: /src/opendal/core/services/b2/src/core.rs:804,1
    - Dst: iter
      Src: /src/opendal/core/services/b2/src/core.rs:805,1
    - Dst: map
      Src: /src/opendal/core/services/b2/src/core.rs:805,1
    - Dst: Result::to_lowercase
      Src: /src/opendal/core/services/b2/src/core.rs:808,1
    - Dst: percent_decode_path
      Src: /src/opendal/core/services/b2/src/core.rs:808,1
    - Dst: collect
      Src: /src/opendal/core/services/b2/src/core.rs:805,1
    - Dst: Result::is_empty
      Src: /src/opendal/core/services/b2/src/core.rs:810,1
    - Dst: anyhow::Result::with_user_metadata
      Src: /src/opendal/core/services/b2/src/core.rs:811,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 54
    argCount: 1
    argNames:
    - file
    argTypes:
    - '&File'
    constantsTouched: []
    func_position:
      end: 816
      start: 784
    functionDepth: 36
    functionLinenumber: 784
    functionLinenumberEnd: 816
    functionName: parse_file_info
    functionSourceFile: /src/opendal/core/services/b2/src/core.rs
    functionUses: 2
    functionsReached:
    - collect
    - anyhow::Result::set_content_length
    - Metadata::new
    - iter
    - ends_with
    - Result::to_lowercase
    - anyhow::Result::set_content_type
    - is_empty
    - map
    - percent_decode_path
    - Result::is_empty
    - anyhow::Result::with_user_metadata
    - anyhow::Result::set_content_md5
    linkageType: ''
    returnType: Metadata
    signature: 'pub(super) fn parse_file_info(file: &File) -> Metadata'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Some
      Src: /src/opendal/core/services/b2/src/core.rs:902,1
    - Dst: Some
      Src: /src/opendal/core/services/b2/src/core.rs:903,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - code
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 906
      start: 900
    functionDepth: 0
    functionLinenumber: 900
    functionLinenumberEnd: 906
    functionName: error::parse_b2_error_code
    functionSourceFile: /src/opendal/core/services/b2/src/core.rs
    functionUses: 0
    functionsReached:
    - Some
    linkageType: ''
    returnType: Option
    signature: 'pub(crate) fn parse_b2_error_code(code: &str) -> Option<(ErrorKind,
      bool)>'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 930
      start: 915
    functionDepth: 0
    functionLinenumber: 915
    functionLinenumberEnd: 930
    functionName: error::test_parse_b2_error_code
    functionSourceFile: /src/opendal/core/services/b2/src/core.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: fn test_parse_b2_error_code()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: to_string
      Src: /src/opendal/core/services/b2/src/writer.rs:46,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 4
    argNames:
    - core
    - ctx
    - path
    - op
    argTypes:
    - Arc<B2Core>
    - OperationContext
    - '&str'
    - OpWrite
    constantsTouched: []
    func_position:
      end: 49
      start: 42
    functionDepth: 2
    functionLinenumber: 42
    functionLinenumberEnd: 49
    functionName: B2Writer::new
    functionSourceFile: /src/opendal/core/services/b2/src/writer.rs
    functionUses: 1
    functionsReached:
    - to_string
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(core: Arc<B2Core>, ctx: OperationContext, path: &str, op:
      OpWrite) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Metadata::new
      Src: /src/opendal/core/services/b2/src/writer.rs:52,1
    - Dst: EntryMode::from_path
      Src: /src/opendal/core/services/b2/src/writer.rs:52,1
    - Dst: Result::set_content_md5
      Src: /src/opendal/core/services/b2/src/writer.rs:55,1
    - Dst: Result::set_content_type
      Src: /src/opendal/core/services/b2/src/writer.rs:59,1
    - Dst: Result::set_content_length
      Src: /src/opendal/core/services/b2/src/writer.rs:62,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 20
    argCount: 2
    argNames:
    - path
    - resp
    argTypes:
    - '&str'
    - UploadResponse
    constantsTouched: []
    func_position:
      end: 65
      start: 51
    functionDepth: 3
    functionLinenumber: 51
    functionLinenumberEnd: 65
    functionName: B2Writer::parse_body_into_meta
    functionSourceFile: /src/opendal/core/services/b2/src/writer.rs
    functionUses: 0
    functionsReached:
    - Metadata::new
    - EntryMode::from_path
    - Result::set_content_length
    - Result::set_content_type
    - Result::set_content_md5
    linkageType: ''
    returnType: Metadata
    signature: 'pub fn parse_body_into_meta(path: &str, resp: UploadResponse) -> Metadata'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: upload_file
      Src: /src/opendal/core/services/b2/src/writer.rs:70,1
    - Dst: Some
      Src: /src/opendal/core/services/b2/src/writer.rs:72,1
    - Dst: status
      Src: /src/opendal/core/services/b2/src/writer.rs:75,1
    - Dst: into_body
      Src: /src/opendal/core/services/b2/src/writer.rs:79,1
    - Dst: serde_json::from_reader
      Src: /src/opendal/core/services/b2/src/writer.rs:82,1
    - Dst: Result::reader
      Src: /src/opendal/core/services/b2/src/writer.rs:82,1
    - Dst: map_err
      Src: /src/opendal/core/services/b2/src/writer.rs:82,1
    - Dst: Self::parse_body_into_meta
      Src: /src/opendal/core/services/b2/src/writer.rs:84,1
    - Dst: Ok
      Src: /src/opendal/core/services/b2/src/writer.rs:86,1
    - Dst: Err
      Src: /src/opendal/core/services/b2/src/writer.rs:88,1
    - Dst: super::core::parse_error
      Src: /src/opendal/core/services/b2/src/writer.rs:88,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 30
    argCount: 2
    argNames:
    - size
    - body
    argTypes:
    - u64
    - Buffer
    constantsTouched: []
    func_position:
      end: 90
      start: 69
    functionDepth: 39
    functionLinenumber: 69
    functionLinenumberEnd: 90
    functionName: B2Writer::write_once
    functionSourceFile: /src/opendal/core/services/b2/src/writer.rs
    functionUses: 0
    functionsReached:
    - map_err
    - status
    - upload_file
    - Ok
    - serde_json::from_reader
    - into_body
    - Some
    - Err
    - Self::parse_body_into_meta
    - Result::reader
    - super::core::parse_error
    linkageType: ''
    returnType: Result
    signature: 'async fn write_once(&self, size: u64, body: Buffer) -> Result<Metadata>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: start_large_file
      Src: /src/opendal/core/services/b2/src/writer.rs:93,1
    - Dst: status
      Src: /src/opendal/core/services/b2/src/writer.rs:98,1
    - Dst: into_body
      Src: /src/opendal/core/services/b2/src/writer.rs:102,1
    - Dst: serde_json::from_reader
      Src: /src/opendal/core/services/b2/src/writer.rs:105,1
    - Dst: Result::reader
      Src: /src/opendal/core/services/b2/src/writer.rs:105,1
    - Dst: map_err
      Src: /src/opendal/core/services/b2/src/writer.rs:105,1
    - Dst: Ok
      Src: /src/opendal/core/services/b2/src/writer.rs:107,1
    - Dst: Err
      Src: /src/opendal/core/services/b2/src/writer.rs:109,1
    - Dst: super::core::parse_error
      Src: /src/opendal/core/services/b2/src/writer.rs:109,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 27
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 111
      start: 92
    functionDepth: 33
    functionLinenumber: 92
    functionLinenumberEnd: 111
    functionName: B2Writer::initiate_part
    functionSourceFile: /src/opendal/core/services/b2/src/writer.rs
    functionUses: 0
    functionsReached:
    - map_err
    - status
    - Ok
    - serde_json::from_reader
    - into_body
    - start_large_file
    - Err
    - Result::reader
    - super::core::parse_error
    linkageType: ''
    returnType: Result
    signature: async fn initiate_part(&self) -> Result<String>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: upload_part
      Src: /src/opendal/core/services/b2/src/writer.rs:123,1
    - Dst: status
      Src: /src/opendal/core/services/b2/src/writer.rs:128,1
    - Dst: into_body
      Src: /src/opendal/core/services/b2/src/writer.rs:132,1
    - Dst: serde_json::from_reader
      Src: /src/opendal/core/services/b2/src/writer.rs:135,1
    - Dst: Result::reader
      Src: /src/opendal/core/services/b2/src/writer.rs:135,1
    - Dst: map_err
      Src: /src/opendal/core/services/b2/src/writer.rs:135,1
    - Dst: Ok
      Src: /src/opendal/core/services/b2/src/writer.rs:137,1
    - Dst: Err
      Src: /src/opendal/core/services/b2/src/writer.rs:144,1
    - Dst: super::core::parse_error
      Src: /src/opendal/core/services/b2/src/writer.rs:144,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 25
    argCount: 4
    argNames:
    - upload_id
    - part_number
    - size
    - body
    argTypes:
    - '&str'
    - usize
    - u64
    - Buffer
    constantsTouched: []
    func_position:
      end: 146
      start: 113
    functionDepth: 36
    functionLinenumber: 113
    functionLinenumberEnd: 146
    functionName: B2Writer::write_part
    functionSourceFile: /src/opendal/core/services/b2/src/writer.rs
    functionUses: 0
    functionsReached:
    - map_err
    - status
    - Ok
    - serde_json::from_reader
    - into_body
    - Err
    - upload_part
    - Result::reader
    - super::core::parse_error
    linkageType: ''
    returnType: Result
    signature: 'async fn write_part(&self,upload_id: &str,part_number: usize,size:
      u64,body: Buffer,) -> Result<oio::MultipartPart>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: (String, Metadata)::iter
      Src: /src/opendal/core/services/b2/src/writer.rs:153,1
    - Dst: map
      Src: /src/opendal/core/services/b2/src/writer.rs:153,1
    - Dst: clone
      Src: /src/opendal/core/services/b2/src/writer.rs:156,1
    - Dst: strip_prefix
      Src: /src/opendal/core/services/b2/src/writer.rs:157,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/b2/src/writer.rs:159,1
    - Dst: to_string
      Src: /src/opendal/core/services/b2/src/writer.rs:161,1
    - Dst: Result::collect
      Src: /src/opendal/core/services/b2/src/writer.rs:153,1
    - Dst: finish_large_file
      Src: /src/opendal/core/services/b2/src/writer.rs:165,1
    - Dst: status
      Src: /src/opendal/core/services/b2/src/writer.rs:170,1
    - Dst: into_body
      Src: /src/opendal/core/services/b2/src/writer.rs:174,1
    - Dst: serde_json::from_reader
      Src: /src/opendal/core/services/b2/src/writer.rs:177,1
    - Dst: Result::reader
      Src: /src/opendal/core/services/b2/src/writer.rs:177,1
    - Dst: map_err
      Src: /src/opendal/core/services/b2/src/writer.rs:177,1
    - Dst: Self::parse_body_into_meta
      Src: /src/opendal/core/services/b2/src/writer.rs:179,1
    - Dst: Ok
      Src: /src/opendal/core/services/b2/src/writer.rs:181,1
    - Dst: Err
      Src: /src/opendal/core/services/b2/src/writer.rs:183,1
    - Dst: super::core::parse_error
      Src: /src/opendal/core/services/b2/src/writer.rs:183,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 43
    argCount: 2
    argNames:
    - upload_id
    - parts
    argTypes:
    - '&str'
    - '&[oio::MultipartPart]'
    constantsTouched: []
    func_position:
      end: 185
      start: 148
    functionDepth: 36
    functionLinenumber: 148
    functionLinenumberEnd: 185
    functionName: B2Writer::complete_part
    functionSourceFile: /src/opendal/core/services/b2/src/writer.rs
    functionUses: 0
    functionsReached:
    - map_err
    - to_string
    - status
    - Ok
    - serde_json::from_reader
    - into_body
    - clone
    - Err
    - map
    - strip_prefix
    - '&str::to_string'
    - Result::collect
    - (String, Metadata)::iter
    - Self::parse_body_into_meta
    - Result::reader
    - super::core::parse_error
    - finish_large_file
    linkageType: ''
    returnType: Result
    signature: 'async fn complete_part(&self,upload_id: &str,parts: &[oio::MultipartPart],)
      -> Result<Metadata>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: cancel_large_file
      Src: /src/opendal/core/services/b2/src/writer.rs:188,1
    - Dst: status
      Src: /src/opendal/core/services/b2/src/writer.rs:189,1
    - Dst: Ok
      Src: /src/opendal/core/services/b2/src/writer.rs:191,1
    - Dst: Err
      Src: /src/opendal/core/services/b2/src/writer.rs:192,1
    - Dst: super::core::parse_error
      Src: /src/opendal/core/services/b2/src/writer.rs:192,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 1
    argNames:
    - upload_id
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 194
      start: 187
    functionDepth: 33
    functionLinenumber: 187
    functionLinenumberEnd: 194
    functionName: B2Writer::abort_part
    functionSourceFile: /src/opendal/core/services/b2/src/writer.rs
    functionUses: 0
    functionsReached:
    - cancel_large_file
    - status
    - Ok
    - Err
    - super::core::parse_error
    linkageType: ''
    returnType: Result
    signature: 'async fn abort_part(&self, upload_id: &str) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: register::<B2>
      Src: /src/opendal/core/services/b2/src/lib.rs:27,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - registry
    argTypes:
    - '&opendal_core::OperatorRegistry'
    constantsTouched: []
    func_position:
      end: 28
      start: 26
    functionDepth: 0
    functionLinenumber: 26
    functionLinenumberEnd: 28
    functionName: register_b2_service
    functionSourceFile: /src/opendal/core/services/b2/src/lib.rs
    functionUses: 1
    functionsReached:
    - register::<B2>
    linkageType: ''
    returnType: void
    signature: 'pub fn register_b2_service(registry: &opendal_core::OperatorRegistry)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::debug_struct
      Src: /src/opendal/core/services/b2/src/backend.rs:50,1
    - Dst: field
      Src: /src/opendal/core/services/b2/src/backend.rs:50,1
    - Dst: finish_non_exhaustive
      Src: /src/opendal/core/services/b2/src/backend.rs:50,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - f
    argTypes:
    - '&mut std::fmt::Formatter<''_>'
    constantsTouched: []
    func_position:
      end: 53
      start: 49
    functionDepth: 5
    functionLinenumber: 49
    functionLinenumberEnd: 53
    functionName: B2Builder::fmt
    functionSourceFile: /src/opendal/core/services/b2/src/backend.rs
    functionUses: 0
    functionsReached:
    - field
    - Result::debug_struct
    - finish_non_exhaustive
    linkageType: ''
    returnType: std::fmt::Result
    signature: 'fn fmt(&self, f: &mut std::fmt::Formatter<''_>) -> std::fmt::Result'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::is_empty
      Src: /src/opendal/core/services/b2/src/backend.rs:61,1
    - Dst: Some
      Src: /src/opendal/core/services/b2/src/backend.rs:64,1
    - Dst: Result::to_string
      Src: /src/opendal/core/services/b2/src/backend.rs:64,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - root
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 68
      start: 60
    functionDepth: 4
    functionLinenumber: 60
    functionLinenumberEnd: 68
    functionName: B2Builder::root
    functionSourceFile: /src/opendal/core/services/b2/src/backend.rs
    functionUses: 0
    functionsReached:
    - Result::is_empty
    - Result::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn root(mut self, root: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self::is_empty
      Src: /src/opendal/core/services/b2/src/backend.rs:72,1
    - Dst: Some
      Src: /src/opendal/core/services/b2/src/backend.rs:75,1
    - Dst: Self::to_string
      Src: /src/opendal/core/services/b2/src/backend.rs:75,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - application_key_id
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 79
      start: 71
    functionDepth: 4
    functionLinenumber: 71
    functionLinenumberEnd: 79
    functionName: B2Builder::application_key_id
    functionSourceFile: /src/opendal/core/services/b2/src/backend.rs
    functionUses: 0
    functionsReached:
    - Self::is_empty
    - Self::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn application_key_id(mut self, application_key_id: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self::is_empty
      Src: /src/opendal/core/services/b2/src/backend.rs:83,1
    - Dst: Some
      Src: /src/opendal/core/services/b2/src/backend.rs:86,1
    - Dst: Self::to_string
      Src: /src/opendal/core/services/b2/src/backend.rs:86,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - application_key
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 90
      start: 82
    functionDepth: 4
    functionLinenumber: 82
    functionLinenumberEnd: 90
    functionName: B2Builder::application_key
    functionSourceFile: /src/opendal/core/services/b2/src/backend.rs
    functionUses: 0
    functionsReached:
    - Self::is_empty
    - Self::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn application_key(mut self, application_key: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: usize::to_string
      Src: /src/opendal/core/services/b2/src/backend.rs:95,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - bucket
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 98
      start: 94
    functionDepth: 2
    functionLinenumber: 94
    functionLinenumberEnd: 98
    functionName: B2Builder::bucket
    functionSourceFile: /src/opendal/core/services/b2/src/backend.rs
    functionUses: 0
    functionsReached:
    - usize::to_string
    linkageType: ''
    returnType: Self
    signature: 'pub fn bucket(mut self, bucket: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self::to_string
      Src: /src/opendal/core/services/b2/src/backend.rs:103,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - bucket_id
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 106
      start: 102
    functionDepth: 2
    functionLinenumber: 102
    functionLinenumberEnd: 106
    functionName: B2Builder::bucket_id
    functionSourceFile: /src/opendal/core/services/b2/src/backend.rs
    functionUses: 0
    functionsReached:
    - Self::to_string
    linkageType: ''
    returnType: Self
    signature: 'pub fn bucket_id(mut self, bucket_id: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: normalize_root
      Src: /src/opendal/core/services/b2/src/backend.rs:116,1
    - Dst: clone
      Src: /src/opendal/core/services/b2/src/backend.rs:116,1
    - Dst: unwrap_or_default
      Src: /src/opendal/core/services/b2/src/backend.rs:116,1
    - Dst: is_empty
      Src: /src/opendal/core/services/b2/src/backend.rs:120,1
    - Dst: Err
      Src: /src/opendal/core/services/b2/src/backend.rs:121,1
    - Dst: Error::new
      Src: /src/opendal/core/services/b2/src/backend.rs:121,1
    - Dst: Self::with_operation
      Src: /src/opendal/core/services/b2/src/backend.rs:121,1
    - Dst: Self::with_context
      Src: /src/opendal/core/services/b2/src/backend.rs:121,1
    - Dst: is_empty
      Src: /src/opendal/core/services/b2/src/backend.rs:129,1
    - Dst: Err
      Src: /src/opendal/core/services/b2/src/backend.rs:130,1
    - Dst: Error::new
      Src: /src/opendal/core/services/b2/src/backend.rs:130,1
    - Dst: Self::with_operation
      Src: /src/opendal/core/services/b2/src/backend.rs:130,1
    - Dst: Self::with_context
      Src: /src/opendal/core/services/b2/src/backend.rs:130,1
    - Dst: Ok
      Src: /src/opendal/core/services/b2/src/backend.rs:138,1
    - Dst: Self::clone
      Src: /src/opendal/core/services/b2/src/backend.rs:138,1
    - Dst: Err
      Src: /src/opendal/core/services/b2/src/backend.rs:139,1
    - Dst: Error::new
      Src: /src/opendal/core/services/b2/src/backend.rs:140,1
    - Dst: Self::with_operation
      Src: /src/opendal/core/services/b2/src/backend.rs:140,1
    - Dst: Self::with_context
      Src: /src/opendal/core/services/b2/src/backend.rs:140,1
    - Dst: Ok
      Src: /src/opendal/core/services/b2/src/backend.rs:147,1
    - Dst: Self::clone
      Src: /src/opendal/core/services/b2/src/backend.rs:147,1
    - Dst: Err
      Src: /src/opendal/core/services/b2/src/backend.rs:148,1
    - Dst: Error::new
      Src: /src/opendal/core/services/b2/src/backend.rs:149,1
    - Dst: Self::with_operation
      Src: /src/opendal/core/services/b2/src/backend.rs:149,1
    - Dst: Self::with_context
      Src: /src/opendal/core/services/b2/src/backend.rs:149,1
    - Dst: Default::default
      Src: /src/opendal/core/services/b2/src/backend.rs:158,1
    - Dst: Ok
      Src: /src/opendal/core/services/b2/src/backend.rs:161,1
    - Dst: Arc::new
      Src: /src/opendal/core/services/b2/src/backend.rs:162,1
    - Dst: ServiceInfo::new
      Src: /src/opendal/core/services/b2/src/backend.rs:163,1
    - Dst: Some
      Src: /src/opendal/core/services/b2/src/backend.rs:178,1
    - Dst: Some
      Src: /src/opendal/core/services/b2/src/backend.rs:183,1
    - Dst: Some
      Src: /src/opendal/core/services/b2/src/backend.rs:185,1
    - Dst: Default::default
      Src: /src/opendal/core/services/b2/src/backend.rs:203,1
    - Dst: Arc::new
      Src: /src/opendal/core/services/b2/src/backend.rs:205,1
    - Dst: RwLock::new
      Src: /src/opendal/core/services/b2/src/backend.rs:205,1
    - Dst: clone
      Src: /src/opendal/core/services/b2/src/backend.rs:208,1
    - Dst: clone
      Src: /src/opendal/core/services/b2/src/backend.rs:209,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 97
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 212
      start: 113
    functionDepth: 34
    functionLinenumber: 113
    functionLinenumberEnd: 212
    functionName: B2Builder::build
    functionSourceFile: /src/opendal/core/services/b2/src/backend.rs
    functionUses: 0
    functionsReached:
    - ServiceInfo::new
    - Ok
    - RwLock::new
    - Default::default
    - Arc::new
    - clone
    - normalize_root
    - Err
    - is_empty
    - Error::new
    - Some
    - Self::clone
    - Self::with_operation
    - Self::with_context
    - unwrap_or_default
    linkageType: ''
    returnType: Result
    signature: fn build(self) -> Result<impl Service>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: clone
      Src: /src/opendal/core/services/b2/src/backend.rs:229,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 230
      start: 228
    functionDepth: 2
    functionLinenumber: 228
    functionLinenumberEnd: 230
    functionName: B2Backend::info
    functionSourceFile: /src/opendal/core/services/b2/src/backend.rs
    functionUses: 0
    functionsReached:
    - clone
    linkageType: ''
    returnType: ServiceInfo
    signature: fn info(&self) -> ServiceInfo
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 234
      start: 232
    functionDepth: 0
    functionLinenumber: 232
    functionLinenumberEnd: 234
    functionName: B2Backend::capability
    functionSourceFile: /src/opendal/core/services/b2/src/backend.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Capability
    signature: fn capability(&self) -> Capability
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/core/services/b2/src/backend.rs:242,1
    - Dst: Error::new
      Src: /src/opendal/core/services/b2/src/backend.rs:242,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - _ctx
    - _path
    - _args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpCreateDir
    constantsTouched: []
    func_position:
      end: 246
      start: 236
    functionDepth: 36
    functionLinenumber: 236
    functionLinenumberEnd: 246
    functionName: B2Backend::create_dir
    functionSourceFile: /src/opendal/core/services/b2/src/backend.rs
    functionUses: 0
    functionsReached:
    - Error::new
    - Err
    linkageType: ''
    returnType: Result
    signature: 'async fn create_dir(&self,_ctx: &OperationContext,_path: &str,_args:
      OpCreateDir,) -> Result<RpCreateDir>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/core/services/b2/src/backend.rs:253,1
    - Dst: RpStat::new
      Src: /src/opendal/core/services/b2/src/backend.rs:253,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/b2/src/backend.rs:253,1
    - Dst: ends_with
      Src: /src/opendal/core/services/b2/src/backend.rs:256,1
    - Dst: Some
      Src: /src/opendal/core/services/b2/src/backend.rs:256,1
    - Dst: get_file_info
      Src: /src/opendal/core/services/b2/src/backend.rs:258,1
    - Dst: super::core::parse_file_info
      Src: /src/opendal/core/services/b2/src/backend.rs:259,1
    - Dst: Ok
      Src: /src/opendal/core/services/b2/src/backend.rs:260,1
    - Dst: RpStat::new
      Src: /src/opendal/core/services/b2/src/backend.rs:260,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 21
    argCount: 3
    argNames:
    - ctx
    - path
    - _args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpStat
    constantsTouched: []
    func_position:
      end: 261
      start: 250
    functionDepth: 34
    functionLinenumber: 250
    functionLinenumberEnd: 261
    functionName: B2Backend::stat
    functionSourceFile: /src/opendal/core/services/b2/src/backend.rs
    functionUses: 0
    functionsReached:
    - super::core::parse_file_info
    - Metadata::new
    - Ok
    - ends_with
    - RpStat::new
    - get_file_info
    - Some
    linkageType: ''
    returnType: Result
    signature: 'async fn stat(&self, ctx: &OperationContext, path: &str, _args: OpStat)
      -> Result<RpStat>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/core/services/b2/src/backend.rs:264,1
    - Dst: oio::StreamReader::new
      Src: /src/opendal/core/services/b2/src/backend.rs:264,1
    - Dst: B2Reader::new
      Src: /src/opendal/core/services/b2/src/backend.rs:264,1
    - Dst: B2Backend::clone
      Src: /src/opendal/core/services/b2/src/backend.rs:265,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/b2/src/backend.rs:266,1
    - Dst: Ok
      Src: /src/opendal/core/services/b2/src/backend.rs:272,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpRead
    constantsTouched: []
    func_position:
      end: 273
      start: 262
    functionDepth: 3
    functionLinenumber: 262
    functionLinenumberEnd: 273
    functionName: B2Backend::read
    functionSourceFile: /src/opendal/core/services/b2/src/backend.rs
    functionUses: 0
    functionsReached:
    - Result::clone
    - B2Reader::new
    - Ok
    - B2Backend::clone
    - oio::StreamReader::new
    linkageType: ''
    returnType: Result
    signature: 'fn read(&self, ctx: &OperationContext, path: &str, args: OpRead) ->
      Result<Self::Reader>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: OpStat::concurrent
      Src: /src/opendal/core/services/b2/src/backend.rs:277,1
    - Dst: B2Writer::new
      Src: /src/opendal/core/services/b2/src/backend.rs:278,1
    - Dst: clone
      Src: /src/opendal/core/services/b2/src/backend.rs:278,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/b2/src/backend.rs:278,1
    - Dst: oio::MultipartWriter::new
      Src: /src/opendal/core/services/b2/src/backend.rs:280,1
    - Dst: Result::executor
      Src: /src/opendal/core/services/b2/src/backend.rs:280,1
    - Dst: Self::clone
      Src: /src/opendal/core/services/b2/src/backend.rs:280,1
    - Dst: Ok
      Src: /src/opendal/core/services/b2/src/backend.rs:282,1
    - Dst: Ok
      Src: /src/opendal/core/services/b2/src/backend.rs:285,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 16
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpWrite
    constantsTouched: []
    func_position:
      end: 286
      start: 275
    functionDepth: 37
    functionLinenumber: 275
    functionLinenumberEnd: 286
    functionName: B2Backend::write
    functionSourceFile: /src/opendal/core/services/b2/src/backend.rs
    functionUses: 0
    functionsReached:
    - Result::clone
    - oio::MultipartWriter::new
    - Ok
    - Result::executor
    - clone
    - OpStat::concurrent
    - Self::clone
    - B2Writer::new
    linkageType: ''
    returnType: Result
    signature: 'fn write(&self, ctx: &OperationContext, path: &str, args: OpWrite)
      -> Result<Self::Writer>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/core/services/b2/src/backend.rs:290,1
    - Dst: oio::OneShotDeleter::new
      Src: /src/opendal/core/services/b2/src/backend.rs:290,1
    - Dst: B2Deleter::new
      Src: /src/opendal/core/services/b2/src/backend.rs:290,1
    - Dst: clone
      Src: /src/opendal/core/services/b2/src/backend.rs:291,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/b2/src/backend.rs:292,1
    - Dst: Ok
      Src: /src/opendal/core/services/b2/src/backend.rs:296,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - '&OperationContext'
    constantsTouched: []
    func_position:
      end: 297
      start: 288
    functionDepth: 2
    functionLinenumber: 288
    functionLinenumberEnd: 297
    functionName: B2Backend::delete
    functionSourceFile: /src/opendal/core/services/b2/src/backend.rs
    functionUses: 0
    functionsReached:
    - oio::OneShotDeleter::new
    - Result::clone
    - Ok
    - clone
    - B2Deleter::new
    linkageType: ''
    returnType: Result
    signature: 'fn delete(&self, ctx: &OperationContext) -> Result<Self::Deleter>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/core/services/b2/src/backend.rs:301,1
    - Dst: oio::PageLister::new
      Src: /src/opendal/core/services/b2/src/backend.rs:301,1
    - Dst: B2Lister::new
      Src: /src/opendal/core/services/b2/src/backend.rs:301,1
    - Dst: clone
      Src: /src/opendal/core/services/b2/src/backend.rs:302,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/b2/src/backend.rs:303,1
    - Dst: OpStat::recursive
      Src: /src/opendal/core/services/b2/src/backend.rs:305,1
    - Dst: OpStat::limit
      Src: /src/opendal/core/services/b2/src/backend.rs:306,1
    - Dst: OpStat::start_after
      Src: /src/opendal/core/services/b2/src/backend.rs:307,1
    - Dst: Ok
      Src: /src/opendal/core/services/b2/src/backend.rs:311,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 16
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpList
    constantsTouched: []
    func_position:
      end: 312
      start: 299
    functionDepth: 36
    functionLinenumber: 299
    functionLinenumberEnd: 312
    functionName: B2Backend::list
    functionSourceFile: /src/opendal/core/services/b2/src/backend.rs
    functionUses: 0
    functionsReached:
    - Result::clone
    - Ok
    - OpStat::start_after
    - clone
    - oio::PageLister::new
    - B2Lister::new
    - OpStat::limit
    - OpStat::recursive
    linkageType: ''
    returnType: Result
    signature: 'fn list(&self, ctx: &OperationContext, path: &str, args: OpList) ->
      Result<Self::Lister>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: clone
      Src: /src/opendal/core/services/b2/src/backend.rs:322,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/b2/src/backend.rs:323,1
    - Dst: Result::to_string
      Src: /src/opendal/core/services/b2/src/backend.rs:324,1
    - Dst: Result::to_string
      Src: /src/opendal/core/services/b2/src/backend.rs:325,1
    - Dst: Ok
      Src: /src/opendal/core/services/b2/src/backend.rs:327,1
    - Dst: oio::OneShotCopier::new
      Src: /src/opendal/core/services/b2/src/backend.rs:327,1
    - Dst: CompfsCore::get_file_info
      Src: /src/opendal/core/services/b2/src/backend.rs:328,1
    - Dst: Err
      Src: /src/opendal/core/services/b2/src/backend.rs:332,1
    - Dst: Error::new
      Src: /src/opendal/core/services/b2/src/backend.rs:332,1
    - Dst: CompfsCore::copy_file
      Src: /src/opendal/core/services/b2/src/backend.rs:335,1
    - Dst: status
      Src: /src/opendal/core/services/b2/src/backend.rs:337,1
    - Dst: Ok
      Src: /src/opendal/core/services/b2/src/backend.rs:340,1
    - Dst: Metadata::default
      Src: /src/opendal/core/services/b2/src/backend.rs:340,1
    - Dst: Err
      Src: /src/opendal/core/services/b2/src/backend.rs:341,1
    - Dst: super::core::parse_error
      Src: /src/opendal/core/services/b2/src/backend.rs:341,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 36
    argCount: 5
    argNames:
    - ctx
    - from
    - to
    - _args
    - _opts
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    - OpCopy
    - OpCopier
    constantsTouched: []
    func_position:
      end: 344
      start: 314
    functionDepth: 34
    functionLinenumber: 314
    functionLinenumberEnd: 344
    functionName: B2Backend::copy
    functionSourceFile: /src/opendal/core/services/b2/src/backend.rs
    functionUses: 0
    functionsReached:
    - Result::clone
    - CompfsCore::get_file_info
    - Metadata::default
    - Result::to_string
    - Ok
    - status
    - clone
    - Err
    - Error::new
    - CompfsCore::copy_file
    - super::core::parse_error
    - oio::OneShotCopier::new
    linkageType: ''
    returnType: Result
    signature: 'fn copy(&self,ctx: &OperationContext,from: &str,to: &str,_args: OpCopy,_opts:
      OpCopier,) -> Result<Self::Copier>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/core/services/b2/src/backend.rs:353,1
    - Dst: Error::new
      Src: /src/opendal/core/services/b2/src/backend.rs:353,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - _ctx
    - _from
    - _to
    - _args
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    - OpRename
    constantsTouched: []
    func_position:
      end: 357
      start: 346
    functionDepth: 36
    functionLinenumber: 346
    functionLinenumberEnd: 357
    functionName: B2Backend::rename
    functionSourceFile: /src/opendal/core/services/b2/src/backend.rs
    functionUses: 0
    functionsReached:
    - Error::new
    - Err
    linkageType: ''
    returnType: Result
    signature: 'async fn rename(&self,_ctx: &OperationContext,_from: &str,_to: &str,_args:
      OpRename,) -> Result<RpRename>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: OpStat::operation
      Src: /src/opendal/core/services/b2/src/backend.rs:365,1
    - Dst: get_download_authorization
      Src: /src/opendal/core/services/b2/src/backend.rs:367,1
    - Dst: OpStat::expire
      Src: /src/opendal/core/services/b2/src/backend.rs:369,1
    - Dst: build_abs_path
      Src: /src/opendal/core/services/b2/src/backend.rs:371,1
    - Dst: get_auth_info
      Src: /src/opendal/core/services/b2/src/backend.rs:373,1
    - Dst: Request::get
      Src: /src/opendal/core/services/b2/src/backend.rs:380,1
    - Dst: Option::body
      Src: /src/opendal/core/services/b2/src/backend.rs:382,1
    - Dst: Buffer::new
      Src: /src/opendal/core/services/b2/src/backend.rs:382,1
    - Dst: map_err
      Src: /src/opendal/core/services/b2/src/backend.rs:382,1
    - Dst: Option::into_parts
      Src: /src/opendal/core/services/b2/src/backend.rs:385,1
    - Dst: Ok
      Src: /src/opendal/core/services/b2/src/backend.rs:387,1
    - Dst: RpPresign::new
      Src: /src/opendal/core/services/b2/src/backend.rs:387,1
    - Dst: PresignedRequest::new
      Src: /src/opendal/core/services/b2/src/backend.rs:387,1
    - Dst: get_download_authorization
      Src: /src/opendal/core/services/b2/src/backend.rs:394,1
    - Dst: OpStat::expire
      Src: /src/opendal/core/services/b2/src/backend.rs:396,1
    - Dst: build_abs_path
      Src: /src/opendal/core/services/b2/src/backend.rs:398,1
    - Dst: get_auth_info
      Src: /src/opendal/core/services/b2/src/backend.rs:400,1
    - Dst: Request::get
      Src: /src/opendal/core/services/b2/src/backend.rs:407,1
    - Dst: Option::body
      Src: /src/opendal/core/services/b2/src/backend.rs:409,1
    - Dst: Buffer::new
      Src: /src/opendal/core/services/b2/src/backend.rs:409,1
    - Dst: map_err
      Src: /src/opendal/core/services/b2/src/backend.rs:409,1
    - Dst: Option::into_parts
      Src: /src/opendal/core/services/b2/src/backend.rs:412,1
    - Dst: Ok
      Src: /src/opendal/core/services/b2/src/backend.rs:414,1
    - Dst: RpPresign::new
      Src: /src/opendal/core/services/b2/src/backend.rs:414,1
    - Dst: PresignedRequest::new
      Src: /src/opendal/core/services/b2/src/backend.rs:414,1
    - Dst: get_upload_url
      Src: /src/opendal/core/services/b2/src/backend.rs:421,1
    - Dst: Request::post
      Src: /src/opendal/core/services/b2/src/backend.rs:423,1
    - Dst: Option::header
      Src: /src/opendal/core/services/b2/src/backend.rs:425,1
    - Dst: Option::header
      Src: /src/opendal/core/services/b2/src/backend.rs:426,1
    - Dst: build_abs_path
      Src: /src/opendal/core/services/b2/src/backend.rs:426,1
    - Dst: Option::header
      Src: /src/opendal/core/services/b2/src/backend.rs:427,1
    - Dst: Option::header
      Src: /src/opendal/core/services/b2/src/backend.rs:428,1
    - Dst: Option::body
      Src: /src/opendal/core/services/b2/src/backend.rs:430,1
    - Dst: Buffer::new
      Src: /src/opendal/core/services/b2/src/backend.rs:430,1
    - Dst: map_err
      Src: /src/opendal/core/services/b2/src/backend.rs:430,1
    - Dst: Option::into_parts
      Src: /src/opendal/core/services/b2/src/backend.rs:432,1
    - Dst: Ok
      Src: /src/opendal/core/services/b2/src/backend.rs:434,1
    - Dst: RpPresign::new
      Src: /src/opendal/core/services/b2/src/backend.rs:434,1
    - Dst: PresignedRequest::new
      Src: /src/opendal/core/services/b2/src/backend.rs:434,1
    - Dst: Err
      Src: /src/opendal/core/services/b2/src/backend.rs:440,1
    - Dst: Error::new
      Src: /src/opendal/core/services/b2/src/backend.rs:440,1
    - Dst: Err
      Src: /src/opendal/core/services/b2/src/backend.rs:444,1
    - Dst: Error::new
      Src: /src/opendal/core/services/b2/src/backend.rs:444,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 113
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpPresign
    constantsTouched: []
    func_position:
      end: 449
      start: 359
    functionDepth: 33
    functionLinenumber: 359
    functionLinenumberEnd: 449
    functionName: B2Backend::presign
    functionSourceFile: /src/opendal/core/services/b2/src/backend.rs
    functionUses: 0
    functionsReached:
    - map_err
    - get_upload_url
    - Request::get
    - Buffer::new
    - Ok
    - OpStat::operation
    - Option::into_parts
    - get_auth_info
    - Request::post
    - build_abs_path
    - Err
    - get_download_authorization
    - Error::new
    - OpStat::expire
    - RpPresign::new
    - PresignedRequest::new
    - Option::body
    - Option::header
    linkageType: ''
    returnType: Result
    signature: 'async fn presign(&self,ctx: &OperationContext,path: &str,args: OpPresign,)
      -> Result<RpPresign>'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 110
      start: 96
    functionDepth: 0
    functionLinenumber: 96
    functionLinenumberEnd: 110
    functionName: WebdavConfig::default
    functionSourceFile: /src/opendal/core/services/webdav/src/config.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: fn default() -> Self
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::debug_struct
      Src: /src/opendal/core/services/webdav/src/config.rs:115,1
    - Dst: field
      Src: /src/opendal/core/services/webdav/src/config.rs:115,1
    - Dst: field
      Src: /src/opendal/core/services/webdav/src/config.rs:115,1
    - Dst: field
      Src: /src/opendal/core/services/webdav/src/config.rs:115,1
    - Dst: field
      Src: /src/opendal/core/services/webdav/src/config.rs:115,1
    - Dst: field
      Src: /src/opendal/core/services/webdav/src/config.rs:115,1
    - Dst: field
      Src: /src/opendal/core/services/webdav/src/config.rs:115,1
    - Dst: field
      Src: /src/opendal/core/services/webdav/src/config.rs:115,1
    - Dst: finish_non_exhaustive
      Src: /src/opendal/core/services/webdav/src/config.rs:115,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 32
    argCount: 1
    argNames:
    - f
    argTypes:
    - '&mut std::fmt::Formatter<''_>'
    constantsTouched: []
    func_position:
      end: 124
      start: 114
    functionDepth: 5
    functionLinenumber: 114
    functionLinenumberEnd: 124
    functionName: WebdavConfig::fmt
    functionSourceFile: /src/opendal/core/services/webdav/src/config.rs
    functionUses: 0
    functionsReached:
    - field
    - Result::debug_struct
    - finish_non_exhaustive
    linkageType: ''
    returnType: std::fmt::Result
    signature: 'fn fmt(&self, f: &mut std::fmt::Formatter<''_>) -> std::fmt::Result'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::options
      Src: /src/opendal/core/services/webdav/src/config.rs:131,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/webdav/src/config.rs:131,1
    - Dst: Result::authority
      Src: /src/opendal/core/services/webdav/src/config.rs:132,1
    - Dst: Result::insert
      Src: /src/opendal/core/services/webdav/src/config.rs:133,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/webdav/src/config.rs:133,1
    - Dst: Result::root
      Src: /src/opendal/core/services/webdav/src/config.rs:136,1
    - Dst: Result::insert
      Src: /src/opendal/core/services/webdav/src/config.rs:137,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/webdav/src/config.rs:137,1
    - Dst: Result::to_string
      Src: /src/opendal/core/services/webdav/src/config.rs:137,1
    - Dst: Self::from_iter
      Src: /src/opendal/core/services/webdav/src/config.rs:140,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 25
    argCount: 1
    argNames:
    - uri
    argTypes:
    - '&opendal_core::OperatorUri'
    constantsTouched: []
    func_position:
      end: 141
      start: 130
    functionDepth: 35
    functionLinenumber: 130
    functionLinenumberEnd: 141
    functionName: WebdavConfig::from_uri
    functionSourceFile: /src/opendal/core/services/webdav/src/config.rs
    functionUses: 3
    functionsReached:
    - Result::clone
    - Self::from_iter
    - Result::to_string
    - Result::insert
    - '&str::to_string'
    - Result::root
    - Result::authority
    - Result::options
    linkageType: ''
    returnType: opendal_core::Result
    signature: 'fn from_uri(uri: &opendal_core::OperatorUri) -> opendal_core::Result<Self>'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 145
      start: 143
    functionDepth: 0
    functionLinenumber: 143
    functionLinenumberEnd: 145
    functionName: WebdavConfig::into_builder
    functionSourceFile: /src/opendal/core/services/webdav/src/config.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Self::Builder
    signature: fn into_builder(self) -> Self::Builder
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: OperatorUri::new
      Src: /src/opendal/core/services/webdav/src/config.rs:185,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/services/webdav/src/config.rs:185,1
    - Dst: WebdavConfig::from_uri
      Src: /src/opendal/core/services/webdav/src/config.rs:191,1
    - Dst: opendal_core::Result::unwrap
      Src: /src/opendal/core/services/webdav/src/config.rs:191,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 193
      start: 184
    functionDepth: 29
    functionLinenumber: 184
    functionLinenumberEnd: 193
    functionName: tests::from_uri_accepts_deprecated_disable_copy
    functionSourceFile: /src/opendal/core/services/webdav/src/config.rs
    functionUses: 0
    functionsReached:
    - OperatorUri::new
    - WebdavConfig::from_uri
    - Result::unwrap
    - opendal_core::Result::unwrap
    linkageType: ''
    returnType: void
    signature: fn from_uri_accepts_deprecated_disable_copy()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: OperatorUri::new
      Src: /src/opendal/core/services/webdav/src/config.rs:197,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/services/webdav/src/config.rs:197,1
    - Dst: WebdavConfig::from_uri
      Src: /src/opendal/core/services/webdav/src/config.rs:203,1
    - Dst: opendal_core::Result::unwrap
      Src: /src/opendal/core/services/webdav/src/config.rs:203,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 205
      start: 196
    functionDepth: 29
    functionLinenumber: 196
    functionLinenumberEnd: 205
    functionName: tests::from_uri_propagates_disable_create_dir
    functionSourceFile: /src/opendal/core/services/webdav/src/config.rs
    functionUses: 0
    functionsReached:
    - OperatorUri::new
    - WebdavConfig::from_uri
    - Result::unwrap
    - opendal_core::Result::unwrap
    linkageType: ''
    returnType: void
    signature: fn from_uri_propagates_disable_create_dir()
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - core
    - ctx
    argTypes:
    - Arc<WebdavCore>
    - OperationContext
    constantsTouched: []
    func_position:
      end: 36
      start: 34
    functionDepth: 0
    functionLinenumber: 34
    functionLinenumberEnd: 36
    functionName: WebdavDeleter::new
    functionSourceFile: /src/opendal/core/services/webdav/src/deleter.rs
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(core: Arc<WebdavCore>, ctx: OperationContext) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: webdav_delete
      Src: /src/opendal/core/services/webdav/src/deleter.rs:41,1
    - Dst: status
      Src: /src/opendal/core/services/webdav/src/deleter.rs:43,1
    - Dst: Ok
      Src: /src/opendal/core/services/webdav/src/deleter.rs:45,1
    - Dst: Err
      Src: /src/opendal/core/services/webdav/src/deleter.rs:46,1
    - Dst: super::core::parse_error
      Src: /src/opendal/core/services/webdav/src/deleter.rs:46,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 2
    argNames:
    - path
    argTypes:
    - String
    - OpDelete
    constantsTouched: []
    func_position:
      end: 48
      start: 40
    functionDepth: 33
    functionLinenumber: 40
    functionLinenumberEnd: 48
    functionName: WebdavDeleter::delete_once
    functionSourceFile: /src/opendal/core/services/webdav/src/deleter.rs
    functionUses: 0
    functionsReached:
    - status
    - Ok
    - webdav_delete
    - Err
    - super::core::parse_error
    linkageType: ''
    returnType: Result
    signature: 'async fn delete_once(&self, path: String, _: OpDelete) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: to_string
      Src: /src/opendal/core/services/webdav/src/lister.rs:40,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 4
    argNames:
    - core
    - ctx
    - path
    - args
    argTypes:
    - Arc<WebdavCore>
    - OperationContext
    - '&str'
    - OpList
    constantsTouched: []
    func_position:
      end: 43
      start: 36
    functionDepth: 2
    functionLinenumber: 36
    functionLinenumberEnd: 43
    functionName: WebdavLister::new
    functionSourceFile: /src/opendal/core/services/webdav/src/lister.rs
    functionUses: 1
    functionsReached:
    - to_string
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(core: Arc<WebdavCore>, ctx: OperationContext, path: &str,
      args: OpList) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: webdav_list
      Src: /src/opendal/core/services/webdav/src/lister.rs:48,1
    - Dst: headers
      Src: /src/opendal/core/services/webdav/src/lister.rs:57,1
    - Dst: get
      Src: /src/opendal/core/services/webdav/src/lister.rs:57,1
    - Dst: Result::to_str
      Src: /src/opendal/core/services/webdav/src/lister.rs:58,1
    - Dst: Result::unwrap_or_default
      Src: /src/opendal/core/services/webdav/src/lister.rs:58,1
    - Dst: starts_with
      Src: /src/opendal/core/services/webdav/src/lister.rs:58,1
    - Dst: status
      Src: /src/opendal/core/services/webdav/src/lister.rs:63,1
    - Dst: is_success
      Src: /src/opendal/core/services/webdav/src/lister.rs:63,1
    - Dst: into_body
      Src: /src/opendal/core/services/webdav/src/lister.rs:64,1
    - Dst: status
      Src: /src/opendal/core/services/webdav/src/lister.rs:65,1
    - Dst: ends_with
      Src: /src/opendal/core/services/webdav/src/lister.rs:65,1
    - Dst: Ok
      Src: /src/opendal/core/services/webdav/src/lister.rs:67,1
    - Dst: Err
      Src: /src/opendal/core/services/webdav/src/lister.rs:69,1
    - Dst: parse_error
      Src: /src/opendal/core/services/webdav/src/lister.rs:69,1
    - Dst: deserialize_multistatus
      Src: /src/opendal/core/services/webdav/src/lister.rs:72,1
    - Dst: Result::to_bytes
      Src: /src/opendal/core/services/webdav/src/lister.rs:72,1
    - Dst: strip_prefix
      Src: /src/opendal/core/services/webdav/src/lister.rs:75,1
    - Dst: unwrap_or
      Src: /src/opendal/core/services/webdav/src/lister.rs:75,1
    - Dst: to_string
      Src: /src/opendal/core/services/webdav/src/lister.rs:75,1
    - Dst: parse_propstats
      Src: /src/opendal/core/services/webdav/src/lister.rs:81,1
    - Dst: ends_with
      Src: /src/opendal/core/services/webdav/src/lister.rs:84,1
    - Dst: Result::is_dir
      Src: /src/opendal/core/services/webdav/src/lister.rs:84,1
    - Dst: percent_decode_path
      Src: /src/opendal/core/services/webdav/src/lister.rs:88,1
    - Dst: build_rel_path
      Src: /src/opendal/core/services/webdav/src/lister.rs:90,1
    - Dst: '&str::to_owned'
      Src: /src/opendal/core/services/webdav/src/lister.rs:92,1
    - Dst: Result::content_type
      Src: /src/opendal/core/services/webdav/src/lister.rs:100,1
    - Dst: Some
      Src: /src/opendal/core/services/webdav/src/lister.rs:100,1
    - Dst: push_back
      Src: /src/opendal/core/services/webdav/src/lister.rs:104,1
    - Dst: oio::Entry::new
      Src: /src/opendal/core/services/webdav/src/lister.rs:105,1
    - Dst: Ok
      Src: /src/opendal/core/services/webdav/src/lister.rs:109,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 112
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - '&mut oio::PageContext'
    constantsTouched: []
    func_position:
      end: 110
      start: 47
    functionDepth: 37
    functionLinenumber: 47
    functionLinenumberEnd: 110
    functionName: WebdavLister::next_page
    functionSourceFile: /src/opendal/core/services/webdav/src/lister.rs
    functionUses: 0
    functionsReached:
    - is_success
    - status
    - ends_with
    - build_rel_path
    - '&str::to_owned'
    - parse_propstats
    - get
    - starts_with
    - Ok
    - Result::is_dir
    - headers
    - unwrap_or
    - Result::unwrap_or_default
    - Result::to_bytes
    - parse_error
    - into_body
    - percent_decode_path
    - Some
    - strip_prefix
    - to_string
    - oio::Entry::new
    - Result::to_str
    - push_back
    - Err
    - deserialize_multistatus
    - webdav_list
    - Result::content_type
    linkageType: ''
    returnType: Result
    signature: 'async fn next_page(&self, ctx: &mut oio::PageContext) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: to_string
      Src: /src/opendal/core/services/webdav/src/reader.rs:44,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 4
    argNames:
    - backend
    - ctx
    - path
    - args
    argTypes:
    - WebdavBackend
    - OperationContext
    - '&str'
    - OpRead
    constantsTouched: []
    func_position:
      end: 47
      start: 35
    functionDepth: 2
    functionLinenumber: 35
    functionLinenumberEnd: 47
    functionName: WebdavReader::new
    functionSourceFile: /src/opendal/core/services/webdav/src/reader.rs
    functionUses: 1
    functionsReached:
    - to_string
    linkageType: ''
    returnType: Self
    signature: 'pub(super) fn new(backend: WebdavBackend,ctx: OperationContext,path:
      &str,args: OpRead,) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: as_str
      Src: /src/opendal/core/services/webdav/src/reader.rs:53,1
    - Dst: clone
      Src: /src/opendal/core/services/webdav/src/reader.rs:54,1
    - Dst: webdav_get
      Src: /src/opendal/core/services/webdav/src/reader.rs:55,1
    - Dst: status
      Src: /src/opendal/core/services/webdav/src/reader.rs:60,1
    - Dst: RpRead::new
      Src: /src/opendal/core/services/webdav/src/reader.rs:64,1
    - Dst: parse_into_metadata
      Src: /src/opendal/core/services/webdav/src/reader.rs:64,1
    - Dst: headers
      Src: /src/opendal/core/services/webdav/src/reader.rs:64,1
    - Dst: into_body
      Src: /src/opendal/core/services/webdav/src/reader.rs:65,1
    - Dst: into_parts
      Src: /src/opendal/core/services/webdav/src/reader.rs:68,1
    - Dst: to_buffer
      Src: /src/opendal/core/services/webdav/src/reader.rs:69,1
    - Dst: Err
      Src: /src/opendal/core/services/webdav/src/reader.rs:70,1
    - Dst: super::core::parse_error
      Src: /src/opendal/core/services/webdav/src/reader.rs:70,1
    - Dst: Response::from_parts
      Src: /src/opendal/core/services/webdav/src/reader.rs:70,1
    - Dst: Ok
      Src: /src/opendal/core/services/webdav/src/reader.rs:74,1
    - Dst: Box::new
      Src: /src/opendal/core/services/webdav/src/reader.rs:74,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 42
    argCount: 1
    argNames:
    - range
    argTypes:
    - BytesRange
    constantsTouched: []
    func_position:
      end: 75
      start: 51
    functionDepth: 38
    functionLinenumber: 51
    functionLinenumberEnd: 75
    functionName: WebdavReader::open
    functionSourceFile: /src/opendal/core/services/webdav/src/reader.rs
    functionUses: 0
    functionsReached:
    - parse_into_metadata
    - to_buffer
    - status
    - webdav_get
    - Ok
    - Box::new
    - into_body
    - clone
    - Err
    - Response::from_parts
    - as_str
    - headers
    - into_parts
    - RpRead::new
    - super::core::parse_error
    linkageType: ''
    returnType: Result
    signature: 'async fn open(&self, range: BytesRange) -> Result<(RpRead, Box<dyn
      oio::ReadStreamDyn>)>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::debug_struct
      Src: /src/opendal/core/services/webdav/src/core.rs:101,1
    - Dst: field
      Src: /src/opendal/core/services/webdav/src/core.rs:101,1
    - Dst: field
      Src: /src/opendal/core/services/webdav/src/core.rs:101,1
    - Dst: field
      Src: /src/opendal/core/services/webdav/src/core.rs:101,1
    - Dst: field
      Src: /src/opendal/core/services/webdav/src/core.rs:101,1
    - Dst: field
      Src: /src/opendal/core/services/webdav/src/core.rs:101,1
    - Dst: finish_non_exhaustive
      Src: /src/opendal/core/services/webdav/src/core.rs:101,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 24
    argCount: 1
    argNames:
    - f
    argTypes:
    - '&mut std::fmt::Formatter<''_>'
    constantsTouched: []
    func_position:
      end: 108
      start: 100
    functionDepth: 5
    functionLinenumber: 100
    functionLinenumberEnd: 108
    functionName: WebdavCore::fmt
    functionSourceFile: /src/opendal/core/services/webdav/src/core.rs
    functionUses: 0
    functionsReached:
    - field
    - Result::debug_struct
    - finish_non_exhaustive
    linkageType: ''
    returnType: std::fmt::Result
    signature: 'fn fmt(&self, f: &mut std::fmt::Formatter<''_>) -> std::fmt::Result'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_rooted_abs_path
      Src: /src/opendal/core/services/webdav/src/core.rs:113,1
    - Dst: WebdavCore::webdav_stat_rooted_abs_path
      Src: /src/opendal/core/services/webdav/src/core.rs:114,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - ctx
    - path
    argTypes:
    - '&OperationContext'
    - '&str'
    constantsTouched: []
    func_position:
      end: 115
      start: 112
    functionDepth: 41
    functionLinenumber: 112
    functionLinenumberEnd: 115
    functionName: WebdavCore::webdav_stat
    functionSourceFile: /src/opendal/core/services/webdav/src/core.rs
    functionUses: 2
    functionsReached:
    - build_rooted_abs_path
    - WebdavCore::webdav_stat_rooted_abs_path
    linkageType: ''
    returnType: Result
    signature: 'pub async fn webdav_stat(&self, ctx: &OperationContext, path: &str)
      -> Result<Metadata>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Request::builder
      Src: /src/opendal/core/services/webdav/src/core.rs:124,1
    - Dst: OtelMetricsLayerBuilder::method
      Src: /src/opendal/core/services/webdav/src/core.rs:124,1
    - Dst: '&str::uri'
      Src: /src/opendal/core/services/webdav/src/core.rs:124,1
    - Dst: Result::header
      Src: /src/opendal/core/services/webdav/src/core.rs:126,1
    - Dst: Result::header
      Src: /src/opendal/core/services/webdav/src/core.rs:127,1
    - Dst: len
      Src: /src/opendal/core/services/webdav/src/core.rs:127,1
    - Dst: Result::header
      Src: /src/opendal/core/services/webdav/src/core.rs:129,1
    - Dst: Result::header
      Src: /src/opendal/core/services/webdav/src/core.rs:133,1
    - Dst: Result::extension
      Src: /src/opendal/core/services/webdav/src/core.rs:135,1
    - Dst: extension
      Src: /src/opendal/core/services/webdav/src/core.rs:135,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/webdav/src/core.rs:137,1
    - Dst: body
      Src: /src/opendal/core/services/webdav/src/core.rs:135,1
    - Dst: Buffer::from
      Src: /src/opendal/core/services/webdav/src/core.rs:138,1
    - Dst: Bytes::from
      Src: /src/opendal/core/services/webdav/src/core.rs:138,1
    - Dst: map_err
      Src: /src/opendal/core/services/webdav/src/core.rs:135,1
    - Dst: Result::http_transport
      Src: /src/opendal/core/services/webdav/src/core.rs:141,1
    - Dst: Self::send
      Src: /src/opendal/core/services/webdav/src/core.rs:141,1
    - Dst: status
      Src: /src/opendal/core/services/webdav/src/core.rs:142,1
    - Dst: is_success
      Src: /src/opendal/core/services/webdav/src/core.rs:142,1
    - Dst: Err
      Src: /src/opendal/core/services/webdav/src/core.rs:143,1
    - Dst: parse_error
      Src: /src/opendal/core/services/webdav/src/core.rs:143,1
    - Dst: into_body
      Src: /src/opendal/core/services/webdav/src/core.rs:146,1
    - Dst: Result::to_bytes
      Src: /src/opendal/core/services/webdav/src/core.rs:147,1
    - Dst: String::from_utf8_lossy
      Src: /src/opendal/core/services/webdav/src/core.rs:148,1
    - Dst: deserialize_multistatus
      Src: /src/opendal/core/services/webdav/src/core.rs:150,1
    - Dst: first
      Src: /src/opendal/core/services/webdav/src/core.rs:151,1
    - Dst: ok_or_else
      Src: /src/opendal/core/services/webdav/src/core.rs:151,1
    - Dst: Error::new
      Src: /src/opendal/core/services/webdav/src/core.rs:152,1
    - Dst: parse_propstats
      Src: /src/opendal/core/services/webdav/src/core.rs:158,1
    - Dst: parse_user_metadata_from_xml
      Src: /src/opendal/core/services/webdav/src/core.rs:161,1
    - Dst: Result::is_empty
      Src: /src/opendal/core/services/webdav/src/core.rs:162,1
    - Dst: anyhow::Result::with_user_metadata
      Src: /src/opendal/core/services/webdav/src/core.rs:163,1
    - Dst: Ok
      Src: /src/opendal/core/services/webdav/src/core.rs:166,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 91
    argCount: 2
    argNames:
    - ctx
    - rooted_abs_path
    argTypes:
    - '&OperationContext'
    - '&str'
    constantsTouched: []
    func_position:
      end: 167
      start: 118
    functionDepth: 40
    functionLinenumber: 118
    functionLinenumberEnd: 167
    functionName: WebdavCore::webdav_stat_rooted_abs_path
    functionSourceFile: /src/opendal/core/services/webdav/src/core.rs
    functionUses: 2
    functionsReached:
    - is_success
    - status
    - Self::send
    - Result::is_empty
    - map_err
    - extension
    - parse_propstats
    - Ok
    - '&str::uri'
    - ServiceOperation
    - Result::http_transport
    - len
    - Request::builder
    - Buffer::from
    - ok_or_else
    - Result::to_bytes
    - parse_error
    - into_body
    - Result::header
    - Bytes::from
    - parse_user_metadata_from_xml
    - anyhow::Result::with_user_metadata
    - String::from_utf8_lossy
    - Result::extension
    - body
    - Err
    - OtelMetricsLayerBuilder::method
    - deserialize_multistatus
    - Error::new
    - first
    linkageType: ''
    returnType: Result
    signature: 'async fn webdav_stat_rooted_abs_path(&self,ctx: &OperationContext,rooted_abs_path:
      &str,) -> Result<Metadata>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_rooted_abs_path
      Src: /src/opendal/core/services/webdav/src/core.rs:176,1
    - Dst: Request::get
      Src: /src/opendal/core/services/webdav/src/core.rs:179,1
    - Dst: OpStat::if_match
      Src: /src/opendal/core/services/webdav/src/core.rs:181,1
    - Dst: Option::header
      Src: /src/opendal/core/services/webdav/src/core.rs:182,1
    - Dst: OpStat::if_none_match
      Src: /src/opendal/core/services/webdav/src/core.rs:185,1
    - Dst: Option::header
      Src: /src/opendal/core/services/webdav/src/core.rs:186,1
    - Dst: OpStat::if_modified_since
      Src: /src/opendal/core/services/webdav/src/core.rs:189,1
    - Dst: Option::header
      Src: /src/opendal/core/services/webdav/src/core.rs:190,1
    - Dst: Result::format_http_date
      Src: /src/opendal/core/services/webdav/src/core.rs:192,1
    - Dst: OpStat::if_unmodified_since
      Src: /src/opendal/core/services/webdav/src/core.rs:196,1
    - Dst: Option::header
      Src: /src/opendal/core/services/webdav/src/core.rs:197,1
    - Dst: Result::format_http_date
      Src: /src/opendal/core/services/webdav/src/core.rs:199,1
    - Dst: Option::header
      Src: /src/opendal/core/services/webdav/src/core.rs:204,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/webdav/src/core.rs:204,1
    - Dst: (Vec::is_full
      Src: /src/opendal/core/services/webdav/src/core.rs:207,1
    - Dst: Option::header
      Src: /src/opendal/core/services/webdav/src/core.rs:208,1
    - Dst: (Vec::to_header
      Src: /src/opendal/core/services/webdav/src/core.rs:208,1
    - Dst: Option::extension
      Src: /src/opendal/core/services/webdav/src/core.rs:211,1
    - Dst: extension
      Src: /src/opendal/core/services/webdav/src/core.rs:211,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/webdav/src/core.rs:213,1
    - Dst: body
      Src: /src/opendal/core/services/webdav/src/core.rs:211,1
    - Dst: Buffer::new
      Src: /src/opendal/core/services/webdav/src/core.rs:214,1
    - Dst: map_err
      Src: /src/opendal/core/services/webdav/src/core.rs:211,1
    - Dst: Result::http_transport
      Src: /src/opendal/core/services/webdav/src/core.rs:217,1
    - Dst: Self::fetch
      Src: /src/opendal/core/services/webdav/src/core.rs:217,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 77
    argCount: 4
    argNames:
    - ctx
    - path
    - range
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - BytesRange
    - '&OpRead'
    constantsTouched: []
    func_position:
      end: 218
      start: 169
    functionDepth: 3
    functionLinenumber: 169
    functionLinenumberEnd: 218
    functionName: WebdavCore::webdav_get
    functionSourceFile: /src/opendal/core/services/webdav/src/core.rs
    functionUses: 0
    functionsReached:
    - Buffer::new
    - OpStat::if_unmodified_since
    - Result::clone
    - extension
    - map_err
    - OpStat::if_modified_since
    - (Vec::is_full
    - ServiceOperation
    - Result::http_transport
    - Result::format_http_date
    - OpStat::if_match
    - build_rooted_abs_path
    - Self::fetch
    - Option::header
    - Request::get
    - (Vec::to_header
    - body
    - OpStat::if_none_match
    - Option::extension
    linkageType: ''
    returnType: Result
    signature: 'pub async fn webdav_get(&self,ctx: &OperationContext,path: &str,range:
      BytesRange,args: &OpRead,) -> Result<Response<HttpBody>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_rooted_abs_path
      Src: /src/opendal/core/services/webdav/src/core.rs:228,1
    - Dst: Request::put
      Src: /src/opendal/core/services/webdav/src/core.rs:231,1
    - Dst: DeleteInput::header
      Src: /src/opendal/core/services/webdav/src/core.rs:234,1
    - Dst: DeleteInput::header
      Src: /src/opendal/core/services/webdav/src/core.rs:238,1
    - Dst: OpStat::content_type
      Src: /src/opendal/core/services/webdav/src/core.rs:241,1
    - Dst: DeleteInput::header
      Src: /src/opendal/core/services/webdav/src/core.rs:242,1
    - Dst: OpStat::content_disposition
      Src: /src/opendal/core/services/webdav/src/core.rs:245,1
    - Dst: DeleteInput::header
      Src: /src/opendal/core/services/webdav/src/core.rs:246,1
    - Dst: DeleteInput::extension
      Src: /src/opendal/core/services/webdav/src/core.rs:249,1
    - Dst: extension
      Src: /src/opendal/core/services/webdav/src/core.rs:249,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/webdav/src/core.rs:251,1
    - Dst: body
      Src: /src/opendal/core/services/webdav/src/core.rs:249,1
    - Dst: map_err
      Src: /src/opendal/core/services/webdav/src/core.rs:249,1
    - Dst: Result::http_transport
      Src: /src/opendal/core/services/webdav/src/core.rs:255,1
    - Dst: Self::send
      Src: /src/opendal/core/services/webdav/src/core.rs:255,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 46
    argCount: 5
    argNames:
    - ctx
    - path
    - size
    - args
    - body
    argTypes:
    - '&OperationContext'
    - '&str'
    - Option<u64>
    - '&OpWrite'
    - Buffer
    constantsTouched: []
    func_position:
      end: 256
      start: 220
    functionDepth: 32
    functionLinenumber: 220
    functionLinenumberEnd: 256
    functionName: WebdavCore::webdav_put
    functionSourceFile: /src/opendal/core/services/webdav/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - extension
    - Request::put
    - Self::send
    - OpStat::content_disposition
    - body
    - build_rooted_abs_path
    - DeleteInput::header
    - ServiceOperation
    - Result::http_transport
    - DeleteInput::extension
    - OpStat::content_type
    linkageType: ''
    returnType: Result
    signature: 'pub async fn webdav_put(&self,ctx: &OperationContext,path: &str,size:
      Option<u64>,args: &OpWrite,body: Buffer,) -> Result<Response<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_rooted_abs_path
      Src: /src/opendal/core/services/webdav/src/core.rs:272,1
    - Dst: Request::builder
      Src: /src/opendal/core/services/webdav/src/core.rs:275,1
    - Dst: OtelMetricsLayerBuilder::method
      Src: /src/opendal/core/services/webdav/src/core.rs:275,1
    - Dst: '&str::uri'
      Src: /src/opendal/core/services/webdav/src/core.rs:275,1
    - Dst: Result::header
      Src: /src/opendal/core/services/webdav/src/core.rs:277,1
    - Dst: Result::header
      Src: /src/opendal/core/services/webdav/src/core.rs:279,1
    - Dst: build_proppatch_request
      Src: /src/opendal/core/services/webdav/src/core.rs:283,1
    - Dst: Result::extension
      Src: /src/opendal/core/services/webdav/src/core.rs:289,1
    - Dst: extension
      Src: /src/opendal/core/services/webdav/src/core.rs:289,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/webdav/src/core.rs:291,1
    - Dst: body
      Src: /src/opendal/core/services/webdav/src/core.rs:289,1
    - Dst: Buffer::from
      Src: /src/opendal/core/services/webdav/src/core.rs:292,1
    - Dst: Bytes::from
      Src: /src/opendal/core/services/webdav/src/core.rs:292,1
    - Dst: map_err
      Src: /src/opendal/core/services/webdav/src/core.rs:289,1
    - Dst: Result::http_transport
      Src: /src/opendal/core/services/webdav/src/core.rs:295,1
    - Dst: Self::send
      Src: /src/opendal/core/services/webdav/src/core.rs:295,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 43
    argCount: 3
    argNames:
    - ctx
    - path
    - user_metadata
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&HashMap<String, String>'
    constantsTouched: []
    func_position:
      end: 296
      start: 266
    functionDepth: 41
    functionLinenumber: 266
    functionLinenumberEnd: 296
    functionName: WebdavCore::webdav_proppatch
    functionSourceFile: /src/opendal/core/services/webdav/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - extension
    - Self::send
    - Result::extension
    - body
    - build_rooted_abs_path
    - build_proppatch_request
    - Result::header
    - OtelMetricsLayerBuilder::method
    - '&str::uri'
    - Bytes::from
    - ServiceOperation
    - Result::http_transport
    - Request::builder
    - Buffer::from
    linkageType: ''
    returnType: Result
    signature: 'pub async fn webdav_proppatch(&self,ctx: &OperationContext,path: &str,user_metadata:
      &HashMap<String, String>,) -> Result<Response<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_rooted_abs_path
      Src: /src/opendal/core/services/webdav/src/core.rs:303,1
    - Dst: Request::delete
      Src: /src/opendal/core/services/webdav/src/core.rs:306,1
    - Dst: Result::header
      Src: /src/opendal/core/services/webdav/src/core.rs:309,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/webdav/src/core.rs:309,1
    - Dst: Result::extension
      Src: /src/opendal/core/services/webdav/src/core.rs:312,1
    - Dst: extension
      Src: /src/opendal/core/services/webdav/src/core.rs:312,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/webdav/src/core.rs:314,1
    - Dst: body
      Src: /src/opendal/core/services/webdav/src/core.rs:312,1
    - Dst: Buffer::new
      Src: /src/opendal/core/services/webdav/src/core.rs:315,1
    - Dst: map_err
      Src: /src/opendal/core/services/webdav/src/core.rs:312,1
    - Dst: Result::http_transport
      Src: /src/opendal/core/services/webdav/src/core.rs:318,1
    - Dst: Self::send
      Src: /src/opendal/core/services/webdav/src/core.rs:318,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 30
    argCount: 2
    argNames:
    - ctx
    - path
    argTypes:
    - '&OperationContext'
    - '&str'
    constantsTouched: []
    func_position:
      end: 319
      start: 298
    functionDepth: 32
    functionLinenumber: 298
    functionLinenumberEnd: 319
    functionName: WebdavCore::webdav_delete
    functionSourceFile: /src/opendal/core/services/webdav/src/core.rs
    functionUses: 0
    functionsReached:
    - Result::clone
    - extension
    - Buffer::new
    - map_err
    - Request::delete
    - Self::send
    - Result::extension
    - body
    - build_rooted_abs_path
    - Result::header
    - ServiceOperation
    - Result::http_transport
    linkageType: ''
    returnType: Result
    signature: 'pub async fn webdav_delete(&self,ctx: &OperationContext,path: &str,)
      -> Result<Response<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: WebdavCore::webdav_stat
      Src: /src/opendal/core/services/webdav/src/core.rs:328,1
    - Dst: WebdavCore::webdav_mkcol
      Src: /src/opendal/core/services/webdav/src/core.rs:330,1
    - Dst: get_parent
      Src: /src/opendal/core/services/webdav/src/core.rs:330,1
    - Dst: build_rooted_abs_path
      Src: /src/opendal/core/services/webdav/src/core.rs:332,1
    - Dst: build_rooted_abs_path
      Src: /src/opendal/core/services/webdav/src/core.rs:335,1
    - Dst: Request::builder
      Src: /src/opendal/core/services/webdav/src/core.rs:338,1
    - Dst: OtelMetricsLayerBuilder::method
      Src: /src/opendal/core/services/webdav/src/core.rs:338,1
    - Dst: '&str::uri'
      Src: /src/opendal/core/services/webdav/src/core.rs:338,1
    - Dst: Result::header
      Src: /src/opendal/core/services/webdav/src/core.rs:341,1
    - Dst: Result::header
      Src: /src/opendal/core/services/webdav/src/core.rs:344,1
    - Dst: Result::header
      Src: /src/opendal/core/services/webdav/src/core.rs:345,1
    - Dst: Result::extension
      Src: /src/opendal/core/services/webdav/src/core.rs:347,1
    - Dst: extension
      Src: /src/opendal/core/services/webdav/src/core.rs:347,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/webdav/src/core.rs:349,1
    - Dst: body
      Src: /src/opendal/core/services/webdav/src/core.rs:347,1
    - Dst: Buffer::new
      Src: /src/opendal/core/services/webdav/src/core.rs:350,1
    - Dst: map_err
      Src: /src/opendal/core/services/webdav/src/core.rs:347,1
    - Dst: Result::http_transport
      Src: /src/opendal/core/services/webdav/src/core.rs:353,1
    - Dst: Self::send
      Src: /src/opendal/core/services/webdav/src/core.rs:353,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 54
    argCount: 3
    argNames:
    - ctx
    - from
    - to
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    constantsTouched: []
    func_position:
      end: 354
      start: 321
    functionDepth: 42
    functionLinenumber: 321
    functionLinenumberEnd: 354
    functionName: WebdavCore::webdav_copy
    functionSourceFile: /src/opendal/core/services/webdav/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - extension
    - Buffer::new
    - get_parent
    - Result::extension
    - Self::send
    - body
    - build_rooted_abs_path
    - Result::header
    - OtelMetricsLayerBuilder::method
    - '&str::uri'
    - ServiceOperation
    - Result::http_transport
    - Request::builder
    - WebdavCore::webdav_stat
    - WebdavCore::webdav_mkcol
    linkageType: ''
    returnType: Result
    signature: 'pub async fn webdav_copy(&self,ctx: &OperationContext,from: &str,to:
      &str,) -> Result<Response<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: WebdavCore::webdav_stat
      Src: /src/opendal/core/services/webdav/src/core.rs:363,1
    - Dst: WebdavCore::webdav_mkcol
      Src: /src/opendal/core/services/webdav/src/core.rs:365,1
    - Dst: get_parent
      Src: /src/opendal/core/services/webdav/src/core.rs:365,1
    - Dst: build_rooted_abs_path
      Src: /src/opendal/core/services/webdav/src/core.rs:367,1
    - Dst: build_rooted_abs_path
      Src: /src/opendal/core/services/webdav/src/core.rs:370,1
    - Dst: Request::builder
      Src: /src/opendal/core/services/webdav/src/core.rs:373,1
    - Dst: OtelMetricsLayerBuilder::method
      Src: /src/opendal/core/services/webdav/src/core.rs:373,1
    - Dst: '&str::uri'
      Src: /src/opendal/core/services/webdav/src/core.rs:373,1
    - Dst: Result::header
      Src: /src/opendal/core/services/webdav/src/core.rs:376,1
    - Dst: Result::header
      Src: /src/opendal/core/services/webdav/src/core.rs:379,1
    - Dst: Result::header
      Src: /src/opendal/core/services/webdav/src/core.rs:380,1
    - Dst: Result::extension
      Src: /src/opendal/core/services/webdav/src/core.rs:382,1
    - Dst: extension
      Src: /src/opendal/core/services/webdav/src/core.rs:382,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/webdav/src/core.rs:384,1
    - Dst: body
      Src: /src/opendal/core/services/webdav/src/core.rs:382,1
    - Dst: Buffer::new
      Src: /src/opendal/core/services/webdav/src/core.rs:385,1
    - Dst: map_err
      Src: /src/opendal/core/services/webdav/src/core.rs:382,1
    - Dst: Result::http_transport
      Src: /src/opendal/core/services/webdav/src/core.rs:388,1
    - Dst: Self::send
      Src: /src/opendal/core/services/webdav/src/core.rs:388,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 54
    argCount: 3
    argNames:
    - ctx
    - from
    - to
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    constantsTouched: []
    func_position:
      end: 389
      start: 356
    functionDepth: 42
    functionLinenumber: 356
    functionLinenumberEnd: 389
    functionName: WebdavCore::webdav_move
    functionSourceFile: /src/opendal/core/services/webdav/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - extension
    - Buffer::new
    - get_parent
    - Result::extension
    - Self::send
    - body
    - build_rooted_abs_path
    - Result::header
    - OtelMetricsLayerBuilder::method
    - '&str::uri'
    - ServiceOperation
    - Result::http_transport
    - Request::builder
    - WebdavCore::webdav_stat
    - WebdavCore::webdav_mkcol
    linkageType: ''
    returnType: Result
    signature: 'pub async fn webdav_move(&self,ctx: &OperationContext,from: &str,to:
      &str,) -> Result<Response<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_rooted_abs_path
      Src: /src/opendal/core/services/webdav/src/core.rs:397,1
    - Dst: Request::builder
      Src: /src/opendal/core/services/webdav/src/core.rs:400,1
    - Dst: OtelMetricsLayerBuilder::method
      Src: /src/opendal/core/services/webdav/src/core.rs:400,1
    - Dst: '&str::uri'
      Src: /src/opendal/core/services/webdav/src/core.rs:400,1
    - Dst: Result::header
      Src: /src/opendal/core/services/webdav/src/core.rs:402,1
    - Dst: Result::header
      Src: /src/opendal/core/services/webdav/src/core.rs:403,1
    - Dst: len
      Src: /src/opendal/core/services/webdav/src/core.rs:403,1
    - Dst: Result::header
      Src: /src/opendal/core/services/webdav/src/core.rs:405,1
    - Dst: OpStat::recursive
      Src: /src/opendal/core/services/webdav/src/core.rs:408,1
    - Dst: Result::header
      Src: /src/opendal/core/services/webdav/src/core.rs:409,1
    - Dst: Result::header
      Src: /src/opendal/core/services/webdav/src/core.rs:411,1
    - Dst: Result::extension
      Src: /src/opendal/core/services/webdav/src/core.rs:414,1
    - Dst: extension
      Src: /src/opendal/core/services/webdav/src/core.rs:414,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/webdav/src/core.rs:416,1
    - Dst: body
      Src: /src/opendal/core/services/webdav/src/core.rs:414,1
    - Dst: Buffer::from
      Src: /src/opendal/core/services/webdav/src/core.rs:417,1
    - Dst: Bytes::from
      Src: /src/opendal/core/services/webdav/src/core.rs:417,1
    - Dst: map_err
      Src: /src/opendal/core/services/webdav/src/core.rs:414,1
    - Dst: Result::http_transport
      Src: /src/opendal/core/services/webdav/src/core.rs:420,1
    - Dst: Self::send
      Src: /src/opendal/core/services/webdav/src/core.rs:420,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 56
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&OpList'
    constantsTouched: []
    func_position:
      end: 421
      start: 391
    functionDepth: 36
    functionLinenumber: 391
    functionLinenumberEnd: 421
    functionName: WebdavCore::webdav_list
    functionSourceFile: /src/opendal/core/services/webdav/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - extension
    - Self::send
    - Result::extension
    - body
    - build_rooted_abs_path
    - Result::header
    - OtelMetricsLayerBuilder::method
    - '&str::uri'
    - Bytes::from
    - ServiceOperation
    - Result::http_transport
    - len
    - Request::builder
    - OpStat::recursive
    - Buffer::from
    linkageType: ''
    returnType: Result
    signature: 'pub async fn webdav_list(&self,ctx: &OperationContext,path: &str,args:
      &OpList,) -> Result<Response<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_rooted_abs_path
      Src: /src/opendal/core/services/webdav/src/core.rs:429,1
    - Dst: as_str
      Src: /src/opendal/core/services/webdav/src/core.rs:430,1
    - Dst: VecDeque::default
      Src: /src/opendal/core/services/webdav/src/core.rs:432,1
    - Dst: WebdavCore::webdav_stat_rooted_abs_path
      Src: /src/opendal/core/services/webdav/src/core.rs:435,1
    - Dst: Error::kind
      Src: /src/opendal/core/services/webdav/src/core.rs:441,1
    - Dst: push_front
      Src: /src/opendal/core/services/webdav/src/core.rs:442,1
    - Dst: get_parent
      Src: /src/opendal/core/services/webdav/src/core.rs:443,1
    - Dst: Err
      Src: /src/opendal/core/services/webdav/src/core.rs:446,1
    - Dst: WebdavCore::webdav_mkcol_rooted_abs_path
      Src: /src/opendal/core/services/webdav/src/core.rs:455,1
    - Dst: Ok
      Src: /src/opendal/core/services/webdav/src/core.rs:457,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 40
    argCount: 2
    argNames:
    - ctx
    - path
    argTypes:
    - '&OperationContext'
    - '&str'
    constantsTouched: []
    func_position:
      end: 458
      start: 428
    functionDepth: 41
    functionLinenumber: 428
    functionLinenumberEnd: 458
    functionName: WebdavCore::webdav_mkcol
    functionSourceFile: /src/opendal/core/services/webdav/src/core.rs
    functionUses: 2
    functionsReached:
    - push_front
    - WebdavCore::webdav_mkcol_rooted_abs_path
    - VecDeque::default
    - get_parent
    - Ok
    - build_rooted_abs_path
    - Err
    - as_str
    - Error::kind
    - WebdavCore::webdav_stat_rooted_abs_path
    linkageType: ''
    returnType: Result
    signature: 'pub async fn webdav_mkcol(&self, ctx: &OperationContext, path: &str)
      -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Request::builder
      Src: /src/opendal/core/services/webdav/src/core.rs:472,1
    - Dst: OtelMetricsLayerBuilder::method
      Src: /src/opendal/core/services/webdav/src/core.rs:472,1
    - Dst: '&str::uri'
      Src: /src/opendal/core/services/webdav/src/core.rs:472,1
    - Dst: Result::header
      Src: /src/opendal/core/services/webdav/src/core.rs:475,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/webdav/src/core.rs:475,1
    - Dst: Result::extension
      Src: /src/opendal/core/services/webdav/src/core.rs:478,1
    - Dst: extension
      Src: /src/opendal/core/services/webdav/src/core.rs:478,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/webdav/src/core.rs:480,1
    - Dst: body
      Src: /src/opendal/core/services/webdav/src/core.rs:478,1
    - Dst: Buffer::new
      Src: /src/opendal/core/services/webdav/src/core.rs:481,1
    - Dst: map_err
      Src: /src/opendal/core/services/webdav/src/core.rs:478,1
    - Dst: Result::http_transport
      Src: /src/opendal/core/services/webdav/src/core.rs:484,1
    - Dst: Self::send
      Src: /src/opendal/core/services/webdav/src/core.rs:484,1
    - Dst: status
      Src: /src/opendal/core/services/webdav/src/core.rs:485,1
    - Dst: Ok
      Src: /src/opendal/core/services/webdav/src/core.rs:496,1
    - Dst: Err
      Src: /src/opendal/core/services/webdav/src/core.rs:498,1
    - Dst: parse_error
      Src: /src/opendal/core/services/webdav/src/core.rs:498,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 40
    argCount: 2
    argNames:
    - ctx
    - rooted_abs_path
    argTypes:
    - '&OperationContext'
    - '&str'
    constantsTouched: []
    func_position:
      end: 500
      start: 465
    functionDepth: 37
    functionLinenumber: 465
    functionLinenumberEnd: 500
    functionName: WebdavCore::webdav_mkcol_rooted_abs_path
    functionSourceFile: /src/opendal/core/services/webdav/src/core.rs
    functionUses: 1
    functionsReached:
    - Result::clone
    - extension
    - Buffer::new
    - map_err
    - status
    - Self::send
    - Result::extension
    - Ok
    - body
    - parse_error
    - Result::header
    - OtelMetricsLayerBuilder::method
    - '&str::uri'
    - Err
    - ServiceOperation
    - Result::http_transport
    - Request::builder
    linkageType: ''
    returnType: Result
    signature: 'async fn webdav_mkcol_rooted_abs_path(&self,ctx: &OperationContext,rooted_abs_path:
      &str,) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Writer::new
      Src: /src/opendal/core/services/webdav/src/core.rs:530,1
    - Dst: Cursor::new
      Src: /src/opendal/core/services/webdav/src/core.rs:530,1
    - Dst: Vec::new
      Src: /src/opendal/core/services/webdav/src/core.rs:530,1
    - Dst: Result::write_event
      Src: /src/opendal/core/services/webdav/src/core.rs:533,1
    - Dst: Event::Decl
      Src: /src/opendal/core/services/webdav/src/core.rs:534,1
    - Dst: quick_xml::events::BytesDecl::new
      Src: /src/opendal/core/services/webdav/src/core.rs:534,1
    - Dst: Some
      Src: /src/opendal/core/services/webdav/src/core.rs:536,1
    - Dst: expect
      Src: /src/opendal/core/services/webdav/src/core.rs:533,1
    - Dst: BytesStart::new
      Src: /src/opendal/core/services/webdav/src/core.rs:542,1
    - Dst: Self::push_attribute
      Src: /src/opendal/core/services/webdav/src/core.rs:543,1
    - Dst: Self::push_attribute
      Src: /src/opendal/core/services/webdav/src/core.rs:544,1
    - Dst: as_str
      Src: /src/opendal/core/services/webdav/src/core.rs:545,1
    - Dst: Result::write_event
      Src: /src/opendal/core/services/webdav/src/core.rs:548,1
    - Dst: Event::Start
      Src: /src/opendal/core/services/webdav/src/core.rs:549,1
    - Dst: expect
      Src: /src/opendal/core/services/webdav/src/core.rs:548,1
    - Dst: Result::write_event
      Src: /src/opendal/core/services/webdav/src/core.rs:553,1
    - Dst: Event::Start
      Src: /src/opendal/core/services/webdav/src/core.rs:554,1
    - Dst: BytesStart::new
      Src: /src/opendal/core/services/webdav/src/core.rs:554,1
    - Dst: expect
      Src: /src/opendal/core/services/webdav/src/core.rs:553,1
    - Dst: Result::write_event
      Src: /src/opendal/core/services/webdav/src/core.rs:558,1
    - Dst: Event::Start
      Src: /src/opendal/core/services/webdav/src/core.rs:559,1
    - Dst: BytesStart::new
      Src: /src/opendal/core/services/webdav/src/core.rs:559,1
    - Dst: expect
      Src: /src/opendal/core/services/webdav/src/core.rs:558,1
    - Dst: quick_xml::escape::escape
      Src: /src/opendal/core/services/webdav/src/core.rs:565,1
    - Dst: Result::write_event
      Src: /src/opendal/core/services/webdav/src/core.rs:567,1
    - Dst: Event::Start
      Src: /src/opendal/core/services/webdav/src/core.rs:568,1
    - Dst: BytesStart::new
      Src: /src/opendal/core/services/webdav/src/core.rs:568,1
    - Dst: expect
      Src: /src/opendal/core/services/webdav/src/core.rs:567,1
    - Dst: Result::write_event
      Src: /src/opendal/core/services/webdav/src/core.rs:571,1
    - Dst: Event::Text
      Src: /src/opendal/core/services/webdav/src/core.rs:572,1
    - Dst: BytesText::new
      Src: /src/opendal/core/services/webdav/src/core.rs:572,1
    - Dst: expect
      Src: /src/opendal/core/services/webdav/src/core.rs:571,1
    - Dst: Result::write_event
      Src: /src/opendal/core/services/webdav/src/core.rs:574,1
    - Dst: Event::End
      Src: /src/opendal/core/services/webdav/src/core.rs:575,1
    - Dst: BytesEnd::new
      Src: /src/opendal/core/services/webdav/src/core.rs:575,1
    - Dst: expect
      Src: /src/opendal/core/services/webdav/src/core.rs:574,1
    - Dst: Result::write_event
      Src: /src/opendal/core/services/webdav/src/core.rs:580,1
    - Dst: Event::End
      Src: /src/opendal/core/services/webdav/src/core.rs:581,1
    - Dst: BytesEnd::new
      Src: /src/opendal/core/services/webdav/src/core.rs:581,1
    - Dst: expect
      Src: /src/opendal/core/services/webdav/src/core.rs:580,1
    - Dst: Result::write_event
      Src: /src/opendal/core/services/webdav/src/core.rs:583,1
    - Dst: Event::End
      Src: /src/opendal/core/services/webdav/src/core.rs:584,1
    - Dst: BytesEnd::new
      Src: /src/opendal/core/services/webdav/src/core.rs:584,1
    - Dst: expect
      Src: /src/opendal/core/services/webdav/src/core.rs:583,1
    - Dst: Result::write_event
      Src: /src/opendal/core/services/webdav/src/core.rs:586,1
    - Dst: Event::End
      Src: /src/opendal/core/services/webdav/src/core.rs:587,1
    - Dst: BytesEnd::new
      Src: /src/opendal/core/services/webdav/src/core.rs:587,1
    - Dst: expect
      Src: /src/opendal/core/services/webdav/src/core.rs:586,1
    - Dst: String::from_utf8
      Src: /src/opendal/core/services/webdav/src/core.rs:590,1
    - Dst: Result::into_inner
      Src: /src/opendal/core/services/webdav/src/core.rs:590,1
    - Dst: Arc::into_inner
      Src: /src/opendal/core/services/webdav/src/core.rs:590,1
    - Dst: expect
      Src: /src/opendal/core/services/webdav/src/core.rs:590,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 96
    argCount: 3
    argNames:
    - user_metadata
    - namespace_prefix
    - namespace_uri
    argTypes:
    - '&HashMap<String, String>'
    - '&str'
    - '&str'
    constantsTouched: []
    func_position:
      end: 591
      start: 525
    functionDepth: 40
    functionLinenumber: 525
    functionLinenumberEnd: 591
    functionName: build_proppatch_request
    functionSourceFile: /src/opendal/core/services/webdav/src/core.rs
    functionUses: 4
    functionsReached:
    - Event::Decl
    - Event::Text
    - Vec::new
    - Writer::new
    - Result::write_event
    - Event::Start
    - Self::push_attribute
    - String::from_utf8
    - expect
    - Result::into_inner
    - as_str
    - BytesEnd::new
    - Some
    - quick_xml::escape::escape
    - quick_xml::events::BytesDecl::new
    - Cursor::new
    - Event::End
    - BytesText::new
    - Arc::into_inner
    - BytesStart::new
    linkageType: ''
    returnType: String
    signature: 'pub fn build_proppatch_request(user_metadata: &HashMap<String, String>,namespace_prefix:
      &str,namespace_uri: &str,) -> String'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: HashMap::new
      Src: /src/opendal/core/services/webdav/src/core.rs:606,1
    - Dst: Reader::from_str
      Src: /src/opendal/core/services/webdav/src/core.rs:607,1
    - Dst: anyhow::Result::config_mut
      Src: /src/opendal/core/services/webdav/src/core.rs:608,1
    - Dst: trim_text
      Src: /src/opendal/core/services/webdav/src/core.rs:608,1
    - Dst: HashMap::new
      Src: /src/opendal/core/services/webdav/src/core.rs:611,1
    - Dst: Vec::new
      Src: /src/opendal/core/services/webdav/src/core.rs:613,1
    - Dst: String::new
      Src: /src/opendal/core/services/webdav/src/core.rs:617,1
    - Dst: Vec::new
      Src: /src/opendal/core/services/webdav/src/core.rs:619,1
    - Dst: anyhow::Result::read_event_into
      Src: /src/opendal/core/services/webdav/src/core.rs:621,1
    - Dst: Result::attributes
      Src: /src/opendal/core/services/webdav/src/core.rs:625,1
    - Dst: Vec::flatten
      Src: /src/opendal/core/services/webdav/src/core.rs:625,1
    - Dst: String::from_utf8_lossy
      Src: /src/opendal/core/services/webdav/src/core.rs:626,1
    - Dst: as_ref
      Src: /src/opendal/core/services/webdav/src/core.rs:626,1
    - Dst: to_string
      Src: /src/opendal/core/services/webdav/src/core.rs:626,1
    - Dst: FoyerKey::starts_with
      Src: /src/opendal/core/services/webdav/src/core.rs:627,1
    - Dst: FoyerKey::strip_prefix
      Src: /src/opendal/core/services/webdav/src/core.rs:628,1
    - Dst: unwrap_or
      Src: /src/opendal/core/services/webdav/src/core.rs:628,1
    - Dst: to_string
      Src: /src/opendal/core/services/webdav/src/core.rs:628,1
    - Dst: String::from_utf8_lossy
      Src: /src/opendal/core/services/webdav/src/core.rs:629,1
    - Dst: to_string
      Src: /src/opendal/core/services/webdav/src/core.rs:629,1
    - Dst: Self::contains
      Src: /src/opendal/core/services/webdav/src/core.rs:630,1
    - Dst: Self::push
      Src: /src/opendal/core/services/webdav/src/core.rs:631,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/webdav/src/core.rs:631,1
    - Dst: Self::insert
      Src: /src/opendal/core/services/webdav/src/core.rs:633,1
    - Dst: String::from_utf8_lossy
      Src: /src/opendal/core/services/webdav/src/core.rs:638,1
    - Dst: Result::name
      Src: /src/opendal/core/services/webdav/src/core.rs:638,1
    - Dst: Result::as_ref
      Src: /src/opendal/core/services/webdav/src/core.rs:638,1
    - Dst: to_string
      Src: /src/opendal/core/services/webdav/src/core.rs:638,1
    - Dst: Result::find
      Src: /src/opendal/core/services/webdav/src/core.rs:639,1
    - Dst: Self::contains
      Src: /src/opendal/core/services/webdav/src/core.rs:642,1
    - Dst: Result::to_string
      Src: /src/opendal/core/services/webdav/src/core.rs:642,1
    - Dst: Some
      Src: /src/opendal/core/services/webdav/src/core.rs:643,1
    - Dst: to_string
      Src: /src/opendal/core/services/webdav/src/core.rs:643,1
    - Dst: Self::clear
      Src: /src/opendal/core/services/webdav/src/core.rs:644,1
    - Dst: Result::attributes
      Src: /src/opendal/core/services/webdav/src/core.rs:650,1
    - Dst: Vec::flatten
      Src: /src/opendal/core/services/webdav/src/core.rs:650,1
    - Dst: String::from_utf8_lossy
      Src: /src/opendal/core/services/webdav/src/core.rs:651,1
    - Dst: as_ref
      Src: /src/opendal/core/services/webdav/src/core.rs:651,1
    - Dst: to_string
      Src: /src/opendal/core/services/webdav/src/core.rs:651,1
    - Dst: FoyerKey::starts_with
      Src: /src/opendal/core/services/webdav/src/core.rs:652,1
    - Dst: FoyerKey::strip_prefix
      Src: /src/opendal/core/services/webdav/src/core.rs:653,1
    - Dst: unwrap_or
      Src: /src/opendal/core/services/webdav/src/core.rs:653,1
    - Dst: to_string
      Src: /src/opendal/core/services/webdav/src/core.rs:653,1
    - Dst: String::from_utf8_lossy
      Src: /src/opendal/core/services/webdav/src/core.rs:654,1
    - Dst: to_string
      Src: /src/opendal/core/services/webdav/src/core.rs:654,1
    - Dst: Self::contains
      Src: /src/opendal/core/services/webdav/src/core.rs:655,1
    - Dst: Self::push
      Src: /src/opendal/core/services/webdav/src/core.rs:656,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/webdav/src/core.rs:656,1
    - Dst: Self::insert
      Src: /src/opendal/core/services/webdav/src/core.rs:658,1
    - Dst: String::from_utf8_lossy
      Src: /src/opendal/core/services/webdav/src/core.rs:663,1
    - Dst: Result::name
      Src: /src/opendal/core/services/webdav/src/core.rs:663,1
    - Dst: Result::as_ref
      Src: /src/opendal/core/services/webdav/src/core.rs:663,1
    - Dst: to_string
      Src: /src/opendal/core/services/webdav/src/core.rs:663,1
    - Dst: Result::find
      Src: /src/opendal/core/services/webdav/src/core.rs:664,1
    - Dst: Self::contains
      Src: /src/opendal/core/services/webdav/src/core.rs:667,1
    - Dst: Result::to_string
      Src: /src/opendal/core/services/webdav/src/core.rs:667,1
    - Dst: Result::insert
      Src: /src/opendal/core/services/webdav/src/core.rs:668,1
    - Dst: to_string
      Src: /src/opendal/core/services/webdav/src/core.rs:668,1
    - Dst: String::new
      Src: /src/opendal/core/services/webdav/src/core.rs:668,1
    - Dst: None::is_some
      Src: /src/opendal/core/services/webdav/src/core.rs:672,1
    - Dst: String::from_utf8_lossy
      Src: /src/opendal/core/services/webdav/src/core.rs:674,1
    - Dst: Result::as_ref
      Src: /src/opendal/core/services/webdav/src/core.rs:674,1
    - Dst: Self::push_str
      Src: /src/opendal/core/services/webdav/src/core.rs:675,1
    - Dst: None::is_some
      Src: /src/opendal/core/services/webdav/src/core.rs:677,1
    - Dst: String::from_utf8_lossy
      Src: /src/opendal/core/services/webdav/src/core.rs:679,1
    - Dst: Result::as_ref
      Src: /src/opendal/core/services/webdav/src/core.rs:679,1
    - Dst: as_ref
      Src: /src/opendal/core/services/webdav/src/core.rs:680,1
    - Dst: Self::push_str
      Src: /src/opendal/core/services/webdav/src/core.rs:688,1
    - Dst: String::from_utf8_lossy
      Src: /src/opendal/core/services/webdav/src/core.rs:691,1
    - Dst: Result::name
      Src: /src/opendal/core/services/webdav/src/core.rs:691,1
    - Dst: Result::as_ref
      Src: /src/opendal/core/services/webdav/src/core.rs:691,1
    - Dst: to_string
      Src: /src/opendal/core/services/webdav/src/core.rs:691,1
    - Dst: Result::find
      Src: /src/opendal/core/services/webdav/src/core.rs:692,1
    - Dst: Self::contains
      Src: /src/opendal/core/services/webdav/src/core.rs:695,1
    - Dst: Result::to_string
      Src: /src/opendal/core/services/webdav/src/core.rs:695,1
    - Dst: None::take
      Src: /src/opendal/core/services/webdav/src/core.rs:696,1
    - Dst: Result::insert
      Src: /src/opendal/core/services/webdav/src/core.rs:699,1
    - Dst: Self::clone
      Src: /src/opendal/core/services/webdav/src/core.rs:699,1
    - Dst: Self::clear
      Src: /src/opendal/core/services/webdav/src/core.rs:700,1
    - Dst: io::Result::clear
      Src: /src/opendal/core/services/webdav/src/core.rs:708,1
    CyclomaticComplexity: 21
    EdgeCount: 21
    ICount: 229
    argCount: 2
    argNames:
    - xml
    - namespace_uri
    argTypes:
    - '&str'
    - '&str'
    constantsTouched: []
    func_position:
      end: 712
      start: 605
    functionDepth: 34
    functionLinenumber: 605
    functionLinenumberEnd: 712
    functionName: parse_user_metadata_from_xml
    functionSourceFile: /src/opendal/core/services/webdav/src/core.rs
    functionUses: 7
    functionsReached:
    - Self::clear
    - FoyerKey::strip_prefix
    - Self::push_str
    - Self::clone
    - Vec::new
    - Result::clone
    - None::take
    - None::is_some
    - Result::to_string
    - FoyerKey::starts_with
    - Self::insert
    - trim_text
    - unwrap_or
    - Self::push
    - Result::insert
    - Some
    - io::Result::clear
    - String::from_utf8_lossy
    - anyhow::Result::config_mut
    - Result::attributes
    - to_string
    - String::new
    - Vec::flatten
    - as_ref
    - Result::name
    - Self::contains
    - anyhow::Result::read_event_into
    - Result::find
    - Result::as_ref
    - HashMap::new
    - Reader::from_str
    linkageType: ''
    returnType: HashMap
    signature: 'pub fn parse_user_metadata_from_xml(xml: &str, namespace_uri: &str)
      -> HashMap<String, String>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Reader::from_str
      Src: /src/opendal/core/services/webdav/src/core.rs:723,1
    - Dst: anyhow::Result::config_mut
      Src: /src/opendal/core/services/webdav/src/core.rs:724,1
    - Dst: trim_text
      Src: /src/opendal/core/services/webdav/src/core.rs:724,1
    - Dst: Vec::new
      Src: /src/opendal/core/services/webdav/src/core.rs:726,1
    - Dst: String::new
      Src: /src/opendal/core/services/webdav/src/core.rs:728,1
    - Dst: anyhow::Result::read_event_into
      Src: /src/opendal/core/services/webdav/src/core.rs:731,1
    - Dst: String::from_utf8_lossy
      Src: /src/opendal/core/services/webdav/src/core.rs:733,1
    - Dst: Result::name
      Src: /src/opendal/core/services/webdav/src/core.rs:733,1
    - Dst: Result::as_ref
      Src: /src/opendal/core/services/webdav/src/core.rs:733,1
    - Dst: to_lowercase
      Src: /src/opendal/core/services/webdav/src/core.rs:733,1
    - Dst: Result::ends_with
      Src: /src/opendal/core/services/webdav/src/core.rs:735,1
    - Dst: Self::clear
      Src: /src/opendal/core/services/webdav/src/core.rs:737,1
    - Dst: String::from_utf8_lossy
      Src: /src/opendal/core/services/webdav/src/core.rs:741,1
    - Dst: Result::as_ref
      Src: /src/opendal/core/services/webdav/src/core.rs:741,1
    - Dst: Self::push_str
      Src: /src/opendal/core/services/webdav/src/core.rs:742,1
    - Dst: String::from_utf8_lossy
      Src: /src/opendal/core/services/webdav/src/core.rs:745,1
    - Dst: Result::name
      Src: /src/opendal/core/services/webdav/src/core.rs:745,1
    - Dst: Result::as_ref
      Src: /src/opendal/core/services/webdav/src/core.rs:745,1
    - Dst: to_lowercase
      Src: /src/opendal/core/services/webdav/src/core.rs:745,1
    - Dst: Result::ends_with
      Src: /src/opendal/core/services/webdav/src/core.rs:746,1
    - Dst: Self::split_whitespace
      Src: /src/opendal/core/services/webdav/src/core.rs:748,1
    - Dst: nth
      Src: /src/opendal/core/services/webdav/src/core.rs:748,1
    - Dst: parse::<u16>
      Src: /src/opendal/core/services/webdav/src/core.rs:749,1
    - Dst: contains
      Src: /src/opendal/core/services/webdav/src/core.rs:750,1
    - Dst: Err
      Src: /src/opendal/core/services/webdav/src/core.rs:752,1
    - Dst: Error::new
      Src: /src/opendal/core/services/webdav/src/core.rs:752,1
    - Dst: io::Result::clear
      Src: /src/opendal/core/services/webdav/src/core.rs:764,1
    - Dst: Ok
      Src: /src/opendal/core/services/webdav/src/core.rs:767,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 80
    argCount: 1
    argNames:
    - xml
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 768
      start: 722
    functionDepth: 34
    functionLinenumber: 722
    functionLinenumberEnd: 768
    functionName: check_proppatch_response
    functionSourceFile: /src/opendal/core/services/webdav/src/core.rs
    functionUses: 1
    functionsReached:
    - Self::clear
    - Result::ends_with
    - Self::push_str
    - Vec::new
    - Ok
    - to_lowercase
    - trim_text
    - contains
    - nth
    - parse::<u16>
    - io::Result::clear
    - String::from_utf8_lossy
    - anyhow::Result::config_mut
    - String::new
    - Err
    - Self::split_whitespace
    - Error::new
    - Result::name
    - anyhow::Result::read_event_into
    - Result::as_ref
    - Reader::from_str
    linkageType: ''
    returnType: Result
    signature: 'pub fn check_proppatch_response(xml: &str) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: String::from_utf8_lossy
      Src: /src/opendal/core/services/webdav/src/core.rs:771,1
    - Dst: replace
      Src: /src/opendal/core/services/webdav/src/core.rs:778,1
    - Dst: quick_xml::de::from_str
      Src: /src/opendal/core/services/webdav/src/core.rs:780,1
    - Dst: Result::map_err
      Src: /src/opendal/core/services/webdav/src/core.rs:780,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - bs
    argTypes:
    - '&[u8]'
    constantsTouched: []
    func_position:
      end: 781
      start: 770
    functionDepth: 1
    functionLinenumber: 770
    functionLinenumberEnd: 781
    functionName: deserialize_multistatus
    functionSourceFile: /src/opendal/core/services/webdav/src/core.rs
    functionUses: 2
    functionsReached:
    - Result::map_err
    - quick_xml::de::from_str
    - String::from_utf8_lossy
    - replace
    linkageType: ''
    returnType: Result
    signature: 'pub fn deserialize_multistatus(bs: &[u8]) -> Result<Multistatus>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::split_whitespace
      Src: /src/opendal/core/services/webdav/src/core.rs:797,1
    - Dst: next
      Src: /src/opendal/core/services/webdav/src/core.rs:798,1
    - Dst: ok_or_else
      Src: /src/opendal/core/services/webdav/src/core.rs:798,1
    - Dst: Error::new
      Src: /src/opendal/core/services/webdav/src/core.rs:800,1
    - Dst: next
      Src: /src/opendal/core/services/webdav/src/core.rs:801,1
    - Dst: ok_or_else
      Src: /src/opendal/core/services/webdav/src/core.rs:801,1
    - Dst: Error::new
      Src: /src/opendal/core/services/webdav/src/core.rs:802,1
    - Dst: Result::split_whitespace
      Src: /src/opendal/core/services/webdav/src/core.rs:809,1
    - Dst: parse::<u16>
      Src: /src/opendal/core/services/webdav/src/core.rs:810,1
    - Dst: map_err
      Src: /src/opendal/core/services/webdav/src/core.rs:810,1
    - Dst: Error::new
      Src: /src/opendal/core/services/webdav/src/core.rs:811,1
    - Dst: Self::set_source
      Src: /src/opendal/core/services/webdav/src/core.rs:811,1
    - Dst: collect::<Vec<_>>
      Src: /src/opendal/core/services/webdav/src/core.rs:814,1
    - Dst: join
      Src: /src/opendal/core/services/webdav/src/core.rs:814,1
    - Dst: Err
      Src: /src/opendal/core/services/webdav/src/core.rs:815,1
    - Dst: Error::new
      Src: /src/opendal/core/services/webdav/src/core.rs:815,1
    - Dst: Some
      Src: /src/opendal/core/services/webdav/src/core.rs:821,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/webdav/src/core.rs:826,1
    - Dst: parse::<u64>
      Src: /src/opendal/core/services/webdav/src/core.rs:829,1
    - Dst: map_err
      Src: /src/opendal/core/services/webdav/src/core.rs:829,1
    - Dst: Error::new
      Src: /src/opendal/core/services/webdav/src/core.rs:830,1
    - Dst: Self::set_source
      Src: /src/opendal/core/services/webdav/src/core.rs:830,1
    - Dst: Result::set_content_length
      Src: /src/opendal/core/services/webdav/src/core.rs:832,1
    - Dst: Result::set_content_type
      Src: /src/opendal/core/services/webdav/src/core.rs:836,1
    - Dst: Result::set_etag
      Src: /src/opendal/core/services/webdav/src/core.rs:840,1
    - Dst: Err
      Src: /src/opendal/core/services/webdav/src/core.rs:845,1
    - Dst: Error::new
      Src: /src/opendal/core/services/webdav/src/core.rs:845,1
    - Dst: Result::set_last_modified
      Src: /src/opendal/core/services/webdav/src/core.rs:850,1
    - Dst: Timestamp::parse_rfc2822
      Src: /src/opendal/core/services/webdav/src/core.rs:850,1
    - Dst: Ok
      Src: /src/opendal/core/services/webdav/src/core.rs:853,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 78
    argCount: 1
    argNames:
    - propstat
    argTypes:
    - '&Propstat'
    constantsTouched: []
    func_position:
      end: 854
      start: 783
    functionDepth: 36
    functionLinenumber: 783
    functionLinenumberEnd: 854
    functionName: parse_propstat
    functionSourceFile: /src/opendal/core/services/webdav/src/core.rs
    functionUses: 1
    functionsReached:
    - map_err
    - Result::split_whitespace
    - Ok
    - Result::set_etag
    - parse::<u64>
    - ok_or_else
    - next
    - Metadata::new
    - Timestamp::parse_rfc2822
    - parse::<u16>
    - join
    - Some
    - Result::set_content_type
    - Self::set_source
    - Result::set_last_modified
    - Error::new
    - Err
    - collect::<Vec<_>>
    - Result::set_content_length
    linkageType: ''
    returnType: Result
    signature: 'pub fn parse_propstat(propstat: &Propstat) -> Result<Metadata>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: parse_propstat
      Src: /src/opendal/core/services/webdav/src/core.rs:860,1
    - Dst: Ok
      Src: /src/opendal/core/services/webdav/src/core.rs:861,1
    - Dst: Some
      Src: /src/opendal/core/services/webdav/src/core.rs:862,1
    - Dst: Err
      Src: /src/opendal/core/services/webdav/src/core.rs:866,1
    - Dst: None::unwrap_or_else
      Src: /src/opendal/core/services/webdav/src/core.rs:866,1
    - Dst: Error::new
      Src: /src/opendal/core/services/webdav/src/core.rs:867,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 1
    argNames:
    - propstats
    argTypes:
    - '&[Propstat]'
    constantsTouched: []
    func_position:
      end: 872
      start: 856
    functionDepth: 37
    functionLinenumber: 856
    functionLinenumberEnd: 872
    functionName: parse_propstats
    functionSourceFile: /src/opendal/core/services/webdav/src/core.rs
    functionUses: 4
    functionsReached:
    - parse_propstat
    - Ok
    - Err
    - Some
    - None::unwrap_or_else
    - Error::new
    linkageType: ''
    returnType: Result
    signature: 'pub fn parse_propstats(propstats: &[Propstat]) -> Result<Metadata>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::to_string
      Src: /src/opendal/core/services/webdav/src/core.rs:923,1
    - Dst: Some
      Src: /src/opendal/core/services/webdav/src/core.rs:925,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/webdav/src/core.rs:925,1
    - Dst: Option<&str>::map
      Src: /src/opendal/core/services/webdav/src/core.rs:927,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 2
    argNames:
    - status
    - getcontentlength
    argTypes:
    - '&str'
    - Option<&str>
    constantsTouched: []
    func_position:
      end: 932
      start: 921
    functionDepth: 2
    functionLinenumber: 921
    functionLinenumberEnd: 932
    functionName: tests::new_propstat
    functionSourceFile: /src/opendal/core/services/webdav/src/core.rs
    functionUses: 0
    functionsReached:
    - Option<&str>::map
    - '&str::to_string'
    - Result::to_string
    - Some
    linkageType: ''
    returnType: Propstat
    signature: 'fn new_propstat(status: &str, getcontentlength: Option<&str>) -> Propstat'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: from_str::<Propstat>
      Src: /src/opendal/core/services/webdav/src/core.rs:952,1
    - Dst: unwrap
      Src: /src/opendal/core/services/webdav/src/core.rs:952,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 963
      start: 935
    functionDepth: 35
    functionLinenumber: 935
    functionLinenumberEnd: 963
    functionName: tests::test_propstat
    functionSourceFile: /src/opendal/core/services/webdav/src/core.rs
    functionUses: 0
    functionsReached:
    - unwrap
    - from_str::<Propstat>
    linkageType: ''
    returnType: void
    signature: fn test_propstat()
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 970
      start: 966
    functionDepth: 0
    functionLinenumber: 966
    functionLinenumberEnd: 970
    functionName: tests::test_parse_propstat_rejects_invalid_status_code
    functionSourceFile: /src/opendal/core/services/webdav/src/core.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: fn test_parse_propstat_rejects_invalid_status_code()
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 979
      start: 973
    functionDepth: 0
    functionLinenumber: 973
    functionLinenumberEnd: 979
    functionName: tests::test_parse_propstat_rejects_invalid_content_length
    functionSourceFile: /src/opendal/core/services/webdav/src/core.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: fn test_parse_propstat_rejects_invalid_content_length()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: from_str::<PropfindResponse>
      Src: /src/opendal/core/services/webdav/src/core.rs:1002,1
    - Dst: unwrap
      Src: /src/opendal/core/services/webdav/src/core.rs:1002,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 1015
      start: 982
    functionDepth: 35
    functionLinenumber: 982
    functionLinenumberEnd: 1015
    functionName: tests::test_response_simple
    functionSourceFile: /src/opendal/core/services/webdav/src/core.rs
    functionUses: 0
    functionsReached:
    - unwrap
    - from_str::<PropfindResponse>
    linkageType: ''
    returnType: void
    signature: fn test_response_simple()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: from_str::<PropfindResponse>
      Src: /src/opendal/core/services/webdav/src/core.rs:1043,1
    - Dst: unwrap
      Src: /src/opendal/core/services/webdav/src/core.rs:1043,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 1055
      start: 1018
    functionDepth: 35
    functionLinenumber: 1018
    functionLinenumberEnd: 1055
    functionName: tests::test_response_file
    functionSourceFile: /src/opendal/core/services/webdav/src/core.rs
    functionUses: 0
    functionsReached:
    - unwrap
    - from_str::<PropfindResponse>
    linkageType: ''
    returnType: void
    signature: fn test_response_file()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: from_str::<PropfindResponse>
      Src: /src/opendal/core/services/webdav/src/core.rs:1082,1
    - Dst: unwrap
      Src: /src/opendal/core/services/webdav/src/core.rs:1082,1
    - Dst: parse_propstats
      Src: /src/opendal/core/services/webdav/src/core.rs:1085,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/services/webdav/src/core.rs:1085,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 1088
      start: 1058
    functionDepth: 35
    functionLinenumber: 1058
    functionLinenumberEnd: 1088
    functionName: tests::test_response_with_multiple_propstat
    functionSourceFile: /src/opendal/core/services/webdav/src/core.rs
    functionUses: 0
    functionsReached:
    - parse_propstats
    - unwrap
    - from_str::<PropfindResponse>
    - Result::unwrap
    linkageType: ''
    returnType: void
    signature: fn test_response_with_multiple_propstat()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: parse_propstats
      Src: /src/opendal/core/services/webdav/src/core.rs:1106,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/services/webdav/src/core.rs:1106,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 1108
      start: 1091
    functionDepth: 38
    functionLinenumber: 1091
    functionLinenumberEnd: 1108
    functionName: tests::test_parse_propstats_skips_failed_propstat
    functionSourceFile: /src/opendal/core/services/webdav/src/core.rs
    functionUses: 0
    functionsReached:
    - parse_propstats
    - Result::unwrap
    linkageType: ''
    returnType: void
    signature: fn test_parse_propstats_skips_failed_propstat()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: from_str::<Multistatus>
      Src: /src/opendal/core/services/webdav/src/core.rs:1151,1
    - Dst: unwrap
      Src: /src/opendal/core/services/webdav/src/core.rs:1151,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 1160
      start: 1111
    functionDepth: 35
    functionLinenumber: 1111
    functionLinenumberEnd: 1160
    functionName: tests::test_with_multiple_items_simple
    functionSourceFile: /src/opendal/core/services/webdav/src/core.rs
    functionUses: 0
    functionsReached:
    - from_str::<Multistatus>
    - unwrap
    linkageType: ''
    returnType: void
    signature: fn test_with_multiple_items_simple()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: from_str::<Multistatus>
      Src: /src/opendal/core/services/webdav/src/core.rs:1239,1
    - Dst: unwrap
      Src: /src/opendal/core/services/webdav/src/core.rs:1239,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 17
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 1263
      start: 1163
    functionDepth: 35
    functionLinenumber: 1163
    functionLinenumberEnd: 1263
    functionName: tests::test_with_multiple_items_mixed
    functionSourceFile: /src/opendal/core/services/webdav/src/core.rs
    functionUses: 0
    functionsReached:
    - from_str::<Multistatus>
    - unwrap
    linkageType: ''
    returnType: void
    signature: fn test_with_multiple_items_mixed()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: from_str
      Src: /src/opendal/core/services/webdav/src/core.rs:1372,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/services/webdav/src/core.rs:1372,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 1383
      start: 1266
    functionDepth: 34
    functionLinenumber: 1266
    functionLinenumberEnd: 1383
    functionName: tests::test_with_multiple_items_mixed_nginx
    functionSourceFile: /src/opendal/core/services/webdav/src/core.rs
    functionUses: 0
    functionsReached:
    - from_str
    - Result::unwrap
    linkageType: ''
    returnType: void
    signature: fn test_with_multiple_items_mixed_nginx()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: HashMap::new
      Src: /src/opendal/core/services/webdav/src/core.rs:1387,1
    - Dst: Result::insert
      Src: /src/opendal/core/services/webdav/src/core.rs:1388,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/webdav/src/core.rs:1388,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/webdav/src/core.rs:1388,1
    - Dst: Result::insert
      Src: /src/opendal/core/services/webdav/src/core.rs:1389,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/webdav/src/core.rs:1389,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/webdav/src/core.rs:1389,1
    - Dst: build_proppatch_request
      Src: /src/opendal/core/services/webdav/src/core.rs:1391,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 25
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 1413
      start: 1386
    functionDepth: 41
    functionLinenumber: 1386
    functionLinenumberEnd: 1413
    functionName: tests::test_build_proppatch_request
    functionSourceFile: /src/opendal/core/services/webdav/src/core.rs
    functionUses: 0
    functionsReached:
    - build_proppatch_request
    - '&str::to_string'
    - HashMap::new
    - Result::insert
    linkageType: ''
    returnType: void
    signature: fn test_build_proppatch_request()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: HashMap::new
      Src: /src/opendal/core/services/webdav/src/core.rs:1417,1
    - Dst: Result::insert
      Src: /src/opendal/core/services/webdav/src/core.rs:1418,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/webdav/src/core.rs:1418,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/webdav/src/core.rs:1418,1
    - Dst: build_proppatch_request
      Src: /src/opendal/core/services/webdav/src/core.rs:1420,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 1428
      start: 1416
    functionDepth: 41
    functionLinenumber: 1416
    functionLinenumberEnd: 1428
    functionName: tests::test_build_proppatch_request_with_special_chars
    functionSourceFile: /src/opendal/core/services/webdav/src/core.rs
    functionUses: 0
    functionsReached:
    - build_proppatch_request
    - '&str::to_string'
    - HashMap::new
    - Result::insert
    linkageType: ''
    returnType: void
    signature: fn test_build_proppatch_request_with_special_chars()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: HashMap::new
      Src: /src/opendal/core/services/webdav/src/core.rs:1432,1
    - Dst: Result::insert
      Src: /src/opendal/core/services/webdav/src/core.rs:1433,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/webdav/src/core.rs:1433,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/webdav/src/core.rs:1433,1
    - Dst: build_proppatch_request
      Src: /src/opendal/core/services/webdav/src/core.rs:1435,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 1440
      start: 1431
    functionDepth: 41
    functionLinenumber: 1431
    functionLinenumberEnd: 1440
    functionName: tests::test_build_proppatch_request_custom_namespace
    functionSourceFile: /src/opendal/core/services/webdav/src/core.rs
    functionUses: 0
    functionsReached:
    - build_proppatch_request
    - '&str::to_string'
    - HashMap::new
    - Result::insert
    linkageType: ''
    returnType: void
    signature: fn test_build_proppatch_request_custom_namespace()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: parse_user_metadata_from_xml
      Src: /src/opendal/core/services/webdav/src/core.rs:1458,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 1463
      start: 1443
    functionDepth: 35
    functionLinenumber: 1443
    functionLinenumberEnd: 1463
    functionName: tests::test_parse_user_metadata_from_xml
    functionSourceFile: /src/opendal/core/services/webdav/src/core.rs
    functionUses: 0
    functionsReached:
    - parse_user_metadata_from_xml
    linkageType: ''
    returnType: void
    signature: fn test_parse_user_metadata_from_xml()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: parse_user_metadata_from_xml
      Src: /src/opendal/core/services/webdav/src/core.rs:1479,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 1483
      start: 1466
    functionDepth: 35
    functionLinenumber: 1466
    functionLinenumberEnd: 1483
    functionName: tests::test_parse_user_metadata_from_xml_with_special_chars
    functionSourceFile: /src/opendal/core/services/webdav/src/core.rs
    functionUses: 0
    functionsReached:
    - parse_user_metadata_from_xml
    linkageType: ''
    returnType: void
    signature: fn test_parse_user_metadata_from_xml_with_special_chars()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: parse_user_metadata_from_xml
      Src: /src/opendal/core/services/webdav/src/core.rs:1499,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 1502
      start: 1486
    functionDepth: 35
    functionLinenumber: 1486
    functionLinenumberEnd: 1502
    functionName: tests::test_parse_user_metadata_from_xml_empty
    functionSourceFile: /src/opendal/core/services/webdav/src/core.rs
    functionUses: 0
    functionsReached:
    - parse_user_metadata_from_xml
    linkageType: ''
    returnType: void
    signature: fn test_parse_user_metadata_from_xml_empty()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: parse_user_metadata_from_xml
      Src: /src/opendal/core/services/webdav/src/core.rs:1521,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 1526
      start: 1505
    functionDepth: 35
    functionLinenumber: 1505
    functionLinenumberEnd: 1526
    functionName: tests::test_parse_user_metadata_from_xml_dynamic_prefix
    functionSourceFile: /src/opendal/core/services/webdav/src/core.rs
    functionUses: 0
    functionsReached:
    - parse_user_metadata_from_xml
    linkageType: ''
    returnType: void
    signature: fn test_parse_user_metadata_from_xml_dynamic_prefix()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: parse_user_metadata_from_xml
      Src: /src/opendal/core/services/webdav/src/core.rs:1543,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 1550
      start: 1529
    functionDepth: 35
    functionLinenumber: 1529
    functionLinenumberEnd: 1550
    functionName: tests::test_parse_user_metadata_from_xml_namespace_at_root
    functionSourceFile: /src/opendal/core/services/webdav/src/core.rs
    functionUses: 0
    functionsReached:
    - parse_user_metadata_from_xml
    linkageType: ''
    returnType: void
    signature: fn test_parse_user_metadata_from_xml_namespace_at_root()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: parse_user_metadata_from_xml
      Src: /src/opendal/core/services/webdav/src/core.rs:1567,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 1571
      start: 1553
    functionDepth: 35
    functionLinenumber: 1553
    functionLinenumberEnd: 1571
    functionName: tests::test_parse_user_metadata_from_xml_custom_namespace
    functionSourceFile: /src/opendal/core/services/webdav/src/core.rs
    functionUses: 0
    functionsReached:
    - parse_user_metadata_from_xml
    linkageType: ''
    returnType: void
    signature: fn test_parse_user_metadata_from_xml_custom_namespace()
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 1589
      start: 1574
    functionDepth: 0
    functionLinenumber: 1574
    functionLinenumberEnd: 1589
    functionName: tests::test_check_proppatch_response_success
    functionSourceFile: /src/opendal/core/services/webdav/src/core.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: fn test_check_proppatch_response_success()
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 1607
      start: 1592
    functionDepth: 0
    functionLinenumber: 1592
    functionLinenumberEnd: 1607
    functionName: tests::test_check_proppatch_response_failure
    functionSourceFile: /src/opendal/core/services/webdav/src/core.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: fn test_check_proppatch_response_failure()
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 1624
      start: 1610
    functionDepth: 0
    functionLinenumber: 1610
    functionLinenumberEnd: 1624
    functionName: tests::test_check_proppatch_response_lowercase
    functionSourceFile: /src/opendal/core/services/webdav/src/core.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: fn test_check_proppatch_response_lowercase()
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 4
    argNames:
    - core
    - ctx
    - op
    - path
    argTypes:
    - Arc<WebdavCore>
    - OperationContext
    - OpWrite
    - String
    constantsTouched: []
    func_position:
      end: 43
      start: 36
    functionDepth: 0
    functionLinenumber: 36
    functionLinenumberEnd: 43
    functionName: WebdavWriter::new
    functionSourceFile: /src/opendal/core/services/webdav/src/writer.rs
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(core: Arc<WebdavCore>, ctx: OperationContext, op: OpWrite,
      path: String) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Metadata::default
      Src: /src/opendal/core/services/webdav/src/writer.rs:46,1
    - Dst: parse_etag
      Src: /src/opendal/core/services/webdav/src/writer.rs:48,1
    - Dst: anyhow::Result::set_etag
      Src: /src/opendal/core/services/webdav/src/writer.rs:49,1
    - Dst: parse_last_modified
      Src: /src/opendal/core/services/webdav/src/writer.rs:52,1
    - Dst: anyhow::Result::set_last_modified
      Src: /src/opendal/core/services/webdav/src/writer.rs:53,1
    - Dst: Ok
      Src: /src/opendal/core/services/webdav/src/writer.rs:56,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 1
    argNames:
    - headers
    argTypes:
    - '&http::HeaderMap'
    constantsTouched: []
    func_position:
      end: 57
      start: 45
    functionDepth: 39
    functionLinenumber: 45
    functionLinenumberEnd: 57
    functionName: WebdavWriter::parse_metadata
    functionSourceFile: /src/opendal/core/services/webdav/src/writer.rs
    functionUses: 1
    functionsReached:
    - parse_last_modified
    - Metadata::default
    - Ok
    - anyhow::Result::set_last_modified
    - parse_etag
    - anyhow::Result::set_etag
    linkageType: ''
    returnType: Result
    signature: 'fn parse_metadata(headers: &http::HeaderMap) -> Result<Metadata>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: webdav_mkcol
      Src: /src/opendal/core/services/webdav/src/writer.rs:64,1
    - Dst: get_parent
      Src: /src/opendal/core/services/webdav/src/writer.rs:65,1
    - Dst: webdav_put
      Src: /src/opendal/core/services/webdav/src/writer.rs:69,1
    - Dst: Some
      Src: /src/opendal/core/services/webdav/src/writer.rs:71,1
    - Dst: Result::len
      Src: /src/opendal/core/services/webdav/src/writer.rs:71,1
    - Dst: status
      Src: /src/opendal/core/services/webdav/src/writer.rs:74,1
    - Dst: WebdavWriter::parse_metadata
      Src: /src/opendal/core/services/webdav/src/writer.rs:78,1
    - Dst: headers
      Src: /src/opendal/core/services/webdav/src/writer.rs:78,1
    - Dst: user_metadata
      Src: /src/opendal/core/services/webdav/src/writer.rs:81,1
    - Dst: webdav_proppatch
      Src: /src/opendal/core/services/webdav/src/writer.rs:82,1
    - Dst: status
      Src: /src/opendal/core/services/webdav/src/writer.rs:87,1
    - Dst: into_body
      Src: /src/opendal/core/services/webdav/src/writer.rs:91,1
    - Dst: to_bytes
      Src: /src/opendal/core/services/webdav/src/writer.rs:91,1
    - Dst: String::from_utf8_lossy
      Src: /src/opendal/core/services/webdav/src/writer.rs:92,1
    - Dst: check_proppatch_response
      Src: /src/opendal/core/services/webdav/src/writer.rs:93,1
    - Dst: is_success
      Src: /src/opendal/core/services/webdav/src/writer.rs:94,1
    - Dst: Err
      Src: /src/opendal/core/services/webdav/src/writer.rs:95,1
    - Dst: super::core::parse_error
      Src: /src/opendal/core/services/webdav/src/writer.rs:95,1
    - Dst: Ok
      Src: /src/opendal/core/services/webdav/src/writer.rs:99,1
    - Dst: Err
      Src: /src/opendal/core/services/webdav/src/writer.rs:101,1
    - Dst: super::core::parse_error
      Src: /src/opendal/core/services/webdav/src/writer.rs:101,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 79
    argCount: 1
    argNames:
    - bs
    argTypes:
    - Buffer
    constantsTouched: []
    func_position:
      end: 103
      start: 61
    functionDepth: 42
    functionLinenumber: 61
    functionLinenumberEnd: 103
    functionName: WebdavWriter::write_once
    functionSourceFile: /src/opendal/core/services/webdav/src/writer.rs
    functionUses: 0
    functionsReached:
    - webdav_mkcol
    - is_success
    - webdav_put
    - get_parent
    - status
    - webdav_proppatch
    - Ok
    - into_body
    - check_proppatch_response
    - Some
    - user_metadata
    - Err
    - headers
    - Result::len
    - to_bytes
    - String::from_utf8_lossy
    - super::core::parse_error
    - WebdavWriter::parse_metadata
    linkageType: ''
    returnType: Result
    signature: 'async fn write_once(&self, bs: Buffer) -> Result<Metadata>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: register::<Webdav>
      Src: /src/opendal/core/services/webdav/src/lib.rs:23,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - registry
    argTypes:
    - '&opendal_core::OperatorRegistry'
    constantsTouched: []
    func_position:
      end: 24
      start: 22
    functionDepth: 0
    functionLinenumber: 22
    functionLinenumberEnd: 24
    functionName: register_webdav_service
    functionSourceFile: /src/opendal/core/services/webdav/src/lib.rs
    functionUses: 1
    functionsReached:
    - register::<Webdav>
    linkageType: ''
    returnType: void
    signature: 'pub fn register_webdav_service(registry: &opendal_core::OperatorRegistry)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::debug_struct
      Src: /src/opendal/core/services/webdav/src/backend.rs:46,1
    - Dst: field
      Src: /src/opendal/core/services/webdav/src/backend.rs:46,1
    - Dst: finish_non_exhaustive
      Src: /src/opendal/core/services/webdav/src/backend.rs:46,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - f
    argTypes:
    - '&mut std::fmt::Formatter<''_>'
    constantsTouched: []
    func_position:
      end: 49
      start: 45
    functionDepth: 5
    functionLinenumber: 45
    functionLinenumberEnd: 49
    functionName: WebdavBuilder::fmt
    functionSourceFile: /src/opendal/core/services/webdav/src/backend.rs
    functionUses: 0
    functionsReached:
    - field
    - Result::debug_struct
    - finish_non_exhaustive
    linkageType: ''
    returnType: std::fmt::Result
    signature: 'fn fmt(&self, f: &mut std::fmt::Formatter<''_>) -> std::fmt::Result'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self::is_empty
      Src: /src/opendal/core/services/webdav/src/backend.rs:57,1
    - Dst: Some
      Src: /src/opendal/core/services/webdav/src/backend.rs:60,1
    - Dst: Self::to_string
      Src: /src/opendal/core/services/webdav/src/backend.rs:60,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - endpoint
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 64
      start: 56
    functionDepth: 4
    functionLinenumber: 56
    functionLinenumberEnd: 64
    functionName: WebdavBuilder::endpoint
    functionSourceFile: /src/opendal/core/services/webdav/src/backend.rs
    functionUses: 0
    functionsReached:
    - Self::is_empty
    - Self::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn endpoint(mut self, endpoint: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Option::is_empty
      Src: /src/opendal/core/services/webdav/src/backend.rs:70,1
    - Dst: Some
      Src: /src/opendal/core/services/webdav/src/backend.rs:71,1
    - Dst: Option::to_owned
      Src: /src/opendal/core/services/webdav/src/backend.rs:71,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 1
    argNames:
    - username
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 74
      start: 69
    functionDepth: 4
    functionLinenumber: 69
    functionLinenumberEnd: 74
    functionName: WebdavBuilder::username
    functionSourceFile: /src/opendal/core/services/webdav/src/backend.rs
    functionUses: 0
    functionsReached:
    - Option::is_empty
    - Option::to_owned
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn username(mut self, username: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Option::is_empty
      Src: /src/opendal/core/services/webdav/src/backend.rs:80,1
    - Dst: Some
      Src: /src/opendal/core/services/webdav/src/backend.rs:81,1
    - Dst: Option::to_owned
      Src: /src/opendal/core/services/webdav/src/backend.rs:81,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 1
    argNames:
    - password
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 84
      start: 79
    functionDepth: 4
    functionLinenumber: 79
    functionLinenumberEnd: 84
    functionName: WebdavBuilder::password
    functionSourceFile: /src/opendal/core/services/webdav/src/backend.rs
    functionUses: 0
    functionsReached:
    - Option::is_empty
    - Option::to_owned
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn password(mut self, password: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self::is_empty
      Src: /src/opendal/core/services/webdav/src/backend.rs:90,1
    - Dst: Some
      Src: /src/opendal/core/services/webdav/src/backend.rs:91,1
    - Dst: Self::to_string
      Src: /src/opendal/core/services/webdav/src/backend.rs:91,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 1
    argNames:
    - token
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 94
      start: 89
    functionDepth: 4
    functionLinenumber: 89
    functionLinenumberEnd: 94
    functionName: WebdavBuilder::token
    functionSourceFile: /src/opendal/core/services/webdav/src/backend.rs
    functionUses: 0
    functionsReached:
    - Self::is_empty
    - Self::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn token(mut self, token: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::is_empty
      Src: /src/opendal/core/services/webdav/src/backend.rs:98,1
    - Dst: Some
      Src: /src/opendal/core/services/webdav/src/backend.rs:101,1
    - Dst: Result::to_string
      Src: /src/opendal/core/services/webdav/src/backend.rs:101,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - root
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 105
      start: 97
    functionDepth: 4
    functionLinenumber: 97
    functionLinenumberEnd: 105
    functionName: WebdavBuilder::root
    functionSourceFile: /src/opendal/core/services/webdav/src/backend.rs
    functionUses: 0
    functionsReached:
    - Result::is_empty
    - Result::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn root(mut self, root: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - disable
    argTypes:
    - bool
    constantsTouched: []
    func_position:
      end: 120
      start: 117
    functionDepth: 0
    functionLinenumber: 117
    functionLinenumberEnd: 120
    functionName: WebdavBuilder::disable_create_dir
    functionSourceFile: /src/opendal/core/services/webdav/src/backend.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: 'pub fn disable_create_dir(mut self, disable: bool) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 1
    argNames:
    - _enable
    argTypes:
    - bool
    constantsTouched: []
    func_position:
      end: 129
      start: 127
    functionDepth: 0
    functionLinenumber: 127
    functionLinenumberEnd: 129
    functionName: WebdavBuilder::enable_user_metadata
    functionSourceFile: /src/opendal/core/services/webdav/src/backend.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: 'pub fn enable_user_metadata(self, _enable: bool) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::is_empty
      Src: /src/opendal/core/services/webdav/src/backend.rs:138,1
    - Dst: Some
      Src: /src/opendal/core/services/webdav/src/backend.rs:139,1
    - Dst: Result::to_string
      Src: /src/opendal/core/services/webdav/src/backend.rs:139,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 1
    argNames:
    - prefix
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 142
      start: 137
    functionDepth: 4
    functionLinenumber: 137
    functionLinenumberEnd: 142
    functionName: WebdavBuilder::user_metadata_prefix
    functionSourceFile: /src/opendal/core/services/webdav/src/backend.rs
    functionUses: 0
    functionsReached:
    - Result::is_empty
    - Result::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn user_metadata_prefix(mut self, prefix: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::is_empty
      Src: /src/opendal/core/services/webdav/src/backend.rs:151,1
    - Dst: Some
      Src: /src/opendal/core/services/webdav/src/backend.rs:152,1
    - Dst: Result::to_string
      Src: /src/opendal/core/services/webdav/src/backend.rs:152,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 1
    argNames:
    - uri
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 155
      start: 150
    functionDepth: 4
    functionLinenumber: 150
    functionLinenumberEnd: 155
    functionName: WebdavBuilder::user_metadata_uri
    functionSourceFile: /src/opendal/core/services/webdav/src/backend.rs
    functionUses: 0
    functionsReached:
    - Result::is_empty
    - Result::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn user_metadata_uri(mut self, uri: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - enable
    argTypes:
    - bool
    constantsTouched: []
    func_position:
      end: 173
      start: 170
    functionDepth: 0
    functionLinenumber: 170
    functionLinenumberEnd: 173
    functionName: WebdavBuilder::enable_conditional_read
    functionSourceFile: /src/opendal/core/services/webdav/src/backend.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: 'pub fn enable_conditional_read(mut self, enable: bool) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/core/services/webdav/src/backend.rs:185,1
    - Dst: Error::new
      Src: /src/opendal/core/services/webdav/src/backend.rs:185,1
    - Dst: Self::with_context
      Src: /src/opendal/core/services/webdav/src/backend.rs:185,1
    - Dst: http::Uri::from_str
      Src: /src/opendal/core/services/webdav/src/backend.rs:190,1
    - Dst: Result::map_err
      Src: /src/opendal/core/services/webdav/src/backend.rs:190,1
    - Dst: Error::new
      Src: /src/opendal/core/services/webdav/src/backend.rs:192,1
    - Dst: Self::with_context
      Src: /src/opendal/core/services/webdav/src/backend.rs:192,1
    - Dst: Self::set_source
      Src: /src/opendal/core/services/webdav/src/backend.rs:192,1
    - Dst: path
      Src: /src/opendal/core/services/webdav/src/backend.rs:190,1
    - Dst: trim_end_matches
      Src: /src/opendal/core/services/webdav/src/backend.rs:190,1
    - Dst: to_string
      Src: /src/opendal/core/services/webdav/src/backend.rs:190,1
    - Dst: normalize_root
      Src: /src/opendal/core/services/webdav/src/backend.rs:200,1
    - Dst: clone
      Src: /src/opendal/core/services/webdav/src/backend.rs:200,1
    - Dst: unwrap_or_default
      Src: /src/opendal/core/services/webdav/src/backend.rs:200,1
    - Dst: Some
      Src: /src/opendal/core/services/webdav/src/backend.rs:205,1
    - Dst: format_authorization_by_basic
      Src: /src/opendal/core/services/webdav/src/backend.rs:205,1
    - Dst: as_deref
      Src: /src/opendal/core/services/webdav/src/backend.rs:207,1
    - Dst: unwrap_or_default
      Src: /src/opendal/core/services/webdav/src/backend.rs:207,1
    - Dst: Some
      Src: /src/opendal/core/services/webdav/src/backend.rs:211,1
    - Dst: format_authorization_by_bearer
      Src: /src/opendal/core/services/webdav/src/backend.rs:211,1
    - Dst: Arc::new
      Src: /src/opendal/core/services/webdav/src/backend.rs:216,1
    - Dst: ServiceInfo::new
      Src: /src/opendal/core/services/webdav/src/backend.rs:217,1
    - Dst: Default::default
      Src: /src/opendal/core/services/webdav/src/backend.rs:245,1
    - Dst: Self::to_string
      Src: /src/opendal/core/services/webdav/src/backend.rs:247,1
    - Dst: unwrap_or_else
      Src: /src/opendal/core/services/webdav/src/backend.rs:251,1
    - Dst: to_string
      Src: /src/opendal/core/services/webdav/src/backend.rs:254,1
    - Dst: unwrap_or_else
      Src: /src/opendal/core/services/webdav/src/backend.rs:255,1
    - Dst: to_string
      Src: /src/opendal/core/services/webdav/src/backend.rs:258,1
    - Dst: Ok
      Src: /src/opendal/core/services/webdav/src/backend.rs:261,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 89
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 262
      start: 179
    functionDepth: 36
    functionLinenumber: 179
    functionLinenumberEnd: 262
    functionName: WebdavBuilder::build
    functionSourceFile: /src/opendal/core/services/webdav/src/backend.rs
    functionUses: 0
    functionsReached:
    - format_authorization_by_bearer
    - Self::to_string
    - as_deref
    - Arc::new
    - Default::default
    - clone
    - Self::with_context
    - unwrap_or_else
    - ServiceInfo::new
    - Ok
    - normalize_root
    - unwrap_or_default
    - Result::map_err
    - format_authorization_by_basic
    - http::Uri::from_str
    - trim_end_matches
    - Some
    - Self::set_source
    - to_string
    - Error::new
    - Err
    - path
    linkageType: ''
    returnType: Result
    signature: fn build(self) -> Result<impl Service>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: clone
      Src: /src/opendal/core/services/webdav/src/backend.rs:278,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 279
      start: 277
    functionDepth: 2
    functionLinenumber: 277
    functionLinenumberEnd: 279
    functionName: WebdavBackend::info
    functionSourceFile: /src/opendal/core/services/webdav/src/backend.rs
    functionUses: 0
    functionsReached:
    - clone
    linkageType: ''
    returnType: ServiceInfo
    signature: fn info(&self) -> ServiceInfo
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 283
      start: 281
    functionDepth: 0
    functionLinenumber: 281
    functionLinenumberEnd: 283
    functionName: WebdavBackend::capability
    functionSourceFile: /src/opendal/core/services/webdav/src/backend.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Capability
    signature: fn capability(&self) -> Capability
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: webdav_mkcol
      Src: /src/opendal/core/services/webdav/src/backend.rs:291,1
    - Dst: Ok
      Src: /src/opendal/core/services/webdav/src/backend.rs:292,1
    - Dst: RpCreateDir::default
      Src: /src/opendal/core/services/webdav/src/backend.rs:292,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 3
    argNames:
    - ctx
    - path
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpCreateDir
    constantsTouched: []
    func_position:
      end: 293
      start: 285
    functionDepth: 42
    functionLinenumber: 285
    functionLinenumberEnd: 293
    functionName: WebdavBackend::create_dir
    functionSourceFile: /src/opendal/core/services/webdav/src/backend.rs
    functionUses: 0
    functionsReached:
    - RpCreateDir::default
    - webdav_mkcol
    - Ok
    linkageType: ''
    returnType: Result
    signature: 'async fn create_dir(&self,ctx: &OperationContext,path: &str,_: OpCreateDir,)
      -> Result<RpCreateDir>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: webdav_stat
      Src: /src/opendal/core/services/webdav/src/backend.rs:296,1
    - Dst: Ok
      Src: /src/opendal/core/services/webdav/src/backend.rs:297,1
    - Dst: RpStat::new
      Src: /src/opendal/core/services/webdav/src/backend.rs:297,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 3
    argNames:
    - ctx
    - path
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpStat
    constantsTouched: []
    func_position:
      end: 298
      start: 295
    functionDepth: 42
    functionLinenumber: 295
    functionLinenumberEnd: 298
    functionName: WebdavBackend::stat
    functionSourceFile: /src/opendal/core/services/webdav/src/backend.rs
    functionUses: 0
    functionsReached:
    - webdav_stat
    - RpStat::new
    - Ok
    linkageType: ''
    returnType: Result
    signature: 'async fn stat(&self, ctx: &OperationContext, path: &str, _: OpStat)
      -> Result<RpStat>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/core/services/webdav/src/backend.rs:301,1
    - Dst: oio::StreamReader::new
      Src: /src/opendal/core/services/webdav/src/backend.rs:301,1
    - Dst: WebdavReader::new
      Src: /src/opendal/core/services/webdav/src/backend.rs:301,1
    - Dst: WebdavBackend::clone
      Src: /src/opendal/core/services/webdav/src/backend.rs:302,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/webdav/src/backend.rs:303,1
    - Dst: Ok
      Src: /src/opendal/core/services/webdav/src/backend.rs:309,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpRead
    constantsTouched: []
    func_position:
      end: 310
      start: 299
    functionDepth: 3
    functionLinenumber: 299
    functionLinenumberEnd: 310
    functionName: WebdavBackend::read
    functionSourceFile: /src/opendal/core/services/webdav/src/backend.rs
    functionUses: 0
    functionsReached:
    - Result::clone
    - WebdavBackend::clone
    - Ok
    - oio::StreamReader::new
    - WebdavReader::new
    linkageType: ''
    returnType: Result
    signature: 'fn read(&self, ctx: &OperationContext, path: &str, args: OpRead) ->
      Result<Self::Reader>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/core/services/webdav/src/backend.rs:314,1
    - Dst: oio::OneShotWriter::new
      Src: /src/opendal/core/services/webdav/src/backend.rs:314,1
    - Dst: WebdavWriter::new
      Src: /src/opendal/core/services/webdav/src/backend.rs:314,1
    - Dst: clone
      Src: /src/opendal/core/services/webdav/src/backend.rs:315,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/webdav/src/backend.rs:316,1
    - Dst: to_string
      Src: /src/opendal/core/services/webdav/src/backend.rs:318,1
    - Dst: Ok
      Src: /src/opendal/core/services/webdav/src/backend.rs:322,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpWrite
    constantsTouched: []
    func_position:
      end: 323
      start: 312
    functionDepth: 2
    functionLinenumber: 312
    functionLinenumberEnd: 323
    functionName: WebdavBackend::write
    functionSourceFile: /src/opendal/core/services/webdav/src/backend.rs
    functionUses: 0
    functionsReached:
    - Result::clone
    - to_string
    - Ok
    - clone
    - oio::OneShotWriter::new
    - WebdavWriter::new
    linkageType: ''
    returnType: Result
    signature: 'fn write(&self, ctx: &OperationContext, path: &str, args: OpWrite)
      -> Result<Self::Writer>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/core/services/webdav/src/backend.rs:327,1
    - Dst: oio::OneShotDeleter::new
      Src: /src/opendal/core/services/webdav/src/backend.rs:327,1
    - Dst: WebdavDeleter::new
      Src: /src/opendal/core/services/webdav/src/backend.rs:327,1
    - Dst: clone
      Src: /src/opendal/core/services/webdav/src/backend.rs:328,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/webdav/src/backend.rs:329,1
    - Dst: Ok
      Src: /src/opendal/core/services/webdav/src/backend.rs:333,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - '&OperationContext'
    constantsTouched: []
    func_position:
      end: 334
      start: 325
    functionDepth: 2
    functionLinenumber: 325
    functionLinenumberEnd: 334
    functionName: WebdavBackend::delete
    functionSourceFile: /src/opendal/core/services/webdav/src/backend.rs
    functionUses: 0
    functionsReached:
    - oio::OneShotDeleter::new
    - Result::clone
    - Ok
    - clone
    - WebdavDeleter::new
    linkageType: ''
    returnType: Result
    signature: 'fn delete(&self, ctx: &OperationContext) -> Result<Self::Deleter>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/core/services/webdav/src/backend.rs:338,1
    - Dst: oio::PageLister::new
      Src: /src/opendal/core/services/webdav/src/backend.rs:338,1
    - Dst: WebdavLister::new
      Src: /src/opendal/core/services/webdav/src/backend.rs:338,1
    - Dst: clone
      Src: /src/opendal/core/services/webdav/src/backend.rs:339,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/webdav/src/backend.rs:340,1
    - Dst: Ok
      Src: /src/opendal/core/services/webdav/src/backend.rs:346,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpList
    constantsTouched: []
    func_position:
      end: 347
      start: 336
    functionDepth: 3
    functionLinenumber: 336
    functionLinenumberEnd: 347
    functionName: WebdavBackend::list
    functionSourceFile: /src/opendal/core/services/webdav/src/backend.rs
    functionUses: 0
    functionsReached:
    - Result::clone
    - WebdavLister::new
    - Ok
    - clone
    - oio::PageLister::new
    linkageType: ''
    returnType: Result
    signature: 'fn list(&self, ctx: &OperationContext, path: &str, args: OpList) ->
      Result<Self::Lister>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: clone
      Src: /src/opendal/core/services/webdav/src/backend.rs:357,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/webdav/src/backend.rs:358,1
    - Dst: Result::to_string
      Src: /src/opendal/core/services/webdav/src/backend.rs:359,1
    - Dst: Result::to_string
      Src: /src/opendal/core/services/webdav/src/backend.rs:360,1
    - Dst: Ok
      Src: /src/opendal/core/services/webdav/src/backend.rs:362,1
    - Dst: oio::OneShotCopier::new_with
      Src: /src/opendal/core/services/webdav/src/backend.rs:362,1
    - Dst: CompfsCore::clone
      Src: /src/opendal/core/services/webdav/src/backend.rs:363,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/webdav/src/backend.rs:364,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/webdav/src/backend.rs:365,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/webdav/src/backend.rs:366,1
    - Dst: CompfsCore::webdav_copy
      Src: /src/opendal/core/services/webdav/src/backend.rs:369,1
    - Dst: status
      Src: /src/opendal/core/services/webdav/src/backend.rs:370,1
    - Dst: Ok
      Src: /src/opendal/core/services/webdav/src/backend.rs:373,1
    - Dst: Metadata::default
      Src: /src/opendal/core/services/webdav/src/backend.rs:373,1
    - Dst: Err
      Src: /src/opendal/core/services/webdav/src/backend.rs:374,1
    - Dst: super::core::parse_error
      Src: /src/opendal/core/services/webdav/src/backend.rs:374,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 36
    argCount: 5
    argNames:
    - ctx
    - from
    - to
    - _args
    - _opts
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    - OpCopy
    - OpCopier
    constantsTouched: []
    func_position:
      end: 378
      start: 349
    functionDepth: 43
    functionLinenumber: 349
    functionLinenumberEnd: 378
    functionName: WebdavBackend::copy
    functionSourceFile: /src/opendal/core/services/webdav/src/backend.rs
    functionUses: 0
    functionsReached:
    - Result::clone
    - oio::OneShotCopier::new_with
    - CompfsCore::clone
    - Metadata::default
    - Result::to_string
    - Ok
    - status
    - clone
    - CompfsCore::webdav_copy
    - Err
    - super::core::parse_error
    linkageType: ''
    returnType: Result
    signature: 'fn copy(&self,ctx: &OperationContext,from: &str,to: &str,_args: OpCopy,_opts:
      OpCopier,) -> Result<Self::Copier>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: webdav_move
      Src: /src/opendal/core/services/webdav/src/backend.rs:387,1
    - Dst: status
      Src: /src/opendal/core/services/webdav/src/backend.rs:389,1
    - Dst: Ok
      Src: /src/opendal/core/services/webdav/src/backend.rs:392,1
    - Dst: RpRename::default
      Src: /src/opendal/core/services/webdav/src/backend.rs:392,1
    - Dst: Err
      Src: /src/opendal/core/services/webdav/src/backend.rs:394,1
    - Dst: super::core::parse_error
      Src: /src/opendal/core/services/webdav/src/backend.rs:394,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 4
    argNames:
    - ctx
    - from
    - to
    - _args
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    - OpRename
    constantsTouched: []
    func_position:
      end: 396
      start: 380
    functionDepth: 43
    functionLinenumber: 380
    functionLinenumberEnd: 396
    functionName: WebdavBackend::rename
    functionSourceFile: /src/opendal/core/services/webdav/src/backend.rs
    functionUses: 0
    functionsReached:
    - status
    - Ok
    - Err
    - webdav_move
    - RpRename::default
    - super::core::parse_error
    linkageType: ''
    returnType: Result
    signature: 'async fn rename(&self,ctx: &OperationContext,from: &str,to: &str,_args:
      OpRename,) -> Result<RpRename>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/core/services/webdav/src/backend.rs:404,1
    - Dst: Error::new
      Src: /src/opendal/core/services/webdav/src/backend.rs:404,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - _ctx
    - _path
    - _args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpPresign
    constantsTouched: []
    func_position:
      end: 408
      start: 398
    functionDepth: 36
    functionLinenumber: 398
    functionLinenumberEnd: 408
    functionName: WebdavBackend::presign
    functionSourceFile: /src/opendal/core/services/webdav/src/backend.rs
    functionUses: 0
    functionsReached:
    - Error::new
    - Err
    linkageType: ''
    returnType: Result
    signature: 'async fn presign(&self,_ctx: &OperationContext,_path: &str,_args:
      OpPresign,) -> Result<RpPresign>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::debug_struct
      Src: /src/opendal/core/services/vercel-blob/src/config.rs:40,1
    - Dst: field
      Src: /src/opendal/core/services/vercel-blob/src/config.rs:40,1
    - Dst: finish_non_exhaustive
      Src: /src/opendal/core/services/vercel-blob/src/config.rs:40,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - f
    argTypes:
    - '&mut std::fmt::Formatter<''_>'
    constantsTouched: []
    func_position:
      end: 43
      start: 39
    functionDepth: 5
    functionLinenumber: 39
    functionLinenumberEnd: 43
    functionName: VercelBlobConfig::fmt
    functionSourceFile: /src/opendal/core/services/vercel-blob/src/config.rs
    functionUses: 0
    functionsReached:
    - field
    - Result::debug_struct
    - finish_non_exhaustive
    linkageType: ''
    returnType: std::fmt::Result
    signature: 'fn fmt(&self, f: &mut std::fmt::Formatter<''_>) -> std::fmt::Result'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::options
      Src: /src/opendal/core/services/vercel-blob/src/config.rs:50,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/vercel-blob/src/config.rs:50,1
    - Dst: Result::root
      Src: /src/opendal/core/services/vercel-blob/src/config.rs:52,1
    - Dst: Result::is_empty
      Src: /src/opendal/core/services/vercel-blob/src/config.rs:53,1
    - Dst: Result::insert
      Src: /src/opendal/core/services/vercel-blob/src/config.rs:55,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/vercel-blob/src/config.rs:55,1
    - Dst: Result::to_string
      Src: /src/opendal/core/services/vercel-blob/src/config.rs:55,1
    - Dst: Self::from_iter
      Src: /src/opendal/core/services/vercel-blob/src/config.rs:58,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 19
    argCount: 1
    argNames:
    - uri
    argTypes:
    - '&opendal_core::OperatorUri'
    constantsTouched: []
    func_position:
      end: 59
      start: 49
    functionDepth: 35
    functionLinenumber: 49
    functionLinenumberEnd: 59
    functionName: VercelBlobConfig::from_uri
    functionSourceFile: /src/opendal/core/services/vercel-blob/src/config.rs
    functionUses: 0
    functionsReached:
    - Result::clone
    - Self::from_iter
    - Result::to_string
    - Result::insert
    - Result::is_empty
    - Result::root
    - '&str::to_string'
    - Result::options
    linkageType: ''
    returnType: opendal_core::Result
    signature: 'fn from_uri(uri: &opendal_core::OperatorUri) -> opendal_core::Result<Self>'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 63
      start: 61
    functionDepth: 0
    functionLinenumber: 61
    functionLinenumberEnd: 63
    functionName: VercelBlobConfig::into_builder
    functionSourceFile: /src/opendal/core/services/vercel-blob/src/config.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Self::Builder
    signature: fn into_builder(self) -> Self::Builder
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - core
    - ctx
    argTypes:
    - Arc<VercelBlobCore>
    - OperationContext
    constantsTouched: []
    func_position:
      end: 33
      start: 31
    functionDepth: 0
    functionLinenumber: 31
    functionLinenumberEnd: 33
    functionName: VercelBlobDeleter::new
    functionSourceFile: /src/opendal/core/services/vercel-blob/src/deleter.rs
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(core: Arc<VercelBlobCore>, ctx: OperationContext) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: vercel_delete_blob
      Src: /src/opendal/core/services/vercel-blob/src/deleter.rs:38,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - path
    argTypes:
    - String
    - OpDelete
    constantsTouched: []
    func_position:
      end: 39
      start: 37
    functionDepth: 40
    functionLinenumber: 37
    functionLinenumberEnd: 39
    functionName: VercelBlobDeleter::delete_once
    functionSourceFile: /src/opendal/core/services/vercel-blob/src/deleter.rs
    functionUses: 0
    functionsReached:
    - vercel_delete_blob
    linkageType: ''
    returnType: Result
    signature: 'async fn delete_once(&self, path: String, _: OpDelete) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: to_string
      Src: /src/opendal/core/services/vercel-blob/src/lister.rs:45,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 4
    argNames:
    - core
    - ctx
    - path
    - limit
    argTypes:
    - Arc<VercelBlobCore>
    - OperationContext
    - '&str'
    - Option<usize>
    constantsTouched: []
    func_position:
      end: 48
      start: 36
    functionDepth: 2
    functionLinenumber: 36
    functionLinenumberEnd: 48
    functionName: VercelBlobLister::new
    functionSourceFile: /src/opendal/core/services/vercel-blob/src/lister.rs
    functionUses: 1
    functionsReached:
    - to_string
    linkageType: ''
    returnType: Self
    signature: 'pub(super) fn new(core: Arc<VercelBlobCore>,ctx: OperationContext,path:
      &str,limit: Option<usize>,) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/vercel-blob/src/lister.rs:53,1
    - Dst: list
      Src: /src/opendal/core/services/vercel-blob/src/lister.rs:55,1
    - Dst: build_rel_path
      Src: /src/opendal/core/services/vercel-blob/src/lister.rs:64,1
    - Dst: super::core::parse_blob
      Src: /src/opendal/core/services/vercel-blob/src/lister.rs:70,1
    - Dst: push_back
      Src: /src/opendal/core/services/vercel-blob/src/lister.rs:72,1
    - Dst: Entry::new
      Src: /src/opendal/core/services/vercel-blob/src/lister.rs:72,1
    - Dst: Ok
      Src: /src/opendal/core/services/vercel-blob/src/lister.rs:75,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 52
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - '&mut oio::PageContext'
    constantsTouched: []
    func_position:
      end: 76
      start: 52
    functionDepth: 4
    functionLinenumber: 52
    functionLinenumberEnd: 76
    functionName: VercelBlobLister::next_page
    functionSourceFile: /src/opendal/core/services/vercel-blob/src/lister.rs
    functionUses: 0
    functionsReached:
    - Entry::new
    - Ok
    - push_back
    - build_rel_path
    - build_abs_path
    - list
    - super::core::parse_blob
    linkageType: ''
    returnType: Result
    signature: 'async fn next_page(&self, ctx: &mut oio::PageContext) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: to_string
      Src: /src/opendal/core/services/vercel-blob/src/reader.rs:43,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 4
    argNames:
    - backend
    - ctx
    - path
    - args
    argTypes:
    - VercelBlobBackend
    - OperationContext
    - '&str'
    - OpRead
    constantsTouched: []
    func_position:
      end: 46
      start: 34
    functionDepth: 2
    functionLinenumber: 34
    functionLinenumberEnd: 46
    functionName: VercelBlobReader::new
    functionSourceFile: /src/opendal/core/services/vercel-blob/src/reader.rs
    functionUses: 1
    functionsReached:
    - to_string
    linkageType: ''
    returnType: Self
    signature: 'pub(super) fn new(backend: VercelBlobBackend,ctx: OperationContext,path:
      &str,args: OpRead,) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: as_str
      Src: /src/opendal/core/services/vercel-blob/src/reader.rs:52,1
    - Dst: clone
      Src: /src/opendal/core/services/vercel-blob/src/reader.rs:53,1
    - Dst: download
      Src: /src/opendal/core/services/vercel-blob/src/reader.rs:54,1
    - Dst: status
      Src: /src/opendal/core/services/vercel-blob/src/reader.rs:56,1
    - Dst: RpRead::new
      Src: /src/opendal/core/services/vercel-blob/src/reader.rs:60,1
    - Dst: parse_into_metadata
      Src: /src/opendal/core/services/vercel-blob/src/reader.rs:60,1
    - Dst: headers
      Src: /src/opendal/core/services/vercel-blob/src/reader.rs:60,1
    - Dst: into_body
      Src: /src/opendal/core/services/vercel-blob/src/reader.rs:61,1
    - Dst: into_parts
      Src: /src/opendal/core/services/vercel-blob/src/reader.rs:64,1
    - Dst: to_buffer
      Src: /src/opendal/core/services/vercel-blob/src/reader.rs:65,1
    - Dst: Err
      Src: /src/opendal/core/services/vercel-blob/src/reader.rs:66,1
    - Dst: super::core::parse_error
      Src: /src/opendal/core/services/vercel-blob/src/reader.rs:66,1
    - Dst: Response::from_parts
      Src: /src/opendal/core/services/vercel-blob/src/reader.rs:66,1
    - Dst: Ok
      Src: /src/opendal/core/services/vercel-blob/src/reader.rs:70,1
    - Dst: Box::new
      Src: /src/opendal/core/services/vercel-blob/src/reader.rs:70,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 42
    argCount: 1
    argNames:
    - range
    argTypes:
    - BytesRange
    constantsTouched: []
    func_position:
      end: 71
      start: 50
    functionDepth: 38
    functionLinenumber: 50
    functionLinenumberEnd: 71
    functionName: VercelBlobReader::open
    functionSourceFile: /src/opendal/core/services/vercel-blob/src/reader.rs
    functionUses: 0
    functionsReached:
    - download
    - parse_into_metadata
    - to_buffer
    - status
    - Ok
    - Box::new
    - into_body
    - clone
    - Err
    - Response::from_parts
    - as_str
    - headers
    - into_parts
    - RpRead::new
    - super::core::parse_error
    linkageType: ''
    returnType: Result
    signature: 'async fn open(&self, range: BytesRange) -> Result<(RpRead, Box<dyn
      oio::ReadStreamDyn>)>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::debug_struct
      Src: /src/opendal/core/services/vercel-blob/src/core.rs:67,1
    - Dst: field
      Src: /src/opendal/core/services/vercel-blob/src/core.rs:67,1
    - Dst: finish_non_exhaustive
      Src: /src/opendal/core/services/vercel-blob/src/core.rs:67,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - f
    argTypes:
    - '&mut std::fmt::Formatter<''_>'
    constantsTouched: []
    func_position:
      end: 70
      start: 66
    functionDepth: 5
    functionLinenumber: 66
    functionLinenumberEnd: 70
    functionName: VercelBlobCore::fmt
    functionSourceFile: /src/opendal/core/services/vercel-blob/src/core.rs
    functionUses: 0
    functionsReached:
    - field
    - Result::debug_struct
    - finish_non_exhaustive
    linkageType: ''
    returnType: std::fmt::Result
    signature: 'fn fmt(&self, f: &mut std::fmt::Formatter<''_>) -> std::fmt::Result'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::http_transport
      Src: /src/opendal/core/services/vercel-blob/src/core.rs:80,1
    - Dst: Self::send
      Src: /src/opendal/core/services/vercel-blob/src/core.rs:80,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - ctx
    - req
    argTypes:
    - '&OperationContext'
    - Request<Buffer>
    constantsTouched: []
    func_position:
      end: 81
      start: 75
    functionDepth: 37
    functionLinenumber: 75
    functionLinenumberEnd: 81
    functionName: VercelBlobCore::send
    functionSourceFile: /src/opendal/core/services/vercel-blob/src/core.rs
    functionUses: 8
    functionsReached:
    - Result::http_transport
    - Self::send
    linkageType: ''
    returnType: Result
    signature: 'pub async fn send(&self,ctx: &OperationContext,req: Request<Buffer>,)
      -> Result<Response<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: request::Builder::header
      Src: /src/opendal/core/services/vercel-blob/src/core.rs:84,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - req
    argTypes:
    - request::Builder
    constantsTouched: []
    func_position:
      end: 85
      start: 83
    functionDepth: 0
    functionLinenumber: 83
    functionLinenumberEnd: 85
    functionName: VercelBlobCore::sign
    functionSourceFile: /src/opendal/core/services/vercel-blob/src/core.rs
    functionUses: 8
    functionsReached:
    - request::Builder::header
    linkageType: ''
    returnType: request::Builder
    signature: 'pub fn sign(&self, req: request::Builder) -> request::Builder'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/vercel-blob/src/core.rs:96,1
    - Dst: VercelBlobCore::list
      Src: /src/opendal/core/services/vercel-blob/src/core.rs:99,1
    - Dst: Some
      Src: /src/opendal/core/services/vercel-blob/src/core.rs:99,1
    - Dst: resolve_blob
      Src: /src/opendal/core/services/vercel-blob/src/core.rs:102,1
    - Dst: Result::is_empty
      Src: /src/opendal/core/services/vercel-blob/src/core.rs:104,1
    - Dst: Err
      Src: /src/opendal/core/services/vercel-blob/src/core.rs:105,1
    - Dst: Error::new
      Src: /src/opendal/core/services/vercel-blob/src/core.rs:105,1
    - Dst: Request::get
      Src: /src/opendal/core/services/vercel-blob/src/core.rs:108,1
    - Dst: (Vec::is_full
      Src: /src/opendal/core/services/vercel-blob/src/core.rs:110,1
    - Dst: Option::header
      Src: /src/opendal/core/services/vercel-blob/src/core.rs:111,1
    - Dst: (Vec::to_header
      Src: /src/opendal/core/services/vercel-blob/src/core.rs:111,1
    - Dst: Option::extension
      Src: /src/opendal/core/services/vercel-blob/src/core.rs:115,1
    - Dst: extension
      Src: /src/opendal/core/services/vercel-blob/src/core.rs:115,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/vercel-blob/src/core.rs:117,1
    - Dst: body
      Src: /src/opendal/core/services/vercel-blob/src/core.rs:115,1
    - Dst: Buffer::new
      Src: /src/opendal/core/services/vercel-blob/src/core.rs:118,1
    - Dst: map_err
      Src: /src/opendal/core/services/vercel-blob/src/core.rs:115,1
    - Dst: Result::http_transport
      Src: /src/opendal/core/services/vercel-blob/src/core.rs:121,1
    - Dst: Self::fetch
      Src: /src/opendal/core/services/vercel-blob/src/core.rs:121,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 47
    argCount: 4
    argNames:
    - ctx
    - path
    - range
    argTypes:
    - '&OperationContext'
    - '&str'
    - BytesRange
    - '&OpRead'
    constantsTouched: []
    func_position:
      end: 122
      start: 89
    functionDepth: 39
    functionLinenumber: 89
    functionLinenumberEnd: 122
    functionName: VercelBlobCore::download
    functionSourceFile: /src/opendal/core/services/vercel-blob/src/core.rs
    functionUses: 0
    functionsReached:
    - Buffer::new
    - Result::is_empty
    - VercelBlobCore::list
    - resolve_blob
    - map_err
    - extension
    - (Vec::is_full
    - ServiceOperation
    - Result::http_transport
    - build_abs_path
    - Some
    - Self::fetch
    - Option::header
    - Request::get
    - (Vec::to_header
    - body
    - Err
    - Error::new
    - Option::extension
    linkageType: ''
    returnType: Result
    signature: 'pub async fn download(&self,ctx: &OperationContext,path: &str,range:
      BytesRange,_: &OpRead,) -> Result<Response<HttpBody>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/vercel-blob/src/core.rs:132,1
    - Dst: Request::put
      Src: /src/opendal/core/services/vercel-blob/src/core.rs:139,1
    - Dst: DeleteInput::header
      Src: /src/opendal/core/services/vercel-blob/src/core.rs:141,1
    - Dst: DeleteInput::header
      Src: /src/opendal/core/services/vercel-blob/src/core.rs:143,1
    - Dst: Option::to_string
      Src: /src/opendal/core/services/vercel-blob/src/core.rs:143,1
    - Dst: OpStat::content_type
      Src: /src/opendal/core/services/vercel-blob/src/core.rs:145,1
    - Dst: DeleteInput::header
      Src: /src/opendal/core/services/vercel-blob/src/core.rs:146,1
    - Dst: VercelBlobCore::sign
      Src: /src/opendal/core/services/vercel-blob/src/core.rs:149,1
    - Dst: request::Builder::extension
      Src: /src/opendal/core/services/vercel-blob/src/core.rs:152,1
    - Dst: extension
      Src: /src/opendal/core/services/vercel-blob/src/core.rs:152,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/vercel-blob/src/core.rs:154,1
    - Dst: body
      Src: /src/opendal/core/services/vercel-blob/src/core.rs:152,1
    - Dst: map_err
      Src: /src/opendal/core/services/vercel-blob/src/core.rs:152,1
    - Dst: VercelBlobCore::send
      Src: /src/opendal/core/services/vercel-blob/src/core.rs:158,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 37
    argCount: 5
    argNames:
    - ctx
    - path
    - size
    - args
    - body
    argTypes:
    - '&OperationContext'
    - '&str'
    - u64
    - '&OpWrite'
    - Buffer
    constantsTouched: []
    func_position:
      end: 159
      start: 124
    functionDepth: 32
    functionLinenumber: 124
    functionLinenumberEnd: 159
    functionName: VercelBlobCore::upload
    functionSourceFile: /src/opendal/core/services/vercel-blob/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - extension
    - Option::to_string
    - Request::put
    - request::Builder::extension
    - VercelBlobCore::sign
    - body
    - build_abs_path
    - DeleteInput::header
    - ServiceOperation
    - VercelBlobCore::send
    - OpStat::content_type
    linkageType: ''
    returnType: Result
    signature: 'pub async fn upload(&self,ctx: &OperationContext,path: &str,size:
      u64,args: &OpWrite,body: Buffer,) -> Result<Response<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/vercel-blob/src/core.rs:162,1
    - Dst: VercelBlobCore::list
      Src: /src/opendal/core/services/vercel-blob/src/core.rs:164,1
    - Dst: Some
      Src: /src/opendal/core/services/vercel-blob/src/core.rs:164,1
    - Dst: resolve_blob
      Src: /src/opendal/core/services/vercel-blob/src/core.rs:166,1
    - Dst: Result::is_empty
      Src: /src/opendal/core/services/vercel-blob/src/core.rs:168,1
    - Dst: Err
      Src: /src/opendal/core/services/vercel-blob/src/core.rs:169,1
    - Dst: Error::new
      Src: /src/opendal/core/services/vercel-blob/src/core.rs:169,1
    - Dst: Request::get
      Src: /src/opendal/core/services/vercel-blob/src/core.rs:172,1
    - Dst: VercelBlobCore::sign
      Src: /src/opendal/core/services/vercel-blob/src/core.rs:177,1
    - Dst: request::Builder::extension
      Src: /src/opendal/core/services/vercel-blob/src/core.rs:180,1
    - Dst: extension
      Src: /src/opendal/core/services/vercel-blob/src/core.rs:180,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/vercel-blob/src/core.rs:182,1
    - Dst: body
      Src: /src/opendal/core/services/vercel-blob/src/core.rs:180,1
    - Dst: Buffer::new
      Src: /src/opendal/core/services/vercel-blob/src/core.rs:183,1
    - Dst: map_err
      Src: /src/opendal/core/services/vercel-blob/src/core.rs:180,1
    - Dst: VercelBlobCore::send
      Src: /src/opendal/core/services/vercel-blob/src/core.rs:186,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 36
    argCount: 2
    argNames:
    - ctx
    - path
    argTypes:
    - '&OperationContext'
    - '&str'
    constantsTouched: []
    func_position:
      end: 187
      start: 161
    functionDepth: 39
    functionLinenumber: 161
    functionLinenumberEnd: 187
    functionName: VercelBlobCore::head
    functionSourceFile: /src/opendal/core/services/vercel-blob/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - extension
    - Request::get
    - Buffer::new
    - request::Builder::extension
    - VercelBlobCore::sign
    - body
    - build_abs_path
    - Some
    - Err
    - Error::new
    - Result::is_empty
    - ServiceOperation
    - VercelBlobCore::list
    - resolve_blob
    - VercelBlobCore::send
    linkageType: ''
    returnType: Result
    signature: 'pub async fn head(&self, ctx: &OperationContext, path: &str) -> Result<Response<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/vercel-blob/src/core.rs:195,1
    - Dst: VercelBlobCore::list
      Src: /src/opendal/core/services/vercel-blob/src/core.rs:197,1
    - Dst: Some
      Src: /src/opendal/core/services/vercel-blob/src/core.rs:197,1
    - Dst: resolve_blob
      Src: /src/opendal/core/services/vercel-blob/src/core.rs:199,1
    - Dst: Result::is_empty
      Src: /src/opendal/core/services/vercel-blob/src/core.rs:201,1
    - Dst: Err
      Src: /src/opendal/core/services/vercel-blob/src/core.rs:202,1
    - Dst: Error::new
      Src: /src/opendal/core/services/vercel-blob/src/core.rs:202,1
    - Dst: build_abs_path
      Src: /src/opendal/core/services/vercel-blob/src/core.rs:205,1
    - Dst: Request::put
      Src: /src/opendal/core/services/vercel-blob/src/core.rs:213,1
    - Dst: VercelBlobCore::sign
      Src: /src/opendal/core/services/vercel-blob/src/core.rs:215,1
    - Dst: request::Builder::extension
      Src: /src/opendal/core/services/vercel-blob/src/core.rs:218,1
    - Dst: extension
      Src: /src/opendal/core/services/vercel-blob/src/core.rs:218,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/vercel-blob/src/core.rs:220,1
    - Dst: body
      Src: /src/opendal/core/services/vercel-blob/src/core.rs:218,1
    - Dst: Buffer::new
      Src: /src/opendal/core/services/vercel-blob/src/core.rs:221,1
    - Dst: map_err
      Src: /src/opendal/core/services/vercel-blob/src/core.rs:218,1
    - Dst: VercelBlobCore::send
      Src: /src/opendal/core/services/vercel-blob/src/core.rs:224,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 40
    argCount: 3
    argNames:
    - ctx
    - from
    - to
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    constantsTouched: []
    func_position:
      end: 225
      start: 189
    functionDepth: 39
    functionLinenumber: 189
    functionLinenumberEnd: 225
    functionName: VercelBlobCore::copy
    functionSourceFile: /src/opendal/core/services/vercel-blob/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - extension
    - Buffer::new
    - Request::put
    - request::Builder::extension
    - VercelBlobCore::sign
    - body
    - build_abs_path
    - Some
    - Err
    - Error::new
    - Result::is_empty
    - ServiceOperation
    - VercelBlobCore::list
    - resolve_blob
    - VercelBlobCore::send
    linkageType: ''
    returnType: Result
    signature: 'pub async fn copy(&self,ctx: &OperationContext,from: &str,to: &str,)
      -> Result<Response<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::push_str
      Src: /src/opendal/core/services/vercel-blob/src/core.rs:241,1
    - Dst: Request::get
      Src: /src/opendal/core/services/vercel-blob/src/core.rs:244,1
    - Dst: VercelBlobCore::sign
      Src: /src/opendal/core/services/vercel-blob/src/core.rs:246,1
    - Dst: request::Builder::extension
      Src: /src/opendal/core/services/vercel-blob/src/core.rs:249,1
    - Dst: extension
      Src: /src/opendal/core/services/vercel-blob/src/core.rs:249,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/vercel-blob/src/core.rs:251,1
    - Dst: body
      Src: /src/opendal/core/services/vercel-blob/src/core.rs:249,1
    - Dst: Buffer::new
      Src: /src/opendal/core/services/vercel-blob/src/core.rs:252,1
    - Dst: map_err
      Src: /src/opendal/core/services/vercel-blob/src/core.rs:249,1
    - Dst: VercelBlobCore::send
      Src: /src/opendal/core/services/vercel-blob/src/core.rs:255,1
    - Dst: status
      Src: /src/opendal/core/services/vercel-blob/src/core.rs:257,1
    - Dst: Err
      Src: /src/opendal/core/services/vercel-blob/src/core.rs:260,1
    - Dst: parse_error
      Src: /src/opendal/core/services/vercel-blob/src/core.rs:260,1
    - Dst: into_body
      Src: /src/opendal/core/services/vercel-blob/src/core.rs:263,1
    - Dst: serde_json::from_reader
      Src: /src/opendal/core/services/vercel-blob/src/core.rs:266,1
    - Dst: reader
      Src: /src/opendal/core/services/vercel-blob/src/core.rs:266,1
    - Dst: map_err
      Src: /src/opendal/core/services/vercel-blob/src/core.rs:266,1
    - Dst: Ok
      Src: /src/opendal/core/services/vercel-blob/src/core.rs:268,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 44
    argCount: 3
    argNames:
    - ctx
    - prefix
    - limit
    argTypes:
    - '&OperationContext'
    - '&str'
    - Option<usize>
    constantsTouched: []
    func_position:
      end: 269
      start: 227
    functionDepth: 38
    functionLinenumber: 227
    functionLinenumberEnd: 269
    functionName: VercelBlobCore::list
    functionSourceFile: /src/opendal/core/services/vercel-blob/src/core.rs
    functionUses: 4
    functionsReached:
    - map_err
    - extension
    - Request::get
    - Result::push_str
    - request::Builder::extension
    - Buffer::new
    - status
    - VercelBlobCore::sign
    - reader
    - Ok
    - serde_json::from_reader
    - body
    - parse_error
    - into_body
    - Err
    - ServiceOperation
    - VercelBlobCore::send
    linkageType: ''
    returnType: Result
    signature: 'pub async fn list(&self,ctx: &OperationContext,prefix: &str,limit:
      Option<usize>,) -> Result<ListResponse>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/vercel-blob/src/core.rs:272,1
    - Dst: VercelBlobCore::list
      Src: /src/opendal/core/services/vercel-blob/src/core.rs:274,1
    - Dst: Some
      Src: /src/opendal/core/services/vercel-blob/src/core.rs:274,1
    - Dst: resolve_blob
      Src: /src/opendal/core/services/vercel-blob/src/core.rs:276,1
    - Dst: Result::is_empty
      Src: /src/opendal/core/services/vercel-blob/src/core.rs:278,1
    - Dst: Ok
      Src: /src/opendal/core/services/vercel-blob/src/core.rs:279,1
    - Dst: Request::post
      Src: /src/opendal/core/services/vercel-blob/src/core.rs:282,1
    - Dst: VercelBlobCore::sign
      Src: /src/opendal/core/services/vercel-blob/src/core.rs:284,1
    - Dst: request::Builder::extension
      Src: /src/opendal/core/services/vercel-blob/src/core.rs:291,1
    - Dst: extension
      Src: /src/opendal/core/services/vercel-blob/src/core.rs:291,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/vercel-blob/src/core.rs:293,1
    - Dst: http::header
      Src: /src/opendal/core/services/vercel-blob/src/core.rs:291,1
    - Dst: body
      Src: /src/opendal/core/services/vercel-blob/src/core.rs:291,1
    - Dst: Buffer::from
      Src: /src/opendal/core/services/vercel-blob/src/core.rs:295,1
    - Dst: Bytes::from
      Src: /src/opendal/core/services/vercel-blob/src/core.rs:295,1
    - Dst: to_string
      Src: /src/opendal/core/services/vercel-blob/src/core.rs:295,1
    - Dst: map_err
      Src: /src/opendal/core/services/vercel-blob/src/core.rs:291,1
    - Dst: VercelBlobCore::send
      Src: /src/opendal/core/services/vercel-blob/src/core.rs:298,1
    - Dst: status
      Src: /src/opendal/core/services/vercel-blob/src/core.rs:300,1
    - Dst: Ok
      Src: /src/opendal/core/services/vercel-blob/src/core.rs:303,1
    - Dst: Err
      Src: /src/opendal/core/services/vercel-blob/src/core.rs:304,1
    - Dst: parse_error
      Src: /src/opendal/core/services/vercel-blob/src/core.rs:304,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 51
    argCount: 2
    argNames:
    - ctx
    - path
    argTypes:
    - '&OperationContext'
    - '&str'
    constantsTouched: []
    func_position:
      end: 306
      start: 271
    functionDepth: 39
    functionLinenumber: 271
    functionLinenumberEnd: 306
    functionName: VercelBlobCore::vercel_delete_blob
    functionSourceFile: /src/opendal/core/services/vercel-blob/src/core.rs
    functionUses: 0
    functionsReached:
    - status
    - Result::is_empty
    - VercelBlobCore::list
    - resolve_blob
    - map_err
    - extension
    - Ok
    - ServiceOperation
    - Buffer::from
    - request::Builder::extension
    - http::header
    - parse_error
    - build_abs_path
    - Some
    - Bytes::from
    - VercelBlobCore::send
    - to_string
    - VercelBlobCore::sign
    - Request::post
    - body
    - Err
    linkageType: ''
    returnType: Result
    signature: 'pub async fn vercel_delete_blob(&self, ctx: &OperationContext, path:
      &str) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/vercel-blob/src/core.rs:314,1
    - Dst: Request::post
      Src: /src/opendal/core/services/vercel-blob/src/core.rs:321,1
    - Dst: VercelBlobCore::sign
      Src: /src/opendal/core/services/vercel-blob/src/core.rs:323,1
    - Dst: request::Builder::header
      Src: /src/opendal/core/services/vercel-blob/src/core.rs:325,1
    - Dst: request::Builder::header
      Src: /src/opendal/core/services/vercel-blob/src/core.rs:326,1
    - Dst: OpStat::content_type
      Src: /src/opendal/core/services/vercel-blob/src/core.rs:328,1
    - Dst: request::Builder::header
      Src: /src/opendal/core/services/vercel-blob/src/core.rs:329,1
    - Dst: request::Builder::extension
      Src: /src/opendal/core/services/vercel-blob/src/core.rs:333,1
    - Dst: extension
      Src: /src/opendal/core/services/vercel-blob/src/core.rs:333,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/vercel-blob/src/core.rs:335,1
    - Dst: body
      Src: /src/opendal/core/services/vercel-blob/src/core.rs:333,1
    - Dst: Buffer::new
      Src: /src/opendal/core/services/vercel-blob/src/core.rs:336,1
    - Dst: map_err
      Src: /src/opendal/core/services/vercel-blob/src/core.rs:333,1
    - Dst: VercelBlobCore::send
      Src: /src/opendal/core/services/vercel-blob/src/core.rs:339,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 37
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&OpWrite'
    constantsTouched: []
    func_position:
      end: 340
      start: 308
    functionDepth: 32
    functionLinenumber: 308
    functionLinenumberEnd: 340
    functionName: VercelBlobCore::initiate_multipart_upload
    functionSourceFile: /src/opendal/core/services/vercel-blob/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - extension
    - Buffer::new
    - request::Builder::extension
    - VercelBlobCore::sign
    - Request::post
    - body
    - request::Builder::header
    - build_abs_path
    - ServiceOperation
    - VercelBlobCore::send
    - OpStat::content_type
    linkageType: ''
    returnType: Result
    signature: 'pub async fn initiate_multipart_upload(&self,ctx: &OperationContext,path:
      &str,args: &OpWrite,) -> Result<Response<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/vercel-blob/src/core.rs:351,1
    - Dst: Request::post
      Src: /src/opendal/core/services/vercel-blob/src/core.rs:358,1
    - Dst: http::header
      Src: /src/opendal/core/services/vercel-blob/src/core.rs:360,1
    - Dst: http::header
      Src: /src/opendal/core/services/vercel-blob/src/core.rs:361,1
    - Dst: http::header
      Src: /src/opendal/core/services/vercel-blob/src/core.rs:362,1
    - Dst: http::header
      Src: /src/opendal/core/services/vercel-blob/src/core.rs:363,1
    - Dst: http::header
      Src: /src/opendal/core/services/vercel-blob/src/core.rs:364,1
    - Dst: VercelBlobCore::sign
      Src: /src/opendal/core/services/vercel-blob/src/core.rs:366,1
    - Dst: request::Builder::extension
      Src: /src/opendal/core/services/vercel-blob/src/core.rs:369,1
    - Dst: extension
      Src: /src/opendal/core/services/vercel-blob/src/core.rs:369,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/vercel-blob/src/core.rs:371,1
    - Dst: body
      Src: /src/opendal/core/services/vercel-blob/src/core.rs:369,1
    - Dst: map_err
      Src: /src/opendal/core/services/vercel-blob/src/core.rs:369,1
    - Dst: VercelBlobCore::send
      Src: /src/opendal/core/services/vercel-blob/src/core.rs:375,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 40
    argCount: 6
    argNames:
    - ctx
    - path
    - upload_id
    - part_number
    - size
    - body
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    - usize
    - u64
    - Buffer
    constantsTouched: []
    func_position:
      end: 376
      start: 342
    functionDepth: 38
    functionLinenumber: 342
    functionLinenumberEnd: 376
    functionName: VercelBlobCore::upload_part
    functionSourceFile: /src/opendal/core/services/vercel-blob/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - extension
    - request::Builder::extension
    - VercelBlobCore::sign
    - http::header
    - Request::post
    - body
    - build_abs_path
    - ServiceOperation
    - VercelBlobCore::send
    linkageType: ''
    returnType: Result
    signature: 'pub async fn upload_part(&self,ctx: &OperationContext,path: &str,upload_id:
      &str,part_number: usize,size: u64,body: Buffer,) -> Result<Response<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/vercel-blob/src/core.rs:385,1
    - Dst: Request::post
      Src: /src/opendal/core/services/vercel-blob/src/core.rs:392,1
    - Dst: http::header
      Src: /src/opendal/core/services/vercel-blob/src/core.rs:394,1
    - Dst: http::header
      Src: /src/opendal/core/services/vercel-blob/src/core.rs:395,1
    - Dst: http::header
      Src: /src/opendal/core/services/vercel-blob/src/core.rs:396,1
    - Dst: VercelBlobCore::sign
      Src: /src/opendal/core/services/vercel-blob/src/core.rs:398,1
    - Dst: request::Builder::header
      Src: /src/opendal/core/services/vercel-blob/src/core.rs:402,1
    - Dst: String::extension
      Src: /src/opendal/core/services/vercel-blob/src/core.rs:402,1
    - Dst: extension
      Src: /src/opendal/core/services/vercel-blob/src/core.rs:402,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/vercel-blob/src/core.rs:405,1
    - Dst: body
      Src: /src/opendal/core/services/vercel-blob/src/core.rs:402,1
    - Dst: Buffer::from
      Src: /src/opendal/core/services/vercel-blob/src/core.rs:406,1
    - Dst: Bytes::from
      Src: /src/opendal/core/services/vercel-blob/src/core.rs:406,1
    - Dst: to_string
      Src: /src/opendal/core/services/vercel-blob/src/core.rs:406,1
    - Dst: map_err
      Src: /src/opendal/core/services/vercel-blob/src/core.rs:402,1
    - Dst: VercelBlobCore::send
      Src: /src/opendal/core/services/vercel-blob/src/core.rs:409,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 38
    argCount: 4
    argNames:
    - ctx
    - path
    - upload_id
    - parts
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    - Vec<Part>
    constantsTouched: []
    func_position:
      end: 410
      start: 378
    functionDepth: 40
    functionLinenumber: 378
    functionLinenumberEnd: 410
    functionName: VercelBlobCore::complete_multipart_upload
    functionSourceFile: /src/opendal/core/services/vercel-blob/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - extension
    - to_string
    - VercelBlobCore::sign
    - http::header
    - Request::post
    - body
    - request::Builder::header
    - build_abs_path
    - Bytes::from
    - ServiceOperation
    - String::extension
    - VercelBlobCore::send
    - Buffer::from
    linkageType: ''
    returnType: Result
    signature: 'pub async fn complete_multipart_upload(&self,ctx: &OperationContext,path:
      &str,upload_id: &str,parts: Vec<Part>,) -> Result<Response<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: ends_with
      Src: /src/opendal/core/services/vercel-blob/src/core.rs:414,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/vercel-blob/src/core.rs:419,1
    - Dst: clone
      Src: /src/opendal/core/services/vercel-blob/src/core.rs:420,1
    - Dst: storage::Result::set_content_type
      Src: /src/opendal/core/services/vercel-blob/src/core.rs:421,1
    - Dst: storage::Result::set_content_length
      Src: /src/opendal/core/services/vercel-blob/src/core.rs:423,1
    - Dst: storage::Result::set_last_modified
      Src: /src/opendal/core/services/vercel-blob/src/core.rs:424,1
    - Dst: uploaded_at.parse::<Timestamp>
      Src: /src/opendal/core/services/vercel-blob/src/core.rs:424,1
    - Dst: storage::Result::set_content_disposition
      Src: /src/opendal/core/services/vercel-blob/src/core.rs:425,1
    - Dst: Ok
      Src: /src/opendal/core/services/vercel-blob/src/core.rs:426,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 31
    argCount: 1
    argNames:
    - blob
    argTypes:
    - '&Blob'
    constantsTouched: []
    func_position:
      end: 427
      start: 413
    functionDepth: 2
    functionLinenumber: 413
    functionLinenumberEnd: 427
    functionName: parse_blob
    functionSourceFile: /src/opendal/core/services/vercel-blob/src/core.rs
    functionUses: 2
    functionsReached:
    - uploaded_at.parse::<Timestamp>
    - Metadata::new
    - Ok
    - storage::Result::set_last_modified
    - storage::Result::set_content_type
    - ends_with
    - clone
    - storage::Result::set_content_length
    - storage::Result::set_content_disposition
    linkageType: ''
    returnType: Result
    signature: 'pub fn parse_blob(blob: &Blob) -> Result<Metadata>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/vercel-blob/src/core.rs:435,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 2
    argNames:
    - blobs
    - path
    argTypes:
    - Vec<Blob>
    - String
    constantsTouched: []
    func_position:
      end: 436
      start: 429
    functionDepth: 2
    functionLinenumber: 429
    functionLinenumberEnd: 436
    functionName: resolve_blob
    functionSourceFile: /src/opendal/core/services/vercel-blob/src/core.rs
    functionUses: 4
    functionsReached:
    - '&str::to_string'
    linkageType: ''
    returnType: String
    signature: 'fn resolve_blob(blobs: Vec<Blob>, path: String) -> String'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 4
    argNames:
    - core
    - ctx
    - op
    - path
    argTypes:
    - Arc<VercelBlobCore>
    - OperationContext
    - OpWrite
    - String
    constantsTouched: []
    func_position:
      end: 53
      start: 41
    functionDepth: 0
    functionLinenumber: 41
    functionLinenumberEnd: 53
    functionName: VercelBlobWriter::new
    functionSourceFile: /src/opendal/core/services/vercel-blob/src/writer.rs
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(core: Arc<VercelBlobCore>,ctx: OperationContext,op: OpWrite,path:
      String,) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: upload
      Src: /src/opendal/core/services/vercel-blob/src/writer.rs:58,1
    - Dst: status
      Src: /src/opendal/core/services/vercel-blob/src/writer.rs:63,1
    - Dst: Ok
      Src: /src/opendal/core/services/vercel-blob/src/writer.rs:66,1
    - Dst: Metadata::default
      Src: /src/opendal/core/services/vercel-blob/src/writer.rs:66,1
    - Dst: Err
      Src: /src/opendal/core/services/vercel-blob/src/writer.rs:67,1
    - Dst: super::core::parse_error
      Src: /src/opendal/core/services/vercel-blob/src/writer.rs:67,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 19
    argCount: 2
    argNames:
    - size
    - body
    argTypes:
    - u64
    - Buffer
    constantsTouched: []
    func_position:
      end: 69
      start: 57
    functionDepth: 37
    functionLinenumber: 57
    functionLinenumberEnd: 69
    functionName: VercelBlobWriter::write_once
    functionSourceFile: /src/opendal/core/services/vercel-blob/src/writer.rs
    functionUses: 0
    functionsReached:
    - Metadata::default
    - status
    - Ok
    - Err
    - super::core::parse_error
    - upload
    linkageType: ''
    returnType: Result
    signature: 'async fn write_once(&self, size: u64, body: Buffer) -> Result<Metadata>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: initiate_multipart_upload
      Src: /src/opendal/core/services/vercel-blob/src/writer.rs:72,1
    - Dst: status
      Src: /src/opendal/core/services/vercel-blob/src/writer.rs:77,1
    - Dst: into_body
      Src: /src/opendal/core/services/vercel-blob/src/writer.rs:81,1
    - Dst: serde_json::from_reader
      Src: /src/opendal/core/services/vercel-blob/src/writer.rs:84,1
    - Dst: Result::reader
      Src: /src/opendal/core/services/vercel-blob/src/writer.rs:84,1
    - Dst: map_err
      Src: /src/opendal/core/services/vercel-blob/src/writer.rs:84,1
    - Dst: Ok
      Src: /src/opendal/core/services/vercel-blob/src/writer.rs:86,1
    - Dst: Err
      Src: /src/opendal/core/services/vercel-blob/src/writer.rs:88,1
    - Dst: super::core::parse_error
      Src: /src/opendal/core/services/vercel-blob/src/writer.rs:88,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 27
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 90
      start: 71
    functionDepth: 33
    functionLinenumber: 71
    functionLinenumberEnd: 90
    functionName: VercelBlobWriter::initiate_part
    functionSourceFile: /src/opendal/core/services/vercel-blob/src/writer.rs
    functionUses: 0
    functionsReached:
    - map_err
    - status
    - Ok
    - serde_json::from_reader
    - into_body
    - initiate_multipart_upload
    - Err
    - Result::reader
    - super::core::parse_error
    linkageType: ''
    returnType: Result
    signature: async fn initiate_part(&self) -> Result<String>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: upload_part
      Src: /src/opendal/core/services/vercel-blob/src/writer.rs:101,1
    - Dst: status
      Src: /src/opendal/core/services/vercel-blob/src/writer.rs:106,1
    - Dst: into_body
      Src: /src/opendal/core/services/vercel-blob/src/writer.rs:110,1
    - Dst: serde_json::from_reader
      Src: /src/opendal/core/services/vercel-blob/src/writer.rs:113,1
    - Dst: Result::reader
      Src: /src/opendal/core/services/vercel-blob/src/writer.rs:113,1
    - Dst: map_err
      Src: /src/opendal/core/services/vercel-blob/src/writer.rs:113,1
    - Dst: Ok
      Src: /src/opendal/core/services/vercel-blob/src/writer.rs:115,1
    - Dst: Err
      Src: /src/opendal/core/services/vercel-blob/src/writer.rs:122,1
    - Dst: super::core::parse_error
      Src: /src/opendal/core/services/vercel-blob/src/writer.rs:122,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 27
    argCount: 4
    argNames:
    - upload_id
    - part_number
    - size
    - body
    argTypes:
    - '&str'
    - usize
    - u64
    - Buffer
    constantsTouched: []
    func_position:
      end: 124
      start: 92
    functionDepth: 36
    functionLinenumber: 92
    functionLinenumberEnd: 124
    functionName: VercelBlobWriter::write_part
    functionSourceFile: /src/opendal/core/services/vercel-blob/src/writer.rs
    functionUses: 0
    functionsReached:
    - map_err
    - status
    - Ok
    - serde_json::from_reader
    - into_body
    - Err
    - upload_part
    - Result::reader
    - super::core::parse_error
    linkageType: ''
    returnType: Result
    signature: 'async fn write_part(&self,upload_id: &str,part_number: usize,size:
      u64,body: Buffer,) -> Result<oio::MultipartPart>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: (String, Metadata)::iter
      Src: /src/opendal/core/services/vercel-blob/src/writer.rs:131,1
    - Dst: map
      Src: /src/opendal/core/services/vercel-blob/src/writer.rs:131,1
    - Dst: clone
      Src: /src/opendal/core/services/vercel-blob/src/writer.rs:135,1
    - Dst: "iter()\n            .map(|p| Part {\n                part_number: p.part_number,\n\
        \                etag: p.etag.clone(),\n            })\n            .collect::<Vec<Part>>"
      Src: /src/opendal/core/services/vercel-blob/src/writer.rs:131,1
    - Dst: complete_multipart_upload
      Src: /src/opendal/core/services/vercel-blob/src/writer.rs:139,1
    - Dst: status
      Src: /src/opendal/core/services/vercel-blob/src/writer.rs:144,1
    - Dst: Ok
      Src: /src/opendal/core/services/vercel-blob/src/writer.rs:147,1
    - Dst: Metadata::default
      Src: /src/opendal/core/services/vercel-blob/src/writer.rs:147,1
    - Dst: Err
      Src: /src/opendal/core/services/vercel-blob/src/writer.rs:148,1
    - Dst: super::core::parse_error
      Src: /src/opendal/core/services/vercel-blob/src/writer.rs:148,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 29
    argCount: 2
    argNames:
    - upload_id
    - parts
    argTypes:
    - '&str'
    - '&[oio::MultipartPart]'
    constantsTouched: []
    func_position:
      end: 150
      start: 126
    functionDepth: 33
    functionLinenumber: 126
    functionLinenumberEnd: 150
    functionName: VercelBlobWriter::complete_part
    functionSourceFile: /src/opendal/core/services/vercel-blob/src/writer.rs
    functionUses: 0
    functionsReached:
    - Metadata::default
    - "iter()\n            .map(|p| Part {\n                part_number: p.part_number,\n\
      \                etag: p.etag.clone(),\n            })\n            .collect::<Vec<Part>>"
    - status
    - Ok
    - clone
    - Err
    - map
    - (String, Metadata)::iter
    - complete_multipart_upload
    - super::core::parse_error
    linkageType: ''
    returnType: Result
    signature: 'async fn complete_part(&self,upload_id: &str,parts: &[oio::MultipartPart],)
      -> Result<Metadata>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/core/services/vercel-blob/src/writer.rs:153,1
    - Dst: Error::new
      Src: /src/opendal/core/services/vercel-blob/src/writer.rs:153,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - _upload_id
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 157
      start: 152
    functionDepth: 36
    functionLinenumber: 152
    functionLinenumberEnd: 157
    functionName: VercelBlobWriter::abort_part
    functionSourceFile: /src/opendal/core/services/vercel-blob/src/writer.rs
    functionUses: 0
    functionsReached:
    - Error::new
    - Err
    linkageType: ''
    returnType: Result
    signature: 'async fn abort_part(&self, _upload_id: &str) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: register::<VercelBlob>
      Src: /src/opendal/core/services/vercel-blob/src/lib.rs:23,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - registry
    argTypes:
    - '&opendal_core::OperatorRegistry'
    constantsTouched: []
    func_position:
      end: 24
      start: 22
    functionDepth: 0
    functionLinenumber: 22
    functionLinenumberEnd: 24
    functionName: register_vercel_blob_service
    functionSourceFile: /src/opendal/core/services/vercel-blob/src/lib.rs
    functionUses: 1
    functionsReached:
    - register::<VercelBlob>
    linkageType: ''
    returnType: void
    signature: 'pub fn register_vercel_blob_service(registry: &opendal_core::OperatorRegistry)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::debug_struct
      Src: /src/opendal/core/services/vercel-blob/src/backend.rs:48,1
    - Dst: field
      Src: /src/opendal/core/services/vercel-blob/src/backend.rs:48,1
    - Dst: finish_non_exhaustive
      Src: /src/opendal/core/services/vercel-blob/src/backend.rs:48,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - f
    argTypes:
    - '&mut std::fmt::Formatter<''_>'
    constantsTouched: []
    func_position:
      end: 51
      start: 47
    functionDepth: 5
    functionLinenumber: 47
    functionLinenumberEnd: 51
    functionName: VercelBlobBuilder::fmt
    functionSourceFile: /src/opendal/core/services/vercel-blob/src/backend.rs
    functionUses: 0
    functionsReached:
    - field
    - Result::debug_struct
    - finish_non_exhaustive
    linkageType: ''
    returnType: std::fmt::Result
    signature: 'fn fmt(&self, f: &mut std::fmt::Formatter<''_>) -> std::fmt::Result'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::is_empty
      Src: /src/opendal/core/services/vercel-blob/src/backend.rs:59,1
    - Dst: Some
      Src: /src/opendal/core/services/vercel-blob/src/backend.rs:62,1
    - Dst: Result::to_string
      Src: /src/opendal/core/services/vercel-blob/src/backend.rs:62,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - root
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 66
      start: 58
    functionDepth: 4
    functionLinenumber: 58
    functionLinenumberEnd: 66
    functionName: VercelBlobBuilder::root
    functionSourceFile: /src/opendal/core/services/vercel-blob/src/backend.rs
    functionUses: 0
    functionsReached:
    - Result::is_empty
    - Result::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn root(mut self, root: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self::is_empty
      Src: /src/opendal/core/services/vercel-blob/src/backend.rs:73,1
    - Dst: Some
      Src: /src/opendal/core/services/vercel-blob/src/backend.rs:74,1
    - Dst: Self::to_string
      Src: /src/opendal/core/services/vercel-blob/src/backend.rs:74,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 1
    argNames:
    - token
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 77
      start: 72
    functionDepth: 4
    functionLinenumber: 72
    functionLinenumberEnd: 77
    functionName: VercelBlobBuilder::token
    functionSourceFile: /src/opendal/core/services/vercel-blob/src/backend.rs
    functionUses: 0
    functionsReached:
    - Self::is_empty
    - Self::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn token(mut self, token: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: normalize_root
      Src: /src/opendal/core/services/vercel-blob/src/backend.rs:87,1
    - Dst: clone
      Src: /src/opendal/core/services/vercel-blob/src/backend.rs:87,1
    - Dst: unwrap_or_default
      Src: /src/opendal/core/services/vercel-blob/src/backend.rs:87,1
    - Dst: clone
      Src: /src/opendal/core/services/vercel-blob/src/backend.rs:91,1
    - Dst: Err
      Src: /src/opendal/core/services/vercel-blob/src/backend.rs:92,1
    - Dst: Error::new
      Src: /src/opendal/core/services/vercel-blob/src/backend.rs:92,1
    - Dst: Self::with_operation
      Src: /src/opendal/core/services/vercel-blob/src/backend.rs:92,1
    - Dst: Self::with_context
      Src: /src/opendal/core/services/vercel-blob/src/backend.rs:92,1
    - Dst: Ok
      Src: /src/opendal/core/services/vercel-blob/src/backend.rs:97,1
    - Dst: Arc::new
      Src: /src/opendal/core/services/vercel-blob/src/backend.rs:98,1
    - Dst: ServiceInfo::new
      Src: /src/opendal/core/services/vercel-blob/src/backend.rs:99,1
    - Dst: Some
      Src: /src/opendal/core/services/vercel-blob/src/backend.rs:109,1
    - Dst: Default::default
      Src: /src/opendal/core/services/vercel-blob/src/backend.rs:120,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 33
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 126
      start: 84
    functionDepth: 34
    functionLinenumber: 84
    functionLinenumberEnd: 126
    functionName: VercelBlobBuilder::build
    functionSourceFile: /src/opendal/core/services/vercel-blob/src/backend.rs
    functionUses: 0
    functionsReached:
    - ServiceInfo::new
    - Ok
    - Arc::new
    - Default::default
    - clone
    - normalize_root
    - Error::new
    - Err
    - Some
    - Self::with_operation
    - Self::with_context
    - unwrap_or_default
    linkageType: ''
    returnType: Result
    signature: fn build(self) -> Result<impl Service>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: clone
      Src: /src/opendal/core/services/vercel-blob/src/backend.rs:143,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 144
      start: 142
    functionDepth: 2
    functionLinenumber: 142
    functionLinenumberEnd: 144
    functionName: VercelBlobBackend::info
    functionSourceFile: /src/opendal/core/services/vercel-blob/src/backend.rs
    functionUses: 0
    functionsReached:
    - clone
    linkageType: ''
    returnType: ServiceInfo
    signature: fn info(&self) -> ServiceInfo
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 148
      start: 146
    functionDepth: 0
    functionLinenumber: 146
    functionLinenumberEnd: 148
    functionName: VercelBlobBackend::capability
    functionSourceFile: /src/opendal/core/services/vercel-blob/src/backend.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Capability
    signature: fn capability(&self) -> Capability
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/core/services/vercel-blob/src/backend.rs:156,1
    - Dst: Error::new
      Src: /src/opendal/core/services/vercel-blob/src/backend.rs:156,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - _ctx
    - _path
    - _args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpCreateDir
    constantsTouched: []
    func_position:
      end: 160
      start: 150
    functionDepth: 36
    functionLinenumber: 150
    functionLinenumberEnd: 160
    functionName: VercelBlobBackend::create_dir
    functionSourceFile: /src/opendal/core/services/vercel-blob/src/backend.rs
    functionUses: 0
    functionsReached:
    - Error::new
    - Err
    linkageType: ''
    returnType: Result
    signature: 'async fn create_dir(&self,_ctx: &OperationContext,_path: &str,_args:
      OpCreateDir,) -> Result<RpCreateDir>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: head
      Src: /src/opendal/core/services/vercel-blob/src/backend.rs:163,1
    - Dst: status
      Src: /src/opendal/core/services/vercel-blob/src/backend.rs:165,1
    - Dst: into_body
      Src: /src/opendal/core/services/vercel-blob/src/backend.rs:169,1
    - Dst: serde_json::from_reader
      Src: /src/opendal/core/services/vercel-blob/src/backend.rs:172,1
    - Dst: Result::reader
      Src: /src/opendal/core/services/vercel-blob/src/backend.rs:172,1
    - Dst: map_err
      Src: /src/opendal/core/services/vercel-blob/src/backend.rs:172,1
    - Dst: super::core::parse_blob
      Src: /src/opendal/core/services/vercel-blob/src/backend.rs:174,1
    - Dst: Result::map
      Src: /src/opendal/core/services/vercel-blob/src/backend.rs:174,1
    - Dst: Err
      Src: /src/opendal/core/services/vercel-blob/src/backend.rs:176,1
    - Dst: super::core::parse_error
      Src: /src/opendal/core/services/vercel-blob/src/backend.rs:176,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 23
    argCount: 3
    argNames:
    - ctx
    - path
    - _args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpStat
    constantsTouched: []
    func_position:
      end: 178
      start: 162
    functionDepth: 38
    functionLinenumber: 162
    functionLinenumberEnd: 178
    functionName: VercelBlobBackend::stat
    functionSourceFile: /src/opendal/core/services/vercel-blob/src/backend.rs
    functionUses: 0
    functionsReached:
    - map_err
    - Result::map
    - status
    - head
    - serde_json::from_reader
    - into_body
    - Err
    - Result::reader
    - super::core::parse_blob
    - super::core::parse_error
    linkageType: ''
    returnType: Result
    signature: 'async fn stat(&self, ctx: &OperationContext, path: &str, _args: OpStat)
      -> Result<RpStat>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/core/services/vercel-blob/src/backend.rs:181,1
    - Dst: oio::StreamReader::new
      Src: /src/opendal/core/services/vercel-blob/src/backend.rs:181,1
    - Dst: VercelBlobReader::new
      Src: /src/opendal/core/services/vercel-blob/src/backend.rs:181,1
    - Dst: VercelBlobBackend::clone
      Src: /src/opendal/core/services/vercel-blob/src/backend.rs:182,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/vercel-blob/src/backend.rs:183,1
    - Dst: Ok
      Src: /src/opendal/core/services/vercel-blob/src/backend.rs:189,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpRead
    constantsTouched: []
    func_position:
      end: 190
      start: 179
    functionDepth: 3
    functionLinenumber: 179
    functionLinenumberEnd: 190
    functionName: VercelBlobBackend::read
    functionSourceFile: /src/opendal/core/services/vercel-blob/src/backend.rs
    functionUses: 0
    functionsReached:
    - Result::clone
    - VercelBlobBackend::clone
    - Ok
    - oio::StreamReader::new
    - VercelBlobReader::new
    linkageType: ''
    returnType: Result
    signature: 'fn read(&self, ctx: &OperationContext, path: &str, args: OpRead) ->
      Result<Self::Reader>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: OpStat::concurrent
      Src: /src/opendal/core/services/vercel-blob/src/backend.rs:194,1
    - Dst: VercelBlobWriter::new
      Src: /src/opendal/core/services/vercel-blob/src/backend.rs:196,1
    - Dst: clone
      Src: /src/opendal/core/services/vercel-blob/src/backend.rs:196,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/vercel-blob/src/backend.rs:196,1
    - Dst: to_string
      Src: /src/opendal/core/services/vercel-blob/src/backend.rs:196,1
    - Dst: oio::MultipartWriter::new
      Src: /src/opendal/core/services/vercel-blob/src/backend.rs:198,1
    - Dst: Result::executor
      Src: /src/opendal/core/services/vercel-blob/src/backend.rs:198,1
    - Dst: Self::clone
      Src: /src/opendal/core/services/vercel-blob/src/backend.rs:198,1
    - Dst: Ok
      Src: /src/opendal/core/services/vercel-blob/src/backend.rs:200,1
    - Dst: Ok
      Src: /src/opendal/core/services/vercel-blob/src/backend.rs:203,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 18
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpWrite
    constantsTouched: []
    func_position:
      end: 204
      start: 192
    functionDepth: 37
    functionLinenumber: 192
    functionLinenumberEnd: 204
    functionName: VercelBlobBackend::write
    functionSourceFile: /src/opendal/core/services/vercel-blob/src/backend.rs
    functionUses: 0
    functionsReached:
    - Result::clone
    - to_string
    - oio::MultipartWriter::new
    - Ok
    - Result::executor
    - clone
    - VercelBlobWriter::new
    - OpStat::concurrent
    - Self::clone
    linkageType: ''
    returnType: Result
    signature: 'fn write(&self, ctx: &OperationContext, path: &str, args: OpWrite)
      -> Result<Self::Writer>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: clone
      Src: /src/opendal/core/services/vercel-blob/src/backend.rs:214,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/vercel-blob/src/backend.rs:215,1
    - Dst: Result::to_string
      Src: /src/opendal/core/services/vercel-blob/src/backend.rs:216,1
    - Dst: Result::to_string
      Src: /src/opendal/core/services/vercel-blob/src/backend.rs:217,1
    - Dst: Ok
      Src: /src/opendal/core/services/vercel-blob/src/backend.rs:219,1
    - Dst: oio::OneShotCopier::new
      Src: /src/opendal/core/services/vercel-blob/src/backend.rs:219,1
    - Dst: CompfsCore::copy
      Src: /src/opendal/core/services/vercel-blob/src/backend.rs:220,1
    - Dst: status
      Src: /src/opendal/core/services/vercel-blob/src/backend.rs:221,1
    - Dst: Ok
      Src: /src/opendal/core/services/vercel-blob/src/backend.rs:224,1
    - Dst: Metadata::default
      Src: /src/opendal/core/services/vercel-blob/src/backend.rs:224,1
    - Dst: Err
      Src: /src/opendal/core/services/vercel-blob/src/backend.rs:225,1
    - Dst: super::core::parse_error
      Src: /src/opendal/core/services/vercel-blob/src/backend.rs:225,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 26
    argCount: 5
    argNames:
    - ctx
    - from
    - to
    - _args
    - _opts
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    - OpCopy
    - OpCopier
    constantsTouched: []
    func_position:
      end: 228
      start: 206
    functionDepth: 34
    functionLinenumber: 206
    functionLinenumberEnd: 228
    functionName: VercelBlobBackend::copy
    functionSourceFile: /src/opendal/core/services/vercel-blob/src/backend.rs
    functionUses: 0
    functionsReached:
    - Result::clone
    - Metadata::default
    - Result::to_string
    - Ok
    - status
    - clone
    - Err
    - CompfsCore::copy
    - super::core::parse_error
    - oio::OneShotCopier::new
    linkageType: ''
    returnType: Result
    signature: 'fn copy(&self,ctx: &OperationContext,from: &str,to: &str,_args: OpCopy,_opts:
      OpCopier,) -> Result<Self::Copier>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: VercelBlobLister::new
      Src: /src/opendal/core/services/vercel-blob/src/backend.rs:232,1
    - Dst: clone
      Src: /src/opendal/core/services/vercel-blob/src/backend.rs:232,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/vercel-blob/src/backend.rs:232,1
    - Dst: OpStat::limit
      Src: /src/opendal/core/services/vercel-blob/src/backend.rs:232,1
    - Dst: Ok
      Src: /src/opendal/core/services/vercel-blob/src/backend.rs:233,1
    - Dst: oio::PageLister::new
      Src: /src/opendal/core/services/vercel-blob/src/backend.rs:233,1
    - Dst: Ok
      Src: /src/opendal/core/services/vercel-blob/src/backend.rs:236,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpList
    constantsTouched: []
    func_position:
      end: 237
      start: 230
    functionDepth: 36
    functionLinenumber: 230
    functionLinenumberEnd: 237
    functionName: VercelBlobBackend::list
    functionSourceFile: /src/opendal/core/services/vercel-blob/src/backend.rs
    functionUses: 0
    functionsReached:
    - Result::clone
    - Ok
    - clone
    - oio::PageLister::new
    - OpStat::limit
    - VercelBlobLister::new
    linkageType: ''
    returnType: Result
    signature: 'fn list(&self, ctx: &OperationContext, path: &str, args: OpList) ->
      Result<Self::Lister>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/core/services/vercel-blob/src/backend.rs:241,1
    - Dst: oio::OneShotDeleter::new
      Src: /src/opendal/core/services/vercel-blob/src/backend.rs:241,1
    - Dst: VercelBlobDeleter::new
      Src: /src/opendal/core/services/vercel-blob/src/backend.rs:241,1
    - Dst: clone
      Src: /src/opendal/core/services/vercel-blob/src/backend.rs:242,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/vercel-blob/src/backend.rs:243,1
    - Dst: Ok
      Src: /src/opendal/core/services/vercel-blob/src/backend.rs:247,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - '&OperationContext'
    constantsTouched: []
    func_position:
      end: 248
      start: 239
    functionDepth: 2
    functionLinenumber: 239
    functionLinenumberEnd: 248
    functionName: VercelBlobBackend::delete
    functionSourceFile: /src/opendal/core/services/vercel-blob/src/backend.rs
    functionUses: 0
    functionsReached:
    - oio::OneShotDeleter::new
    - Result::clone
    - Ok
    - clone
    - VercelBlobDeleter::new
    linkageType: ''
    returnType: Result
    signature: 'fn delete(&self, ctx: &OperationContext) -> Result<Self::Deleter>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/core/services/vercel-blob/src/backend.rs:257,1
    - Dst: Error::new
      Src: /src/opendal/core/services/vercel-blob/src/backend.rs:257,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - _ctx
    - _from
    - _to
    - _args
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    - OpRename
    constantsTouched: []
    func_position:
      end: 261
      start: 250
    functionDepth: 36
    functionLinenumber: 250
    functionLinenumberEnd: 261
    functionName: VercelBlobBackend::rename
    functionSourceFile: /src/opendal/core/services/vercel-blob/src/backend.rs
    functionUses: 0
    functionsReached:
    - Error::new
    - Err
    linkageType: ''
    returnType: Result
    signature: 'async fn rename(&self,_ctx: &OperationContext,_from: &str,_to: &str,_args:
      OpRename,) -> Result<RpRename>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/core/services/vercel-blob/src/backend.rs:269,1
    - Dst: Error::new
      Src: /src/opendal/core/services/vercel-blob/src/backend.rs:269,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - _ctx
    - _path
    - _args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpPresign
    constantsTouched: []
    func_position:
      end: 273
      start: 263
    functionDepth: 36
    functionLinenumber: 263
    functionLinenumberEnd: 273
    functionName: VercelBlobBackend::presign
    functionSourceFile: /src/opendal/core/services/vercel-blob/src/backend.rs
    functionUses: 0
    functionsReached:
    - Error::new
    - Err
    linkageType: ''
    returnType: Result
    signature: 'async fn presign(&self,_ctx: &OperationContext,_path: &str,_args:
      OpPresign,) -> Result<RpPresign>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::debug_struct
      Src: /src/opendal/core/services/dropbox/src/config.rs:44,1
    - Dst: field
      Src: /src/opendal/core/services/dropbox/src/config.rs:44,1
    - Dst: finish_non_exhaustive
      Src: /src/opendal/core/services/dropbox/src/config.rs:44,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - f
    argTypes:
    - '&mut std::fmt::Formatter<''_>'
    constantsTouched: []
    func_position:
      end: 47
      start: 43
    functionDepth: 5
    functionLinenumber: 43
    functionLinenumberEnd: 47
    functionName: DropboxConfig::fmt
    functionSourceFile: /src/opendal/core/services/dropbox/src/config.rs
    functionUses: 0
    functionsReached:
    - field
    - Result::debug_struct
    - finish_non_exhaustive
    linkageType: ''
    returnType: std::fmt::Result
    signature: 'fn fmt(&self, f: &mut std::fmt::Formatter<''_>) -> std::fmt::Result'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::options
      Src: /src/opendal/core/services/dropbox/src/config.rs:54,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/dropbox/src/config.rs:54,1
    - Dst: Result::root
      Src: /src/opendal/core/services/dropbox/src/config.rs:56,1
    - Dst: Result::is_empty
      Src: /src/opendal/core/services/dropbox/src/config.rs:57,1
    - Dst: Result::insert
      Src: /src/opendal/core/services/dropbox/src/config.rs:59,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/dropbox/src/config.rs:59,1
    - Dst: Result::to_string
      Src: /src/opendal/core/services/dropbox/src/config.rs:59,1
    - Dst: Self::from_iter
      Src: /src/opendal/core/services/dropbox/src/config.rs:62,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 19
    argCount: 1
    argNames:
    - uri
    argTypes:
    - '&opendal_core::OperatorUri'
    constantsTouched: []
    func_position:
      end: 63
      start: 53
    functionDepth: 35
    functionLinenumber: 53
    functionLinenumberEnd: 63
    functionName: DropboxConfig::from_uri
    functionSourceFile: /src/opendal/core/services/dropbox/src/config.rs
    functionUses: 0
    functionsReached:
    - Result::clone
    - Self::from_iter
    - Result::to_string
    - Result::insert
    - Result::is_empty
    - Result::root
    - '&str::to_string'
    - Result::options
    linkageType: ''
    returnType: opendal_core::Result
    signature: 'fn from_uri(uri: &opendal_core::OperatorUri) -> opendal_core::Result<Self>'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 67
      start: 65
    functionDepth: 0
    functionLinenumber: 65
    functionLinenumberEnd: 67
    functionName: DropboxConfig::into_builder
    functionSourceFile: /src/opendal/core/services/dropbox/src/config.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Self::Builder
    signature: fn into_builder(self) -> Self::Builder
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - core
    - ctx
    argTypes:
    - Arc<DropboxCore>
    - OperationContext
    constantsTouched: []
    func_position:
      end: 35
      start: 33
    functionDepth: 0
    functionLinenumber: 33
    functionLinenumberEnd: 35
    functionName: DropboxDeleter::new
    functionSourceFile: /src/opendal/core/services/dropbox/src/deleter.rs
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(core: Arc<DropboxCore>, ctx: OperationContext) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: dropbox_delete
      Src: /src/opendal/core/services/dropbox/src/deleter.rs:40,1
    - Dst: status
      Src: /src/opendal/core/services/dropbox/src/deleter.rs:42,1
    - Dst: Ok
      Src: /src/opendal/core/services/dropbox/src/deleter.rs:45,1
    - Dst: super::core::parse_error
      Src: /src/opendal/core/services/dropbox/src/deleter.rs:47,1
    - Dst: Error::kind
      Src: /src/opendal/core/services/dropbox/src/deleter.rs:48,1
    - Dst: Ok
      Src: /src/opendal/core/services/dropbox/src/deleter.rs:49,1
    - Dst: Err
      Src: /src/opendal/core/services/dropbox/src/deleter.rs:50,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 22
    argCount: 2
    argNames:
    - path
    argTypes:
    - String
    - OpDelete
    constantsTouched: []
    func_position:
      end: 54
      start: 39
    functionDepth: 33
    functionLinenumber: 39
    functionLinenumberEnd: 54
    functionName: DropboxDeleter::delete_once
    functionSourceFile: /src/opendal/core/services/dropbox/src/deleter.rs
    functionUses: 0
    functionsReached:
    - dropbox_delete
    - status
    - Ok
    - Err
    - Error::kind
    - super::core::parse_error
    linkageType: ''
    returnType: Result
    signature: 'async fn delete_once(&self, path: String, _: OpDelete) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 5
    argNames:
    - core
    - ctx
    - path
    - recursive
    - limit
    argTypes:
    - Arc<DropboxCore>
    - OperationContext
    - String
    - bool
    - Option<usize>
    constantsTouched: []
    func_position:
      end: 50
      start: 36
    functionDepth: 0
    functionLinenumber: 36
    functionLinenumberEnd: 50
    functionName: DropboxLister::new
    functionSourceFile: /src/opendal/core/services/dropbox/src/lister.rs
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(core: Arc<DropboxCore>,ctx: OperationContext,path: String,recursive:
      bool,limit: Option<usize>,) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: is_empty
      Src: /src/opendal/core/services/dropbox/src/lister.rs:58,1
    - Dst: dropbox_list_continue
      Src: /src/opendal/core/services/dropbox/src/lister.rs:59,1
    - Dst: dropbox_list
      Src: /src/opendal/core/services/dropbox/src/lister.rs:63,1
    - Dst: status
      Src: /src/opendal/core/services/dropbox/src/lister.rs:68,1
    - Dst: Self::is_success
      Src: /src/opendal/core/services/dropbox/src/lister.rs:70,1
    - Dst: super::core::parse_error
      Src: /src/opendal/core/services/dropbox/src/lister.rs:71,1
    - Dst: Self::kind
      Src: /src/opendal/core/services/dropbox/src/lister.rs:73,1
    - Dst: Ok
      Src: /src/opendal/core/services/dropbox/src/lister.rs:74,1
    - Dst: Err
      Src: /src/opendal/core/services/dropbox/src/lister.rs:75,1
    - Dst: into_body
      Src: /src/opendal/core/services/dropbox/src/lister.rs:82,1
    - Dst: serde_json::from_reader
      Src: /src/opendal/core/services/dropbox/src/lister.rs:84,1
    - Dst: Bytes::reader
      Src: /src/opendal/core/services/dropbox/src/lister.rs:84,1
    - Dst: map_err
      Src: /src/opendal/core/services/dropbox/src/lister.rs:84,1
    - Dst: as_str
      Src: /src/opendal/core/services/dropbox/src/lister.rs:87,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/dropbox/src/lister.rs:94,1
    - Dst: Result::ends_with
      Src: /src/opendal/core/services/dropbox/src/lister.rs:97,1
    - Dst: Result::push
      Src: /src/opendal/core/services/dropbox/src/lister.rs:98,1
    - Dst: client_modified.parse::<Timestamp>
      Src: /src/opendal/core/services/dropbox/src/lister.rs:103,1
    - Dst: Result::set_last_modified
      Src: /src/opendal/core/services/dropbox/src/lister.rs:104,1
    - Dst: Result::set_content_length
      Src: /src/opendal/core/services/dropbox/src/lister.rs:107,1
    - Dst: push_back
      Src: /src/opendal/core/services/dropbox/src/lister.rs:111,1
    - Dst: oio::Entry::with
      Src: /src/opendal/core/services/dropbox/src/lister.rs:111,1
    - Dst: Ok
      Src: /src/opendal/core/services/dropbox/src/lister.rs:120,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 107
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - '&mut oio::PageContext'
    constantsTouched: []
    func_position:
      end: 121
      start: 54
    functionDepth: 33
    functionLinenumber: 54
    functionLinenumberEnd: 121
    functionName: DropboxLister::next_page
    functionSourceFile: /src/opendal/core/services/dropbox/src/lister.rs
    functionUses: 0
    functionsReached:
    - status
    - Result::ends_with
    - serde_json::from_reader
    - dropbox_list_continue
    - map_err
    - Ok
    - as_str
    - Result::push
    - oio::Entry::with
    - Self::kind
    - Bytes::reader
    - Metadata::new
    - into_body
    - is_empty
    - super::core::parse_error
    - Self::is_success
    - push_back
    - client_modified.parse::<Timestamp>
    - Err
    - dropbox_list
    - Result::set_last_modified
    - Result::set_content_length
    linkageType: ''
    returnType: Result
    signature: 'async fn next_page(&self, ctx: &mut oio::PageContext) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: to_string
      Src: /src/opendal/core/services/dropbox/src/reader.rs:43,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 4
    argNames:
    - backend
    - ctx
    - path
    - args
    argTypes:
    - DropboxBackend
    - OperationContext
    - '&str'
    - OpRead
    constantsTouched: []
    func_position:
      end: 46
      start: 34
    functionDepth: 2
    functionLinenumber: 34
    functionLinenumberEnd: 46
    functionName: DropboxReader::new
    functionSourceFile: /src/opendal/core/services/dropbox/src/reader.rs
    functionUses: 1
    functionsReached:
    - to_string
    linkageType: ''
    returnType: Self
    signature: 'pub(super) fn new(backend: DropboxBackend,ctx: OperationContext,path:
      &str,args: OpRead,) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: as_str
      Src: /src/opendal/core/services/dropbox/src/reader.rs:52,1
    - Dst: clone
      Src: /src/opendal/core/services/dropbox/src/reader.rs:53,1
    - Dst: dropbox_get
      Src: /src/opendal/core/services/dropbox/src/reader.rs:54,1
    - Dst: status
      Src: /src/opendal/core/services/dropbox/src/reader.rs:59,1
    - Dst: RpRead::new
      Src: /src/opendal/core/services/dropbox/src/reader.rs:62,1
    - Dst: parse_into_metadata
      Src: /src/opendal/core/services/dropbox/src/reader.rs:62,1
    - Dst: headers
      Src: /src/opendal/core/services/dropbox/src/reader.rs:62,1
    - Dst: into_body
      Src: /src/opendal/core/services/dropbox/src/reader.rs:63,1
    - Dst: into_parts
      Src: /src/opendal/core/services/dropbox/src/reader.rs:66,1
    - Dst: to_buffer
      Src: /src/opendal/core/services/dropbox/src/reader.rs:67,1
    - Dst: Err
      Src: /src/opendal/core/services/dropbox/src/reader.rs:68,1
    - Dst: parse_error
      Src: /src/opendal/core/services/dropbox/src/reader.rs:68,1
    - Dst: Response::from_parts
      Src: /src/opendal/core/services/dropbox/src/reader.rs:68,1
    - Dst: Ok
      Src: /src/opendal/core/services/dropbox/src/reader.rs:72,1
    - Dst: Box::new
      Src: /src/opendal/core/services/dropbox/src/reader.rs:72,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 42
    argCount: 1
    argNames:
    - range
    argTypes:
    - BytesRange
    constantsTouched: []
    func_position:
      end: 73
      start: 50
    functionDepth: 35
    functionLinenumber: 50
    functionLinenumberEnd: 73
    functionName: DropboxReader::open
    functionSourceFile: /src/opendal/core/services/dropbox/src/reader.rs
    functionUses: 0
    functionsReached:
    - parse_into_metadata
    - to_buffer
    - status
    - Ok
    - dropbox_get
    - Box::new
    - parse_error
    - into_body
    - clone
    - Err
    - Response::from_parts
    - as_str
    - headers
    - into_parts
    - RpRead::new
    linkageType: ''
    returnType: Result
    signature: 'async fn open(&self, range: BytesRange) -> Result<(RpRead, Box<dyn
      oio::ReadStreamDyn>)>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::debug_struct
      Src: /src/opendal/core/services/dropbox/src/core.rs:45,1
    - Dst: field
      Src: /src/opendal/core/services/dropbox/src/core.rs:45,1
    - Dst: finish_non_exhaustive
      Src: /src/opendal/core/services/dropbox/src/core.rs:45,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - f
    argTypes:
    - '&mut std::fmt::Formatter<''_>'
    constantsTouched: []
    func_position:
      end: 48
      start: 44
    functionDepth: 5
    functionLinenumber: 44
    functionLinenumberEnd: 48
    functionName: DropboxCore::fmt
    functionSourceFile: /src/opendal/core/services/dropbox/src/core.rs
    functionUses: 0
    functionsReached:
    - field
    - Result::debug_struct
    - finish_non_exhaustive
    linkageType: ''
    returnType: std::fmt::Result
    signature: 'fn fmt(&self, f: &mut std::fmt::Formatter<''_>) -> std::fmt::Result'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_rooted_abs_path
      Src: /src/opendal/core/services/dropbox/src/core.rs:53,1
    - Dst: trim_end_matches
      Src: /src/opendal/core/services/dropbox/src/core.rs:56,1
    - Dst: to_string
      Src: /src/opendal/core/services/dropbox/src/core.rs:56,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - path
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 57
      start: 52
    functionDepth: 3
    functionLinenumber: 52
    functionLinenumberEnd: 57
    functionName: DropboxCore::build_path
    functionSourceFile: /src/opendal/core/services/dropbox/src/core.rs
    functionUses: 6
    functionsReached:
    - to_string
    - trim_end_matches
    - build_rooted_abs_path
    linkageType: ''
    returnType: String
    signature: 'fn build_path(&self, path: &str) -> String'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/opendal/core/services/dropbox/src/core.rs:60,1
    - Dst: is_empty
      Src: /src/opendal/core/services/dropbox/src/core.rs:63,1
    - Dst: Timestamp::now
      Src: /src/opendal/core/services/dropbox/src/core.rs:63,1
    - Dst: parse
      Src: /src/opendal/core/services/dropbox/src/core.rs:64,1
    - Dst: expect
      Src: /src/opendal/core/services/dropbox/src/core.rs:64,1
    - Dst: '&mut Request<T>::headers_mut'
      Src: /src/opendal/core/services/dropbox/src/core.rs:67,1
    - Dst: insert
      Src: /src/opendal/core/services/dropbox/src/core.rs:67,1
    - Dst: Ok
      Src: /src/opendal/core/services/dropbox/src/core.rs:68,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/dropbox/src/core.rs:72,1
    - Dst: Bytes::from
      Src: /src/opendal/core/services/dropbox/src/core.rs:78,1
    - Dst: Request::post
      Src: /src/opendal/core/services/dropbox/src/core.rs:80,1
    - Dst: http::header
      Src: /src/opendal/core/services/dropbox/src/core.rs:80,1
    - Dst: http::header
      Src: /src/opendal/core/services/dropbox/src/core.rs:80,1
    - Dst: Result::len
      Src: /src/opendal/core/services/dropbox/src/core.rs:82,1
    - Dst: body
      Src: /src/opendal/core/services/dropbox/src/core.rs:80,1
    - Dst: Buffer::from
      Src: /src/opendal/core/services/dropbox/src/core.rs:83,1
    - Dst: map_err
      Src: /src/opendal/core/services/dropbox/src/core.rs:80,1
    - Dst: Result::http_transport
      Src: /src/opendal/core/services/dropbox/src/core.rs:86,1
    - Dst: Self::send
      Src: /src/opendal/core/services/dropbox/src/core.rs:86,1
    - Dst: into_body
      Src: /src/opendal/core/services/dropbox/src/core.rs:87,1
    - Dst: serde_json::from_reader
      Src: /src/opendal/core/services/dropbox/src/core.rs:90,1
    - Dst: reader
      Src: /src/opendal/core/services/dropbox/src/core.rs:90,1
    - Dst: map_err
      Src: /src/opendal/core/services/dropbox/src/core.rs:90,1
    - Dst: clone_from
      Src: /src/opendal/core/services/dropbox/src/core.rs:93,1
    - Dst: Timestamp::now
      Src: /src/opendal/core/services/dropbox/src/core.rs:97,1
    - Dst: Duration::from_secs
      Src: /src/opendal/core/services/dropbox/src/core.rs:97,1
    - Dst: Duration::from_secs
      Src: /src/opendal/core/services/dropbox/src/core.rs:97,1
    - Dst: parse
      Src: /src/opendal/core/services/dropbox/src/core.rs:99,1
    - Dst: expect
      Src: /src/opendal/core/services/dropbox/src/core.rs:99,1
    - Dst: '&mut Request<T>::headers_mut'
      Src: /src/opendal/core/services/dropbox/src/core.rs:102,1
    - Dst: insert
      Src: /src/opendal/core/services/dropbox/src/core.rs:102,1
    - Dst: Ok
      Src: /src/opendal/core/services/dropbox/src/core.rs:104,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 84
    argCount: 2
    argNames:
    - ctx
    - req
    argTypes:
    - '&OperationContext'
    - '&mut Request<T>'
    constantsTouched: []
    func_position:
      end: 105
      start: 59
    functionDepth: 33
    functionLinenumber: 59
    functionLinenumberEnd: 105
    functionName: DropboxCore::sign
    functionSourceFile: /src/opendal/core/services/dropbox/src/core.rs
    functionUses: 9
    functionsReached:
    - Self::send
    - serde_json::from_reader
    - Result::len
    - map_err
    - Timestamp::now
    - reader
    - expect
    - Ok
    - '&str::to_string'
    - Duration::from_secs
    - Result::http_transport
    - Buffer::from
    - insert
    - clone_from
    - http::header
    - into_body
    - is_empty
    - Bytes::from
    - parse
    - '&mut Request<T>::headers_mut'
    - lock
    - Request::post
    - body
    linkageType: ''
    returnType: Result
    signature: 'pub async fn sign<T>(&self, ctx: &OperationContext, req: &mut Request<T>)
      -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/dropbox/src/core.rs:114,1
    - Dst: build_rooted_abs_path
      Src: /src/opendal/core/services/dropbox/src/core.rs:116,1
    - Dst: serde_json::to_string
      Src: /src/opendal/core/services/dropbox/src/core.rs:119,1
    - Dst: map_err
      Src: /src/opendal/core/services/dropbox/src/core.rs:119,1
    - Dst: Request::post
      Src: /src/opendal/core/services/dropbox/src/core.rs:121,1
    - Dst: http::header
      Src: /src/opendal/core/services/dropbox/src/core.rs:121,1
    - Dst: http::header
      Src: /src/opendal/core/services/dropbox/src/core.rs:121,1
    - Dst: (Vec::is_full
      Src: /src/opendal/core/services/dropbox/src/core.rs:125,1
    - Dst: http::header
      Src: /src/opendal/core/services/dropbox/src/core.rs:126,1
    - Dst: (Vec::to_header
      Src: /src/opendal/core/services/dropbox/src/core.rs:126,1
    - Dst: extension
      Src: /src/opendal/core/services/dropbox/src/core.rs:129,1
    - Dst: extension
      Src: /src/opendal/core/services/dropbox/src/core.rs:129,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/dropbox/src/core.rs:131,1
    - Dst: body
      Src: /src/opendal/core/services/dropbox/src/core.rs:133,1
    - Dst: Buffer::new
      Src: /src/opendal/core/services/dropbox/src/core.rs:133,1
    - Dst: map_err
      Src: /src/opendal/core/services/dropbox/src/core.rs:133,1
    - Dst: DropboxCore::sign
      Src: /src/opendal/core/services/dropbox/src/core.rs:135,1
    - Dst: Result::http_transport
      Src: /src/opendal/core/services/dropbox/src/core.rs:136,1
    - Dst: Self::fetch
      Src: /src/opendal/core/services/dropbox/src/core.rs:136,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 50
    argCount: 4
    argNames:
    - ctx
    - path
    - range
    argTypes:
    - '&OperationContext'
    - '&str'
    - BytesRange
    - '&OpRead'
    constantsTouched: []
    func_position:
      end: 137
      start: 107
    functionDepth: 34
    functionLinenumber: 107
    functionLinenumberEnd: 137
    functionName: DropboxCore::dropbox_get
    functionSourceFile: /src/opendal/core/services/dropbox/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - extension
    - Buffer::new
    - (Vec::to_header
    - DropboxCore::sign
    - http::header
    - Request::post
    - (Vec::is_full
    - build_rooted_abs_path
    - body
    - '&str::to_string'
    - ServiceOperation
    - serde_json::to_string
    - Self::fetch
    - Result::http_transport
    linkageType: ''
    returnType: Result
    signature: 'pub async fn dropbox_get(&self,ctx: &OperationContext,path: &str,range:
      BytesRange,_: &OpRead,) -> Result<Response<HttpBody>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/dropbox/src/core.rs:147,1
    - Dst: build_rooted_abs_path
      Src: /src/opendal/core/services/dropbox/src/core.rs:149,1
    - Dst: Default::default
      Src: /src/opendal/core/services/dropbox/src/core.rs:150,1
    - Dst: Request::post
      Src: /src/opendal/core/services/dropbox/src/core.rs:152,1
    - Dst: http::header
      Src: /src/opendal/core/services/dropbox/src/core.rs:154,1
    - Dst: http::header
      Src: /src/opendal/core/services/dropbox/src/core.rs:156,1
    - Dst: OpStat::content_type
      Src: /src/opendal/core/services/dropbox/src/core.rs:158,1
    - Dst: Result::unwrap_or
      Src: /src/opendal/core/services/dropbox/src/core.rs:158,1
    - Dst: extension
      Src: /src/opendal/core/services/dropbox/src/core.rs:161,1
    - Dst: extension
      Src: /src/opendal/core/services/dropbox/src/core.rs:161,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/dropbox/src/core.rs:163,1
    - Dst: http::header
      Src: /src/opendal/core/services/dropbox/src/core.rs:165,1
    - Dst: serde_json::to_string
      Src: /src/opendal/core/services/dropbox/src/core.rs:168,1
    - Dst: map_err
      Src: /src/opendal/core/services/dropbox/src/core.rs:168,1
    - Dst: body
      Src: /src/opendal/core/services/dropbox/src/core.rs:165,1
    - Dst: map_err
      Src: /src/opendal/core/services/dropbox/src/core.rs:165,1
    - Dst: DropboxCore::sign
      Src: /src/opendal/core/services/dropbox/src/core.rs:173,1
    - Dst: Result::http_transport
      Src: /src/opendal/core/services/dropbox/src/core.rs:174,1
    - Dst: Self::send
      Src: /src/opendal/core/services/dropbox/src/core.rs:174,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 51
    argCount: 5
    argNames:
    - ctx
    - path
    - size
    - args
    - body
    argTypes:
    - '&OperationContext'
    - '&str'
    - Option<usize>
    - '&OpWrite'
    - Buffer
    constantsTouched: []
    func_position:
      end: 175
      start: 139
    functionDepth: 32
    functionLinenumber: 139
    functionLinenumberEnd: 175
    functionName: DropboxCore::dropbox_update
    functionSourceFile: /src/opendal/core/services/dropbox/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - extension
    - DropboxCore::sign
    - Self::send
    - Default::default
    - Request::post
    - http::header
    - build_rooted_abs_path
    - body
    - '&str::to_string'
    - ServiceOperation
    - serde_json::to_string
    - Result::http_transport
    - Result::unwrap_or
    - OpStat::content_type
    linkageType: ''
    returnType: Result
    signature: 'pub async fn dropbox_update(&self,ctx: &OperationContext,path: &str,size:
      Option<usize>,args: &OpWrite,body: Buffer,) -> Result<Response<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/dropbox/src/core.rs:182,1
    - Dst: DropboxCore::build_path
      Src: /src/opendal/core/services/dropbox/src/core.rs:184,1
    - Dst: Bytes::from
      Src: /src/opendal/core/services/dropbox/src/core.rs:187,1
    - Dst: serde_json::to_string
      Src: /src/opendal/core/services/dropbox/src/core.rs:187,1
    - Dst: map_err
      Src: /src/opendal/core/services/dropbox/src/core.rs:187,1
    - Dst: Request::post
      Src: /src/opendal/core/services/dropbox/src/core.rs:189,1
    - Dst: http::header
      Src: /src/opendal/core/services/dropbox/src/core.rs:189,1
    - Dst: http::header
      Src: /src/opendal/core/services/dropbox/src/core.rs:189,1
    - Dst: Result::len
      Src: /src/opendal/core/services/dropbox/src/core.rs:191,1
    - Dst: extension
      Src: /src/opendal/core/services/dropbox/src/core.rs:189,1
    - Dst: extension
      Src: /src/opendal/core/services/dropbox/src/core.rs:189,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/dropbox/src/core.rs:193,1
    - Dst: body
      Src: /src/opendal/core/services/dropbox/src/core.rs:189,1
    - Dst: Buffer::from
      Src: /src/opendal/core/services/dropbox/src/core.rs:194,1
    - Dst: map_err
      Src: /src/opendal/core/services/dropbox/src/core.rs:189,1
    - Dst: DropboxCore::sign
      Src: /src/opendal/core/services/dropbox/src/core.rs:197,1
    - Dst: Result::http_transport
      Src: /src/opendal/core/services/dropbox/src/core.rs:198,1
    - Dst: Self::send
      Src: /src/opendal/core/services/dropbox/src/core.rs:198,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 41
    argCount: 2
    argNames:
    - ctx
    - path
    argTypes:
    - '&OperationContext'
    - '&str'
    constantsTouched: []
    func_position:
      end: 199
      start: 177
    functionDepth: 32
    functionLinenumber: 177
    functionLinenumberEnd: 199
    functionName: DropboxCore::dropbox_delete
    functionSourceFile: /src/opendal/core/services/dropbox/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - extension
    - DropboxCore::sign
    - Self::send
    - http::header
    - Request::post
    - body
    - DropboxCore::build_path
    - Bytes::from
    - '&str::to_string'
    - ServiceOperation
    - serde_json::to_string
    - Result::len
    - Result::http_transport
    - Buffer::from
    linkageType: ''
    returnType: Result
    signature: 'pub async fn dropbox_delete(&self,ctx: &OperationContext,path: &str,)
      -> Result<Response<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/dropbox/src/core.rs:206,1
    - Dst: DropboxCore::build_path
      Src: /src/opendal/core/services/dropbox/src/core.rs:208,1
    - Dst: Bytes::from
      Src: /src/opendal/core/services/dropbox/src/core.rs:211,1
    - Dst: serde_json::to_string
      Src: /src/opendal/core/services/dropbox/src/core.rs:211,1
    - Dst: map_err
      Src: /src/opendal/core/services/dropbox/src/core.rs:211,1
    - Dst: Request::post
      Src: /src/opendal/core/services/dropbox/src/core.rs:213,1
    - Dst: http::header
      Src: /src/opendal/core/services/dropbox/src/core.rs:213,1
    - Dst: http::header
      Src: /src/opendal/core/services/dropbox/src/core.rs:213,1
    - Dst: Result::len
      Src: /src/opendal/core/services/dropbox/src/core.rs:215,1
    - Dst: extension
      Src: /src/opendal/core/services/dropbox/src/core.rs:213,1
    - Dst: extension
      Src: /src/opendal/core/services/dropbox/src/core.rs:213,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/dropbox/src/core.rs:217,1
    - Dst: body
      Src: /src/opendal/core/services/dropbox/src/core.rs:213,1
    - Dst: Buffer::from
      Src: /src/opendal/core/services/dropbox/src/core.rs:218,1
    - Dst: map_err
      Src: /src/opendal/core/services/dropbox/src/core.rs:213,1
    - Dst: DropboxCore::sign
      Src: /src/opendal/core/services/dropbox/src/core.rs:221,1
    - Dst: Result::http_transport
      Src: /src/opendal/core/services/dropbox/src/core.rs:222,1
    - Dst: Self::send
      Src: /src/opendal/core/services/dropbox/src/core.rs:222,1
    - Dst: status
      Src: /src/opendal/core/services/dropbox/src/core.rs:223,1
    - Dst: Ok
      Src: /src/opendal/core/services/dropbox/src/core.rs:225,1
    - Dst: RpCreateDir::default
      Src: /src/opendal/core/services/dropbox/src/core.rs:225,1
    - Dst: parse_error
      Src: /src/opendal/core/services/dropbox/src/core.rs:227,1
    - Dst: Error::kind
      Src: /src/opendal/core/services/dropbox/src/core.rs:228,1
    - Dst: Ok
      Src: /src/opendal/core/services/dropbox/src/core.rs:229,1
    - Dst: RpCreateDir::default
      Src: /src/opendal/core/services/dropbox/src/core.rs:229,1
    - Dst: Err
      Src: /src/opendal/core/services/dropbox/src/core.rs:230,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 56
    argCount: 2
    argNames:
    - ctx
    - path
    argTypes:
    - '&OperationContext'
    - '&str'
    constantsTouched: []
    func_position:
      end: 234
      start: 201
    functionDepth: 32
    functionLinenumber: 201
    functionLinenumberEnd: 234
    functionName: DropboxCore::dropbox_create_folder
    functionSourceFile: /src/opendal/core/services/dropbox/src/core.rs
    functionUses: 0
    functionsReached:
    - status
    - Self::send
    - Result::len
    - map_err
    - extension
    - Ok
    - '&str::to_string'
    - ServiceOperation
    - Result::http_transport
    - Buffer::from
    - http::header
    - parse_error
    - Bytes::from
    - Error::kind
    - serde_json::to_string
    - DropboxCore::sign
    - RpCreateDir::default
    - Request::post
    - body
    - Err
    - DropboxCore::build_path
    linkageType: ''
    returnType: Result
    signature: 'pub async fn dropbox_create_folder(&self,ctx: &OperationContext,path:
      &str,) -> Result<RpCreateDir>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/dropbox/src/core.rs:243,1
    - Dst: DropboxCore::build_path
      Src: /src/opendal/core/services/dropbox/src/core.rs:248,1
    - Dst: Result::unwrap_or
      Src: /src/opendal/core/services/dropbox/src/core.rs:250,1
    - Dst: Bytes::from
      Src: /src/opendal/core/services/dropbox/src/core.rs:253,1
    - Dst: serde_json::to_string
      Src: /src/opendal/core/services/dropbox/src/core.rs:253,1
    - Dst: map_err
      Src: /src/opendal/core/services/dropbox/src/core.rs:253,1
    - Dst: Request::post
      Src: /src/opendal/core/services/dropbox/src/core.rs:255,1
    - Dst: http::header
      Src: /src/opendal/core/services/dropbox/src/core.rs:255,1
    - Dst: http::header
      Src: /src/opendal/core/services/dropbox/src/core.rs:255,1
    - Dst: Result::len
      Src: /src/opendal/core/services/dropbox/src/core.rs:257,1
    - Dst: extension
      Src: /src/opendal/core/services/dropbox/src/core.rs:255,1
    - Dst: extension
      Src: /src/opendal/core/services/dropbox/src/core.rs:255,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/dropbox/src/core.rs:259,1
    - Dst: body
      Src: /src/opendal/core/services/dropbox/src/core.rs:255,1
    - Dst: Buffer::from
      Src: /src/opendal/core/services/dropbox/src/core.rs:260,1
    - Dst: map_err
      Src: /src/opendal/core/services/dropbox/src/core.rs:255,1
    - Dst: DropboxCore::sign
      Src: /src/opendal/core/services/dropbox/src/core.rs:263,1
    - Dst: Result::http_transport
      Src: /src/opendal/core/services/dropbox/src/core.rs:264,1
    - Dst: Self::send
      Src: /src/opendal/core/services/dropbox/src/core.rs:264,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 43
    argCount: 4
    argNames:
    - ctx
    - path
    - recursive
    - limit
    argTypes:
    - '&OperationContext'
    - '&str'
    - bool
    - Option<usize>
    constantsTouched: []
    func_position:
      end: 265
      start: 236
    functionDepth: 32
    functionLinenumber: 236
    functionLinenumberEnd: 265
    functionName: DropboxCore::dropbox_list
    functionSourceFile: /src/opendal/core/services/dropbox/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - extension
    - DropboxCore::sign
    - Self::send
    - http::header
    - Request::post
    - body
    - DropboxCore::build_path
    - Bytes::from
    - '&str::to_string'
    - ServiceOperation
    - serde_json::to_string
    - Result::len
    - Result::http_transport
    - Result::unwrap_or
    - Buffer::from
    linkageType: ''
    returnType: Result
    signature: 'pub async fn dropbox_list(&self,ctx: &OperationContext,path: &str,recursive:
      bool,limit: Option<usize>,) -> Result<Response<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/dropbox/src/core.rs:272,1
    - Dst: Option::to_string
      Src: /src/opendal/core/services/dropbox/src/core.rs:275,1
    - Dst: Bytes::from
      Src: /src/opendal/core/services/dropbox/src/core.rs:278,1
    - Dst: serde_json::to_string
      Src: /src/opendal/core/services/dropbox/src/core.rs:278,1
    - Dst: map_err
      Src: /src/opendal/core/services/dropbox/src/core.rs:278,1
    - Dst: Request::post
      Src: /src/opendal/core/services/dropbox/src/core.rs:280,1
    - Dst: http::header
      Src: /src/opendal/core/services/dropbox/src/core.rs:280,1
    - Dst: http::header
      Src: /src/opendal/core/services/dropbox/src/core.rs:280,1
    - Dst: Result::len
      Src: /src/opendal/core/services/dropbox/src/core.rs:282,1
    - Dst: extension
      Src: /src/opendal/core/services/dropbox/src/core.rs:280,1
    - Dst: extension
      Src: /src/opendal/core/services/dropbox/src/core.rs:280,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/dropbox/src/core.rs:284,1
    - Dst: body
      Src: /src/opendal/core/services/dropbox/src/core.rs:280,1
    - Dst: Buffer::from
      Src: /src/opendal/core/services/dropbox/src/core.rs:285,1
    - Dst: map_err
      Src: /src/opendal/core/services/dropbox/src/core.rs:280,1
    - Dst: DropboxCore::sign
      Src: /src/opendal/core/services/dropbox/src/core.rs:288,1
    - Dst: Result::http_transport
      Src: /src/opendal/core/services/dropbox/src/core.rs:289,1
    - Dst: Self::send
      Src: /src/opendal/core/services/dropbox/src/core.rs:289,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 41
    argCount: 2
    argNames:
    - ctx
    - cursor
    argTypes:
    - '&OperationContext'
    - '&str'
    constantsTouched: []
    func_position:
      end: 290
      start: 267
    functionDepth: 32
    functionLinenumber: 267
    functionLinenumberEnd: 290
    functionName: DropboxCore::dropbox_list_continue
    functionSourceFile: /src/opendal/core/services/dropbox/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - extension
    - DropboxCore::sign
    - Option::to_string
    - Self::send
    - http::header
    - Request::post
    - body
    - Bytes::from
    - '&str::to_string'
    - ServiceOperation
    - serde_json::to_string
    - Result::len
    - Result::http_transport
    - Buffer::from
    linkageType: ''
    returnType: Result
    signature: 'pub async fn dropbox_list_continue(&self,ctx: &OperationContext,cursor:
      &str,) -> Result<Response<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/dropbox/src/core.rs:298,1
    - Dst: DropboxCore::build_path
      Src: /src/opendal/core/services/dropbox/src/core.rs:301,1
    - Dst: DropboxCore::build_path
      Src: /src/opendal/core/services/dropbox/src/core.rs:302,1
    - Dst: Bytes::from
      Src: /src/opendal/core/services/dropbox/src/core.rs:305,1
    - Dst: serde_json::to_string
      Src: /src/opendal/core/services/dropbox/src/core.rs:305,1
    - Dst: map_err
      Src: /src/opendal/core/services/dropbox/src/core.rs:305,1
    - Dst: Request::post
      Src: /src/opendal/core/services/dropbox/src/core.rs:307,1
    - Dst: http::header
      Src: /src/opendal/core/services/dropbox/src/core.rs:307,1
    - Dst: http::header
      Src: /src/opendal/core/services/dropbox/src/core.rs:307,1
    - Dst: Result::len
      Src: /src/opendal/core/services/dropbox/src/core.rs:309,1
    - Dst: extension
      Src: /src/opendal/core/services/dropbox/src/core.rs:307,1
    - Dst: extension
      Src: /src/opendal/core/services/dropbox/src/core.rs:307,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/dropbox/src/core.rs:311,1
    - Dst: body
      Src: /src/opendal/core/services/dropbox/src/core.rs:307,1
    - Dst: Buffer::from
      Src: /src/opendal/core/services/dropbox/src/core.rs:312,1
    - Dst: map_err
      Src: /src/opendal/core/services/dropbox/src/core.rs:307,1
    - Dst: DropboxCore::sign
      Src: /src/opendal/core/services/dropbox/src/core.rs:315,1
    - Dst: Result::http_transport
      Src: /src/opendal/core/services/dropbox/src/core.rs:316,1
    - Dst: Self::send
      Src: /src/opendal/core/services/dropbox/src/core.rs:316,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 43
    argCount: 3
    argNames:
    - ctx
    - from
    - to
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    constantsTouched: []
    func_position:
      end: 317
      start: 292
    functionDepth: 32
    functionLinenumber: 292
    functionLinenumberEnd: 317
    functionName: DropboxCore::dropbox_copy
    functionSourceFile: /src/opendal/core/services/dropbox/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - extension
    - DropboxCore::sign
    - Self::send
    - http::header
    - Request::post
    - body
    - DropboxCore::build_path
    - Bytes::from
    - '&str::to_string'
    - ServiceOperation
    - serde_json::to_string
    - Result::len
    - Result::http_transport
    - Buffer::from
    linkageType: ''
    returnType: Result
    signature: 'pub async fn dropbox_copy(&self,ctx: &OperationContext,from: &str,to:
      &str,) -> Result<Response<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/dropbox/src/core.rs:325,1
    - Dst: DropboxCore::build_path
      Src: /src/opendal/core/services/dropbox/src/core.rs:328,1
    - Dst: DropboxCore::build_path
      Src: /src/opendal/core/services/dropbox/src/core.rs:329,1
    - Dst: Bytes::from
      Src: /src/opendal/core/services/dropbox/src/core.rs:332,1
    - Dst: serde_json::to_string
      Src: /src/opendal/core/services/dropbox/src/core.rs:332,1
    - Dst: map_err
      Src: /src/opendal/core/services/dropbox/src/core.rs:332,1
    - Dst: Request::post
      Src: /src/opendal/core/services/dropbox/src/core.rs:334,1
    - Dst: http::header
      Src: /src/opendal/core/services/dropbox/src/core.rs:334,1
    - Dst: http::header
      Src: /src/opendal/core/services/dropbox/src/core.rs:334,1
    - Dst: Result::len
      Src: /src/opendal/core/services/dropbox/src/core.rs:336,1
    - Dst: extension
      Src: /src/opendal/core/services/dropbox/src/core.rs:334,1
    - Dst: extension
      Src: /src/opendal/core/services/dropbox/src/core.rs:334,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/dropbox/src/core.rs:338,1
    - Dst: body
      Src: /src/opendal/core/services/dropbox/src/core.rs:334,1
    - Dst: Buffer::from
      Src: /src/opendal/core/services/dropbox/src/core.rs:339,1
    - Dst: map_err
      Src: /src/opendal/core/services/dropbox/src/core.rs:334,1
    - Dst: DropboxCore::sign
      Src: /src/opendal/core/services/dropbox/src/core.rs:342,1
    - Dst: Result::http_transport
      Src: /src/opendal/core/services/dropbox/src/core.rs:343,1
    - Dst: Self::send
      Src: /src/opendal/core/services/dropbox/src/core.rs:343,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 43
    argCount: 3
    argNames:
    - ctx
    - from
    - to
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    constantsTouched: []
    func_position:
      end: 344
      start: 319
    functionDepth: 32
    functionLinenumber: 319
    functionLinenumberEnd: 344
    functionName: DropboxCore::dropbox_move
    functionSourceFile: /src/opendal/core/services/dropbox/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - extension
    - DropboxCore::sign
    - Self::send
    - http::header
    - Request::post
    - body
    - DropboxCore::build_path
    - Bytes::from
    - '&str::to_string'
    - ServiceOperation
    - serde_json::to_string
    - Result::len
    - Result::http_transport
    - Buffer::from
    linkageType: ''
    returnType: Result
    signature: 'pub async fn dropbox_move(&self,ctx: &OperationContext,from: &str,to:
      &str,) -> Result<Response<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/dropbox/src/core.rs:351,1
    - Dst: DropboxCore::build_path
      Src: /src/opendal/core/services/dropbox/src/core.rs:353,1
    - Dst: Default::default
      Src: /src/opendal/core/services/dropbox/src/core.rs:354,1
    - Dst: Bytes::from
      Src: /src/opendal/core/services/dropbox/src/core.rs:357,1
    - Dst: serde_json::to_string
      Src: /src/opendal/core/services/dropbox/src/core.rs:357,1
    - Dst: map_err
      Src: /src/opendal/core/services/dropbox/src/core.rs:357,1
    - Dst: Request::post
      Src: /src/opendal/core/services/dropbox/src/core.rs:359,1
    - Dst: http::header
      Src: /src/opendal/core/services/dropbox/src/core.rs:359,1
    - Dst: http::header
      Src: /src/opendal/core/services/dropbox/src/core.rs:359,1
    - Dst: Result::len
      Src: /src/opendal/core/services/dropbox/src/core.rs:361,1
    - Dst: extension
      Src: /src/opendal/core/services/dropbox/src/core.rs:359,1
    - Dst: extension
      Src: /src/opendal/core/services/dropbox/src/core.rs:359,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/dropbox/src/core.rs:363,1
    - Dst: body
      Src: /src/opendal/core/services/dropbox/src/core.rs:359,1
    - Dst: Buffer::from
      Src: /src/opendal/core/services/dropbox/src/core.rs:364,1
    - Dst: map_err
      Src: /src/opendal/core/services/dropbox/src/core.rs:359,1
    - Dst: DropboxCore::sign
      Src: /src/opendal/core/services/dropbox/src/core.rs:367,1
    - Dst: Result::http_transport
      Src: /src/opendal/core/services/dropbox/src/core.rs:369,1
    - Dst: Self::send
      Src: /src/opendal/core/services/dropbox/src/core.rs:369,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 42
    argCount: 2
    argNames:
    - ctx
    - path
    argTypes:
    - '&OperationContext'
    - '&str'
    constantsTouched: []
    func_position:
      end: 370
      start: 346
    functionDepth: 32
    functionLinenumber: 346
    functionLinenumberEnd: 370
    functionName: DropboxCore::dropbox_get_metadata
    functionSourceFile: /src/opendal/core/services/dropbox/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - extension
    - DropboxCore::sign
    - Self::send
    - Default::default
    - Request::post
    - http::header
    - body
    - DropboxCore::build_path
    - Bytes::from
    - '&str::to_string'
    - ServiceOperation
    - serde_json::to_string
    - Result::len
    - Result::http_transport
    - Buffer::from
    linkageType: ''
    returnType: Result
    signature: 'pub async fn dropbox_get_metadata(&self,ctx: &OperationContext,path:
      &str,) -> Result<Response<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: String::new
      Src: /src/opendal/core/services/dropbox/src/core.rs:386,1
    - Dst: String::new
      Src: /src/opendal/core/services/dropbox/src/core.rs:387,1
    - Dst: String::new
      Src: /src/opendal/core/services/dropbox/src/core.rs:388,1
    - Dst: String::new
      Src: /src/opendal/core/services/dropbox/src/core.rs:390,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 393
      start: 384
    functionDepth: 2
    functionLinenumber: 384
    functionLinenumberEnd: 393
    functionName: DropboxSigner::default
    functionSourceFile: /src/opendal/core/services/dropbox/src/core.rs
    functionUses: 0
    functionsReached:
    - String::new
    linkageType: ''
    returnType: Self
    signature: fn default() -> Self
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/dropbox/src/core.rs:413,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/dropbox/src/core.rs:414,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 419
      start: 411
    functionDepth: 2
    functionLinenumber: 411
    functionLinenumberEnd: 419
    functionName: DropboxUploadArgs::default
    functionSourceFile: /src/opendal/core/services/dropbox/src/core.rs
    functionUses: 0
    functionsReached:
    - '&str::to_string'
    linkageType: ''
    returnType: Self
    signature: fn default() -> Self
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Option::starts_with
      Src: /src/opendal/core/services/dropbox/src/core.rs:588,1
    - Dst: Option::starts_with
      Src: /src/opendal/core/services/dropbox/src/core.rs:589,1
    - Dst: Option::starts_with
      Src: /src/opendal/core/services/dropbox/src/core.rs:590,1
    - Dst: Some
      Src: /src/opendal/core/services/dropbox/src/core.rs:592,1
    - Dst: Option::starts_with
      Src: /src/opendal/core/services/dropbox/src/core.rs:593,1
    - Dst: Some
      Src: /src/opendal/core/services/dropbox/src/core.rs:594,1
    - Dst: Option::starts_with
      Src: /src/opendal/core/services/dropbox/src/core.rs:595,1
    - Dst: Some
      Src: /src/opendal/core/services/dropbox/src/core.rs:596,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 22
    argCount: 1
    argNames:
    - summary
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 600
      start: 587
    functionDepth: 0
    functionLinenumber: 587
    functionLinenumberEnd: 600
    functionName: error::parse_dropbox_error_summary
    functionSourceFile: /src/opendal/core/services/dropbox/src/core.rs
    functionUses: 0
    functionsReached:
    - Option::starts_with
    - Some
    linkageType: ''
    returnType: Option
    signature: 'pub fn parse_dropbox_error_summary(summary: &str) -> Option<(ErrorKind,
      bool)>'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 4
    argNames:
    - core
    - ctx
    - op
    - path
    argTypes:
    - Arc<DropboxCore>
    - OperationContext
    - OpWrite
    - String
    constantsTouched: []
    func_position:
      end: 43
      start: 36
    functionDepth: 0
    functionLinenumber: 36
    functionLinenumberEnd: 43
    functionName: DropboxWriter::new
    functionSourceFile: /src/opendal/core/services/dropbox/src/writer.rs
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(core: Arc<DropboxCore>, ctx: OperationContext, op: OpWrite,
      path: String) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Metadata::default
      Src: /src/opendal/core/services/dropbox/src/writer.rs:46,1
    - Dst: anyhow::Result::set_content_length
      Src: /src/opendal/core/services/dropbox/src/writer.rs:49,1
    - Dst: anyhow::Result::set_etag
      Src: /src/opendal/core/services/dropbox/src/writer.rs:53,1
    - Dst: anyhow::Result::set_version
      Src: /src/opendal/core/services/dropbox/src/writer.rs:57,1
    - Dst: parse::<Timestamp>
      Src: /src/opendal/core/services/dropbox/src/writer.rs:61,1
    - Dst: anyhow::Result::set_last_modified
      Src: /src/opendal/core/services/dropbox/src/writer.rs:62,1
    - Dst: client_modified.parse::<Timestamp>
      Src: /src/opendal/core/services/dropbox/src/writer.rs:64,1
    - Dst: anyhow::Result::set_last_modified
      Src: /src/opendal/core/services/dropbox/src/writer.rs:65,1
    - Dst: Ok
      Src: /src/opendal/core/services/dropbox/src/writer.rs:68,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 38
    argCount: 1
    argNames:
    - decoded_response
    argTypes:
    - DropboxMetadataResponse
    constantsTouched: []
    func_position:
      end: 69
      start: 45
    functionDepth: 3
    functionLinenumber: 45
    functionLinenumberEnd: 69
    functionName: DropboxWriter::parse_metadata
    functionSourceFile: /src/opendal/core/services/dropbox/src/writer.rs
    functionUses: 1
    functionsReached:
    - anyhow::Result::set_content_length
    - Metadata::default
    - parse::<Timestamp>
    - Ok
    - anyhow::Result::set_last_modified
    - client_modified.parse::<Timestamp>
    - anyhow::Result::set_version
    - anyhow::Result::set_etag
    linkageType: ''
    returnType: Result
    signature: 'fn parse_metadata(decoded_response: DropboxMetadataResponse) -> Result<Metadata>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: dropbox_update
      Src: /src/opendal/core/services/dropbox/src/writer.rs:74,1
    - Dst: Some
      Src: /src/opendal/core/services/dropbox/src/writer.rs:76,1
    - Dst: Result::len
      Src: /src/opendal/core/services/dropbox/src/writer.rs:76,1
    - Dst: status
      Src: /src/opendal/core/services/dropbox/src/writer.rs:78,1
    - Dst: into_body
      Src: /src/opendal/core/services/dropbox/src/writer.rs:81,1
    - Dst: serde_json::from_reader
      Src: /src/opendal/core/services/dropbox/src/writer.rs:83,1
    - Dst: Bytes::reader
      Src: /src/opendal/core/services/dropbox/src/writer.rs:83,1
    - Dst: map_err
      Src: /src/opendal/core/services/dropbox/src/writer.rs:83,1
    - Dst: DropboxWriter::parse_metadata
      Src: /src/opendal/core/services/dropbox/src/writer.rs:84,1
    - Dst: Ok
      Src: /src/opendal/core/services/dropbox/src/writer.rs:85,1
    - Dst: Err
      Src: /src/opendal/core/services/dropbox/src/writer.rs:87,1
    - Dst: super::core::parse_error
      Src: /src/opendal/core/services/dropbox/src/writer.rs:87,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 31
    argCount: 1
    argNames:
    - bs
    argTypes:
    - Buffer
    constantsTouched: []
    func_position:
      end: 89
      start: 73
    functionDepth: 33
    functionLinenumber: 73
    functionLinenumberEnd: 89
    functionName: DropboxWriter::write_once
    functionSourceFile: /src/opendal/core/services/dropbox/src/writer.rs
    functionUses: 0
    functionsReached:
    - map_err
    - status
    - Ok
    - DropboxWriter::parse_metadata
    - serde_json::from_reader
    - into_body
    - Some
    - dropbox_update
    - Err
    - Result::len
    - super::core::parse_error
    - Bytes::reader
    linkageType: ''
    returnType: Result
    signature: 'async fn write_once(&self, bs: Buffer) -> Result<Metadata>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: register::<Dropbox>
      Src: /src/opendal/core/services/dropbox/src/lib.rs:39,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - registry
    argTypes:
    - '&opendal_core::OperatorRegistry'
    constantsTouched: []
    func_position:
      end: 40
      start: 38
    functionDepth: 0
    functionLinenumber: 38
    functionLinenumberEnd: 40
    functionName: register_dropbox_service
    functionSourceFile: /src/opendal/core/services/dropbox/src/lib.rs
    functionUses: 1
    functionsReached:
    - register::<Dropbox>
    linkageType: ''
    returnType: void
    signature: 'pub fn register_dropbox_service(registry: &opendal_core::OperatorRegistry)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::debug_struct
      Src: /src/opendal/core/services/dropbox/src/backend.rs:49,1
    - Dst: field
      Src: /src/opendal/core/services/dropbox/src/backend.rs:49,1
    - Dst: finish_non_exhaustive
      Src: /src/opendal/core/services/dropbox/src/backend.rs:49,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - f
    argTypes:
    - '&mut std::fmt::Formatter<''_>'
    constantsTouched: []
    func_position:
      end: 52
      start: 48
    functionDepth: 5
    functionLinenumber: 48
    functionLinenumberEnd: 52
    functionName: DropboxBuilder::fmt
    functionSourceFile: /src/opendal/core/services/dropbox/src/backend.rs
    functionUses: 0
    functionsReached:
    - field
    - Result::debug_struct
    - finish_non_exhaustive
    linkageType: ''
    returnType: std::fmt::Result
    signature: 'fn fmt(&self, f: &mut std::fmt::Formatter<''_>) -> std::fmt::Result'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::is_empty
      Src: /src/opendal/core/services/dropbox/src/backend.rs:60,1
    - Dst: Some
      Src: /src/opendal/core/services/dropbox/src/backend.rs:63,1
    - Dst: Result::to_string
      Src: /src/opendal/core/services/dropbox/src/backend.rs:63,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - root
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 67
      start: 59
    functionDepth: 4
    functionLinenumber: 59
    functionLinenumberEnd: 67
    functionName: DropboxBuilder::root
    functionSourceFile: /src/opendal/core/services/dropbox/src/backend.rs
    functionUses: 0
    functionsReached:
    - Result::is_empty
    - Result::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn root(mut self, root: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Some
      Src: /src/opendal/core/services/dropbox/src/backend.rs:76,1
    - Dst: to_string
      Src: /src/opendal/core/services/dropbox/src/backend.rs:76,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - access_token
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 78
      start: 75
    functionDepth: 2
    functionLinenumber: 75
    functionLinenumberEnd: 78
    functionName: DropboxBuilder::access_token
    functionSourceFile: /src/opendal/core/services/dropbox/src/backend.rs
    functionUses: 0
    functionsReached:
    - to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn access_token(mut self, access_token: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Some
      Src: /src/opendal/core/services/dropbox/src/backend.rs:86,1
    - Dst: Self::to_string
      Src: /src/opendal/core/services/dropbox/src/backend.rs:86,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - refresh_token
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 88
      start: 85
    functionDepth: 2
    functionLinenumber: 85
    functionLinenumberEnd: 88
    functionName: DropboxBuilder::refresh_token
    functionSourceFile: /src/opendal/core/services/dropbox/src/backend.rs
    functionUses: 0
    functionsReached:
    - Self::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn refresh_token(mut self, refresh_token: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Some
      Src: /src/opendal/core/services/dropbox/src/backend.rs:94,1
    - Dst: Self::to_string
      Src: /src/opendal/core/services/dropbox/src/backend.rs:94,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - client_id
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 96
      start: 93
    functionDepth: 2
    functionLinenumber: 93
    functionLinenumberEnd: 96
    functionName: DropboxBuilder::client_id
    functionSourceFile: /src/opendal/core/services/dropbox/src/backend.rs
    functionUses: 0
    functionsReached:
    - Self::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn client_id(mut self, client_id: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Some
      Src: /src/opendal/core/services/dropbox/src/backend.rs:102,1
    - Dst: Self::to_string
      Src: /src/opendal/core/services/dropbox/src/backend.rs:102,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - client_secret
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 104
      start: 101
    functionDepth: 2
    functionLinenumber: 101
    functionLinenumberEnd: 104
    functionName: DropboxBuilder::client_secret
    functionSourceFile: /src/opendal/core/services/dropbox/src/backend.rs
    functionUses: 0
    functionsReached:
    - Self::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn client_secret(mut self, client_secret: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: normalize_root
      Src: /src/opendal/core/services/dropbox/src/backend.rs:111,1
    - Dst: unwrap_or_default
      Src: /src/opendal/core/services/dropbox/src/backend.rs:111,1
    - Dst: Default::default
      Src: /src/opendal/core/services/dropbox/src/backend.rs:118,1
    - Dst: ok_or_else
      Src: /src/opendal/core/services/dropbox/src/backend.rs:121,1
    - Dst: Error::new
      Src: /src/opendal/core/services/dropbox/src/backend.rs:122,1
    - Dst: Self::with_context
      Src: /src/opendal/core/services/dropbox/src/backend.rs:122,1
    - Dst: ok_or_else
      Src: /src/opendal/core/services/dropbox/src/backend.rs:128,1
    - Dst: Error::new
      Src: /src/opendal/core/services/dropbox/src/backend.rs:129,1
    - Dst: Self::with_context
      Src: /src/opendal/core/services/dropbox/src/backend.rs:129,1
    - Dst: Default::default
      Src: /src/opendal/core/services/dropbox/src/backend.rs:140,1
    - Dst: Err
      Src: /src/opendal/core/services/dropbox/src/backend.rs:144,1
    - Dst: Error::new
      Src: /src/opendal/core/services/dropbox/src/backend.rs:144,1
    - Dst: Self::with_context
      Src: /src/opendal/core/services/dropbox/src/backend.rs:144,1
    - Dst: Err
      Src: /src/opendal/core/services/dropbox/src/backend.rs:151,1
    - Dst: Error::new
      Src: /src/opendal/core/services/dropbox/src/backend.rs:151,1
    - Dst: Self::with_context
      Src: /src/opendal/core/services/dropbox/src/backend.rs:151,1
    - Dst: Ok
      Src: /src/opendal/core/services/dropbox/src/backend.rs:159,1
    - Dst: Arc::new
      Src: /src/opendal/core/services/dropbox/src/backend.rs:160,1
    - Dst: ServiceInfo::new
      Src: /src/opendal/core/services/dropbox/src/backend.rs:161,1
    - Dst: Default::default
      Src: /src/opendal/core/services/dropbox/src/backend.rs:183,1
    - Dst: Arc::new
      Src: /src/opendal/core/services/dropbox/src/backend.rs:186,1
    - Dst: Mutex::new
      Src: /src/opendal/core/services/dropbox/src/backend.rs:186,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 56
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 189
      start: 110
    functionDepth: 34
    functionLinenumber: 110
    functionLinenumberEnd: 189
    functionName: DropboxBuilder::build
    functionSourceFile: /src/opendal/core/services/dropbox/src/backend.rs
    functionUses: 0
    functionsReached:
    - ServiceInfo::new
    - Ok
    - Default::default
    - Arc::new
    - normalize_root
    - Error::new
    - Err
    - Self::with_context
    - unwrap_or_default
    - Mutex::new
    - ok_or_else
    linkageType: ''
    returnType: Result
    signature: fn build(self) -> Result<impl Service>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: clone
      Src: /src/opendal/core/services/dropbox/src/backend.rs:205,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 206
      start: 204
    functionDepth: 2
    functionLinenumber: 204
    functionLinenumberEnd: 206
    functionName: DropboxBackend::info
    functionSourceFile: /src/opendal/core/services/dropbox/src/backend.rs
    functionUses: 0
    functionsReached:
    - clone
    linkageType: ''
    returnType: ServiceInfo
    signature: fn info(&self) -> ServiceInfo
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 210
      start: 208
    functionDepth: 0
    functionLinenumber: 208
    functionLinenumberEnd: 210
    functionName: DropboxBackend::capability
    functionSourceFile: /src/opendal/core/services/dropbox/src/backend.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Capability
    signature: fn capability(&self) -> Capability
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: dropbox_get_metadata
      Src: /src/opendal/core/services/dropbox/src/backend.rs:219,1
    - Dst: status
      Src: /src/opendal/core/services/dropbox/src/backend.rs:220,1
    - Dst: into_body
      Src: /src/opendal/core/services/dropbox/src/backend.rs:221,1
    - Dst: serde_json::from_reader
      Src: /src/opendal/core/services/dropbox/src/backend.rs:223,1
    - Dst: Bytes::reader
      Src: /src/opendal/core/services/dropbox/src/backend.rs:223,1
    - Dst: map_err
      Src: /src/opendal/core/services/dropbox/src/backend.rs:223,1
    - Dst: Ok
      Src: /src/opendal/core/services/dropbox/src/backend.rs:225,1
    - Dst: RpCreateDir::default
      Src: /src/opendal/core/services/dropbox/src/backend.rs:225,1
    - Dst: Err
      Src: /src/opendal/core/services/dropbox/src/backend.rs:228,1
    - Dst: Error::new
      Src: /src/opendal/core/services/dropbox/src/backend.rs:228,1
    - Dst: dropbox_create_folder
      Src: /src/opendal/core/services/dropbox/src/backend.rs:235,1
    - Dst: Ok
      Src: /src/opendal/core/services/dropbox/src/backend.rs:236,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 40
    argCount: 3
    argNames:
    - ctx
    - path
    - _args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpCreateDir
    constantsTouched: []
    func_position:
      end: 237
      start: 212
    functionDepth: 33
    functionLinenumber: 212
    functionLinenumberEnd: 237
    functionName: DropboxBackend::create_dir
    functionSourceFile: /src/opendal/core/services/dropbox/src/backend.rs
    functionUses: 0
    functionsReached:
    - map_err
    - status
    - Ok
    - dropbox_get_metadata
    - RpCreateDir::default
    - serde_json::from_reader
    - into_body
    - Err
    - Error::new
    - dropbox_create_folder
    - Bytes::reader
    linkageType: ''
    returnType: Result
    signature: 'async fn create_dir(&self,ctx: &OperationContext,path: &str,_args:
      OpCreateDir,) -> Result<RpCreateDir>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: dropbox_get_metadata
      Src: /src/opendal/core/services/dropbox/src/backend.rs:240,1
    - Dst: status
      Src: /src/opendal/core/services/dropbox/src/backend.rs:241,1
    - Dst: into_body
      Src: /src/opendal/core/services/dropbox/src/backend.rs:244,1
    - Dst: serde_json::from_reader
      Src: /src/opendal/core/services/dropbox/src/backend.rs:246,1
    - Dst: Bytes::reader
      Src: /src/opendal/core/services/dropbox/src/backend.rs:246,1
    - Dst: map_err
      Src: /src/opendal/core/services/dropbox/src/backend.rs:246,1
    - Dst: as_str
      Src: /src/opendal/core/services/dropbox/src/backend.rs:247,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/dropbox/src/backend.rs:253,1
    - Dst: client_modified.parse::<Timestamp>
      Src: /src/opendal/core/services/dropbox/src/backend.rs:259,1
    - Dst: anyhow::Result::set_last_modified
      Src: /src/opendal/core/services/dropbox/src/backend.rs:260,1
    - Dst: anyhow::Result::set_content_length
      Src: /src/opendal/core/services/dropbox/src/backend.rs:263,1
    - Dst: Err
      Src: /src/opendal/core/services/dropbox/src/backend.rs:265,1
    - Dst: Error::new
      Src: /src/opendal/core/services/dropbox/src/backend.rs:265,1
    - Dst: Ok
      Src: /src/opendal/core/services/dropbox/src/backend.rs:271,1
    - Dst: RpStat::new
      Src: /src/opendal/core/services/dropbox/src/backend.rs:271,1
    - Dst: Err
      Src: /src/opendal/core/services/dropbox/src/backend.rs:273,1
    - Dst: parse_error
      Src: /src/opendal/core/services/dropbox/src/backend.rs:273,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 46
    argCount: 3
    argNames:
    - ctx
    - path
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpStat
    constantsTouched: []
    func_position:
      end: 275
      start: 239
    functionDepth: 33
    functionLinenumber: 239
    functionLinenumberEnd: 275
    functionName: DropboxBackend::stat
    functionSourceFile: /src/opendal/core/services/dropbox/src/backend.rs
    functionUses: 0
    functionsReached:
    - map_err
    - Metadata::new
    - anyhow::Result::set_content_length
    - status
    - Ok
    - dropbox_get_metadata
    - serde_json::from_reader
    - anyhow::Result::set_last_modified
    - into_body
    - RpStat::new
    - client_modified.parse::<Timestamp>
    - Err
    - Error::new
    - as_str
    - parse_error
    - Bytes::reader
    linkageType: ''
    returnType: Result
    signature: 'async fn stat(&self, ctx: &OperationContext, path: &str, _: OpStat)
      -> Result<RpStat>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/core/services/dropbox/src/backend.rs:278,1
    - Dst: oio::StreamReader::new
      Src: /src/opendal/core/services/dropbox/src/backend.rs:278,1
    - Dst: DropboxReader::new
      Src: /src/opendal/core/services/dropbox/src/backend.rs:278,1
    - Dst: DropboxBackend::clone
      Src: /src/opendal/core/services/dropbox/src/backend.rs:279,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/dropbox/src/backend.rs:280,1
    - Dst: Ok
      Src: /src/opendal/core/services/dropbox/src/backend.rs:286,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpRead
    constantsTouched: []
    func_position:
      end: 287
      start: 276
    functionDepth: 3
    functionLinenumber: 276
    functionLinenumberEnd: 287
    functionName: DropboxBackend::read
    functionSourceFile: /src/opendal/core/services/dropbox/src/backend.rs
    functionUses: 0
    functionsReached:
    - Result::clone
    - DropboxBackend::clone
    - DropboxReader::new
    - Ok
    - oio::StreamReader::new
    linkageType: ''
    returnType: Result
    signature: 'fn read(&self, ctx: &OperationContext, path: &str, args: OpRead) ->
      Result<Self::Reader>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/core/services/dropbox/src/backend.rs:291,1
    - Dst: oio::OneShotWriter::new
      Src: /src/opendal/core/services/dropbox/src/backend.rs:291,1
    - Dst: DropboxWriter::new
      Src: /src/opendal/core/services/dropbox/src/backend.rs:291,1
    - Dst: clone
      Src: /src/opendal/core/services/dropbox/src/backend.rs:292,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/dropbox/src/backend.rs:293,1
    - Dst: String::from
      Src: /src/opendal/core/services/dropbox/src/backend.rs:295,1
    - Dst: Ok
      Src: /src/opendal/core/services/dropbox/src/backend.rs:299,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpWrite
    constantsTouched: []
    func_position:
      end: 300
      start: 289
    functionDepth: 31
    functionLinenumber: 289
    functionLinenumberEnd: 300
    functionName: DropboxBackend::write
    functionSourceFile: /src/opendal/core/services/dropbox/src/backend.rs
    functionUses: 0
    functionsReached:
    - Result::clone
    - Ok
    - String::from
    - clone
    - oio::OneShotWriter::new
    - DropboxWriter::new
    linkageType: ''
    returnType: Result
    signature: 'fn write(&self, ctx: &OperationContext, path: &str, args: OpWrite)
      -> Result<Self::Writer>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/core/services/dropbox/src/backend.rs:304,1
    - Dst: oio::OneShotDeleter::new
      Src: /src/opendal/core/services/dropbox/src/backend.rs:304,1
    - Dst: DropboxDeleter::new
      Src: /src/opendal/core/services/dropbox/src/backend.rs:304,1
    - Dst: clone
      Src: /src/opendal/core/services/dropbox/src/backend.rs:305,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/dropbox/src/backend.rs:306,1
    - Dst: Ok
      Src: /src/opendal/core/services/dropbox/src/backend.rs:310,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - '&OperationContext'
    constantsTouched: []
    func_position:
      end: 311
      start: 302
    functionDepth: 2
    functionLinenumber: 302
    functionLinenumberEnd: 311
    functionName: DropboxBackend::delete
    functionSourceFile: /src/opendal/core/services/dropbox/src/backend.rs
    functionUses: 0
    functionsReached:
    - oio::OneShotDeleter::new
    - Result::clone
    - Ok
    - clone
    - DropboxDeleter::new
    linkageType: ''
    returnType: Result
    signature: 'fn delete(&self, ctx: &OperationContext) -> Result<Self::Deleter>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/core/services/dropbox/src/backend.rs:315,1
    - Dst: oio::PageLister::new
      Src: /src/opendal/core/services/dropbox/src/backend.rs:315,1
    - Dst: DropboxLister::new
      Src: /src/opendal/core/services/dropbox/src/backend.rs:315,1
    - Dst: clone
      Src: /src/opendal/core/services/dropbox/src/backend.rs:316,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/dropbox/src/backend.rs:317,1
    - Dst: to_string
      Src: /src/opendal/core/services/dropbox/src/backend.rs:318,1
    - Dst: OpStat::recursive
      Src: /src/opendal/core/services/dropbox/src/backend.rs:319,1
    - Dst: OpStat::limit
      Src: /src/opendal/core/services/dropbox/src/backend.rs:320,1
    - Dst: Ok
      Src: /src/opendal/core/services/dropbox/src/backend.rs:324,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 16
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpList
    constantsTouched: []
    func_position:
      end: 325
      start: 313
    functionDepth: 36
    functionLinenumber: 313
    functionLinenumberEnd: 325
    functionName: DropboxBackend::list
    functionSourceFile: /src/opendal/core/services/dropbox/src/backend.rs
    functionUses: 0
    functionsReached:
    - Result::clone
    - to_string
    - Ok
    - clone
    - oio::PageLister::new
    - DropboxLister::new
    - OpStat::limit
    - OpStat::recursive
    linkageType: ''
    returnType: Result
    signature: 'fn list(&self, ctx: &OperationContext, path: &str, args: OpList) ->
      Result<Self::Lister>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: clone
      Src: /src/opendal/core/services/dropbox/src/backend.rs:335,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/dropbox/src/backend.rs:336,1
    - Dst: Result::to_string
      Src: /src/opendal/core/services/dropbox/src/backend.rs:337,1
    - Dst: Result::to_string
      Src: /src/opendal/core/services/dropbox/src/backend.rs:338,1
    - Dst: Ok
      Src: /src/opendal/core/services/dropbox/src/backend.rs:340,1
    - Dst: oio::OneShotCopier::new
      Src: /src/opendal/core/services/dropbox/src/backend.rs:340,1
    - Dst: CompfsCore::dropbox_copy
      Src: /src/opendal/core/services/dropbox/src/backend.rs:341,1
    - Dst: status
      Src: /src/opendal/core/services/dropbox/src/backend.rs:342,1
    - Dst: Ok
      Src: /src/opendal/core/services/dropbox/src/backend.rs:345,1
    - Dst: Metadata::default
      Src: /src/opendal/core/services/dropbox/src/backend.rs:345,1
    - Dst: parse_error
      Src: /src/opendal/core/services/dropbox/src/backend.rs:347,1
    - Dst: Error::kind
      Src: /src/opendal/core/services/dropbox/src/backend.rs:348,1
    - Dst: Ok
      Src: /src/opendal/core/services/dropbox/src/backend.rs:349,1
    - Dst: Metadata::default
      Src: /src/opendal/core/services/dropbox/src/backend.rs:349,1
    - Dst: Err
      Src: /src/opendal/core/services/dropbox/src/backend.rs:350,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 32
    argCount: 5
    argNames:
    - ctx
    - from
    - to
    - _opts
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    - OpCopy
    - OpCopier
    constantsTouched: []
    func_position:
      end: 355
      start: 327
    functionDepth: 33
    functionLinenumber: 327
    functionLinenumberEnd: 355
    functionName: DropboxBackend::copy
    functionSourceFile: /src/opendal/core/services/dropbox/src/backend.rs
    functionUses: 0
    functionsReached:
    - Result::clone
    - Metadata::default
    - Result::to_string
    - Ok
    - status
    - parse_error
    - clone
    - Err
    - CompfsCore::dropbox_copy
    - Error::kind
    - oio::OneShotCopier::new
    linkageType: ''
    returnType: Result
    signature: 'fn copy(&self,ctx: &OperationContext,from: &str,to: &str,_: OpCopy,_opts:
      OpCopier,) -> Result<Self::Copier>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: dropbox_move
      Src: /src/opendal/core/services/dropbox/src/backend.rs:364,1
    - Dst: status
      Src: /src/opendal/core/services/dropbox/src/backend.rs:366,1
    - Dst: Ok
      Src: /src/opendal/core/services/dropbox/src/backend.rs:369,1
    - Dst: RpRename::default
      Src: /src/opendal/core/services/dropbox/src/backend.rs:369,1
    - Dst: parse_error
      Src: /src/opendal/core/services/dropbox/src/backend.rs:371,1
    - Dst: Error::kind
      Src: /src/opendal/core/services/dropbox/src/backend.rs:372,1
    - Dst: Ok
      Src: /src/opendal/core/services/dropbox/src/backend.rs:373,1
    - Dst: RpRename::default
      Src: /src/opendal/core/services/dropbox/src/backend.rs:373,1
    - Dst: Err
      Src: /src/opendal/core/services/dropbox/src/backend.rs:374,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 19
    argCount: 4
    argNames:
    - ctx
    - from
    - to
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    - OpRename
    constantsTouched: []
    func_position:
      end: 378
      start: 357
    functionDepth: 33
    functionLinenumber: 357
    functionLinenumberEnd: 378
    functionName: DropboxBackend::rename
    functionSourceFile: /src/opendal/core/services/dropbox/src/backend.rs
    functionUses: 0
    functionsReached:
    - status
    - Ok
    - parse_error
    - Err
    - Error::kind
    - RpRename::default
    - dropbox_move
    linkageType: ''
    returnType: Result
    signature: 'async fn rename(&self,ctx: &OperationContext,from: &str,to: &str,_:
      OpRename,) -> Result<RpRename>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/core/services/dropbox/src/backend.rs:386,1
    - Dst: Error::new
      Src: /src/opendal/core/services/dropbox/src/backend.rs:386,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - _ctx
    - _path
    - _args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpPresign
    constantsTouched: []
    func_position:
      end: 390
      start: 380
    functionDepth: 36
    functionLinenumber: 380
    functionLinenumberEnd: 390
    functionName: DropboxBackend::presign
    functionSourceFile: /src/opendal/core/services/dropbox/src/backend.rs
    functionUses: 0
    functionsReached:
    - Error::new
    - Err
    linkageType: ''
    returnType: Result
    signature: 'async fn presign(&self,_ctx: &OperationContext,_path: &str,_args:
      OpPresign,) -> Result<RpPresign>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::debug_struct
      Src: /src/opendal/core/services/gcs/src/config.rs:115,1
    - Dst: field
      Src: /src/opendal/core/services/gcs/src/config.rs:115,1
    - Dst: field
      Src: /src/opendal/core/services/gcs/src/config.rs:115,1
    - Dst: field
      Src: /src/opendal/core/services/gcs/src/config.rs:115,1
    - Dst: field
      Src: /src/opendal/core/services/gcs/src/config.rs:115,1
    - Dst: finish_non_exhaustive
      Src: /src/opendal/core/services/gcs/src/config.rs:115,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 20
    argCount: 1
    argNames:
    - f
    argTypes:
    - '&mut std::fmt::Formatter<''_>'
    constantsTouched: []
    func_position:
      end: 121
      start: 114
    functionDepth: 5
    functionLinenumber: 114
    functionLinenumberEnd: 121
    functionName: GcsConfig::fmt
    functionSourceFile: /src/opendal/core/services/gcs/src/config.rs
    functionUses: 0
    functionsReached:
    - field
    - Result::debug_struct
    - finish_non_exhaustive
    linkageType: ''
    returnType: std::fmt::Result
    signature: 'fn fmt(&self, f: &mut std::fmt::Formatter<''_>) -> std::fmt::Result'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::options
      Src: /src/opendal/core/services/gcs/src/config.rs:128,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/gcs/src/config.rs:128,1
    - Dst: Result::name
      Src: /src/opendal/core/services/gcs/src/config.rs:130,1
    - Dst: Result::insert
      Src: /src/opendal/core/services/gcs/src/config.rs:131,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/gcs/src/config.rs:131,1
    - Dst: Result::to_string
      Src: /src/opendal/core/services/gcs/src/config.rs:131,1
    - Dst: Result::root
      Src: /src/opendal/core/services/gcs/src/config.rs:134,1
    - Dst: Result::insert
      Src: /src/opendal/core/services/gcs/src/config.rs:135,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/gcs/src/config.rs:135,1
    - Dst: Result::to_string
      Src: /src/opendal/core/services/gcs/src/config.rs:135,1
    - Dst: Self::from_iter
      Src: /src/opendal/core/services/gcs/src/config.rs:138,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 27
    argCount: 1
    argNames:
    - uri
    argTypes:
    - '&opendal_core::OperatorUri'
    constantsTouched: []
    func_position:
      end: 139
      start: 127
    functionDepth: 35
    functionLinenumber: 127
    functionLinenumberEnd: 139
    functionName: GcsConfig::from_uri
    functionSourceFile: /src/opendal/core/services/gcs/src/config.rs
    functionUses: 0
    functionsReached:
    - Result::clone
    - Self::from_iter
    - Result::to_string
    - Result::insert
    - Result::name
    - '&str::to_string'
    - Result::root
    - Result::options
    linkageType: ''
    returnType: opendal_core::Result
    signature: 'fn from_uri(uri: &opendal_core::OperatorUri) -> opendal_core::Result<Self>'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 146
      start: 141
    functionDepth: 0
    functionLinenumber: 141
    functionLinenumberEnd: 146
    functionName: GcsConfig::into_builder
    functionSourceFile: /src/opendal/core/services/gcs/src/config.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Self::Builder
    signature: fn into_builder(self) -> Self::Builder
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: serde_json::from_str
      Src: /src/opendal/core/services/gcs/src/config.rs:157,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/services/gcs/src/config.rs:157,1
    - Dst: serde_json::from_str
      Src: /src/opendal/core/services/gcs/src/config.rs:161,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/services/gcs/src/config.rs:161,1
    - Dst: serde_json::from_str
      Src: /src/opendal/core/services/gcs/src/config.rs:165,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/services/gcs/src/config.rs:165,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 167
      start: 155
    functionDepth: 34
    functionLinenumber: 155
    functionLinenumberEnd: 167
    functionName: tests::test_bucket_aliases
    functionSourceFile: /src/opendal/core/services/gcs/src/config.rs
    functionUses: 0
    functionsReached:
    - Result::unwrap
    - serde_json::from_str
    linkageType: ''
    returnType: void
    signature: fn test_bucket_aliases()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: serde_json::from_str
      Src: /src/opendal/core/services/gcs/src/config.rs:172,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/services/gcs/src/config.rs:172,1
    - Dst: serde_json::from_str
      Src: /src/opendal/core/services/gcs/src/config.rs:176,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/services/gcs/src/config.rs:176,1
    - Dst: serde_json::from_str
      Src: /src/opendal/core/services/gcs/src/config.rs:183,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/services/gcs/src/config.rs:183,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 188
      start: 170
    functionDepth: 34
    functionLinenumber: 170
    functionLinenumberEnd: 188
    functionName: tests::test_service_account_aliases
    functionSourceFile: /src/opendal/core/services/gcs/src/config.rs
    functionUses: 0
    functionsReached:
    - Result::unwrap
    - serde_json::from_str
    linkageType: ''
    returnType: void
    signature: fn test_service_account_aliases()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: serde_json::from_str
      Src: /src/opendal/core/services/gcs/src/config.rs:193,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/services/gcs/src/config.rs:193,1
    - Dst: serde_json::from_str
      Src: /src/opendal/core/services/gcs/src/config.rs:197,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/services/gcs/src/config.rs:197,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 199
      start: 191
    functionDepth: 34
    functionLinenumber: 191
    functionLinenumberEnd: 199
    functionName: tests::test_credential_aliases
    functionSourceFile: /src/opendal/core/services/gcs/src/config.rs
    functionUses: 0
    functionsReached:
    - Result::unwrap
    - serde_json::from_str
    linkageType: ''
    returnType: void
    signature: fn test_credential_aliases()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: serde_json::from_str
      Src: /src/opendal/core/services/gcs/src/config.rs:204,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/services/gcs/src/config.rs:204,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 209
      start: 202
    functionDepth: 34
    functionLinenumber: 202
    functionLinenumberEnd: 209
    functionName: tests::test_credential_path_aliases
    functionSourceFile: /src/opendal/core/services/gcs/src/config.rs
    functionUses: 0
    functionsReached:
    - Result::unwrap
    - serde_json::from_str
    linkageType: ''
    returnType: void
    signature: fn test_credential_path_aliases()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: serde_json::from_str
      Src: /src/opendal/core/services/gcs/src/config.rs:214,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/services/gcs/src/config.rs:214,1
    - Dst: serde_json::from_str
      Src: /src/opendal/core/services/gcs/src/config.rs:218,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/services/gcs/src/config.rs:218,1
    - Dst: serde_json::from_str
      Src: /src/opendal/core/services/gcs/src/config.rs:222,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/services/gcs/src/config.rs:222,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 227
      start: 212
    functionDepth: 34
    functionLinenumber: 212
    functionLinenumberEnd: 227
    functionName: tests::test_skip_signature_aliases
    functionSourceFile: /src/opendal/core/services/gcs/src/config.rs
    functionUses: 0
    functionsReached:
    - Result::unwrap
    - serde_json::from_str
    linkageType: ''
    returnType: void
    signature: fn test_skip_signature_aliases()
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - core
    - ctx
    argTypes:
    - Arc<GcsCore>
    - OperationContext
    constantsTouched: []
    func_position:
      end: 36
      start: 34
    functionDepth: 0
    functionLinenumber: 34
    functionLinenumberEnd: 36
    functionName: GcsDeleter::new
    functionSourceFile: /src/opendal/core/services/gcs/src/deleter.rs
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(core: Arc<GcsCore>, ctx: OperationContext) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: gcs_delete_object
      Src: /src/opendal/core/services/gcs/src/deleter.rs:41,1
    - Dst: status
      Src: /src/opendal/core/services/gcs/src/deleter.rs:44,1
    - Dst: is_success
      Src: /src/opendal/core/services/gcs/src/deleter.rs:44,1
    - Dst: status
      Src: /src/opendal/core/services/gcs/src/deleter.rs:44,1
    - Dst: Ok
      Src: /src/opendal/core/services/gcs/src/deleter.rs:45,1
    - Dst: Err
      Src: /src/opendal/core/services/gcs/src/deleter.rs:47,1
    - Dst: super::core::parse_error
      Src: /src/opendal/core/services/gcs/src/deleter.rs:47,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 22
    argCount: 2
    argNames:
    - path
    argTypes:
    - String
    - OpDelete
    constantsTouched: []
    func_position:
      end: 49
      start: 40
    functionDepth: 34
    functionLinenumber: 40
    functionLinenumberEnd: 49
    functionName: GcsDeleter::delete_once
    functionSourceFile: /src/opendal/core/services/gcs/src/deleter.rs
    functionUses: 0
    functionsReached:
    - is_success
    - status
    - Ok
    - Err
    - gcs_delete_object
    - super::core::parse_error
    linkageType: ''
    returnType: Result
    signature: 'async fn delete_once(&self, path: String, _: OpDelete) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::into_iter
      Src: /src/opendal/core/services/gcs/src/deleter.rs:52,1
    - Dst: map
      Src: /src/opendal/core/services/gcs/src/deleter.rs:52,1
    - Dst: collect
      Src: /src/opendal/core/services/gcs/src/deleter.rs:52,1
    - Dst: gcs_delete_objects
      Src: /src/opendal/core/services/gcs/src/deleter.rs:53,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/gcs/src/deleter.rs:55,1
    - Dst: status
      Src: /src/opendal/core/services/gcs/src/deleter.rs:58,1
    - Dst: Err
      Src: /src/opendal/core/services/gcs/src/deleter.rs:63,1
    - Dst: super::core::parse_error
      Src: /src/opendal/core/services/gcs/src/deleter.rs:63,1
    - Dst: parse_multipart_boundary
      Src: /src/opendal/core/services/gcs/src/deleter.rs:66,1
    - Dst: headers
      Src: /src/opendal/core/services/gcs/src/deleter.rs:66,1
    - Dst: ok_or_else
      Src: /src/opendal/core/services/gcs/src/deleter.rs:66,1
    - Dst: Error::new
      Src: /src/opendal/core/services/gcs/src/deleter.rs:67,1
    - Dst: Multipart::new
      Src: /src/opendal/core/services/gcs/src/deleter.rs:72,1
    - Dst: Self::with_boundary
      Src: /src/opendal/core/services/gcs/src/deleter.rs:72,1
    - Dst: Self::parse
      Src: /src/opendal/core/services/gcs/src/deleter.rs:72,1
    - Dst: into_body
      Src: /src/opendal/core/services/gcs/src/deleter.rs:74,1
    - Dst: to_bytes
      Src: /src/opendal/core/services/gcs/src/deleter.rs:74,1
    - Dst: into_parts
      Src: /src/opendal/core/services/gcs/src/deleter.rs:75,1
    - Dst: BatchDeleteResult::default
      Src: /src/opendal/core/services/gcs/src/deleter.rs:77,1
    - Dst: (String, Metadata)::into_iter
      Src: /src/opendal/core/services/gcs/src/deleter.rs:79,1
    - Dst: enumerate
      Src: /src/opendal/core/services/gcs/src/deleter.rs:79,1
    - Dst: Self::into_response
      Src: /src/opendal/core/services/gcs/src/deleter.rs:80,1
    - Dst: clone
      Src: /src/opendal/core/services/gcs/src/deleter.rs:82,1
    - Dst: Response::status
      Src: /src/opendal/core/services/gcs/src/deleter.rs:85,1
    - Dst: Result::is_success
      Src: /src/opendal/core/services/gcs/src/deleter.rs:85,1
    - Dst: Response::status
      Src: /src/opendal/core/services/gcs/src/deleter.rs:85,1
    - Dst: push
      Src: /src/opendal/core/services/gcs/src/deleter.rs:86,1
    - Dst: OpDelete::default
      Src: /src/opendal/core/services/gcs/src/deleter.rs:86,1
    - Dst: push
      Src: /src/opendal/core/services/gcs/src/deleter.rs:88,1
    - Dst: OpDelete::default
      Src: /src/opendal/core/services/gcs/src/deleter.rs:90,1
    - Dst: super::core::parse_error
      Src: /src/opendal/core/services/gcs/src/deleter.rs:90,1
    - Dst: is_empty
      Src: /src/opendal/core/services/gcs/src/deleter.rs:95,1
    - Dst: remove
      Src: /src/opendal/core/services/gcs/src/deleter.rs:96,1
    - Dst: Err
      Src: /src/opendal/core/services/gcs/src/deleter.rs:97,1
    - Dst: Ok
      Src: /src/opendal/core/services/gcs/src/deleter.rs:100,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 94
    argCount: 1
    argNames:
    - batch
    argTypes:
    - Vec<(String, OpDelete)>
    constantsTouched: []
    func_position:
      end: 101
      start: 51
    functionDepth: 36
    functionLinenumber: 51
    functionLinenumberEnd: 101
    functionName: GcsDeleter::delete_batch
    functionSourceFile: /src/opendal/core/services/gcs/src/deleter.rs
    functionUses: 0
    functionsReached:
    - collect
    - status
    - push
    - remove
    - clone
    - map
    - BatchDeleteResult::default
    - Self::with_boundary
    - Result::clone
    - Multipart::new
    - Self::parse
    - Ok
    - headers
    - parse_multipart_boundary
    - OpDelete::default
    - ok_or_else
    - Result::into_iter
    - into_body
    - Response::status
    - is_empty
    - (String, Metadata)::into_iter
    - enumerate
    - Result::is_success
    - to_bytes
    - super::core::parse_error
    - Err
    - Error::new
    - into_parts
    - gcs_delete_objects
    - Self::into_response
    linkageType: ''
    returnType: Result
    signature: 'async fn delete_batch(&self, batch: Vec<(String, OpDelete)>) -> Result<BatchDeleteResult>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: to_string
      Src: /src/opendal/core/services/gcs/src/lister.rs:57,1
    - Dst: Result::map
      Src: /src/opendal/core/services/gcs/src/lister.rs:60,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 6
    argNames:
    - core
    - ctx
    - path
    - recursive
    - limit
    - start_after
    argTypes:
    - Arc<GcsCore>
    - OperationContext
    - '&str'
    - bool
    - Option<usize>
    - Option<&str>
    constantsTouched: []
    func_position:
      end: 62
      start: 44
    functionDepth: 2
    functionLinenumber: 44
    functionLinenumberEnd: 62
    functionName: GcsLister::new
    functionSourceFile: /src/opendal/core/services/gcs/src/lister.rs
    functionUses: 1
    functionsReached:
    - to_string
    - Result::map
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(core: Arc<GcsCore>,ctx: OperationContext,path: &str,recursive:
      bool,limit: Option<usize>,start_after: Option<&str>,) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: gcs_list_objects
      Src: /src/opendal/core/services/gcs/src/lister.rs:67,1
    - Dst: is_empty
      Src: /src/opendal/core/services/gcs/src/lister.rs:75,1
    - Dst: clone
      Src: /src/opendal/core/services/gcs/src/lister.rs:76,1
    - Dst: status
      Src: /src/opendal/core/services/gcs/src/lister.rs:83,1
    - Dst: is_success
      Src: /src/opendal/core/services/gcs/src/lister.rs:83,1
    - Dst: Err
      Src: /src/opendal/core/services/gcs/src/lister.rs:84,1
    - Dst: super::core::parse_error
      Src: /src/opendal/core/services/gcs/src/lister.rs:84,1
    - Dst: into_body
      Src: /src/opendal/core/services/gcs/src/lister.rs:86,1
    - Dst: serde_json::from_reader
      Src: /src/opendal/core/services/gcs/src/lister.rs:89,1
    - Dst: Bytes::reader
      Src: /src/opendal/core/services/gcs/src/lister.rs:89,1
    - Dst: map_err
      Src: /src/opendal/core/services/gcs/src/lister.rs:89,1
    - Dst: clone_from
      Src: /src/opendal/core/services/gcs/src/lister.rs:92,1
    - Dst: oio::Entry::new
      Src: /src/opendal/core/services/gcs/src/lister.rs:98,1
    - Dst: build_rel_path
      Src: /src/opendal/core/services/gcs/src/lister.rs:99,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/gcs/src/lister.rs:100,1
    - Dst: push_back
      Src: /src/opendal/core/services/gcs/src/lister.rs:103,1
    - Dst: build_rel_path
      Src: /src/opendal/core/services/gcs/src/lister.rs:108,1
    - Dst: is_empty
      Src: /src/opendal/core/services/gcs/src/lister.rs:109,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/gcs/src/lister.rs:110,1
    - Dst: as_ref
      Src: /src/opendal/core/services/gcs/src/lister.rs:112,1
    - Dst: Some
      Src: /src/opendal/core/services/gcs/src/lister.rs:112,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/gcs/src/lister.rs:116,1
    - Dst: EntryMode::from_path
      Src: /src/opendal/core/services/gcs/src/lister.rs:116,1
    - Dst: Result::set_content_md5
      Src: /src/opendal/core/services/gcs/src/lister.rs:119,1
    - Dst: as_str
      Src: /src/opendal/core/services/gcs/src/lister.rs:119,1
    - Dst: Result::set_etag
      Src: /src/opendal/core/services/gcs/src/lister.rs:120,1
    - Dst: as_str
      Src: /src/opendal/core/services/gcs/src/lister.rs:120,1
    - Dst: parse
      Src: /src/opendal/core/services/gcs/src/lister.rs:122,1
    - Dst: map_err
      Src: /src/opendal/core/services/gcs/src/lister.rs:122,1
    - Dst: Error::new
      Src: /src/opendal/core/services/gcs/src/lister.rs:123,1
    - Dst: Self::set_source
      Src: /src/opendal/core/services/gcs/src/lister.rs:123,1
    - Dst: Result::set_content_length
      Src: /src/opendal/core/services/gcs/src/lister.rs:125,1
    - Dst: is_empty
      Src: /src/opendal/core/services/gcs/src/lister.rs:126,1
    - Dst: Result::set_content_type
      Src: /src/opendal/core/services/gcs/src/lister.rs:127,1
    - Dst: Result::set_last_modified
      Src: /src/opendal/core/services/gcs/src/lister.rs:130,1
    - Dst: updated.parse::<Timestamp>
      Src: /src/opendal/core/services/gcs/src/lister.rs:130,1
    - Dst: oio::Entry::with
      Src: /src/opendal/core/services/gcs/src/lister.rs:132,1
    - Dst: push_back
      Src: /src/opendal/core/services/gcs/src/lister.rs:134,1
    - Dst: Ok
      Src: /src/opendal/core/services/gcs/src/lister.rs:137,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 145
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - '&mut oio::PageContext'
    constantsTouched: []
    func_position:
      end: 138
      start: 66
    functionDepth: 37
    functionLinenumber: 66
    functionLinenumberEnd: 138
    functionName: GcsLister::next_page
    functionSourceFile: /src/opendal/core/services/gcs/src/lister.rs
    functionUses: 0
    functionsReached:
    - is_success
    - updated.parse::<Timestamp>
    - status
    - serde_json::from_reader
    - clone
    - build_rel_path
    - map_err
    - Ok
    - as_str
    - oio::Entry::with
    - '&str::to_string'
    - Result::set_etag
    - Result::set_content_md5
    - Bytes::reader
    - Metadata::new
    - clone_from
    - into_body
    - is_empty
    - Some
    - parse
    - Result::set_content_type
    - Self::set_source
    - super::core::parse_error
    - oio::Entry::new
    - push_back
    - EntryMode::from_path
    - Result::set_last_modified
    - Err
    - Error::new
    - Result::set_content_length
    - as_ref
    - gcs_list_objects
    linkageType: ''
    returnType: Result
    signature: 'async fn next_page(&self, ctx: &mut oio::PageContext) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: to_string
      Src: /src/opendal/core/services/gcs/src/reader.rs:45,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 4
    argNames:
    - backend
    - ctx
    - path
    - args
    argTypes:
    - GcsBackend
    - OperationContext
    - '&str'
    - OpRead
    constantsTouched: []
    func_position:
      end: 48
      start: 36
    functionDepth: 2
    functionLinenumber: 36
    functionLinenumberEnd: 48
    functionName: GcsReader::new
    functionSourceFile: /src/opendal/core/services/gcs/src/reader.rs
    functionUses: 1
    functionsReached:
    - to_string
    linkageType: ''
    returnType: Self
    signature: 'pub(super) fn new(backend: GcsBackend,ctx: OperationContext,path:
      &str,args: OpRead,) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: as_str
      Src: /src/opendal/core/services/gcs/src/reader.rs:54,1
    - Dst: clone
      Src: /src/opendal/core/services/gcs/src/reader.rs:55,1
    - Dst: gcs_get_object
      Src: /src/opendal/core/services/gcs/src/reader.rs:56,1
    - Dst: status
      Src: /src/opendal/core/services/gcs/src/reader.rs:61,1
    - Dst: RpRead::new
      Src: /src/opendal/core/services/gcs/src/reader.rs:65,1
    - Dst: parse_into_metadata
      Src: /src/opendal/core/services/gcs/src/reader.rs:65,1
    - Dst: headers
      Src: /src/opendal/core/services/gcs/src/reader.rs:65,1
    - Dst: into_body
      Src: /src/opendal/core/services/gcs/src/reader.rs:66,1
    - Dst: into_parts
      Src: /src/opendal/core/services/gcs/src/reader.rs:69,1
    - Dst: to_buffer
      Src: /src/opendal/core/services/gcs/src/reader.rs:70,1
    - Dst: Err
      Src: /src/opendal/core/services/gcs/src/reader.rs:71,1
    - Dst: super::core::parse_error
      Src: /src/opendal/core/services/gcs/src/reader.rs:71,1
    - Dst: Response::from_parts
      Src: /src/opendal/core/services/gcs/src/reader.rs:71,1
    - Dst: Ok
      Src: /src/opendal/core/services/gcs/src/reader.rs:75,1
    - Dst: Box::new
      Src: /src/opendal/core/services/gcs/src/reader.rs:75,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 42
    argCount: 1
    argNames:
    - range
    argTypes:
    - BytesRange
    constantsTouched: []
    func_position:
      end: 76
      start: 52
    functionDepth: 37
    functionLinenumber: 52
    functionLinenumberEnd: 76
    functionName: GcsReader::open
    functionSourceFile: /src/opendal/core/services/gcs/src/reader.rs
    functionUses: 0
    functionsReached:
    - parse_into_metadata
    - to_buffer
    - status
    - Ok
    - Box::new
    - into_body
    - clone
    - Err
    - Response::from_parts
    - as_str
    - headers
    - into_parts
    - gcs_get_object
    - RpRead::new
    - super::core::parse_error
    linkageType: ''
    returnType: Result
    signature: 'async fn open(&self, range: BytesRange) -> Result<(RpRead, Box<dyn
      oio::ReadStreamDyn>)>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: object_store::Result::chunk
      Src: /src/opendal/core/services/gcs/src/copier.rs:53,1
    - Dst: Result::map
      Src: /src/opendal/core/services/gcs/src/copier.rs:53,1
    - Dst: Result::clamp
      Src: /src/opendal/core/services/gcs/src/copier.rs:54,1
    - Dst: Result::to_string
      Src: /src/opendal/core/services/gcs/src/copier.rs:61,1
    - Dst: Result::to_string
      Src: /src/opendal/core/services/gcs/src/copier.rs:62,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 14
    argCount: 6
    argNames:
    - core
    - ctx
    - from
    - to
    - args
    - opts
    argTypes:
    - Arc<GcsCore>
    - OperationContext
    - '&str'
    - '&str'
    - OpCopy
    - OpCopier
    constantsTouched: []
    func_position:
      end: 70
      start: 45
    functionDepth: 2
    functionLinenumber: 45
    functionLinenumberEnd: 70
    functionName: GcsCopier::new
    functionSourceFile: /src/opendal/core/services/gcs/src/copier.rs
    functionUses: 1
    functionsReached:
    - object_store::Result::chunk
    - Result::map
    - Result::clamp
    - Result::to_string
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(core: Arc<GcsCore>,ctx: OperationContext,from: &str,to:
      &str,args: OpCopy,opts: OpCopier,) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/core/services/gcs/src/copier.rs:76,1
    - Dst: gcs_rewrite_object
      Src: /src/opendal/core/services/gcs/src/copier.rs:79,1
    - Dst: as_deref
      Src: /src/opendal/core/services/gcs/src/copier.rs:87,1
    - Dst: status
      Src: /src/opendal/core/services/gcs/src/copier.rs:91,1
    - Dst: is_success
      Src: /src/opendal/core/services/gcs/src/copier.rs:91,1
    - Dst: Err
      Src: /src/opendal/core/services/gcs/src/copier.rs:92,1
    - Dst: super::core::parse_error
      Src: /src/opendal/core/services/gcs/src/copier.rs:92,1
    - Dst: serde_json::from_reader
      Src: /src/opendal/core/services/gcs/src/copier.rs:95,1
    - Dst: into_body
      Src: /src/opendal/core/services/gcs/src/copier.rs:95,1
    - Dst: reader
      Src: /src/opendal/core/services/gcs/src/copier.rs:95,1
    - Dst: map_err
      Src: /src/opendal/core/services/gcs/src/copier.rs:95,1
    - Dst: total_bytes_rewritten.parse::<u64>
      Src: /src/opendal/core/services/gcs/src/copier.rs:98,1
    - Dst: map_err
      Src: /src/opendal/core/services/gcs/src/copier.rs:98,1
    - Dst: Error::new
      Src: /src/opendal/core/services/gcs/src/copier.rs:99,1
    - Dst: Self::with_context
      Src: /src/opendal/core/services/gcs/src/copier.rs:99,1
    - Dst: Self::set_source
      Src: /src/opendal/core/services/gcs/src/copier.rs:99,1
    - Dst: checked_sub
      Src: /src/opendal/core/services/gcs/src/copier.rs:107,1
    - Dst: ok_or_else
      Src: /src/opendal/core/services/gcs/src/copier.rs:107,1
    - Dst: Error::new
      Src: /src/opendal/core/services/gcs/src/copier.rs:110,1
    - Dst: Self::with_context
      Src: /src/opendal/core/services/gcs/src/copier.rs:110,1
    - Dst: Self::with_context
      Src: /src/opendal/core/services/gcs/src/copier.rs:110,1
    - Dst: Some
      Src: /src/opendal/core/services/gcs/src/copier.rs:123,1
    - Dst: bool::into_metadata
      Src: /src/opendal/core/services/gcs/src/copier.rs:123,1
    - Dst: ok_or_else
      Src: /src/opendal/core/services/gcs/src/copier.rs:125,1
    - Dst: Error::new
      Src: /src/opendal/core/services/gcs/src/copier.rs:126,1
    - Dst: Some
      Src: /src/opendal/core/services/gcs/src/copier.rs:131,1
    - Dst: Ok
      Src: /src/opendal/core/services/gcs/src/copier.rs:136,1
    - Dst: Err
      Src: /src/opendal/core/services/gcs/src/copier.rs:138,1
    - Dst: Error::new
      Src: /src/opendal/core/services/gcs/src/copier.rs:139,1
    - Dst: Self::set_temporary
      Src: /src/opendal/core/services/gcs/src/copier.rs:139,1
    - Dst: try_into
      Src: /src/opendal/core/services/gcs/src/copier.rs:145,1
    - Dst: map_err
      Src: /src/opendal/core/services/gcs/src/copier.rs:145,1
    - Dst: Error::new
      Src: /src/opendal/core/services/gcs/src/copier.rs:147,1
    - Dst: Ok
      Src: /src/opendal/core/services/gcs/src/copier.rs:148,1
    - Dst: Some
      Src: /src/opendal/core/services/gcs/src/copier.rs:148,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 121
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 149
      start: 74
    functionDepth: 31
    functionLinenumber: 74
    functionLinenumberEnd: 149
    functionName: GcsCopier::next
    functionSourceFile: /src/opendal/core/services/gcs/src/copier.rs
    functionUses: 1
    functionsReached:
    - is_success
    - status
    - as_deref
    - serde_json::from_reader
    - Self::with_context
    - map_err
    - reader
    - Ok
    - Self::set_temporary
    - gcs_rewrite_object
    - ok_or_else
    - try_into
    - into_body
    - bool::into_metadata
    - Some
    - Self::set_source
    - total_bytes_rewritten.parse::<u64>
    - super::core::parse_error
    - checked_sub
    - Err
    - Error::new
    linkageType: ''
    returnType: Result
    signature: async fn next(&mut self) -> Result<Option<usize>>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: GcsCopier::next
      Src: /src/opendal/core/services/gcs/src/copier.rs:153,1
    - Dst: Ok
      Src: /src/opendal/core/services/gcs/src/copier.rs:156,1
    - Dst: clone
      Src: /src/opendal/core/services/gcs/src/copier.rs:156,1
    - Dst: unwrap_or_default
      Src: /src/opendal/core/services/gcs/src/copier.rs:156,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 157
      start: 151
    functionDepth: 32
    functionLinenumber: 151
    functionLinenumberEnd: 157
    functionName: GcsCopier::close
    functionSourceFile: /src/opendal/core/services/gcs/src/copier.rs
    functionUses: 0
    functionsReached:
    - unwrap_or_default
    - GcsCopier::next
    - clone
    - Ok
    linkageType: ''
    returnType: Result
    signature: async fn close(&mut self) -> Result<Metadata>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/core/services/gcs/src/copier.rs:163,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 164
      start: 159
    functionDepth: 0
    functionLinenumber: 159
    functionLinenumberEnd: 164
    functionName: GcsCopier::abort
    functionSourceFile: /src/opendal/core/services/gcs/src/copier.rs
    functionUses: 0
    functionsReached:
    - Ok
    linkageType: ''
    returnType: Result
    signature: async fn abort(&mut self) -> Result<()>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::debug_struct
      Src: /src/opendal/core/services/gcs/src/core.rs:77,1
    - Dst: field
      Src: /src/opendal/core/services/gcs/src/core.rs:77,1
    - Dst: field
      Src: /src/opendal/core/services/gcs/src/core.rs:77,1
    - Dst: field
      Src: /src/opendal/core/services/gcs/src/core.rs:77,1
    - Dst: finish_non_exhaustive
      Src: /src/opendal/core/services/gcs/src/core.rs:77,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 16
    argCount: 1
    argNames:
    - f
    argTypes:
    - '&mut std::fmt::Formatter<''_>'
    constantsTouched: []
    func_position:
      end: 82
      start: 76
    functionDepth: 5
    functionLinenumber: 76
    functionLinenumberEnd: 82
    functionName: GcsCore::fmt
    functionSourceFile: /src/opendal/core/services/gcs/src/core.rs
    functionUses: 0
    functionsReached:
    - field
    - Result::debug_struct
    - finish_non_exhaustive
    linkageType: ''
    returnType: std::fmt::Result
    signature: 'fn fmt(&self, f: &mut std::fmt::Formatter<''_>) -> std::fmt::Result'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: clone
      Src: /src/opendal/core/services/gcs/src/core.rs:87,1
    - Dst: with_context
      Src: /src/opendal/core/services/gcs/src/core.rs:87,1
    - Dst: clone
      Src: /src/opendal/core/services/gcs/src/core.rs:88,1
    - Dst: with_http_send
      Src: /src/opendal/core/services/gcs/src/core.rs:88,1
    - Dst: Result::http_transport
      Src: /src/opendal/core/services/gcs/src/core.rs:90,1
    - Dst: Self::clone
      Src: /src/opendal/core/services/gcs/src/core.rs:90,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 14
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - '&OperationContext'
    constantsTouched: []
    func_position:
      end: 92
      start: 86
    functionDepth: 6
    functionLinenumber: 86
    functionLinenumberEnd: 92
    functionName: GcsCore::signer
    functionSourceFile: /src/opendal/core/services/gcs/src/core.rs
    functionUses: 2
    functionsReached:
    - with_http_send
    - clone
    - with_context
    - Self::clone
    - Result::http_transport
    linkageType: ''
    returnType: Signer
    signature: 'fn signer(&self, ctx: &OperationContext) -> Signer<Credential>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/core/services/gcs/src/core.rs:96,1
    - Dst: Request<T>::into_parts
      Src: /src/opendal/core/services/gcs/src/core.rs:99,1
    - Dst: GcsCore::signer
      Src: /src/opendal/core/services/gcs/src/core.rs:101,1
    - Dst: Signer::sign
      Src: /src/opendal/core/services/gcs/src/core.rs:101,1
    - Dst: map_err
      Src: /src/opendal/core/services/gcs/src/core.rs:101,1
    - Dst: new_request_sign_error
      Src: /src/opendal/core/services/gcs/src/core.rs:104,1
    - Dst: Error::into
      Src: /src/opendal/core/services/gcs/src/core.rs:104,1
    - Dst: remove
      Src: /src/opendal/core/services/gcs/src/core.rs:112,1
    - Dst: Ok
      Src: /src/opendal/core/services/gcs/src/core.rs:114,1
    - Dst: Request::from_parts
      Src: /src/opendal/core/services/gcs/src/core.rs:114,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 28
    argCount: 2
    argNames:
    - ctx
    - req
    argTypes:
    - '&OperationContext'
    - Request<T>
    constantsTouched: []
    func_position:
      end: 115
      start: 94
    functionDepth: 35
    functionLinenumber: 94
    functionLinenumberEnd: 115
    functionName: GcsCore::sign
    functionSourceFile: /src/opendal/core/services/gcs/src/core.rs
    functionUses: 10
    functionsReached:
    - map_err
    - Error::into
    - Ok
    - remove
    - Signer::sign
    - Request<T>::into_parts
    - Request::from_parts
    - GcsCore::signer
    - new_request_sign_error
    linkageType: ''
    returnType: Result
    signature: 'pub async fn sign<T>(&self, ctx: &OperationContext, req: Request<T>)
      -> Result<Request<T>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/core/services/gcs/src/core.rs:124,1
    - Dst: Request<T>::into_parts
      Src: /src/opendal/core/services/gcs/src/core.rs:127,1
    - Dst: GcsCore::signer
      Src: /src/opendal/core/services/gcs/src/core.rs:129,1
    - Dst: Signer::sign
      Src: /src/opendal/core/services/gcs/src/core.rs:129,1
    - Dst: Some
      Src: /src/opendal/core/services/gcs/src/core.rs:130,1
    - Dst: map_err
      Src: /src/opendal/core/services/gcs/src/core.rs:129,1
    - Dst: new_request_sign_error
      Src: /src/opendal/core/services/gcs/src/core.rs:132,1
    - Dst: Error::into
      Src: /src/opendal/core/services/gcs/src/core.rs:132,1
    - Dst: remove
      Src: /src/opendal/core/services/gcs/src/core.rs:140,1
    - Dst: Ok
      Src: /src/opendal/core/services/gcs/src/core.rs:142,1
    - Dst: Request::from_parts
      Src: /src/opendal/core/services/gcs/src/core.rs:142,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 29
    argCount: 3
    argNames:
    - ctx
    - req
    - duration
    argTypes:
    - '&OperationContext'
    - Request<T>
    - Duration
    constantsTouched: []
    func_position:
      end: 143
      start: 117
    functionDepth: 35
    functionLinenumber: 117
    functionLinenumberEnd: 143
    functionName: GcsCore::sign_query
    functionSourceFile: /src/opendal/core/services/gcs/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - Error::into
    - Ok
    - remove
    - Signer::sign
    - Some
    - Request<T>::into_parts
    - Request::from_parts
    - GcsCore::signer
    - new_request_sign_error
    linkageType: ''
    returnType: Result
    signature: 'pub async fn sign_query<T>(&self,ctx: &OperationContext,req: Request<T>,duration:
      Duration,) -> Result<Request<T>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::http_transport
      Src: /src/opendal/core/services/gcs/src/core.rs:151,1
    - Dst: Self::send
      Src: /src/opendal/core/services/gcs/src/core.rs:151,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - ctx
    - req
    argTypes:
    - '&OperationContext'
    - Request<Buffer>
    constantsTouched: []
    func_position:
      end: 152
      start: 146
    functionDepth: 37
    functionLinenumber: 146
    functionLinenumberEnd: 152
    functionName: GcsCore::send
    functionSourceFile: /src/opendal/core/services/gcs/src/core.rs
    functionUses: 9
    functionsReached:
    - Result::http_transport
    - Self::send
    linkageType: ''
    returnType: Result
    signature: 'pub async fn send(&self,ctx: &OperationContext,req: Request<Buffer>,)
      -> Result<Response<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/gcs/src/core.rs:162,1
    - Dst: Request::get
      Src: /src/opendal/core/services/gcs/src/core.rs:171,1
    - Dst: OpStat::if_match
      Src: /src/opendal/core/services/gcs/src/core.rs:173,1
    - Dst: Option::header
      Src: /src/opendal/core/services/gcs/src/core.rs:174,1
    - Dst: OpStat::if_none_match
      Src: /src/opendal/core/services/gcs/src/core.rs:176,1
    - Dst: Option::header
      Src: /src/opendal/core/services/gcs/src/core.rs:177,1
    - Dst: (Vec::is_full
      Src: /src/opendal/core/services/gcs/src/core.rs:179,1
    - Dst: Option::header
      Src: /src/opendal/core/services/gcs/src/core.rs:180,1
    - Dst: (Vec::to_header
      Src: /src/opendal/core/services/gcs/src/core.rs:180,1
    - Dst: Option::extension
      Src: /src/opendal/core/services/gcs/src/core.rs:183,1
    - Dst: extension
      Src: /src/opendal/core/services/gcs/src/core.rs:183,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/gcs/src/core.rs:185,1
    - Dst: Option::body
      Src: /src/opendal/core/services/gcs/src/core.rs:187,1
    - Dst: Buffer::new
      Src: /src/opendal/core/services/gcs/src/core.rs:187,1
    - Dst: map_err
      Src: /src/opendal/core/services/gcs/src/core.rs:187,1
    - Dst: Ok
      Src: /src/opendal/core/services/gcs/src/core.rs:189,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 44
    argCount: 3
    argNames:
    - path
    - range
    - args
    argTypes:
    - '&str'
    - BytesRange
    - '&OpRead'
    constantsTouched: []
    func_position:
      end: 190
      start: 156
    functionDepth: 3
    functionLinenumber: 156
    functionLinenumberEnd: 190
    functionName: GcsCore::gcs_get_object_request
    functionSourceFile: /src/opendal/core/services/gcs/src/core.rs
    functionUses: 1
    functionsReached:
    - map_err
    - extension
    - Request::get
    - (Vec::to_header
    - Buffer::new
    - Ok
    - (Vec::is_full
    - Option::body
    - build_abs_path
    - OpStat::if_none_match
    - Option::extension
    - ServiceOperation
    - OpStat::if_match
    - Option::header
    linkageType: ''
    returnType: Result
    signature: 'pub fn gcs_get_object_request(&self,path: &str,range: BytesRange,args:
      &OpRead,) -> Result<Request<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/gcs/src/core.rs:199,1
    - Dst: Request::get
      Src: /src/opendal/core/services/gcs/src/core.rs:203,1
    - Dst: OpStat::if_match
      Src: /src/opendal/core/services/gcs/src/core.rs:205,1
    - Dst: Option::header
      Src: /src/opendal/core/services/gcs/src/core.rs:206,1
    - Dst: OpStat::if_none_match
      Src: /src/opendal/core/services/gcs/src/core.rs:208,1
    - Dst: Option::header
      Src: /src/opendal/core/services/gcs/src/core.rs:209,1
    - Dst: OpStat::if_modified_since
      Src: /src/opendal/core/services/gcs/src/core.rs:212,1
    - Dst: Option::header
      Src: /src/opendal/core/services/gcs/src/core.rs:213,1
    - Dst: Result::format_http_date
      Src: /src/opendal/core/services/gcs/src/core.rs:213,1
    - Dst: OpStat::if_unmodified_since
      Src: /src/opendal/core/services/gcs/src/core.rs:216,1
    - Dst: Option::header
      Src: /src/opendal/core/services/gcs/src/core.rs:217,1
    - Dst: Result::format_http_date
      Src: /src/opendal/core/services/gcs/src/core.rs:217,1
    - Dst: (Vec::is_full
      Src: /src/opendal/core/services/gcs/src/core.rs:219,1
    - Dst: Option::header
      Src: /src/opendal/core/services/gcs/src/core.rs:220,1
    - Dst: (Vec::to_header
      Src: /src/opendal/core/services/gcs/src/core.rs:220,1
    - Dst: Option::extension
      Src: /src/opendal/core/services/gcs/src/core.rs:223,1
    - Dst: extension
      Src: /src/opendal/core/services/gcs/src/core.rs:223,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/gcs/src/core.rs:225,1
    - Dst: Option::body
      Src: /src/opendal/core/services/gcs/src/core.rs:227,1
    - Dst: Buffer::new
      Src: /src/opendal/core/services/gcs/src/core.rs:227,1
    - Dst: map_err
      Src: /src/opendal/core/services/gcs/src/core.rs:227,1
    - Dst: Ok
      Src: /src/opendal/core/services/gcs/src/core.rs:229,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 64
    argCount: 3
    argNames:
    - path
    - range
    - args
    argTypes:
    - '&str'
    - BytesRange
    - '&OpRead'
    constantsTouched: []
    func_position:
      end: 230
      start: 193
    functionDepth: 3
    functionLinenumber: 193
    functionLinenumberEnd: 230
    functionName: GcsCore::gcs_get_object_xml_request
    functionSourceFile: /src/opendal/core/services/gcs/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - extension
    - Request::get
    - (Vec::to_header
    - Buffer::new
    - Ok
    - OpStat::if_modified_since
    - OpStat::if_unmodified_since
    - (Vec::is_full
    - Option::body
    - build_abs_path
    - OpStat::if_none_match
    - Option::extension
    - ServiceOperation
    - Result::format_http_date
    - OpStat::if_match
    - Option::header
    linkageType: ''
    returnType: Result
    signature: 'pub fn gcs_get_object_xml_request(&self,path: &str,range: BytesRange,args:
      &OpRead,) -> Result<Request<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: GcsCore::gcs_get_object_request
      Src: /src/opendal/core/services/gcs/src/core.rs:239,1
    - Dst: GcsCore::sign
      Src: /src/opendal/core/services/gcs/src/core.rs:241,1
    - Dst: Result::http_transport
      Src: /src/opendal/core/services/gcs/src/core.rs:242,1
    - Dst: Self::fetch
      Src: /src/opendal/core/services/gcs/src/core.rs:242,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 4
    argNames:
    - ctx
    - path
    - range
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - BytesRange
    - '&OpRead'
    constantsTouched: []
    func_position:
      end: 243
      start: 232
    functionDepth: 36
    functionLinenumber: 232
    functionLinenumberEnd: 243
    functionName: GcsCore::gcs_get_object
    functionSourceFile: /src/opendal/core/services/gcs/src/core.rs
    functionUses: 0
    functionsReached:
    - GcsCore::gcs_get_object_request
    - Self::fetch
    - GcsCore::sign
    - Result::http_transport
    linkageType: ''
    returnType: Result
    signature: 'pub async fn gcs_get_object(&self,ctx: &OperationContext,path: &str,range:
      BytesRange,args: &OpRead,) -> Result<Response<HttpBody>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/gcs/src/core.rs:252,1
    - Dst: as_deref
      Src: /src/opendal/core/services/gcs/src/core.rs:255,1
    - Dst: cache_control
      Src: /src/opendal/core/services/gcs/src/core.rs:256,1
    - Dst: content_type
      Src: /src/opendal/core/services/gcs/src/core.rs:257,1
    - Dst: content_encoding
      Src: /src/opendal/core/services/gcs/src/core.rs:258,1
    - Dst: user_metadata
      Src: /src/opendal/core/services/gcs/src/core.rs:259,1
    - Dst: unwrap
      Src: /src/opendal/core/services/gcs/src/core.rs:275,1
    - Dst: if_not_exists
      Src: /src/opendal/core/services/gcs/src/core.rs:281,1
    - Dst: unwrap
      Src: /src/opendal/core/services/gcs/src/core.rs:282,1
    - Dst: Request::post
      Src: /src/opendal/core/services/gcs/src/core.rs:285,1
    - Dst: header
      Src: /src/opendal/core/services/gcs/src/core.rs:287,1
    - Dst: Option::unwrap_or_default
      Src: /src/opendal/core/services/gcs/src/core.rs:287,1
    - Dst: is_empty
      Src: /src/opendal/core/services/gcs/src/core.rs:289,1
    - Dst: extension
      Src: /src/opendal/core/services/gcs/src/core.rs:290,1
    - Dst: extension
      Src: /src/opendal/core/services/gcs/src/core.rs:290,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/gcs/src/core.rs:292,1
    - Dst: body
      Src: /src/opendal/core/services/gcs/src/core.rs:296,1
    - Dst: map_err
      Src: /src/opendal/core/services/gcs/src/core.rs:296,1
    - Dst: Ok
      Src: /src/opendal/core/services/gcs/src/core.rs:297,1
    - Dst: Multipart::new
      Src: /src/opendal/core/services/gcs/src/core.rs:299,1
    - Dst: RelatedPart::new
      Src: /src/opendal/core/services/gcs/src/core.rs:300,1
    - Dst: Self::header
      Src: /src/opendal/core/services/gcs/src/core.rs:300,1
    - Dst: '&str::parse'
      Src: /src/opendal/core/services/gcs/src/core.rs:303,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/services/gcs/src/core.rs:303,1
    - Dst: String::content
      Src: /src/opendal/core/services/gcs/src/core.rs:300,1
    - Dst: serde_json::to_vec
      Src: /src/opendal/core/services/gcs/src/core.rs:306,1
    - Dst: Vec::expect
      Src: /src/opendal/core/services/gcs/src/core.rs:306,1
    - Dst: part
      Src: /src/opendal/core/services/gcs/src/core.rs:309,1
    - Dst: content_type
      Src: /src/opendal/core/services/gcs/src/core.rs:312,1
    - Dst: Result::unwrap_or
      Src: /src/opendal/core/services/gcs/src/core.rs:312,1
    - Dst: parse
      Src: /src/opendal/core/services/gcs/src/core.rs:312,1
    - Dst: expect
      Src: /src/opendal/core/services/gcs/src/core.rs:312,1
    - Dst: RelatedPart::new
      Src: /src/opendal/core/services/gcs/src/core.rs:317,1
    - Dst: Self::header
      Src: /src/opendal/core/services/gcs/src/core.rs:317,1
    - Dst: String::content
      Src: /src/opendal/core/services/gcs/src/core.rs:317,1
    - Dst: part
      Src: /src/opendal/core/services/gcs/src/core.rs:320,1
    - Dst: apply
      Src: /src/opendal/core/services/gcs/src/core.rs:322,1
    - Dst: Request::post
      Src: /src/opendal/core/services/gcs/src/core.rs:323,1
    - Dst: extension
      Src: /src/opendal/core/services/gcs/src/core.rs:323,1
    - Dst: extension
      Src: /src/opendal/core/services/gcs/src/core.rs:323,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/gcs/src/core.rs:325,1
    - Dst: Ok
      Src: /src/opendal/core/services/gcs/src/core.rs:328,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 97
    argCount: 4
    argNames:
    - path
    - size
    - op
    - body
    argTypes:
    - '&str'
    - Option<u64>
    - '&OpWrite'
    - Buffer
    constantsTouched: []
    func_position:
      end: 330
      start: 245
    functionDepth: 32
    functionLinenumber: 245
    functionLinenumberEnd: 330
    functionName: GcsCore::gcs_insert_object_request
    functionSourceFile: /src/opendal/core/services/gcs/src/core.rs
    functionUses: 0
    functionsReached:
    - as_deref
    - Result::unwrap
    - Vec::expect
    - part
    - if_not_exists
    - Self::header
    - Result::unwrap_or
    - map_err
    - extension
    - Multipart::new
    - Option::unwrap_or_default
    - Ok
    - expect
    - unwrap
    - ServiceOperation
    - content_type
    - apply
    - content_encoding
    - build_abs_path
    - is_empty
    - user_metadata
    - parse
    - cache_control
    - RelatedPart::new
    - Request::post
    - body
    - '&str::parse'
    - String::content
    - serde_json::to_vec
    - header
    linkageType: ''
    returnType: Result
    signature: 'pub fn gcs_insert_object_request(&self,path: &str,size: Option<u64>,op:
      &OpWrite,body: Buffer,) -> Result<Request<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/gcs/src/core.rs:339,1
    - Dst: Request::put
      Src: /src/opendal/core/services/gcs/src/core.rs:343,1
    - Dst: OpStat::user_metadata
      Src: /src/opendal/core/services/gcs/src/core.rs:345,1
    - Dst: DeleteInput::header
      Src: /src/opendal/core/services/gcs/src/core.rs:347,1
    - Dst: OpStat::content_type
      Src: /src/opendal/core/services/gcs/src/core.rs:351,1
    - Dst: DeleteInput::header
      Src: /src/opendal/core/services/gcs/src/core.rs:352,1
    - Dst: OpStat::content_encoding
      Src: /src/opendal/core/services/gcs/src/core.rs:355,1
    - Dst: DeleteInput::header
      Src: /src/opendal/core/services/gcs/src/core.rs:356,1
    - Dst: predefined_acl_to_xml_header
      Src: /src/opendal/core/services/gcs/src/core.rs:360,1
    - Dst: DeleteInput::header
      Src: /src/opendal/core/services/gcs/src/core.rs:361,1
    - Dst: DeleteInput::header
      Src: /src/opendal/core/services/gcs/src/core.rs:368,1
    - Dst: DeleteInput::extension
      Src: /src/opendal/core/services/gcs/src/core.rs:371,1
    - Dst: extension
      Src: /src/opendal/core/services/gcs/src/core.rs:371,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/gcs/src/core.rs:373,1
    - Dst: DeleteInput::body
      Src: /src/opendal/core/services/gcs/src/core.rs:375,1
    - Dst: map_err
      Src: /src/opendal/core/services/gcs/src/core.rs:375,1
    - Dst: Ok
      Src: /src/opendal/core/services/gcs/src/core.rs:377,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 61
    argCount: 3
    argNames:
    - path
    - args
    - body
    argTypes:
    - '&str'
    - '&OpWrite'
    - Buffer
    constantsTouched: []
    func_position:
      end: 378
      start: 333
    functionDepth: 32
    functionLinenumber: 333
    functionLinenumberEnd: 378
    functionName: GcsCore::gcs_insert_object_xml_request
    functionSourceFile: /src/opendal/core/services/gcs/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - extension
    - Request::put
    - Ok
    - OpStat::content_encoding
    - predefined_acl_to_xml_header
    - build_abs_path
    - DeleteInput::header
    - ServiceOperation
    - OpStat::user_metadata
    - DeleteInput::body
    - DeleteInput::extension
    - OpStat::content_type
    linkageType: ''
    returnType: Result
    signature: 'pub fn gcs_insert_object_xml_request(&self,path: &str,args: &OpWrite,body:
      Buffer,) -> Result<Request<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/gcs/src/core.rs:381,1
    - Dst: Request::get
      Src: /src/opendal/core/services/gcs/src/core.rs:390,1
    - Dst: OpStat::if_none_match
      Src: /src/opendal/core/services/gcs/src/core.rs:392,1
    - Dst: Option::header
      Src: /src/opendal/core/services/gcs/src/core.rs:393,1
    - Dst: OpStat::if_match
      Src: /src/opendal/core/services/gcs/src/core.rs:396,1
    - Dst: Option::header
      Src: /src/opendal/core/services/gcs/src/core.rs:397,1
    - Dst: Option::extension
      Src: /src/opendal/core/services/gcs/src/core.rs:400,1
    - Dst: extension
      Src: /src/opendal/core/services/gcs/src/core.rs:400,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/gcs/src/core.rs:402,1
    - Dst: Option::body
      Src: /src/opendal/core/services/gcs/src/core.rs:404,1
    - Dst: Buffer::new
      Src: /src/opendal/core/services/gcs/src/core.rs:404,1
    - Dst: map_err
      Src: /src/opendal/core/services/gcs/src/core.rs:404,1
    - Dst: Ok
      Src: /src/opendal/core/services/gcs/src/core.rs:406,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 33
    argCount: 2
    argNames:
    - path
    - args
    argTypes:
    - '&str'
    - '&OpStat'
    constantsTouched: []
    func_position:
      end: 407
      start: 380
    functionDepth: 3
    functionLinenumber: 380
    functionLinenumberEnd: 407
    functionName: GcsCore::gcs_head_object_request
    functionSourceFile: /src/opendal/core/services/gcs/src/core.rs
    functionUses: 1
    functionsReached:
    - map_err
    - extension
    - Request::get
    - Buffer::new
    - Ok
    - Option::body
    - build_abs_path
    - OpStat::if_none_match
    - Option::extension
    - ServiceOperation
    - OpStat::if_match
    - Option::header
    linkageType: ''
    returnType: Result
    signature: 'pub fn gcs_head_object_request(&self, path: &str, args: &OpStat) ->
      Result<Request<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/gcs/src/core.rs:415,1
    - Dst: Request::head
      Src: /src/opendal/core/services/gcs/src/core.rs:419,1
    - Dst: OpStat::if_none_match
      Src: /src/opendal/core/services/gcs/src/core.rs:421,1
    - Dst: Result::header
      Src: /src/opendal/core/services/gcs/src/core.rs:422,1
    - Dst: OpStat::if_match
      Src: /src/opendal/core/services/gcs/src/core.rs:425,1
    - Dst: Result::header
      Src: /src/opendal/core/services/gcs/src/core.rs:426,1
    - Dst: Result::extension
      Src: /src/opendal/core/services/gcs/src/core.rs:429,1
    - Dst: extension
      Src: /src/opendal/core/services/gcs/src/core.rs:429,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/gcs/src/core.rs:431,1
    - Dst: Result::body
      Src: /src/opendal/core/services/gcs/src/core.rs:433,1
    - Dst: Buffer::new
      Src: /src/opendal/core/services/gcs/src/core.rs:433,1
    - Dst: map_err
      Src: /src/opendal/core/services/gcs/src/core.rs:433,1
    - Dst: Ok
      Src: /src/opendal/core/services/gcs/src/core.rs:435,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 33
    argCount: 2
    argNames:
    - path
    - args
    argTypes:
    - '&str'
    - '&OpStat'
    constantsTouched: []
    func_position:
      end: 436
      start: 410
    functionDepth: 38
    functionLinenumber: 410
    functionLinenumberEnd: 436
    functionName: GcsCore::gcs_head_object_xml_request
    functionSourceFile: /src/opendal/core/services/gcs/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - extension
    - Request::head
    - Buffer::new
    - Ok
    - Result::extension
    - build_abs_path
    - Result::header
    - OpStat::if_none_match
    - ServiceOperation
    - Result::body
    - OpStat::if_match
    linkageType: ''
    returnType: Result
    signature: 'pub fn gcs_head_object_xml_request(&self,path: &str,args: &OpStat,)
      -> Result<Request<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: GcsCore::gcs_head_object_request
      Src: /src/opendal/core/services/gcs/src/core.rs:444,1
    - Dst: GcsCore::sign
      Src: /src/opendal/core/services/gcs/src/core.rs:446,1
    - Dst: GcsCore::send
      Src: /src/opendal/core/services/gcs/src/core.rs:448,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&OpStat'
    constantsTouched: []
    func_position:
      end: 449
      start: 438
    functionDepth: 36
    functionLinenumber: 438
    functionLinenumberEnd: 449
    functionName: GcsCore::gcs_get_object_metadata
    functionSourceFile: /src/opendal/core/services/gcs/src/core.rs
    functionUses: 0
    functionsReached:
    - GcsCore::send
    - GcsCore::gcs_head_object_request
    - GcsCore::sign
    linkageType: ''
    returnType: Result
    signature: 'pub async fn gcs_get_object_metadata(&self,ctx: &OperationContext,path:
      &str,args: &OpStat,) -> Result<Response<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: GcsCore::gcs_delete_object_request
      Src: /src/opendal/core/services/gcs/src/core.rs:456,1
    - Dst: GcsCore::sign
      Src: /src/opendal/core/services/gcs/src/core.rs:458,1
    - Dst: GcsCore::send
      Src: /src/opendal/core/services/gcs/src/core.rs:459,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 2
    argNames:
    - ctx
    - path
    argTypes:
    - '&OperationContext'
    - '&str'
    constantsTouched: []
    func_position:
      end: 460
      start: 451
    functionDepth: 33
    functionLinenumber: 451
    functionLinenumberEnd: 460
    functionName: GcsCore::gcs_delete_object
    functionSourceFile: /src/opendal/core/services/gcs/src/core.rs
    functionUses: 0
    functionsReached:
    - GcsCore::send
    - GcsCore::sign
    - GcsCore::gcs_delete_object_request
    linkageType: ''
    returnType: Result
    signature: 'pub async fn gcs_delete_object(&self,ctx: &OperationContext,path:
      &str,) -> Result<Response<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/gcs/src/core.rs:463,1
    - Dst: Request::delete
      Src: /src/opendal/core/services/gcs/src/core.rs:472,1
    - Dst: Result::extension
      Src: /src/opendal/core/services/gcs/src/core.rs:472,1
    - Dst: extension
      Src: /src/opendal/core/services/gcs/src/core.rs:472,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/gcs/src/core.rs:474,1
    - Dst: body
      Src: /src/opendal/core/services/gcs/src/core.rs:472,1
    - Dst: Buffer::new
      Src: /src/opendal/core/services/gcs/src/core.rs:475,1
    - Dst: map_err
      Src: /src/opendal/core/services/gcs/src/core.rs:472,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 15
    argCount: 1
    argNames:
    - path
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 477
      start: 462
    functionDepth: 32
    functionLinenumber: 462
    functionLinenumberEnd: 477
    functionName: GcsCore::gcs_delete_object_request
    functionSourceFile: /src/opendal/core/services/gcs/src/core.rs
    functionUses: 2
    functionsReached:
    - map_err
    - extension
    - Buffer::new
    - Request::delete
    - Result::extension
    - body
    - build_abs_path
    - ServiceOperation
    linkageType: ''
    returnType: Result
    signature: 'pub fn gcs_delete_object_request(&self, path: &str) -> Result<Request<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Multipart::new
      Src: /src/opendal/core/services/gcs/src/core.rs:486,1
    - Dst: Result::iter
      Src: /src/opendal/core/services/gcs/src/core.rs:488,1
    - Dst: enumerate
      Src: /src/opendal/core/services/gcs/src/core.rs:488,1
    - Dst: GcsCore::gcs_delete_object_request
      Src: /src/opendal/core/services/gcs/src/core.rs:489,1
    - Dst: part
      Src: /src/opendal/core/services/gcs/src/core.rs:491,1
    - Dst: MixedPart::from_request
      Src: /src/opendal/core/services/gcs/src/core.rs:492,1
    - Dst: Self::part_header
      Src: /src/opendal/core/services/gcs/src/core.rs:492,1
    - Dst: '&str::parse'
      Src: /src/opendal/core/services/gcs/src/core.rs:492,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/services/gcs/src/core.rs:492,1
    - Dst: into
      Src: /src/opendal/core/services/gcs/src/core.rs:492,1
    - Dst: Request::post
      Src: /src/opendal/core/services/gcs/src/core.rs:496,1
    - Dst: extension
      Src: /src/opendal/core/services/gcs/src/core.rs:496,1
    - Dst: extension
      Src: /src/opendal/core/services/gcs/src/core.rs:496,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/gcs/src/core.rs:498,1
    - Dst: apply
      Src: /src/opendal/core/services/gcs/src/core.rs:499,1
    - Dst: GcsCore::sign
      Src: /src/opendal/core/services/gcs/src/core.rs:501,1
    - Dst: GcsCore::send
      Src: /src/opendal/core/services/gcs/src/core.rs:502,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 39
    argCount: 2
    argNames:
    - ctx
    - paths
    argTypes:
    - '&OperationContext'
    - Vec<String>
    constantsTouched: []
    func_position:
      end: 503
      start: 479
    functionDepth: 33
    functionLinenumber: 479
    functionLinenumberEnd: 503
    functionName: GcsCore::gcs_delete_objects
    functionSourceFile: /src/opendal/core/services/gcs/src/core.rs
    functionUses: 0
    functionsReached:
    - Multipart::new
    - extension
    - apply
    - GcsCore::gcs_delete_object_request
    - MixedPart::from_request
    - '&str::parse'
    - into
    - Request::post
    - GcsCore::sign
    - Result::iter
    - GcsCore::send
    - Result::unwrap
    - ServiceOperation
    - enumerate
    - part
    - Self::part_header
    linkageType: ''
    returnType: Result
    signature: 'pub async fn gcs_delete_objects(&self,ctx: &OperationContext,paths:
      Vec<String>,) -> Result<Response<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/gcs/src/core.rs:514,1
    - Dst: build_abs_path
      Src: /src/opendal/core/services/gcs/src/core.rs:515,1
    - Dst: QueryPairsWriter::new
      Src: /src/opendal/core/services/gcs/src/core.rs:526,1
    - Dst: OpStat::source_version
      Src: /src/opendal/core/services/gcs/src/core.rs:528,1
    - Dst: Result::push
      Src: /src/opendal/core/services/gcs/src/core.rs:529,1
    - Dst: gcs_percent_encode_path
      Src: /src/opendal/core/services/gcs/src/core.rs:529,1
    - Dst: OpStat::if_not_exists
      Src: /src/opendal/core/services/gcs/src/core.rs:531,1
    - Dst: Result::push
      Src: /src/opendal/core/services/gcs/src/core.rs:532,1
    - Dst: Result::push
      Src: /src/opendal/core/services/gcs/src/core.rs:535,1
    - Dst: to_string
      Src: /src/opendal/core/services/gcs/src/core.rs:535,1
    - Dst: Result::push
      Src: /src/opendal/core/services/gcs/src/core.rs:538,1
    - Dst: gcs_percent_encode_path
      Src: /src/opendal/core/services/gcs/src/core.rs:538,1
    - Dst: Request::post
      Src: /src/opendal/core/services/gcs/src/core.rs:541,1
    - Dst: Result::finish
      Src: /src/opendal/core/services/gcs/src/core.rs:541,1
    - Dst: header
      Src: /src/opendal/core/services/gcs/src/core.rs:541,1
    - Dst: extension
      Src: /src/opendal/core/services/gcs/src/core.rs:541,1
    - Dst: extension
      Src: /src/opendal/core/services/gcs/src/core.rs:541,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/gcs/src/core.rs:544,1
    - Dst: body
      Src: /src/opendal/core/services/gcs/src/core.rs:541,1
    - Dst: Buffer::new
      Src: /src/opendal/core/services/gcs/src/core.rs:545,1
    - Dst: map_err
      Src: /src/opendal/core/services/gcs/src/core.rs:541,1
    - Dst: GcsCore::sign
      Src: /src/opendal/core/services/gcs/src/core.rs:548,1
    - Dst: GcsCore::send
      Src: /src/opendal/core/services/gcs/src/core.rs:549,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 66
    argCount: 6
    argNames:
    - ctx
    - from
    - to
    - args
    - max_bytes_rewritten_per_call
    - rewrite_token
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    - '&OpCopy'
    - Option<usize>
    - Option<&str>
    constantsTouched: []
    func_position:
      end: 550
      start: 505
    functionDepth: 30
    functionLinenumber: 505
    functionLinenumberEnd: 550
    functionName: GcsCore::gcs_rewrite_object
    functionSourceFile: /src/opendal/core/services/gcs/src/core.rs
    functionUses: 0
    functionsReached:
    - QueryPairsWriter::new
    - to_string
    - extension
    - Buffer::new
    - map_err
    - Request::post
    - body
    - GcsCore::sign
    - gcs_percent_encode_path
    - build_abs_path
    - Result::finish
    - GcsCore::send
    - Result::push
    - ServiceOperation
    - OpStat::source_version
    - OpStat::if_not_exists
    - header
    linkageType: ''
    returnType: Result
    signature: 'pub async fn gcs_rewrite_object(&self,ctx: &OperationContext,from:
      &str,to: &str,args: &OpCopy,max_bytes_rewritten_per_call: Option<usize>,rewrite_token:
      Option<&str>,) -> Result<Response<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/gcs/src/core.rs:561,1
    - Dst: QueryPairsWriter::new
      Src: /src/opendal/core/services/gcs/src/core.rs:565,1
    - Dst: Result::push
      Src: /src/opendal/core/services/gcs/src/core.rs:566,1
    - Dst: gcs_percent_encode_path
      Src: /src/opendal/core/services/gcs/src/core.rs:566,1
    - Dst: object_store::Result::is_empty
      Src: /src/opendal/core/services/gcs/src/core.rs:568,1
    - Dst: Result::push
      Src: /src/opendal/core/services/gcs/src/core.rs:569,1
    - Dst: Result::push
      Src: /src/opendal/core/services/gcs/src/core.rs:572,1
    - Dst: Result::to_string
      Src: /src/opendal/core/services/gcs/src/core.rs:572,1
    - Dst: build_abs_path
      Src: /src/opendal/core/services/gcs/src/core.rs:575,1
    - Dst: Result::push
      Src: /src/opendal/core/services/gcs/src/core.rs:576,1
    - Dst: gcs_percent_encode_path
      Src: /src/opendal/core/services/gcs/src/core.rs:576,1
    - Dst: is_empty
      Src: /src/opendal/core/services/gcs/src/core.rs:579,1
    - Dst: Result::push
      Src: /src/opendal/core/services/gcs/src/core.rs:586,1
    - Dst: gcs_percent_encode_path
      Src: /src/opendal/core/services/gcs/src/core.rs:586,1
    - Dst: Request::get
      Src: /src/opendal/core/services/gcs/src/core.rs:589,1
    - Dst: Result::finish
      Src: /src/opendal/core/services/gcs/src/core.rs:589,1
    - Dst: Option::extension
      Src: /src/opendal/core/services/gcs/src/core.rs:589,1
    - Dst: extension
      Src: /src/opendal/core/services/gcs/src/core.rs:589,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/gcs/src/core.rs:591,1
    - Dst: body
      Src: /src/opendal/core/services/gcs/src/core.rs:589,1
    - Dst: Buffer::new
      Src: /src/opendal/core/services/gcs/src/core.rs:592,1
    - Dst: map_err
      Src: /src/opendal/core/services/gcs/src/core.rs:589,1
    - Dst: GcsCore::sign
      Src: /src/opendal/core/services/gcs/src/core.rs:595,1
    - Dst: GcsCore::send
      Src: /src/opendal/core/services/gcs/src/core.rs:597,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 75
    argCount: 6
    argNames:
    - ctx
    - path
    - page_token
    - delimiter
    - limit
    - start_after
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    - '&str'
    - Option<usize>
    - Option<String>
    constantsTouched: []
    func_position:
      end: 598
      start: 552
    functionDepth: 36
    functionLinenumber: 552
    functionLinenumberEnd: 598
    functionName: GcsCore::gcs_list_objects
    functionSourceFile: /src/opendal/core/services/gcs/src/core.rs
    functionUses: 0
    functionsReached:
    - QueryPairsWriter::new
    - extension
    - Request::get
    - Buffer::new
    - map_err
    - Result::to_string
    - body
    - GcsCore::sign
    - gcs_percent_encode_path
    - build_abs_path
    - is_empty
    - Result::finish
    - Result::push
    - Option::extension
    - GcsCore::send
    - ServiceOperation
    - object_store::Result::is_empty
    linkageType: ''
    returnType: Result
    signature: 'pub async fn gcs_list_objects(&self,ctx: &OperationContext,path: &str,page_token:
      &str,delimiter: &str,limit: Option<usize>,start_after: Option<String>,) -> Result<Response<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/gcs/src/core.rs:606,1
    - Dst: Request::post
      Src: /src/opendal/core/services/gcs/src/core.rs:610,1
    - Dst: header
      Src: /src/opendal/core/services/gcs/src/core.rs:610,1
    - Dst: extension
      Src: /src/opendal/core/services/gcs/src/core.rs:610,1
    - Dst: extension
      Src: /src/opendal/core/services/gcs/src/core.rs:610,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/gcs/src/core.rs:613,1
    - Dst: content_disposition
      Src: /src/opendal/core/services/gcs/src/core.rs:615,1
    - Dst: OtelMetricsLayerBuilder::header
      Src: /src/opendal/core/services/gcs/src/core.rs:616,1
    - Dst: content_encoding
      Src: /src/opendal/core/services/gcs/src/core.rs:619,1
    - Dst: OtelMetricsLayerBuilder::header
      Src: /src/opendal/core/services/gcs/src/core.rs:620,1
    - Dst: content_type
      Src: /src/opendal/core/services/gcs/src/core.rs:623,1
    - Dst: OtelMetricsLayerBuilder::header
      Src: /src/opendal/core/services/gcs/src/core.rs:624,1
    - Dst: cache_control
      Src: /src/opendal/core/services/gcs/src/core.rs:627,1
    - Dst: OtelMetricsLayerBuilder::header
      Src: /src/opendal/core/services/gcs/src/core.rs:628,1
    - Dst: user_metadata
      Src: /src/opendal/core/services/gcs/src/core.rs:631,1
    - Dst: OtelMetricsLayerBuilder::header
      Src: /src/opendal/core/services/gcs/src/core.rs:633,1
    - Dst: as_ref
      Src: /src/opendal/core/services/gcs/src/core.rs:637,1
    - Dst: predefined_acl_to_xml_header
      Src: /src/opendal/core/services/gcs/src/core.rs:638,1
    - Dst: OtelMetricsLayerBuilder::header
      Src: /src/opendal/core/services/gcs/src/core.rs:639,1
    - Dst: OtelMetricsLayerBuilder::body
      Src: /src/opendal/core/services/gcs/src/core.rs:645,1
    - Dst: Buffer::new
      Src: /src/opendal/core/services/gcs/src/core.rs:646,1
    - Dst: map_err
      Src: /src/opendal/core/services/gcs/src/core.rs:645,1
    - Dst: GcsCore::sign
      Src: /src/opendal/core/services/gcs/src/core.rs:649,1
    - Dst: GcsCore::send
      Src: /src/opendal/core/services/gcs/src/core.rs:650,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 81
    argCount: 3
    argNames:
    - ctx
    - path
    - op
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&OpWrite'
    constantsTouched: []
    func_position:
      end: 651
      start: 600
    functionDepth: 32
    functionLinenumber: 600
    functionLinenumberEnd: 651
    functionName: GcsCore::gcs_initiate_multipart_upload
    functionSourceFile: /src/opendal/core/services/gcs/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - extension
    - Buffer::new
    - content_encoding
    - cache_control
    - Request::post
    - predefined_acl_to_xml_header
    - GcsCore::sign
    - build_abs_path
    - user_metadata
    - content_disposition
    - OtelMetricsLayerBuilder::body
    - as_ref
    - GcsCore::send
    - ServiceOperation
    - OtelMetricsLayerBuilder::header
    - content_type
    - header
    linkageType: ''
    returnType: Result
    signature: 'pub async fn gcs_initiate_multipart_upload(&self,ctx: &OperationContext,path:
      &str,op: &OpWrite,) -> Result<Response<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/gcs/src/core.rs:662,1
    - Dst: Request::put
      Src: /src/opendal/core/services/gcs/src/core.rs:673,1
    - Dst: DeleteInput::header
      Src: /src/opendal/core/services/gcs/src/core.rs:675,1
    - Dst: DeleteInput::extension
      Src: /src/opendal/core/services/gcs/src/core.rs:677,1
    - Dst: extension
      Src: /src/opendal/core/services/gcs/src/core.rs:677,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/gcs/src/core.rs:679,1
    - Dst: DeleteInput::body
      Src: /src/opendal/core/services/gcs/src/core.rs:681,1
    - Dst: map_err
      Src: /src/opendal/core/services/gcs/src/core.rs:681,1
    - Dst: GcsCore::sign
      Src: /src/opendal/core/services/gcs/src/core.rs:683,1
    - Dst: GcsCore::send
      Src: /src/opendal/core/services/gcs/src/core.rs:684,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 26
    argCount: 6
    argNames:
    - ctx
    - path
    - upload_id
    - part_number
    - size
    - body
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    - usize
    - u64
    - Buffer
    constantsTouched: []
    func_position:
      end: 685
      start: 653
    functionDepth: 36
    functionLinenumber: 653
    functionLinenumberEnd: 685
    functionName: GcsCore::gcs_upload_part
    functionSourceFile: /src/opendal/core/services/gcs/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - extension
    - Request::put
    - GcsCore::sign
    - build_abs_path
    - DeleteInput::header
    - GcsCore::send
    - ServiceOperation
    - DeleteInput::body
    - DeleteInput::extension
    linkageType: ''
    returnType: Result
    signature: 'pub async fn gcs_upload_part(&self,ctx: &OperationContext,path: &str,upload_id:
      &str,part_number: usize,size: u64,body: Buffer,) -> Result<Response<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/gcs/src/core.rs:694,1
    - Dst: Request::post
      Src: /src/opendal/core/services/gcs/src/core.rs:704,1
    - Dst: quick_xml::se::to_string
      Src: /src/opendal/core/services/gcs/src/core.rs:706,1
    - Dst: map_err
      Src: /src/opendal/core/services/gcs/src/core.rs:706,1
    - Dst: header
      Src: /src/opendal/core/services/gcs/src/core.rs:709,1
    - Dst: Result::len
      Src: /src/opendal/core/services/gcs/src/core.rs:709,1
    - Dst: header
      Src: /src/opendal/core/services/gcs/src/core.rs:711,1
    - Dst: extension
      Src: /src/opendal/core/services/gcs/src/core.rs:713,1
    - Dst: extension
      Src: /src/opendal/core/services/gcs/src/core.rs:713,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/gcs/src/core.rs:715,1
    - Dst: body
      Src: /src/opendal/core/services/gcs/src/core.rs:717,1
    - Dst: Buffer::from
      Src: /src/opendal/core/services/gcs/src/core.rs:718,1
    - Dst: Bytes::from
      Src: /src/opendal/core/services/gcs/src/core.rs:718,1
    - Dst: map_err
      Src: /src/opendal/core/services/gcs/src/core.rs:717,1
    - Dst: GcsCore::sign
      Src: /src/opendal/core/services/gcs/src/core.rs:721,1
    - Dst: GcsCore::send
      Src: /src/opendal/core/services/gcs/src/core.rs:722,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 36
    argCount: 4
    argNames:
    - ctx
    - path
    - upload_id
    - parts
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    - Vec<CompleteMultipartUploadRequestPart>
    constantsTouched: []
    func_position:
      end: 723
      start: 687
    functionDepth: 40
    functionLinenumber: 687
    functionLinenumberEnd: 723
    functionName: GcsCore::gcs_complete_multipart_upload
    functionSourceFile: /src/opendal/core/services/gcs/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - extension
    - Request::post
    - body
    - quick_xml::se::to_string
    - build_abs_path
    - GcsCore::sign
    - Bytes::from
    - GcsCore::send
    - ServiceOperation
    - Result::len
    - Buffer::from
    - header
    linkageType: ''
    returnType: Result
    signature: 'pub async fn gcs_complete_multipart_upload(&self,ctx: &OperationContext,path:
      &str,upload_id: &str,parts: Vec<CompleteMultipartUploadRequestPart>,) -> Result<Response<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/gcs/src/core.rs:731,1
    - Dst: Request::delete
      Src: /src/opendal/core/services/gcs/src/core.rs:741,1
    - Dst: Result::extension
      Src: /src/opendal/core/services/gcs/src/core.rs:741,1
    - Dst: extension
      Src: /src/opendal/core/services/gcs/src/core.rs:741,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/gcs/src/core.rs:743,1
    - Dst: body
      Src: /src/opendal/core/services/gcs/src/core.rs:741,1
    - Dst: Buffer::new
      Src: /src/opendal/core/services/gcs/src/core.rs:744,1
    - Dst: map_err
      Src: /src/opendal/core/services/gcs/src/core.rs:741,1
    - Dst: GcsCore::sign
      Src: /src/opendal/core/services/gcs/src/core.rs:746,1
    - Dst: GcsCore::send
      Src: /src/opendal/core/services/gcs/src/core.rs:747,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 23
    argCount: 3
    argNames:
    - ctx
    - path
    - upload_id
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    constantsTouched: []
    func_position:
      end: 748
      start: 725
    functionDepth: 32
    functionLinenumber: 725
    functionLinenumberEnd: 748
    functionName: GcsCore::gcs_abort_multipart_upload
    functionSourceFile: /src/opendal/core/services/gcs/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - extension
    - Buffer::new
    - Request::delete
    - Result::extension
    - body
    - GcsCore::sign
    - build_abs_path
    - GcsCore::send
    - ServiceOperation
    linkageType: ''
    returnType: Result
    signature: 'pub async fn gcs_abort_multipart_upload(&self,ctx: &OperationContext,path:
      &str,upload_id: &str,) -> Result<Response<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: serde_json::from_reader
      Src: /src/opendal/core/services/gcs/src/core.rs:752,1
    - Dst: anyhow::Result::reader
      Src: /src/opendal/core/services/gcs/src/core.rs:752,1
    - Dst: map_err
      Src: /src/opendal/core/services/gcs/src/core.rs:752,1
    - Dst: Result::into_metadata
      Src: /src/opendal/core/services/gcs/src/core.rs:754,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - path
    - data
    argTypes:
    - '&str'
    - Buffer
    constantsTouched: []
    func_position:
      end: 755
      start: 750
    functionDepth: 1
    functionLinenumber: 750
    functionLinenumberEnd: 755
    functionName: GcsCore::build_metadata_from_object_response
    functionSourceFile: /src/opendal/core/services/gcs/src/core.rs
    functionUses: 3
    functionsReached:
    - map_err
    - anyhow::Result::reader
    - serde_json::from_reader
    - Result::into_metadata
    linkageType: ''
    returnType: Result
    signature: 'pub fn build_metadata_from_object_response(path: &str, data: Buffer)
      -> Result<Metadata>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Metadata::new
      Src: /src/opendal/core/services/gcs/src/core.rs:760,1
    - Dst: EntryMode::from_path
      Src: /src/opendal/core/services/gcs/src/core.rs:760,1
    - Dst: Result::set_etag
      Src: /src/opendal/core/services/gcs/src/core.rs:762,1
    - Dst: Result::set_content_md5
      Src: /src/opendal/core/services/gcs/src/core.rs:763,1
    - Dst: "size\n            .parse::<u64>"
      Src: /src/opendal/core/services/gcs/src/core.rs:765,1
    - Dst: map_err
      Src: /src/opendal/core/services/gcs/src/core.rs:765,1
    - Dst: Error::new
      Src: /src/opendal/core/services/gcs/src/core.rs:768,1
    - Dst: Self::set_source
      Src: /src/opendal/core/services/gcs/src/core.rs:768,1
    - Dst: Result::set_content_length
      Src: /src/opendal/core/services/gcs/src/core.rs:769,1
    - Dst: is_empty
      Src: /src/opendal/core/services/gcs/src/core.rs:770,1
    - Dst: Result::set_content_type
      Src: /src/opendal/core/services/gcs/src/core.rs:771,1
    - Dst: is_empty
      Src: /src/opendal/core/services/gcs/src/core.rs:774,1
    - Dst: Result::set_content_encoding
      Src: /src/opendal/core/services/gcs/src/core.rs:775,1
    - Dst: is_empty
      Src: /src/opendal/core/services/gcs/src/core.rs:778,1
    - Dst: Result::set_cache_control
      Src: /src/opendal/core/services/gcs/src/core.rs:779,1
    - Dst: is_empty
      Src: /src/opendal/core/services/gcs/src/core.rs:782,1
    - Dst: Result::set_content_disposition
      Src: /src/opendal/core/services/gcs/src/core.rs:783,1
    - Dst: is_empty
      Src: /src/opendal/core/services/gcs/src/core.rs:786,1
    - Dst: Result::set_version
      Src: /src/opendal/core/services/gcs/src/core.rs:787,1
    - Dst: is_empty
      Src: /src/opendal/core/services/gcs/src/core.rs:790,1
    - Dst: Result::set_last_modified
      Src: /src/opendal/core/services/gcs/src/core.rs:791,1
    - Dst: updated.parse::<Timestamp>
      Src: /src/opendal/core/services/gcs/src/core.rs:791,1
    - Dst: is_empty
      Src: /src/opendal/core/services/gcs/src/core.rs:794,1
    - Dst: Result::with_user_metadata
      Src: /src/opendal/core/services/gcs/src/core.rs:795,1
    - Dst: Ok
      Src: /src/opendal/core/services/gcs/src/core.rs:798,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 105
    argCount: 1
    argNames:
    - path
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 799
      start: 759
    functionDepth: 36
    functionLinenumber: 759
    functionLinenumberEnd: 799
    functionName: GetObjectJsonResponse::into_metadata
    functionSourceFile: /src/opendal/core/services/gcs/src/core.rs
    functionUses: 0
    functionsReached:
    - Result::set_content_encoding
    - updated.parse::<Timestamp>
    - "size\n            .parse::<u64>"
    - map_err
    - Ok
    - Result::with_user_metadata
    - Result::set_cache_control
    - Result::set_etag
    - Result::set_content_md5
    - Metadata::new
    - is_empty
    - Result::set_content_type
    - Self::set_source
    - Result::set_content_disposition
    - Result::set_version
    - EntryMode::from_path
    - Result::set_last_modified
    - Error::new
    - Result::set_content_length
    linkageType: ''
    returnType: Result
    signature: 'fn into_metadata(self, path: &str) -> Result<Metadata>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Some
      Src: /src/opendal/core/services/gcs/src/core.rs:805,1
    - Dst: Some
      Src: /src/opendal/core/services/gcs/src/core.rs:806,1
    - Dst: Some
      Src: /src/opendal/core/services/gcs/src/core.rs:807,1
    - Dst: Some
      Src: /src/opendal/core/services/gcs/src/core.rs:808,1
    - Dst: Some
      Src: /src/opendal/core/services/gcs/src/core.rs:809,1
    - Dst: Some
      Src: /src/opendal/core/services/gcs/src/core.rs:810,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - predefined_acl
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 813
      start: 803
    functionDepth: 0
    functionLinenumber: 803
    functionLinenumberEnd: 813
    functionName: predefined_acl_to_xml_header
    functionSourceFile: /src/opendal/core/services/gcs/src/core.rs
    functionUses: 2
    functionsReached:
    - Some
    linkageType: ''
    returnType: Option
    signature: 'fn predefined_acl_to_xml_header(predefined_acl: &str) -> Option<&''static
      str>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: is_none
      Src: /src/opendal/core/services/gcs/src/core.rs:832,1
    - Dst: is_none
      Src: /src/opendal/core/services/gcs/src/core.rs:833,1
    - Dst: is_none
      Src: /src/opendal/core/services/gcs/src/core.rs:834,1
    - Dst: is_none
      Src: /src/opendal/core/services/gcs/src/core.rs:835,1
    - Dst: is_none
      Src: /src/opendal/core/services/gcs/src/core.rs:837,1
    - Dst: is_none
      Src: /src/opendal/core/services/gcs/src/core.rs:838,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 23
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 839
      start: 831
    functionDepth: 0
    functionLinenumber: 831
    functionLinenumberEnd: 839
    functionName: InsertRequestMetadata::is_empty
    functionSourceFile: /src/opendal/core/services/gcs/src/core.rs
    functionUses: 0
    functionsReached:
    - is_none
    linkageType: ''
    returnType: bool
    signature: pub fn is_empty(&self) -> bool
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: into_metadata
      Src: /src/opendal/core/services/gcs/src/core.rs:905,1
    - Dst: Ok
      Src: /src/opendal/core/services/gcs/src/core.rs:906,1
    - Dst: Metadata::default
      Src: /src/opendal/core/services/gcs/src/core.rs:906,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - path
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 908
      start: 903
    functionDepth: 3
    functionLinenumber: 903
    functionLinenumberEnd: 908
    functionName: RewriteResponse::into_metadata
    functionSourceFile: /src/opendal/core/services/gcs/src/core.rs
    functionUses: 0
    functionsReached:
    - into_metadata
    - Metadata::default
    - Ok
    linkageType: ''
    returnType: Result
    signature: 'pub fn into_metadata(self, path: &str) -> Result<Metadata>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: GcsCore::build_metadata_from_object_response
      Src: /src/opendal/core/services/gcs/src/core.rs:983,1
    - Dst: Result::into
      Src: /src/opendal/core/services/gcs/src/core.rs:983,1
    - Dst: Result::expect
      Src: /src/opendal/core/services/gcs/src/core.rs:983,1
    - Dst: HashMap::from_iter
      Src: /src/opendal/core/services/gcs/src/core.rs:1003,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/gcs/src/core.rs:1003,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/gcs/src/core.rs:1003,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 22
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 1005
      start: 956
    functionDepth: 29
    functionLinenumber: 956
    functionLinenumberEnd: 1005
    functionName: tests::test_deserialize_get_object_json_response
    functionSourceFile: /src/opendal/core/services/gcs/src/core.rs
    functionUses: 0
    functionsReached:
    - Result::expect
    - GcsCore::build_metadata_from_object_response
    - Result::into
    - '&str::to_string'
    - HashMap::from_iter
    linkageType: ''
    returnType: void
    signature: fn test_deserialize_get_object_json_response()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: serde_json::from_str
      Src: /src/opendal/core/services/gcs/src/core.rs:1060,1
    - Dst: Result::expect
      Src: /src/opendal/core/services/gcs/src/core.rs:1060,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 16
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 1075
      start: 1008
    functionDepth: 34
    functionLinenumber: 1008
    functionLinenumberEnd: 1075
    functionName: tests::test_deserialize_list_response
    functionSourceFile: /src/opendal/core/services/gcs/src/core.rs
    functionUses: 0
    functionsReached:
    - Result::expect
    - serde_json::from_str
    linkageType: ''
    returnType: void
    signature: fn test_deserialize_list_response()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: serde_json::from_str
      Src: /src/opendal/core/services/gcs/src/core.rs:1131,1
    - Dst: Result::expect
      Src: /src/opendal/core/services/gcs/src/core.rs:1131,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 15
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 1145
      start: 1078
    functionDepth: 34
    functionLinenumber: 1078
    functionLinenumberEnd: 1145
    functionName: tests::test_deserialize_list_response_with_next_page_token
    functionSourceFile: /src/opendal/core/services/gcs/src/core.rs
    functionUses: 0
    functionsReached:
    - Result::expect
    - serde_json::from_str
    linkageType: ''
    returnType: void
    signature: fn test_deserialize_list_response_with_next_page_token()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: utf8_percent_encode
      Src: /src/opendal/core/services/gcs/src/core.rs:1281,1
    - Dst: to_string
      Src: /src/opendal/core/services/gcs/src/core.rs:1281,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - path
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 1282
      start: 1280
    functionDepth: 2
    functionLinenumber: 1280
    functionLinenumberEnd: 1282
    functionName: uri::gcs_percent_encode_path
    functionSourceFile: /src/opendal/core/services/gcs/src/core.rs
    functionUses: 0
    functionsReached:
    - to_string
    - utf8_percent_encode
    linkageType: ''
    returnType: String
    signature: 'pub(crate) fn gcs_percent_encode_path(path: &str) -> String'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: gcs_percent_encode_path
      Src: /src/opendal/core/services/gcs/src/core.rs:1311,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 1315
      start: 1289
    functionDepth: 3
    functionLinenumber: 1289
    functionLinenumberEnd: 1315
    functionName: uri::test_percent_encode_path
    functionSourceFile: /src/opendal/core/services/gcs/src/core.rs
    functionUses: 0
    functionsReached:
    - gcs_percent_encode_path
    linkageType: ''
    returnType: void
    signature: fn test_percent_encode_path()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: to_string
      Src: /src/opendal/core/services/gcs/src/writer.rs:45,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 4
    argNames:
    - core
    - ctx
    - path
    - op
    argTypes:
    - Arc<GcsCore>
    - OperationContext
    - '&str'
    - OpWrite
    constantsTouched: []
    func_position:
      end: 48
      start: 41
    functionDepth: 2
    functionLinenumber: 41
    functionLinenumberEnd: 48
    functionName: GcsWriter::new
    functionSourceFile: /src/opendal/core/services/gcs/src/writer.rs
    functionUses: 1
    functionsReached:
    - to_string
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(core: Arc<GcsCore>, ctx: OperationContext, path: &str,
      op: OpWrite) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: u64::len
      Src: /src/opendal/core/services/gcs/src/writer.rs:53,1
    - Dst: gcs_insert_object_request
      Src: /src/opendal/core/services/gcs/src/writer.rs:54,1
    - Dst: super::core::gcs_percent_encode_path
      Src: /src/opendal/core/services/gcs/src/writer.rs:55,1
    - Dst: Some
      Src: /src/opendal/core/services/gcs/src/writer.rs:56,1
    - Dst: sign
      Src: /src/opendal/core/services/gcs/src/writer.rs:61,1
    - Dst: send
      Src: /src/opendal/core/services/gcs/src/writer.rs:63,1
    - Dst: status
      Src: /src/opendal/core/services/gcs/src/writer.rs:65,1
    - Dst: GcsCore::build_metadata_from_object_response
      Src: /src/opendal/core/services/gcs/src/writer.rs:70,1
    - Dst: into_body
      Src: /src/opendal/core/services/gcs/src/writer.rs:70,1
    - Dst: Ok
      Src: /src/opendal/core/services/gcs/src/writer.rs:71,1
    - Dst: Err
      Src: /src/opendal/core/services/gcs/src/writer.rs:73,1
    - Dst: super::core::parse_error
      Src: /src/opendal/core/services/gcs/src/writer.rs:73,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 41
    argCount: 2
    argNames:
    - body
    argTypes:
    - u64
    - Buffer
    constantsTouched: []
    func_position:
      end: 75
      start: 52
    functionDepth: 33
    functionLinenumber: 52
    functionLinenumberEnd: 75
    functionName: GcsWriter::write_once
    functionSourceFile: /src/opendal/core/services/gcs/src/writer.rs
    functionUses: 0
    functionsReached:
    - u64::len
    - status
    - Ok
    - sign
    - GcsCore::build_metadata_from_object_response
    - into_body
    - Some
    - Err
    - gcs_insert_object_request
    - send
    - super::core::gcs_percent_encode_path
    - super::core::parse_error
    linkageType: ''
    returnType: Result
    signature: 'async fn write_once(&self, _: u64, body: Buffer) -> Result<Metadata>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: gcs_initiate_multipart_upload
      Src: /src/opendal/core/services/gcs/src/writer.rs:78,1
    - Dst: super::core::gcs_percent_encode_path
      Src: /src/opendal/core/services/gcs/src/writer.rs:82,1
    - Dst: status
      Src: /src/opendal/core/services/gcs/src/writer.rs:87,1
    - Dst: is_success
      Src: /src/opendal/core/services/gcs/src/writer.rs:87,1
    - Dst: Err
      Src: /src/opendal/core/services/gcs/src/writer.rs:88,1
    - Dst: super::core::parse_error
      Src: /src/opendal/core/services/gcs/src/writer.rs:88,1
    - Dst: into_body
      Src: /src/opendal/core/services/gcs/src/writer.rs:91,1
    - Dst: quick_xml::de::from_reader
      Src: /src/opendal/core/services/gcs/src/writer.rs:93,1
    - Dst: io::Result::reader
      Src: /src/opendal/core/services/gcs/src/writer.rs:93,1
    - Dst: map_err
      Src: /src/opendal/core/services/gcs/src/writer.rs:93,1
    - Dst: Ok
      Src: /src/opendal/core/services/gcs/src/writer.rs:94,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 34
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 95
      start: 77
    functionDepth: 33
    functionLinenumber: 77
    functionLinenumberEnd: 95
    functionName: GcsWriter::initiate_part
    functionSourceFile: /src/opendal/core/services/gcs/src/writer.rs
    functionUses: 0
    functionsReached:
    - map_err
    - is_success
    - status
    - Ok
    - io::Result::reader
    - into_body
    - Err
    - quick_xml::de::from_reader
    - super::core::gcs_percent_encode_path
    - gcs_initiate_multipart_upload
    - super::core::parse_error
    linkageType: ''
    returnType: Result
    signature: async fn initiate_part(&self) -> Result<String>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: gcs_upload_part
      Src: /src/opendal/core/services/gcs/src/writer.rs:107,1
    - Dst: status
      Src: /src/opendal/core/services/gcs/src/writer.rs:112,1
    - Dst: is_success
      Src: /src/opendal/core/services/gcs/src/writer.rs:112,1
    - Dst: Err
      Src: /src/opendal/core/services/gcs/src/writer.rs:113,1
    - Dst: super::core::parse_error
      Src: /src/opendal/core/services/gcs/src/writer.rs:113,1
    - Dst: parse_etag
      Src: /src/opendal/core/services/gcs/src/writer.rs:116,1
    - Dst: headers
      Src: /src/opendal/core/services/gcs/src/writer.rs:116,1
    - Dst: ok_or_else
      Src: /src/opendal/core/services/gcs/src/writer.rs:116,1
    - Dst: Error::new
      Src: /src/opendal/core/services/gcs/src/writer.rs:118,1
    - Dst: to_string
      Src: /src/opendal/core/services/gcs/src/writer.rs:116,1
    - Dst: Ok
      Src: /src/opendal/core/services/gcs/src/writer.rs:125,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 34
    argCount: 4
    argNames:
    - upload_id
    - part_number
    - size
    - body
    argTypes:
    - '&str'
    - usize
    - u64
    - Buffer
    constantsTouched: []
    func_position:
      end: 131
      start: 97
    functionDepth: 37
    functionLinenumber: 97
    functionLinenumberEnd: 131
    functionName: GcsWriter::write_part
    functionSourceFile: /src/opendal/core/services/gcs/src/writer.rs
    functionUses: 0
    functionsReached:
    - to_string
    - is_success
    - status
    - Ok
    - gcs_upload_part
    - Err
    - Error::new
    - headers
    - parse_etag
    - super::core::parse_error
    - ok_or_else
    linkageType: ''
    returnType: Result
    signature: 'async fn write_part(&self,upload_id: &str,part_number: usize,size:
      u64,body: Buffer,) -> Result<oio::MultipartPart>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: (String, Metadata)::iter
      Src: /src/opendal/core/services/gcs/src/writer.rs:138,1
    - Dst: map
      Src: /src/opendal/core/services/gcs/src/writer.rs:138,1
    - Dst: clone
      Src: /src/opendal/core/services/gcs/src/writer.rs:142,1
    - Dst: Result::collect
      Src: /src/opendal/core/services/gcs/src/writer.rs:138,1
    - Dst: gcs_complete_multipart_upload
      Src: /src/opendal/core/services/gcs/src/writer.rs:146,1
    - Dst: status
      Src: /src/opendal/core/services/gcs/src/writer.rs:151,1
    - Dst: is_success
      Src: /src/opendal/core/services/gcs/src/writer.rs:151,1
    - Dst: Err
      Src: /src/opendal/core/services/gcs/src/writer.rs:152,1
    - Dst: super::core::parse_error
      Src: /src/opendal/core/services/gcs/src/writer.rs:152,1
    - Dst: Ok
      Src: /src/opendal/core/services/gcs/src/writer.rs:157,1
    - Dst: Metadata::default
      Src: /src/opendal/core/services/gcs/src/writer.rs:157,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 34
    argCount: 2
    argNames:
    - upload_id
    - parts
    argTypes:
    - '&str'
    - '&[oio::MultipartPart]'
    constantsTouched: []
    func_position:
      end: 158
      start: 133
    functionDepth: 36
    functionLinenumber: 133
    functionLinenumberEnd: 158
    functionName: GcsWriter::complete_part
    functionSourceFile: /src/opendal/core/services/gcs/src/writer.rs
    functionUses: 0
    functionsReached:
    - is_success
    - Metadata::default
    - status
    - Ok
    - gcs_complete_multipart_upload
    - clone
    - Err
    - map
    - Result::collect
    - (String, Metadata)::iter
    - super::core::parse_error
    linkageType: ''
    returnType: Result
    signature: 'async fn complete_part(&self,upload_id: &str,parts: &[oio::MultipartPart],)
      -> Result<Metadata>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: gcs_abort_multipart_upload
      Src: /src/opendal/core/services/gcs/src/writer.rs:161,1
    - Dst: status
      Src: /src/opendal/core/services/gcs/src/writer.rs:165,1
    - Dst: Ok
      Src: /src/opendal/core/services/gcs/src/writer.rs:167,1
    - Dst: Err
      Src: /src/opendal/core/services/gcs/src/writer.rs:168,1
    - Dst: super::core::parse_error
      Src: /src/opendal/core/services/gcs/src/writer.rs:168,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 1
    argNames:
    - upload_id
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 170
      start: 160
    functionDepth: 33
    functionLinenumber: 160
    functionLinenumberEnd: 170
    functionName: GcsWriter::abort_part
    functionSourceFile: /src/opendal/core/services/gcs/src/writer.rs
    functionUses: 0
    functionsReached:
    - status
    - Ok
    - gcs_abort_multipart_upload
    - Err
    - super::core::parse_error
    linkageType: ''
    returnType: Result
    signature: 'async fn abort_part(&self, upload_id: &str) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: register::<Gcs>
      Src: /src/opendal/core/services/gcs/src/lib.rs:39,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - registry
    argTypes:
    - '&opendal_core::OperatorRegistry'
    constantsTouched: []
    func_position:
      end: 40
      start: 38
    functionDepth: 0
    functionLinenumber: 38
    functionLinenumberEnd: 40
    functionName: register_gcs_service
    functionSourceFile: /src/opendal/core/services/gcs/src/lib.rs
    functionUses: 1
    functionsReached:
    - register::<Gcs>
    linkageType: ''
    returnType: void
    signature: 'pub fn register_gcs_service(registry: &opendal_core::OperatorRegistry)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::debug_struct
      Src: /src/opendal/core/services/gcs/src/backend.rs:66,1
    - Dst: field
      Src: /src/opendal/core/services/gcs/src/backend.rs:66,1
    - Dst: finish_non_exhaustive
      Src: /src/opendal/core/services/gcs/src/backend.rs:66,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - f
    argTypes:
    - '&mut std::fmt::Formatter<''_>'
    constantsTouched: []
    func_position:
      end: 69
      start: 65
    functionDepth: 5
    functionLinenumber: 65
    functionLinenumberEnd: 69
    functionName: GcsBuilder::fmt
    functionSourceFile: /src/opendal/core/services/gcs/src/backend.rs
    functionUses: 0
    functionsReached:
    - field
    - Result::debug_struct
    - finish_non_exhaustive
    linkageType: ''
    returnType: std::fmt::Result
    signature: 'fn fmt(&self, f: &mut std::fmt::Formatter<''_>) -> std::fmt::Result'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::is_empty
      Src: /src/opendal/core/services/gcs/src/backend.rs:75,1
    - Dst: Some
      Src: /src/opendal/core/services/gcs/src/backend.rs:78,1
    - Dst: Result::to_string
      Src: /src/opendal/core/services/gcs/src/backend.rs:78,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - root
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 82
      start: 74
    functionDepth: 4
    functionLinenumber: 74
    functionLinenumberEnd: 82
    functionName: GcsBuilder::root
    functionSourceFile: /src/opendal/core/services/gcs/src/backend.rs
    functionUses: 0
    functionsReached:
    - Result::is_empty
    - Result::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn root(mut self, root: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: usize::to_string
      Src: /src/opendal/core/services/gcs/src/backend.rs:86,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - bucket
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 88
      start: 85
    functionDepth: 2
    functionLinenumber: 85
    functionLinenumberEnd: 88
    functionName: GcsBuilder::bucket
    functionSourceFile: /src/opendal/core/services/gcs/src/backend.rs
    functionUses: 0
    functionsReached:
    - usize::to_string
    linkageType: ''
    returnType: Self
    signature: 'pub fn bucket(mut self, bucket: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self::is_empty
      Src: /src/opendal/core/services/gcs/src/backend.rs:102,1
    - Dst: Some
      Src: /src/opendal/core/services/gcs/src/backend.rs:103,1
    - Dst: Self::to_string
      Src: /src/opendal/core/services/gcs/src/backend.rs:103,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 1
    argNames:
    - scope
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 106
      start: 101
    functionDepth: 4
    functionLinenumber: 101
    functionLinenumberEnd: 106
    functionName: GcsBuilder::scope
    functionSourceFile: /src/opendal/core/services/gcs/src/backend.rs
    functionUses: 0
    functionsReached:
    - Self::is_empty
    - Self::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn scope(mut self, scope: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self::is_empty
      Src: /src/opendal/core/services/gcs/src/backend.rs:113,1
    - Dst: Some
      Src: /src/opendal/core/services/gcs/src/backend.rs:114,1
    - Dst: Self::to_string
      Src: /src/opendal/core/services/gcs/src/backend.rs:114,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 1
    argNames:
    - service_account
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 117
      start: 112
    functionDepth: 4
    functionLinenumber: 112
    functionLinenumberEnd: 117
    functionName: GcsBuilder::service_account
    functionSourceFile: /src/opendal/core/services/gcs/src/backend.rs
    functionUses: 0
    functionsReached:
    - Self::is_empty
    - Self::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn service_account(mut self, service_account: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self::is_empty
      Src: /src/opendal/core/services/gcs/src/backend.rs:121,1
    - Dst: Some
      Src: /src/opendal/core/services/gcs/src/backend.rs:122,1
    - Dst: Self::to_string
      Src: /src/opendal/core/services/gcs/src/backend.rs:122,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 1
    argNames:
    - endpoint
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 125
      start: 120
    functionDepth: 4
    functionLinenumber: 120
    functionLinenumberEnd: 125
    functionName: GcsBuilder::endpoint
    functionSourceFile: /src/opendal/core/services/gcs/src/backend.rs
    functionUses: 0
    functionsReached:
    - Self::is_empty
    - Self::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn endpoint(mut self, endpoint: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self::is_empty
      Src: /src/opendal/core/services/gcs/src/backend.rs:135,1
    - Dst: Some
      Src: /src/opendal/core/services/gcs/src/backend.rs:136,1
    - Dst: Self::to_string
      Src: /src/opendal/core/services/gcs/src/backend.rs:136,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 1
    argNames:
    - credential
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 139
      start: 134
    functionDepth: 4
    functionLinenumber: 134
    functionLinenumberEnd: 139
    functionName: GcsBuilder::credential
    functionSourceFile: /src/opendal/core/services/gcs/src/backend.rs
    functionUses: 0
    functionsReached:
    - Self::is_empty
    - Self::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn credential(mut self, credential: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: is_empty
      Src: /src/opendal/core/services/gcs/src/backend.rs:148,1
    - Dst: Some
      Src: /src/opendal/core/services/gcs/src/backend.rs:149,1
    - Dst: to_string
      Src: /src/opendal/core/services/gcs/src/backend.rs:149,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 1
    argNames:
    - path
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 152
      start: 147
    functionDepth: 4
    functionLinenumber: 147
    functionLinenumberEnd: 152
    functionName: GcsBuilder::credential_path
    functionSourceFile: /src/opendal/core/services/gcs/src/backend.rs
    functionUses: 0
    functionsReached:
    - to_string
    - Some
    - is_empty
    linkageType: ''
    returnType: Self
    signature: 'pub fn credential_path(mut self, path: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: unwrap_or_default
      Src: /src/opendal/core/services/gcs/src/backend.rs:161,1
    - Dst: Some
      Src: /src/opendal/core/services/gcs/src/backend.rs:162,1
    - Dst: push_front
      Src: /src/opendal/core/services/gcs/src/backend.rs:162,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 1
    argNames:
    - provider
    argTypes:
    - impl ProvideCredential<Credential = Credential> + 'static
    constantsTouched: []
    func_position:
      end: 164
      start: 157
    functionDepth: 0
    functionLinenumber: 157
    functionLinenumberEnd: 164
    functionName: GcsBuilder::credential_provider
    functionSourceFile: /src/opendal/core/services/gcs/src/backend.rs
    functionUses: 0
    functionsReached:
    - push_front
    - unwrap_or_default
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn credential_provider(mut self,provider: impl ProvideCredential<Credential
      = Credential> + ''static,) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Some
      Src: /src/opendal/core/services/gcs/src/backend.rs:170,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - chain
    argTypes:
    - ProvideCredentialChain<Credential>
    constantsTouched: []
    func_position:
      end: 172
      start: 169
    functionDepth: 0
    functionLinenumber: 169
    functionLinenumberEnd: 172
    functionName: GcsBuilder::credential_provider_chain
    functionSourceFile: /src/opendal/core/services/gcs/src/backend.rs
    functionUses: 0
    functionsReached:
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn credential_provider_chain(mut self, chain: ProvideCredentialChain<Credential>)
      -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Some
      Src: /src/opendal/core/services/gcs/src/backend.rs:176,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - token
    argTypes:
    - String
    constantsTouched: []
    func_position:
      end: 178
      start: 175
    functionDepth: 0
    functionLinenumber: 175
    functionLinenumberEnd: 178
    functionName: GcsBuilder::token
    functionSourceFile: /src/opendal/core/services/gcs/src/backend.rs
    functionUses: 0
    functionsReached:
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn token(mut self, token: String) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 184
      start: 181
    functionDepth: 0
    functionLinenumber: 181
    functionLinenumberEnd: 184
    functionName: GcsBuilder::disable_vm_metadata
    functionSourceFile: /src/opendal/core/services/gcs/src/backend.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: pub fn disable_vm_metadata(mut self) -> Self
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 190
      start: 187
    functionDepth: 0
    functionLinenumber: 187
    functionLinenumberEnd: 190
    functionName: GcsBuilder::disable_config_load
    functionSourceFile: /src/opendal/core/services/gcs/src/backend.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: pub fn disable_config_load(mut self) -> Self
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self::is_empty
      Src: /src/opendal/core/services/gcs/src/backend.rs:202,1
    - Dst: Some
      Src: /src/opendal/core/services/gcs/src/backend.rs:203,1
    - Dst: Self::to_string
      Src: /src/opendal/core/services/gcs/src/backend.rs:203,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 1
    argNames:
    - acl
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 206
      start: 201
    functionDepth: 4
    functionLinenumber: 201
    functionLinenumberEnd: 206
    functionName: GcsBuilder::predefined_acl
    functionSourceFile: /src/opendal/core/services/gcs/src/backend.rs
    functionUses: 0
    functionsReached:
    - Self::is_empty
    - Self::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn predefined_acl(mut self, acl: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self::is_empty
      Src: /src/opendal/core/services/gcs/src/backend.rs:216,1
    - Dst: Some
      Src: /src/opendal/core/services/gcs/src/backend.rs:217,1
    - Dst: Self::to_string
      Src: /src/opendal/core/services/gcs/src/backend.rs:217,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 1
    argNames:
    - class
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 220
      start: 215
    functionDepth: 4
    functionLinenumber: 215
    functionLinenumberEnd: 220
    functionName: GcsBuilder::default_storage_class
    functionSourceFile: /src/opendal/core/services/gcs/src/backend.rs
    functionUses: 0
    functionsReached:
    - Self::is_empty
    - Self::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn default_storage_class(mut self, class: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 229
      start: 226
    functionDepth: 0
    functionLinenumber: 226
    functionLinenumberEnd: 229
    functionName: GcsBuilder::skip_signature
    functionSourceFile: /src/opendal/core/services/gcs/src/backend.rs
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: pub fn skip_signature(mut self) -> Self
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: GcsBuilder::skip_signature
      Src: /src/opendal/core/services/gcs/src/backend.rs:237,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 238
      start: 236
    functionDepth: 1
    functionLinenumber: 236
    functionLinenumberEnd: 238
    functionName: GcsBuilder::allow_anonymous
    functionSourceFile: /src/opendal/core/services/gcs/src/backend.rs
    functionUses: 0
    functionsReached:
    - GcsBuilder::skip_signature
    linkageType: ''
    returnType: Self
    signature: pub fn allow_anonymous(self) -> Self
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: normalize_root
      Src: /src/opendal/core/services/gcs/src/backend.rs:250,1
    - Dst: unwrap_or_default
      Src: /src/opendal/core/services/gcs/src/backend.rs:250,1
    - Dst: is_empty
      Src: /src/opendal/core/services/gcs/src/backend.rs:254,1
    - Dst: Ok
      Src: /src/opendal/core/services/gcs/src/backend.rs:255,1
    - Dst: Err
      Src: /src/opendal/core/services/gcs/src/backend.rs:256,1
    - Dst: Error::new
      Src: /src/opendal/core/services/gcs/src/backend.rs:257,1
    - Dst: Self::with_operation
      Src: /src/opendal/core/services/gcs/src/backend.rs:257,1
    - Dst: Self::with_context
      Src: /src/opendal/core/services/gcs/src/backend.rs:257,1
    - Dst: clone
      Src: /src/opendal/core/services/gcs/src/backend.rs:265,1
    - Dst: unwrap_or_else
      Src: /src/opendal/core/services/gcs/src/backend.rs:265,1
    - Dst: to_string
      Src: /src/opendal/core/services/gcs/src/backend.rs:269,1
    - Dst: clone
      Src: /src/opendal/core/services/gcs/src/backend.rs:272,1
    - Dst: unwrap_or_else
      Src: /src/opendal/core/services/gcs/src/backend.rs:272,1
    - Dst: to_string
      Src: /src/opendal/core/services/gcs/src/backend.rs:276,1
    - Dst: reqsign_core::OsEnv::vars
      Src: /src/opendal/core/services/gcs/src/backend.rs:279,1
    - Dst: insert
      Src: /src/opendal/core/services/gcs/src/backend.rs:280,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/gcs/src/backend.rs:280,1
    - Dst: Self::clone
      Src: /src/opendal/core/services/gcs/src/backend.rs:280,1
    - Dst: Context::new
      Src: /src/opendal/core/services/gcs/src/backend.rs:282,1
    - Dst: Self::with_file_read
      Src: /src/opendal/core/services/gcs/src/backend.rs:282,1
    - Dst: with_env
      Src: /src/opendal/core/services/gcs/src/backend.rs:282,1
    - Dst: reqsign_core::OsEnv::home_dir
      Src: /src/opendal/core/services/gcs/src/backend.rs:285,1
    - Dst: DefaultCredentialProvider::builder
      Src: /src/opendal/core/services/gcs/src/backend.rs:289,1
    - Dst: OtelMetricsLayerBuilder::no_env
      Src: /src/opendal/core/services/gcs/src/backend.rs:292,1
    - Dst: no_well_known
      Src: /src/opendal/core/services/gcs/src/backend.rs:292,1
    - Dst: OtelMetricsLayerBuilder::no_env
      Src: /src/opendal/core/services/gcs/src/backend.rs:296,1
    - Dst: no_well_known
      Src: /src/opendal/core/services/gcs/src/backend.rs:296,1
    - Dst: is_some
      Src: /src/opendal/core/services/gcs/src/backend.rs:299,1
    - Dst: OtelMetricsLayerBuilder::no_vm_metadata
      Src: /src/opendal/core/services/gcs/src/backend.rs:300,1
    - Dst: ProvideCredentialChain::new
      Src: /src/opendal/core/services/gcs/src/backend.rs:303,1
    - Dst: Self::push
      Src: /src/opendal/core/services/gcs/src/backend.rs:303,1
    - Dst: OtelMetricsLayerBuilder::build
      Src: /src/opendal/core/services/gcs/src/backend.rs:303,1
    - Dst: as_deref
      Src: /src/opendal/core/services/gcs/src/backend.rs:306,1
    - Dst: Self::push
      Src: /src/opendal/core/services/gcs/src/backend.rs:308,1
    - Dst: VmMetadataCredentialProvider::new
      Src: /src/opendal/core/services/gcs/src/backend.rs:309,1
    - Dst: Self::with_scope
      Src: /src/opendal/core/services/gcs/src/backend.rs:309,1
    - Dst: with_service_account
      Src: /src/opendal/core/services/gcs/src/backend.rs:309,1
    - Dst: as_deref
      Src: /src/opendal/core/services/gcs/src/backend.rs:315,1
    - Dst: Self::push_front
      Src: /src/opendal/core/services/gcs/src/backend.rs:317,1
    - Dst: FileCredentialProvider::new
      Src: /src/opendal/core/services/gcs/src/backend.rs:317,1
    - Dst: Self::with_scope
      Src: /src/opendal/core/services/gcs/src/backend.rs:317,1
    - Dst: as_deref
      Src: /src/opendal/core/services/gcs/src/backend.rs:320,1
    - Dst: StaticCredentialProvider::from_base64
      Src: /src/opendal/core/services/gcs/src/backend.rs:321,1
    - Dst: Self::push_front
      Src: /src/opendal/core/services/gcs/src/backend.rs:323,1
    - Dst: Self::with_scope
      Src: /src/opendal/core/services/gcs/src/backend.rs:323,1
    - Dst: as_deref
      Src: /src/opendal/core/services/gcs/src/backend.rs:326,1
    - Dst: Self::push_front
      Src: /src/opendal/core/services/gcs/src/backend.rs:327,1
    - Dst: TokenCredentialProvider::new
      Src: /src/opendal/core/services/gcs/src/backend.rs:327,1
    - Dst: Self::push_front
      Src: /src/opendal/core/services/gcs/src/backend.rs:331,1
    - Dst: Signer::new
      Src: /src/opendal/core/services/gcs/src/backend.rs:335,1
    - Dst: ctx::clone
      Src: /src/opendal/core/services/gcs/src/backend.rs:336,1
    - Dst: RequestSigner::new
      Src: /src/opendal/core/services/gcs/src/backend.rs:338,1
    - Dst: Self::with_scope
      Src: /src/opendal/core/services/gcs/src/backend.rs:338,1
    - Dst: ServiceInfo::new
      Src: /src/opendal/core/services/gcs/src/backend.rs:341,1
    - Dst: Some
      Src: /src/opendal/core/services/gcs/src/backend.rs:365,1
    - Dst: Some
      Src: /src/opendal/core/services/gcs/src/backend.rs:370,1
    - Dst: Some
      Src: /src/opendal/core/services/gcs/src/backend.rs:372,1
    - Dst: Some
      Src: /src/opendal/core/services/gcs/src/backend.rs:376,1
    - Dst: Some
      Src: /src/opendal/core/services/gcs/src/backend.rs:384,1
    - Dst: Some
      Src: /src/opendal/core/services/gcs/src/backend.rs:385,1
    - Dst: Default::default
      Src: /src/opendal/core/services/gcs/src/backend.rs:399,1
    - Dst: Arc::new
      Src: /src/opendal/core/services/gcs/src/backend.rs:403,1
    - Dst: usize::to_string
      Src: /src/opendal/core/services/gcs/src/backend.rs:407,1
    - Dst: clone
      Src: /src/opendal/core/services/gcs/src/backend.rs:411,1
    - Dst: clone
      Src: /src/opendal/core/services/gcs/src/backend.rs:412,1
    - Dst: Ok
      Src: /src/opendal/core/services/gcs/src/backend.rs:417,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 203
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 418
      start: 244
    functionDepth: 34
    functionLinenumber: 244
    functionLinenumberEnd: 418
    functionName: GcsBuilder::build
    functionSourceFile: /src/opendal/core/services/gcs/src/backend.rs
    functionUses: 0
    functionsReached:
    - as_deref
    - Self::push_front
    - Default::default
    - Arc::new
    - clone
    - is_some
    - Self::clone
    - ProvideCredentialChain::new
    - OtelMetricsLayerBuilder::no_vm_metadata
    - Signer::new
    - usize::to_string
    - Self::with_context
    - unwrap_or_else
    - OtelMetricsLayerBuilder::build
    - ServiceInfo::new
    - Ok
    - Context::new
    - OtelMetricsLayerBuilder::no_env
    - normalize_root
    - '&str::to_string'
    - StaticCredentialProvider::from_base64
    - reqsign_core::OsEnv::home_dir
    - Self::with_scope
    - TokenCredentialProvider::new
    - unwrap_or_default
    - RequestSigner::new
    - insert
    - Self::push
    - is_empty
    - Some
    - VmMetadataCredentialProvider::new
    - reqsign_core::OsEnv::vars
    - with_service_account
    - to_string
    - with_env
    - ctx::clone
    - Err
    - Error::new
    - FileCredentialProvider::new
    - no_well_known
    - Self::with_file_read
    - Self::with_operation
    - DefaultCredentialProvider::builder
    linkageType: ''
    returnType: Result
    signature: fn build(self) -> Result<impl Service>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: clone
      Src: /src/opendal/core/services/gcs/src/backend.rs:435,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 436
      start: 434
    functionDepth: 2
    functionLinenumber: 434
    functionLinenumberEnd: 436
    functionName: GcsBackend::info
    functionSourceFile: /src/opendal/core/services/gcs/src/backend.rs
    functionUses: 0
    functionsReached:
    - clone
    linkageType: ''
    returnType: ServiceInfo
    signature: fn info(&self) -> ServiceInfo
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 440
      start: 438
    functionDepth: 0
    functionLinenumber: 438
    functionLinenumberEnd: 440
    functionName: GcsBackend::capability
    functionSourceFile: /src/opendal/core/services/gcs/src/backend.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Capability
    signature: fn capability(&self) -> Capability
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/core/services/gcs/src/backend.rs:448,1
    - Dst: Error::new
      Src: /src/opendal/core/services/gcs/src/backend.rs:448,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - _ctx
    - _path
    - _args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpCreateDir
    constantsTouched: []
    func_position:
      end: 452
      start: 442
    functionDepth: 36
    functionLinenumber: 442
    functionLinenumberEnd: 452
    functionName: GcsBackend::create_dir
    functionSourceFile: /src/opendal/core/services/gcs/src/backend.rs
    functionUses: 0
    functionsReached:
    - Error::new
    - Err
    linkageType: ''
    returnType: Result
    signature: 'async fn create_dir(&self,_ctx: &OperationContext,_path: &str,_args:
      OpCreateDir,) -> Result<RpCreateDir>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: gcs_get_object_metadata
      Src: /src/opendal/core/services/gcs/src/backend.rs:455,1
    - Dst: status
      Src: /src/opendal/core/services/gcs/src/backend.rs:457,1
    - Dst: is_success
      Src: /src/opendal/core/services/gcs/src/backend.rs:457,1
    - Dst: Err
      Src: /src/opendal/core/services/gcs/src/backend.rs:458,1
    - Dst: super::core::parse_error
      Src: /src/opendal/core/services/gcs/src/backend.rs:458,1
    - Dst: into_body
      Src: /src/opendal/core/services/gcs/src/backend.rs:461,1
    - Dst: GcsCore::build_metadata_from_object_response
      Src: /src/opendal/core/services/gcs/src/backend.rs:462,1
    - Dst: Ok
      Src: /src/opendal/core/services/gcs/src/backend.rs:464,1
    - Dst: RpStat::new
      Src: /src/opendal/core/services/gcs/src/backend.rs:464,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 23
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpStat
    constantsTouched: []
    func_position:
      end: 465
      start: 454
    functionDepth: 37
    functionLinenumber: 454
    functionLinenumberEnd: 465
    functionName: GcsBackend::stat
    functionSourceFile: /src/opendal/core/services/gcs/src/backend.rs
    functionUses: 0
    functionsReached:
    - is_success
    - status
    - Ok
    - RpStat::new
    - gcs_get_object_metadata
    - into_body
    - GcsCore::build_metadata_from_object_response
    - Err
    - super::core::parse_error
    linkageType: ''
    returnType: Result
    signature: 'async fn stat(&self, ctx: &OperationContext, path: &str, args: OpStat)
      -> Result<RpStat>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/core/services/gcs/src/backend.rs:468,1
    - Dst: oio::StreamReader::new
      Src: /src/opendal/core/services/gcs/src/backend.rs:468,1
    - Dst: GcsReader::new
      Src: /src/opendal/core/services/gcs/src/backend.rs:468,1
    - Dst: GcsBackend::clone
      Src: /src/opendal/core/services/gcs/src/backend.rs:469,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/gcs/src/backend.rs:470,1
    - Dst: Ok
      Src: /src/opendal/core/services/gcs/src/backend.rs:476,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpRead
    constantsTouched: []
    func_position:
      end: 477
      start: 466
    functionDepth: 3
    functionLinenumber: 466
    functionLinenumberEnd: 477
    functionName: GcsBackend::read
    functionSourceFile: /src/opendal/core/services/gcs/src/backend.rs
    functionUses: 0
    functionsReached:
    - Result::clone
    - Ok
    - oio::StreamReader::new
    - GcsReader::new
    - GcsBackend::clone
    linkageType: ''
    returnType: Result
    signature: 'fn read(&self, ctx: &OperationContext, path: &str, args: OpRead) ->
      Result<Self::Reader>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: OpStat::concurrent
      Src: /src/opendal/core/services/gcs/src/backend.rs:481,1
    - Dst: GcsWriter::new
      Src: /src/opendal/core/services/gcs/src/backend.rs:482,1
    - Dst: clone
      Src: /src/opendal/core/services/gcs/src/backend.rs:482,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/gcs/src/backend.rs:482,1
    - Dst: oio::MultipartWriter::new
      Src: /src/opendal/core/services/gcs/src/backend.rs:485,1
    - Dst: Result::executor
      Src: /src/opendal/core/services/gcs/src/backend.rs:485,1
    - Dst: Self::clone
      Src: /src/opendal/core/services/gcs/src/backend.rs:485,1
    - Dst: Ok
      Src: /src/opendal/core/services/gcs/src/backend.rs:487,1
    - Dst: Ok
      Src: /src/opendal/core/services/gcs/src/backend.rs:490,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 16
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpWrite
    constantsTouched: []
    func_position:
      end: 491
      start: 479
    functionDepth: 37
    functionLinenumber: 479
    functionLinenumberEnd: 491
    functionName: GcsBackend::write
    functionSourceFile: /src/opendal/core/services/gcs/src/backend.rs
    functionUses: 0
    functionsReached:
    - Result::clone
    - oio::MultipartWriter::new
    - GcsWriter::new
    - Ok
    - Result::executor
    - clone
    - OpStat::concurrent
    - Self::clone
    linkageType: ''
    returnType: Result
    signature: 'fn write(&self, ctx: &OperationContext, path: &str, args: OpWrite)
      -> Result<Self::Writer>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/core/services/gcs/src/backend.rs:495,1
    - Dst: oio::BatchDeleter::new
      Src: /src/opendal/core/services/gcs/src/backend.rs:495,1
    - Dst: GcsDeleter::new
      Src: /src/opendal/core/services/gcs/src/backend.rs:496,1
    - Dst: clone
      Src: /src/opendal/core/services/gcs/src/backend.rs:496,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/gcs/src/backend.rs:496,1
    - Dst: Ok
      Src: /src/opendal/core/services/gcs/src/backend.rs:501,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - '&OperationContext'
    constantsTouched: []
    func_position:
      end: 502
      start: 493
    functionDepth: 4
    functionLinenumber: 493
    functionLinenumberEnd: 502
    functionName: GcsBackend::delete
    functionSourceFile: /src/opendal/core/services/gcs/src/backend.rs
    functionUses: 0
    functionsReached:
    - Result::clone
    - GcsDeleter::new
    - Ok
    - clone
    - oio::BatchDeleter::new
    linkageType: ''
    returnType: Result
    signature: 'fn delete(&self, ctx: &OperationContext) -> Result<Self::Deleter>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: GcsLister::new
      Src: /src/opendal/core/services/gcs/src/backend.rs:506,1
    - Dst: clone
      Src: /src/opendal/core/services/gcs/src/backend.rs:507,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/gcs/src/backend.rs:508,1
    - Dst: OpStat::recursive
      Src: /src/opendal/core/services/gcs/src/backend.rs:510,1
    - Dst: OpStat::limit
      Src: /src/opendal/core/services/gcs/src/backend.rs:511,1
    - Dst: OpStat::start_after
      Src: /src/opendal/core/services/gcs/src/backend.rs:512,1
    - Dst: Ok
      Src: /src/opendal/core/services/gcs/src/backend.rs:515,1
    - Dst: oio::PageLister::new
      Src: /src/opendal/core/services/gcs/src/backend.rs:515,1
    - Dst: Ok
      Src: /src/opendal/core/services/gcs/src/backend.rs:518,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 16
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpList
    constantsTouched: []
    func_position:
      end: 519
      start: 504
    functionDepth: 36
    functionLinenumber: 504
    functionLinenumberEnd: 519
    functionName: GcsBackend::list
    functionSourceFile: /src/opendal/core/services/gcs/src/backend.rs
    functionUses: 0
    functionsReached:
    - Result::clone
    - Ok
    - OpStat::start_after
    - clone
    - oio::PageLister::new
    - GcsLister::new
    - OpStat::limit
    - OpStat::recursive
    linkageType: ''
    returnType: Result
    signature: 'fn list(&self, ctx: &OperationContext, path: &str, args: OpList) ->
      Result<Self::Lister>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: GcsCopier::new
      Src: /src/opendal/core/services/gcs/src/backend.rs:530,1
    - Dst: clone
      Src: /src/opendal/core/services/gcs/src/backend.rs:530,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/gcs/src/backend.rs:530,1
    - Dst: Ok
      Src: /src/opendal/core/services/gcs/src/backend.rs:531,1
    - Dst: Ok
      Src: /src/opendal/core/services/gcs/src/backend.rs:534,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 5
    argNames:
    - ctx
    - from
    - to
    - args
    - opts
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    - OpCopy
    - OpCopier
    constantsTouched: []
    func_position:
      end: 535
      start: 521
    functionDepth: 3
    functionLinenumber: 521
    functionLinenumberEnd: 535
    functionName: GcsBackend::copy
    functionSourceFile: /src/opendal/core/services/gcs/src/backend.rs
    functionUses: 0
    functionsReached:
    - GcsCopier::new
    - Ok
    - clone
    - Result::clone
    linkageType: ''
    returnType: Result
    signature: 'fn copy(&self,ctx: &OperationContext,from: &str,to: &str,args: OpCopy,opts:
      OpCopier,) -> Result<Self::Copier>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/core/services/gcs/src/backend.rs:544,1
    - Dst: Error::new
      Src: /src/opendal/core/services/gcs/src/backend.rs:544,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - _ctx
    - _from
    - _to
    - _args
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    - OpRename
    constantsTouched: []
    func_position:
      end: 548
      start: 537
    functionDepth: 36
    functionLinenumber: 537
    functionLinenumberEnd: 548
    functionName: GcsBackend::rename
    functionSourceFile: /src/opendal/core/services/gcs/src/backend.rs
    functionUses: 0
    functionsReached:
    - Error::new
    - Err
    linkageType: ''
    returnType: Result
    signature: 'async fn rename(&self,_ctx: &OperationContext,_from: &str,_to: &str,_args:
      OpRename,) -> Result<RpRename>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: OpStat::operation
      Src: /src/opendal/core/services/gcs/src/backend.rs:557,1
    - Dst: gcs_head_object_xml_request
      Src: /src/opendal/core/services/gcs/src/backend.rs:558,1
    - Dst: gcs_get_object_xml_request
      Src: /src/opendal/core/services/gcs/src/backend.rs:560,1
    - Dst: gcs_insert_object_xml_request
      Src: /src/opendal/core/services/gcs/src/backend.rs:563,1
    - Dst: Buffer::new
      Src: /src/opendal/core/services/gcs/src/backend.rs:564,1
    - Dst: Err
      Src: /src/opendal/core/services/gcs/src/backend.rs:566,1
    - Dst: Error::new
      Src: /src/opendal/core/services/gcs/src/backend.rs:566,1
    - Dst: Err
      Src: /src/opendal/core/services/gcs/src/backend.rs:570,1
    - Dst: Error::new
      Src: /src/opendal/core/services/gcs/src/backend.rs:570,1
    - Dst: sign_query
      Src: /src/opendal/core/services/gcs/src/backend.rs:576,1
    - Dst: OpStat::expire
      Src: /src/opendal/core/services/gcs/src/backend.rs:576,1
    - Dst: into_parts
      Src: /src/opendal/core/services/gcs/src/backend.rs:579,1
    - Dst: Ok
      Src: /src/opendal/core/services/gcs/src/backend.rs:581,1
    - Dst: RpPresign::new
      Src: /src/opendal/core/services/gcs/src/backend.rs:581,1
    - Dst: PresignedRequest::new
      Src: /src/opendal/core/services/gcs/src/backend.rs:581,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 34
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpPresign
    constantsTouched: []
    func_position:
      end: 586
      start: 550
    functionDepth: 39
    functionLinenumber: 550
    functionLinenumberEnd: 586
    functionName: GcsBackend::presign
    functionSourceFile: /src/opendal/core/services/gcs/src/backend.rs
    functionUses: 0
    functionsReached:
    - sign_query
    - Buffer::new
    - Ok
    - OpStat::operation
    - gcs_head_object_xml_request
    - gcs_get_object_xml_request
    - Err
    - Error::new
    - OpStat::expire
    - RpPresign::new
    - PresignedRequest::new
    - into_parts
    - gcs_insert_object_xml_request
    linkageType: ''
    returnType: Result
    signature: 'async fn presign(&self,ctx: &OperationContext,path: &str,args: OpPresign,)
      -> Result<RpPresign>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::debug_struct
      Src: /src/opendal/core/services/aliyun-drive/src/config.rs:66,1
    - Dst: field
      Src: /src/opendal/core/services/aliyun-drive/src/config.rs:66,1
    - Dst: field
      Src: /src/opendal/core/services/aliyun-drive/src/config.rs:66,1
    - Dst: finish_non_exhaustive
      Src: /src/opendal/core/services/aliyun-drive/src/config.rs:66,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 1
    argNames:
    - f
    argTypes:
    - '&mut std::fmt::Formatter<''_>'
    constantsTouched: []
    func_position:
      end: 70
      start: 65
    functionDepth: 5
    functionLinenumber: 65
    functionLinenumberEnd: 70
    functionName: AliyunDriveConfig::fmt
    functionSourceFile: /src/opendal/core/services/aliyun-drive/src/config.rs
    functionUses: 0
    functionsReached:
    - field
    - Result::debug_struct
    - finish_non_exhaustive
    linkageType: ''
    returnType: std::fmt::Result
    signature: 'fn fmt(&self, f: &mut std::fmt::Formatter<''_>) -> std::fmt::Result'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::options
      Src: /src/opendal/core/services/aliyun-drive/src/config.rs:77,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/aliyun-drive/src/config.rs:77,1
    - Dst: Result::name
      Src: /src/opendal/core/services/aliyun-drive/src/config.rs:79,1
    - Dst: is_empty
      Src: /src/opendal/core/services/aliyun-drive/src/config.rs:80,1
    - Dst: Result::insert
      Src: /src/opendal/core/services/aliyun-drive/src/config.rs:82,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/aliyun-drive/src/config.rs:82,1
    - Dst: to_string
      Src: /src/opendal/core/services/aliyun-drive/src/config.rs:82,1
    - Dst: Result::root
      Src: /src/opendal/core/services/aliyun-drive/src/config.rs:85,1
    - Dst: Result::is_empty
      Src: /src/opendal/core/services/aliyun-drive/src/config.rs:86,1
    - Dst: Result::insert
      Src: /src/opendal/core/services/aliyun-drive/src/config.rs:88,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/aliyun-drive/src/config.rs:88,1
    - Dst: Result::to_string
      Src: /src/opendal/core/services/aliyun-drive/src/config.rs:88,1
    - Dst: Self::from_iter
      Src: /src/opendal/core/services/aliyun-drive/src/config.rs:91,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 33
    argCount: 1
    argNames:
    - uri
    argTypes:
    - '&opendal_core::OperatorUri'
    constantsTouched: []
    func_position:
      end: 92
      start: 76
    functionDepth: 35
    functionLinenumber: 76
    functionLinenumberEnd: 92
    functionName: AliyunDriveConfig::from_uri
    functionSourceFile: /src/opendal/core/services/aliyun-drive/src/config.rs
    functionUses: 2
    functionsReached:
    - Result::clone
    - to_string
    - Self::from_iter
    - Result::to_string
    - Result::insert
    - is_empty
    - Result::name
    - Result::is_empty
    - '&str::to_string'
    - Result::root
    - Result::options
    linkageType: ''
    returnType: opendal_core::Result
    signature: 'fn from_uri(uri: &opendal_core::OperatorUri) -> opendal_core::Result<Self>'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 97
      start: 95
    functionDepth: 0
    functionLinenumber: 95
    functionLinenumberEnd: 97
    functionName: AliyunDriveConfig::into_builder
    functionSourceFile: /src/opendal/core/services/aliyun-drive/src/config.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Self::Builder
    signature: fn into_builder(self) -> Self::Builder
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: OperatorUri::new
      Src: /src/opendal/core/services/aliyun-drive/src/config.rs:108,1
    - Dst: Vec::<(String, String)>::new
      Src: /src/opendal/core/services/aliyun-drive/src/config.rs:110,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/services/aliyun-drive/src/config.rs:108,1
    - Dst: AliyunDriveConfig::from_uri
      Src: /src/opendal/core/services/aliyun-drive/src/config.rs:114,1
    - Dst: opendal_core::Result::unwrap
      Src: /src/opendal/core/services/aliyun-drive/src/config.rs:114,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 117
      start: 107
    functionDepth: 29
    functionLinenumber: 107
    functionLinenumberEnd: 117
    functionName: tests::from_uri_sets_drive_type_and_root
    functionSourceFile: /src/opendal/core/services/aliyun-drive/src/config.rs
    functionUses: 0
    functionsReached:
    - Vec::<(String, String)>::new
    - OperatorUri::new
    - AliyunDriveConfig::from_uri
    - Result::unwrap
    - opendal_core::Result::unwrap
    linkageType: ''
    returnType: void
    signature: fn from_uri_sets_drive_type_and_root()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: OperatorUri::new
      Src: /src/opendal/core/services/aliyun-drive/src/config.rs:122,1
    - Dst: Vec::<(String, String)>::new
      Src: /src/opendal/core/services/aliyun-drive/src/config.rs:122,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/services/aliyun-drive/src/config.rs:122,1
    - Dst: AliyunDriveConfig::from_uri
      Src: /src/opendal/core/services/aliyun-drive/src/config.rs:124,1
    - Dst: opendal_core::Result::unwrap
      Src: /src/opendal/core/services/aliyun-drive/src/config.rs:124,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 127
      start: 120
    functionDepth: 29
    functionLinenumber: 120
    functionLinenumberEnd: 127
    functionName: tests::from_uri_allows_missing_drive_type
    functionSourceFile: /src/opendal/core/services/aliyun-drive/src/config.rs
    functionUses: 0
    functionsReached:
    - Vec::<(String, String)>::new
    - OperatorUri::new
    - AliyunDriveConfig::from_uri
    - Result::unwrap
    - opendal_core::Result::unwrap
    linkageType: ''
    returnType: void
    signature: fn from_uri_allows_missing_drive_type()
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - core
    - ctx
    argTypes:
    - Arc<AliyunDriveCore>
    - OperationContext
    constantsTouched: []
    func_position:
      end: 35
      start: 33
    functionDepth: 0
    functionLinenumber: 33
    functionLinenumberEnd: 35
    functionName: AliyunDriveDeleter::new
    functionSourceFile: /src/opendal/core/services/aliyun-drive/src/deleter.rs
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(core: Arc<AliyunDriveCore>, ctx: OperationContext) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: get_by_path
      Src: /src/opendal/core/services/aliyun-drive/src/deleter.rs:40,1
    - Dst: Some
      Src: /src/opendal/core/services/aliyun-drive/src/deleter.rs:41,1
    - Dst: Error::kind
      Src: /src/opendal/core/services/aliyun-drive/src/deleter.rs:42,1
    - Dst: Err
      Src: /src/opendal/core/services/aliyun-drive/src/deleter.rs:43,1
    - Dst: serde_json::from_reader
      Src: /src/opendal/core/services/aliyun-drive/src/deleter.rs:47,1
    - Dst: reader
      Src: /src/opendal/core/services/aliyun-drive/src/deleter.rs:47,1
    - Dst: map_err
      Src: /src/opendal/core/services/aliyun-drive/src/deleter.rs:47,1
    - Dst: delete_path
      Src: /src/opendal/core/services/aliyun-drive/src/deleter.rs:48,1
    - Dst: Ok
      Src: /src/opendal/core/services/aliyun-drive/src/deleter.rs:50,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 34
    argCount: 2
    argNames:
    - path
    argTypes:
    - String
    - OpDelete
    constantsTouched: []
    func_position:
      end: 51
      start: 39
    functionDepth: 35
    functionLinenumber: 39
    functionLinenumberEnd: 51
    functionName: AliyunDriveDeleter::delete_once
    functionSourceFile: /src/opendal/core/services/aliyun-drive/src/deleter.rs
    functionUses: 0
    functionsReached:
    - map_err
    - reader
    - Ok
    - serde_json::from_reader
    - Some
    - Err
    - delete_path
    - Error::kind
    - get_by_path
    linkageType: ''
    returnType: Result
    signature: 'async fn delete_once(&self, path: String, _: OpDelete) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Some
      Src: /src/opendal/core/services/aliyun-drive/src/lister.rs:60,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - core
    - ctx
    - path
    - limit
    argTypes:
    - Arc<AliyunDriveCore>
    - OperationContext
    - String
    - Option<usize>
    constantsTouched: []
    func_position:
      end: 63
      start: 50
    functionDepth: 0
    functionLinenumber: 50
    functionLinenumberEnd: 63
    functionName: AliyunDriveLister::new_with_path
    functionSourceFile: /src/opendal/core/services/aliyun-drive/src/lister.rs
    functionUses: 1
    functionsReached:
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn new_with_path(core: Arc<AliyunDriveCore>,ctx: OperationContext,path:
      String,limit: Option<usize>,) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/core/services/aliyun-drive/src/lister.rs:67,1
    - Dst: Some
      Src: /src/opendal/core/services/aliyun-drive/src/lister.rs:67,1
    - Dst: '&str::clone'
      Src: /src/opendal/core/services/aliyun-drive/src/lister.rs:67,1
    - Dst: Ok
      Src: /src/opendal/core/services/aliyun-drive/src/lister.rs:71,1
    - Dst: get_by_path
      Src: /src/opendal/core/services/aliyun-drive/src/lister.rs:74,1
    - Dst: Error::kind
      Src: /src/opendal/core/services/aliyun-drive/src/lister.rs:75,1
    - Dst: Ok
      Src: /src/opendal/core/services/aliyun-drive/src/lister.rs:75,1
    - Dst: Err
      Src: /src/opendal/core/services/aliyun-drive/src/lister.rs:76,1
    - Dst: serde_json::from_reader
      Src: /src/opendal/core/services/aliyun-drive/src/lister.rs:79,1
    - Dst: reader
      Src: /src/opendal/core/services/aliyun-drive/src/lister.rs:79,1
    - Dst: map_err
      Src: /src/opendal/core/services/aliyun-drive/src/lister.rs:79,1
    - Dst: Ok
      Src: /src/opendal/core/services/aliyun-drive/src/lister.rs:80,1
    - Dst: Some
      Src: /src/opendal/core/services/aliyun-drive/src/lister.rs:80,1
    - Dst: to_string
      Src: /src/opendal/core/services/aliyun-drive/src/lister.rs:82,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 41
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 87
      start: 65
    functionDepth: 35
    functionLinenumber: 65
    functionLinenumberEnd: 87
    functionName: AliyunDriveLister::parent
    functionSourceFile: /src/opendal/core/services/aliyun-drive/src/lister.rs
    functionUses: 1
    functionsReached:
    - map_err
    - to_string
    - reader
    - Ok
    - serde_json::from_reader
    - Some
    - Err
    - '&str::clone'
    - Error::kind
    - get_by_path
    linkageType: ''
    returnType: Result
    signature: async fn parent(&self) -> Result<Option<AliyunDriveParent>>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: AliyunDriveLister::parent
      Src: /src/opendal/core/services/aliyun-drive/src/lister.rs:92,1
    - Dst: Ok
      Src: /src/opendal/core/services/aliyun-drive/src/lister.rs:94,1
    - Dst: is_empty
      Src: /src/opendal/core/services/aliyun-drive/src/lister.rs:97,1
    - Dst: push_back
      Src: /src/opendal/core/services/aliyun-drive/src/lister.rs:99,1
    - Dst: Entry::new
      Src: /src/opendal/core/services/aliyun-drive/src/lister.rs:99,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/aliyun-drive/src/lister.rs:101,1
    - Dst: Self::with_last_modified
      Src: /src/opendal/core/services/aliyun-drive/src/lister.rs:101,1
    - Dst: updated_at.parse::<Timestamp>
      Src: /src/opendal/core/services/aliyun-drive/src/lister.rs:102,1
    - Dst: map_err
      Src: /src/opendal/core/services/aliyun-drive/src/lister.rs:102,1
    - Dst: Error::new
      Src: /src/opendal/core/services/aliyun-drive/src/lister.rs:103,1
    - Dst: Self::set_source
      Src: /src/opendal/core/services/aliyun-drive/src/lister.rs:103,1
    - Dst: Some
      Src: /src/opendal/core/services/aliyun-drive/src/lister.rs:109,1
    - Dst: clone
      Src: /src/opendal/core/services/aliyun-drive/src/lister.rs:109,1
    - Dst: list
      Src: /src/opendal/core/services/aliyun-drive/src/lister.rs:112,1
    - Dst: Error::kind
      Src: /src/opendal/core/services/aliyun-drive/src/lister.rs:117,1
    - Dst: Err
      Src: /src/opendal/core/services/aliyun-drive/src/lister.rs:121,1
    - Dst: Some
      Src: /src/opendal/core/services/aliyun-drive/src/lister.rs:122,1
    - Dst: Ok
      Src: /src/opendal/core/services/aliyun-drive/src/lister.rs:126,1
    - Dst: serde_json::from_reader
      Src: /src/opendal/core/services/aliyun-drive/src/lister.rs:130,1
    - Dst: reader
      Src: /src/opendal/core/services/aliyun-drive/src/lister.rs:130,1
    - Dst: map_err
      Src: /src/opendal/core/services/aliyun-drive/src/lister.rs:130,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/aliyun-drive/src/lister.rs:135,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/aliyun-drive/src/lister.rs:138,1
    - Dst: storage::Result::with_last_modified
      Src: /src/opendal/core/services/aliyun-drive/src/lister.rs:141,1
    - Dst: updated_at.parse::<Timestamp>
      Src: /src/opendal/core/services/aliyun-drive/src/lister.rs:141,1
    - Dst: map_err
      Src: /src/opendal/core/services/aliyun-drive/src/lister.rs:141,1
    - Dst: Error::new
      Src: /src/opendal/core/services/aliyun-drive/src/lister.rs:142,1
    - Dst: Self::set_source
      Src: /src/opendal/core/services/aliyun-drive/src/lister.rs:142,1
    - Dst: storage::Result::with_content_length
      Src: /src/opendal/core/services/aliyun-drive/src/lister.rs:145,1
    - Dst: storage::Result::with_content_type
      Src: /src/opendal/core/services/aliyun-drive/src/lister.rs:148,1
    - Dst: push_back
      Src: /src/opendal/core/services/aliyun-drive/src/lister.rs:151,1
    - Dst: Entry::new
      Src: /src/opendal/core/services/aliyun-drive/src/lister.rs:151,1
    - Dst: unwrap_or_default
      Src: /src/opendal/core/services/aliyun-drive/src/lister.rs:154,1
    - Dst: is_empty
      Src: /src/opendal/core/services/aliyun-drive/src/lister.rs:155,1
    - Dst: Ok
      Src: /src/opendal/core/services/aliyun-drive/src/lister.rs:161,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 127
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - '&mut oio::PageContext'
    constantsTouched: []
    func_position:
      end: 162
      start: 91
    functionDepth: 36
    functionLinenumber: 91
    functionLinenumberEnd: 162
    functionName: AliyunDriveLister::next_page
    functionSourceFile: /src/opendal/core/services/aliyun-drive/src/lister.rs
    functionUses: 0
    functionsReached:
    - AliyunDriveLister::parent
    - Self::with_last_modified
    - serde_json::from_reader
    - clone
    - storage::Result::with_content_type
    - updated_at.parse::<Timestamp>
    - Entry::new
    - map_err
    - reader
    - Ok
    - storage::Result::with_content_length
    - unwrap_or_default
    - Metadata::new
    - is_empty
    - Some
    - Error::kind
    - Self::set_source
    - push_back
    - Error::new
    - Err
    - list
    - storage::Result::with_last_modified
    linkageType: ''
    returnType: Result
    signature: 'async fn next_page(&self, ctx: &mut oio::PageContext) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: to_string
      Src: /src/opendal/core/services/aliyun-drive/src/reader.rs:44,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 4
    argNames:
    - backend
    - ctx
    - path
    argTypes:
    - AliyunDriveBackend
    - OperationContext
    - '&str'
    - OpRead
    constantsTouched: []
    func_position:
      end: 46
      start: 35
    functionDepth: 2
    functionLinenumber: 35
    functionLinenumberEnd: 46
    functionName: AliyunDriveReader::new
    functionSourceFile: /src/opendal/core/services/aliyun-drive/src/reader.rs
    functionUses: 1
    functionsReached:
    - to_string
    linkageType: ''
    returnType: Self
    signature: 'pub(super) fn new(backend: AliyunDriveBackend,ctx: OperationContext,path:
      &str,_: OpRead,) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: as_str
      Src: /src/opendal/core/services/aliyun-drive/src/reader.rs:52,1
    - Dst: get_by_path
      Src: /src/opendal/core/services/aliyun-drive/src/reader.rs:53,1
    - Dst: serde_json::from_reader
      Src: /src/opendal/core/services/aliyun-drive/src/reader.rs:55,1
    - Dst: reader
      Src: /src/opendal/core/services/aliyun-drive/src/reader.rs:55,1
    - Dst: map_err
      Src: /src/opendal/core/services/aliyun-drive/src/reader.rs:55,1
    - Dst: download
      Src: /src/opendal/core/services/aliyun-drive/src/reader.rs:56,1
    - Dst: status
      Src: /src/opendal/core/services/aliyun-drive/src/reader.rs:61,1
    - Dst: RpRead::new
      Src: /src/opendal/core/services/aliyun-drive/src/reader.rs:64,1
    - Dst: parse_into_metadata
      Src: /src/opendal/core/services/aliyun-drive/src/reader.rs:64,1
    - Dst: headers
      Src: /src/opendal/core/services/aliyun-drive/src/reader.rs:64,1
    - Dst: into_body
      Src: /src/opendal/core/services/aliyun-drive/src/reader.rs:65,1
    - Dst: into_parts
      Src: /src/opendal/core/services/aliyun-drive/src/reader.rs:68,1
    - Dst: to_buffer
      Src: /src/opendal/core/services/aliyun-drive/src/reader.rs:69,1
    - Dst: Err
      Src: /src/opendal/core/services/aliyun-drive/src/reader.rs:70,1
    - Dst: super::core::parse_error
      Src: /src/opendal/core/services/aliyun-drive/src/reader.rs:70,1
    - Dst: Response::from_parts
      Src: /src/opendal/core/services/aliyun-drive/src/reader.rs:70,1
    - Dst: Ok
      Src: /src/opendal/core/services/aliyun-drive/src/reader.rs:74,1
    - Dst: Box::new
      Src: /src/opendal/core/services/aliyun-drive/src/reader.rs:74,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 53
    argCount: 1
    argNames:
    - range
    argTypes:
    - BytesRange
    constantsTouched: []
    func_position:
      end: 75
      start: 50
    functionDepth: 35
    functionLinenumber: 50
    functionLinenumberEnd: 75
    functionName: AliyunDriveReader::open
    functionSourceFile: /src/opendal/core/services/aliyun-drive/src/reader.rs
    functionUses: 0
    functionsReached:
    - map_err
    - download
    - parse_into_metadata
    - reader
    - status
    - to_buffer
    - Ok
    - Box::new
    - serde_json::from_reader
    - into_body
    - Err
    - Response::from_parts
    - as_str
    - headers
    - into_parts
    - get_by_path
    - RpRead::new
    - super::core::parse_error
    linkageType: ''
    returnType: Result
    signature: 'async fn open(&self, range: BytesRange) -> Result<(RpRead, Box<dyn
      oio::ReadStreamDyn>)>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::debug_struct
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:75,1
    - Dst: field
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:75,1
    - Dst: field
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:75,1
    - Dst: finish_non_exhaustive
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:75,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 1
    argNames:
    - f
    argTypes:
    - '&mut std::fmt::Formatter<''_>'
    constantsTouched: []
    func_position:
      end: 79
      start: 74
    functionDepth: 5
    functionLinenumber: 74
    functionLinenumberEnd: 79
    functionName: AliyunDriveCore::fmt
    functionSourceFile: /src/opendal/core/services/aliyun-drive/src/core.rs
    functionUses: 0
    functionsReached:
    - field
    - Result::debug_struct
    - finish_non_exhaustive
    linkageType: ''
    returnType: std::fmt::Result
    signature: 'fn fmt(&self, f: &mut std::fmt::Formatter<''_>) -> std::fmt::Result'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Request<Buffer>::headers_mut
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:90,1
    - Dst: insert
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:90,1
    - Dst: HeaderValue::from_str
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:92,1
    - Dst: Result::expect
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:92,1
    - Dst: Request<Buffer>::method
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:95,1
    - Dst: Request<Buffer>::headers_mut
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:96,1
    - Dst: insert
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:96,1
    - Dst: HeaderValue::from_static
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:98,1
    - Dst: Request<Buffer>::headers_mut
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:102,1
    - Dst: insert
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:102,1
    - Dst: HeaderValue::from_str
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:104,1
    - Dst: format_authorization_by_bearer
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:104,1
    - Dst: Result::expect
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:104,1
    - Dst: Result::http_transport
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:108,1
    - Dst: Self::send
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:108,1
    - Dst: status
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:109,1
    - Dst: is_success
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:109,1
    - Dst: Err
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:110,1
    - Dst: parse_error
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:110,1
    - Dst: Ok
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:112,1
    - Dst: into_body
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:112,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 53
    argCount: 3
    argNames:
    - ctx
    - req
    - token
    argTypes:
    - '&OperationContext'
    - Request<Buffer>
    - Option<&str>
    constantsTouched: []
    func_position:
      end: 113
      start: 83
    functionDepth: 34
    functionLinenumber: 83
    functionLinenumberEnd: 113
    functionName: AliyunDriveCore::send
    functionSourceFile: /src/opendal/core/services/aliyun-drive/src/core.rs
    functionUses: 13
    functionsReached:
    - format_authorization_by_bearer
    - insert
    - is_success
    - HeaderValue::from_static
    - status
    - Self::send
    - Result::expect
    - Ok
    - parse_error
    - into_body
    - Err
    - HeaderValue::from_str
    - Result::http_transport
    - Request<Buffer>::headers_mut
    - Request<Buffer>::method
    linkageType: ''
    returnType: Result
    signature: 'async fn send(&self,ctx: &OperationContext,mut req: Request<Buffer>,token:
      Option<&str>,) -> Result<Buffer>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: serde_json::to_vec
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:122,1
    - Dst: Vec::map_err
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:122,1
    - Dst: Request::post
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:129,1
    - Dst: body
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:129,1
    - Dst: Buffer::from
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:130,1
    - Dst: map_err
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:129,1
    - Dst: AliyunDriveCore::send
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:132,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 4
    argNames:
    - ctx
    - client_id
    - client_secret
    - refresh_token
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    - '&str'
    constantsTouched: []
    func_position:
      end: 133
      start: 115
    functionDepth: 40
    functionLinenumber: 115
    functionLinenumberEnd: 133
    functionName: AliyunDriveCore::get_access_token
    functionSourceFile: /src/opendal/core/services/aliyun-drive/src/core.rs
    functionUses: 1
    functionsReached:
    - map_err
    - AliyunDriveCore::send
    - Request::post
    - body
    - Vec::map_err
    - serde_json::to_vec
    - Buffer::from
    linkageType: ''
    returnType: Result
    signature: 'async fn get_access_token(&self,ctx: &OperationContext,client_id:
      &str,client_secret: &str,refresh_token: &str,) -> Result<Buffer>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Request::post
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:136,1
    - Dst: body
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:136,1
    - Dst: Buffer::new
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:137,1
    - Dst: map_err
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:136,1
    - Dst: AliyunDriveCore::send
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:139,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - ctx
    - token
    argTypes:
    - '&OperationContext'
    - Option<&str>
    constantsTouched: []
    func_position:
      end: 140
      start: 135
    functionDepth: 35
    functionLinenumber: 135
    functionLinenumberEnd: 140
    functionName: AliyunDriveCore::get_drive_id
    functionSourceFile: /src/opendal/core/services/aliyun-drive/src/core.rs
    functionUses: 1
    functionsReached:
    - map_err
    - Buffer::new
    - AliyunDriveCore::send
    - Request::post
    - body
    linkageType: ''
    returnType: Result
    signature: 'async fn get_drive_id(&self, ctx: &OperationContext, token: Option<&str>)
      -> Result<Buffer>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:146,1
    - Dst: Some
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:148,1
    - Dst: clone
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:148,1
    - Dst: Timestamp::now
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:156,1
    - Dst: Self::into_inner
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:156,1
    - Dst: Arc::as_second
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:156,1
    - Dst: is_none
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:156,1
    - Dst: AliyunDriveCore::get_access_token
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:158,1
    - Dst: serde_json::from_reader
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:161,1
    - Dst: reader
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:161,1
    - Dst: map_err
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:161,1
    - Dst: Some
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:163,1
    - Dst: Timestamp::now
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:164,1
    - Dst: Self::into_inner
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:164,1
    - Dst: Arc::as_second
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:164,1
    - Dst: clone
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:167,1
    - Dst: AliyunDriveCore::get_drive_id
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:171,1
    - Dst: Self::as_deref
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:171,1
    - Dst: serde_json::from_reader
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:173,1
    - Dst: reader
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:173,1
    - Dst: map_err
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:173,1
    - Dst: unwrap_or
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:176,1
    - Dst: unwrap_or
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:177,1
    - Dst: Some
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:179,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:179,1
    - Dst: Ok
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:180,1
    - Dst: Ok
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:182,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:182,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 92
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - '&OperationContext'
    constantsTouched: []
    func_position:
      end: 183
      start: 142
    functionDepth: 33
    functionLinenumber: 142
    functionLinenumberEnd: 183
    functionName: AliyunDriveCore::get_token_and_drive
    functionSourceFile: /src/opendal/core/services/aliyun-drive/src/core.rs
    functionUses: 10
    functionsReached:
    - Arc::as_second
    - Timestamp::now
    - is_none
    - map_err
    - AliyunDriveCore::get_access_token
    - reader
    - lock
    - AliyunDriveCore::get_drive_id
    - Result::clone
    - Ok
    - serde_json::from_reader
    - clone
    - Self::into_inner
    - Some
    - Self::as_deref
    - unwrap_or
    linkageType: ''
    returnType: Result
    signature: 'pub async fn get_token_and_drive(&self,ctx: &OperationContext,) ->
      Result<(Option<String>, String)>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_rooted_abs_path
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:187,1
    - Dst: build_abs_path
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:189,1
    - Dst: String::strip_suffix
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:191,1
    - Dst: unwrap_or
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:191,1
    - Dst: String::is_empty
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:192,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:193,1
    - Dst: String::to_string
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:195,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 22
    argCount: 2
    argNames:
    - path
    - rooted
    argTypes:
    - '&str'
    - bool
    constantsTouched: []
    func_position:
      end: 196
      start: 185
    functionDepth: 4
    functionLinenumber: 185
    functionLinenumberEnd: 196
    functionName: AliyunDriveCore::build_path
    functionSourceFile: /src/opendal/core/services/aliyun-drive/src/core.rs
    functionUses: 2
    functionsReached:
    - String::strip_suffix
    - build_rooted_abs_path
    - build_abs_path
    - String::is_empty
    - '&str::to_string'
    - String::to_string
    - unwrap_or
    linkageType: ''
    returnType: String
    signature: 'pub fn build_path(&self, path: &str, rooted: bool) -> String'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: AliyunDriveCore::build_path
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:199,1
    - Dst: Request::post
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:200,1
    - Dst: AliyunDriveCore::get_token_and_drive
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:204,1
    - Dst: serde_json::to_vec
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:205,1
    - Dst: Vec::map_err
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:205,1
    - Dst: extension
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:210,1
    - Dst: extension
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:210,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:212,1
    - Dst: body
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:210,1
    - Dst: Buffer::from
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:213,1
    - Dst: map_err
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:210,1
    - Dst: AliyunDriveCore::send
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:215,1
    - Dst: Self::as_deref
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:215,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 31
    argCount: 2
    argNames:
    - ctx
    - path
    argTypes:
    - '&OperationContext'
    - '&str'
    constantsTouched: []
    func_position:
      end: 216
      start: 198
    functionDepth: 34
    functionLinenumber: 198
    functionLinenumberEnd: 216
    functionName: AliyunDriveCore::get_by_path
    functionSourceFile: /src/opendal/core/services/aliyun-drive/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - extension
    - AliyunDriveCore::get_token_and_drive
    - AliyunDriveCore::send
    - Request::post
    - body
    - AliyunDriveCore::build_path
    - Buffer::from
    - Vec::map_err
    - ServiceOperation
    - Self::as_deref
    - serde_json::to_vec
    linkageType: ''
    returnType: Result
    signature: 'pub async fn get_by_path(&self, ctx: &OperationContext, path: &str)
      -> Result<Buffer>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: AliyunDriveCore::build_path
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:219,1
    - Dst: Ok
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:221,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:221,1
    - Dst: String::strip_suffix
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:223,1
    - Dst: unwrap_or
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:223,1
    - Dst: String::split
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:224,1
    - Dst: split('/').collect::<Vec<&str>>
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:224,1
    - Dst: lock
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:227,1
    - Dst: AliyunDriveCore::create
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:228,1
    - Dst: '&str::as_deref'
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:231,1
    - Dst: serde_json::from_reader
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:238,1
    - Dst: reader
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:238,1
    - Dst: map_err
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:238,1
    - Dst: Some
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:239,1
    - Dst: Ok
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:241,1
    - Dst: '&str::expect'
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:241,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 44
    argCount: 2
    argNames:
    - ctx
    - path
    argTypes:
    - '&OperationContext'
    - '&str'
    constantsTouched: []
    func_position:
      end: 242
      start: 218
    functionDepth: 33
    functionLinenumber: 218
    functionLinenumberEnd: 242
    functionName: AliyunDriveCore::ensure_dir_exists
    functionSourceFile: /src/opendal/core/services/aliyun-drive/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - String::strip_suffix
    - String::split
    - reader
    - Ok
    - lock
    - serde_json::from_reader
    - '&str::as_deref'
    - Some
    - AliyunDriveCore::build_path
    - '&str::expect'
    - split('/').collect::<Vec<&str>>
    - '&str::to_string'
    - AliyunDriveCore::create
    - unwrap_or
    linkageType: ''
    returnType: Result
    signature: 'pub async fn ensure_dir_exists(&self, ctx: &OperationContext, path:
      &str) -> Result<String>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: AliyunDriveCore::get_token_and_drive
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:264,1
    - Dst: serde_json::to_vec
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:265,1
    - Dst: Option<&str>::unwrap_or
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:267,1
    - Dst: None::as_deref
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:272,1
    - Dst: None::as_deref
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:273,1
    - Dst: None::is_some
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:274,1
    - Dst: then_some
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:274,1
    - Dst: None::as_deref
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:275,1
    - Dst: None::is_some
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:276,1
    - Dst: then_some
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:276,1
    - Dst: Vec::map_err
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:265,1
    - Dst: Request::post
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:279,1
    - Dst: extension
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:279,1
    - Dst: extension
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:279,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:281,1
    - Dst: body
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:279,1
    - Dst: Buffer::from
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:282,1
    - Dst: map_err
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:279,1
    - Dst: AliyunDriveCore::send
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:284,1
    - Dst: Self::as_deref
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:284,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 55
    argCount: 7
    argNames:
    - ctx
    - parent_file_id
    - name
    - typ
    - check_name_mode
    - size
    - rapid_upload
    argTypes:
    - '&OperationContext'
    - Option<&str>
    - '&str'
    - CreateType
    - CheckNameMode
    - Option<u64>
    - Option<RapidUpload>
    constantsTouched: []
    func_position:
      end: 285
      start: 245
    functionDepth: 34
    functionLinenumber: 245
    functionLinenumberEnd: 285
    functionName: AliyunDriveCore::create_with_rapid_upload
    functionSourceFile: /src/opendal/core/services/aliyun-drive/src/core.rs
    functionUses: 1
    functionsReached:
    - map_err
    - extension
    - None::is_some
    - AliyunDriveCore::get_token_and_drive
    - AliyunDriveCore::send
    - Option<&str>::unwrap_or
    - then_some
    - None::as_deref
    - Request::post
    - body
    - Buffer::from
    - Vec::map_err
    - ServiceOperation
    - Self::as_deref
    - serde_json::to_vec
    linkageType: ''
    returnType: Result
    signature: 'pub async fn create_with_rapid_upload(&self,ctx: &OperationContext,parent_file_id:
      Option<&str>,name: &str,typ: CreateType,check_name_mode: CheckNameMode,size:
      Option<u64>,rapid_upload: Option<RapidUpload>,) -> Result<Buffer>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: AliyunDriveCore::create_with_rapid_upload
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:295,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 5
    argNames:
    - ctx
    - parent_file_id
    - name
    - typ
    - check_name_mode
    argTypes:
    - '&OperationContext'
    - Option<&str>
    - '&str'
    - CreateType
    - CheckNameMode
    constantsTouched: []
    func_position:
      end: 297
      start: 287
    functionDepth: 35
    functionLinenumber: 287
    functionLinenumberEnd: 297
    functionName: AliyunDriveCore::create
    functionSourceFile: /src/opendal/core/services/aliyun-drive/src/core.rs
    functionUses: 1
    functionsReached:
    - AliyunDriveCore::create_with_rapid_upload
    linkageType: ''
    returnType: Result
    signature: 'pub async fn create(&self,ctx: &OperationContext,parent_file_id: Option<&str>,name:
      &str,typ: CreateType,check_name_mode: CheckNameMode,) -> Result<Buffer>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: AliyunDriveCore::get_token_and_drive
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:300,1
    - Dst: serde_json::to_vec
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:301,1
    - Dst: Vec::map_err
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:301,1
    - Dst: Request::post
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:307,1
    - Dst: extension
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:307,1
    - Dst: extension
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:307,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:312,1
    - Dst: body
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:307,1
    - Dst: Buffer::from
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:313,1
    - Dst: map_err
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:307,1
    - Dst: AliyunDriveCore::send
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:316,1
    - Dst: Self::as_deref
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:316,1
    - Dst: serde_json::from_reader
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:319,1
    - Dst: reader
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:319,1
    - Dst: map_err
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:319,1
    - Dst: Ok
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:321,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 37
    argCount: 2
    argNames:
    - ctx
    - file_id
    argTypes:
    - '&OperationContext'
    - '&str'
    constantsTouched: []
    func_position:
      end: 322
      start: 299
    functionDepth: 34
    functionLinenumber: 299
    functionLinenumberEnd: 322
    functionName: AliyunDriveCore::get_download_url
    functionSourceFile: /src/opendal/core/services/aliyun-drive/src/core.rs
    functionUses: 1
    functionsReached:
    - map_err
    - extension
    - reader
    - AliyunDriveCore::get_token_and_drive
    - Ok
    - AliyunDriveCore::send
    - serde_json::from_reader
    - Request::post
    - body
    - Buffer::from
    - Vec::map_err
    - ServiceOperation
    - Self::as_deref
    - serde_json::to_vec
    linkageType: ''
    returnType: Result
    signature: 'async fn get_download_url(&self, ctx: &OperationContext, file_id:
      &str) -> Result<String>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: AliyunDriveCore::get_download_url
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:330,1
    - Dst: Request::get
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:331,1
    - Dst: Option::extension
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:331,1
    - Dst: extension
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:331,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:333,1
    - Dst: http::header
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:331,1
    - Dst: (Vec::to_header
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:334,1
    - Dst: body
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:331,1
    - Dst: Buffer::new
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:335,1
    - Dst: map_err
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:331,1
    - Dst: Result::http_transport
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:337,1
    - Dst: Self::fetch
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:337,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 25
    argCount: 3
    argNames:
    - ctx
    - file_id
    - range
    argTypes:
    - '&OperationContext'
    - '&str'
    - BytesRange
    constantsTouched: []
    func_position:
      end: 338
      start: 324
    functionDepth: 35
    functionLinenumber: 324
    functionLinenumberEnd: 338
    functionName: AliyunDriveCore::download
    functionSourceFile: /src/opendal/core/services/aliyun-drive/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - extension
    - Request::get
    - (Vec::to_header
    - AliyunDriveCore::get_download_url
    - Buffer::new
    - http::header
    - body
    - Option::extension
    - Self::fetch
    - ServiceOperation
    - Result::http_transport
    linkageType: ''
    returnType: Result
    signature: 'pub async fn download(&self,ctx: &OperationContext,file_id: &str,range:
      BytesRange,) -> Result<Response<HttpBody>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: AliyunDriveCore::get_token_and_drive
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:346,1
    - Dst: serde_json::to_vec
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:347,1
    - Dst: Vec::map_err
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:347,1
    - Dst: Request::post
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:354,1
    - Dst: extension
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:354,1
    - Dst: extension
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:354,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:356,1
    - Dst: body
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:354,1
    - Dst: Buffer::from
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:357,1
    - Dst: map_err
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:354,1
    - Dst: AliyunDriveCore::send
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:359,1
    - Dst: Self::as_deref
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:359,1
    - Dst: Ok
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:360,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 32
    argCount: 3
    argNames:
    - ctx
    - file_id
    - to_parent_file_id
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    constantsTouched: []
    func_position:
      end: 361
      start: 340
    functionDepth: 34
    functionLinenumber: 340
    functionLinenumberEnd: 361
    functionName: AliyunDriveCore::move_path
    functionSourceFile: /src/opendal/core/services/aliyun-drive/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - extension
    - AliyunDriveCore::get_token_and_drive
    - Ok
    - AliyunDriveCore::send
    - Request::post
    - body
    - Buffer::from
    - Vec::map_err
    - ServiceOperation
    - Self::as_deref
    - serde_json::to_vec
    linkageType: ''
    returnType: Result
    signature: 'pub async fn move_path(&self,ctx: &OperationContext,file_id: &str,to_parent_file_id:
      &str,) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: AliyunDriveCore::get_token_and_drive
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:369,1
    - Dst: serde_json::to_vec
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:370,1
    - Dst: Vec::map_err
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:370,1
    - Dst: Request::post
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:377,1
    - Dst: extension
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:377,1
    - Dst: extension
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:377,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:379,1
    - Dst: body
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:377,1
    - Dst: Buffer::from
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:380,1
    - Dst: map_err
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:377,1
    - Dst: AliyunDriveCore::send
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:382,1
    - Dst: Self::as_deref
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:382,1
    - Dst: Ok
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:383,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 32
    argCount: 3
    argNames:
    - ctx
    - file_id
    - name
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    constantsTouched: []
    func_position:
      end: 384
      start: 363
    functionDepth: 34
    functionLinenumber: 363
    functionLinenumberEnd: 384
    functionName: AliyunDriveCore::update_path
    functionSourceFile: /src/opendal/core/services/aliyun-drive/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - extension
    - AliyunDriveCore::get_token_and_drive
    - Ok
    - AliyunDriveCore::send
    - Request::post
    - body
    - Buffer::from
    - Vec::map_err
    - ServiceOperation
    - Self::as_deref
    - serde_json::to_vec
    linkageType: ''
    returnType: Result
    signature: 'pub async fn update_path(&self,ctx: &OperationContext,file_id: &str,name:
      &str,) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: AliyunDriveCore::get_token_and_drive
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:393,1
    - Dst: serde_json::to_vec
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:394,1
    - Dst: Vec::map_err
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:394,1
    - Dst: Request::post
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:401,1
    - Dst: extension
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:401,1
    - Dst: extension
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:401,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:403,1
    - Dst: body
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:401,1
    - Dst: Buffer::from
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:404,1
    - Dst: map_err
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:401,1
    - Dst: AliyunDriveCore::send
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:406,1
    - Dst: Self::as_deref
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:406,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 28
    argCount: 4
    argNames:
    - ctx
    - file_id
    - to_parent_file_id
    - auto_rename
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    - bool
    constantsTouched: []
    func_position:
      end: 407
      start: 386
    functionDepth: 34
    functionLinenumber: 386
    functionLinenumberEnd: 407
    functionName: AliyunDriveCore::copy_path
    functionSourceFile: /src/opendal/core/services/aliyun-drive/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - extension
    - AliyunDriveCore::get_token_and_drive
    - AliyunDriveCore::send
    - Request::post
    - body
    - Buffer::from
    - Vec::map_err
    - ServiceOperation
    - Self::as_deref
    - serde_json::to_vec
    linkageType: ''
    returnType: Result
    signature: 'pub async fn copy_path(&self,ctx: &OperationContext,file_id: &str,to_parent_file_id:
      &str,auto_rename: bool,) -> Result<Buffer>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: AliyunDriveCore::get_token_and_drive
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:410,1
    - Dst: serde_json::to_vec
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:411,1
    - Dst: Vec::map_err
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:411,1
    - Dst: Request::post
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:416,1
    - Dst: extension
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:416,1
    - Dst: extension
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:416,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:418,1
    - Dst: body
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:416,1
    - Dst: Buffer::from
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:419,1
    - Dst: map_err
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:416,1
    - Dst: AliyunDriveCore::send
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:421,1
    - Dst: Self::as_deref
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:421,1
    - Dst: Ok
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:422,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 32
    argCount: 2
    argNames:
    - ctx
    - file_id
    argTypes:
    - '&OperationContext'
    - '&str'
    constantsTouched: []
    func_position:
      end: 423
      start: 409
    functionDepth: 34
    functionLinenumber: 409
    functionLinenumberEnd: 423
    functionName: AliyunDriveCore::delete_path
    functionSourceFile: /src/opendal/core/services/aliyun-drive/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - extension
    - AliyunDriveCore::get_token_and_drive
    - Ok
    - AliyunDriveCore::send
    - Request::post
    - body
    - Buffer::from
    - Vec::map_err
    - ServiceOperation
    - Self::as_deref
    - serde_json::to_vec
    linkageType: ''
    returnType: Result
    signature: 'pub async fn delete_path(&self, ctx: &OperationContext, file_id: &str)
      -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: AliyunDriveCore::get_token_and_drive
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:432,1
    - Dst: serde_json::to_vec
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:433,1
    - Dst: Option::as_deref
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:437,1
    - Dst: Vec::map_err
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:433,1
    - Dst: Request::post
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:440,1
    - Dst: extension
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:440,1
    - Dst: extension
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:440,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:442,1
    - Dst: body
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:440,1
    - Dst: Buffer::from
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:443,1
    - Dst: map_err
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:440,1
    - Dst: AliyunDriveCore::send
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:445,1
    - Dst: Self::as_deref
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:445,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 30
    argCount: 4
    argNames:
    - ctx
    - parent_file_id
    - limit
    - marker
    argTypes:
    - '&OperationContext'
    - '&str'
    - Option<usize>
    - Option<String>
    constantsTouched: []
    func_position:
      end: 446
      start: 425
    functionDepth: 34
    functionLinenumber: 425
    functionLinenumberEnd: 446
    functionName: AliyunDriveCore::list
    functionSourceFile: /src/opendal/core/services/aliyun-drive/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - extension
    - AliyunDriveCore::get_token_and_drive
    - AliyunDriveCore::send
    - Option::as_deref
    - Request::post
    - body
    - Buffer::from
    - Vec::map_err
    - ServiceOperation
    - Self::as_deref
    - serde_json::to_vec
    linkageType: ''
    returnType: Result
    signature: 'pub async fn list(&self,ctx: &OperationContext,parent_file_id: &str,limit:
      Option<usize>,marker: Option<String>,) -> Result<Buffer>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: AliyunDriveCore::get_token_and_drive
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:454,1
    - Dst: serde_json::to_vec
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:455,1
    - Dst: Vec::map_err
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:455,1
    - Dst: Request::post
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:461,1
    - Dst: extension
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:461,1
    - Dst: extension
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:461,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:463,1
    - Dst: body
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:461,1
    - Dst: Buffer::from
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:464,1
    - Dst: map_err
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:461,1
    - Dst: AliyunDriveCore::send
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:466,1
    - Dst: Self::as_deref
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:466,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 28
    argCount: 3
    argNames:
    - ctx
    - file_id
    - upload_id
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    constantsTouched: []
    func_position:
      end: 467
      start: 448
    functionDepth: 34
    functionLinenumber: 448
    functionLinenumberEnd: 467
    functionName: AliyunDriveCore::complete
    functionSourceFile: /src/opendal/core/services/aliyun-drive/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - extension
    - AliyunDriveCore::get_token_and_drive
    - AliyunDriveCore::send
    - Request::post
    - body
    - Buffer::from
    - Vec::map_err
    - ServiceOperation
    - Self::as_deref
    - serde_json::to_vec
    linkageType: ''
    returnType: Result
    signature: 'pub async fn complete(&self,ctx: &OperationContext,file_id: &str,upload_id:
      &str,) -> Result<Buffer>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: AliyunDriveCore::get_token_and_drive
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:476,1
    - Dst: serde_json::to_vec
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:480,1
    - Dst: Some
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:484,1
    - Dst: Vec::map_err
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:480,1
    - Dst: Request::post
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:488,1
    - Dst: extension
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:488,1
    - Dst: extension
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:488,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:493,1
    - Dst: body
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:488,1
    - Dst: Buffer::from
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:494,1
    - Dst: map_err
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:488,1
    - Dst: AliyunDriveCore::send
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:497,1
    - Dst: Self::as_deref
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:497,1
    - Dst: serde_json::from_reader
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:500,1
    - Dst: reader
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:500,1
    - Dst: map_err
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:500,1
    - Dst: take
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:502,1
    - Dst: map
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:502,1
    - Dst: Result::swap_remove
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:505,1
    - Dst: map
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:502,1
    - Dst: Err
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:508,1
    - Dst: Error::new
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:508,1
    - Dst: Ok
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:511,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 53
    argCount: 4
    argNames:
    - ctx
    - file_id
    - upload_id
    - part_number
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    - usize
    constantsTouched: []
    func_position:
      end: 512
      start: 469
    functionDepth: 34
    functionLinenumber: 469
    functionLinenumberEnd: 512
    functionName: AliyunDriveCore::get_upload_url
    functionSourceFile: /src/opendal/core/services/aliyun-drive/src/core.rs
    functionUses: 1
    functionsReached:
    - serde_json::from_reader
    - map
    - map_err
    - extension
    - reader
    - Ok
    - take
    - ServiceOperation
    - Buffer::from
    - Self::as_deref
    - Some
    - Result::swap_remove
    - AliyunDriveCore::get_token_and_drive
    - AliyunDriveCore::send
    - Request::post
    - body
    - Err
    - Error::new
    - Vec::map_err
    - serde_json::to_vec
    linkageType: ''
    returnType: Result
    signature: 'async fn get_upload_url(&self,ctx: &OperationContext,file_id: &str,upload_id:
      &str,part_number: usize,) -> Result<String>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: AliyunDriveCore::get_upload_url
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:521,1
    - Dst: Request::put
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:524,1
    - Dst: DeleteInput::extension
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:524,1
    - Dst: extension
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:524,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:526,1
    - Dst: body
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:524,1
    - Dst: map_err
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:524,1
    - Dst: AliyunDriveCore::send
      Src: /src/opendal/core/services/aliyun-drive/src/core.rs:529,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 5
    argNames:
    - ctx
    - file_id
    - upload_id
    - part_number
    - body
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    - usize
    - Buffer
    constantsTouched: []
    func_position:
      end: 530
      start: 513
    functionDepth: 35
    functionLinenumber: 513
    functionLinenumberEnd: 530
    functionName: AliyunDriveCore::upload
    functionSourceFile: /src/opendal/core/services/aliyun-drive/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - extension
    - Request::put
    - AliyunDriveCore::send
    - body
    - ServiceOperation
    - DeleteInput::extension
    - AliyunDriveCore::get_upload_url
    linkageType: ''
    returnType: Result
    signature: 'pub async fn upload(&self,ctx: &OperationContext,file_id: &str,upload_id:
      &str,part_number: usize,body: Buffer,) -> Result<Buffer>'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 4
    argNames:
    - core
    - ctx
    - path
    - args
    argTypes:
    - Arc<AliyunDriveCore>
    - OperationContext
    - String
    - OpWrite
    constantsTouched: []
    func_position:
      end: 65
      start: 52
    functionDepth: 0
    functionLinenumber: 52
    functionLinenumberEnd: 65
    functionName: AliyunDriveLazyWriter::new
    functionSourceFile: /src/opendal/core/services/aliyun-drive/src/writer.rs
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(core: Arc<AliyunDriveCore>,ctx: OperationContext,path:
      String,args: OpWrite,) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: is_none
      Src: /src/opendal/core/services/aliyun-drive/src/writer.rs:68,1
    - Dst: get_parent
      Src: /src/opendal/core/services/aliyun-drive/src/writer.rs:69,1
    - Dst: ensure_dir_exists
      Src: /src/opendal/core/services/aliyun-drive/src/writer.rs:70,1
    - Dst: get_by_path
      Src: /src/opendal/core/services/aliyun-drive/src/writer.rs:73,1
    - Dst: Error::kind
      Src: /src/opendal/core/services/aliyun-drive/src/writer.rs:74,1
    - Dst: Err
      Src: /src/opendal/core/services/aliyun-drive/src/writer.rs:75,1
    - Dst: serde_json::from_reader
      Src: /src/opendal/core/services/aliyun-drive/src/writer.rs:78,1
    - Dst: reader
      Src: /src/opendal/core/services/aliyun-drive/src/writer.rs:78,1
    - Dst: map_err
      Src: /src/opendal/core/services/aliyun-drive/src/writer.rs:78,1
    - Dst: delete_path
      Src: /src/opendal/core/services/aliyun-drive/src/writer.rs:79,1
    - Dst: Some
      Src: /src/opendal/core/services/aliyun-drive/src/writer.rs:83,1
    - Dst: AliyunDriveWriter::new
      Src: /src/opendal/core/services/aliyun-drive/src/writer.rs:83,1
    - Dst: clone
      Src: /src/opendal/core/services/aliyun-drive/src/writer.rs:84,1
    - Dst: clone
      Src: /src/opendal/core/services/aliyun-drive/src/writer.rs:85,1
    - Dst: get_basename
      Src: /src/opendal/core/services/aliyun-drive/src/writer.rs:87,1
    - Dst: clone
      Src: /src/opendal/core/services/aliyun-drive/src/writer.rs:88,1
    - Dst: Ok
      Src: /src/opendal/core/services/aliyun-drive/src/writer.rs:92,1
    - Dst: as_mut
      Src: /src/opendal/core/services/aliyun-drive/src/writer.rs:92,1
    - Dst: expect
      Src: /src/opendal/core/services/aliyun-drive/src/writer.rs:92,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 70
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 96
      start: 67
    functionDepth: 34
    functionLinenumber: 67
    functionLinenumberEnd: 96
    functionName: AliyunDriveLazyWriter::inner
    functionSourceFile: /src/opendal/core/services/aliyun-drive/src/writer.rs
    functionUses: 1
    functionsReached:
    - is_none
    - map_err
    - as_mut
    - reader
    - expect
    - get_parent
    - Ok
    - serde_json::from_reader
    - get_basename
    - clone
    - Err
    - Some
    - delete_path
    - Error::kind
    - get_by_path
    - AliyunDriveWriter::new
    - ensure_dir_exists
    linkageType: ''
    returnType: Result
    signature: async fn inner(&mut self) -> Result<&mut AliyunDriveWriter>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: AliyunDriveLazyWriter::inner
      Src: /src/opendal/core/services/aliyun-drive/src/writer.rs:101,1
    - Dst: write
      Src: /src/opendal/core/services/aliyun-drive/src/writer.rs:101,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 1
    argNames:
    - bs
    argTypes:
    - Buffer
    constantsTouched: []
    func_position:
      end: 102
      start: 100
    functionDepth: 35
    functionLinenumber: 100
    functionLinenumberEnd: 102
    functionName: AliyunDriveLazyWriter::write
    functionSourceFile: /src/opendal/core/services/aliyun-drive/src/writer.rs
    functionUses: 0
    functionsReached:
    - AliyunDriveLazyWriter::inner
    - write
    linkageType: ''
    returnType: Result
    signature: 'async fn write(&mut self, bs: Buffer) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self::close
      Src: /src/opendal/core/services/aliyun-drive/src/writer.rs:106,1
    - Dst: Ok
      Src: /src/opendal/core/services/aliyun-drive/src/writer.rs:107,1
    - Dst: Metadata::default
      Src: /src/opendal/core/services/aliyun-drive/src/writer.rs:107,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 109
      start: 104
    functionDepth: 3
    functionLinenumber: 104
    functionLinenumberEnd: 109
    functionName: AliyunDriveLazyWriter::close
    functionSourceFile: /src/opendal/core/services/aliyun-drive/src/writer.rs
    functionUses: 0
    functionsReached:
    - Self::close
    - Metadata::default
    - Ok
    linkageType: ''
    returnType: Result
    signature: async fn close(&mut self) -> Result<Metadata>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self::abort
      Src: /src/opendal/core/services/aliyun-drive/src/writer.rs:113,1
    - Dst: Ok
      Src: /src/opendal/core/services/aliyun-drive/src/writer.rs:114,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 116
      start: 111
    functionDepth: 31
    functionLinenumber: 111
    functionLinenumberEnd: 116
    functionName: AliyunDriveLazyWriter::abort
    functionSourceFile: /src/opendal/core/services/aliyun-drive/src/writer.rs
    functionUses: 0
    functionsReached:
    - Ok
    - Self::abort
    linkageType: ''
    returnType: Result
    signature: async fn abort(&mut self) -> Result<()>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/aliyun-drive/src/writer.rs:131,1
    - Dst: Result::to_string
      Src: /src/opendal/core/services/aliyun-drive/src/writer.rs:132,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 5
    argNames:
    - core
    - ctx
    - parent_file_id
    - name
    - op
    argTypes:
    - Arc<AliyunDriveCore>
    - OperationContext
    - '&str'
    - '&str'
    - OpWrite
    constantsTouched: []
    func_position:
      end: 137
      start: 120
    functionDepth: 2
    functionLinenumber: 120
    functionLinenumberEnd: 137
    functionName: AliyunDriveWriter::new
    functionSourceFile: /src/opendal/core/services/aliyun-drive/src/writer.rs
    functionUses: 1
    functionsReached:
    - '&str::to_string'
    - Result::to_string
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(core: Arc<AliyunDriveCore>,ctx: OperationContext,parent_file_id:
      &str,name: &str,op: OpWrite,) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: as_ref
      Src: /src/opendal/core/services/aliyun-drive/src/writer.rs:142,1
    - Dst: as_ref
      Src: /src/opendal/core/services/aliyun-drive/src/writer.rs:142,1
    - Dst: create
      Src: /src/opendal/core/services/aliyun-drive/src/writer.rs:145,1
    - Dst: Some
      Src: /src/opendal/core/services/aliyun-drive/src/writer.rs:149,1
    - Dst: serde_json::from_reader
      Src: /src/opendal/core/services/aliyun-drive/src/writer.rs:156,1
    - Dst: reader
      Src: /src/opendal/core/services/aliyun-drive/src/writer.rs:156,1
    - Dst: map_err
      Src: /src/opendal/core/services/aliyun-drive/src/writer.rs:156,1
    - Dst: is_some_and
      Src: /src/opendal/core/services/aliyun-drive/src/writer.rs:157,1
    - Dst: Err
      Src: /src/opendal/core/services/aliyun-drive/src/writer.rs:158,1
    - Dst: Error::new
      Src: /src/opendal/core/services/aliyun-drive/src/writer.rs:158,1
    - Dst: Some
      Src: /src/opendal/core/services/aliyun-drive/src/writer.rs:161,1
    - Dst: as_ref
      Src: /src/opendal/core/services/aliyun-drive/src/writer.rs:163,1
    - Dst: expect
      Src: /src/opendal/core/services/aliyun-drive/src/writer.rs:163,1
    - Dst: as_ref
      Src: /src/opendal/core/services/aliyun-drive/src/writer.rs:164,1
    - Dst: expect
      Src: /src/opendal/core/services/aliyun-drive/src/writer.rs:164,1
    - Dst: upload
      Src: /src/opendal/core/services/aliyun-drive/src/writer.rs:169,1
    - Dst: Error::kind
      Src: /src/opendal/core/services/aliyun-drive/src/writer.rs:173,1
    - Dst: Err
      Src: /src/opendal/core/services/aliyun-drive/src/writer.rs:175,1
    - Dst: Ok
      Src: /src/opendal/core/services/aliyun-drive/src/writer.rs:180,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 76
    argCount: 1
    argNames:
    - bs
    argTypes:
    - Buffer
    constantsTouched: []
    func_position:
      end: 181
      start: 141
    functionDepth: 33
    functionLinenumber: 141
    functionLinenumberEnd: 181
    functionName: AliyunDriveWriter::write
    functionSourceFile: /src/opendal/core/services/aliyun-drive/src/writer.rs
    functionUses: 0
    functionsReached:
    - map_err
    - reader
    - expect
    - Ok
    - create
    - serde_json::from_reader
    - is_some_and
    - Some
    - Err
    - Error::new
    - as_ref
    - Error::kind
    - upload
    linkageType: ''
    returnType: Result
    signature: 'async fn write(&mut self, bs: Buffer) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: as_ref
      Src: /src/opendal/core/services/aliyun-drive/src/writer.rs:184,1
    - Dst: as_ref
      Src: /src/opendal/core/services/aliyun-drive/src/writer.rs:184,1
    - Dst: Ok
      Src: /src/opendal/core/services/aliyun-drive/src/writer.rs:186,1
    - Dst: Metadata::default
      Src: /src/opendal/core/services/aliyun-drive/src/writer.rs:186,1
    - Dst: complete
      Src: /src/opendal/core/services/aliyun-drive/src/writer.rs:189,1
    - Dst: Ok
      Src: /src/opendal/core/services/aliyun-drive/src/writer.rs:190,1
    - Dst: Metadata::default
      Src: /src/opendal/core/services/aliyun-drive/src/writer.rs:190,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 21
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 191
      start: 183
    functionDepth: 3
    functionLinenumber: 183
    functionLinenumberEnd: 191
    functionName: AliyunDriveWriter::close
    functionSourceFile: /src/opendal/core/services/aliyun-drive/src/writer.rs
    functionUses: 0
    functionsReached:
    - complete
    - as_ref
    - Metadata::default
    - Ok
    linkageType: ''
    returnType: Result
    signature: async fn close(&mut self) -> Result<Metadata>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: as_ref
      Src: /src/opendal/core/services/aliyun-drive/src/writer.rs:194,1
    - Dst: Ok
      Src: /src/opendal/core/services/aliyun-drive/src/writer.rs:195,1
    - Dst: delete_path
      Src: /src/opendal/core/services/aliyun-drive/src/writer.rs:197,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 198
      start: 193
    functionDepth: 35
    functionLinenumber: 193
    functionLinenumberEnd: 198
    functionName: AliyunDriveWriter::abort
    functionSourceFile: /src/opendal/core/services/aliyun-drive/src/writer.rs
    functionUses: 0
    functionsReached:
    - delete_path
    - as_ref
    - Ok
    linkageType: ''
    returnType: Result
    signature: async fn abort(&mut self) -> Result<()>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: register::<AliyunDrive>
      Src: /src/opendal/core/services/aliyun-drive/src/lib.rs:23,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - registry
    argTypes:
    - '&opendal_core::OperatorRegistry'
    constantsTouched: []
    func_position:
      end: 24
      start: 22
    functionDepth: 0
    functionLinenumber: 22
    functionLinenumberEnd: 24
    functionName: register_aliyun_drive_service
    functionSourceFile: /src/opendal/core/services/aliyun-drive/src/lib.rs
    functionUses: 1
    functionsReached:
    - register::<AliyunDrive>
    linkageType: ''
    returnType: void
    signature: 'pub fn register_aliyun_drive_service(registry: &opendal_core::OperatorRegistry)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::debug_struct
      Src: /src/opendal/core/services/aliyun-drive/src/backend.rs:43,1
    - Dst: field
      Src: /src/opendal/core/services/aliyun-drive/src/backend.rs:43,1
    - Dst: finish_non_exhaustive
      Src: /src/opendal/core/services/aliyun-drive/src/backend.rs:43,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - f
    argTypes:
    - '&mut std::fmt::Formatter<''_>'
    constantsTouched: []
    func_position:
      end: 46
      start: 42
    functionDepth: 5
    functionLinenumber: 42
    functionLinenumberEnd: 46
    functionName: AliyunDriveBuilder::fmt
    functionSourceFile: /src/opendal/core/services/aliyun-drive/src/backend.rs
    functionUses: 0
    functionsReached:
    - field
    - Result::debug_struct
    - finish_non_exhaustive
    linkageType: ''
    returnType: std::fmt::Result
    signature: 'fn fmt(&self, f: &mut std::fmt::Formatter<''_>) -> std::fmt::Result'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::is_empty
      Src: /src/opendal/core/services/aliyun-drive/src/backend.rs:54,1
    - Dst: Some
      Src: /src/opendal/core/services/aliyun-drive/src/backend.rs:57,1
    - Dst: Result::to_string
      Src: /src/opendal/core/services/aliyun-drive/src/backend.rs:57,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - root
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 61
      start: 53
    functionDepth: 4
    functionLinenumber: 53
    functionLinenumberEnd: 61
    functionName: AliyunDriveBuilder::root
    functionSourceFile: /src/opendal/core/services/aliyun-drive/src/backend.rs
    functionUses: 0
    functionsReached:
    - Result::is_empty
    - Result::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn root(mut self, root: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Some
      Src: /src/opendal/core/services/aliyun-drive/src/backend.rs:65,1
    - Dst: to_string
      Src: /src/opendal/core/services/aliyun-drive/src/backend.rs:65,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - access_token
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 68
      start: 64
    functionDepth: 2
    functionLinenumber: 64
    functionLinenumberEnd: 68
    functionName: AliyunDriveBuilder::access_token
    functionSourceFile: /src/opendal/core/services/aliyun-drive/src/backend.rs
    functionUses: 0
    functionsReached:
    - to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn access_token(mut self, access_token: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Some
      Src: /src/opendal/core/services/aliyun-drive/src/backend.rs:72,1
    - Dst: Self::to_string
      Src: /src/opendal/core/services/aliyun-drive/src/backend.rs:72,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - client_id
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 75
      start: 71
    functionDepth: 2
    functionLinenumber: 71
    functionLinenumberEnd: 75
    functionName: AliyunDriveBuilder::client_id
    functionSourceFile: /src/opendal/core/services/aliyun-drive/src/backend.rs
    functionUses: 0
    functionsReached:
    - Self::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn client_id(mut self, client_id: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Some
      Src: /src/opendal/core/services/aliyun-drive/src/backend.rs:79,1
    - Dst: Self::to_string
      Src: /src/opendal/core/services/aliyun-drive/src/backend.rs:79,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - client_secret
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 82
      start: 78
    functionDepth: 2
    functionLinenumber: 78
    functionLinenumberEnd: 82
    functionName: AliyunDriveBuilder::client_secret
    functionSourceFile: /src/opendal/core/services/aliyun-drive/src/backend.rs
    functionUses: 0
    functionsReached:
    - Self::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn client_secret(mut self, client_secret: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Some
      Src: /src/opendal/core/services/aliyun-drive/src/backend.rs:86,1
    - Dst: Self::to_string
      Src: /src/opendal/core/services/aliyun-drive/src/backend.rs:86,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - refresh_token
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 89
      start: 85
    functionDepth: 2
    functionLinenumber: 85
    functionLinenumberEnd: 89
    functionName: AliyunDriveBuilder::refresh_token
    functionSourceFile: /src/opendal/core/services/aliyun-drive/src/backend.rs
    functionUses: 0
    functionsReached:
    - Self::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn refresh_token(mut self, refresh_token: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: to_string
      Src: /src/opendal/core/services/aliyun-drive/src/backend.rs:93,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - drive_type
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 96
      start: 92
    functionDepth: 2
    functionLinenumber: 92
    functionLinenumberEnd: 96
    functionName: AliyunDriveBuilder::drive_type
    functionSourceFile: /src/opendal/core/services/aliyun-drive/src/backend.rs
    functionUses: 0
    functionsReached:
    - to_string
    linkageType: ''
    returnType: Self
    signature: 'pub fn drive_type(mut self, drive_type: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: normalize_root
      Src: /src/opendal/core/services/aliyun-drive/src/backend.rs:105,1
    - Dst: clone
      Src: /src/opendal/core/services/aliyun-drive/src/backend.rs:105,1
    - Dst: unwrap_or_default
      Src: /src/opendal/core/services/aliyun-drive/src/backend.rs:105,1
    - Dst: clone
      Src: /src/opendal/core/services/aliyun-drive/src/backend.rs:108,1
    - Dst: is_empty
      Src: /src/opendal/core/services/aliyun-drive/src/backend.rs:109,1
    - Dst: AliyunDriveSign::Access
      Src: /src/opendal/core/services/aliyun-drive/src/backend.rs:110,1
    - Dst: clone
      Src: /src/opendal/core/services/aliyun-drive/src/backend.rs:113,1
    - Dst: clone
      Src: /src/opendal/core/services/aliyun-drive/src/backend.rs:114,1
    - Dst: clone
      Src: /src/opendal/core/services/aliyun-drive/src/backend.rs:115,1
    - Dst: Self::is_empty
      Src: /src/opendal/core/services/aliyun-drive/src/backend.rs:118,1
    - Dst: Self::is_empty
      Src: /src/opendal/core/services/aliyun-drive/src/backend.rs:118,1
    - Dst: Self::is_empty
      Src: /src/opendal/core/services/aliyun-drive/src/backend.rs:118,1
    - Dst: AliyunDriveSign::Refresh
      Src: /src/opendal/core/services/aliyun-drive/src/backend.rs:119,1
    - Dst: Err
      Src: /src/opendal/core/services/aliyun-drive/src/backend.rs:121,1
    - Dst: Error::new
      Src: /src/opendal/core/services/aliyun-drive/src/backend.rs:121,1
    - Dst: Self::with_operation
      Src: /src/opendal/core/services/aliyun-drive/src/backend.rs:121,1
    - Dst: Self::with_context
      Src: /src/opendal/core/services/aliyun-drive/src/backend.rs:121,1
    - Dst: as_str
      Src: /src/opendal/core/services/aliyun-drive/src/backend.rs:129,1
    - Dst: Err
      Src: /src/opendal/core/services/aliyun-drive/src/backend.rs:134,1
    - Dst: Error::new
      Src: /src/opendal/core/services/aliyun-drive/src/backend.rs:134,1
    - Dst: Ok
      Src: /src/opendal/core/services/aliyun-drive/src/backend.rs:142,1
    - Dst: Arc::new
      Src: /src/opendal/core/services/aliyun-drive/src/backend.rs:143,1
    - Dst: ServiceInfo::new
      Src: /src/opendal/core/services/aliyun-drive/src/backend.rs:144,1
    - Dst: Some
      Src: /src/opendal/core/services/aliyun-drive/src/backend.rs:153,1
    - Dst: Some
      Src: /src/opendal/core/services/aliyun-drive/src/backend.rs:156,1
    - Dst: Some
      Src: /src/opendal/core/services/aliyun-drive/src/backend.rs:158,1
    - Dst: Default::default
      Src: /src/opendal/core/services/aliyun-drive/src/backend.rs:166,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/aliyun-drive/src/backend.rs:168,1
    - Dst: Arc::new
      Src: /src/opendal/core/services/aliyun-drive/src/backend.rs:171,1
    - Dst: Mutex::new
      Src: /src/opendal/core/services/aliyun-drive/src/backend.rs:171,1
    - Dst: Arc::new
      Src: /src/opendal/core/services/aliyun-drive/src/backend.rs:175,1
    - Dst: Mutex::new
      Src: /src/opendal/core/services/aliyun-drive/src/backend.rs:175,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 86
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 178
      start: 102
    functionDepth: 34
    functionLinenumber: 102
    functionLinenumberEnd: 178
    functionName: AliyunDriveBuilder::build
    functionSourceFile: /src/opendal/core/services/aliyun-drive/src/backend.rs
    functionUses: 0
    functionsReached:
    - Arc::new
    - Default::default
    - clone
    - AliyunDriveSign::Refresh
    - Self::with_context
    - ServiceInfo::new
    - Ok
    - normalize_root
    - Self::is_empty
    - as_str
    - '&str::to_string'
    - unwrap_or_default
    - is_empty
    - Some
    - Err
    - Error::new
    - AliyunDriveSign::Access
    - Self::with_operation
    - Mutex::new
    linkageType: ''
    returnType: Result
    signature: fn build(self) -> Result<impl Service>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: clone
      Src: /src/opendal/core/services/aliyun-drive/src/backend.rs:194,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 195
      start: 193
    functionDepth: 2
    functionLinenumber: 193
    functionLinenumberEnd: 195
    functionName: AliyunDriveBackend::info
    functionSourceFile: /src/opendal/core/services/aliyun-drive/src/backend.rs
    functionUses: 0
    functionsReached:
    - clone
    linkageType: ''
    returnType: ServiceInfo
    signature: fn info(&self) -> ServiceInfo
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 199
      start: 197
    functionDepth: 0
    functionLinenumber: 197
    functionLinenumberEnd: 199
    functionName: AliyunDriveBackend::capability
    functionSourceFile: /src/opendal/core/services/aliyun-drive/src/backend.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Capability
    signature: fn capability(&self) -> Capability
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: ensure_dir_exists
      Src: /src/opendal/core/services/aliyun-drive/src/backend.rs:207,1
    - Dst: Ok
      Src: /src/opendal/core/services/aliyun-drive/src/backend.rs:209,1
    - Dst: RpCreateDir::default
      Src: /src/opendal/core/services/aliyun-drive/src/backend.rs:209,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 3
    argNames:
    - ctx
    - path
    - _args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpCreateDir
    constantsTouched: []
    func_position:
      end: 210
      start: 201
    functionDepth: 34
    functionLinenumber: 201
    functionLinenumberEnd: 210
    functionName: AliyunDriveBackend::create_dir
    functionSourceFile: /src/opendal/core/services/aliyun-drive/src/backend.rs
    functionUses: 0
    functionsReached:
    - RpCreateDir::default
    - Ok
    - ensure_dir_exists
    linkageType: ''
    returnType: Result
    signature: 'async fn create_dir(&self,ctx: &OperationContext,path: &str,_args:
      OpCreateDir,) -> Result<RpCreateDir>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/core/services/aliyun-drive/src/backend.rs:220,1
    - Dst: RpRename::default
      Src: /src/opendal/core/services/aliyun-drive/src/backend.rs:220,1
    - Dst: get_by_path
      Src: /src/opendal/core/services/aliyun-drive/src/backend.rs:222,1
    - Dst: serde_json::from_reader
      Src: /src/opendal/core/services/aliyun-drive/src/backend.rs:224,1
    - Dst: reader
      Src: /src/opendal/core/services/aliyun-drive/src/backend.rs:224,1
    - Dst: map_err
      Src: /src/opendal/core/services/aliyun-drive/src/backend.rs:224,1
    - Dst: get_by_path
      Src: /src/opendal/core/services/aliyun-drive/src/backend.rs:226,1
    - Dst: Error::kind
      Src: /src/opendal/core/services/aliyun-drive/src/backend.rs:227,1
    - Dst: Err
      Src: /src/opendal/core/services/aliyun-drive/src/backend.rs:228,1
    - Dst: serde_json::from_reader
      Src: /src/opendal/core/services/aliyun-drive/src/backend.rs:231,1
    - Dst: reader
      Src: /src/opendal/core/services/aliyun-drive/src/backend.rs:231,1
    - Dst: map_err
      Src: /src/opendal/core/services/aliyun-drive/src/backend.rs:231,1
    - Dst: delete_path
      Src: /src/opendal/core/services/aliyun-drive/src/backend.rs:232,1
    - Dst: ensure_dir_exists
      Src: /src/opendal/core/services/aliyun-drive/src/backend.rs:236,1
    - Dst: get_parent
      Src: /src/opendal/core/services/aliyun-drive/src/backend.rs:236,1
    - Dst: move_path
      Src: /src/opendal/core/services/aliyun-drive/src/backend.rs:237,1
    - Dst: get_basename
      Src: /src/opendal/core/services/aliyun-drive/src/backend.rs:241,1
    - Dst: get_basename
      Src: /src/opendal/core/services/aliyun-drive/src/backend.rs:242,1
    - Dst: update_path
      Src: /src/opendal/core/services/aliyun-drive/src/backend.rs:245,1
    - Dst: Ok
      Src: /src/opendal/core/services/aliyun-drive/src/backend.rs:248,1
    - Dst: RpRename::default
      Src: /src/opendal/core/services/aliyun-drive/src/backend.rs:248,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 73
    argCount: 4
    argNames:
    - ctx
    - from
    - to
    - _args
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    - OpRename
    constantsTouched: []
    func_position:
      end: 249
      start: 212
    functionDepth: 35
    functionLinenumber: 212
    functionLinenumberEnd: 249
    functionName: AliyunDriveBackend::rename
    functionSourceFile: /src/opendal/core/services/aliyun-drive/src/backend.rs
    functionUses: 0
    functionsReached:
    - map_err
    - reader
    - Ok
    - get_parent
    - serde_json::from_reader
    - get_basename
    - Err
    - delete_path
    - Error::kind
    - RpRename::default
    - get_by_path
    - update_path
    - move_path
    - ensure_dir_exists
    linkageType: ''
    returnType: Result
    signature: 'async fn rename(&self,ctx: &OperationContext,from: &str,to: &str,_args:
      OpRename,) -> Result<RpRename>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: clone
      Src: /src/opendal/core/services/aliyun-drive/src/backend.rs:259,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/aliyun-drive/src/backend.rs:260,1
    - Dst: Result::to_string
      Src: /src/opendal/core/services/aliyun-drive/src/backend.rs:261,1
    - Dst: Result::to_string
      Src: /src/opendal/core/services/aliyun-drive/src/backend.rs:262,1
    - Dst: Ok
      Src: /src/opendal/core/services/aliyun-drive/src/backend.rs:264,1
    - Dst: oio::OneShotCopier::new
      Src: /src/opendal/core/services/aliyun-drive/src/backend.rs:264,1
    - Dst: Ok
      Src: /src/opendal/core/services/aliyun-drive/src/backend.rs:266,1
    - Dst: Metadata::default
      Src: /src/opendal/core/services/aliyun-drive/src/backend.rs:266,1
    - Dst: CompfsCore::get_by_path
      Src: /src/opendal/core/services/aliyun-drive/src/backend.rs:268,1
    - Dst: serde_json::from_reader
      Src: /src/opendal/core/services/aliyun-drive/src/backend.rs:270,1
    - Dst: reader
      Src: /src/opendal/core/services/aliyun-drive/src/backend.rs:270,1
    - Dst: map_err
      Src: /src/opendal/core/services/aliyun-drive/src/backend.rs:270,1
    - Dst: CompfsCore::get_by_path
      Src: /src/opendal/core/services/aliyun-drive/src/backend.rs:272,1
    - Dst: Error::kind
      Src: /src/opendal/core/services/aliyun-drive/src/backend.rs:273,1
    - Dst: Err
      Src: /src/opendal/core/services/aliyun-drive/src/backend.rs:274,1
    - Dst: serde_json::from_reader
      Src: /src/opendal/core/services/aliyun-drive/src/backend.rs:276,1
    - Dst: reader
      Src: /src/opendal/core/services/aliyun-drive/src/backend.rs:276,1
    - Dst: map_err
      Src: /src/opendal/core/services/aliyun-drive/src/backend.rs:276,1
    - Dst: CompfsCore::delete_path
      Src: /src/opendal/core/services/aliyun-drive/src/backend.rs:278,1
    - Dst: get_parent
      Src: /src/opendal/core/services/aliyun-drive/src/backend.rs:283,1
    - Dst: CompfsCore::ensure_dir_exists
      Src: /src/opendal/core/services/aliyun-drive/src/backend.rs:284,1
    - Dst: CompfsCore::copy_path
      Src: /src/opendal/core/services/aliyun-drive/src/backend.rs:290,1
    - Dst: serde_json::from_reader
      Src: /src/opendal/core/services/aliyun-drive/src/backend.rs:294,1
    - Dst: reader
      Src: /src/opendal/core/services/aliyun-drive/src/backend.rs:294,1
    - Dst: map_err
      Src: /src/opendal/core/services/aliyun-drive/src/backend.rs:294,1
    - Dst: get_basename
      Src: /src/opendal/core/services/aliyun-drive/src/backend.rs:297,1
    - Dst: get_basename
      Src: /src/opendal/core/services/aliyun-drive/src/backend.rs:298,1
    - Dst: CompfsCore::update_path
      Src: /src/opendal/core/services/aliyun-drive/src/backend.rs:301,1
    - Dst: Ok
      Src: /src/opendal/core/services/aliyun-drive/src/backend.rs:304,1
    - Dst: Metadata::default
      Src: /src/opendal/core/services/aliyun-drive/src/backend.rs:304,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 94
    argCount: 5
    argNames:
    - ctx
    - from
    - to
    - _args
    - _opts
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    - OpCopy
    - OpCopier
    constantsTouched: []
    func_position:
      end: 307
      start: 251
    functionDepth: 35
    functionLinenumber: 251
    functionLinenumberEnd: 307
    functionName: AliyunDriveBackend::copy
    functionSourceFile: /src/opendal/core/services/aliyun-drive/src/backend.rs
    functionUses: 0
    functionsReached:
    - Result::clone
    - map_err
    - CompfsCore::delete_path
    - Metadata::default
    - Result::to_string
    - Ok
    - reader
    - get_parent
    - CompfsCore::copy_path
    - serde_json::from_reader
    - CompfsCore::update_path
    - get_basename
    - clone
    - Err
    - Error::kind
    - CompfsCore::get_by_path
    - oio::OneShotCopier::new
    - CompfsCore::ensure_dir_exists
    linkageType: ''
    returnType: Result
    signature: 'fn copy(&self,ctx: &OperationContext,from: &str,to: &str,_args: OpCopy,_opts:
      OpCopier,) -> Result<Self::Copier>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: get_by_path
      Src: /src/opendal/core/services/aliyun-drive/src/backend.rs:310,1
    - Dst: serde_json::from_reader
      Src: /src/opendal/core/services/aliyun-drive/src/backend.rs:312,1
    - Dst: reader
      Src: /src/opendal/core/services/aliyun-drive/src/backend.rs:312,1
    - Dst: map_err
      Src: /src/opendal/core/services/aliyun-drive/src/backend.rs:312,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/aliyun-drive/src/backend.rs:315,1
    - Dst: Self::with_last_modified
      Src: /src/opendal/core/services/aliyun-drive/src/backend.rs:315,1
    - Dst: updated_at.parse::<Timestamp>
      Src: /src/opendal/core/services/aliyun-drive/src/backend.rs:316,1
    - Dst: map_err
      Src: /src/opendal/core/services/aliyun-drive/src/backend.rs:316,1
    - Dst: Error::new
      Src: /src/opendal/core/services/aliyun-drive/src/backend.rs:317,1
    - Dst: Self::set_source
      Src: /src/opendal/core/services/aliyun-drive/src/backend.rs:317,1
    - Dst: Ok
      Src: /src/opendal/core/services/aliyun-drive/src/backend.rs:321,1
    - Dst: RpStat::new
      Src: /src/opendal/core/services/aliyun-drive/src/backend.rs:321,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/aliyun-drive/src/backend.rs:324,1
    - Dst: Self::with_last_modified
      Src: /src/opendal/core/services/aliyun-drive/src/backend.rs:324,1
    - Dst: updated_at.parse::<Timestamp>
      Src: /src/opendal/core/services/aliyun-drive/src/backend.rs:325,1
    - Dst: map_err
      Src: /src/opendal/core/services/aliyun-drive/src/backend.rs:325,1
    - Dst: Error::new
      Src: /src/opendal/core/services/aliyun-drive/src/backend.rs:326,1
    - Dst: Self::set_source
      Src: /src/opendal/core/services/aliyun-drive/src/backend.rs:326,1
    - Dst: Result::with_content_length
      Src: /src/opendal/core/services/aliyun-drive/src/backend.rs:330,1
    - Dst: Result::with_content_type
      Src: /src/opendal/core/services/aliyun-drive/src/backend.rs:333,1
    - Dst: Ok
      Src: /src/opendal/core/services/aliyun-drive/src/backend.rs:336,1
    - Dst: RpStat::new
      Src: /src/opendal/core/services/aliyun-drive/src/backend.rs:336,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 61
    argCount: 3
    argNames:
    - ctx
    - path
    - _args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpStat
    constantsTouched: []
    func_position:
      end: 337
      start: 309
    functionDepth: 35
    functionLinenumber: 309
    functionLinenumberEnd: 337
    functionName: AliyunDriveBackend::stat
    functionSourceFile: /src/opendal/core/services/aliyun-drive/src/backend.rs
    functionUses: 0
    functionsReached:
    - map_err
    - updated_at.parse::<Timestamp>
    - Metadata::new
    - reader
    - Ok
    - Result::with_content_length
    - serde_json::from_reader
    - Self::with_last_modified
    - RpStat::new
    - Error::new
    - Result::with_content_type
    - get_by_path
    - Self::set_source
    linkageType: ''
    returnType: Result
    signature: 'async fn stat(&self, ctx: &OperationContext, path: &str, _args: OpStat)
      -> Result<RpStat>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/core/services/aliyun-drive/src/backend.rs:340,1
    - Dst: oio::StreamReader::new
      Src: /src/opendal/core/services/aliyun-drive/src/backend.rs:340,1
    - Dst: AliyunDriveReader::new
      Src: /src/opendal/core/services/aliyun-drive/src/backend.rs:340,1
    - Dst: AliyunDriveBackend::clone
      Src: /src/opendal/core/services/aliyun-drive/src/backend.rs:341,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/aliyun-drive/src/backend.rs:342,1
    - Dst: Ok
      Src: /src/opendal/core/services/aliyun-drive/src/backend.rs:348,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpRead
    constantsTouched: []
    func_position:
      end: 349
      start: 338
    functionDepth: 3
    functionLinenumber: 338
    functionLinenumberEnd: 349
    functionName: AliyunDriveBackend::read
    functionSourceFile: /src/opendal/core/services/aliyun-drive/src/backend.rs
    functionUses: 0
    functionsReached:
    - AliyunDriveReader::new
    - Result::clone
    - Ok
    - oio::StreamReader::new
    - AliyunDriveBackend::clone
    linkageType: ''
    returnType: Result
    signature: 'fn read(&self, ctx: &OperationContext, path: &str, args: OpRead) ->
      Result<Self::Reader>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/core/services/aliyun-drive/src/backend.rs:353,1
    - Dst: oio::OneShotDeleter::new
      Src: /src/opendal/core/services/aliyun-drive/src/backend.rs:353,1
    - Dst: AliyunDriveDeleter::new
      Src: /src/opendal/core/services/aliyun-drive/src/backend.rs:353,1
    - Dst: clone
      Src: /src/opendal/core/services/aliyun-drive/src/backend.rs:354,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/aliyun-drive/src/backend.rs:355,1
    - Dst: Ok
      Src: /src/opendal/core/services/aliyun-drive/src/backend.rs:359,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - '&OperationContext'
    constantsTouched: []
    func_position:
      end: 360
      start: 351
    functionDepth: 2
    functionLinenumber: 351
    functionLinenumberEnd: 360
    functionName: AliyunDriveBackend::delete
    functionSourceFile: /src/opendal/core/services/aliyun-drive/src/backend.rs
    functionUses: 0
    functionsReached:
    - oio::OneShotDeleter::new
    - Result::clone
    - Ok
    - clone
    - AliyunDriveDeleter::new
    linkageType: ''
    returnType: Result
    signature: 'fn delete(&self, ctx: &OperationContext) -> Result<Self::Deleter>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: AliyunDriveLister::new_with_path
      Src: /src/opendal/core/services/aliyun-drive/src/backend.rs:364,1
    - Dst: clone
      Src: /src/opendal/core/services/aliyun-drive/src/backend.rs:365,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/aliyun-drive/src/backend.rs:366,1
    - Dst: to_string
      Src: /src/opendal/core/services/aliyun-drive/src/backend.rs:367,1
    - Dst: OpStat::limit
      Src: /src/opendal/core/services/aliyun-drive/src/backend.rs:368,1
    - Dst: Ok
      Src: /src/opendal/core/services/aliyun-drive/src/backend.rs:371,1
    - Dst: oio::PageLister::new
      Src: /src/opendal/core/services/aliyun-drive/src/backend.rs:371,1
    - Dst: Ok
      Src: /src/opendal/core/services/aliyun-drive/src/backend.rs:374,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 14
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpList
    constantsTouched: []
    func_position:
      end: 375
      start: 362
    functionDepth: 36
    functionLinenumber: 362
    functionLinenumberEnd: 375
    functionName: AliyunDriveBackend::list
    functionSourceFile: /src/opendal/core/services/aliyun-drive/src/backend.rs
    functionUses: 0
    functionsReached:
    - Result::clone
    - to_string
    - AliyunDriveLister::new_with_path
    - Ok
    - clone
    - oio::PageLister::new
    - OpStat::limit
    linkageType: ''
    returnType: Result
    signature: 'fn list(&self, ctx: &OperationContext, path: &str, args: OpList) ->
      Result<Self::Lister>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/core/services/aliyun-drive/src/backend.rs:378,1
    - Dst: AliyunDriveLazyWriter::new
      Src: /src/opendal/core/services/aliyun-drive/src/backend.rs:378,1
    - Dst: clone
      Src: /src/opendal/core/services/aliyun-drive/src/backend.rs:379,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/aliyun-drive/src/backend.rs:380,1
    - Dst: to_string
      Src: /src/opendal/core/services/aliyun-drive/src/backend.rs:381,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpWrite
    constantsTouched: []
    func_position:
      end: 384
      start: 377
    functionDepth: 2
    functionLinenumber: 377
    functionLinenumberEnd: 384
    functionName: AliyunDriveBackend::write
    functionSourceFile: /src/opendal/core/services/aliyun-drive/src/backend.rs
    functionUses: 0
    functionsReached:
    - Result::clone
    - to_string
    - Ok
    - AliyunDriveLazyWriter::new
    - clone
    linkageType: ''
    returnType: Result
    signature: 'fn write(&self, ctx: &OperationContext, path: &str, args: OpWrite)
      -> Result<Self::Writer>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/core/services/aliyun-drive/src/backend.rs:392,1
    - Dst: Error::new
      Src: /src/opendal/core/services/aliyun-drive/src/backend.rs:392,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - _ctx
    - _path
    - _args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpPresign
    constantsTouched: []
    func_position:
      end: 396
      start: 386
    functionDepth: 36
    functionLinenumber: 386
    functionLinenumberEnd: 396
    functionName: AliyunDriveBackend::presign
    functionSourceFile: /src/opendal/core/services/aliyun-drive/src/backend.rs
    functionUses: 0
    functionsReached:
    - Error::new
    - Err
    linkageType: ''
    returnType: Result
    signature: 'async fn presign(&self,_ctx: &OperationContext,_path: &str,_args:
      OpPresign,) -> Result<RpPresign>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::debug_struct
      Src: /src/opendal/core/services/tikv/src/config.rs:44,1
    - Dst: field
      Src: /src/opendal/core/services/tikv/src/config.rs:44,1
    - Dst: field
      Src: /src/opendal/core/services/tikv/src/config.rs:44,1
    - Dst: field
      Src: /src/opendal/core/services/tikv/src/config.rs:44,1
    - Dst: field
      Src: /src/opendal/core/services/tikv/src/config.rs:44,1
    - Dst: field
      Src: /src/opendal/core/services/tikv/src/config.rs:44,1
    - Dst: finish_non_exhaustive
      Src: /src/opendal/core/services/tikv/src/config.rs:44,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 24
    argCount: 1
    argNames:
    - f
    argTypes:
    - '&mut std::fmt::Formatter<''_>'
    constantsTouched: []
    func_position:
      end: 51
      start: 43
    functionDepth: 5
    functionLinenumber: 43
    functionLinenumberEnd: 51
    functionName: TikvConfig::fmt
    functionSourceFile: /src/opendal/core/services/tikv/src/config.rs
    functionUses: 0
    functionsReached:
    - field
    - Result::debug_struct
    - finish_non_exhaustive
    linkageType: ''
    returnType: std::fmt::Result
    signature: 'fn fmt(&self, f: &mut std::fmt::Formatter<''_>) -> std::fmt::Result'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::options
      Src: /src/opendal/core/services/tikv/src/config.rs:58,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/tikv/src/config.rs:58,1
    - Dst: Vec::new
      Src: /src/opendal/core/services/tikv/src/config.rs:60,1
    - Dst: Result::authority
      Src: /src/opendal/core/services/tikv/src/config.rs:61,1
    - Dst: Option::is_empty
      Src: /src/opendal/core/services/tikv/src/config.rs:62,1
    - Dst: Self::push
      Src: /src/opendal/core/services/tikv/src/config.rs:64,1
    - Dst: Option::to_string
      Src: /src/opendal/core/services/tikv/src/config.rs:64,1
    - Dst: Result::root
      Src: /src/opendal/core/services/tikv/src/config.rs:67,1
    - Dst: split
      Src: /src/opendal/core/services/tikv/src/config.rs:68,1
    - Dst: split
      Src: /src/opendal/core/services/tikv/src/config.rs:69,1
    - Dst: Self::trim
      Src: /src/opendal/core/services/tikv/src/config.rs:70,1
    - Dst: is_empty
      Src: /src/opendal/core/services/tikv/src/config.rs:71,1
    - Dst: Self::push
      Src: /src/opendal/core/services/tikv/src/config.rs:72,1
    - Dst: to_string
      Src: /src/opendal/core/services/tikv/src/config.rs:72,1
    - Dst: Self::from_iter
      Src: /src/opendal/core/services/tikv/src/config.rs:78,1
    - Dst: Self::is_empty
      Src: /src/opendal/core/services/tikv/src/config.rs:80,1
    - Dst: as_mut
      Src: /src/opendal/core/services/tikv/src/config.rs:81,1
    - Dst: Result::extend
      Src: /src/opendal/core/services/tikv/src/config.rs:82,1
    - Dst: Some
      Src: /src/opendal/core/services/tikv/src/config.rs:84,1
    - Dst: Ok
      Src: /src/opendal/core/services/tikv/src/config.rs:88,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 61
    argCount: 1
    argNames:
    - uri
    argTypes:
    - '&opendal_core::OperatorUri'
    constantsTouched: []
    func_position:
      end: 89
      start: 57
    functionDepth: 35
    functionLinenumber: 57
    functionLinenumberEnd: 89
    functionName: TikvConfig::from_uri
    functionSourceFile: /src/opendal/core/services/tikv/src/config.rs
    functionUses: 1
    functionsReached:
    - Result::clone
    - to_string
    - Self::from_iter
    - Self::trim
    - Option::to_string
    - as_mut
    - Result::extend
    - Ok
    - Self::push
    - split
    - is_empty
    - Self::is_empty
    - Some
    - Option::is_empty
    - Result::root
    - Result::authority
    - Vec::new
    - Result::options
    linkageType: ''
    returnType: opendal_core::Result
    signature: 'fn from_uri(uri: &opendal_core::OperatorUri) -> opendal_core::Result<Self>'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 93
      start: 91
    functionDepth: 0
    functionLinenumber: 91
    functionLinenumberEnd: 93
    functionName: TikvConfig::into_builder
    functionSourceFile: /src/opendal/core/services/tikv/src/config.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Self::Builder
    signature: fn into_builder(self) -> Self::Builder
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: OperatorUri::new
      Src: /src/opendal/core/services/tikv/src/config.rs:104,1
    - Dst: Vec::<(String, String)>::new
      Src: /src/opendal/core/services/tikv/src/config.rs:106,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/services/tikv/src/config.rs:104,1
    - Dst: TikvConfig::from_uri
      Src: /src/opendal/core/services/tikv/src/config.rs:110,1
    - Dst: opendal_core::Result::unwrap
      Src: /src/opendal/core/services/tikv/src/config.rs:110,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 119
      start: 103
    functionDepth: 29
    functionLinenumber: 103
    functionLinenumberEnd: 119
    functionName: tests::from_uri_collects_endpoints
    functionSourceFile: /src/opendal/core/services/tikv/src/config.rs
    functionUses: 0
    functionsReached:
    - Vec::<(String, String)>::new
    - OperatorUri::new
    - TikvConfig::from_uri
    - Result::unwrap
    - opendal_core::Result::unwrap
    linkageType: ''
    returnType: void
    signature: fn from_uri_collects_endpoints()
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - core
    - root
    argTypes:
    - Arc<TikvCore>
    - String
    constantsTouched: []
    func_position:
      end: 33
      start: 31
    functionDepth: 0
    functionLinenumber: 31
    functionLinenumberEnd: 33
    functionName: TikvDeleter::new
    functionSourceFile: /src/opendal/core/services/tikv/src/deleter.rs
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(core: Arc<TikvCore>, root: String) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/tikv/src/deleter.rs:38,1
    - Dst: delete
      Src: /src/opendal/core/services/tikv/src/deleter.rs:39,1
    - Dst: Ok
      Src: /src/opendal/core/services/tikv/src/deleter.rs:40,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 2
    argNames:
    - path
    argTypes:
    - String
    - OpDelete
    constantsTouched: []
    func_position:
      end: 41
      start: 37
    functionDepth: 32
    functionLinenumber: 37
    functionLinenumberEnd: 41
    functionName: TikvDeleter::delete_once
    functionSourceFile: /src/opendal/core/services/tikv/src/deleter.rs
    functionUses: 0
    functionsReached:
    - Ok
    - build_abs_path
    - delete
    linkageType: ''
    returnType: Result
    signature: 'async fn delete_once(&self, path: String, _: OpDelete) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: to_string
      Src: /src/opendal/core/services/tikv/src/reader.rs:33,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - backend
    - path
    argTypes:
    - TikvBackend
    - '&str'
    - OpRead
    constantsTouched: []
    func_position:
      end: 35
      start: 30
    functionDepth: 2
    functionLinenumber: 30
    functionLinenumberEnd: 35
    functionName: TikvReader::new
    functionSourceFile: /src/opendal/core/services/tikv/src/reader.rs
    functionUses: 1
    functionsReached:
    - to_string
    linkageType: ''
    returnType: Self
    signature: 'pub(super) fn new(backend: TikvBackend, path: &str, _: OpRead) ->
      Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: as_str
      Src: /src/opendal/core/services/tikv/src/reader.rs:41,1
    - Dst: build_abs_path
      Src: /src/opendal/core/services/tikv/src/reader.rs:42,1
    - Dst: get
      Src: /src/opendal/core/services/tikv/src/reader.rs:43,1
    - Dst: Err
      Src: /src/opendal/core/services/tikv/src/reader.rs:45,1
    - Dst: Error::new
      Src: /src/opendal/core/services/tikv/src/reader.rs:45,1
    - Dst: Result::slice
      Src: /src/opendal/core/services/tikv/src/reader.rs:47,1
    - Dst: (Vec::to_content_range
      Src: /src/opendal/core/services/tikv/src/reader.rs:47,1
    - Dst: Result::len
      Src: /src/opendal/core/services/tikv/src/reader.rs:47,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/tikv/src/reader.rs:48,1
    - Dst: Self::with_content_length
      Src: /src/opendal/core/services/tikv/src/reader.rs:48,1
    - Dst: Result::len
      Src: /src/opendal/core/services/tikv/src/reader.rs:48,1
    - Dst: Ok
      Src: /src/opendal/core/services/tikv/src/reader.rs:49,1
    - Dst: RpRead::new
      Src: /src/opendal/core/services/tikv/src/reader.rs:50,1
    - Dst: Box::new
      Src: /src/opendal/core/services/tikv/src/reader.rs:51,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 36
    argCount: 1
    argNames:
    - range
    argTypes:
    - BytesRange
    constantsTouched: []
    func_position:
      end: 53
      start: 39
    functionDepth: 36
    functionLinenumber: 39
    functionLinenumberEnd: 53
    functionName: TikvReader::open
    functionSourceFile: /src/opendal/core/services/tikv/src/reader.rs
    functionUses: 0
    functionsReached:
    - Metadata::new
    - get
    - Ok
    - Box::new
    - Self::with_content_length
    - build_abs_path
    - Error::new
    - Err
    - as_str
    - Result::slice
    - (Vec::to_content_range
    - Result::len
    - RpRead::new
    linkageType: ''
    returnType: Result
    signature: 'async fn open(&self, range: BytesRange) -> Result<(RpRead, Box<dyn
      oio::ReadStreamDyn>)>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::debug_struct
      Src: /src/opendal/core/services/tikv/src/core.rs:40,1
    - Dst: field
      Src: /src/opendal/core/services/tikv/src/core.rs:40,1
    - Dst: field
      Src: /src/opendal/core/services/tikv/src/core.rs:40,1
    - Dst: finish
      Src: /src/opendal/core/services/tikv/src/core.rs:40,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 1
    argNames:
    - f
    argTypes:
    - '&mut std::fmt::Formatter<''_>'
    constantsTouched: []
    func_position:
      end: 44
      start: 39
    functionDepth: 5
    functionLinenumber: 39
    functionLinenumberEnd: 44
    functionName: TikvCore::fmt
    functionSourceFile: /src/opendal/core/services/tikv/src/core.rs
    functionUses: 0
    functionsReached:
    - field
    - finish
    - Result::debug_struct
    linkageType: ''
    returnType: std::fmt::Result
    signature: 'fn fmt(&self, f: &mut std::fmt::Formatter<''_>) -> std::fmt::Result'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: get_or_try_init
      Src: /src/opendal/core/services/tikv/src/core.rs:49,1
    - Dst: RawClient::new
      Src: /src/opendal/core/services/tikv/src/core.rs:52,1
    - Dst: clone
      Src: /src/opendal/core/services/tikv/src/core.rs:52,1
    - Dst: map_err
      Src: /src/opendal/core/services/tikv/src/core.rs:52,1
    - Dst: as_ref
      Src: /src/opendal/core/services/tikv/src/core.rs:57,1
    - Dst: as_ref
      Src: /src/opendal/core/services/tikv/src/core.rs:58,1
    - Dst: as_ref
      Src: /src/opendal/core/services/tikv/src/core.rs:59,1
    - Dst: Config::default
      Src: /src/opendal/core/services/tikv/src/core.rs:61,1
    - Dst: Self::with_security
      Src: /src/opendal/core/services/tikv/src/core.rs:61,1
    - Dst: RawClient::new_with_config
      Src: /src/opendal/core/services/tikv/src/core.rs:62,1
    - Dst: clone
      Src: /src/opendal/core/services/tikv/src/core.rs:62,1
    - Dst: map_err
      Src: /src/opendal/core/services/tikv/src/core.rs:62,1
    - Dst: Err
      Src: /src/opendal/core/services/tikv/src/core.rs:67,1
    - Dst: Error::new
      Src: /src/opendal/core/services/tikv/src/core.rs:68,1
    - Dst: Self::with_context
      Src: /src/opendal/core/services/tikv/src/core.rs:68,1
    - Dst: Self::with_context
      Src: /src/opendal/core/services/tikv/src/core.rs:68,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 46
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 74
      start: 48
    functionDepth: 36
    functionLinenumber: 48
    functionLinenumberEnd: 74
    functionName: TikvCore::get_connection
    functionSourceFile: /src/opendal/core/services/tikv/src/core.rs
    functionUses: 3
    functionsReached:
    - map_err
    - get_or_try_init
    - Self::with_context
    - clone
    - Config::default
    - Self::with_security
    - Err
    - Error::new
    - as_ref
    - RawClient::new_with_config
    - RawClient::new
    linkageType: ''
    returnType: Result
    signature: async fn get_connection(&self) -> Result<&RawClient>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: TikvCore::get_connection
      Src: /src/opendal/core/services/tikv/src/core.rs:77,1
    - Dst: get
      Src: /src/opendal/core/services/tikv/src/core.rs:77,1
    - Dst: to_owned
      Src: /src/opendal/core/services/tikv/src/core.rs:80,1
    - Dst: map_err
      Src: /src/opendal/core/services/tikv/src/core.rs:77,1
    - Dst: Ok
      Src: /src/opendal/core/services/tikv/src/core.rs:83,1
    - Dst: bool::map
      Src: /src/opendal/core/services/tikv/src/core.rs:83,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 1
    argNames:
    - path
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 84
      start: 76
    functionDepth: 37
    functionLinenumber: 76
    functionLinenumberEnd: 84
    functionName: TikvCore::get
    functionSourceFile: /src/opendal/core/services/tikv/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - get
    - Ok
    - TikvCore::get_connection
    - bool::map
    - to_owned
    linkageType: ''
    returnType: Result
    signature: 'pub async fn get(&self, path: &str) -> Result<Option<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: TikvCore::get_connection
      Src: /src/opendal/core/services/tikv/src/core.rs:87,1
    - Dst: put
      Src: /src/opendal/core/services/tikv/src/core.rs:87,1
    - Dst: to_owned
      Src: /src/opendal/core/services/tikv/src/core.rs:89,1
    - Dst: Vec::to_vec
      Src: /src/opendal/core/services/tikv/src/core.rs:89,1
    - Dst: map_err
      Src: /src/opendal/core/services/tikv/src/core.rs:87,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 2
    argNames:
    - path
    - value
    argTypes:
    - '&str'
    - Buffer
    constantsTouched: []
    func_position:
      end: 92
      start: 86
    functionDepth: 37
    functionLinenumber: 86
    functionLinenumberEnd: 92
    functionName: TikvCore::set
    functionSourceFile: /src/opendal/core/services/tikv/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - TikvCore::get_connection
    - Vec::to_vec
    - put
    - to_owned
    linkageType: ''
    returnType: Result
    signature: 'pub async fn set(&self, path: &str, value: Buffer) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: TikvCore::get_connection
      Src: /src/opendal/core/services/tikv/src/core.rs:95,1
    - Dst: delete
      Src: /src/opendal/core/services/tikv/src/core.rs:95,1
    - Dst: to_owned
      Src: /src/opendal/core/services/tikv/src/core.rs:97,1
    - Dst: map_err
      Src: /src/opendal/core/services/tikv/src/core.rs:95,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 1
    argNames:
    - path
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 100
      start: 94
    functionDepth: 37
    functionLinenumber: 94
    functionLinenumberEnd: 100
    functionName: TikvCore::delete
    functionSourceFile: /src/opendal/core/services/tikv/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - TikvCore::get_connection
    - to_owned
    - delete
    linkageType: ''
    returnType: Result
    signature: 'pub async fn delete(&self, path: &str) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Error::new
      Src: /src/opendal/core/services/tikv/src/core.rs:104,1
    - Dst: Self::set_source
      Src: /src/opendal/core/services/tikv/src/core.rs:104,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - e
    argTypes:
    - tikv_client::Error
    constantsTouched: []
    func_position:
      end: 105
      start: 103
    functionDepth: 36
    functionLinenumber: 103
    functionLinenumberEnd: 105
    functionName: parse_tikv_error
    functionSourceFile: /src/opendal/core/services/tikv/src/core.rs
    functionUses: 0
    functionsReached:
    - Self::set_source
    - Error::new
    linkageType: ''
    returnType: Error
    signature: 'fn parse_tikv_error(e: tikv_client::Error) -> Error'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Error::new
      Src: /src/opendal/core/services/tikv/src/core.rs:108,1
    - Dst: Self::with_context
      Src: /src/opendal/core/services/tikv/src/core.rs:108,1
    - Dst: Self::set_source
      Src: /src/opendal/core/services/tikv/src/core.rs:108,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - e
    argTypes:
    - tikv_client::Error
    constantsTouched: []
    func_position:
      end: 111
      start: 107
    functionDepth: 36
    functionLinenumber: 107
    functionLinenumberEnd: 111
    functionName: parse_tikv_config_error
    functionSourceFile: /src/opendal/core/services/tikv/src/core.rs
    functionUses: 0
    functionsReached:
    - Self::set_source
    - Self::with_context
    - Error::new
    linkageType: ''
    returnType: Error
    signature: 'fn parse_tikv_config_error(e: tikv_client::Error) -> Error'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: oio::QueueBuf::new
      Src: /src/opendal/core/services/tikv/src/writer.rs:35,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - core
    - path
    argTypes:
    - Arc<TikvCore>
    - String
    constantsTouched: []
    func_position:
      end: 37
      start: 31
    functionDepth: 4
    functionLinenumber: 31
    functionLinenumberEnd: 37
    functionName: TikvWriter::new
    functionSourceFile: /src/opendal/core/services/tikv/src/writer.rs
    functionUses: 1
    functionsReached:
    - oio::QueueBuf::new
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(core: Arc<TikvCore>, path: String) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: push
      Src: /src/opendal/core/services/tikv/src/writer.rs:42,1
    - Dst: Ok
      Src: /src/opendal/core/services/tikv/src/writer.rs:43,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - bs
    argTypes:
    - Buffer
    constantsTouched: []
    func_position:
      end: 44
      start: 41
    functionDepth: 5
    functionLinenumber: 41
    functionLinenumberEnd: 44
    functionName: TikvWriter::write
    functionSourceFile: /src/opendal/core/services/tikv/src/writer.rs
    functionUses: 0
    functionsReached:
    - Ok
    - push
    linkageType: ''
    returnType: Result
    signature: 'async fn write(&mut self, bs: Buffer) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: clone
      Src: /src/opendal/core/services/tikv/src/writer.rs:47,1
    - Dst: collect
      Src: /src/opendal/core/services/tikv/src/writer.rs:47,1
    - Dst: io::Result::len
      Src: /src/opendal/core/services/tikv/src/writer.rs:48,1
    - Dst: set
      Src: /src/opendal/core/services/tikv/src/writer.rs:49,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/tikv/src/writer.rs:51,1
    - Dst: EntryMode::from_path
      Src: /src/opendal/core/services/tikv/src/writer.rs:51,1
    - Dst: Self::with_content_length
      Src: /src/opendal/core/services/tikv/src/writer.rs:51,1
    - Dst: Ok
      Src: /src/opendal/core/services/tikv/src/writer.rs:52,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 23
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 53
      start: 46
    functionDepth: 36
    functionLinenumber: 46
    functionLinenumberEnd: 53
    functionName: TikvWriter::close
    functionSourceFile: /src/opendal/core/services/tikv/src/writer.rs
    functionUses: 0
    functionsReached:
    - collect
    - Metadata::new
    - Ok
    - io::Result::len
    - set
    - Self::with_content_length
    - clone
    - EntryMode::from_path
    linkageType: ''
    returnType: Result
    signature: async fn close(&mut self) -> Result<Metadata>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: clear
      Src: /src/opendal/core/services/tikv/src/writer.rs:56,1
    - Dst: Ok
      Src: /src/opendal/core/services/tikv/src/writer.rs:57,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 58
      start: 55
    functionDepth: 2
    functionLinenumber: 55
    functionLinenumberEnd: 58
    functionName: TikvWriter::abort
    functionSourceFile: /src/opendal/core/services/tikv/src/writer.rs
    functionUses: 0
    functionsReached:
    - clear
    - Ok
    linkageType: ''
    returnType: Result
    signature: async fn abort(&mut self) -> Result<()>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: register::<Tikv>
      Src: /src/opendal/core/services/tikv/src/lib.rs:23,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - registry
    argTypes:
    - '&opendal_core::OperatorRegistry'
    constantsTouched: []
    func_position:
      end: 24
      start: 22
    functionDepth: 0
    functionLinenumber: 22
    functionLinenumberEnd: 24
    functionName: register_tikv_service
    functionSourceFile: /src/opendal/core/services/tikv/src/lib.rs
    functionUses: 1
    functionsReached:
    - register::<Tikv>
    linkageType: ''
    returnType: void
    signature: 'pub fn register_tikv_service(registry: &opendal_core::OperatorRegistry)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self::is_empty
      Src: /src/opendal/core/services/tikv/src/backend.rs:43,1
    - Dst: Some
      Src: /src/opendal/core/services/tikv/src/backend.rs:44,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - endpoints
    argTypes:
    - Vec<String>
    constantsTouched: []
    func_position:
      end: 47
      start: 42
    functionDepth: 4
    functionLinenumber: 42
    functionLinenumberEnd: 47
    functionName: TikvBuilder::endpoints
    functionSourceFile: /src/opendal/core/services/tikv/src/backend.rs
    functionUses: 0
    functionsReached:
    - Self::is_empty
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn endpoints(mut self, endpoints: Vec<String>) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 53
      start: 50
    functionDepth: 0
    functionLinenumber: 50
    functionLinenumberEnd: 53
    functionName: TikvBuilder::insecure
    functionSourceFile: /src/opendal/core/services/tikv/src/backend.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: pub fn insecure(mut self) -> Self
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self::is_empty
      Src: /src/opendal/core/services/tikv/src/backend.rs:57,1
    - Dst: Some
      Src: /src/opendal/core/services/tikv/src/backend.rs:58,1
    - Dst: Self::to_string
      Src: /src/opendal/core/services/tikv/src/backend.rs:58,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 1
    argNames:
    - ca_path
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 61
      start: 56
    functionDepth: 4
    functionLinenumber: 56
    functionLinenumberEnd: 61
    functionName: TikvBuilder::ca_path
    functionSourceFile: /src/opendal/core/services/tikv/src/backend.rs
    functionUses: 0
    functionsReached:
    - Self::is_empty
    - Self::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn ca_path(mut self, ca_path: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self::is_empty
      Src: /src/opendal/core/services/tikv/src/backend.rs:65,1
    - Dst: Some
      Src: /src/opendal/core/services/tikv/src/backend.rs:66,1
    - Dst: Self::to_string
      Src: /src/opendal/core/services/tikv/src/backend.rs:66,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 1
    argNames:
    - cert_path
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 69
      start: 64
    functionDepth: 4
    functionLinenumber: 64
    functionLinenumberEnd: 69
    functionName: TikvBuilder::cert_path
    functionSourceFile: /src/opendal/core/services/tikv/src/backend.rs
    functionUses: 0
    functionsReached:
    - Self::is_empty
    - Self::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn cert_path(mut self, cert_path: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self::is_empty
      Src: /src/opendal/core/services/tikv/src/backend.rs:73,1
    - Dst: Some
      Src: /src/opendal/core/services/tikv/src/backend.rs:74,1
    - Dst: Self::to_string
      Src: /src/opendal/core/services/tikv/src/backend.rs:74,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 1
    argNames:
    - key_path
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 77
      start: 72
    functionDepth: 4
    functionLinenumber: 72
    functionLinenumberEnd: 77
    functionName: TikvBuilder::key_path
    functionSourceFile: /src/opendal/core/services/tikv/src/backend.rs
    functionUses: 0
    functionsReached:
    - Self::is_empty
    - Self::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn key_path(mut self, key_path: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: ok_or_else
      Src: /src/opendal/core/services/tikv/src/backend.rs:84,1
    - Dst: Error::new
      Src: /src/opendal/core/services/tikv/src/backend.rs:85,1
    - Dst: Self::with_context
      Src: /src/opendal/core/services/tikv/src/backend.rs:85,1
    - Dst: is_some
      Src: /src/opendal/core/services/tikv/src/backend.rs:93,1
    - Dst: is_some
      Src: /src/opendal/core/services/tikv/src/backend.rs:94,1
    - Dst: is_some
      Src: /src/opendal/core/services/tikv/src/backend.rs:95,1
    - Dst: Err
      Src: /src/opendal/core/services/tikv/src/backend.rs:97,1
    - Dst: Error::new
      Src: /src/opendal/core/services/tikv/src/backend.rs:98,1
    - Dst: Self::with_context
      Src: /src/opendal/core/services/tikv/src/backend.rs:98,1
    - Dst: Self::with_context
      Src: /src/opendal/core/services/tikv/src/backend.rs:98,1
    - Dst: Ok
      Src: /src/opendal/core/services/tikv/src/backend.rs:104,1
    - Dst: TikvBackend::new
      Src: /src/opendal/core/services/tikv/src/backend.rs:104,1
    - Dst: OnceCell::new
      Src: /src/opendal/core/services/tikv/src/backend.rs:105,1
    - Dst: clone
      Src: /src/opendal/core/services/tikv/src/backend.rs:108,1
    - Dst: clone
      Src: /src/opendal/core/services/tikv/src/backend.rs:109,1
    - Dst: clone
      Src: /src/opendal/core/services/tikv/src/backend.rs:110,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 55
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 112
      start: 83
    functionDepth: 36
    functionLinenumber: 83
    functionLinenumberEnd: 112
    functionName: TikvBuilder::build
    functionSourceFile: /src/opendal/core/services/tikv/src/backend.rs
    functionUses: 0
    functionsReached:
    - Ok
    - clone
    - Err
    - Error::new
    - TikvBackend::new
    - is_some
    - OnceCell::new
    - Self::with_context
    - ok_or_else
    linkageType: ''
    returnType: Result
    signature: fn build(self) -> Result<impl Service>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: ServiceInfo::new
      Src: /src/opendal/core/services/tikv/src/backend.rs:126,1
    - Dst: Default::default
      Src: /src/opendal/core/services/tikv/src/backend.rs:134,1
    - Dst: Arc::new
      Src: /src/opendal/core/services/tikv/src/backend.rs:138,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/tikv/src/backend.rs:139,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - core
    argTypes:
    - TikvCore
    constantsTouched: []
    func_position:
      end: 143
      start: 125
    functionDepth: 33
    functionLinenumber: 125
    functionLinenumberEnd: 143
    functionName: TikvBackend::new
    functionSourceFile: /src/opendal/core/services/tikv/src/backend.rs
    functionUses: 1
    functionsReached:
    - Arc::new
    - ServiceInfo::new
    - '&str::to_string'
    - Default::default
    linkageType: ''
    returnType: Self
    signature: 'fn new(core: TikvCore) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: clone
      Src: /src/opendal/core/services/tikv/src/backend.rs:154,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 155
      start: 153
    functionDepth: 2
    functionLinenumber: 153
    functionLinenumberEnd: 155
    functionName: TikvBackend::info
    functionSourceFile: /src/opendal/core/services/tikv/src/backend.rs
    functionUses: 0
    functionsReached:
    - clone
    linkageType: ''
    returnType: ServiceInfo
    signature: fn info(&self) -> ServiceInfo
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 159
      start: 157
    functionDepth: 0
    functionLinenumber: 157
    functionLinenumberEnd: 159
    functionName: TikvBackend::capability
    functionSourceFile: /src/opendal/core/services/tikv/src/backend.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Capability
    signature: fn capability(&self) -> Capability
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/core/services/tikv/src/backend.rs:167,1
    - Dst: Error::new
      Src: /src/opendal/core/services/tikv/src/backend.rs:167,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - _ctx
    - _path
    - _args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpCreateDir
    constantsTouched: []
    func_position:
      end: 171
      start: 161
    functionDepth: 36
    functionLinenumber: 161
    functionLinenumberEnd: 171
    functionName: TikvBackend::create_dir
    functionSourceFile: /src/opendal/core/services/tikv/src/backend.rs
    functionUses: 0
    functionsReached:
    - Error::new
    - Err
    linkageType: ''
    returnType: Result
    signature: 'async fn create_dir(&self,_ctx: &OperationContext,_path: &str,_args:
      OpCreateDir,) -> Result<RpCreateDir>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/tikv/src/backend.rs:174,1
    - Dst: build_abs_path
      Src: /src/opendal/core/services/tikv/src/backend.rs:176,1
    - Dst: Ok
      Src: /src/opendal/core/services/tikv/src/backend.rs:177,1
    - Dst: RpStat::new
      Src: /src/opendal/core/services/tikv/src/backend.rs:177,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/tikv/src/backend.rs:177,1
    - Dst: get
      Src: /src/opendal/core/services/tikv/src/backend.rs:179,1
    - Dst: Ok
      Src: /src/opendal/core/services/tikv/src/backend.rs:181,1
    - Dst: RpStat::new
      Src: /src/opendal/core/services/tikv/src/backend.rs:181,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/tikv/src/backend.rs:182,1
    - Dst: Self::with_content_length
      Src: /src/opendal/core/services/tikv/src/backend.rs:182,1
    - Dst: Result::len
      Src: /src/opendal/core/services/tikv/src/backend.rs:182,1
    - Dst: Err
      Src: /src/opendal/core/services/tikv/src/backend.rs:184,1
    - Dst: Error::new
      Src: /src/opendal/core/services/tikv/src/backend.rs:184,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 30
    argCount: 3
    argNames:
    - _ctx
    - path
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpStat
    constantsTouched: []
    func_position:
      end: 187
      start: 173
    functionDepth: 36
    functionLinenumber: 173
    functionLinenumberEnd: 187
    functionName: TikvBackend::stat
    functionSourceFile: /src/opendal/core/services/tikv/src/backend.rs
    functionUses: 0
    functionsReached:
    - Metadata::new
    - get
    - Ok
    - Self::with_content_length
    - RpStat::new
    - build_abs_path
    - Err
    - Error::new
    - Result::len
    linkageType: ''
    returnType: Result
    signature: 'async fn stat(&self, _ctx: &OperationContext, path: &str, _: OpStat)
      -> Result<RpStat>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/core/services/tikv/src/backend.rs:190,1
    - Dst: oio::StreamReader::new
      Src: /src/opendal/core/services/tikv/src/backend.rs:190,1
    - Dst: TikvReader::new
      Src: /src/opendal/core/services/tikv/src/backend.rs:190,1
    - Dst: TikvBackend::clone
      Src: /src/opendal/core/services/tikv/src/backend.rs:191,1
    - Dst: Ok
      Src: /src/opendal/core/services/tikv/src/backend.rs:197,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - _ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpRead
    constantsTouched: []
    func_position:
      end: 198
      start: 188
    functionDepth: 3
    functionLinenumber: 188
    functionLinenumberEnd: 198
    functionName: TikvBackend::read
    functionSourceFile: /src/opendal/core/services/tikv/src/backend.rs
    functionUses: 0
    functionsReached:
    - oio::StreamReader::new
    - TikvReader::new
    - Ok
    - TikvBackend::clone
    linkageType: ''
    returnType: Result
    signature: 'fn read(&self, _ctx: &OperationContext, path: &str, args: OpRead)
      -> Result<Self::Reader>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/tikv/src/backend.rs:202,1
    - Dst: Ok
      Src: /src/opendal/core/services/tikv/src/backend.rs:203,1
    - Dst: TikvWriter::new
      Src: /src/opendal/core/services/tikv/src/backend.rs:203,1
    - Dst: clone
      Src: /src/opendal/core/services/tikv/src/backend.rs:203,1
    - Dst: Ok
      Src: /src/opendal/core/services/tikv/src/backend.rs:206,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 3
    argNames:
    - _ctx
    - path
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpWrite
    constantsTouched: []
    func_position:
      end: 207
      start: 200
    functionDepth: 5
    functionLinenumber: 200
    functionLinenumberEnd: 207
    functionName: TikvBackend::write
    functionSourceFile: /src/opendal/core/services/tikv/src/backend.rs
    functionUses: 0
    functionsReached:
    - TikvWriter::new
    - Ok
    - clone
    - build_abs_path
    linkageType: ''
    returnType: Result
    signature: 'fn write(&self, _ctx: &OperationContext, path: &str, _: OpWrite) ->
      Result<Self::Writer>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/core/services/tikv/src/backend.rs:211,1
    - Dst: oio::OneShotDeleter::new
      Src: /src/opendal/core/services/tikv/src/backend.rs:211,1
    - Dst: TikvDeleter::new
      Src: /src/opendal/core/services/tikv/src/backend.rs:211,1
    - Dst: clone
      Src: /src/opendal/core/services/tikv/src/backend.rs:212,1
    - Dst: clone
      Src: /src/opendal/core/services/tikv/src/backend.rs:213,1
    - Dst: Ok
      Src: /src/opendal/core/services/tikv/src/backend.rs:217,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 1
    argNames:
    - _ctx
    argTypes:
    - '&OperationContext'
    constantsTouched: []
    func_position:
      end: 218
      start: 209
    functionDepth: 2
    functionLinenumber: 209
    functionLinenumberEnd: 218
    functionName: TikvBackend::delete
    functionSourceFile: /src/opendal/core/services/tikv/src/backend.rs
    functionUses: 0
    functionsReached:
    - oio::OneShotDeleter::new
    - TikvDeleter::new
    - clone
    - Ok
    linkageType: ''
    returnType: Result
    signature: 'fn delete(&self, _ctx: &OperationContext) -> Result<Self::Deleter>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/core/services/tikv/src/backend.rs:221,1
    - Dst: Error::new
      Src: /src/opendal/core/services/tikv/src/backend.rs:221,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - _ctx
    - _path
    - _args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpList
    constantsTouched: []
    func_position:
      end: 225
      start: 220
    functionDepth: 36
    functionLinenumber: 220
    functionLinenumberEnd: 225
    functionName: TikvBackend::list
    functionSourceFile: /src/opendal/core/services/tikv/src/backend.rs
    functionUses: 0
    functionsReached:
    - Error::new
    - Err
    linkageType: ''
    returnType: Result
    signature: 'fn list(&self, _ctx: &OperationContext, _path: &str, _args: OpList)
      -> Result<Self::Lister>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/core/services/tikv/src/backend.rs:235,1
    - Dst: Error::new
      Src: /src/opendal/core/services/tikv/src/backend.rs:235,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 5
    argNames:
    - _ctx
    - _from
    - _to
    - _args
    - _opts
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    - OpCopy
    - OpCopier
    constantsTouched: []
    func_position:
      end: 239
      start: 227
    functionDepth: 36
    functionLinenumber: 227
    functionLinenumberEnd: 239
    functionName: TikvBackend::copy
    functionSourceFile: /src/opendal/core/services/tikv/src/backend.rs
    functionUses: 0
    functionsReached:
    - Error::new
    - Err
    linkageType: ''
    returnType: Result
    signature: 'fn copy(&self,_ctx: &OperationContext,_from: &str,_to: &str,_args:
      OpCopy,_opts: OpCopier,) -> Result<Self::Copier>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/core/services/tikv/src/backend.rs:248,1
    - Dst: Error::new
      Src: /src/opendal/core/services/tikv/src/backend.rs:248,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - _ctx
    - _from
    - _to
    - _args
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    - OpRename
    constantsTouched: []
    func_position:
      end: 252
      start: 241
    functionDepth: 36
    functionLinenumber: 241
    functionLinenumberEnd: 252
    functionName: TikvBackend::rename
    functionSourceFile: /src/opendal/core/services/tikv/src/backend.rs
    functionUses: 0
    functionsReached:
    - Error::new
    - Err
    linkageType: ''
    returnType: Result
    signature: 'async fn rename(&self,_ctx: &OperationContext,_from: &str,_to: &str,_args:
      OpRename,) -> Result<RpRename>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/core/services/tikv/src/backend.rs:260,1
    - Dst: Error::new
      Src: /src/opendal/core/services/tikv/src/backend.rs:260,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - _ctx
    - _path
    - _args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpPresign
    constantsTouched: []
    func_position:
      end: 264
      start: 254
    functionDepth: 36
    functionLinenumber: 254
    functionLinenumberEnd: 264
    functionName: TikvBackend::presign
    functionSourceFile: /src/opendal/core/services/tikv/src/backend.rs
    functionUses: 0
    functionsReached:
    - Error::new
    - Err
    linkageType: ''
    returnType: Result
    signature: 'async fn presign(&self,_ctx: &OperationContext,_path: &str,_args:
      OpPresign,) -> Result<RpPresign>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::debug_struct
      Src: /src/opendal/core/services/swift/src/config.rs:55,1
    - Dst: field
      Src: /src/opendal/core/services/swift/src/config.rs:55,1
    - Dst: field
      Src: /src/opendal/core/services/swift/src/config.rs:55,1
    - Dst: field
      Src: /src/opendal/core/services/swift/src/config.rs:55,1
    - Dst: finish_non_exhaustive
      Src: /src/opendal/core/services/swift/src/config.rs:55,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 16
    argCount: 1
    argNames:
    - f
    argTypes:
    - '&mut std::fmt::Formatter<''_>'
    constantsTouched: []
    func_position:
      end: 60
      start: 54
    functionDepth: 5
    functionLinenumber: 54
    functionLinenumberEnd: 60
    functionName: SwiftConfig::fmt
    functionSourceFile: /src/opendal/core/services/swift/src/config.rs
    functionUses: 0
    functionsReached:
    - field
    - Result::debug_struct
    - finish_non_exhaustive
    linkageType: ''
    returnType: std::fmt::Result
    signature: 'fn fmt(&self, f: &mut std::fmt::Formatter<''_>) -> std::fmt::Result'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::options
      Src: /src/opendal/core/services/swift/src/config.rs:67,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/swift/src/config.rs:67,1
    - Dst: Result::authority
      Src: /src/opendal/core/services/swift/src/config.rs:69,1
    - Dst: Result::entry
      Src: /src/opendal/core/services/swift/src/config.rs:70,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/swift/src/config.rs:70,1
    - Dst: crate::Entry::or_insert_with
      Src: /src/opendal/core/services/swift/src/config.rs:70,1
    - Dst: Result::contains_key
      Src: /src/opendal/core/services/swift/src/config.rs:72,1
    - Dst: Err
      Src: /src/opendal/core/services/swift/src/config.rs:73,1
    - Dst: opendal_core::Error::new
      Src: /src/opendal/core/services/swift/src/config.rs:73,1
    - Dst: Self::with_context
      Src: /src/opendal/core/services/swift/src/config.rs:73,1
    - Dst: Result::root
      Src: /src/opendal/core/services/swift/src/config.rs:80,1
    - Dst: split_once
      Src: /src/opendal/core/services/swift/src/config.rs:81,1
    - Dst: is_empty
      Src: /src/opendal/core/services/swift/src/config.rs:82,1
    - Dst: Result::insert
      Src: /src/opendal/core/services/swift/src/config.rs:83,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/swift/src/config.rs:83,1
    - Dst: to_string
      Src: /src/opendal/core/services/swift/src/config.rs:83,1
    - Dst: is_empty
      Src: /src/opendal/core/services/swift/src/config.rs:85,1
    - Dst: Result::insert
      Src: /src/opendal/core/services/swift/src/config.rs:86,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/swift/src/config.rs:86,1
    - Dst: to_string
      Src: /src/opendal/core/services/swift/src/config.rs:86,1
    - Dst: is_empty
      Src: /src/opendal/core/services/swift/src/config.rs:88,1
    - Dst: Result::insert
      Src: /src/opendal/core/services/swift/src/config.rs:89,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/swift/src/config.rs:89,1
    - Dst: to_string
      Src: /src/opendal/core/services/swift/src/config.rs:89,1
    - Dst: Result::contains_key
      Src: /src/opendal/core/services/swift/src/config.rs:93,1
    - Dst: Err
      Src: /src/opendal/core/services/swift/src/config.rs:94,1
    - Dst: opendal_core::Error::new
      Src: /src/opendal/core/services/swift/src/config.rs:94,1
    - Dst: Self::with_context
      Src: /src/opendal/core/services/swift/src/config.rs:94,1
    - Dst: Self::from_iter
      Src: /src/opendal/core/services/swift/src/config.rs:101,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 81
    argCount: 1
    argNames:
    - uri
    argTypes:
    - '&opendal_core::OperatorUri'
    constantsTouched: []
    func_position:
      end: 102
      start: 66
    functionDepth: 35
    functionLinenumber: 66
    functionLinenumberEnd: 102
    functionName: SwiftConfig::from_uri
    functionSourceFile: /src/opendal/core/services/swift/src/config.rs
    functionUses: 2
    functionsReached:
    - Result::clone
    - to_string
    - Self::from_iter
    - split_once
    - Result::entry
    - crate::Entry::or_insert_with
    - Result::insert
    - Err
    - is_empty
    - '&str::to_string'
    - Result::contains_key
    - Result::root
    - Result::authority
    - opendal_core::Error::new
    - Self::with_context
    - Result::options
    linkageType: ''
    returnType: opendal_core::Result
    signature: 'fn from_uri(uri: &opendal_core::OperatorUri) -> opendal_core::Result<Self>'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 106
      start: 104
    functionDepth: 0
    functionLinenumber: 104
    functionLinenumberEnd: 106
    functionName: SwiftConfig::into_builder
    functionSourceFile: /src/opendal/core/services/swift/src/config.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Self::Builder
    signature: fn into_builder(self) -> Self::Builder
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: OperatorUri::new
      Src: /src/opendal/core/services/swift/src/config.rs:117,1
    - Dst: Vec::<(String, String)>::new
      Src: /src/opendal/core/services/swift/src/config.rs:119,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/services/swift/src/config.rs:117,1
    - Dst: SwiftConfig::from_uri
      Src: /src/opendal/core/services/swift/src/config.rs:123,1
    - Dst: opendal_core::Result::unwrap
      Src: /src/opendal/core/services/swift/src/config.rs:123,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 127
      start: 116
    functionDepth: 29
    functionLinenumber: 116
    functionLinenumberEnd: 127
    functionName: tests::from_uri_sets_endpoint_container_and_root
    functionSourceFile: /src/opendal/core/services/swift/src/config.rs
    functionUses: 0
    functionsReached:
    - Vec::<(String, String)>::new
    - OperatorUri::new
    - SwiftConfig::from_uri
    - Result::unwrap
    - opendal_core::Result::unwrap
    linkageType: ''
    returnType: void
    signature: fn from_uri_sets_endpoint_container_and_root()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: OperatorUri::new
      Src: /src/opendal/core/services/swift/src/config.rs:131,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/services/swift/src/config.rs:131,1
    - Dst: SwiftConfig::from_uri
      Src: /src/opendal/core/services/swift/src/config.rs:137,1
    - Dst: opendal_core::Result::unwrap
      Src: /src/opendal/core/services/swift/src/config.rs:137,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 140
      start: 130
    functionDepth: 29
    functionLinenumber: 130
    functionLinenumberEnd: 140
    functionName: tests::from_uri_accepts_container_from_query
    functionSourceFile: /src/opendal/core/services/swift/src/config.rs
    functionUses: 0
    functionsReached:
    - OperatorUri::new
    - SwiftConfig::from_uri
    - Result::unwrap
    - opendal_core::Result::unwrap
    linkageType: ''
    returnType: void
    signature: fn from_uri_accepts_container_from_query()
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - core
    - ctx
    argTypes:
    - Arc<SwiftCore>
    - OperationContext
    constantsTouched: []
    func_position:
      end: 35
      start: 33
    functionDepth: 0
    functionLinenumber: 33
    functionLinenumberEnd: 35
    functionName: SwiftDeleter::new
    functionSourceFile: /src/opendal/core/services/swift/src/deleter.rs
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(core: Arc<SwiftCore>, ctx: OperationContext) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: swift_delete
      Src: /src/opendal/core/services/swift/src/deleter.rs:40,1
    - Dst: status
      Src: /src/opendal/core/services/swift/src/deleter.rs:42,1
    - Dst: Ok
      Src: /src/opendal/core/services/swift/src/deleter.rs:45,1
    - Dst: Ok
      Src: /src/opendal/core/services/swift/src/deleter.rs:46,1
    - Dst: Err
      Src: /src/opendal/core/services/swift/src/deleter.rs:47,1
    - Dst: super::core::parse_error
      Src: /src/opendal/core/services/swift/src/deleter.rs:47,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 18
    argCount: 2
    argNames:
    - path
    argTypes:
    - String
    - OpDelete
    constantsTouched: []
    func_position:
      end: 49
      start: 39
    functionDepth: 33
    functionLinenumber: 39
    functionLinenumberEnd: 49
    functionName: SwiftDeleter::delete_once
    functionSourceFile: /src/opendal/core/services/swift/src/deleter.rs
    functionUses: 0
    functionsReached:
    - swift_delete
    - status
    - Ok
    - Err
    - super::core::parse_error
    linkageType: ''
    returnType: Result
    signature: 'async fn delete_once(&self, path: String, _: OpDelete) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: swift_bulk_delete
      Src: /src/opendal/core/services/swift/src/deleter.rs:52,1
    - Dst: status
      Src: /src/opendal/core/services/swift/src/deleter.rs:54,1
    - Dst: Err
      Src: /src/opendal/core/services/swift/src/deleter.rs:56,1
    - Dst: super::core::parse_error
      Src: /src/opendal/core/services/swift/src/deleter.rs:56,1
    - Dst: into_body
      Src: /src/opendal/core/services/swift/src/deleter.rs:59,1
    - Dst: to_bytes
      Src: /src/opendal/core/services/swift/src/deleter.rs:59,1
    - Dst: serde_json::from_slice
      Src: /src/opendal/core/services/swift/src/deleter.rs:61,1
    - Dst: map_err
      Src: /src/opendal/core/services/swift/src/deleter.rs:61,1
    - Dst: Vec::with_capacity
      Src: /src/opendal/core/services/swift/src/deleter.rs:67,1
    - Dst: Result::len
      Src: /src/opendal/core/services/swift/src/deleter.rs:67,1
    - Dst: usize::saturating_sub
      Src: /src/opendal/core/services/swift/src/deleter.rs:67,1
    - Dst: len
      Src: /src/opendal/core/services/swift/src/deleter.rs:67,1
    - Dst: Vec::with_capacity
      Src: /src/opendal/core/services/swift/src/deleter.rs:68,1
    - Dst: len
      Src: /src/opendal/core/services/swift/src/deleter.rs:68,1
    - Dst: build_abs_path
      Src: /src/opendal/core/services/swift/src/deleter.rs:75,1
    - Dst: iter
      Src: /src/opendal/core/services/swift/src/deleter.rs:78,1
    - Dst: find
      Src: /src/opendal/core/services/swift/src/deleter.rs:78,1
    - Dst: Result::first
      Src: /src/opendal/core/services/swift/src/deleter.rs:79,1
    - Dst: map
      Src: /src/opendal/core/services/swift/src/deleter.rs:79,1
    - Dst: percent_decode_path
      Src: /src/opendal/core/services/swift/src/deleter.rs:80,1
    - Dst: unwrap_or
      Src: /src/opendal/core/services/swift/src/deleter.rs:79,1
    - Dst: get
      Src: /src/opendal/core/services/swift/src/deleter.rs:83,1
    - Dst: cloned
      Src: /src/opendal/core/services/swift/src/deleter.rs:83,1
    - Dst: unwrap_or_default
      Src: /src/opendal/core/services/swift/src/deleter.rs:83,1
    - Dst: push
      Src: /src/opendal/core/services/swift/src/deleter.rs:84,1
    - Dst: Error::new
      Src: /src/opendal/core/services/swift/src/deleter.rs:87,1
    - Dst: push
      Src: /src/opendal/core/services/swift/src/deleter.rs:94,1
    - Dst: Ok
      Src: /src/opendal/core/services/swift/src/deleter.rs:98,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 81
    argCount: 1
    argNames:
    - batch
    argTypes:
    - Vec<(String, OpDelete)>
    constantsTouched: []
    func_position:
      end: 99
      start: 51
    functionDepth: 34
    functionLinenumber: 51
    functionLinenumberEnd: 99
    functionName: SwiftDeleter::delete_batch
    functionSourceFile: /src/opendal/core/services/swift/src/deleter.rs
    functionUses: 0
    functionsReached:
    - status
    - Vec::with_capacity
    - find
    - push
    - map
    - Result::len
    - map_err
    - iter
    - get
    - Ok
    - Result::first
    - len
    - unwrap_or_default
    - unwrap_or
    - serde_json::from_slice
    - into_body
    - build_abs_path
    - percent_decode_path
    - cloned
    - to_bytes
    - swift_bulk_delete
    - super::core::parse_error
    - Err
    - usize::saturating_sub
    - Error::new
    linkageType: ''
    returnType: Result
    signature: 'async fn delete_batch(&self, batch: Vec<(String, OpDelete)>) -> Result<oio::BatchDeleteResult>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::map
      Src: /src/opendal/core/services/swift/src/lister.rs:49,1
    - Dst: build_abs_path
      Src: /src/opendal/core/services/swift/src/lister.rs:49,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 6
    argNames:
    - core
    - ctx
    - path
    - recursive
    - limit
    - start_after
    argTypes:
    - Arc<SwiftCore>
    - OperationContext
    - String
    - bool
    - Option<usize>
    - Option<String>
    constantsTouched: []
    func_position:
      end: 58
      start: 37
    functionDepth: 3
    functionLinenumber: 37
    functionLinenumberEnd: 58
    functionName: SwiftLister::new
    functionSourceFile: /src/opendal/core/services/swift/src/lister.rs
    functionUses: 1
    functionsReached:
    - Result::map
    - build_abs_path
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(core: Arc<SwiftCore>,ctx: OperationContext,path: String,recursive:
      bool,limit: Option<usize>,start_after: Option<String>,) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: is_empty
      Src: /src/opendal/core/services/swift/src/lister.rs:65,1
    - Dst: as_deref
      Src: /src/opendal/core/services/swift/src/lister.rs:66,1
    - Dst: unwrap_or
      Src: /src/opendal/core/services/swift/src/lister.rs:66,1
    - Dst: as_str
      Src: /src/opendal/core/services/swift/src/lister.rs:68,1
    - Dst: swift_list
      Src: /src/opendal/core/services/swift/src/lister.rs:70,1
    - Dst: status
      Src: /src/opendal/core/services/swift/src/lister.rs:75,1
    - Dst: Self::is_success
      Src: /src/opendal/core/services/swift/src/lister.rs:77,1
    - Dst: super::core::parse_error
      Src: /src/opendal/core/services/swift/src/lister.rs:78,1
    - Dst: Err
      Src: /src/opendal/core/services/swift/src/lister.rs:79,1
    - Dst: into_body
      Src: /src/opendal/core/services/swift/src/lister.rs:82,1
    - Dst: serde_json::from_reader
      Src: /src/opendal/core/services/swift/src/lister.rs:84,1
    - Dst: Bytes::reader
      Src: /src/opendal/core/services/swift/src/lister.rs:84,1
    - Dst: map_err
      Src: /src/opendal/core/services/swift/src/lister.rs:84,1
    - Dst: last
      Src: /src/opendal/core/services/swift/src/lister.rs:87,1
    - Dst: clone_from
      Src: /src/opendal/core/services/swift/src/lister.rs:92,1
    - Dst: build_rel_path
      Src: /src/opendal/core/services/swift/src/lister.rs:100,1
    - Dst: as_str
      Src: /src/opendal/core/services/swift/src/lister.rs:100,1
    - Dst: as_str
      Src: /src/opendal/core/services/swift/src/lister.rs:100,1
    - Dst: is_empty
      Src: /src/opendal/core/services/swift/src/lister.rs:101,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/swift/src/lister.rs:102,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/swift/src/lister.rs:104,1
    - Dst: oio::Entry::with
      Src: /src/opendal/core/services/swift/src/lister.rs:105,1
    - Dst: build_rel_path
      Src: /src/opendal/core/services/swift/src/lister.rs:114,1
    - Dst: as_str
      Src: /src/opendal/core/services/swift/src/lister.rs:114,1
    - Dst: Result::as_str
      Src: /src/opendal/core/services/swift/src/lister.rs:114,1
    - Dst: is_empty
      Src: /src/opendal/core/services/swift/src/lister.rs:115,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/swift/src/lister.rs:116,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/swift/src/lister.rs:118,1
    - Dst: EntryMode::from_path
      Src: /src/opendal/core/services/swift/src/lister.rs:118,1
    - Dst: as_str
      Src: /src/opendal/core/services/swift/src/lister.rs:118,1
    - Dst: Result::set_content_length
      Src: /src/opendal/core/services/swift/src/lister.rs:119,1
    - Dst: Result::set_content_md5
      Src: /src/opendal/core/services/swift/src/lister.rs:120,1
    - Dst: as_str
      Src: /src/opendal/core/services/swift/src/lister.rs:120,1
    - Dst: Option::ends_with
      Src: /src/opendal/core/services/swift/src/lister.rs:125,1
    - Dst: Option::push
      Src: /src/opendal/core/services/swift/src/lister.rs:126,1
    - Dst: Result::set_last_modified
      Src: /src/opendal/core/services/swift/src/lister.rs:128,1
    - Dst: parse::<Timestamp>
      Src: /src/opendal/core/services/swift/src/lister.rs:128,1
    - Dst: Result::set_content_type
      Src: /src/opendal/core/services/swift/src/lister.rs:131,1
    - Dst: Result::as_str
      Src: /src/opendal/core/services/swift/src/lister.rs:131,1
    - Dst: oio::Entry::with
      Src: /src/opendal/core/services/swift/src/lister.rs:134,1
    - Dst: push_back
      Src: /src/opendal/core/services/swift/src/lister.rs:137,1
    - Dst: Ok
      Src: /src/opendal/core/services/swift/src/lister.rs:139,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 129
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - '&mut oio::PageContext'
    constantsTouched: []
    func_position:
      end: 140
      start: 62
    functionDepth: 38
    functionLinenumber: 62
    functionLinenumberEnd: 140
    functionName: SwiftLister::next_page
    functionSourceFile: /src/opendal/core/services/swift/src/lister.rs
    functionUses: 0
    functionsReached:
    - status
    - parse::<Timestamp>
    - as_deref
    - serde_json::from_reader
    - build_rel_path
    - swift_list
    - map_err
    - Option::ends_with
    - Ok
    - as_str
    - oio::Entry::with
    - '&str::to_string'
    - Result::as_str
    - Result::set_content_md5
    - Bytes::reader
    - unwrap_or
    - Metadata::new
    - Option::push
    - clone_from
    - into_body
    - last
    - is_empty
    - Result::set_content_type
    - super::core::parse_error
    - Self::is_success
    - push_back
    - EntryMode::from_path
    - Result::set_last_modified
    - Err
    - Result::set_content_length
    linkageType: ''
    returnType: Result
    signature: 'async fn next_page(&self, ctx: &mut oio::PageContext) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: to_string
      Src: /src/opendal/core/services/swift/src/reader.rs:43,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 4
    argNames:
    - backend
    - ctx
    - path
    - args
    argTypes:
    - SwiftBackend
    - OperationContext
    - '&str'
    - OpRead
    constantsTouched: []
    func_position:
      end: 46
      start: 34
    functionDepth: 2
    functionLinenumber: 34
    functionLinenumberEnd: 46
    functionName: SwiftReader::new
    functionSourceFile: /src/opendal/core/services/swift/src/reader.rs
    functionUses: 1
    functionsReached:
    - to_string
    linkageType: ''
    returnType: Self
    signature: 'pub(super) fn new(backend: SwiftBackend,ctx: OperationContext,path:
      &str,args: OpRead,) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: as_str
      Src: /src/opendal/core/services/swift/src/reader.rs:52,1
    - Dst: clone
      Src: /src/opendal/core/services/swift/src/reader.rs:53,1
    - Dst: swift_read
      Src: /src/opendal/core/services/swift/src/reader.rs:54,1
    - Dst: status
      Src: /src/opendal/core/services/swift/src/reader.rs:59,1
    - Dst: RpRead::new
      Src: /src/opendal/core/services/swift/src/reader.rs:63,1
    - Dst: parse_into_metadata
      Src: /src/opendal/core/services/swift/src/reader.rs:63,1
    - Dst: headers
      Src: /src/opendal/core/services/swift/src/reader.rs:63,1
    - Dst: into_body
      Src: /src/opendal/core/services/swift/src/reader.rs:64,1
    - Dst: into_parts
      Src: /src/opendal/core/services/swift/src/reader.rs:67,1
    - Dst: to_buffer
      Src: /src/opendal/core/services/swift/src/reader.rs:68,1
    - Dst: Err
      Src: /src/opendal/core/services/swift/src/reader.rs:69,1
    - Dst: super::core::parse_error
      Src: /src/opendal/core/services/swift/src/reader.rs:69,1
    - Dst: Response::from_parts
      Src: /src/opendal/core/services/swift/src/reader.rs:69,1
    - Dst: Ok
      Src: /src/opendal/core/services/swift/src/reader.rs:73,1
    - Dst: Box::new
      Src: /src/opendal/core/services/swift/src/reader.rs:73,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 42
    argCount: 1
    argNames:
    - range
    argTypes:
    - BytesRange
    constantsTouched: []
    func_position:
      end: 74
      start: 50
    functionDepth: 38
    functionLinenumber: 50
    functionLinenumberEnd: 74
    functionName: SwiftReader::open
    functionSourceFile: /src/opendal/core/services/swift/src/reader.rs
    functionUses: 0
    functionsReached:
    - parse_into_metadata
    - to_buffer
    - status
    - Ok
    - Box::new
    - into_body
    - clone
    - Err
    - Response::from_parts
    - as_str
    - headers
    - into_parts
    - RpRead::new
    - super::core::parse_error
    - swift_read
    linkageType: ''
    returnType: Result
    signature: 'async fn open(&self, range: BytesRange) -> Result<(RpRead, Box<dyn
      oio::ReadStreamDyn>)>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: to_lowercase
      Src: /src/opendal/core/services/swift/src/core.rs:52,1
    - Dst: as_str
      Src: /src/opendal/core/services/swift/src/core.rs:52,1
    - Dst: Ok
      Src: /src/opendal/core/services/swift/src/core.rs:53,1
    - Dst: Ok
      Src: /src/opendal/core/services/swift/src/core.rs:54,1
    - Dst: Ok
      Src: /src/opendal/core/services/swift/src/core.rs:55,1
    - Dst: Err
      Src: /src/opendal/core/services/swift/src/core.rs:56,1
    - Dst: Error::new
      Src: /src/opendal/core/services/swift/src/core.rs:56,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 1
    argNames:
    - s
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 63
      start: 51
    functionDepth: 36
    functionLinenumber: 51
    functionLinenumberEnd: 63
    functionName: TempUrlHashAlgorithm::from_str_opt
    functionSourceFile: /src/opendal/core/services/swift/src/core.rs
    functionUses: 1
    functionsReached:
    - Ok
    - to_lowercase
    - Error::new
    - Err
    - as_str
    linkageType: ''
    returnType: Result
    signature: 'pub fn from_str_opt(s: &str) -> Result<Self>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Hmac::<Sha1>::new_from_slice
      Src: /src/opendal/core/services/swift/src/core.rs:86,1
    - Dst: expect
      Src: /src/opendal/core/services/swift/src/core.rs:86,1
    - Dst: update
      Src: /src/opendal/core/services/swift/src/core.rs:87,1
    - Dst: Hmac::<Sha256>::new_from_slice
      Src: /src/opendal/core/services/swift/src/core.rs:92,1
    - Dst: expect
      Src: /src/opendal/core/services/swift/src/core.rs:92,1
    - Dst: update
      Src: /src/opendal/core/services/swift/src/core.rs:93,1
    - Dst: Hmac::<Sha512>::new_from_slice
      Src: /src/opendal/core/services/swift/src/core.rs:98,1
    - Dst: expect
      Src: /src/opendal/core/services/swift/src/core.rs:98,1
    - Dst: update
      Src: /src/opendal/core/services/swift/src/core.rs:99,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 20
    argCount: 2
    argNames:
    - key
    - data
    argTypes:
    - '&[u8]'
    - '&[u8]'
    constantsTouched: []
    func_position:
      end: 103
      start: 79
    functionDepth: 37
    functionLinenumber: 79
    functionLinenumberEnd: 103
    functionName: TempUrlHashAlgorithm::hmac_sign
    functionSourceFile: /src/opendal/core/services/swift/src/core.rs
    functionUses: 0
    functionsReached:
    - expect
    - Hmac::<Sha512>::new_from_slice
    - update
    - Hmac::<Sha256>::new_from_slice
    - Hmac::<Sha1>::new_from_slice
    linkageType: ''
    returnType: String
    signature: 'fn hmac_sign(&self, key: &[u8], data: &[u8]) -> String'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::debug_struct
      Src: /src/opendal/core/services/swift/src/core.rs:119,1
    - Dst: field
      Src: /src/opendal/core/services/swift/src/core.rs:119,1
    - Dst: field
      Src: /src/opendal/core/services/swift/src/core.rs:119,1
    - Dst: field
      Src: /src/opendal/core/services/swift/src/core.rs:119,1
    - Dst: finish_non_exhaustive
      Src: /src/opendal/core/services/swift/src/core.rs:119,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 16
    argCount: 1
    argNames:
    - f
    argTypes:
    - '&mut std::fmt::Formatter<''_>'
    constantsTouched: []
    func_position:
      end: 124
      start: 118
    functionDepth: 5
    functionLinenumber: 118
    functionLinenumberEnd: 124
    functionName: SwiftCore::fmt
    functionSourceFile: /src/opendal/core/services/swift/src/core.rs
    functionUses: 0
    functionsReached:
    - field
    - Result::debug_struct
    - finish_non_exhaustive
    linkageType: ''
    returnType: std::fmt::Result
    signature: 'fn fmt(&self, f: &mut std::fmt::Formatter<''_>) -> std::fmt::Result'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/swift/src/core.rs:133,1
    - Dst: Request::delete
      Src: /src/opendal/core/services/swift/src/core.rs:142,1
    - Dst: Result::header
      Src: /src/opendal/core/services/swift/src/core.rs:144,1
    - Dst: Buffer::new
      Src: /src/opendal/core/services/swift/src/core.rs:146,1
    - Dst: Result::extension
      Src: /src/opendal/core/services/swift/src/core.rs:148,1
    - Dst: extension
      Src: /src/opendal/core/services/swift/src/core.rs:148,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/swift/src/core.rs:150,1
    - Dst: body
      Src: /src/opendal/core/services/swift/src/core.rs:148,1
    - Dst: map_err
      Src: /src/opendal/core/services/swift/src/core.rs:148,1
    - Dst: Result::http_transport
      Src: /src/opendal/core/services/swift/src/core.rs:154,1
    - Dst: Self::send
      Src: /src/opendal/core/services/swift/src/core.rs:154,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 27
    argCount: 2
    argNames:
    - ctx
    - path
    argTypes:
    - '&OperationContext'
    - '&str'
    constantsTouched: []
    func_position:
      end: 155
      start: 128
    functionDepth: 32
    functionLinenumber: 128
    functionLinenumberEnd: 155
    functionName: SwiftCore::swift_delete
    functionSourceFile: /src/opendal/core/services/swift/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - extension
    - Buffer::new
    - Request::delete
    - Self::send
    - Result::extension
    - body
    - build_abs_path
    - Result::header
    - ServiceOperation
    - Result::http_transport
    linkageType: ''
    returnType: Result
    signature: 'pub async fn swift_delete(&self,ctx: &OperationContext,path: &str,)
      -> Result<Response<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Request::post
      Src: /src/opendal/core/services/swift/src/core.rs:168,1
    - Dst: http::header
      Src: /src/opendal/core/services/swift/src/core.rs:170,1
    - Dst: http::header
      Src: /src/opendal/core/services/swift/src/core.rs:171,1
    - Dst: http::header
      Src: /src/opendal/core/services/swift/src/core.rs:172,1
    - Dst: Result::iter
      Src: /src/opendal/core/services/swift/src/core.rs:176,1
    - Dst: map
      Src: /src/opendal/core/services/swift/src/core.rs:176,1
    - Dst: build_abs_path
      Src: /src/opendal/core/services/swift/src/core.rs:179,1
    - Dst: "iter()\n            .map(|(path, _)| {\n                let abs = build_abs_path(&self.root,\
        \ path);\n                format!(\"{}/{}\", self.container, percent_encode_path(&abs))\n\
        \            })\n            .collect::<Vec<_>>"
      Src: /src/opendal/core/services/swift/src/core.rs:176,1
    - Dst: join
      Src: /src/opendal/core/services/swift/src/core.rs:176,1
    - Dst: http::header
      Src: /src/opendal/core/services/swift/src/core.rs:185,1
    - Dst: len
      Src: /src/opendal/core/services/swift/src/core.rs:185,1
    - Dst: extension
      Src: /src/opendal/core/services/swift/src/core.rs:187,1
    - Dst: extension
      Src: /src/opendal/core/services/swift/src/core.rs:187,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/swift/src/core.rs:189,1
    - Dst: body
      Src: /src/opendal/core/services/swift/src/core.rs:187,1
    - Dst: Buffer::from
      Src: /src/opendal/core/services/swift/src/core.rs:190,1
    - Dst: bytes::Bytes::from
      Src: /src/opendal/core/services/swift/src/core.rs:190,1
    - Dst: map_err
      Src: /src/opendal/core/services/swift/src/core.rs:187,1
    - Dst: Result::http_transport
      Src: /src/opendal/core/services/swift/src/core.rs:193,1
    - Dst: Self::send
      Src: /src/opendal/core/services/swift/src/core.rs:193,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 51
    argCount: 2
    argNames:
    - ctx
    - paths
    argTypes:
    - '&OperationContext'
    - '&[(String, OpDelete)]'
    constantsTouched: []
    func_position:
      end: 194
      start: 160
    functionDepth: 33
    functionLinenumber: 160
    functionLinenumberEnd: 194
    functionName: SwiftCore::swift_bulk_delete
    functionSourceFile: /src/opendal/core/services/swift/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - "iter()\n            .map(|(path, _)| {\n                let abs = build_abs_path(&self.root,\
      \ path);\n                format!(\"{}/{}\", self.container, percent_encode_path(&abs))\n\
      \            })\n            .collect::<Vec<_>>"
    - extension
    - Self::send
    - join
    - http::header
    - Request::post
    - body
    - build_abs_path
    - Result::iter
    - map
    - ServiceOperation
    - bytes::Bytes::from
    - Result::http_transport
    - len
    - Buffer::from
    linkageType: ''
    returnType: Result
    signature: 'pub async fn swift_bulk_delete(&self,ctx: &OperationContext,paths:
      &[(String, OpDelete)],) -> Result<Response<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/swift/src/core.rs:204,1
    - Dst: QueryPairsWriter::new
      Src: /src/opendal/core/services/swift/src/core.rs:208,1
    - Dst: Self::push
      Src: /src/opendal/core/services/swift/src/core.rs:208,1
    - Dst: percent_encode_path
      Src: /src/opendal/core/services/swift/src/core.rs:209,1
    - Dst: Self::push
      Src: /src/opendal/core/services/swift/src/core.rs:208,1
    - Dst: Self::push
      Src: /src/opendal/core/services/swift/src/core.rs:208,1
    - Dst: Result::push
      Src: /src/opendal/core/services/swift/src/core.rs:214,1
    - Dst: Result::to_string
      Src: /src/opendal/core/services/swift/src/core.rs:214,1
    - Dst: Option::is_empty
      Src: /src/opendal/core/services/swift/src/core.rs:216,1
    - Dst: Result::push
      Src: /src/opendal/core/services/swift/src/core.rs:217,1
    - Dst: Request::get
      Src: /src/opendal/core/services/swift/src/core.rs:220,1
    - Dst: Result::finish
      Src: /src/opendal/core/services/swift/src/core.rs:220,1
    - Dst: Option::header
      Src: /src/opendal/core/services/swift/src/core.rs:222,1
    - Dst: Option::extension
      Src: /src/opendal/core/services/swift/src/core.rs:224,1
    - Dst: extension
      Src: /src/opendal/core/services/swift/src/core.rs:224,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/swift/src/core.rs:226,1
    - Dst: body
      Src: /src/opendal/core/services/swift/src/core.rs:224,1
    - Dst: Buffer::new
      Src: /src/opendal/core/services/swift/src/core.rs:227,1
    - Dst: map_err
      Src: /src/opendal/core/services/swift/src/core.rs:224,1
    - Dst: Result::http_transport
      Src: /src/opendal/core/services/swift/src/core.rs:230,1
    - Dst: Self::send
      Src: /src/opendal/core/services/swift/src/core.rs:230,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 57
    argCount: 5
    argNames:
    - ctx
    - path
    - delimiter
    - limit
    - marker
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    - Option<usize>
    - '&str'
    constantsTouched: []
    func_position:
      end: 231
      start: 196
    functionDepth: 37
    functionLinenumber: 196
    functionLinenumberEnd: 231
    functionName: SwiftCore::swift_list
    functionSourceFile: /src/opendal/core/services/swift/src/core.rs
    functionUses: 0
    functionsReached:
    - QueryPairsWriter::new
    - extension
    - Request::get
    - Buffer::new
    - map_err
    - Result::to_string
    - Self::send
    - Self::push
    - body
    - build_abs_path
    - Result::finish
    - Result::push
    - Option::extension
    - Option::is_empty
    - percent_encode_path
    - ServiceOperation
    - Result::http_transport
    - Option::header
    linkageType: ''
    returnType: Result
    signature: 'pub async fn swift_list(&self,ctx: &OperationContext,path: &str,delimiter:
      &str,limit: Option<usize>,marker: &str,) -> Result<Response<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/swift/src/core.rs:241,1
    - Dst: Request::put
      Src: /src/opendal/core/services/swift/src/core.rs:249,1
    - Dst: OpStat::content_type
      Src: /src/opendal/core/services/swift/src/core.rs:251,1
    - Dst: DeleteInput::header
      Src: /src/opendal/core/services/swift/src/core.rs:252,1
    - Dst: OpStat::content_disposition
      Src: /src/opendal/core/services/swift/src/core.rs:254,1
    - Dst: DeleteInput::header
      Src: /src/opendal/core/services/swift/src/core.rs:255,1
    - Dst: OpStat::content_encoding
      Src: /src/opendal/core/services/swift/src/core.rs:257,1
    - Dst: DeleteInput::header
      Src: /src/opendal/core/services/swift/src/core.rs:258,1
    - Dst: OpStat::cache_control
      Src: /src/opendal/core/services/swift/src/core.rs:260,1
    - Dst: DeleteInput::header
      Src: /src/opendal/core/services/swift/src/core.rs:261,1
    - Dst: OpStat::user_metadata
      Src: /src/opendal/core/services/swift/src/core.rs:265,1
    - Dst: DeleteInput::header
      Src: /src/opendal/core/services/swift/src/core.rs:267,1
    - Dst: DeleteInput::header
      Src: /src/opendal/core/services/swift/src/core.rs:271,1
    - Dst: DeleteInput::header
      Src: /src/opendal/core/services/swift/src/core.rs:272,1
    - Dst: DeleteInput::extension
      Src: /src/opendal/core/services/swift/src/core.rs:274,1
    - Dst: extension
      Src: /src/opendal/core/services/swift/src/core.rs:274,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/swift/src/core.rs:276,1
    - Dst: body
      Src: /src/opendal/core/services/swift/src/core.rs:274,1
    - Dst: map_err
      Src: /src/opendal/core/services/swift/src/core.rs:274,1
    - Dst: Result::http_transport
      Src: /src/opendal/core/services/swift/src/core.rs:280,1
    - Dst: Self::send
      Src: /src/opendal/core/services/swift/src/core.rs:280,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 72
    argCount: 5
    argNames:
    - ctx
    - path
    - length
    - args
    - body
    argTypes:
    - '&OperationContext'
    - '&str'
    - u64
    - '&OpWrite'
    - Buffer
    constantsTouched: []
    func_position:
      end: 281
      start: 233
    functionDepth: 32
    functionLinenumber: 233
    functionLinenumberEnd: 281
    functionName: SwiftCore::swift_create_object
    functionSourceFile: /src/opendal/core/services/swift/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - extension
    - Request::put
    - Self::send
    - OpStat::content_encoding
    - OpStat::content_disposition
    - body
    - OpStat::cache_control
    - build_abs_path
    - DeleteInput::header
    - ServiceOperation
    - OpStat::user_metadata
    - Result::http_transport
    - DeleteInput::extension
    - OpStat::content_type
    linkageType: ''
    returnType: Result
    signature: 'pub async fn swift_create_object(&self,ctx: &OperationContext,path:
      &str,length: u64,args: &OpWrite,body: Buffer,) -> Result<Response<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/swift/src/core.rs:290,1
    - Dst: String::trim_end_matches
      Src: /src/opendal/core/services/swift/src/core.rs:290,1
    - Dst: to_string
      Src: /src/opendal/core/services/swift/src/core.rs:290,1
    - Dst: Request::get
      Src: /src/opendal/core/services/swift/src/core.rs:301,1
    - Dst: Option::header
      Src: /src/opendal/core/services/swift/src/core.rs:303,1
    - Dst: (Vec::is_full
      Src: /src/opendal/core/services/swift/src/core.rs:305,1
    - Dst: Option::header
      Src: /src/opendal/core/services/swift/src/core.rs:306,1
    - Dst: (Vec::to_header
      Src: /src/opendal/core/services/swift/src/core.rs:306,1
    - Dst: OpStat::if_match
      Src: /src/opendal/core/services/swift/src/core.rs:309,1
    - Dst: Option::header
      Src: /src/opendal/core/services/swift/src/core.rs:310,1
    - Dst: OpStat::if_none_match
      Src: /src/opendal/core/services/swift/src/core.rs:312,1
    - Dst: Option::header
      Src: /src/opendal/core/services/swift/src/core.rs:313,1
    - Dst: OpStat::if_modified_since
      Src: /src/opendal/core/services/swift/src/core.rs:315,1
    - Dst: Option::header
      Src: /src/opendal/core/services/swift/src/core.rs:316,1
    - Dst: Result::format_http_date
      Src: /src/opendal/core/services/swift/src/core.rs:316,1
    - Dst: OpStat::if_unmodified_since
      Src: /src/opendal/core/services/swift/src/core.rs:318,1
    - Dst: Option::header
      Src: /src/opendal/core/services/swift/src/core.rs:319,1
    - Dst: Result::format_http_date
      Src: /src/opendal/core/services/swift/src/core.rs:319,1
    - Dst: Option::extension
      Src: /src/opendal/core/services/swift/src/core.rs:322,1
    - Dst: extension
      Src: /src/opendal/core/services/swift/src/core.rs:322,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/swift/src/core.rs:324,1
    - Dst: body
      Src: /src/opendal/core/services/swift/src/core.rs:322,1
    - Dst: Buffer::new
      Src: /src/opendal/core/services/swift/src/core.rs:325,1
    - Dst: map_err
      Src: /src/opendal/core/services/swift/src/core.rs:322,1
    - Dst: Result::http_transport
      Src: /src/opendal/core/services/swift/src/core.rs:328,1
    - Dst: Self::fetch
      Src: /src/opendal/core/services/swift/src/core.rs:328,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 78
    argCount: 4
    argNames:
    - ctx
    - path
    - range
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - BytesRange
    - '&OpRead'
    constantsTouched: []
    func_position:
      end: 329
      start: 283
    functionDepth: 3
    functionLinenumber: 283
    functionLinenumberEnd: 329
    functionName: SwiftCore::swift_read
    functionSourceFile: /src/opendal/core/services/swift/src/core.rs
    functionUses: 0
    functionsReached:
    - Buffer::new
    - OpStat::if_unmodified_since
    - map_err
    - extension
    - OpStat::if_modified_since
    - (Vec::is_full
    - ServiceOperation
    - Result::http_transport
    - Result::format_http_date
    - OpStat::if_match
    - build_abs_path
    - Self::fetch
    - String::trim_end_matches
    - Option::header
    - to_string
    - Request::get
    - (Vec::to_header
    - body
    - OpStat::if_none_match
    - Option::extension
    linkageType: ''
    returnType: Result
    signature: 'pub async fn swift_read(&self,ctx: &OperationContext,path: &str,range:
      BytesRange,args: &OpRead,) -> Result<Response<HttpBody>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/swift/src/core.rs:345,1
    - Dst: String::trim_end_matches
      Src: /src/opendal/core/services/swift/src/core.rs:345,1
    - Dst: to_string
      Src: /src/opendal/core/services/swift/src/core.rs:345,1
    - Dst: Request::put
      Src: /src/opendal/core/services/swift/src/core.rs:358,1
    - Dst: DeleteInput::header
      Src: /src/opendal/core/services/swift/src/core.rs:360,1
    - Dst: DeleteInput::header
      Src: /src/opendal/core/services/swift/src/core.rs:361,1
    - Dst: percent_encode_path
      Src: /src/opendal/core/services/swift/src/core.rs:361,1
    - Dst: DeleteInput::header
      Src: /src/opendal/core/services/swift/src/core.rs:364,1
    - Dst: Buffer::new
      Src: /src/opendal/core/services/swift/src/core.rs:366,1
    - Dst: DeleteInput::extension
      Src: /src/opendal/core/services/swift/src/core.rs:368,1
    - Dst: extension
      Src: /src/opendal/core/services/swift/src/core.rs:368,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/swift/src/core.rs:370,1
    - Dst: body
      Src: /src/opendal/core/services/swift/src/core.rs:368,1
    - Dst: map_err
      Src: /src/opendal/core/services/swift/src/core.rs:368,1
    - Dst: Result::http_transport
      Src: /src/opendal/core/services/swift/src/core.rs:374,1
    - Dst: Self::send
      Src: /src/opendal/core/services/swift/src/core.rs:374,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 41
    argCount: 3
    argNames:
    - ctx
    - src_p
    - dst_p
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    constantsTouched: []
    func_position:
      end: 375
      start: 331
    functionDepth: 37
    functionLinenumber: 331
    functionLinenumberEnd: 375
    functionName: SwiftCore::swift_copy
    functionSourceFile: /src/opendal/core/services/swift/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - to_string
    - Buffer::new
    - extension
    - Request::put
    - Self::send
    - body
    - build_abs_path
    - Result::http_transport
    - DeleteInput::header
    - percent_encode_path
    - ServiceOperation
    - String::trim_end_matches
    - DeleteInput::extension
    linkageType: ''
    returnType: Result
    signature: 'pub async fn swift_copy(&self,ctx: &OperationContext,src_p: &str,dst_p:
      &str,) -> Result<Response<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/swift/src/core.rs:383,1
    - Dst: Request::head
      Src: /src/opendal/core/services/swift/src/core.rs:392,1
    - Dst: Result::header
      Src: /src/opendal/core/services/swift/src/core.rs:394,1
    - Dst: OpStat::if_match
      Src: /src/opendal/core/services/swift/src/core.rs:396,1
    - Dst: Result::header
      Src: /src/opendal/core/services/swift/src/core.rs:397,1
    - Dst: OpStat::if_none_match
      Src: /src/opendal/core/services/swift/src/core.rs:399,1
    - Dst: Result::header
      Src: /src/opendal/core/services/swift/src/core.rs:400,1
    - Dst: OpStat::if_modified_since
      Src: /src/opendal/core/services/swift/src/core.rs:402,1
    - Dst: Result::header
      Src: /src/opendal/core/services/swift/src/core.rs:403,1
    - Dst: Result::format_http_date
      Src: /src/opendal/core/services/swift/src/core.rs:403,1
    - Dst: OpStat::if_unmodified_since
      Src: /src/opendal/core/services/swift/src/core.rs:405,1
    - Dst: Result::header
      Src: /src/opendal/core/services/swift/src/core.rs:406,1
    - Dst: Result::format_http_date
      Src: /src/opendal/core/services/swift/src/core.rs:406,1
    - Dst: Result::extension
      Src: /src/opendal/core/services/swift/src/core.rs:409,1
    - Dst: extension
      Src: /src/opendal/core/services/swift/src/core.rs:409,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/swift/src/core.rs:411,1
    - Dst: body
      Src: /src/opendal/core/services/swift/src/core.rs:409,1
    - Dst: Buffer::new
      Src: /src/opendal/core/services/swift/src/core.rs:412,1
    - Dst: map_err
      Src: /src/opendal/core/services/swift/src/core.rs:409,1
    - Dst: Result::http_transport
      Src: /src/opendal/core/services/swift/src/core.rs:415,1
    - Dst: Self::send
      Src: /src/opendal/core/services/swift/src/core.rs:415,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 63
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&OpStat'
    constantsTouched: []
    func_position:
      end: 416
      start: 377
    functionDepth: 38
    functionLinenumber: 377
    functionLinenumberEnd: 416
    functionName: SwiftCore::swift_get_metadata
    functionSourceFile: /src/opendal/core/services/swift/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - extension
    - Request::head
    - Buffer::new
    - Self::send
    - OpStat::if_modified_since
    - Result::extension
    - OpStat::if_unmodified_since
    - body
    - build_abs_path
    - Result::header
    - OpStat::if_none_match
    - ServiceOperation
    - Result::http_transport
    - Result::format_http_date
    - OpStat::if_match
    linkageType: ''
    returnType: Result
    signature: 'pub async fn swift_get_metadata(&self,ctx: &OperationContext,path:
      &str,args: &OpStat,) -> Result<Response<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/swift/src/core.rs:422,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - path
    - upload_id
    - part_number
    argTypes:
    - '&str'
    - '&str'
    - usize
    constantsTouched: []
    func_position:
      end: 429
      start: 421
    functionDepth: 3
    functionLinenumber: 421
    functionLinenumberEnd: 429
    functionName: SwiftCore::slo_segment_path
    functionSourceFile: /src/opendal/core/services/swift/src/core.rs
    functionUses: 1
    functionsReached:
    - build_abs_path
    linkageType: ''
    returnType: String
    signature: 'pub fn slo_segment_path(&self, path: &str, upload_id: &str, part_number:
      usize) -> String'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: SwiftCore::slo_segment_path
      Src: /src/opendal/core/services/swift/src/core.rs:443,1
    - Dst: Request::put
      Src: /src/opendal/core/services/swift/src/core.rs:451,1
    - Dst: DeleteInput::header
      Src: /src/opendal/core/services/swift/src/core.rs:452,1
    - Dst: DeleteInput::header
      Src: /src/opendal/core/services/swift/src/core.rs:453,1
    - Dst: DeleteInput::extension
      Src: /src/opendal/core/services/swift/src/core.rs:455,1
    - Dst: extension
      Src: /src/opendal/core/services/swift/src/core.rs:455,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/swift/src/core.rs:457,1
    - Dst: body
      Src: /src/opendal/core/services/swift/src/core.rs:455,1
    - Dst: map_err
      Src: /src/opendal/core/services/swift/src/core.rs:455,1
    - Dst: Result::http_transport
      Src: /src/opendal/core/services/swift/src/core.rs:461,1
    - Dst: Self::send
      Src: /src/opendal/core/services/swift/src/core.rs:461,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 29
    argCount: 6
    argNames:
    - ctx
    - path
    - upload_id
    - part_number
    - size
    - body
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    - usize
    - u64
    - Buffer
    constantsTouched: []
    func_position:
      end: 462
      start: 434
    functionDepth: 37
    functionLinenumber: 434
    functionLinenumberEnd: 462
    functionName: SwiftCore::swift_put_segment
    functionSourceFile: /src/opendal/core/services/swift/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - extension
    - Request::put
    - Self::send
    - body
    - DeleteInput::header
    - SwiftCore::slo_segment_path
    - ServiceOperation
    - Result::http_transport
    - DeleteInput::extension
    linkageType: ''
    returnType: Result
    signature: 'pub async fn swift_put_segment(&self,ctx: &OperationContext,path:
      &str,upload_id: &str,part_number: usize,size: u64,body: Buffer,) -> Result<Response<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/swift/src/core.rs:477,1
    - Dst: serde_json::to_vec
      Src: /src/opendal/core/services/swift/src/core.rs:485,1
    - Dst: Vec::map_err
      Src: /src/opendal/core/services/swift/src/core.rs:485,1
    - Dst: Request::put
      Src: /src/opendal/core/services/swift/src/core.rs:487,1
    - Dst: DeleteInput::header
      Src: /src/opendal/core/services/swift/src/core.rs:488,1
    - Dst: DeleteInput::header
      Src: /src/opendal/core/services/swift/src/core.rs:489,1
    - Dst: len
      Src: /src/opendal/core/services/swift/src/core.rs:489,1
    - Dst: DeleteInput::header
      Src: /src/opendal/core/services/swift/src/core.rs:490,1
    - Dst: OpStat::user_metadata
      Src: /src/opendal/core/services/swift/src/core.rs:493,1
    - Dst: DeleteInput::header
      Src: /src/opendal/core/services/swift/src/core.rs:495,1
    - Dst: DeleteInput::extension
      Src: /src/opendal/core/services/swift/src/core.rs:499,1
    - Dst: extension
      Src: /src/opendal/core/services/swift/src/core.rs:499,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/swift/src/core.rs:501,1
    - Dst: body
      Src: /src/opendal/core/services/swift/src/core.rs:499,1
    - Dst: Buffer::from
      Src: /src/opendal/core/services/swift/src/core.rs:502,1
    - Dst: bytes::Bytes::from
      Src: /src/opendal/core/services/swift/src/core.rs:502,1
    - Dst: map_err
      Src: /src/opendal/core/services/swift/src/core.rs:499,1
    - Dst: Result::http_transport
      Src: /src/opendal/core/services/swift/src/core.rs:505,1
    - Dst: Self::send
      Src: /src/opendal/core/services/swift/src/core.rs:505,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 52
    argCount: 4
    argNames:
    - ctx
    - path
    - manifest
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&[SloManifestEntry]'
    - '&OpWrite'
    constantsTouched: []
    func_position:
      end: 506
      start: 470
    functionDepth: 32
    functionLinenumber: 470
    functionLinenumberEnd: 506
    functionName: SwiftCore::swift_put_slo_manifest
    functionSourceFile: /src/opendal/core/services/swift/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - extension
    - Request::put
    - Self::send
    - bytes::Bytes::from
    - body
    - build_abs_path
    - DeleteInput::header
    - Buffer::from
    - Vec::map_err
    - OpStat::user_metadata
    - ServiceOperation
    - Result::http_transport
    - len
    - DeleteInput::extension
    - serde_json::to_vec
    linkageType: ''
    returnType: Result
    signature: 'pub async fn swift_put_slo_manifest(&self,ctx: &OperationContext,path:
      &str,manifest: &[SloManifestEntry],args: &OpWrite,) -> Result<Response<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/swift/src/core.rs:523,1
    - Dst: QueryPairsWriter::new
      Src: /src/opendal/core/services/swift/src/core.rs:527,1
    - Dst: Self::push
      Src: /src/opendal/core/services/swift/src/core.rs:527,1
    - Dst: percent_encode_path
      Src: /src/opendal/core/services/swift/src/core.rs:528,1
    - Dst: Self::push
      Src: /src/opendal/core/services/swift/src/core.rs:527,1
    - Dst: Self::finish
      Src: /src/opendal/core/services/swift/src/core.rs:527,1
    - Dst: Request::get
      Src: /src/opendal/core/services/swift/src/core.rs:532,1
    - Dst: Option::header
      Src: /src/opendal/core/services/swift/src/core.rs:533,1
    - Dst: Option::extension
      Src: /src/opendal/core/services/swift/src/core.rs:535,1
    - Dst: extension
      Src: /src/opendal/core/services/swift/src/core.rs:535,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/swift/src/core.rs:537,1
    - Dst: body
      Src: /src/opendal/core/services/swift/src/core.rs:535,1
    - Dst: Buffer::new
      Src: /src/opendal/core/services/swift/src/core.rs:538,1
    - Dst: map_err
      Src: /src/opendal/core/services/swift/src/core.rs:535,1
    - Dst: Result::http_transport
      Src: /src/opendal/core/services/swift/src/core.rs:541,1
    - Dst: Self::send
      Src: /src/opendal/core/services/swift/src/core.rs:541,1
    - Dst: status
      Src: /src/opendal/core/services/swift/src/core.rs:542,1
    - Dst: is_success
      Src: /src/opendal/core/services/swift/src/core.rs:542,1
    - Dst: Ok
      Src: /src/opendal/core/services/swift/src/core.rs:543,1
    - Dst: into_body
      Src: /src/opendal/core/services/swift/src/core.rs:546,1
    - Dst: to_bytes
      Src: /src/opendal/core/services/swift/src/core.rs:546,1
    - Dst: serde_json::from_slice
      Src: /src/opendal/core/services/swift/src/core.rs:547,1
    - Dst: unwrap_or_default
      Src: /src/opendal/core/services/swift/src/core.rs:547,1
    - Dst: Request::delete
      Src: /src/opendal/core/services/swift/src/core.rs:559,1
    - Dst: Result::header
      Src: /src/opendal/core/services/swift/src/core.rs:560,1
    - Dst: Result::extension
      Src: /src/opendal/core/services/swift/src/core.rs:562,1
    - Dst: extension
      Src: /src/opendal/core/services/swift/src/core.rs:562,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/swift/src/core.rs:564,1
    - Dst: body
      Src: /src/opendal/core/services/swift/src/core.rs:562,1
    - Dst: Buffer::new
      Src: /src/opendal/core/services/swift/src/core.rs:565,1
    - Dst: map_err
      Src: /src/opendal/core/services/swift/src/core.rs:562,1
    - Dst: Result::http_transport
      Src: /src/opendal/core/services/swift/src/core.rs:569,1
    - Dst: Self::send
      Src: /src/opendal/core/services/swift/src/core.rs:569,1
    - Dst: Ok
      Src: /src/opendal/core/services/swift/src/core.rs:573,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 88
    argCount: 3
    argNames:
    - ctx
    - path
    - upload_id
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    constantsTouched: []
    func_position:
      end: 574
      start: 514
    functionDepth: 37
    functionLinenumber: 514
    functionLinenumberEnd: 574
    functionName: SwiftCore::swift_delete_slo
    functionSourceFile: /src/opendal/core/services/swift/src/core.rs
    functionUses: 0
    functionsReached:
    - Buffer::new
    - is_success
    - status
    - Self::send
    - percent_encode_path
    - map_err
    - extension
    - Ok
    - ServiceOperation
    - Result::http_transport
    - unwrap_or_default
    - QueryPairsWriter::new
    - serde_json::from_slice
    - Self::push
    - into_body
    - build_abs_path
    - Result::header
    - to_bytes
    - Self::finish
    - Option::header
    - Request::get
    - Request::delete
    - Result::extension
    - body
    - Option::extension
    linkageType: ''
    returnType: Result
    signature: 'pub async fn swift_delete_slo(&self,ctx: &OperationContext,path: &str,upload_id:
      &str,) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: is_empty
      Src: /src/opendal/core/services/swift/src/core.rs:583,1
    - Dst: Err
      Src: /src/opendal/core/services/swift/src/core.rs:584,1
    - Dst: Error::new
      Src: /src/opendal/core/services/swift/src/core.rs:584,1
    - Dst: build_abs_path
      Src: /src/opendal/core/services/swift/src/core.rs:590,1
    - Dst: find
      Src: /src/opendal/core/services/swift/src/core.rs:596,1
    - Dst: and_then
      Src: /src/opendal/core/services/swift/src/core.rs:596,1
    - Dst: find
      Src: /src/opendal/core/services/swift/src/core.rs:600,1
    - Dst: map
      Src: /src/opendal/core/services/swift/src/core.rs:600,1
    - Dst: map
      Src: /src/opendal/core/services/swift/src/core.rs:596,1
    - Dst: trim_end_matches
      Src: /src/opendal/core/services/swift/src/core.rs:604,1
    - Dst: unwrap_or
      Src: /src/opendal/core/services/swift/src/core.rs:596,1
    - Dst: SystemTime::now
      Src: /src/opendal/core/services/swift/src/core.rs:613,1
    - Dst: Self::duration_since
      Src: /src/opendal/core/services/swift/src/core.rs:613,1
    - Dst: expect
      Src: /src/opendal/core/services/swift/src/core.rs:613,1
    - Dst: as_secs
      Src: /src/opendal/core/services/swift/src/core.rs:613,1
    - Dst: Duration::as_secs
      Src: /src/opendal/core/services/swift/src/core.rs:617,1
    - Dst: hmac_sign
      Src: /src/opendal/core/services/swift/src/core.rs:621,1
    - Dst: as_bytes
      Src: /src/opendal/core/services/swift/src/core.rs:623,1
    - Dst: as_bytes
      Src: /src/opendal/core/services/swift/src/core.rs:623,1
    - Dst: percent_encoding::utf8_percent_encode
      Src: /src/opendal/core/services/swift/src/core.rs:628,1
    - Dst: Ok
      Src: /src/opendal/core/services/swift/src/core.rs:630,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 60
    argCount: 3
    argNames:
    - method
    - path
    - expire
    argTypes:
    - '&Method'
    - '&str'
    - Duration
    constantsTouched: []
    func_position:
      end: 638
      start: 582
    functionDepth: 36
    functionLinenumber: 582
    functionLinenumberEnd: 638
    functionName: SwiftCore::swift_temp_url
    functionSourceFile: /src/opendal/core/services/swift/src/core.rs
    functionUses: 0
    functionsReached:
    - as_secs
    - percent_encoding::utf8_percent_encode
    - Self::duration_since
    - find
    - and_then
    - expect
    - as_bytes
    - Ok
    - trim_end_matches
    - SystemTime::now
    - build_abs_path
    - Err
    - Error::new
    - is_empty
    - map
    - hmac_sign
    - Duration::as_secs
    - unwrap_or
    linkageType: ''
    returnType: Result
    signature: 'pub fn swift_temp_url(&self, method: &Method, path: &str, expire:
      Duration) -> Result<String>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: bytes::Bytes::from
      Src: /src/opendal/core/services/swift/src/core.rs:699,1
    - Dst: serde_json::from_slice::<Vec<ListOpResponse>>
      Src: /src/opendal/core/services/swift/src/core.rs:719,1
    - Dst: map_err
      Src: /src/opendal/core/services/swift/src/core.rs:719,1
    - Dst: Ok
      Src: /src/opendal/core/services/swift/src/core.rs:748,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 749
      start: 698
    functionDepth: 0
    functionLinenumber: 698
    functionLinenumberEnd: 749
    functionName: tests::parse_list_response_test
    functionSourceFile: /src/opendal/core/services/swift/src/core.rs
    functionUses: 0
    functionsReached:
    - serde_json::from_slice::<Vec<ListOpResponse>>
    - map_err
    - Ok
    - bytes::Bytes::from
    linkageType: ''
    returnType: Result
    signature: fn parse_list_response_test() -> Result<()>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: bytes::Bytes::from
      Src: /src/opendal/core/services/swift/src/core.rs:753,1
    - Dst: serde_json::from_slice
      Src: /src/opendal/core/services/swift/src/core.rs:764,1
    - Dst: map_err
      Src: /src/opendal/core/services/swift/src/core.rs:764,1
    - Dst: Ok
      Src: /src/opendal/core/services/swift/src/core.rs:771,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 772
      start: 752
    functionDepth: 0
    functionLinenumber: 752
    functionLinenumberEnd: 772
    functionName: tests::parse_bulk_delete_response_test
    functionSourceFile: /src/opendal/core/services/swift/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - Ok
    - serde_json::from_slice
    - bytes::Bytes::from
    linkageType: ''
    returnType: Result
    signature: fn parse_bulk_delete_response_test() -> Result<()>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: bytes::Bytes::from
      Src: /src/opendal/core/services/swift/src/core.rs:776,1
    - Dst: serde_json::from_slice
      Src: /src/opendal/core/services/swift/src/core.rs:789,1
    - Dst: map_err
      Src: /src/opendal/core/services/swift/src/core.rs:789,1
    - Dst: Ok
      Src: /src/opendal/core/services/swift/src/core.rs:796,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 797
      start: 775
    functionDepth: 0
    functionLinenumber: 775
    functionLinenumberEnd: 797
    functionName: tests::parse_bulk_delete_response_with_errors_test
    functionSourceFile: /src/opendal/core/services/swift/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - Ok
    - serde_json::from_slice
    - bytes::Bytes::from
    linkageType: ''
    returnType: Result
    signature: fn parse_bulk_delete_response_with_errors_test() -> Result<()>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: hmac_sign
      Src: /src/opendal/core/services/swift/src/core.rs:802,1
    - Dst: '&str::len'
      Src: /src/opendal/core/services/swift/src/core.rs:808,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 810
      start: 800
    functionDepth: 38
    functionLinenumber: 800
    functionLinenumberEnd: 810
    functionName: tests::temp_url_sha1_signature_format
    functionSourceFile: /src/opendal/core/services/swift/src/core.rs
    functionUses: 0
    functionsReached:
    - '&str::len'
    - hmac_sign
    linkageType: ''
    returnType: void
    signature: fn temp_url_sha1_signature_format()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: hmac_sign
      Src: /src/opendal/core/services/swift/src/core.rs:815,1
    - Dst: '&str::len'
      Src: /src/opendal/core/services/swift/src/core.rs:821,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 823
      start: 813
    functionDepth: 38
    functionLinenumber: 813
    functionLinenumberEnd: 823
    functionName: tests::temp_url_sha256_signature_format
    functionSourceFile: /src/opendal/core/services/swift/src/core.rs
    functionUses: 0
    functionsReached:
    - '&str::len'
    - hmac_sign
    linkageType: ''
    returnType: void
    signature: fn temp_url_sha256_signature_format()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: hmac_sign
      Src: /src/opendal/core/services/swift/src/core.rs:828,1
    - Dst: '&str::len'
      Src: /src/opendal/core/services/swift/src/core.rs:834,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 836
      start: 826
    functionDepth: 38
    functionLinenumber: 826
    functionLinenumberEnd: 836
    functionName: tests::temp_url_sha512_signature_format
    functionSourceFile: /src/opendal/core/services/swift/src/core.rs
    functionUses: 0
    functionsReached:
    - '&str::len'
    - hmac_sign
    linkageType: ''
    returnType: void
    signature: fn temp_url_sha512_signature_format()
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 853
      start: 839
    functionDepth: 0
    functionLinenumber: 839
    functionLinenumberEnd: 853
    functionName: tests::temp_url_hash_algorithm_from_str
    functionSourceFile: /src/opendal/core/services/swift/src/core.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: fn temp_url_hash_algorithm_from_str()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: de::from_reader::<_, ErrorResponse>
      Src: /src/opendal/core/services/swift/src/core.rs:907,1
    - Dst: '&Bytes::clone'
      Src: /src/opendal/core/services/swift/src/core.rs:907,1
    - Dst: Self::reader
      Src: /src/opendal/core/services/swift/src/core.rs:907,1
    - Dst: String::from_utf8_lossy
      Src: /src/opendal/core/services/swift/src/core.rs:909,1
    - Dst: into_owned
      Src: /src/opendal/core/services/swift/src/core.rs:909,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 1
    argNames:
    - resp
    argTypes:
    - '&Bytes'
    constantsTouched: []
    func_position:
      end: 911
      start: 906
    functionDepth: 31
    functionLinenumber: 906
    functionLinenumberEnd: 911
    functionName: error::parse_error_response
    functionSourceFile: /src/opendal/core/services/swift/src/core.rs
    functionUses: 0
    functionsReached:
    - into_owned
    - Self::reader
    - '&Bytes::clone'
    - String::from_utf8_lossy
    - de::from_reader::<_, ErrorResponse>
    linkageType: ''
    returnType: String
    signature: 'fn parse_error_response(resp: &Bytes) -> String'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Bytes::from
      Src: /src/opendal/core/services/swift/src/core.rs:919,1
    - Dst: parse_error_response
      Src: /src/opendal/core/services/swift/src/core.rs:929,1
    - Dst: Ok
      Src: /src/opendal/core/services/swift/src/core.rs:931,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 932
      start: 918
    functionDepth: 32
    functionLinenumber: 918
    functionLinenumberEnd: 932
    functionName: error::parse_error_response_test
    functionSourceFile: /src/opendal/core/services/swift/src/core.rs
    functionUses: 0
    functionsReached:
    - Bytes::from
    - parse_error_response
    - Ok
    linkageType: ''
    returnType: Result
    signature: fn parse_error_response_test() -> Result<()>
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 4
    argNames:
    - core
    - ctx
    - op
    - path
    argTypes:
    - Arc<SwiftCore>
    - OperationContext
    - OpWrite
    - String
    constantsTouched: []
    func_position:
      end: 43
      start: 36
    functionDepth: 0
    functionLinenumber: 36
    functionLinenumberEnd: 43
    functionName: SwiftWriter::new
    functionSourceFile: /src/opendal/core/services/swift/src/writer.rs
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(core: Arc<SwiftCore>, ctx: OperationContext, op: OpWrite,
      path: String) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Metadata::default
      Src: /src/opendal/core/services/swift/src/writer.rs:46,1
    - Dst: parse_etag
      Src: /src/opendal/core/services/swift/src/writer.rs:48,1
    - Dst: anyhow::Result::set_etag
      Src: /src/opendal/core/services/swift/src/writer.rs:49,1
    - Dst: parse_last_modified
      Src: /src/opendal/core/services/swift/src/writer.rs:52,1
    - Dst: anyhow::Result::set_last_modified
      Src: /src/opendal/core/services/swift/src/writer.rs:53,1
    - Dst: Ok
      Src: /src/opendal/core/services/swift/src/writer.rs:56,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 1
    argNames:
    - headers
    argTypes:
    - '&http::HeaderMap'
    constantsTouched: []
    func_position:
      end: 57
      start: 45
    functionDepth: 39
    functionLinenumber: 45
    functionLinenumberEnd: 57
    functionName: SwiftWriter::parse_metadata
    functionSourceFile: /src/opendal/core/services/swift/src/writer.rs
    functionUses: 2
    functionsReached:
    - parse_last_modified
    - Metadata::default
    - Ok
    - anyhow::Result::set_last_modified
    - parse_etag
    - anyhow::Result::set_etag
    linkageType: ''
    returnType: Result
    signature: 'fn parse_metadata(headers: &http::HeaderMap) -> Result<Metadata>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: swift_create_object
      Src: /src/opendal/core/services/swift/src/writer.rs:62,1
    - Dst: Result::len
      Src: /src/opendal/core/services/swift/src/writer.rs:64,1
    - Dst: status
      Src: /src/opendal/core/services/swift/src/writer.rs:67,1
    - Dst: SwiftWriter::parse_metadata
      Src: /src/opendal/core/services/swift/src/writer.rs:71,1
    - Dst: headers
      Src: /src/opendal/core/services/swift/src/writer.rs:71,1
    - Dst: Ok
      Src: /src/opendal/core/services/swift/src/writer.rs:72,1
    - Dst: Err
      Src: /src/opendal/core/services/swift/src/writer.rs:74,1
    - Dst: super::core::parse_error
      Src: /src/opendal/core/services/swift/src/writer.rs:74,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 25
    argCount: 2
    argNames:
    - _size
    - bs
    argTypes:
    - u64
    - Buffer
    constantsTouched: []
    func_position:
      end: 76
      start: 61
    functionDepth: 33
    functionLinenumber: 61
    functionLinenumberEnd: 76
    functionName: SwiftWriter::write_once
    functionSourceFile: /src/opendal/core/services/swift/src/writer.rs
    functionUses: 0
    functionsReached:
    - status
    - Ok
    - Err
    - swift_create_object
    - headers
    - Result::len
    - SwiftWriter::parse_metadata
    - super::core::parse_error
    linkageType: ''
    returnType: Result
    signature: 'async fn write_once(&self, _size: u64, bs: Buffer) -> Result<Metadata>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/core/services/swift/src/writer.rs:81,1
    - Dst: uuid::Uuid::new_v4
      Src: /src/opendal/core/services/swift/src/writer.rs:81,1
    - Dst: to_string
      Src: /src/opendal/core/services/swift/src/writer.rs:81,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 82
      start: 78
    functionDepth: 2
    functionLinenumber: 78
    functionLinenumberEnd: 82
    functionName: SwiftWriter::initiate_part
    functionSourceFile: /src/opendal/core/services/swift/src/writer.rs
    functionUses: 0
    functionsReached:
    - to_string
    - uuid::Uuid::new_v4
    - Ok
    linkageType: ''
    returnType: Result
    signature: async fn initiate_part(&self) -> Result<String>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: swift_put_segment
      Src: /src/opendal/core/services/swift/src/writer.rs:91,1
    - Dst: status
      Src: /src/opendal/core/services/swift/src/writer.rs:96,1
    - Dst: parse_etag
      Src: /src/opendal/core/services/swift/src/writer.rs:100,1
    - Dst: headers
      Src: /src/opendal/core/services/swift/src/writer.rs:100,1
    - Dst: ok_or_else
      Src: /src/opendal/core/services/swift/src/writer.rs:100,1
    - Dst: Error::new
      Src: /src/opendal/core/services/swift/src/writer.rs:102,1
    - Dst: to_string
      Src: /src/opendal/core/services/swift/src/writer.rs:100,1
    - Dst: Ok
      Src: /src/opendal/core/services/swift/src/writer.rs:109,1
    - Dst: Some
      Src: /src/opendal/core/services/swift/src/writer.rs:113,1
    - Dst: Err
      Src: /src/opendal/core/services/swift/src/writer.rs:116,1
    - Dst: super::core::parse_error
      Src: /src/opendal/core/services/swift/src/writer.rs:116,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 29
    argCount: 4
    argNames:
    - upload_id
    - part_number
    - size
    - body
    argTypes:
    - '&str'
    - usize
    - u64
    - Buffer
    constantsTouched: []
    func_position:
      end: 118
      start: 84
    functionDepth: 38
    functionLinenumber: 84
    functionLinenumberEnd: 118
    functionName: SwiftWriter::write_part
    functionSourceFile: /src/opendal/core/services/swift/src/writer.rs
    functionUses: 0
    functionsReached:
    - to_string
    - status
    - Ok
    - Error::new
    - Some
    - Err
    - headers
    - swift_put_segment
    - parse_etag
    - super::core::parse_error
    - ok_or_else
    linkageType: ''
    returnType: Result
    signature: 'async fn write_part(&self,upload_id: &str,part_number: usize,size:
      u64,body: Buffer,) -> Result<oio::MultipartPart>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: (String, Metadata)::iter
      Src: /src/opendal/core/services/swift/src/writer.rs:125,1
    - Dst: map
      Src: /src/opendal/core/services/swift/src/writer.rs:125,1
    - Dst: slo_segment_path
      Src: /src/opendal/core/services/swift/src/writer.rs:128,1
    - Dst: trim_matches
      Src: /src/opendal/core/services/swift/src/writer.rs:133,1
    - Dst: to_string
      Src: /src/opendal/core/services/swift/src/writer.rs:133,1
    - Dst: unwrap_or
      Src: /src/opendal/core/services/swift/src/writer.rs:134,1
    - Dst: Result::collect
      Src: /src/opendal/core/services/swift/src/writer.rs:125,1
    - Dst: swift_put_slo_manifest
      Src: /src/opendal/core/services/swift/src/writer.rs:139,1
    - Dst: status
      Src: /src/opendal/core/services/swift/src/writer.rs:144,1
    - Dst: SwiftWriter::parse_metadata
      Src: /src/opendal/core/services/swift/src/writer.rs:148,1
    - Dst: headers
      Src: /src/opendal/core/services/swift/src/writer.rs:148,1
    - Dst: Ok
      Src: /src/opendal/core/services/swift/src/writer.rs:149,1
    - Dst: Err
      Src: /src/opendal/core/services/swift/src/writer.rs:151,1
    - Dst: super::core::parse_error
      Src: /src/opendal/core/services/swift/src/writer.rs:151,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 45
    argCount: 2
    argNames:
    - upload_id
    - parts
    argTypes:
    - '&str'
    - '&[oio::MultipartPart]'
    constantsTouched: []
    func_position:
      end: 153
      start: 120
    functionDepth: 36
    functionLinenumber: 120
    functionLinenumberEnd: 153
    functionName: SwiftWriter::complete_part
    functionSourceFile: /src/opendal/core/services/swift/src/writer.rs
    functionUses: 0
    functionsReached:
    - to_string
    - trim_matches
    - status
    - Ok
    - slo_segment_path
    - Err
    - map
    - Result::collect
    - headers
    - (String, Metadata)::iter
    - swift_put_slo_manifest
    - SwiftWriter::parse_metadata
    - super::core::parse_error
    - unwrap_or
    linkageType: ''
    returnType: Result
    signature: 'async fn complete_part(&self,upload_id: &str,parts: &[oio::MultipartPart],)
      -> Result<Metadata>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: swift_delete_slo
      Src: /src/opendal/core/services/swift/src/writer.rs:156,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - upload_id
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 159
      start: 155
    functionDepth: 38
    functionLinenumber: 155
    functionLinenumberEnd: 159
    functionName: SwiftWriter::abort_part
    functionSourceFile: /src/opendal/core/services/swift/src/writer.rs
    functionUses: 0
    functionsReached:
    - swift_delete_slo
    linkageType: ''
    returnType: Result
    signature: 'async fn abort_part(&self, upload_id: &str) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: register::<Swift>
      Src: /src/opendal/core/services/swift/src/lib.rs:39,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - registry
    argTypes:
    - '&opendal_core::OperatorRegistry'
    constantsTouched: []
    func_position:
      end: 40
      start: 38
    functionDepth: 0
    functionLinenumber: 38
    functionLinenumberEnd: 40
    functionName: register_swift_service
    functionSourceFile: /src/opendal/core/services/swift/src/lib.rs
    functionUses: 1
    functionsReached:
    - register::<Swift>
    linkageType: ''
    returnType: void
    signature: 'pub fn register_swift_service(registry: &opendal_core::OperatorRegistry)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self::is_empty
      Src: /src/opendal/core/services/swift/src/backend.rs:56,1
    - Dst: Some
      Src: /src/opendal/core/services/swift/src/backend.rs:59,1
    - Dst: Self::trim_end_matches
      Src: /src/opendal/core/services/swift/src/backend.rs:59,1
    - Dst: to_string
      Src: /src/opendal/core/services/swift/src/backend.rs:59,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 1
    argNames:
    - endpoint
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 62
      start: 55
    functionDepth: 4
    functionLinenumber: 55
    functionLinenumberEnd: 62
    functionName: SwiftBuilder::endpoint
    functionSourceFile: /src/opendal/core/services/swift/src/backend.rs
    functionUses: 0
    functionsReached:
    - Self::is_empty
    - to_string
    - Self::trim_end_matches
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn endpoint(mut self, endpoint: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: is_empty
      Src: /src/opendal/core/services/swift/src/backend.rs:68,1
    - Dst: Some
      Src: /src/opendal/core/services/swift/src/backend.rs:71,1
    - Dst: trim_end_matches
      Src: /src/opendal/core/services/swift/src/backend.rs:71,1
    - Dst: to_string
      Src: /src/opendal/core/services/swift/src/backend.rs:71,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 1
    argNames:
    - container
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 74
      start: 67
    functionDepth: 4
    functionLinenumber: 67
    functionLinenumberEnd: 74
    functionName: SwiftBuilder::container
    functionSourceFile: /src/opendal/core/services/swift/src/backend.rs
    functionUses: 0
    functionsReached:
    - to_string
    - Some
    - trim_end_matches
    - is_empty
    linkageType: ''
    returnType: Self
    signature: 'pub fn container(mut self, container: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::is_empty
      Src: /src/opendal/core/services/swift/src/backend.rs:80,1
    - Dst: Some
      Src: /src/opendal/core/services/swift/src/backend.rs:83,1
    - Dst: Result::to_string
      Src: /src/opendal/core/services/swift/src/backend.rs:83,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - root
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 87
      start: 79
    functionDepth: 4
    functionLinenumber: 79
    functionLinenumberEnd: 87
    functionName: SwiftBuilder::root
    functionSourceFile: /src/opendal/core/services/swift/src/backend.rs
    functionUses: 0
    functionsReached:
    - Result::is_empty
    - Result::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn root(mut self, root: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self::is_empty
      Src: /src/opendal/core/services/swift/src/backend.rs:93,1
    - Dst: Some
      Src: /src/opendal/core/services/swift/src/backend.rs:94,1
    - Dst: Self::to_string
      Src: /src/opendal/core/services/swift/src/backend.rs:94,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 1
    argNames:
    - token
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 97
      start: 92
    functionDepth: 4
    functionLinenumber: 92
    functionLinenumberEnd: 97
    functionName: SwiftBuilder::token
    functionSourceFile: /src/opendal/core/services/swift/src/backend.rs
    functionUses: 0
    functionsReached:
    - Self::is_empty
    - Self::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn token(mut self, token: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: FoyerKey::is_empty
      Src: /src/opendal/core/services/swift/src/backend.rs:105,1
    - Dst: Some
      Src: /src/opendal/core/services/swift/src/backend.rs:106,1
    - Dst: FoyerKey::to_string
      Src: /src/opendal/core/services/swift/src/backend.rs:106,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 1
    argNames:
    - key
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 109
      start: 104
    functionDepth: 4
    functionLinenumber: 104
    functionLinenumberEnd: 109
    functionName: SwiftBuilder::temp_url_key
    functionSourceFile: /src/opendal/core/services/swift/src/backend.rs
    functionUses: 0
    functionsReached:
    - FoyerKey::to_string
    - FoyerKey::is_empty
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn temp_url_key(mut self, key: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: '&str::is_empty'
      Src: /src/opendal/core/services/swift/src/backend.rs:117,1
    - Dst: Some
      Src: /src/opendal/core/services/swift/src/backend.rs:118,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/swift/src/backend.rs:118,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 1
    argNames:
    - algo
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 121
      start: 116
    functionDepth: 4
    functionLinenumber: 116
    functionLinenumberEnd: 121
    functionName: SwiftBuilder::temp_url_hash_algorithm
    functionSourceFile: /src/opendal/core/services/swift/src/backend.rs
    functionUses: 0
    functionsReached:
    - '&str::to_string'
    - '&str::is_empty'
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn temp_url_hash_algorithm(mut self, algo: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: normalize_root
      Src: /src/opendal/core/services/swift/src/backend.rs:131,1
    - Dst: unwrap_or_default
      Src: /src/opendal/core/services/swift/src/backend.rs:131,1
    - Dst: Self::starts_with
      Src: /src/opendal/core/services/swift/src/backend.rs:136,1
    - Dst: Err
      Src: /src/opendal/core/services/swift/src/backend.rs:143,1
    - Dst: Error::new
      Src: /src/opendal/core/services/swift/src/backend.rs:143,1
    - Dst: Err
      Src: /src/opendal/core/services/swift/src/backend.rs:154,1
    - Dst: Error::new
      Src: /src/opendal/core/services/swift/src/backend.rs:154,1
    - Dst: unwrap_or_default
      Src: /src/opendal/core/services/swift/src/backend.rs:161,1
    - Dst: unwrap_or_default
      Src: /src/opendal/core/services/swift/src/backend.rs:162,1
    - Dst: Self::is_empty
      Src: /src/opendal/core/services/swift/src/backend.rs:163,1
    - Dst: TempUrlHashAlgorithm::from_str_opt
      Src: /src/opendal/core/services/swift/src/backend.rs:165,1
    - Dst: Ok
      Src: /src/opendal/core/services/swift/src/backend.rs:169,1
    - Dst: Arc::new
      Src: /src/opendal/core/services/swift/src/backend.rs:170,1
    - Dst: ServiceInfo::new
      Src: /src/opendal/core/services/swift/src/backend.rs:171,1
    - Dst: Some
      Src: /src/opendal/core/services/swift/src/backend.rs:189,1
    - Dst: Some
      Src: /src/opendal/core/services/swift/src/backend.rs:191,1
    - Dst: Some
      Src: /src/opendal/core/services/swift/src/backend.rs:193,1
    - Dst: Some
      Src: /src/opendal/core/services/swift/src/backend.rs:202,1
    - Dst: Default::default
      Src: /src/opendal/core/services/swift/src/backend.rs:217,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 62
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 227
      start: 128
    functionDepth: 34
    functionLinenumber: 128
    functionLinenumberEnd: 227
    functionName: SwiftBuilder::build
    functionSourceFile: /src/opendal/core/services/swift/src/backend.rs
    functionUses: 0
    functionsReached:
    - TempUrlHashAlgorithm::from_str_opt
    - ServiceInfo::new
    - Ok
    - Arc::new
    - Default::default
    - normalize_root
    - unwrap_or_default
    - Error::new
    - Err
    - Self::is_empty
    - Some
    - Self::starts_with
    linkageType: ''
    returnType: Result
    signature: fn build(self) -> Result<impl Service>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: clone
      Src: /src/opendal/core/services/swift/src/backend.rs:244,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 245
      start: 243
    functionDepth: 2
    functionLinenumber: 243
    functionLinenumberEnd: 245
    functionName: SwiftBackend::info
    functionSourceFile: /src/opendal/core/services/swift/src/backend.rs
    functionUses: 0
    functionsReached:
    - clone
    linkageType: ''
    returnType: ServiceInfo
    signature: fn info(&self) -> ServiceInfo
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 249
      start: 247
    functionDepth: 0
    functionLinenumber: 247
    functionLinenumberEnd: 249
    functionName: SwiftBackend::capability
    functionSourceFile: /src/opendal/core/services/swift/src/backend.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Capability
    signature: fn capability(&self) -> Capability
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/core/services/swift/src/backend.rs:257,1
    - Dst: Error::new
      Src: /src/opendal/core/services/swift/src/backend.rs:257,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - _ctx
    - _path
    - _args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpCreateDir
    constantsTouched: []
    func_position:
      end: 261
      start: 251
    functionDepth: 36
    functionLinenumber: 251
    functionLinenumberEnd: 261
    functionName: SwiftBackend::create_dir
    functionSourceFile: /src/opendal/core/services/swift/src/backend.rs
    functionUses: 0
    functionsReached:
    - Error::new
    - Err
    linkageType: ''
    returnType: Result
    signature: 'async fn create_dir(&self,_ctx: &OperationContext,_path: &str,_args:
      OpCreateDir,) -> Result<RpCreateDir>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: swift_get_metadata
      Src: /src/opendal/core/services/swift/src/backend.rs:264,1
    - Dst: status
      Src: /src/opendal/core/services/swift/src/backend.rs:266,1
    - Dst: headers
      Src: /src/opendal/core/services/swift/src/backend.rs:268,1
    - Dst: parse_into_metadata
      Src: /src/opendal/core/services/swift/src/backend.rs:269,1
    - Dst: parse_prefixed_headers
      Src: /src/opendal/core/services/swift/src/backend.rs:270,1
    - Dst: HashMap::is_empty
      Src: /src/opendal/core/services/swift/src/backend.rs:271,1
    - Dst: Result::with_user_metadata
      Src: /src/opendal/core/services/swift/src/backend.rs:272,1
    - Dst: Ok
      Src: /src/opendal/core/services/swift/src/backend.rs:275,1
    - Dst: RpStat::new
      Src: /src/opendal/core/services/swift/src/backend.rs:275,1
    - Dst: Err
      Src: /src/opendal/core/services/swift/src/backend.rs:277,1
    - Dst: super::core::parse_error
      Src: /src/opendal/core/services/swift/src/backend.rs:277,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 28
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpStat
    constantsTouched: []
    func_position:
      end: 279
      start: 263
    functionDepth: 39
    functionLinenumber: 263
    functionLinenumberEnd: 279
    functionName: SwiftBackend::stat
    functionSourceFile: /src/opendal/core/services/swift/src/backend.rs
    functionUses: 0
    functionsReached:
    - parse_into_metadata
    - HashMap::is_empty
    - status
    - Ok
    - RpStat::new
    - parse_prefixed_headers
    - Result::with_user_metadata
    - Err
    - swift_get_metadata
    - headers
    - super::core::parse_error
    linkageType: ''
    returnType: Result
    signature: 'async fn stat(&self, ctx: &OperationContext, path: &str, args: OpStat)
      -> Result<RpStat>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/core/services/swift/src/backend.rs:282,1
    - Dst: oio::StreamReader::new
      Src: /src/opendal/core/services/swift/src/backend.rs:282,1
    - Dst: SwiftReader::new
      Src: /src/opendal/core/services/swift/src/backend.rs:282,1
    - Dst: SwiftBackend::clone
      Src: /src/opendal/core/services/swift/src/backend.rs:283,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/swift/src/backend.rs:284,1
    - Dst: Ok
      Src: /src/opendal/core/services/swift/src/backend.rs:290,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpRead
    constantsTouched: []
    func_position:
      end: 291
      start: 280
    functionDepth: 3
    functionLinenumber: 280
    functionLinenumberEnd: 291
    functionName: SwiftBackend::read
    functionSourceFile: /src/opendal/core/services/swift/src/backend.rs
    functionUses: 0
    functionsReached:
    - Result::clone
    - SwiftBackend::clone
    - Ok
    - SwiftReader::new
    - oio::StreamReader::new
    linkageType: ''
    returnType: Result
    signature: 'fn read(&self, ctx: &OperationContext, path: &str, args: OpRead) ->
      Result<Self::Reader>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: OpStat::concurrent
      Src: /src/opendal/core/services/swift/src/backend.rs:295,1
    - Dst: SwiftWriter::new
      Src: /src/opendal/core/services/swift/src/backend.rs:296,1
    - Dst: clone
      Src: /src/opendal/core/services/swift/src/backend.rs:297,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/swift/src/backend.rs:298,1
    - Dst: OpStat::clone
      Src: /src/opendal/core/services/swift/src/backend.rs:299,1
    - Dst: to_string
      Src: /src/opendal/core/services/swift/src/backend.rs:300,1
    - Dst: oio::MultipartWriter::new
      Src: /src/opendal/core/services/swift/src/backend.rs:302,1
    - Dst: Result::executor
      Src: /src/opendal/core/services/swift/src/backend.rs:302,1
    - Dst: Self::clone
      Src: /src/opendal/core/services/swift/src/backend.rs:302,1
    - Dst: Ok
      Src: /src/opendal/core/services/swift/src/backend.rs:304,1
    - Dst: Ok
      Src: /src/opendal/core/services/swift/src/backend.rs:307,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 20
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpWrite
    constantsTouched: []
    func_position:
      end: 308
      start: 293
    functionDepth: 37
    functionLinenumber: 293
    functionLinenumberEnd: 308
    functionName: SwiftBackend::write
    functionSourceFile: /src/opendal/core/services/swift/src/backend.rs
    functionUses: 0
    functionsReached:
    - Result::clone
    - OpStat::clone
    - to_string
    - oio::MultipartWriter::new
    - Ok
    - Result::executor
    - clone
    - SwiftWriter::new
    - OpStat::concurrent
    - Self::clone
    linkageType: ''
    returnType: Result
    signature: 'fn write(&self, ctx: &OperationContext, path: &str, args: OpWrite)
      -> Result<Self::Writer>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/core/services/swift/src/backend.rs:312,1
    - Dst: oio::BatchDeleter::new
      Src: /src/opendal/core/services/swift/src/backend.rs:312,1
    - Dst: SwiftDeleter::new
      Src: /src/opendal/core/services/swift/src/backend.rs:313,1
    - Dst: clone
      Src: /src/opendal/core/services/swift/src/backend.rs:313,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/swift/src/backend.rs:313,1
    - Dst: Ok
      Src: /src/opendal/core/services/swift/src/backend.rs:318,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - '&OperationContext'
    constantsTouched: []
    func_position:
      end: 319
      start: 310
    functionDepth: 4
    functionLinenumber: 310
    functionLinenumberEnd: 319
    functionName: SwiftBackend::delete
    functionSourceFile: /src/opendal/core/services/swift/src/backend.rs
    functionUses: 0
    functionsReached:
    - Result::clone
    - Ok
    - clone
    - SwiftDeleter::new
    - oio::BatchDeleter::new
    linkageType: ''
    returnType: Result
    signature: 'fn delete(&self, ctx: &OperationContext) -> Result<Self::Deleter>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: SwiftLister::new
      Src: /src/opendal/core/services/swift/src/backend.rs:323,1
    - Dst: clone
      Src: /src/opendal/core/services/swift/src/backend.rs:324,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/swift/src/backend.rs:325,1
    - Dst: to_string
      Src: /src/opendal/core/services/swift/src/backend.rs:326,1
    - Dst: OpStat::recursive
      Src: /src/opendal/core/services/swift/src/backend.rs:327,1
    - Dst: OpStat::limit
      Src: /src/opendal/core/services/swift/src/backend.rs:328,1
    - Dst: OpStat::start_after
      Src: /src/opendal/core/services/swift/src/backend.rs:329,1
    - Dst: Result::map
      Src: /src/opendal/core/services/swift/src/backend.rs:329,1
    - Dst: Ok
      Src: /src/opendal/core/services/swift/src/backend.rs:332,1
    - Dst: oio::PageLister::new
      Src: /src/opendal/core/services/swift/src/backend.rs:332,1
    - Dst: Ok
      Src: /src/opendal/core/services/swift/src/backend.rs:335,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 20
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpList
    constantsTouched: []
    func_position:
      end: 336
      start: 321
    functionDepth: 36
    functionLinenumber: 321
    functionLinenumberEnd: 336
    functionName: SwiftBackend::list
    functionSourceFile: /src/opendal/core/services/swift/src/backend.rs
    functionUses: 0
    functionsReached:
    - SwiftLister::new
    - to_string
    - Result::clone
    - Ok
    - OpStat::start_after
    - clone
    - oio::PageLister::new
    - Result::map
    - OpStat::limit
    - OpStat::recursive
    linkageType: ''
    returnType: Result
    signature: 'fn list(&self, ctx: &OperationContext, path: &str, args: OpList) ->
      Result<Self::Lister>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: OpStat::into_parts
      Src: /src/opendal/core/services/swift/src/backend.rs:344,1
    - Dst: Err
      Src: /src/opendal/core/services/swift/src/backend.rs:351,1
    - Dst: Error::new
      Src: /src/opendal/core/services/swift/src/backend.rs:351,1
    - Dst: swift_temp_url
      Src: /src/opendal/core/services/swift/src/backend.rs:358,1
    - Dst: Result::parse
      Src: /src/opendal/core/services/swift/src/backend.rs:359,1
    - Dst: Result::map_err
      Src: /src/opendal/core/services/swift/src/backend.rs:359,1
    - Dst: Error::new
      Src: /src/opendal/core/services/swift/src/backend.rs:360,1
    - Dst: Self::set_source
      Src: /src/opendal/core/services/swift/src/backend.rs:360,1
    - Dst: Ok
      Src: /src/opendal/core/services/swift/src/backend.rs:363,1
    - Dst: RpPresign::new
      Src: /src/opendal/core/services/swift/src/backend.rs:363,1
    - Dst: PresignedRequest::new
      Src: /src/opendal/core/services/swift/src/backend.rs:363,1
    - Dst: http::HeaderMap::new
      Src: /src/opendal/core/services/swift/src/backend.rs:366,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 26
    argCount: 3
    argNames:
    - _ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpPresign
    constantsTouched: []
    func_position:
      end: 368
      start: 338
    functionDepth: 36
    functionLinenumber: 338
    functionLinenumberEnd: 368
    functionName: SwiftBackend::presign
    functionSourceFile: /src/opendal/core/services/swift/src/backend.rs
    functionUses: 0
    functionsReached:
    - Result::map_err
    - http::HeaderMap::new
    - Ok
    - Err
    - swift_temp_url
    - Error::new
    - Result::parse
    - RpPresign::new
    - PresignedRequest::new
    - Self::set_source
    - OpStat::into_parts
    linkageType: ''
    returnType: Result
    signature: 'async fn presign(&self,_ctx: &OperationContext,path: &str,args: OpPresign,)
      -> Result<RpPresign>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: clone
      Src: /src/opendal/core/services/swift/src/backend.rs:378,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/swift/src/backend.rs:379,1
    - Dst: Result::to_string
      Src: /src/opendal/core/services/swift/src/backend.rs:380,1
    - Dst: Result::to_string
      Src: /src/opendal/core/services/swift/src/backend.rs:381,1
    - Dst: Ok
      Src: /src/opendal/core/services/swift/src/backend.rs:383,1
    - Dst: oio::OneShotCopier::new
      Src: /src/opendal/core/services/swift/src/backend.rs:383,1
    - Dst: CompfsCore::swift_copy
      Src: /src/opendal/core/services/swift/src/backend.rs:386,1
    - Dst: status
      Src: /src/opendal/core/services/swift/src/backend.rs:388,1
    - Dst: Ok
      Src: /src/opendal/core/services/swift/src/backend.rs:391,1
    - Dst: Metadata::default
      Src: /src/opendal/core/services/swift/src/backend.rs:391,1
    - Dst: Err
      Src: /src/opendal/core/services/swift/src/backend.rs:392,1
    - Dst: super::core::parse_error
      Src: /src/opendal/core/services/swift/src/backend.rs:392,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 26
    argCount: 5
    argNames:
    - ctx
    - from
    - to
    - _args
    - _opts
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    - OpCopy
    - OpCopier
    constantsTouched: []
    func_position:
      end: 395
      start: 370
    functionDepth: 38
    functionLinenumber: 370
    functionLinenumberEnd: 395
    functionName: SwiftBackend::copy
    functionSourceFile: /src/opendal/core/services/swift/src/backend.rs
    functionUses: 0
    functionsReached:
    - Result::clone
    - Metadata::default
    - Result::to_string
    - Ok
    - CompfsCore::swift_copy
    - status
    - clone
    - Err
    - super::core::parse_error
    - oio::OneShotCopier::new
    linkageType: ''
    returnType: Result
    signature: 'fn copy(&self,ctx: &OperationContext,from: &str,to: &str,_args: OpCopy,_opts:
      OpCopier,) -> Result<Self::Copier>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/core/services/swift/src/backend.rs:404,1
    - Dst: Error::new
      Src: /src/opendal/core/services/swift/src/backend.rs:404,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - _ctx
    - _from
    - _to
    - _args
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    - OpRename
    constantsTouched: []
    func_position:
      end: 408
      start: 397
    functionDepth: 36
    functionLinenumber: 397
    functionLinenumberEnd: 408
    functionName: SwiftBackend::rename
    functionSourceFile: /src/opendal/core/services/swift/src/backend.rs
    functionUses: 0
    functionsReached:
    - Error::new
    - Err
    linkageType: ''
    returnType: Result
    signature: 'async fn rename(&self,_ctx: &OperationContext,_from: &str,_to: &str,_args:
      OpRename,) -> Result<RpRename>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::options
      Src: /src/opendal/core/services/moka/src/config.rs:52,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/moka/src/config.rs:52,1
    - Dst: Result::option
      Src: /src/opendal/core/services/moka/src/config.rs:54,1
    - Dst: Result::insert
      Src: /src/opendal/core/services/moka/src/config.rs:55,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/moka/src/config.rs:55,1
    - Dst: Result::to_string
      Src: /src/opendal/core/services/moka/src/config.rs:55,1
    - Dst: Result::root
      Src: /src/opendal/core/services/moka/src/config.rs:58,1
    - Dst: Result::is_empty
      Src: /src/opendal/core/services/moka/src/config.rs:59,1
    - Dst: Result::insert
      Src: /src/opendal/core/services/moka/src/config.rs:61,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/moka/src/config.rs:61,1
    - Dst: Result::to_string
      Src: /src/opendal/core/services/moka/src/config.rs:61,1
    - Dst: Self::from_iter
      Src: /src/opendal/core/services/moka/src/config.rs:64,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 30
    argCount: 1
    argNames:
    - uri
    argTypes:
    - '&OperatorUri'
    constantsTouched: []
    func_position:
      end: 65
      start: 51
    functionDepth: 35
    functionLinenumber: 51
    functionLinenumberEnd: 65
    functionName: MokaConfig::from_uri
    functionSourceFile: /src/opendal/core/services/moka/src/config.rs
    functionUses: 2
    functionsReached:
    - Result::clone
    - Self::from_iter
    - Result::option
    - Result::to_string
    - Result::insert
    - Result::is_empty
    - '&str::to_string'
    - Result::root
    - Result::options
    linkageType: ''
    returnType: Result
    signature: 'fn from_uri(uri: &OperatorUri) -> Result<Self>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Default::default
      Src: /src/opendal/core/services/moka/src/config.rs:70,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 72
      start: 67
    functionDepth: 3
    functionLinenumber: 67
    functionLinenumberEnd: 72
    functionName: MokaConfig::into_builder
    functionSourceFile: /src/opendal/core/services/moka/src/config.rs
    functionUses: 0
    functionsReached:
    - Default::default
    linkageType: ''
    returnType: Self::Builder
    signature: fn into_builder(self) -> Self::Builder
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: OperatorUri::new
      Src: /src/opendal/core/services/moka/src/config.rs:84,1
    - Dst: Vec::<(String, String)>::new
      Src: /src/opendal/core/services/moka/src/config.rs:84,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/services/moka/src/config.rs:84,1
    - Dst: MokaConfig::from_uri
      Src: /src/opendal/core/services/moka/src/config.rs:86,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/services/moka/src/config.rs:86,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 89
      start: 82
    functionDepth: 29
    functionLinenumber: 82
    functionLinenumberEnd: 89
    functionName: tests::from_uri_sets_name_and_root
    functionSourceFile: /src/opendal/core/services/moka/src/config.rs
    functionUses: 0
    functionsReached:
    - MokaConfig::from_uri
    - Vec::<(String, String)>::new
    - OperatorUri::new
    - Result::unwrap
    linkageType: ''
    returnType: void
    signature: fn from_uri_sets_name_and_root()
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - core
    - root
    argTypes:
    - Arc<MokaCore>
    - String
    constantsTouched: []
    func_position:
      end: 33
      start: 31
    functionDepth: 0
    functionLinenumber: 31
    functionLinenumberEnd: 33
    functionName: MokaDeleter::new
    functionSourceFile: /src/opendal/core/services/moka/src/deleter.rs
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(core: Arc<MokaCore>, root: String) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/moka/src/deleter.rs:38,1
    - Dst: delete
      Src: /src/opendal/core/services/moka/src/deleter.rs:39,1
    - Dst: Ok
      Src: /src/opendal/core/services/moka/src/deleter.rs:40,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 2
    argNames:
    - path
    argTypes:
    - String
    - OpDelete
    constantsTouched: []
    func_position:
      end: 41
      start: 37
    functionDepth: 32
    functionLinenumber: 37
    functionLinenumberEnd: 41
    functionName: MokaDeleter::delete_once
    functionSourceFile: /src/opendal/core/services/moka/src/deleter.rs
    functionUses: 0
    functionsReached:
    - Ok
    - build_abs_path
    - delete
    linkageType: ''
    returnType: Result
    signature: 'async fn delete_once(&self, path: String, _: OpDelete) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: iter
      Src: /src/opendal/core/services/moka/src/lister.rs:33,1
    - Dst: map
      Src: /src/opendal/core/services/moka/src/lister.rs:33,1
    - Dst: FoyerKey::to_string
      Src: /src/opendal/core/services/moka/src/lister.rs:36,1
    - Dst: clone
      Src: /src/opendal/core/services/moka/src/lister.rs:36,1
    - Dst: collect
      Src: /src/opendal/core/services/moka/src/lister.rs:33,1
    - Dst: into_iter
      Src: /src/opendal/core/services/moka/src/lister.rs:41,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 17
    argCount: 3
    argNames:
    - core
    - root
    - _path
    argTypes:
    - Arc<MokaCore>
    - String
    - String
    constantsTouched: []
    func_position:
      end: 43
      start: 32
    functionDepth: 36
    functionLinenumber: 32
    functionLinenumberEnd: 43
    functionName: MokaLister::new
    functionSourceFile: /src/opendal/core/services/moka/src/lister.rs
    functionUses: 2
    functionsReached:
    - collect
    - iter
    - clone
    - FoyerKey::to_string
    - into_iter
    - map
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(core: Arc<MokaCore>, root: String, _path: String) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: next
      Src: /src/opendal/core/services/moka/src/lister.rs:48,1
    - Dst: build_rel_path
      Src: /src/opendal/core/services/moka/src/lister.rs:50,1
    - Dst: is_empty
      Src: /src/opendal/core/services/moka/src/lister.rs:51,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/moka/src/lister.rs:52,1
    - Dst: Ok
      Src: /src/opendal/core/services/moka/src/lister.rs:55,1
    - Dst: Some
      Src: /src/opendal/core/services/moka/src/lister.rs:55,1
    - Dst: oio::Entry::new
      Src: /src/opendal/core/services/moka/src/lister.rs:55,1
    - Dst: Ok
      Src: /src/opendal/core/services/moka/src/lister.rs:57,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 22
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 59
      start: 47
    functionDepth: 4
    functionLinenumber: 47
    functionLinenumberEnd: 59
    functionName: MokaLister::next
    functionSourceFile: /src/opendal/core/services/moka/src/lister.rs
    functionUses: 0
    functionsReached:
    - next
    - oio::Entry::new
    - Ok
    - build_rel_path
    - is_empty
    - Some
    - '&str::to_string'
    linkageType: ''
    returnType: Result
    signature: async fn next(&mut self) -> Result<Option<oio::Entry>>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: to_string
      Src: /src/opendal/core/services/moka/src/reader.rs:32,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - backend
    - path
    argTypes:
    - MokaBackend
    - '&str'
    - OpRead
    constantsTouched: []
    func_position:
      end: 34
      start: 29
    functionDepth: 2
    functionLinenumber: 29
    functionLinenumberEnd: 34
    functionName: MokaReader::new
    functionSourceFile: /src/opendal/core/services/moka/src/reader.rs
    functionUses: 2
    functionsReached:
    - to_string
    linkageType: ''
    returnType: Self
    signature: 'pub(super) fn new(backend: MokaBackend, path: &str, _: OpRead) ->
      Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: as_str
      Src: /src/opendal/core/services/moka/src/reader.rs:40,1
    - Dst: build_abs_path
      Src: /src/opendal/core/services/moka/src/reader.rs:41,1
    - Dst: get
      Src: /src/opendal/core/services/moka/src/reader.rs:43,1
    - Dst: len
      Src: /src/opendal/core/services/moka/src/reader.rs:45,1
    - Dst: slice
      Src: /src/opendal/core/services/moka/src/reader.rs:46,1
    - Dst: (Vec::to_content_range
      Src: /src/opendal/core/services/moka/src/reader.rs:48,1
    - Dst: len
      Src: /src/opendal/core/services/moka/src/reader.rs:48,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/moka/src/reader.rs:49,1
    - Dst: Self::with_content_length
      Src: /src/opendal/core/services/moka/src/reader.rs:49,1
    - Dst: Ok
      Src: /src/opendal/core/services/moka/src/reader.rs:50,1
    - Dst: RpRead::new
      Src: /src/opendal/core/services/moka/src/reader.rs:51,1
    - Dst: Box::new
      Src: /src/opendal/core/services/moka/src/reader.rs:52,1
    - Dst: Err
      Src: /src/opendal/core/services/moka/src/reader.rs:55,1
    - Dst: Error::new
      Src: /src/opendal/core/services/moka/src/reader.rs:55,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 39
    argCount: 1
    argNames:
    - range
    argTypes:
    - BytesRange
    constantsTouched: []
    func_position:
      end: 57
      start: 38
    functionDepth: 37
    functionLinenumber: 38
    functionLinenumberEnd: 57
    functionName: MokaReader::open
    functionSourceFile: /src/opendal/core/services/moka/src/reader.rs
    functionUses: 0
    functionsReached:
    - Metadata::new
    - get
    - slice
    - Ok
    - Box::new
    - Self::with_content_length
    - build_abs_path
    - RpRead::new
    - Err
    - as_str
    - Error::new
    - (Vec::to_content_range
    - len
    linkageType: ''
    returnType: Result
    signature: 'async fn open(&self, range: BytesRange) -> Result<(RpRead, Box<dyn
      oio::ReadStreamDyn>)>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::debug_struct
      Src: /src/opendal/core/services/moka/src/core.rs:40,1
    - Dst: field
      Src: /src/opendal/core/services/moka/src/core.rs:40,1
    - Dst: weighted_size
      Src: /src/opendal/core/services/moka/src/core.rs:41,1
    - Dst: field
      Src: /src/opendal/core/services/moka/src/core.rs:40,1
    - Dst: entry_count
      Src: /src/opendal/core/services/moka/src/core.rs:42,1
    - Dst: finish
      Src: /src/opendal/core/services/moka/src/core.rs:40,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 16
    argCount: 1
    argNames:
    - f
    argTypes:
    - '&mut std::fmt::Formatter<''_>'
    constantsTouched: []
    func_position:
      end: 44
      start: 39
    functionDepth: 5
    functionLinenumber: 39
    functionLinenumberEnd: 44
    functionName: MokaCore::fmt
    functionSourceFile: /src/opendal/core/services/moka/src/core.rs
    functionUses: 0
    functionsReached:
    - finish
    - field
    - weighted_size
    - entry_count
    - Result::debug_struct
    linkageType: ''
    returnType: std::fmt::Result
    signature: 'fn fmt(&self, f: &mut std::fmt::Formatter<''_>) -> std::fmt::Result'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/core/services/moka/src/core.rs:49,1
    - Dst: get
      Src: /src/opendal/core/services/moka/src/core.rs:49,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - key
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 50
      start: 48
    functionDepth: 2
    functionLinenumber: 48
    functionLinenumberEnd: 50
    functionName: MokaCore::get
    functionSourceFile: /src/opendal/core/services/moka/src/core.rs
    functionUses: 0
    functionsReached:
    - get
    - Ok
    linkageType: ''
    returnType: Result
    signature: 'pub async fn get(&self, key: &str) -> Result<Option<MokaValue>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: insert
      Src: /src/opendal/core/services/moka/src/core.rs:53,1
    - Dst: FoyerKey::to_string
      Src: /src/opendal/core/services/moka/src/core.rs:53,1
    - Dst: Ok
      Src: /src/opendal/core/services/moka/src/core.rs:54,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 2
    argNames:
    - key
    - value
    argTypes:
    - '&str'
    - MokaValue
    constantsTouched: []
    func_position:
      end: 55
      start: 52
    functionDepth: 6
    functionLinenumber: 52
    functionLinenumberEnd: 55
    functionName: MokaCore::set
    functionSourceFile: /src/opendal/core/services/moka/src/core.rs
    functionUses: 0
    functionsReached:
    - insert
    - Ok
    - FoyerKey::to_string
    linkageType: ''
    returnType: Result
    signature: 'pub async fn set(&self, key: &str, value: MokaValue) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: invalidate
      Src: /src/opendal/core/services/moka/src/core.rs:58,1
    - Dst: Ok
      Src: /src/opendal/core/services/moka/src/core.rs:59,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - key
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 60
      start: 57
    functionDepth: 0
    functionLinenumber: 57
    functionLinenumberEnd: 60
    functionName: MokaCore::delete
    functionSourceFile: /src/opendal/core/services/moka/src/core.rs
    functionUses: 0
    functionsReached:
    - invalidate
    - Ok
    linkageType: ''
    returnType: Result
    signature: 'pub async fn delete(&self, key: &str) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: oio::QueueBuf::new
      Src: /src/opendal/core/services/moka/src/writer.rs:38,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - core
    - path
    - op
    argTypes:
    - Arc<MokaCore>
    - String
    - OpWrite
    constantsTouched: []
    func_position:
      end: 40
      start: 33
    functionDepth: 4
    functionLinenumber: 33
    functionLinenumberEnd: 40
    functionName: MokaWriter::new
    functionSourceFile: /src/opendal/core/services/moka/src/writer.rs
    functionUses: 2
    functionsReached:
    - oio::QueueBuf::new
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(core: Arc<MokaCore>, path: String, op: OpWrite) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: push
      Src: /src/opendal/core/services/moka/src/writer.rs:45,1
    - Dst: Ok
      Src: /src/opendal/core/services/moka/src/writer.rs:46,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - bs
    argTypes:
    - Buffer
    constantsTouched: []
    func_position:
      end: 47
      start: 44
    functionDepth: 5
    functionLinenumber: 44
    functionLinenumberEnd: 47
    functionName: MokaWriter::write
    functionSourceFile: /src/opendal/core/services/moka/src/writer.rs
    functionUses: 0
    functionsReached:
    - Ok
    - push
    linkageType: ''
    returnType: Result
    signature: 'async fn write(&mut self, bs: Buffer) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: clone
      Src: /src/opendal/core/services/moka/src/writer.rs:50,1
    - Dst: collect
      Src: /src/opendal/core/services/moka/src/writer.rs:50,1
    - Dst: io::Result::len
      Src: /src/opendal/core/services/moka/src/writer.rs:51,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/moka/src/writer.rs:55,1
    - Dst: EntryMode::from_path
      Src: /src/opendal/core/services/moka/src/writer.rs:55,1
    - Dst: Self::with_content_length
      Src: /src/opendal/core/services/moka/src/writer.rs:55,1
    - Dst: content_type
      Src: /src/opendal/core/services/moka/src/writer.rs:57,1
    - Dst: anyhow::Result::set_content_type
      Src: /src/opendal/core/services/moka/src/writer.rs:58,1
    - Dst: content_disposition
      Src: /src/opendal/core/services/moka/src/writer.rs:60,1
    - Dst: anyhow::Result::set_content_disposition
      Src: /src/opendal/core/services/moka/src/writer.rs:61,1
    - Dst: cache_control
      Src: /src/opendal/core/services/moka/src/writer.rs:63,1
    - Dst: anyhow::Result::set_cache_control
      Src: /src/opendal/core/services/moka/src/writer.rs:64,1
    - Dst: content_encoding
      Src: /src/opendal/core/services/moka/src/writer.rs:66,1
    - Dst: anyhow::Result::set_content_encoding
      Src: /src/opendal/core/services/moka/src/writer.rs:67,1
    - Dst: anyhow::Result::clone
      Src: /src/opendal/core/services/moka/src/writer.rs:71,1
    - Dst: set
      Src: /src/opendal/core/services/moka/src/writer.rs:75,1
    - Dst: Ok
      Src: /src/opendal/core/services/moka/src/writer.rs:76,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 58
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 77
      start: 49
    functionDepth: 36
    functionLinenumber: 49
    functionLinenumberEnd: 77
    functionName: MokaWriter::close
    functionSourceFile: /src/opendal/core/services/moka/src/writer.rs
    functionUses: 0
    functionsReached:
    - collect
    - Metadata::new
    - anyhow::Result::set_cache_control
    - cache_control
    - content_encoding
    - Ok
    - io::Result::len
    - Self::with_content_length
    - set
    - EntryMode::from_path
    - clone
    - anyhow::Result::set_content_type
    - anyhow::Result::clone
    - content_disposition
    - content_type
    - anyhow::Result::set_content_encoding
    - anyhow::Result::set_content_disposition
    linkageType: ''
    returnType: Result
    signature: async fn close(&mut self) -> Result<Metadata>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: clear
      Src: /src/opendal/core/services/moka/src/writer.rs:80,1
    - Dst: Ok
      Src: /src/opendal/core/services/moka/src/writer.rs:81,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 82
      start: 79
    functionDepth: 2
    functionLinenumber: 79
    functionLinenumberEnd: 82
    functionName: MokaWriter::abort
    functionSourceFile: /src/opendal/core/services/moka/src/writer.rs
    functionUses: 0
    functionsReached:
    - clear
    - Ok
    linkageType: ''
    returnType: Result
    signature: async fn abort(&mut self) -> Result<()>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: register::<Moka>
      Src: /src/opendal/core/services/moka/src/lib.rs:40,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - registry
    argTypes:
    - '&opendal_core::OperatorRegistry'
    constantsTouched: []
    func_position:
      end: 41
      start: 39
    functionDepth: 0
    functionLinenumber: 39
    functionLinenumberEnd: 41
    functionName: register_moka_service
    functionSourceFile: /src/opendal/core/services/moka/src/lib.rs
    functionUses: 1
    functionsReached:
    - register::<Moka>
    linkageType: ''
    returnType: void
    signature: 'pub fn register_moka_service(registry: &opendal_core::OperatorRegistry)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::debug_struct
      Src: /src/opendal/core/services/moka/src/backend.rs:48,1
    - Dst: field
      Src: /src/opendal/core/services/moka/src/backend.rs:48,1
    - Dst: finish_non_exhaustive
      Src: /src/opendal/core/services/moka/src/backend.rs:48,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - f
    argTypes:
    - '&mut std::fmt::Formatter<''_>'
    constantsTouched: []
    func_position:
      end: 51
      start: 47
    functionDepth: 5
    functionLinenumber: 47
    functionLinenumberEnd: 51
    functionName: MokaBuilder::fmt
    functionSourceFile: /src/opendal/core/services/moka/src/backend.rs
    functionUses: 0
    functionsReached:
    - field
    - Result::debug_struct
    - finish_non_exhaustive
    linkageType: ''
    returnType: std::fmt::Result
    signature: 'fn fmt(&self, f: &mut std::fmt::Formatter<''_>) -> std::fmt::Result'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Default::default
      Src: /src/opendal/core/services/moka/src/backend.rs:87,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - builder
    argTypes:
    - MokaCacheBuilder<String, MokaValue>
    constantsTouched: []
    func_position:
      end: 89
      start: 84
    functionDepth: 3
    functionLinenumber: 84
    functionLinenumberEnd: 89
    functionName: MokaBuilder::new
    functionSourceFile: /src/opendal/core/services/moka/src/backend.rs
    functionUses: 0
    functionsReached:
    - Default::default
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(builder: MokaCacheBuilder<String, MokaValue>) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::is_empty
      Src: /src/opendal/core/services/moka/src/backend.rs:95,1
    - Dst: Some
      Src: /src/opendal/core/services/moka/src/backend.rs:96,1
    - Dst: Result::to_owned
      Src: /src/opendal/core/services/moka/src/backend.rs:96,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 1
    argNames:
    - v
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 99
      start: 94
    functionDepth: 4
    functionLinenumber: 94
    functionLinenumberEnd: 99
    functionName: MokaBuilder::name
    functionSourceFile: /src/opendal/core/services/moka/src/backend.rs
    functionUses: 0
    functionsReached:
    - Result::to_owned
    - Result::is_empty
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn name(mut self, v: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Some
      Src: /src/opendal/core/services/moka/src/backend.rs:106,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - v
    argTypes:
    - u64
    constantsTouched: []
    func_position:
      end: 109
      start: 104
    functionDepth: 0
    functionLinenumber: 104
    functionLinenumberEnd: 109
    functionName: MokaBuilder::max_capacity
    functionSourceFile: /src/opendal/core/services/moka/src/backend.rs
    functionUses: 0
    functionsReached:
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn max_capacity(mut self, v: u64) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::is_zero
      Src: /src/opendal/core/services/moka/src/backend.rs:115,1
    - Dst: Some
      Src: /src/opendal/core/services/moka/src/backend.rs:116,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - v
    argTypes:
    - Duration
    constantsTouched: []
    func_position:
      end: 119
      start: 114
    functionDepth: 0
    functionLinenumber: 114
    functionLinenumberEnd: 119
    functionName: MokaBuilder::time_to_live
    functionSourceFile: /src/opendal/core/services/moka/src/backend.rs
    functionUses: 0
    functionsReached:
    - Result::is_zero
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn time_to_live(mut self, v: Duration) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::is_zero
      Src: /src/opendal/core/services/moka/src/backend.rs:125,1
    - Dst: Some
      Src: /src/opendal/core/services/moka/src/backend.rs:126,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - v
    argTypes:
    - Duration
    constantsTouched: []
    func_position:
      end: 129
      start: 124
    functionDepth: 0
    functionLinenumber: 124
    functionLinenumberEnd: 129
    functionName: MokaBuilder::time_to_idle
    functionSourceFile: /src/opendal/core/services/moka/src/backend.rs
    functionUses: 0
    functionsReached:
    - Result::is_zero
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn time_to_idle(mut self, v: Duration) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: is_empty
      Src: /src/opendal/core/services/moka/src/backend.rs:133,1
    - Dst: Some
      Src: /src/opendal/core/services/moka/src/backend.rs:136,1
    - Dst: to_string
      Src: /src/opendal/core/services/moka/src/backend.rs:136,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - path
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 139
      start: 132
    functionDepth: 4
    functionLinenumber: 132
    functionLinenumberEnd: 139
    functionName: MokaBuilder::root
    functionSourceFile: /src/opendal/core/services/moka/src/backend.rs
    functionUses: 0
    functionsReached:
    - to_string
    - Some
    - is_empty
    linkageType: ''
    returnType: Self
    signature: 'pub fn root(mut self, path: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: normalize_root
      Src: /src/opendal/core/services/moka/src/backend.rs:148,1
    - Dst: clone
      Src: /src/opendal/core/services/moka/src/backend.rs:149,1
    - Dst: unwrap_or_else
      Src: /src/opendal/core/services/moka/src/backend.rs:149,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/moka/src/backend.rs:152,1
    - Dst: as_str
      Src: /src/opendal/core/services/moka/src/backend.rs:149,1
    - Dst: OtelMetricsLayerBuilder::name
      Src: /src/opendal/core/services/moka/src/backend.rs:159,1
    - Dst: OtelMetricsLayerBuilder::max_capacity
      Src: /src/opendal/core/services/moka/src/backend.rs:162,1
    - Dst: as_deref
      Src: /src/opendal/core/services/moka/src/backend.rs:164,1
    - Dst: signed_to_duration
      Src: /src/opendal/core/services/moka/src/backend.rs:165,1
    - Dst: OtelMetricsLayerBuilder::time_to_live
      Src: /src/opendal/core/services/moka/src/backend.rs:166,1
    - Dst: as_deref
      Src: /src/opendal/core/services/moka/src/backend.rs:168,1
    - Dst: signed_to_duration
      Src: /src/opendal/core/services/moka/src/backend.rs:169,1
    - Dst: OtelMetricsLayerBuilder::time_to_idle
      Src: /src/opendal/core/services/moka/src/backend.rs:170,1
    - Dst: OtelMetricsLayerBuilder::build
      Src: /src/opendal/core/services/moka/src/backend.rs:176,1
    - Dst: Ok
      Src: /src/opendal/core/services/moka/src/backend.rs:179,1
    - Dst: MokaBackend::new
      Src: /src/opendal/core/services/moka/src/backend.rs:179,1
    - Dst: Self::with_normalized_root
      Src: /src/opendal/core/services/moka/src/backend.rs:179,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 63
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 180
      start: 145
    functionDepth: 34
    functionLinenumber: 145
    functionLinenumberEnd: 180
    functionName: MokaBuilder::build
    functionSourceFile: /src/opendal/core/services/moka/src/backend.rs
    functionUses: 0
    functionsReached:
    - OtelMetricsLayerBuilder::name
    - Ok
    - OtelMetricsLayerBuilder::time_to_idle
    - as_deref
    - MokaBackend::new
    - clone
    - normalize_root
    - OtelMetricsLayerBuilder::max_capacity
    - as_str
    - '&str::to_string'
    - OtelMetricsLayerBuilder::time_to_live
    - signed_to_duration
    - Self::with_normalized_root
    - unwrap_or_else
    - OtelMetricsLayerBuilder::build
    linkageType: ''
    returnType: Result
    signature: fn build(self) -> Result<impl Service>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: ServiceInfo::new
      Src: /src/opendal/core/services/moka/src/backend.rs:193,1
    - Dst: name
      Src: /src/opendal/core/services/moka/src/backend.rs:193,1
    - Dst: unwrap_or
      Src: /src/opendal/core/services/moka/src/backend.rs:193,1
    - Dst: Default::default
      Src: /src/opendal/core/services/moka/src/backend.rs:205,1
    - Dst: Arc::new
      Src: /src/opendal/core/services/moka/src/backend.rs:209,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/moka/src/backend.rs:210,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 1
    argNames:
    - core
    argTypes:
    - MokaCore
    constantsTouched: []
    func_position:
      end: 214
      start: 192
    functionDepth: 33
    functionLinenumber: 192
    functionLinenumberEnd: 214
    functionName: MokaBackend::new
    functionSourceFile: /src/opendal/core/services/moka/src/backend.rs
    functionUses: 2
    functionsReached:
    - ServiceInfo::new
    - Arc::new
    - name
    - Default::default
    - '&str::to_string'
    - unwrap_or
    linkageType: ''
    returnType: Self
    signature: 'fn new(core: MokaCore) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: with_root
      Src: /src/opendal/core/services/moka/src/backend.rs:217,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 1
    argNames:
    - root
    argTypes:
    - String
    constantsTouched: []
    func_position:
      end: 220
      start: 216
    functionDepth: 33
    functionLinenumber: 216
    functionLinenumberEnd: 220
    functionName: MokaBackend::with_normalized_root
    functionSourceFile: /src/opendal/core/services/moka/src/backend.rs
    functionUses: 0
    functionsReached:
    - with_root
    linkageType: ''
    returnType: Self
    signature: 'fn with_normalized_root(mut self, root: String) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: clone
      Src: /src/opendal/core/services/moka/src/backend.rs:231,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 232
      start: 230
    functionDepth: 2
    functionLinenumber: 230
    functionLinenumberEnd: 232
    functionName: MokaBackend::info
    functionSourceFile: /src/opendal/core/services/moka/src/backend.rs
    functionUses: 0
    functionsReached:
    - clone
    linkageType: ''
    returnType: ServiceInfo
    signature: fn info(&self) -> ServiceInfo
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 236
      start: 234
    functionDepth: 0
    functionLinenumber: 234
    functionLinenumberEnd: 236
    functionName: MokaBackend::capability
    functionSourceFile: /src/opendal/core/services/moka/src/backend.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Capability
    signature: fn capability(&self) -> Capability
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/core/services/moka/src/backend.rs:244,1
    - Dst: Error::new
      Src: /src/opendal/core/services/moka/src/backend.rs:244,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - _ctx
    - _path
    - _args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpCreateDir
    constantsTouched: []
    func_position:
      end: 248
      start: 238
    functionDepth: 36
    functionLinenumber: 238
    functionLinenumberEnd: 248
    functionName: MokaBackend::create_dir
    functionSourceFile: /src/opendal/core/services/moka/src/backend.rs
    functionUses: 0
    functionsReached:
    - Error::new
    - Err
    linkageType: ''
    returnType: Result
    signature: 'async fn create_dir(&self,_ctx: &OperationContext,_path: &str,_args:
      OpCreateDir,) -> Result<RpCreateDir>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/moka/src/backend.rs:251,1
    - Dst: build_abs_path
      Src: /src/opendal/core/services/moka/src/backend.rs:253,1
    - Dst: Ok
      Src: /src/opendal/core/services/moka/src/backend.rs:254,1
    - Dst: RpStat::new
      Src: /src/opendal/core/services/moka/src/backend.rs:254,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/moka/src/backend.rs:254,1
    - Dst: get
      Src: /src/opendal/core/services/moka/src/backend.rs:257,1
    - Dst: clone
      Src: /src/opendal/core/services/moka/src/backend.rs:260,1
    - Dst: ends_with
      Src: /src/opendal/core/services/moka/src/backend.rs:263,1
    - Dst: anyhow::Result::mode
      Src: /src/opendal/core/services/moka/src/backend.rs:263,1
    - Dst: anyhow::Result::set_mode
      Src: /src/opendal/core/services/moka/src/backend.rs:264,1
    - Dst: Ok
      Src: /src/opendal/core/services/moka/src/backend.rs:266,1
    - Dst: RpStat::new
      Src: /src/opendal/core/services/moka/src/backend.rs:266,1
    - Dst: ends_with
      Src: /src/opendal/core/services/moka/src/backend.rs:270,1
    - Dst: iter
      Src: /src/opendal/core/services/moka/src/backend.rs:271,1
    - Dst: any
      Src: /src/opendal/core/services/moka/src/backend.rs:271,1
    - Dst: starts_with
      Src: /src/opendal/core/services/moka/src/backend.rs:275,1
    - Dst: len
      Src: /src/opendal/core/services/moka/src/backend.rs:275,1
    - Dst: len
      Src: /src/opendal/core/services/moka/src/backend.rs:275,1
    - Dst: Ok
      Src: /src/opendal/core/services/moka/src/backend.rs:278,1
    - Dst: RpStat::new
      Src: /src/opendal/core/services/moka/src/backend.rs:278,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/moka/src/backend.rs:278,1
    - Dst: Err
      Src: /src/opendal/core/services/moka/src/backend.rs:280,1
    - Dst: Error::new
      Src: /src/opendal/core/services/moka/src/backend.rs:280,1
    - Dst: Err
      Src: /src/opendal/core/services/moka/src/backend.rs:283,1
    - Dst: Error::new
      Src: /src/opendal/core/services/moka/src/backend.rs:283,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 67
    argCount: 3
    argNames:
    - _ctx
    - path
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpStat
    constantsTouched: []
    func_position:
      end: 288
      start: 250
    functionDepth: 36
    functionLinenumber: 250
    functionLinenumberEnd: 288
    functionName: MokaBackend::stat
    functionSourceFile: /src/opendal/core/services/moka/src/backend.rs
    functionUses: 0
    functionsReached:
    - Metadata::new
    - get
    - iter
    - starts_with
    - Ok
    - anyhow::Result::set_mode
    - anyhow::Result::mode
    - RpStat::new
    - ends_with
    - clone
    - build_abs_path
    - Err
    - Error::new
    - len
    - any
    linkageType: ''
    returnType: Result
    signature: 'async fn stat(&self, _ctx: &OperationContext, path: &str, _: OpStat)
      -> Result<RpStat>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/core/services/moka/src/backend.rs:291,1
    - Dst: oio::StreamReader::new
      Src: /src/opendal/core/services/moka/src/backend.rs:291,1
    - Dst: MokaReader::new
      Src: /src/opendal/core/services/moka/src/backend.rs:291,1
    - Dst: MokaBackend::clone
      Src: /src/opendal/core/services/moka/src/backend.rs:292,1
    - Dst: Ok
      Src: /src/opendal/core/services/moka/src/backend.rs:298,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - _ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpRead
    constantsTouched: []
    func_position:
      end: 299
      start: 289
    functionDepth: 3
    functionLinenumber: 289
    functionLinenumberEnd: 299
    functionName: MokaBackend::read
    functionSourceFile: /src/opendal/core/services/moka/src/backend.rs
    functionUses: 0
    functionsReached:
    - oio::StreamReader::new
    - MokaReader::new
    - Ok
    - MokaBackend::clone
    linkageType: ''
    returnType: Result
    signature: 'fn read(&self, _ctx: &OperationContext, path: &str, args: OpRead)
      -> Result<Self::Reader>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/moka/src/backend.rs:303,1
    - Dst: Ok
      Src: /src/opendal/core/services/moka/src/backend.rs:304,1
    - Dst: MokaWriter::new
      Src: /src/opendal/core/services/moka/src/backend.rs:304,1
    - Dst: clone
      Src: /src/opendal/core/services/moka/src/backend.rs:304,1
    - Dst: Ok
      Src: /src/opendal/core/services/moka/src/backend.rs:307,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 3
    argNames:
    - _ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpWrite
    constantsTouched: []
    func_position:
      end: 308
      start: 301
    functionDepth: 5
    functionLinenumber: 301
    functionLinenumberEnd: 308
    functionName: MokaBackend::write
    functionSourceFile: /src/opendal/core/services/moka/src/backend.rs
    functionUses: 0
    functionsReached:
    - MokaWriter::new
    - Ok
    - clone
    - build_abs_path
    linkageType: ''
    returnType: Result
    signature: 'fn write(&self, _ctx: &OperationContext, path: &str, args: OpWrite)
      -> Result<Self::Writer>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/core/services/moka/src/backend.rs:312,1
    - Dst: oio::OneShotDeleter::new
      Src: /src/opendal/core/services/moka/src/backend.rs:312,1
    - Dst: MokaDeleter::new
      Src: /src/opendal/core/services/moka/src/backend.rs:312,1
    - Dst: clone
      Src: /src/opendal/core/services/moka/src/backend.rs:313,1
    - Dst: clone
      Src: /src/opendal/core/services/moka/src/backend.rs:314,1
    - Dst: Ok
      Src: /src/opendal/core/services/moka/src/backend.rs:318,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 1
    argNames:
    - _ctx
    argTypes:
    - '&OperationContext'
    constantsTouched: []
    func_position:
      end: 319
      start: 310
    functionDepth: 2
    functionLinenumber: 310
    functionLinenumberEnd: 319
    functionName: MokaBackend::delete
    functionSourceFile: /src/opendal/core/services/moka/src/backend.rs
    functionUses: 0
    functionsReached:
    - oio::OneShotDeleter::new
    - MokaDeleter::new
    - clone
    - Ok
    linkageType: ''
    returnType: Result
    signature: 'fn delete(&self, _ctx: &OperationContext) -> Result<Self::Deleter>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: MokaLister::new
      Src: /src/opendal/core/services/moka/src/backend.rs:325,1
    - Dst: clone
      Src: /src/opendal/core/services/moka/src/backend.rs:325,1
    - Dst: clone
      Src: /src/opendal/core/services/moka/src/backend.rs:325,1
    - Dst: to_string
      Src: /src/opendal/core/services/moka/src/backend.rs:325,1
    - Dst: oio::HierarchyLister::new
      Src: /src/opendal/core/services/moka/src/backend.rs:326,1
    - Dst: OpStat::recursive
      Src: /src/opendal/core/services/moka/src/backend.rs:326,1
    - Dst: Ok
      Src: /src/opendal/core/services/moka/src/backend.rs:327,1
    - Dst: Ok
      Src: /src/opendal/core/services/moka/src/backend.rs:330,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 15
    argCount: 3
    argNames:
    - _ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpList
    constantsTouched: []
    func_position:
      end: 331
      start: 321
    functionDepth: 37
    functionLinenumber: 321
    functionLinenumberEnd: 331
    functionName: MokaBackend::list
    functionSourceFile: /src/opendal/core/services/moka/src/backend.rs
    functionUses: 0
    functionsReached:
    - oio::HierarchyLister::new
    - to_string
    - MokaLister::new
    - Ok
    - clone
    - OpStat::recursive
    linkageType: ''
    returnType: Result
    signature: 'fn list(&self, _ctx: &OperationContext, path: &str, args: OpList)
      -> Result<Self::Lister>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/core/services/moka/src/backend.rs:341,1
    - Dst: Error::new
      Src: /src/opendal/core/services/moka/src/backend.rs:341,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 5
    argNames:
    - _ctx
    - _from
    - _to
    - _args
    - _opts
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    - OpCopy
    - OpCopier
    constantsTouched: []
    func_position:
      end: 345
      start: 333
    functionDepth: 36
    functionLinenumber: 333
    functionLinenumberEnd: 345
    functionName: MokaBackend::copy
    functionSourceFile: /src/opendal/core/services/moka/src/backend.rs
    functionUses: 0
    functionsReached:
    - Error::new
    - Err
    linkageType: ''
    returnType: Result
    signature: 'fn copy(&self,_ctx: &OperationContext,_from: &str,_to: &str,_args:
      OpCopy,_opts: OpCopier,) -> Result<Self::Copier>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/core/services/moka/src/backend.rs:354,1
    - Dst: Error::new
      Src: /src/opendal/core/services/moka/src/backend.rs:354,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - _ctx
    - _from
    - _to
    - _args
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    - OpRename
    constantsTouched: []
    func_position:
      end: 358
      start: 347
    functionDepth: 36
    functionLinenumber: 347
    functionLinenumberEnd: 358
    functionName: MokaBackend::rename
    functionSourceFile: /src/opendal/core/services/moka/src/backend.rs
    functionUses: 0
    functionsReached:
    - Error::new
    - Err
    linkageType: ''
    returnType: Result
    signature: 'async fn rename(&self,_ctx: &OperationContext,_from: &str,_to: &str,_args:
      OpRename,) -> Result<RpRename>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/core/services/moka/src/backend.rs:366,1
    - Dst: Error::new
      Src: /src/opendal/core/services/moka/src/backend.rs:366,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - _ctx
    - _path
    - _args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpPresign
    constantsTouched: []
    func_position:
      end: 370
      start: 360
    functionDepth: 36
    functionLinenumber: 360
    functionLinenumberEnd: 370
    functionName: MokaBackend::presign
    functionSourceFile: /src/opendal/core/services/moka/src/backend.rs
    functionUses: 0
    functionsReached:
    - Error::new
    - Err
    linkageType: ''
    returnType: Result
    signature: 'async fn presign(&self,_ctx: &OperationContext,_path: &str,_args:
      OpPresign,) -> Result<RpPresign>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::debug_struct
      Src: /src/opendal/core/services/gdrive/src/config.rs:44,1
    - Dst: field
      Src: /src/opendal/core/services/gdrive/src/config.rs:44,1
    - Dst: finish_non_exhaustive
      Src: /src/opendal/core/services/gdrive/src/config.rs:44,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - f
    argTypes:
    - '&mut std::fmt::Formatter<''_>'
    constantsTouched: []
    func_position:
      end: 47
      start: 43
    functionDepth: 5
    functionLinenumber: 43
    functionLinenumberEnd: 47
    functionName: GdriveConfig::fmt
    functionSourceFile: /src/opendal/core/services/gdrive/src/config.rs
    functionUses: 0
    functionsReached:
    - field
    - Result::debug_struct
    - finish_non_exhaustive
    linkageType: ''
    returnType: std::fmt::Result
    signature: 'fn fmt(&self, f: &mut std::fmt::Formatter<''_>) -> std::fmt::Result'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::options
      Src: /src/opendal/core/services/gdrive/src/config.rs:54,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/gdrive/src/config.rs:54,1
    - Dst: Result::root
      Src: /src/opendal/core/services/gdrive/src/config.rs:56,1
    - Dst: Result::is_empty
      Src: /src/opendal/core/services/gdrive/src/config.rs:57,1
    - Dst: Result::insert
      Src: /src/opendal/core/services/gdrive/src/config.rs:59,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/gdrive/src/config.rs:59,1
    - Dst: Result::to_string
      Src: /src/opendal/core/services/gdrive/src/config.rs:59,1
    - Dst: Self::from_iter
      Src: /src/opendal/core/services/gdrive/src/config.rs:62,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 19
    argCount: 1
    argNames:
    - uri
    argTypes:
    - '&opendal_core::OperatorUri'
    constantsTouched: []
    func_position:
      end: 63
      start: 53
    functionDepth: 35
    functionLinenumber: 53
    functionLinenumberEnd: 63
    functionName: GdriveConfig::from_uri
    functionSourceFile: /src/opendal/core/services/gdrive/src/config.rs
    functionUses: 0
    functionsReached:
    - Result::clone
    - Self::from_iter
    - Result::to_string
    - Result::insert
    - Result::is_empty
    - Result::root
    - '&str::to_string'
    - Result::options
    linkageType: ''
    returnType: opendal_core::Result
    signature: 'fn from_uri(uri: &opendal_core::OperatorUri) -> opendal_core::Result<Self>'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 67
      start: 65
    functionDepth: 0
    functionLinenumber: 65
    functionLinenumberEnd: 67
    functionName: GdriveConfig::into_builder
    functionSourceFile: /src/opendal/core/services/gdrive/src/config.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Self::Builder
    signature: fn into_builder(self) -> Self::Builder
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - core
    - ctx
    argTypes:
    - Arc<GdriveCore>
    - OperationContext
    constantsTouched: []
    func_position:
      end: 35
      start: 33
    functionDepth: 0
    functionLinenumber: 33
    functionLinenumberEnd: 35
    functionName: GdriveDeleter::new
    functionSourceFile: /src/opendal/core/services/gdrive/src/deleter.rs
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(core: Arc<GdriveCore>, ctx: OperationContext) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/gdrive/src/deleter.rs:40,1
    - Dst: resolve_path
      Src: /src/opendal/core/services/gdrive/src/deleter.rs:41,1
    - Dst: resolve_path_after_refresh
      Src: /src/opendal/core/services/gdrive/src/deleter.rs:43,1
    - Dst: Ok
      Src: /src/opendal/core/services/gdrive/src/deleter.rs:49,1
    - Dst: ends_with
      Src: /src/opendal/core/services/gdrive/src/deleter.rs:53,1
    - Dst: gdrive_stat_by_id
      Src: /src/opendal/core/services/gdrive/src/deleter.rs:56,1
    - Dst: status
      Src: /src/opendal/core/services/gdrive/src/deleter.rs:57,1
    - Dst: resolve_path_after_refresh
      Src: /src/opendal/core/services/gdrive/src/deleter.rs:58,1
    - Dst: Ok
      Src: /src/opendal/core/services/gdrive/src/deleter.rs:64,1
    - Dst: gdrive_stat_by_id
      Src: /src/opendal/core/services/gdrive/src/deleter.rs:66,1
    - Dst: status
      Src: /src/opendal/core/services/gdrive/src/deleter.rs:69,1
    - Dst: Ok
      Src: /src/opendal/core/services/gdrive/src/deleter.rs:70,1
    - Dst: status
      Src: /src/opendal/core/services/gdrive/src/deleter.rs:72,1
    - Dst: Err
      Src: /src/opendal/core/services/gdrive/src/deleter.rs:73,1
    - Dst: super::core::parse_error
      Src: /src/opendal/core/services/gdrive/src/deleter.rs:73,1
    - Dst: into_body
      Src: /src/opendal/core/services/gdrive/src/deleter.rs:76,1
    - Dst: to_bytes
      Src: /src/opendal/core/services/gdrive/src/deleter.rs:76,1
    - Dst: serde_json::from_slice
      Src: /src/opendal/core/services/gdrive/src/deleter.rs:78,1
    - Dst: map_err
      Src: /src/opendal/core/services/gdrive/src/deleter.rs:78,1
    - Dst: gdrive_trash
      Src: /src/opendal/core/services/gdrive/src/deleter.rs:82,1
    - Dst: status
      Src: /src/opendal/core/services/gdrive/src/deleter.rs:83,1
    - Dst: refresh_dir_path
      Src: /src/opendal/core/services/gdrive/src/deleter.rs:85,1
    - Dst: refresh_path
      Src: /src/opendal/core/services/gdrive/src/deleter.rs:87,1
    - Dst: resolve_path
      Src: /src/opendal/core/services/gdrive/src/deleter.rs:90,1
    - Dst: Ok
      Src: /src/opendal/core/services/gdrive/src/deleter.rs:92,1
    - Dst: gdrive_trash
      Src: /src/opendal/core/services/gdrive/src/deleter.rs:95,1
    - Dst: status
      Src: /src/opendal/core/services/gdrive/src/deleter.rs:98,1
    - Dst: Ok
      Src: /src/opendal/core/services/gdrive/src/deleter.rs:99,1
    - Dst: status
      Src: /src/opendal/core/services/gdrive/src/deleter.rs:101,1
    - Dst: Err
      Src: /src/opendal/core/services/gdrive/src/deleter.rs:102,1
    - Dst: super::core::parse_error
      Src: /src/opendal/core/services/gdrive/src/deleter.rs:102,1
    - Dst: invalidate_dir_id
      Src: /src/opendal/core/services/gdrive/src/deleter.rs:106,1
    - Dst: record_recent_delete
      Src: /src/opendal/core/services/gdrive/src/deleter.rs:107,1
    - Dst: invalidate_file_id
      Src: /src/opendal/core/services/gdrive/src/deleter.rs:109,1
    - Dst: record_recent_delete
      Src: /src/opendal/core/services/gdrive/src/deleter.rs:110,1
    - Dst: Ok
      Src: /src/opendal/core/services/gdrive/src/deleter.rs:113,1
    CyclomaticComplexity: 36
    EdgeCount: 36
    ICount: 192
    argCount: 2
    argNames:
    - path
    argTypes:
    - String
    - OpDelete
    constantsTouched: []
    func_position:
      end: 114
      start: 39
    functionDepth: 36
    functionLinenumber: 39
    functionLinenumberEnd: 114
    functionName: GdriveDeleter::delete_once
    functionSourceFile: /src/opendal/core/services/gdrive/src/deleter.rs
    functionUses: 0
    functionsReached:
    - invalidate_dir_id
    - status
    - ends_with
    - resolve_path_after_refresh
    - map_err
    - Ok
    - serde_json::from_slice
    - into_body
    - build_abs_path
    - invalidate_file_id
    - to_bytes
    - super::core::parse_error
    - refresh_path
    - gdrive_trash
    - refresh_dir_path
    - Err
    - resolve_path
    - record_recent_delete
    - gdrive_stat_by_id
    linkageType: ''
    returnType: Result
    signature: 'async fn delete_once(&self, path: String, _: OpDelete) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Mutex::new
      Src: /src/opendal/core/services/gdrive/src/path_index.rs:62,1
    - Dst: GdrivePathIndexState::default
      Src: /src/opendal/core/services/gdrive/src/path_index.rs:62,1
    - Dst: Mutex::new
      Src: /src/opendal/core/services/gdrive/src/path_index.rs:63,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - query
    argTypes:
    - Q
    constantsTouched: []
    func_position:
      end: 65
      start: 59
    functionDepth: 2
    functionLinenumber: 59
    functionLinenumberEnd: 65
    functionName: GdrivePathIndex::new
    functionSourceFile: /src/opendal/core/services/gdrive/src/path_index.rs
    functionUses: 7
    functionsReached:
    - GdrivePathIndexState::default
    - Mutex::new
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(query: Q) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: root
      Src: /src/opendal/core/services/gdrive/src/path_index.rs:68,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - '&OperationContext'
    constantsTouched: []
    func_position:
      end: 69
      start: 67
    functionDepth: 32
    functionLinenumber: 67
    functionLinenumberEnd: 69
    functionName: GdrivePathIndex::root_id
    functionSourceFile: /src/opendal/core/services/gdrive/src/path_index.rs
    functionUses: 3
    functionsReached:
    - root
    linkageType: ''
    returnType: Result
    signature: 'async fn root_id(&self, ctx: &OperationContext) -> Result<String>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: super::core::normalize_dir_path
      Src: /src/opendal/core/services/gdrive/src/path_index.rs:72,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - path
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 73
      start: 71
    functionDepth: 0
    functionLinenumber: 71
    functionLinenumberEnd: 73
    functionName: GdrivePathIndex::canonical_dir_path
    functionSourceFile: /src/opendal/core/services/gdrive/src/path_index.rs
    functionUses: 0
    functionsReached:
    - super::core::normalize_dir_path
    linkageType: ''
    returnType: String
    signature: 'fn canonical_dir_path(path: &str) -> String'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: remove
      Src: /src/opendal/core/services/gdrive/src/path_index.rs:76,1
    - Dst: Self::canonical_dir_path
      Src: /src/opendal/core/services/gdrive/src/path_index.rs:78,1
    - Dst: remove
      Src: /src/opendal/core/services/gdrive/src/path_index.rs:80,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 2
    argNames:
    - entries
    - path
    argTypes:
    - '&mut HashMap<String, String>'
    - '&str'
    constantsTouched: []
    func_position:
      end: 82
      start: 75
    functionDepth: 36
    functionLinenumber: 75
    functionLinenumberEnd: 82
    functionName: GdrivePathIndex::remove_path_candidates
    functionSourceFile: /src/opendal/core/services/gdrive/src/path_index.rs
    functionUses: 0
    functionsReached:
    - remove
    - Self::canonical_dir_path
    linkageType: ''
    returnType: void
    signature: 'fn remove_path_candidates(entries: &mut HashMap<String, String>, path:
      &str)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: get
      Src: /src/opendal/core/services/gdrive/src/path_index.rs:85,1
    - Dst: Some
      Src: /src/opendal/core/services/gdrive/src/path_index.rs:86,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/gdrive/src/path_index.rs:86,1
    - Dst: Self::canonical_dir_path
      Src: /src/opendal/core/services/gdrive/src/path_index.rs:89,1
    - Dst: get
      Src: /src/opendal/core/services/gdrive/src/path_index.rs:91,1
    - Dst: Option::cloned
      Src: /src/opendal/core/services/gdrive/src/path_index.rs:91,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 20
    argCount: 2
    argNames:
    - entries
    - path
    argTypes:
    - '&HashMap<String, String>'
    - '&str'
    constantsTouched: []
    func_position:
      end: 95
      start: 84
    functionDepth: 2
    functionLinenumber: 84
    functionLinenumberEnd: 95
    functionName: GdrivePathIndex::lookup_cached_id
    functionSourceFile: /src/opendal/core/services/gdrive/src/path_index.rs
    functionUses: 0
    functionsReached:
    - Result::clone
    - get
    - Some
    - Self::canonical_dir_path
    - Option::cloned
    linkageType: ''
    returnType: Option
    signature: 'fn lookup_cached_id(entries: &HashMap<String, String>, path: &str)
      -> Option<String>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: VecDeque::new
      Src: /src/opendal/core/services/gdrive/src/path_index.rs:98,1
    - Dst: Result::is_empty
      Src: /src/opendal/core/services/gdrive/src/path_index.rs:101,1
    - Dst: push_front
      Src: /src/opendal/core/services/gdrive/src/path_index.rs:102,1
    - Dst: Result::to_string
      Src: /src/opendal/core/services/gdrive/src/path_index.rs:102,1
    - Dst: get_parent
      Src: /src/opendal/core/services/gdrive/src/path_index.rs:103,1
    - Dst: into_iter
      Src: /src/opendal/core/services/gdrive/src/path_index.rs:106,1
    - Dst: collect
      Src: /src/opendal/core/services/gdrive/src/path_index.rs:106,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 20
    argCount: 1
    argNames:
    - path
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 107
      start: 97
    functionDepth: 36
    functionLinenumber: 97
    functionLinenumberEnd: 107
    functionName: GdrivePathIndex::resolution_chain
    functionSourceFile: /src/opendal/core/services/gdrive/src/path_index.rs
    functionUses: 0
    functionsReached:
    - push_front
    - collect
    - Result::to_string
    - get_parent
    - into_iter
    - VecDeque::new
    - Result::is_empty
    linkageType: ''
    returnType: Vec
    signature: 'fn resolution_chain(path: &str) -> Vec<String>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: into_iter
      Src: /src/opendal/core/services/gdrive/src/path_index.rs:118,1
    - Dst: skip
      Src: /src/opendal/core/services/gdrive/src/path_index.rs:118,1
    - Dst: get_basename
      Src: /src/opendal/core/services/gdrive/src/path_index.rs:119,1
    - Dst: query
      Src: /src/opendal/core/services/gdrive/src/path_index.rs:120,1
    - Dst: Self::ends_with
      Src: /src/opendal/core/services/gdrive/src/path_index.rs:123,1
    - Dst: GdrivePathIndex::upsert_dir
      Src: /src/opendal/core/services/gdrive/src/path_index.rs:124,1
    - Dst: GdrivePathIndex::upsert_file
      Src: /src/opendal/core/services/gdrive/src/path_index.rs:126,1
    - Dst: Ok
      Src: /src/opendal/core/services/gdrive/src/path_index.rs:130,1
    - Dst: Ok
      Src: /src/opendal/core/services/gdrive/src/path_index.rs:134,1
    - Dst: Some
      Src: /src/opendal/core/services/gdrive/src/path_index.rs:134,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 37
    argCount: 4
    argNames:
    - ctx
    - chain
    - start_index
    - start_id
    argTypes:
    - '&OperationContext'
    - Vec<String>
    - usize
    - String
    constantsTouched: []
    func_position:
      end: 135
      start: 109
    functionDepth: 36
    functionLinenumber: 109
    functionLinenumberEnd: 135
    functionName: GdrivePathIndex::resolve_from_chain
    functionSourceFile: /src/opendal/core/services/gdrive/src/path_index.rs
    functionUses: 1
    functionsReached:
    - GdrivePathIndex::upsert_dir
    - GdrivePathIndex::upsert_file
    - Self::ends_with
    - Ok
    - get_basename
    - into_iter
    - Some
    - skip
    - query
    linkageType: ''
    returnType: Result
    signature: 'async fn resolve_from_chain(&self,ctx: &OperationContext,chain: Vec<String>,start_index:
      usize,start_id: String,) -> Result<Option<String>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: is_empty
      Src: /src/opendal/core/services/gdrive/src/path_index.rs:142,1
    - Dst: Ok
      Src: /src/opendal/core/services/gdrive/src/path_index.rs:143,1
    - Dst: Some
      Src: /src/opendal/core/services/gdrive/src/path_index.rs:143,1
    - Dst: GdrivePathIndex::root_id
      Src: /src/opendal/core/services/gdrive/src/path_index.rs:143,1
    - Dst: Vec::new
      Src: /src/opendal/core/services/gdrive/src/path_index.rs:143,1
    - Dst: Self::resolution_chain
      Src: /src/opendal/core/services/gdrive/src/path_index.rs:146,1
    - Dst: is_empty
      Src: /src/opendal/core/services/gdrive/src/path_index.rs:147,1
    - Dst: Ok
      Src: /src/opendal/core/services/gdrive/src/path_index.rs:148,1
    - Dst: Some
      Src: /src/opendal/core/services/gdrive/src/path_index.rs:148,1
    - Dst: GdrivePathIndex::root_id
      Src: /src/opendal/core/services/gdrive/src/path_index.rs:148,1
    - Dst: Vec::new
      Src: /src/opendal/core/services/gdrive/src/path_index.rs:148,1
    - Dst: lock
      Src: /src/opendal/core/services/gdrive/src/path_index.rs:152,1
    - Dst: len
      Src: /src/opendal/core/services/gdrive/src/path_index.rs:155,1
    - Dst: rev
      Src: /src/opendal/core/services/gdrive/src/path_index.rs:155,1
    - Dst: Self::lookup_cached_id
      Src: /src/opendal/core/services/gdrive/src/path_index.rs:156,1
    - Dst: Some
      Src: /src/opendal/core/services/gdrive/src/path_index.rs:157,1
    - Dst: bool::unwrap_or
      Src: /src/opendal/core/services/gdrive/src/path_index.rs:162,1
    - Dst: String::new
      Src: /src/opendal/core/services/gdrive/src/path_index.rs:162,1
    - Dst: Ok
      Src: /src/opendal/core/services/gdrive/src/path_index.rs:166,1
    - Dst: Ok
      Src: /src/opendal/core/services/gdrive/src/path_index.rs:168,1
    - Dst: Some
      Src: /src/opendal/core/services/gdrive/src/path_index.rs:169,1
    - Dst: into_iter
      Src: /src/opendal/core/services/gdrive/src/path_index.rs:170,1
    - Dst: skip
      Src: /src/opendal/core/services/gdrive/src/path_index.rs:170,1
    - Dst: collect
      Src: /src/opendal/core/services/gdrive/src/path_index.rs:170,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 75
    argCount: 2
    argNames:
    - ctx
    - path
    argTypes:
    - '&OperationContext'
    - '&str'
    constantsTouched: []
    func_position:
      end: 173
      start: 137
    functionDepth: 33
    functionLinenumber: 137
    functionLinenumberEnd: 173
    functionName: GdrivePathIndex::lookup_resolve_plan
    functionSourceFile: /src/opendal/core/services/gdrive/src/path_index.rs
    functionUses: 1
    functionsReached:
    - Self::resolution_chain
    - bool::unwrap_or
    - collect
    - Ok
    - lock
    - String::new
    - rev
    - Some
    - is_empty
    - len
    - into_iter
    - skip
    - Vec::new
    - GdrivePathIndex::root_id
    - Self::lookup_cached_id
    linkageType: ''
    returnType: Result
    signature: 'async fn lookup_resolve_plan(&self,ctx: &OperationContext,path: &str,)
      -> Result<(Option<String>, Vec<String>)>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: is_empty
      Src: /src/opendal/core/services/gdrive/src/path_index.rs:177,1
    - Dst: GdrivePathIndex::root_id
      Src: /src/opendal/core/services/gdrive/src/path_index.rs:178,1
    - Dst: map
      Src: /src/opendal/core/services/gdrive/src/path_index.rs:178,1
    - Dst: lock
      Src: /src/opendal/core/services/gdrive/src/path_index.rs:182,1
    - Dst: Self::lookup_cached_id
      Src: /src/opendal/core/services/gdrive/src/path_index.rs:183,1
    - Dst: Ok
      Src: /src/opendal/core/services/gdrive/src/path_index.rs:185,1
    - Dst: Some
      Src: /src/opendal/core/services/gdrive/src/path_index.rs:185,1
    - Dst: GdrivePathIndex::lookup_resolve_plan
      Src: /src/opendal/core/services/gdrive/src/path_index.rs:188,1
    - Dst: GdrivePathIndex::resolve_from_chain
      Src: /src/opendal/core/services/gdrive/src/path_index.rs:191,1
    - Dst: GdrivePathIndex::root_id
      Src: /src/opendal/core/services/gdrive/src/path_index.rs:195,1
    - Dst: GdrivePathIndex::resolve_from_chain
      Src: /src/opendal/core/services/gdrive/src/path_index.rs:196,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 42
    argCount: 2
    argNames:
    - ctx
    - path
    argTypes:
    - '&OperationContext'
    - '&str'
    constantsTouched: []
    func_position:
      end: 200
      start: 176
    functionDepth: 33
    functionLinenumber: 176
    functionLinenumberEnd: 200
    functionName: GdrivePathIndex::get
    functionSourceFile: /src/opendal/core/services/gdrive/src/path_index.rs
    functionUses: 0
    functionsReached:
    - GdrivePathIndex::lookup_resolve_plan
    - GdrivePathIndex::resolve_from_chain
    - lock
    - Ok
    - is_empty
    - Some
    - map
    - GdrivePathIndex::root_id
    - Self::lookup_cached_id
    linkageType: ''
    returnType: Result
    signature: 'pub async fn get(&self, ctx: &OperationContext, path: &str) -> Result<Option<String>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/opendal/core/services/gdrive/src/path_index.rs:204,1
    - Dst: Self::remove_path_candidates
      Src: /src/opendal/core/services/gdrive/src/path_index.rs:205,1
    - Dst: insert
      Src: /src/opendal/core/services/gdrive/src/path_index.rs:206,1
    - Dst: to_string
      Src: /src/opendal/core/services/gdrive/src/path_index.rs:206,1
    - Dst: Result::to_string
      Src: /src/opendal/core/services/gdrive/src/path_index.rs:206,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 16
    argCount: 2
    argNames:
    - path
    - id
    argTypes:
    - '&str'
    - '&str'
    constantsTouched: []
    func_position:
      end: 207
      start: 203
    functionDepth: 33
    functionLinenumber: 203
    functionLinenumberEnd: 207
    functionName: GdrivePathIndex::upsert_file
    functionSourceFile: /src/opendal/core/services/gdrive/src/path_index.rs
    functionUses: 1
    functionsReached:
    - to_string
    - insert
    - Result::to_string
    - lock
    - Self::remove_path_candidates
    linkageType: ''
    returnType: void
    signature: 'pub async fn upsert_file(&self, path: &str, id: &str)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self::canonical_dir_path
      Src: /src/opendal/core/services/gdrive/src/path_index.rs:211,1
    - Dst: lock
      Src: /src/opendal/core/services/gdrive/src/path_index.rs:213,1
    - Dst: remove
      Src: /src/opendal/core/services/gdrive/src/path_index.rs:214,1
    - Dst: String::trim_end_matches
      Src: /src/opendal/core/services/gdrive/src/path_index.rs:214,1
    - Dst: Self::remove_path_candidates
      Src: /src/opendal/core/services/gdrive/src/path_index.rs:215,1
    - Dst: insert
      Src: /src/opendal/core/services/gdrive/src/path_index.rs:216,1
    - Dst: Result::to_string
      Src: /src/opendal/core/services/gdrive/src/path_index.rs:216,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 22
    argCount: 2
    argNames:
    - path
    - id
    argTypes:
    - '&str'
    - '&str'
    constantsTouched: []
    func_position:
      end: 217
      start: 210
    functionDepth: 33
    functionLinenumber: 210
    functionLinenumberEnd: 217
    functionName: GdrivePathIndex::upsert_dir
    functionSourceFile: /src/opendal/core/services/gdrive/src/path_index.rs
    functionUses: 2
    functionsReached:
    - insert
    - Result::to_string
    - lock
    - remove
    - Self::remove_path_candidates
    - String::trim_end_matches
    - Self::canonical_dir_path
    linkageType: ''
    returnType: void
    signature: 'pub async fn upsert_dir(&self, path: &str, id: &str)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/opendal/core/services/gdrive/src/path_index.rs:221,1
    - Dst: Self::remove_path_candidates
      Src: /src/opendal/core/services/gdrive/src/path_index.rs:222,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - path
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 223
      start: 220
    functionDepth: 33
    functionLinenumber: 220
    functionLinenumberEnd: 223
    functionName: GdrivePathIndex::invalidate_file
    functionSourceFile: /src/opendal/core/services/gdrive/src/path_index.rs
    functionUses: 0
    functionsReached:
    - lock
    - Self::remove_path_candidates
    linkageType: ''
    returnType: void
    signature: 'pub async fn invalidate_file(&self, path: &str)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self::canonical_dir_path
      Src: /src/opendal/core/services/gdrive/src/path_index.rs:227,1
    - Dst: lock
      Src: /src/opendal/core/services/gdrive/src/path_index.rs:229,1
    - Dst: String::trim_end_matches
      Src: /src/opendal/core/services/gdrive/src/path_index.rs:230,1
    - Dst: to_string
      Src: /src/opendal/core/services/gdrive/src/path_index.rs:230,1
    - Dst: remove
      Src: /src/opendal/core/services/gdrive/src/path_index.rs:231,1
    - Dst: retain
      Src: /src/opendal/core/services/gdrive/src/path_index.rs:232,1
    - Dst: String::starts_with
      Src: /src/opendal/core/services/gdrive/src/path_index.rs:234,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 23
    argCount: 1
    argNames:
    - path
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 235
      start: 226
    functionDepth: 33
    functionLinenumber: 226
    functionLinenumberEnd: 235
    functionName: GdrivePathIndex::invalidate_dir
    functionSourceFile: /src/opendal/core/services/gdrive/src/path_index.rs
    functionUses: 0
    functionsReached:
    - String::starts_with
    - to_string
    - lock
    - retain
    - remove
    - String::trim_end_matches
    - Self::canonical_dir_path
    linkageType: ''
    returnType: void
    signature: 'pub async fn invalidate_dir(&self, path: &str)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: is_empty
      Src: /src/opendal/core/services/gdrive/src/path_index.rs:239,1
    - Dst: to_string
      Src: /src/opendal/core/services/gdrive/src/path_index.rs:243,1
    - Dst: Result::is_empty
      Src: /src/opendal/core/services/gdrive/src/path_index.rs:244,1
    - Dst: Self::canonical_dir_path
      Src: /src/opendal/core/services/gdrive/src/path_index.rs:245,1
    - Dst: lock
      Src: /src/opendal/core/services/gdrive/src/path_index.rs:246,1
    - Dst: Self::remove_path_candidates
      Src: /src/opendal/core/services/gdrive/src/path_index.rs:247,1
    - Dst: Self::remove_path_candidates
      Src: /src/opendal/core/services/gdrive/src/path_index.rs:248,1
    - Dst: drop
      Src: /src/opendal/core/services/gdrive/src/path_index.rs:249,1
    - Dst: get_parent
      Src: /src/opendal/core/services/gdrive/src/path_index.rs:250,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/gdrive/src/path_index.rs:250,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 41
    argCount: 1
    argNames:
    - path
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 252
      start: 238
    functionDepth: 33
    functionLinenumber: 238
    functionLinenumberEnd: 252
    functionName: GdrivePathIndex::refresh_path
    functionSourceFile: /src/opendal/core/services/gdrive/src/path_index.rs
    functionUses: 1
    functionsReached:
    - to_string
    - lock
    - get_parent
    - is_empty
    - Result::is_empty
    - '&str::to_string'
    - Self::remove_path_candidates
    - Self::canonical_dir_path
    - drop
    linkageType: ''
    returnType: void
    signature: 'pub async fn refresh_path(&self, path: &str)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/opendal/core/services/gdrive/src/path_index.rs:256,1
    - Dst: Self::canonical_dir_path
      Src: /src/opendal/core/services/gdrive/src/path_index.rs:258,1
    - Dst: is_empty
      Src: /src/opendal/core/services/gdrive/src/path_index.rs:259,1
    - Dst: GdrivePathIndex::root_id
      Src: /src/opendal/core/services/gdrive/src/path_index.rs:260,1
    - Dst: String::new
      Src: /src/opendal/core/services/gdrive/src/path_index.rs:263,1
    - Dst: split
      Src: /src/opendal/core/services/gdrive/src/path_index.rs:265,1
    - Dst: is_empty
      Src: /src/opendal/core/services/gdrive/src/path_index.rs:266,1
    - Dst: Self::push_str
      Src: /src/opendal/core/services/gdrive/src/path_index.rs:270,1
    - Dst: Self::push
      Src: /src/opendal/core/services/gdrive/src/path_index.rs:271,1
    - Dst: push
      Src: /src/opendal/core/services/gdrive/src/path_index.rs:272,1
    - Dst: Self::clone
      Src: /src/opendal/core/services/gdrive/src/path_index.rs:272,1
    - Dst: GdrivePathIndex::root_id
      Src: /src/opendal/core/services/gdrive/src/path_index.rs:277,1
    - Dst: lock
      Src: /src/opendal/core/services/gdrive/src/path_index.rs:280,1
    - Dst: Self::lookup_cached_id
      Src: /src/opendal/core/services/gdrive/src/path_index.rs:281,1
    - Dst: get_basename
      Src: /src/opendal/core/services/gdrive/src/path_index.rs:287,1
    - Dst: query
      Src: /src/opendal/core/services/gdrive/src/path_index.rs:288,1
    - Dst: create_dir
      Src: /src/opendal/core/services/gdrive/src/path_index.rs:290,1
    - Dst: Error::kind
      Src: /src/opendal/core/services/gdrive/src/path_index.rs:292,1
    - Dst: GdrivePathIndex::refresh_path
      Src: /src/opendal/core/services/gdrive/src/path_index.rs:294,1
    - Dst: Err
      Src: /src/opendal/core/services/gdrive/src/path_index.rs:297,1
    - Dst: Error::kind
      Src: /src/opendal/core/services/gdrive/src/path_index.rs:299,1
    - Dst: GdrivePathIndex::refresh_path
      Src: /src/opendal/core/services/gdrive/src/path_index.rs:301,1
    - Dst: Err
      Src: /src/opendal/core/services/gdrive/src/path_index.rs:304,1
    - Dst: GdrivePathIndex::upsert_dir
      Src: /src/opendal/core/services/gdrive/src/path_index.rs:307,1
    - Dst: Ok
      Src: /src/opendal/core/services/gdrive/src/path_index.rs:311,1
    CyclomaticComplexity: 24
    EdgeCount: 24
    ICount: 111
    argCount: 2
    argNames:
    - ctx
    - path
    argTypes:
    - '&OperationContext'
    - '&str'
    constantsTouched: []
    func_position:
      end: 313
      start: 255
    functionDepth: 33
    functionLinenumber: 255
    functionLinenumberEnd: 313
    functionName: GdrivePathIndex::ensure_dir
    functionSourceFile: /src/opendal/core/services/gdrive/src/path_index.rs
    functionUses: 0
    functionsReached:
    - GdrivePathIndex::upsert_dir
    - push
    - Self::push_str
    - Self::clone
    - Self::canonical_dir_path
    - Ok
    - Self::push
    - is_empty
    - create_dir
    - Error::kind
    - query
    - GdrivePathIndex::root_id
    - Self::lookup_cached_id
    - String::new
    - lock
    - split
    - get_basename
    - Err
    - GdrivePathIndex::refresh_path
    linkageType: ''
    returnType: Result
    signature: 'pub async fn ensure_dir(&self, ctx: &OperationContext, path: &str)
      -> Result<String>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: GdrivePathIndex::new
      Src: /src/opendal/core/services/gdrive/src/path_index.rs:401,1
    - Dst: TestQuery::new
      Src: /src/opendal/core/services/gdrive/src/path_index.rs:401,1
    - Dst: OperationContext::new
      Src: /src/opendal/core/services/gdrive/src/path_index.rs:402,1
    - Dst: Option::upsert_file
      Src: /src/opendal/core/services/gdrive/src/path_index.rs:403,1
    - Dst: Option::upsert_file
      Src: /src/opendal/core/services/gdrive/src/path_index.rs:404,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 410
      start: 400
    functionDepth: 34
    functionLinenumber: 400
    functionLinenumberEnd: 410
    functionName: tests::test_upsert_replaces_existing_path
    functionSourceFile: /src/opendal/core/services/gdrive/src/path_index.rs
    functionUses: 0
    functionsReached:
    - TestQuery::new
    - Option::upsert_file
    - OperationContext::new
    - GdrivePathIndex::new
    linkageType: ''
    returnType: void
    signature: async fn test_upsert_replaces_existing_path()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: GdrivePathIndex::new
      Src: /src/opendal/core/services/gdrive/src/path_index.rs:414,1
    - Dst: TestQuery::new
      Src: /src/opendal/core/services/gdrive/src/path_index.rs:414,1
    - Dst: OperationContext::new
      Src: /src/opendal/core/services/gdrive/src/path_index.rs:415,1
    - Dst: Option::upsert_file
      Src: /src/opendal/core/services/gdrive/src/path_index.rs:416,1
    - Dst: Option::upsert_dir
      Src: /src/opendal/core/services/gdrive/src/path_index.rs:417,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 427
      start: 413
    functionDepth: 34
    functionLinenumber: 413
    functionLinenumberEnd: 427
    functionName: tests::test_dir_upsert_replaces_file_mapping
    functionSourceFile: /src/opendal/core/services/gdrive/src/path_index.rs
    functionUses: 0
    functionsReached:
    - TestQuery::new
    - Option::upsert_file
    - OperationContext::new
    - Option::upsert_dir
    - GdrivePathIndex::new
    linkageType: ''
    returnType: void
    signature: async fn test_dir_upsert_replaces_file_mapping()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: TestQuery::new
      Src: /src/opendal/core/services/gdrive/src/path_index.rs:431,1
    - Dst: GdrivePathIndex::new
      Src: /src/opendal/core/services/gdrive/src/path_index.rs:432,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/gdrive/src/path_index.rs:432,1
    - Dst: Result::insert
      Src: /src/opendal/core/services/gdrive/src/path_index.rs:434,1
    - Dst: Result::insert
      Src: /src/opendal/core/services/gdrive/src/path_index.rs:435,1
    - Dst: Result::insert
      Src: /src/opendal/core/services/gdrive/src/path_index.rs:436,1
    - Dst: OperationContext::new
      Src: /src/opendal/core/services/gdrive/src/path_index.rs:437,1
    - Dst: Result::insert
      Src: /src/opendal/core/services/gdrive/src/path_index.rs:444,1
    - Dst: Result::insert
      Src: /src/opendal/core/services/gdrive/src/path_index.rs:445,1
    - Dst: Option::invalidate_dir
      Src: /src/opendal/core/services/gdrive/src/path_index.rs:447,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 31
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 453
      start: 430
    functionDepth: 34
    functionLinenumber: 430
    functionLinenumberEnd: 453
    functionName: tests::test_subtree_invalidation_re_resolves_descendants
    functionSourceFile: /src/opendal/core/services/gdrive/src/path_index.rs
    functionUses: 0
    functionsReached:
    - Result::clone
    - TestQuery::new
    - Result::insert
    - OperationContext::new
    - Option::invalidate_dir
    - GdrivePathIndex::new
    linkageType: ''
    returnType: void
    signature: async fn test_subtree_invalidation_re_resolves_descendants()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: TestQuery::new
      Src: /src/opendal/core/services/gdrive/src/path_index.rs:457,1
    - Dst: Result::insert
      Src: /src/opendal/core/services/gdrive/src/path_index.rs:458,1
    - Dst: GdrivePathIndex::new
      Src: /src/opendal/core/services/gdrive/src/path_index.rs:460,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/gdrive/src/path_index.rs:460,1
    - Dst: OperationContext::new
      Src: /src/opendal/core/services/gdrive/src/path_index.rs:462,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 470
      start: 456
    functionDepth: 6
    functionLinenumber: 456
    functionLinenumberEnd: 470
    functionName: tests::test_ensure_dir_is_serialized
    functionSourceFile: /src/opendal/core/services/gdrive/src/path_index.rs
    functionUses: 0
    functionsReached:
    - Result::clone
    - TestQuery::new
    - Result::insert
    - OperationContext::new
    - GdrivePathIndex::new
    linkageType: ''
    returnType: void
    signature: async fn test_ensure_dir_is_serialized()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: TestQuery::new
      Src: /src/opendal/core/services/gdrive/src/path_index.rs:474,1
    - Dst: Result::insert
      Src: /src/opendal/core/services/gdrive/src/path_index.rs:475,1
    - Dst: GdrivePathIndex::new
      Src: /src/opendal/core/services/gdrive/src/path_index.rs:477,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/gdrive/src/path_index.rs:477,1
    - Dst: Option::upsert_dir
      Src: /src/opendal/core/services/gdrive/src/path_index.rs:478,1
    - Dst: OperationContext::new
      Src: /src/opendal/core/services/gdrive/src/path_index.rs:479,1
    - Dst: Result::mark_stale_parent
      Src: /src/opendal/core/services/gdrive/src/path_index.rs:481,1
    - Dst: Result::insert
      Src: /src/opendal/core/services/gdrive/src/path_index.rs:482,1
    - Dst: Option::ensure_dir
      Src: /src/opendal/core/services/gdrive/src/path_index.rs:484,1
    - Dst: unwrap
      Src: /src/opendal/core/services/gdrive/src/path_index.rs:484,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 30
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 492
      start: 473
    functionDepth: 34
    functionLinenumber: 473
    functionLinenumberEnd: 492
    functionName: tests::test_ensure_dir_refreshes_stale_ancestor_chain
    functionSourceFile: /src/opendal/core/services/gdrive/src/path_index.rs
    functionUses: 0
    functionsReached:
    - Result::clone
    - TestQuery::new
    - unwrap
    - Result::insert
    - OperationContext::new
    - Option::upsert_dir
    - Result::mark_stale_parent
    - Option::ensure_dir
    - GdrivePathIndex::new
    linkageType: ''
    returnType: void
    signature: async fn test_ensure_dir_refreshes_stale_ancestor_chain()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Mutex::default
      Src: /src/opendal/core/services/gdrive/src/lister.rs:48,1
    - Dst: Mutex::default
      Src: /src/opendal/core/services/gdrive/src/lister.rs:49,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - path
    - core
    - ctx
    argTypes:
    - String
    - Arc<GdriveCore>
    - OperationContext
    constantsTouched: []
    func_position:
      end: 51
      start: 43
    functionDepth: 3
    functionLinenumber: 43
    functionLinenumberEnd: 51
    functionName: GdriveLister::new
    functionSourceFile: /src/opendal/core/services/gdrive/src/lister.rs
    functionUses: 1
    functionsReached:
    - Mutex::default
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(path: String, core: Arc<GdriveCore>, ctx: OperationContext)
      -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/opendal/core/services/gdrive/src/lister.rs:59,1
    - Dst: insert
      Src: /src/opendal/core/services/gdrive/src/lister.rs:60,1
    - Dst: clone
      Src: /src/opendal/core/services/gdrive/src/lister.rs:60,1
    - Dst: push_back
      Src: /src/opendal/core/services/gdrive/src/lister.rs:61,1
    - Dst: oio::Entry::new
      Src: /src/opendal/core/services/gdrive/src/lister.rs:61,1
    - Dst: Ok
      Src: /src/opendal/core/services/gdrive/src/lister.rs:63,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 18
    argCount: 3
    argNames:
    - ctx
    - path
    - metadata
    argTypes:
    - '&mut oio::PageContext'
    - String
    - Metadata
    constantsTouched: []
    func_position:
      end: 64
      start: 53
    functionDepth: 33
    functionLinenumber: 53
    functionLinenumberEnd: 64
    functionName: GdriveLister::push_entry
    functionSourceFile: /src/opendal/core/services/gdrive/src/lister.rs
    functionUses: 3
    functionsReached:
    - insert
    - oio::Entry::new
    - lock
    - Ok
    - push_back
    - clone
    linkageType: ''
    returnType: Result
    signature: 'async fn push_entry(&self,ctx: &mut oio::PageContext,path: String,metadata:
      Metadata,) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: recent_entry_for_path
      Src: /src/opendal/core/services/gdrive/src/lister.rs:72,1
    - Dst: build_rel_path
      Src: /src/opendal/core/services/gdrive/src/lister.rs:74,1
    - Dst: GdriveLister::push_entry
      Src: /src/opendal/core/services/gdrive/src/lister.rs:75,1
    - Dst: Ok
      Src: /src/opendal/core/services/gdrive/src/lister.rs:77,1
    - Dst: build_rel_path
      Src: /src/opendal/core/services/gdrive/src/lister.rs:79,1
    - Dst: GdriveLister::push_entry
      Src: /src/opendal/core/services/gdrive/src/lister.rs:80,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 26
    argCount: 3
    argNames:
    - ctx
    - abs_path
    - metadata
    argTypes:
    - '&mut oio::PageContext'
    - String
    - Metadata
    constantsTouched: []
    func_position:
      end: 83
      start: 66
    functionDepth: 34
    functionLinenumber: 66
    functionLinenumberEnd: 83
    functionName: GdriveLister::apply_recent_entry
    functionSourceFile: /src/opendal/core/services/gdrive/src/lister.rs
    functionUses: 1
    functionsReached:
    - recent_entry_for_path
    - Ok
    - GdriveLister::push_entry
    - build_rel_path
    linkageType: ''
    returnType: Result
    signature: 'async fn apply_recent_entry(&self,ctx: &mut oio::PageContext,abs_path:
      String,metadata: Metadata,) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/opendal/core/services/gdrive/src/lister.rs:86,1
    - Dst: Ok
      Src: /src/opendal/core/services/gdrive/src/lister.rs:88,1
    - Dst: recent_entries_for_list
      Src: /src/opendal/core/services/gdrive/src/lister.rs:92,1
    - Dst: build_rel_path
      Src: /src/opendal/core/services/gdrive/src/lister.rs:93,1
    - Dst: GdriveLister::push_entry
      Src: /src/opendal/core/services/gdrive/src/lister.rs:94,1
    - Dst: Ok
      Src: /src/opendal/core/services/gdrive/src/lister.rs:97,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 34
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - '&mut oio::PageContext'
    constantsTouched: []
    func_position:
      end: 98
      start: 85
    functionDepth: 33
    functionLinenumber: 85
    functionLinenumberEnd: 98
    functionName: GdriveLister::inject_recent_entries
    functionSourceFile: /src/opendal/core/services/gdrive/src/lister.rs
    functionUses: 1
    functionsReached:
    - Ok
    - lock
    - GdriveLister::push_entry
    - build_rel_path
    - recent_entries_for_list
    linkageType: ''
    returnType: Result
    signature: 'async fn inject_recent_entries(&self, ctx: &mut oio::PageContext)
      -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Metadata::new
      Src: /src/opendal/core/services/gdrive/src/lister.rs:102,1
    - Dst: as_str
      Src: /src/opendal/core/services/gdrive/src/lister.rs:103,1
    - Dst: Self::with_content_type
      Src: /src/opendal/core/services/gdrive/src/lister.rs:102,1
    - Dst: clone
      Src: /src/opendal/core/services/gdrive/src/lister.rs:109,1
    - Dst: anyhow::Result::with_content_length
      Src: /src/opendal/core/services/gdrive/src/lister.rs:112,1
    - Dst: parse::<u64>
      Src: /src/opendal/core/services/gdrive/src/lister.rs:112,1
    - Dst: map_err
      Src: /src/opendal/core/services/gdrive/src/lister.rs:112,1
    - Dst: Error::new
      Src: /src/opendal/core/services/gdrive/src/lister.rs:113,1
    - Dst: Self::set_source
      Src: /src/opendal/core/services/gdrive/src/lister.rs:113,1
    - Dst: anyhow::Result::with_last_modified
      Src: /src/opendal/core/services/gdrive/src/lister.rs:118,1
    - Dst: parse::<Timestamp>
      Src: /src/opendal/core/services/gdrive/src/lister.rs:118,1
    - Dst: map_err
      Src: /src/opendal/core/services/gdrive/src/lister.rs:118,1
    - Dst: Error::new
      Src: /src/opendal/core/services/gdrive/src/lister.rs:119,1
    - Dst: Self::set_source
      Src: /src/opendal/core/services/gdrive/src/lister.rs:119,1
    - Dst: Ok
      Src: /src/opendal/core/services/gdrive/src/lister.rs:123,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 46
    argCount: 1
    argNames:
    - file
    argTypes:
    - '&GdriveFile'
    constantsTouched: []
    func_position:
      end: 124
      start: 101
    functionDepth: 32
    functionLinenumber: 101
    functionLinenumberEnd: 124
    functionName: metadata_from_gdrive_file
    functionSourceFile: /src/opendal/core/services/gdrive/src/lister.rs
    functionUses: 2
    functionsReached:
    - map_err
    - Metadata::new
    - parse::<Timestamp>
    - Ok
    - clone
    - Error::new
    - as_str
    - parse::<u64>
    - Self::with_content_type
    - anyhow::Result::with_last_modified
    - Self::set_source
    - anyhow::Result::with_content_length
    linkageType: ''
    returnType: Result
    signature: 'fn metadata_from_gdrive_file(file: &GdriveFile) -> Result<Metadata>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: recent_entry_for_path
      Src: /src/opendal/core/services/gdrive/src/lister.rs:128,1
    - Dst: Ok
      Src: /src/opendal/core/services/gdrive/src/lister.rs:130,1
    - Dst: resolve_path
      Src: /src/opendal/core/services/gdrive/src/lister.rs:133,1
    - Dst: Some
      Src: /src/opendal/core/services/gdrive/src/lister.rs:134,1
    - Dst: resolve_path_after_refresh
      Src: /src/opendal/core/services/gdrive/src/lister.rs:136,1
    - Dst: Ok
      Src: /src/opendal/core/services/gdrive/src/lister.rs:146,1
    - Dst: is_empty
      Src: /src/opendal/core/services/gdrive/src/lister.rs:150,1
    - Dst: ends_with
      Src: /src/opendal/core/services/gdrive/src/lister.rs:150,1
    - Dst: gdrive_stat_by_id
      Src: /src/opendal/core/services/gdrive/src/lister.rs:159,1
    - Dst: status
      Src: /src/opendal/core/services/gdrive/src/lister.rs:160,1
    - Dst: resolve_path_after_refresh
      Src: /src/opendal/core/services/gdrive/src/lister.rs:161,1
    - Dst: Ok
      Src: /src/opendal/core/services/gdrive/src/lister.rs:169,1
    - Dst: gdrive_stat_by_id
      Src: /src/opendal/core/services/gdrive/src/lister.rs:173,1
    - Dst: status
      Src: /src/opendal/core/services/gdrive/src/lister.rs:175,1
    - Dst: Err
      Src: /src/opendal/core/services/gdrive/src/lister.rs:176,1
    - Dst: super::core::parse_error
      Src: /src/opendal/core/services/gdrive/src/lister.rs:176,1
    - Dst: into_body
      Src: /src/opendal/core/services/gdrive/src/lister.rs:179,1
    - Dst: to_bytes
      Src: /src/opendal/core/services/gdrive/src/lister.rs:179,1
    - Dst: serde_json::from_slice::<GdriveFile>
      Src: /src/opendal/core/services/gdrive/src/lister.rs:181,1
    - Dst: map_err
      Src: /src/opendal/core/services/gdrive/src/lister.rs:181,1
    - Dst: as_str
      Src: /src/opendal/core/services/gdrive/src/lister.rs:182,1
    - Dst: clone
      Src: /src/opendal/core/services/gdrive/src/lister.rs:187,1
    - Dst: metadata_from_gdrive_file
      Src: /src/opendal/core/services/gdrive/src/lister.rs:189,1
    - Dst: GdriveLister::apply_recent_entry
      Src: /src/opendal/core/services/gdrive/src/lister.rs:191,1
    - Dst: Ok
      Src: /src/opendal/core/services/gdrive/src/lister.rs:193,1
    - Dst: gdrive_list
      Src: /src/opendal/core/services/gdrive/src/lister.rs:196,1
    - Dst: as_str
      Src: /src/opendal/core/services/gdrive/src/lister.rs:198,1
    - Dst: status
      Src: /src/opendal/core/services/gdrive/src/lister.rs:201,1
    - Dst: refresh_dir_path
      Src: /src/opendal/core/services/gdrive/src/lister.rs:202,1
    - Dst: resolve_path
      Src: /src/opendal/core/services/gdrive/src/lister.rs:203,1
    - Dst: Ok
      Src: /src/opendal/core/services/gdrive/src/lister.rs:207,1
    - Dst: gdrive_list
      Src: /src/opendal/core/services/gdrive/src/lister.rs:210,1
    - Dst: as_str
      Src: /src/opendal/core/services/gdrive/src/lister.rs:212,1
    - Dst: status
      Src: /src/opendal/core/services/gdrive/src/lister.rs:216,1
    - Dst: into_body
      Src: /src/opendal/core/services/gdrive/src/lister.rs:217,1
    - Dst: to_bytes
      Src: /src/opendal/core/services/gdrive/src/lister.rs:217,1
    - Dst: Err
      Src: /src/opendal/core/services/gdrive/src/lister.rs:218,1
    - Dst: super::core::parse_error
      Src: /src/opendal/core/services/gdrive/src/lister.rs:218,1
    - Dst: Bytes::is_empty
      Src: /src/opendal/core/services/gdrive/src/lister.rs:222,1
    - Dst: Ok
      Src: /src/opendal/core/services/gdrive/src/lister.rs:224,1
    - Dst: is_empty
      Src: /src/opendal/core/services/gdrive/src/lister.rs:228,1
    - Dst: build_rel_path
      Src: /src/opendal/core/services/gdrive/src/lister.rs:229,1
    - Dst: GdriveLister::push_entry
      Src: /src/opendal/core/services/gdrive/src/lister.rs:230,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/gdrive/src/lister.rs:230,1
    - Dst: GdriveLister::inject_recent_entries
      Src: /src/opendal/core/services/gdrive/src/lister.rs:232,1
    - Dst: serde_json::from_slice::<GdriveFileList>
      Src: /src/opendal/core/services/gdrive/src/lister.rs:236,1
    - Dst: map_err
      Src: /src/opendal/core/services/gdrive/src/lister.rs:236,1
    - Dst: as_str
      Src: /src/opendal/core/services/gdrive/src/lister.rs:245,1
    - Dst: ends_with
      Src: /src/opendal/core/services/gdrive/src/lister.rs:246,1
    - Dst: metadata_from_gdrive_file
      Src: /src/opendal/core/services/gdrive/src/lister.rs:252,1
    - Dst: GdriveLister::apply_recent_entry
      Src: /src/opendal/core/services/gdrive/src/lister.rs:253,1
    - Dst: Ok
      Src: /src/opendal/core/services/gdrive/src/lister.rs:256,1
    CyclomaticComplexity: 49
    EdgeCount: 49
    ICount: 273
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - '&mut oio::PageContext'
    constantsTouched: []
    func_position:
      end: 257
      start: 127
    functionDepth: 34
    functionLinenumber: 127
    functionLinenumberEnd: 257
    functionName: GdriveLister::next_page
    functionSourceFile: /src/opendal/core/services/gdrive/src/lister.rs
    functionUses: 0
    functionsReached:
    - status
    - ends_with
    - Bytes::is_empty
    - clone
    - serde_json::from_slice::<GdriveFile>
    - build_rel_path
    - gdrive_list
    - resolve_path_after_refresh
    - map_err
    - Ok
    - GdriveLister::push_entry
    - as_str
    - serde_json::from_slice::<GdriveFileList>
    - GdriveLister::inject_recent_entries
    - Metadata::new
    - into_body
    - Some
    - is_empty
    - recent_entry_for_path
    - to_bytes
    - super::core::parse_error
    - metadata_from_gdrive_file
    - refresh_dir_path
    - Err
    - GdriveLister::apply_recent_entry
    - resolve_path
    - gdrive_stat_by_id
    linkageType: ''
    returnType: Result
    signature: 'async fn next_page(&self, ctx: &mut oio::PageContext) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: VecDeque::new
      Src: /src/opendal/core/services/gdrive/src/lister.rs:328,1
    - Dst: VecDeque::new
      Src: /src/opendal/core/services/gdrive/src/lister.rs:329,1
    - Dst: Vec::new
      Src: /src/opendal/core/services/gdrive/src/lister.rs:330,1
    - Dst: HashMap::new
      Src: /src/opendal/core/services/gdrive/src/lister.rs:331,1
    - Dst: String::new
      Src: /src/opendal/core/services/gdrive/src/lister.rs:332,1
    - Dst: HashSet::new
      Src: /src/opendal/core/services/gdrive/src/lister.rs:333,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 3
    argNames:
    - root_path
    - core
    - ctx
    argTypes:
    - String
    - Arc<GdriveCore>
    - OperationContext
    constantsTouched: []
    func_position:
      end: 338
      start: 322
    functionDepth: 2
    functionLinenumber: 322
    functionLinenumberEnd: 338
    functionName: GdriveFlatLister::new
    functionSourceFile: /src/opendal/core/services/gdrive/src/lister.rs
    functionUses: 3
    functionsReached:
    - String::new
    - VecDeque::new
    - Vec::new
    - HashSet::new
    - HashMap::new
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(root_path: String, core: Arc<GdriveCore>, ctx: OperationContext)
      -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: insert
      Src: /src/opendal/core/services/gdrive/src/lister.rs:341,1
    - Dst: clone
      Src: /src/opendal/core/services/gdrive/src/lister.rs:341,1
    - Dst: push_back
      Src: /src/opendal/core/services/gdrive/src/lister.rs:342,1
    - Dst: oio::Entry::new
      Src: /src/opendal/core/services/gdrive/src/lister.rs:343,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 2
    argNames:
    - path
    - metadata
    argTypes:
    - String
    - Metadata
    constantsTouched: []
    func_position:
      end: 345
      start: 340
    functionDepth: 6
    functionLinenumber: 340
    functionLinenumberEnd: 345
    functionName: GdriveFlatLister::push_entry
    functionSourceFile: /src/opendal/core/services/gdrive/src/lister.rs
    functionUses: 3
    functionsReached:
    - push_back
    - insert
    - oio::Entry::new
    - clone
    linkageType: ''
    returnType: void
    signature: 'fn push_entry(&mut self, path: String, metadata: Metadata)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: clear
      Src: /src/opendal/core/services/gdrive/src/lister.rs:348,1
    - Dst: clear
      Src: /src/opendal/core/services/gdrive/src/lister.rs:349,1
    - Dst: insert
      Src: /src/opendal/core/services/gdrive/src/lister.rs:352,1
    - Dst: clone
      Src: /src/opendal/core/services/gdrive/src/lister.rs:352,1
    - Dst: push
      Src: /src/opendal/core/services/gdrive/src/lister.rs:353,1
    - Dst: is_empty
      Src: /src/opendal/core/services/gdrive/src/lister.rs:356,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 24
    argCount: 1
    argNames:
    - refreshed_dirs
    argTypes:
    - Vec<(String, String)>
    constantsTouched: []
    func_position:
      end: 357
      start: 347
    functionDepth: 6
    functionLinenumber: 347
    functionLinenumberEnd: 357
    functionName: GdriveFlatLister::apply_refreshed_batch
    functionSourceFile: /src/opendal/core/services/gdrive/src/lister.rs
    functionUses: 1
    functionsReached:
    - insert
    - push
    - clone
    - is_empty
    - clear
    linkageType: ''
    returnType: bool
    signature: 'fn apply_refreshed_batch(&mut self, refreshed_dirs: Vec<(String, String)>)
      -> bool'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_rel_path
      Src: /src/opendal/core/services/gdrive/src/lister.rs:367,1
    - Dst: GdriveFlatLister::push_entry
      Src: /src/opendal/core/services/gdrive/src/lister.rs:368,1
    - Dst: build_rel_path
      Src: /src/opendal/core/services/gdrive/src/lister.rs:372,1
    - Dst: GdriveFlatLister::push_entry
      Src: /src/opendal/core/services/gdrive/src/lister.rs:373,1
    - Dst: Ok
      Src: /src/opendal/core/services/gdrive/src/lister.rs:377,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 21
    argCount: 3
    argNames:
    - abs_path
    - metadata
    - recent_state
    argTypes:
    - String
    - Metadata
    - GdriveRecentPathState
    constantsTouched: []
    func_position:
      end: 378
      start: 359
    functionDepth: 5
    functionLinenumber: 359
    functionLinenumberEnd: 378
    functionName: GdriveFlatLister::apply_recent_entry
    functionSourceFile: /src/opendal/core/services/gdrive/src/lister.rs
    functionUses: 1
    functionsReached:
    - GdriveFlatLister::push_entry
    - Ok
    - build_rel_path
    linkageType: ''
    returnType: Result
    signature: 'async fn apply_recent_entry(&mut self,abs_path: String,metadata: Metadata,recent_state:
      GdriveRecentPathState,) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/core/services/gdrive/src/lister.rs:382,1
    - Dst: as_deref
      Src: /src/opendal/core/services/gdrive/src/lister.rs:386,1
    - Dst: unwrap_or
      Src: /src/opendal/core/services/gdrive/src/lister.rs:386,1
    - Dst: recent_entries_for_list
      Src: /src/opendal/core/services/gdrive/src/lister.rs:387,1
    - Dst: build_rel_path
      Src: /src/opendal/core/services/gdrive/src/lister.rs:388,1
    - Dst: GdriveFlatLister::push_entry
      Src: /src/opendal/core/services/gdrive/src/lister.rs:389,1
    - Dst: Ok
      Src: /src/opendal/core/services/gdrive/src/lister.rs:392,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 33
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 393
      start: 380
    functionDepth: 34
    functionLinenumber: 380
    functionLinenumberEnd: 393
    functionName: GdriveFlatLister::inject_recent_entries
    functionSourceFile: /src/opendal/core/services/gdrive/src/lister.rs
    functionUses: 1
    functionsReached:
    - Ok
    - as_deref
    - recent_entries_for_list
    - build_rel_path
    - GdriveFlatLister::push_entry
    - unwrap_or
    linkageType: ''
    returnType: Result
    signature: async fn inject_recent_entries(&mut self) -> Result<()>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: recent_entry_for_path
      Src: /src/opendal/core/services/gdrive/src/lister.rs:403,1
    - Dst: Ok
      Src: /src/opendal/core/services/gdrive/src/lister.rs:406,1
    - Dst: resolve_path
      Src: /src/opendal/core/services/gdrive/src/lister.rs:409,1
    - Dst: resolve_path_after_refresh
      Src: /src/opendal/core/services/gdrive/src/lister.rs:414,1
    - Dst: ends_with
      Src: /src/opendal/core/services/gdrive/src/lister.rs:428,1
    - Dst: Ok
      Src: /src/opendal/core/services/gdrive/src/lister.rs:430,1
    - Dst: clone
      Src: /src/opendal/core/services/gdrive/src/lister.rs:433,1
    - Dst: Some
      Src: /src/opendal/core/services/gdrive/src/lister.rs:434,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/gdrive/src/lister.rs:434,1
    - Dst: get_parent
      Src: /src/opendal/core/services/gdrive/src/lister.rs:436,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/gdrive/src/lister.rs:436,1
    - Dst: Result::clear
      Src: /src/opendal/core/services/gdrive/src/lister.rs:438,1
    - Dst: resolve_path
      Src: /src/opendal/core/services/gdrive/src/lister.rs:441,1
    - Dst: resolve_path_after_refresh
      Src: /src/opendal/core/services/gdrive/src/lister.rs:443,1
    - Dst: Ok
      Src: /src/opendal/core/services/gdrive/src/lister.rs:451,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/gdrive/src/lister.rs:456,1
    - Dst: push_back
      Src: /src/opendal/core/services/gdrive/src/lister.rs:457,1
    - Dst: GdriveFlatLister::inject_recent_entries
      Src: /src/opendal/core/services/gdrive/src/lister.rs:462,1
    - Dst: Ok
      Src: /src/opendal/core/services/gdrive/src/lister.rs:464,1
    - Dst: gdrive_stat_by_id
      Src: /src/opendal/core/services/gdrive/src/lister.rs:473,1
    - Dst: status
      Src: /src/opendal/core/services/gdrive/src/lister.rs:474,1
    - Dst: ends_with
      Src: /src/opendal/core/services/gdrive/src/lister.rs:475,1
    - Dst: refresh_dir_path
      Src: /src/opendal/core/services/gdrive/src/lister.rs:476,1
    - Dst: refresh_path
      Src: /src/opendal/core/services/gdrive/src/lister.rs:478,1
    - Dst: resolve_path
      Src: /src/opendal/core/services/gdrive/src/lister.rs:481,1
    - Dst: ends_with
      Src: /src/opendal/core/services/gdrive/src/lister.rs:484,1
    - Dst: Ok
      Src: /src/opendal/core/services/gdrive/src/lister.rs:486,1
    - Dst: clone
      Src: /src/opendal/core/services/gdrive/src/lister.rs:489,1
    - Dst: Some
      Src: /src/opendal/core/services/gdrive/src/lister.rs:490,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/gdrive/src/lister.rs:490,1
    - Dst: get_parent
      Src: /src/opendal/core/services/gdrive/src/lister.rs:492,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/gdrive/src/lister.rs:492,1
    - Dst: Result::clear
      Src: /src/opendal/core/services/gdrive/src/lister.rs:494,1
    - Dst: resolve_path
      Src: /src/opendal/core/services/gdrive/src/lister.rs:497,1
    - Dst: resolve_path_after_refresh
      Src: /src/opendal/core/services/gdrive/src/lister.rs:499,1
    - Dst: Ok
      Src: /src/opendal/core/services/gdrive/src/lister.rs:507,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/gdrive/src/lister.rs:512,1
    - Dst: push_back
      Src: /src/opendal/core/services/gdrive/src/lister.rs:513,1
    - Dst: GdriveFlatLister::inject_recent_entries
      Src: /src/opendal/core/services/gdrive/src/lister.rs:518,1
    - Dst: Ok
      Src: /src/opendal/core/services/gdrive/src/lister.rs:520,1
    - Dst: gdrive_stat_by_id
      Src: /src/opendal/core/services/gdrive/src/lister.rs:524,1
    - Dst: status
      Src: /src/opendal/core/services/gdrive/src/lister.rs:526,1
    - Dst: Err
      Src: /src/opendal/core/services/gdrive/src/lister.rs:527,1
    - Dst: super::core::parse_error
      Src: /src/opendal/core/services/gdrive/src/lister.rs:527,1
    - Dst: into_body
      Src: /src/opendal/core/services/gdrive/src/lister.rs:530,1
    - Dst: to_bytes
      Src: /src/opendal/core/services/gdrive/src/lister.rs:530,1
    - Dst: serde_json::from_slice::<GdriveFile>
      Src: /src/opendal/core/services/gdrive/src/lister.rs:532,1
    - Dst: map_err
      Src: /src/opendal/core/services/gdrive/src/lister.rs:532,1
    - Dst: as_str
      Src: /src/opendal/core/services/gdrive/src/lister.rs:533,1
    - Dst: is_empty
      Src: /src/opendal/core/services/gdrive/src/lister.rs:537,1
    - Dst: ends_with
      Src: /src/opendal/core/services/gdrive/src/lister.rs:537,1
    - Dst: push
      Src: /src/opendal/core/services/gdrive/src/lister.rs:538,1
    - Dst: cache_dir_id
      Src: /src/opendal/core/services/gdrive/src/lister.rs:539,1
    - Dst: build_rel_path
      Src: /src/opendal/core/services/gdrive/src/lister.rs:543,1
    - Dst: String::is_empty
      Src: /src/opendal/core/services/gdrive/src/lister.rs:544,1
    - Dst: String::ends_with
      Src: /src/opendal/core/services/gdrive/src/lister.rs:544,1
    - Dst: String::push
      Src: /src/opendal/core/services/gdrive/src/lister.rs:545,1
    - Dst: GdriveFlatLister::push_entry
      Src: /src/opendal/core/services/gdrive/src/lister.rs:547,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/gdrive/src/lister.rs:547,1
    - Dst: push_back
      Src: /src/opendal/core/services/gdrive/src/lister.rs:550,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/gdrive/src/lister.rs:551,1
    - Dst: clone
      Src: /src/opendal/core/services/gdrive/src/lister.rs:552,1
    - Dst: insert
      Src: /src/opendal/core/services/gdrive/src/lister.rs:554,1
    - Dst: clone
      Src: /src/opendal/core/services/gdrive/src/lister.rs:554,1
    - Dst: clone
      Src: /src/opendal/core/services/gdrive/src/lister.rs:557,1
    - Dst: Some
      Src: /src/opendal/core/services/gdrive/src/lister.rs:558,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/gdrive/src/lister.rs:558,1
    - Dst: get_parent
      Src: /src/opendal/core/services/gdrive/src/lister.rs:560,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/gdrive/src/lister.rs:560,1
    - Dst: Result::clear
      Src: /src/opendal/core/services/gdrive/src/lister.rs:562,1
    - Dst: resolve_path
      Src: /src/opendal/core/services/gdrive/src/lister.rs:565,1
    - Dst: resolve_path_after_refresh
      Src: /src/opendal/core/services/gdrive/src/lister.rs:567,1
    - Dst: Ok
      Src: /src/opendal/core/services/gdrive/src/lister.rs:575,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/gdrive/src/lister.rs:580,1
    - Dst: push_back
      Src: /src/opendal/core/services/gdrive/src/lister.rs:581,1
    - Dst: GdriveFlatLister::inject_recent_entries
      Src: /src/opendal/core/services/gdrive/src/lister.rs:587,1
    - Dst: Ok
      Src: /src/opendal/core/services/gdrive/src/lister.rs:589,1
    CyclomaticComplexity: 56
    EdgeCount: 56
    ICount: 397
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 590
      start: 396
    functionDepth: 34
    functionLinenumber: 396
    functionLinenumberEnd: 590
    functionName: GdriveFlatLister::initialize
    functionSourceFile: /src/opendal/core/services/gdrive/src/lister.rs
    functionUses: 1
    functionsReached:
    - status
    - push
    - ends_with
    - clone
    - serde_json::from_slice::<GdriveFile>
    - build_rel_path
    - resolve_path_after_refresh
    - Result::clone
    - map_err
    - Ok
    - cache_dir_id
    - GdriveFlatLister::inject_recent_entries
    - as_str
    - '&str::to_string'
    - String::push
    - Metadata::new
    - insert
    - String::ends_with
    - into_body
    - Some
    - Result::clear
    - recent_entry_for_path
    - is_empty
    - String::is_empty
    - to_bytes
    - GdriveFlatLister::push_entry
    - super::core::parse_error
    - refresh_path
    - get_parent
    - refresh_dir_path
    - push_back
    - Err
    - resolve_path
    - gdrive_stat_by_id
    linkageType: ''
    returnType: Result
    signature: async fn initialize(&mut self) -> Result<()>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: clear
      Src: /src/opendal/core/services/gdrive/src/lister.rs:594,1
    - Dst: len
      Src: /src/opendal/core/services/gdrive/src/lister.rs:595,1
    - Dst: pop_front
      Src: /src/opendal/core/services/gdrive/src/lister.rs:596,1
    - Dst: push
      Src: /src/opendal/core/services/gdrive/src/lister.rs:597,1
    - Dst: clone
      Src: /src/opendal/core/services/gdrive/src/lister.rs:597,1
    - Dst: insert
      Src: /src/opendal/core/services/gdrive/src/lister.rs:598,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 30
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 603
      start: 593
    functionDepth: 3
    functionLinenumber: 593
    functionLinenumberEnd: 603
    functionName: GdriveFlatLister::fill_batch
    functionSourceFile: /src/opendal/core/services/gdrive/src/lister.rs
    functionUses: 2
    functionsReached:
    - insert
    - push
    - pop_front
    - clone
    - clear
    - len
    linkageType: ''
    returnType: void
    signature: fn fill_batch(&mut self)
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: is_empty
      Src: /src/opendal/core/services/gdrive/src/lister.rs:607,1
    - Dst: Ok
      Src: /src/opendal/core/services/gdrive/src/lister.rs:609,1
    - Dst: gdrive_list_batch
      Src: /src/opendal/core/services/gdrive/src/lister.rs:618,1
    - Dst: status
      Src: /src/opendal/core/services/gdrive/src/lister.rs:623,1
    - Dst: clone
      Src: /src/opendal/core/services/gdrive/src/lister.rs:624,1
    - Dst: Vec::new
      Src: /src/opendal/core/services/gdrive/src/lister.rs:625,1
    - Dst: get
      Src: /src/opendal/core/services/gdrive/src/lister.rs:627,1
    - Dst: cloned
      Src: /src/opendal/core/services/gdrive/src/lister.rs:627,1
    - Dst: refresh_dir_path
      Src: /src/opendal/core/services/gdrive/src/lister.rs:628,1
    - Dst: resolve_path
      Src: /src/opendal/core/services/gdrive/src/lister.rs:629,1
    - Dst: bool::push
      Src: /src/opendal/core/services/gdrive/src/lister.rs:630,1
    - Dst: GdriveFlatLister::apply_refreshed_batch
      Src: /src/opendal/core/services/gdrive/src/lister.rs:635,1
    - Dst: Ok
      Src: /src/opendal/core/services/gdrive/src/lister.rs:637,1
    - Dst: gdrive_list_batch
      Src: /src/opendal/core/services/gdrive/src/lister.rs:640,1
    - Dst: status
      Src: /src/opendal/core/services/gdrive/src/lister.rs:646,1
    - Dst: into_body
      Src: /src/opendal/core/services/gdrive/src/lister.rs:647,1
    - Dst: to_bytes
      Src: /src/opendal/core/services/gdrive/src/lister.rs:647,1
    - Dst: Err
      Src: /src/opendal/core/services/gdrive/src/lister.rs:648,1
    - Dst: super::core::parse_error
      Src: /src/opendal/core/services/gdrive/src/lister.rs:648,1
    - Dst: Bytes::is_empty
      Src: /src/opendal/core/services/gdrive/src/lister.rs:653,1
    - Dst: clear
      Src: /src/opendal/core/services/gdrive/src/lister.rs:654,1
    - Dst: GdriveFlatLister::fill_batch
      Src: /src/opendal/core/services/gdrive/src/lister.rs:655,1
    - Dst: Ok
      Src: /src/opendal/core/services/gdrive/src/lister.rs:656,1
    - Dst: serde_json::from_slice::<GdriveFileList>
      Src: /src/opendal/core/services/gdrive/src/lister.rs:660,1
    - Dst: map_err
      Src: /src/opendal/core/services/gdrive/src/lister.rs:660,1
    - Dst: GdriveFlatLister::process_file
      Src: /src/opendal/core/services/gdrive/src/lister.rs:670,1
    - Dst: clear
      Src: /src/opendal/core/services/gdrive/src/lister.rs:677,1
    - Dst: GdriveFlatLister::fill_batch
      Src: /src/opendal/core/services/gdrive/src/lister.rs:679,1
    - Dst: Ok
      Src: /src/opendal/core/services/gdrive/src/lister.rs:682,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 143
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 683
      start: 606
    functionDepth: 37
    functionLinenumber: 606
    functionLinenumberEnd: 683
    functionName: GdriveFlatLister::process_batch
    functionSourceFile: /src/opendal/core/services/gdrive/src/lister.rs
    functionUses: 1
    functionsReached:
    - status
    - bool::push
    - GdriveFlatLister::apply_refreshed_batch
    - Bytes::is_empty
    - clone
    - Vec::new
    - GdriveFlatLister::fill_batch
    - map_err
    - get
    - Ok
    - gdrive_list_batch
    - serde_json::from_slice::<GdriveFileList>
    - into_body
    - is_empty
    - cloned
    - to_bytes
    - super::core::parse_error
    - refresh_dir_path
    - Err
    - resolve_path
    - clear
    - GdriveFlatLister::process_file
    linkageType: ''
    returnType: Result
    signature: async fn process_batch(&mut self) -> Result<()>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: as_str
      Src: /src/opendal/core/services/gdrive/src/lister.rs:687,1
    - Dst: ends_with
      Src: /src/opendal/core/services/gdrive/src/lister.rs:689,1
    - Dst: push
      Src: /src/opendal/core/services/gdrive/src/lister.rs:690,1
    - Dst: iter
      Src: /src/opendal/core/services/gdrive/src/lister.rs:698,1
    - Dst: find_map
      Src: /src/opendal/core/services/gdrive/src/lister.rs:698,1
    - Dst: get
      Src: /src/opendal/core/services/gdrive/src/lister.rs:701,1
    - Dst: cloned
      Src: /src/opendal/core/services/gdrive/src/lister.rs:701,1
    - Dst: unwrap_or_else
      Src: /src/opendal/core/services/gdrive/src/lister.rs:698,1
    - Dst: clone
      Src: /src/opendal/core/services/gdrive/src/lister.rs:702,1
    - Dst: metadata_from_gdrive_file
      Src: /src/opendal/core/services/gdrive/src/lister.rs:705,1
    - Dst: recent_entry_for_path
      Src: /src/opendal/core/services/gdrive/src/lister.rs:706,1
    - Dst: as_ref
      Src: /src/opendal/core/services/gdrive/src/lister.rs:708,1
    - Dst: map
      Src: /src/opendal/core/services/gdrive/src/lister.rs:708,1
    - Dst: String::starts_with
      Src: /src/opendal/core/services/gdrive/src/lister.rs:711,1
    - Dst: unwrap_or
      Src: /src/opendal/core/services/gdrive/src/lister.rs:708,1
    - Dst: GdriveFlatLister::apply_recent_entry
      Src: /src/opendal/core/services/gdrive/src/lister.rs:715,1
    - Dst: String::clone
      Src: /src/opendal/core/services/gdrive/src/lister.rs:715,1
    - Dst: clone
      Src: /src/opendal/core/services/gdrive/src/lister.rs:715,1
    - Dst: as_ref
      Src: /src/opendal/core/services/gdrive/src/lister.rs:722,1
    - Dst: map
      Src: /src/opendal/core/services/gdrive/src/lister.rs:722,1
    - Dst: String::starts_with
      Src: /src/opendal/core/services/gdrive/src/lister.rs:725,1
    - Dst: Result::starts_with
      Src: /src/opendal/core/services/gdrive/src/lister.rs:725,1
    - Dst: unwrap_or
      Src: /src/opendal/core/services/gdrive/src/lister.rs:722,1
    - Dst: push_back
      Src: /src/opendal/core/services/gdrive/src/lister.rs:729,1
    - Dst: clone
      Src: /src/opendal/core/services/gdrive/src/lister.rs:730,1
    - Dst: String::clone
      Src: /src/opendal/core/services/gdrive/src/lister.rs:731,1
    - Dst: insert
      Src: /src/opendal/core/services/gdrive/src/lister.rs:733,1
    - Dst: Ok
      Src: /src/opendal/core/services/gdrive/src/lister.rs:736,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 97
    argCount: 1
    argNames:
    - file
    argTypes:
    - GdriveFile
    constantsTouched: []
    func_position:
      end: 737
      start: 686
    functionDepth: 33
    functionLinenumber: 686
    functionLinenumberEnd: 737
    functionName: GdriveFlatLister::process_file
    functionSourceFile: /src/opendal/core/services/gdrive/src/lister.rs
    functionUses: 1
    functionsReached:
    - push
    - ends_with
    - clone
    - map
    - unwrap_or_else
    - iter
    - get
    - Ok
    - String::clone
    - as_str
    - unwrap_or
    - String::starts_with
    - insert
    - GdriveFlatLister::apply_recent_entry
    - recent_entry_for_path
    - cloned
    - metadata_from_gdrive_file
    - find_map
    - push_back
    - as_ref
    - Result::starts_with
    linkageType: ''
    returnType: Result
    signature: 'async fn process_file(&mut self, mut file: GdriveFile) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: GdriveFlatLister::initialize
      Src: /src/opendal/core/services/gdrive/src/lister.rs:744,1
    - Dst: GdriveFlatLister::fill_batch
      Src: /src/opendal/core/services/gdrive/src/lister.rs:745,1
    - Dst: pop_front
      Src: /src/opendal/core/services/gdrive/src/lister.rs:750,1
    - Dst: Ok
      Src: /src/opendal/core/services/gdrive/src/lister.rs:751,1
    - Dst: Some
      Src: /src/opendal/core/services/gdrive/src/lister.rs:751,1
    - Dst: Ok
      Src: /src/opendal/core/services/gdrive/src/lister.rs:756,1
    - Dst: GdriveFlatLister::process_batch
      Src: /src/opendal/core/services/gdrive/src/lister.rs:760,1
    - Dst: is_empty
      Src: /src/opendal/core/services/gdrive/src/lister.rs:763,1
    - Dst: is_empty
      Src: /src/opendal/core/services/gdrive/src/lister.rs:764,1
    - Dst: is_empty
      Src: /src/opendal/core/services/gdrive/src/lister.rs:765,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 50
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 770
      start: 741
    functionDepth: 35
    functionLinenumber: 741
    functionLinenumberEnd: 770
    functionName: GdriveFlatLister::next
    functionSourceFile: /src/opendal/core/services/gdrive/src/lister.rs
    functionUses: 0
    functionsReached:
    - Ok
    - pop_front
    - GdriveFlatLister::initialize
    - Some
    - is_empty
    - GdriveFlatLister::process_batch
    - GdriveFlatLister::fill_batch
    linkageType: ''
    returnType: Result
    signature: async fn next(&mut self) -> Result<Option<oio::Entry>>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: ServiceInfo::new
      Src: /src/opendal/core/services/gdrive/src/core.rs:928,1
    - Dst: Arc::new
      Src: /src/opendal/core/services/gdrive/src/core.rs:929,1
    - Dst: Mutex::new
      Src: /src/opendal/core/services/gdrive/src/core.rs:929,1
    - Dst: GdriveSigner::new
      Src: /src/opendal/core/services/gdrive/src/core.rs:929,1
    - Dst: ServiceInfo::clone
      Src: /src/opendal/core/services/gdrive/src/core.rs:932,1
    - Dst: Capability::default
      Src: /src/opendal/core/services/gdrive/src/core.rs:933,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/gdrive/src/core.rs:934,1
    - Dst: Signer::clone
      Src: /src/opendal/core/services/gdrive/src/core.rs:935,1
    - Dst: GdrivePathIndex::new
      Src: /src/opendal/core/services/gdrive/src/core.rs:936,1
    - Dst: GdrivePathQuery::new
      Src: /src/opendal/core/services/gdrive/src/core.rs:936,1
    - Dst: Mutex::new
      Src: /src/opendal/core/services/gdrive/src/core.rs:937,1
    - Dst: GdriveRecentState::default
      Src: /src/opendal/core/services/gdrive/src/core.rs:937,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 16
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 939
      start: 927
    functionDepth: 33
    functionLinenumber: 927
    functionLinenumberEnd: 939
    functionName: tests::mock_gdrive_core
    functionSourceFile: /src/opendal/core/services/gdrive/src/core.rs
    functionUses: 0
    functionsReached:
    - ServiceInfo::new
    - Arc::new
    - GdrivePathIndex::new
    - GdriveRecentState::default
    - ServiceInfo::clone
    - Signer::clone
    - Capability::default
    - '&str::to_string'
    - GdrivePathQuery::new
    - Mutex::new
    - GdriveSigner::new
    linkageType: ''
    returnType: GdriveCore
    signature: fn mock_gdrive_core() -> GdriveCore
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: OperationContext::new
      Src: /src/opendal/core/services/gdrive/src/lister.rs:800,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 801
      start: 799
    functionDepth: 4
    functionLinenumber: 799
    functionLinenumberEnd: 801
    functionName: tests::mock_operation_context
    functionSourceFile: /src/opendal/core/services/gdrive/src/lister.rs
    functionUses: 0
    functionsReached:
    - OperationContext::new
    linkageType: ''
    returnType: OperationContext
    signature: fn mock_operation_context() -> OperationContext
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: mock_gdrive_core
      Src: /src/opendal/core/services/gdrive/src/lister.rs:805,1
    - Dst: CompfsCore::record_recent_delete
      Src: /src/opendal/core/services/gdrive/src/lister.rs:806,1
    - Dst: GdriveFlatLister::new
      Src: /src/opendal/core/services/gdrive/src/lister.rs:810,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/gdrive/src/lister.rs:810,1
    - Dst: mock_operation_context
      Src: /src/opendal/core/services/gdrive/src/lister.rs:810,1
    - Dst: insert
      Src: /src/opendal/core/services/gdrive/src/lister.rs:811,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/gdrive/src/lister.rs:813,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/gdrive/src/lister.rs:813,1
    - Dst: Result::process_file
      Src: /src/opendal/core/services/gdrive/src/lister.rs:815,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/gdrive/src/lister.rs:817,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/gdrive/src/lister.rs:818,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/gdrive/src/lister.rs:819,1
    - Dst: unwrap
      Src: /src/opendal/core/services/gdrive/src/lister.rs:815,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 33
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 830
      start: 804
    functionDepth: 34
    functionLinenumber: 804
    functionLinenumberEnd: 830
    functionName: tests::test_process_file_skips_deleted_dirs_for_traversal
    functionSourceFile: /src/opendal/core/services/gdrive/src/lister.rs
    functionUses: 0
    functionsReached:
    - insert
    - Result::process_file
    - CompfsCore::record_recent_delete
    - GdriveFlatLister::new
    - unwrap
    - '&str::to_string'
    - mock_operation_context
    - mock_gdrive_core
    linkageType: ''
    returnType: void
    signature: async fn test_process_file_skips_deleted_dirs_for_traversal()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: mock_gdrive_core
      Src: /src/opendal/core/services/gdrive/src/lister.rs:834,1
    - Dst: GdriveFlatLister::new
      Src: /src/opendal/core/services/gdrive/src/lister.rs:836,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/gdrive/src/lister.rs:836,1
    - Dst: mock_operation_context
      Src: /src/opendal/core/services/gdrive/src/lister.rs:836,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/gdrive/src/lister.rs:837,1
    - Dst: insert
      Src: /src/opendal/core/services/gdrive/src/lister.rs:839,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/gdrive/src/lister.rs:841,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/gdrive/src/lister.rs:841,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 25
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 850
      start: 833
    functionDepth: 34
    functionLinenumber: 833
    functionLinenumberEnd: 850
    functionName: tests::test_apply_refreshed_batch_clears_page_token
    functionSourceFile: /src/opendal/core/services/gdrive/src/lister.rs
    functionUses: 0
    functionsReached:
    - insert
    - GdriveFlatLister::new
    - '&str::to_string'
    - mock_operation_context
    - mock_gdrive_core
    linkageType: ''
    returnType: void
    signature: fn test_apply_refreshed_batch_clears_page_token()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: to_string
      Src: /src/opendal/core/services/gdrive/src/reader.rs:42,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 4
    argNames:
    - backend
    - ctx
    - path
    argTypes:
    - GdriveBackend
    - OperationContext
    - '&str'
    - OpRead
    constantsTouched: []
    func_position:
      end: 44
      start: 33
    functionDepth: 2
    functionLinenumber: 33
    functionLinenumberEnd: 44
    functionName: GdriveReader::new
    functionSourceFile: /src/opendal/core/services/gdrive/src/reader.rs
    functionUses: 1
    functionsReached:
    - to_string
    linkageType: ''
    returnType: Self
    signature: 'pub(super) fn new(backend: GdriveBackend,ctx: OperationContext,path:
      &str,_: OpRead,) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: as_str
      Src: /src/opendal/core/services/gdrive/src/reader.rs:50,1
    - Dst: build_abs_path
      Src: /src/opendal/core/services/gdrive/src/reader.rs:51,1
    - Dst: gdrive_get
      Src: /src/opendal/core/services/gdrive/src/reader.rs:52,1
    - Dst: Error::kind
      Src: /src/opendal/core/services/gdrive/src/reader.rs:54,1
    - Dst: refresh_path
      Src: /src/opendal/core/services/gdrive/src/reader.rs:55,1
    - Dst: gdrive_get
      Src: /src/opendal/core/services/gdrive/src/reader.rs:56,1
    - Dst: Err
      Src: /src/opendal/core/services/gdrive/src/reader.rs:58,1
    - Dst: status
      Src: /src/opendal/core/services/gdrive/src/reader.rs:61,1
    - Dst: RpRead::new
      Src: /src/opendal/core/services/gdrive/src/reader.rs:64,1
    - Dst: parse_into_metadata
      Src: /src/opendal/core/services/gdrive/src/reader.rs:64,1
    - Dst: headers
      Src: /src/opendal/core/services/gdrive/src/reader.rs:64,1
    - Dst: into_body
      Src: /src/opendal/core/services/gdrive/src/reader.rs:65,1
    - Dst: refresh_path
      Src: /src/opendal/core/services/gdrive/src/reader.rs:68,1
    - Dst: gdrive_get
      Src: /src/opendal/core/services/gdrive/src/reader.rs:69,1
    - Dst: status
      Src: /src/opendal/core/services/gdrive/src/reader.rs:70,1
    - Dst: RpRead::new
      Src: /src/opendal/core/services/gdrive/src/reader.rs:73,1
    - Dst: parse_into_metadata
      Src: /src/opendal/core/services/gdrive/src/reader.rs:73,1
    - Dst: headers
      Src: /src/opendal/core/services/gdrive/src/reader.rs:73,1
    - Dst: into_body
      Src: /src/opendal/core/services/gdrive/src/reader.rs:74,1
    - Dst: into_parts
      Src: /src/opendal/core/services/gdrive/src/reader.rs:77,1
    - Dst: to_buffer
      Src: /src/opendal/core/services/gdrive/src/reader.rs:78,1
    - Dst: Err
      Src: /src/opendal/core/services/gdrive/src/reader.rs:79,1
    - Dst: super::core::parse_error
      Src: /src/opendal/core/services/gdrive/src/reader.rs:79,1
    - Dst: Response::from_parts
      Src: /src/opendal/core/services/gdrive/src/reader.rs:79,1
    - Dst: into_parts
      Src: /src/opendal/core/services/gdrive/src/reader.rs:84,1
    - Dst: to_buffer
      Src: /src/opendal/core/services/gdrive/src/reader.rs:85,1
    - Dst: Err
      Src: /src/opendal/core/services/gdrive/src/reader.rs:86,1
    - Dst: super::core::parse_error
      Src: /src/opendal/core/services/gdrive/src/reader.rs:86,1
    - Dst: Response::from_parts
      Src: /src/opendal/core/services/gdrive/src/reader.rs:86,1
    - Dst: Ok
      Src: /src/opendal/core/services/gdrive/src/reader.rs:90,1
    - Dst: Box::new
      Src: /src/opendal/core/services/gdrive/src/reader.rs:90,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 96
    argCount: 1
    argNames:
    - range
    argTypes:
    - BytesRange
    constantsTouched: []
    func_position:
      end: 91
      start: 48
    functionDepth: 35
    functionLinenumber: 48
    functionLinenumberEnd: 91
    functionName: GdriveReader::open
    functionSourceFile: /src/opendal/core/services/gdrive/src/reader.rs
    functionUses: 0
    functionsReached:
    - parse_into_metadata
    - to_buffer
    - status
    - gdrive_get
    - Ok
    - Box::new
    - into_body
    - build_abs_path
    - Err
    - Response::from_parts
    - as_str
    - Error::kind
    - headers
    - into_parts
    - RpRead::new
    - super::core::parse_error
    - refresh_path
    linkageType: ''
    returnType: Result
    signature: 'async fn open(&self, range: BytesRange) -> Result<(RpRead, Box<dyn
      oio::ReadStreamDyn>)>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::debug_struct
      Src: /src/opendal/core/services/gdrive/src/core.rs:55,1
    - Dst: field
      Src: /src/opendal/core/services/gdrive/src/core.rs:55,1
    - Dst: finish
      Src: /src/opendal/core/services/gdrive/src/core.rs:55,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - f
    argTypes:
    - '&mut std::fmt::Formatter<''_>'
    constantsTouched: []
    func_position:
      end: 58
      start: 54
    functionDepth: 5
    functionLinenumber: 54
    functionLinenumberEnd: 58
    functionName: GdriveCore::fmt
    functionSourceFile: /src/opendal/core/services/gdrive/src/core.rs
    functionUses: 0
    functionsReached:
    - field
    - finish
    - Result::debug_struct
    linkageType: ''
    returnType: std::fmt::Result
    signature: 'fn fmt(&self, f: &mut std::fmt::Formatter<''_>) -> std::fmt::Result'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: upsert_file
      Src: /src/opendal/core/services/gdrive/src/core.rs:63,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - path
    - file_id
    argTypes:
    - '&str'
    - '&str'
    constantsTouched: []
    func_position:
      end: 64
      start: 62
    functionDepth: 34
    functionLinenumber: 62
    functionLinenumberEnd: 64
    functionName: GdriveCore::cache_file_id
    functionSourceFile: /src/opendal/core/services/gdrive/src/core.rs
    functionUses: 0
    functionsReached:
    - upsert_file
    linkageType: ''
    returnType: void
    signature: 'pub async fn cache_file_id(&self, path: &str, file_id: &str)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: upsert_dir
      Src: /src/opendal/core/services/gdrive/src/core.rs:67,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - path
    - file_id
    argTypes:
    - '&str'
    - '&str'
    constantsTouched: []
    func_position:
      end: 68
      start: 66
    functionDepth: 34
    functionLinenumber: 66
    functionLinenumberEnd: 68
    functionName: GdriveCore::cache_dir_id
    functionSourceFile: /src/opendal/core/services/gdrive/src/core.rs
    functionUses: 0
    functionsReached:
    - upsert_dir
    linkageType: ''
    returnType: void
    signature: 'pub async fn cache_dir_id(&self, path: &str, file_id: &str)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: invalidate_file
      Src: /src/opendal/core/services/gdrive/src/core.rs:71,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - path
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 72
      start: 70
    functionDepth: 34
    functionLinenumber: 70
    functionLinenumberEnd: 72
    functionName: GdriveCore::invalidate_file_id
    functionSourceFile: /src/opendal/core/services/gdrive/src/core.rs
    functionUses: 1
    functionsReached:
    - invalidate_file
    linkageType: ''
    returnType: void
    signature: 'pub async fn invalidate_file_id(&self, path: &str)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: invalidate_dir
      Src: /src/opendal/core/services/gdrive/src/core.rs:75,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - path
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 76
      start: 74
    functionDepth: 34
    functionLinenumber: 74
    functionLinenumberEnd: 76
    functionName: GdriveCore::invalidate_dir_id
    functionSourceFile: /src/opendal/core/services/gdrive/src/core.rs
    functionUses: 2
    functionsReached:
    - invalidate_dir
    linkageType: ''
    returnType: void
    signature: 'pub async fn invalidate_dir_id(&self, path: &str)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: refresh_path
      Src: /src/opendal/core/services/gdrive/src/core.rs:79,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - path
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 80
      start: 78
    functionDepth: 34
    functionLinenumber: 78
    functionLinenumberEnd: 80
    functionName: GdriveCore::refresh_path
    functionSourceFile: /src/opendal/core/services/gdrive/src/core.rs
    functionUses: 3
    functionsReached:
    - refresh_path
    linkageType: ''
    returnType: void
    signature: 'pub async fn refresh_path(&self, path: &str)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: GdriveCore::invalidate_dir_id
      Src: /src/opendal/core/services/gdrive/src/core.rs:83,1
    - Dst: GdriveCore::refresh_path
      Src: /src/opendal/core/services/gdrive/src/core.rs:84,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - path
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 85
      start: 82
    functionDepth: 35
    functionLinenumber: 82
    functionLinenumberEnd: 85
    functionName: GdriveCore::refresh_dir_path
    functionSourceFile: /src/opendal/core/services/gdrive/src/core.rs
    functionUses: 0
    functionsReached:
    - GdriveCore::invalidate_dir_id
    - GdriveCore::refresh_path
    linkageType: ''
    returnType: void
    signature: 'pub async fn refresh_dir_path(&self, path: &str)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: get
      Src: /src/opendal/core/services/gdrive/src/core.rs:88,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - ctx
    - path
    argTypes:
    - '&OperationContext'
    - '&str'
    constantsTouched: []
    func_position:
      end: 89
      start: 87
    functionDepth: 2
    functionLinenumber: 87
    functionLinenumberEnd: 89
    functionName: GdriveCore::resolve_path
    functionSourceFile: /src/opendal/core/services/gdrive/src/core.rs
    functionUses: 5
    functionsReached:
    - get
    linkageType: ''
    returnType: Result
    signature: 'pub async fn resolve_path(&self, ctx: &OperationContext, path: &str)
      -> Result<Option<String>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: GdriveCore::refresh_path
      Src: /src/opendal/core/services/gdrive/src/core.rs:96,1
    - Dst: GdriveCore::resolve_path
      Src: /src/opendal/core/services/gdrive/src/core.rs:97,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - ctx
    - path
    argTypes:
    - '&OperationContext'
    - '&str'
    constantsTouched: []
    func_position:
      end: 98
      start: 91
    functionDepth: 35
    functionLinenumber: 91
    functionLinenumberEnd: 98
    functionName: GdriveCore::resolve_path_after_refresh
    functionSourceFile: /src/opendal/core/services/gdrive/src/core.rs
    functionUses: 4
    functionsReached:
    - GdriveCore::refresh_path
    - GdriveCore::resolve_path
    linkageType: ''
    returnType: Result
    signature: 'pub async fn resolve_path_after_refresh(&self,ctx: &OperationContext,path:
      &str,) -> Result<Option<String>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: ensure_dir
      Src: /src/opendal/core/services/gdrive/src/core.rs:101,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - ctx
    - path
    argTypes:
    - '&OperationContext'
    - '&str'
    constantsTouched: []
    func_position:
      end: 102
      start: 100
    functionDepth: 34
    functionLinenumber: 100
    functionLinenumberEnd: 102
    functionName: GdriveCore::ensure_dir
    functionSourceFile: /src/opendal/core/services/gdrive/src/core.rs
    functionUses: 3
    functionsReached:
    - ensure_dir
    linkageType: ''
    returnType: Result
    signature: 'pub async fn ensure_dir(&self, ctx: &OperationContext, path: &str)
      -> Result<String>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: GdriveCore::resolve_path
      Src: /src/opendal/core/services/gdrive/src/core.rs:105,1
    - Dst: Some
      Src: /src/opendal/core/services/gdrive/src/core.rs:106,1
    - Dst: GdriveCore::resolve_path_after_refresh
      Src: /src/opendal/core/services/gdrive/src/core.rs:107,1
    - Dst: take
      Src: /src/opendal/core/services/gdrive/src/core.rs:110,1
    - Dst: GdriveCore::gdrive_trash
      Src: /src/opendal/core/services/gdrive/src/core.rs:111,1
    - Dst: status
      Src: /src/opendal/core/services/gdrive/src/core.rs:112,1
    - Dst: GdriveCore::refresh_path
      Src: /src/opendal/core/services/gdrive/src/core.rs:113,1
    - Dst: GdriveCore::resolve_path
      Src: /src/opendal/core/services/gdrive/src/core.rs:114,1
    - Dst: GdriveCore::gdrive_trash
      Src: /src/opendal/core/services/gdrive/src/core.rs:116,1
    - Dst: Ok
      Src: /src/opendal/core/services/gdrive/src/core.rs:118,1
    - Dst: status
      Src: /src/opendal/core/services/gdrive/src/core.rs:122,1
    - Dst: Ok
      Src: /src/opendal/core/services/gdrive/src/core.rs:123,1
    - Dst: status
      Src: /src/opendal/core/services/gdrive/src/core.rs:125,1
    - Dst: Err
      Src: /src/opendal/core/services/gdrive/src/core.rs:126,1
    - Dst: parse_error
      Src: /src/opendal/core/services/gdrive/src/core.rs:126,1
    - Dst: GdriveCore::invalidate_file_id
      Src: /src/opendal/core/services/gdrive/src/core.rs:129,1
    - Dst: GdriveCore::invalidate_dir_id
      Src: /src/opendal/core/services/gdrive/src/core.rs:130,1
    - Dst: Ok
      Src: /src/opendal/core/services/gdrive/src/core.rs:133,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 75
    argCount: 2
    argNames:
    - ctx
    - path
    argTypes:
    - '&OperationContext'
    - '&str'
    constantsTouched: []
    func_position:
      end: 134
      start: 104
    functionDepth: 36
    functionLinenumber: 104
    functionLinenumberEnd: 134
    functionName: GdriveCore::trash_path_if_exists
    functionSourceFile: /src/opendal/core/services/gdrive/src/core.rs
    functionUses: 1
    functionsReached:
    - GdriveCore::gdrive_trash
    - GdriveCore::resolve_path_after_refresh
    - status
    - Ok
    - parse_error
    - GdriveCore::resolve_path
    - Some
    - take
    - Err
    - GdriveCore::invalidate_dir_id
    - GdriveCore::invalidate_file_id
    - GdriveCore::refresh_path
    linkageType: ''
    returnType: Result
    signature: 'pub async fn trash_path_if_exists(&self, ctx: &OperationContext, path:
      &str) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/opendal/core/services/gdrive/src/core.rs:137,1
    - Dst: prune_recent_entries
      Src: /src/opendal/core/services/gdrive/src/core.rs:138,1
    - Dst: anyhow::Result::mode
      Src: /src/opendal/core/services/gdrive/src/core.rs:140,1
    - Dst: canonical_recent_path
      Src: /src/opendal/core/services/gdrive/src/core.rs:141,1
    - Dst: Timestamp::now
      Src: /src/opendal/core/services/gdrive/src/core.rs:142,1
    - Dst: Duration::from_secs
      Src: /src/opendal/core/services/gdrive/src/core.rs:142,1
    - Dst: insert_recent_entry
      Src: /src/opendal/core/services/gdrive/src/core.rs:143,1
    - Dst: Some
      Src: /src/opendal/core/services/gdrive/src/core.rs:148,1
    - Dst: revive_recent_parent_dirs
      Src: /src/opendal/core/services/gdrive/src/core.rs:152,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 24
    argCount: 2
    argNames:
    - path
    - metadata
    argTypes:
    - '&str'
    - Metadata
    constantsTouched: []
    func_position:
      end: 153
      start: 136
    functionDepth: 33
    functionLinenumber: 136
    functionLinenumberEnd: 153
    functionName: GdriveCore::record_recent_upsert
    functionSourceFile: /src/opendal/core/services/gdrive/src/core.rs
    functionUses: 0
    functionsReached:
    - Timestamp::now
    - canonical_recent_path
    - lock
    - anyhow::Result::mode
    - revive_recent_parent_dirs
    - Some
    - prune_recent_entries
    - Duration::from_secs
    - insert_recent_entry
    linkageType: ''
    returnType: void
    signature: 'pub async fn record_recent_upsert(&self, path: &str, metadata: Metadata)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/opendal/core/services/gdrive/src/core.rs:156,1
    - Dst: prune_recent_entries
      Src: /src/opendal/core/services/gdrive/src/core.rs:157,1
    - Dst: canonical_recent_path
      Src: /src/opendal/core/services/gdrive/src/core.rs:159,1
    - Dst: Timestamp::now
      Src: /src/opendal/core/services/gdrive/src/core.rs:160,1
    - Dst: Duration::from_secs
      Src: /src/opendal/core/services/gdrive/src/core.rs:160,1
    - Dst: insert_recent_entry
      Src: /src/opendal/core/services/gdrive/src/core.rs:161,1
    - Dst: Option::is_dir
      Src: /src/opendal/core/services/gdrive/src/core.rs:170,1
    - Dst: insert
      Src: /src/opendal/core/services/gdrive/src/core.rs:171,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 25
    argCount: 2
    argNames:
    - path
    - mode
    argTypes:
    - '&str'
    - EntryMode
    constantsTouched: []
    func_position:
      end: 173
      start: 155
    functionDepth: 33
    functionLinenumber: 155
    functionLinenumberEnd: 173
    functionName: GdriveCore::record_recent_delete
    functionSourceFile: /src/opendal/core/services/gdrive/src/core.rs
    functionUses: 0
    functionsReached:
    - Timestamp::now
    - canonical_recent_path
    - insert
    - lock
    - Option::is_dir
    - prune_recent_entries
    - Duration::from_secs
    - insert_recent_entry
    linkageType: ''
    returnType: void
    signature: 'pub async fn record_recent_delete(&self, path: &str, mode: EntryMode)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/opendal/core/services/gdrive/src/core.rs:176,1
    - Dst: prune_recent_entries
      Src: /src/opendal/core/services/gdrive/src/core.rs:177,1
    - Dst: lookup_recent_entry
      Src: /src/opendal/core/services/gdrive/src/core.rs:179,1
    - Dst: lookup_recent_tombstone
      Src: /src/opendal/core/services/gdrive/src/core.rs:180,1
    - Dst: clone
      Src: /src/opendal/core/services/gdrive/src/core.rs:188,1
    - Dst: GdriveRecentPathState::Present
      Src: /src/opendal/core/services/gdrive/src/core.rs:189,1
    - Dst: Box::new
      Src: /src/opendal/core/services/gdrive/src/core.rs:189,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 24
    argCount: 1
    argNames:
    - path
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 195
      start: 175
    functionDepth: 33
    functionLinenumber: 175
    functionLinenumberEnd: 195
    functionName: GdriveCore::recent_entry_for_path
    functionSourceFile: /src/opendal/core/services/gdrive/src/core.rs
    functionUses: 1
    functionsReached:
    - lock
    - Box::new
    - lookup_recent_entry
    - clone
    - prune_recent_entries
    - lookup_recent_tombstone
    - GdriveRecentPathState::Present
    linkageType: ''
    returnType: GdriveRecentPathState
    signature: 'pub async fn recent_entry_for_path(&self, path: &str) -> GdriveRecentPathState'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/opendal/core/services/gdrive/src/core.rs:202,1
    - Dst: prune_recent_entries
      Src: /src/opendal/core/services/gdrive/src/core.rs:203,1
    - Dst: iter
      Src: /src/opendal/core/services/gdrive/src/core.rs:205,1
    - Dst: filter_map
      Src: /src/opendal/core/services/gdrive/src/core.rs:205,1
    - Dst: clone
      Src: /src/opendal/core/services/gdrive/src/core.rs:209,1
    - Dst: anyhow::Result::mode
      Src: /src/opendal/core/services/gdrive/src/core.rs:210,1
    - Dst: Option::is_dir
      Src: /src/opendal/core/services/gdrive/src/core.rs:210,1
    - Dst: normalize_dir_path
      Src: /src/opendal/core/services/gdrive/src/core.rs:210,1
    - Dst: lookup_recent_tombstone
      Src: /src/opendal/core/services/gdrive/src/core.rs:214,1
    - Dst: lookup_recent_entry
      Src: /src/opendal/core/services/gdrive/src/core.rs:219,1
    - Dst: recent_entry_in_scope
      Src: /src/opendal/core/services/gdrive/src/core.rs:224,1
    - Dst: anyhow::Result::mode
      Src: /src/opendal/core/services/gdrive/src/core.rs:224,1
    - Dst: Some
      Src: /src/opendal/core/services/gdrive/src/core.rs:225,1
    - Dst: clone
      Src: /src/opendal/core/services/gdrive/src/core.rs:225,1
    - Dst: "entries\n            .iter()\n            .filter_map(|(path, entry)|\
        \ {\n                let metadata = entry.metadata.clone()?;\n           \
        \     if metadata.mode().is_dir() && path != &normalize_dir_path(path) {\n\
        \                    return None;\n                }\n                if let\
        \ Some(tombstone_expires_at) =\n                    lookup_recent_tombstone(&recent_entries.tombstones,\
        \ path)\n                    && tombstone_expires_at > entry.expires_at\n\
        \                {\n                    return None;\n                }\n\
        \                if let Some(latest_entry) = lookup_recent_entry(&recent_entries.entries,\
        \ path)\n                    && latest_entry.expires_at > entry.expires_at\n\
        \                {\n                    return None;\n                }\n\
        \                if recent_entry_in_scope(scope_path, path, metadata.mode(),\
        \ recursive) {\n                    Some((path.clone(), metadata))\n     \
        \           } else {\n                    None\n                }\n      \
        \      })\n            .collect::<Vec<_>>"
      Src: /src/opendal/core/services/gdrive/src/core.rs:205,1
    - Dst: sort_by
      Src: /src/opendal/core/services/gdrive/src/core.rs:232,1
    - Dst: cmp
      Src: /src/opendal/core/services/gdrive/src/core.rs:232,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 68
    argCount: 2
    argNames:
    - scope_path
    - recursive
    argTypes:
    - '&str'
    - bool
    constantsTouched: []
    func_position:
      end: 234
      start: 197
    functionDepth: 33
    functionLinenumber: 197
    functionLinenumberEnd: 234
    functionName: GdriveCore::recent_entries_for_list
    functionSourceFile: /src/opendal/core/services/gdrive/src/core.rs
    functionUses: 0
    functionsReached:
    - iter
    - cmp
    - "entries\n            .iter()\n            .filter_map(|(path, entry)| {\n \
      \               let metadata = entry.metadata.clone()?;\n                if\
      \ metadata.mode().is_dir() && path != &normalize_dir_path(path) {\n        \
      \            return None;\n                }\n                if let Some(tombstone_expires_at)\
      \ =\n                    lookup_recent_tombstone(&recent_entries.tombstones,\
      \ path)\n                    && tombstone_expires_at > entry.expires_at\n  \
      \              {\n                    return None;\n                }\n    \
      \            if let Some(latest_entry) = lookup_recent_entry(&recent_entries.entries,\
      \ path)\n                    && latest_entry.expires_at > entry.expires_at\n\
      \                {\n                    return None;\n                }\n  \
      \              if recent_entry_in_scope(scope_path, path, metadata.mode(), recursive)\
      \ {\n                    Some((path.clone(), metadata))\n                } else\
      \ {\n                    None\n                }\n            })\n         \
      \   .collect::<Vec<_>>"
    - lock
    - anyhow::Result::mode
    - Option::is_dir
    - lookup_recent_entry
    - clone
    - Some
    - sort_by
    - prune_recent_entries
    - normalize_dir_path
    - lookup_recent_tombstone
    - filter_map
    - recent_entry_in_scope
    linkageType: ''
    returnType: Vec
    signature: 'pub async fn recent_entries_for_list(&self,scope_path: &str,recursive:
      bool,) -> Vec<(String, Metadata)>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Request::get
      Src: /src/opendal/core/services/gdrive/src/core.rs:243,1
    - Dst: Option::extension
      Src: /src/opendal/core/services/gdrive/src/core.rs:243,1
    - Dst: extension
      Src: /src/opendal/core/services/gdrive/src/core.rs:243,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/gdrive/src/core.rs:247,1
    - Dst: body
      Src: /src/opendal/core/services/gdrive/src/core.rs:243,1
    - Dst: Buffer::new
      Src: /src/opendal/core/services/gdrive/src/core.rs:248,1
    - Dst: map_err
      Src: /src/opendal/core/services/gdrive/src/core.rs:243,1
    - Dst: GdriveCore::sign
      Src: /src/opendal/core/services/gdrive/src/core.rs:250,1
    - Dst: Result::http_transport
      Src: /src/opendal/core/services/gdrive/src/core.rs:252,1
    - Dst: Self::send
      Src: /src/opendal/core/services/gdrive/src/core.rs:252,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 23
    argCount: 2
    argNames:
    - ctx
    - file_id
    argTypes:
    - '&OperationContext'
    - '&str'
    constantsTouched: []
    func_position:
      end: 253
      start: 236
    functionDepth: 34
    functionLinenumber: 236
    functionLinenumberEnd: 253
    functionName: GdriveCore::gdrive_stat_by_id
    functionSourceFile: /src/opendal/core/services/gdrive/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - extension
    - Request::get
    - Buffer::new
    - Self::send
    - body
    - Option::extension
    - GdriveCore::sign
    - ServiceOperation
    - Result::http_transport
    linkageType: ''
    returnType: Result
    signature: 'pub async fn gdrive_stat_by_id(&self,ctx: &OperationContext,file_id:
      &str,) -> Result<Response<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/gdrive/src/core.rs:261,1
    - Dst: GdriveCore::recent_entry_for_path
      Src: /src/opendal/core/services/gdrive/src/core.rs:262,1
    - Dst: Err
      Src: /src/opendal/core/services/gdrive/src/core.rs:264,1
    - Dst: Error::new
      Src: /src/opendal/core/services/gdrive/src/core.rs:264,1
    - Dst: GdriveCore::resolve_path
      Src: /src/opendal/core/services/gdrive/src/core.rs:271,1
    - Dst: GdriveCore::resolve_path_after_refresh
      Src: /src/opendal/core/services/gdrive/src/core.rs:273,1
    - Dst: Err
      Src: /src/opendal/core/services/gdrive/src/core.rs:276,1
    - Dst: Error::new
      Src: /src/opendal/core/services/gdrive/src/core.rs:276,1
    - Dst: Request::get
      Src: /src/opendal/core/services/gdrive/src/core.rs:286,1
    - Dst: Option::extension
      Src: /src/opendal/core/services/gdrive/src/core.rs:286,1
    - Dst: extension
      Src: /src/opendal/core/services/gdrive/src/core.rs:286,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/gdrive/src/core.rs:288,1
    - Dst: http::header
      Src: /src/opendal/core/services/gdrive/src/core.rs:286,1
    - Dst: (Vec::to_header
      Src: /src/opendal/core/services/gdrive/src/core.rs:289,1
    - Dst: body
      Src: /src/opendal/core/services/gdrive/src/core.rs:286,1
    - Dst: Buffer::new
      Src: /src/opendal/core/services/gdrive/src/core.rs:290,1
    - Dst: map_err
      Src: /src/opendal/core/services/gdrive/src/core.rs:286,1
    - Dst: GdriveCore::sign
      Src: /src/opendal/core/services/gdrive/src/core.rs:292,1
    - Dst: Result::http_transport
      Src: /src/opendal/core/services/gdrive/src/core.rs:294,1
    - Dst: Self::fetch
      Src: /src/opendal/core/services/gdrive/src/core.rs:294,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 57
    argCount: 3
    argNames:
    - ctx
    - path
    - range
    argTypes:
    - '&OperationContext'
    - '&str'
    - BytesRange
    constantsTouched: []
    func_position:
      end: 295
      start: 255
    functionDepth: 34
    functionLinenumber: 255
    functionLinenumberEnd: 295
    functionName: GdriveCore::gdrive_get
    functionSourceFile: /src/opendal/core/services/gdrive/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - extension
    - GdriveCore::resolve_path_after_refresh
    - Request::get
    - (Vec::to_header
    - Buffer::new
    - http::header
    - body
    - GdriveCore::resolve_path
    - Err
    - Error::new
    - build_abs_path
    - Option::extension
    - GdriveCore::sign
    - ServiceOperation
    - Self::fetch
    - GdriveCore::recent_entry_for_path
    - Result::http_transport
    linkageType: ''
    returnType: Result
    signature: 'pub async fn gdrive_get(&self,ctx: &OperationContext,path: &str,range:
      BytesRange,) -> Result<Response<HttpBody>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: QueryPairsWriter::new
      Src: /src/opendal/core/services/gdrive/src/core.rs:306,1
    - Dst: Result::push
      Src: /src/opendal/core/services/gdrive/src/core.rs:307,1
    - Dst: i32::to_string
      Src: /src/opendal/core/services/gdrive/src/core.rs:307,1
    - Dst: Result::push
      Src: /src/opendal/core/services/gdrive/src/core.rs:308,1
    - Dst: percent_encode_path
      Src: /src/opendal/core/services/gdrive/src/core.rs:308,1
    - Dst: Result::push
      Src: /src/opendal/core/services/gdrive/src/core.rs:309,1
    - Dst: is_empty
      Src: /src/opendal/core/services/gdrive/src/core.rs:313,1
    - Dst: Result::push
      Src: /src/opendal/core/services/gdrive/src/core.rs:314,1
    - Dst: Request::get
      Src: /src/opendal/core/services/gdrive/src/core.rs:317,1
    - Dst: Result::finish
      Src: /src/opendal/core/services/gdrive/src/core.rs:317,1
    - Dst: Option::extension
      Src: /src/opendal/core/services/gdrive/src/core.rs:317,1
    - Dst: extension
      Src: /src/opendal/core/services/gdrive/src/core.rs:317,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/gdrive/src/core.rs:319,1
    - Dst: body
      Src: /src/opendal/core/services/gdrive/src/core.rs:317,1
    - Dst: Buffer::new
      Src: /src/opendal/core/services/gdrive/src/core.rs:320,1
    - Dst: map_err
      Src: /src/opendal/core/services/gdrive/src/core.rs:317,1
    - Dst: GdriveCore::sign
      Src: /src/opendal/core/services/gdrive/src/core.rs:322,1
    - Dst: Result::http_transport
      Src: /src/opendal/core/services/gdrive/src/core.rs:324,1
    - Dst: Self::send
      Src: /src/opendal/core/services/gdrive/src/core.rs:324,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 53
    argCount: 4
    argNames:
    - ctx
    - file_id
    - page_size
    - next_page_token
    argTypes:
    - '&OperationContext'
    - '&str'
    - i32
    - '&str'
    constantsTouched: []
    func_position:
      end: 325
      start: 297
    functionDepth: 34
    functionLinenumber: 297
    functionLinenumberEnd: 325
    functionName: GdriveCore::gdrive_list
    functionSourceFile: /src/opendal/core/services/gdrive/src/core.rs
    functionUses: 0
    functionsReached:
    - QueryPairsWriter::new
    - extension
    - Request::get
    - Buffer::new
    - map_err
    - i32::to_string
    - Self::send
    - body
    - Result::finish
    - is_empty
    - Result::push
    - Option::extension
    - GdriveCore::sign
    - percent_encode_path
    - ServiceOperation
    - Result::http_transport
    linkageType: ''
    returnType: Result
    signature: 'pub async fn gdrive_list(&self,ctx: &OperationContext,file_id: &str,page_size:
      i32,next_page_token: &str,) -> Result<Response<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: '&[String]::is_empty'
      Src: /src/opendal/core/services/gdrive/src/core.rs:337,1
    - Dst: Err
      Src: /src/opendal/core/services/gdrive/src/core.rs:338,1
    - Dst: Error::new
      Src: /src/opendal/core/services/gdrive/src/core.rs:338,1
    - Dst: '&[String]::iter'
      Src: /src/opendal/core/services/gdrive/src/core.rs:345,1
    - Dst: map
      Src: /src/opendal/core/services/gdrive/src/core.rs:345,1
    - Dst: "iter()\n            .map(|id| format!(\"'{}' in parents\", id))\n    \
        \        .collect::<Vec<_>>"
      Src: /src/opendal/core/services/gdrive/src/core.rs:345,1
    - Dst: join
      Src: /src/opendal/core/services/gdrive/src/core.rs:345,1
    - Dst: QueryPairsWriter::new
      Src: /src/opendal/core/services/gdrive/src/core.rs:353,1
    - Dst: Result::push
      Src: /src/opendal/core/services/gdrive/src/core.rs:354,1
    - Dst: i32::to_string
      Src: /src/opendal/core/services/gdrive/src/core.rs:354,1
    - Dst: Result::push
      Src: /src/opendal/core/services/gdrive/src/core.rs:355,1
    - Dst: percent_encode_path
      Src: /src/opendal/core/services/gdrive/src/core.rs:355,1
    - Dst: Result::push
      Src: /src/opendal/core/services/gdrive/src/core.rs:357,1
    - Dst: is_empty
      Src: /src/opendal/core/services/gdrive/src/core.rs:361,1
    - Dst: Result::push
      Src: /src/opendal/core/services/gdrive/src/core.rs:362,1
    - Dst: Request::get
      Src: /src/opendal/core/services/gdrive/src/core.rs:365,1
    - Dst: Result::finish
      Src: /src/opendal/core/services/gdrive/src/core.rs:365,1
    - Dst: Option::extension
      Src: /src/opendal/core/services/gdrive/src/core.rs:365,1
    - Dst: extension
      Src: /src/opendal/core/services/gdrive/src/core.rs:365,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/gdrive/src/core.rs:367,1
    - Dst: body
      Src: /src/opendal/core/services/gdrive/src/core.rs:365,1
    - Dst: Buffer::new
      Src: /src/opendal/core/services/gdrive/src/core.rs:368,1
    - Dst: map_err
      Src: /src/opendal/core/services/gdrive/src/core.rs:365,1
    - Dst: GdriveCore::sign
      Src: /src/opendal/core/services/gdrive/src/core.rs:370,1
    - Dst: Result::http_transport
      Src: /src/opendal/core/services/gdrive/src/core.rs:372,1
    - Dst: Self::send
      Src: /src/opendal/core/services/gdrive/src/core.rs:372,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 70
    argCount: 4
    argNames:
    - ctx
    - file_ids
    - page_size
    - next_page_token
    argTypes:
    - '&OperationContext'
    - '&[String]'
    - i32
    - '&str'
    constantsTouched: []
    func_position:
      end: 373
      start: 330
    functionDepth: 36
    functionLinenumber: 330
    functionLinenumberEnd: 373
    functionName: GdriveCore::gdrive_list_batch
    functionSourceFile: /src/opendal/core/services/gdrive/src/core.rs
    functionUses: 0
    functionsReached:
    - Buffer::new
    - Self::send
    - Result::finish
    - map
    - GdriveCore::sign
    - percent_encode_path
    - map_err
    - extension
    - Result::push
    - ServiceOperation
    - Result::http_transport
    - QueryPairsWriter::new
    - i32::to_string
    - join
    - is_empty
    - "iter()\n            .map(|id| format!(\"'{}' in parents\", id))\n         \
      \   .collect::<Vec<_>>"
    - Request::get
    - '&[String]::iter'
    - body
    - Error::new
    - Err
    - Option::extension
    - '&[String]::is_empty'
    linkageType: ''
    returnType: Result
    signature: 'pub async fn gdrive_list_batch(&self,ctx: &OperationContext,file_ids:
      &[String],page_size: i32,next_page_token: &str,) -> Result<Response<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: GdriveCore::resolve_path
      Src: /src/opendal/core/services/gdrive/src/core.rs:382,1
    - Dst: GdriveCore::resolve_path_after_refresh
      Src: /src/opendal/core/services/gdrive/src/core.rs:384,1
    - Dst: ok_or
      Src: /src/opendal/core/services/gdrive/src/core.rs:384,1
    - Dst: Error::new
      Src: /src/opendal/core/services/gdrive/src/core.rs:387,1
    - Dst: get_parent
      Src: /src/opendal/core/services/gdrive/src/core.rs:392,1
    - Dst: GdriveCore::resolve_path
      Src: /src/opendal/core/services/gdrive/src/core.rs:393,1
    - Dst: GdriveCore::resolve_path_after_refresh
      Src: /src/opendal/core/services/gdrive/src/core.rs:395,1
    - Dst: expect
      Src: /src/opendal/core/services/gdrive/src/core.rs:395,1
    - Dst: GdriveCore::ensure_dir
      Src: /src/opendal/core/services/gdrive/src/core.rs:401,1
    - Dst: get_parent
      Src: /src/opendal/core/services/gdrive/src/core.rs:401,1
    - Dst: get_basename
      Src: /src/opendal/core/services/gdrive/src/core.rs:402,1
    - Dst: Request::patch
      Src: /src/opendal/core/services/gdrive/src/core.rs:411,1
    - Dst: Result::extension
      Src: /src/opendal/core/services/gdrive/src/core.rs:411,1
    - Dst: extension
      Src: /src/opendal/core/services/gdrive/src/core.rs:411,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/gdrive/src/core.rs:413,1
    - Dst: body
      Src: /src/opendal/core/services/gdrive/src/core.rs:411,1
    - Dst: Buffer::from
      Src: /src/opendal/core/services/gdrive/src/core.rs:414,1
    - Dst: Bytes::from
      Src: /src/opendal/core/services/gdrive/src/core.rs:414,1
    - Dst: anyhow::Result::to_string
      Src: /src/opendal/core/services/gdrive/src/core.rs:414,1
    - Dst: map_err
      Src: /src/opendal/core/services/gdrive/src/core.rs:411,1
    - Dst: GdriveCore::sign
      Src: /src/opendal/core/services/gdrive/src/core.rs:417,1
    - Dst: Result::http_transport
      Src: /src/opendal/core/services/gdrive/src/core.rs:419,1
    - Dst: Self::send
      Src: /src/opendal/core/services/gdrive/src/core.rs:419,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 58
    argCount: 3
    argNames:
    - ctx
    - source
    - target
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    constantsTouched: []
    func_position:
      end: 420
      start: 376
    functionDepth: 36
    functionLinenumber: 376
    functionLinenumberEnd: 420
    functionName: GdriveCore::gdrive_patch_metadata_request
    functionSourceFile: /src/opendal/core/services/gdrive/src/core.rs
    functionUses: 0
    functionsReached:
    - GdriveCore::resolve_path_after_refresh
    - Self::send
    - GdriveCore::sign
    - Request::patch
    - map_err
    - extension
    - expect
    - ServiceOperation
    - GdriveCore::ensure_dir
    - Result::http_transport
    - Buffer::from
    - anyhow::Result::to_string
    - GdriveCore::resolve_path
    - Bytes::from
    - ok_or
    - get_parent
    - Result::extension
    - body
    - get_basename
    - Error::new
    linkageType: ''
    returnType: Result
    signature: 'pub async fn gdrive_patch_metadata_request(&self,ctx: &OperationContext,source:
      &str,target: &str,) -> Result<Response<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: serde_json::to_vec
      Src: /src/opendal/core/services/gdrive/src/core.rs:429,1
    - Dst: Vec::map_err
      Src: /src/opendal/core/services/gdrive/src/core.rs:429,1
    - Dst: Request::patch
      Src: /src/opendal/core/services/gdrive/src/core.rs:434,1
    - Dst: Result::extension
      Src: /src/opendal/core/services/gdrive/src/core.rs:434,1
    - Dst: extension
      Src: /src/opendal/core/services/gdrive/src/core.rs:434,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/gdrive/src/core.rs:436,1
    - Dst: body
      Src: /src/opendal/core/services/gdrive/src/core.rs:434,1
    - Dst: Buffer::from
      Src: /src/opendal/core/services/gdrive/src/core.rs:437,1
    - Dst: Bytes::from
      Src: /src/opendal/core/services/gdrive/src/core.rs:437,1
    - Dst: map_err
      Src: /src/opendal/core/services/gdrive/src/core.rs:434,1
    - Dst: GdriveCore::sign
      Src: /src/opendal/core/services/gdrive/src/core.rs:440,1
    - Dst: Result::http_transport
      Src: /src/opendal/core/services/gdrive/src/core.rs:442,1
    - Dst: Self::send
      Src: /src/opendal/core/services/gdrive/src/core.rs:442,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 30
    argCount: 2
    argNames:
    - ctx
    - file_id
    argTypes:
    - '&OperationContext'
    - '&str'
    constantsTouched: []
    func_position:
      end: 443
      start: 422
    functionDepth: 42
    functionLinenumber: 422
    functionLinenumberEnd: 443
    functionName: GdriveCore::gdrive_trash
    functionSourceFile: /src/opendal/core/services/gdrive/src/core.rs
    functionUses: 1
    functionsReached:
    - map_err
    - extension
    - Self::send
    - Result::extension
    - body
    - Bytes::from
    - Buffer::from
    - Vec::map_err
    - ServiceOperation
    - GdriveCore::sign
    - Result::http_transport
    - Request::patch
    - serde_json::to_vec
    linkageType: ''
    returnType: Result
    signature: 'pub async fn gdrive_trash(&self,ctx: &OperationContext,file_id: &str,)
      -> Result<Response<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: GdriveCore::ensure_dir
      Src: /src/opendal/core/services/gdrive/src/core.rs:453,1
    - Dst: get_parent
      Src: /src/opendal/core/services/gdrive/src/core.rs:453,1
    - Dst: get_basename
      Src: /src/opendal/core/services/gdrive/src/core.rs:457,1
    - Dst: serde_json::to_vec
      Src: /src/opendal/core/services/gdrive/src/core.rs:459,1
    - Dst: Vec::map_err
      Src: /src/opendal/core/services/gdrive/src/core.rs:459,1
    - Dst: Request::post
      Src: /src/opendal/core/services/gdrive/src/core.rs:465,1
    - Dst: http::header
      Src: /src/opendal/core/services/gdrive/src/core.rs:465,1
    - Dst: extension
      Src: /src/opendal/core/services/gdrive/src/core.rs:465,1
    - Dst: extension
      Src: /src/opendal/core/services/gdrive/src/core.rs:465,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/gdrive/src/core.rs:468,1
    - Dst: Multipart::new
      Src: /src/opendal/core/services/gdrive/src/core.rs:470,1
    - Dst: Self::part
      Src: /src/opendal/core/services/gdrive/src/core.rs:470,1
    - Dst: FormDataPart::new
      Src: /src/opendal/core/services/gdrive/src/core.rs:472,1
    - Dst: Self::header
      Src: /src/opendal/core/services/gdrive/src/core.rs:472,1
    - Dst: '&str::parse'
      Src: /src/opendal/core/services/gdrive/src/core.rs:475,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/services/gdrive/src/core.rs:475,1
    - Dst: String::content
      Src: /src/opendal/core/services/gdrive/src/core.rs:472,1
    - Dst: Self::part
      Src: /src/opendal/core/services/gdrive/src/core.rs:470,1
    - Dst: FormDataPart::new
      Src: /src/opendal/core/services/gdrive/src/core.rs:480,1
    - Dst: Self::header
      Src: /src/opendal/core/services/gdrive/src/core.rs:480,1
    - Dst: '&str::parse'
      Src: /src/opendal/core/services/gdrive/src/core.rs:483,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/services/gdrive/src/core.rs:483,1
    - Dst: String::content
      Src: /src/opendal/core/services/gdrive/src/core.rs:480,1
    - Dst: apply
      Src: /src/opendal/core/services/gdrive/src/core.rs:488,1
    - Dst: GdriveCore::sign
      Src: /src/opendal/core/services/gdrive/src/core.rs:490,1
    - Dst: Result::http_transport
      Src: /src/opendal/core/services/gdrive/src/core.rs:492,1
    - Dst: Self::send
      Src: /src/opendal/core/services/gdrive/src/core.rs:492,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 56
    argCount: 4
    argNames:
    - ctx
    - path
    - size
    - body
    argTypes:
    - '&OperationContext'
    - '&str'
    - u64
    - Buffer
    constantsTouched: []
    func_position:
      end: 493
      start: 446
    functionDepth: 35
    functionLinenumber: 446
    functionLinenumberEnd: 493
    functionName: GdriveCore::gdrive_upload_simple_request
    functionSourceFile: /src/opendal/core/services/gdrive/src/core.rs
    functionUses: 0
    functionsReached:
    - Self::send
    - Result::unwrap
    - GdriveCore::sign
    - Self::header
    - extension
    - Multipart::new
    - ServiceOperation
    - GdriveCore::ensure_dir
    - Result::http_transport
    - apply
    - http::header
    - FormDataPart::new
    - Self::part
    - get_parent
    - Request::post
    - get_basename
    - '&str::parse'
    - Vec::map_err
    - String::content
    - serde_json::to_vec
    linkageType: ''
    returnType: Result
    signature: 'pub async fn gdrive_upload_simple_request(&self,ctx: &OperationContext,path:
      &str,size: u64,body: Buffer,) -> Result<Response<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Request::patch
      Src: /src/opendal/core/services/gdrive/src/core.rs:510,1
    - Dst: Result::header
      Src: /src/opendal/core/services/gdrive/src/core.rs:510,1
    - Dst: String::header
      Src: /src/opendal/core/services/gdrive/src/core.rs:510,1
    - Dst: String::header
      Src: /src/opendal/core/services/gdrive/src/core.rs:510,1
    - Dst: String::extension
      Src: /src/opendal/core/services/gdrive/src/core.rs:510,1
    - Dst: extension
      Src: /src/opendal/core/services/gdrive/src/core.rs:510,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/gdrive/src/core.rs:515,1
    - Dst: body
      Src: /src/opendal/core/services/gdrive/src/core.rs:510,1
    - Dst: map_err
      Src: /src/opendal/core/services/gdrive/src/core.rs:510,1
    - Dst: GdriveCore::sign
      Src: /src/opendal/core/services/gdrive/src/core.rs:519,1
    - Dst: Result::http_transport
      Src: /src/opendal/core/services/gdrive/src/core.rs:521,1
    - Dst: Self::send
      Src: /src/opendal/core/services/gdrive/src/core.rs:521,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 28
    argCount: 4
    argNames:
    - ctx
    - file_id
    - size
    - body
    argTypes:
    - '&OperationContext'
    - '&str'
    - u64
    - Buffer
    constantsTouched: []
    func_position:
      end: 522
      start: 500
    functionDepth: 42
    functionLinenumber: 500
    functionLinenumberEnd: 522
    functionName: GdriveCore::gdrive_upload_overwrite_simple_request
    functionSourceFile: /src/opendal/core/services/gdrive/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - extension
    - Self::send
    - body
    - Result::header
    - String::header
    - GdriveCore::sign
    - ServiceOperation
    - Result::http_transport
    - String::extension
    - Request::patch
    linkageType: ''
    returnType: Result
    signature: 'pub async fn gdrive_upload_overwrite_simple_request(&self,ctx: &OperationContext,file_id:
      &str,size: u64,body: Buffer,) -> Result<Response<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/opendal/core/services/gdrive/src/core.rs:525,1
    - Dst: Signer::sign
      Src: /src/opendal/core/services/gdrive/src/core.rs:526,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - ctx
    - req
    argTypes:
    - '&OperationContext'
    - '&mut Request<T>'
    constantsTouched: []
    func_position:
      end: 527
      start: 524
    functionDepth: 33
    functionLinenumber: 524
    functionLinenumberEnd: 527
    functionName: GdriveCore::sign
    functionSourceFile: /src/opendal/core/services/gdrive/src/core.rs
    functionUses: 9
    functionsReached:
    - Signer::sign
    - lock
    linkageType: ''
    returnType: Result
    signature: 'pub async fn sign<T>(&self, ctx: &OperationContext, req: &mut Request<T>)
      -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/gdrive/src/core.rs:535,1
    - Dst: GdriveCore::resolve_path
      Src: /src/opendal/core/services/gdrive/src/core.rs:537,1
    - Dst: GdriveCore::resolve_path_after_refresh
      Src: /src/opendal/core/services/gdrive/src/core.rs:539,1
    - Dst: Err
      Src: /src/opendal/core/services/gdrive/src/core.rs:542,1
    - Dst: Error::new
      Src: /src/opendal/core/services/gdrive/src/core.rs:542,1
    - Dst: get_basename
      Src: /src/opendal/core/services/gdrive/src/core.rs:550,1
    - Dst: build_abs_path
      Src: /src/opendal/core/services/gdrive/src/core.rs:551,1
    - Dst: GdriveCore::ensure_dir
      Src: /src/opendal/core/services/gdrive/src/core.rs:552,1
    - Dst: get_parent
      Src: /src/opendal/core/services/gdrive/src/core.rs:552,1
    - Dst: GdriveCore::trash_path_if_exists
      Src: /src/opendal/core/services/gdrive/src/core.rs:554,1
    - Dst: Buffer::from
      Src: /src/opendal/core/services/gdrive/src/core.rs:562,1
    - Dst: Bytes::from
      Src: /src/opendal/core/services/gdrive/src/core.rs:562,1
    - Dst: to_string
      Src: /src/opendal/core/services/gdrive/src/core.rs:562,1
    - Dst: Request::post
      Src: /src/opendal/core/services/gdrive/src/core.rs:564,1
    - Dst: extension
      Src: /src/opendal/core/services/gdrive/src/core.rs:564,1
    - Dst: extension
      Src: /src/opendal/core/services/gdrive/src/core.rs:564,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/gdrive/src/core.rs:566,1
    - Dst: body
      Src: /src/opendal/core/services/gdrive/src/core.rs:564,1
    - Dst: map_err
      Src: /src/opendal/core/services/gdrive/src/core.rs:564,1
    - Dst: GdriveCore::sign
      Src: /src/opendal/core/services/gdrive/src/core.rs:569,1
    - Dst: Result::http_transport
      Src: /src/opendal/core/services/gdrive/src/core.rs:571,1
    - Dst: Self::send
      Src: /src/opendal/core/services/gdrive/src/core.rs:571,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 63
    argCount: 3
    argNames:
    - ctx
    - from
    - to
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    constantsTouched: []
    func_position:
      end: 572
      start: 529
    functionDepth: 36
    functionLinenumber: 529
    functionLinenumberEnd: 572
    functionName: GdriveCore::gdrive_copy
    functionSourceFile: /src/opendal/core/services/gdrive/src/core.rs
    functionUses: 0
    functionsReached:
    - GdriveCore::resolve_path_after_refresh
    - Self::send
    - GdriveCore::sign
    - map_err
    - extension
    - ServiceOperation
    - GdriveCore::ensure_dir
    - Result::http_transport
    - Buffer::from
    - GdriveCore::resolve_path
    - build_abs_path
    - Bytes::from
    - to_string
    - get_parent
    - Request::post
    - get_basename
    - body
    - Error::new
    - Err
    - GdriveCore::trash_path_if_exists
    linkageType: ''
    returnType: Result
    signature: 'pub async fn gdrive_copy(&self,ctx: &OperationContext,from: &str,to:
      &str,) -> Result<Response<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: is_empty
      Src: /src/opendal/core/services/gdrive/src/core.rs:595,1
    - Dst: ends_with
      Src: /src/opendal/core/services/gdrive/src/core.rs:595,1
    - Dst: to_string
      Src: /src/opendal/core/services/gdrive/src/core.rs:596,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - path
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 600
      start: 594
    functionDepth: 4
    functionLinenumber: 594
    functionLinenumberEnd: 600
    functionName: normalize_dir_path
    functionSourceFile: /src/opendal/core/services/gdrive/src/core.rs
    functionUses: 5
    functionsReached:
    - to_string
    - ends_with
    - is_empty
    linkageType: ''
    returnType: String
    signature: 'pub(crate) fn normalize_dir_path(path: &str) -> String'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Option::is_dir
      Src: /src/opendal/core/services/gdrive/src/core.rs:603,1
    - Dst: normalize_dir_path
      Src: /src/opendal/core/services/gdrive/src/core.rs:604,1
    - Dst: to_string
      Src: /src/opendal/core/services/gdrive/src/core.rs:606,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - path
    - mode
    argTypes:
    - '&str'
    - EntryMode
    constantsTouched: []
    func_position:
      end: 608
      start: 602
    functionDepth: 31
    functionLinenumber: 602
    functionLinenumberEnd: 608
    functionName: canonical_recent_path
    functionSourceFile: /src/opendal/core/services/gdrive/src/core.rs
    functionUses: 3
    functionsReached:
    - normalize_dir_path
    - Option::is_dir
    - to_string
    linkageType: ''
    returnType: String
    signature: 'fn canonical_recent_path(path: &str, mode: EntryMode) -> String'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Timestamp::now
      Src: /src/opendal/core/services/gdrive/src/core.rs:611,1
    - Dst: retain
      Src: /src/opendal/core/services/gdrive/src/core.rs:612,1
    - Dst: retain
      Src: /src/opendal/core/services/gdrive/src/core.rs:613,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 15
    argCount: 1
    argNames:
    - entries
    argTypes:
    - '&mut GdriveRecentState'
    constantsTouched: []
    func_position:
      end: 614
      start: 610
    functionDepth: 2
    functionLinenumber: 610
    functionLinenumberEnd: 614
    functionName: prune_recent_entries
    functionSourceFile: /src/opendal/core/services/gdrive/src/core.rs
    functionUses: 4
    functionsReached:
    - Timestamp::now
    - retain
    linkageType: ''
    returnType: void
    signature: 'fn prune_recent_entries(entries: &mut GdriveRecentState)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: get
      Src: /src/opendal/core/services/gdrive/src/core.rs:620,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - entries
    - path
    argTypes:
    - '&''a HashMap<String, GdriveRecentEntry>'
    - '&str'
    constantsTouched: []
    func_position:
      end: 621
      start: 616
    functionDepth: 2
    functionLinenumber: 616
    functionLinenumberEnd: 621
    functionName: lookup_recent_entry
    functionSourceFile: /src/opendal/core/services/gdrive/src/core.rs
    functionUses: 2
    functionsReached:
    - get
    linkageType: ''
    returnType: Option
    signature: 'fn lookup_recent_entry<''a>(entries: &''a HashMap<String, GdriveRecentEntry>,path:
      &str,) -> Option<&''a GdriveRecentEntry>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: recent_path_candidates
      Src: /src/opendal/core/services/gdrive/src/core.rs:627,1
    - Dst: '&HashMap<String, Timestamp>::iter'
      Src: /src/opendal/core/services/gdrive/src/core.rs:628,1
    - Dst: filter
      Src: /src/opendal/core/services/gdrive/src/core.rs:628,1
    - Dst: iter
      Src: /src/opendal/core/services/gdrive/src/core.rs:631,1
    - Dst: any
      Src: /src/opendal/core/services/gdrive/src/core.rs:631,1
    - Dst: path_under_tombstone
      Src: /src/opendal/core/services/gdrive/src/core.rs:633,1
    - Dst: map
      Src: /src/opendal/core/services/gdrive/src/core.rs:628,1
    - Dst: max
      Src: /src/opendal/core/services/gdrive/src/core.rs:628,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 18
    argCount: 2
    argNames:
    - tombstones
    - path
    argTypes:
    - '&HashMap<String, Timestamp>'
    - '&str'
    constantsTouched: []
    func_position:
      end: 637
      start: 623
    functionDepth: 6
    functionLinenumber: 623
    functionLinenumberEnd: 637
    functionName: lookup_recent_tombstone
    functionSourceFile: /src/opendal/core/services/gdrive/src/core.rs
    functionUses: 3
    functionsReached:
    - iter
    - filter
    - recent_path_candidates
    - map
    - '&HashMap<String, Timestamp>::iter'
    - path_under_tombstone
    - max
    - any
    linkageType: ''
    returnType: Option
    signature: 'fn lookup_recent_tombstone(tombstones: &HashMap<String, Timestamp>,path:
      &str,) -> Option<Timestamp>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: get_parent
      Src: /src/opendal/core/services/gdrive/src/core.rs:640,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/gdrive/src/core.rs:640,1
    - Dst: '&str::is_empty'
      Src: /src/opendal/core/services/gdrive/src/core.rs:642,1
    - Dst: lookup_recent_tombstone
      Src: /src/opendal/core/services/gdrive/src/core.rs:643,1
    - Dst: Option::is_some
      Src: /src/opendal/core/services/gdrive/src/core.rs:643,1
    - Dst: insert_recent_entry
      Src: /src/opendal/core/services/gdrive/src/core.rs:644,1
    - Dst: Some
      Src: /src/opendal/core/services/gdrive/src/core.rs:649,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/gdrive/src/core.rs:649,1
    - Dst: get_parent
      Src: /src/opendal/core/services/gdrive/src/core.rs:655,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/gdrive/src/core.rs:655,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 32
    argCount: 3
    argNames:
    - entries
    - path
    - expires_at
    argTypes:
    - '&mut GdriveRecentState'
    - '&str'
    - Timestamp
    constantsTouched: []
    func_position:
      end: 657
      start: 639
    functionDepth: 32
    functionLinenumber: 639
    functionLinenumberEnd: 657
    functionName: revive_recent_parent_dirs
    functionSourceFile: /src/opendal/core/services/gdrive/src/core.rs
    functionUses: 1
    functionsReached:
    - Metadata::new
    - Option::is_some
    - get_parent
    - '&str::is_empty'
    - Some
    - '&str::to_string'
    - insert_recent_entry
    - lookup_recent_tombstone
    linkageType: ''
    returnType: void
    signature: 'fn revive_recent_parent_dirs(entries: &mut GdriveRecentState, path:
      &str, expires_at: Timestamp)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: insert
      Src: /src/opendal/core/services/gdrive/src/core.rs:665,1
    - Dst: to_string
      Src: /src/opendal/core/services/gdrive/src/core.rs:665,1
    - Dst: crate::Entry::clone
      Src: /src/opendal/core/services/gdrive/src/core.rs:665,1
    - Dst: Option::is_dir
      Src: /src/opendal/core/services/gdrive/src/core.rs:667,1
    - Dst: trim_end_matches
      Src: /src/opendal/core/services/gdrive/src/core.rs:668,1
    - Dst: is_empty
      Src: /src/opendal/core/services/gdrive/src/core.rs:669,1
    - Dst: insert
      Src: /src/opendal/core/services/gdrive/src/core.rs:670,1
    - Dst: to_string
      Src: /src/opendal/core/services/gdrive/src/core.rs:670,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 23
    argCount: 4
    argNames:
    - entries
    - path
    - mode
    - entry
    argTypes:
    - '&mut HashMap<String, GdriveRecentEntry>'
    - '&str'
    - EntryMode
    - GdriveRecentEntry
    constantsTouched: []
    func_position:
      end: 673
      start: 659
    functionDepth: 31
    functionLinenumber: 659
    functionLinenumberEnd: 673
    functionName: insert_recent_entry
    functionSourceFile: /src/opendal/core/services/gdrive/src/core.rs
    functionUses: 3
    functionsReached:
    - to_string
    - insert
    - Option::is_dir
    - crate::Entry::clone
    - trim_end_matches
    - is_empty
    linkageType: ''
    returnType: void
    signature: 'fn insert_recent_entry(entries: &mut HashMap<String, GdriveRecentEntry>,path:
      &str,mode: EntryMode,entry: GdriveRecentEntry,)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: normalize_dir_path
      Src: /src/opendal/core/services/gdrive/src/core.rs:677,1
    - Dst: push
      Src: /src/opendal/core/services/gdrive/src/core.rs:679,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - path
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 682
      start: 675
    functionDepth: 5
    functionLinenumber: 675
    functionLinenumberEnd: 682
    functionName: recent_path_candidates
    functionSourceFile: /src/opendal/core/services/gdrive/src/core.rs
    functionUses: 1
    functionsReached:
    - normalize_dir_path
    - push
    linkageType: ''
    returnType: Vec
    signature: 'fn recent_path_candidates(path: &str) -> Vec<String>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Option::is_empty
      Src: /src/opendal/core/services/gdrive/src/core.rs:685,1
    - Dst: starts_with
      Src: /src/opendal/core/services/gdrive/src/core.rs:685,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - path
    - tombstone
    argTypes:
    - '&str'
    - '&str'
    constantsTouched: []
    func_position:
      end: 686
      start: 684
    functionDepth: 4
    functionLinenumber: 684
    functionLinenumberEnd: 686
    functionName: path_under_tombstone
    functionSourceFile: /src/opendal/core/services/gdrive/src/core.rs
    functionUses: 1
    functionsReached:
    - starts_with
    - Option::is_empty
    linkageType: ''
    returnType: bool
    signature: 'fn path_under_tombstone(path: &str, tombstone: &str) -> bool'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: '&str::is_empty'
      Src: /src/opendal/core/services/gdrive/src/core.rs:690,1
    - Dst: '&str::ends_with'
      Src: /src/opendal/core/services/gdrive/src/core.rs:694,1
    - Dst: starts_with
      Src: /src/opendal/core/services/gdrive/src/core.rs:695,1
    - Dst: canonical_recent_path
      Src: /src/opendal/core/services/gdrive/src/core.rs:698,1
    - Dst: starts_with
      Src: /src/opendal/core/services/gdrive/src/core.rs:698,1
    - Dst: get_parent
      Src: /src/opendal/core/services/gdrive/src/core.rs:701,1
    - Dst: '&str::is_empty'
      Src: /src/opendal/core/services/gdrive/src/core.rs:702,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 32
    argCount: 4
    argNames:
    - scope_path
    - path
    - mode
    - recursive
    argTypes:
    - '&str'
    - '&str'
    - EntryMode
    - bool
    constantsTouched: []
    func_position:
      end: 707
      start: 688
    functionDepth: 32
    functionLinenumber: 688
    functionLinenumberEnd: 707
    functionName: recent_entry_in_scope
    functionSourceFile: /src/opendal/core/services/gdrive/src/core.rs
    functionUses: 1
    functionsReached:
    - canonical_recent_path
    - starts_with
    - get_parent
    - '&str::ends_with'
    - '&str::is_empty'
    linkageType: ''
    returnType: bool
    signature: 'fn recent_entry_in_scope(scope_path: &str, path: &str, mode: EntryMode,
      recursive: bool) -> bool'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/gdrive/src/core.rs:723,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/gdrive/src/core.rs:724,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/gdrive/src/core.rs:725,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/gdrive/src/core.rs:726,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 729
      start: 721
    functionDepth: 2
    functionLinenumber: 721
    functionLinenumberEnd: 729
    functionName: GdriveSigner::new
    functionSourceFile: /src/opendal/core/services/gdrive/src/core.rs
    functionUses: 2
    functionsReached:
    - '&str::to_string'
    linkageType: ''
    returnType: Self
    signature: pub fn new() -> Self
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: is_empty
      Src: /src/opendal/core/services/gdrive/src/core.rs:733,1
    - Dst: Timestamp::now
      Src: /src/opendal/core/services/gdrive/src/core.rs:733,1
    - Dst: parse
      Src: /src/opendal/core/services/gdrive/src/core.rs:734,1
    - Dst: expect
      Src: /src/opendal/core/services/gdrive/src/core.rs:734,1
    - Dst: '&mut Request<T>::headers_mut'
      Src: /src/opendal/core/services/gdrive/src/core.rs:738,1
    - Dst: insert
      Src: /src/opendal/core/services/gdrive/src/core.rs:738,1
    - Dst: Ok
      Src: /src/opendal/core/services/gdrive/src/core.rs:739,1
    - Dst: Request::post
      Src: /src/opendal/core/services/gdrive/src/core.rs:748,1
    - Dst: http::header
      Src: /src/opendal/core/services/gdrive/src/core.rs:748,1
    - Dst: body
      Src: /src/opendal/core/services/gdrive/src/core.rs:748,1
    - Dst: Buffer::new
      Src: /src/opendal/core/services/gdrive/src/core.rs:750,1
    - Dst: map_err
      Src: /src/opendal/core/services/gdrive/src/core.rs:748,1
    - Dst: Result::http_transport
      Src: /src/opendal/core/services/gdrive/src/core.rs:753,1
    - Dst: Self::send
      Src: /src/opendal/core/services/gdrive/src/core.rs:753,1
    - Dst: status
      Src: /src/opendal/core/services/gdrive/src/core.rs:754,1
    - Dst: into_body
      Src: /src/opendal/core/services/gdrive/src/core.rs:758,1
    - Dst: serde_json::from_reader
      Src: /src/opendal/core/services/gdrive/src/core.rs:759,1
    - Dst: reader
      Src: /src/opendal/core/services/gdrive/src/core.rs:759,1
    - Dst: map_err
      Src: /src/opendal/core/services/gdrive/src/core.rs:759,1
    - Dst: clone_from
      Src: /src/opendal/core/services/gdrive/src/core.rs:761,1
    - Dst: Timestamp::now
      Src: /src/opendal/core/services/gdrive/src/core.rs:762,1
    - Dst: Duration::from_secs
      Src: /src/opendal/core/services/gdrive/src/core.rs:762,1
    - Dst: Duration::from_secs
      Src: /src/opendal/core/services/gdrive/src/core.rs:763,1
    - Dst: Err
      Src: /src/opendal/core/services/gdrive/src/core.rs:766,1
    - Dst: parse_error
      Src: /src/opendal/core/services/gdrive/src/core.rs:766,1
    - Dst: '&mut Request<T>::headers_mut'
      Src: /src/opendal/core/services/gdrive/src/core.rs:772,1
    - Dst: insert
      Src: /src/opendal/core/services/gdrive/src/core.rs:772,1
    - Dst: parse
      Src: /src/opendal/core/services/gdrive/src/core.rs:773,1
    - Dst: unwrap
      Src: /src/opendal/core/services/gdrive/src/core.rs:773,1
    - Dst: Ok
      Src: /src/opendal/core/services/gdrive/src/core.rs:775,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 81
    argCount: 2
    argNames:
    - ctx
    - req
    argTypes:
    - '&OperationContext'
    - '&mut Request<T>'
    constantsTouched: []
    func_position:
      end: 776
      start: 732
    functionDepth: 34
    functionLinenumber: 732
    functionLinenumberEnd: 776
    functionName: GdriveSigner::sign
    functionSourceFile: /src/opendal/core/services/gdrive/src/core.rs
    functionUses: 0
    functionsReached:
    - Buffer::new
    - status
    - Self::send
    - serde_json::from_reader
    - map_err
    - Timestamp::now
    - reader
    - expect
    - Ok
    - unwrap
    - Duration::from_secs
    - Result::http_transport
    - insert
    - clone_from
    - http::header
    - parse_error
    - into_body
    - is_empty
    - parse
    - '&mut Request<T>::headers_mut'
    - Request::post
    - body
    - Err
    linkageType: ''
    returnType: Result
    signature: 'pub async fn sign<T>(&mut self, ctx: &OperationContext, req: &mut
      Request<T>) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - signer
    argTypes:
    - Arc<Mutex<GdriveSigner>>
    constantsTouched: []
    func_position:
      end: 786
      start: 784
    functionDepth: 0
    functionLinenumber: 784
    functionLinenumberEnd: 786
    functionName: GdrivePathQuery::new
    functionSourceFile: /src/opendal/core/services/gdrive/src/core.rs
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(signer: Arc<Mutex<GdriveSigner>>) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/core/services/gdrive/src/core.rs:791,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/gdrive/src/core.rs:791,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames: []
    argTypes:
    - '&OperationContext'
    constantsTouched: []
    func_position:
      end: 792
      start: 790
    functionDepth: 2
    functionLinenumber: 790
    functionLinenumberEnd: 792
    functionName: GdrivePathQuery::root
    functionSourceFile: /src/opendal/core/services/gdrive/src/core.rs
    functionUses: 0
    functionsReached:
    - '&str::to_string'
    - Ok
    linkageType: ''
    returnType: Result
    signature: 'async fn root(&self, _: &OperationContext) -> Result<String>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::ends_with
      Src: /src/opendal/core/services/gdrive/src/core.rs:811,1
    - Dst: push
      Src: /src/opendal/core/services/gdrive/src/core.rs:812,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/gdrive/src/core.rs:812,1
    - Dst: join
      Src: /src/opendal/core/services/gdrive/src/core.rs:814,1
    - Dst: Request::get
      Src: /src/opendal/core/services/gdrive/src/core.rs:823,1
    - Dst: Option::extension
      Src: /src/opendal/core/services/gdrive/src/core.rs:823,1
    - Dst: extension
      Src: /src/opendal/core/services/gdrive/src/core.rs:823,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/gdrive/src/core.rs:825,1
    - Dst: body
      Src: /src/opendal/core/services/gdrive/src/core.rs:823,1
    - Dst: Buffer::new
      Src: /src/opendal/core/services/gdrive/src/core.rs:826,1
    - Dst: map_err
      Src: /src/opendal/core/services/gdrive/src/core.rs:823,1
    - Dst: lock
      Src: /src/opendal/core/services/gdrive/src/core.rs:829,1
    - Dst: sign
      Src: /src/opendal/core/services/gdrive/src/core.rs:829,1
    - Dst: Result::http_transport
      Src: /src/opendal/core/services/gdrive/src/core.rs:831,1
    - Dst: Self::send
      Src: /src/opendal/core/services/gdrive/src/core.rs:831,1
    - Dst: status
      Src: /src/opendal/core/services/gdrive/src/core.rs:832,1
    - Dst: into_body
      Src: /src/opendal/core/services/gdrive/src/core.rs:836,1
    - Dst: serde_json::from_reader
      Src: /src/opendal/core/services/gdrive/src/core.rs:838,1
    - Dst: reader
      Src: /src/opendal/core/services/gdrive/src/core.rs:838,1
    - Dst: map_err
      Src: /src/opendal/core/services/gdrive/src/core.rs:838,1
    - Dst: first
      Src: /src/opendal/core/services/gdrive/src/core.rs:840,1
    - Dst: Ok
      Src: /src/opendal/core/services/gdrive/src/core.rs:841,1
    - Dst: Some
      Src: /src/opendal/core/services/gdrive/src/core.rs:841,1
    - Dst: clone
      Src: /src/opendal/core/services/gdrive/src/core.rs:841,1
    - Dst: Ok
      Src: /src/opendal/core/services/gdrive/src/core.rs:843,1
    - Dst: Err
      Src: /src/opendal/core/services/gdrive/src/core.rs:846,1
    - Dst: parse_error
      Src: /src/opendal/core/services/gdrive/src/core.rs:846,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 65
    argCount: 3
    argNames:
    - ctx
    - parent_id
    - name
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    constantsTouched: []
    func_position:
      end: 848
      start: 794
    functionDepth: 33
    functionLinenumber: 794
    functionLinenumberEnd: 848
    functionName: GdrivePathQuery::query
    functionSourceFile: /src/opendal/core/services/gdrive/src/core.rs
    functionUses: 0
    functionsReached:
    - Buffer::new
    - status
    - push
    - Result::ends_with
    - Self::send
    - serde_json::from_reader
    - clone
    - map_err
    - extension
    - reader
    - Ok
    - sign
    - '&str::to_string'
    - ServiceOperation
    - Result::http_transport
    - join
    - parse_error
    - into_body
    - Some
    - Request::get
    - lock
    - body
    - Err
    - Option::extension
    - first
    linkageType: ''
    returnType: Result
    signature: 'async fn query(&self,ctx: &OperationContext,parent_id: &str,name:
      &str,) -> Result<Option<String>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: serde_json::to_vec
      Src: /src/opendal/core/services/gdrive/src/core.rs:858,1
    - Dst: Vec::map_err
      Src: /src/opendal/core/services/gdrive/src/core.rs:858,1
    - Dst: Request::post
      Src: /src/opendal/core/services/gdrive/src/core.rs:866,1
    - Dst: extension
      Src: /src/opendal/core/services/gdrive/src/core.rs:866,1
    - Dst: extension
      Src: /src/opendal/core/services/gdrive/src/core.rs:866,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/gdrive/src/core.rs:868,1
    - Dst: http::header
      Src: /src/opendal/core/services/gdrive/src/core.rs:866,1
    - Dst: body
      Src: /src/opendal/core/services/gdrive/src/core.rs:866,1
    - Dst: Buffer::from
      Src: /src/opendal/core/services/gdrive/src/core.rs:870,1
    - Dst: Bytes::from
      Src: /src/opendal/core/services/gdrive/src/core.rs:870,1
    - Dst: map_err
      Src: /src/opendal/core/services/gdrive/src/core.rs:866,1
    - Dst: lock
      Src: /src/opendal/core/services/gdrive/src/core.rs:873,1
    - Dst: sign
      Src: /src/opendal/core/services/gdrive/src/core.rs:873,1
    - Dst: Result::http_transport
      Src: /src/opendal/core/services/gdrive/src/core.rs:875,1
    - Dst: Self::send
      Src: /src/opendal/core/services/gdrive/src/core.rs:875,1
    - Dst: status
      Src: /src/opendal/core/services/gdrive/src/core.rs:876,1
    - Dst: is_success
      Src: /src/opendal/core/services/gdrive/src/core.rs:876,1
    - Dst: Err
      Src: /src/opendal/core/services/gdrive/src/core.rs:877,1
    - Dst: parse_error
      Src: /src/opendal/core/services/gdrive/src/core.rs:877,1
    - Dst: into_body
      Src: /src/opendal/core/services/gdrive/src/core.rs:880,1
    - Dst: serde_json::from_reader
      Src: /src/opendal/core/services/gdrive/src/core.rs:882,1
    - Dst: reader
      Src: /src/opendal/core/services/gdrive/src/core.rs:882,1
    - Dst: map_err
      Src: /src/opendal/core/services/gdrive/src/core.rs:882,1
    - Dst: Ok
      Src: /src/opendal/core/services/gdrive/src/core.rs:883,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 57
    argCount: 3
    argNames:
    - ctx
    - parent_id
    - name
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    constantsTouched: []
    func_position:
      end: 884
      start: 850
    functionDepth: 40
    functionLinenumber: 850
    functionLinenumberEnd: 884
    functionName: GdrivePathQuery::create_dir
    functionSourceFile: /src/opendal/core/services/gdrive/src/core.rs
    functionUses: 0
    functionsReached:
    - is_success
    - status
    - Self::send
    - serde_json::from_reader
    - map_err
    - extension
    - reader
    - Ok
    - sign
    - ServiceOperation
    - Result::http_transport
    - Buffer::from
    - http::header
    - parse_error
    - into_body
    - Bytes::from
    - lock
    - Request::post
    - body
    - Err
    - Vec::map_err
    - serde_json::to_vec
    linkageType: ''
    returnType: Result
    signature: 'async fn create_dir(&self,ctx: &OperationContext,parent_id: &str,name:
      &str,) -> Result<String>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: mock_gdrive_core
      Src: /src/opendal/core/services/gdrive/src/core.rs:943,1
    - Dst: CompfsCore::record_recent_upsert
      Src: /src/opendal/core/services/gdrive/src/core.rs:945,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/gdrive/src/core.rs:947,1
    - Dst: Self::with_content_length
      Src: /src/opendal/core/services/gdrive/src/core.rs:947,1
    - Dst: CompfsCore::record_recent_upsert
      Src: /src/opendal/core/services/gdrive/src/core.rs:950,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/gdrive/src/core.rs:950,1
    - Dst: CompfsCore::record_recent_upsert
      Src: /src/opendal/core/services/gdrive/src/core.rs:952,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/gdrive/src/core.rs:952,1
    - Dst: CompfsCore::record_recent_delete
      Src: /src/opendal/core/services/gdrive/src/core.rs:954,1
    - Dst: CompfsCore::recent_entries_for_list
      Src: /src/opendal/core/services/gdrive/src/core.rs:957,1
    - Dst: into_iter
      Src: /src/opendal/core/services/gdrive/src/core.rs:958,1
    - Dst: map
      Src: /src/opendal/core/services/gdrive/src/core.rs:958,1
    - Dst: "into_iter()\n            .map(|(path, _)| path)\n            .collect::<Vec<_>>"
      Src: /src/opendal/core/services/gdrive/src/core.rs:958,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 33
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 967
      start: 942
    functionDepth: 34
    functionLinenumber: 942
    functionLinenumberEnd: 967
    functionName: tests::test_recent_entries_for_direct_list
    functionSourceFile: /src/opendal/core/services/gdrive/src/core.rs
    functionUses: 0
    functionsReached:
    - Metadata::new
    - CompfsCore::record_recent_upsert
    - "into_iter()\n            .map(|(path, _)| path)\n            .collect::<Vec<_>>"
    - CompfsCore::record_recent_delete
    - CompfsCore::recent_entries_for_list
    - Self::with_content_length
    - into_iter
    - map
    - mock_gdrive_core
    linkageType: ''
    returnType: void
    signature: async fn test_recent_entries_for_direct_list()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: mock_gdrive_core
      Src: /src/opendal/core/services/gdrive/src/core.rs:971,1
    - Dst: CompfsCore::record_recent_upsert
      Src: /src/opendal/core/services/gdrive/src/core.rs:973,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/gdrive/src/core.rs:973,1
    - Dst: CompfsCore::record_recent_upsert
      Src: /src/opendal/core/services/gdrive/src/core.rs:975,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/gdrive/src/core.rs:975,1
    - Dst: CompfsCore::record_recent_upsert
      Src: /src/opendal/core/services/gdrive/src/core.rs:977,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/gdrive/src/core.rs:977,1
    - Dst: CompfsCore::record_recent_upsert
      Src: /src/opendal/core/services/gdrive/src/core.rs:979,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/gdrive/src/core.rs:979,1
    - Dst: CompfsCore::recent_entries_for_list
      Src: /src/opendal/core/services/gdrive/src/core.rs:982,1
    - Dst: into_iter
      Src: /src/opendal/core/services/gdrive/src/core.rs:983,1
    - Dst: map
      Src: /src/opendal/core/services/gdrive/src/core.rs:983,1
    - Dst: "into_iter()\n            .map(|(path, _)| path)\n            .collect::<Vec<_>>"
      Src: /src/opendal/core/services/gdrive/src/core.rs:983,1
    - Dst: CompfsCore::recent_entries_for_list
      Src: /src/opendal/core/services/gdrive/src/core.rs:995,1
    - Dst: into_iter
      Src: /src/opendal/core/services/gdrive/src/core.rs:996,1
    - Dst: map
      Src: /src/opendal/core/services/gdrive/src/core.rs:996,1
    - Dst: "into_iter()\n            .map(|(path, _)| path)\n            .collect::<Vec<_>>"
      Src: /src/opendal/core/services/gdrive/src/core.rs:996,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 43
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 1004
      start: 970
    functionDepth: 34
    functionLinenumber: 970
    functionLinenumberEnd: 1004
    functionName: tests::test_recent_entries_for_recursive_prefix_list
    functionSourceFile: /src/opendal/core/services/gdrive/src/core.rs
    functionUses: 0
    functionsReached:
    - Metadata::new
    - CompfsCore::record_recent_upsert
    - "into_iter()\n            .map(|(path, _)| path)\n            .collect::<Vec<_>>"
    - CompfsCore::recent_entries_for_list
    - into_iter
    - map
    - mock_gdrive_core
    linkageType: ''
    returnType: void
    signature: async fn test_recent_entries_for_recursive_prefix_list()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: mock_gdrive_core
      Src: /src/opendal/core/services/gdrive/src/core.rs:1008,1
    - Dst: CompfsCore::record_recent_upsert
      Src: /src/opendal/core/services/gdrive/src/core.rs:1010,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/gdrive/src/core.rs:1010,1
    - Dst: CompfsCore::recent_entry_for_path
      Src: /src/opendal/core/services/gdrive/src/core.rs:1013,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 1017
      start: 1007
    functionDepth: 34
    functionLinenumber: 1007
    functionLinenumberEnd: 1017
    functionName: tests::test_recent_entry_for_dir_alias
    functionSourceFile: /src/opendal/core/services/gdrive/src/core.rs
    functionUses: 0
    functionsReached:
    - Metadata::new
    - CompfsCore::record_recent_upsert
    - CompfsCore::recent_entry_for_path
    - mock_gdrive_core
    linkageType: ''
    returnType: void
    signature: async fn test_recent_entry_for_dir_alias()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: mock_gdrive_core
      Src: /src/opendal/core/services/gdrive/src/core.rs:1021,1
    - Dst: CompfsCore::record_recent_upsert
      Src: /src/opendal/core/services/gdrive/src/core.rs:1023,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/gdrive/src/core.rs:1025,1
    - Dst: Self::with_content_length
      Src: /src/opendal/core/services/gdrive/src/core.rs:1025,1
    - Dst: CompfsCore::record_recent_delete
      Src: /src/opendal/core/services/gdrive/src/core.rs:1028,1
    - Dst: CompfsCore::recent_entry_for_path
      Src: /src/opendal/core/services/gdrive/src/core.rs:1031,1
    - Dst: CompfsCore::recent_entry_for_path
      Src: /src/opendal/core/services/gdrive/src/core.rs:1036,1
    - Dst: CompfsCore::recent_entry_for_path
      Src: /src/opendal/core/services/gdrive/src/core.rs:1041,1
    - Dst: CompfsCore::record_recent_upsert
      Src: /src/opendal/core/services/gdrive/src/core.rs:1046,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/gdrive/src/core.rs:1048,1
    - Dst: Self::with_content_length
      Src: /src/opendal/core/services/gdrive/src/core.rs:1048,1
    - Dst: CompfsCore::recent_entry_for_path
      Src: /src/opendal/core/services/gdrive/src/core.rs:1052,1
    - Dst: CompfsCore::recent_entry_for_path
      Src: /src/opendal/core/services/gdrive/src/core.rs:1057,1
    - Dst: CompfsCore::recent_entry_for_path
      Src: /src/opendal/core/services/gdrive/src/core.rs:1062,1
    - Dst: CompfsCore::recent_entries_for_list
      Src: /src/opendal/core/services/gdrive/src/core.rs:1067,1
    - Dst: into_iter
      Src: /src/opendal/core/services/gdrive/src/core.rs:1068,1
    - Dst: map
      Src: /src/opendal/core/services/gdrive/src/core.rs:1068,1
    - Dst: "into_iter()\n            .map(|(path, _)| path)\n            .collect::<Vec<_>>"
      Src: /src/opendal/core/services/gdrive/src/core.rs:1068,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 60
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 1077
      start: 1020
    functionDepth: 34
    functionLinenumber: 1020
    functionLinenumberEnd: 1077
    functionName: tests::test_recent_tombstone_hides_descendants_until_recreated
    functionSourceFile: /src/opendal/core/services/gdrive/src/core.rs
    functionUses: 0
    functionsReached:
    - Metadata::new
    - CompfsCore::record_recent_upsert
    - CompfsCore::recent_entry_for_path
    - "into_iter()\n            .map(|(path, _)| path)\n            .collect::<Vec<_>>"
    - CompfsCore::record_recent_delete
    - CompfsCore::recent_entries_for_list
    - Self::with_content_length
    - into_iter
    - map
    - mock_gdrive_core
    linkageType: ''
    returnType: void
    signature: async fn test_recent_tombstone_hides_descendants_until_recreated()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Some
      Src: /src/opendal/core/services/gdrive/src/core.rs:1140,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - message
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 1143
      start: 1135
    functionDepth: 0
    functionLinenumber: 1135
    functionLinenumberEnd: 1143
    functionName: error::parse_gdrive_error_code
    functionSourceFile: /src/opendal/core/services/gdrive/src/core.rs
    functionUses: 0
    functionsReached:
    - Some
    linkageType: ''
    returnType: Option
    signature: 'pub fn parse_gdrive_error_code(message: &str) -> Option<(ErrorKind,
      bool)>'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 4
    argNames:
    - core
    - ctx
    - path
    - file_id
    argTypes:
    - Arc<GdriveCore>
    - OperationContext
    - String
    - Option<String>
    constantsTouched: []
    func_position:
      end: 52
      start: 39
    functionDepth: 0
    functionLinenumber: 39
    functionLinenumberEnd: 52
    functionName: GdriveWriter::new
    functionSourceFile: /src/opendal/core/services/gdrive/src/writer.rs
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(core: Arc<GdriveCore>,ctx: OperationContext,path: String,file_id:
      Option<String>,) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::len
      Src: /src/opendal/core/services/gdrive/src/writer.rs:57,1
    - Dst: Some
      Src: /src/opendal/core/services/gdrive/src/writer.rs:60,1
    - Dst: clone
      Src: /src/opendal/core/services/gdrive/src/writer.rs:60,1
    - Dst: resolve_path
      Src: /src/opendal/core/services/gdrive/src/writer.rs:61,1
    - Dst: Some
      Src: /src/opendal/core/services/gdrive/src/writer.rs:62,1
    - Dst: resolve_path_after_refresh
      Src: /src/opendal/core/services/gdrive/src/writer.rs:64,1
    - Dst: gdrive_upload_overwrite_simple_request
      Src: /src/opendal/core/services/gdrive/src/writer.rs:74,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/gdrive/src/writer.rs:79,1
    - Dst: gdrive_upload_simple_request
      Src: /src/opendal/core/services/gdrive/src/writer.rs:83,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/gdrive/src/writer.rs:84,1
    - Dst: status
      Src: /src/opendal/core/services/gdrive/src/writer.rs:88,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/gdrive/src/writer.rs:91,1
    - Dst: Self::with_content_length
      Src: /src/opendal/core/services/gdrive/src/writer.rs:91,1
    - Dst: is_none
      Src: /src/opendal/core/services/gdrive/src/writer.rs:93,1
    - Dst: into_body
      Src: /src/opendal/core/services/gdrive/src/writer.rs:94,1
    - Dst: serde_json::from_reader
      Src: /src/opendal/core/services/gdrive/src/writer.rs:95,1
    - Dst: Result::reader
      Src: /src/opendal/core/services/gdrive/src/writer.rs:95,1
    - Dst: map_err
      Src: /src/opendal/core/services/gdrive/src/writer.rs:95,1
    - Dst: anyhow::Result::with_content_type
      Src: /src/opendal/core/services/gdrive/src/writer.rs:97,1
    - Dst: cache_file_id
      Src: /src/opendal/core/services/gdrive/src/writer.rs:98,1
    - Dst: record_recent_upsert
      Src: /src/opendal/core/services/gdrive/src/writer.rs:100,1
    - Dst: Ok
      Src: /src/opendal/core/services/gdrive/src/writer.rs:101,1
    - Dst: Metadata::default
      Src: /src/opendal/core/services/gdrive/src/writer.rs:101,1
    - Dst: is_some
      Src: /src/opendal/core/services/gdrive/src/writer.rs:103,1
    - Dst: refresh_path
      Src: /src/opendal/core/services/gdrive/src/writer.rs:105,1
    - Dst: resolve_path
      Src: /src/opendal/core/services/gdrive/src/writer.rs:106,1
    - Dst: Err
      Src: /src/opendal/core/services/gdrive/src/writer.rs:109,1
    - Dst: super::core::parse_error
      Src: /src/opendal/core/services/gdrive/src/writer.rs:109,1
    CyclomaticComplexity: 21
    EdgeCount: 21
    ICount: 127
    argCount: 1
    argNames:
    - bs
    argTypes:
    - Buffer
    constantsTouched: []
    func_position:
      end: 112
      start: 56
    functionDepth: 36
    functionLinenumber: 56
    functionLinenumberEnd: 112
    functionName: GdriveWriter::write_once
    functionSourceFile: /src/opendal/core/services/gdrive/src/writer.rs
    functionUses: 0
    functionsReached:
    - is_none
    - status
    - serde_json::from_reader
    - clone
    - is_some
    - Result::len
    - anyhow::Result::with_content_type
    - Result::reader
    - resolve_path_after_refresh
    - Result::clone
    - map_err
    - Ok
    - record_recent_upsert
    - Metadata::new
    - into_body
    - Some
    - gdrive_upload_simple_request
    - super::core::parse_error
    - refresh_path
    - Metadata::default
    - cache_file_id
    - Self::with_content_length
    - Err
    - resolve_path
    - gdrive_upload_overwrite_simple_request
    linkageType: ''
    returnType: Result
    signature: 'async fn write_once(&self, bs: Buffer) -> Result<Metadata>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: register::<Gdrive>
      Src: /src/opendal/core/services/gdrive/src/lib.rs:23,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - registry
    argTypes:
    - '&opendal_core::OperatorRegistry'
    constantsTouched: []
    func_position:
      end: 24
      start: 22
    functionDepth: 0
    functionLinenumber: 22
    functionLinenumberEnd: 24
    functionName: register_gdrive_service
    functionSourceFile: /src/opendal/core/services/gdrive/src/lib.rs
    functionUses: 1
    functionsReached:
    - register::<Gdrive>
    linkageType: ''
    returnType: void
    signature: 'pub fn register_gdrive_service(registry: &opendal_core::OperatorRegistry)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::debug_struct
      Src: /src/opendal/core/services/gdrive/src/backend.rs:55,1
    - Dst: field
      Src: /src/opendal/core/services/gdrive/src/backend.rs:55,1
    - Dst: finish_non_exhaustive
      Src: /src/opendal/core/services/gdrive/src/backend.rs:55,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - f
    argTypes:
    - '&mut std::fmt::Formatter<''_>'
    constantsTouched: []
    func_position:
      end: 58
      start: 54
    functionDepth: 5
    functionLinenumber: 54
    functionLinenumberEnd: 58
    functionName: GdriveBuilder::fmt
    functionSourceFile: /src/opendal/core/services/gdrive/src/backend.rs
    functionUses: 0
    functionsReached:
    - field
    - Result::debug_struct
    - finish_non_exhaustive
    linkageType: ''
    returnType: std::fmt::Result
    signature: 'fn fmt(&self, f: &mut std::fmt::Formatter<''_>) -> std::fmt::Result'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::is_empty
      Src: /src/opendal/core/services/gdrive/src/backend.rs:64,1
    - Dst: Some
      Src: /src/opendal/core/services/gdrive/src/backend.rs:67,1
    - Dst: Result::to_string
      Src: /src/opendal/core/services/gdrive/src/backend.rs:67,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - root
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 71
      start: 63
    functionDepth: 4
    functionLinenumber: 63
    functionLinenumberEnd: 71
    functionName: GdriveBuilder::root
    functionSourceFile: /src/opendal/core/services/gdrive/src/backend.rs
    functionUses: 0
    functionsReached:
    - Result::is_empty
    - Result::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn root(mut self, root: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Some
      Src: /src/opendal/core/services/gdrive/src/backend.rs:84,1
    - Dst: to_string
      Src: /src/opendal/core/services/gdrive/src/backend.rs:84,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - access_token
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 86
      start: 83
    functionDepth: 2
    functionLinenumber: 83
    functionLinenumberEnd: 86
    functionName: GdriveBuilder::access_token
    functionSourceFile: /src/opendal/core/services/gdrive/src/backend.rs
    functionUses: 0
    functionsReached:
    - to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn access_token(mut self, access_token: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Some
      Src: /src/opendal/core/services/gdrive/src/backend.rs:94,1
    - Dst: Self::to_string
      Src: /src/opendal/core/services/gdrive/src/backend.rs:94,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - refresh_token
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 96
      start: 93
    functionDepth: 2
    functionLinenumber: 93
    functionLinenumberEnd: 96
    functionName: GdriveBuilder::refresh_token
    functionSourceFile: /src/opendal/core/services/gdrive/src/backend.rs
    functionUses: 0
    functionsReached:
    - Self::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn refresh_token(mut self, refresh_token: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Some
      Src: /src/opendal/core/services/gdrive/src/backend.rs:102,1
    - Dst: Self::to_string
      Src: /src/opendal/core/services/gdrive/src/backend.rs:102,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - client_id
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 104
      start: 101
    functionDepth: 2
    functionLinenumber: 101
    functionLinenumberEnd: 104
    functionName: GdriveBuilder::client_id
    functionSourceFile: /src/opendal/core/services/gdrive/src/backend.rs
    functionUses: 0
    functionsReached:
    - Self::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn client_id(mut self, client_id: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Some
      Src: /src/opendal/core/services/gdrive/src/backend.rs:110,1
    - Dst: Self::to_string
      Src: /src/opendal/core/services/gdrive/src/backend.rs:110,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - client_secret
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 112
      start: 109
    functionDepth: 2
    functionLinenumber: 109
    functionLinenumberEnd: 112
    functionName: GdriveBuilder::client_secret
    functionSourceFile: /src/opendal/core/services/gdrive/src/backend.rs
    functionUses: 0
    functionsReached:
    - Self::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn client_secret(mut self, client_secret: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: normalize_root
      Src: /src/opendal/core/services/gdrive/src/backend.rs:119,1
    - Dst: unwrap_or_default
      Src: /src/opendal/core/services/gdrive/src/backend.rs:119,1
    - Dst: ServiceInfo::new
      Src: /src/opendal/core/services/gdrive/src/backend.rs:122,1
    - Dst: Default::default
      Src: /src/opendal/core/services/gdrive/src/backend.rs:142,1
    - Dst: GdriveSigner::new
      Src: /src/opendal/core/services/gdrive/src/backend.rs:146,1
    - Dst: ok_or_else
      Src: /src/opendal/core/services/gdrive/src/backend.rs:154,1
    - Dst: Error::new
      Src: /src/opendal/core/services/gdrive/src/backend.rs:155,1
    - Dst: Self::with_context
      Src: /src/opendal/core/services/gdrive/src/backend.rs:155,1
    - Dst: ok_or_else
      Src: /src/opendal/core/services/gdrive/src/backend.rs:161,1
    - Dst: Error::new
      Src: /src/opendal/core/services/gdrive/src/backend.rs:162,1
    - Dst: Self::with_context
      Src: /src/opendal/core/services/gdrive/src/backend.rs:162,1
    - Dst: Err
      Src: /src/opendal/core/services/gdrive/src/backend.rs:174,1
    - Dst: Error::new
      Src: /src/opendal/core/services/gdrive/src/backend.rs:174,1
    - Dst: Self::with_context
      Src: /src/opendal/core/services/gdrive/src/backend.rs:174,1
    - Dst: Err
      Src: /src/opendal/core/services/gdrive/src/backend.rs:181,1
    - Dst: Error::new
      Src: /src/opendal/core/services/gdrive/src/backend.rs:181,1
    - Dst: Self::with_context
      Src: /src/opendal/core/services/gdrive/src/backend.rs:181,1
    - Dst: Arc::new
      Src: /src/opendal/core/services/gdrive/src/backend.rs:189,1
    - Dst: Mutex::new
      Src: /src/opendal/core/services/gdrive/src/backend.rs:189,1
    - Dst: Ok
      Src: /src/opendal/core/services/gdrive/src/backend.rs:191,1
    - Dst: Arc::new
      Src: /src/opendal/core/services/gdrive/src/backend.rs:192,1
    - Dst: Self::clone
      Src: /src/opendal/core/services/gdrive/src/backend.rs:193,1
    - Dst: Signer::clone
      Src: /src/opendal/core/services/gdrive/src/backend.rs:196,1
    - Dst: GdrivePathIndex::new
      Src: /src/opendal/core/services/gdrive/src/backend.rs:197,1
    - Dst: GdrivePathQuery::new
      Src: /src/opendal/core/services/gdrive/src/backend.rs:197,1
    - Dst: Mutex::default
      Src: /src/opendal/core/services/gdrive/src/backend.rs:198,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 77
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 201
      start: 118
    functionDepth: 34
    functionLinenumber: 118
    functionLinenumberEnd: 201
    functionName: GdriveBuilder::build
    functionSourceFile: /src/opendal/core/services/gdrive/src/backend.rs
    functionUses: 0
    functionsReached:
    - ServiceInfo::new
    - Ok
    - Default::default
    - Arc::new
    - GdrivePathIndex::new
    - normalize_root
    - Error::new
    - Err
    - Signer::clone
    - Self::clone
    - Mutex::default
    - GdrivePathQuery::new
    - Self::with_context
    - unwrap_or_default
    - Mutex::new
    - ok_or_else
    - GdriveSigner::new
    linkageType: ''
    returnType: Result
    signature: fn build(self) -> Result<impl Service>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: clone
      Src: /src/opendal/core/services/gdrive/src/backend.rs:220,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 221
      start: 219
    functionDepth: 2
    functionLinenumber: 219
    functionLinenumberEnd: 221
    functionName: GdriveBackend::info
    functionSourceFile: /src/opendal/core/services/gdrive/src/backend.rs
    functionUses: 0
    functionsReached:
    - clone
    linkageType: ''
    returnType: ServiceInfo
    signature: fn info(&self) -> ServiceInfo
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 225
      start: 223
    functionDepth: 0
    functionLinenumber: 223
    functionLinenumberEnd: 225
    functionName: GdriveBackend::capability
    functionSourceFile: /src/opendal/core/services/gdrive/src/backend.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Capability
    signature: fn capability(&self) -> Capability
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/gdrive/src/backend.rs:233,1
    - Dst: ensure_dir
      Src: /src/opendal/core/services/gdrive/src/backend.rs:234,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/gdrive/src/backend.rs:235,1
    - Dst: cache_dir_id
      Src: /src/opendal/core/services/gdrive/src/backend.rs:237,1
    - Dst: record_recent_upsert
      Src: /src/opendal/core/services/gdrive/src/backend.rs:238,1
    - Dst: Ok
      Src: /src/opendal/core/services/gdrive/src/backend.rs:240,1
    - Dst: RpCreateDir::default
      Src: /src/opendal/core/services/gdrive/src/backend.rs:240,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 26
    argCount: 3
    argNames:
    - ctx
    - path
    - _args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpCreateDir
    constantsTouched: []
    func_position:
      end: 241
      start: 227
    functionDepth: 34
    functionLinenumber: 227
    functionLinenumberEnd: 241
    functionName: GdriveBackend::create_dir
    functionSourceFile: /src/opendal/core/services/gdrive/src/backend.rs
    functionUses: 0
    functionsReached:
    - Metadata::new
    - Ok
    - cache_dir_id
    - RpCreateDir::default
    - ensure_dir
    - record_recent_upsert
    - build_abs_path
    linkageType: ''
    returnType: Result
    signature: 'async fn create_dir(&self,ctx: &OperationContext,path: &str,_args:
      OpCreateDir,) -> Result<RpCreateDir>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/gdrive/src/backend.rs:244,1
    - Dst: recent_entry_for_path
      Src: /src/opendal/core/services/gdrive/src/backend.rs:246,1
    - Dst: anyhow::Result::mode
      Src: /src/opendal/core/services/gdrive/src/backend.rs:248,1
    - Dst: Option::is_dir
      Src: /src/opendal/core/services/gdrive/src/backend.rs:248,1
    - Dst: ends_with
      Src: /src/opendal/core/services/gdrive/src/backend.rs:248,1
    - Dst: Ok
      Src: /src/opendal/core/services/gdrive/src/backend.rs:249,1
    - Dst: RpStat::new
      Src: /src/opendal/core/services/gdrive/src/backend.rs:249,1
    - Dst: Err
      Src: /src/opendal/core/services/gdrive/src/backend.rs:253,1
    - Dst: Error::new
      Src: /src/opendal/core/services/gdrive/src/backend.rs:253,1
    - Dst: resolve_path
      Src: /src/opendal/core/services/gdrive/src/backend.rs:261,1
    - Dst: resolve_path_after_refresh
      Src: /src/opendal/core/services/gdrive/src/backend.rs:263,1
    - Dst: Err
      Src: /src/opendal/core/services/gdrive/src/backend.rs:266,1
    - Dst: Error::new
      Src: /src/opendal/core/services/gdrive/src/backend.rs:266,1
    - Dst: gdrive_stat_by_id
      Src: /src/opendal/core/services/gdrive/src/backend.rs:273,1
    - Dst: status
      Src: /src/opendal/core/services/gdrive/src/backend.rs:275,1
    - Dst: resolve_path_after_refresh
      Src: /src/opendal/core/services/gdrive/src/backend.rs:276,1
    - Dst: ok_or
      Src: /src/opendal/core/services/gdrive/src/backend.rs:276,1
    - Dst: Error::new
      Src: /src/opendal/core/services/gdrive/src/backend.rs:280,1
    - Dst: gdrive_stat_by_id
      Src: /src/opendal/core/services/gdrive/src/backend.rs:284,1
    - Dst: status
      Src: /src/opendal/core/services/gdrive/src/backend.rs:287,1
    - Dst: Err
      Src: /src/opendal/core/services/gdrive/src/backend.rs:288,1
    - Dst: super::core::parse_error
      Src: /src/opendal/core/services/gdrive/src/backend.rs:288,1
    - Dst: into_body
      Src: /src/opendal/core/services/gdrive/src/backend.rs:291,1
    - Dst: serde_json::from_reader
      Src: /src/opendal/core/services/gdrive/src/backend.rs:293,1
    - Dst: Result::reader
      Src: /src/opendal/core/services/gdrive/src/backend.rs:293,1
    - Dst: map_err
      Src: /src/opendal/core/services/gdrive/src/backend.rs:293,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/gdrive/src/backend.rs:300,1
    - Dst: Self::with_content_type
      Src: /src/opendal/core/services/gdrive/src/backend.rs:300,1
    - Dst: Result::with_content_length
      Src: /src/opendal/core/services/gdrive/src/backend.rs:302,1
    - Dst: parse::<u64>
      Src: /src/opendal/core/services/gdrive/src/backend.rs:302,1
    - Dst: map_err
      Src: /src/opendal/core/services/gdrive/src/backend.rs:302,1
    - Dst: Error::new
      Src: /src/opendal/core/services/gdrive/src/backend.rs:303,1
    - Dst: Self::set_source
      Src: /src/opendal/core/services/gdrive/src/backend.rs:303,1
    - Dst: Result::with_last_modified
      Src: /src/opendal/core/services/gdrive/src/backend.rs:307,1
    - Dst: parse::<Timestamp>
      Src: /src/opendal/core/services/gdrive/src/backend.rs:307,1
    - Dst: map_err
      Src: /src/opendal/core/services/gdrive/src/backend.rs:307,1
    - Dst: Error::new
      Src: /src/opendal/core/services/gdrive/src/backend.rs:308,1
    - Dst: Self::set_source
      Src: /src/opendal/core/services/gdrive/src/backend.rs:308,1
    - Dst: Ok
      Src: /src/opendal/core/services/gdrive/src/backend.rs:311,1
    - Dst: RpStat::new
      Src: /src/opendal/core/services/gdrive/src/backend.rs:311,1
    CyclomaticComplexity: 25
    EdgeCount: 25
    ICount: 136
    argCount: 3
    argNames:
    - ctx
    - path
    - _args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpStat
    constantsTouched: []
    func_position:
      end: 312
      start: 243
    functionDepth: 34
    functionLinenumber: 243
    functionLinenumberEnd: 312
    functionName: GdriveBackend::stat
    functionSourceFile: /src/opendal/core/services/gdrive/src/backend.rs
    functionUses: 0
    functionsReached:
    - status
    - parse::<Timestamp>
    - Result::with_content_length
    - serde_json::from_reader
    - ends_with
    - Result::with_last_modified
    - Result::reader
    - resolve_path_after_refresh
    - map_err
    - Ok
    - Option::is_dir
    - parse::<u64>
    - Metadata::new
    - anyhow::Result::mode
    - into_body
    - build_abs_path
    - recent_entry_for_path
    - Self::with_content_type
    - Self::set_source
    - super::core::parse_error
    - ok_or
    - RpStat::new
    - Err
    - Error::new
    - resolve_path
    - gdrive_stat_by_id
    linkageType: ''
    returnType: Result
    signature: 'async fn stat(&self, ctx: &OperationContext, path: &str, _args: OpStat)
      -> Result<RpStat>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/core/services/gdrive/src/backend.rs:315,1
    - Dst: oio::StreamReader::new
      Src: /src/opendal/core/services/gdrive/src/backend.rs:315,1
    - Dst: GdriveReader::new
      Src: /src/opendal/core/services/gdrive/src/backend.rs:315,1
    - Dst: GdriveBackend::clone
      Src: /src/opendal/core/services/gdrive/src/backend.rs:316,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/gdrive/src/backend.rs:317,1
    - Dst: Ok
      Src: /src/opendal/core/services/gdrive/src/backend.rs:323,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpRead
    constantsTouched: []
    func_position:
      end: 324
      start: 313
    functionDepth: 3
    functionLinenumber: 313
    functionLinenumberEnd: 324
    functionName: GdriveBackend::read
    functionSourceFile: /src/opendal/core/services/gdrive/src/backend.rs
    functionUses: 0
    functionsReached:
    - Result::clone
    - Ok
    - oio::StreamReader::new
    - GdriveReader::new
    - GdriveBackend::clone
    linkageType: ''
    returnType: Result
    signature: 'fn read(&self, ctx: &OperationContext, path: &str, args: OpRead) ->
      Result<Self::Reader>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/gdrive/src/backend.rs:328,1
    - Dst: Ok
      Src: /src/opendal/core/services/gdrive/src/backend.rs:330,1
    - Dst: oio::OneShotWriter::new
      Src: /src/opendal/core/services/gdrive/src/backend.rs:330,1
    - Dst: GdriveWriter::new
      Src: /src/opendal/core/services/gdrive/src/backend.rs:330,1
    - Dst: clone
      Src: /src/opendal/core/services/gdrive/src/backend.rs:331,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/gdrive/src/backend.rs:332,1
    - Dst: Ok
      Src: /src/opendal/core/services/gdrive/src/backend.rs:338,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 14
    argCount: 3
    argNames:
    - ctx
    - path
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpWrite
    constantsTouched: []
    func_position:
      end: 339
      start: 326
    functionDepth: 3
    functionLinenumber: 326
    functionLinenumberEnd: 339
    functionName: GdriveBackend::write
    functionSourceFile: /src/opendal/core/services/gdrive/src/backend.rs
    functionUses: 0
    functionsReached:
    - Result::clone
    - Ok
    - clone
    - oio::OneShotWriter::new
    - build_abs_path
    - GdriveWriter::new
    linkageType: ''
    returnType: Result
    signature: 'fn write(&self, ctx: &OperationContext, path: &str, _: OpWrite) ->
      Result<Self::Writer>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/core/services/gdrive/src/backend.rs:343,1
    - Dst: oio::OneShotDeleter::new
      Src: /src/opendal/core/services/gdrive/src/backend.rs:343,1
    - Dst: GdriveDeleter::new
      Src: /src/opendal/core/services/gdrive/src/backend.rs:343,1
    - Dst: clone
      Src: /src/opendal/core/services/gdrive/src/backend.rs:344,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/gdrive/src/backend.rs:345,1
    - Dst: Ok
      Src: /src/opendal/core/services/gdrive/src/backend.rs:349,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - '&OperationContext'
    constantsTouched: []
    func_position:
      end: 350
      start: 341
    functionDepth: 2
    functionLinenumber: 341
    functionLinenumberEnd: 350
    functionName: GdriveBackend::delete
    functionSourceFile: /src/opendal/core/services/gdrive/src/backend.rs
    functionUses: 0
    functionsReached:
    - oio::OneShotDeleter::new
    - Result::clone
    - Ok
    - clone
    - GdriveDeleter::new
    linkageType: ''
    returnType: Result
    signature: 'fn delete(&self, ctx: &OperationContext) -> Result<Self::Deleter>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/gdrive/src/backend.rs:354,1
    - Dst: OpStat::recursive
      Src: /src/opendal/core/services/gdrive/src/backend.rs:356,1
    - Dst: GdriveFlatLister::new
      Src: /src/opendal/core/services/gdrive/src/backend.rs:358,1
    - Dst: clone
      Src: /src/opendal/core/services/gdrive/src/backend.rs:358,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/gdrive/src/backend.rs:358,1
    - Dst: Ok
      Src: /src/opendal/core/services/gdrive/src/backend.rs:359,1
    - Dst: TwoWays::Two
      Src: /src/opendal/core/services/gdrive/src/backend.rs:359,1
    - Dst: GdriveLister::new
      Src: /src/opendal/core/services/gdrive/src/backend.rs:362,1
    - Dst: clone
      Src: /src/opendal/core/services/gdrive/src/backend.rs:362,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/gdrive/src/backend.rs:362,1
    - Dst: Ok
      Src: /src/opendal/core/services/gdrive/src/backend.rs:363,1
    - Dst: TwoWays::One
      Src: /src/opendal/core/services/gdrive/src/backend.rs:363,1
    - Dst: oio::PageLister::new
      Src: /src/opendal/core/services/gdrive/src/backend.rs:363,1
    - Dst: Ok
      Src: /src/opendal/core/services/gdrive/src/backend.rs:367,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 27
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpList
    constantsTouched: []
    func_position:
      end: 368
      start: 352
    functionDepth: 36
    functionLinenumber: 352
    functionLinenumberEnd: 368
    functionName: GdriveBackend::list
    functionSourceFile: /src/opendal/core/services/gdrive/src/backend.rs
    functionUses: 0
    functionsReached:
    - Result::clone
    - Ok
    - GdriveLister::new
    - GdriveFlatLister::new
    - clone
    - build_abs_path
    - TwoWays::Two
    - TwoWays::One
    - oio::PageLister::new
    - OpStat::recursive
    linkageType: ''
    returnType: Result
    signature: 'fn list(&self, ctx: &OperationContext, path: &str, args: OpList) ->
      Result<Self::Lister>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: clone
      Src: /src/opendal/core/services/gdrive/src/backend.rs:378,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/gdrive/src/backend.rs:379,1
    - Dst: Result::to_string
      Src: /src/opendal/core/services/gdrive/src/backend.rs:380,1
    - Dst: Result::to_string
      Src: /src/opendal/core/services/gdrive/src/backend.rs:381,1
    - Dst: Ok
      Src: /src/opendal/core/services/gdrive/src/backend.rs:383,1
    - Dst: oio::OneShotCopier::new
      Src: /src/opendal/core/services/gdrive/src/backend.rs:383,1
    - Dst: build_abs_path
      Src: /src/opendal/core/services/gdrive/src/backend.rs:384,1
    - Dst: build_abs_path
      Src: /src/opendal/core/services/gdrive/src/backend.rs:385,1
    - Dst: CompfsCore::gdrive_copy
      Src: /src/opendal/core/services/gdrive/src/backend.rs:386,1
    - Dst: status
      Src: /src/opendal/core/services/gdrive/src/backend.rs:388,1
    - Dst: into_body
      Src: /src/opendal/core/services/gdrive/src/backend.rs:390,1
    - Dst: serde_json::from_reader
      Src: /src/opendal/core/services/gdrive/src/backend.rs:391,1
    - Dst: reader
      Src: /src/opendal/core/services/gdrive/src/backend.rs:391,1
    - Dst: map_err
      Src: /src/opendal/core/services/gdrive/src/backend.rs:391,1
    - Dst: build_abs_path
      Src: /src/opendal/core/services/gdrive/src/backend.rs:394,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/gdrive/src/backend.rs:396,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/gdrive/src/backend.rs:398,1
    - Dst: anyhow::Result::with_content_length
      Src: /src/opendal/core/services/gdrive/src/backend.rs:402,1
    - Dst: parse::<u64>
      Src: /src/opendal/core/services/gdrive/src/backend.rs:402,1
    - Dst: map_err
      Src: /src/opendal/core/services/gdrive/src/backend.rs:402,1
    - Dst: Error::new
      Src: /src/opendal/core/services/gdrive/src/backend.rs:403,1
    - Dst: Self::set_source
      Src: /src/opendal/core/services/gdrive/src/backend.rs:403,1
    - Dst: anyhow::Result::mode
      Src: /src/opendal/core/services/gdrive/src/backend.rs:408,1
    - Dst: Option::is_dir
      Src: /src/opendal/core/services/gdrive/src/backend.rs:408,1
    - Dst: CompfsCore::cache_dir_id
      Src: /src/opendal/core/services/gdrive/src/backend.rs:409,1
    - Dst: CompfsCore::cache_file_id
      Src: /src/opendal/core/services/gdrive/src/backend.rs:411,1
    - Dst: CompfsCore::record_recent_upsert
      Src: /src/opendal/core/services/gdrive/src/backend.rs:413,1
    - Dst: Ok
      Src: /src/opendal/core/services/gdrive/src/backend.rs:415,1
    - Dst: Metadata::default
      Src: /src/opendal/core/services/gdrive/src/backend.rs:415,1
    - Dst: CompfsCore::refresh_path
      Src: /src/opendal/core/services/gdrive/src/backend.rs:418,1
    - Dst: CompfsCore::refresh_path
      Src: /src/opendal/core/services/gdrive/src/backend.rs:419,1
    - Dst: CompfsCore::gdrive_copy
      Src: /src/opendal/core/services/gdrive/src/backend.rs:420,1
    - Dst: status
      Src: /src/opendal/core/services/gdrive/src/backend.rs:421,1
    - Dst: into_body
      Src: /src/opendal/core/services/gdrive/src/backend.rs:423,1
    - Dst: serde_json::from_reader
      Src: /src/opendal/core/services/gdrive/src/backend.rs:424,1
    - Dst: reader
      Src: /src/opendal/core/services/gdrive/src/backend.rs:424,1
    - Dst: map_err
      Src: /src/opendal/core/services/gdrive/src/backend.rs:424,1
    - Dst: build_abs_path
      Src: /src/opendal/core/services/gdrive/src/backend.rs:427,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/gdrive/src/backend.rs:430,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/gdrive/src/backend.rs:432,1
    - Dst: anyhow::Result::with_content_length
      Src: /src/opendal/core/services/gdrive/src/backend.rs:435,1
    - Dst: parse::<u64>
      Src: /src/opendal/core/services/gdrive/src/backend.rs:436,1
    - Dst: map_err
      Src: /src/opendal/core/services/gdrive/src/backend.rs:436,1
    - Dst: Error::new
      Src: /src/opendal/core/services/gdrive/src/backend.rs:437,1
    - Dst: Self::set_source
      Src: /src/opendal/core/services/gdrive/src/backend.rs:437,1
    - Dst: anyhow::Result::mode
      Src: /src/opendal/core/services/gdrive/src/backend.rs:443,1
    - Dst: Option::is_dir
      Src: /src/opendal/core/services/gdrive/src/backend.rs:443,1
    - Dst: CompfsCore::cache_dir_id
      Src: /src/opendal/core/services/gdrive/src/backend.rs:444,1
    - Dst: CompfsCore::cache_file_id
      Src: /src/opendal/core/services/gdrive/src/backend.rs:446,1
    - Dst: CompfsCore::record_recent_upsert
      Src: /src/opendal/core/services/gdrive/src/backend.rs:448,1
    - Dst: Ok
      Src: /src/opendal/core/services/gdrive/src/backend.rs:450,1
    - Dst: Metadata::default
      Src: /src/opendal/core/services/gdrive/src/backend.rs:450,1
    - Dst: Err
      Src: /src/opendal/core/services/gdrive/src/backend.rs:452,1
    - Dst: super::core::parse_error
      Src: /src/opendal/core/services/gdrive/src/backend.rs:452,1
    - Dst: Err
      Src: /src/opendal/core/services/gdrive/src/backend.rs:455,1
    - Dst: super::core::parse_error
      Src: /src/opendal/core/services/gdrive/src/backend.rs:455,1
    CyclomaticComplexity: 25
    EdgeCount: 25
    ICount: 175
    argCount: 5
    argNames:
    - ctx
    - from
    - to
    - _args
    - _opts
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    - OpCopy
    - OpCopier
    constantsTouched: []
    func_position:
      end: 458
      start: 370
    functionDepth: 37
    functionLinenumber: 370
    functionLinenumberEnd: 458
    functionName: GdriveBackend::copy
    functionSourceFile: /src/opendal/core/services/gdrive/src/backend.rs
    functionUses: 0
    functionsReached:
    - status
    - serde_json::from_reader
    - CompfsCore::refresh_path
    - clone
    - Result::clone
    - map_err
    - CompfsCore::cache_file_id
    - reader
    - Result::to_string
    - Ok
    - CompfsCore::record_recent_upsert
    - Option::is_dir
    - CompfsCore::cache_dir_id
    - parse::<u64>
    - oio::OneShotCopier::new
    - Metadata::new
    - anyhow::Result::mode
    - into_body
    - build_abs_path
    - Self::set_source
    - super::core::parse_error
    - anyhow::Result::with_content_length
    - Metadata::default
    - Error::new
    - CompfsCore::gdrive_copy
    - Err
    linkageType: ''
    returnType: Result
    signature: 'fn copy(&self,ctx: &OperationContext,from: &str,to: &str,_args: OpCopy,_opts:
      OpCopier,) -> Result<Self::Copier>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/gdrive/src/backend.rs:467,1
    - Dst: build_abs_path
      Src: /src/opendal/core/services/gdrive/src/backend.rs:468,1
    - Dst: trash_path_if_exists
      Src: /src/opendal/core/services/gdrive/src/backend.rs:471,1
    - Dst: gdrive_patch_metadata_request
      Src: /src/opendal/core/services/gdrive/src/backend.rs:473,1
    - Dst: status
      Src: /src/opendal/core/services/gdrive/src/backend.rs:478,1
    - Dst: into_body
      Src: /src/opendal/core/services/gdrive/src/backend.rs:482,1
    - Dst: serde_json::from_reader
      Src: /src/opendal/core/services/gdrive/src/backend.rs:484,1
    - Dst: reader
      Src: /src/opendal/core/services/gdrive/src/backend.rs:484,1
    - Dst: map_err
      Src: /src/opendal/core/services/gdrive/src/backend.rs:484,1
    - Dst: super::core::normalize_dir_path
      Src: /src/opendal/core/services/gdrive/src/backend.rs:487,1
    - Dst: build_abs_path
      Src: /src/opendal/core/services/gdrive/src/backend.rs:487,1
    - Dst: build_abs_path
      Src: /src/opendal/core/services/gdrive/src/backend.rs:489,1
    - Dst: super::core::normalize_dir_path
      Src: /src/opendal/core/services/gdrive/src/backend.rs:492,1
    - Dst: build_abs_path
      Src: /src/opendal/core/services/gdrive/src/backend.rs:492,1
    - Dst: build_abs_path
      Src: /src/opendal/core/services/gdrive/src/backend.rs:494,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/gdrive/src/backend.rs:497,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/gdrive/src/backend.rs:499,1
    - Dst: anyhow::Result::with_content_length
      Src: /src/opendal/core/services/gdrive/src/backend.rs:502,1
    - Dst: parse::<u64>
      Src: /src/opendal/core/services/gdrive/src/backend.rs:502,1
    - Dst: map_err
      Src: /src/opendal/core/services/gdrive/src/backend.rs:502,1
    - Dst: Error::new
      Src: /src/opendal/core/services/gdrive/src/backend.rs:503,1
    - Dst: Self::set_source
      Src: /src/opendal/core/services/gdrive/src/backend.rs:503,1
    - Dst: anyhow::Result::mode
      Src: /src/opendal/core/services/gdrive/src/backend.rs:507,1
    - Dst: Option::is_dir
      Src: /src/opendal/core/services/gdrive/src/backend.rs:507,1
    - Dst: invalidate_dir_id
      Src: /src/opendal/core/services/gdrive/src/backend.rs:508,1
    - Dst: cache_dir_id
      Src: /src/opendal/core/services/gdrive/src/backend.rs:509,1
    - Dst: invalidate_file_id
      Src: /src/opendal/core/services/gdrive/src/backend.rs:511,1
    - Dst: cache_file_id
      Src: /src/opendal/core/services/gdrive/src/backend.rs:512,1
    - Dst: record_recent_delete
      Src: /src/opendal/core/services/gdrive/src/backend.rs:514,1
    - Dst: anyhow::Result::mode
      Src: /src/opendal/core/services/gdrive/src/backend.rs:515,1
    - Dst: record_recent_upsert
      Src: /src/opendal/core/services/gdrive/src/backend.rs:517,1
    - Dst: Ok
      Src: /src/opendal/core/services/gdrive/src/backend.rs:519,1
    - Dst: RpRename::default
      Src: /src/opendal/core/services/gdrive/src/backend.rs:519,1
    - Dst: refresh_path
      Src: /src/opendal/core/services/gdrive/src/backend.rs:522,1
    - Dst: refresh_path
      Src: /src/opendal/core/services/gdrive/src/backend.rs:523,1
    - Dst: gdrive_patch_metadata_request
      Src: /src/opendal/core/services/gdrive/src/backend.rs:525,1
    - Dst: status
      Src: /src/opendal/core/services/gdrive/src/backend.rs:530,1
    - Dst: Err
      Src: /src/opendal/core/services/gdrive/src/backend.rs:531,1
    - Dst: super::core::parse_error
      Src: /src/opendal/core/services/gdrive/src/backend.rs:531,1
    - Dst: into_body
      Src: /src/opendal/core/services/gdrive/src/backend.rs:534,1
    - Dst: serde_json::from_reader
      Src: /src/opendal/core/services/gdrive/src/backend.rs:536,1
    - Dst: reader
      Src: /src/opendal/core/services/gdrive/src/backend.rs:536,1
    - Dst: map_err
      Src: /src/opendal/core/services/gdrive/src/backend.rs:536,1
    - Dst: super::core::normalize_dir_path
      Src: /src/opendal/core/services/gdrive/src/backend.rs:539,1
    - Dst: build_abs_path
      Src: /src/opendal/core/services/gdrive/src/backend.rs:539,1
    - Dst: build_abs_path
      Src: /src/opendal/core/services/gdrive/src/backend.rs:541,1
    - Dst: super::core::normalize_dir_path
      Src: /src/opendal/core/services/gdrive/src/backend.rs:544,1
    - Dst: build_abs_path
      Src: /src/opendal/core/services/gdrive/src/backend.rs:544,1
    - Dst: build_abs_path
      Src: /src/opendal/core/services/gdrive/src/backend.rs:546,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/gdrive/src/backend.rs:549,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/gdrive/src/backend.rs:551,1
    - Dst: anyhow::Result::with_content_length
      Src: /src/opendal/core/services/gdrive/src/backend.rs:554,1
    - Dst: parse::<u64>
      Src: /src/opendal/core/services/gdrive/src/backend.rs:554,1
    - Dst: map_err
      Src: /src/opendal/core/services/gdrive/src/backend.rs:554,1
    - Dst: Error::new
      Src: /src/opendal/core/services/gdrive/src/backend.rs:555,1
    - Dst: Self::set_source
      Src: /src/opendal/core/services/gdrive/src/backend.rs:555,1
    - Dst: anyhow::Result::mode
      Src: /src/opendal/core/services/gdrive/src/backend.rs:559,1
    - Dst: Option::is_dir
      Src: /src/opendal/core/services/gdrive/src/backend.rs:559,1
    - Dst: invalidate_dir_id
      Src: /src/opendal/core/services/gdrive/src/backend.rs:560,1
    - Dst: cache_dir_id
      Src: /src/opendal/core/services/gdrive/src/backend.rs:561,1
    - Dst: invalidate_file_id
      Src: /src/opendal/core/services/gdrive/src/backend.rs:563,1
    - Dst: cache_file_id
      Src: /src/opendal/core/services/gdrive/src/backend.rs:564,1
    - Dst: record_recent_delete
      Src: /src/opendal/core/services/gdrive/src/backend.rs:566,1
    - Dst: anyhow::Result::mode
      Src: /src/opendal/core/services/gdrive/src/backend.rs:567,1
    - Dst: record_recent_upsert
      Src: /src/opendal/core/services/gdrive/src/backend.rs:569,1
    - Dst: Ok
      Src: /src/opendal/core/services/gdrive/src/backend.rs:571,1
    - Dst: RpRename::default
      Src: /src/opendal/core/services/gdrive/src/backend.rs:571,1
    - Dst: Err
      Src: /src/opendal/core/services/gdrive/src/backend.rs:573,1
    - Dst: super::core::parse_error
      Src: /src/opendal/core/services/gdrive/src/backend.rs:573,1
    CyclomaticComplexity: 36
    EdgeCount: 36
    ICount: 266
    argCount: 4
    argNames:
    - ctx
    - from
    - to
    - _args
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    - OpRename
    constantsTouched: []
    func_position:
      end: 575
      start: 460
    functionDepth: 37
    functionLinenumber: 460
    functionLinenumberEnd: 575
    functionName: GdriveBackend::rename
    functionSourceFile: /src/opendal/core/services/gdrive/src/backend.rs
    functionUses: 0
    functionsReached:
    - invalidate_dir_id
    - super::core::normalize_dir_path
    - status
    - serde_json::from_reader
    - map_err
    - reader
    - Ok
    - cache_dir_id
    - Option::is_dir
    - record_recent_upsert
    - trash_path_if_exists
    - record_recent_delete
    - RpRename::default
    - parse::<u64>
    - Metadata::new
    - anyhow::Result::mode
    - into_body
    - build_abs_path
    - invalidate_file_id
    - Self::set_source
    - super::core::parse_error
    - anyhow::Result::with_content_length
    - refresh_path
    - cache_file_id
    - Error::new
    - Err
    - gdrive_patch_metadata_request
    linkageType: ''
    returnType: Result
    signature: 'async fn rename(&self,ctx: &OperationContext,from: &str,to: &str,_args:
      OpRename,) -> Result<RpRename>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/core/services/gdrive/src/backend.rs:583,1
    - Dst: Error::new
      Src: /src/opendal/core/services/gdrive/src/backend.rs:583,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - _ctx
    - _path
    - _args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpPresign
    constantsTouched: []
    func_position:
      end: 587
      start: 577
    functionDepth: 36
    functionLinenumber: 577
    functionLinenumberEnd: 587
    functionName: GdriveBackend::presign
    functionSourceFile: /src/opendal/core/services/gdrive/src/backend.rs
    functionUses: 0
    functionsReached:
    - Error::new
    - Err
    linkageType: ''
    returnType: Result
    signature: 'async fn presign(&self,_ctx: &OperationContext,_path: &str,_args:
      OpPresign,) -> Result<RpPresign>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::options
      Src: /src/opendal/core/services/fs/src/config.rs:39,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/fs/src/config.rs:39,1
    - Dst: Result::root
      Src: /src/opendal/core/services/fs/src/config.rs:41,1
    - Dst: Result::filter
      Src: /src/opendal/core/services/fs/src/config.rs:41,1
    - Dst: Result::is_empty
      Src: /src/opendal/core/services/fs/src/config.rs:41,1
    - Dst: Result::entry
      Src: /src/opendal/core/services/fs/src/config.rs:42,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/fs/src/config.rs:42,1
    - Dst: crate::Entry::or_insert_with
      Src: /src/opendal/core/services/fs/src/config.rs:42,1
    - Dst: Self::from_iter
      Src: /src/opendal/core/services/fs/src/config.rs:46,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 23
    argCount: 1
    argNames:
    - uri
    argTypes:
    - '&opendal_core::OperatorUri'
    constantsTouched: []
    func_position:
      end: 47
      start: 38
    functionDepth: 35
    functionLinenumber: 38
    functionLinenumberEnd: 47
    functionName: FsConfig::from_uri
    functionSourceFile: /src/opendal/core/services/fs/src/config.rs
    functionUses: 2
    functionsReached:
    - Result::clone
    - Self::from_iter
    - Result::entry
    - Result::filter
    - crate::Entry::or_insert_with
    - Result::is_empty
    - Result::root
    - '&str::to_string'
    - Result::options
    linkageType: ''
    returnType: opendal_core::Result
    signature: 'fn from_uri(uri: &opendal_core::OperatorUri) -> opendal_core::Result<Self>'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 51
      start: 49
    functionDepth: 0
    functionLinenumber: 49
    functionLinenumberEnd: 51
    functionName: FsConfig::into_builder
    functionSourceFile: /src/opendal/core/services/fs/src/config.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Self::Builder
    signature: fn into_builder(self) -> Self::Builder
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: OperatorUri::new
      Src: /src/opendal/core/services/fs/src/config.rs:70,1
    - Dst: Vec::<(String, String)>::new
      Src: /src/opendal/core/services/fs/src/config.rs:70,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/services/fs/src/config.rs:70,1
    - Dst: FsConfig::from_uri
      Src: /src/opendal/core/services/fs/src/config.rs:71,1
    - Dst: opendal_core::Result::unwrap
      Src: /src/opendal/core/services/fs/src/config.rs:71,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 73
      start: 68
    functionDepth: 29
    functionLinenumber: 68
    functionLinenumberEnd: 73
    functionName: tests::from_uri_with_file_scheme
    functionSourceFile: /src/opendal/core/services/fs/src/config.rs
    functionUses: 0
    functionsReached:
    - Vec::<(String, String)>::new
    - OperatorUri::new
    - Result::unwrap
    - FsConfig::from_uri
    - opendal_core::Result::unwrap
    linkageType: ''
    returnType: void
    signature: fn from_uri_with_file_scheme()
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - core
    argTypes:
    - Arc<FsCore>
    constantsTouched: []
    func_position:
      end: 31
      start: 29
    functionDepth: 0
    functionLinenumber: 29
    functionLinenumberEnd: 31
    functionName: FsDeleter::new
    functionSourceFile: /src/opendal/core/services/fs/src/deleter.rs
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(core: Arc<FsCore>) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: root_join
      Src: /src/opendal/core/services/fs/src/deleter.rs:36,1
    - Dst: OpStat::recursive
      Src: /src/opendal/core/services/fs/src/deleter.rs:38,1
    - Dst: tokio::fs::metadata
      Src: /src/opendal/core/services/fs/src/deleter.rs:40,1
    - Dst: Result::is_dir
      Src: /src/opendal/core/services/fs/src/deleter.rs:44,1
    - Dst: tokio::fs::remove_dir_all
      Src: /src/opendal/core/services/fs/src/deleter.rs:46,1
    - Dst: map_err
      Src: /src/opendal/core/services/fs/src/deleter.rs:46,1
    - Dst: tokio::fs::remove_dir
      Src: /src/opendal/core/services/fs/src/deleter.rs:50,1
    - Dst: map_err
      Src: /src/opendal/core/services/fs/src/deleter.rs:50,1
    - Dst: tokio::fs::remove_file
      Src: /src/opendal/core/services/fs/src/deleter.rs:53,1
    - Dst: map_err
      Src: /src/opendal/core/services/fs/src/deleter.rs:53,1
    - Dst: Ok
      Src: /src/opendal/core/services/fs/src/deleter.rs:55,1
    - Dst: Error::kind
      Src: /src/opendal/core/services/fs/src/deleter.rs:57,1
    - Dst: Ok
      Src: /src/opendal/core/services/fs/src/deleter.rs:57,1
    - Dst: Err
      Src: /src/opendal/core/services/fs/src/deleter.rs:58,1
    - Dst: new_std_io_error
      Src: /src/opendal/core/services/fs/src/deleter.rs:58,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 48
    argCount: 2
    argNames:
    - path
    - args
    argTypes:
    - String
    - OpDelete
    constantsTouched: []
    func_position:
      end: 60
      start: 35
    functionDepth: 34
    functionLinenumber: 35
    functionLinenumberEnd: 60
    functionName: FsDeleter::delete_once
    functionSourceFile: /src/opendal/core/services/fs/src/deleter.rs
    functionUses: 0
    functionsReached:
    - root_join
    - map_err
    - tokio::fs::remove_dir
    - Ok
    - tokio::fs::metadata
    - Result::is_dir
    - Err
    - Error::kind
    - new_std_io_error
    - tokio::fs::remove_dir_all
    - OpStat::recursive
    - tokio::fs::remove_file
    linkageType: ''
    returnType: Result
    signature: 'async fn delete_once(&self, path: String, args: OpDelete) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::to_owned
      Src: /src/opendal/core/services/fs/src/lister.rs:37,1
    - Dst: Some
      Src: /src/opendal/core/services/fs/src/lister.rs:38,1
    - Dst: to_string
      Src: /src/opendal/core/services/fs/src/lister.rs:38,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 3
    argNames:
    - root
    - path
    - rd
    argTypes:
    - '&Path'
    - '&str'
    - P
    constantsTouched: []
    func_position:
      end: 41
      start: 35
    functionDepth: 2
    functionLinenumber: 35
    functionLinenumberEnd: 41
    functionName: FsLister::new
    functionSourceFile: /src/opendal/core/services/fs/src/lister.rs
    functionUses: 2
    functionsReached:
    - Result::to_owned
    - to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(root: &Path, path: &str, rd: P) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: take
      Src: /src/opendal/core/services/fs/src/lister.rs:53,1
    - Dst: oio::Entry::new
      Src: /src/opendal/core/services/fs/src/lister.rs:54,1
    - Dst: as_str
      Src: /src/opendal/core/services/fs/src/lister.rs:54,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/fs/src/lister.rs:54,1
    - Dst: Ok
      Src: /src/opendal/core/services/fs/src/lister.rs:55,1
    - Dst: Some
      Src: /src/opendal/core/services/fs/src/lister.rs:55,1
    - Dst: next_entry
      Src: /src/opendal/core/services/fs/src/lister.rs:58,1
    - Dst: Ok
      Src: /src/opendal/core/services/fs/src/lister.rs:60,1
    - Dst: Result::kind
      Src: /src/opendal/core/services/fs/src/lister.rs:61,1
    - Dst: Ok
      Src: /src/opendal/core/services/fs/src/lister.rs:63,1
    - Dst: Err
      Src: /src/opendal/core/services/fs/src/lister.rs:65,1
    - Dst: new_std_io_error
      Src: /src/opendal/core/services/fs/src/lister.rs:65,1
    - Dst: std::fmt::Result::path
      Src: /src/opendal/core/services/fs/src/lister.rs:68,1
    - Dst: String::strip_prefix
      Src: /src/opendal/core/services/fs/src/lister.rs:69,1
    - Dst: expect
      Src: /src/opendal/core/services/fs/src/lister.rs:69,1
    - Dst: to_string_lossy
      Src: /src/opendal/core/services/fs/src/lister.rs:69,1
    - Dst: replace
      Src: /src/opendal/core/services/fs/src/lister.rs:74,1
    - Dst: normalize_path
      Src: /src/opendal/core/services/fs/src/lister.rs:75,1
    - Dst: std::fmt::Result::file_type
      Src: /src/opendal/core/services/fs/src/lister.rs:77,1
    - Dst: Result::kind
      Src: /src/opendal/core/services/fs/src/lister.rs:79,1
    - Dst: Err
      Src: /src/opendal/core/services/fs/src/lister.rs:83,1
    - Dst: new_std_io_error
      Src: /src/opendal/core/services/fs/src/lister.rs:83,1
    - Dst: is_dir
      Src: /src/opendal/core/services/fs/src/lister.rs:85,1
    - Dst: is_file
      Src: /src/opendal/core/services/fs/src/lister.rs:88,1
    - Dst: std::fmt::Result::metadata
      Src: /src/opendal/core/services/fs/src/lister.rs:94,1
    - Dst: Result::kind
      Src: /src/opendal/core/services/fs/src/lister.rs:96,1
    - Dst: Err
      Src: /src/opendal/core/services/fs/src/lister.rs:100,1
    - Dst: new_std_io_error
      Src: /src/opendal/core/services/fs/src/lister.rs:100,1
    - Dst: modified
      Src: /src/opendal/core/services/fs/src/lister.rs:102,1
    - Dst: Result::kind
      Src: /src/opendal/core/services/fs/src/lister.rs:104,1
    - Dst: Err
      Src: /src/opendal/core/services/fs/src/lister.rs:107,1
    - Dst: new_std_io_error
      Src: /src/opendal/core/services/fs/src/lister.rs:107,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/fs/src/lister.rs:109,1
    - Dst: Self::with_content_length
      Src: /src/opendal/core/services/fs/src/lister.rs:109,1
    - Dst: len
      Src: /src/opendal/core/services/fs/src/lister.rs:110,1
    - Dst: Self::with_last_modified
      Src: /src/opendal/core/services/fs/src/lister.rs:109,1
    - Dst: Timestamp::try_from
      Src: /src/opendal/core/services/fs/src/lister.rs:111,1
    - Dst: Ok
      Src: /src/opendal/core/services/fs/src/lister.rs:113,1
    - Dst: Some
      Src: /src/opendal/core/services/fs/src/lister.rs:113,1
    - Dst: oio::Entry::new
      Src: /src/opendal/core/services/fs/src/lister.rs:113,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 105
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 115
      start: 50
    functionDepth: 36
    functionLinenumber: 50
    functionLinenumberEnd: 115
    functionName: FsLister::next
    functionSourceFile: /src/opendal/core/services/fs/src/lister.rs
    functionUses: 0
    functionsReached:
    - std::fmt::Result::path
    - Self::with_last_modified
    - std::fmt::Result::file_type
    - is_dir
    - expect
    - Ok
    - take
    - as_str
    - len
    - String::strip_prefix
    - Metadata::new
    - normalize_path
    - replace
    - Some
    - std::fmt::Result::metadata
    - Result::kind
    - next_entry
    - new_std_io_error
    - is_file
    - Timestamp::try_from
    - modified
    - oio::Entry::new
    - Self::with_content_length
    - Err
    - to_string_lossy
    linkageType: ''
    returnType: Result
    signature: async fn next(&mut self) -> Result<Option<oio::Entry>>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: std::env::temp_dir
      Src: /src/opendal/core/services/fs/src/lister.rs:125,1
    - Dst: join
      Src: /src/opendal/core/services/fs/src/lister.rs:125,1
    - Dst: std::fs::remove_dir_all
      Src: /src/opendal/core/services/fs/src/lister.rs:126,1
    - Dst: std::fs::create_dir_all
      Src: /src/opendal/core/services/fs/src/lister.rs:127,1
    - Dst: unwrap
      Src: /src/opendal/core/services/fs/src/lister.rs:127,1
    - Dst: std::fs::write
      Src: /src/opendal/core/services/fs/src/lister.rs:129,1
    - Dst: Result::join
      Src: /src/opendal/core/services/fs/src/lister.rs:129,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/services/fs/src/lister.rs:129,1
    - Dst: tokio::fs::read_dir
      Src: /src/opendal/core/services/fs/src/lister.rs:131,1
    - Dst: unwrap
      Src: /src/opendal/core/services/fs/src/lister.rs:131,1
    - Dst: FsLister::new
      Src: /src/opendal/core/services/fs/src/lister.rs:132,1
    - Dst: Result::next
      Src: /src/opendal/core/services/fs/src/lister.rs:134,1
    - Dst: unwrap
      Src: /src/opendal/core/services/fs/src/lister.rs:134,1
    - Dst: unwrap
      Src: /src/opendal/core/services/fs/src/lister.rs:134,1
    - Dst: Result::next
      Src: /src/opendal/core/services/fs/src/lister.rs:137,1
    - Dst: unwrap
      Src: /src/opendal/core/services/fs/src/lister.rs:137,1
    - Dst: unwrap
      Src: /src/opendal/core/services/fs/src/lister.rs:137,1
    - Dst: std::fs::remove_dir_all
      Src: /src/opendal/core/services/fs/src/lister.rs:145,1
    - Dst: unwrap
      Src: /src/opendal/core/services/fs/src/lister.rs:145,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 45
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 146
      start: 124
    functionDepth: 33
    functionLinenumber: 124
    functionLinenumberEnd: 146
    functionName: tests::list_file_with_backslash_in_name
    functionSourceFile: /src/opendal/core/services/fs/src/lister.rs
    functionUses: 0
    functionsReached:
    - Result::join
    - join
    - unwrap
    - std::fs::create_dir_all
    - Result::next
    - std::env::temp_dir
    - std::fs::write
    - Result::unwrap
    - tokio::fs::read_dir
    - std::fs::remove_dir_all
    - FsLister::new
    linkageType: ''
    returnType: void
    signature: async fn list_file_with_backslash_in_name()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: to_string
      Src: /src/opendal/core/services/fs/src/reader.rs:37,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - core
    - path
    argTypes:
    - Arc<FsCore>
    - '&str'
    constantsTouched: []
    func_position:
      end: 39
      start: 34
    functionDepth: 2
    functionLinenumber: 34
    functionLinenumberEnd: 39
    functionName: FsReader::new
    functionSourceFile: /src/opendal/core/services/fs/src/reader.rs
    functionUses: 1
    functionsReached:
    - to_string
    linkageType: ''
    returnType: Self
    signature: 'pub(super) fn new(core: Arc<FsCore>, path: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::into
      Src: /src/opendal/core/services/fs/src/reader.rs:51,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - core
    - file
    argTypes:
    - Arc<FsCore>
    - File
    constantsTouched: []
    func_position:
      end: 53
      start: 48
    functionDepth: 29
    functionLinenumber: 48
    functionLinenumberEnd: 53
    functionName: FsReaderHandle::new
    functionSourceFile: /src/opendal/core/services/fs/src/reader.rs
    functionUses: 1
    functionsReached:
    - Result::into
    linkageType: ''
    returnType: Self
    signature: 'pub(super) fn new(core: Arc<FsCore>, file: File) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: fs_open
      Src: /src/opendal/core/services/fs/src/reader.rs:60,1
    - Dst: Ok
      Src: /src/opendal/core/services/fs/src/reader.rs:61,1
    - Dst: FsReaderHandle::new
      Src: /src/opendal/core/services/fs/src/reader.rs:61,1
    - Dst: clone
      Src: /src/opendal/core/services/fs/src/reader.rs:61,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 62
      start: 59
    functionDepth: 35
    functionLinenumber: 59
    functionLinenumberEnd: 62
    functionName: FsReader::open
    functionSourceFile: /src/opendal/core/services/fs/src/reader.rs
    functionUses: 0
    functionsReached:
    - clone
    - fs_open
    - FsReaderHandle::new
    - Ok
    linkageType: ''
    returnType: Result
    signature: async fn open(&self) -> Result<Self::Handle>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/core/services/fs/src/reader.rs:66,1
    - Dst: Buffer::new
      Src: /src/opendal/core/services/fs/src/reader.rs:66,1
    - Dst: get
      Src: /src/opendal/core/services/fs/src/reader.rs:69,1
    - Dst: Result::resize
      Src: /src/opendal/core/services/fs/src/reader.rs:70,1
    - Dst: clone
      Src: /src/opendal/core/services/fs/src/reader.rs:72,1
    - Dst: tokio::task::spawn_blocking
      Src: /src/opendal/core/services/fs/src/reader.rs:73,1
    - Dst: super::backend::read_at
      Src: /src/opendal/core/services/fs/src/reader.rs:74,1
    - Dst: Ok::<_, Error>
      Src: /src/opendal/core/services/fs/src/reader.rs:75,1
    - Dst: map_err
      Src: /src/opendal/core/services/fs/src/reader.rs:73,1
    - Dst: Result::split_to
      Src: /src/opendal/core/services/fs/src/reader.rs:80,1
    - Dst: Self::freeze
      Src: /src/opendal/core/services/fs/src/reader.rs:80,1
    - Dst: put
      Src: /src/opendal/core/services/fs/src/reader.rs:81,1
    - Dst: Ok
      Src: /src/opendal/core/services/fs/src/reader.rs:83,1
    - Dst: Buffer::from
      Src: /src/opendal/core/services/fs/src/reader.rs:83,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 41
    argCount: 3
    argNames:
    - handle
    - offset
    - size
    argTypes:
    - '&Self::Handle'
    - u64
    - usize
    constantsTouched: []
    func_position:
      end: 84
      start: 64
    functionDepth: 40
    functionLinenumber: 64
    functionLinenumberEnd: 84
    functionName: FsReader::read_at
    functionSourceFile: /src/opendal/core/services/fs/src/reader.rs
    functionUses: 0
    functionsReached:
    - map_err
    - Buffer::new
    - get
    - tokio::task::spawn_blocking
    - Ok
    - clone
    - Result::split_to
    - put
    - super::backend::read_at
    - Ok::<_, Error>
    - Self::freeze
    - Result::resize
    - Buffer::from
    linkageType: ''
    returnType: Result
    signature: 'async fn read_at(handle: &Self::Handle, offset: u64, size: usize)
      -> Result<Buffer>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: to_string
      Src: /src/opendal/core/services/fs/src/reader.rs:100,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 4
    argNames:
    - core
    - executor
    - path
    - op
    argTypes:
    - Arc<FsCore>
    - Executor
    - '&str'
    - OpWrite
    constantsTouched: []
    func_position:
      end: 104
      start: 96
    functionDepth: 2
    functionLinenumber: 96
    functionLinenumberEnd: 104
    functionName: FsLazyWriter::new
    functionSourceFile: /src/opendal/core/services/fs/src/reader.rs
    functionUses: 1
    functionsReached:
    - to_string
    linkageType: ''
    returnType: Self
    signature: 'pub(super) fn new(core: Arc<FsCore>, executor: Executor, path: &str,
      op: OpWrite) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: is_none
      Src: /src/opendal/core/services/fs/src/reader.rs:107,1
    - Dst: append
      Src: /src/opendal/core/services/fs/src/reader.rs:108,1
    - Dst: concurrent
      Src: /src/opendal/core/services/fs/src/reader.rs:109,1
    - Dst: FsWriter::create
      Src: /src/opendal/core/services/fs/src/reader.rs:110,1
    - Dst: clone
      Src: /src/opendal/core/services/fs/src/reader.rs:110,1
    - Dst: clone
      Src: /src/opendal/core/services/fs/src/reader.rs:110,1
    - Dst: FsWriters::One
      Src: /src/opendal/core/services/fs/src/reader.rs:112,1
    - Dst: FsWriters::Two
      Src: /src/opendal/core/services/fs/src/reader.rs:114,1
    - Dst: oio::PositionWriter::new
      Src: /src/opendal/core/services/fs/src/reader.rs:114,1
    - Dst: clone
      Src: /src/opendal/core/services/fs/src/reader.rs:115,1
    - Dst: Some
      Src: /src/opendal/core/services/fs/src/reader.rs:121,1
    - Dst: Ok
      Src: /src/opendal/core/services/fs/src/reader.rs:124,1
    - Dst: as_mut
      Src: /src/opendal/core/services/fs/src/reader.rs:124,1
    - Dst: expect
      Src: /src/opendal/core/services/fs/src/reader.rs:124,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 39
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 125
      start: 106
    functionDepth: 31
    functionLinenumber: 106
    functionLinenumberEnd: 125
    functionName: FsLazyWriter::inner
    functionSourceFile: /src/opendal/core/services/fs/src/reader.rs
    functionUses: 3
    functionsReached:
    - is_none
    - as_mut
    - expect
    - Ok
    - clone
    - FsWriters::Two
    - Some
    - FsWriter::create
    - concurrent
    - append
    - FsWriters::One
    - oio::PositionWriter::new
    linkageType: ''
    returnType: Result
    signature: async fn inner(&mut self) -> Result<&mut FsWriters>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: FsLazyWriter::inner
      Src: /src/opendal/core/services/fs/src/reader.rs:130,1
    - Dst: write
      Src: /src/opendal/core/services/fs/src/reader.rs:130,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 1
    argNames:
    - bs
    argTypes:
    - Buffer
    constantsTouched: []
    func_position:
      end: 131
      start: 129
    functionDepth: 32
    functionLinenumber: 129
    functionLinenumberEnd: 131
    functionName: FsLazyWriter::write
    functionSourceFile: /src/opendal/core/services/fs/src/reader.rs
    functionUses: 0
    functionsReached:
    - FsLazyWriter::inner
    - write
    linkageType: ''
    returnType: Result
    signature: 'async fn write(&mut self, bs: Buffer) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: FsLazyWriter::inner
      Src: /src/opendal/core/services/fs/src/reader.rs:134,1
    - Dst: close
      Src: /src/opendal/core/services/fs/src/reader.rs:134,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 135
      start: 133
    functionDepth: 32
    functionLinenumber: 133
    functionLinenumberEnd: 135
    functionName: FsLazyWriter::close
    functionSourceFile: /src/opendal/core/services/fs/src/reader.rs
    functionUses: 0
    functionsReached:
    - FsLazyWriter::inner
    - close
    linkageType: ''
    returnType: Result
    signature: async fn close(&mut self) -> Result<Metadata>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: FsLazyWriter::inner
      Src: /src/opendal/core/services/fs/src/reader.rs:138,1
    - Dst: abort
      Src: /src/opendal/core/services/fs/src/reader.rs:138,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 139
      start: 137
    functionDepth: 32
    functionLinenumber: 137
    functionLinenumberEnd: 139
    functionName: FsLazyWriter::abort
    functionSourceFile: /src/opendal/core/services/fs/src/reader.rs
    functionUses: 0
    functionsReached:
    - FsLazyWriter::inner
    - abort
    linkageType: ''
    returnType: Result
    signature: async fn abort(&mut self) -> Result<()>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: to_string
      Src: /src/opendal/core/services/fs/src/reader.rs:152,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - core
    - path
    argTypes:
    - Arc<FsCore>
    - '&str'
    constantsTouched: []
    func_position:
      end: 155
      start: 149
    functionDepth: 2
    functionLinenumber: 149
    functionLinenumberEnd: 155
    functionName: FsLazyLister::new
    functionSourceFile: /src/opendal/core/services/fs/src/reader.rs
    functionUses: 1
    functionsReached:
    - to_string
    linkageType: ''
    returnType: Self
    signature: 'pub(super) fn new(core: Arc<FsCore>, path: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: is_none
      Src: /src/opendal/core/services/fs/src/reader.rs:160,1
    - Dst: Some
      Src: /src/opendal/core/services/fs/src/reader.rs:161,1
    - Dst: fs_list
      Src: /src/opendal/core/services/fs/src/reader.rs:161,1
    - Dst: Some
      Src: /src/opendal/core/services/fs/src/reader.rs:162,1
    - Dst: FsLister::new
      Src: /src/opendal/core/services/fs/src/reader.rs:162,1
    - Dst: as_mut
      Src: /src/opendal/core/services/fs/src/reader.rs:167,1
    - Dst: expect
      Src: /src/opendal/core/services/fs/src/reader.rs:167,1
    - Dst: Result::next
      Src: /src/opendal/core/services/fs/src/reader.rs:168,1
    - Dst: Ok
      Src: /src/opendal/core/services/fs/src/reader.rs:169,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 35
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 171
      start: 159
    functionDepth: 38
    functionLinenumber: 159
    functionLinenumberEnd: 171
    functionName: FsLazyLister::next
    functionSourceFile: /src/opendal/core/services/fs/src/reader.rs
    functionUses: 0
    functionsReached:
    - is_none
    - as_mut
    - expect
    - Ok
    - fs_list
    - Some
    - Result::next
    - FsLister::new
    linkageType: ''
    returnType: Result
    signature: async fn next(&mut self) -> Result<Option<oio::Entry>>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: trim_end_matches
      Src: /src/opendal/core/services/fs/src/core.rs:47,1
    - Dst: Path::new
      Src: /src/opendal/core/services/fs/src/core.rs:48,1
    - Dst: Self::components
      Src: /src/opendal/core/services/fs/src/core.rs:48,1
    - Dst: any
      Src: /src/opendal/core/services/fs/src/core.rs:48,1
    - Dst: Err
      Src: /src/opendal/core/services/fs/src/core.rs:52,1
    - Dst: Error::new
      Src: /src/opendal/core/services/fs/src/core.rs:52,1
    - Dst: Self::with_context
      Src: /src/opendal/core/services/fs/src/core.rs:52,1
    - Dst: Ok
      Src: /src/opendal/core/services/fs/src/core.rs:58,1
    - Dst: Self::join
      Src: /src/opendal/core/services/fs/src/core.rs:58,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 19
    argCount: 2
    argNames:
    - base
    - path
    argTypes:
    - '&Path'
    - '&str'
    constantsTouched: []
    func_position:
      end: 59
      start: 45
    functionDepth: 32
    functionLinenumber: 45
    functionLinenumberEnd: 59
    functionName: FsCore::confined_join
    functionSourceFile: /src/opendal/core/services/fs/src/core.rs
    functionUses: 0
    functionsReached:
    - Self::components
    - Ok
    - Self::with_context
    - trim_end_matches
    - Err
    - Error::new
    - Self::join
    - Path::new
    - any
    linkageType: ''
    returnType: Result
    signature: 'pub fn confined_join(base: &Path, path: &str) -> Result<PathBuf>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self::confined_join
      Src: /src/opendal/core/services/fs/src/core.rs:64,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - path
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 65
      start: 63
    functionDepth: 33
    functionLinenumber: 63
    functionLinenumberEnd: 65
    functionName: FsCore::root_join
    functionSourceFile: /src/opendal/core/services/fs/src/core.rs
    functionUses: 6
    functionsReached:
    - Self::confined_join
    linkageType: ''
    returnType: Result
    signature: 'pub fn root_join(&self, path: &str) -> Result<PathBuf>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self::confined_join
      Src: /src/opendal/core/services/fs/src/core.rs:69,1
    - Dst: PathBuf::from
      Src: /src/opendal/core/services/fs/src/core.rs:77,1
    - Dst: Result::parent
      Src: /src/opendal/core/services/fs/src/core.rs:77,1
    - Dst: '&str::ok_or_else'
      Src: /src/opendal/core/services/fs/src/core.rs:77,1
    - Dst: Error::new
      Src: /src/opendal/core/services/fs/src/core.rs:80,1
    - Dst: Self::with_context
      Src: /src/opendal/core/services/fs/src/core.rs:80,1
    - Dst: to_string_lossy
      Src: /src/opendal/core/services/fs/src/core.rs:84,1
    - Dst: to_path_buf
      Src: /src/opendal/core/services/fs/src/core.rs:77,1
    - Dst: tokio::fs::create_dir_all
      Src: /src/opendal/core/services/fs/src/core.rs:88,1
    - Dst: map_err
      Src: /src/opendal/core/services/fs/src/core.rs:88,1
    - Dst: Ok
      Src: /src/opendal/core/services/fs/src/core.rs:92,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 25
    argCount: 2
    argNames:
    - parent
    - path
    argTypes:
    - '&Path'
    - '&str'
    constantsTouched: []
    func_position:
      end: 93
      start: 68
    functionDepth: 33
    functionLinenumber: 68
    functionLinenumberEnd: 93
    functionName: FsCore::ensure_write_abs_path
    functionSourceFile: /src/opendal/core/services/fs/src/core.rs
    functionUses: 3
    functionsReached:
    - Self::confined_join
    - PathBuf::from
    - map_err
    - '&str::ok_or_else'
    - Ok
    - tokio::fs::create_dir_all
    - Error::new
    - to_path_buf
    - Result::parent
    - Self::with_context
    - to_string_lossy
    linkageType: ''
    returnType: Result
    signature: 'pub async fn ensure_write_abs_path(&self, parent: &Path, path: &str)
      -> Result<PathBuf>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: FsCore::root_join
      Src: /src/opendal/core/services/fs/src/core.rs:96,1
    - Dst: tokio::fs::create_dir_all
      Src: /src/opendal/core/services/fs/src/core.rs:97,1
    - Dst: map_err
      Src: /src/opendal/core/services/fs/src/core.rs:97,1
    - Dst: Ok
      Src: /src/opendal/core/services/fs/src/core.rs:100,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 1
    argNames:
    - path
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 101
      start: 95
    functionDepth: 34
    functionLinenumber: 95
    functionLinenumberEnd: 101
    functionName: FsCore::fs_create_dir
    functionSourceFile: /src/opendal/core/services/fs/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - tokio::fs::create_dir_all
    - FsCore::root_join
    - Ok
    linkageType: ''
    returnType: Result
    signature: 'pub async fn fs_create_dir(&self, path: &str) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: FsCore::root_join
      Src: /src/opendal/core/services/fs/src/core.rs:104,1
    - Dst: tokio::fs::metadata
      Src: /src/opendal/core/services/fs/src/core.rs:105,1
    - Dst: map_err
      Src: /src/opendal/core/services/fs/src/core.rs:105,1
    - Dst: Result::is_dir
      Src: /src/opendal/core/services/fs/src/core.rs:106,1
    - Dst: Result::is_file
      Src: /src/opendal/core/services/fs/src/core.rs:108,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/fs/src/core.rs:113,1
    - Dst: Self::with_content_length
      Src: /src/opendal/core/services/fs/src/core.rs:113,1
    - Dst: Result::len
      Src: /src/opendal/core/services/fs/src/core.rs:114,1
    - Dst: Self::with_last_modified
      Src: /src/opendal/core/services/fs/src/core.rs:113,1
    - Dst: Timestamp::try_from
      Src: /src/opendal/core/services/fs/src/core.rs:115,1
    - Dst: Result::modified
      Src: /src/opendal/core/services/fs/src/core.rs:116,1
    - Dst: Option::map_err
      Src: /src/opendal/core/services/fs/src/core.rs:116,1
    - Dst: Self::get_user_metadata
      Src: /src/opendal/core/services/fs/src/core.rs:122,1
    - Dst: Result::is_empty
      Src: /src/opendal/core/services/fs/src/core.rs:123,1
    - Dst: Result::with_user_metadata
      Src: /src/opendal/core/services/fs/src/core.rs:124,1
    - Dst: Ok
      Src: /src/opendal/core/services/fs/src/core.rs:128,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 43
    argCount: 1
    argNames:
    - path
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 129
      start: 103
    functionDepth: 34
    functionLinenumber: 103
    functionLinenumberEnd: 129
    functionName: FsCore::fs_stat
    functionSourceFile: /src/opendal/core/services/fs/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - Metadata::new
    - Timestamp::try_from
    - Result::modified
    - Ok
    - tokio::fs::metadata
    - Self::with_content_length
    - Self::with_last_modified
    - Result::is_dir
    - Result::with_user_metadata
    - Result::is_file
    - Self::get_user_metadata
    - Result::is_empty
    - FsCore::root_join
    - Result::len
    - Option::map_err
    linkageType: ''
    returnType: Result
    signature: 'pub async fn fs_stat(&self, path: &str) -> Result<Metadata>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: FsCore::root_join
      Src: /src/opendal/core/services/fs/src/core.rs:132,1
    - Dst: tokio::fs::OpenOptions::new
      Src: /src/opendal/core/services/fs/src/core.rs:134,1
    - Dst: Self::read
      Src: /src/opendal/core/services/fs/src/core.rs:134,1
    - Dst: Result::open
      Src: /src/opendal/core/services/fs/src/core.rs:134,1
    - Dst: map_err
      Src: /src/opendal/core/services/fs/src/core.rs:134,1
    - Dst: into_std
      Src: /src/opendal/core/services/fs/src/core.rs:134,1
    - Dst: Ok
      Src: /src/opendal/core/services/fs/src/core.rs:142,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 1
    argNames:
    - path
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 143
      start: 131
    functionDepth: 34
    functionLinenumber: 131
    functionLinenumberEnd: 143
    functionName: FsCore::fs_open
    functionSourceFile: /src/opendal/core/services/fs/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - Self::read
    - Ok
    - into_std
    - FsCore::root_join
    - tokio::fs::OpenOptions::new
    - Result::open
    linkageType: ''
    returnType: Result
    signature: 'pub async fn fs_open(&self, path: &str) -> Result<File>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: tokio::fs::OpenOptions::new
      Src: /src/opendal/core/services/fs/src/core.rs:146,1
    - Dst: if_not_exists
      Src: /src/opendal/core/services/fs/src/core.rs:147,1
    - Dst: Self::create_new
      Src: /src/opendal/core/services/fs/src/core.rs:148,1
    - Dst: Self::create
      Src: /src/opendal/core/services/fs/src/core.rs:150,1
    - Dst: Self::write
      Src: /src/opendal/core/services/fs/src/core.rs:153,1
    - Dst: append
      Src: /src/opendal/core/services/fs/src/core.rs:155,1
    - Dst: Self::append
      Src: /src/opendal/core/services/fs/src/core.rs:156,1
    - Dst: Self::truncate
      Src: /src/opendal/core/services/fs/src/core.rs:158,1
    - Dst: Self::open
      Src: /src/opendal/core/services/fs/src/core.rs:161,1
    - Dst: map_err
      Src: /src/opendal/core/services/fs/src/core.rs:161,1
    - Dst: Ok
      Src: /src/opendal/core/services/fs/src/core.rs:163,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 31
    argCount: 2
    argNames:
    - path
    - op
    argTypes:
    - '&PathBuf'
    - '&OpWrite'
    constantsTouched: []
    func_position:
      end: 164
      start: 145
    functionDepth: 32
    functionLinenumber: 145
    functionLinenumberEnd: 164
    functionName: FsCore::fs_write
    functionSourceFile: /src/opendal/core/services/fs/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - Self::open
    - Ok
    - Self::write
    - Self::truncate
    - append
    - Self::append
    - Self::create
    - if_not_exists
    - tokio::fs::OpenOptions::new
    - Self::create_new
    linkageType: ''
    returnType: Result
    signature: 'pub async fn fs_write(&self, path: &PathBuf, op: &OpWrite) -> Result<tokio::fs::File>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: as_ref
      Src: /src/opendal/core/services/fs/src/core.rs:173,1
    - Dst: Err
      Src: /src/opendal/core/services/fs/src/core.rs:174,1
    - Dst: Error::new
      Src: /src/opendal/core/services/fs/src/core.rs:174,1
    - Dst: FsCore::ensure_write_abs_path
      Src: /src/opendal/core/services/fs/src/core.rs:180,1
    - Dst: build_tmp_path_of
      Src: /src/opendal/core/services/fs/src/core.rs:181,1
    - Dst: tokio::fs::OpenOptions::new
      Src: /src/opendal/core/services/fs/src/core.rs:184,1
    - Dst: Self::create_new
      Src: /src/opendal/core/services/fs/src/core.rs:187,1
    - Dst: Self::write
      Src: /src/opendal/core/services/fs/src/core.rs:188,1
    - Dst: Self::truncate
      Src: /src/opendal/core/services/fs/src/core.rs:189,1
    - Dst: Self::open
      Src: /src/opendal/core/services/fs/src/core.rs:191,1
    - Dst: map_err
      Src: /src/opendal/core/services/fs/src/core.rs:191,1
    - Dst: Ok
      Src: /src/opendal/core/services/fs/src/core.rs:193,1
    - Dst: Some
      Src: /src/opendal/core/services/fs/src/core.rs:193,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 33
    argCount: 1
    argNames:
    - path
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 194
      start: 169
    functionDepth: 36
    functionLinenumber: 169
    functionLinenumberEnd: 194
    functionName: FsCore::fs_tempfile_write
    functionSourceFile: /src/opendal/core/services/fs/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - build_tmp_path_of
    - Self::open
    - Ok
    - FsCore::ensure_write_abs_path
    - Error::new
    - Err
    - Self::write
    - Some
    - as_ref
    - Self::truncate
    - tokio::fs::OpenOptions::new
    - Self::create_new
    linkageType: ''
    returnType: Result
    signature: 'pub async fn fs_tempfile_write(&self,path: &str,) -> Result<(tokio::fs::File,
      Option<PathBuf>)>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: FsCore::root_join
      Src: /src/opendal/core/services/fs/src/core.rs:197,1
    - Dst: tokio::fs::read_dir
      Src: /src/opendal/core/services/fs/src/core.rs:199,1
    - Dst: Ok
      Src: /src/opendal/core/services/fs/src/core.rs:200,1
    - Dst: Some
      Src: /src/opendal/core/services/fs/src/core.rs:200,1
    - Dst: Result::kind
      Src: /src/opendal/core/services/fs/src/core.rs:202,1
    - Dst: Ok
      Src: /src/opendal/core/services/fs/src/core.rs:204,1
    - Dst: Ok
      Src: /src/opendal/core/services/fs/src/core.rs:211,1
    - Dst: Err
      Src: /src/opendal/core/services/fs/src/core.rs:212,1
    - Dst: new_std_io_error
      Src: /src/opendal/core/services/fs/src/core.rs:212,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 1
    argNames:
    - path
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 216
      start: 196
    functionDepth: 34
    functionLinenumber: 196
    functionLinenumberEnd: 216
    functionName: FsCore::fs_list
    functionSourceFile: /src/opendal/core/services/fs/src/core.rs
    functionUses: 0
    functionsReached:
    - Ok
    - Some
    - Err
    - FsCore::root_join
    - Result::kind
    - tokio::fs::read_dir
    - new_std_io_error
    linkageType: ''
    returnType: Result
    signature: 'pub async fn fs_list(&self, path: &str) -> Result<Option<tokio::fs::ReadDir>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: FsCore::root_join
      Src: /src/opendal/core/services/fs/src/core.rs:219,1
    - Dst: tokio::fs::metadata
      Src: /src/opendal/core/services/fs/src/core.rs:221,1
    - Dst: map_err
      Src: /src/opendal/core/services/fs/src/core.rs:221,1
    - Dst: FsCore::ensure_write_abs_path
      Src: /src/opendal/core/services/fs/src/core.rs:223,1
    - Dst: Result::trim_end_matches
      Src: /src/opendal/core/services/fs/src/core.rs:224,1
    - Dst: tokio::fs::copy
      Src: /src/opendal/core/services/fs/src/core.rs:227,1
    - Dst: map_err
      Src: /src/opendal/core/services/fs/src/core.rs:227,1
    - Dst: Self::get_user_metadata
      Src: /src/opendal/core/services/fs/src/core.rs:234,1
    - Dst: is_empty
      Src: /src/opendal/core/services/fs/src/core.rs:235,1
    - Dst: Self::set_user_metadata
      Src: /src/opendal/core/services/fs/src/core.rs:237,1
    - Dst: Ok
      Src: /src/opendal/core/services/fs/src/core.rs:241,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 41
    argCount: 2
    argNames:
    - from
    - to
    argTypes:
    - '&str'
    - '&str'
    constantsTouched: []
    func_position:
      end: 242
      start: 218
    functionDepth: 34
    functionLinenumber: 218
    functionLinenumberEnd: 242
    functionName: FsCore::fs_copy
    functionSourceFile: /src/opendal/core/services/fs/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - Result::trim_end_matches
    - tokio::fs::metadata
    - Ok
    - FsCore::ensure_write_abs_path
    - tokio::fs::copy
    - Self::set_user_metadata
    - is_empty
    - Self::get_user_metadata
    - FsCore::root_join
    linkageType: ''
    returnType: Result
    signature: 'pub async fn fs_copy(&self, from: &str, to: &str) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: FsCore::root_join
      Src: /src/opendal/core/services/fs/src/core.rs:245,1
    - Dst: tokio::fs::metadata
      Src: /src/opendal/core/services/fs/src/core.rs:246,1
    - Dst: map_err
      Src: /src/opendal/core/services/fs/src/core.rs:246,1
    - Dst: FsCore::ensure_write_abs_path
      Src: /src/opendal/core/services/fs/src/core.rs:248,1
    - Dst: Result::trim_end_matches
      Src: /src/opendal/core/services/fs/src/core.rs:249,1
    - Dst: tokio::fs::rename
      Src: /src/opendal/core/services/fs/src/core.rs:252,1
    - Dst: map_err
      Src: /src/opendal/core/services/fs/src/core.rs:252,1
    - Dst: Ok
      Src: /src/opendal/core/services/fs/src/core.rs:255,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 26
    argCount: 2
    argNames:
    - from
    - to
    argTypes:
    - '&str'
    - '&str'
    constantsTouched: []
    func_position:
      end: 256
      start: 244
    functionDepth: 34
    functionLinenumber: 244
    functionLinenumberEnd: 256
    functionName: FsCore::fs_rename
    functionSourceFile: /src/opendal/core/services/fs/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - Result::trim_end_matches
    - tokio::fs::metadata
    - Ok
    - FsCore::ensure_write_abs_path
    - FsCore::root_join
    - tokio::fs::rename
    linkageType: ''
    returnType: Result
    signature: 'pub async fn fs_rename(&self, from: &str, to: &str) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: HashMap::new
      Src: /src/opendal/core/services/fs/src/core.rs:264,1
    - Dst: xattr::list
      Src: /src/opendal/core/services/fs/src/core.rs:266,1
    - Dst: Result::kind
      Src: /src/opendal/core/services/fs/src/core.rs:270,1
    - Dst: Ok
      Src: /src/opendal/core/services/fs/src/core.rs:271,1
    - Dst: Result::raw_os_error
      Src: /src/opendal/core/services/fs/src/core.rs:275,1
    - Dst: Ok
      Src: /src/opendal/core/services/fs/src/core.rs:278,1
    - Dst: Err
      Src: /src/opendal/core/services/fs/src/core.rs:281,1
    - Dst: new_std_io_error
      Src: /src/opendal/core/services/fs/src/core.rs:281,1
    - Dst: to_string_lossy
      Src: /src/opendal/core/services/fs/src/core.rs:286,1
    - Dst: strip_prefix
      Src: /src/opendal/core/services/fs/src/core.rs:288,1
    - Dst: xattr::get
      Src: /src/opendal/core/services/fs/src/core.rs:289,1
    - Dst: String::from_utf8
      Src: /src/opendal/core/services/fs/src/core.rs:290,1
    - Dst: Result::insert
      Src: /src/opendal/core/services/fs/src/core.rs:292,1
    - Dst: FoyerKey::to_string
      Src: /src/opendal/core/services/fs/src/core.rs:292,1
    - Dst: Ok
      Src: /src/opendal/core/services/fs/src/core.rs:296,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 42
    argCount: 1
    argNames:
    - path
    argTypes:
    - '&Path'
    constantsTouched: []
    func_position:
      end: 297
      start: 263
    functionDepth: 37
    functionLinenumber: 263
    functionLinenumberEnd: 297
    functionName: FsCore::get_user_metadata
    functionSourceFile: /src/opendal/core/services/fs/src/core.rs
    functionUses: 1
    functionsReached:
    - String::from_utf8
    - xattr::get
    - Ok
    - xattr::list
    - to_string_lossy
    - Result::insert
    - Err
    - Result::raw_os_error
    - FoyerKey::to_string
    - strip_prefix
    - Result::kind
    - new_std_io_error
    - HashMap::new
    linkageType: ''
    returnType: Result
    signature: 'pub fn get_user_metadata(path: &Path) -> Result<HashMap<String, String>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: xattr::set
      Src: /src/opendal/core/services/fs/src/core.rs:307,1
    - Dst: Vec::as_bytes
      Src: /src/opendal/core/services/fs/src/core.rs:307,1
    - Dst: Result::map_err
      Src: /src/opendal/core/services/fs/src/core.rs:307,1
    - Dst: Ok
      Src: /src/opendal/core/services/fs/src/core.rs:309,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 2
    argNames:
    - path
    - user_metadata
    argTypes:
    - '&Path'
    - '&HashMap<String, String>'
    constantsTouched: []
    func_position:
      end: 310
      start: 304
    functionDepth: 34
    functionLinenumber: 304
    functionLinenumberEnd: 310
    functionName: FsCore::set_user_metadata
    functionSourceFile: /src/opendal/core/services/fs/src/core.rs
    functionUses: 2
    functionsReached:
    - Result::map_err
    - xattr::set
    - Vec::as_bytes
    - Ok
    linkageType: ''
    returnType: Result
    signature: 'pub fn set_user_metadata(path: &Path, user_metadata: &HashMap<String,
      String>) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: tempfile::TempDir::new
      Src: /src/opendal/core/services/fs/src/core.rs:346,1
    - Dst: Self::unwrap
      Src: /src/opendal/core/services/fs/src/core.rs:346,1
    - Dst: T::path
      Src: /src/opendal/core/services/fs/src/core.rs:347,1
    - Dst: Result::join
      Src: /src/opendal/core/services/fs/src/core.rs:352,1
    - Dst: Result::join
      Src: /src/opendal/core/services/fs/src/core.rs:353,1
    - Dst: std::fs::File::create
      Src: /src/opendal/core/services/fs/src/core.rs:355,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/services/fs/src/core.rs:355,1
    - Dst: HashMap::new
      Src: /src/opendal/core/services/fs/src/core.rs:357,1
    - Dst: Result::insert
      Src: /src/opendal/core/services/fs/src/core.rs:358,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/fs/src/core.rs:358,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/fs/src/core.rs:358,1
    - Dst: FsCore::set_user_metadata
      Src: /src/opendal/core/services/fs/src/core.rs:359,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/services/fs/src/core.rs:359,1
    - Dst: Operator::new
      Src: /src/opendal/core/services/fs/src/core.rs:361,1
    - Dst: crate::Fs::default
      Src: /src/opendal/core/services/fs/src/core.rs:361,1
    - Dst: Self::root
      Src: /src/opendal/core/services/fs/src/core.rs:361,1
    - Dst: Result::to_str
      Src: /src/opendal/core/services/fs/src/core.rs:361,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/services/fs/src/core.rs:361,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/services/fs/src/core.rs:361,1
    - Dst: copy
      Src: /src/opendal/core/services/fs/src/core.rs:362,1
    - Dst: unwrap
      Src: /src/opendal/core/services/fs/src/core.rs:362,1
    - Dst: FsCore::get_user_metadata
      Src: /src/opendal/core/services/fs/src/core.rs:364,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/services/fs/src/core.rs:364,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 49
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 366
      start: 343
    functionDepth: 35
    functionLinenumber: 343
    functionLinenumberEnd: 366
    functionName: tests::test_fs_backend_copy_preserves_user_metadata
    functionSourceFile: /src/opendal/core/services/fs/src/core.rs
    functionUses: 0
    functionsReached:
    - Operator::new
    - Result::join
    - Result::to_str
    - Self::unwrap
    - unwrap
    - FsCore::get_user_metadata
    - Result::insert
    - crate::Fs::default
    - Self::root
    - copy
    - Result::unwrap
    - '&str::to_string'
    - tempfile::TempDir::new
    - std::fs::File::create
    - FsCore::set_user_metadata
    - HashMap::new
    - T::path
    linkageType: ''
    returnType: void
    signature: async fn test_fs_backend_copy_preserves_user_metadata()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: CompfsCore::ensure_write_abs_path
      Src: /src/opendal/core/services/fs/src/writer.rs:45,1
    - Dst: user_metadata
      Src: /src/opendal/core/services/fs/src/writer.rs:49,1
    - Dst: Result::cloned
      Src: /src/opendal/core/services/fs/src/writer.rs:49,1
    - Dst: is_none
      Src: /src/opendal/core/services/fs/src/writer.rs:52,1
    - Dst: CompfsCore::fs_write
      Src: /src/opendal/core/services/fs/src/writer.rs:53,1
    - Dst: Ok
      Src: /src/opendal/core/services/fs/src/writer.rs:55,1
    - Dst: append
      Src: /src/opendal/core/services/fs/src/writer.rs:64,1
    - Dst: tokio::fs::try_exists
      Src: /src/opendal/core/services/fs/src/writer.rs:65,1
    - Dst: map_err
      Src: /src/opendal/core/services/fs/src/writer.rs:65,1
    - Dst: if_not_exists
      Src: /src/opendal/core/services/fs/src/writer.rs:68,1
    - Dst: Err
      Src: /src/opendal/core/services/fs/src/writer.rs:69,1
    - Dst: Error::new
      Src: /src/opendal/core/services/fs/src/writer.rs:69,1
    - Dst: CompfsCore::fs_tempfile_write
      Src: /src/opendal/core/services/fs/src/writer.rs:78,1
    - Dst: CompfsCore::fs_write
      Src: /src/opendal/core/services/fs/src/writer.rs:80,1
    - Dst: Ok
      Src: /src/opendal/core/services/fs/src/writer.rs:84,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 59
    argCount: 3
    argNames:
    - core
    - path
    - op
    argTypes:
    - Arc<FsCore>
    - '&str'
    - OpWrite
    constantsTouched: []
    func_position:
      end: 91
      start: 44
    functionDepth: 34
    functionLinenumber: 44
    functionLinenumberEnd: 91
    functionName: FsWriter::create
    functionSourceFile: /src/opendal/core/services/fs/src/writer.rs
    functionUses: 1
    functionsReached:
    - CompfsCore::ensure_write_abs_path
    - is_none
    - map_err
    - Result::cloned
    - tokio::fs::try_exists
    - Ok
    - CompfsCore::fs_write
    - Err
    - user_metadata
    - Error::new
    - append
    - CompfsCore::fs_tempfile_write
    - if_not_exists
    linkageType: ''
    returnType: Result
    signature: 'pub async fn create(core: Arc<FsCore>, path: &str, op: OpWrite) ->
      Result<Self>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::has_remaining
      Src: /src/opendal/core/services/fs/src/writer.rs:101,1
    - Dst: write
      Src: /src/opendal/core/services/fs/src/writer.rs:102,1
    - Dst: Result::chunk
      Src: /src/opendal/core/services/fs/src/writer.rs:102,1
    - Dst: map_err
      Src: /src/opendal/core/services/fs/src/writer.rs:102,1
    - Dst: Result::advance
      Src: /src/opendal/core/services/fs/src/writer.rs:103,1
    - Dst: Ok
      Src: /src/opendal/core/services/fs/src/writer.rs:106,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 18
    argCount: 1
    argNames:
    - bs
    argTypes:
    - Buffer
    constantsTouched: []
    func_position:
      end: 107
      start: 100
    functionDepth: 36
    functionLinenumber: 100
    functionLinenumberEnd: 107
    functionName: FsWriter::write
    functionSourceFile: /src/opendal/core/services/fs/src/writer.rs
    functionUses: 0
    functionsReached:
    - map_err
    - Ok
    - Result::has_remaining
    - Result::advance
    - Result::chunk
    - write
    linkageType: ''
    returnType: Result
    signature: 'async fn write(&mut self, mut bs: Buffer) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: try_clone
      Src: /src/opendal/core/services/fs/src/writer.rs:177,1
    - Dst: map_err
      Src: /src/opendal/core/services/fs/src/writer.rs:177,1
    - Dst: into_std
      Src: /src/opendal/core/services/fs/src/writer.rs:177,1
    - Dst: Result::flush
      Src: /src/opendal/core/services/fs/src/writer.rs:185,1
    - Dst: std::io::Result::map_err
      Src: /src/opendal/core/services/fs/src/writer.rs:185,1
    - Dst: Result::sync_all
      Src: /src/opendal/core/services/fs/src/writer.rs:186,1
    - Dst: map_err
      Src: /src/opendal/core/services/fs/src/writer.rs:186,1
    - Dst: tokio::fs::rename
      Src: /src/opendal/core/services/fs/src/writer.rs:189,1
    - Dst: map_err
      Src: /src/opendal/core/services/fs/src/writer.rs:189,1
    - Dst: FsCore::set_user_metadata
      Src: /src/opendal/core/services/fs/src/writer.rs:197,1
    - Dst: Result::metadata
      Src: /src/opendal/core/services/fs/src/writer.rs:200,1
    - Dst: anyhow::Result::map_err
      Src: /src/opendal/core/services/fs/src/writer.rs:200,1
    - Dst: is_file
      Src: /src/opendal/core/services/fs/src/writer.rs:201,1
    - Dst: is_dir
      Src: /src/opendal/core/services/fs/src/writer.rs:203,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/fs/src/writer.rs:208,1
    - Dst: Self::with_content_length
      Src: /src/opendal/core/services/fs/src/writer.rs:208,1
    - Dst: len
      Src: /src/opendal/core/services/fs/src/writer.rs:209,1
    - Dst: Self::with_last_modified
      Src: /src/opendal/core/services/fs/src/writer.rs:208,1
    - Dst: Timestamp::try_from
      Src: /src/opendal/core/services/fs/src/writer.rs:210,1
    - Dst: modified
      Src: /src/opendal/core/services/fs/src/writer.rs:211,1
    - Dst: map_err
      Src: /src/opendal/core/services/fs/src/writer.rs:211,1
    - Dst: Ok
      Src: /src/opendal/core/services/fs/src/writer.rs:213,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 68
    argCount: 1
    argNames:
    - _size
    argTypes:
    - u64
    constantsTouched: []
    func_position:
      end: 214
      start: 176
    functionDepth: 37
    functionLinenumber: 176
    functionLinenumberEnd: 214
    functionName: FsWriter::close
    functionSourceFile: /src/opendal/core/services/fs/src/writer.rs
    functionUses: 0
    functionsReached:
    - Self::with_last_modified
    - is_dir
    - map_err
    - Result::metadata
    - Ok
    - Result::flush
    - len
    - Metadata::new
    - into_std
    - std::io::Result::map_err
    - is_file
    - FsCore::set_user_metadata
    - Timestamp::try_from
    - modified
    - Self::with_content_length
    - Result::sync_all
    - try_clone
    - anyhow::Result::map_err
    - tokio::fs::rename
    linkageType: ''
    returnType: Result
    signature: 'async fn close(&self, _size: u64) -> Result<Metadata>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: tokio::fs::remove_file
      Src: /src/opendal/core/services/fs/src/writer.rs:218,1
    - Dst: map_err
      Src: /src/opendal/core/services/fs/src/writer.rs:218,1
    - Dst: Err
      Src: /src/opendal/core/services/fs/src/writer.rs:222,1
    - Dst: Error::new
      Src: /src/opendal/core/services/fs/src/writer.rs:222,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 227
      start: 216
    functionDepth: 36
    functionLinenumber: 216
    functionLinenumberEnd: 227
    functionName: FsWriter::abort
    functionSourceFile: /src/opendal/core/services/fs/src/writer.rs
    functionUses: 0
    functionsReached:
    - map_err
    - Err
    - Error::new
    - tokio::fs::remove_file
    linkageType: ''
    returnType: Result
    signature: async fn abort(&self) -> Result<()>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: try_clone
      Src: /src/opendal/core/services/fs/src/writer.rs:150,1
    - Dst: map_err
      Src: /src/opendal/core/services/fs/src/writer.rs:150,1
    - Dst: into_std
      Src: /src/opendal/core/services/fs/src/writer.rs:150,1
    - Dst: tokio::task::spawn_blocking
      Src: /src/opendal/core/services/fs/src/writer.rs:158,1
    - Dst: io::Result::is_empty
      Src: /src/opendal/core/services/fs/src/writer.rs:161,1
    - Dst: write_at
      Src: /src/opendal/core/services/fs/src/writer.rs:162,1
    - Dst: io::Result::chunk
      Src: /src/opendal/core/services/fs/src/writer.rs:162,1
    - Dst: io::Result::advance
      Src: /src/opendal/core/services/fs/src/writer.rs:164,1
    - Dst: Err
      Src: /src/opendal/core/services/fs/src/writer.rs:167,1
    - Dst: Ok
      Src: /src/opendal/core/services/fs/src/writer.rs:170,1
    - Dst: map_err
      Src: /src/opendal/core/services/fs/src/writer.rs:158,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 35
    argCount: 2
    argNames:
    - offset
    - buf
    argTypes:
    - u64
    - Buffer
    constantsTouched: []
    func_position:
      end: 174
      start: 149
    functionDepth: 2
    functionLinenumber: 149
    functionLinenumberEnd: 174
    functionName: FsWriter::write_all_at
    functionSourceFile: /src/opendal/core/services/fs/src/writer.rs
    functionUses: 0
    functionsReached:
    - map_err
    - tokio::task::spawn_blocking
    - Ok
    - io::Result::is_empty
    - into_std
    - Err
    - try_clone
    - io::Result::advance
    - write_at
    - io::Result::chunk
    linkageType: ''
    returnType: Result
    signature: 'async fn write_all_at(&self, offset: u64, buf: Buffer) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::write_at
      Src: /src/opendal/core/services/fs/src/writer.rs:239,1
    - Dst: Result::map_err
      Src: /src/opendal/core/services/fs/src/writer.rs:239,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - f
    - buf
    - offset
    argTypes:
    - '&File'
    - '&[u8]'
    - u64
    constantsTouched: []
    func_position:
      end: 240
      start: 237
    functionDepth: 1
    functionLinenumber: 237
    functionLinenumberEnd: 240
    functionName: write_at
    functionSourceFile: /src/opendal/core/services/fs/src/writer.rs
    functionUses: 2
    functionsReached:
    - Result::map_err
    - Result::write_at
    linkageType: ''
    returnType: Result
    signature: 'fn write_at(f: &File, buf: &[u8], offset: u64) -> Result<usize>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: register::<Fs>
      Src: /src/opendal/core/services/fs/src/lib.rs:40,1
    - Dst: register::<Fs>
      Src: /src/opendal/core/services/fs/src/lib.rs:41,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - registry
    argTypes:
    - '&opendal_core::OperatorRegistry'
    constantsTouched: []
    func_position:
      end: 42
      start: 39
    functionDepth: 0
    functionLinenumber: 39
    functionLinenumberEnd: 42
    functionName: register_fs_service
    functionSourceFile: /src/opendal/core/services/fs/src/lib.rs
    functionUses: 1
    functionsReached:
    - register::<Fs>
    linkageType: ''
    returnType: void
    signature: 'pub fn register_fs_service(registry: &opendal_core::OperatorRegistry)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::is_empty
      Src: /src/opendal/core/services/fs/src/backend.rs:42,1
    - Dst: Some
      Src: /src/opendal/core/services/fs/src/backend.rs:45,1
    - Dst: Result::to_string
      Src: /src/opendal/core/services/fs/src/backend.rs:45,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - root
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 49
      start: 41
    functionDepth: 4
    functionLinenumber: 41
    functionLinenumberEnd: 49
    functionName: FsBuilder::root
    functionSourceFile: /src/opendal/core/services/fs/src/backend.rs
    functionUses: 0
    functionsReached:
    - Result::is_empty
    - Result::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn root(mut self, root: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::is_empty
      Src: /src/opendal/core/services/fs/src/backend.rs:58,1
    - Dst: Some
      Src: /src/opendal/core/services/fs/src/backend.rs:59,1
    - Dst: Result::to_string
      Src: /src/opendal/core/services/fs/src/backend.rs:59,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 1
    argNames:
    - dir
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 63
      start: 57
    functionDepth: 4
    functionLinenumber: 57
    functionLinenumberEnd: 63
    functionName: FsBuilder::atomic_write_dir
    functionSourceFile: /src/opendal/core/services/fs/src/backend.rs
    functionUses: 0
    functionsReached:
    - Result::is_empty
    - Result::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn atomic_write_dir(mut self, dir: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: map
      Src: /src/opendal/core/services/fs/src/backend.rs:72,1
    - Dst: Ok
      Src: /src/opendal/core/services/fs/src/backend.rs:73,1
    - Dst: Err
      Src: /src/opendal/core/services/fs/src/backend.rs:74,1
    - Dst: Error::new
      Src: /src/opendal/core/services/fs/src/backend.rs:74,1
    - Dst: std::fs::metadata
      Src: /src/opendal/core/services/fs/src/backend.rs:82,1
    - Dst: Result::kind
      Src: /src/opendal/core/services/fs/src/backend.rs:83,1
    - Dst: std::fs::create_dir_all
      Src: /src/opendal/core/services/fs/src/backend.rs:85,1
    - Dst: map_err
      Src: /src/opendal/core/services/fs/src/backend.rs:85,1
    - Dst: Error::new
      Src: /src/opendal/core/services/fs/src/backend.rs:86,1
    - Dst: Self::with_operation
      Src: /src/opendal/core/services/fs/src/backend.rs:86,1
    - Dst: Self::with_context
      Src: /src/opendal/core/services/fs/src/backend.rs:86,1
    - Dst: Result::to_string_lossy
      Src: /src/opendal/core/services/fs/src/backend.rs:88,1
    - Dst: Self::set_source
      Src: /src/opendal/core/services/fs/src/backend.rs:86,1
    - Dst: map
      Src: /src/opendal/core/services/fs/src/backend.rs:93,1
    - Dst: std::fs::metadata
      Src: /src/opendal/core/services/fs/src/backend.rs:97,1
    - Dst: Result::kind
      Src: /src/opendal/core/services/fs/src/backend.rs:98,1
    - Dst: std::fs::create_dir_all
      Src: /src/opendal/core/services/fs/src/backend.rs:100,1
    - Dst: map_err
      Src: /src/opendal/core/services/fs/src/backend.rs:100,1
    - Dst: Error::new
      Src: /src/opendal/core/services/fs/src/backend.rs:101,1
    - Dst: Self::with_operation
      Src: /src/opendal/core/services/fs/src/backend.rs:101,1
    - Dst: Self::with_context
      Src: /src/opendal/core/services/fs/src/backend.rs:101,1
    - Dst: Result::to_string_lossy
      Src: /src/opendal/core/services/fs/src/backend.rs:103,1
    - Dst: Self::set_source
      Src: /src/opendal/core/services/fs/src/backend.rs:101,1
    - Dst: Result::canonicalize
      Src: /src/opendal/core/services/fs/src/backend.rs:110,1
    - Dst: map_err
      Src: /src/opendal/core/services/fs/src/backend.rs:110,1
    - Dst: Error::new
      Src: /src/opendal/core/services/fs/src/backend.rs:111,1
    - Dst: Self::set_source
      Src: /src/opendal/core/services/fs/src/backend.rs:111,1
    - Dst: Self::map
      Src: /src/opendal/core/services/fs/src/backend.rs:120,1
    - Dst: canonicalize
      Src: /src/opendal/core/services/fs/src/backend.rs:122,1
    - Dst: map
      Src: /src/opendal/core/services/fs/src/backend.rs:122,1
    - Dst: map_err
      Src: /src/opendal/core/services/fs/src/backend.rs:122,1
    - Dst: Error::new
      Src: /src/opendal/core/services/fs/src/backend.rs:123,1
    - Dst: Self::with_operation
      Src: /src/opendal/core/services/fs/src/backend.rs:123,1
    - Dst: Self::with_context
      Src: /src/opendal/core/services/fs/src/backend.rs:123,1
    - Dst: Result::to_string_lossy
      Src: /src/opendal/core/services/fs/src/backend.rs:128,1
    - Dst: Self::set_source
      Src: /src/opendal/core/services/fs/src/backend.rs:123,1
    - Dst: Result::unwrap_or
      Src: /src/opendal/core/services/fs/src/backend.rs:120,1
    - Dst: Ok
      Src: /src/opendal/core/services/fs/src/backend.rs:132,1
    - Dst: Ok
      Src: /src/opendal/core/services/fs/src/backend.rs:134,1
    - Dst: Arc::new
      Src: /src/opendal/core/services/fs/src/backend.rs:135,1
    - Dst: ServiceInfo::new
      Src: /src/opendal/core/services/fs/src/backend.rs:136,1
    - Dst: Result::to_string_lossy
      Src: /src/opendal/core/services/fs/src/backend.rs:136,1
    - Dst: Default::default
      Src: /src/opendal/core/services/fs/src/backend.rs:161,1
    - Dst: oio::PooledBuf::new
      Src: /src/opendal/core/services/fs/src/backend.rs:165,1
    - Dst: Self::with_initial_capacity
      Src: /src/opendal/core/services/fs/src/backend.rs:165,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 105
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 168
      start: 69
    functionDepth: 36
    functionLinenumber: 69
    functionLinenumberEnd: 168
    functionName: FsBuilder::build
    functionSourceFile: /src/opendal/core/services/fs/src/backend.rs
    functionUses: 0
    functionsReached:
    - Self::with_initial_capacity
    - Arc::new
    - Default::default
    - map
    - Self::with_context
    - Result::unwrap_or
    - map_err
    - ServiceInfo::new
    - Ok
    - canonicalize
    - std::fs::metadata
    - Self::map
    - oio::PooledBuf::new
    - Result::to_string_lossy
    - Result::kind
    - Self::set_source
    - Result::canonicalize
    - Error::new
    - Err
    - std::fs::create_dir_all
    - Self::with_operation
    linkageType: ''
    returnType: Result
    signature: fn build(self) -> Result<impl Service>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: clone
      Src: /src/opendal/core/services/fs/src/backend.rs:185,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 186
      start: 184
    functionDepth: 2
    functionLinenumber: 184
    functionLinenumberEnd: 186
    functionName: FsBackend::info
    functionSourceFile: /src/opendal/core/services/fs/src/backend.rs
    functionUses: 0
    functionsReached:
    - clone
    linkageType: ''
    returnType: ServiceInfo
    signature: fn info(&self) -> ServiceInfo
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 190
      start: 188
    functionDepth: 0
    functionLinenumber: 188
    functionLinenumberEnd: 190
    functionName: FsBackend::capability
    functionSourceFile: /src/opendal/core/services/fs/src/backend.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Capability
    signature: fn capability(&self) -> Capability
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: fs_create_dir
      Src: /src/opendal/core/services/fs/src/backend.rs:198,1
    - Dst: Ok
      Src: /src/opendal/core/services/fs/src/backend.rs:199,1
    - Dst: RpCreateDir::default
      Src: /src/opendal/core/services/fs/src/backend.rs:199,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 3
    argNames:
    - _ctx
    - path
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpCreateDir
    constantsTouched: []
    func_position:
      end: 200
      start: 192
    functionDepth: 38
    functionLinenumber: 192
    functionLinenumberEnd: 200
    functionName: FsBackend::create_dir
    functionSourceFile: /src/opendal/core/services/fs/src/backend.rs
    functionUses: 0
    functionsReached:
    - RpCreateDir::default
    - fs_create_dir
    - Ok
    linkageType: ''
    returnType: Result
    signature: 'async fn create_dir(&self,_ctx: &OperationContext,path: &str,_: OpCreateDir,)
      -> Result<RpCreateDir>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: fs_stat
      Src: /src/opendal/core/services/fs/src/backend.rs:203,1
    - Dst: Ok
      Src: /src/opendal/core/services/fs/src/backend.rs:204,1
    - Dst: RpStat::new
      Src: /src/opendal/core/services/fs/src/backend.rs:204,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 3
    argNames:
    - _ctx
    - path
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpStat
    constantsTouched: []
    func_position:
      end: 205
      start: 202
    functionDepth: 39
    functionLinenumber: 202
    functionLinenumberEnd: 205
    functionName: FsBackend::stat
    functionSourceFile: /src/opendal/core/services/fs/src/backend.rs
    functionUses: 0
    functionsReached:
    - RpStat::new
    - fs_stat
    - Ok
    linkageType: ''
    returnType: Result
    signature: 'async fn stat(&self, _ctx: &OperationContext, path: &str, _: OpStat)
      -> Result<RpStat>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/core/services/fs/src/backend.rs:208,1
    - Dst: oio::PositionReader::new
      Src: /src/opendal/core/services/fs/src/backend.rs:208,1
    - Dst: FsReader::new
      Src: /src/opendal/core/services/fs/src/backend.rs:208,1
    - Dst: clone
      Src: /src/opendal/core/services/fs/src/backend.rs:209,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 3
    argNames:
    - _ctx
    - path
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpRead
    constantsTouched: []
    func_position:
      end: 212
      start: 207
    functionDepth: 3
    functionLinenumber: 207
    functionLinenumberEnd: 212
    functionName: FsBackend::read
    functionSourceFile: /src/opendal/core/services/fs/src/backend.rs
    functionUses: 0
    functionsReached:
    - FsReader::new
    - clone
    - oio::PositionReader::new
    - Ok
    linkageType: ''
    returnType: Result
    signature: 'fn read(&self, _ctx: &OperationContext, path: &str, _: OpRead) ->
      Result<Self::Reader>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/core/services/fs/src/backend.rs:215,1
    - Dst: FsLazyWriter::new
      Src: /src/opendal/core/services/fs/src/backend.rs:215,1
    - Dst: clone
      Src: /src/opendal/core/services/fs/src/backend.rs:216,1
    - Dst: Result::executor
      Src: /src/opendal/core/services/fs/src/backend.rs:217,1
    - Dst: Self::clone
      Src: /src/opendal/core/services/fs/src/backend.rs:217,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 3
    argNames:
    - ctx
    - path
    - op
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpWrite
    constantsTouched: []
    func_position:
      end: 221
      start: 214
    functionDepth: 3
    functionLinenumber: 214
    functionLinenumberEnd: 221
    functionName: FsBackend::write
    functionSourceFile: /src/opendal/core/services/fs/src/backend.rs
    functionUses: 0
    functionsReached:
    - Ok
    - FsLazyWriter::new
    - Result::executor
    - clone
    - Self::clone
    linkageType: ''
    returnType: Result
    signature: 'fn write(&self, ctx: &OperationContext, path: &str, op: OpWrite) ->
      Result<Self::Writer>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/core/services/fs/src/backend.rs:224,1
    - Dst: oio::OneShotDeleter::new
      Src: /src/opendal/core/services/fs/src/backend.rs:224,1
    - Dst: FsDeleter::new
      Src: /src/opendal/core/services/fs/src/backend.rs:224,1
    - Dst: clone
      Src: /src/opendal/core/services/fs/src/backend.rs:224,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - _ctx
    argTypes:
    - '&OperationContext'
    constantsTouched: []
    func_position:
      end: 225
      start: 223
    functionDepth: 2
    functionLinenumber: 223
    functionLinenumberEnd: 225
    functionName: FsBackend::delete
    functionSourceFile: /src/opendal/core/services/fs/src/backend.rs
    functionUses: 0
    functionsReached:
    - oio::OneShotDeleter::new
    - clone
    - Ok
    - FsDeleter::new
    linkageType: ''
    returnType: Result
    signature: 'fn delete(&self, _ctx: &OperationContext) -> Result<Self::Deleter>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/core/services/fs/src/backend.rs:228,1
    - Dst: FsLazyLister::new
      Src: /src/opendal/core/services/fs/src/backend.rs:228,1
    - Dst: clone
      Src: /src/opendal/core/services/fs/src/backend.rs:228,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - _ctx
    - path
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpList
    constantsTouched: []
    func_position:
      end: 229
      start: 227
    functionDepth: 3
    functionLinenumber: 227
    functionLinenumberEnd: 229
    functionName: FsBackend::list
    functionSourceFile: /src/opendal/core/services/fs/src/backend.rs
    functionUses: 0
    functionsReached:
    - clone
    - Ok
    - FsLazyLister::new
    linkageType: ''
    returnType: Result
    signature: 'fn list(&self, _ctx: &OperationContext, path: &str, _: OpList) ->
      Result<Self::Lister>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: clone
      Src: /src/opendal/core/services/fs/src/backend.rs:239,1
    - Dst: Result::to_string
      Src: /src/opendal/core/services/fs/src/backend.rs:240,1
    - Dst: Result::to_string
      Src: /src/opendal/core/services/fs/src/backend.rs:241,1
    - Dst: Ok
      Src: /src/opendal/core/services/fs/src/backend.rs:242,1
    - Dst: oio::OneShotCopier::new
      Src: /src/opendal/core/services/fs/src/backend.rs:242,1
    - Dst: CompfsCore::fs_copy
      Src: /src/opendal/core/services/fs/src/backend.rs:243,1
    - Dst: Ok
      Src: /src/opendal/core/services/fs/src/backend.rs:244,1
    - Dst: Metadata::default
      Src: /src/opendal/core/services/fs/src/backend.rs:244,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 18
    argCount: 5
    argNames:
    - _ctx
    - from
    - to
    - _args
    - _opts
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    - OpCopy
    - OpCopier
    constantsTouched: []
    func_position:
      end: 246
      start: 231
    functionDepth: 35
    functionLinenumber: 231
    functionLinenumberEnd: 246
    functionName: FsBackend::copy
    functionSourceFile: /src/opendal/core/services/fs/src/backend.rs
    functionUses: 0
    functionsReached:
    - CompfsCore::fs_copy
    - Metadata::default
    - Result::to_string
    - Ok
    - clone
    - oio::OneShotCopier::new
    linkageType: ''
    returnType: Result
    signature: 'fn copy(&self,_ctx: &OperationContext,from: &str,to: &str,_args: OpCopy,_opts:
      OpCopier,) -> Result<Self::Copier>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: fs_rename
      Src: /src/opendal/core/services/fs/src/backend.rs:255,1
    - Dst: Ok
      Src: /src/opendal/core/services/fs/src/backend.rs:256,1
    - Dst: RpRename::default
      Src: /src/opendal/core/services/fs/src/backend.rs:256,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 4
    argNames:
    - _ctx
    - from
    - to
    - _args
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    - OpRename
    constantsTouched: []
    func_position:
      end: 257
      start: 248
    functionDepth: 41
    functionLinenumber: 248
    functionLinenumberEnd: 257
    functionName: FsBackend::rename
    functionSourceFile: /src/opendal/core/services/fs/src/backend.rs
    functionUses: 0
    functionsReached:
    - RpRename::default
    - fs_rename
    - Ok
    linkageType: ''
    returnType: Result
    signature: 'async fn rename(&self,_ctx: &OperationContext,from: &str,to: &str,_args:
      OpRename,) -> Result<RpRename>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/core/services/fs/src/backend.rs:265,1
    - Dst: Error::new
      Src: /src/opendal/core/services/fs/src/backend.rs:265,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - _ctx
    - _path
    - _args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpPresign
    constantsTouched: []
    func_position:
      end: 269
      start: 259
    functionDepth: 36
    functionLinenumber: 259
    functionLinenumberEnd: 269
    functionName: FsBackend::presign
    functionSourceFile: /src/opendal/core/services/fs/src/backend.rs
    functionUses: 0
    functionsReached:
    - Error::new
    - Err
    linkageType: ''
    returnType: Result
    signature: 'async fn presign(&self,_ctx: &OperationContext,_path: &str,_args:
      OpPresign,) -> Result<RpPresign>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::read_at
      Src: /src/opendal/core/services/fs/src/backend.rs:281,1
    - Dst: Result::map_err
      Src: /src/opendal/core/services/fs/src/backend.rs:281,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - f
    - buf
    - offset
    argTypes:
    - '&File'
    - '&mut [u8]'
    - u64
    constantsTouched: []
    func_position:
      end: 282
      start: 279
    functionDepth: 34
    functionLinenumber: 279
    functionLinenumberEnd: 282
    functionName: read_at
    functionSourceFile: /src/opendal/core/services/fs/src/backend.rs
    functionUses: 8
    functionsReached:
    - Result::map_err
    - Result::read_at
    linkageType: ''
    returnType: Result
    signature: 'pub(crate) fn read_at(f: &File, buf: &mut [u8], offset: u64) -> Result<usize>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::debug_struct
      Src: /src/opendal/core/services/hdfs-native/src/config.rs:52,1
    - Dst: field
      Src: /src/opendal/core/services/hdfs-native/src/config.rs:52,1
    - Dst: field
      Src: /src/opendal/core/services/hdfs-native/src/config.rs:52,1
    - Dst: field
      Src: /src/opendal/core/services/hdfs-native/src/config.rs:52,1
    - Dst: finish_non_exhaustive
      Src: /src/opendal/core/services/hdfs-native/src/config.rs:52,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 16
    argCount: 1
    argNames:
    - f
    argTypes:
    - '&mut std::fmt::Formatter<''_>'
    constantsTouched: []
    func_position:
      end: 57
      start: 51
    functionDepth: 5
    functionLinenumber: 51
    functionLinenumberEnd: 57
    functionName: HdfsNativeConfig::fmt
    functionSourceFile: /src/opendal/core/services/hdfs-native/src/config.rs
    functionUses: 0
    functionsReached:
    - field
    - Result::debug_struct
    - finish_non_exhaustive
    linkageType: ''
    returnType: std::fmt::Result
    signature: 'fn fmt(&self, f: &mut std::fmt::Formatter<''_>) -> std::fmt::Result'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::options
      Src: /src/opendal/core/services/hdfs-native/src/config.rs:64,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/hdfs-native/src/config.rs:64,1
    - Dst: Result::authority
      Src: /src/opendal/core/services/hdfs-native/src/config.rs:65,1
    - Dst: Result::insert
      Src: /src/opendal/core/services/hdfs-native/src/config.rs:66,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/hdfs-native/src/config.rs:66,1
    - Dst: Result::root
      Src: /src/opendal/core/services/hdfs-native/src/config.rs:69,1
    - Dst: Result::is_empty
      Src: /src/opendal/core/services/hdfs-native/src/config.rs:70,1
    - Dst: Result::insert
      Src: /src/opendal/core/services/hdfs-native/src/config.rs:72,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/hdfs-native/src/config.rs:72,1
    - Dst: Result::to_string
      Src: /src/opendal/core/services/hdfs-native/src/config.rs:72,1
    - Dst: Self::from_iter
      Src: /src/opendal/core/services/hdfs-native/src/config.rs:75,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 28
    argCount: 1
    argNames:
    - uri
    argTypes:
    - '&opendal_core::OperatorUri'
    constantsTouched: []
    func_position:
      end: 76
      start: 63
    functionDepth: 35
    functionLinenumber: 63
    functionLinenumberEnd: 76
    functionName: HdfsNativeConfig::from_uri
    functionSourceFile: /src/opendal/core/services/hdfs-native/src/config.rs
    functionUses: 0
    functionsReached:
    - Result::clone
    - Self::from_iter
    - Result::to_string
    - Result::insert
    - Result::is_empty
    - '&str::to_string'
    - Result::root
    - Result::authority
    - Result::options
    linkageType: ''
    returnType: opendal_core::Result
    signature: 'fn from_uri(uri: &opendal_core::OperatorUri) -> opendal_core::Result<Self>'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 81
      start: 79
    functionDepth: 0
    functionLinenumber: 79
    functionLinenumberEnd: 81
    functionName: HdfsNativeConfig::into_builder
    functionSourceFile: /src/opendal/core/services/hdfs-native/src/config.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Self::Builder
    signature: fn into_builder(self) -> Self::Builder
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: '&str::split'
      Src: /src/opendal/core/services/hdfs-native/src/config.rs:85,1
    - Dst: filter_map
      Src: /src/opendal/core/services/hdfs-native/src/config.rs:85,1
    - Dst: is_empty
      Src: /src/opendal/core/services/hdfs-native/src/config.rs:88,1
    - Dst: Some
      Src: /src/opendal/core/services/hdfs-native/src/config.rs:89,1
    - Dst: trim_start_matches
      Src: /src/opendal/core/services/hdfs-native/src/config.rs:89,1
    - Dst: trim_end_matches
      Src: /src/opendal/core/services/hdfs-native/src/config.rs:89,1
    - Dst: "split(\",\")\n        .filter_map(|s| {\n            if !s.is_empty()\
        \ {\n                Some(s.trim_start_matches(\"hdfs://\").trim_end_matches(\"\
        /\"))\n            } else {\n                None\n            }\n       \
        \ })\n        .collect::<Vec<&str>>"
      Src: /src/opendal/core/services/hdfs-native/src/config.rs:85,1
    - Dst: HashMap::new
      Src: /src/opendal/core/services/hdfs-native/src/config.rs:95,1
    - Dst: Vec::new
      Src: /src/opendal/core/services/hdfs-native/src/config.rs:96,1
    - Dst: iter
      Src: /src/opendal/core/services/hdfs-native/src/config.rs:97,1
    - Dst: enumerate
      Src: /src/opendal/core/services/hdfs-native/src/config.rs:97,1
    - Dst: HashMap::insert
      Src: /src/opendal/core/services/hdfs-native/src/config.rs:98,1
    - Dst: to_string
      Src: /src/opendal/core/services/hdfs-native/src/config.rs:103,1
    - Dst: Self::push
      Src: /src/opendal/core/services/hdfs-native/src/config.rs:105,1
    - Dst: HashMap::insert
      Src: /src/opendal/core/services/hdfs-native/src/config.rs:107,1
    - Dst: Self::join
      Src: /src/opendal/core/services/hdfs-native/src/config.rs:109,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 38
    argCount: 1
    argNames:
    - name_node_uri
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 112
      start: 84
    functionDepth: 33
    functionLinenumber: 84
    functionLinenumberEnd: 112
    functionName: init_hdfs_config
    functionSourceFile: /src/opendal/core/services/hdfs-native/src/config.rs
    functionUses: 3
    functionsReached:
    - trim_start_matches
    - "split(\",\")\n        .filter_map(|s| {\n            if !s.is_empty() {\n \
      \               Some(s.trim_start_matches(\"hdfs://\").trim_end_matches(\"/\"\
      ))\n            } else {\n                None\n            }\n        })\n\
      \        .collect::<Vec<&str>>"
    - '&str::split'
    - iter
    - to_string
    - Self::push
    - trim_end_matches
    - Some
    - is_empty
    - HashMap::new
    - Self::join
    - HashMap::insert
    - enumerate
    - Vec::new
    - filter_map
    linkageType: ''
    returnType: HashMap
    signature: 'pub fn init_hdfs_config(name_node_uri: &str) -> HashMap<String, String>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: OperatorUri::new
      Src: /src/opendal/core/services/hdfs/src/config.rs:97,1
    - Dst: Vec::<(String, String)>::new
      Src: /src/opendal/core/services/hdfs/src/config.rs:99,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/services/hdfs/src/config.rs:97,1
    - Dst: HdfsConfig::from_uri
      Src: /src/opendal/core/services/hdfs/src/config.rs:103,1
    - Dst: opendal_core::Result::unwrap
      Src: /src/opendal/core/services/hdfs/src/config.rs:103,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 106
      start: 96
    functionDepth: 29
    functionLinenumber: 96
    functionLinenumberEnd: 106
    functionName: tests::from_uri_sets_name_node_and_root
    functionSourceFile: /src/opendal/core/services/hdfs/src/config.rs
    functionUses: 0
    functionsReached:
    - HdfsConfig::from_uri
    - Vec::<(String, String)>::new
    - OperatorUri::new
    - Result::unwrap
    - opendal_core::Result::unwrap
    linkageType: ''
    returnType: void
    signature: fn from_uri_sets_name_node_and_root()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: init_hdfs_config
      Src: /src/opendal/core/services/hdfs-native/src/config.rs:143,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 154
      start: 142
    functionDepth: 34
    functionLinenumber: 142
    functionLinenumberEnd: 154
    functionName: tests::init_hdfs_config_from_single_namenode
    functionSourceFile: /src/opendal/core/services/hdfs-native/src/config.rs
    functionUses: 0
    functionsReached:
    - init_hdfs_config
    linkageType: ''
    returnType: void
    signature: fn init_hdfs_config_from_single_namenode()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: init_hdfs_config
      Src: /src/opendal/core/services/hdfs-native/src/config.rs:158,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 173
      start: 157
    functionDepth: 34
    functionLinenumber: 157
    functionLinenumberEnd: 173
    functionName: tests::init_hdfs_config_from_multi_namenodes
    functionSourceFile: /src/opendal/core/services/hdfs-native/src/config.rs
    functionUses: 0
    functionsReached:
    - init_hdfs_config
    linkageType: ''
    returnType: void
    signature: fn init_hdfs_config_from_multi_namenodes()
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - core
    argTypes:
    - Arc<HdfsNativeCore>
    constantsTouched: []
    func_position:
      end: 31
      start: 29
    functionDepth: 0
    functionLinenumber: 29
    functionLinenumberEnd: 31
    functionName: HdfsNativeDeleter::new
    functionSourceFile: /src/opendal/core/services/hdfs-native/src/deleter.rs
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(core: Arc<HdfsNativeCore>) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: hdfs_delete
      Src: /src/opendal/core/services/hdfs-native/src/deleter.rs:36,1
    - Dst: Ok
      Src: /src/opendal/core/services/hdfs-native/src/deleter.rs:37,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - path
    argTypes:
    - String
    - OpDelete
    constantsTouched: []
    func_position:
      end: 38
      start: 35
    functionDepth: 33
    functionLinenumber: 35
    functionLinenumberEnd: 38
    functionName: HdfsNativeDeleter::delete_once
    functionSourceFile: /src/opendal/core/services/hdfs-native/src/deleter.rs
    functionUses: 0
    functionsReached:
    - hdfs_delete
    - Ok
    linkageType: ''
    returnType: Result
    signature: 'async fn delete_once(&self, path: String, _: OpDelete) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::to_string
      Src: /src/opendal/core/services/hdfs-native/src/lister.rs:42,1
    - Dst: Result::list_status_iter
      Src: /src/opendal/core/services/hdfs-native/src/lister.rs:43,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 4
    argNames:
    - root
    - client
    - abs_path
    - current_path
    argTypes:
    - '&str'
    - '&hdfs_native::Client'
    - '&str'
    - Option<String>
    constantsTouched: []
    func_position:
      end: 47
      start: 35
    functionDepth: 2
    functionLinenumber: 35
    functionLinenumberEnd: 47
    functionName: HdfsNativeLister::new
    functionSourceFile: /src/opendal/core/services/hdfs-native/src/lister.rs
    functionUses: 1
    functionsReached:
    - Result::to_string
    - Result::list_status_iter
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(root: &str,client: &hdfs_native::Client,abs_path: &str,current_path:
      Option<String>,) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/core/services/hdfs-native/src/lister.rs:53,1
    - Dst: take
      Src: /src/opendal/core/services/hdfs-native/src/lister.rs:56,1
    - Dst: Ok
      Src: /src/opendal/core/services/hdfs-native/src/lister.rs:57,1
    - Dst: Some
      Src: /src/opendal/core/services/hdfs-native/src/lister.rs:57,1
    - Dst: oio::Entry::new
      Src: /src/opendal/core/services/hdfs-native/src/lister.rs:57,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/hdfs-native/src/lister.rs:57,1
    - Dst: next
      Src: /src/opendal/core/services/hdfs-native/src/lister.rs:60,1
    - Dst: build_rel_path
      Src: /src/opendal/core/services/hdfs-native/src/lister.rs:62,1
    - Dst: oio::Entry::new
      Src: /src/opendal/core/services/hdfs-native/src/lister.rs:65,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/hdfs-native/src/lister.rs:65,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/hdfs-native/src/lister.rs:67,1
    - Dst: Self::with_content_length
      Src: /src/opendal/core/services/hdfs-native/src/lister.rs:67,1
    - Dst: Self::with_last_modified
      Src: /src/opendal/core/services/hdfs-native/src/lister.rs:67,1
    - Dst: Timestamp::from_millisecond
      Src: /src/opendal/core/services/hdfs-native/src/lister.rs:69,1
    - Dst: oio::Entry::new
      Src: /src/opendal/core/services/hdfs-native/src/lister.rs:72,1
    - Dst: Ok
      Src: /src/opendal/core/services/hdfs-native/src/lister.rs:75,1
    - Dst: Some
      Src: /src/opendal/core/services/hdfs-native/src/lister.rs:75,1
    - Dst: Err
      Src: /src/opendal/core/services/hdfs-native/src/lister.rs:77,1
    - Dst: core::parse_hdfs_error
      Src: /src/opendal/core/services/hdfs-native/src/lister.rs:77,1
    - Dst: Ok
      Src: /src/opendal/core/services/hdfs-native/src/lister.rs:80,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 55
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 83
      start: 51
    functionDepth: 37
    functionLinenumber: 51
    functionLinenumberEnd: 83
    functionName: HdfsNativeLister::next
    functionSourceFile: /src/opendal/core/services/hdfs-native/src/lister.rs
    functionUses: 0
    functionsReached:
    - next
    - Metadata::new
    - oio::Entry::new
    - Ok
    - Self::with_content_length
    - Self::with_last_modified
    - build_rel_path
    - Some
    - take
    - Err
    - Timestamp::from_millisecond
    - core::parse_hdfs_error
    linkageType: ''
    returnType: Result
    signature: async fn next(&mut self) -> Result<Option<oio::Entry>>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: to_string
      Src: /src/opendal/core/services/hdfs-native/src/reader.rs:36,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - core
    - path
    argTypes:
    - Arc<HdfsNativeCore>
    - '&str'
    constantsTouched: []
    func_position:
      end: 38
      start: 33
    functionDepth: 2
    functionLinenumber: 33
    functionLinenumberEnd: 38
    functionName: HdfsNativeReader::new
    functionSourceFile: /src/opendal/core/services/hdfs-native/src/reader.rs
    functionUses: 1
    functionsReached:
    - to_string
    linkageType: ''
    returnType: Self
    signature: 'pub(super) fn new(core: Arc<HdfsNativeCore>, path: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - file
    argTypes:
    - hdfs_native::file::FileReader
    constantsTouched: []
    func_position:
      end: 48
      start: 46
    functionDepth: 0
    functionLinenumber: 46
    functionLinenumberEnd: 48
    functionName: HdfsNativeReaderHandle::new
    functionSourceFile: /src/opendal/core/services/hdfs-native/src/reader.rs
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: 'pub(super) fn new(file: hdfs_native::file::FileReader) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: hdfs_open
      Src: /src/opendal/core/services/hdfs-native/src/reader.rs:55,1
    - Dst: Ok
      Src: /src/opendal/core/services/hdfs-native/src/reader.rs:56,1
    - Dst: HdfsNativeReaderHandle::new
      Src: /src/opendal/core/services/hdfs-native/src/reader.rs:56,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 57
      start: 54
    functionDepth: 32
    functionLinenumber: 54
    functionLinenumberEnd: 57
    functionName: HdfsNativeReader::open
    functionSourceFile: /src/opendal/core/services/hdfs-native/src/reader.rs
    functionUses: 0
    functionsReached:
    - hdfs_open
    - HdfsNativeReaderHandle::new
    - Ok
    linkageType: ''
    returnType: Result
    signature: async fn open(&self) -> Result<Self::Handle>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/core/services/hdfs-native/src/reader.rs:61,1
    - Dst: Buffer::new
      Src: /src/opendal/core/services/hdfs-native/src/reader.rs:61,1
    - Dst: usize::try_from
      Src: /src/opendal/core/services/hdfs-native/src/reader.rs:64,1
    - Dst: Ok
      Src: /src/opendal/core/services/hdfs-native/src/reader.rs:65,1
    - Dst: Buffer::new
      Src: /src/opendal/core/services/hdfs-native/src/reader.rs:65,1
    - Dst: file_length
      Src: /src/opendal/core/services/hdfs-native/src/reader.rs:68,1
    - Dst: Ok
      Src: /src/opendal/core/services/hdfs-native/src/reader.rs:70,1
    - Dst: Buffer::new
      Src: /src/opendal/core/services/hdfs-native/src/reader.rs:70,1
    - Dst: Option::min
      Src: /src/opendal/core/services/hdfs-native/src/reader.rs:73,1
    - Dst: read_range
      Src: /src/opendal/core/services/hdfs-native/src/reader.rs:74,1
    - Dst: map_err
      Src: /src/opendal/core/services/hdfs-native/src/reader.rs:74,1
    - Dst: Ok
      Src: /src/opendal/core/services/hdfs-native/src/reader.rs:80,1
    - Dst: Buffer::from
      Src: /src/opendal/core/services/hdfs-native/src/reader.rs:80,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 34
    argCount: 3
    argNames:
    - handle
    - offset
    - size
    argTypes:
    - '&Self::Handle'
    - u64
    - usize
    constantsTouched: []
    func_position:
      end: 81
      start: 59
    functionDepth: 37
    functionLinenumber: 59
    functionLinenumberEnd: 81
    functionName: HdfsNativeReader::read_at
    functionSourceFile: /src/opendal/core/services/hdfs-native/src/reader.rs
    functionUses: 0
    functionsReached:
    - map_err
    - Buffer::new
    - usize::try_from
    - Ok
    - read_range
    - Option::min
    - file_length
    - Buffer::from
    linkageType: ''
    returnType: Result
    signature: 'async fn read_at(handle: &Self::Handle, offset: u64, size: usize)
      -> Result<Buffer>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: to_string
      Src: /src/opendal/core/services/hdfs-native/src/reader.rs:95,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - core
    - path
    - args
    argTypes:
    - Arc<HdfsNativeCore>
    - '&str'
    - OpWrite
    constantsTouched: []
    func_position:
      end: 99
      start: 92
    functionDepth: 2
    functionLinenumber: 92
    functionLinenumberEnd: 99
    functionName: HdfsNativeLazyWriter::new
    functionSourceFile: /src/opendal/core/services/hdfs-native/src/reader.rs
    functionUses: 1
    functionsReached:
    - to_string
    linkageType: ''
    returnType: Self
    signature: 'pub(super) fn new(core: Arc<HdfsNativeCore>, path: &str, args: OpWrite)
      -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: is_none
      Src: /src/opendal/core/services/hdfs-native/src/reader.rs:102,1
    - Dst: hdfs_write
      Src: /src/opendal/core/services/hdfs-native/src/reader.rs:103,1
    - Dst: Some
      Src: /src/opendal/core/services/hdfs-native/src/reader.rs:104,1
    - Dst: HdfsNativeWriter::new
      Src: /src/opendal/core/services/hdfs-native/src/reader.rs:104,1
    - Dst: Ok
      Src: /src/opendal/core/services/hdfs-native/src/reader.rs:107,1
    - Dst: as_mut
      Src: /src/opendal/core/services/hdfs-native/src/reader.rs:107,1
    - Dst: expect
      Src: /src/opendal/core/services/hdfs-native/src/reader.rs:107,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 25
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 108
      start: 101
    functionDepth: 35
    functionLinenumber: 101
    functionLinenumberEnd: 108
    functionName: HdfsNativeLazyWriter::inner
    functionSourceFile: /src/opendal/core/services/hdfs-native/src/reader.rs
    functionUses: 3
    functionsReached:
    - is_none
    - as_mut
    - expect
    - Ok
    - Some
    - HdfsNativeWriter::new
    - hdfs_write
    linkageType: ''
    returnType: Result
    signature: async fn inner(&mut self) -> Result<&mut HdfsNativeWriter>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: HdfsNativeLazyWriter::inner
      Src: /src/opendal/core/services/hdfs-native/src/reader.rs:113,1
    - Dst: write
      Src: /src/opendal/core/services/hdfs-native/src/reader.rs:113,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 1
    argNames:
    - bs
    argTypes:
    - Buffer
    constantsTouched: []
    func_position:
      end: 114
      start: 112
    functionDepth: 36
    functionLinenumber: 112
    functionLinenumberEnd: 114
    functionName: HdfsNativeLazyWriter::write
    functionSourceFile: /src/opendal/core/services/hdfs-native/src/reader.rs
    functionUses: 0
    functionsReached:
    - HdfsNativeLazyWriter::inner
    - write
    linkageType: ''
    returnType: Result
    signature: 'async fn write(&mut self, bs: Buffer) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: HdfsNativeLazyWriter::inner
      Src: /src/opendal/core/services/hdfs-native/src/reader.rs:117,1
    - Dst: close
      Src: /src/opendal/core/services/hdfs-native/src/reader.rs:117,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 118
      start: 116
    functionDepth: 36
    functionLinenumber: 116
    functionLinenumberEnd: 118
    functionName: HdfsNativeLazyWriter::close
    functionSourceFile: /src/opendal/core/services/hdfs-native/src/reader.rs
    functionUses: 0
    functionsReached:
    - HdfsNativeLazyWriter::inner
    - close
    linkageType: ''
    returnType: Result
    signature: async fn close(&mut self) -> Result<Metadata>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: HdfsNativeLazyWriter::inner
      Src: /src/opendal/core/services/hdfs-native/src/reader.rs:121,1
    - Dst: abort
      Src: /src/opendal/core/services/hdfs-native/src/reader.rs:121,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 122
      start: 120
    functionDepth: 36
    functionLinenumber: 120
    functionLinenumberEnd: 122
    functionName: HdfsNativeLazyWriter::abort
    functionSourceFile: /src/opendal/core/services/hdfs-native/src/reader.rs
    functionUses: 0
    functionsReached:
    - HdfsNativeLazyWriter::inner
    - abort
    linkageType: ''
    returnType: Result
    signature: async fn abort(&mut self) -> Result<()>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: to_string
      Src: /src/opendal/core/services/hdfs-native/src/reader.rs:135,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - core
    - path
    argTypes:
    - Arc<HdfsNativeCore>
    - '&str'
    constantsTouched: []
    func_position:
      end: 138
      start: 132
    functionDepth: 2
    functionLinenumber: 132
    functionLinenumberEnd: 138
    functionName: HdfsNativeLazyLister::new
    functionSourceFile: /src/opendal/core/services/hdfs-native/src/reader.rs
    functionUses: 1
    functionsReached:
    - to_string
    linkageType: ''
    returnType: Self
    signature: 'pub(super) fn new(core: Arc<HdfsNativeCore>, path: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: is_none
      Src: /src/opendal/core/services/hdfs-native/src/reader.rs:143,1
    - Dst: Some
      Src: /src/opendal/core/services/hdfs-native/src/reader.rs:144,1
    - Dst: hdfs_list
      Src: /src/opendal/core/services/hdfs-native/src/reader.rs:144,1
    - Dst: Some
      Src: /src/opendal/core/services/hdfs-native/src/reader.rs:145,1
    - Dst: HdfsNativeLister::new
      Src: /src/opendal/core/services/hdfs-native/src/reader.rs:145,1
    - Dst: as_mut
      Src: /src/opendal/core/services/hdfs-native/src/reader.rs:155,1
    - Dst: expect
      Src: /src/opendal/core/services/hdfs-native/src/reader.rs:155,1
    - Dst: Result::next
      Src: /src/opendal/core/services/hdfs-native/src/reader.rs:156,1
    - Dst: Ok
      Src: /src/opendal/core/services/hdfs-native/src/reader.rs:157,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 37
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 159
      start: 142
    functionDepth: 35
    functionLinenumber: 142
    functionLinenumberEnd: 159
    functionName: HdfsNativeLazyLister::next
    functionSourceFile: /src/opendal/core/services/hdfs-native/src/reader.rs
    functionUses: 0
    functionsReached:
    - is_none
    - as_mut
    - expect
    - Ok
    - hdfs_list
    - Some
    - Result::next
    - HdfsNativeLister::new
    linkageType: ''
    returnType: Result
    signature: async fn next(&mut self) -> Result<Option<oio::Entry>>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::debug_struct
      Src: /src/opendal/core/services/hdfs-native/src/core.rs:38,1
    - Dst: field
      Src: /src/opendal/core/services/hdfs-native/src/core.rs:38,1
    - Dst: finish_non_exhaustive
      Src: /src/opendal/core/services/hdfs-native/src/core.rs:38,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - f
    argTypes:
    - '&mut std::fmt::Formatter<''_>'
    constantsTouched: []
    func_position:
      end: 41
      start: 37
    functionDepth: 5
    functionLinenumber: 37
    functionLinenumberEnd: 41
    functionName: HdfsNativeCore::fmt
    functionSourceFile: /src/opendal/core/services/hdfs-native/src/core.rs
    functionUses: 0
    functionsReached:
    - field
    - Result::debug_struct
    - finish_non_exhaustive
    linkageType: ''
    returnType: std::fmt::Result
    signature: 'fn fmt(&self, f: &mut std::fmt::Formatter<''_>) -> std::fmt::Result'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_rooted_abs_path
      Src: /src/opendal/core/services/hdfs-native/src/core.rs:46,1
    - Dst: mkdirs
      Src: /src/opendal/core/services/hdfs-native/src/core.rs:48,1
    - Dst: map_err
      Src: /src/opendal/core/services/hdfs-native/src/core.rs:48,1
    - Dst: Ok
      Src: /src/opendal/core/services/hdfs-native/src/core.rs:53,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 1
    argNames:
    - path
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 54
      start: 45
    functionDepth: 3
    functionLinenumber: 45
    functionLinenumberEnd: 54
    functionName: HdfsNativeCore::hdfs_create_dir
    functionSourceFile: /src/opendal/core/services/hdfs-native/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - mkdirs
    - build_rooted_abs_path
    - Ok
    linkageType: ''
    returnType: Result
    signature: 'pub async fn hdfs_create_dir(&self, path: &str) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_rooted_abs_path
      Src: /src/opendal/core/services/hdfs-native/src/core.rs:57,1
    - Dst: get_file_info
      Src: /src/opendal/core/services/hdfs-native/src/core.rs:59,1
    - Dst: map_err
      Src: /src/opendal/core/services/hdfs-native/src/core.rs:59,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/hdfs-native/src/core.rs:71,1
    - Dst: anyhow::Result::set_last_modified
      Src: /src/opendal/core/services/hdfs-native/src/core.rs:72,1
    - Dst: Timestamp::from_millisecond
      Src: /src/opendal/core/services/hdfs-native/src/core.rs:73,1
    - Dst: '&mut Self::set_content_length'
      Src: /src/opendal/core/services/hdfs-native/src/core.rs:72,1
    - Dst: Ok
      Src: /src/opendal/core/services/hdfs-native/src/core.rs:78,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 26
    argCount: 1
    argNames:
    - path
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 79
      start: 56
    functionDepth: 34
    functionLinenumber: 56
    functionLinenumberEnd: 79
    functionName: HdfsNativeCore::hdfs_stat
    functionSourceFile: /src/opendal/core/services/hdfs-native/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - Metadata::new
    - Ok
    - '&mut Self::set_content_length'
    - anyhow::Result::set_last_modified
    - build_rooted_abs_path
    - get_file_info
    - Timestamp::from_millisecond
    linkageType: ''
    returnType: Result
    signature: 'pub async fn hdfs_stat(&self, path: &str) -> Result<Metadata>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_rooted_abs_path
      Src: /src/opendal/core/services/hdfs-native/src/core.rs:82,1
    - Dst: read
      Src: /src/opendal/core/services/hdfs-native/src/core.rs:84,1
    - Dst: map_err
      Src: /src/opendal/core/services/hdfs-native/src/core.rs:84,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - path
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 85
      start: 81
    functionDepth: 31
    functionLinenumber: 81
    functionLinenumberEnd: 85
    functionName: HdfsNativeCore::hdfs_open
    functionSourceFile: /src/opendal/core/services/hdfs-native/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - read
    - build_rooted_abs_path
    linkageType: ''
    returnType: Result
    signature: 'pub async fn hdfs_open(&self, path: &str) -> Result<hdfs_native::file::FileReader>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_rooted_abs_path
      Src: /src/opendal/core/services/hdfs-native/src/core.rs:92,1
    - Dst: get_file_info
      Src: /src/opendal/core/services/hdfs-native/src/core.rs:95,1
    - Dst: Err
      Src: /src/opendal/core/services/hdfs-native/src/core.rs:102,1
    - Dst: parse_hdfs_error
      Src: /src/opendal/core/services/hdfs-native/src/core.rs:102,1
    - Dst: OpStat::append
      Src: /src/opendal/core/services/hdfs-native/src/core.rs:107,1
    - Dst: append
      Src: /src/opendal/core/services/hdfs-native/src/core.rs:108,1
    - Dst: map_err
      Src: /src/opendal/core/services/hdfs-native/src/core.rs:108,1
    - Dst: create
      Src: /src/opendal/core/services/hdfs-native/src/core.rs:114,1
    - Dst: WriteOptions::default
      Src: /src/opendal/core/services/hdfs-native/src/core.rs:115,1
    - Dst: Self::overwrite
      Src: /src/opendal/core/services/hdfs-native/src/core.rs:115,1
    - Dst: map_err
      Src: /src/opendal/core/services/hdfs-native/src/core.rs:114,1
    - Dst: create
      Src: /src/opendal/core/services/hdfs-native/src/core.rs:121,1
    - Dst: WriteOptions::default
      Src: /src/opendal/core/services/hdfs-native/src/core.rs:122,1
    - Dst: map_err
      Src: /src/opendal/core/services/hdfs-native/src/core.rs:121,1
    - Dst: Ok
      Src: /src/opendal/core/services/hdfs-native/src/core.rs:127,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 57
    argCount: 2
    argNames:
    - path
    - args
    argTypes:
    - '&str'
    - '&OpWrite'
    constantsTouched: []
    func_position:
      end: 128
      start: 87
    functionDepth: 34
    functionLinenumber: 87
    functionLinenumberEnd: 128
    functionName: HdfsNativeCore::hdfs_write
    functionSourceFile: /src/opendal/core/services/hdfs-native/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - Ok
    - parse_hdfs_error
    - create
    - build_rooted_abs_path
    - get_file_info
    - Err
    - OpStat::append
    - append
    - Self::overwrite
    - WriteOptions::default
    linkageType: ''
    returnType: Result
    signature: 'pub async fn hdfs_write(&self,path: &str,args: &OpWrite,) -> Result<(hdfs_native::file::FileWriter,
      u64)>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_rooted_abs_path
      Src: /src/opendal/core/services/hdfs-native/src/core.rs:131,1
    - Dst: delete
      Src: /src/opendal/core/services/hdfs-native/src/core.rs:133,1
    - Dst: map_err
      Src: /src/opendal/core/services/hdfs-native/src/core.rs:133,1
    - Dst: Ok
      Src: /src/opendal/core/services/hdfs-native/src/core.rs:138,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 1
    argNames:
    - path
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 139
      start: 130
    functionDepth: 32
    functionLinenumber: 130
    functionLinenumberEnd: 139
    functionName: HdfsNativeCore::hdfs_delete
    functionSourceFile: /src/opendal/core/services/hdfs-native/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - build_rooted_abs_path
    - Ok
    - delete
    linkageType: ''
    returnType: Result
    signature: 'pub async fn hdfs_delete(&self, path: &str) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_rooted_abs_path
      Src: /src/opendal/core/services/hdfs-native/src/core.rs:142,1
    - Dst: get_file_info
      Src: /src/opendal/core/services/hdfs-native/src/core.rs:144,1
    - Dst: Ok
      Src: /src/opendal/core/services/hdfs-native/src/core.rs:148,1
    - Dst: Err
      Src: /src/opendal/core/services/hdfs-native/src/core.rs:149,1
    - Dst: parse_hdfs_error
      Src: /src/opendal/core/services/hdfs-native/src/core.rs:149,1
    - Dst: ends_with
      Src: /src/opendal/core/services/hdfs-native/src/core.rs:155,1
    - Dst: Some
      Src: /src/opendal/core/services/hdfs-native/src/core.rs:156,1
    - Dst: to_string
      Src: /src/opendal/core/services/hdfs-native/src/core.rs:156,1
    - Dst: Some
      Src: /src/opendal/core/services/hdfs-native/src/core.rs:158,1
    - Dst: to_string
      Src: /src/opendal/core/services/hdfs-native/src/core.rs:158,1
    - Dst: Ok
      Src: /src/opendal/core/services/hdfs-native/src/core.rs:164,1
    - Dst: Some
      Src: /src/opendal/core/services/hdfs-native/src/core.rs:164,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 33
    argCount: 1
    argNames:
    - path
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 165
      start: 141
    functionDepth: 34
    functionLinenumber: 141
    functionLinenumberEnd: 165
    functionName: HdfsNativeCore::hdfs_list
    functionSourceFile: /src/opendal/core/services/hdfs-native/src/core.rs
    functionUses: 0
    functionsReached:
    - to_string
    - Ok
    - parse_hdfs_error
    - ends_with
    - build_rooted_abs_path
    - get_file_info
    - Err
    - Some
    linkageType: ''
    returnType: Result
    signature: 'pub async fn hdfs_list(&self, path: &str) -> Result<Option<(String,
      Option<String>)>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_rooted_abs_path
      Src: /src/opendal/core/services/hdfs-native/src/core.rs:168,1
    - Dst: build_rooted_abs_path
      Src: /src/opendal/core/services/hdfs-native/src/core.rs:169,1
    - Dst: get_file_info
      Src: /src/opendal/core/services/hdfs-native/src/core.rs:171,1
    - Dst: Err
      Src: /src/opendal/core/services/hdfs-native/src/core.rs:174,1
    - Dst: Error::new
      Src: /src/opendal/core/services/hdfs-native/src/core.rs:174,1
    - Dst: Self::with_context
      Src: /src/opendal/core/services/hdfs-native/src/core.rs:174,1
    - Dst: delete
      Src: /src/opendal/core/services/hdfs-native/src/core.rs:177,1
    - Dst: map_err
      Src: /src/opendal/core/services/hdfs-native/src/core.rs:177,1
    - Dst: create
      Src: /src/opendal/core/services/hdfs-native/src/core.rs:185,1
    - Dst: WriteOptions::default
      Src: /src/opendal/core/services/hdfs-native/src/core.rs:186,1
    - Dst: Self::create_parent
      Src: /src/opendal/core/services/hdfs-native/src/core.rs:186,1
    - Dst: map_err
      Src: /src/opendal/core/services/hdfs-native/src/core.rs:185,1
    - Dst: Err
      Src: /src/opendal/core/services/hdfs-native/src/core.rs:190,1
    - Dst: parse_hdfs_error
      Src: /src/opendal/core/services/hdfs-native/src/core.rs:190,1
    - Dst: rename
      Src: /src/opendal/core/services/hdfs-native/src/core.rs:194,1
    - Dst: map_err
      Src: /src/opendal/core/services/hdfs-native/src/core.rs:194,1
    - Dst: Ok
      Src: /src/opendal/core/services/hdfs-native/src/core.rs:199,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 61
    argCount: 2
    argNames:
    - from
    - to
    argTypes:
    - '&str'
    - '&str'
    constantsTouched: []
    func_position:
      end: 200
      start: 167
    functionDepth: 34
    functionLinenumber: 167
    functionLinenumberEnd: 200
    functionName: HdfsNativeCore::hdfs_rename
    functionSourceFile: /src/opendal/core/services/hdfs-native/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - Ok
    - delete
    - parse_hdfs_error
    - create
    - build_rooted_abs_path
    - get_file_info
    - Error::new
    - Err
    - Self::create_parent
    - rename
    - Self::with_context
    - WriteOptions::default
    linkageType: ''
    returnType: Result
    signature: 'pub async fn hdfs_rename(&self, from: &str, to: &str) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Error::to_string
      Src: /src/opendal/core/services/hdfs-native/src/core.rs:211,1
    - Dst: Error::clone
      Src: /src/opendal/core/services/hdfs-native/src/core.rs:212,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/hdfs-native/src/core.rs:216,1
    - Dst: Error::to_string
      Src: /src/opendal/core/services/hdfs-native/src/core.rs:218,1
    - Dst: Error::clone
      Src: /src/opendal/core/services/hdfs-native/src/core.rs:219,1
    - Dst: Error::clone
      Src: /src/opendal/core/services/hdfs-native/src/core.rs:220,1
    - Dst: contains
      Src: /src/opendal/core/services/hdfs-native/src/core.rs:222,1
    - Dst: clone
      Src: /src/opendal/core/services/hdfs-native/src/core.rs:223,1
    - Dst: clone
      Src: /src/opendal/core/services/hdfs-native/src/core.rs:225,1
    - Dst: Error::clone
      Src: /src/opendal/core/services/hdfs-native/src/core.rs:228,1
    - Dst: Error::clone
      Src: /src/opendal/core/services/hdfs-native/src/core.rs:229,1
    - Dst: Error::clone
      Src: /src/opendal/core/services/hdfs-native/src/core.rs:230,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/hdfs-native/src/core.rs:234,1
    - Dst: Error::new
      Src: /src/opendal/core/services/hdfs-native/src/core.rs:238,1
    - Dst: Self::set_source
      Src: /src/opendal/core/services/hdfs-native/src/core.rs:238,1
    - Dst: Error::set_temporary
      Src: /src/opendal/core/services/hdfs-native/src/core.rs:241,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 51
    argCount: 1
    argNames:
    - hdfs_error
    argTypes:
    - HdfsError
    constantsTouched: []
    func_position:
      end: 245
      start: 209
    functionDepth: 36
    functionLinenumber: 209
    functionLinenumberEnd: 245
    functionName: error::parse_hdfs_error
    functionSourceFile: /src/opendal/core/services/hdfs-native/src/core.rs
    functionUses: 0
    functionsReached:
    - Error::set_temporary
    - Error::to_string
    - clone
    - Error::new
    - '&str::to_string'
    - contains
    - Self::set_source
    - Error::clone
    linkageType: ''
    returnType: Error
    signature: 'pub fn parse_hdfs_error(hdfs_error: HdfsError) -> Error'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - f
    - initial_size
    argTypes:
    - FileWriter
    - u64
    constantsTouched: []
    func_position:
      end: 34
      start: 29
    functionDepth: 0
    functionLinenumber: 29
    functionLinenumberEnd: 34
    functionName: HdfsNativeWriter::new
    functionSourceFile: /src/opendal/core/services/hdfs-native/src/writer.rs
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(f: FileWriter, initial_size: u64) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: io::Result::len
      Src: /src/opendal/core/services/hdfs-native/src/writer.rs:39,1
    - Dst: io::Result::by_ref
      Src: /src/opendal/core/services/hdfs-native/src/writer.rs:41,1
    - Dst: write_bytes
      Src: /src/opendal/core/services/hdfs-native/src/writer.rs:42,1
    - Dst: map_err
      Src: /src/opendal/core/services/hdfs-native/src/writer.rs:42,1
    - Dst: Ok
      Src: /src/opendal/core/services/hdfs-native/src/writer.rs:46,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 19
    argCount: 1
    argNames:
    - buf
    argTypes:
    - Buffer
    constantsTouched: []
    func_position:
      end: 47
      start: 38
    functionDepth: 4
    functionLinenumber: 38
    functionLinenumberEnd: 47
    functionName: HdfsNativeWriter::write
    functionSourceFile: /src/opendal/core/services/hdfs-native/src/writer.rs
    functionUses: 0
    functionsReached:
    - map_err
    - Ok
    - io::Result::len
    - io::Result::by_ref
    - write_bytes
    linkageType: ''
    returnType: Result
    signature: 'async fn write(&mut self, mut buf: Buffer) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: close
      Src: /src/opendal/core/services/hdfs-native/src/writer.rs:50,1
    - Dst: map_err
      Src: /src/opendal/core/services/hdfs-native/src/writer.rs:50,1
    - Dst: Ok
      Src: /src/opendal/core/services/hdfs-native/src/writer.rs:52,1
    - Dst: Metadata::default
      Src: /src/opendal/core/services/hdfs-native/src/writer.rs:52,1
    - Dst: Self::with_content_length
      Src: /src/opendal/core/services/hdfs-native/src/writer.rs:52,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 53
      start: 49
    functionDepth: 3
    functionLinenumber: 49
    functionLinenumberEnd: 53
    functionName: HdfsNativeWriter::close
    functionSourceFile: /src/opendal/core/services/hdfs-native/src/writer.rs
    functionUses: 0
    functionsReached:
    - map_err
    - Metadata::default
    - Ok
    - close
    - Self::with_content_length
    linkageType: ''
    returnType: Result
    signature: async fn close(&mut self) -> Result<Metadata>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/core/services/hdfs-native/src/writer.rs:56,1
    - Dst: Error::new
      Src: /src/opendal/core/services/hdfs-native/src/writer.rs:56,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 60
      start: 55
    functionDepth: 36
    functionLinenumber: 55
    functionLinenumberEnd: 60
    functionName: HdfsNativeWriter::abort
    functionSourceFile: /src/opendal/core/services/hdfs-native/src/writer.rs
    functionUses: 0
    functionsReached:
    - Error::new
    - Err
    linkageType: ''
    returnType: Result
    signature: async fn abort(&mut self) -> Result<()>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: register::<HdfsNative>
      Src: /src/opendal/core/services/hdfs-native/src/lib.rs:23,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - registry
    argTypes:
    - '&opendal_core::OperatorRegistry'
    constantsTouched: []
    func_position:
      end: 24
      start: 22
    functionDepth: 0
    functionLinenumber: 22
    functionLinenumberEnd: 24
    functionName: register_hdfs_native_service
    functionSourceFile: /src/opendal/core/services/hdfs-native/src/lib.rs
    functionUses: 1
    functionsReached:
    - register::<HdfsNative>
    linkageType: ''
    returnType: void
    signature: 'pub fn register_hdfs_native_service(registry: &opendal_core::OperatorRegistry)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::is_empty
      Src: /src/opendal/core/services/hdfs-native/src/backend.rs:48,1
    - Dst: Some
      Src: /src/opendal/core/services/hdfs-native/src/backend.rs:51,1
    - Dst: Result::to_string
      Src: /src/opendal/core/services/hdfs-native/src/backend.rs:51,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - root
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 55
      start: 47
    functionDepth: 4
    functionLinenumber: 47
    functionLinenumberEnd: 55
    functionName: HdfsNativeBuilder::root
    functionSourceFile: /src/opendal/core/services/hdfs-native/src/backend.rs
    functionUses: 0
    functionsReached:
    - Result::is_empty
    - Result::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn root(mut self, root: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self::is_empty
      Src: /src/opendal/core/services/hdfs-native/src/backend.rs:65,1
    - Dst: Some
      Src: /src/opendal/core/services/hdfs-native/src/backend.rs:67,1
    - Dst: Self::trim_end_matches
      Src: /src/opendal/core/services/hdfs-native/src/backend.rs:67,1
    - Dst: to_string
      Src: /src/opendal/core/services/hdfs-native/src/backend.rs:67,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 1
    argNames:
    - name_node
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 71
      start: 64
    functionDepth: 4
    functionLinenumber: 64
    functionLinenumberEnd: 71
    functionName: HdfsNativeBuilder::name_node
    functionSourceFile: /src/opendal/core/services/hdfs-native/src/backend.rs
    functionUses: 0
    functionsReached:
    - Self::is_empty
    - to_string
    - Self::trim_end_matches
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn name_node(mut self, name_node: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 1
    argNames:
    - _enable_append
    argTypes:
    - bool
    constantsTouched: []
    func_position:
      end: 80
      start: 78
    functionDepth: 0
    functionLinenumber: 78
    functionLinenumberEnd: 80
    functionName: HdfsNativeBuilder::enable_append
    functionSourceFile: /src/opendal/core/services/hdfs-native/src/backend.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: 'pub fn enable_append(self, _enable_append: bool) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Some
      Src: /src/opendal/core/services/hdfs-native/src/backend.rs:86,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - options
    argTypes:
    - HashMap<String, String>
    constantsTouched: []
    func_position:
      end: 88
      start: 85
    functionDepth: 0
    functionLinenumber: 85
    functionLinenumberEnd: 88
    functionName: HdfsNativeBuilder::options
    functionSourceFile: /src/opendal/core/services/hdfs-native/src/backend.rs
    functionUses: 0
    functionsReached:
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn options(mut self, options: HashMap<String, String>) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/core/services/hdfs-native/src/backend.rs:100,1
    - Dst: Error::new
      Src: /src/opendal/core/services/hdfs-native/src/backend.rs:100,1
    - Dst: Self::with_context
      Src: /src/opendal/core/services/hdfs-native/src/backend.rs:100,1
    - Dst: normalize_root
      Src: /src/opendal/core/services/hdfs-native/src/backend.rs:105,1
    - Dst: unwrap_or_default
      Src: /src/opendal/core/services/hdfs-native/src/backend.rs:105,1
    - Dst: super::config::init_hdfs_config
      Src: /src/opendal/core/services/hdfs-native/src/backend.rs:108,1
    - Dst: HashMap::extend
      Src: /src/opendal/core/services/hdfs-native/src/backend.rs:110,1
    - Dst: Result::iter
      Src: /src/opendal/core/services/hdfs-native/src/backend.rs:110,1
    - Dst: map
      Src: /src/opendal/core/services/hdfs-native/src/backend.rs:110,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/hdfs-native/src/backend.rs:110,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/hdfs-native/src/backend.rs:110,1
    - Dst: hdfs_native::ClientBuilder::new
      Src: /src/opendal/core/services/hdfs-native/src/backend.rs:113,1
    - Dst: Self::with_url
      Src: /src/opendal/core/services/hdfs-native/src/backend.rs:113,1
    - Dst: with_config
      Src: /src/opendal/core/services/hdfs-native/src/backend.rs:113,1
    - Dst: build
      Src: /src/opendal/core/services/hdfs-native/src/backend.rs:113,1
    - Dst: map_err
      Src: /src/opendal/core/services/hdfs-native/src/backend.rs:113,1
    - Dst: Ok
      Src: /src/opendal/core/services/hdfs-native/src/backend.rs:120,1
    - Dst: Arc::new
      Src: /src/opendal/core/services/hdfs-native/src/backend.rs:121,1
    - Dst: ServiceInfo::new
      Src: /src/opendal/core/services/hdfs-native/src/backend.rs:122,1
    - Dst: Default::default
      Src: /src/opendal/core/services/hdfs-native/src/backend.rs:140,1
    - Dst: Arc::new
      Src: /src/opendal/core/services/hdfs-native/src/backend.rs:143,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 56
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 146
      start: 94
    functionDepth: 36
    functionLinenumber: 94
    functionLinenumberEnd: 146
    functionName: HdfsNativeBuilder::build
    functionSourceFile: /src/opendal/core/services/hdfs-native/src/backend.rs
    functionUses: 0
    functionsReached:
    - Arc::new
    - Default::default
    - map
    - Self::with_context
    - Self::with_url
    - Result::clone
    - map_err
    - ServiceInfo::new
    - hdfs_native::ClientBuilder::new
    - with_config
    - Ok
    - normalize_root
    - Result::iter
    - super::config::init_hdfs_config
    - HashMap::extend
    - unwrap_or_default
    - build
    - Error::new
    - Err
    linkageType: ''
    returnType: Result
    signature: fn build(self) -> Result<impl Service>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: clone
      Src: /src/opendal/core/services/hdfs-native/src/backend.rs:171,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 172
      start: 170
    functionDepth: 2
    functionLinenumber: 170
    functionLinenumberEnd: 172
    functionName: HdfsNativeBackend::info
    functionSourceFile: /src/opendal/core/services/hdfs-native/src/backend.rs
    functionUses: 0
    functionsReached:
    - clone
    linkageType: ''
    returnType: ServiceInfo
    signature: fn info(&self) -> ServiceInfo
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 176
      start: 174
    functionDepth: 0
    functionLinenumber: 174
    functionLinenumberEnd: 176
    functionName: HdfsNativeBackend::capability
    functionSourceFile: /src/opendal/core/services/hdfs-native/src/backend.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Capability
    signature: fn capability(&self) -> Capability
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: hdfs_create_dir
      Src: /src/opendal/core/services/hdfs-native/src/backend.rs:184,1
    - Dst: Ok
      Src: /src/opendal/core/services/hdfs-native/src/backend.rs:185,1
    - Dst: RpCreateDir::default
      Src: /src/opendal/core/services/hdfs-native/src/backend.rs:185,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 3
    argNames:
    - _ctx
    - path
    - _args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpCreateDir
    constantsTouched: []
    func_position:
      end: 186
      start: 178
    functionDepth: 38
    functionLinenumber: 178
    functionLinenumberEnd: 186
    functionName: HdfsNativeBackend::create_dir
    functionSourceFile: /src/opendal/core/services/hdfs-native/src/backend.rs
    functionUses: 0
    functionsReached:
    - RpCreateDir::default
    - hdfs_create_dir
    - Ok
    linkageType: ''
    returnType: Result
    signature: 'async fn create_dir(&self,_ctx: &OperationContext,path: &str,_args:
      OpCreateDir,) -> Result<RpCreateDir>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: hdfs_stat
      Src: /src/opendal/core/services/hdfs-native/src/backend.rs:189,1
    - Dst: Ok
      Src: /src/opendal/core/services/hdfs-native/src/backend.rs:190,1
    - Dst: RpStat::new
      Src: /src/opendal/core/services/hdfs-native/src/backend.rs:190,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 3
    argNames:
    - _ctx
    - path
    - _args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpStat
    constantsTouched: []
    func_position:
      end: 191
      start: 188
    functionDepth: 35
    functionLinenumber: 188
    functionLinenumberEnd: 191
    functionName: HdfsNativeBackend::stat
    functionSourceFile: /src/opendal/core/services/hdfs-native/src/backend.rs
    functionUses: 0
    functionsReached:
    - hdfs_stat
    - Ok
    - RpStat::new
    linkageType: ''
    returnType: Result
    signature: 'async fn stat(&self, _ctx: &OperationContext, path: &str, _args: OpStat)
      -> Result<RpStat>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/core/services/hdfs-native/src/backend.rs:193,1
    - Dst: oio::PositionReader::new
      Src: /src/opendal/core/services/hdfs-native/src/backend.rs:193,1
    - Dst: HdfsNativeReader::new
      Src: /src/opendal/core/services/hdfs-native/src/backend.rs:193,1
    - Dst: clone
      Src: /src/opendal/core/services/hdfs-native/src/backend.rs:194,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 3
    argNames:
    - _ctx
    - path
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpRead
    constantsTouched: []
    func_position:
      end: 197
      start: 192
    functionDepth: 3
    functionLinenumber: 192
    functionLinenumberEnd: 197
    functionName: HdfsNativeBackend::read
    functionSourceFile: /src/opendal/core/services/hdfs-native/src/backend.rs
    functionUses: 0
    functionsReached:
    - clone
    - HdfsNativeReader::new
    - oio::PositionReader::new
    - Ok
    linkageType: ''
    returnType: Result
    signature: 'fn read(&self, _ctx: &OperationContext, path: &str, _: OpRead) ->
      Result<Self::Reader>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/core/services/hdfs-native/src/backend.rs:200,1
    - Dst: HdfsNativeLazyWriter::new
      Src: /src/opendal/core/services/hdfs-native/src/backend.rs:200,1
    - Dst: clone
      Src: /src/opendal/core/services/hdfs-native/src/backend.rs:200,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - _ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpWrite
    constantsTouched: []
    func_position:
      end: 201
      start: 199
    functionDepth: 3
    functionLinenumber: 199
    functionLinenumberEnd: 201
    functionName: HdfsNativeBackend::write
    functionSourceFile: /src/opendal/core/services/hdfs-native/src/backend.rs
    functionUses: 0
    functionsReached:
    - HdfsNativeLazyWriter::new
    - clone
    - Ok
    linkageType: ''
    returnType: Result
    signature: 'fn write(&self, _ctx: &OperationContext, path: &str, args: OpWrite)
      -> Result<Self::Writer>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/core/services/hdfs-native/src/backend.rs:205,1
    - Dst: oio::OneShotDeleter::new
      Src: /src/opendal/core/services/hdfs-native/src/backend.rs:205,1
    - Dst: HdfsNativeDeleter::new
      Src: /src/opendal/core/services/hdfs-native/src/backend.rs:205,1
    - Dst: Arc::clone
      Src: /src/opendal/core/services/hdfs-native/src/backend.rs:206,1
    - Dst: Ok
      Src: /src/opendal/core/services/hdfs-native/src/backend.rs:210,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - _ctx
    argTypes:
    - '&OperationContext'
    constantsTouched: []
    func_position:
      end: 211
      start: 203
    functionDepth: 2
    functionLinenumber: 203
    functionLinenumberEnd: 211
    functionName: HdfsNativeBackend::delete
    functionSourceFile: /src/opendal/core/services/hdfs-native/src/backend.rs
    functionUses: 0
    functionsReached:
    - oio::OneShotDeleter::new
    - Arc::clone
    - HdfsNativeDeleter::new
    - Ok
    linkageType: ''
    returnType: Result
    signature: 'fn delete(&self, _ctx: &OperationContext) -> Result<Self::Deleter>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/core/services/hdfs-native/src/backend.rs:214,1
    - Dst: HdfsNativeLazyLister::new
      Src: /src/opendal/core/services/hdfs-native/src/backend.rs:214,1
    - Dst: clone
      Src: /src/opendal/core/services/hdfs-native/src/backend.rs:214,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - _ctx
    - path
    - _args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpList
    constantsTouched: []
    func_position:
      end: 215
      start: 213
    functionDepth: 3
    functionLinenumber: 213
    functionLinenumberEnd: 215
    functionName: HdfsNativeBackend::list
    functionSourceFile: /src/opendal/core/services/hdfs-native/src/backend.rs
    functionUses: 0
    functionsReached:
    - clone
    - HdfsNativeLazyLister::new
    - Ok
    linkageType: ''
    returnType: Result
    signature: 'fn list(&self, _ctx: &OperationContext, path: &str, _args: OpList)
      -> Result<Self::Lister>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/core/services/hdfs-native/src/backend.rs:225,1
    - Dst: Error::new
      Src: /src/opendal/core/services/hdfs-native/src/backend.rs:225,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 5
    argNames:
    - _ctx
    - _from
    - _to
    - _args
    - _opts
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    - OpCopy
    - OpCopier
    constantsTouched: []
    func_position:
      end: 229
      start: 217
    functionDepth: 36
    functionLinenumber: 217
    functionLinenumberEnd: 229
    functionName: HdfsNativeBackend::copy
    functionSourceFile: /src/opendal/core/services/hdfs-native/src/backend.rs
    functionUses: 0
    functionsReached:
    - Error::new
    - Err
    linkageType: ''
    returnType: Result
    signature: 'fn copy(&self,_ctx: &OperationContext,_from: &str,_to: &str,_args:
      OpCopy,_opts: OpCopier,) -> Result<Self::Copier>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: hdfs_rename
      Src: /src/opendal/core/services/hdfs-native/src/backend.rs:238,1
    - Dst: Ok
      Src: /src/opendal/core/services/hdfs-native/src/backend.rs:239,1
    - Dst: RpRename::default
      Src: /src/opendal/core/services/hdfs-native/src/backend.rs:239,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 4
    argNames:
    - _ctx
    - from
    - to
    - _args
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    - OpRename
    constantsTouched: []
    func_position:
      end: 240
      start: 231
    functionDepth: 35
    functionLinenumber: 231
    functionLinenumberEnd: 240
    functionName: HdfsNativeBackend::rename
    functionSourceFile: /src/opendal/core/services/hdfs-native/src/backend.rs
    functionUses: 0
    functionsReached:
    - RpRename::default
    - Ok
    - hdfs_rename
    linkageType: ''
    returnType: Result
    signature: 'async fn rename(&self,_ctx: &OperationContext,from: &str,to: &str,_args:
      OpRename,) -> Result<RpRename>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/core/services/hdfs-native/src/backend.rs:248,1
    - Dst: Error::new
      Src: /src/opendal/core/services/hdfs-native/src/backend.rs:248,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - _ctx
    - _path
    - _args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpPresign
    constantsTouched: []
    func_position:
      end: 252
      start: 242
    functionDepth: 36
    functionLinenumber: 242
    functionLinenumberEnd: 252
    functionName: HdfsNativeBackend::presign
    functionSourceFile: /src/opendal/core/services/hdfs-native/src/backend.rs
    functionUses: 0
    functionsReached:
    - Error::new
    - Err
    linkageType: ''
    returnType: Result
    signature: 'async fn presign(&self,_ctx: &OperationContext,_path: &str,_args:
      OpPresign,) -> Result<RpPresign>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::debug_struct
      Src: /src/opendal/core/services/memcached/src/config.rs:56,1
    - Dst: field
      Src: /src/opendal/core/services/memcached/src/config.rs:56,1
    - Dst: field
      Src: /src/opendal/core/services/memcached/src/config.rs:56,1
    - Dst: field
      Src: /src/opendal/core/services/memcached/src/config.rs:56,1
    - Dst: field
      Src: /src/opendal/core/services/memcached/src/config.rs:56,1
    - Dst: finish_non_exhaustive
      Src: /src/opendal/core/services/memcached/src/config.rs:56,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 20
    argCount: 1
    argNames:
    - f
    argTypes:
    - '&mut std::fmt::Formatter<''_>'
    constantsTouched: []
    func_position:
      end: 62
      start: 55
    functionDepth: 5
    functionLinenumber: 55
    functionLinenumberEnd: 62
    functionName: MemcachedConfig::fmt
    functionSourceFile: /src/opendal/core/services/memcached/src/config.rs
    functionUses: 0
    functionsReached:
    - field
    - Result::debug_struct
    - finish_non_exhaustive
    linkageType: ''
    returnType: std::fmt::Result
    signature: 'fn fmt(&self, f: &mut std::fmt::Formatter<''_>) -> std::fmt::Result'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::options
      Src: /src/opendal/core/services/memcached/src/config.rs:69,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/memcached/src/config.rs:69,1
    - Dst: Result::authority
      Src: /src/opendal/core/services/memcached/src/config.rs:70,1
    - Dst: Result::insert
      Src: /src/opendal/core/services/memcached/src/config.rs:71,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/memcached/src/config.rs:71,1
    - Dst: Result::root
      Src: /src/opendal/core/services/memcached/src/config.rs:74,1
    - Dst: Result::is_empty
      Src: /src/opendal/core/services/memcached/src/config.rs:75,1
    - Dst: Result::insert
      Src: /src/opendal/core/services/memcached/src/config.rs:77,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/memcached/src/config.rs:77,1
    - Dst: Result::to_string
      Src: /src/opendal/core/services/memcached/src/config.rs:77,1
    - Dst: Self::from_iter
      Src: /src/opendal/core/services/memcached/src/config.rs:80,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 28
    argCount: 1
    argNames:
    - uri
    argTypes:
    - '&OperatorUri'
    constantsTouched: []
    func_position:
      end: 81
      start: 68
    functionDepth: 35
    functionLinenumber: 68
    functionLinenumberEnd: 81
    functionName: MemcachedConfig::from_uri
    functionSourceFile: /src/opendal/core/services/memcached/src/config.rs
    functionUses: 0
    functionsReached:
    - Result::clone
    - Self::from_iter
    - Result::to_string
    - Result::insert
    - Result::is_empty
    - '&str::to_string'
    - Result::root
    - Result::authority
    - Result::options
    linkageType: ''
    returnType: Result
    signature: 'fn from_uri(uri: &OperatorUri) -> Result<Self>'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 85
      start: 83
    functionDepth: 0
    functionLinenumber: 83
    functionLinenumberEnd: 85
    functionName: MemcachedConfig::into_builder
    functionSourceFile: /src/opendal/core/services/memcached/src/config.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Self::Builder
    signature: fn into_builder(self) -> Self::Builder
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - core
    - root
    argTypes:
    - Arc<MemcachedCore>
    - String
    constantsTouched: []
    func_position:
      end: 33
      start: 31
    functionDepth: 0
    functionLinenumber: 31
    functionLinenumberEnd: 33
    functionName: MemcachedDeleter::new
    functionSourceFile: /src/opendal/core/services/memcached/src/deleter.rs
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(core: Arc<MemcachedCore>, root: String) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/memcached/src/deleter.rs:38,1
    - Dst: delete
      Src: /src/opendal/core/services/memcached/src/deleter.rs:39,1
    - Dst: Ok
      Src: /src/opendal/core/services/memcached/src/deleter.rs:40,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 2
    argNames:
    - path
    argTypes:
    - String
    - OpDelete
    constantsTouched: []
    func_position:
      end: 41
      start: 37
    functionDepth: 32
    functionLinenumber: 37
    functionLinenumberEnd: 41
    functionName: MemcachedDeleter::delete_once
    functionSourceFile: /src/opendal/core/services/memcached/src/deleter.rs
    functionUses: 0
    functionsReached:
    - Ok
    - build_abs_path
    - delete
    linkageType: ''
    returnType: Result
    signature: 'async fn delete_once(&self, path: String, _: OpDelete) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: to_string
      Src: /src/opendal/core/services/memcached/src/reader.rs:32,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - backend
    - path
    argTypes:
    - MemcachedBackend
    - '&str'
    - OpRead
    constantsTouched: []
    func_position:
      end: 34
      start: 29
    functionDepth: 2
    functionLinenumber: 29
    functionLinenumberEnd: 34
    functionName: MemcachedReader::new
    functionSourceFile: /src/opendal/core/services/memcached/src/reader.rs
    functionUses: 1
    functionsReached:
    - to_string
    linkageType: ''
    returnType: Self
    signature: 'pub(super) fn new(backend: MemcachedBackend, path: &str, _: OpRead)
      -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: as_str
      Src: /src/opendal/core/services/memcached/src/reader.rs:40,1
    - Dst: build_abs_path
      Src: /src/opendal/core/services/memcached/src/reader.rs:41,1
    - Dst: get
      Src: /src/opendal/core/services/memcached/src/reader.rs:42,1
    - Dst: Err
      Src: /src/opendal/core/services/memcached/src/reader.rs:44,1
    - Dst: Error::new
      Src: /src/opendal/core/services/memcached/src/reader.rs:44,1
    - Dst: Result::slice
      Src: /src/opendal/core/services/memcached/src/reader.rs:46,1
    - Dst: (Vec::to_content_range
      Src: /src/opendal/core/services/memcached/src/reader.rs:46,1
    - Dst: Result::len
      Src: /src/opendal/core/services/memcached/src/reader.rs:46,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/memcached/src/reader.rs:47,1
    - Dst: Self::with_content_length
      Src: /src/opendal/core/services/memcached/src/reader.rs:47,1
    - Dst: Result::len
      Src: /src/opendal/core/services/memcached/src/reader.rs:47,1
    - Dst: Ok
      Src: /src/opendal/core/services/memcached/src/reader.rs:48,1
    - Dst: RpRead::new
      Src: /src/opendal/core/services/memcached/src/reader.rs:49,1
    - Dst: Box::new
      Src: /src/opendal/core/services/memcached/src/reader.rs:50,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 36
    argCount: 1
    argNames:
    - range
    argTypes:
    - BytesRange
    constantsTouched: []
    func_position:
      end: 52
      start: 38
    functionDepth: 36
    functionLinenumber: 38
    functionLinenumberEnd: 52
    functionName: MemcachedReader::open
    functionSourceFile: /src/opendal/core/services/memcached/src/reader.rs
    functionUses: 0
    functionsReached:
    - Metadata::new
    - get
    - Ok
    - Box::new
    - Self::with_content_length
    - build_abs_path
    - Error::new
    - Err
    - as_str
    - Result::slice
    - (Vec::to_content_range
    - Result::len
    - RpRead::new
    linkageType: ''
    returnType: Result
    signature: 'async fn open(&self, range: BytesRange) -> Result<(RpRead, Box<dyn
      oio::ReadStreamDyn>)>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: TcpStream::connect
      Src: /src/opendal/core/services/memcached/src/core.rs:44,1
    - Dst: Ok
      Src: /src/opendal/core/services/memcached/src/core.rs:45,1
    - Dst: SocketStream::Tcp
      Src: /src/opendal/core/services/memcached/src/core.rs:45,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - addr_str
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 46
      start: 43
    functionDepth: 3
    functionLinenumber: 43
    functionLinenumberEnd: 46
    functionName: SocketStream::connect_tcp
    functionSourceFile: /src/opendal/core/services/memcached/src/core.rs
    functionUses: 2
    functionsReached:
    - SocketStream::Tcp
    - TcpStream::connect
    - Ok
    linkageType: ''
    returnType: io::Result
    signature: 'pub async fn connect_tcp(addr_str: &str) -> io::Result<Self>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: UnixStream::connect
      Src: /src/opendal/core/services/memcached/src/core.rs:50,1
    - Dst: Ok
      Src: /src/opendal/core/services/memcached/src/core.rs:51,1
    - Dst: SocketStream::Unix
      Src: /src/opendal/core/services/memcached/src/core.rs:51,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - path
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 52
      start: 49
    functionDepth: 3
    functionLinenumber: 49
    functionLinenumberEnd: 52
    functionName: SocketStream::connect_unix
    functionSourceFile: /src/opendal/core/services/memcached/src/core.rs
    functionUses: 2
    functionsReached:
    - SocketStream::Unix
    - Ok
    - UnixStream::connect
    linkageType: ''
    returnType: io::Result
    signature: 'pub async fn connect_unix(path: &str) -> io::Result<Self>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: SocketStream::get_mut
      Src: /src/opendal/core/services/memcached/src/core.rs:61,1
    - Dst: Pin::new
      Src: /src/opendal/core/services/memcached/src/core.rs:62,1
    - Dst: Self::poll_read
      Src: /src/opendal/core/services/memcached/src/core.rs:62,1
    - Dst: Pin::new
      Src: /src/opendal/core/services/memcached/src/core.rs:64,1
    - Dst: Self::poll_read
      Src: /src/opendal/core/services/memcached/src/core.rs:64,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 3
    argNames:
    - cx
    - buf
    argTypes:
    - Pin<&mut Self>
    - '&mut Context<''_>'
    - '&mut ReadBuf<''_>'
    constantsTouched: []
    func_position:
      end: 66
      start: 56
    functionDepth: 38
    functionLinenumber: 56
    functionLinenumberEnd: 66
    functionName: SocketStream::poll_read
    functionSourceFile: /src/opendal/core/services/memcached/src/core.rs
    functionUses: 0
    functionsReached:
    - SocketStream::get_mut
    - Pin::new
    - Self::poll_read
    linkageType: ''
    returnType: Poll
    signature: 'fn poll_read(self: Pin<&mut Self>,cx: &mut Context<''_>,buf: &mut
      ReadBuf<''_>,) -> Poll<io::Result<()>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: SocketStream::get_mut
      Src: /src/opendal/core/services/memcached/src/core.rs:75,1
    - Dst: Pin::new
      Src: /src/opendal/core/services/memcached/src/core.rs:76,1
    - Dst: Self::poll_write
      Src: /src/opendal/core/services/memcached/src/core.rs:76,1
    - Dst: Pin::new
      Src: /src/opendal/core/services/memcached/src/core.rs:78,1
    - Dst: Self::poll_write
      Src: /src/opendal/core/services/memcached/src/core.rs:78,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 3
    argNames:
    - cx
    - buf
    argTypes:
    - Pin<&mut Self>
    - '&mut Context<''_>'
    - '&[u8]'
    constantsTouched: []
    func_position:
      end: 80
      start: 70
    functionDepth: 41
    functionLinenumber: 70
    functionLinenumberEnd: 80
    functionName: SocketStream::poll_write
    functionSourceFile: /src/opendal/core/services/memcached/src/core.rs
    functionUses: 0
    functionsReached:
    - SocketStream::get_mut
    - Pin::new
    - Self::poll_write
    linkageType: ''
    returnType: Poll
    signature: 'fn poll_write(self: Pin<&mut Self>,cx: &mut Context<''_>,buf: &[u8],)
      -> Poll<io::Result<usize>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: SocketStream::get_mut
      Src: /src/opendal/core/services/memcached/src/core.rs:83,1
    - Dst: Pin::new
      Src: /src/opendal/core/services/memcached/src/core.rs:84,1
    - Dst: Self::poll_flush
      Src: /src/opendal/core/services/memcached/src/core.rs:84,1
    - Dst: Pin::new
      Src: /src/opendal/core/services/memcached/src/core.rs:86,1
    - Dst: Self::poll_flush
      Src: /src/opendal/core/services/memcached/src/core.rs:86,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 2
    argNames:
    - cx
    argTypes:
    - Pin<&mut Self>
    - '&mut Context<''_>'
    constantsTouched: []
    func_position:
      end: 88
      start: 82
    functionDepth: 2
    functionLinenumber: 82
    functionLinenumberEnd: 88
    functionName: SocketStream::poll_flush
    functionSourceFile: /src/opendal/core/services/memcached/src/core.rs
    functionUses: 0
    functionsReached:
    - SocketStream::get_mut
    - Pin::new
    - Self::poll_flush
    linkageType: ''
    returnType: Poll
    signature: 'fn poll_flush(self: Pin<&mut Self>, cx: &mut Context<''_>) -> Poll<io::Result<()>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: SocketStream::get_mut
      Src: /src/opendal/core/services/memcached/src/core.rs:91,1
    - Dst: Pin::new
      Src: /src/opendal/core/services/memcached/src/core.rs:92,1
    - Dst: Self::poll_shutdown
      Src: /src/opendal/core/services/memcached/src/core.rs:92,1
    - Dst: Pin::new
      Src: /src/opendal/core/services/memcached/src/core.rs:94,1
    - Dst: Self::poll_shutdown
      Src: /src/opendal/core/services/memcached/src/core.rs:94,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 2
    argNames:
    - cx
    argTypes:
    - Pin<&mut Self>
    - '&mut Context<''_>'
    constantsTouched: []
    func_position:
      end: 96
      start: 90
    functionDepth: 2
    functionLinenumber: 90
    functionLinenumberEnd: 96
    functionName: SocketStream::poll_shutdown
    functionSourceFile: /src/opendal/core/services/memcached/src/core.rs
    functionUses: 0
    functionsReached:
    - SocketStream::get_mut
    - Pin::new
    - Self::poll_shutdown
    linkageType: ''
    returnType: Poll
    signature: 'fn poll_shutdown(self: Pin<&mut Self>, cx: &mut Context<''_>) -> Poll<io::Result<()>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 3
    argNames:
    - endpoint
    - username
    - password
    argTypes:
    - Endpoint
    - Option<String>
    - Option<String>
    constantsTouched: []
    func_position:
      end: 122
      start: 116
    functionDepth: 0
    functionLinenumber: 116
    functionLinenumberEnd: 122
    functionName: MemcacheConnectionManager::new
    functionSourceFile: /src/opendal/core/services/memcached/src/core.rs
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: 'fn new(endpoint: Endpoint, username: Option<String>, password: Option<String>)
      -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: SocketStream::connect_tcp
      Src: /src/opendal/core/services/memcached/src/core.rs:131,1
    - Dst: map_err
      Src: /src/opendal/core/services/memcached/src/core.rs:131,1
    - Dst: SocketStream::connect_unix
      Src: /src/opendal/core/services/memcached/src/core.rs:135,1
    - Dst: map_err
      Src: /src/opendal/core/services/memcached/src/core.rs:135,1
    - Dst: binary::Connection::new
      Src: /src/opendal/core/services/memcached/src/core.rs:140,1
    - Dst: as_ref
      Src: /src/opendal/core/services/memcached/src/core.rs:142,1
    - Dst: as_ref
      Src: /src/opendal/core/services/memcached/src/core.rs:142,1
    - Dst: Result::auth
      Src: /src/opendal/core/services/memcached/src/core.rs:143,1
    - Dst: Ok
      Src: /src/opendal/core/services/memcached/src/core.rs:145,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 29
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 146
      start: 129
    functionDepth: 37
    functionLinenumber: 129
    functionLinenumberEnd: 146
    functionName: MemcacheConnectionManager::create
    functionSourceFile: /src/opendal/core/services/memcached/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - SocketStream::connect_unix
    - Ok
    - binary::Connection::new
    - SocketStream::connect_tcp
    - as_ref
    - Result::auth
    linkageType: ''
    returnType: Result
    signature: async fn create(&self) -> Result<Self::Object, Self::Error>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: anyhow::Result::version
      Src: /src/opendal/core/services/memcached/src/core.rs:153,1
    - Dst: Ok
      Src: /src/opendal/core/services/memcached/src/core.rs:154,1
    - Dst: Err
      Src: /src/opendal/core/services/memcached/src/core.rs:155,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - o
    argTypes:
    - '&mut Self::Object'
    - '&ObjectStatus'
    constantsTouched: []
    func_position:
      end: 157
      start: 148
    functionDepth: 0
    functionLinenumber: 148
    functionLinenumberEnd: 157
    functionName: MemcacheConnectionManager::is_recyclable
    functionSourceFile: /src/opendal/core/services/memcached/src/core.rs
    functionUses: 0
    functionsReached:
    - anyhow::Result::version
    - Ok
    - Err
    linkageType: ''
    returnType: Result
    signature: 'async fn is_recyclable(&self,o: &mut Self::Object,_: &ObjectStatus,)
      -> Result<(), Self::Error>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: bounded::Pool::new
      Src: /src/opendal/core/services/memcached/src/core.rs:174,1
    - Dst: bounded::PoolConfig::new
      Src: /src/opendal/core/services/memcached/src/core.rs:175,1
    - Dst: Self::unwrap_or
      Src: /src/opendal/core/services/memcached/src/core.rs:175,1
    - Dst: MemcacheConnectionManager::new
      Src: /src/opendal/core/services/memcached/src/core.rs:176,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 5
    argNames:
    - endpoint
    - username
    - password
    - default_ttl
    - connection_pool_max_size
    argTypes:
    - Endpoint
    - Option<String>
    - Option<String>
    - Option<Duration>
    - Option<usize>
    constantsTouched: []
    func_position:
      end: 180
      start: 167
    functionDepth: 1
    functionLinenumber: 167
    functionLinenumberEnd: 180
    functionName: MemcachedCore::new
    functionSourceFile: /src/opendal/core/services/memcached/src/core.rs
    functionUses: 1
    functionsReached:
    - MemcacheConnectionManager::new
    - Self::unwrap_or
    - bounded::PoolConfig::new
    - bounded::Pool::new
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(endpoint: Endpoint,username: Option<String>,password: Option<String>,default_ttl:
      Option<Duration>,connection_pool_max_size: Option<usize>,) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: get
      Src: /src/opendal/core/services/memcached/src/core.rs:183,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 194
      start: 182
    functionDepth: 2
    functionLinenumber: 182
    functionLinenumberEnd: 194
    functionName: MemcachedCore::conn
    functionSourceFile: /src/opendal/core/services/memcached/src/core.rs
    functionUses: 3
    functionsReached:
    - get
    linkageType: ''
    returnType: Result
    signature: async fn conn(&self) -> Result<bounded::Object<MemcacheConnectionManager>>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: MemcachedCore::conn
      Src: /src/opendal/core/services/memcached/src/core.rs:197,1
    - Dst: Result::get
      Src: /src/opendal/core/services/memcached/src/core.rs:198,1
    - Dst: percent_encode_path
      Src: /src/opendal/core/services/memcached/src/core.rs:198,1
    - Dst: Ok
      Src: /src/opendal/core/services/memcached/src/core.rs:199,1
    - Dst: bool::map
      Src: /src/opendal/core/services/memcached/src/core.rs:199,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 1
    argNames:
    - key
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 200
      start: 196
    functionDepth: 3
    functionLinenumber: 196
    functionLinenumberEnd: 200
    functionName: MemcachedCore::get
    functionSourceFile: /src/opendal/core/services/memcached/src/core.rs
    functionUses: 0
    functionsReached:
    - Ok
    - MemcachedCore::conn
    - bool::map
    - percent_encode_path
    - Result::get
    linkageType: ''
    returnType: Result
    signature: 'pub async fn get(&self, key: &str) -> Result<Option<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: MemcachedCore::conn
      Src: /src/opendal/core/services/memcached/src/core.rs:203,1
    - Dst: Result::set
      Src: /src/opendal/core/services/memcached/src/core.rs:205,1
    - Dst: percent_encode_path
      Src: /src/opendal/core/services/memcached/src/core.rs:206,1
    - Dst: Vec::to_vec
      Src: /src/opendal/core/services/memcached/src/core.rs:207,1
    - Dst: map
      Src: /src/opendal/core/services/memcached/src/core.rs:209,1
    - Dst: Result::as_secs
      Src: /src/opendal/core/services/memcached/src/core.rs:210,1
    - Dst: unwrap_or_default
      Src: /src/opendal/core/services/memcached/src/core.rs:209,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 21
    argCount: 2
    argNames:
    - key
    - value
    argTypes:
    - '&str'
    - Buffer
    constantsTouched: []
    func_position:
      end: 214
      start: 202
    functionDepth: 34
    functionLinenumber: 202
    functionLinenumberEnd: 214
    functionName: MemcachedCore::set
    functionSourceFile: /src/opendal/core/services/memcached/src/core.rs
    functionUses: 0
    functionsReached:
    - Result::set
    - map
    - MemcachedCore::conn
    - Vec::to_vec
    - percent_encode_path
    - Result::as_secs
    - unwrap_or_default
    linkageType: ''
    returnType: Result
    signature: 'pub async fn set(&self, key: &str, value: Buffer) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: MemcachedCore::conn
      Src: /src/opendal/core/services/memcached/src/core.rs:217,1
    - Dst: Result::delete
      Src: /src/opendal/core/services/memcached/src/core.rs:219,1
    - Dst: percent_encode_path
      Src: /src/opendal/core/services/memcached/src/core.rs:219,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 1
    argNames:
    - key
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 220
      start: 216
    functionDepth: 32
    functionLinenumber: 216
    functionLinenumberEnd: 220
    functionName: MemcachedCore::delete
    functionSourceFile: /src/opendal/core/services/memcached/src/core.rs
    functionUses: 0
    functionsReached:
    - MemcachedCore::conn
    - Result::delete
    - percent_encode_path
    linkageType: ''
    returnType: Result
    signature: 'pub async fn delete(&self, key: &str) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: TcpListener::bind
      Src: /src/opendal/core/services/memcached/src/core.rs:234,1
    - Dst: local_addr
      Src: /src/opendal/core/services/memcached/src/core.rs:235,1
    - Dst: to_string
      Src: /src/opendal/core/services/memcached/src/core.rs:235,1
    - Dst: tokio::spawn
      Src: /src/opendal/core/services/memcached/src/core.rs:237,1
    - Dst: accept
      Src: /src/opendal/core/services/memcached/src/core.rs:238,1
    - Dst: Ok::<_, std::io::Error>
      Src: /src/opendal/core/services/memcached/src/core.rs:239,1
    - Dst: SocketStream::connect_tcp
      Src: /src/opendal/core/services/memcached/src/core.rs:242,1
    - Dst: unwrap
      Src: /src/opendal/core/services/memcached/src/core.rs:243,1
    - Dst: Ok
      Src: /src/opendal/core/services/memcached/src/core.rs:246,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 30
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 247
      start: 232
    functionDepth: 32
    functionLinenumber: 232
    functionLinenumberEnd: 247
    functionName: tests::connect_tcp_socket
    functionSourceFile: /src/opendal/core/services/memcached/src/core.rs
    functionUses: 0
    functionsReached:
    - to_string
    - accept
    - Ok
    - TcpListener::bind
    - unwrap
    - Ok::<_, std::io::Error>
    - SocketStream::connect_tcp
    - tokio::spawn
    - local_addr
    linkageType: ''
    returnType: std::io::Result
    signature: async fn connect_tcp_socket() -> std::io::Result<()>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: std::env::temp_dir
      Src: /src/opendal/core/services/memcached/src/core.rs:258,1
    - Dst: join
      Src: /src/opendal/core/services/memcached/src/core.rs:258,1
    - Dst: UnixListener::bind
      Src: /src/opendal/core/services/memcached/src/core.rs:266,1
    - Dst: tokio::spawn
      Src: /src/opendal/core/services/memcached/src/core.rs:268,1
    - Dst: accept
      Src: /src/opendal/core/services/memcached/src/core.rs:269,1
    - Dst: Ok::<_, std::io::Error>
      Src: /src/opendal/core/services/memcached/src/core.rs:270,1
    - Dst: SocketStream::connect_unix
      Src: /src/opendal/core/services/memcached/src/core.rs:273,1
    - Dst: to_str
      Src: /src/opendal/core/services/memcached/src/core.rs:273,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/services/memcached/src/core.rs:273,1
    - Dst: unwrap
      Src: /src/opendal/core/services/memcached/src/core.rs:274,1
    - Dst: std::fs::remove_file
      Src: /src/opendal/core/services/memcached/src/core.rs:276,1
    - Dst: Ok
      Src: /src/opendal/core/services/memcached/src/core.rs:277,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 28
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 278
      start: 254
    functionDepth: 33
    functionLinenumber: 254
    functionLinenumberEnd: 278
    functionName: tests::connect_unix_socket
    functionSourceFile: /src/opendal/core/services/memcached/src/core.rs
    functionUses: 0
    functionsReached:
    - SocketStream::connect_unix
    - UnixListener::bind
    - accept
    - to_str
    - Ok
    - join
    - unwrap
    - Ok::<_, std::io::Error>
    - std::env::temp_dir
    - Result::unwrap
    - std::fs::remove_file
    - tokio::spawn
    linkageType: ''
    returnType: std::io::Result
    signature: async fn connect_unix_socket() -> std::io::Result<()>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: oio::QueueBuf::new
      Src: /src/opendal/core/services/memcached/src/writer.rs:36,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - core
    - path
    argTypes:
    - Arc<MemcachedCore>
    - String
    constantsTouched: []
    func_position:
      end: 38
      start: 32
    functionDepth: 4
    functionLinenumber: 32
    functionLinenumberEnd: 38
    functionName: MemcachedWriter::new
    functionSourceFile: /src/opendal/core/services/memcached/src/writer.rs
    functionUses: 1
    functionsReached:
    - oio::QueueBuf::new
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(core: Arc<MemcachedCore>, path: String) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: push
      Src: /src/opendal/core/services/memcached/src/writer.rs:43,1
    - Dst: Ok
      Src: /src/opendal/core/services/memcached/src/writer.rs:44,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - bs
    argTypes:
    - Buffer
    constantsTouched: []
    func_position:
      end: 45
      start: 42
    functionDepth: 5
    functionLinenumber: 42
    functionLinenumberEnd: 45
    functionName: MemcachedWriter::write
    functionSourceFile: /src/opendal/core/services/memcached/src/writer.rs
    functionUses: 0
    functionsReached:
    - Ok
    - push
    linkageType: ''
    returnType: Result
    signature: 'async fn write(&mut self, bs: Buffer) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: clone
      Src: /src/opendal/core/services/memcached/src/writer.rs:48,1
    - Dst: collect
      Src: /src/opendal/core/services/memcached/src/writer.rs:48,1
    - Dst: io::Result::len
      Src: /src/opendal/core/services/memcached/src/writer.rs:49,1
    - Dst: set
      Src: /src/opendal/core/services/memcached/src/writer.rs:50,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/memcached/src/writer.rs:52,1
    - Dst: EntryMode::from_path
      Src: /src/opendal/core/services/memcached/src/writer.rs:52,1
    - Dst: Self::with_content_length
      Src: /src/opendal/core/services/memcached/src/writer.rs:52,1
    - Dst: Ok
      Src: /src/opendal/core/services/memcached/src/writer.rs:53,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 23
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 54
      start: 47
    functionDepth: 36
    functionLinenumber: 47
    functionLinenumberEnd: 54
    functionName: MemcachedWriter::close
    functionSourceFile: /src/opendal/core/services/memcached/src/writer.rs
    functionUses: 0
    functionsReached:
    - collect
    - Metadata::new
    - Ok
    - io::Result::len
    - set
    - Self::with_content_length
    - clone
    - EntryMode::from_path
    linkageType: ''
    returnType: Result
    signature: async fn close(&mut self) -> Result<Metadata>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: clear
      Src: /src/opendal/core/services/memcached/src/writer.rs:57,1
    - Dst: Ok
      Src: /src/opendal/core/services/memcached/src/writer.rs:58,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 59
      start: 56
    functionDepth: 2
    functionLinenumber: 56
    functionLinenumberEnd: 59
    functionName: MemcachedWriter::abort
    functionSourceFile: /src/opendal/core/services/memcached/src/writer.rs
    functionUses: 0
    functionsReached:
    - clear
    - Ok
    linkageType: ''
    returnType: Result
    signature: async fn abort(&mut self) -> Result<()>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: register::<Memcached>
      Src: /src/opendal/core/services/memcached/src/lib.rs:39,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - registry
    argTypes:
    - '&opendal_core::OperatorRegistry'
    constantsTouched: []
    func_position:
      end: 40
      start: 38
    functionDepth: 0
    functionLinenumber: 38
    functionLinenumberEnd: 40
    functionName: register_memcached_service
    functionSourceFile: /src/opendal/core/services/memcached/src/lib.rs
    functionUses: 1
    functionsReached:
    - register::<Memcached>
    linkageType: ''
    returnType: void
    signature: 'pub fn register_memcached_service(registry: &opendal_core::OperatorRegistry)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self::is_empty
      Src: /src/opendal/core/services/memcached/src/backend.rs:44,1
    - Dst: Some
      Src: /src/opendal/core/services/memcached/src/backend.rs:45,1
    - Dst: Self::to_owned
      Src: /src/opendal/core/services/memcached/src/backend.rs:45,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 1
    argNames:
    - endpoint
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 48
      start: 43
    functionDepth: 4
    functionLinenumber: 43
    functionLinenumberEnd: 48
    functionName: MemcachedBuilder::endpoint
    functionSourceFile: /src/opendal/core/services/memcached/src/backend.rs
    functionUses: 0
    functionsReached:
    - Self::is_empty
    - Self::to_owned
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn endpoint(mut self, endpoint: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::is_empty
      Src: /src/opendal/core/services/memcached/src/backend.rs:54,1
    - Dst: Some
      Src: /src/opendal/core/services/memcached/src/backend.rs:57,1
    - Dst: Result::to_string
      Src: /src/opendal/core/services/memcached/src/backend.rs:57,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - root
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 61
      start: 53
    functionDepth: 4
    functionLinenumber: 53
    functionLinenumberEnd: 61
    functionName: MemcachedBuilder::root
    functionSourceFile: /src/opendal/core/services/memcached/src/backend.rs
    functionUses: 0
    functionsReached:
    - Result::is_empty
    - Result::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn root(mut self, root: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Some
      Src: /src/opendal/core/services/memcached/src/backend.rs:65,1
    - Dst: Option::to_string
      Src: /src/opendal/core/services/memcached/src/backend.rs:65,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - username
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 67
      start: 64
    functionDepth: 2
    functionLinenumber: 64
    functionLinenumberEnd: 67
    functionName: MemcachedBuilder::username
    functionSourceFile: /src/opendal/core/services/memcached/src/backend.rs
    functionUses: 0
    functionsReached:
    - Option::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn username(mut self, username: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Some
      Src: /src/opendal/core/services/memcached/src/backend.rs:71,1
    - Dst: Option::to_string
      Src: /src/opendal/core/services/memcached/src/backend.rs:71,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - password
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 73
      start: 70
    functionDepth: 2
    functionLinenumber: 70
    functionLinenumberEnd: 73
    functionName: MemcachedBuilder::password
    functionSourceFile: /src/opendal/core/services/memcached/src/backend.rs
    functionUses: 0
    functionsReached:
    - Option::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn password(mut self, password: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Some
      Src: /src/opendal/core/services/memcached/src/backend.rs:77,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - ttl
    argTypes:
    - Duration
    constantsTouched: []
    func_position:
      end: 79
      start: 76
    functionDepth: 0
    functionLinenumber: 76
    functionLinenumberEnd: 79
    functionName: MemcachedBuilder::default_ttl
    functionSourceFile: /src/opendal/core/services/memcached/src/backend.rs
    functionUses: 0
    functionsReached:
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn default_ttl(mut self, ttl: Duration) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Some
      Src: /src/opendal/core/services/memcached/src/backend.rs:91,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - max_size
    argTypes:
    - usize
    constantsTouched: []
    func_position:
      end: 93
      start: 89
    functionDepth: 0
    functionLinenumber: 89
    functionLinenumberEnd: 93
    functionName: MemcachedBuilder::connection_pool_max_size
    functionSourceFile: /src/opendal/core/services/memcached/src/backend.rs
    functionUses: 0
    functionsReached:
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn connection_pool_max_size(mut self, max_size: usize) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: clone
      Src: /src/opendal/core/services/memcached/src/backend.rs:100,1
    - Dst: ok_or_else
      Src: /src/opendal/core/services/memcached/src/backend.rs:100,1
    - Dst: Error::new
      Src: /src/opendal/core/services/memcached/src/backend.rs:101,1
    - Dst: Self::with_context
      Src: /src/opendal/core/services/memcached/src/backend.rs:101,1
    - Dst: contains
      Src: /src/opendal/core/services/memcached/src/backend.rs:105,1
    - Dst: Cow::Owned
      Src: /src/opendal/core/services/memcached/src/backend.rs:106,1
    - Dst: Cow::Borrowed
      Src: /src/opendal/core/services/memcached/src/backend.rs:108,1
    - Dst: as_str
      Src: /src/opendal/core/services/memcached/src/backend.rs:108,1
    - Dst: Url::parse
      Src: /src/opendal/core/services/memcached/src/backend.rs:111,1
    - Dst: Result::map_err
      Src: /src/opendal/core/services/memcached/src/backend.rs:111,1
    - Dst: Error::new
      Src: /src/opendal/core/services/memcached/src/backend.rs:112,1
    - Dst: Self::with_context
      Src: /src/opendal/core/services/memcached/src/backend.rs:112,1
    - Dst: Self::with_context
      Src: /src/opendal/core/services/memcached/src/backend.rs:112,1
    - Dst: Self::set_source
      Src: /src/opendal/core/services/memcached/src/backend.rs:112,1
    - Dst: scheme
      Src: /src/opendal/core/services/memcached/src/backend.rs:118,1
    - Dst: host_str
      Src: /src/opendal/core/services/memcached/src/backend.rs:120,1
    - Dst: ok_or_else
      Src: /src/opendal/core/services/memcached/src/backend.rs:120,1
    - Dst: Error::new
      Src: /src/opendal/core/services/memcached/src/backend.rs:121,1
    - Dst: Self::with_context
      Src: /src/opendal/core/services/memcached/src/backend.rs:121,1
    - Dst: Self::with_context
      Src: /src/opendal/core/services/memcached/src/backend.rs:121,1
    - Dst: port
      Src: /src/opendal/core/services/memcached/src/backend.rs:125,1
    - Dst: ok_or_else
      Src: /src/opendal/core/services/memcached/src/backend.rs:125,1
    - Dst: Error::new
      Src: /src/opendal/core/services/memcached/src/backend.rs:126,1
    - Dst: Self::with_context
      Src: /src/opendal/core/services/memcached/src/backend.rs:126,1
    - Dst: Self::with_context
      Src: /src/opendal/core/services/memcached/src/backend.rs:126,1
    - Dst: Endpoint::Tcp
      Src: /src/opendal/core/services/memcached/src/backend.rs:130,1
    - Dst: path
      Src: /src/opendal/core/services/memcached/src/backend.rs:135,1
    - Dst: is_empty
      Src: /src/opendal/core/services/memcached/src/backend.rs:136,1
    - Dst: Err
      Src: /src/opendal/core/services/memcached/src/backend.rs:137,1
    - Dst: Error::new
      Src: /src/opendal/core/services/memcached/src/backend.rs:137,1
    - Dst: Self::with_context
      Src: /src/opendal/core/services/memcached/src/backend.rs:137,1
    - Dst: Self::with_context
      Src: /src/opendal/core/services/memcached/src/backend.rs:137,1
    - Dst: Endpoint::Unix
      Src: /src/opendal/core/services/memcached/src/backend.rs:144,1
    - Dst: to_string
      Src: /src/opendal/core/services/memcached/src/backend.rs:144,1
    - Dst: Err
      Src: /src/opendal/core/services/memcached/src/backend.rs:149,1
    - Dst: Error::new
      Src: /src/opendal/core/services/memcached/src/backend.rs:149,1
    - Dst: Self::with_context
      Src: /src/opendal/core/services/memcached/src/backend.rs:149,1
    - Dst: Self::with_context
      Src: /src/opendal/core/services/memcached/src/backend.rs:149,1
    - Dst: Err
      Src: /src/opendal/core/services/memcached/src/backend.rs:158,1
    - Dst: Error::new
      Src: /src/opendal/core/services/memcached/src/backend.rs:158,1
    - Dst: Self::with_context
      Src: /src/opendal/core/services/memcached/src/backend.rs:158,1
    - Dst: Self::with_context
      Src: /src/opendal/core/services/memcached/src/backend.rs:158,1
    - Dst: Self::with_context
      Src: /src/opendal/core/services/memcached/src/backend.rs:158,1
    - Dst: normalize_root
      Src: /src/opendal/core/services/memcached/src/backend.rs:168,1
    - Dst: unwrap_or_else
      Src: /src/opendal/core/services/memcached/src/backend.rs:168,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/memcached/src/backend.rs:168,1
    - Dst: as_str
      Src: /src/opendal/core/services/memcached/src/backend.rs:168,1
    - Dst: Ok
      Src: /src/opendal/core/services/memcached/src/backend.rs:170,1
    - Dst: MemcachedBackend::new
      Src: /src/opendal/core/services/memcached/src/backend.rs:170,1
    - Dst: MemcachedCore::new
      Src: /src/opendal/core/services/memcached/src/backend.rs:170,1
    - Dst: Self::with_normalized_root
      Src: /src/opendal/core/services/memcached/src/backend.rs:170,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 122
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 178
      start: 99
    functionDepth: 36
    functionLinenumber: 99
    functionLinenumberEnd: 178
    functionName: MemcachedBuilder::build
    functionSourceFile: /src/opendal/core/services/memcached/src/backend.rs
    functionUses: 0
    functionsReached:
    - Endpoint::Tcp
    - clone
    - port
    - Cow::Owned
    - Endpoint::Unix
    - Self::with_context
    - unwrap_or_else
    - host_str
    - scheme
    - Ok
    - normalize_root
    - MemcachedBackend::new
    - as_str
    - Cow::Borrowed
    - '&str::to_string'
    - contains
    - ok_or_else
    - Result::map_err
    - is_empty
    - Self::set_source
    - to_string
    - Error::new
    - Err
    - MemcachedCore::new
    - path
    - Url::parse
    - Self::with_normalized_root
    linkageType: ''
    returnType: Result
    signature: fn build(self) -> Result<impl Service>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: ServiceInfo::new
      Src: /src/opendal/core/services/memcached/src/backend.rs:192,1
    - Dst: Default::default
      Src: /src/opendal/core/services/memcached/src/backend.rs:200,1
    - Dst: Arc::new
      Src: /src/opendal/core/services/memcached/src/backend.rs:204,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/memcached/src/backend.rs:205,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - core
    argTypes:
    - MemcachedCore
    constantsTouched: []
    func_position:
      end: 209
      start: 191
    functionDepth: 33
    functionLinenumber: 191
    functionLinenumberEnd: 209
    functionName: MemcachedBackend::new
    functionSourceFile: /src/opendal/core/services/memcached/src/backend.rs
    functionUses: 1
    functionsReached:
    - Arc::new
    - ServiceInfo::new
    - '&str::to_string'
    - Default::default
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(core: MemcachedCore) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: with_root
      Src: /src/opendal/core/services/memcached/src/backend.rs:212,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 1
    argNames:
    - root
    argTypes:
    - String
    constantsTouched: []
    func_position:
      end: 215
      start: 211
    functionDepth: 33
    functionLinenumber: 211
    functionLinenumberEnd: 215
    functionName: MemcachedBackend::with_normalized_root
    functionSourceFile: /src/opendal/core/services/memcached/src/backend.rs
    functionUses: 0
    functionsReached:
    - with_root
    linkageType: ''
    returnType: Self
    signature: 'fn with_normalized_root(mut self, root: String) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: clone
      Src: /src/opendal/core/services/memcached/src/backend.rs:226,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 227
      start: 225
    functionDepth: 2
    functionLinenumber: 225
    functionLinenumberEnd: 227
    functionName: MemcachedBackend::info
    functionSourceFile: /src/opendal/core/services/memcached/src/backend.rs
    functionUses: 0
    functionsReached:
    - clone
    linkageType: ''
    returnType: ServiceInfo
    signature: fn info(&self) -> ServiceInfo
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 231
      start: 229
    functionDepth: 0
    functionLinenumber: 229
    functionLinenumberEnd: 231
    functionName: MemcachedBackend::capability
    functionSourceFile: /src/opendal/core/services/memcached/src/backend.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Capability
    signature: fn capability(&self) -> Capability
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/core/services/memcached/src/backend.rs:239,1
    - Dst: Error::new
      Src: /src/opendal/core/services/memcached/src/backend.rs:239,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - _ctx
    - _path
    - _args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpCreateDir
    constantsTouched: []
    func_position:
      end: 243
      start: 233
    functionDepth: 36
    functionLinenumber: 233
    functionLinenumberEnd: 243
    functionName: MemcachedBackend::create_dir
    functionSourceFile: /src/opendal/core/services/memcached/src/backend.rs
    functionUses: 0
    functionsReached:
    - Error::new
    - Err
    linkageType: ''
    returnType: Result
    signature: 'async fn create_dir(&self,_ctx: &OperationContext,_path: &str,_args:
      OpCreateDir,) -> Result<RpCreateDir>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/memcached/src/backend.rs:246,1
    - Dst: build_abs_path
      Src: /src/opendal/core/services/memcached/src/backend.rs:248,1
    - Dst: Ok
      Src: /src/opendal/core/services/memcached/src/backend.rs:249,1
    - Dst: RpStat::new
      Src: /src/opendal/core/services/memcached/src/backend.rs:249,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/memcached/src/backend.rs:249,1
    - Dst: get
      Src: /src/opendal/core/services/memcached/src/backend.rs:251,1
    - Dst: Ok
      Src: /src/opendal/core/services/memcached/src/backend.rs:253,1
    - Dst: RpStat::new
      Src: /src/opendal/core/services/memcached/src/backend.rs:253,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/memcached/src/backend.rs:254,1
    - Dst: Self::with_content_length
      Src: /src/opendal/core/services/memcached/src/backend.rs:254,1
    - Dst: Result::len
      Src: /src/opendal/core/services/memcached/src/backend.rs:254,1
    - Dst: Err
      Src: /src/opendal/core/services/memcached/src/backend.rs:256,1
    - Dst: Error::new
      Src: /src/opendal/core/services/memcached/src/backend.rs:256,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 30
    argCount: 3
    argNames:
    - _ctx
    - path
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpStat
    constantsTouched: []
    func_position:
      end: 259
      start: 245
    functionDepth: 36
    functionLinenumber: 245
    functionLinenumberEnd: 259
    functionName: MemcachedBackend::stat
    functionSourceFile: /src/opendal/core/services/memcached/src/backend.rs
    functionUses: 0
    functionsReached:
    - Metadata::new
    - get
    - Ok
    - Self::with_content_length
    - RpStat::new
    - build_abs_path
    - Err
    - Error::new
    - Result::len
    linkageType: ''
    returnType: Result
    signature: 'async fn stat(&self, _ctx: &OperationContext, path: &str, _: OpStat)
      -> Result<RpStat>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/core/services/memcached/src/backend.rs:262,1
    - Dst: oio::StreamReader::new
      Src: /src/opendal/core/services/memcached/src/backend.rs:262,1
    - Dst: MemcachedReader::new
      Src: /src/opendal/core/services/memcached/src/backend.rs:262,1
    - Dst: MemcachedBackend::clone
      Src: /src/opendal/core/services/memcached/src/backend.rs:263,1
    - Dst: Ok
      Src: /src/opendal/core/services/memcached/src/backend.rs:269,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - _ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpRead
    constantsTouched: []
    func_position:
      end: 270
      start: 260
    functionDepth: 3
    functionLinenumber: 260
    functionLinenumberEnd: 270
    functionName: MemcachedBackend::read
    functionSourceFile: /src/opendal/core/services/memcached/src/backend.rs
    functionUses: 0
    functionsReached:
    - oio::StreamReader::new
    - MemcachedReader::new
    - Ok
    - MemcachedBackend::clone
    linkageType: ''
    returnType: Result
    signature: 'fn read(&self, _ctx: &OperationContext, path: &str, args: OpRead)
      -> Result<Self::Reader>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/memcached/src/backend.rs:274,1
    - Dst: Ok
      Src: /src/opendal/core/services/memcached/src/backend.rs:275,1
    - Dst: MemcachedWriter::new
      Src: /src/opendal/core/services/memcached/src/backend.rs:275,1
    - Dst: clone
      Src: /src/opendal/core/services/memcached/src/backend.rs:275,1
    - Dst: Ok
      Src: /src/opendal/core/services/memcached/src/backend.rs:278,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 3
    argNames:
    - _ctx
    - path
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpWrite
    constantsTouched: []
    func_position:
      end: 279
      start: 272
    functionDepth: 5
    functionLinenumber: 272
    functionLinenumberEnd: 279
    functionName: MemcachedBackend::write
    functionSourceFile: /src/opendal/core/services/memcached/src/backend.rs
    functionUses: 0
    functionsReached:
    - MemcachedWriter::new
    - Ok
    - clone
    - build_abs_path
    linkageType: ''
    returnType: Result
    signature: 'fn write(&self, _ctx: &OperationContext, path: &str, _: OpWrite) ->
      Result<Self::Writer>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/core/services/memcached/src/backend.rs:283,1
    - Dst: oio::OneShotDeleter::new
      Src: /src/opendal/core/services/memcached/src/backend.rs:283,1
    - Dst: MemcachedDeleter::new
      Src: /src/opendal/core/services/memcached/src/backend.rs:283,1
    - Dst: clone
      Src: /src/opendal/core/services/memcached/src/backend.rs:284,1
    - Dst: clone
      Src: /src/opendal/core/services/memcached/src/backend.rs:285,1
    - Dst: Ok
      Src: /src/opendal/core/services/memcached/src/backend.rs:289,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 1
    argNames:
    - _ctx
    argTypes:
    - '&OperationContext'
    constantsTouched: []
    func_position:
      end: 290
      start: 281
    functionDepth: 2
    functionLinenumber: 281
    functionLinenumberEnd: 290
    functionName: MemcachedBackend::delete
    functionSourceFile: /src/opendal/core/services/memcached/src/backend.rs
    functionUses: 0
    functionsReached:
    - oio::OneShotDeleter::new
    - clone
    - Ok
    - MemcachedDeleter::new
    linkageType: ''
    returnType: Result
    signature: 'fn delete(&self, _ctx: &OperationContext) -> Result<Self::Deleter>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/core/services/memcached/src/backend.rs:293,1
    - Dst: Error::new
      Src: /src/opendal/core/services/memcached/src/backend.rs:293,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - _ctx
    - _path
    - _args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpList
    constantsTouched: []
    func_position:
      end: 297
      start: 292
    functionDepth: 36
    functionLinenumber: 292
    functionLinenumberEnd: 297
    functionName: MemcachedBackend::list
    functionSourceFile: /src/opendal/core/services/memcached/src/backend.rs
    functionUses: 0
    functionsReached:
    - Error::new
    - Err
    linkageType: ''
    returnType: Result
    signature: 'fn list(&self, _ctx: &OperationContext, _path: &str, _args: OpList)
      -> Result<Self::Lister>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/core/services/memcached/src/backend.rs:307,1
    - Dst: Error::new
      Src: /src/opendal/core/services/memcached/src/backend.rs:307,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 5
    argNames:
    - _ctx
    - _from
    - _to
    - _args
    - _opts
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    - OpCopy
    - OpCopier
    constantsTouched: []
    func_position:
      end: 311
      start: 299
    functionDepth: 36
    functionLinenumber: 299
    functionLinenumberEnd: 311
    functionName: MemcachedBackend::copy
    functionSourceFile: /src/opendal/core/services/memcached/src/backend.rs
    functionUses: 0
    functionsReached:
    - Error::new
    - Err
    linkageType: ''
    returnType: Result
    signature: 'fn copy(&self,_ctx: &OperationContext,_from: &str,_to: &str,_args:
      OpCopy,_opts: OpCopier,) -> Result<Self::Copier>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/core/services/memcached/src/backend.rs:320,1
    - Dst: Error::new
      Src: /src/opendal/core/services/memcached/src/backend.rs:320,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - _ctx
    - _from
    - _to
    - _args
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    - OpRename
    constantsTouched: []
    func_position:
      end: 324
      start: 313
    functionDepth: 36
    functionLinenumber: 313
    functionLinenumberEnd: 324
    functionName: MemcachedBackend::rename
    functionSourceFile: /src/opendal/core/services/memcached/src/backend.rs
    functionUses: 0
    functionsReached:
    - Error::new
    - Err
    linkageType: ''
    returnType: Result
    signature: 'async fn rename(&self,_ctx: &OperationContext,_from: &str,_to: &str,_args:
      OpRename,) -> Result<RpRename>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/core/services/memcached/src/backend.rs:332,1
    - Dst: Error::new
      Src: /src/opendal/core/services/memcached/src/backend.rs:332,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - _ctx
    - _path
    - _args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpPresign
    constantsTouched: []
    func_position:
      end: 336
      start: 326
    functionDepth: 36
    functionLinenumber: 326
    functionLinenumberEnd: 336
    functionName: MemcachedBackend::presign
    functionSourceFile: /src/opendal/core/services/memcached/src/backend.rs
    functionUses: 0
    functionsReached:
    - Error::new
    - Err
    linkageType: ''
    returnType: Result
    signature: 'async fn presign(&self,_ctx: &OperationContext,_path: &str,_args:
      OpPresign,) -> Result<RpPresign>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::write_u8
      Src: /src/opendal/core/services/memcached/src/binary.rs:64,1
    - Dst: Result::write_u8
      Src: /src/opendal/core/services/memcached/src/binary.rs:65,1
    - Dst: Result::write_u16
      Src: /src/opendal/core/services/memcached/src/binary.rs:66,1
    - Dst: Result::write_u8
      Src: /src/opendal/core/services/memcached/src/binary.rs:67,1
    - Dst: Result::write_u8
      Src: /src/opendal/core/services/memcached/src/binary.rs:68,1
    - Dst: Result::write_u16
      Src: /src/opendal/core/services/memcached/src/binary.rs:69,1
    - Dst: Result::write_u32
      Src: /src/opendal/core/services/memcached/src/binary.rs:70,1
    - Dst: Result::write_u32
      Src: /src/opendal/core/services/memcached/src/binary.rs:71,1
    - Dst: Result::write_u64
      Src: /src/opendal/core/services/memcached/src/binary.rs:72,1
    - Dst: Ok
      Src: /src/opendal/core/services/memcached/src/binary.rs:73,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 56
    argCount: 1
    argNames:
    - writer
    argTypes:
    - '&mut SocketStream'
    constantsTouched: []
    func_position:
      end: 74
      start: 63
    functionDepth: 0
    functionLinenumber: 63
    functionLinenumberEnd: 74
    functionName: PacketHeader::write
    functionSourceFile: /src/opendal/core/services/memcached/src/binary.rs
    functionUses: 0
    functionsReached:
    - Ok
    - Result::write_u64
    - Result::write_u8
    - Result::write_u16
    - Result::write_u32
    linkageType: ''
    returnType: io::Result
    signature: 'pub async fn write(self, writer: &mut SocketStream) -> io::Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: anyhow::Result::read_u8
      Src: /src/opendal/core/services/memcached/src/binary.rs:78,1
    - Dst: anyhow::Result::read_u8
      Src: /src/opendal/core/services/memcached/src/binary.rs:79,1
    - Dst: anyhow::Result::read_u16
      Src: /src/opendal/core/services/memcached/src/binary.rs:80,1
    - Dst: anyhow::Result::read_u8
      Src: /src/opendal/core/services/memcached/src/binary.rs:81,1
    - Dst: anyhow::Result::read_u8
      Src: /src/opendal/core/services/memcached/src/binary.rs:82,1
    - Dst: anyhow::Result::read_u16
      Src: /src/opendal/core/services/memcached/src/binary.rs:83,1
    - Dst: anyhow::Result::read_u32
      Src: /src/opendal/core/services/memcached/src/binary.rs:84,1
    - Dst: anyhow::Result::read_u32
      Src: /src/opendal/core/services/memcached/src/binary.rs:85,1
    - Dst: anyhow::Result::read_u64
      Src: /src/opendal/core/services/memcached/src/binary.rs:86,1
    - Dst: Ok
      Src: /src/opendal/core/services/memcached/src/binary.rs:88,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 38
    argCount: 1
    argNames:
    - reader
    argTypes:
    - '&mut SocketStream'
    constantsTouched: []
    func_position:
      end: 89
      start: 76
    functionDepth: 0
    functionLinenumber: 76
    functionLinenumberEnd: 89
    functionName: PacketHeader::read
    functionSourceFile: /src/opendal/core/services/memcached/src/binary.rs
    functionUses: 1
    functionsReached:
    - anyhow::Result::read_u64
    - Ok
    - anyhow::Result::read_u8
    - anyhow::Result::read_u32
    - anyhow::Result::read_u16
    linkageType: ''
    returnType: Result
    signature: 'pub async fn read(reader: &mut SocketStream) -> Result<PacketHeader,
      io::Error>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: BufReader::new
      Src: /src/opendal/core/services/memcached/src/binary.rs:107,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - io
    argTypes:
    - SocketStream
    constantsTouched: []
    func_position:
      end: 109
      start: 105
    functionDepth: 2
    functionLinenumber: 105
    functionLinenumberEnd: 109
    functionName: Connection::new
    functionSourceFile: /src/opendal/core/services/memcached/src/binary.rs
    functionUses: 1
    functionsReached:
    - BufReader::new
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(io: SocketStream) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: get_mut
      Src: /src/opendal/core/services/memcached/src/binary.rs:112,1
    - Dst: FoyerKey::len
      Src: /src/opendal/core/services/memcached/src/binary.rs:117,1
    - Dst: FoyerKey::len
      Src: /src/opendal/core/services/memcached/src/binary.rs:118,1
    - Dst: Option::len
      Src: /src/opendal/core/services/memcached/src/binary.rs:118,1
    - Dst: Option::len
      Src: /src/opendal/core/services/memcached/src/binary.rs:118,1
    - Dst: Default::default
      Src: /src/opendal/core/services/memcached/src/binary.rs:119,1
    - Dst: write
      Src: /src/opendal/core/services/memcached/src/binary.rs:121,1
    - Dst: map_err
      Src: /src/opendal/core/services/memcached/src/binary.rs:121,1
    - Dst: Result::write_all
      Src: /src/opendal/core/services/memcached/src/binary.rs:125,1
    - Dst: FoyerKey::as_bytes
      Src: /src/opendal/core/services/memcached/src/binary.rs:126,1
    - Dst: map_err
      Src: /src/opendal/core/services/memcached/src/binary.rs:125,1
    - Dst: Result::write_all
      Src: /src/opendal/core/services/memcached/src/binary.rs:129,1
    - Dst: as_bytes
      Src: /src/opendal/core/services/memcached/src/binary.rs:130,1
    - Dst: map_err
      Src: /src/opendal/core/services/memcached/src/binary.rs:129,1
    - Dst: Result::flush
      Src: /src/opendal/core/services/memcached/src/binary.rs:133,1
    - Dst: map_err
      Src: /src/opendal/core/services/memcached/src/binary.rs:133,1
    - Dst: parse_response
      Src: /src/opendal/core/services/memcached/src/binary.rs:134,1
    - Dst: Ok
      Src: /src/opendal/core/services/memcached/src/binary.rs:135,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 59
    argCount: 2
    argNames:
    - username
    - password
    argTypes:
    - '&str'
    - '&str'
    constantsTouched: []
    func_position:
      end: 136
      start: 111
    functionDepth: 36
    functionLinenumber: 111
    functionLinenumberEnd: 136
    functionName: Connection::auth
    functionSourceFile: /src/opendal/core/services/memcached/src/binary.rs
    functionUses: 0
    functionsReached:
    - map_err
    - FoyerKey::as_bytes
    - as_bytes
    - Ok
    - FoyerKey::len
    - Default::default
    - parse_response
    - Result::flush
    - Option::len
    - write
    - get_mut
    - Result::write_all
    linkageType: ''
    returnType: Result
    signature: 'pub async fn auth(&mut self, username: &str, password: &str) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: get_mut
      Src: /src/opendal/core/services/memcached/src/binary.rs:139,1
    - Dst: Default::default
      Src: /src/opendal/core/services/memcached/src/binary.rs:143,1
    - Dst: write
      Src: /src/opendal/core/services/memcached/src/binary.rs:145,1
    - Dst: map_err
      Src: /src/opendal/core/services/memcached/src/binary.rs:145,1
    - Dst: Result::flush
      Src: /src/opendal/core/services/memcached/src/binary.rs:149,1
    - Dst: map_err
      Src: /src/opendal/core/services/memcached/src/binary.rs:149,1
    - Dst: parse_response
      Src: /src/opendal/core/services/memcached/src/binary.rs:150,1
    - Dst: String::from_utf8
      Src: /src/opendal/core/services/memcached/src/binary.rs:151,1
    - Dst: Ok
      Src: /src/opendal/core/services/memcached/src/binary.rs:153,1
    - Dst: Err
      Src: /src/opendal/core/services/memcached/src/binary.rs:155,1
    - Dst: Error::new
      Src: /src/opendal/core/services/memcached/src/binary.rs:155,1
    - Dst: Self::set_source
      Src: /src/opendal/core/services/memcached/src/binary.rs:155,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 33
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 158
      start: 138
    functionDepth: 36
    functionLinenumber: 138
    functionLinenumberEnd: 158
    functionName: Connection::version
    functionSourceFile: /src/opendal/core/services/memcached/src/binary.rs
    functionUses: 0
    functionsReached:
    - map_err
    - String::from_utf8
    - Ok
    - Default::default
    - parse_response
    - Result::flush
    - Err
    - Error::new
    - Self::set_source
    - write
    - get_mut
    linkageType: ''
    returnType: Result
    signature: pub async fn version(&mut self) -> Result<String>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: get_mut
      Src: /src/opendal/core/services/memcached/src/binary.rs:161,1
    - Dst: FoyerKey::len
      Src: /src/opendal/core/services/memcached/src/binary.rs:165,1
    - Dst: FoyerKey::len
      Src: /src/opendal/core/services/memcached/src/binary.rs:166,1
    - Dst: Default::default
      Src: /src/opendal/core/services/memcached/src/binary.rs:167,1
    - Dst: write
      Src: /src/opendal/core/services/memcached/src/binary.rs:169,1
    - Dst: map_err
      Src: /src/opendal/core/services/memcached/src/binary.rs:169,1
    - Dst: Result::write_all
      Src: /src/opendal/core/services/memcached/src/binary.rs:173,1
    - Dst: FoyerKey::as_bytes
      Src: /src/opendal/core/services/memcached/src/binary.rs:174,1
    - Dst: map_err
      Src: /src/opendal/core/services/memcached/src/binary.rs:173,1
    - Dst: Result::flush
      Src: /src/opendal/core/services/memcached/src/binary.rs:177,1
    - Dst: map_err
      Src: /src/opendal/core/services/memcached/src/binary.rs:177,1
    - Dst: parse_response
      Src: /src/opendal/core/services/memcached/src/binary.rs:178,1
    - Dst: Ok
      Src: /src/opendal/core/services/memcached/src/binary.rs:181,1
    - Dst: Ok
      Src: /src/opendal/core/services/memcached/src/binary.rs:183,1
    - Dst: Some
      Src: /src/opendal/core/services/memcached/src/binary.rs:183,1
    - Dst: Err
      Src: /src/opendal/core/services/memcached/src/binary.rs:185,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 52
    argCount: 1
    argNames:
    - key
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 187
      start: 160
    functionDepth: 36
    functionLinenumber: 160
    functionLinenumberEnd: 187
    functionName: Connection::get
    functionSourceFile: /src/opendal/core/services/memcached/src/binary.rs
    functionUses: 0
    functionsReached:
    - map_err
    - FoyerKey::as_bytes
    - Ok
    - FoyerKey::len
    - Default::default
    - parse_response
    - Result::flush
    - Some
    - Err
    - write
    - get_mut
    - Result::write_all
    linkageType: ''
    returnType: Result
    signature: 'pub async fn get(&mut self, key: &str) -> Result<Option<Vec<u8>>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: get_mut
      Src: /src/opendal/core/services/memcached/src/binary.rs:190,1
    - Dst: FoyerKey::len
      Src: /src/opendal/core/services/memcached/src/binary.rs:194,1
    - Dst: FoyerKey::len
      Src: /src/opendal/core/services/memcached/src/binary.rs:196,1
    - Dst: Option::len
      Src: /src/opendal/core/services/memcached/src/binary.rs:196,1
    - Dst: Default::default
      Src: /src/opendal/core/services/memcached/src/binary.rs:197,1
    - Dst: write
      Src: /src/opendal/core/services/memcached/src/binary.rs:203,1
    - Dst: map_err
      Src: /src/opendal/core/services/memcached/src/binary.rs:203,1
    - Dst: Result::write_u32
      Src: /src/opendal/core/services/memcached/src/binary.rs:207,1
    - Dst: map_err
      Src: /src/opendal/core/services/memcached/src/binary.rs:207,1
    - Dst: Result::write_u32
      Src: /src/opendal/core/services/memcached/src/binary.rs:211,1
    - Dst: map_err
      Src: /src/opendal/core/services/memcached/src/binary.rs:211,1
    - Dst: Result::write_all
      Src: /src/opendal/core/services/memcached/src/binary.rs:215,1
    - Dst: FoyerKey::as_bytes
      Src: /src/opendal/core/services/memcached/src/binary.rs:216,1
    - Dst: map_err
      Src: /src/opendal/core/services/memcached/src/binary.rs:215,1
    - Dst: Result::write_all
      Src: /src/opendal/core/services/memcached/src/binary.rs:219,1
    - Dst: map_err
      Src: /src/opendal/core/services/memcached/src/binary.rs:219,1
    - Dst: Result::flush
      Src: /src/opendal/core/services/memcached/src/binary.rs:220,1
    - Dst: map_err
      Src: /src/opendal/core/services/memcached/src/binary.rs:220,1
    - Dst: parse_response
      Src: /src/opendal/core/services/memcached/src/binary.rs:222,1
    - Dst: Ok
      Src: /src/opendal/core/services/memcached/src/binary.rs:223,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 71
    argCount: 3
    argNames:
    - key
    - val
    - expiration
    argTypes:
    - '&str'
    - '&[u8]'
    - u32
    constantsTouched: []
    func_position:
      end: 224
      start: 189
    functionDepth: 36
    functionLinenumber: 189
    functionLinenumberEnd: 224
    functionName: Connection::set
    functionSourceFile: /src/opendal/core/services/memcached/src/binary.rs
    functionUses: 0
    functionsReached:
    - map_err
    - FoyerKey::as_bytes
    - Ok
    - FoyerKey::len
    - Default::default
    - parse_response
    - Result::flush
    - Option::len
    - Result::write_u32
    - write
    - get_mut
    - Result::write_all
    linkageType: ''
    returnType: Result
    signature: 'pub async fn set(&mut self, key: &str, val: &[u8], expiration: u32)
      -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: get_mut
      Src: /src/opendal/core/services/memcached/src/binary.rs:227,1
    - Dst: FoyerKey::len
      Src: /src/opendal/core/services/memcached/src/binary.rs:231,1
    - Dst: FoyerKey::len
      Src: /src/opendal/core/services/memcached/src/binary.rs:232,1
    - Dst: Default::default
      Src: /src/opendal/core/services/memcached/src/binary.rs:233,1
    - Dst: write
      Src: /src/opendal/core/services/memcached/src/binary.rs:235,1
    - Dst: map_err
      Src: /src/opendal/core/services/memcached/src/binary.rs:235,1
    - Dst: Result::write_all
      Src: /src/opendal/core/services/memcached/src/binary.rs:239,1
    - Dst: FoyerKey::as_bytes
      Src: /src/opendal/core/services/memcached/src/binary.rs:240,1
    - Dst: map_err
      Src: /src/opendal/core/services/memcached/src/binary.rs:239,1
    - Dst: Result::flush
      Src: /src/opendal/core/services/memcached/src/binary.rs:243,1
    - Dst: map_err
      Src: /src/opendal/core/services/memcached/src/binary.rs:243,1
    - Dst: parse_response
      Src: /src/opendal/core/services/memcached/src/binary.rs:244,1
    - Dst: Ok
      Src: /src/opendal/core/services/memcached/src/binary.rs:245,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 42
    argCount: 1
    argNames:
    - key
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 246
      start: 226
    functionDepth: 36
    functionLinenumber: 226
    functionLinenumberEnd: 246
    functionName: Connection::delete
    functionSourceFile: /src/opendal/core/services/memcached/src/binary.rs
    functionUses: 0
    functionsReached:
    - map_err
    - FoyerKey::as_bytes
    - Ok
    - FoyerKey::len
    - Default::default
    - parse_response
    - Result::flush
    - write
    - get_mut
    - Result::write_all
    linkageType: ''
    returnType: Result
    signature: 'pub async fn delete(&mut self, key: &str) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: PacketHeader::read
      Src: /src/opendal/core/services/memcached/src/binary.rs:250,1
    - Dst: map_err
      Src: /src/opendal/core/services/memcached/src/binary.rs:250,1
    - Dst: Err
      Src: /src/opendal/core/services/memcached/src/binary.rs:255,1
    - Dst: Error::new
      Src: /src/opendal/core/services/memcached/src/binary.rs:256,1
    - Dst: Self::with_context
      Src: /src/opendal/core/services/memcached/src/binary.rs:256,1
    - Dst: anyhow::Result::read_exact
      Src: /src/opendal/core/services/memcached/src/binary.rs:262,1
    - Dst: as_mut_slice
      Src: /src/opendal/core/services/memcached/src/binary.rs:263,1
    - Dst: map_err
      Src: /src/opendal/core/services/memcached/src/binary.rs:262,1
    - Dst: anyhow::Result::read_exact
      Src: /src/opendal/core/services/memcached/src/binary.rs:268,1
    - Dst: FoyerKey::as_mut_slice
      Src: /src/opendal/core/services/memcached/src/binary.rs:269,1
    - Dst: map_err
      Src: /src/opendal/core/services/memcached/src/binary.rs:268,1
    - Dst: anyhow::Result::read_exact
      Src: /src/opendal/core/services/memcached/src/binary.rs:278,1
    - Dst: Vec::as_mut_slice
      Src: /src/opendal/core/services/memcached/src/binary.rs:279,1
    - Dst: map_err
      Src: /src/opendal/core/services/memcached/src/binary.rs:278,1
    - Dst: Ok
      Src: /src/opendal/core/services/memcached/src/binary.rs:283,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 47
    argCount: 1
    argNames:
    - reader
    argTypes:
    - '&mut SocketStream'
    constantsTouched: []
    func_position:
      end: 289
      start: 249
    functionDepth: 36
    functionLinenumber: 249
    functionLinenumberEnd: 289
    functionName: parse_response
    functionSourceFile: /src/opendal/core/services/memcached/src/binary.rs
    functionUses: 5
    functionsReached:
    - map_err
    - as_mut_slice
    - Ok
    - PacketHeader::read
    - FoyerKey::as_mut_slice
    - Err
    - Error::new
    - anyhow::Result::read_exact
    - Self::with_context
    - Vec::as_mut_slice
    linkageType: ''
    returnType: Result
    signature: 'pub async fn parse_response(reader: &mut SocketStream) -> Result<Response>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::debug_struct
      Src: /src/opendal/core/services/redis/src/config.rs:67,1
    - Dst: field
      Src: /src/opendal/core/services/redis/src/config.rs:67,1
    - Dst: field
      Src: /src/opendal/core/services/redis/src/config.rs:67,1
    - Dst: field
      Src: /src/opendal/core/services/redis/src/config.rs:67,1
    - Dst: field
      Src: /src/opendal/core/services/redis/src/config.rs:67,1
    - Dst: field
      Src: /src/opendal/core/services/redis/src/config.rs:67,1
    - Dst: field
      Src: /src/opendal/core/services/redis/src/config.rs:67,1
    - Dst: finish_non_exhaustive
      Src: /src/opendal/core/services/redis/src/config.rs:67,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 28
    argCount: 1
    argNames:
    - f
    argTypes:
    - '&mut std::fmt::Formatter<''_>'
    constantsTouched: []
    func_position:
      end: 75
      start: 66
    functionDepth: 5
    functionLinenumber: 66
    functionLinenumberEnd: 75
    functionName: RedisConfig::fmt
    functionSourceFile: /src/opendal/core/services/redis/src/config.rs
    functionUses: 0
    functionsReached:
    - field
    - Result::debug_struct
    - finish_non_exhaustive
    linkageType: ''
    returnType: std::fmt::Result
    signature: 'fn fmt(&self, f: &mut std::fmt::Formatter<''_>) -> std::fmt::Result'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::options
      Src: /src/opendal/core/services/redis/src/config.rs:82,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/redis/src/config.rs:82,1
    - Dst: Result::authority
      Src: /src/opendal/core/services/redis/src/config.rs:84,1
    - Dst: Result::entry
      Src: /src/opendal/core/services/redis/src/config.rs:85,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/redis/src/config.rs:85,1
    - Dst: crate::Entry::or_insert_with
      Src: /src/opendal/core/services/redis/src/config.rs:85,1
    - Dst: Result::contains_key
      Src: /src/opendal/core/services/redis/src/config.rs:87,1
    - Dst: Result::contains_key
      Src: /src/opendal/core/services/redis/src/config.rs:87,1
    - Dst: Err
      Src: /src/opendal/core/services/redis/src/config.rs:88,1
    - Dst: Error::new
      Src: /src/opendal/core/services/redis/src/config.rs:88,1
    - Dst: Self::with_context
      Src: /src/opendal/core/services/redis/src/config.rs:88,1
    - Dst: Result::root
      Src: /src/opendal/core/services/redis/src/config.rs:95,1
    - Dst: is_empty
      Src: /src/opendal/core/services/redis/src/config.rs:96,1
    - Dst: split_once
      Src: /src/opendal/core/services/redis/src/config.rs:98,1
    - Dst: parse::<i64>
      Src: /src/opendal/core/services/redis/src/config.rs:99,1
    - Dst: Result::insert
      Src: /src/opendal/core/services/redis/src/config.rs:100,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/redis/src/config.rs:100,1
    - Dst: i64::to_string
      Src: /src/opendal/core/services/redis/src/config.rs:100,1
    - Dst: is_empty
      Src: /src/opendal/core/services/redis/src/config.rs:101,1
    - Dst: Result::insert
      Src: /src/opendal/core/services/redis/src/config.rs:102,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/redis/src/config.rs:102,1
    - Dst: to_string
      Src: /src/opendal/core/services/redis/src/config.rs:102,1
    - Dst: to_string
      Src: /src/opendal/core/services/redis/src/config.rs:105,1
    - Dst: is_empty
      Src: /src/opendal/core/services/redis/src/config.rs:106,1
    - Dst: push
      Src: /src/opendal/core/services/redis/src/config.rs:107,1
    - Dst: push_str
      Src: /src/opendal/core/services/redis/src/config.rs:108,1
    - Dst: Result::insert
      Src: /src/opendal/core/services/redis/src/config.rs:110,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/redis/src/config.rs:110,1
    - Dst: parse::<i64>
      Src: /src/opendal/core/services/redis/src/config.rs:112,1
    - Dst: Result::insert
      Src: /src/opendal/core/services/redis/src/config.rs:113,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/redis/src/config.rs:113,1
    - Dst: i64::to_string
      Src: /src/opendal/core/services/redis/src/config.rs:113,1
    - Dst: Result::insert
      Src: /src/opendal/core/services/redis/src/config.rs:115,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/redis/src/config.rs:115,1
    - Dst: to_string
      Src: /src/opendal/core/services/redis/src/config.rs:115,1
    - Dst: Self::from_iter
      Src: /src/opendal/core/services/redis/src/config.rs:119,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 100
    argCount: 1
    argNames:
    - uri
    argTypes:
    - '&OperatorUri'
    constantsTouched: []
    func_position:
      end: 120
      start: 81
    functionDepth: 35
    functionLinenumber: 81
    functionLinenumberEnd: 120
    functionName: RedisConfig::from_uri
    functionSourceFile: /src/opendal/core/services/redis/src/config.rs
    functionUses: 2
    functionsReached:
    - push
    - parse::<i64>
    - Result::root
    - Self::with_context
    - Result::clone
    - crate::Entry::or_insert_with
    - i64::to_string
    - '&str::to_string'
    - Result::entry
    - Self::from_iter
    - push_str
    - Result::insert
    - is_empty
    - Result::contains_key
    - to_string
    - split_once
    - Err
    - Error::new
    - Result::authority
    - Result::options
    linkageType: ''
    returnType: Result
    signature: 'fn from_uri(uri: &OperatorUri) -> Result<Self>'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 124
      start: 122
    functionDepth: 0
    functionLinenumber: 122
    functionLinenumberEnd: 124
    functionName: RedisConfig::into_builder
    functionSourceFile: /src/opendal/core/services/redis/src/config.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Self::Builder
    signature: fn into_builder(self) -> Self::Builder
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: OperatorUri::new
      Src: /src/opendal/core/services/redis/src/config.rs:133,1
    - Dst: Vec::<(String, String)>::new
      Src: /src/opendal/core/services/redis/src/config.rs:135,1
    - Dst: RedisConfig::from_uri
      Src: /src/opendal/core/services/redis/src/config.rs:138,1
    - Dst: Ok
      Src: /src/opendal/core/services/redis/src/config.rs:142,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 143
      start: 132
    functionDepth: 29
    functionLinenumber: 132
    functionLinenumberEnd: 143
    functionName: tests::from_uri_sets_endpoint_db_and_root
    functionSourceFile: /src/opendal/core/services/redis/src/config.rs
    functionUses: 0
    functionsReached:
    - Vec::<(String, String)>::new
    - OperatorUri::new
    - RedisConfig::from_uri
    - Ok
    linkageType: ''
    returnType: Result
    signature: fn from_uri_sets_endpoint_db_and_root() -> Result<()>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: OperatorUri::new
      Src: /src/opendal/core/services/redis/src/config.rs:147,1
    - Dst: Vec::<(String, String)>::new
      Src: /src/opendal/core/services/redis/src/config.rs:149,1
    - Dst: RedisConfig::from_uri
      Src: /src/opendal/core/services/redis/src/config.rs:152,1
    - Dst: Ok
      Src: /src/opendal/core/services/redis/src/config.rs:156,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 157
      start: 146
    functionDepth: 29
    functionLinenumber: 146
    functionLinenumberEnd: 157
    functionName: tests::from_uri_treats_non_numeric_path_as_root
    functionSourceFile: /src/opendal/core/services/redis/src/config.rs
    functionUses: 0
    functionsReached:
    - Vec::<(String, String)>::new
    - OperatorUri::new
    - RedisConfig::from_uri
    - Ok
    linkageType: ''
    returnType: Result
    signature: fn from_uri_treats_non_numeric_path_as_root() -> Result<()>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: RedisBuilder::default
      Src: /src/opendal/core/services/redis/src/config.rs:162,1
    - Dst: Self::endpoint
      Src: /src/opendal/core/services/redis/src/config.rs:162,1
    - Dst: Self::username
      Src: /src/opendal/core/services/redis/src/config.rs:162,1
    - Dst: Option::password
      Src: /src/opendal/core/services/redis/src/config.rs:162,1
    - Dst: Option::db
      Src: /src/opendal/core/services/redis/src/config.rs:162,1
    - Dst: i64::root
      Src: /src/opendal/core/services/redis/src/config.rs:162,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 17
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 179
      start: 160
    functionDepth: 32
    functionLinenumber: 160
    functionLinenumberEnd: 179
    functionName: tests::test_redis_builder_interface
    functionSourceFile: /src/opendal/core/services/redis/src/config.rs
    functionUses: 0
    functionsReached:
    - Self::endpoint
    - Option::db
    - i64::root
    - RedisBuilder::default
    - Self::username
    - Option::password
    linkageType: ''
    returnType: void
    signature: fn test_redis_builder_interface()
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - core
    - root
    argTypes:
    - Arc<RedisCore>
    - String
    constantsTouched: []
    func_position:
      end: 33
      start: 31
    functionDepth: 0
    functionLinenumber: 31
    functionLinenumberEnd: 33
    functionName: RedisDeleter::new
    functionSourceFile: /src/opendal/core/services/redis/src/deleter.rs
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(core: Arc<RedisCore>, root: String) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/redis/src/deleter.rs:38,1
    - Dst: delete
      Src: /src/opendal/core/services/redis/src/deleter.rs:39,1
    - Dst: Ok
      Src: /src/opendal/core/services/redis/src/deleter.rs:40,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 2
    argNames:
    - path
    argTypes:
    - String
    - OpDelete
    constantsTouched: []
    func_position:
      end: 41
      start: 37
    functionDepth: 32
    functionLinenumber: 37
    functionLinenumberEnd: 41
    functionName: RedisDeleter::delete_once
    functionSourceFile: /src/opendal/core/services/redis/src/deleter.rs
    functionUses: 0
    functionsReached:
    - Ok
    - build_abs_path
    - delete
    linkageType: ''
    returnType: Result
    signature: 'async fn delete_once(&self, path: String, _: OpDelete) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: to_string
      Src: /src/opendal/core/services/redis/src/reader.rs:32,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - backend
    - path
    argTypes:
    - RedisBackend
    - '&str'
    - OpRead
    constantsTouched: []
    func_position:
      end: 34
      start: 29
    functionDepth: 2
    functionLinenumber: 29
    functionLinenumberEnd: 34
    functionName: RedisReader::new
    functionSourceFile: /src/opendal/core/services/redis/src/reader.rs
    functionUses: 1
    functionsReached:
    - to_string
    linkageType: ''
    returnType: Self
    signature: 'pub(super) fn new(backend: RedisBackend, path: &str, _: OpRead) ->
      Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: as_str
      Src: /src/opendal/core/services/redis/src/reader.rs:40,1
    - Dst: build_abs_path
      Src: /src/opendal/core/services/redis/src/reader.rs:41,1
    - Dst: (Vec::is_full
      Src: /src/opendal/core/services/redis/src/reader.rs:43,1
    - Dst: get
      Src: /src/opendal/core/services/redis/src/reader.rs:45,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/redis/src/reader.rs:48,1
    - Dst: Self::with_content_length
      Src: /src/opendal/core/services/redis/src/reader.rs:48,1
    - Dst: Result::len
      Src: /src/opendal/core/services/redis/src/reader.rs:48,1
    - Dst: Some
      Src: /src/opendal/core/services/redis/src/reader.rs:49,1
    - Dst: Err
      Src: /src/opendal/core/services/redis/src/reader.rs:51,1
    - Dst: Error::new
      Src: /src/opendal/core/services/redis/src/reader.rs:51,1
    - Dst: len
      Src: /src/opendal/core/services/redis/src/reader.rs:55,1
    - Dst: Err
      Src: /src/opendal/core/services/redis/src/reader.rs:57,1
    - Dst: Error::new
      Src: /src/opendal/core/services/redis/src/reader.rs:57,1
    - Dst: (Vec::to_content_range
      Src: /src/opendal/core/services/redis/src/reader.rs:59,1
    - Dst: Result::is_empty
      Src: /src/opendal/core/services/redis/src/reader.rs:61,1
    - Dst: Buffer::new
      Src: /src/opendal/core/services/redis/src/reader.rs:62,1
    - Dst: try_into
      Src: /src/opendal/core/services/redis/src/reader.rs:64,1
    - Dst: map_err
      Src: /src/opendal/core/services/redis/src/reader.rs:64,1
    - Dst: Error::new
      Src: /src/opendal/core/services/redis/src/reader.rs:65,1
    - Dst: Self::set_source
      Src: /src/opendal/core/services/redis/src/reader.rs:65,1
    - Dst: try_into
      Src: /src/opendal/core/services/redis/src/reader.rs:68,1
    - Dst: map_err
      Src: /src/opendal/core/services/redis/src/reader.rs:68,1
    - Dst: Error::new
      Src: /src/opendal/core/services/redis/src/reader.rs:69,1
    - Dst: Self::set_source
      Src: /src/opendal/core/services/redis/src/reader.rs:69,1
    - Dst: get_range
      Src: /src/opendal/core/services/redis/src/reader.rs:72,1
    - Dst: Err
      Src: /src/opendal/core/services/redis/src/reader.rs:75,1
    - Dst: Error::new
      Src: /src/opendal/core/services/redis/src/reader.rs:75,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/redis/src/reader.rs:80,1
    - Dst: Self::with_content_length
      Src: /src/opendal/core/services/redis/src/reader.rs:80,1
    - Dst: Some
      Src: /src/opendal/core/services/redis/src/reader.rs:81,1
    - Dst: anyhow::Result::map_or_else
      Src: /src/opendal/core/services/redis/src/reader.rs:84,1
    - Dst: Ok
      Src: /src/opendal/core/services/redis/src/reader.rs:85,1
    - Dst: Box::new
      Src: /src/opendal/core/services/redis/src/reader.rs:85,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 93
    argCount: 1
    argNames:
    - range
    argTypes:
    - BytesRange
    constantsTouched: []
    func_position:
      end: 86
      start: 38
    functionDepth: 36
    functionLinenumber: 38
    functionLinenumberEnd: 86
    functionName: RedisReader::open
    functionSourceFile: /src/opendal/core/services/redis/src/reader.rs
    functionUses: 0
    functionsReached:
    - Buffer::new
    - get_range
    - Box::new
    - Result::is_empty
    - Result::len
    - map_err
    - get
    - Ok
    - (Vec::is_full
    - as_str
    - len
    - Metadata::new
    - try_into
    - build_abs_path
    - Some
    - Self::set_source
    - Self::with_content_length
    - anyhow::Result::map_or_else
    - Err
    - Error::new
    - (Vec::to_content_range
    linkageType: ''
    returnType: Result
    signature: 'async fn open(&self, range: BytesRange) -> Result<(RpRead, Box<dyn
      oio::ReadStreamDyn>)>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::req_packed_command
      Src: /src/opendal/core/services/redis/src/core.rs:47,1
    - Dst: Result::req_packed_command
      Src: /src/opendal/core/services/redis/src/core.rs:48,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - cmd
    argTypes:
    - '&''a Cmd'
    constantsTouched: []
    func_position:
      end: 50
      start: 45
    functionDepth: 1
    functionLinenumber: 45
    functionLinenumberEnd: 50
    functionName: RedisConnection::req_packed_command
    functionSourceFile: /src/opendal/core/services/redis/src/core.rs
    functionUses: 0
    functionsReached:
    - Result::req_packed_command
    linkageType: ''
    returnType: RedisFuture
    signature: 'fn req_packed_command<''a>(&''a mut self, cmd: &''a Cmd) -> RedisFuture<''a,
      Value>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::req_packed_commands
      Src: /src/opendal/core/services/redis/src/core.rs:59,1
    - Dst: Result::req_packed_commands
      Src: /src/opendal/core/services/redis/src/core.rs:60,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - cmd
    - offset
    - count
    argTypes:
    - '&''a Pipeline'
    - usize
    - usize
    constantsTouched: []
    func_position:
      end: 62
      start: 52
    functionDepth: 1
    functionLinenumber: 52
    functionLinenumberEnd: 62
    functionName: RedisConnection::req_packed_commands
    functionSourceFile: /src/opendal/core/services/redis/src/core.rs
    functionUses: 0
    functionsReached:
    - Result::req_packed_commands
    linkageType: ''
    returnType: RedisFuture
    signature: 'fn req_packed_commands<''a>(&''a mut self,cmd: &''a Pipeline,offset:
      usize,count: usize,) -> RedisFuture<''a, Vec<Value>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::get_db
      Src: /src/opendal/core/services/redis/src/core.rs:66,1
    - Dst: Result::get_db
      Src: /src/opendal/core/services/redis/src/core.rs:67,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 69
      start: 64
    functionDepth: 1
    functionLinenumber: 64
    functionLinenumberEnd: 69
    functionName: RedisConnection::get_db
    functionSourceFile: /src/opendal/core/services/redis/src/core.rs
    functionUses: 0
    functionsReached:
    - Result::get_db
    linkageType: ''
    returnType: i64
    signature: fn get_db(&self) -> i64
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: clone
      Src: /src/opendal/core/services/redis/src/core.rs:83,1
    - Dst: ConnectionManager::new
      Src: /src/opendal/core/services/redis/src/core.rs:84,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/redis/src/core.rs:84,1
    - Dst: map_err
      Src: /src/opendal/core/services/redis/src/core.rs:84,1
    - Dst: map
      Src: /src/opendal/core/services/redis/src/core.rs:84,1
    - Dst: clone
      Src: /src/opendal/core/services/redis/src/core.rs:89,1
    - Dst: unwrap
      Src: /src/opendal/core/services/redis/src/core.rs:89,1
    - Dst: get_async_connection
      Src: /src/opendal/core/services/redis/src/core.rs:89,1
    - Dst: map_err
      Src: /src/opendal/core/services/redis/src/core.rs:89,1
    - Dst: map
      Src: /src/opendal/core/services/redis/src/core.rs:89,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 25
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 97
      start: 82
    functionDepth: 35
    functionLinenumber: 82
    functionLinenumberEnd: 97
    functionName: RedisConnectionManager::create
    functionSourceFile: /src/opendal/core/services/redis/src/core.rs
    functionUses: 0
    functionsReached:
    - Result::clone
    - map_err
    - get_async_connection
    - unwrap
    - clone
    - map
    - ConnectionManager::new
    linkageType: ''
    returnType: Result
    signature: async fn create(&self) -> Result<RedisConnection, Self::Error>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: ping::<String>
      Src: /src/opendal/core/services/redis/src/core.rs:104,1
    - Dst: as_bytes
      Src: /src/opendal/core/services/redis/src/core.rs:105,1
    - Dst: Ok
      Src: /src/opendal/core/services/redis/src/core.rs:106,1
    - Dst: Err
      Src: /src/opendal/core/services/redis/src/core.rs:107,1
    - Dst: Error::new
      Src: /src/opendal/core/services/redis/src/core.rs:107,1
    - Dst: Err
      Src: /src/opendal/core/services/redis/src/core.rs:109,1
    - Dst: format_redis_error
      Src: /src/opendal/core/services/redis/src/core.rs:109,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 2
    argNames:
    - o
    argTypes:
    - '&mut Self::Object'
    - '&ObjectStatus'
    constantsTouched: []
    func_position:
      end: 111
      start: 99
    functionDepth: 36
    functionLinenumber: 99
    functionLinenumberEnd: 111
    functionName: RedisConnectionManager::is_recyclable
    functionSourceFile: /src/opendal/core/services/redis/src/core.rs
    functionUses: 0
    functionsReached:
    - ping::<String>
    - as_bytes
    - Ok
    - Error::new
    - Err
    - format_redis_error
    linkageType: ''
    returnType: Result
    signature: 'async fn is_recyclable(&self,o: &mut Self::Object,_: &ObjectStatus,)
      -> Result<(), Self::Error>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::debug_struct
      Src: /src/opendal/core/services/redis/src/core.rs:124,1
    - Dst: field
      Src: /src/opendal/core/services/redis/src/core.rs:124,1
    - Dst: finish_non_exhaustive
      Src: /src/opendal/core/services/redis/src/core.rs:124,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - f
    argTypes:
    - '&mut std::fmt::Formatter<''_>'
    constantsTouched: []
    func_position:
      end: 127
      start: 123
    functionDepth: 5
    functionLinenumber: 123
    functionLinenumberEnd: 127
    functionName: RedisCore::fmt
    functionSourceFile: /src/opendal/core/services/redis/src/core.rs
    functionUses: 0
    functionsReached:
    - field
    - Result::debug_struct
    - finish_non_exhaustive
    linkageType: ''
    returnType: std::fmt::Result
    signature: 'fn fmt(&self, f: &mut std::fmt::Formatter<''_>) -> std::fmt::Result'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: bounded::Pool::new
      Src: /src/opendal/core/services/redis/src/core.rs:142,1
    - Dst: bounded::PoolConfig::new
      Src: /src/opendal/core/services/redis/src/core.rs:143,1
    - Dst: Self::unwrap_or
      Src: /src/opendal/core/services/redis/src/core.rs:143,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 5
    argNames:
    - endpoint
    - client
    - cluster_client
    - default_ttl
    - connection_pool_max_size
    argTypes:
    - String
    - Option<Client>
    - Option<ClusterClient>
    - Option<Duration>
    - Option<usize>
    constantsTouched: []
    func_position:
      end: 152
      start: 131
    functionDepth: 0
    functionLinenumber: 131
    functionLinenumberEnd: 152
    functionName: RedisCore::new
    functionSourceFile: /src/opendal/core/services/redis/src/core.rs
    functionUses: 1
    functionsReached:
    - Self::unwrap_or
    - bounded::PoolConfig::new
    - bounded::Pool::new
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(endpoint: String,client: Option<Client>,cluster_client:
      Option<ClusterClient>,default_ttl: Option<Duration>,connection_pool_max_size:
      Option<usize>,) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 156
      start: 154
    functionDepth: 0
    functionLinenumber: 154
    functionLinenumberEnd: 156
    functionName: RedisCore::addr
    functionSourceFile: /src/opendal/core/services/redis/src/core.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: '&str'
    signature: pub fn addr(&self) -> &str
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: get
      Src: /src/opendal/core/services/redis/src/core.rs:159,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 170
      start: 158
    functionDepth: 2
    functionLinenumber: 158
    functionLinenumberEnd: 170
    functionName: RedisCore::conn
    functionSourceFile: /src/opendal/core/services/redis/src/core.rs
    functionUses: 5
    functionsReached:
    - get
    linkageType: ''
    returnType: Result
    signature: pub async fn conn(&self) -> Result<bounded::Object<RedisConnectionManager>>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: RedisCore::conn
      Src: /src/opendal/core/services/redis/src/core.rs:173,1
    - Dst: Result::get
      Src: /src/opendal/core/services/redis/src/core.rs:174,1
    - Dst: map_err
      Src: /src/opendal/core/services/redis/src/core.rs:174,1
    - Dst: Ok
      Src: /src/opendal/core/services/redis/src/core.rs:175,1
    - Dst: bool::map
      Src: /src/opendal/core/services/redis/src/core.rs:175,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 1
    argNames:
    - key
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 176
      start: 172
    functionDepth: 3
    functionLinenumber: 172
    functionLinenumberEnd: 176
    functionName: RedisCore::get
    functionSourceFile: /src/opendal/core/services/redis/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - Ok
    - bool::map
    - RedisCore::conn
    - Result::get
    linkageType: ''
    returnType: Result
    signature: 'pub async fn get(&self, key: &str) -> Result<Option<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: RedisCore::conn
      Src: /src/opendal/core/services/redis/src/core.rs:179,1
    - Dst: Result::exists
      Src: /src/opendal/core/services/redis/src/core.rs:180,1
    - Dst: map_err
      Src: /src/opendal/core/services/redis/src/core.rs:180,1
    - Dst: Ok
      Src: /src/opendal/core/services/redis/src/core.rs:182,1
    - Dst: redis::cmd
      Src: /src/opendal/core/services/redis/src/core.rs:185,1
    - Dst: arg
      Src: /src/opendal/core/services/redis/src/core.rs:185,1
    - Dst: query_async
      Src: /src/opendal/core/services/redis/src/core.rs:185,1
    - Dst: map_err
      Src: /src/opendal/core/services/redis/src/core.rs:185,1
    - Dst: Ok
      Src: /src/opendal/core/services/redis/src/core.rs:190,1
    - Dst: Some
      Src: /src/opendal/core/services/redis/src/core.rs:190,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 29
    argCount: 1
    argNames:
    - key
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 191
      start: 178
    functionDepth: 31
    functionLinenumber: 178
    functionLinenumberEnd: 191
    functionName: RedisCore::len
    functionSourceFile: /src/opendal/core/services/redis/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - Ok
    - Some
    - redis::cmd
    - arg
    - Result::exists
    - query_async
    - RedisCore::conn
    linkageType: ''
    returnType: Result
    signature: 'pub async fn len(&self, key: &str) -> Result<Option<usize>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: RedisCore::conn
      Src: /src/opendal/core/services/redis/src/core.rs:194,1
    - Dst: Result::getrange
      Src: /src/opendal/core/services/redis/src/core.rs:195,1
    - Dst: map_err
      Src: /src/opendal/core/services/redis/src/core.rs:195,1
    - Dst: Ok
      Src: /src/opendal/core/services/redis/src/core.rs:199,1
    - Dst: bool::map
      Src: /src/opendal/core/services/redis/src/core.rs:199,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 3
    argNames:
    - key
    - start
    - end
    argTypes:
    - '&str'
    - isize
    - isize
    constantsTouched: []
    func_position:
      end: 200
      start: 193
    functionDepth: 3
    functionLinenumber: 193
    functionLinenumberEnd: 200
    functionName: RedisCore::get_range
    functionSourceFile: /src/opendal/core/services/redis/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - Ok
    - bool::map
    - Result::getrange
    - RedisCore::conn
    linkageType: ''
    returnType: Result
    signature: 'pub async fn get_range(&self, key: &str, start: isize, end: isize)
      -> Result<Option<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: RedisCore::conn
      Src: /src/opendal/core/services/redis/src/core.rs:203,1
    - Dst: Vec::to_vec
      Src: /src/opendal/core/services/redis/src/core.rs:204,1
    - Dst: Result::set_ex
      Src: /src/opendal/core/services/redis/src/core.rs:206,1
    - Dst: as_secs
      Src: /src/opendal/core/services/redis/src/core.rs:207,1
    - Dst: map_err
      Src: /src/opendal/core/services/redis/src/core.rs:206,1
    - Dst: Result::set
      Src: /src/opendal/core/services/redis/src/core.rs:211,1
    - Dst: map_err
      Src: /src/opendal/core/services/redis/src/core.rs:211,1
    - Dst: Ok
      Src: /src/opendal/core/services/redis/src/core.rs:213,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 25
    argCount: 2
    argNames:
    - key
    - value
    argTypes:
    - '&str'
    - Buffer
    constantsTouched: []
    func_position:
      end: 214
      start: 202
    functionDepth: 34
    functionLinenumber: 202
    functionLinenumberEnd: 214
    functionName: RedisCore::set
    functionSourceFile: /src/opendal/core/services/redis/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - Result::set
    - as_secs
    - Ok
    - Result::set_ex
    - Vec::to_vec
    - RedisCore::conn
    linkageType: ''
    returnType: Result
    signature: 'pub async fn set(&self, key: &str, value: Buffer) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: RedisCore::conn
      Src: /src/opendal/core/services/redis/src/core.rs:217,1
    - Dst: Result::del
      Src: /src/opendal/core/services/redis/src/core.rs:218,1
    - Dst: map_err
      Src: /src/opendal/core/services/redis/src/core.rs:218,1
    - Dst: Ok
      Src: /src/opendal/core/services/redis/src/core.rs:219,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 1
    argNames:
    - key
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 220
      start: 216
    functionDepth: 35
    functionLinenumber: 216
    functionLinenumberEnd: 220
    functionName: RedisCore::delete
    functionSourceFile: /src/opendal/core/services/redis/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - RedisCore::conn
    - Ok
    - Result::del
    linkageType: ''
    returnType: Result
    signature: 'pub async fn delete(&self, key: &str) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Error::new
      Src: /src/opendal/core/services/redis/src/core.rs:224,1
    - Dst: Result::category
      Src: /src/opendal/core/services/redis/src/core.rs:224,1
    - Dst: Self::set_source
      Src: /src/opendal/core/services/redis/src/core.rs:224,1
    - Dst: Self::set_temporary
      Src: /src/opendal/core/services/redis/src/core.rs:224,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - e
    argTypes:
    - RedisError
    constantsTouched: []
    func_position:
      end: 227
      start: 223
    functionDepth: 36
    functionLinenumber: 223
    functionLinenumberEnd: 227
    functionName: format_redis_error
    functionSourceFile: /src/opendal/core/services/redis/src/core.rs
    functionUses: 1
    functionsReached:
    - Self::set_source
    - Result::category
    - Self::set_temporary
    - Error::new
    linkageType: ''
    returnType: Error
    signature: 'pub fn format_redis_error(e: RedisError) -> Error'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: oio::QueueBuf::new
      Src: /src/opendal/core/services/redis/src/writer.rs:36,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - core
    - path
    argTypes:
    - Arc<RedisCore>
    - String
    constantsTouched: []
    func_position:
      end: 38
      start: 32
    functionDepth: 4
    functionLinenumber: 32
    functionLinenumberEnd: 38
    functionName: RedisWriter::new
    functionSourceFile: /src/opendal/core/services/redis/src/writer.rs
    functionUses: 1
    functionsReached:
    - oio::QueueBuf::new
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(core: Arc<RedisCore>, path: String) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: push
      Src: /src/opendal/core/services/redis/src/writer.rs:43,1
    - Dst: Ok
      Src: /src/opendal/core/services/redis/src/writer.rs:44,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - bs
    argTypes:
    - Buffer
    constantsTouched: []
    func_position:
      end: 45
      start: 42
    functionDepth: 5
    functionLinenumber: 42
    functionLinenumberEnd: 45
    functionName: RedisWriter::write
    functionSourceFile: /src/opendal/core/services/redis/src/writer.rs
    functionUses: 0
    functionsReached:
    - Ok
    - push
    linkageType: ''
    returnType: Result
    signature: 'async fn write(&mut self, bs: Buffer) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: clone
      Src: /src/opendal/core/services/redis/src/writer.rs:48,1
    - Dst: collect
      Src: /src/opendal/core/services/redis/src/writer.rs:48,1
    - Dst: io::Result::len
      Src: /src/opendal/core/services/redis/src/writer.rs:49,1
    - Dst: set
      Src: /src/opendal/core/services/redis/src/writer.rs:50,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/redis/src/writer.rs:52,1
    - Dst: EntryMode::from_path
      Src: /src/opendal/core/services/redis/src/writer.rs:52,1
    - Dst: Self::with_content_length
      Src: /src/opendal/core/services/redis/src/writer.rs:52,1
    - Dst: Ok
      Src: /src/opendal/core/services/redis/src/writer.rs:53,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 23
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 54
      start: 47
    functionDepth: 36
    functionLinenumber: 47
    functionLinenumberEnd: 54
    functionName: RedisWriter::close
    functionSourceFile: /src/opendal/core/services/redis/src/writer.rs
    functionUses: 0
    functionsReached:
    - collect
    - Metadata::new
    - Ok
    - io::Result::len
    - set
    - Self::with_content_length
    - clone
    - EntryMode::from_path
    linkageType: ''
    returnType: Result
    signature: async fn close(&mut self) -> Result<Metadata>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: clear
      Src: /src/opendal/core/services/redis/src/writer.rs:57,1
    - Dst: Ok
      Src: /src/opendal/core/services/redis/src/writer.rs:58,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 59
      start: 56
    functionDepth: 2
    functionLinenumber: 56
    functionLinenumberEnd: 59
    functionName: RedisWriter::abort
    functionSourceFile: /src/opendal/core/services/redis/src/writer.rs
    functionUses: 0
    functionsReached:
    - clear
    - Ok
    linkageType: ''
    returnType: Result
    signature: async fn abort(&mut self) -> Result<()>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: register::<Redis>
      Src: /src/opendal/core/services/redis/src/lib.rs:38,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - registry
    argTypes:
    - '&opendal_core::OperatorRegistry'
    constantsTouched: []
    func_position:
      end: 39
      start: 37
    functionDepth: 0
    functionLinenumber: 37
    functionLinenumberEnd: 39
    functionName: register_redis_service
    functionSourceFile: /src/opendal/core/services/redis/src/lib.rs
    functionUses: 1
    functionsReached:
    - register::<Redis>
    linkageType: ''
    returnType: void
    signature: 'pub fn register_redis_service(registry: &opendal_core::OperatorRegistry)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self::is_empty
      Src: /src/opendal/core/services/redis/src/backend.rs:58,1
    - Dst: Some
      Src: /src/opendal/core/services/redis/src/backend.rs:59,1
    - Dst: Self::to_owned
      Src: /src/opendal/core/services/redis/src/backend.rs:59,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 1
    argNames:
    - endpoint
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 62
      start: 57
    functionDepth: 4
    functionLinenumber: 57
    functionLinenumberEnd: 62
    functionName: RedisBuilder::endpoint
    functionSourceFile: /src/opendal/core/services/redis/src/backend.rs
    functionUses: 0
    functionsReached:
    - Self::is_empty
    - Self::to_owned
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn endpoint(mut self, endpoint: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self::is_empty
      Src: /src/opendal/core/services/redis/src/backend.rs:73,1
    - Dst: Some
      Src: /src/opendal/core/services/redis/src/backend.rs:74,1
    - Dst: Self::to_owned
      Src: /src/opendal/core/services/redis/src/backend.rs:74,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 1
    argNames:
    - cluster_endpoints
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 77
      start: 72
    functionDepth: 4
    functionLinenumber: 72
    functionLinenumberEnd: 77
    functionName: RedisBuilder::cluster_endpoints
    functionSourceFile: /src/opendal/core/services/redis/src/backend.rs
    functionUses: 0
    functionsReached:
    - Self::is_empty
    - Self::to_owned
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn cluster_endpoints(mut self, cluster_endpoints: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Option::is_empty
      Src: /src/opendal/core/services/redis/src/backend.rs:83,1
    - Dst: Some
      Src: /src/opendal/core/services/redis/src/backend.rs:84,1
    - Dst: Option::to_owned
      Src: /src/opendal/core/services/redis/src/backend.rs:84,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 1
    argNames:
    - username
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 87
      start: 82
    functionDepth: 4
    functionLinenumber: 82
    functionLinenumberEnd: 87
    functionName: RedisBuilder::username
    functionSourceFile: /src/opendal/core/services/redis/src/backend.rs
    functionUses: 0
    functionsReached:
    - Option::is_empty
    - Option::to_owned
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn username(mut self, username: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Option::is_empty
      Src: /src/opendal/core/services/redis/src/backend.rs:93,1
    - Dst: Some
      Src: /src/opendal/core/services/redis/src/backend.rs:94,1
    - Dst: Option::to_owned
      Src: /src/opendal/core/services/redis/src/backend.rs:94,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 1
    argNames:
    - password
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 97
      start: 92
    functionDepth: 4
    functionLinenumber: 92
    functionLinenumberEnd: 97
    functionName: RedisBuilder::password
    functionSourceFile: /src/opendal/core/services/redis/src/backend.rs
    functionUses: 0
    functionsReached:
    - Option::is_empty
    - Option::to_owned
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn password(mut self, password: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - db
    argTypes:
    - i64
    constantsTouched: []
    func_position:
      end: 105
      start: 102
    functionDepth: 0
    functionLinenumber: 102
    functionLinenumberEnd: 105
    functionName: RedisBuilder::db
    functionSourceFile: /src/opendal/core/services/redis/src/backend.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: 'pub fn db(mut self, db: i64) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Some
      Src: /src/opendal/core/services/redis/src/backend.rs:111,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - ttl
    argTypes:
    - Duration
    constantsTouched: []
    func_position:
      end: 113
      start: 110
    functionDepth: 0
    functionLinenumber: 110
    functionLinenumberEnd: 113
    functionName: RedisBuilder::default_ttl
    functionSourceFile: /src/opendal/core/services/redis/src/backend.rs
    functionUses: 0
    functionsReached:
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn default_ttl(mut self, ttl: Duration) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::is_empty
      Src: /src/opendal/core/services/redis/src/backend.rs:119,1
    - Dst: Some
      Src: /src/opendal/core/services/redis/src/backend.rs:122,1
    - Dst: Result::to_string
      Src: /src/opendal/core/services/redis/src/backend.rs:122,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - root
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 126
      start: 118
    functionDepth: 4
    functionLinenumber: 118
    functionLinenumberEnd: 126
    functionName: RedisBuilder::root
    functionSourceFile: /src/opendal/core/services/redis/src/backend.rs
    functionUses: 0
    functionsReached:
    - Result::is_empty
    - Result::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn root(mut self, root: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Some
      Src: /src/opendal/core/services/redis/src/backend.rs:138,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - max_size
    argTypes:
    - usize
    constantsTouched: []
    func_position:
      end: 140
      start: 136
    functionDepth: 0
    functionLinenumber: 136
    functionLinenumberEnd: 140
    functionName: RedisBuilder::connection_pool_max_size
    functionSourceFile: /src/opendal/core/services/redis/src/backend.rs
    functionUses: 0
    functionsReached:
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn connection_pool_max_size(mut self, max_size: usize) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: normalize_root
      Src: /src/opendal/core/services/redis/src/backend.rs:147,1
    - Dst: clone
      Src: /src/opendal/core/services/redis/src/backend.rs:148,1
    - Dst: unwrap_or_else
      Src: /src/opendal/core/services/redis/src/backend.rs:148,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/redis/src/backend.rs:151,1
    - Dst: as_str
      Src: /src/opendal/core/services/redis/src/backend.rs:148,1
    - Dst: clone
      Src: /src/opendal/core/services/redis/src/backend.rs:155,1
    - Dst: Vec::default
      Src: /src/opendal/core/services/redis/src/backend.rs:156,1
    - Dst: Self::split
      Src: /src/opendal/core/services/redis/src/backend.rs:157,1
    - Dst: Self::push
      Src: /src/opendal/core/services/redis/src/backend.rs:158,1
    - Dst: RedisBuilder::get_connection_info
      Src: /src/opendal/core/services/redis/src/backend.rs:158,1
    - Dst: Self::to_string
      Src: /src/opendal/core/services/redis/src/backend.rs:158,1
    - Dst: ClusterClientBuilder::new
      Src: /src/opendal/core/services/redis/src/backend.rs:160,1
    - Dst: Self::username
      Src: /src/opendal/core/services/redis/src/backend.rs:162,1
    - Dst: Option::clone
      Src: /src/opendal/core/services/redis/src/backend.rs:162,1
    - Dst: Self::password
      Src: /src/opendal/core/services/redis/src/backend.rs:165,1
    - Dst: Option::clone
      Src: /src/opendal/core/services/redis/src/backend.rs:165,1
    - Dst: Self::build
      Src: /src/opendal/core/services/redis/src/backend.rs:167,1
    - Dst: Result::map_err
      Src: /src/opendal/core/services/redis/src/backend.rs:167,1
    - Dst: Ok
      Src: /src/opendal/core/services/redis/src/backend.rs:169,1
    - Dst: RedisBackend::new
      Src: /src/opendal/core/services/redis/src/backend.rs:169,1
    - Dst: RedisCore::new
      Src: /src/opendal/core/services/redis/src/backend.rs:169,1
    - Dst: Some
      Src: /src/opendal/core/services/redis/src/backend.rs:172,1
    - Dst: Self::with_normalized_root
      Src: /src/opendal/core/services/redis/src/backend.rs:169,1
    - Dst: clone
      Src: /src/opendal/core/services/redis/src/backend.rs:178,1
    - Dst: unwrap_or_else
      Src: /src/opendal/core/services/redis/src/backend.rs:178,1
    - Dst: to_string
      Src: /src/opendal/core/services/redis/src/backend.rs:182,1
    - Dst: Client::open
      Src: /src/opendal/core/services/redis/src/backend.rs:185,1
    - Dst: RedisBuilder::get_connection_info
      Src: /src/opendal/core/services/redis/src/backend.rs:185,1
    - Dst: Self::clone
      Src: /src/opendal/core/services/redis/src/backend.rs:185,1
    - Dst: Result::map_err
      Src: /src/opendal/core/services/redis/src/backend.rs:185,1
    - Dst: Error::new
      Src: /src/opendal/core/services/redis/src/backend.rs:186,1
    - Dst: Self::with_context
      Src: /src/opendal/core/services/redis/src/backend.rs:186,1
    - Dst: Self::with_context
      Src: /src/opendal/core/services/redis/src/backend.rs:186,1
    - Dst: as_ref
      Src: /src/opendal/core/services/redis/src/backend.rs:188,1
    - Dst: unwrap
      Src: /src/opendal/core/services/redis/src/backend.rs:188,1
    - Dst: Self::with_context
      Src: /src/opendal/core/services/redis/src/backend.rs:186,1
    - Dst: to_string
      Src: /src/opendal/core/services/redis/src/backend.rs:189,1
    - Dst: Self::set_source
      Src: /src/opendal/core/services/redis/src/backend.rs:186,1
    - Dst: Ok
      Src: /src/opendal/core/services/redis/src/backend.rs:193,1
    - Dst: RedisBackend::new
      Src: /src/opendal/core/services/redis/src/backend.rs:193,1
    - Dst: RedisCore::new
      Src: /src/opendal/core/services/redis/src/backend.rs:193,1
    - Dst: Some
      Src: /src/opendal/core/services/redis/src/backend.rs:195,1
    - Dst: Self::with_normalized_root
      Src: /src/opendal/core/services/redis/src/backend.rs:193,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 117
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 202
      start: 146
    functionDepth: 34
    functionLinenumber: 146
    functionLinenumberEnd: 202
    functionName: RedisBuilder::build
    functionSourceFile: /src/opendal/core/services/redis/src/backend.rs
    functionUses: 0
    functionsReached:
    - RedisBuilder::get_connection_info
    - Self::to_string
    - Vec::default
    - clone
    - Self::split
    - Self::clone
    - Self::with_context
    - unwrap_or_else
    - Ok
    - unwrap
    - normalize_root
    - as_str
    - '&str::to_string'
    - ClusterClientBuilder::new
    - RedisCore::new
    - Result::map_err
    - Self::password
    - Self::push
    - Client::open
    - Some
    - Self::set_source
    - to_string
    - Error::new
    - RedisBackend::new
    - as_ref
    - Option::clone
    - Self::with_normalized_root
    - Self::build
    - Self::username
    linkageType: ''
    returnType: Result
    signature: fn build(self) -> Result<impl Service>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: parse::<Uri>
      Src: /src/opendal/core/services/redis/src/backend.rs:207,1
    - Dst: map_err
      Src: /src/opendal/core/services/redis/src/backend.rs:207,1
    - Dst: Error::new
      Src: /src/opendal/core/services/redis/src/backend.rs:208,1
    - Dst: Self::with_context
      Src: /src/opendal/core/services/redis/src/backend.rs:208,1
    - Dst: Self::with_context
      Src: /src/opendal/core/services/redis/src/backend.rs:208,1
    - Dst: Self::set_source
      Src: /src/opendal/core/services/redis/src/backend.rs:208,1
    - Dst: scheme_str
      Src: /src/opendal/core/services/redis/src/backend.rs:214,1
    - Dst: host
      Src: /src/opendal/core/services/redis/src/backend.rs:216,1
    - Dst: map
      Src: /src/opendal/core/services/redis/src/backend.rs:216,1
    - Dst: Result::to_string
      Src: /src/opendal/core/services/redis/src/backend.rs:218,1
    - Dst: unwrap_or_else
      Src: /src/opendal/core/services/redis/src/backend.rs:216,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/redis/src/backend.rs:219,1
    - Dst: port_u16
      Src: /src/opendal/core/services/redis/src/backend.rs:220,1
    - Dst: unwrap_or
      Src: /src/opendal/core/services/redis/src/backend.rs:220,1
    - Dst: ConnectionAddr::Tcp
      Src: /src/opendal/core/services/redis/src/backend.rs:221,1
    - Dst: host
      Src: /src/opendal/core/services/redis/src/backend.rs:224,1
    - Dst: map
      Src: /src/opendal/core/services/redis/src/backend.rs:224,1
    - Dst: Result::to_string
      Src: /src/opendal/core/services/redis/src/backend.rs:226,1
    - Dst: unwrap_or_else
      Src: /src/opendal/core/services/redis/src/backend.rs:224,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/redis/src/backend.rs:227,1
    - Dst: port_u16
      Src: /src/opendal/core/services/redis/src/backend.rs:228,1
    - Dst: unwrap_or
      Src: /src/opendal/core/services/redis/src/backend.rs:228,1
    - Dst: PathBuf::from
      Src: /src/opendal/core/services/redis/src/backend.rs:237,1
    - Dst: path
      Src: /src/opendal/core/services/redis/src/backend.rs:237,1
    - Dst: ConnectionAddr::Unix
      Src: /src/opendal/core/services/redis/src/backend.rs:238,1
    - Dst: Err
      Src: /src/opendal/core/services/redis/src/backend.rs:241,1
    - Dst: Error::new
      Src: /src/opendal/core/services/redis/src/backend.rs:242,1
    - Dst: Self::with_context
      Src: /src/opendal/core/services/redis/src/backend.rs:242,1
    - Dst: Self::with_context
      Src: /src/opendal/core/services/redis/src/backend.rs:242,1
    - Dst: RedisConnectionInfo::default
      Src: /src/opendal/core/services/redis/src/backend.rs:249,1
    - Dst: Self::set_db
      Src: /src/opendal/core/services/redis/src/backend.rs:249,1
    - Dst: set_protocol
      Src: /src/opendal/core/services/redis/src/backend.rs:249,1
    - Dst: set_username
      Src: /src/opendal/core/services/redis/src/backend.rs:253,1
    - Dst: set_password
      Src: /src/opendal/core/services/redis/src/backend.rs:256,1
    - Dst: clone
      Src: /src/opendal/core/services/redis/src/backend.rs:258,1
    - Dst: into_connection_info
      Src: /src/opendal/core/services/redis/src/backend.rs:258,1
    - Dst: map_err
      Src: /src/opendal/core/services/redis/src/backend.rs:258,1
    - Dst: Error::new
      Src: /src/opendal/core/services/redis/src/backend.rs:262,1
    - Dst: Self::with_context
      Src: /src/opendal/core/services/redis/src/backend.rs:262,1
    - Dst: Self::with_context
      Src: /src/opendal/core/services/redis/src/backend.rs:262,1
    - Dst: Self::with_context
      Src: /src/opendal/core/services/redis/src/backend.rs:262,1
    - Dst: set_redis_settings
      Src: /src/opendal/core/services/redis/src/backend.rs:258,1
    - Dst: Ok
      Src: /src/opendal/core/services/redis/src/backend.rs:269,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 105
    argCount: 1
    argNames:
    - endpoint
    argTypes:
    - String
    constantsTouched: []
    func_position:
      end: 270
      start: 206
    functionDepth: 36
    functionLinenumber: 206
    functionLinenumberEnd: 270
    functionName: RedisBuilder::get_connection_info
    functionSourceFile: /src/opendal/core/services/redis/src/backend.rs
    functionUses: 1
    functionsReached:
    - host
    - set_protocol
    - Self::set_db
    - clone
    - map
    - ConnectionAddr::Tcp
    - set_username
    - scheme_str
    - Self::with_context
    - ConnectionAddr::Unix
    - unwrap_or_else
    - map_err
    - Result::to_string
    - Ok
    - set_redis_settings
    - '&str::to_string'
    - RedisConnectionInfo::default
    - unwrap_or
    - PathBuf::from
    - set_password
    - Self::set_source
    - parse::<Uri>
    - Error::new
    - port_u16
    - Err
    - path
    - into_connection_info
    linkageType: ''
    returnType: Result
    signature: 'fn get_connection_info(&self, endpoint: String) -> Result<ConnectionInfo>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: ServiceInfo::new
      Src: /src/opendal/core/services/redis/src/backend.rs:284,1
    - Dst: CompfsCore::addr
      Src: /src/opendal/core/services/redis/src/backend.rs:284,1
    - Dst: Default::default
      Src: /src/opendal/core/services/redis/src/backend.rs:292,1
    - Dst: Arc::new
      Src: /src/opendal/core/services/redis/src/backend.rs:296,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/redis/src/backend.rs:297,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 1
    argNames:
    - core
    argTypes:
    - RedisCore
    constantsTouched: []
    func_position:
      end: 301
      start: 283
    functionDepth: 33
    functionLinenumber: 283
    functionLinenumberEnd: 301
    functionName: RedisBackend::new
    functionSourceFile: /src/opendal/core/services/redis/src/backend.rs
    functionUses: 1
    functionsReached:
    - ServiceInfo::new
    - Arc::new
    - Default::default
    - CompfsCore::addr
    - '&str::to_string'
    linkageType: ''
    returnType: Self
    signature: 'fn new(core: RedisCore) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: with_root
      Src: /src/opendal/core/services/redis/src/backend.rs:304,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 1
    argNames:
    - root
    argTypes:
    - String
    constantsTouched: []
    func_position:
      end: 307
      start: 303
    functionDepth: 33
    functionLinenumber: 303
    functionLinenumberEnd: 307
    functionName: RedisBackend::with_normalized_root
    functionSourceFile: /src/opendal/core/services/redis/src/backend.rs
    functionUses: 0
    functionsReached:
    - with_root
    linkageType: ''
    returnType: Self
    signature: 'fn with_normalized_root(mut self, root: String) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: clone
      Src: /src/opendal/core/services/redis/src/backend.rs:318,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 319
      start: 317
    functionDepth: 2
    functionLinenumber: 317
    functionLinenumberEnd: 319
    functionName: RedisBackend::info
    functionSourceFile: /src/opendal/core/services/redis/src/backend.rs
    functionUses: 0
    functionsReached:
    - clone
    linkageType: ''
    returnType: ServiceInfo
    signature: fn info(&self) -> ServiceInfo
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 323
      start: 321
    functionDepth: 0
    functionLinenumber: 321
    functionLinenumberEnd: 323
    functionName: RedisBackend::capability
    functionSourceFile: /src/opendal/core/services/redis/src/backend.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Capability
    signature: fn capability(&self) -> Capability
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/core/services/redis/src/backend.rs:331,1
    - Dst: Error::new
      Src: /src/opendal/core/services/redis/src/backend.rs:331,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - _ctx
    - _path
    - _args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpCreateDir
    constantsTouched: []
    func_position:
      end: 335
      start: 325
    functionDepth: 36
    functionLinenumber: 325
    functionLinenumberEnd: 335
    functionName: RedisBackend::create_dir
    functionSourceFile: /src/opendal/core/services/redis/src/backend.rs
    functionUses: 0
    functionsReached:
    - Error::new
    - Err
    linkageType: ''
    returnType: Result
    signature: 'async fn create_dir(&self,_ctx: &OperationContext,_path: &str,_args:
      OpCreateDir,) -> Result<RpCreateDir>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/redis/src/backend.rs:338,1
    - Dst: build_abs_path
      Src: /src/opendal/core/services/redis/src/backend.rs:340,1
    - Dst: Ok
      Src: /src/opendal/core/services/redis/src/backend.rs:341,1
    - Dst: RpStat::new
      Src: /src/opendal/core/services/redis/src/backend.rs:341,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/redis/src/backend.rs:341,1
    - Dst: len
      Src: /src/opendal/core/services/redis/src/backend.rs:343,1
    - Dst: Ok
      Src: /src/opendal/core/services/redis/src/backend.rs:344,1
    - Dst: RpStat::new
      Src: /src/opendal/core/services/redis/src/backend.rs:344,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/redis/src/backend.rs:345,1
    - Dst: Self::with_content_length
      Src: /src/opendal/core/services/redis/src/backend.rs:345,1
    - Dst: Err
      Src: /src/opendal/core/services/redis/src/backend.rs:347,1
    - Dst: Error::new
      Src: /src/opendal/core/services/redis/src/backend.rs:347,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 28
    argCount: 3
    argNames:
    - _ctx
    - path
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpStat
    constantsTouched: []
    func_position:
      end: 350
      start: 337
    functionDepth: 36
    functionLinenumber: 337
    functionLinenumberEnd: 350
    functionName: RedisBackend::stat
    functionSourceFile: /src/opendal/core/services/redis/src/backend.rs
    functionUses: 0
    functionsReached:
    - Metadata::new
    - Ok
    - Self::with_content_length
    - RpStat::new
    - build_abs_path
    - Err
    - Error::new
    - len
    linkageType: ''
    returnType: Result
    signature: 'async fn stat(&self, _ctx: &OperationContext, path: &str, _: OpStat)
      -> Result<RpStat>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/core/services/redis/src/backend.rs:354,1
    - Dst: oio::StreamReader::new
      Src: /src/opendal/core/services/redis/src/backend.rs:354,1
    - Dst: RedisReader::new
      Src: /src/opendal/core/services/redis/src/backend.rs:354,1
    - Dst: RedisBackend::clone
      Src: /src/opendal/core/services/redis/src/backend.rs:355,1
    - Dst: Ok
      Src: /src/opendal/core/services/redis/src/backend.rs:361,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - _ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpRead
    constantsTouched: []
    func_position:
      end: 362
      start: 352
    functionDepth: 3
    functionLinenumber: 352
    functionLinenumberEnd: 362
    functionName: RedisBackend::read
    functionSourceFile: /src/opendal/core/services/redis/src/backend.rs
    functionUses: 0
    functionsReached:
    - oio::StreamReader::new
    - RedisBackend::clone
    - RedisReader::new
    - Ok
    linkageType: ''
    returnType: Result
    signature: 'fn read(&self, _ctx: &OperationContext, path: &str, args: OpRead)
      -> Result<Self::Reader>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/redis/src/backend.rs:366,1
    - Dst: Ok
      Src: /src/opendal/core/services/redis/src/backend.rs:367,1
    - Dst: RedisWriter::new
      Src: /src/opendal/core/services/redis/src/backend.rs:367,1
    - Dst: clone
      Src: /src/opendal/core/services/redis/src/backend.rs:367,1
    - Dst: Ok
      Src: /src/opendal/core/services/redis/src/backend.rs:370,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 3
    argNames:
    - _ctx
    - path
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpWrite
    constantsTouched: []
    func_position:
      end: 371
      start: 364
    functionDepth: 5
    functionLinenumber: 364
    functionLinenumberEnd: 371
    functionName: RedisBackend::write
    functionSourceFile: /src/opendal/core/services/redis/src/backend.rs
    functionUses: 0
    functionsReached:
    - RedisWriter::new
    - Ok
    - clone
    - build_abs_path
    linkageType: ''
    returnType: Result
    signature: 'fn write(&self, _ctx: &OperationContext, path: &str, _: OpWrite) ->
      Result<Self::Writer>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/core/services/redis/src/backend.rs:375,1
    - Dst: oio::OneShotDeleter::new
      Src: /src/opendal/core/services/redis/src/backend.rs:375,1
    - Dst: RedisDeleter::new
      Src: /src/opendal/core/services/redis/src/backend.rs:375,1
    - Dst: clone
      Src: /src/opendal/core/services/redis/src/backend.rs:376,1
    - Dst: clone
      Src: /src/opendal/core/services/redis/src/backend.rs:377,1
    - Dst: Ok
      Src: /src/opendal/core/services/redis/src/backend.rs:381,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 1
    argNames:
    - _ctx
    argTypes:
    - '&OperationContext'
    constantsTouched: []
    func_position:
      end: 382
      start: 373
    functionDepth: 2
    functionLinenumber: 373
    functionLinenumberEnd: 382
    functionName: RedisBackend::delete
    functionSourceFile: /src/opendal/core/services/redis/src/backend.rs
    functionUses: 0
    functionsReached:
    - oio::OneShotDeleter::new
    - clone
    - Ok
    - RedisDeleter::new
    linkageType: ''
    returnType: Result
    signature: 'fn delete(&self, _ctx: &OperationContext) -> Result<Self::Deleter>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/core/services/redis/src/backend.rs:385,1
    - Dst: Error::new
      Src: /src/opendal/core/services/redis/src/backend.rs:385,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - _ctx
    - _path
    - _args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpList
    constantsTouched: []
    func_position:
      end: 389
      start: 384
    functionDepth: 36
    functionLinenumber: 384
    functionLinenumberEnd: 389
    functionName: RedisBackend::list
    functionSourceFile: /src/opendal/core/services/redis/src/backend.rs
    functionUses: 0
    functionsReached:
    - Error::new
    - Err
    linkageType: ''
    returnType: Result
    signature: 'fn list(&self, _ctx: &OperationContext, _path: &str, _args: OpList)
      -> Result<Self::Lister>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/core/services/redis/src/backend.rs:399,1
    - Dst: Error::new
      Src: /src/opendal/core/services/redis/src/backend.rs:399,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 5
    argNames:
    - _ctx
    - _from
    - _to
    - _args
    - _opts
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    - OpCopy
    - OpCopier
    constantsTouched: []
    func_position:
      end: 403
      start: 391
    functionDepth: 36
    functionLinenumber: 391
    functionLinenumberEnd: 403
    functionName: RedisBackend::copy
    functionSourceFile: /src/opendal/core/services/redis/src/backend.rs
    functionUses: 0
    functionsReached:
    - Error::new
    - Err
    linkageType: ''
    returnType: Result
    signature: 'fn copy(&self,_ctx: &OperationContext,_from: &str,_to: &str,_args:
      OpCopy,_opts: OpCopier,) -> Result<Self::Copier>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/core/services/redis/src/backend.rs:412,1
    - Dst: Error::new
      Src: /src/opendal/core/services/redis/src/backend.rs:412,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - _ctx
    - _from
    - _to
    - _args
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    - OpRename
    constantsTouched: []
    func_position:
      end: 416
      start: 405
    functionDepth: 36
    functionLinenumber: 405
    functionLinenumberEnd: 416
    functionName: RedisBackend::rename
    functionSourceFile: /src/opendal/core/services/redis/src/backend.rs
    functionUses: 0
    functionsReached:
    - Error::new
    - Err
    linkageType: ''
    returnType: Result
    signature: 'async fn rename(&self,_ctx: &OperationContext,_from: &str,_to: &str,_args:
      OpRename,) -> Result<RpRename>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/core/services/redis/src/backend.rs:424,1
    - Dst: Error::new
      Src: /src/opendal/core/services/redis/src/backend.rs:424,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - _ctx
    - _path
    - _args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpPresign
    constantsTouched: []
    func_position:
      end: 428
      start: 418
    functionDepth: 36
    functionLinenumber: 418
    functionLinenumberEnd: 428
    functionName: RedisBackend::presign
    functionSourceFile: /src/opendal/core/services/redis/src/backend.rs
    functionUses: 0
    functionsReached:
    - Error::new
    - Err
    linkageType: ''
    returnType: Result
    signature: 'async fn presign(&self,_ctx: &OperationContext,_path: &str,_args:
      OpPresign,) -> Result<RpPresign>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: std::path::Path::new
      Src: /src/opendal/core/services/foundationdb/build.rs:44,1
    - Dst: Result::join
      Src: /src/opendal/core/services/foundationdb/build.rs:45,1
    - Dst: Result::exists
      Src: /src/opendal/core/services/foundationdb/build.rs:45,1
    - Dst: Some
      Src: /src/opendal/core/services/foundationdb/build.rs:46,1
    - Dst: Result::to_path_buf
      Src: /src/opendal/core/services/foundationdb/build.rs:46,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 16
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 51
      start: 35
    functionDepth: 33
    functionLinenumber: 35
    functionLinenumberEnd: 51
    functionName: find_fdb_client_lib_dir_macos
    functionSourceFile: /src/opendal/core/services/foundationdb/build.rs
    functionUses: 0
    functionsReached:
    - Result::join
    - Some
    - Result::exists
    - Result::to_path_buf
    - std::path::Path::new
    linkageType: ''
    returnType: Option
    signature: fn find_fdb_client_lib_dir_macos() -> Option<std::path::PathBuf>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::options
      Src: /src/opendal/core/services/foundationdb/src/config.rs:39,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/foundationdb/src/config.rs:39,1
    - Dst: Result::root
      Src: /src/opendal/core/services/foundationdb/src/config.rs:41,1
    - Dst: is_empty
      Src: /src/opendal/core/services/foundationdb/src/config.rs:42,1
    - Dst: Result::entry
      Src: /src/opendal/core/services/foundationdb/src/config.rs:44,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/foundationdb/src/config.rs:44,1
    - Dst: crate::Entry::or_insert_with
      Src: /src/opendal/core/services/foundationdb/src/config.rs:44,1
    - Dst: Self::from_iter
      Src: /src/opendal/core/services/foundationdb/src/config.rs:48,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 20
    argCount: 1
    argNames:
    - uri
    argTypes:
    - '&opendal_core::OperatorUri'
    constantsTouched: []
    func_position:
      end: 49
      start: 38
    functionDepth: 35
    functionLinenumber: 38
    functionLinenumberEnd: 49
    functionName: FoundationdbConfig::from_uri
    functionSourceFile: /src/opendal/core/services/foundationdb/src/config.rs
    functionUses: 1
    functionsReached:
    - Result::clone
    - Self::from_iter
    - Result::entry
    - crate::Entry::or_insert_with
    - is_empty
    - Result::root
    - '&str::to_string'
    - Result::options
    linkageType: ''
    returnType: opendal_core::Result
    signature: 'fn from_uri(uri: &opendal_core::OperatorUri) -> opendal_core::Result<Self>'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 53
      start: 51
    functionDepth: 0
    functionLinenumber: 51
    functionLinenumberEnd: 53
    functionName: FoundationdbConfig::into_builder
    functionSourceFile: /src/opendal/core/services/foundationdb/src/config.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Self::Builder
    signature: fn into_builder(self) -> Self::Builder
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: OperatorUri::new
      Src: /src/opendal/core/services/foundationdb/src/config.rs:64,1
    - Dst: Vec::<(String, String)>::new
      Src: /src/opendal/core/services/foundationdb/src/config.rs:66,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/services/foundationdb/src/config.rs:64,1
    - Dst: FoundationdbConfig::from_uri
      Src: /src/opendal/core/services/foundationdb/src/config.rs:70,1
    - Dst: opendal_core::Result::unwrap
      Src: /src/opendal/core/services/foundationdb/src/config.rs:70,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 76
      start: 63
    functionDepth: 29
    functionLinenumber: 63
    functionLinenumberEnd: 76
    functionName: tests::from_uri_sets_config_path_and_root
    functionSourceFile: /src/opendal/core/services/foundationdb/src/config.rs
    functionUses: 0
    functionsReached:
    - Vec::<(String, String)>::new
    - OperatorUri::new
    - FoundationdbConfig::from_uri
    - Result::unwrap
    - opendal_core::Result::unwrap
    linkageType: ''
    returnType: void
    signature: fn from_uri_sets_config_path_and_root()
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - core
    - root
    argTypes:
    - Arc<FoundationdbCore>
    - String
    constantsTouched: []
    func_position:
      end: 33
      start: 31
    functionDepth: 0
    functionLinenumber: 31
    functionLinenumberEnd: 33
    functionName: FoundationdbDeleter::new
    functionSourceFile: /src/opendal/core/services/foundationdb/src/deleter.rs
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(core: Arc<FoundationdbCore>, root: String) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/foundationdb/src/deleter.rs:38,1
    - Dst: delete
      Src: /src/opendal/core/services/foundationdb/src/deleter.rs:39,1
    - Dst: Ok
      Src: /src/opendal/core/services/foundationdb/src/deleter.rs:40,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 2
    argNames:
    - path
    argTypes:
    - String
    - OpDelete
    constantsTouched: []
    func_position:
      end: 41
      start: 37
    functionDepth: 32
    functionLinenumber: 37
    functionLinenumberEnd: 41
    functionName: FoundationdbDeleter::delete_once
    functionSourceFile: /src/opendal/core/services/foundationdb/src/deleter.rs
    functionUses: 0
    functionsReached:
    - Ok
    - build_abs_path
    - delete
    linkageType: ''
    returnType: Result
    signature: 'async fn delete_once(&self, path: String, _: OpDelete) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: to_string
      Src: /src/opendal/core/services/foundationdb/src/reader.rs:32,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - backend
    - path
    argTypes:
    - FoundationdbBackend
    - '&str'
    - OpRead
    constantsTouched: []
    func_position:
      end: 34
      start: 29
    functionDepth: 2
    functionLinenumber: 29
    functionLinenumberEnd: 34
    functionName: FoundationdbReader::new
    functionSourceFile: /src/opendal/core/services/foundationdb/src/reader.rs
    functionUses: 1
    functionsReached:
    - to_string
    linkageType: ''
    returnType: Self
    signature: 'pub(super) fn new(backend: FoundationdbBackend, path: &str, _: OpRead)
      -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: as_str
      Src: /src/opendal/core/services/foundationdb/src/reader.rs:40,1
    - Dst: build_abs_path
      Src: /src/opendal/core/services/foundationdb/src/reader.rs:41,1
    - Dst: get
      Src: /src/opendal/core/services/foundationdb/src/reader.rs:42,1
    - Dst: Err
      Src: /src/opendal/core/services/foundationdb/src/reader.rs:45,1
    - Dst: Error::new
      Src: /src/opendal/core/services/foundationdb/src/reader.rs:45,1
    - Dst: Result::slice
      Src: /src/opendal/core/services/foundationdb/src/reader.rs:51,1
    - Dst: (Vec::to_content_range
      Src: /src/opendal/core/services/foundationdb/src/reader.rs:51,1
    - Dst: Result::len
      Src: /src/opendal/core/services/foundationdb/src/reader.rs:51,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/foundationdb/src/reader.rs:52,1
    - Dst: Self::with_content_length
      Src: /src/opendal/core/services/foundationdb/src/reader.rs:52,1
    - Dst: Result::len
      Src: /src/opendal/core/services/foundationdb/src/reader.rs:52,1
    - Dst: Ok
      Src: /src/opendal/core/services/foundationdb/src/reader.rs:53,1
    - Dst: RpRead::new
      Src: /src/opendal/core/services/foundationdb/src/reader.rs:54,1
    - Dst: Box::new
      Src: /src/opendal/core/services/foundationdb/src/reader.rs:55,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 37
    argCount: 1
    argNames:
    - range
    argTypes:
    - BytesRange
    constantsTouched: []
    func_position:
      end: 57
      start: 38
    functionDepth: 36
    functionLinenumber: 38
    functionLinenumberEnd: 57
    functionName: FoundationdbReader::open
    functionSourceFile: /src/opendal/core/services/foundationdb/src/reader.rs
    functionUses: 0
    functionsReached:
    - Metadata::new
    - get
    - Ok
    - Box::new
    - Self::with_content_length
    - build_abs_path
    - Error::new
    - Err
    - as_str
    - Result::slice
    - (Vec::to_content_range
    - Result::len
    - RpRead::new
    linkageType: ''
    returnType: Result
    signature: 'async fn open(&self, range: BytesRange) -> Result<(RpRead, Box<dyn
      oio::ReadStreamDyn>)>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::debug_struct
      Src: /src/opendal/core/services/foundationdb/src/core.rs:35,1
    - Dst: finish_non_exhaustive
      Src: /src/opendal/core/services/foundationdb/src/core.rs:35,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - f
    argTypes:
    - '&mut std::fmt::Formatter<''_>'
    constantsTouched: []
    func_position:
      end: 36
      start: 34
    functionDepth: 0
    functionLinenumber: 34
    functionLinenumberEnd: 36
    functionName: FoundationdbCore::fmt
    functionSourceFile: /src/opendal/core/services/foundationdb/src/core.rs
    functionUses: 0
    functionsReached:
    - Result::debug_struct
    - finish_non_exhaustive
    linkageType: ''
    returnType: std::fmt::Result
    signature: 'fn fmt(&self, f: &mut std::fmt::Formatter<''_>) -> std::fmt::Result'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: create_trx
      Src: /src/opendal/core/services/foundationdb/src/core.rs:41,1
    - Dst: expect
      Src: /src/opendal/core/services/foundationdb/src/core.rs:41,1
    - Dst: get
      Src: /src/opendal/core/services/foundationdb/src/core.rs:43,1
    - Dst: as_bytes
      Src: /src/opendal/core/services/foundationdb/src/core.rs:43,1
    - Dst: Ok
      Src: /src/opendal/core/services/foundationdb/src/core.rs:45,1
    - Dst: Some
      Src: /src/opendal/core/services/foundationdb/src/core.rs:45,1
    - Dst: Buffer::from
      Src: /src/opendal/core/services/foundationdb/src/core.rs:45,1
    - Dst: anyhow::Result::to_vec
      Src: /src/opendal/core/services/foundationdb/src/core.rs:45,1
    - Dst: Err
      Src: /src/opendal/core/services/foundationdb/src/core.rs:46,1
    - Dst: Error::new
      Src: /src/opendal/core/services/foundationdb/src/core.rs:46,1
    - Dst: Err
      Src: /src/opendal/core/services/foundationdb/src/core.rs:51,1
    - Dst: Error::new
      Src: /src/opendal/core/services/foundationdb/src/core.rs:51,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 22
    argCount: 1
    argNames:
    - path
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 56
      start: 40
    functionDepth: 40
    functionLinenumber: 40
    functionLinenumberEnd: 56
    functionName: FoundationdbCore::get
    functionSourceFile: /src/opendal/core/services/foundationdb/src/core.rs
    functionUses: 0
    functionsReached:
    - get
    - expect
    - Ok
    - as_bytes
    - Some
    - Err
    - Error::new
    - create_trx
    - anyhow::Result::to_vec
    - Buffer::from
    linkageType: ''
    returnType: Result
    signature: 'pub async fn get(&self, path: &str) -> Result<Option<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: create_trx
      Src: /src/opendal/core/services/foundationdb/src/core.rs:59,1
    - Dst: expect
      Src: /src/opendal/core/services/foundationdb/src/core.rs:59,1
    - Dst: set
      Src: /src/opendal/core/services/foundationdb/src/core.rs:61,1
    - Dst: as_bytes
      Src: /src/opendal/core/services/foundationdb/src/core.rs:61,1
    - Dst: Vec::to_vec
      Src: /src/opendal/core/services/foundationdb/src/core.rs:61,1
    - Dst: commit
      Src: /src/opendal/core/services/foundationdb/src/core.rs:63,1
    - Dst: Ok
      Src: /src/opendal/core/services/foundationdb/src/core.rs:64,1
    - Dst: Err
      Src: /src/opendal/core/services/foundationdb/src/core.rs:65,1
    - Dst: parse_transaction_commit_error
      Src: /src/opendal/core/services/foundationdb/src/core.rs:65,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 22
    argCount: 2
    argNames:
    - path
    - value
    argTypes:
    - '&str'
    - Buffer
    constantsTouched: []
    func_position:
      end: 67
      start: 58
    functionDepth: 34
    functionLinenumber: 58
    functionLinenumberEnd: 67
    functionName: FoundationdbCore::set
    functionSourceFile: /src/opendal/core/services/foundationdb/src/core.rs
    functionUses: 0
    functionsReached:
    - expect
    - as_bytes
    - Ok
    - set
    - Err
    - create_trx
    - Vec::to_vec
    - commit
    - parse_transaction_commit_error
    linkageType: ''
    returnType: Result
    signature: 'pub async fn set(&self, path: &str, value: Buffer) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: create_trx
      Src: /src/opendal/core/services/foundationdb/src/core.rs:70,1
    - Dst: expect
      Src: /src/opendal/core/services/foundationdb/src/core.rs:70,1
    - Dst: clear
      Src: /src/opendal/core/services/foundationdb/src/core.rs:71,1
    - Dst: as_bytes
      Src: /src/opendal/core/services/foundationdb/src/core.rs:71,1
    - Dst: commit
      Src: /src/opendal/core/services/foundationdb/src/core.rs:73,1
    - Dst: Ok
      Src: /src/opendal/core/services/foundationdb/src/core.rs:74,1
    - Dst: Err
      Src: /src/opendal/core/services/foundationdb/src/core.rs:75,1
    - Dst: parse_transaction_commit_error
      Src: /src/opendal/core/services/foundationdb/src/core.rs:75,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 19
    argCount: 1
    argNames:
    - path
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 77
      start: 69
    functionDepth: 37
    functionLinenumber: 69
    functionLinenumberEnd: 77
    functionName: FoundationdbCore::delete
    functionSourceFile: /src/opendal/core/services/foundationdb/src/core.rs
    functionUses: 0
    functionsReached:
    - as_bytes
    - expect
    - Ok
    - Err
    - commit
    - create_trx
    - clear
    - parse_transaction_commit_error
    linkageType: ''
    returnType: Result
    signature: 'pub async fn delete(&self, path: &str) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Error::new
      Src: /src/opendal/core/services/foundationdb/src/core.rs:81,1
    - Dst: Result::to_string
      Src: /src/opendal/core/services/foundationdb/src/core.rs:81,1
    - Dst: as_str
      Src: /src/opendal/core/services/foundationdb/src/core.rs:81,1
    - Dst: Self::with_context
      Src: /src/opendal/core/services/foundationdb/src/core.rs:81,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - e
    argTypes:
    - foundationdb::TransactionCommitError
    constantsTouched: []
    func_position:
      end: 83
      start: 80
    functionDepth: 36
    functionLinenumber: 80
    functionLinenumberEnd: 83
    functionName: parse_transaction_commit_error
    functionSourceFile: /src/opendal/core/services/foundationdb/src/core.rs
    functionUses: 2
    functionsReached:
    - as_str
    - Self::with_context
    - Result::to_string
    - Error::new
    linkageType: ''
    returnType: Error
    signature: 'fn parse_transaction_commit_error(e: foundationdb::TransactionCommitError)
      -> Error'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: oio::QueueBuf::new
      Src: /src/opendal/core/services/foundationdb/src/writer.rs:35,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - core
    - path
    argTypes:
    - Arc<FoundationdbCore>
    - String
    constantsTouched: []
    func_position:
      end: 37
      start: 31
    functionDepth: 4
    functionLinenumber: 31
    functionLinenumberEnd: 37
    functionName: FoundationdbWriter::new
    functionSourceFile: /src/opendal/core/services/foundationdb/src/writer.rs
    functionUses: 1
    functionsReached:
    - oio::QueueBuf::new
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(core: Arc<FoundationdbCore>, path: String) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: push
      Src: /src/opendal/core/services/foundationdb/src/writer.rs:42,1
    - Dst: Ok
      Src: /src/opendal/core/services/foundationdb/src/writer.rs:43,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - bs
    argTypes:
    - Buffer
    constantsTouched: []
    func_position:
      end: 44
      start: 41
    functionDepth: 5
    functionLinenumber: 41
    functionLinenumberEnd: 44
    functionName: FoundationdbWriter::write
    functionSourceFile: /src/opendal/core/services/foundationdb/src/writer.rs
    functionUses: 0
    functionsReached:
    - Ok
    - push
    linkageType: ''
    returnType: Result
    signature: 'async fn write(&mut self, bs: Buffer) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: clone
      Src: /src/opendal/core/services/foundationdb/src/writer.rs:47,1
    - Dst: collect
      Src: /src/opendal/core/services/foundationdb/src/writer.rs:47,1
    - Dst: io::Result::len
      Src: /src/opendal/core/services/foundationdb/src/writer.rs:48,1
    - Dst: set
      Src: /src/opendal/core/services/foundationdb/src/writer.rs:49,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/foundationdb/src/writer.rs:51,1
    - Dst: EntryMode::from_path
      Src: /src/opendal/core/services/foundationdb/src/writer.rs:51,1
    - Dst: Self::with_content_length
      Src: /src/opendal/core/services/foundationdb/src/writer.rs:51,1
    - Dst: Ok
      Src: /src/opendal/core/services/foundationdb/src/writer.rs:52,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 23
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 53
      start: 46
    functionDepth: 36
    functionLinenumber: 46
    functionLinenumberEnd: 53
    functionName: FoundationdbWriter::close
    functionSourceFile: /src/opendal/core/services/foundationdb/src/writer.rs
    functionUses: 0
    functionsReached:
    - collect
    - Metadata::new
    - Ok
    - io::Result::len
    - set
    - Self::with_content_length
    - clone
    - EntryMode::from_path
    linkageType: ''
    returnType: Result
    signature: async fn close(&mut self) -> Result<Metadata>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: clear
      Src: /src/opendal/core/services/foundationdb/src/writer.rs:56,1
    - Dst: Ok
      Src: /src/opendal/core/services/foundationdb/src/writer.rs:57,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 58
      start: 55
    functionDepth: 2
    functionLinenumber: 55
    functionLinenumberEnd: 58
    functionName: FoundationdbWriter::abort
    functionSourceFile: /src/opendal/core/services/foundationdb/src/writer.rs
    functionUses: 0
    functionsReached:
    - clear
    - Ok
    linkageType: ''
    returnType: Result
    signature: async fn abort(&mut self) -> Result<()>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: register::<Foundationdb>
      Src: /src/opendal/core/services/foundationdb/src/lib.rs:38,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - registry
    argTypes:
    - '&opendal_core::OperatorRegistry'
    constantsTouched: []
    func_position:
      end: 39
      start: 37
    functionDepth: 0
    functionLinenumber: 37
    functionLinenumberEnd: 39
    functionName: register_foundationdb_service
    functionSourceFile: /src/opendal/core/services/foundationdb/src/lib.rs
    functionUses: 1
    functionsReached:
    - register::<Foundationdb>
    linkageType: ''
    returnType: void
    signature: 'pub fn register_foundationdb_service(registry: &opendal_core::OperatorRegistry)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Some
      Src: /src/opendal/core/services/foundationdb/src/backend.rs:41,1
    - Dst: into
      Src: /src/opendal/core/services/foundationdb/src/backend.rs:41,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - path
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 43
      start: 40
    functionDepth: 29
    functionLinenumber: 40
    functionLinenumberEnd: 43
    functionName: FoundationdbBuilder::root
    functionSourceFile: /src/opendal/core/services/foundationdb/src/backend.rs
    functionUses: 0
    functionsReached:
    - into
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn root(mut self, path: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Some
      Src: /src/opendal/core/services/foundationdb/src/backend.rs:47,1
    - Dst: into
      Src: /src/opendal/core/services/foundationdb/src/backend.rs:47,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - path
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 49
      start: 46
    functionDepth: 29
    functionLinenumber: 46
    functionLinenumberEnd: 49
    functionName: FoundationdbBuilder::config_path
    functionSourceFile: /src/opendal/core/services/foundationdb/src/backend.rs
    functionUses: 0
    functionsReached:
    - into
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn config_path(mut self, path: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Arc::new
      Src: /src/opendal/core/services/foundationdb/src/backend.rs:56,1
    - Dst: foundationdb::boot
      Src: /src/opendal/core/services/foundationdb/src/backend.rs:56,1
    - Dst: Database::from_path
      Src: /src/opendal/core/services/foundationdb/src/backend.rs:59,1
    - Dst: Option::map_err
      Src: /src/opendal/core/services/foundationdb/src/backend.rs:59,1
    - Dst: Error::new
      Src: /src/opendal/core/services/foundationdb/src/backend.rs:60,1
    - Dst: Self::with_context
      Src: /src/opendal/core/services/foundationdb/src/backend.rs:60,1
    - Dst: Self::set_source
      Src: /src/opendal/core/services/foundationdb/src/backend.rs:60,1
    - Dst: Database::default
      Src: /src/opendal/core/services/foundationdb/src/backend.rs:65,1
    - Dst: Self::map_err
      Src: /src/opendal/core/services/foundationdb/src/backend.rs:65,1
    - Dst: Error::new
      Src: /src/opendal/core/services/foundationdb/src/backend.rs:66,1
    - Dst: Self::with_context
      Src: /src/opendal/core/services/foundationdb/src/backend.rs:66,1
    - Dst: Self::set_source
      Src: /src/opendal/core/services/foundationdb/src/backend.rs:66,1
    - Dst: Arc::new
      Src: /src/opendal/core/services/foundationdb/src/backend.rs:72,1
    - Dst: normalize_root
      Src: /src/opendal/core/services/foundationdb/src/backend.rs:74,1
    - Dst: clone
      Src: /src/opendal/core/services/foundationdb/src/backend.rs:75,1
    - Dst: unwrap_or_else
      Src: /src/opendal/core/services/foundationdb/src/backend.rs:75,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/foundationdb/src/backend.rs:78,1
    - Dst: as_str
      Src: /src/opendal/core/services/foundationdb/src/backend.rs:75,1
    - Dst: Ok
      Src: /src/opendal/core/services/foundationdb/src/backend.rs:82,1
    - Dst: FoundationdbBackend::new
      Src: /src/opendal/core/services/foundationdb/src/backend.rs:82,1
    - Dst: Self::with_normalized_root
      Src: /src/opendal/core/services/foundationdb/src/backend.rs:82,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 48
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 83
      start: 55
    functionDepth: 36
    functionLinenumber: 55
    functionLinenumberEnd: 83
    functionName: FoundationdbBuilder::build
    functionSourceFile: /src/opendal/core/services/foundationdb/src/backend.rs
    functionUses: 0
    functionsReached:
    - unwrap_or_else
    - Ok
    - Self::with_normalized_root
    - Self::with_context
    - Arc::new
    - FoundationdbBackend::new
    - normalize_root
    - foundationdb::boot
    - Error::new
    - clone
    - as_str
    - '&str::to_string'
    - Self::map_err
    - Self::set_source
    - Database::from_path
    - Database::default
    - Option::map_err
    linkageType: ''
    returnType: Result
    signature: fn build(self) -> Result<impl Service>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: ServiceInfo::new
      Src: /src/opendal/core/services/foundationdb/src/backend.rs:97,1
    - Dst: Default::default
      Src: /src/opendal/core/services/foundationdb/src/backend.rs:105,1
    - Dst: Arc::new
      Src: /src/opendal/core/services/foundationdb/src/backend.rs:109,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/foundationdb/src/backend.rs:110,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - core
    argTypes:
    - FoundationdbCore
    constantsTouched: []
    func_position:
      end: 114
      start: 96
    functionDepth: 33
    functionLinenumber: 96
    functionLinenumberEnd: 114
    functionName: FoundationdbBackend::new
    functionSourceFile: /src/opendal/core/services/foundationdb/src/backend.rs
    functionUses: 1
    functionsReached:
    - Arc::new
    - ServiceInfo::new
    - '&str::to_string'
    - Default::default
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(core: FoundationdbCore) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: with_root
      Src: /src/opendal/core/services/foundationdb/src/backend.rs:117,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 1
    argNames:
    - root
    argTypes:
    - String
    constantsTouched: []
    func_position:
      end: 120
      start: 116
    functionDepth: 33
    functionLinenumber: 116
    functionLinenumberEnd: 120
    functionName: FoundationdbBackend::with_normalized_root
    functionSourceFile: /src/opendal/core/services/foundationdb/src/backend.rs
    functionUses: 0
    functionsReached:
    - with_root
    linkageType: ''
    returnType: Self
    signature: 'fn with_normalized_root(mut self, root: String) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: clone
      Src: /src/opendal/core/services/foundationdb/src/backend.rs:131,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 132
      start: 130
    functionDepth: 2
    functionLinenumber: 130
    functionLinenumberEnd: 132
    functionName: FoundationdbBackend::info
    functionSourceFile: /src/opendal/core/services/foundationdb/src/backend.rs
    functionUses: 0
    functionsReached:
    - clone
    linkageType: ''
    returnType: ServiceInfo
    signature: fn info(&self) -> ServiceInfo
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 136
      start: 134
    functionDepth: 0
    functionLinenumber: 134
    functionLinenumberEnd: 136
    functionName: FoundationdbBackend::capability
    functionSourceFile: /src/opendal/core/services/foundationdb/src/backend.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Capability
    signature: fn capability(&self) -> Capability
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/core/services/foundationdb/src/backend.rs:144,1
    - Dst: Error::new
      Src: /src/opendal/core/services/foundationdb/src/backend.rs:144,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - _ctx
    - _path
    - _args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpCreateDir
    constantsTouched: []
    func_position:
      end: 148
      start: 138
    functionDepth: 36
    functionLinenumber: 138
    functionLinenumberEnd: 148
    functionName: FoundationdbBackend::create_dir
    functionSourceFile: /src/opendal/core/services/foundationdb/src/backend.rs
    functionUses: 0
    functionsReached:
    - Error::new
    - Err
    linkageType: ''
    returnType: Result
    signature: 'async fn create_dir(&self,_ctx: &OperationContext,_path: &str,_args:
      OpCreateDir,) -> Result<RpCreateDir>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/foundationdb/src/backend.rs:151,1
    - Dst: build_abs_path
      Src: /src/opendal/core/services/foundationdb/src/backend.rs:153,1
    - Dst: Ok
      Src: /src/opendal/core/services/foundationdb/src/backend.rs:154,1
    - Dst: RpStat::new
      Src: /src/opendal/core/services/foundationdb/src/backend.rs:154,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/foundationdb/src/backend.rs:154,1
    - Dst: get
      Src: /src/opendal/core/services/foundationdb/src/backend.rs:156,1
    - Dst: Ok
      Src: /src/opendal/core/services/foundationdb/src/backend.rs:158,1
    - Dst: RpStat::new
      Src: /src/opendal/core/services/foundationdb/src/backend.rs:158,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/foundationdb/src/backend.rs:159,1
    - Dst: Self::with_content_length
      Src: /src/opendal/core/services/foundationdb/src/backend.rs:159,1
    - Dst: Result::len
      Src: /src/opendal/core/services/foundationdb/src/backend.rs:159,1
    - Dst: Err
      Src: /src/opendal/core/services/foundationdb/src/backend.rs:161,1
    - Dst: Error::new
      Src: /src/opendal/core/services/foundationdb/src/backend.rs:161,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 30
    argCount: 3
    argNames:
    - _ctx
    - path
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpStat
    constantsTouched: []
    func_position:
      end: 167
      start: 150
    functionDepth: 36
    functionLinenumber: 150
    functionLinenumberEnd: 167
    functionName: FoundationdbBackend::stat
    functionSourceFile: /src/opendal/core/services/foundationdb/src/backend.rs
    functionUses: 0
    functionsReached:
    - Metadata::new
    - get
    - Ok
    - Self::with_content_length
    - RpStat::new
    - build_abs_path
    - Err
    - Error::new
    - Result::len
    linkageType: ''
    returnType: Result
    signature: 'async fn stat(&self, _ctx: &OperationContext, path: &str, _: OpStat)
      -> Result<RpStat>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/core/services/foundationdb/src/backend.rs:170,1
    - Dst: oio::StreamReader::new
      Src: /src/opendal/core/services/foundationdb/src/backend.rs:170,1
    - Dst: FoundationdbReader::new
      Src: /src/opendal/core/services/foundationdb/src/backend.rs:170,1
    - Dst: FoundationdbBackend::clone
      Src: /src/opendal/core/services/foundationdb/src/backend.rs:171,1
    - Dst: Ok
      Src: /src/opendal/core/services/foundationdb/src/backend.rs:177,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - _ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpRead
    constantsTouched: []
    func_position:
      end: 178
      start: 168
    functionDepth: 3
    functionLinenumber: 168
    functionLinenumberEnd: 178
    functionName: FoundationdbBackend::read
    functionSourceFile: /src/opendal/core/services/foundationdb/src/backend.rs
    functionUses: 0
    functionsReached:
    - oio::StreamReader::new
    - FoundationdbBackend::clone
    - FoundationdbReader::new
    - Ok
    linkageType: ''
    returnType: Result
    signature: 'fn read(&self, _ctx: &OperationContext, path: &str, args: OpRead)
      -> Result<Self::Reader>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/foundationdb/src/backend.rs:182,1
    - Dst: Ok
      Src: /src/opendal/core/services/foundationdb/src/backend.rs:183,1
    - Dst: FoundationdbWriter::new
      Src: /src/opendal/core/services/foundationdb/src/backend.rs:183,1
    - Dst: clone
      Src: /src/opendal/core/services/foundationdb/src/backend.rs:183,1
    - Dst: Ok
      Src: /src/opendal/core/services/foundationdb/src/backend.rs:186,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 3
    argNames:
    - _ctx
    - path
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpWrite
    constantsTouched: []
    func_position:
      end: 187
      start: 180
    functionDepth: 5
    functionLinenumber: 180
    functionLinenumberEnd: 187
    functionName: FoundationdbBackend::write
    functionSourceFile: /src/opendal/core/services/foundationdb/src/backend.rs
    functionUses: 0
    functionsReached:
    - FoundationdbWriter::new
    - Ok
    - clone
    - build_abs_path
    linkageType: ''
    returnType: Result
    signature: 'fn write(&self, _ctx: &OperationContext, path: &str, _: OpWrite) ->
      Result<Self::Writer>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/core/services/foundationdb/src/backend.rs:191,1
    - Dst: oio::OneShotDeleter::new
      Src: /src/opendal/core/services/foundationdb/src/backend.rs:191,1
    - Dst: FoundationdbDeleter::new
      Src: /src/opendal/core/services/foundationdb/src/backend.rs:191,1
    - Dst: clone
      Src: /src/opendal/core/services/foundationdb/src/backend.rs:192,1
    - Dst: clone
      Src: /src/opendal/core/services/foundationdb/src/backend.rs:193,1
    - Dst: Ok
      Src: /src/opendal/core/services/foundationdb/src/backend.rs:197,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 1
    argNames:
    - _ctx
    argTypes:
    - '&OperationContext'
    constantsTouched: []
    func_position:
      end: 198
      start: 189
    functionDepth: 2
    functionLinenumber: 189
    functionLinenumberEnd: 198
    functionName: FoundationdbBackend::delete
    functionSourceFile: /src/opendal/core/services/foundationdb/src/backend.rs
    functionUses: 0
    functionsReached:
    - oio::OneShotDeleter::new
    - FoundationdbDeleter::new
    - clone
    - Ok
    linkageType: ''
    returnType: Result
    signature: 'fn delete(&self, _ctx: &OperationContext) -> Result<Self::Deleter>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/core/services/foundationdb/src/backend.rs:201,1
    - Dst: Error::new
      Src: /src/opendal/core/services/foundationdb/src/backend.rs:201,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - _ctx
    - _path
    - _args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpList
    constantsTouched: []
    func_position:
      end: 205
      start: 200
    functionDepth: 36
    functionLinenumber: 200
    functionLinenumberEnd: 205
    functionName: FoundationdbBackend::list
    functionSourceFile: /src/opendal/core/services/foundationdb/src/backend.rs
    functionUses: 0
    functionsReached:
    - Error::new
    - Err
    linkageType: ''
    returnType: Result
    signature: 'fn list(&self, _ctx: &OperationContext, _path: &str, _args: OpList)
      -> Result<Self::Lister>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/core/services/foundationdb/src/backend.rs:215,1
    - Dst: Error::new
      Src: /src/opendal/core/services/foundationdb/src/backend.rs:215,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 5
    argNames:
    - _ctx
    - _from
    - _to
    - _args
    - _opts
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    - OpCopy
    - OpCopier
    constantsTouched: []
    func_position:
      end: 219
      start: 207
    functionDepth: 36
    functionLinenumber: 207
    functionLinenumberEnd: 219
    functionName: FoundationdbBackend::copy
    functionSourceFile: /src/opendal/core/services/foundationdb/src/backend.rs
    functionUses: 0
    functionsReached:
    - Error::new
    - Err
    linkageType: ''
    returnType: Result
    signature: 'fn copy(&self,_ctx: &OperationContext,_from: &str,_to: &str,_args:
      OpCopy,_opts: OpCopier,) -> Result<Self::Copier>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/core/services/foundationdb/src/backend.rs:228,1
    - Dst: Error::new
      Src: /src/opendal/core/services/foundationdb/src/backend.rs:228,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - _ctx
    - _from
    - _to
    - _args
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    - OpRename
    constantsTouched: []
    func_position:
      end: 232
      start: 221
    functionDepth: 36
    functionLinenumber: 221
    functionLinenumberEnd: 232
    functionName: FoundationdbBackend::rename
    functionSourceFile: /src/opendal/core/services/foundationdb/src/backend.rs
    functionUses: 0
    functionsReached:
    - Error::new
    - Err
    linkageType: ''
    returnType: Result
    signature: 'async fn rename(&self,_ctx: &OperationContext,_from: &str,_to: &str,_args:
      OpRename,) -> Result<RpRename>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/core/services/foundationdb/src/backend.rs:240,1
    - Dst: Error::new
      Src: /src/opendal/core/services/foundationdb/src/backend.rs:240,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - _ctx
    - _path
    - _args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpPresign
    constantsTouched: []
    func_position:
      end: 244
      start: 234
    functionDepth: 36
    functionLinenumber: 234
    functionLinenumberEnd: 244
    functionName: FoundationdbBackend::presign
    functionSourceFile: /src/opendal/core/services/foundationdb/src/backend.rs
    functionUses: 0
    functionsReached:
    - Error::new
    - Err
    linkageType: ''
    returnType: Result
    signature: 'async fn presign(&self,_ctx: &OperationContext,_path: &str,_args:
      OpPresign,) -> Result<RpPresign>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::debug_struct
      Src: /src/opendal/core/services/alluxio/src/config.rs:44,1
    - Dst: field
      Src: /src/opendal/core/services/alluxio/src/config.rs:44,1
    - Dst: field
      Src: /src/opendal/core/services/alluxio/src/config.rs:44,1
    - Dst: finish_non_exhaustive
      Src: /src/opendal/core/services/alluxio/src/config.rs:44,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 1
    argNames:
    - f
    argTypes:
    - '&mut std::fmt::Formatter<''_>'
    constantsTouched: []
    func_position:
      end: 48
      start: 43
    functionDepth: 5
    functionLinenumber: 43
    functionLinenumberEnd: 48
    functionName: AlluxioConfig::fmt
    functionSourceFile: /src/opendal/core/services/alluxio/src/config.rs
    functionUses: 0
    functionsReached:
    - field
    - Result::debug_struct
    - finish_non_exhaustive
    linkageType: ''
    returnType: std::fmt::Result
    signature: 'fn fmt(&self, f: &mut std::fmt::Formatter<''_>) -> std::fmt::Result'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::options
      Src: /src/opendal/core/services/alluxio/src/config.rs:55,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/alluxio/src/config.rs:55,1
    - Dst: Result::authority
      Src: /src/opendal/core/services/alluxio/src/config.rs:56,1
    - Dst: Result::insert
      Src: /src/opendal/core/services/alluxio/src/config.rs:57,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/alluxio/src/config.rs:57,1
    - Dst: Result::root
      Src: /src/opendal/core/services/alluxio/src/config.rs:60,1
    - Dst: Result::is_empty
      Src: /src/opendal/core/services/alluxio/src/config.rs:61,1
    - Dst: Result::insert
      Src: /src/opendal/core/services/alluxio/src/config.rs:63,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/alluxio/src/config.rs:63,1
    - Dst: Result::to_string
      Src: /src/opendal/core/services/alluxio/src/config.rs:63,1
    - Dst: Self::from_iter
      Src: /src/opendal/core/services/alluxio/src/config.rs:66,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 28
    argCount: 1
    argNames:
    - uri
    argTypes:
    - '&opendal_core::OperatorUri'
    constantsTouched: []
    func_position:
      end: 67
      start: 54
    functionDepth: 35
    functionLinenumber: 54
    functionLinenumberEnd: 67
    functionName: AlluxioConfig::from_uri
    functionSourceFile: /src/opendal/core/services/alluxio/src/config.rs
    functionUses: 1
    functionsReached:
    - Result::clone
    - Self::from_iter
    - Result::to_string
    - Result::insert
    - Result::is_empty
    - '&str::to_string'
    - Result::root
    - Result::authority
    - Result::options
    linkageType: ''
    returnType: opendal_core::Result
    signature: 'fn from_uri(uri: &opendal_core::OperatorUri) -> opendal_core::Result<Self>'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 71
      start: 69
    functionDepth: 0
    functionLinenumber: 69
    functionLinenumberEnd: 71
    functionName: AlluxioConfig::into_builder
    functionSourceFile: /src/opendal/core/services/alluxio/src/config.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Self::Builder
    signature: fn into_builder(self) -> Self::Builder
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - core
    - ctx
    argTypes:
    - Arc<AlluxioCore>
    - OperationContext
    constantsTouched: []
    func_position:
      end: 32
      start: 30
    functionDepth: 0
    functionLinenumber: 30
    functionLinenumberEnd: 32
    functionName: AlluxioDeleter::new
    functionSourceFile: /src/opendal/core/services/alluxio/src/deleter.rs
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(core: Arc<AlluxioCore>, ctx: OperationContext) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: delete
      Src: /src/opendal/core/services/alluxio/src/deleter.rs:37,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - path
    argTypes:
    - String
    - OpDelete
    constantsTouched: []
    func_position:
      end: 38
      start: 36
    functionDepth: 32
    functionLinenumber: 36
    functionLinenumberEnd: 38
    functionName: AlluxioDeleter::delete_once
    functionSourceFile: /src/opendal/core/services/alluxio/src/deleter.rs
    functionUses: 0
    functionsReached:
    - delete
    linkageType: ''
    returnType: Result
    signature: 'async fn delete_once(&self, path: String, _: OpDelete) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: to_string
      Src: /src/opendal/core/services/alluxio/src/lister.rs:39,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - core
    - ctx
    - path
    argTypes:
    - Arc<AlluxioCore>
    - OperationContext
    - '&str'
    constantsTouched: []
    func_position:
      end: 41
      start: 35
    functionDepth: 2
    functionLinenumber: 35
    functionLinenumberEnd: 41
    functionName: AlluxioLister::new
    functionSourceFile: /src/opendal/core/services/alluxio/src/lister.rs
    functionUses: 1
    functionsReached:
    - to_string
    linkageType: ''
    returnType: Self
    signature: 'pub(super) fn new(core: Arc<AlluxioCore>, ctx: OperationContext, path:
      &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: list_status
      Src: /src/opendal/core/services/alluxio/src/lister.rs:46,1
    - Dst: clone
      Src: /src/opendal/core/services/alluxio/src/lister.rs:53,1
    - Dst: push_back
      Src: /src/opendal/core/services/alluxio/src/lister.rs:59,1
    - Dst: Entry::new
      Src: /src/opendal/core/services/alluxio/src/lister.rs:59,1
    - Dst: build_rel_path
      Src: /src/opendal/core/services/alluxio/src/lister.rs:60,1
    - Dst: Result::try_into
      Src: /src/opendal/core/services/alluxio/src/lister.rs:61,1
    - Dst: Ok
      Src: /src/opendal/core/services/alluxio/src/lister.rs:65,1
    - Dst: Result::kind
      Src: /src/opendal/core/services/alluxio/src/lister.rs:68,1
    - Dst: Ok
      Src: /src/opendal/core/services/alluxio/src/lister.rs:70,1
    - Dst: Err
      Src: /src/opendal/core/services/alluxio/src/lister.rs:72,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 49
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - '&mut oio::PageContext'
    constantsTouched: []
    func_position:
      end: 75
      start: 45
    functionDepth: 38
    functionLinenumber: 45
    functionLinenumberEnd: 75
    functionName: AlluxioLister::next_page
    functionSourceFile: /src/opendal/core/services/alluxio/src/lister.rs
    functionUses: 0
    functionsReached:
    - Entry::new
    - Ok
    - push_back
    - clone
    - build_rel_path
    - Err
    - list_status
    - Result::kind
    - Result::try_into
    linkageType: ''
    returnType: Result
    signature: 'async fn next_page(&self, ctx: &mut oio::PageContext) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: to_string
      Src: /src/opendal/core/services/alluxio/src/reader.rs:41,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 4
    argNames:
    - backend
    - ctx
    - path
    argTypes:
    - AlluxioBackend
    - OperationContext
    - '&str'
    - OpRead
    constantsTouched: []
    func_position:
      end: 43
      start: 32
    functionDepth: 2
    functionLinenumber: 32
    functionLinenumberEnd: 43
    functionName: AlluxioReader::new
    functionSourceFile: /src/opendal/core/services/alluxio/src/reader.rs
    functionUses: 1
    functionsReached:
    - to_string
    linkageType: ''
    returnType: Self
    signature: 'pub(super) fn new(backend: AlluxioBackend,ctx: OperationContext,path:
      &str,_: OpRead,) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: as_str
      Src: /src/opendal/core/services/alluxio/src/reader.rs:49,1
    - Dst: open_file
      Src: /src/opendal/core/services/alluxio/src/reader.rs:50,1
    - Dst: read
      Src: /src/opendal/core/services/alluxio/src/reader.rs:52,1
    - Dst: status
      Src: /src/opendal/core/services/alluxio/src/reader.rs:53,1
    - Dst: is_success
      Src: /src/opendal/core/services/alluxio/src/reader.rs:53,1
    - Dst: into_parts
      Src: /src/opendal/core/services/alluxio/src/reader.rs:54,1
    - Dst: to_buffer
      Src: /src/opendal/core/services/alluxio/src/reader.rs:55,1
    - Dst: Err
      Src: /src/opendal/core/services/alluxio/src/reader.rs:56,1
    - Dst: super::core::parse_error
      Src: /src/opendal/core/services/alluxio/src/reader.rs:56,1
    - Dst: Response::from_parts
      Src: /src/opendal/core/services/alluxio/src/reader.rs:56,1
    - Dst: RpRead::new
      Src: /src/opendal/core/services/alluxio/src/reader.rs:59,1
    - Dst: parse_into_metadata
      Src: /src/opendal/core/services/alluxio/src/reader.rs:59,1
    - Dst: headers
      Src: /src/opendal/core/services/alluxio/src/reader.rs:59,1
    - Dst: into_body
      Src: /src/opendal/core/services/alluxio/src/reader.rs:60,1
    - Dst: Ok
      Src: /src/opendal/core/services/alluxio/src/reader.rs:62,1
    - Dst: Box::new
      Src: /src/opendal/core/services/alluxio/src/reader.rs:62,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 48
    argCount: 1
    argNames:
    - range
    argTypes:
    - BytesRange
    constantsTouched: []
    func_position:
      end: 63
      start: 47
    functionDepth: 38
    functionLinenumber: 47
    functionLinenumberEnd: 63
    functionName: AlluxioReader::open
    functionSourceFile: /src/opendal/core/services/alluxio/src/reader.rs
    functionUses: 0
    functionsReached:
    - read
    - is_success
    - to_buffer
    - parse_into_metadata
    - status
    - Ok
    - Box::new
    - into_body
    - Err
    - Response::from_parts
    - as_str
    - headers
    - into_parts
    - open_file
    - RpRead::new
    - super::core::parse_error
    linkageType: ''
    returnType: Result
    signature: 'async fn open(&self, range: BytesRange) -> Result<(RpRead, Box<dyn
      oio::ReadStreamDyn>)>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::debug_struct
      Src: /src/opendal/core/services/alluxio/src/core.rs:43,1
    - Dst: field
      Src: /src/opendal/core/services/alluxio/src/core.rs:43,1
    - Dst: field
      Src: /src/opendal/core/services/alluxio/src/core.rs:43,1
    - Dst: finish_non_exhaustive
      Src: /src/opendal/core/services/alluxio/src/core.rs:43,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 1
    argNames:
    - f
    argTypes:
    - '&mut std::fmt::Formatter<''_>'
    constantsTouched: []
    func_position:
      end: 47
      start: 42
    functionDepth: 5
    functionLinenumber: 42
    functionLinenumberEnd: 47
    functionName: AlluxioCore::fmt
    functionSourceFile: /src/opendal/core/services/alluxio/src/core.rs
    functionUses: 0
    functionsReached:
    - field
    - Result::debug_struct
    - finish_non_exhaustive
    linkageType: ''
    returnType: std::fmt::Result
    signature: 'fn fmt(&self, f: &mut std::fmt::Formatter<''_>) -> std::fmt::Result'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_rooted_abs_path
      Src: /src/opendal/core/services/alluxio/src/core.rs:52,1
    - Dst: Some
      Src: /src/opendal/core/services/alluxio/src/core.rs:55,1
    - Dst: Some
      Src: /src/opendal/core/services/alluxio/src/core.rs:56,1
    - Dst: serde_json::to_vec
      Src: /src/opendal/core/services/alluxio/src/core.rs:59,1
    - Dst: Vec::map_err
      Src: /src/opendal/core/services/alluxio/src/core.rs:59,1
    - Dst: bytes::Bytes::from
      Src: /src/opendal/core/services/alluxio/src/core.rs:60,1
    - Dst: Request::post
      Src: /src/opendal/core/services/alluxio/src/core.rs:62,1
    - Dst: header
      Src: /src/opendal/core/services/alluxio/src/core.rs:68,1
    - Dst: extension
      Src: /src/opendal/core/services/alluxio/src/core.rs:70,1
    - Dst: extension
      Src: /src/opendal/core/services/alluxio/src/core.rs:70,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/alluxio/src/core.rs:72,1
    - Dst: body
      Src: /src/opendal/core/services/alluxio/src/core.rs:74,1
    - Dst: Buffer::from
      Src: /src/opendal/core/services/alluxio/src/core.rs:75,1
    - Dst: map_err
      Src: /src/opendal/core/services/alluxio/src/core.rs:74,1
    - Dst: Result::http_transport
      Src: /src/opendal/core/services/alluxio/src/core.rs:78,1
    - Dst: Self::send
      Src: /src/opendal/core/services/alluxio/src/core.rs:78,1
    - Dst: status
      Src: /src/opendal/core/services/alluxio/src/core.rs:80,1
    - Dst: Ok
      Src: /src/opendal/core/services/alluxio/src/core.rs:82,1
    - Dst: Err
      Src: /src/opendal/core/services/alluxio/src/core.rs:83,1
    - Dst: parse_error
      Src: /src/opendal/core/services/alluxio/src/core.rs:83,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 42
    argCount: 2
    argNames:
    - ctx
    - path
    argTypes:
    - '&OperationContext'
    - '&str'
    constantsTouched: []
    func_position:
      end: 85
      start: 51
    functionDepth: 40
    functionLinenumber: 51
    functionLinenumberEnd: 85
    functionName: AlluxioCore::create_dir
    functionSourceFile: /src/opendal/core/services/alluxio/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - extension
    - status
    - Self::send
    - Ok
    - Request::post
    - body
    - build_rooted_abs_path
    - parse_error
    - Some
    - Err
    - Buffer::from
    - Vec::map_err
    - ServiceOperation
    - bytes::Bytes::from
    - Result::http_transport
    - serde_json::to_vec
    - header
    linkageType: ''
    returnType: Result
    signature: 'pub async fn create_dir(&self, ctx: &OperationContext, path: &str)
      -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_rooted_abs_path
      Src: /src/opendal/core/services/alluxio/src/core.rs:88,1
    - Dst: Some
      Src: /src/opendal/core/services/alluxio/src/core.rs:91,1
    - Dst: serde_json::to_vec
      Src: /src/opendal/core/services/alluxio/src/core.rs:94,1
    - Dst: Vec::map_err
      Src: /src/opendal/core/services/alluxio/src/core.rs:94,1
    - Dst: bytes::Bytes::from
      Src: /src/opendal/core/services/alluxio/src/core.rs:95,1
    - Dst: Request::post
      Src: /src/opendal/core/services/alluxio/src/core.rs:96,1
    - Dst: header
      Src: /src/opendal/core/services/alluxio/src/core.rs:102,1
    - Dst: extension
      Src: /src/opendal/core/services/alluxio/src/core.rs:104,1
    - Dst: extension
      Src: /src/opendal/core/services/alluxio/src/core.rs:104,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/alluxio/src/core.rs:106,1
    - Dst: body
      Src: /src/opendal/core/services/alluxio/src/core.rs:108,1
    - Dst: Buffer::from
      Src: /src/opendal/core/services/alluxio/src/core.rs:109,1
    - Dst: map_err
      Src: /src/opendal/core/services/alluxio/src/core.rs:108,1
    - Dst: Result::http_transport
      Src: /src/opendal/core/services/alluxio/src/core.rs:112,1
    - Dst: Self::send
      Src: /src/opendal/core/services/alluxio/src/core.rs:112,1
    - Dst: status
      Src: /src/opendal/core/services/alluxio/src/core.rs:113,1
    - Dst: into_body
      Src: /src/opendal/core/services/alluxio/src/core.rs:117,1
    - Dst: serde_json::from_reader
      Src: /src/opendal/core/services/alluxio/src/core.rs:119,1
    - Dst: Result::reader
      Src: /src/opendal/core/services/alluxio/src/core.rs:119,1
    - Dst: map_err
      Src: /src/opendal/core/services/alluxio/src/core.rs:119,1
    - Dst: Ok
      Src: /src/opendal/core/services/alluxio/src/core.rs:120,1
    - Dst: Err
      Src: /src/opendal/core/services/alluxio/src/core.rs:122,1
    - Dst: parse_error
      Src: /src/opendal/core/services/alluxio/src/core.rs:122,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 48
    argCount: 2
    argNames:
    - ctx
    - path
    argTypes:
    - '&OperationContext'
    - '&str'
    constantsTouched: []
    func_position:
      end: 124
      start: 87
    functionDepth: 40
    functionLinenumber: 87
    functionLinenumberEnd: 124
    functionName: AlluxioCore::create_file
    functionSourceFile: /src/opendal/core/services/alluxio/src/core.rs
    functionUses: 0
    functionsReached:
    - status
    - Self::send
    - serde_json::from_reader
    - Result::reader
    - map_err
    - extension
    - Ok
    - ServiceOperation
    - Result::http_transport
    - Buffer::from
    - parse_error
    - into_body
    - build_rooted_abs_path
    - Some
    - bytes::Bytes::from
    - Request::post
    - body
    - Err
    - Vec::map_err
    - serde_json::to_vec
    - header
    linkageType: ''
    returnType: Result
    signature: 'pub async fn create_file(&self, ctx: &OperationContext, path: &str)
      -> Result<u64>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_rooted_abs_path
      Src: /src/opendal/core/services/alluxio/src/core.rs:127,1
    - Dst: Request::post
      Src: /src/opendal/core/services/alluxio/src/core.rs:129,1
    - Dst: extension
      Src: /src/opendal/core/services/alluxio/src/core.rs:135,1
    - Dst: extension
      Src: /src/opendal/core/services/alluxio/src/core.rs:135,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/alluxio/src/core.rs:137,1
    - Dst: body
      Src: /src/opendal/core/services/alluxio/src/core.rs:139,1
    - Dst: Buffer::new
      Src: /src/opendal/core/services/alluxio/src/core.rs:139,1
    - Dst: map_err
      Src: /src/opendal/core/services/alluxio/src/core.rs:139,1
    - Dst: Result::http_transport
      Src: /src/opendal/core/services/alluxio/src/core.rs:140,1
    - Dst: Self::send
      Src: /src/opendal/core/services/alluxio/src/core.rs:140,1
    - Dst: status
      Src: /src/opendal/core/services/alluxio/src/core.rs:142,1
    - Dst: into_body
      Src: /src/opendal/core/services/alluxio/src/core.rs:146,1
    - Dst: serde_json::from_reader
      Src: /src/opendal/core/services/alluxio/src/core.rs:148,1
    - Dst: reader
      Src: /src/opendal/core/services/alluxio/src/core.rs:148,1
    - Dst: map_err
      Src: /src/opendal/core/services/alluxio/src/core.rs:148,1
    - Dst: Ok
      Src: /src/opendal/core/services/alluxio/src/core.rs:149,1
    - Dst: Err
      Src: /src/opendal/core/services/alluxio/src/core.rs:151,1
    - Dst: parse_error
      Src: /src/opendal/core/services/alluxio/src/core.rs:151,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 36
    argCount: 2
    argNames:
    - ctx
    - path
    argTypes:
    - '&OperationContext'
    - '&str'
    constantsTouched: []
    func_position:
      end: 153
      start: 126
    functionDepth: 37
    functionLinenumber: 126
    functionLinenumberEnd: 153
    functionName: AlluxioCore::open_file
    functionSourceFile: /src/opendal/core/services/alluxio/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - extension
    - Buffer::new
    - reader
    - status
    - Self::send
    - Ok
    - serde_json::from_reader
    - Request::post
    - body
    - build_rooted_abs_path
    - into_body
    - Err
    - parse_error
    - ServiceOperation
    - Result::http_transport
    linkageType: ''
    returnType: Result
    signature: 'pub(super) async fn open_file(&self, ctx: &OperationContext, path:
      &str) -> Result<u64>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_rooted_abs_path
      Src: /src/opendal/core/services/alluxio/src/core.rs:156,1
    - Dst: Request::post
      Src: /src/opendal/core/services/alluxio/src/core.rs:158,1
    - Dst: extension
      Src: /src/opendal/core/services/alluxio/src/core.rs:164,1
    - Dst: extension
      Src: /src/opendal/core/services/alluxio/src/core.rs:164,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/alluxio/src/core.rs:166,1
    - Dst: body
      Src: /src/opendal/core/services/alluxio/src/core.rs:168,1
    - Dst: Buffer::new
      Src: /src/opendal/core/services/alluxio/src/core.rs:168,1
    - Dst: map_err
      Src: /src/opendal/core/services/alluxio/src/core.rs:168,1
    - Dst: Result::http_transport
      Src: /src/opendal/core/services/alluxio/src/core.rs:169,1
    - Dst: Self::send
      Src: /src/opendal/core/services/alluxio/src/core.rs:169,1
    - Dst: status
      Src: /src/opendal/core/services/alluxio/src/core.rs:171,1
    - Dst: Ok
      Src: /src/opendal/core/services/alluxio/src/core.rs:174,1
    - Dst: parse_error
      Src: /src/opendal/core/services/alluxio/src/core.rs:176,1
    - Dst: Error::kind
      Src: /src/opendal/core/services/alluxio/src/core.rs:177,1
    - Dst: Ok
      Src: /src/opendal/core/services/alluxio/src/core.rs:178,1
    - Dst: Err
      Src: /src/opendal/core/services/alluxio/src/core.rs:180,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 38
    argCount: 2
    argNames:
    - ctx
    - path
    argTypes:
    - '&OperationContext'
    - '&str'
    constantsTouched: []
    func_position:
      end: 183
      start: 155
    functionDepth: 37
    functionLinenumber: 155
    functionLinenumberEnd: 183
    functionName: AlluxioCore::delete
    functionSourceFile: /src/opendal/core/services/alluxio/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - extension
    - Buffer::new
    - status
    - Self::send
    - Ok
    - Request::post
    - body
    - build_rooted_abs_path
    - parse_error
    - Err
    - Error::kind
    - ServiceOperation
    - Result::http_transport
    linkageType: ''
    returnType: Result
    signature: 'pub(super) async fn delete(&self, ctx: &OperationContext, path: &str)
      -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_rooted_abs_path
      Src: /src/opendal/core/services/alluxio/src/core.rs:186,1
    - Dst: build_rooted_abs_path
      Src: /src/opendal/core/services/alluxio/src/core.rs:187,1
    - Dst: Request::post
      Src: /src/opendal/core/services/alluxio/src/core.rs:189,1
    - Dst: extension
      Src: /src/opendal/core/services/alluxio/src/core.rs:196,1
    - Dst: extension
      Src: /src/opendal/core/services/alluxio/src/core.rs:196,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/alluxio/src/core.rs:198,1
    - Dst: body
      Src: /src/opendal/core/services/alluxio/src/core.rs:200,1
    - Dst: Buffer::new
      Src: /src/opendal/core/services/alluxio/src/core.rs:200,1
    - Dst: map_err
      Src: /src/opendal/core/services/alluxio/src/core.rs:200,1
    - Dst: Result::http_transport
      Src: /src/opendal/core/services/alluxio/src/core.rs:202,1
    - Dst: Self::send
      Src: /src/opendal/core/services/alluxio/src/core.rs:202,1
    - Dst: status
      Src: /src/opendal/core/services/alluxio/src/core.rs:204,1
    - Dst: Ok
      Src: /src/opendal/core/services/alluxio/src/core.rs:207,1
    - Dst: Err
      Src: /src/opendal/core/services/alluxio/src/core.rs:208,1
    - Dst: parse_error
      Src: /src/opendal/core/services/alluxio/src/core.rs:208,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 32
    argCount: 3
    argNames:
    - ctx
    - path
    - dst
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    constantsTouched: []
    func_position:
      end: 210
      start: 185
    functionDepth: 37
    functionLinenumber: 185
    functionLinenumberEnd: 210
    functionName: AlluxioCore::rename
    functionSourceFile: /src/opendal/core/services/alluxio/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - extension
    - Buffer::new
    - status
    - Self::send
    - Ok
    - Request::post
    - body
    - build_rooted_abs_path
    - parse_error
    - Err
    - ServiceOperation
    - Result::http_transport
    linkageType: ''
    returnType: Result
    signature: 'pub(super) async fn rename(&self, ctx: &OperationContext, path: &str,
      dst: &str) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_rooted_abs_path
      Src: /src/opendal/core/services/alluxio/src/core.rs:213,1
    - Dst: Request::post
      Src: /src/opendal/core/services/alluxio/src/core.rs:215,1
    - Dst: extension
      Src: /src/opendal/core/services/alluxio/src/core.rs:221,1
    - Dst: extension
      Src: /src/opendal/core/services/alluxio/src/core.rs:221,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/alluxio/src/core.rs:223,1
    - Dst: body
      Src: /src/opendal/core/services/alluxio/src/core.rs:225,1
    - Dst: Buffer::new
      Src: /src/opendal/core/services/alluxio/src/core.rs:225,1
    - Dst: map_err
      Src: /src/opendal/core/services/alluxio/src/core.rs:225,1
    - Dst: Result::http_transport
      Src: /src/opendal/core/services/alluxio/src/core.rs:227,1
    - Dst: Self::send
      Src: /src/opendal/core/services/alluxio/src/core.rs:227,1
    - Dst: status
      Src: /src/opendal/core/services/alluxio/src/core.rs:229,1
    - Dst: into_body
      Src: /src/opendal/core/services/alluxio/src/core.rs:233,1
    - Dst: serde_json::from_reader
      Src: /src/opendal/core/services/alluxio/src/core.rs:235,1
    - Dst: reader
      Src: /src/opendal/core/services/alluxio/src/core.rs:235,1
    - Dst: map_err
      Src: /src/opendal/core/services/alluxio/src/core.rs:235,1
    - Dst: Ok
      Src: /src/opendal/core/services/alluxio/src/core.rs:236,1
    - Dst: Err
      Src: /src/opendal/core/services/alluxio/src/core.rs:238,1
    - Dst: parse_error
      Src: /src/opendal/core/services/alluxio/src/core.rs:238,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 36
    argCount: 2
    argNames:
    - ctx
    - path
    argTypes:
    - '&OperationContext'
    - '&str'
    constantsTouched: []
    func_position:
      end: 240
      start: 212
    functionDepth: 37
    functionLinenumber: 212
    functionLinenumberEnd: 240
    functionName: AlluxioCore::get_status
    functionSourceFile: /src/opendal/core/services/alluxio/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - extension
    - Buffer::new
    - reader
    - status
    - Self::send
    - Ok
    - serde_json::from_reader
    - Request::post
    - body
    - build_rooted_abs_path
    - into_body
    - Err
    - parse_error
    - ServiceOperation
    - Result::http_transport
    linkageType: ''
    returnType: Result
    signature: 'pub(super) async fn get_status(&self, ctx: &OperationContext, path:
      &str) -> Result<FileInfo>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_rooted_abs_path
      Src: /src/opendal/core/services/alluxio/src/core.rs:247,1
    - Dst: Request::post
      Src: /src/opendal/core/services/alluxio/src/core.rs:249,1
    - Dst: extension
      Src: /src/opendal/core/services/alluxio/src/core.rs:255,1
    - Dst: extension
      Src: /src/opendal/core/services/alluxio/src/core.rs:255,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/alluxio/src/core.rs:257,1
    - Dst: body
      Src: /src/opendal/core/services/alluxio/src/core.rs:259,1
    - Dst: Buffer::new
      Src: /src/opendal/core/services/alluxio/src/core.rs:259,1
    - Dst: map_err
      Src: /src/opendal/core/services/alluxio/src/core.rs:259,1
    - Dst: Result::http_transport
      Src: /src/opendal/core/services/alluxio/src/core.rs:261,1
    - Dst: Self::send
      Src: /src/opendal/core/services/alluxio/src/core.rs:261,1
    - Dst: status
      Src: /src/opendal/core/services/alluxio/src/core.rs:263,1
    - Dst: into_body
      Src: /src/opendal/core/services/alluxio/src/core.rs:267,1
    - Dst: serde_json::from_reader
      Src: /src/opendal/core/services/alluxio/src/core.rs:269,1
    - Dst: reader
      Src: /src/opendal/core/services/alluxio/src/core.rs:269,1
    - Dst: map_err
      Src: /src/opendal/core/services/alluxio/src/core.rs:269,1
    - Dst: Ok
      Src: /src/opendal/core/services/alluxio/src/core.rs:270,1
    - Dst: Err
      Src: /src/opendal/core/services/alluxio/src/core.rs:272,1
    - Dst: parse_error
      Src: /src/opendal/core/services/alluxio/src/core.rs:272,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 36
    argCount: 2
    argNames:
    - ctx
    - path
    argTypes:
    - '&OperationContext'
    - '&str'
    constantsTouched: []
    func_position:
      end: 274
      start: 242
    functionDepth: 37
    functionLinenumber: 242
    functionLinenumberEnd: 274
    functionName: AlluxioCore::list_status
    functionSourceFile: /src/opendal/core/services/alluxio/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - extension
    - Buffer::new
    - reader
    - status
    - Self::send
    - Ok
    - serde_json::from_reader
    - Request::post
    - body
    - build_rooted_abs_path
    - into_body
    - Err
    - parse_error
    - ServiceOperation
    - Result::http_transport
    linkageType: ''
    returnType: Result
    signature: 'pub(super) async fn list_status(&self,ctx: &OperationContext,path:
      &str,) -> Result<Vec<FileInfo>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: (Vec::is_full
      Src: /src/opendal/core/services/alluxio/src/core.rs:282,1
    - Dst: Err
      Src: /src/opendal/core/services/alluxio/src/core.rs:283,1
    - Dst: Error::new
      Src: /src/opendal/core/services/alluxio/src/core.rs:283,1
    - Dst: Self::with_context
      Src: /src/opendal/core/services/alluxio/src/core.rs:283,1
    - Dst: Request::post
      Src: /src/opendal/core/services/alluxio/src/core.rs:290,1
    - Dst: extension
      Src: /src/opendal/core/services/alluxio/src/core.rs:295,1
    - Dst: extension
      Src: /src/opendal/core/services/alluxio/src/core.rs:295,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/alluxio/src/core.rs:297,1
    - Dst: body
      Src: /src/opendal/core/services/alluxio/src/core.rs:299,1
    - Dst: Buffer::new
      Src: /src/opendal/core/services/alluxio/src/core.rs:299,1
    - Dst: map_err
      Src: /src/opendal/core/services/alluxio/src/core.rs:299,1
    - Dst: Result::http_transport
      Src: /src/opendal/core/services/alluxio/src/core.rs:301,1
    - Dst: Self::fetch
      Src: /src/opendal/core/services/alluxio/src/core.rs:301,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 28
    argCount: 3
    argNames:
    - ctx
    - stream_id
    - range
    argTypes:
    - '&OperationContext'
    - u64
    - BytesRange
    constantsTouched: []
    func_position:
      end: 302
      start: 276
    functionDepth: 36
    functionLinenumber: 276
    functionLinenumberEnd: 302
    functionName: AlluxioCore::read
    functionSourceFile: /src/opendal/core/services/alluxio/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - extension
    - Buffer::new
    - (Vec::is_full
    - Request::post
    - body
    - Error::new
    - Err
    - Self::fetch
    - ServiceOperation
    - Result::http_transport
    - Self::with_context
    linkageType: ''
    returnType: Result
    signature: 'pub async fn read(&self,ctx: &OperationContext,stream_id: u64,range:
      BytesRange,) -> Result<Response<HttpBody>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Request::post
      Src: /src/opendal/core/services/alluxio/src/core.rs:310,1
    - Dst: extension
      Src: /src/opendal/core/services/alluxio/src/core.rs:315,1
    - Dst: extension
      Src: /src/opendal/core/services/alluxio/src/core.rs:315,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/alluxio/src/core.rs:317,1
    - Dst: body
      Src: /src/opendal/core/services/alluxio/src/core.rs:319,1
    - Dst: map_err
      Src: /src/opendal/core/services/alluxio/src/core.rs:319,1
    - Dst: Result::http_transport
      Src: /src/opendal/core/services/alluxio/src/core.rs:321,1
    - Dst: Self::send
      Src: /src/opendal/core/services/alluxio/src/core.rs:321,1
    - Dst: status
      Src: /src/opendal/core/services/alluxio/src/core.rs:323,1
    - Dst: into_body
      Src: /src/opendal/core/services/alluxio/src/core.rs:327,1
    - Dst: serde_json::from_reader
      Src: /src/opendal/core/services/alluxio/src/core.rs:329,1
    - Dst: Buffer::reader
      Src: /src/opendal/core/services/alluxio/src/core.rs:329,1
    - Dst: map_err
      Src: /src/opendal/core/services/alluxio/src/core.rs:329,1
    - Dst: Ok
      Src: /src/opendal/core/services/alluxio/src/core.rs:330,1
    - Dst: Err
      Src: /src/opendal/core/services/alluxio/src/core.rs:332,1
    - Dst: parse_error
      Src: /src/opendal/core/services/alluxio/src/core.rs:332,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 32
    argCount: 3
    argNames:
    - ctx
    - stream_id
    - body
    argTypes:
    - '&OperationContext'
    - u64
    - Buffer
    constantsTouched: []
    func_position:
      end: 334
      start: 304
    functionDepth: 37
    functionLinenumber: 304
    functionLinenumberEnd: 334
    functionName: AlluxioCore::write
    functionSourceFile: /src/opendal/core/services/alluxio/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - extension
    - Buffer::reader
    - status
    - Self::send
    - Ok
    - serde_json::from_reader
    - Request::post
    - body
    - into_body
    - parse_error
    - Err
    - ServiceOperation
    - Result::http_transport
    linkageType: ''
    returnType: Result
    signature: 'pub(super) async fn write(&self,ctx: &OperationContext,stream_id:
      u64,body: Buffer,) -> Result<usize>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Request::post
      Src: /src/opendal/core/services/alluxio/src/core.rs:337,1
    - Dst: extension
      Src: /src/opendal/core/services/alluxio/src/core.rs:342,1
    - Dst: extension
      Src: /src/opendal/core/services/alluxio/src/core.rs:342,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/alluxio/src/core.rs:344,1
    - Dst: body
      Src: /src/opendal/core/services/alluxio/src/core.rs:346,1
    - Dst: Buffer::new
      Src: /src/opendal/core/services/alluxio/src/core.rs:346,1
    - Dst: map_err
      Src: /src/opendal/core/services/alluxio/src/core.rs:346,1
    - Dst: Result::http_transport
      Src: /src/opendal/core/services/alluxio/src/core.rs:348,1
    - Dst: Self::send
      Src: /src/opendal/core/services/alluxio/src/core.rs:348,1
    - Dst: status
      Src: /src/opendal/core/services/alluxio/src/core.rs:350,1
    - Dst: Ok
      Src: /src/opendal/core/services/alluxio/src/core.rs:353,1
    - Dst: Err
      Src: /src/opendal/core/services/alluxio/src/core.rs:354,1
    - Dst: parse_error
      Src: /src/opendal/core/services/alluxio/src/core.rs:354,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 26
    argCount: 2
    argNames:
    - ctx
    - stream_id
    argTypes:
    - '&OperationContext'
    - u64
    constantsTouched: []
    func_position:
      end: 356
      start: 336
    functionDepth: 37
    functionLinenumber: 336
    functionLinenumberEnd: 356
    functionName: AlluxioCore::close
    functionSourceFile: /src/opendal/core/services/alluxio/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - extension
    - Buffer::new
    - status
    - Self::send
    - Ok
    - Request::post
    - body
    - parse_error
    - Err
    - ServiceOperation
    - Result::http_transport
    linkageType: ''
    returnType: Result
    signature: 'pub(super) async fn close(&self, ctx: &OperationContext, stream_id:
      u64) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: ServiceInfo::new
      Src: /src/opendal/core/services/alluxio/src/core.rs:366,1
    - Dst: Capability::default
      Src: /src/opendal/core/services/alluxio/src/core.rs:367,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/alluxio/src/core.rs:368,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/alluxio/src/core.rs:369,1
    - Dst: OperationContext::new
      Src: /src/opendal/core/services/alluxio/src/core.rs:372,1
    - Dst: CompfsCore::read
      Src: /src/opendal/core/services/alluxio/src/core.rs:373,1
    - Dst: BytesRange::from
      Src: /src/opendal/core/services/alluxio/src/core.rs:373,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 16
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 379
      start: 364
    functionDepth: 33
    functionLinenumber: 364
    functionLinenumberEnd: 379
    functionName: tests::test_read_rejects_range
    functionSourceFile: /src/opendal/core/services/alluxio/src/core.rs
    functionUses: 0
    functionsReached:
    - ServiceInfo::new
    - BytesRange::from
    - OperationContext::new
    - Capability::default
    - CompfsCore::read
    - '&str::to_string'
    linkageType: ''
    returnType: void
    signature: async fn test_read_rejects_range()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Metadata::new
      Src: /src/opendal/core/services/alluxio/src/core.rs:416,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/alluxio/src/core.rs:418,1
    - Dst: anyhow::Result::set_content_length
      Src: /src/opendal/core/services/alluxio/src/core.rs:420,1
    - Dst: '&mut Self::set_last_modified'
      Src: /src/opendal/core/services/alluxio/src/core.rs:420,1
    - Dst: Timestamp::from_millisecond
      Src: /src/opendal/core/services/alluxio/src/core.rs:422,1
    - Dst: Ok
      Src: /src/opendal/core/services/alluxio/src/core.rs:425,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 1
    argNames:
    - file_info
    argTypes:
    - FileInfo
    constantsTouched: []
    func_position:
      end: 426
      start: 414
    functionDepth: 37
    functionLinenumber: 414
    functionLinenumberEnd: 426
    functionName: Metadata::try_from
    functionSourceFile: /src/opendal/core/services/alluxio/src/core.rs
    functionUses: 0
    functionsReached:
    - Metadata::new
    - anyhow::Result::set_content_length
    - Ok
    - '&mut Self::set_last_modified'
    - Timestamp::from_millisecond
    linkageType: ''
    returnType: Result
    signature: 'fn try_from(file_info: FileInfo) -> Result<Metadata>'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 4
    argNames:
    - core
    - ctx
    - _op
    - path
    argTypes:
    - Arc<AlluxioCore>
    - OperationContext
    - OpWrite
    - String
    constantsTouched: []
    func_position:
      end: 44
      start: 36
    functionDepth: 0
    functionLinenumber: 36
    functionLinenumberEnd: 44
    functionName: AlluxioWriter::new
    functionSourceFile: /src/opendal/core/services/alluxio/src/writer.rs
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(core: Arc<AlluxioCore>, ctx: OperationContext, _op: OpWrite,
      path: String) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: create_file
      Src: /src/opendal/core/services/alluxio/src/writer.rs:52,1
    - Dst: Some
      Src: /src/opendal/core/services/alluxio/src/writer.rs:53,1
    - Dst: write
      Src: /src/opendal/core/services/alluxio/src/writer.rs:57,1
    - Dst: Ok
      Src: /src/opendal/core/services/alluxio/src/writer.rs:58,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 25
    argCount: 1
    argNames:
    - bs
    argTypes:
    - Buffer
    constantsTouched: []
    func_position:
      end: 59
      start: 48
    functionDepth: 33
    functionLinenumber: 48
    functionLinenumberEnd: 59
    functionName: AlluxioWriter::write
    functionSourceFile: /src/opendal/core/services/alluxio/src/writer.rs
    functionUses: 0
    functionsReached:
    - write
    - create_file
    - Ok
    - Some
    linkageType: ''
    returnType: Result
    signature: 'async fn write(&mut self, bs: Buffer) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/core/services/alluxio/src/writer.rs:63,1
    - Dst: Metadata::default
      Src: /src/opendal/core/services/alluxio/src/writer.rs:63,1
    - Dst: close
      Src: /src/opendal/core/services/alluxio/src/writer.rs:65,1
    - Dst: Ok
      Src: /src/opendal/core/services/alluxio/src/writer.rs:67,1
    - Dst: Metadata::default
      Src: /src/opendal/core/services/alluxio/src/writer.rs:67,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 15
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 68
      start: 61
    functionDepth: 3
    functionLinenumber: 61
    functionLinenumberEnd: 68
    functionName: AlluxioWriter::close
    functionSourceFile: /src/opendal/core/services/alluxio/src/writer.rs
    functionUses: 0
    functionsReached:
    - close
    - Metadata::default
    - Ok
    linkageType: ''
    returnType: Result
    signature: async fn close(&mut self) -> Result<Metadata>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/core/services/alluxio/src/writer.rs:71,1
    - Dst: Error::new
      Src: /src/opendal/core/services/alluxio/src/writer.rs:71,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 75
      start: 70
    functionDepth: 36
    functionLinenumber: 70
    functionLinenumberEnd: 75
    functionName: AlluxioWriter::abort
    functionSourceFile: /src/opendal/core/services/alluxio/src/writer.rs
    functionUses: 0
    functionsReached:
    - Error::new
    - Err
    linkageType: ''
    returnType: Result
    signature: async fn abort(&mut self) -> Result<()>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: register::<Alluxio>
      Src: /src/opendal/core/services/alluxio/src/lib.rs:23,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - registry
    argTypes:
    - '&opendal_core::OperatorRegistry'
    constantsTouched: []
    func_position:
      end: 24
      start: 22
    functionDepth: 0
    functionLinenumber: 22
    functionLinenumberEnd: 24
    functionName: register_alluxio_service
    functionSourceFile: /src/opendal/core/services/alluxio/src/lib.rs
    functionUses: 1
    functionsReached:
    - register::<Alluxio>
    linkageType: ''
    returnType: void
    signature: 'pub fn register_alluxio_service(registry: &opendal_core::OperatorRegistry)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::debug_struct
      Src: /src/opendal/core/services/alluxio/src/backend.rs:43,1
    - Dst: field
      Src: /src/opendal/core/services/alluxio/src/backend.rs:43,1
    - Dst: finish_non_exhaustive
      Src: /src/opendal/core/services/alluxio/src/backend.rs:43,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - f
    argTypes:
    - '&mut std::fmt::Formatter<''_>'
    constantsTouched: []
    func_position:
      end: 46
      start: 42
    functionDepth: 5
    functionLinenumber: 42
    functionLinenumberEnd: 46
    functionName: AlluxioBuilder::fmt
    functionSourceFile: /src/opendal/core/services/alluxio/src/backend.rs
    functionUses: 0
    functionsReached:
    - field
    - Result::debug_struct
    - finish_non_exhaustive
    linkageType: ''
    returnType: std::fmt::Result
    signature: 'fn fmt(&self, f: &mut std::fmt::Formatter<''_>) -> std::fmt::Result'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::is_empty
      Src: /src/opendal/core/services/alluxio/src/backend.rs:54,1
    - Dst: Some
      Src: /src/opendal/core/services/alluxio/src/backend.rs:57,1
    - Dst: Result::to_string
      Src: /src/opendal/core/services/alluxio/src/backend.rs:57,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - root
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 61
      start: 53
    functionDepth: 4
    functionLinenumber: 53
    functionLinenumberEnd: 61
    functionName: AlluxioBuilder::root
    functionSourceFile: /src/opendal/core/services/alluxio/src/backend.rs
    functionUses: 0
    functionsReached:
    - Result::is_empty
    - Result::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn root(mut self, root: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self::is_empty
      Src: /src/opendal/core/services/alluxio/src/backend.rs:67,1
    - Dst: Some
      Src: /src/opendal/core/services/alluxio/src/backend.rs:69,1
    - Dst: Self::trim_end_matches
      Src: /src/opendal/core/services/alluxio/src/backend.rs:69,1
    - Dst: to_string
      Src: /src/opendal/core/services/alluxio/src/backend.rs:69,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 1
    argNames:
    - endpoint
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 73
      start: 66
    functionDepth: 4
    functionLinenumber: 66
    functionLinenumberEnd: 73
    functionName: AlluxioBuilder::endpoint
    functionSourceFile: /src/opendal/core/services/alluxio/src/backend.rs
    functionUses: 0
    functionsReached:
    - Self::is_empty
    - to_string
    - Self::trim_end_matches
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn endpoint(mut self, endpoint: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: normalize_root
      Src: /src/opendal/core/services/alluxio/src/backend.rs:83,1
    - Dst: clone
      Src: /src/opendal/core/services/alluxio/src/backend.rs:83,1
    - Dst: unwrap_or_default
      Src: /src/opendal/core/services/alluxio/src/backend.rs:83,1
    - Dst: Ok
      Src: /src/opendal/core/services/alluxio/src/backend.rs:87,1
    - Dst: Self::clone
      Src: /src/opendal/core/services/alluxio/src/backend.rs:87,1
    - Dst: Err
      Src: /src/opendal/core/services/alluxio/src/backend.rs:88,1
    - Dst: Error::new
      Src: /src/opendal/core/services/alluxio/src/backend.rs:88,1
    - Dst: Self::with_operation
      Src: /src/opendal/core/services/alluxio/src/backend.rs:88,1
    - Dst: Self::with_context
      Src: /src/opendal/core/services/alluxio/src/backend.rs:88,1
    - Dst: Ok
      Src: /src/opendal/core/services/alluxio/src/backend.rs:94,1
    - Dst: Arc::new
      Src: /src/opendal/core/services/alluxio/src/backend.rs:95,1
    - Dst: ServiceInfo::new
      Src: /src/opendal/core/services/alluxio/src/backend.rs:96,1
    - Dst: Default::default
      Src: /src/opendal/core/services/alluxio/src/backend.rs:116,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 33
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 122
      start: 80
    functionDepth: 34
    functionLinenumber: 80
    functionLinenumberEnd: 122
    functionName: AlluxioBuilder::build
    functionSourceFile: /src/opendal/core/services/alluxio/src/backend.rs
    functionUses: 0
    functionsReached:
    - ServiceInfo::new
    - Ok
    - Arc::new
    - Default::default
    - clone
    - normalize_root
    - Err
    - Error::new
    - Self::clone
    - Self::with_operation
    - Self::with_context
    - unwrap_or_default
    linkageType: ''
    returnType: Result
    signature: fn build(self) -> Result<impl Service>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: clone
      Src: /src/opendal/core/services/alluxio/src/backend.rs:138,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 139
      start: 137
    functionDepth: 2
    functionLinenumber: 137
    functionLinenumberEnd: 139
    functionName: AlluxioBackend::info
    functionSourceFile: /src/opendal/core/services/alluxio/src/backend.rs
    functionUses: 0
    functionsReached:
    - clone
    linkageType: ''
    returnType: ServiceInfo
    signature: fn info(&self) -> ServiceInfo
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 143
      start: 141
    functionDepth: 0
    functionLinenumber: 141
    functionLinenumberEnd: 143
    functionName: AlluxioBackend::capability
    functionSourceFile: /src/opendal/core/services/alluxio/src/backend.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Capability
    signature: fn capability(&self) -> Capability
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: create_dir
      Src: /src/opendal/core/services/alluxio/src/backend.rs:151,1
    - Dst: Ok
      Src: /src/opendal/core/services/alluxio/src/backend.rs:152,1
    - Dst: RpCreateDir::default
      Src: /src/opendal/core/services/alluxio/src/backend.rs:152,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 3
    argNames:
    - ctx
    - path
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpCreateDir
    constantsTouched: []
    func_position:
      end: 153
      start: 145
    functionDepth: 35
    functionLinenumber: 145
    functionLinenumberEnd: 153
    functionName: AlluxioBackend::create_dir
    functionSourceFile: /src/opendal/core/services/alluxio/src/backend.rs
    functionUses: 0
    functionsReached:
    - RpCreateDir::default
    - create_dir
    - Ok
    linkageType: ''
    returnType: Result
    signature: 'async fn create_dir(&self,ctx: &OperationContext,path: &str,_: OpCreateDir,)
      -> Result<RpCreateDir>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: get_status
      Src: /src/opendal/core/services/alluxio/src/backend.rs:156,1
    - Dst: Ok
      Src: /src/opendal/core/services/alluxio/src/backend.rs:158,1
    - Dst: RpStat::new
      Src: /src/opendal/core/services/alluxio/src/backend.rs:158,1
    - Dst: Result::try_into
      Src: /src/opendal/core/services/alluxio/src/backend.rs:158,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 3
    argNames:
    - ctx
    - path
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpStat
    constantsTouched: []
    func_position:
      end: 159
      start: 155
    functionDepth: 38
    functionLinenumber: 155
    functionLinenumberEnd: 159
    functionName: AlluxioBackend::stat
    functionSourceFile: /src/opendal/core/services/alluxio/src/backend.rs
    functionUses: 0
    functionsReached:
    - RpStat::new
    - get_status
    - Ok
    - Result::try_into
    linkageType: ''
    returnType: Result
    signature: 'async fn stat(&self, ctx: &OperationContext, path: &str, _: OpStat)
      -> Result<RpStat>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/core/services/alluxio/src/backend.rs:162,1
    - Dst: oio::StreamReader::new
      Src: /src/opendal/core/services/alluxio/src/backend.rs:162,1
    - Dst: AlluxioReader::new
      Src: /src/opendal/core/services/alluxio/src/backend.rs:162,1
    - Dst: AlluxioBackend::clone
      Src: /src/opendal/core/services/alluxio/src/backend.rs:163,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/alluxio/src/backend.rs:164,1
    - Dst: Ok
      Src: /src/opendal/core/services/alluxio/src/backend.rs:170,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpRead
    constantsTouched: []
    func_position:
      end: 171
      start: 160
    functionDepth: 3
    functionLinenumber: 160
    functionLinenumberEnd: 171
    functionName: AlluxioBackend::read
    functionSourceFile: /src/opendal/core/services/alluxio/src/backend.rs
    functionUses: 0
    functionsReached:
    - Result::clone
    - AlluxioReader::new
    - Ok
    - oio::StreamReader::new
    - AlluxioBackend::clone
    linkageType: ''
    returnType: Result
    signature: 'fn read(&self, ctx: &OperationContext, path: &str, args: OpRead) ->
      Result<Self::Reader>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: AlluxioWriter::new
      Src: /src/opendal/core/services/alluxio/src/backend.rs:175,1
    - Dst: clone
      Src: /src/opendal/core/services/alluxio/src/backend.rs:176,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/alluxio/src/backend.rs:177,1
    - Dst: OpStat::clone
      Src: /src/opendal/core/services/alluxio/src/backend.rs:178,1
    - Dst: to_string
      Src: /src/opendal/core/services/alluxio/src/backend.rs:179,1
    - Dst: Ok
      Src: /src/opendal/core/services/alluxio/src/backend.rs:182,1
    - Dst: Ok
      Src: /src/opendal/core/services/alluxio/src/backend.rs:185,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpWrite
    constantsTouched: []
    func_position:
      end: 186
      start: 173
    functionDepth: 2
    functionLinenumber: 173
    functionLinenumberEnd: 186
    functionName: AlluxioBackend::write
    functionSourceFile: /src/opendal/core/services/alluxio/src/backend.rs
    functionUses: 0
    functionsReached:
    - Result::clone
    - to_string
    - OpStat::clone
    - Ok
    - clone
    - AlluxioWriter::new
    linkageType: ''
    returnType: Result
    signature: 'fn write(&self, ctx: &OperationContext, path: &str, args: OpWrite)
      -> Result<Self::Writer>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/core/services/alluxio/src/backend.rs:190,1
    - Dst: oio::OneShotDeleter::new
      Src: /src/opendal/core/services/alluxio/src/backend.rs:190,1
    - Dst: AlluxioDeleter::new
      Src: /src/opendal/core/services/alluxio/src/backend.rs:190,1
    - Dst: clone
      Src: /src/opendal/core/services/alluxio/src/backend.rs:191,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/alluxio/src/backend.rs:192,1
    - Dst: Ok
      Src: /src/opendal/core/services/alluxio/src/backend.rs:196,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - '&OperationContext'
    constantsTouched: []
    func_position:
      end: 197
      start: 188
    functionDepth: 2
    functionLinenumber: 188
    functionLinenumberEnd: 197
    functionName: AlluxioBackend::delete
    functionSourceFile: /src/opendal/core/services/alluxio/src/backend.rs
    functionUses: 0
    functionsReached:
    - oio::OneShotDeleter::new
    - Result::clone
    - Ok
    - clone
    - AlluxioDeleter::new
    linkageType: ''
    returnType: Result
    signature: 'fn delete(&self, ctx: &OperationContext) -> Result<Self::Deleter>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: AlluxioLister::new
      Src: /src/opendal/core/services/alluxio/src/backend.rs:201,1
    - Dst: clone
      Src: /src/opendal/core/services/alluxio/src/backend.rs:201,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/alluxio/src/backend.rs:201,1
    - Dst: Ok
      Src: /src/opendal/core/services/alluxio/src/backend.rs:202,1
    - Dst: oio::PageLister::new
      Src: /src/opendal/core/services/alluxio/src/backend.rs:202,1
    - Dst: Ok
      Src: /src/opendal/core/services/alluxio/src/backend.rs:205,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 3
    argNames:
    - ctx
    - path
    - _args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpList
    constantsTouched: []
    func_position:
      end: 206
      start: 199
    functionDepth: 3
    functionLinenumber: 199
    functionLinenumberEnd: 206
    functionName: AlluxioBackend::list
    functionSourceFile: /src/opendal/core/services/alluxio/src/backend.rs
    functionUses: 0
    functionsReached:
    - Result::clone
    - Ok
    - clone
    - oio::PageLister::new
    - AlluxioLister::new
    linkageType: ''
    returnType: Result
    signature: 'fn list(&self, ctx: &OperationContext, path: &str, _args: OpList)
      -> Result<Self::Lister>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/core/services/alluxio/src/backend.rs:216,1
    - Dst: Error::new
      Src: /src/opendal/core/services/alluxio/src/backend.rs:216,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 5
    argNames:
    - _ctx
    - _from
    - _to
    - _args
    - _opts
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    - OpCopy
    - OpCopier
    constantsTouched: []
    func_position:
      end: 220
      start: 208
    functionDepth: 36
    functionLinenumber: 208
    functionLinenumberEnd: 220
    functionName: AlluxioBackend::copy
    functionSourceFile: /src/opendal/core/services/alluxio/src/backend.rs
    functionUses: 0
    functionsReached:
    - Error::new
    - Err
    linkageType: ''
    returnType: Result
    signature: 'fn copy(&self,_ctx: &OperationContext,_from: &str,_to: &str,_args:
      OpCopy,_opts: OpCopier,) -> Result<Self::Copier>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: rename
      Src: /src/opendal/core/services/alluxio/src/backend.rs:229,1
    - Dst: Ok
      Src: /src/opendal/core/services/alluxio/src/backend.rs:231,1
    - Dst: RpRename::default
      Src: /src/opendal/core/services/alluxio/src/backend.rs:231,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 4
    argNames:
    - ctx
    - from
    - to
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    - OpRename
    constantsTouched: []
    func_position:
      end: 232
      start: 222
    functionDepth: 3
    functionLinenumber: 222
    functionLinenumberEnd: 232
    functionName: AlluxioBackend::rename
    functionSourceFile: /src/opendal/core/services/alluxio/src/backend.rs
    functionUses: 0
    functionsReached:
    - rename
    - RpRename::default
    - Ok
    linkageType: ''
    returnType: Result
    signature: 'async fn rename(&self,ctx: &OperationContext,from: &str,to: &str,_:
      OpRename,) -> Result<RpRename>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/core/services/alluxio/src/backend.rs:240,1
    - Dst: Error::new
      Src: /src/opendal/core/services/alluxio/src/backend.rs:240,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - _ctx
    - _path
    - _args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpPresign
    constantsTouched: []
    func_position:
      end: 244
      start: 234
    functionDepth: 36
    functionLinenumber: 234
    functionLinenumberEnd: 244
    functionName: AlluxioBackend::presign
    functionSourceFile: /src/opendal/core/services/alluxio/src/backend.rs
    functionUses: 0
    functionsReached:
    - Error::new
    - Err
    linkageType: ''
    returnType: Result
    signature: 'async fn presign(&self,_ctx: &OperationContext,_path: &str,_args:
      OpPresign,) -> Result<RpPresign>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: HashMap::new
      Src: /src/opendal/core/services/alluxio/src/backend.rs:255,1
    - Dst: Result::insert
      Src: /src/opendal/core/services/alluxio/src/backend.rs:256,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/alluxio/src/backend.rs:256,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/alluxio/src/backend.rs:256,1
    - Dst: Result::insert
      Src: /src/opendal/core/services/alluxio/src/backend.rs:257,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/alluxio/src/backend.rs:257,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/alluxio/src/backend.rs:257,1
    - Dst: AlluxioConfig::from_iter
      Src: /src/opendal/core/services/alluxio/src/backend.rs:259,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/services/alluxio/src/backend.rs:259,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 20
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 263
      start: 254
    functionDepth: 37
    functionLinenumber: 254
    functionLinenumberEnd: 263
    functionName: test::test_builder_from_map
    functionSourceFile: /src/opendal/core/services/alluxio/src/backend.rs
    functionUses: 0
    functionsReached:
    - Result::insert
    - HashMap::new
    - '&str::to_string'
    - Result::unwrap
    - AlluxioConfig::from_iter
    linkageType: ''
    returnType: void
    signature: fn test_builder_from_map()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: AlluxioBuilder::default
      Src: /src/opendal/core/services/alluxio/src/backend.rs:267,1
    - Dst: Self::root
      Src: /src/opendal/core/services/alluxio/src/backend.rs:267,1
    - Dst: Result::endpoint
      Src: /src/opendal/core/services/alluxio/src/backend.rs:267,1
    - Dst: Self::build
      Src: /src/opendal/core/services/alluxio/src/backend.rs:267,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 273
      start: 266
    functionDepth: 32
    functionLinenumber: 266
    functionLinenumberEnd: 273
    functionName: test::test_builder_build
    functionSourceFile: /src/opendal/core/services/alluxio/src/backend.rs
    functionUses: 0
    functionsReached:
    - AlluxioBuilder::default
    - Self::build
    - Self::root
    - Result::endpoint
    linkageType: ''
    returnType: void
    signature: fn test_builder_build()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::debug_struct
      Src: /src/opendal/core/services/onedrive/src/config.rs:51,1
    - Dst: field
      Src: /src/opendal/core/services/onedrive/src/config.rs:51,1
    - Dst: finish_non_exhaustive
      Src: /src/opendal/core/services/onedrive/src/config.rs:51,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - f
    argTypes:
    - '&mut std::fmt::Formatter<''_>'
    constantsTouched: []
    func_position:
      end: 54
      start: 50
    functionDepth: 5
    functionLinenumber: 50
    functionLinenumberEnd: 54
    functionName: OnedriveConfig::fmt
    functionSourceFile: /src/opendal/core/services/onedrive/src/config.rs
    functionUses: 0
    functionsReached:
    - field
    - Result::debug_struct
    - finish_non_exhaustive
    linkageType: ''
    returnType: std::fmt::Result
    signature: 'fn fmt(&self, f: &mut std::fmt::Formatter<''_>) -> std::fmt::Result'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::options
      Src: /src/opendal/core/services/onedrive/src/config.rs:61,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/onedrive/src/config.rs:61,1
    - Dst: Result::root
      Src: /src/opendal/core/services/onedrive/src/config.rs:63,1
    - Dst: Result::is_empty
      Src: /src/opendal/core/services/onedrive/src/config.rs:64,1
    - Dst: Result::split_once
      Src: /src/opendal/core/services/onedrive/src/config.rs:66,1
    - Dst: is_empty
      Src: /src/opendal/core/services/onedrive/src/config.rs:67,1
    - Dst: to_string
      Src: /src/opendal/core/services/onedrive/src/config.rs:67,1
    - Dst: Result::to_string
      Src: /src/opendal/core/services/onedrive/src/config.rs:68,1
    - Dst: is_empty
      Src: /src/opendal/core/services/onedrive/src/config.rs:70,1
    - Dst: Result::insert
      Src: /src/opendal/core/services/onedrive/src/config.rs:71,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/onedrive/src/config.rs:71,1
    - Dst: Self::from_iter
      Src: /src/opendal/core/services/onedrive/src/config.rs:75,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 32
    argCount: 1
    argNames:
    - uri
    argTypes:
    - '&OperatorUri'
    constantsTouched: []
    func_position:
      end: 76
      start: 60
    functionDepth: 35
    functionLinenumber: 60
    functionLinenumberEnd: 76
    functionName: OnedriveConfig::from_uri
    functionSourceFile: /src/opendal/core/services/onedrive/src/config.rs
    functionUses: 0
    functionsReached:
    - Result::clone
    - Result::options
    - to_string
    - Self::from_iter
    - Result::to_string
    - Result::insert
    - is_empty
    - Result::is_empty
    - Result::root
    - '&str::to_string'
    - Result::split_once
    linkageType: ''
    returnType: Result
    signature: 'fn from_uri(uri: &OperatorUri) -> Result<Self>'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 80
      start: 78
    functionDepth: 0
    functionLinenumber: 78
    functionLinenumberEnd: 80
    functionName: OnedriveConfig::into_builder
    functionSourceFile: /src/opendal/core/services/onedrive/src/config.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Self::Builder
    signature: fn into_builder(self) -> Self::Builder
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - core
    - ctx
    argTypes:
    - Arc<OneDriveCore>
    - OperationContext
    constantsTouched: []
    func_position:
      end: 38
      start: 36
    functionDepth: 0
    functionLinenumber: 36
    functionLinenumberEnd: 38
    functionName: OneDriveDeleter::new
    functionSourceFile: /src/opendal/core/services/onedrive/src/deleter.rs
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(core: Arc<OneDriveCore>, ctx: OperationContext) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: onedrive_delete
      Src: /src/opendal/core/services/onedrive/src/deleter.rs:43,1
    - Dst: status
      Src: /src/opendal/core/services/onedrive/src/deleter.rs:44,1
    - Dst: Ok
      Src: /src/opendal/core/services/onedrive/src/deleter.rs:45,1
    - Dst: Err
      Src: /src/opendal/core/services/onedrive/src/deleter.rs:46,1
    - Dst: super::core::parse_error
      Src: /src/opendal/core/services/onedrive/src/deleter.rs:46,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 2
    argNames:
    - path
    argTypes:
    - String
    - OpDelete
    constantsTouched: []
    func_position:
      end: 48
      start: 42
    functionDepth: 33
    functionLinenumber: 42
    functionLinenumberEnd: 48
    functionName: OneDriveDeleter::delete_once
    functionSourceFile: /src/opendal/core/services/onedrive/src/deleter.rs
    functionUses: 0
    functionsReached:
    - status
    - Ok
    - onedrive_delete
    - Err
    - super::core::parse_error
    linkageType: ''
    returnType: Result
    signature: 'async fn delete_once(&self, path: String, _: OpDelete) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: OpStat::clone
      Src: /src/opendal/core/services/onedrive/src/lister.rs:54,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 5
    argNames:
    - path
    - core
    - ctx
    - capability
    - args
    argTypes:
    - String
    - Arc<OneDriveCore>
    - OperationContext
    - Capability
    - '&OpList'
    constantsTouched: []
    func_position:
      end: 56
      start: 42
    functionDepth: 2
    functionLinenumber: 42
    functionLinenumberEnd: 56
    functionName: OneDriveLister::new
    functionSourceFile: /src/opendal/core/services/onedrive/src/lister.rs
    functionUses: 2
    functionsReached:
    - OpStat::clone
    linkageType: ''
    returnType: Self
    signature: 'pub(crate) fn new(path: String,core: Arc<OneDriveCore>,ctx: OperationContext,capability:
      Capability,args: &OpList,) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: is_empty
      Src: /src/opendal/core/services/onedrive/src/lister.rs:61,1
    - Dst: onedrive_list
      Src: /src/opendal/core/services/onedrive/src/lister.rs:62,1
    - Dst: limit
      Src: /src/opendal/core/services/onedrive/src/lister.rs:63,1
    - Dst: onedrive_get_next_list_page
      Src: /src/opendal/core/services/onedrive/src/lister.rs:66,1
    - Dst: status
      Src: /src/opendal/core/services/onedrive/src/lister.rs:71,1
    - Dst: Self::is_success
      Src: /src/opendal/core/services/onedrive/src/lister.rs:72,1
    - Dst: Ok
      Src: /src/opendal/core/services/onedrive/src/lister.rs:75,1
    - Dst: Err
      Src: /src/opendal/core/services/onedrive/src/lister.rs:77,1
    - Dst: super::core::parse_error
      Src: /src/opendal/core/services/onedrive/src/lister.rs:77,1
    - Dst: into_body
      Src: /src/opendal/core/services/onedrive/src/lister.rs:80,1
    - Dst: serde_json::from_reader
      Src: /src/opendal/core/services/onedrive/src/lister.rs:82,1
    - Dst: Bytes::reader
      Src: /src/opendal/core/services/onedrive/src/lister.rs:82,1
    - Dst: map_err
      Src: /src/opendal/core/services/onedrive/src/lister.rs:82,1
    - Dst: is_empty
      Src: /src/opendal/core/services/onedrive/src/lister.rs:87,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/onedrive/src/lister.rs:91,1
    - Dst: clone
      Src: /src/opendal/core/services/onedrive/src/lister.rs:93,1
    - Dst: onedrive_stat
      Src: /src/opendal/core/services/onedrive/src/lister.rs:96,1
    - Dst: OpStat::default
      Src: /src/opendal/core/services/onedrive/src/lister.rs:98,1
    - Dst: oio::Entry::new
      Src: /src/opendal/core/services/onedrive/src/lister.rs:103,1
    - Dst: push_back
      Src: /src/opendal/core/services/onedrive/src/lister.rs:104,1
    - Dst: Result::strip_prefix
      Src: /src/opendal/core/services/onedrive/src/lister.rs:116,1
    - Dst: unwrap_or
      Src: /src/opendal/core/services/onedrive/src/lister.rs:116,1
    - Dst: build_rel_path
      Src: /src/opendal/core/services/onedrive/src/lister.rs:121,1
    - Dst: as_str
      Src: /src/opendal/core/services/onedrive/src/lister.rs:121,1
    - Dst: as_str
      Src: /src/opendal/core/services/onedrive/src/lister.rs:121,1
    - Dst: String::push
      Src: /src/opendal/core/services/onedrive/src/lister.rs:129,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/onedrive/src/lister.rs:132,1
    - Dst: Self::with_etag
      Src: /src/opendal/core/services/onedrive/src/lister.rs:132,1
    - Dst: Self::with_content_length
      Src: /src/opendal/core/services/onedrive/src/lister.rs:132,1
    - Dst: max
      Src: /src/opendal/core/services/onedrive/src/lister.rs:134,1
    - Dst: last_modified_date_time.parse::<Timestamp>
      Src: /src/opendal/core/services/onedrive/src/lister.rs:135,1
    - Dst: Result::set_last_modified
      Src: /src/opendal/core/services/onedrive/src/lister.rs:136,1
    - Dst: onedrive_list_versions
      Src: /src/opendal/core/services/onedrive/src/lister.rs:143,1
    - Dst: Result::first
      Src: /src/opendal/core/services/onedrive/src/lister.rs:144,1
    - Dst: Result::set_version
      Src: /src/opendal/core/services/onedrive/src/lister.rs:145,1
    - Dst: oio::Entry::new
      Src: /src/opendal/core/services/onedrive/src/lister.rs:149,1
    - Dst: push_back
      Src: /src/opendal/core/services/onedrive/src/lister.rs:150,1
    - Dst: Ok
      Src: /src/opendal/core/services/onedrive/src/lister.rs:153,1
    CyclomaticComplexity: 22
    EdgeCount: 22
    ICount: 164
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - '&mut oio::PageContext'
    constantsTouched: []
    func_position:
      end: 154
      start: 60
    functionDepth: 35
    functionLinenumber: 60
    functionLinenumberEnd: 154
    functionName: OneDriveLister::next_page
    functionSourceFile: /src/opendal/core/services/onedrive/src/lister.rs
    functionUses: 0
    functionsReached:
    - status
    - serde_json::from_reader
    - clone
    - build_rel_path
    - Self::with_etag
    - map_err
    - onedrive_stat
    - onedrive_list_versions
    - Ok
    - Result::strip_prefix
    - onedrive_list
    - as_str
    - '&str::to_string'
    - String::push
    - max
    - Result::first
    - Bytes::reader
    - unwrap_or
    - Metadata::new
    - limit
    - into_body
    - is_empty
    - super::core::parse_error
    - OpStat::default
    - last_modified_date_time.parse::<Timestamp>
    - Self::is_success
    - oio::Entry::new
    - push_back
    - Self::with_content_length
    - Result::set_version
    - Result::set_last_modified
    - Err
    - onedrive_get_next_list_page
    linkageType: ''
    returnType: Result
    signature: 'async fn next_page(&self, ctx: &mut oio::PageContext) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: to_string
      Src: /src/opendal/core/services/onedrive/src/reader.rs:43,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 4
    argNames:
    - backend
    - ctx
    - path
    - args
    argTypes:
    - OnedriveBackend
    - OperationContext
    - '&str'
    - OpRead
    constantsTouched: []
    func_position:
      end: 46
      start: 34
    functionDepth: 2
    functionLinenumber: 34
    functionLinenumberEnd: 46
    functionName: OnedriveReader::new
    functionSourceFile: /src/opendal/core/services/onedrive/src/reader.rs
    functionUses: 1
    functionsReached:
    - to_string
    linkageType: ''
    returnType: Self
    signature: 'pub(super) fn new(backend: OnedriveBackend,ctx: OperationContext,path:
      &str,args: OpRead,) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: as_str
      Src: /src/opendal/core/services/onedrive/src/reader.rs:52,1
    - Dst: clone
      Src: /src/opendal/core/services/onedrive/src/reader.rs:53,1
    - Dst: onedrive_get_content
      Src: /src/opendal/core/services/onedrive/src/reader.rs:54,1
    - Dst: status
      Src: /src/opendal/core/services/onedrive/src/reader.rs:58,1
    - Dst: RpRead::new
      Src: /src/opendal/core/services/onedrive/src/reader.rs:60,1
    - Dst: parse_into_metadata
      Src: /src/opendal/core/services/onedrive/src/reader.rs:60,1
    - Dst: headers
      Src: /src/opendal/core/services/onedrive/src/reader.rs:60,1
    - Dst: into_body
      Src: /src/opendal/core/services/onedrive/src/reader.rs:61,1
    - Dst: into_parts
      Src: /src/opendal/core/services/onedrive/src/reader.rs:64,1
    - Dst: to_buffer
      Src: /src/opendal/core/services/onedrive/src/reader.rs:65,1
    - Dst: Err
      Src: /src/opendal/core/services/onedrive/src/reader.rs:66,1
    - Dst: super::core::parse_error
      Src: /src/opendal/core/services/onedrive/src/reader.rs:66,1
    - Dst: Response::from_parts
      Src: /src/opendal/core/services/onedrive/src/reader.rs:66,1
    - Dst: Ok
      Src: /src/opendal/core/services/onedrive/src/reader.rs:70,1
    - Dst: Box::new
      Src: /src/opendal/core/services/onedrive/src/reader.rs:70,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 42
    argCount: 1
    argNames:
    - range
    argTypes:
    - BytesRange
    constantsTouched: []
    func_position:
      end: 71
      start: 50
    functionDepth: 35
    functionLinenumber: 50
    functionLinenumberEnd: 71
    functionName: OnedriveReader::open
    functionSourceFile: /src/opendal/core/services/onedrive/src/reader.rs
    functionUses: 0
    functionsReached:
    - parse_into_metadata
    - to_buffer
    - status
    - Ok
    - Box::new
    - into_body
    - clone
    - Err
    - Response::from_parts
    - as_str
    - headers
    - into_parts
    - onedrive_get_content
    - RpRead::new
    - super::core::parse_error
    linkageType: ''
    returnType: Result
    signature: 'async fn open(&self, range: BytesRange) -> Result<(RpRead, Box<dyn
      oio::ReadStreamDyn>)>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::debug_struct
      Src: /src/opendal/core/services/onedrive/src/core.rs:44,1
    - Dst: field
      Src: /src/opendal/core/services/onedrive/src/core.rs:44,1
    - Dst: finish_non_exhaustive
      Src: /src/opendal/core/services/onedrive/src/core.rs:44,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - f
    argTypes:
    - '&mut std::fmt::Formatter<''_>'
    constantsTouched: []
    func_position:
      end: 47
      start: 43
    functionDepth: 5
    functionLinenumber: 43
    functionLinenumberEnd: 47
    functionName: OneDriveCore::fmt
    functionSourceFile: /src/opendal/core/services/onedrive/src/core.rs
    functionUses: 0
    functionsReached:
    - field
    - Result::debug_struct
    - finish_non_exhaustive
    linkageType: ''
    returnType: std::fmt::Result
    signature: 'fn fmt(&self, f: &mut std::fmt::Formatter<''_>) -> std::fmt::Result'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: contains
      Src: /src/opendal/core/services/onedrive/src/core.rs:63,1
    - Dst: to_string
      Src: /src/opendal/core/services/onedrive/src/core.rs:64,1
    - Dst: build_rooted_abs_path
      Src: /src/opendal/core/services/onedrive/src/core.rs:68,1
    - Dst: String::strip_suffix
      Src: /src/opendal/core/services/onedrive/src/core.rs:69,1
    - Dst: unwrap_or
      Src: /src/opendal/core/services/onedrive/src/core.rs:69,1
    - Dst: String::as_str
      Src: /src/opendal/core/services/onedrive/src/core.rs:71,1
    - Dst: to_string
      Src: /src/opendal/core/services/onedrive/src/core.rs:69,1
    - Dst: to_string
      Src: /src/opendal/core/services/onedrive/src/core.rs:74,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 24
    argCount: 2
    argNames:
    - path
    - build_absolute_path
    argTypes:
    - '&str'
    - bool
    constantsTouched: []
    func_position:
      end: 82
      start: 60
    functionDepth: 2
    functionLinenumber: 60
    functionLinenumberEnd: 82
    functionName: OneDriveCore::onedrive_item_url
    functionSourceFile: /src/opendal/core/services/onedrive/src/core.rs
    functionUses: 3
    functionsReached:
    - to_string
    - String::strip_suffix
    - build_rooted_abs_path
    - String::as_str
    - contains
    - unwrap_or
    linkageType: ''
    returnType: String
    signature: 'pub(crate) fn onedrive_item_url(&self, path: &str, build_absolute_path:
      bool) -> String'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Request::get
      Src: /src/opendal/core/services/onedrive/src/core.rs:97,1
    - Dst: http::Request::extension
      Src: /src/opendal/core/services/onedrive/src/core.rs:99,1
    - Dst: extension
      Src: /src/opendal/core/services/onedrive/src/core.rs:99,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/onedrive/src/core.rs:101,1
    - Dst: body
      Src: /src/opendal/core/services/onedrive/src/core.rs:99,1
    - Dst: Buffer::new
      Src: /src/opendal/core/services/onedrive/src/core.rs:102,1
    - Dst: map_err
      Src: /src/opendal/core/services/onedrive/src/core.rs:99,1
    - Dst: OneDriveCore::sign
      Src: /src/opendal/core/services/onedrive/src/core.rs:105,1
    - Dst: Result::http_transport
      Src: /src/opendal/core/services/onedrive/src/core.rs:107,1
    - Dst: Self::send
      Src: /src/opendal/core/services/onedrive/src/core.rs:107,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 24
    argCount: 2
    argNames:
    - ctx
    - path
    argTypes:
    - '&OperationContext'
    - '&str'
    constantsTouched: []
    func_position:
      end: 108
      start: 87
    functionDepth: 34
    functionLinenumber: 87
    functionLinenumberEnd: 108
    functionName: OneDriveCore::onedrive_get_stat_plain
    functionSourceFile: /src/opendal/core/services/onedrive/src/core.rs
    functionUses: 3
    functionsReached:
    - map_err
    - extension
    - Request::get
    - Buffer::new
    - Self::send
    - body
    - OneDriveCore::sign
    - ServiceOperation
    - Result::http_transport
    - http::Request::extension
    linkageType: ''
    returnType: Result
    signature: 'pub(crate) async fn onedrive_get_stat_plain(&self,ctx: &OperationContext,path:
      &str,) -> Result<Response<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: OneDriveCore::onedrive_get_stat_plain
      Src: /src/opendal/core/services/onedrive/src/core.rs:120,1
    - Dst: status
      Src: /src/opendal/core/services/onedrive/src/core.rs:121,1
    - Dst: into_body
      Src: /src/opendal/core/services/onedrive/src/core.rs:123,1
    - Dst: serde_json::from_reader
      Src: /src/opendal/core/services/onedrive/src/core.rs:124,1
    - Dst: Bytes::reader
      Src: /src/opendal/core/services/onedrive/src/core.rs:124,1
    - Dst: map_err
      Src: /src/opendal/core/services/onedrive/src/core.rs:124,1
    - Dst: OneDriveCore::onedrive_create_dir
      Src: /src/opendal/core/services/onedrive/src/core.rs:128,1
    - Dst: status
      Src: /src/opendal/core/services/onedrive/src/core.rs:129,1
    - Dst: into_body
      Src: /src/opendal/core/services/onedrive/src/core.rs:131,1
    - Dst: serde_json::from_reader
      Src: /src/opendal/core/services/onedrive/src/core.rs:132,1
    - Dst: Bytes::reader
      Src: /src/opendal/core/services/onedrive/src/core.rs:132,1
    - Dst: map_err
      Src: /src/opendal/core/services/onedrive/src/core.rs:132,1
    - Dst: Err
      Src: /src/opendal/core/services/onedrive/src/core.rs:135,1
    - Dst: parse_error
      Src: /src/opendal/core/services/onedrive/src/core.rs:135,1
    - Dst: Err
      Src: /src/opendal/core/services/onedrive/src/core.rs:138,1
    - Dst: parse_error
      Src: /src/opendal/core/services/onedrive/src/core.rs:138,1
    - Dst: Ok
      Src: /src/opendal/core/services/onedrive/src/core.rs:141,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 38
    argCount: 2
    argNames:
    - ctx
    - path
    argTypes:
    - '&OperationContext'
    - '&str'
    constantsTouched: []
    func_position:
      end: 142
      start: 115
    functionDepth: 35
    functionLinenumber: 115
    functionLinenumberEnd: 142
    functionName: OneDriveCore::ensure_directory
    functionSourceFile: /src/opendal/core/services/onedrive/src/core.rs
    functionUses: 2
    functionsReached:
    - map_err
    - status
    - Ok
    - serde_json::from_reader
    - parse_error
    - into_body
    - OneDriveCore::onedrive_create_dir
    - Err
    - OneDriveCore::onedrive_get_stat_plain
    - Bytes::reader
    linkageType: ''
    returnType: Result
    signature: 'pub(crate) async fn ensure_directory(&self,ctx: &OperationContext,path:
      &str,) -> Result<OneDriveItem>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/opendal/core/services/onedrive/src/core.rs:149,1
    - Dst: Signer::sign
      Src: /src/opendal/core/services/onedrive/src/core.rs:150,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - ctx
    - request
    argTypes:
    - '&OperationContext'
    - '&mut Request<T>'
    constantsTouched: []
    func_position:
      end: 151
      start: 144
    functionDepth: 33
    functionLinenumber: 144
    functionLinenumberEnd: 151
    functionName: OneDriveCore::sign
    functionSourceFile: /src/opendal/core/services/onedrive/src/core.rs
    functionUses: 13
    functionsReached:
    - Signer::sign
    - lock
    linkageType: ''
    returnType: Result
    signature: 'pub(crate) async fn sign<T>(&self,ctx: &OperationContext,request:
      &mut Request<T>,) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: OneDriveCore::onedrive_item_url
      Src: /src/opendal/core/services/onedrive/src/core.rs:179,1
    - Dst: OpStat::version
      Src: /src/opendal/core/services/onedrive/src/core.rs:180,1
    - Dst: Option::is_some
      Src: /src/opendal/core/services/onedrive/src/core.rs:180,1
    - Dst: Request::get
      Src: /src/opendal/core/services/onedrive/src/core.rs:186,1
    - Dst: OpStat::if_none_match
      Src: /src/opendal/core/services/onedrive/src/core.rs:187,1
    - Dst: http::Request::header
      Src: /src/opendal/core/services/onedrive/src/core.rs:188,1
    - Dst: http::Request::extension
      Src: /src/opendal/core/services/onedrive/src/core.rs:191,1
    - Dst: extension
      Src: /src/opendal/core/services/onedrive/src/core.rs:191,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/onedrive/src/core.rs:193,1
    - Dst: body
      Src: /src/opendal/core/services/onedrive/src/core.rs:191,1
    - Dst: Buffer::new
      Src: /src/opendal/core/services/onedrive/src/core.rs:194,1
    - Dst: map_err
      Src: /src/opendal/core/services/onedrive/src/core.rs:191,1
    - Dst: OneDriveCore::sign
      Src: /src/opendal/core/services/onedrive/src/core.rs:197,1
    - Dst: Result::http_transport
      Src: /src/opendal/core/services/onedrive/src/core.rs:199,1
    - Dst: Self::send
      Src: /src/opendal/core/services/onedrive/src/core.rs:199,1
    - Dst: status
      Src: /src/opendal/core/services/onedrive/src/core.rs:200,1
    - Dst: Result::is_success
      Src: /src/opendal/core/services/onedrive/src/core.rs:200,1
    - Dst: Err
      Src: /src/opendal/core/services/onedrive/src/core.rs:201,1
    - Dst: parse_error
      Src: /src/opendal/core/services/onedrive/src/core.rs:201,1
    - Dst: into_body
      Src: /src/opendal/core/services/onedrive/src/core.rs:204,1
    - Dst: serde_json::from_reader
      Src: /src/opendal/core/services/onedrive/src/core.rs:206,1
    - Dst: Bytes::reader
      Src: /src/opendal/core/services/onedrive/src/core.rs:206,1
    - Dst: map_err
      Src: /src/opendal/core/services/onedrive/src/core.rs:206,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/onedrive/src/core.rs:213,1
    - Dst: Self::with_etag
      Src: /src/opendal/core/services/onedrive/src/core.rs:213,1
    - Dst: Self::with_content_length
      Src: /src/opendal/core/services/onedrive/src/core.rs:213,1
    - Dst: max
      Src: /src/opendal/core/services/onedrive/src/core.rs:215,1
    - Dst: OpStat::version
      Src: /src/opendal/core/services/onedrive/src/core.rs:217,1
    - Dst: as_deref
      Src: /src/opendal/core/services/onedrive/src/core.rs:218,1
    - Dst: unwrap_or_default
      Src: /src/opendal/core/services/onedrive/src/core.rs:218,1
    - Dst: Result::set_version
      Src: /src/opendal/core/services/onedrive/src/core.rs:220,1
    - Dst: Result::version
      Src: /src/opendal/core/services/onedrive/src/core.rs:225,1
    - Dst: Result::is_none
      Src: /src/opendal/core/services/onedrive/src/core.rs:225,1
    - Dst: Err
      Src: /src/opendal/core/services/onedrive/src/core.rs:226,1
    - Dst: Error::new
      Src: /src/opendal/core/services/onedrive/src/core.rs:226,1
    - Dst: parse::<Timestamp>
      Src: /src/opendal/core/services/onedrive/src/core.rs:234,1
    - Dst: Result::set_last_modified
      Src: /src/opendal/core/services/onedrive/src/core.rs:235,1
    - Dst: Ok
      Src: /src/opendal/core/services/onedrive/src/core.rs:237,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 113
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpStat
    constantsTouched: []
    func_position:
      end: 238
      start: 173
    functionDepth: 34
    functionLinenumber: 173
    functionLinenumberEnd: 238
    functionName: OneDriveCore::onedrive_stat
    functionSourceFile: /src/opendal/core/services/onedrive/src/core.rs
    functionUses: 0
    functionsReached:
    - Buffer::new
    - Option::is_some
    - status
    - Self::send
    - parse::<Timestamp>
    - as_deref
    - serde_json::from_reader
    - OneDriveCore::sign
    - Self::with_etag
    - map_err
    - extension
    - Ok
    - ServiceOperation
    - max
    - Result::http_transport
    - Result::is_none
    - unwrap_or_default
    - Bytes::reader
    - Metadata::new
    - parse_error
    - into_body
    - Result::is_success
    - http::Request::extension
    - OpStat::version
    - OneDriveCore::onedrive_item_url
    - Request::get
    - Result::version
    - Self::with_content_length
    - body
    - Result::set_version
    - Result::set_last_modified
    - Err
    - OpStat::if_none_match
    - Error::new
    - http::Request::header
    linkageType: ''
    returnType: Result
    signature: 'pub(crate) async fn onedrive_stat(&self,ctx: &OperationContext,path:
      &str,args: OpStat,) -> Result<Metadata>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Request::get
      Src: /src/opendal/core/services/onedrive/src/core.rs:257,1
    - Dst: Option::extension
      Src: /src/opendal/core/services/onedrive/src/core.rs:257,1
    - Dst: extension
      Src: /src/opendal/core/services/onedrive/src/core.rs:257,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/onedrive/src/core.rs:259,1
    - Dst: body
      Src: /src/opendal/core/services/onedrive/src/core.rs:257,1
    - Dst: Buffer::new
      Src: /src/opendal/core/services/onedrive/src/core.rs:260,1
    - Dst: map_err
      Src: /src/opendal/core/services/onedrive/src/core.rs:257,1
    - Dst: OneDriveCore::sign
      Src: /src/opendal/core/services/onedrive/src/core.rs:263,1
    - Dst: Result::http_transport
      Src: /src/opendal/core/services/onedrive/src/core.rs:265,1
    - Dst: Self::send
      Src: /src/opendal/core/services/onedrive/src/core.rs:265,1
    - Dst: serde_json::from_reader
      Src: /src/opendal/core/services/onedrive/src/core.rs:267,1
    - Dst: into_body
      Src: /src/opendal/core/services/onedrive/src/core.rs:267,1
    - Dst: reader
      Src: /src/opendal/core/services/onedrive/src/core.rs:267,1
    - Dst: map_err
      Src: /src/opendal/core/services/onedrive/src/core.rs:267,1
    - Dst: Ok
      Src: /src/opendal/core/services/onedrive/src/core.rs:269,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 34
    argCount: 2
    argNames:
    - ctx
    - path
    argTypes:
    - '&OperationContext'
    - '&str'
    constantsTouched: []
    func_position:
      end: 270
      start: 245
    functionDepth: 34
    functionLinenumber: 245
    functionLinenumberEnd: 270
    functionName: OneDriveCore::onedrive_list_versions
    functionSourceFile: /src/opendal/core/services/onedrive/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - extension
    - Request::get
    - Buffer::new
    - reader
    - Self::send
    - Ok
    - serde_json::from_reader
    - body
    - into_body
    - OneDriveCore::sign
    - Option::extension
    - ServiceOperation
    - Result::http_transport
    linkageType: ''
    returnType: Result
    signature: 'pub(crate) async fn onedrive_list_versions(&self,ctx: &OperationContext,path:
      &str,) -> Result<Vec<OneDriveItemVersion>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: OneDriveCore::onedrive_item_url
      Src: /src/opendal/core/services/onedrive/src/core.rs:277,1
    - Dst: Request::get
      Src: /src/opendal/core/services/onedrive/src/core.rs:288,1
    - Dst: Option::extension
      Src: /src/opendal/core/services/onedrive/src/core.rs:288,1
    - Dst: extension
      Src: /src/opendal/core/services/onedrive/src/core.rs:288,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/onedrive/src/core.rs:290,1
    - Dst: body
      Src: /src/opendal/core/services/onedrive/src/core.rs:288,1
    - Dst: Buffer::new
      Src: /src/opendal/core/services/onedrive/src/core.rs:291,1
    - Dst: map_err
      Src: /src/opendal/core/services/onedrive/src/core.rs:288,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 20
    argCount: 2
    argNames:
    - path
    - limit
    argTypes:
    - '&str'
    - Option<usize>
    constantsTouched: []
    func_position:
      end: 293
      start: 272
    functionDepth: 3
    functionLinenumber: 272
    functionLinenumberEnd: 293
    functionName: OneDriveCore::onedrive_list_request
    functionSourceFile: /src/opendal/core/services/onedrive/src/core.rs
    functionUses: 1
    functionsReached:
    - map_err
    - extension
    - OneDriveCore::onedrive_item_url
    - Request::get
    - Buffer::new
    - body
    - Option::extension
    - ServiceOperation
    linkageType: ''
    returnType: Result
    signature: 'pub(crate) fn onedrive_list_request(&self,path: &str,limit: Option<usize>,)
      -> Result<Request<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: OneDriveCore::onedrive_list_request
      Src: /src/opendal/core/services/onedrive/src/core.rs:301,1
    - Dst: OneDriveCore::sign
      Src: /src/opendal/core/services/onedrive/src/core.rs:303,1
    - Dst: Result::http_transport
      Src: /src/opendal/core/services/onedrive/src/core.rs:305,1
    - Dst: Self::send
      Src: /src/opendal/core/services/onedrive/src/core.rs:305,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 3
    argNames:
    - ctx
    - path
    - limit
    argTypes:
    - '&OperationContext'
    - '&str'
    - Option<usize>
    constantsTouched: []
    func_position:
      end: 306
      start: 295
    functionDepth: 34
    functionLinenumber: 295
    functionLinenumberEnd: 306
    functionName: OneDriveCore::onedrive_list
    functionSourceFile: /src/opendal/core/services/onedrive/src/core.rs
    functionUses: 0
    functionsReached:
    - OneDriveCore::sign
    - Self::send
    - OneDriveCore::onedrive_list_request
    - Result::http_transport
    linkageType: ''
    returnType: Result
    signature: 'pub(crate) async fn onedrive_list(&self,ctx: &OperationContext,path:
      &str,limit: Option<usize>,) -> Result<Response<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Request::get
      Src: /src/opendal/core/services/onedrive/src/core.rs:313,1
    - Dst: Option::extension
      Src: /src/opendal/core/services/onedrive/src/core.rs:313,1
    - Dst: extension
      Src: /src/opendal/core/services/onedrive/src/core.rs:313,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/onedrive/src/core.rs:315,1
    - Dst: body
      Src: /src/opendal/core/services/onedrive/src/core.rs:313,1
    - Dst: Buffer::new
      Src: /src/opendal/core/services/onedrive/src/core.rs:316,1
    - Dst: map_err
      Src: /src/opendal/core/services/onedrive/src/core.rs:313,1
    - Dst: OneDriveCore::sign
      Src: /src/opendal/core/services/onedrive/src/core.rs:319,1
    - Dst: Result::http_transport
      Src: /src/opendal/core/services/onedrive/src/core.rs:321,1
    - Dst: Self::send
      Src: /src/opendal/core/services/onedrive/src/core.rs:321,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 23
    argCount: 2
    argNames:
    - ctx
    - url
    argTypes:
    - '&OperationContext'
    - '&str'
    constantsTouched: []
    func_position:
      end: 322
      start: 308
    functionDepth: 34
    functionLinenumber: 308
    functionLinenumberEnd: 322
    functionName: OneDriveCore::onedrive_get_next_list_page
    functionSourceFile: /src/opendal/core/services/onedrive/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - extension
    - Request::get
    - Buffer::new
    - Self::send
    - body
    - OneDriveCore::sign
    - Option::extension
    - ServiceOperation
    - Result::http_transport
    linkageType: ''
    returnType: Result
    signature: 'pub(crate) async fn onedrive_get_next_list_page(&self,ctx: &OperationContext,url:
      &str,) -> Result<Response<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Request::get
      Src: /src/opendal/core/services/onedrive/src/core.rs:343,1
    - Dst: Option::header
      Src: /src/opendal/core/services/onedrive/src/core.rs:343,1
    - Dst: (Vec::to_header
      Src: /src/opendal/core/services/onedrive/src/core.rs:343,1
    - Dst: OpStat::if_none_match
      Src: /src/opendal/core/services/onedrive/src/core.rs:344,1
    - Dst: http::Request::header
      Src: /src/opendal/core/services/onedrive/src/core.rs:345,1
    - Dst: http::Request::extension
      Src: /src/opendal/core/services/onedrive/src/core.rs:348,1
    - Dst: extension
      Src: /src/opendal/core/services/onedrive/src/core.rs:348,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/onedrive/src/core.rs:350,1
    - Dst: body
      Src: /src/opendal/core/services/onedrive/src/core.rs:348,1
    - Dst: Buffer::new
      Src: /src/opendal/core/services/onedrive/src/core.rs:351,1
    - Dst: map_err
      Src: /src/opendal/core/services/onedrive/src/core.rs:348,1
    - Dst: OneDriveCore::sign
      Src: /src/opendal/core/services/onedrive/src/core.rs:354,1
    - Dst: Result::http_transport
      Src: /src/opendal/core/services/onedrive/src/core.rs:356,1
    - Dst: Self::fetch
      Src: /src/opendal/core/services/onedrive/src/core.rs:356,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 36
    argCount: 4
    argNames:
    - ctx
    - path
    - range
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - BytesRange
    - '&OpRead'
    constantsTouched: []
    func_position:
      end: 357
      start: 333
    functionDepth: 34
    functionLinenumber: 333
    functionLinenumberEnd: 357
    functionName: OneDriveCore::onedrive_get_content
    functionSourceFile: /src/opendal/core/services/onedrive/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - extension
    - Request::get
    - (Vec::to_header
    - Buffer::new
    - body
    - OpStat::if_none_match
    - OneDriveCore::sign
    - http::Request::header
    - Self::fetch
    - ServiceOperation
    - Result::http_transport
    - Option::header
    - http::Request::extension
    linkageType: ''
    returnType: Result
    signature: 'pub(crate) async fn onedrive_get_content(&self,ctx: &OperationContext,path:
      &str,range: BytesRange,args: &OpRead,) -> Result<Response<HttpBody>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Request::put
      Src: /src/opendal/core/services/onedrive/src/core.rs:390,1
    - Dst: DeleteInput::header
      Src: /src/opendal/core/services/onedrive/src/core.rs:390,1
    - Dst: Buffer::len
      Src: /src/opendal/core/services/onedrive/src/core.rs:391,1
    - Dst: String::header
      Src: /src/opendal/core/services/onedrive/src/core.rs:390,1
    - Dst: OpStat::if_match
      Src: /src/opendal/core/services/onedrive/src/core.rs:397,1
    - Dst: http::Request::header
      Src: /src/opendal/core/services/onedrive/src/core.rs:398,1
    - Dst: http::Request::extension
      Src: /src/opendal/core/services/onedrive/src/core.rs:401,1
    - Dst: extension
      Src: /src/opendal/core/services/onedrive/src/core.rs:401,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/onedrive/src/core.rs:403,1
    - Dst: body
      Src: /src/opendal/core/services/onedrive/src/core.rs:401,1
    - Dst: map_err
      Src: /src/opendal/core/services/onedrive/src/core.rs:401,1
    - Dst: OneDriveCore::sign
      Src: /src/opendal/core/services/onedrive/src/core.rs:407,1
    - Dst: Result::http_transport
      Src: /src/opendal/core/services/onedrive/src/core.rs:409,1
    - Dst: Self::send
      Src: /src/opendal/core/services/onedrive/src/core.rs:409,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 37
    argCount: 4
    argNames:
    - ctx
    - path
    - args
    - body
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&OpWrite'
    - Buffer
    constantsTouched: []
    func_position:
      end: 410
      start: 370
    functionDepth: 34
    functionLinenumber: 370
    functionLinenumberEnd: 410
    functionName: OneDriveCore::onedrive_upload_simple
    functionSourceFile: /src/opendal/core/services/onedrive/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - extension
    - Request::put
    - Self::send
    - body
    - Buffer::len
    - DeleteInput::header
    - String::header
    - http::Request::header
    - OneDriveCore::sign
    - ServiceOperation
    - Result::http_transport
    - OpStat::if_match
    - http::Request::extension
    linkageType: ''
    returnType: Result
    signature: 'pub async fn onedrive_upload_simple(&self,ctx: &OperationContext,path:
      &str,args: &OpWrite,body: Buffer,) -> Result<Response<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Request::put
      Src: /src/opendal/core/services/onedrive/src/core.rs:423,1
    - Dst: http::Request::header
      Src: /src/opendal/core/services/onedrive/src/core.rs:426,1
    - Dst: http::Request::header
      Src: /src/opendal/core/services/onedrive/src/core.rs:429,1
    - Dst: OpStat::content_type
      Src: /src/opendal/core/services/onedrive/src/core.rs:431,1
    - Dst: http::Request::header
      Src: /src/opendal/core/services/onedrive/src/core.rs:432,1
    - Dst: http::Request::extension
      Src: /src/opendal/core/services/onedrive/src/core.rs:435,1
    - Dst: extension
      Src: /src/opendal/core/services/onedrive/src/core.rs:435,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/onedrive/src/core.rs:437,1
    - Dst: body
      Src: /src/opendal/core/services/onedrive/src/core.rs:435,1
    - Dst: map_err
      Src: /src/opendal/core/services/onedrive/src/core.rs:435,1
    - Dst: Result::http_transport
      Src: /src/opendal/core/services/onedrive/src/core.rs:442,1
    - Dst: Self::send
      Src: /src/opendal/core/services/onedrive/src/core.rs:442,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 33
    argCount: 7
    argNames:
    - ctx
    - url
    - args
    - offset
    - chunk_end
    - total_len
    - body
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&OpWrite'
    - usize
    - usize
    - usize
    - Buffer
    constantsTouched: []
    func_position:
      end: 443
      start: 413
    functionDepth: 32
    functionLinenumber: 413
    functionLinenumberEnd: 443
    functionName: OneDriveCore::onedrive_chunked_upload
    functionSourceFile: /src/opendal/core/services/onedrive/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - extension
    - Request::put
    - Self::send
    - body
    - http::Request::header
    - ServiceOperation
    - Result::http_transport
    - OpStat::content_type
    - http::Request::extension
    linkageType: ''
    returnType: Result
    signature: 'pub(crate) async fn onedrive_chunked_upload(&self,ctx: &OperationContext,url:
      &str,args: &OpWrite,offset: usize,chunk_end: usize,total_len: usize,body: Buffer,)
      -> Result<Response<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: get_parent
      Src: /src/opendal/core/services/onedrive/src/core.rs:456,1
    - Dst: get_basename
      Src: /src/opendal/core/services/onedrive/src/core.rs:457,1
    - Dst: Request::post
      Src: /src/opendal/core/services/onedrive/src/core.rs:462,1
    - Dst: http::header
      Src: /src/opendal/core/services/onedrive/src/core.rs:462,1
    - Dst: OpStat::if_match
      Src: /src/opendal/core/services/onedrive/src/core.rs:464,1
    - Dst: http::Request::header
      Src: /src/opendal/core/services/onedrive/src/core.rs:465,1
    - Dst: OneDriveUploadSessionCreationRequestBody::new
      Src: /src/opendal/core/services/onedrive/src/core.rs:468,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/onedrive/src/core.rs:468,1
    - Dst: serde_json::to_vec
      Src: /src/opendal/core/services/onedrive/src/core.rs:469,1
    - Dst: Vec::map_err
      Src: /src/opendal/core/services/onedrive/src/core.rs:469,1
    - Dst: Buffer::from
      Src: /src/opendal/core/services/onedrive/src/core.rs:470,1
    - Dst: Bytes::from
      Src: /src/opendal/core/services/onedrive/src/core.rs:470,1
    - Dst: http::Request::extension
      Src: /src/opendal/core/services/onedrive/src/core.rs:471,1
    - Dst: extension
      Src: /src/opendal/core/services/onedrive/src/core.rs:471,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/onedrive/src/core.rs:473,1
    - Dst: body
      Src: /src/opendal/core/services/onedrive/src/core.rs:471,1
    - Dst: map_err
      Src: /src/opendal/core/services/onedrive/src/core.rs:471,1
    - Dst: OneDriveCore::sign
      Src: /src/opendal/core/services/onedrive/src/core.rs:477,1
    - Dst: Result::http_transport
      Src: /src/opendal/core/services/onedrive/src/core.rs:479,1
    - Dst: Self::send
      Src: /src/opendal/core/services/onedrive/src/core.rs:479,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 44
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&OpWrite'
    constantsTouched: []
    func_position:
      end: 480
      start: 450
    functionDepth: 40
    functionLinenumber: 450
    functionLinenumberEnd: 480
    functionName: OneDriveCore::onedrive_create_upload_session
    functionSourceFile: /src/opendal/core/services/onedrive/src/core.rs
    functionUses: 0
    functionsReached:
    - Self::send
    - OneDriveCore::sign
    - map_err
    - extension
    - '&str::to_string'
    - ServiceOperation
    - Result::http_transport
    - OpStat::if_match
    - Buffer::from
    - http::header
    - OneDriveUploadSessionCreationRequestBody::new
    - Bytes::from
    - http::Request::extension
    - get_parent
    - Request::post
    - get_basename
    - body
    - http::Request::header
    - Vec::map_err
    - serde_json::to_vec
    linkageType: ''
    returnType: Result
    signature: 'pub(crate) async fn onedrive_create_upload_session(&self,ctx: &OperationContext,path:
      &str,args: &OpWrite,) -> Result<Response<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: get_parent
      Src: /src/opendal/core/services/onedrive/src/core.rs:493,1
    - Dst: get_basename
      Src: /src/opendal/core/services/onedrive/src/core.rs:494,1
    - Dst: '&str::strip_suffix'
      Src: /src/opendal/core/services/onedrive/src/core.rs:495,1
    - Dst: unwrap_or
      Src: /src/opendal/core/services/onedrive/src/core.rs:495,1
    - Dst: CreateDirPayload::new
      Src: /src/opendal/core/services/onedrive/src/core.rs:503,1
    - Dst: to_string
      Src: /src/opendal/core/services/onedrive/src/core.rs:503,1
    - Dst: serde_json::to_vec
      Src: /src/opendal/core/services/onedrive/src/core.rs:504,1
    - Dst: Vec::map_err
      Src: /src/opendal/core/services/onedrive/src/core.rs:504,1
    - Dst: Buffer::from
      Src: /src/opendal/core/services/onedrive/src/core.rs:505,1
    - Dst: bytes::Bytes::from
      Src: /src/opendal/core/services/onedrive/src/core.rs:505,1
    - Dst: Request::post
      Src: /src/opendal/core/services/onedrive/src/core.rs:507,1
    - Dst: http::header
      Src: /src/opendal/core/services/onedrive/src/core.rs:507,1
    - Dst: extension
      Src: /src/opendal/core/services/onedrive/src/core.rs:507,1
    - Dst: extension
      Src: /src/opendal/core/services/onedrive/src/core.rs:507,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/onedrive/src/core.rs:510,1
    - Dst: body
      Src: /src/opendal/core/services/onedrive/src/core.rs:507,1
    - Dst: map_err
      Src: /src/opendal/core/services/onedrive/src/core.rs:507,1
    - Dst: OneDriveCore::sign
      Src: /src/opendal/core/services/onedrive/src/core.rs:514,1
    - Dst: Result::http_transport
      Src: /src/opendal/core/services/onedrive/src/core.rs:516,1
    - Dst: Self::send
      Src: /src/opendal/core/services/onedrive/src/core.rs:516,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 40
    argCount: 2
    argNames:
    - ctx
    - path
    argTypes:
    - '&OperationContext'
    - '&str'
    constantsTouched: []
    func_position:
      end: 517
      start: 488
    functionDepth: 40
    functionLinenumber: 488
    functionLinenumberEnd: 517
    functionName: OneDriveCore::onedrive_create_dir
    functionSourceFile: /src/opendal/core/services/onedrive/src/core.rs
    functionUses: 1
    functionsReached:
    - Self::send
    - CreateDirPayload::new
    - OneDriveCore::sign
    - map_err
    - extension
    - ServiceOperation
    - Result::http_transport
    - Buffer::from
    - unwrap_or
    - http::header
    - '&str::strip_suffix'
    - bytes::Bytes::from
    - to_string
    - get_parent
    - Request::post
    - get_basename
    - body
    - Vec::map_err
    - serde_json::to_vec
    linkageType: ''
    returnType: Result
    signature: 'pub(crate) async fn onedrive_create_dir(&self,ctx: &OperationContext,path:
      &str,) -> Result<Response<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: OneDriveCore::onedrive_item_url
      Src: /src/opendal/core/services/onedrive/src/core.rs:527,1
    - Dst: Request::delete
      Src: /src/opendal/core/services/onedrive/src/core.rs:529,1
    - Dst: Result::extension
      Src: /src/opendal/core/services/onedrive/src/core.rs:529,1
    - Dst: extension
      Src: /src/opendal/core/services/onedrive/src/core.rs:529,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/onedrive/src/core.rs:531,1
    - Dst: body
      Src: /src/opendal/core/services/onedrive/src/core.rs:529,1
    - Dst: Buffer::new
      Src: /src/opendal/core/services/onedrive/src/core.rs:532,1
    - Dst: map_err
      Src: /src/opendal/core/services/onedrive/src/core.rs:529,1
    - Dst: OneDriveCore::sign
      Src: /src/opendal/core/services/onedrive/src/core.rs:535,1
    - Dst: Result::http_transport
      Src: /src/opendal/core/services/onedrive/src/core.rs:537,1
    - Dst: Self::send
      Src: /src/opendal/core/services/onedrive/src/core.rs:537,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 26
    argCount: 2
    argNames:
    - ctx
    - path
    argTypes:
    - '&OperationContext'
    - '&str'
    constantsTouched: []
    func_position:
      end: 538
      start: 522
    functionDepth: 32
    functionLinenumber: 522
    functionLinenumberEnd: 538
    functionName: OneDriveCore::onedrive_delete
    functionSourceFile: /src/opendal/core/services/onedrive/src/core.rs
    functionUses: 1
    functionsReached:
    - map_err
    - extension
    - OneDriveCore::onedrive_item_url
    - Buffer::new
    - Request::delete
    - Self::send
    - Result::extension
    - body
    - OneDriveCore::sign
    - ServiceOperation
    - Result::http_transport
    linkageType: ''
    returnType: Result
    signature: 'pub(crate) async fn onedrive_delete(&self,ctx: &OperationContext,path:
      &str,) -> Result<Response<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: OneDriveCore::onedrive_get_stat_plain
      Src: /src/opendal/core/services/onedrive/src/core.rs:553,1
    - Dst: status
      Src: /src/opendal/core/services/onedrive/src/core.rs:554,1
    - Dst: Result::is_success
      Src: /src/opendal/core/services/onedrive/src/core.rs:554,1
    - Dst: Err
      Src: /src/opendal/core/services/onedrive/src/core.rs:555,1
    - Dst: parse_error
      Src: /src/opendal/core/services/onedrive/src/core.rs:555,1
    - Dst: get_parent
      Src: /src/opendal/core/services/onedrive/src/core.rs:559,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/onedrive/src/core.rs:559,1
    - Dst: get_basename
      Src: /src/opendal/core/services/onedrive/src/core.rs:560,1
    - Dst: OneDriveCore::ensure_directory
      Src: /src/opendal/core/services/onedrive/src/core.rs:562,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/onedrive/src/core.rs:565,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/onedrive/src/core.rs:569,1
    - Dst: OneDriveCore::onedrive_get_stat_plain
      Src: /src/opendal/core/services/onedrive/src/core.rs:573,1
    - Dst: status
      Src: /src/opendal/core/services/onedrive/src/core.rs:574,1
    - Dst: OneDriveCore::onedrive_delete
      Src: /src/opendal/core/services/onedrive/src/core.rs:580,1
    - Dst: status
      Src: /src/opendal/core/services/onedrive/src/core.rs:581,1
    - Dst: Err
      Src: /src/opendal/core/services/onedrive/src/core.rs:583,1
    - Dst: parse_error
      Src: /src/opendal/core/services/onedrive/src/core.rs:583,1
    - Dst: Err
      Src: /src/opendal/core/services/onedrive/src/core.rs:587,1
    - Dst: parse_error
      Src: /src/opendal/core/services/onedrive/src/core.rs:587,1
    - Dst: serde_json::to_vec
      Src: /src/opendal/core/services/onedrive/src/core.rs:592,1
    - Dst: Vec::map_err
      Src: /src/opendal/core/services/onedrive/src/core.rs:592,1
    - Dst: Buffer::from
      Src: /src/opendal/core/services/onedrive/src/core.rs:593,1
    - Dst: Bytes::from
      Src: /src/opendal/core/services/onedrive/src/core.rs:593,1
    - Dst: Request::post
      Src: /src/opendal/core/services/onedrive/src/core.rs:594,1
    - Dst: http::header
      Src: /src/opendal/core/services/onedrive/src/core.rs:594,1
    - Dst: extension
      Src: /src/opendal/core/services/onedrive/src/core.rs:594,1
    - Dst: extension
      Src: /src/opendal/core/services/onedrive/src/core.rs:594,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/onedrive/src/core.rs:597,1
    - Dst: body
      Src: /src/opendal/core/services/onedrive/src/core.rs:594,1
    - Dst: map_err
      Src: /src/opendal/core/services/onedrive/src/core.rs:594,1
    - Dst: OneDriveCore::sign
      Src: /src/opendal/core/services/onedrive/src/core.rs:601,1
    - Dst: Result::http_transport
      Src: /src/opendal/core/services/onedrive/src/core.rs:603,1
    - Dst: Self::send
      Src: /src/opendal/core/services/onedrive/src/core.rs:603,1
    - Dst: status
      Src: /src/opendal/core/services/onedrive/src/core.rs:604,1
    - Dst: parse_location
      Src: /src/opendal/core/services/onedrive/src/core.rs:605,1
    - Dst: headers
      Src: /src/opendal/core/services/onedrive/src/core.rs:605,1
    - Dst: ok_or_else
      Src: /src/opendal/core/services/onedrive/src/core.rs:605,1
    - Dst: Error::new
      Src: /src/opendal/core/services/onedrive/src/core.rs:607,1
    - Dst: map
      Src: /src/opendal/core/services/onedrive/src/core.rs:605,1
    - Dst: Err
      Src: /src/opendal/core/services/onedrive/src/core.rs:613,1
    - Dst: parse_error
      Src: /src/opendal/core/services/onedrive/src/core.rs:613,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 104
    argCount: 3
    argNames:
    - ctx
    - source
    - destination
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    constantsTouched: []
    func_position:
      end: 615
      start: 546
    functionDepth: 35
    functionLinenumber: 546
    functionLinenumberEnd: 615
    functionName: OneDriveCore::initialize_copy
    functionSourceFile: /src/opendal/core/services/onedrive/src/core.rs
    functionUses: 0
    functionsReached:
    - status
    - Self::send
    - OneDriveCore::sign
    - map
    - map_err
    - extension
    - OneDriveCore::ensure_directory
    - parse_location
    - OneDriveCore::onedrive_get_stat_plain
    - '&str::to_string'
    - ServiceOperation
    - headers
    - Result::http_transport
    - Buffer::from
    - ok_or_else
    - http::header
    - parse_error
    - Bytes::from
    - Result::is_success
    - get_parent
    - Request::post
    - get_basename
    - body
    - OneDriveCore::onedrive_delete
    - Err
    - Error::new
    - Vec::map_err
    - serde_json::to_vec
    linkageType: ''
    returnType: Result
    signature: 'pub(crate) async fn initialize_copy(&self,ctx: &OperationContext,source:
      &str,destination: &str,) -> Result<String>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Request::get
      Src: /src/opendal/core/services/onedrive/src/core.rs:623,1
    - Dst: String::to_string
      Src: /src/opendal/core/services/onedrive/src/core.rs:623,1
    - Dst: Option::header
      Src: /src/opendal/core/services/onedrive/src/core.rs:623,1
    - Dst: String::extension
      Src: /src/opendal/core/services/onedrive/src/core.rs:623,1
    - Dst: extension
      Src: /src/opendal/core/services/onedrive/src/core.rs:623,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/onedrive/src/core.rs:626,1
    - Dst: body
      Src: /src/opendal/core/services/onedrive/src/core.rs:623,1
    - Dst: Buffer::new
      Src: /src/opendal/core/services/onedrive/src/core.rs:627,1
    - Dst: map_err
      Src: /src/opendal/core/services/onedrive/src/core.rs:623,1
    - Dst: OneDriveCore::sign
      Src: /src/opendal/core/services/onedrive/src/core.rs:630,1
    - Dst: Result::http_transport
      Src: /src/opendal/core/services/onedrive/src/core.rs:632,1
    - Dst: Self::send
      Src: /src/opendal/core/services/onedrive/src/core.rs:632,1
    - Dst: serde_json::from_reader
      Src: /src/opendal/core/services/onedrive/src/core.rs:634,1
    - Dst: into_body
      Src: /src/opendal/core/services/onedrive/src/core.rs:634,1
    - Dst: reader
      Src: /src/opendal/core/services/onedrive/src/core.rs:634,1
    - Dst: map_err
      Src: /src/opendal/core/services/onedrive/src/core.rs:634,1
    - Dst: Ok
      Src: /src/opendal/core/services/onedrive/src/core.rs:637,1
    - Dst: tokio::time::sleep
      Src: /src/opendal/core/services/onedrive/src/core.rs:640,1
    - Dst: Duration::from_secs
      Src: /src/opendal/core/services/onedrive/src/core.rs:640,1
    - Dst: Err
      Src: /src/opendal/core/services/onedrive/src/core.rs:643,1
    - Dst: Error::new
      Src: /src/opendal/core/services/onedrive/src/core.rs:643,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 53
    argCount: 2
    argNames:
    - ctx
    - monitor_url
    argTypes:
    - '&OperationContext'
    - String
    constantsTouched: []
    func_position:
      end: 647
      start: 617
    functionDepth: 34
    functionLinenumber: 617
    functionLinenumberEnd: 647
    functionName: OneDriveCore::wait_until_complete
    functionSourceFile: /src/opendal/core/services/onedrive/src/core.rs
    functionUses: 0
    functionsReached:
    - Buffer::new
    - Self::send
    - serde_json::from_reader
    - OneDriveCore::sign
    - String::extension
    - map_err
    - extension
    - reader
    - Ok
    - ServiceOperation
    - Duration::from_secs
    - Result::http_transport
    - into_body
    - String::to_string
    - Option::header
    - Request::get
    - body
    - Err
    - Error::new
    - tokio::time::sleep
    linkageType: ''
    returnType: Result
    signature: 'pub(crate) async fn wait_until_complete(&self,ctx: &OperationContext,monitor_url:
      String,) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: OneDriveCore::onedrive_get_stat_plain
      Src: /src/opendal/core/services/onedrive/src/core.rs:656,1
    - Dst: status
      Src: /src/opendal/core/services/onedrive/src/core.rs:657,1
    - Dst: Result::is_success
      Src: /src/opendal/core/services/onedrive/src/core.rs:657,1
    - Dst: Err
      Src: /src/opendal/core/services/onedrive/src/core.rs:658,1
    - Dst: Error::new
      Src: /src/opendal/core/services/onedrive/src/core.rs:658,1
    - Dst: get_parent
      Src: /src/opendal/core/services/onedrive/src/core.rs:662,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/onedrive/src/core.rs:662,1
    - Dst: get_basename
      Src: /src/opendal/core/services/onedrive/src/core.rs:663,1
    - Dst: OneDriveCore::ensure_directory
      Src: /src/opendal/core/services/onedrive/src/core.rs:665,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/onedrive/src/core.rs:668,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/onedrive/src/core.rs:673,1
    - Dst: serde_json::to_vec
      Src: /src/opendal/core/services/onedrive/src/core.rs:675,1
    - Dst: Vec::map_err
      Src: /src/opendal/core/services/onedrive/src/core.rs:675,1
    - Dst: Buffer::from
      Src: /src/opendal/core/services/onedrive/src/core.rs:676,1
    - Dst: Bytes::from
      Src: /src/opendal/core/services/onedrive/src/core.rs:676,1
    - Dst: Request::patch
      Src: /src/opendal/core/services/onedrive/src/core.rs:682,1
    - Dst: Result::header
      Src: /src/opendal/core/services/onedrive/src/core.rs:682,1
    - Dst: String::extension
      Src: /src/opendal/core/services/onedrive/src/core.rs:682,1
    - Dst: extension
      Src: /src/opendal/core/services/onedrive/src/core.rs:682,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/onedrive/src/core.rs:685,1
    - Dst: body
      Src: /src/opendal/core/services/onedrive/src/core.rs:682,1
    - Dst: map_err
      Src: /src/opendal/core/services/onedrive/src/core.rs:682,1
    - Dst: OneDriveCore::sign
      Src: /src/opendal/core/services/onedrive/src/core.rs:689,1
    - Dst: Result::http_transport
      Src: /src/opendal/core/services/onedrive/src/core.rs:691,1
    - Dst: Self::send
      Src: /src/opendal/core/services/onedrive/src/core.rs:691,1
    - Dst: status
      Src: /src/opendal/core/services/onedrive/src/core.rs:692,1
    - Dst: Ok
      Src: /src/opendal/core/services/onedrive/src/core.rs:694,1
    - Dst: Err
      Src: /src/opendal/core/services/onedrive/src/core.rs:695,1
    - Dst: parse_error
      Src: /src/opendal/core/services/onedrive/src/core.rs:695,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 74
    argCount: 3
    argNames:
    - ctx
    - source
    - destination
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    constantsTouched: []
    func_position:
      end: 697
      start: 649
    functionDepth: 35
    functionLinenumber: 649
    functionLinenumberEnd: 697
    functionName: OneDriveCore::onedrive_move
    functionSourceFile: /src/opendal/core/services/onedrive/src/core.rs
    functionUses: 0
    functionsReached:
    - status
    - Self::send
    - OneDriveCore::sign
    - String::extension
    - Request::patch
    - map_err
    - extension
    - Ok
    - OneDriveCore::ensure_directory
    - OneDriveCore::onedrive_get_stat_plain
    - '&str::to_string'
    - ServiceOperation
    - Result::http_transport
    - Buffer::from
    - parse_error
    - Result::header
    - Bytes::from
    - Result::is_success
    - get_parent
    - body
    - get_basename
    - Err
    - Error::new
    - Vec::map_err
    - serde_json::to_vec
    linkageType: ''
    returnType: Result
    signature: 'pub(crate) async fn onedrive_move(&self,ctx: &OperationContext,source:
      &str,destination: &str,) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/onedrive/src/core.rs:722,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/onedrive/src/core.rs:723,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/onedrive/src/core.rs:724,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/onedrive/src/core.rs:725,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 728
      start: 720
    functionDepth: 2
    functionLinenumber: 720
    functionLinenumberEnd: 728
    functionName: OneDriveSigner::new
    functionSourceFile: /src/opendal/core/services/onedrive/src/core.rs
    functionUses: 2
    functionsReached:
    - '&str::to_string'
    linkageType: ''
    returnType: Self
    signature: pub fn new() -> Self
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Request::post
      Src: /src/opendal/core/services/onedrive/src/core.rs:738,1
    - Dst: http::header
      Src: /src/opendal/core/services/onedrive/src/core.rs:738,1
    - Dst: body
      Src: /src/opendal/core/services/onedrive/src/core.rs:738,1
    - Dst: Buffer::from
      Src: /src/opendal/core/services/onedrive/src/core.rs:740,1
    - Dst: map_err
      Src: /src/opendal/core/services/onedrive/src/core.rs:738,1
    - Dst: Result::http_transport
      Src: /src/opendal/core/services/onedrive/src/core.rs:743,1
    - Dst: Self::send
      Src: /src/opendal/core/services/onedrive/src/core.rs:743,1
    - Dst: status
      Src: /src/opendal/core/services/onedrive/src/core.rs:744,1
    - Dst: into_body
      Src: /src/opendal/core/services/onedrive/src/core.rs:746,1
    - Dst: serde_json::from_reader
      Src: /src/opendal/core/services/onedrive/src/core.rs:748,1
    - Dst: reader
      Src: /src/opendal/core/services/onedrive/src/core.rs:748,1
    - Dst: map_err
      Src: /src/opendal/core/services/onedrive/src/core.rs:748,1
    - Dst: Timestamp::now
      Src: /src/opendal/core/services/onedrive/src/core.rs:752,1
    - Dst: Duration::from_secs
      Src: /src/opendal/core/services/onedrive/src/core.rs:752,1
    - Dst: Duration::from_secs
      Src: /src/opendal/core/services/onedrive/src/core.rs:753,1
    - Dst: Ok
      Src: /src/opendal/core/services/onedrive/src/core.rs:754,1
    - Dst: Err
      Src: /src/opendal/core/services/onedrive/src/core.rs:756,1
    - Dst: parse_error
      Src: /src/opendal/core/services/onedrive/src/core.rs:756,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 48
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - '&OperationContext'
    constantsTouched: []
    func_position:
      end: 758
      start: 730
    functionDepth: 40
    functionLinenumber: 730
    functionLinenumberEnd: 758
    functionName: OneDriveSigner::refresh_tokens
    functionSourceFile: /src/opendal/core/services/onedrive/src/core.rs
    functionUses: 1
    functionsReached:
    - map_err
    - Timestamp::now
    - reader
    - status
    - Self::send
    - Ok
    - http::header
    - Request::post
    - body
    - into_body
    - serde_json::from_reader
    - Err
    - parse_error
    - Duration::from_secs
    - Result::http_transport
    - Buffer::from
    linkageType: ''
    returnType: Result
    signature: 'async fn refresh_tokens(&mut self, ctx: &OperationContext) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: is_empty
      Src: /src/opendal/core/services/onedrive/src/core.rs:766,1
    - Dst: Timestamp::now
      Src: /src/opendal/core/services/onedrive/src/core.rs:766,1
    - Dst: parse
      Src: /src/opendal/core/services/onedrive/src/core.rs:767,1
    - Dst: expect
      Src: /src/opendal/core/services/onedrive/src/core.rs:767,1
    - Dst: http::Request::headers_mut
      Src: /src/opendal/core/services/onedrive/src/core.rs:771,1
    - Dst: insert
      Src: /src/opendal/core/services/onedrive/src/core.rs:771,1
    - Dst: Ok
      Src: /src/opendal/core/services/onedrive/src/core.rs:772,1
    - Dst: OneDriveSigner::refresh_tokens
      Src: /src/opendal/core/services/onedrive/src/core.rs:775,1
    - Dst: parse
      Src: /src/opendal/core/services/onedrive/src/core.rs:777,1
    - Dst: expect
      Src: /src/opendal/core/services/onedrive/src/core.rs:777,1
    - Dst: http::Request::headers_mut
      Src: /src/opendal/core/services/onedrive/src/core.rs:781,1
    - Dst: insert
      Src: /src/opendal/core/services/onedrive/src/core.rs:781,1
    - Dst: Ok
      Src: /src/opendal/core/services/onedrive/src/core.rs:785,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 39
    argCount: 2
    argNames:
    - ctx
    - request
    argTypes:
    - '&OperationContext'
    - '&mut Request<T>'
    constantsTouched: []
    func_position:
      end: 786
      start: 761
    functionDepth: 35
    functionLinenumber: 761
    functionLinenumberEnd: 786
    functionName: OneDriveSigner::sign
    functionSourceFile: /src/opendal/core/services/onedrive/src/core.rs
    functionUses: 0
    functionsReached:
    - Timestamp::now
    - insert
    - expect
    - Ok
    - is_empty
    - parse
    - OneDriveSigner::refresh_tokens
    - http::Request::headers_mut
    linkageType: ''
    returnType: Result
    signature: 'pub async fn sign<T>(&mut self,ctx: &OperationContext,request: &mut
      Request<T>,) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: OperationContext::new
      Src: /src/opendal/integrations/object_store/src/service/mod.rs:217,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 218
      start: 216
    functionDepth: 4
    functionLinenumber: 216
    functionLinenumberEnd: 218
    functionName: tests::test_ctx
    functionSourceFile: /src/opendal/integrations/object_store/src/service/mod.rs
    functionUses: 0
    functionsReached:
    - OperationContext::new
    linkageType: ''
    returnType: OperationContext
    signature: fn test_ctx() -> OperationContext
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: ServiceInfo::new
      Src: /src/opendal/core/services/onedrive/src/core.rs:839,1
    - Dst: OneDriveSigner::new
      Src: /src/opendal/core/services/onedrive/src/core.rs:841,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/onedrive/src/core.rs:842,1
    - Dst: Arc::new
      Src: /src/opendal/core/services/onedrive/src/core.rs:845,1
    - Dst: Capability::default
      Src: /src/opendal/core/services/onedrive/src/core.rs:847,1
    - Dst: Result::to_string
      Src: /src/opendal/core/services/onedrive/src/core.rs:848,1
    - Dst: Arc::new
      Src: /src/opendal/core/services/onedrive/src/core.rs:849,1
    - Dst: Mutex::new
      Src: /src/opendal/core/services/onedrive/src/core.rs:849,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 17
    argCount: 1
    argNames:
    - root
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 851
      start: 838
    functionDepth: 33
    functionLinenumber: 838
    functionLinenumberEnd: 851
    functionName: tests::test_core
    functionSourceFile: /src/opendal/core/services/onedrive/src/core.rs
    functionUses: 0
    functionsReached:
    - ServiceInfo::new
    - Result::to_string
    - Arc::new
    - OneDriveSigner::new
    - Capability::default
    - '&str::to_string'
    - Mutex::new
    linkageType: ''
    returnType: Arc
    signature: 'fn test_core(root: &str) -> Arc<OneDriveCore>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: test_core
      Src: /src/opendal/core/services/onedrive/src/core.rs:855,1
    - Dst: CompfsCore::onedrive_list_request
      Src: /src/opendal/core/services/onedrive/src/core.rs:856,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/services/onedrive/src/core.rs:856,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 865
      start: 854
    functionDepth: 34
    functionLinenumber: 854
    functionLinenumberEnd: 865
    functionName: tests::list_request_for_root_targets_drive_root_children
    functionSourceFile: /src/opendal/core/services/onedrive/src/core.rs
    functionUses: 0
    functionsReached:
    - test_core
    - Result::unwrap
    - CompfsCore::onedrive_list_request
    linkageType: ''
    returnType: void
    signature: fn list_request_for_root_targets_drive_root_children()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: test_core
      Src: /src/opendal/core/services/onedrive/src/core.rs:869,1
    - Dst: CompfsCore::onedrive_list_request
      Src: /src/opendal/core/services/onedrive/src/core.rs:870,1
    - Dst: Some
      Src: /src/opendal/core/services/onedrive/src/core.rs:870,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/services/onedrive/src/core.rs:870,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 879
      start: 868
    functionDepth: 34
    functionLinenumber: 868
    functionLinenumberEnd: 879
    functionName: tests::list_request_for_nested_path_uses_path_addressing
    functionSourceFile: /src/opendal/core/services/onedrive/src/core.rs
    functionUses: 0
    functionsReached:
    - test_core
    - Result::unwrap
    - CompfsCore::onedrive_list_request
    - Some
    linkageType: ''
    returnType: void
    signature: fn list_request_for_nested_path_uses_path_addressing()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: test_core
      Src: /src/opendal/core/services/onedrive/src/core.rs:883,1
    - Dst: CompfsCore::onedrive_list_request
      Src: /src/opendal/core/services/onedrive/src/core.rs:884,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/services/onedrive/src/core.rs:884,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 893
      start: 882
    functionDepth: 34
    functionLinenumber: 882
    functionLinenumberEnd: 893
    functionName: tests::list_request_for_root_under_custom_root_uses_path_addressing
    functionSourceFile: /src/opendal/core/services/onedrive/src/core.rs
    functionUses: 0
    functionsReached:
    - test_core
    - Result::unwrap
    - CompfsCore::onedrive_list_request
    linkageType: ''
    returnType: void
    signature: fn list_request_for_root_under_custom_root_uses_path_addressing()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: test_core
      Src: /src/opendal/core/services/onedrive/src/core.rs:897,1
    - Dst: test_ctx
      Src: /src/opendal/core/services/onedrive/src/core.rs:898,1
    - Dst: OneDriveLister::new
      Src: /src/opendal/core/services/onedrive/src/core.rs:899,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/onedrive/src/core.rs:900,1
    - Dst: Capability::default
      Src: /src/opendal/core/services/onedrive/src/core.rs:903,1
    - Dst: OpList::default
      Src: /src/opendal/core/services/onedrive/src/core.rs:904,1
    - Dst: oio::PageLister::new
      Src: /src/opendal/core/services/onedrive/src/core.rs:906,1
    - Dst: Vec::new
      Src: /src/opendal/core/services/onedrive/src/core.rs:908,1
    - Dst: Result::next
      Src: /src/opendal/core/services/onedrive/src/core.rs:909,1
    - Dst: unwrap
      Src: /src/opendal/core/services/onedrive/src/core.rs:909,1
    - Dst: push
      Src: /src/opendal/core/services/onedrive/src/core.rs:910,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 24
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 917
      start: 896
    functionDepth: 34
    functionLinenumber: 896
    functionLinenumberEnd: 917
    functionName: tests::list_root_returns_entries
    functionSourceFile: /src/opendal/core/services/onedrive/src/core.rs
    functionUses: 0
    functionsReached:
    - test_core
    - OneDriveLister::new
    - push
    - unwrap
    - OpList::default
    - Capability::default
    - Result::next
    - oio::PageLister::new
    - '&str::to_string'
    - test_ctx
    - Vec::new
    linkageType: ''
    returnType: void
    signature: async fn list_root_returns_entries()
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 4
    argNames:
    - core
    - ctx
    - op
    - path
    argTypes:
    - Arc<OneDriveCore>
    - OperationContext
    - OpWrite
    - String
    constantsTouched: []
    func_position:
      end: 53
      start: 46
    functionDepth: 0
    functionLinenumber: 46
    functionLinenumberEnd: 53
    functionName: OneDriveWriter::new
    functionSourceFile: /src/opendal/core/services/onedrive/src/writer.rs
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(core: Arc<OneDriveCore>, ctx: OperationContext, op: OpWrite,
      path: String) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::len
      Src: /src/opendal/core/services/onedrive/src/writer.rs:61,1
    - Dst: OneDriveWriter::write_simple
      Src: /src/opendal/core/services/onedrive/src/writer.rs:64,1
    - Dst: OneDriveWriter::write_chunked
      Src: /src/opendal/core/services/onedrive/src/writer.rs:66,1
    - Dst: Ok
      Src: /src/opendal/core/services/onedrive/src/writer.rs:69,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 13
    argCount: 1
    argNames:
    - bs
    argTypes:
    - Buffer
    constantsTouched: []
    func_position:
      end: 70
      start: 60
    functionDepth: 36
    functionLinenumber: 60
    functionLinenumberEnd: 70
    functionName: OneDriveWriter::write_once
    functionSourceFile: /src/opendal/core/services/onedrive/src/writer.rs
    functionUses: 0
    functionsReached:
    - OneDriveWriter::write_simple
    - OneDriveWriter::write_chunked
    - Ok
    - Result::len
    linkageType: ''
    returnType: Result
    signature: 'async fn write_once(&self, bs: Buffer) -> Result<Metadata>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: onedrive_upload_simple
      Src: /src/opendal/core/services/onedrive/src/writer.rs:75,1
    - Dst: status
      Src: /src/opendal/core/services/onedrive/src/writer.rs:80,1
    - Dst: serde_json::from_reader
      Src: /src/opendal/core/services/onedrive/src/writer.rs:82,1
    - Dst: into_body
      Src: /src/opendal/core/services/onedrive/src/writer.rs:82,1
    - Dst: reader
      Src: /src/opendal/core/services/onedrive/src/writer.rs:82,1
    - Dst: map_err
      Src: /src/opendal/core/services/onedrive/src/writer.rs:82,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/onedrive/src/writer.rs:85,1
    - Dst: Self::with_etag
      Src: /src/opendal/core/services/onedrive/src/writer.rs:85,1
    - Dst: Self::with_content_length
      Src: /src/opendal/core/services/onedrive/src/writer.rs:85,1
    - Dst: max
      Src: /src/opendal/core/services/onedrive/src/writer.rs:87,1
    - Dst: parse::<Timestamp>
      Src: /src/opendal/core/services/onedrive/src/writer.rs:90,1
    - Dst: Result::set_last_modified
      Src: /src/opendal/core/services/onedrive/src/writer.rs:91,1
    - Dst: Ok
      Src: /src/opendal/core/services/onedrive/src/writer.rs:93,1
    - Dst: Err
      Src: /src/opendal/core/services/onedrive/src/writer.rs:95,1
    - Dst: super::core::parse_error
      Src: /src/opendal/core/services/onedrive/src/writer.rs:95,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 43
    argCount: 1
    argNames:
    - bs
    argTypes:
    - Buffer
    constantsTouched: []
    func_position:
      end: 97
      start: 74
    functionDepth: 35
    functionLinenumber: 74
    functionLinenumberEnd: 97
    functionName: OneDriveWriter::write_simple
    functionSourceFile: /src/opendal/core/services/onedrive/src/writer.rs
    functionUses: 1
    functionsReached:
    - map_err
    - Metadata::new
    - reader
    - status
    - parse::<Timestamp>
    - Ok
    - serde_json::from_reader
    - Self::with_content_length
    - into_body
    - Result::set_last_modified
    - Err
    - max
    - onedrive_upload_simple
    - super::core::parse_error
    - Self::with_etag
    linkageType: ''
    returnType: Result
    signature: 'async fn write_simple(&self, bs: Buffer) -> Result<Metadata>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: OneDriveWriter::create_upload_session
      Src: /src/opendal/core/services/onedrive/src/writer.rs:105,1
    - Dst: Result::to_bytes
      Src: /src/opendal/core/services/onedrive/src/writer.rs:108,1
    - Dst: Bytes::len
      Src: /src/opendal/core/services/onedrive/src/writer.rs:109,1
    - Dst: Bytes::chunks
      Src: /src/opendal/core/services/onedrive/src/writer.rs:110,1
    - Dst: Bytes::len
      Src: /src/opendal/core/services/onedrive/src/writer.rs:114,1
    - Dst: Bytes::len
      Src: /src/opendal/core/services/onedrive/src/writer.rs:115,1
    - Dst: onedrive_chunked_upload
      Src: /src/opendal/core/services/onedrive/src/writer.rs:119,1
    - Dst: Buffer::from
      Src: /src/opendal/core/services/onedrive/src/writer.rs:128,1
    - Dst: Bytes::copy_from_slice
      Src: /src/opendal/core/services/onedrive/src/writer.rs:128,1
    - Dst: status
      Src: /src/opendal/core/services/onedrive/src/writer.rs:132,1
    - Dst: serde_json::from_reader
      Src: /src/opendal/core/services/onedrive/src/writer.rs:138,1
    - Dst: into_body
      Src: /src/opendal/core/services/onedrive/src/writer.rs:138,1
    - Dst: reader
      Src: /src/opendal/core/services/onedrive/src/writer.rs:138,1
    - Dst: map_err
      Src: /src/opendal/core/services/onedrive/src/writer.rs:138,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/onedrive/src/writer.rs:141,1
    - Dst: Self::with_etag
      Src: /src/opendal/core/services/onedrive/src/writer.rs:141,1
    - Dst: Self::with_content_length
      Src: /src/opendal/core/services/onedrive/src/writer.rs:141,1
    - Dst: max
      Src: /src/opendal/core/services/onedrive/src/writer.rs:143,1
    - Dst: parse::<Timestamp>
      Src: /src/opendal/core/services/onedrive/src/writer.rs:146,1
    - Dst: Result::set_last_modified
      Src: /src/opendal/core/services/onedrive/src/writer.rs:147,1
    - Dst: Ok
      Src: /src/opendal/core/services/onedrive/src/writer.rs:148,1
    - Dst: Err
      Src: /src/opendal/core/services/onedrive/src/writer.rs:150,1
    - Dst: super::core::parse_error
      Src: /src/opendal/core/services/onedrive/src/writer.rs:150,1
    - Dst: Ok
      Src: /src/opendal/core/services/onedrive/src/writer.rs:158,1
    - Dst: Metadata::default
      Src: /src/opendal/core/services/onedrive/src/writer.rs:158,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 75
    argCount: 1
    argNames:
    - bs
    argTypes:
    - Buffer
    constantsTouched: []
    func_position:
      end: 159
      start: 99
    functionDepth: 42
    functionLinenumber: 99
    functionLinenumberEnd: 159
    functionName: OneDriveWriter::write_chunked
    functionSourceFile: /src/opendal/core/services/onedrive/src/writer.rs
    functionUses: 1
    functionsReached:
    - status
    - parse::<Timestamp>
    - serde_json::from_reader
    - Self::with_etag
    - map_err
    - reader
    - Ok
    - Bytes::chunks
    - max
    - Buffer::from
    - Metadata::new
    - Result::to_bytes
    - into_body
    - Bytes::copy_from_slice
    - super::core::parse_error
    - OneDriveWriter::create_upload_session
    - Metadata::default
    - Self::with_content_length
    - onedrive_chunked_upload
    - Result::set_last_modified
    - Err
    - Bytes::len
    linkageType: ''
    returnType: Result
    signature: 'pub(crate) async fn write_chunked(&self, bs: Buffer) -> Result<Metadata>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: onedrive_create_upload_session
      Src: /src/opendal/core/services/onedrive/src/writer.rs:162,1
    - Dst: status
      Src: /src/opendal/core/services/onedrive/src/writer.rs:166,1
    - Dst: into_body
      Src: /src/opendal/core/services/onedrive/src/writer.rs:168,1
    - Dst: serde_json::from_reader
      Src: /src/opendal/core/services/onedrive/src/writer.rs:170,1
    - Dst: Result::reader
      Src: /src/opendal/core/services/onedrive/src/writer.rs:170,1
    - Dst: map_err
      Src: /src/opendal/core/services/onedrive/src/writer.rs:170,1
    - Dst: Ok
      Src: /src/opendal/core/services/onedrive/src/writer.rs:171,1
    - Dst: Err
      Src: /src/opendal/core/services/onedrive/src/writer.rs:173,1
    - Dst: super::core::parse_error
      Src: /src/opendal/core/services/onedrive/src/writer.rs:173,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 26
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 175
      start: 161
    functionDepth: 41
    functionLinenumber: 161
    functionLinenumberEnd: 175
    functionName: OneDriveWriter::create_upload_session
    functionSourceFile: /src/opendal/core/services/onedrive/src/writer.rs
    functionUses: 1
    functionsReached:
    - map_err
    - status
    - Ok
    - serde_json::from_reader
    - into_body
    - Err
    - Result::reader
    - super::core::parse_error
    - onedrive_create_upload_session
    linkageType: ''
    returnType: Result
    signature: async fn create_upload_session(&self) -> Result<OneDriveUploadSessionCreationResponseBody>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: register::<Onedrive>
      Src: /src/opendal/core/services/onedrive/src/lib.rs:39,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - registry
    argTypes:
    - '&opendal_core::OperatorRegistry'
    constantsTouched: []
    func_position:
      end: 40
      start: 38
    functionDepth: 0
    functionLinenumber: 38
    functionLinenumberEnd: 40
    functionName: register_onedrive_service
    functionSourceFile: /src/opendal/core/services/onedrive/src/lib.rs
    functionUses: 1
    functionsReached:
    - register::<Onedrive>
    linkageType: ''
    returnType: void
    signature: 'pub fn register_onedrive_service(registry: &opendal_core::OperatorRegistry)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: to_string
      Src: /src/opendal/core/services/onedrive/src/graph_model.rs:123,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - name
    argTypes:
    - String
    constantsTouched: []
    func_position:
      end: 127
      start: 121
    functionDepth: 2
    functionLinenumber: 121
    functionLinenumberEnd: 127
    functionName: CreateDirPayload::new
    functionSourceFile: /src/opendal/core/services/onedrive/src/graph_model.rs
    functionUses: 1
    functionsReached:
    - to_string
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(name: String) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: to_string
      Src: /src/opendal/core/services/onedrive/src/graph_model.rs:156,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - path
    argTypes:
    - String
    constantsTouched: []
    func_position:
      end: 160
      start: 153
    functionDepth: 2
    functionLinenumber: 153
    functionLinenumberEnd: 160
    functionName: OneDriveUploadSessionCreationRequestBody::new
    functionSourceFile: /src/opendal/core/services/onedrive/src/graph_model.rs
    functionUses: 1
    functionsReached:
    - to_string
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(path: String) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: serde_json::from_str
      Src: /src/opendal/core/services/onedrive/src/graph_model.rs:238,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/services/onedrive/src/graph_model.rs:238,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 18
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 251
      start: 183
    functionDepth: 34
    functionLinenumber: 183
    functionLinenumberEnd: 251
    functionName: tests::test_parse_one_drive_list_response_json
    functionSourceFile: /src/opendal/core/services/onedrive/src/graph_model.rs
    functionUses: 0
    functionsReached:
    - Result::unwrap
    - serde_json::from_str
    linkageType: ''
    returnType: void
    signature: fn test_parse_one_drive_list_response_json()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: serde_json::from_str
      Src: /src/opendal/core/services/onedrive/src/graph_model.rs:286,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/services/onedrive/src/graph_model.rs:286,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 294
      start: 254
    functionDepth: 34
    functionLinenumber: 254
    functionLinenumberEnd: 294
    functionName: tests::test_parse_one_drive_list_response_with_next_link_json
    functionSourceFile: /src/opendal/core/services/onedrive/src/graph_model.rs
    functionUses: 0
    functionsReached:
    - Result::unwrap
    - serde_json::from_str
    linkageType: ''
    returnType: void
    signature: fn test_parse_one_drive_list_response_with_next_link_json()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: serde_json::from_str
      Src: /src/opendal/core/services/onedrive/src/graph_model.rs:324,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/services/onedrive/src/graph_model.rs:324,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 15
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 336
      start: 297
    functionDepth: 34
    functionLinenumber: 297
    functionLinenumberEnd: 336
    functionName: tests::test_parse_one_drive_file_json
    functionSourceFile: /src/opendal/core/services/onedrive/src/graph_model.rs
    functionUses: 0
    functionsReached:
    - Result::unwrap
    - serde_json::from_str
    linkageType: ''
    returnType: void
    signature: fn test_parse_one_drive_file_json()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: serde_json::from_str
      Src: /src/opendal/core/services/onedrive/src/graph_model.rs:381,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/services/onedrive/src/graph_model.rs:381,1
    - Dst: expect
      Src: /src/opendal/core/services/onedrive/src/graph_model.rs:382,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 385
      start: 339
    functionDepth: 34
    functionLinenumber: 339
    functionLinenumberEnd: 385
    functionName: tests::test_parse_one_drive_file_with_version_json
    functionSourceFile: /src/opendal/core/services/onedrive/src/graph_model.rs
    functionUses: 0
    functionsReached:
    - Result::unwrap
    - expect
    - serde_json::from_str
    linkageType: ''
    returnType: void
    signature: fn test_parse_one_drive_file_with_version_json()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: serde_json::from_str
      Src: /src/opendal/core/services/onedrive/src/graph_model.rs:396,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/services/onedrive/src/graph_model.rs:396,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 398
      start: 388
    functionDepth: 34
    functionLinenumber: 388
    functionLinenumberEnd: 398
    functionName: tests::test_parse_one_drive_monitor_status_json
    functionSourceFile: /src/opendal/core/services/onedrive/src/graph_model.rs
    functionUses: 0
    functionsReached:
    - Result::unwrap
    - serde_json::from_str
    linkageType: ''
    returnType: void
    signature: fn test_parse_one_drive_monitor_status_json()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: serde_json::from_str
      Src: /src/opendal/core/services/onedrive/src/graph_model.rs:418,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/services/onedrive/src/graph_model.rs:418,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 424
      start: 401
    functionDepth: 34
    functionLinenumber: 401
    functionLinenumberEnd: 424
    functionName: tests::test_parse_one_drive_item_versions_json
    functionSourceFile: /src/opendal/core/services/onedrive/src/graph_model.rs
    functionUses: 0
    functionsReached:
    - Result::unwrap
    - serde_json::from_str
    linkageType: ''
    returnType: void
    signature: fn test_parse_one_drive_item_versions_json()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::debug_struct
      Src: /src/opendal/core/services/onedrive/src/backend.rs:50,1
    - Dst: field
      Src: /src/opendal/core/services/onedrive/src/backend.rs:50,1
    - Dst: finish_non_exhaustive
      Src: /src/opendal/core/services/onedrive/src/backend.rs:50,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - f
    argTypes:
    - '&mut std::fmt::Formatter<''_>'
    constantsTouched: []
    func_position:
      end: 53
      start: 49
    functionDepth: 5
    functionLinenumber: 49
    functionLinenumberEnd: 53
    functionName: OnedriveBuilder::fmt
    functionSourceFile: /src/opendal/core/services/onedrive/src/backend.rs
    functionUses: 0
    functionsReached:
    - field
    - Result::debug_struct
    - finish_non_exhaustive
    linkageType: ''
    returnType: std::fmt::Result
    signature: 'fn fmt(&self, f: &mut std::fmt::Formatter<''_>) -> std::fmt::Result'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::is_empty
      Src: /src/opendal/core/services/onedrive/src/backend.rs:59,1
    - Dst: Some
      Src: /src/opendal/core/services/onedrive/src/backend.rs:62,1
    - Dst: Result::to_string
      Src: /src/opendal/core/services/onedrive/src/backend.rs:62,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - root
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 66
      start: 58
    functionDepth: 4
    functionLinenumber: 58
    functionLinenumberEnd: 66
    functionName: OnedriveBuilder::root
    functionSourceFile: /src/opendal/core/services/onedrive/src/backend.rs
    functionUses: 0
    functionsReached:
    - Result::is_empty
    - Result::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn root(mut self, root: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Some
      Src: /src/opendal/core/services/onedrive/src/backend.rs:78,1
    - Dst: to_string
      Src: /src/opendal/core/services/onedrive/src/backend.rs:78,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - access_token
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 80
      start: 77
    functionDepth: 2
    functionLinenumber: 77
    functionLinenumberEnd: 80
    functionName: OnedriveBuilder::access_token
    functionSourceFile: /src/opendal/core/services/onedrive/src/backend.rs
    functionUses: 0
    functionsReached:
    - to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn access_token(mut self, access_token: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Some
      Src: /src/opendal/core/services/onedrive/src/backend.rs:90,1
    - Dst: Self::to_string
      Src: /src/opendal/core/services/onedrive/src/backend.rs:90,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - refresh_token
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 92
      start: 89
    functionDepth: 2
    functionLinenumber: 89
    functionLinenumberEnd: 92
    functionName: OnedriveBuilder::refresh_token
    functionSourceFile: /src/opendal/core/services/onedrive/src/backend.rs
    functionUses: 0
    functionsReached:
    - Self::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn refresh_token(mut self, refresh_token: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Some
      Src: /src/opendal/core/services/onedrive/src/backend.rs:98,1
    - Dst: Self::to_string
      Src: /src/opendal/core/services/onedrive/src/backend.rs:98,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - client_id
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 100
      start: 97
    functionDepth: 2
    functionLinenumber: 97
    functionLinenumberEnd: 100
    functionName: OnedriveBuilder::client_id
    functionSourceFile: /src/opendal/core/services/onedrive/src/backend.rs
    functionUses: 0
    functionsReached:
    - Self::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn client_id(mut self, client_id: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Some
      Src: /src/opendal/core/services/onedrive/src/backend.rs:107,1
    - Dst: Self::to_string
      Src: /src/opendal/core/services/onedrive/src/backend.rs:107,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - client_secret
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 109
      start: 106
    functionDepth: 2
    functionLinenumber: 106
    functionLinenumberEnd: 109
    functionName: OnedriveBuilder::client_secret
    functionSourceFile: /src/opendal/core/services/onedrive/src/backend.rs
    functionUses: 0
    functionsReached:
    - Self::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn client_secret(mut self, client_secret: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 1
    argNames:
    - _enabled
    argTypes:
    - bool
    constantsTouched: []
    func_position:
      end: 118
      start: 116
    functionDepth: 0
    functionLinenumber: 116
    functionLinenumberEnd: 118
    functionName: OnedriveBuilder::enable_versioning
    functionSourceFile: /src/opendal/core/services/onedrive/src/backend.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: 'pub fn enable_versioning(self, _enabled: bool) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: normalize_root
      Src: /src/opendal/core/services/onedrive/src/backend.rs:125,1
    - Dst: unwrap_or_default
      Src: /src/opendal/core/services/onedrive/src/backend.rs:125,1
    - Dst: ServiceInfo::new
      Src: /src/opendal/core/services/onedrive/src/backend.rs:128,1
    - Dst: Default::default
      Src: /src/opendal/core/services/onedrive/src/backend.rs:157,1
    - Dst: OneDriveSigner::new
      Src: /src/opendal/core/services/onedrive/src/backend.rs:161,1
    - Dst: ok_or_else
      Src: /src/opendal/core/services/onedrive/src/backend.rs:173,1
    - Dst: Error::new
      Src: /src/opendal/core/services/onedrive/src/backend.rs:174,1
    - Dst: Self::with_context
      Src: /src/opendal/core/services/onedrive/src/backend.rs:174,1
    - Dst: Err
      Src: /src/opendal/core/services/onedrive/src/backend.rs:188,1
    - Dst: Error::new
      Src: /src/opendal/core/services/onedrive/src/backend.rs:188,1
    - Dst: Self::with_context
      Src: /src/opendal/core/services/onedrive/src/backend.rs:188,1
    - Dst: Err
      Src: /src/opendal/core/services/onedrive/src/backend.rs:195,1
    - Dst: Error::new
      Src: /src/opendal/core/services/onedrive/src/backend.rs:195,1
    - Dst: Self::with_context
      Src: /src/opendal/core/services/onedrive/src/backend.rs:195,1
    - Dst: Arc::new
      Src: /src/opendal/core/services/onedrive/src/backend.rs:203,1
    - Dst: Arc::new
      Src: /src/opendal/core/services/onedrive/src/backend.rs:207,1
    - Dst: Mutex::new
      Src: /src/opendal/core/services/onedrive/src/backend.rs:207,1
    - Dst: Ok
      Src: /src/opendal/core/services/onedrive/src/backend.rs:210,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 65
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 211
      start: 124
    functionDepth: 34
    functionLinenumber: 124
    functionLinenumberEnd: 211
    functionName: OnedriveBuilder::build
    functionSourceFile: /src/opendal/core/services/onedrive/src/backend.rs
    functionUses: 0
    functionsReached:
    - ServiceInfo::new
    - Ok
    - Default::default
    - OneDriveSigner::new
    - Arc::new
    - normalize_root
    - Error::new
    - Err
    - Self::with_context
    - unwrap_or_default
    - Mutex::new
    - ok_or_else
    linkageType: ''
    returnType: Result
    signature: fn build(self) -> Result<impl Service>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: clone
      Src: /src/opendal/core/services/onedrive/src/backend.rs:227,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 228
      start: 226
    functionDepth: 2
    functionLinenumber: 226
    functionLinenumberEnd: 228
    functionName: OnedriveBackend::info
    functionSourceFile: /src/opendal/core/services/onedrive/src/backend.rs
    functionUses: 0
    functionsReached:
    - clone
    linkageType: ''
    returnType: ServiceInfo
    signature: fn info(&self) -> ServiceInfo
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 232
      start: 230
    functionDepth: 0
    functionLinenumber: 230
    functionLinenumberEnd: 232
    functionName: OnedriveBackend::capability
    functionSourceFile: /src/opendal/core/services/onedrive/src/backend.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Capability
    signature: fn capability(&self) -> Capability
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/core/services/onedrive/src/backend.rs:242,1
    - Dst: RpCreateDir::default
      Src: /src/opendal/core/services/onedrive/src/backend.rs:242,1
    - Dst: onedrive_create_dir
      Src: /src/opendal/core/services/onedrive/src/backend.rs:245,1
    - Dst: status
      Src: /src/opendal/core/services/onedrive/src/backend.rs:246,1
    - Dst: Ok
      Src: /src/opendal/core/services/onedrive/src/backend.rs:247,1
    - Dst: RpCreateDir::default
      Src: /src/opendal/core/services/onedrive/src/backend.rs:247,1
    - Dst: Err
      Src: /src/opendal/core/services/onedrive/src/backend.rs:248,1
    - Dst: super::core::parse_error
      Src: /src/opendal/core/services/onedrive/src/backend.rs:248,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 20
    argCount: 3
    argNames:
    - ctx
    - path
    - _args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpCreateDir
    constantsTouched: []
    func_position:
      end: 250
      start: 234
    functionDepth: 41
    functionLinenumber: 234
    functionLinenumberEnd: 250
    functionName: OnedriveBackend::create_dir
    functionSourceFile: /src/opendal/core/services/onedrive/src/backend.rs
    functionUses: 0
    functionsReached:
    - status
    - RpCreateDir::default
    - Ok
    - Err
    - onedrive_create_dir
    - super::core::parse_error
    linkageType: ''
    returnType: Result
    signature: 'async fn create_dir(&self,ctx: &OperationContext,path: &str,_args:
      OpCreateDir,) -> Result<RpCreateDir>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: onedrive_stat
      Src: /src/opendal/core/services/onedrive/src/backend.rs:253,1
    - Dst: Ok
      Src: /src/opendal/core/services/onedrive/src/backend.rs:255,1
    - Dst: RpStat::new
      Src: /src/opendal/core/services/onedrive/src/backend.rs:255,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpStat
    constantsTouched: []
    func_position:
      end: 256
      start: 252
    functionDepth: 35
    functionLinenumber: 252
    functionLinenumberEnd: 256
    functionName: OnedriveBackend::stat
    functionSourceFile: /src/opendal/core/services/onedrive/src/backend.rs
    functionUses: 0
    functionsReached:
    - onedrive_stat
    - RpStat::new
    - Ok
    linkageType: ''
    returnType: Result
    signature: 'async fn stat(&self, ctx: &OperationContext, path: &str, args: OpStat)
      -> Result<RpStat>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/core/services/onedrive/src/backend.rs:259,1
    - Dst: oio::StreamReader::new
      Src: /src/opendal/core/services/onedrive/src/backend.rs:259,1
    - Dst: OnedriveReader::new
      Src: /src/opendal/core/services/onedrive/src/backend.rs:259,1
    - Dst: OnedriveBackend::clone
      Src: /src/opendal/core/services/onedrive/src/backend.rs:260,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/onedrive/src/backend.rs:261,1
    - Dst: Ok
      Src: /src/opendal/core/services/onedrive/src/backend.rs:267,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpRead
    constantsTouched: []
    func_position:
      end: 268
      start: 257
    functionDepth: 3
    functionLinenumber: 257
    functionLinenumberEnd: 268
    functionName: OnedriveBackend::read
    functionSourceFile: /src/opendal/core/services/onedrive/src/backend.rs
    functionUses: 0
    functionsReached:
    - Result::clone
    - Ok
    - oio::StreamReader::new
    - OnedriveReader::new
    - OnedriveBackend::clone
    linkageType: ''
    returnType: Result
    signature: 'fn read(&self, ctx: &OperationContext, path: &str, args: OpRead) ->
      Result<Self::Reader>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/core/services/onedrive/src/backend.rs:272,1
    - Dst: oio::OneShotWriter::new
      Src: /src/opendal/core/services/onedrive/src/backend.rs:272,1
    - Dst: OneDriveWriter::new
      Src: /src/opendal/core/services/onedrive/src/backend.rs:272,1
    - Dst: clone
      Src: /src/opendal/core/services/onedrive/src/backend.rs:273,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/onedrive/src/backend.rs:274,1
    - Dst: to_string
      Src: /src/opendal/core/services/onedrive/src/backend.rs:276,1
    - Dst: Ok
      Src: /src/opendal/core/services/onedrive/src/backend.rs:280,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpWrite
    constantsTouched: []
    func_position:
      end: 281
      start: 270
    functionDepth: 2
    functionLinenumber: 270
    functionLinenumberEnd: 281
    functionName: OnedriveBackend::write
    functionSourceFile: /src/opendal/core/services/onedrive/src/backend.rs
    functionUses: 0
    functionsReached:
    - Result::clone
    - to_string
    - OneDriveWriter::new
    - Ok
    - clone
    - oio::OneShotWriter::new
    linkageType: ''
    returnType: Result
    signature: 'fn write(&self, ctx: &OperationContext, path: &str, args: OpWrite)
      -> Result<Self::Writer>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/core/services/onedrive/src/backend.rs:285,1
    - Dst: oio::OneShotDeleter::new
      Src: /src/opendal/core/services/onedrive/src/backend.rs:285,1
    - Dst: OneDriveDeleter::new
      Src: /src/opendal/core/services/onedrive/src/backend.rs:285,1
    - Dst: clone
      Src: /src/opendal/core/services/onedrive/src/backend.rs:286,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/onedrive/src/backend.rs:287,1
    - Dst: Ok
      Src: /src/opendal/core/services/onedrive/src/backend.rs:291,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - '&OperationContext'
    constantsTouched: []
    func_position:
      end: 292
      start: 283
    functionDepth: 2
    functionLinenumber: 283
    functionLinenumberEnd: 292
    functionName: OnedriveBackend::delete
    functionSourceFile: /src/opendal/core/services/onedrive/src/backend.rs
    functionUses: 0
    functionsReached:
    - oio::OneShotDeleter::new
    - Result::clone
    - Ok
    - clone
    - OneDriveDeleter::new
    linkageType: ''
    returnType: Result
    signature: 'fn delete(&self, ctx: &OperationContext) -> Result<Self::Deleter>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: clone
      Src: /src/opendal/core/services/onedrive/src/backend.rs:302,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/onedrive/src/backend.rs:303,1
    - Dst: Result::to_string
      Src: /src/opendal/core/services/onedrive/src/backend.rs:304,1
    - Dst: Result::to_string
      Src: /src/opendal/core/services/onedrive/src/backend.rs:305,1
    - Dst: Ok
      Src: /src/opendal/core/services/onedrive/src/backend.rs:307,1
    - Dst: oio::OneShotCopier::new
      Src: /src/opendal/core/services/onedrive/src/backend.rs:307,1
    - Dst: CompfsCore::initialize_copy
      Src: /src/opendal/core/services/onedrive/src/backend.rs:308,1
    - Dst: CompfsCore::wait_until_complete
      Src: /src/opendal/core/services/onedrive/src/backend.rs:309,1
    - Dst: Ok
      Src: /src/opendal/core/services/onedrive/src/backend.rs:310,1
    - Dst: Metadata::default
      Src: /src/opendal/core/services/onedrive/src/backend.rs:310,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 26
    argCount: 5
    argNames:
    - ctx
    - from
    - to
    - _args
    - _opts
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    - OpCopy
    - OpCopier
    constantsTouched: []
    func_position:
      end: 312
      start: 294
    functionDepth: 36
    functionLinenumber: 294
    functionLinenumberEnd: 312
    functionName: OnedriveBackend::copy
    functionSourceFile: /src/opendal/core/services/onedrive/src/backend.rs
    functionUses: 0
    functionsReached:
    - Result::clone
    - Metadata::default
    - Result::to_string
    - Ok
    - CompfsCore::wait_until_complete
    - clone
    - CompfsCore::initialize_copy
    - oio::OneShotCopier::new
    linkageType: ''
    returnType: Result
    signature: 'fn copy(&self,ctx: &OperationContext,from: &str,to: &str,_args: OpCopy,_opts:
      OpCopier,) -> Result<Self::Copier>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/core/services/onedrive/src/backend.rs:322,1
    - Dst: RpRename::default
      Src: /src/opendal/core/services/onedrive/src/backend.rs:322,1
    - Dst: onedrive_move
      Src: /src/opendal/core/services/onedrive/src/backend.rs:325,1
    - Dst: Ok
      Src: /src/opendal/core/services/onedrive/src/backend.rs:327,1
    - Dst: RpRename::default
      Src: /src/opendal/core/services/onedrive/src/backend.rs:327,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 4
    argNames:
    - ctx
    - from
    - to
    - _args
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    - OpRename
    constantsTouched: []
    func_position:
      end: 328
      start: 314
    functionDepth: 36
    functionLinenumber: 314
    functionLinenumberEnd: 328
    functionName: OnedriveBackend::rename
    functionSourceFile: /src/opendal/core/services/onedrive/src/backend.rs
    functionUses: 0
    functionsReached:
    - RpRename::default
    - onedrive_move
    - Ok
    linkageType: ''
    returnType: Result
    signature: 'async fn rename(&self,ctx: &OperationContext,from: &str,to: &str,_args:
      OpRename,) -> Result<RpRename>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: OneDriveLister::new
      Src: /src/opendal/core/services/onedrive/src/backend.rs:332,1
    - Dst: to_string
      Src: /src/opendal/core/services/onedrive/src/backend.rs:333,1
    - Dst: clone
      Src: /src/opendal/core/services/onedrive/src/backend.rs:334,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/onedrive/src/backend.rs:335,1
    - Dst: Ok
      Src: /src/opendal/core/services/onedrive/src/backend.rs:339,1
    - Dst: oio::PageLister::new
      Src: /src/opendal/core/services/onedrive/src/backend.rs:339,1
    - Dst: Ok
      Src: /src/opendal/core/services/onedrive/src/backend.rs:342,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 15
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpList
    constantsTouched: []
    func_position:
      end: 343
      start: 330
    functionDepth: 3
    functionLinenumber: 330
    functionLinenumberEnd: 343
    functionName: OnedriveBackend::list
    functionSourceFile: /src/opendal/core/services/onedrive/src/backend.rs
    functionUses: 0
    functionsReached:
    - Result::clone
    - to_string
    - Ok
    - OneDriveLister::new
    - clone
    - oio::PageLister::new
    linkageType: ''
    returnType: Result
    signature: 'fn list(&self, ctx: &OperationContext, path: &str, args: OpList) ->
      Result<Self::Lister>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/core/services/onedrive/src/backend.rs:351,1
    - Dst: Error::new
      Src: /src/opendal/core/services/onedrive/src/backend.rs:351,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - _ctx
    - _path
    - _args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpPresign
    constantsTouched: []
    func_position:
      end: 355
      start: 345
    functionDepth: 36
    functionLinenumber: 345
    functionLinenumberEnd: 355
    functionName: OnedriveBackend::presign
    functionSourceFile: /src/opendal/core/services/onedrive/src/backend.rs
    functionUses: 0
    functionsReached:
    - Error::new
    - Err
    linkageType: ''
    returnType: Result
    signature: 'async fn presign(&self,_ctx: &OperationContext,_path: &str,_args:
      OpPresign,) -> Result<RpPresign>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::debug_struct
      Src: /src/opendal/core/services/seafile/src/config.rs:49,1
    - Dst: field
      Src: /src/opendal/core/services/seafile/src/config.rs:49,1
    - Dst: field
      Src: /src/opendal/core/services/seafile/src/config.rs:49,1
    - Dst: field
      Src: /src/opendal/core/services/seafile/src/config.rs:49,1
    - Dst: field
      Src: /src/opendal/core/services/seafile/src/config.rs:49,1
    - Dst: finish_non_exhaustive
      Src: /src/opendal/core/services/seafile/src/config.rs:49,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 20
    argCount: 1
    argNames:
    - f
    argTypes:
    - '&mut std::fmt::Formatter<''_>'
    constantsTouched: []
    func_position:
      end: 55
      start: 48
    functionDepth: 5
    functionLinenumber: 48
    functionLinenumberEnd: 55
    functionName: SeafileConfig::fmt
    functionSourceFile: /src/opendal/core/services/seafile/src/config.rs
    functionUses: 0
    functionsReached:
    - field
    - Result::debug_struct
    - finish_non_exhaustive
    linkageType: ''
    returnType: std::fmt::Result
    signature: 'fn fmt(&self, f: &mut std::fmt::Formatter<''_>) -> std::fmt::Result'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::options
      Src: /src/opendal/core/services/seafile/src/config.rs:62,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/seafile/src/config.rs:62,1
    - Dst: Result::authority
      Src: /src/opendal/core/services/seafile/src/config.rs:63,1
    - Dst: Result::insert
      Src: /src/opendal/core/services/seafile/src/config.rs:64,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/seafile/src/config.rs:64,1
    - Dst: Result::root
      Src: /src/opendal/core/services/seafile/src/config.rs:66,1
    - Dst: splitn
      Src: /src/opendal/core/services/seafile/src/config.rs:67,1
    - Dst: next
      Src: /src/opendal/core/services/seafile/src/config.rs:68,1
    - Dst: filter
      Src: /src/opendal/core/services/seafile/src/config.rs:68,1
    - Dst: is_empty
      Src: /src/opendal/core/services/seafile/src/config.rs:68,1
    - Dst: Result::insert
      Src: /src/opendal/core/services/seafile/src/config.rs:69,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/seafile/src/config.rs:69,1
    - Dst: Self::to_string
      Src: /src/opendal/core/services/seafile/src/config.rs:69,1
    - Dst: next
      Src: /src/opendal/core/services/seafile/src/config.rs:72,1
    - Dst: is_empty
      Src: /src/opendal/core/services/seafile/src/config.rs:73,1
    - Dst: Result::insert
      Src: /src/opendal/core/services/seafile/src/config.rs:75,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/seafile/src/config.rs:75,1
    - Dst: to_string
      Src: /src/opendal/core/services/seafile/src/config.rs:75,1
    - Dst: Result::contains_key
      Src: /src/opendal/core/services/seafile/src/config.rs:79,1
    - Dst: Err
      Src: /src/opendal/core/services/seafile/src/config.rs:80,1
    - Dst: opendal_core::Error::new
      Src: /src/opendal/core/services/seafile/src/config.rs:80,1
    - Dst: Self::with_context
      Src: /src/opendal/core/services/seafile/src/config.rs:80,1
    - Dst: Self::from_iter
      Src: /src/opendal/core/services/seafile/src/config.rs:87,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 62
    argCount: 1
    argNames:
    - uri
    argTypes:
    - '&opendal_core::OperatorUri'
    constantsTouched: []
    func_position:
      end: 88
      start: 61
    functionDepth: 35
    functionLinenumber: 61
    functionLinenumberEnd: 88
    functionName: SeafileConfig::from_uri
    functionSourceFile: /src/opendal/core/services/seafile/src/config.rs
    functionUses: 1
    functionsReached:
    - Result::clone
    - next
    - filter
    - to_string
    - Self::from_iter
    - Self::to_string
    - Result::insert
    - is_empty
    - Err
    - '&str::to_string'
    - Result::root
    - Result::contains_key
    - Result::authority
    - opendal_core::Error::new
    - splitn
    - Self::with_context
    - Result::options
    linkageType: ''
    returnType: opendal_core::Result
    signature: 'fn from_uri(uri: &opendal_core::OperatorUri) -> opendal_core::Result<Self>'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 92
      start: 90
    functionDepth: 0
    functionLinenumber: 90
    functionLinenumberEnd: 92
    functionName: SeafileConfig::into_builder
    functionSourceFile: /src/opendal/core/services/seafile/src/config.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Self::Builder
    signature: fn into_builder(self) -> Self::Builder
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: OperatorUri::new
      Src: /src/opendal/core/services/seafile/src/config.rs:103,1
    - Dst: Vec::<(String, String)>::new
      Src: /src/opendal/core/services/seafile/src/config.rs:105,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/services/seafile/src/config.rs:103,1
    - Dst: SeafileConfig::from_uri
      Src: /src/opendal/core/services/seafile/src/config.rs:109,1
    - Dst: opendal_core::Result::unwrap
      Src: /src/opendal/core/services/seafile/src/config.rs:109,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 113
      start: 102
    functionDepth: 29
    functionLinenumber: 102
    functionLinenumberEnd: 113
    functionName: tests::from_uri_sets_endpoint_repo_and_root
    functionSourceFile: /src/opendal/core/services/seafile/src/config.rs
    functionUses: 0
    functionsReached:
    - Vec::<(String, String)>::new
    - OperatorUri::new
    - SeafileConfig::from_uri
    - Result::unwrap
    - opendal_core::Result::unwrap
    linkageType: ''
    returnType: void
    signature: fn from_uri_sets_endpoint_repo_and_root()
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - core
    - ctx
    argTypes:
    - Arc<SeafileCore>
    - OperationContext
    constantsTouched: []
    func_position:
      end: 32
      start: 30
    functionDepth: 0
    functionLinenumber: 30
    functionLinenumberEnd: 32
    functionName: SeafileDeleter::new
    functionSourceFile: /src/opendal/core/services/seafile/src/deleter.rs
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(core: Arc<SeafileCore>, ctx: OperationContext) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: delete
      Src: /src/opendal/core/services/seafile/src/deleter.rs:37,1
    - Dst: Ok
      Src: /src/opendal/core/services/seafile/src/deleter.rs:39,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 2
    argNames:
    - path
    argTypes:
    - String
    - OpDelete
    constantsTouched: []
    func_position:
      end: 40
      start: 36
    functionDepth: 32
    functionLinenumber: 36
    functionLinenumberEnd: 40
    functionName: SeafileDeleter::delete_once
    functionSourceFile: /src/opendal/core/services/seafile/src/deleter.rs
    functionUses: 0
    functionsReached:
    - Ok
    - delete
    linkageType: ''
    returnType: Result
    signature: 'async fn delete_once(&self, path: String, _: OpDelete) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: to_string
      Src: /src/opendal/core/services/seafile/src/lister.rs:37,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - core
    - ctx
    - path
    argTypes:
    - Arc<SeafileCore>
    - OperationContext
    - '&str'
    constantsTouched: []
    func_position:
      end: 39
      start: 33
    functionDepth: 2
    functionLinenumber: 33
    functionLinenumberEnd: 39
    functionName: SeafileLister::new
    functionSourceFile: /src/opendal/core/services/seafile/src/lister.rs
    functionUses: 1
    functionsReached:
    - to_string
    linkageType: ''
    returnType: Self
    signature: 'pub(super) fn new(core: Arc<SeafileCore>, ctx: OperationContext, path:
      &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: list
      Src: /src/opendal/core/services/seafile/src/lister.rs:44,1
    - Dst: push_back
      Src: /src/opendal/core/services/seafile/src/lister.rs:48,1
    - Dst: Entry::new
      Src: /src/opendal/core/services/seafile/src/lister.rs:48,1
    - Dst: as_str
      Src: /src/opendal/core/services/seafile/src/lister.rs:49,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/seafile/src/lister.rs:50,1
    - Dst: is_empty
      Src: /src/opendal/core/services/seafile/src/lister.rs:54,1
    - Dst: build_rel_path
      Src: /src/opendal/core/services/seafile/src/lister.rs:55,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/seafile/src/lister.rs:61,1
    - Dst: Self::with_last_modified
      Src: /src/opendal/core/services/seafile/src/lister.rs:61,1
    - Dst: Timestamp::from_second
      Src: /src/opendal/core/services/seafile/src/lister.rs:62,1
    - Dst: Result::set_content_length
      Src: /src/opendal/core/services/seafile/src/lister.rs:64,1
    - Dst: Entry::new
      Src: /src/opendal/core/services/seafile/src/lister.rs:66,1
    - Dst: Entry::new
      Src: /src/opendal/core/services/seafile/src/lister.rs:69,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/seafile/src/lister.rs:69,1
    - Dst: push_back
      Src: /src/opendal/core/services/seafile/src/lister.rs:72,1
    - Dst: Ok
      Src: /src/opendal/core/services/seafile/src/lister.rs:78,1
    - Dst: Ok
      Src: /src/opendal/core/services/seafile/src/lister.rs:83,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 68
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - '&mut oio::PageContext'
    constantsTouched: []
    func_position:
      end: 86
      start: 43
    functionDepth: 37
    functionLinenumber: 43
    functionLinenumberEnd: 86
    functionName: SeafileLister::next_page
    functionSourceFile: /src/opendal/core/services/seafile/src/lister.rs
    functionUses: 0
    functionsReached:
    - Entry::new
    - Metadata::new
    - Ok
    - push_back
    - Self::with_last_modified
    - build_rel_path
    - is_empty
    - list
    - as_str
    - Result::set_content_length
    - Timestamp::from_second
    linkageType: ''
    returnType: Result
    signature: 'async fn next_page(&self, ctx: &mut oio::PageContext) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: to_string
      Src: /src/opendal/core/services/seafile/src/reader.rs:42,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 4
    argNames:
    - backend
    - ctx
    - path
    argTypes:
    - SeafileBackend
    - OperationContext
    - '&str'
    - OpRead
    constantsTouched: []
    func_position:
      end: 44
      start: 33
    functionDepth: 2
    functionLinenumber: 33
    functionLinenumberEnd: 44
    functionName: SeafileReader::new
    functionSourceFile: /src/opendal/core/services/seafile/src/reader.rs
    functionUses: 1
    functionsReached:
    - to_string
    linkageType: ''
    returnType: Self
    signature: 'pub(super) fn new(backend: SeafileBackend,ctx: OperationContext,path:
      &str,_: OpRead,) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: as_str
      Src: /src/opendal/core/services/seafile/src/reader.rs:50,1
    - Dst: download_file
      Src: /src/opendal/core/services/seafile/src/reader.rs:51,1
    - Dst: status
      Src: /src/opendal/core/services/seafile/src/reader.rs:53,1
    - Dst: RpRead::new
      Src: /src/opendal/core/services/seafile/src/reader.rs:57,1
    - Dst: parse_into_metadata
      Src: /src/opendal/core/services/seafile/src/reader.rs:57,1
    - Dst: headers
      Src: /src/opendal/core/services/seafile/src/reader.rs:57,1
    - Dst: into_body
      Src: /src/opendal/core/services/seafile/src/reader.rs:58,1
    - Dst: into_parts
      Src: /src/opendal/core/services/seafile/src/reader.rs:61,1
    - Dst: to_buffer
      Src: /src/opendal/core/services/seafile/src/reader.rs:62,1
    - Dst: Err
      Src: /src/opendal/core/services/seafile/src/reader.rs:63,1
    - Dst: super::core::parse_error
      Src: /src/opendal/core/services/seafile/src/reader.rs:63,1
    - Dst: Response::from_parts
      Src: /src/opendal/core/services/seafile/src/reader.rs:63,1
    - Dst: Ok
      Src: /src/opendal/core/services/seafile/src/reader.rs:67,1
    - Dst: Box::new
      Src: /src/opendal/core/services/seafile/src/reader.rs:67,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 38
    argCount: 1
    argNames:
    - range
    argTypes:
    - BytesRange
    constantsTouched: []
    func_position:
      end: 68
      start: 48
    functionDepth: 36
    functionLinenumber: 48
    functionLinenumberEnd: 68
    functionName: SeafileReader::open
    functionSourceFile: /src/opendal/core/services/seafile/src/reader.rs
    functionUses: 0
    functionsReached:
    - parse_into_metadata
    - to_buffer
    - status
    - download_file
    - Ok
    - Box::new
    - into_body
    - Err
    - Response::from_parts
    - as_str
    - headers
    - into_parts
    - RpRead::new
    - super::core::parse_error
    linkageType: ''
    returnType: Result
    signature: 'async fn open(&self, range: BytesRange) -> Result<(RpRead, Box<dyn
      oio::ReadStreamDyn>)>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::debug_struct
      Src: /src/opendal/core/services/seafile/src/core.rs:55,1
    - Dst: field
      Src: /src/opendal/core/services/seafile/src/core.rs:55,1
    - Dst: field
      Src: /src/opendal/core/services/seafile/src/core.rs:55,1
    - Dst: field
      Src: /src/opendal/core/services/seafile/src/core.rs:55,1
    - Dst: field
      Src: /src/opendal/core/services/seafile/src/core.rs:55,1
    - Dst: finish_non_exhaustive
      Src: /src/opendal/core/services/seafile/src/core.rs:55,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 20
    argCount: 1
    argNames:
    - f
    argTypes:
    - '&mut std::fmt::Formatter<''_>'
    constantsTouched: []
    func_position:
      end: 61
      start: 54
    functionDepth: 5
    functionLinenumber: 54
    functionLinenumberEnd: 61
    functionName: SeafileCore::fmt
    functionSourceFile: /src/opendal/core/services/seafile/src/core.rs
    functionUses: 0
    functionsReached:
    - field
    - Result::debug_struct
    - finish_non_exhaustive
    linkageType: ''
    returnType: std::fmt::Result
    signature: 'fn fmt(&self, f: &mut std::fmt::Formatter<''_>) -> std::fmt::Result'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::http_transport
      Src: /src/opendal/core/services/seafile/src/core.rs:71,1
    - Dst: Self::send
      Src: /src/opendal/core/services/seafile/src/core.rs:71,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - ctx
    - req
    argTypes:
    - '&OperationContext'
    - Request<Buffer>
    constantsTouched: []
    func_position:
      end: 72
      start: 66
    functionDepth: 37
    functionLinenumber: 66
    functionLinenumberEnd: 72
    functionName: SeafileCore::send
    functionSourceFile: /src/opendal/core/services/seafile/src/core.rs
    functionUses: 8
    functionsReached:
    - Result::http_transport
    - Self::send
    linkageType: ''
    returnType: Result
    signature: 'pub async fn send(&self,ctx: &OperationContext,req: Request<Buffer>,)
      -> Result<Response<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: read
      Src: /src/opendal/core/services/seafile/src/core.rs:77,1
    - Dst: is_empty
      Src: /src/opendal/core/services/seafile/src/core.rs:79,1
    - Dst: clone
      Src: /src/opendal/core/services/seafile/src/core.rs:80,1
    - Dst: Ok
      Src: /src/opendal/core/services/seafile/src/core.rs:81,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/seafile/src/core.rs:81,1
    - Dst: write
      Src: /src/opendal/core/services/seafile/src/core.rs:86,1
    - Dst: Request::post
      Src: /src/opendal/core/services/seafile/src/core.rs:92,1
    - Dst: http::header
      Src: /src/opendal/core/services/seafile/src/core.rs:92,1
    - Dst: body
      Src: /src/opendal/core/services/seafile/src/core.rs:92,1
    - Dst: Buffer::from
      Src: /src/opendal/core/services/seafile/src/core.rs:94,1
    - Dst: Bytes::from
      Src: /src/opendal/core/services/seafile/src/core.rs:94,1
    - Dst: map_err
      Src: /src/opendal/core/services/seafile/src/core.rs:92,1
    - Dst: Result::http_transport
      Src: /src/opendal/core/services/seafile/src/core.rs:97,1
    - Dst: Self::send
      Src: /src/opendal/core/services/seafile/src/core.rs:97,1
    - Dst: status
      Src: /src/opendal/core/services/seafile/src/core.rs:98,1
    - Dst: into_body
      Src: /src/opendal/core/services/seafile/src/core.rs:102,1
    - Dst: serde_json::from_reader
      Src: /src/opendal/core/services/seafile/src/core.rs:104,1
    - Dst: reader
      Src: /src/opendal/core/services/seafile/src/core.rs:104,1
    - Dst: map_err
      Src: /src/opendal/core/services/seafile/src/core.rs:104,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/seafile/src/core.rs:108,1
    - Dst: Err
      Src: /src/opendal/core/services/seafile/src/core.rs:112,1
    - Dst: parse_error
      Src: /src/opendal/core/services/seafile/src/core.rs:112,1
    - Dst: Request::get
      Src: /src/opendal/core/services/seafile/src/core.rs:118,1
    - Dst: Option::header
      Src: /src/opendal/core/services/seafile/src/core.rs:118,1
    - Dst: String::body
      Src: /src/opendal/core/services/seafile/src/core.rs:118,1
    - Dst: Buffer::new
      Src: /src/opendal/core/services/seafile/src/core.rs:123,1
    - Dst: map_err
      Src: /src/opendal/core/services/seafile/src/core.rs:118,1
    - Dst: Result::http_transport
      Src: /src/opendal/core/services/seafile/src/core.rs:126,1
    - Dst: Self::send
      Src: /src/opendal/core/services/seafile/src/core.rs:126,1
    - Dst: status
      Src: /src/opendal/core/services/seafile/src/core.rs:128,1
    - Dst: into_body
      Src: /src/opendal/core/services/seafile/src/core.rs:132,1
    - Dst: serde_json::from_reader
      Src: /src/opendal/core/services/seafile/src/core.rs:134,1
    - Dst: reader
      Src: /src/opendal/core/services/seafile/src/core.rs:134,1
    - Dst: map_err
      Src: /src/opendal/core/services/seafile/src/core.rs:134,1
    - Dst: is_empty
      Src: /src/opendal/core/services/seafile/src/core.rs:145,1
    - Dst: Err
      Src: /src/opendal/core/services/seafile/src/core.rs:146,1
    - Dst: Error::new
      Src: /src/opendal/core/services/seafile/src/core.rs:146,1
    - Dst: Err
      Src: /src/opendal/core/services/seafile/src/core.rs:153,1
    - Dst: parse_error
      Src: /src/opendal/core/services/seafile/src/core.rs:153,1
    - Dst: Ok
      Src: /src/opendal/core/services/seafile/src/core.rs:156,1
    - Dst: clone
      Src: /src/opendal/core/services/seafile/src/core.rs:156,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 123
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - '&OperationContext'
    constantsTouched: []
    func_position:
      end: 158
      start: 75
    functionDepth: 31
    functionLinenumber: 75
    functionLinenumberEnd: 158
    functionName: SeafileCore::get_auth_info
    functionSourceFile: /src/opendal/core/services/seafile/src/core.rs
    functionUses: 7
    functionsReached:
    - Buffer::new
    - status
    - Self::send
    - serde_json::from_reader
    - clone
    - write
    - Result::clone
    - map_err
    - reader
    - Ok
    - String::body
    - '&str::to_string'
    - Result::http_transport
    - Buffer::from
    - read
    - http::header
    - parse_error
    - into_body
    - is_empty
    - Bytes::from
    - Option::header
    - Request::get
    - Request::post
    - body
    - Err
    - Error::new
    linkageType: ''
    returnType: Result
    signature: 'pub async fn get_auth_info(&self, ctx: &OperationContext) -> Result<AuthInfo>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: SeafileCore::get_auth_info
      Src: /src/opendal/core/services/seafile/src/core.rs:164,1
    - Dst: Request::get
      Src: /src/opendal/core/services/seafile/src/core.rs:166,1
    - Dst: Option::header
      Src: /src/opendal/core/services/seafile/src/core.rs:171,1
    - Dst: String::extension
      Src: /src/opendal/core/services/seafile/src/core.rs:171,1
    - Dst: extension
      Src: /src/opendal/core/services/seafile/src/core.rs:171,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/seafile/src/core.rs:174,1
    - Dst: body
      Src: /src/opendal/core/services/seafile/src/core.rs:171,1
    - Dst: Buffer::new
      Src: /src/opendal/core/services/seafile/src/core.rs:175,1
    - Dst: map_err
      Src: /src/opendal/core/services/seafile/src/core.rs:171,1
    - Dst: SeafileCore::send
      Src: /src/opendal/core/services/seafile/src/core.rs:178,1
    - Dst: status
      Src: /src/opendal/core/services/seafile/src/core.rs:179,1
    - Dst: into_body
      Src: /src/opendal/core/services/seafile/src/core.rs:183,1
    - Dst: serde_json::from_reader
      Src: /src/opendal/core/services/seafile/src/core.rs:184,1
    - Dst: reader
      Src: /src/opendal/core/services/seafile/src/core.rs:184,1
    - Dst: map_err
      Src: /src/opendal/core/services/seafile/src/core.rs:184,1
    - Dst: Ok
      Src: /src/opendal/core/services/seafile/src/core.rs:186,1
    - Dst: Err
      Src: /src/opendal/core/services/seafile/src/core.rs:188,1
    - Dst: parse_error
      Src: /src/opendal/core/services/seafile/src/core.rs:188,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 37
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - '&OperationContext'
    constantsTouched: []
    func_position:
      end: 190
      start: 163
    functionDepth: 32
    functionLinenumber: 163
    functionLinenumberEnd: 190
    functionName: SeafileCore::get_upload_url
    functionSourceFile: /src/opendal/core/services/seafile/src/core.rs
    functionUses: 1
    functionsReached:
    - map_err
    - extension
    - Request::get
    - Buffer::new
    - reader
    - status
    - SeafileCore::send
    - Ok
    - serde_json::from_reader
    - SeafileCore::get_auth_info
    - body
    - into_body
    - parse_error
    - Err
    - ServiceOperation
    - String::extension
    - Option::header
    linkageType: ''
    returnType: Result
    signature: 'async fn get_upload_url(&self, ctx: &OperationContext) -> Result<String>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: SeafileCore::get_upload_url
      Src: /src/opendal/core/services/seafile/src/core.rs:198,1
    - Dst: Request::post
      Src: /src/opendal/core/services/seafile/src/core.rs:200,1
    - Dst: extension
      Src: /src/opendal/core/services/seafile/src/core.rs:200,1
    - Dst: extension
      Src: /src/opendal/core/services/seafile/src/core.rs:200,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/seafile/src/core.rs:202,1
    - Dst: ends_with
      Src: /src/opendal/core/services/seafile/src/core.rs:204,1
    - Dst: build_abs_path
      Src: /src/opendal/core/services/seafile/src/core.rs:205,1
    - Dst: get_basename
      Src: /src/opendal/core/services/seafile/src/core.rs:207,1
    - Dst: get_parent
      Src: /src/opendal/core/services/seafile/src/core.rs:207,1
    - Dst: build_abs_path
      Src: /src/opendal/core/services/seafile/src/core.rs:208,1
    - Dst: FormDataPart::new
      Src: /src/opendal/core/services/seafile/src/core.rs:211,1
    - Dst: Self::header
      Src: /src/opendal/core/services/seafile/src/core.rs:211,1
    - Dst: parse
      Src: /src/opendal/core/services/seafile/src/core.rs:214,1
    - Dst: unwrap
      Src: /src/opendal/core/services/seafile/src/core.rs:214,1
    - Dst: String::content
      Src: /src/opendal/core/services/seafile/src/core.rs:211,1
    - Dst: Multipart::new
      Src: /src/opendal/core/services/seafile/src/core.rs:220,1
    - Dst: Self::part
      Src: /src/opendal/core/services/seafile/src/core.rs:220,1
    - Dst: FormDataPart::new
      Src: /src/opendal/core/services/seafile/src/core.rs:221,1
    - Dst: Self::content
      Src: /src/opendal/core/services/seafile/src/core.rs:221,1
    - Dst: Self::part
      Src: /src/opendal/core/services/seafile/src/core.rs:220,1
    - Dst: FormDataPart::new
      Src: /src/opendal/core/services/seafile/src/core.rs:222,1
    - Dst: Self::content
      Src: /src/opendal/core/services/seafile/src/core.rs:222,1
    - Dst: clone
      Src: /src/opendal/core/services/seafile/src/core.rs:222,1
    - Dst: Self::part
      Src: /src/opendal/core/services/seafile/src/core.rs:220,1
    - Dst: FormDataPart::new
      Src: /src/opendal/core/services/seafile/src/core.rs:223,1
    - Dst: Self::content
      Src: /src/opendal/core/services/seafile/src/core.rs:223,1
    - Dst: Self::part
      Src: /src/opendal/core/services/seafile/src/core.rs:220,1
    - Dst: apply
      Src: /src/opendal/core/services/seafile/src/core.rs:226,1
    - Dst: SeafileCore::send
      Src: /src/opendal/core/services/seafile/src/core.rs:228,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 59
    argCount: 3
    argNames:
    - ctx
    - path
    - body
    argTypes:
    - '&OperationContext'
    - '&str'
    - Buffer
    constantsTouched: []
    func_position:
      end: 229
      start: 192
    functionDepth: 33
    functionLinenumber: 192
    functionLinenumberEnd: 229
    functionName: SeafileCore::upload_file
    functionSourceFile: /src/opendal/core/services/seafile/src/core.rs
    functionUses: 0
    functionsReached:
    - ends_with
    - clone
    - SeafileCore::get_upload_url
    - Self::header
    - extension
    - Multipart::new
    - Self::content
    - unwrap
    - ServiceOperation
    - apply
    - FormDataPart::new
    - build_abs_path
    - Self::part
    - parse
    - get_parent
    - SeafileCore::send
    - Request::post
    - get_basename
    - String::content
    linkageType: ''
    returnType: Result
    signature: 'pub async fn upload_file(&self,ctx: &OperationContext,path: &str,body:
      Buffer,) -> Result<Response<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/core/services/seafile/src/core.rs:233,1
    - Dst: build_rooted_abs_path
      Src: /src/opendal/core/services/seafile/src/core.rs:236,1
    - Dst: percent_encode_path
      Src: /src/opendal/core/services/seafile/src/core.rs:237,1
    - Dst: trim_end_matches
      Src: /src/opendal/core/services/seafile/src/core.rs:237,1
    - Dst: SeafileCore::get_auth_info
      Src: /src/opendal/core/services/seafile/src/core.rs:239,1
    - Dst: Buffer::from
      Src: /src/opendal/core/services/seafile/src/core.rs:240,1
    - Dst: Bytes::from_static
      Src: /src/opendal/core/services/seafile/src/core.rs:240,1
    - Dst: Request::post
      Src: /src/opendal/core/services/seafile/src/core.rs:242,1
    - Dst: http::header
      Src: /src/opendal/core/services/seafile/src/core.rs:247,1
    - Dst: http::header
      Src: /src/opendal/core/services/seafile/src/core.rs:247,1
    - Dst: extension
      Src: /src/opendal/core/services/seafile/src/core.rs:247,1
    - Dst: extension
      Src: /src/opendal/core/services/seafile/src/core.rs:247,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/seafile/src/core.rs:251,1
    - Dst: body
      Src: /src/opendal/core/services/seafile/src/core.rs:247,1
    - Dst: map_err
      Src: /src/opendal/core/services/seafile/src/core.rs:247,1
    - Dst: SeafileCore::send
      Src: /src/opendal/core/services/seafile/src/core.rs:255,1
    - Dst: status
      Src: /src/opendal/core/services/seafile/src/core.rs:257,1
    - Dst: Ok
      Src: /src/opendal/core/services/seafile/src/core.rs:258,1
    - Dst: Err
      Src: /src/opendal/core/services/seafile/src/core.rs:259,1
    - Dst: parse_error
      Src: /src/opendal/core/services/seafile/src/core.rs:259,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 46
    argCount: 2
    argNames:
    - ctx
    - path
    argTypes:
    - '&OperationContext'
    - '&str'
    constantsTouched: []
    func_position:
      end: 261
      start: 231
    functionDepth: 32
    functionLinenumber: 231
    functionLinenumberEnd: 261
    functionName: SeafileCore::create_dir
    functionSourceFile: /src/opendal/core/services/seafile/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - extension
    - status
    - Ok
    - SeafileCore::send
    - http::header
    - SeafileCore::get_auth_info
    - trim_end_matches
    - build_rooted_abs_path
    - Request::post
    - body
    - Err
    - parse_error
    - percent_encode_path
    - ServiceOperation
    - Bytes::from_static
    - Buffer::from
    linkageType: ''
    returnType: Result
    signature: 'pub async fn create_dir(&self, ctx: &OperationContext, path: &str)
      -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/seafile/src/core.rs:265,1
    - Dst: percent_encode_path
      Src: /src/opendal/core/services/seafile/src/core.rs:266,1
    - Dst: SeafileCore::get_auth_info
      Src: /src/opendal/core/services/seafile/src/core.rs:268,1
    - Dst: Request::get
      Src: /src/opendal/core/services/seafile/src/core.rs:270,1
    - Dst: Option::header
      Src: /src/opendal/core/services/seafile/src/core.rs:275,1
    - Dst: String::extension
      Src: /src/opendal/core/services/seafile/src/core.rs:275,1
    - Dst: extension
      Src: /src/opendal/core/services/seafile/src/core.rs:275,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/seafile/src/core.rs:278,1
    - Dst: body
      Src: /src/opendal/core/services/seafile/src/core.rs:275,1
    - Dst: Buffer::new
      Src: /src/opendal/core/services/seafile/src/core.rs:279,1
    - Dst: map_err
      Src: /src/opendal/core/services/seafile/src/core.rs:275,1
    - Dst: SeafileCore::send
      Src: /src/opendal/core/services/seafile/src/core.rs:282,1
    - Dst: status
      Src: /src/opendal/core/services/seafile/src/core.rs:283,1
    - Dst: into_body
      Src: /src/opendal/core/services/seafile/src/core.rs:287,1
    - Dst: serde_json::from_reader
      Src: /src/opendal/core/services/seafile/src/core.rs:288,1
    - Dst: reader
      Src: /src/opendal/core/services/seafile/src/core.rs:288,1
    - Dst: map_err
      Src: /src/opendal/core/services/seafile/src/core.rs:288,1
    - Dst: Ok
      Src: /src/opendal/core/services/seafile/src/core.rs:291,1
    - Dst: Err
      Src: /src/opendal/core/services/seafile/src/core.rs:293,1
    - Dst: parse_error
      Src: /src/opendal/core/services/seafile/src/core.rs:293,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 42
    argCount: 2
    argNames:
    - ctx
    - path
    argTypes:
    - '&OperationContext'
    - '&str'
    constantsTouched: []
    func_position:
      end: 295
      start: 264
    functionDepth: 32
    functionLinenumber: 264
    functionLinenumberEnd: 295
    functionName: SeafileCore::get_download_url
    functionSourceFile: /src/opendal/core/services/seafile/src/core.rs
    functionUses: 1
    functionsReached:
    - Buffer::new
    - status
    - serde_json::from_reader
    - SeafileCore::get_auth_info
    - percent_encode_path
    - String::extension
    - map_err
    - extension
    - reader
    - Ok
    - ServiceOperation
    - parse_error
    - into_body
    - build_abs_path
    - Option::header
    - Request::get
    - SeafileCore::send
    - body
    - Err
    linkageType: ''
    returnType: Result
    signature: 'async fn get_download_url(&self, ctx: &OperationContext, path: &str)
      -> Result<String>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: SeafileCore::get_download_url
      Src: /src/opendal/core/services/seafile/src/core.rs:304,1
    - Dst: Request::get
      Src: /src/opendal/core/services/seafile/src/core.rs:306,1
    - Dst: Option::header
      Src: /src/opendal/core/services/seafile/src/core.rs:308,1
    - Dst: (Vec::to_header
      Src: /src/opendal/core/services/seafile/src/core.rs:309,1
    - Dst: String::extension
      Src: /src/opendal/core/services/seafile/src/core.rs:308,1
    - Dst: extension
      Src: /src/opendal/core/services/seafile/src/core.rs:308,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/seafile/src/core.rs:311,1
    - Dst: body
      Src: /src/opendal/core/services/seafile/src/core.rs:308,1
    - Dst: Buffer::new
      Src: /src/opendal/core/services/seafile/src/core.rs:312,1
    - Dst: map_err
      Src: /src/opendal/core/services/seafile/src/core.rs:308,1
    - Dst: Result::http_transport
      Src: /src/opendal/core/services/seafile/src/core.rs:315,1
    - Dst: Self::fetch
      Src: /src/opendal/core/services/seafile/src/core.rs:315,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 25
    argCount: 3
    argNames:
    - ctx
    - path
    - range
    argTypes:
    - '&OperationContext'
    - '&str'
    - BytesRange
    constantsTouched: []
    func_position:
      end: 316
      start: 298
    functionDepth: 33
    functionLinenumber: 298
    functionLinenumberEnd: 316
    functionName: SeafileCore::download_file
    functionSourceFile: /src/opendal/core/services/seafile/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - extension
    - Request::get
    - (Vec::to_header
    - Buffer::new
    - body
    - Result::http_transport
    - Self::fetch
    - ServiceOperation
    - SeafileCore::get_download_url
    - String::extension
    - Option::header
    linkageType: ''
    returnType: Result
    signature: 'pub async fn download_file(&self,ctx: &OperationContext,path: &str,range:
      BytesRange,) -> Result<Response<HttpBody>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/seafile/src/core.rs:320,1
    - Dst: percent_encode_path
      Src: /src/opendal/core/services/seafile/src/core.rs:321,1
    - Dst: SeafileCore::get_auth_info
      Src: /src/opendal/core/services/seafile/src/core.rs:323,1
    - Dst: Request::get
      Src: /src/opendal/core/services/seafile/src/core.rs:325,1
    - Dst: Option::header
      Src: /src/opendal/core/services/seafile/src/core.rs:330,1
    - Dst: String::extension
      Src: /src/opendal/core/services/seafile/src/core.rs:330,1
    - Dst: extension
      Src: /src/opendal/core/services/seafile/src/core.rs:330,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/seafile/src/core.rs:333,1
    - Dst: body
      Src: /src/opendal/core/services/seafile/src/core.rs:330,1
    - Dst: Buffer::new
      Src: /src/opendal/core/services/seafile/src/core.rs:334,1
    - Dst: map_err
      Src: /src/opendal/core/services/seafile/src/core.rs:330,1
    - Dst: SeafileCore::send
      Src: /src/opendal/core/services/seafile/src/core.rs:337,1
    - Dst: status
      Src: /src/opendal/core/services/seafile/src/core.rs:338,1
    - Dst: into_body
      Src: /src/opendal/core/services/seafile/src/core.rs:342,1
    - Dst: serde_json::from_reader
      Src: /src/opendal/core/services/seafile/src/core.rs:343,1
    - Dst: reader
      Src: /src/opendal/core/services/seafile/src/core.rs:343,1
    - Dst: map_err
      Src: /src/opendal/core/services/seafile/src/core.rs:343,1
    - Dst: Ok
      Src: /src/opendal/core/services/seafile/src/core.rs:345,1
    - Dst: Err
      Src: /src/opendal/core/services/seafile/src/core.rs:347,1
    - Dst: parse_error
      Src: /src/opendal/core/services/seafile/src/core.rs:347,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 42
    argCount: 2
    argNames:
    - ctx
    - path
    argTypes:
    - '&OperationContext'
    - '&str'
    constantsTouched: []
    func_position:
      end: 349
      start: 319
    functionDepth: 32
    functionLinenumber: 319
    functionLinenumberEnd: 349
    functionName: SeafileCore::file_detail
    functionSourceFile: /src/opendal/core/services/seafile/src/core.rs
    functionUses: 0
    functionsReached:
    - Buffer::new
    - status
    - serde_json::from_reader
    - SeafileCore::get_auth_info
    - percent_encode_path
    - String::extension
    - map_err
    - extension
    - reader
    - Ok
    - ServiceOperation
    - parse_error
    - into_body
    - build_abs_path
    - Option::header
    - Request::get
    - SeafileCore::send
    - body
    - Err
    linkageType: ''
    returnType: Result
    signature: 'pub async fn file_detail(&self, ctx: &OperationContext, path: &str)
      -> Result<FileDetail>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/seafile/src/core.rs:353,1
    - Dst: percent_encode_path
      Src: /src/opendal/core/services/seafile/src/core.rs:354,1
    - Dst: SeafileCore::get_auth_info
      Src: /src/opendal/core/services/seafile/src/core.rs:356,1
    - Dst: Request::get
      Src: /src/opendal/core/services/seafile/src/core.rs:358,1
    - Dst: Option::header
      Src: /src/opendal/core/services/seafile/src/core.rs:363,1
    - Dst: String::extension
      Src: /src/opendal/core/services/seafile/src/core.rs:363,1
    - Dst: extension
      Src: /src/opendal/core/services/seafile/src/core.rs:363,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/seafile/src/core.rs:366,1
    - Dst: body
      Src: /src/opendal/core/services/seafile/src/core.rs:363,1
    - Dst: Buffer::new
      Src: /src/opendal/core/services/seafile/src/core.rs:367,1
    - Dst: map_err
      Src: /src/opendal/core/services/seafile/src/core.rs:363,1
    - Dst: SeafileCore::send
      Src: /src/opendal/core/services/seafile/src/core.rs:370,1
    - Dst: status
      Src: /src/opendal/core/services/seafile/src/core.rs:371,1
    - Dst: into_body
      Src: /src/opendal/core/services/seafile/src/core.rs:375,1
    - Dst: serde_json::from_reader
      Src: /src/opendal/core/services/seafile/src/core.rs:376,1
    - Dst: reader
      Src: /src/opendal/core/services/seafile/src/core.rs:376,1
    - Dst: map_err
      Src: /src/opendal/core/services/seafile/src/core.rs:376,1
    - Dst: Ok
      Src: /src/opendal/core/services/seafile/src/core.rs:378,1
    - Dst: Err
      Src: /src/opendal/core/services/seafile/src/core.rs:380,1
    - Dst: parse_error
      Src: /src/opendal/core/services/seafile/src/core.rs:380,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 42
    argCount: 2
    argNames:
    - ctx
    - path
    argTypes:
    - '&OperationContext'
    - '&str'
    constantsTouched: []
    func_position:
      end: 382
      start: 352
    functionDepth: 32
    functionLinenumber: 352
    functionLinenumberEnd: 382
    functionName: SeafileCore::dir_detail
    functionSourceFile: /src/opendal/core/services/seafile/src/core.rs
    functionUses: 0
    functionsReached:
    - Buffer::new
    - status
    - serde_json::from_reader
    - SeafileCore::get_auth_info
    - percent_encode_path
    - String::extension
    - map_err
    - extension
    - reader
    - Ok
    - ServiceOperation
    - parse_error
    - into_body
    - build_abs_path
    - Option::header
    - Request::get
    - SeafileCore::send
    - body
    - Err
    linkageType: ''
    returnType: Result
    signature: 'pub async fn dir_detail(&self, ctx: &OperationContext, path: &str)
      -> Result<DirDetail>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/seafile/src/core.rs:386,1
    - Dst: percent_encode_path
      Src: /src/opendal/core/services/seafile/src/core.rs:387,1
    - Dst: SeafileCore::get_auth_info
      Src: /src/opendal/core/services/seafile/src/core.rs:389,1
    - Dst: ends_with
      Src: /src/opendal/core/services/seafile/src/core.rs:391,1
    - Dst: Request::delete
      Src: /src/opendal/core/services/seafile/src/core.rs:403,1
    - Dst: Result::header
      Src: /src/opendal/core/services/seafile/src/core.rs:405,1
    - Dst: String::extension
      Src: /src/opendal/core/services/seafile/src/core.rs:405,1
    - Dst: extension
      Src: /src/opendal/core/services/seafile/src/core.rs:405,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/seafile/src/core.rs:408,1
    - Dst: body
      Src: /src/opendal/core/services/seafile/src/core.rs:405,1
    - Dst: Buffer::new
      Src: /src/opendal/core/services/seafile/src/core.rs:409,1
    - Dst: map_err
      Src: /src/opendal/core/services/seafile/src/core.rs:405,1
    - Dst: SeafileCore::send
      Src: /src/opendal/core/services/seafile/src/core.rs:412,1
    - Dst: status
      Src: /src/opendal/core/services/seafile/src/core.rs:414,1
    - Dst: Ok
      Src: /src/opendal/core/services/seafile/src/core.rs:417,1
    - Dst: Err
      Src: /src/opendal/core/services/seafile/src/core.rs:418,1
    - Dst: parse_error
      Src: /src/opendal/core/services/seafile/src/core.rs:418,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 38
    argCount: 2
    argNames:
    - ctx
    - path
    argTypes:
    - '&OperationContext'
    - '&str'
    constantsTouched: []
    func_position:
      end: 420
      start: 385
    functionDepth: 32
    functionLinenumber: 385
    functionLinenumberEnd: 420
    functionName: SeafileCore::delete
    functionSourceFile: /src/opendal/core/services/seafile/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - extension
    - Buffer::new
    - Request::delete
    - SeafileCore::send
    - status
    - Ok
    - ends_with
    - SeafileCore::get_auth_info
    - body
    - build_abs_path
    - Result::header
    - Err
    - parse_error
    - percent_encode_path
    - ServiceOperation
    - String::extension
    linkageType: ''
    returnType: Result
    signature: 'pub async fn delete(&self, ctx: &OperationContext, path: &str) ->
      Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_rooted_abs_path
      Src: /src/opendal/core/services/seafile/src/core.rs:423,1
    - Dst: SeafileCore::get_auth_info
      Src: /src/opendal/core/services/seafile/src/core.rs:425,1
    - Dst: Request::get
      Src: /src/opendal/core/services/seafile/src/core.rs:434,1
    - Dst: Option::header
      Src: /src/opendal/core/services/seafile/src/core.rs:436,1
    - Dst: String::extension
      Src: /src/opendal/core/services/seafile/src/core.rs:436,1
    - Dst: extension
      Src: /src/opendal/core/services/seafile/src/core.rs:436,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/seafile/src/core.rs:439,1
    - Dst: body
      Src: /src/opendal/core/services/seafile/src/core.rs:436,1
    - Dst: Buffer::new
      Src: /src/opendal/core/services/seafile/src/core.rs:440,1
    - Dst: map_err
      Src: /src/opendal/core/services/seafile/src/core.rs:436,1
    - Dst: SeafileCore::send
      Src: /src/opendal/core/services/seafile/src/core.rs:443,1
    - Dst: status
      Src: /src/opendal/core/services/seafile/src/core.rs:445,1
    - Dst: into_body
      Src: /src/opendal/core/services/seafile/src/core.rs:447,1
    - Dst: serde_json::from_reader
      Src: /src/opendal/core/services/seafile/src/core.rs:448,1
    - Dst: reader
      Src: /src/opendal/core/services/seafile/src/core.rs:448,1
    - Dst: map_err
      Src: /src/opendal/core/services/seafile/src/core.rs:448,1
    - Dst: Ok
      Src: /src/opendal/core/services/seafile/src/core.rs:450,1
    - Dst: Some
      Src: /src/opendal/core/services/seafile/src/core.rs:451,1
    - Dst: Ok
      Src: /src/opendal/core/services/seafile/src/core.rs:456,1
    - Dst: Err
      Src: /src/opendal/core/services/seafile/src/core.rs:460,1
    - Dst: parse_error
      Src: /src/opendal/core/services/seafile/src/core.rs:460,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 44
    argCount: 2
    argNames:
    - ctx
    - path
    argTypes:
    - '&OperationContext'
    - '&str'
    constantsTouched: []
    func_position:
      end: 462
      start: 422
    functionDepth: 32
    functionLinenumber: 422
    functionLinenumberEnd: 462
    functionName: SeafileCore::list
    functionSourceFile: /src/opendal/core/services/seafile/src/core.rs
    functionUses: 0
    functionsReached:
    - Buffer::new
    - status
    - serde_json::from_reader
    - SeafileCore::get_auth_info
    - String::extension
    - map_err
    - extension
    - reader
    - Ok
    - ServiceOperation
    - parse_error
    - into_body
    - build_rooted_abs_path
    - Some
    - Option::header
    - Request::get
    - SeafileCore::send
    - body
    - Err
    linkageType: ''
    returnType: Result
    signature: 'pub async fn list(&self, ctx: &OperationContext, path: &str) -> Result<ListResponse>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Metadata::new
      Src: /src/opendal/core/services/seafile/src/core.rs:482,1
    - Dst: storage::Result::set_last_modified
      Src: /src/opendal/core/services/seafile/src/core.rs:484,1
    - Dst: mtime.parse::<Timestamp>
      Src: /src/opendal/core/services/seafile/src/core.rs:484,1
    - Dst: Ok
      Src: /src/opendal/core/services/seafile/src/core.rs:486,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - dir_detail
    argTypes:
    - DirDetail
    constantsTouched: []
    func_position:
      end: 487
      start: 481
    functionDepth: 1
    functionLinenumber: 481
    functionLinenumberEnd: 487
    functionName: parse_dir_detail
    functionSourceFile: /src/opendal/core/services/seafile/src/core.rs
    functionUses: 1
    functionsReached:
    - Metadata::new
    - Ok
    - mtime.parse::<Timestamp>
    - storage::Result::set_last_modified
    linkageType: ''
    returnType: Result
    signature: 'pub fn parse_dir_detail(dir_detail: DirDetail) -> Result<Metadata>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Metadata::new
      Src: /src/opendal/core/services/seafile/src/core.rs:490,1
    - Dst: storage::Result::set_content_length
      Src: /src/opendal/core/services/seafile/src/core.rs:492,1
    - Dst: storage::Result::set_last_modified
      Src: /src/opendal/core/services/seafile/src/core.rs:493,1
    - Dst: last_modified.parse::<Timestamp>
      Src: /src/opendal/core/services/seafile/src/core.rs:493,1
    - Dst: Ok
      Src: /src/opendal/core/services/seafile/src/core.rs:495,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 1
    argNames:
    - file_detail
    argTypes:
    - FileDetail
    constantsTouched: []
    func_position:
      end: 496
      start: 489
    functionDepth: 1
    functionLinenumber: 489
    functionLinenumberEnd: 496
    functionName: parse_file_detail
    functionSourceFile: /src/opendal/core/services/seafile/src/core.rs
    functionUses: 1
    functionsReached:
    - Metadata::new
    - Ok
    - storage::Result::set_last_modified
    - storage::Result::set_content_length
    - last_modified.parse::<Timestamp>
    linkageType: ''
    returnType: Result
    signature: 'pub fn parse_file_detail(file_detail: FileDetail) -> Result<Metadata>'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 4
    argNames:
    - core
    - ctx
    - op
    - path
    argTypes:
    - Arc<SeafileCore>
    - OperationContext
    - OpWrite
    - String
    constantsTouched: []
    func_position:
      end: 44
      start: 37
    functionDepth: 0
    functionLinenumber: 37
    functionLinenumberEnd: 44
    functionName: SeafileWriter::new
    functionSourceFile: /src/opendal/core/services/seafile/src/writer.rs
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(core: Arc<SeafileCore>, ctx: OperationContext, op: OpWrite,
      path: String) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: upload_file
      Src: /src/opendal/core/services/seafile/src/writer.rs:49,1
    - Dst: status
      Src: /src/opendal/core/services/seafile/src/writer.rs:51,1
    - Dst: Ok
      Src: /src/opendal/core/services/seafile/src/writer.rs:53,1
    - Dst: Metadata::default
      Src: /src/opendal/core/services/seafile/src/writer.rs:53,1
    - Dst: Err
      Src: /src/opendal/core/services/seafile/src/writer.rs:54,1
    - Dst: super::core::parse_error
      Src: /src/opendal/core/services/seafile/src/writer.rs:54,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 1
    argNames:
    - bs
    argTypes:
    - Buffer
    constantsTouched: []
    func_position:
      end: 56
      start: 48
    functionDepth: 39
    functionLinenumber: 48
    functionLinenumberEnd: 56
    functionName: SeafileWriter::write_once
    functionSourceFile: /src/opendal/core/services/seafile/src/writer.rs
    functionUses: 0
    functionsReached:
    - Metadata::default
    - status
    - Ok
    - upload_file
    - Err
    - super::core::parse_error
    linkageType: ''
    returnType: Result
    signature: 'async fn write_once(&self, bs: Buffer) -> Result<Metadata>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: register::<Seafile>
      Src: /src/opendal/core/services/seafile/src/lib.rs:23,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - registry
    argTypes:
    - '&opendal_core::OperatorRegistry'
    constantsTouched: []
    func_position:
      end: 24
      start: 22
    functionDepth: 0
    functionLinenumber: 22
    functionLinenumberEnd: 24
    functionName: register_seafile_service
    functionSourceFile: /src/opendal/core/services/seafile/src/lib.rs
    functionUses: 1
    functionsReached:
    - register::<Seafile>
    linkageType: ''
    returnType: void
    signature: 'pub fn register_seafile_service(registry: &opendal_core::OperatorRegistry)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::debug_struct
      Src: /src/opendal/core/services/seafile/src/backend.rs:47,1
    - Dst: field
      Src: /src/opendal/core/services/seafile/src/backend.rs:47,1
    - Dst: finish_non_exhaustive
      Src: /src/opendal/core/services/seafile/src/backend.rs:47,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - f
    argTypes:
    - '&mut std::fmt::Formatter<''_>'
    constantsTouched: []
    func_position:
      end: 50
      start: 46
    functionDepth: 5
    functionLinenumber: 46
    functionLinenumberEnd: 50
    functionName: SeafileBuilder::fmt
    functionSourceFile: /src/opendal/core/services/seafile/src/backend.rs
    functionUses: 0
    functionsReached:
    - field
    - Result::debug_struct
    - finish_non_exhaustive
    linkageType: ''
    returnType: std::fmt::Result
    signature: 'fn fmt(&self, f: &mut std::fmt::Formatter<''_>) -> std::fmt::Result'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::is_empty
      Src: /src/opendal/core/services/seafile/src/backend.rs:58,1
    - Dst: Some
      Src: /src/opendal/core/services/seafile/src/backend.rs:61,1
    - Dst: Result::to_string
      Src: /src/opendal/core/services/seafile/src/backend.rs:61,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - root
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 65
      start: 57
    functionDepth: 4
    functionLinenumber: 57
    functionLinenumberEnd: 65
    functionName: SeafileBuilder::root
    functionSourceFile: /src/opendal/core/services/seafile/src/backend.rs
    functionUses: 0
    functionsReached:
    - Result::is_empty
    - Result::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn root(mut self, root: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self::is_empty
      Src: /src/opendal/core/services/seafile/src/backend.rs:71,1
    - Dst: Some
      Src: /src/opendal/core/services/seafile/src/backend.rs:74,1
    - Dst: Self::to_string
      Src: /src/opendal/core/services/seafile/src/backend.rs:74,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - endpoint
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 78
      start: 70
    functionDepth: 4
    functionLinenumber: 70
    functionLinenumberEnd: 78
    functionName: SeafileBuilder::endpoint
    functionSourceFile: /src/opendal/core/services/seafile/src/backend.rs
    functionUses: 0
    functionsReached:
    - Self::is_empty
    - Self::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn endpoint(mut self, endpoint: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Option::is_empty
      Src: /src/opendal/core/services/seafile/src/backend.rs:84,1
    - Dst: Some
      Src: /src/opendal/core/services/seafile/src/backend.rs:87,1
    - Dst: Option::to_string
      Src: /src/opendal/core/services/seafile/src/backend.rs:87,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - username
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 91
      start: 83
    functionDepth: 4
    functionLinenumber: 83
    functionLinenumberEnd: 91
    functionName: SeafileBuilder::username
    functionSourceFile: /src/opendal/core/services/seafile/src/backend.rs
    functionUses: 0
    functionsReached:
    - Option::to_string
    - Option::is_empty
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn username(mut self, username: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Option::is_empty
      Src: /src/opendal/core/services/seafile/src/backend.rs:97,1
    - Dst: Some
      Src: /src/opendal/core/services/seafile/src/backend.rs:100,1
    - Dst: Option::to_string
      Src: /src/opendal/core/services/seafile/src/backend.rs:100,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - password
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 104
      start: 96
    functionDepth: 4
    functionLinenumber: 96
    functionLinenumberEnd: 104
    functionName: SeafileBuilder::password
    functionSourceFile: /src/opendal/core/services/seafile/src/backend.rs
    functionUses: 0
    functionsReached:
    - Option::to_string
    - Option::is_empty
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn password(mut self, password: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self::to_string
      Src: /src/opendal/core/services/seafile/src/backend.rs:110,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - repo_name
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 113
      start: 109
    functionDepth: 2
    functionLinenumber: 109
    functionLinenumberEnd: 113
    functionName: SeafileBuilder::repo_name
    functionSourceFile: /src/opendal/core/services/seafile/src/backend.rs
    functionUses: 0
    functionsReached:
    - Self::to_string
    linkageType: ''
    returnType: Self
    signature: 'pub fn repo_name(mut self, repo_name: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: normalize_root
      Src: /src/opendal/core/services/seafile/src/backend.rs:123,1
    - Dst: clone
      Src: /src/opendal/core/services/seafile/src/backend.rs:123,1
    - Dst: unwrap_or_default
      Src: /src/opendal/core/services/seafile/src/backend.rs:123,1
    - Dst: is_empty
      Src: /src/opendal/core/services/seafile/src/backend.rs:127,1
    - Dst: Err
      Src: /src/opendal/core/services/seafile/src/backend.rs:128,1
    - Dst: Error::new
      Src: /src/opendal/core/services/seafile/src/backend.rs:128,1
    - Dst: Self::with_operation
      Src: /src/opendal/core/services/seafile/src/backend.rs:128,1
    - Dst: Self::with_context
      Src: /src/opendal/core/services/seafile/src/backend.rs:128,1
    - Dst: Ok
      Src: /src/opendal/core/services/seafile/src/backend.rs:136,1
    - Dst: Self::clone
      Src: /src/opendal/core/services/seafile/src/backend.rs:136,1
    - Dst: Err
      Src: /src/opendal/core/services/seafile/src/backend.rs:137,1
    - Dst: Error::new
      Src: /src/opendal/core/services/seafile/src/backend.rs:137,1
    - Dst: Self::with_operation
      Src: /src/opendal/core/services/seafile/src/backend.rs:137,1
    - Dst: Self::with_context
      Src: /src/opendal/core/services/seafile/src/backend.rs:137,1
    - Dst: Ok
      Src: /src/opendal/core/services/seafile/src/backend.rs:143,1
    - Dst: Option::clone
      Src: /src/opendal/core/services/seafile/src/backend.rs:143,1
    - Dst: Err
      Src: /src/opendal/core/services/seafile/src/backend.rs:144,1
    - Dst: Error::new
      Src: /src/opendal/core/services/seafile/src/backend.rs:144,1
    - Dst: Self::with_operation
      Src: /src/opendal/core/services/seafile/src/backend.rs:144,1
    - Dst: Self::with_context
      Src: /src/opendal/core/services/seafile/src/backend.rs:144,1
    - Dst: Ok
      Src: /src/opendal/core/services/seafile/src/backend.rs:150,1
    - Dst: Option::clone
      Src: /src/opendal/core/services/seafile/src/backend.rs:150,1
    - Dst: Err
      Src: /src/opendal/core/services/seafile/src/backend.rs:151,1
    - Dst: Error::new
      Src: /src/opendal/core/services/seafile/src/backend.rs:151,1
    - Dst: Self::with_operation
      Src: /src/opendal/core/services/seafile/src/backend.rs:151,1
    - Dst: Self::with_context
      Src: /src/opendal/core/services/seafile/src/backend.rs:151,1
    - Dst: Ok
      Src: /src/opendal/core/services/seafile/src/backend.rs:156,1
    - Dst: Arc::new
      Src: /src/opendal/core/services/seafile/src/backend.rs:157,1
    - Dst: ServiceInfo::new
      Src: /src/opendal/core/services/seafile/src/backend.rs:158,1
    - Dst: Default::default
      Src: /src/opendal/core/services/seafile/src/backend.rs:174,1
    - Dst: clone
      Src: /src/opendal/core/services/seafile/src/backend.rs:180,1
    - Dst: Arc::new
      Src: /src/opendal/core/services/seafile/src/backend.rs:181,1
    - Dst: RwLock::new
      Src: /src/opendal/core/services/seafile/src/backend.rs:181,1
    - Dst: SeafileSigner::default
      Src: /src/opendal/core/services/seafile/src/backend.rs:181,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 82
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 184
      start: 120
    functionDepth: 34
    functionLinenumber: 120
    functionLinenumberEnd: 184
    functionName: SeafileBuilder::build
    functionSourceFile: /src/opendal/core/services/seafile/src/backend.rs
    functionUses: 0
    functionsReached:
    - SeafileSigner::default
    - ServiceInfo::new
    - Ok
    - RwLock::new
    - Arc::new
    - Default::default
    - Option::clone
    - clone
    - normalize_root
    - Err
    - is_empty
    - Error::new
    - Self::clone
    - Self::with_operation
    - Self::with_context
    - unwrap_or_default
    linkageType: ''
    returnType: Result
    signature: fn build(self) -> Result<impl Service>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: clone
      Src: /src/opendal/core/services/seafile/src/backend.rs:201,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 202
      start: 200
    functionDepth: 2
    functionLinenumber: 200
    functionLinenumberEnd: 202
    functionName: SeafileBackend::info
    functionSourceFile: /src/opendal/core/services/seafile/src/backend.rs
    functionUses: 0
    functionsReached:
    - clone
    linkageType: ''
    returnType: ServiceInfo
    signature: fn info(&self) -> ServiceInfo
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 206
      start: 204
    functionDepth: 0
    functionLinenumber: 204
    functionLinenumberEnd: 206
    functionName: SeafileBackend::capability
    functionSourceFile: /src/opendal/core/services/seafile/src/backend.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Capability
    signature: fn capability(&self) -> Capability
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: create_dir
      Src: /src/opendal/core/services/seafile/src/backend.rs:214,1
    - Dst: Ok
      Src: /src/opendal/core/services/seafile/src/backend.rs:215,1
    - Dst: RpCreateDir::default
      Src: /src/opendal/core/services/seafile/src/backend.rs:215,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 3
    argNames:
    - ctx
    - path
    - _args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpCreateDir
    constantsTouched: []
    func_position:
      end: 216
      start: 208
    functionDepth: 35
    functionLinenumber: 208
    functionLinenumberEnd: 216
    functionName: SeafileBackend::create_dir
    functionSourceFile: /src/opendal/core/services/seafile/src/backend.rs
    functionUses: 0
    functionsReached:
    - RpCreateDir::default
    - create_dir
    - Ok
    linkageType: ''
    returnType: Result
    signature: 'async fn create_dir(&self,ctx: &OperationContext,path: &str,_args:
      OpCreateDir,) -> Result<RpCreateDir>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/core/services/seafile/src/backend.rs:220,1
    - Dst: RpStat::new
      Src: /src/opendal/core/services/seafile/src/backend.rs:220,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/seafile/src/backend.rs:220,1
    - Dst: ends_with
      Src: /src/opendal/core/services/seafile/src/backend.rs:223,1
    - Dst: dir_detail
      Src: /src/opendal/core/services/seafile/src/backend.rs:224,1
    - Dst: super::core::parse_dir_detail
      Src: /src/opendal/core/services/seafile/src/backend.rs:225,1
    - Dst: file_detail
      Src: /src/opendal/core/services/seafile/src/backend.rs:227,1
    - Dst: super::core::parse_file_detail
      Src: /src/opendal/core/services/seafile/src/backend.rs:229,1
    - Dst: anyhow::Result::map
      Src: /src/opendal/core/services/seafile/src/backend.rs:232,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 25
    argCount: 3
    argNames:
    - ctx
    - path
    - _args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpStat
    constantsTouched: []
    func_position:
      end: 233
      start: 218
    functionDepth: 33
    functionLinenumber: 218
    functionLinenumberEnd: 233
    functionName: SeafileBackend::stat
    functionSourceFile: /src/opendal/core/services/seafile/src/backend.rs
    functionUses: 0
    functionsReached:
    - file_detail
    - Metadata::new
    - Ok
    - ends_with
    - RpStat::new
    - dir_detail
    - super::core::parse_dir_detail
    - super::core::parse_file_detail
    - anyhow::Result::map
    linkageType: ''
    returnType: Result
    signature: 'async fn stat(&self, ctx: &OperationContext, path: &str, _args: OpStat)
      -> Result<RpStat>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/core/services/seafile/src/backend.rs:236,1
    - Dst: oio::StreamReader::new
      Src: /src/opendal/core/services/seafile/src/backend.rs:236,1
    - Dst: SeafileReader::new
      Src: /src/opendal/core/services/seafile/src/backend.rs:236,1
    - Dst: SeafileBackend::clone
      Src: /src/opendal/core/services/seafile/src/backend.rs:237,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/seafile/src/backend.rs:238,1
    - Dst: Ok
      Src: /src/opendal/core/services/seafile/src/backend.rs:244,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpRead
    constantsTouched: []
    func_position:
      end: 245
      start: 234
    functionDepth: 3
    functionLinenumber: 234
    functionLinenumberEnd: 245
    functionName: SeafileBackend::read
    functionSourceFile: /src/opendal/core/services/seafile/src/backend.rs
    functionUses: 0
    functionsReached:
    - Result::clone
    - SeafileBackend::clone
    - Ok
    - oio::StreamReader::new
    - SeafileReader::new
    linkageType: ''
    returnType: Result
    signature: 'fn read(&self, ctx: &OperationContext, path: &str, args: OpRead) ->
      Result<Self::Reader>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: SeafileWriter::new
      Src: /src/opendal/core/services/seafile/src/backend.rs:249,1
    - Dst: clone
      Src: /src/opendal/core/services/seafile/src/backend.rs:249,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/seafile/src/backend.rs:249,1
    - Dst: to_string
      Src: /src/opendal/core/services/seafile/src/backend.rs:249,1
    - Dst: oio::OneShotWriter::new
      Src: /src/opendal/core/services/seafile/src/backend.rs:250,1
    - Dst: Ok
      Src: /src/opendal/core/services/seafile/src/backend.rs:252,1
    - Dst: Ok
      Src: /src/opendal/core/services/seafile/src/backend.rs:255,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpWrite
    constantsTouched: []
    func_position:
      end: 256
      start: 247
    functionDepth: 2
    functionLinenumber: 247
    functionLinenumberEnd: 256
    functionName: SeafileBackend::write
    functionSourceFile: /src/opendal/core/services/seafile/src/backend.rs
    functionUses: 0
    functionsReached:
    - Result::clone
    - to_string
    - Ok
    - oio::OneShotWriter::new
    - clone
    - SeafileWriter::new
    linkageType: ''
    returnType: Result
    signature: 'fn write(&self, ctx: &OperationContext, path: &str, args: OpWrite)
      -> Result<Self::Writer>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/core/services/seafile/src/backend.rs:260,1
    - Dst: oio::OneShotDeleter::new
      Src: /src/opendal/core/services/seafile/src/backend.rs:260,1
    - Dst: SeafileDeleter::new
      Src: /src/opendal/core/services/seafile/src/backend.rs:260,1
    - Dst: clone
      Src: /src/opendal/core/services/seafile/src/backend.rs:261,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/seafile/src/backend.rs:262,1
    - Dst: Ok
      Src: /src/opendal/core/services/seafile/src/backend.rs:266,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - '&OperationContext'
    constantsTouched: []
    func_position:
      end: 267
      start: 258
    functionDepth: 2
    functionLinenumber: 258
    functionLinenumberEnd: 267
    functionName: SeafileBackend::delete
    functionSourceFile: /src/opendal/core/services/seafile/src/backend.rs
    functionUses: 0
    functionsReached:
    - oio::OneShotDeleter::new
    - Result::clone
    - Ok
    - clone
    - SeafileDeleter::new
    linkageType: ''
    returnType: Result
    signature: 'fn delete(&self, ctx: &OperationContext) -> Result<Self::Deleter>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: SeafileLister::new
      Src: /src/opendal/core/services/seafile/src/backend.rs:271,1
    - Dst: clone
      Src: /src/opendal/core/services/seafile/src/backend.rs:271,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/seafile/src/backend.rs:271,1
    - Dst: Ok
      Src: /src/opendal/core/services/seafile/src/backend.rs:272,1
    - Dst: oio::PageLister::new
      Src: /src/opendal/core/services/seafile/src/backend.rs:272,1
    - Dst: Ok
      Src: /src/opendal/core/services/seafile/src/backend.rs:275,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 3
    argNames:
    - ctx
    - path
    - _args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpList
    constantsTouched: []
    func_position:
      end: 276
      start: 269
    functionDepth: 3
    functionLinenumber: 269
    functionLinenumberEnd: 276
    functionName: SeafileBackend::list
    functionSourceFile: /src/opendal/core/services/seafile/src/backend.rs
    functionUses: 0
    functionsReached:
    - SeafileLister::new
    - Result::clone
    - Ok
    - clone
    - oio::PageLister::new
    linkageType: ''
    returnType: Result
    signature: 'fn list(&self, ctx: &OperationContext, path: &str, _args: OpList)
      -> Result<Self::Lister>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/core/services/seafile/src/backend.rs:286,1
    - Dst: Error::new
      Src: /src/opendal/core/services/seafile/src/backend.rs:286,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 5
    argNames:
    - _ctx
    - _from
    - _to
    - _args
    - _opts
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    - OpCopy
    - OpCopier
    constantsTouched: []
    func_position:
      end: 290
      start: 278
    functionDepth: 36
    functionLinenumber: 278
    functionLinenumberEnd: 290
    functionName: SeafileBackend::copy
    functionSourceFile: /src/opendal/core/services/seafile/src/backend.rs
    functionUses: 0
    functionsReached:
    - Error::new
    - Err
    linkageType: ''
    returnType: Result
    signature: 'fn copy(&self,_ctx: &OperationContext,_from: &str,_to: &str,_args:
      OpCopy,_opts: OpCopier,) -> Result<Self::Copier>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/core/services/seafile/src/backend.rs:299,1
    - Dst: Error::new
      Src: /src/opendal/core/services/seafile/src/backend.rs:299,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - _ctx
    - _from
    - _to
    - _args
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    - OpRename
    constantsTouched: []
    func_position:
      end: 303
      start: 292
    functionDepth: 36
    functionLinenumber: 292
    functionLinenumberEnd: 303
    functionName: SeafileBackend::rename
    functionSourceFile: /src/opendal/core/services/seafile/src/backend.rs
    functionUses: 0
    functionsReached:
    - Error::new
    - Err
    linkageType: ''
    returnType: Result
    signature: 'async fn rename(&self,_ctx: &OperationContext,_from: &str,_to: &str,_args:
      OpRename,) -> Result<RpRename>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/core/services/seafile/src/backend.rs:311,1
    - Dst: Error::new
      Src: /src/opendal/core/services/seafile/src/backend.rs:311,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - _ctx
    - _path
    - _args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpPresign
    constantsTouched: []
    func_position:
      end: 315
      start: 305
    functionDepth: 36
    functionLinenumber: 305
    functionLinenumberEnd: 315
    functionName: SeafileBackend::presign
    functionSourceFile: /src/opendal/core/services/seafile/src/backend.rs
    functionUses: 0
    functionsReached:
    - Error::new
    - Err
    linkageType: ''
    returnType: Result
    signature: 'async fn presign(&self,_ctx: &OperationContext,_path: &str,_args:
      OpPresign,) -> Result<RpPresign>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::debug_struct
      Src: /src/opendal/core/services/github/src/config.rs:54,1
    - Dst: field
      Src: /src/opendal/core/services/github/src/config.rs:54,1
    - Dst: field
      Src: /src/opendal/core/services/github/src/config.rs:54,1
    - Dst: field
      Src: /src/opendal/core/services/github/src/config.rs:54,1
    - Dst: finish_non_exhaustive
      Src: /src/opendal/core/services/github/src/config.rs:54,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 16
    argCount: 1
    argNames:
    - f
    argTypes:
    - '&mut std::fmt::Formatter<''_>'
    constantsTouched: []
    func_position:
      end: 59
      start: 53
    functionDepth: 5
    functionLinenumber: 53
    functionLinenumberEnd: 59
    functionName: GithubConfig::fmt
    functionSourceFile: /src/opendal/core/services/github/src/config.rs
    functionUses: 0
    functionsReached:
    - field
    - Result::debug_struct
    - finish_non_exhaustive
    linkageType: ''
    returnType: std::fmt::Result
    signature: 'fn fmt(&self, f: &mut std::fmt::Formatter<''_>) -> std::fmt::Result'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::name
      Src: /src/opendal/core/services/github/src/config.rs:66,1
    - Dst: Result::ok_or_else
      Src: /src/opendal/core/services/github/src/config.rs:66,1
    - Dst: Error::new
      Src: /src/opendal/core/services/github/src/config.rs:67,1
    - Dst: Self::with_context
      Src: /src/opendal/core/services/github/src/config.rs:67,1
    - Dst: Result::root
      Src: /src/opendal/core/services/github/src/config.rs:71,1
    - Dst: Result::ok_or_else
      Src: /src/opendal/core/services/github/src/config.rs:71,1
    - Dst: Error::new
      Src: /src/opendal/core/services/github/src/config.rs:72,1
    - Dst: Self::with_context
      Src: /src/opendal/core/services/github/src/config.rs:72,1
    - Dst: split_once
      Src: /src/opendal/core/services/github/src/config.rs:76,1
    - Dst: Some
      Src: /src/opendal/core/services/github/src/config.rs:77,1
    - Dst: is_empty
      Src: /src/opendal/core/services/github/src/config.rs:81,1
    - Dst: Err
      Src: /src/opendal/core/services/github/src/config.rs:82,1
    - Dst: Error::new
      Src: /src/opendal/core/services/github/src/config.rs:83,1
    - Dst: Self::with_context
      Src: /src/opendal/core/services/github/src/config.rs:83,1
    - Dst: Result::options
      Src: /src/opendal/core/services/github/src/config.rs:88,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/github/src/config.rs:88,1
    - Dst: Result::insert
      Src: /src/opendal/core/services/github/src/config.rs:89,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/github/src/config.rs:89,1
    - Dst: Self::to_string
      Src: /src/opendal/core/services/github/src/config.rs:89,1
    - Dst: Result::insert
      Src: /src/opendal/core/services/github/src/config.rs:90,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/github/src/config.rs:90,1
    - Dst: to_string
      Src: /src/opendal/core/services/github/src/config.rs:90,1
    - Dst: is_empty
      Src: /src/opendal/core/services/github/src/config.rs:93,1
    - Dst: Result::insert
      Src: /src/opendal/core/services/github/src/config.rs:95,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/github/src/config.rs:95,1
    - Dst: to_string
      Src: /src/opendal/core/services/github/src/config.rs:95,1
    - Dst: Self::from_iter
      Src: /src/opendal/core/services/github/src/config.rs:98,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 65
    argCount: 1
    argNames:
    - uri
    argTypes:
    - '&OperatorUri'
    constantsTouched: []
    func_position:
      end: 99
      start: 65
    functionDepth: 31
    functionLinenumber: 65
    functionLinenumberEnd: 99
    functionName: GithubConfig::from_uri
    functionSourceFile: /src/opendal/core/services/github/src/config.rs
    functionUses: 1
    functionsReached:
    - Result::clone
    - to_string
    - Self::from_iter
    - split_once
    - Self::to_string
    - Result::insert
    - Error::new
    - Some
    - is_empty
    - Result::name
    - Err
    - Result::ok_or_else
    - Result::root
    - '&str::to_string'
    - Self::with_context
    - Result::options
    linkageType: ''
    returnType: Result
    signature: 'fn from_uri(uri: &OperatorUri) -> Result<Self>'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 103
      start: 101
    functionDepth: 0
    functionLinenumber: 101
    functionLinenumberEnd: 103
    functionName: GithubConfig::into_builder
    functionSourceFile: /src/opendal/core/services/github/src/config.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Self::Builder
    signature: fn into_builder(self) -> Self::Builder
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: OperatorUri::new
      Src: /src/opendal/core/services/github/src/config.rs:114,1
    - Dst: Vec::<(String, String)>::new
      Src: /src/opendal/core/services/github/src/config.rs:116,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/services/github/src/config.rs:114,1
    - Dst: GithubConfig::from_uri
      Src: /src/opendal/core/services/github/src/config.rs:120,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/services/github/src/config.rs:120,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 124
      start: 113
    functionDepth: 29
    functionLinenumber: 113
    functionLinenumberEnd: 124
    functionName: tests::from_uri_sets_owner_repo_and_root
    functionSourceFile: /src/opendal/core/services/github/src/config.rs
    functionUses: 0
    functionsReached:
    - Vec::<(String, String)>::new
    - OperatorUri::new
    - Result::unwrap
    - GithubConfig::from_uri
    linkageType: ''
    returnType: void
    signature: fn from_uri_sets_owner_repo_and_root()
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - core
    - ctx
    argTypes:
    - Arc<GithubCore>
    - OperationContext
    constantsTouched: []
    func_position:
      end: 32
      start: 30
    functionDepth: 0
    functionLinenumber: 30
    functionLinenumberEnd: 32
    functionName: GithubDeleter::new
    functionSourceFile: /src/opendal/core/services/github/src/deleter.rs
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(core: Arc<GithubCore>, ctx: OperationContext) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: delete
      Src: /src/opendal/core/services/github/src/deleter.rs:37,1
    - Dst: Ok
      Src: /src/opendal/core/services/github/src/deleter.rs:38,1
    - Dst: Err
      Src: /src/opendal/core/services/github/src/deleter.rs:39,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 2
    argNames:
    - path
    argTypes:
    - String
    - OpDelete
    constantsTouched: []
    func_position:
      end: 41
      start: 36
    functionDepth: 32
    functionLinenumber: 36
    functionLinenumberEnd: 41
    functionName: GithubDeleter::delete_once
    functionSourceFile: /src/opendal/core/services/github/src/deleter.rs
    functionUses: 0
    functionsReached:
    - Err
    - Ok
    - delete
    linkageType: ''
    returnType: Result
    signature: 'async fn delete_once(&self, path: String, _: OpDelete) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: to_string
      Src: /src/opendal/core/services/github/src/lister.rs:39,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 4
    argNames:
    - core
    - ctx
    - path
    - recursive
    argTypes:
    - Arc<GithubCore>
    - OperationContext
    - '&str'
    - bool
    constantsTouched: []
    func_position:
      end: 42
      start: 34
    functionDepth: 2
    functionLinenumber: 34
    functionLinenumberEnd: 42
    functionName: GithubLister::new
    functionSourceFile: /src/opendal/core/services/github/src/lister.rs
    functionUses: 1
    functionsReached:
    - to_string
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(core: Arc<GithubCore>, ctx: OperationContext, path: &str,
      recursive: bool) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: list
      Src: /src/opendal/core/services/github/src/lister.rs:47,1
    - Dst: iter
      Src: /src/opendal/core/services/github/src/lister.rs:50,1
    - Dst: any
      Src: /src/opendal/core/services/github/src/lister.rs:50,1
    - Dst: build_rel_path
      Src: /src/opendal/core/services/github/src/lister.rs:56,1
    - Dst: Entry::new
      Src: /src/opendal/core/services/github/src/lister.rs:59,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/github/src/lister.rs:59,1
    - Dst: ends_with
      Src: /src/opendal/core/services/github/src/lister.rs:61,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/github/src/lister.rs:64,1
    - Dst: Self::with_content_length
      Src: /src/opendal/core/services/github/src/lister.rs:64,1
    - Dst: Self::with_etag
      Src: /src/opendal/core/services/github/src/lister.rs:64,1
    - Dst: Entry::new
      Src: /src/opendal/core/services/github/src/lister.rs:67,1
    - Dst: push_back
      Src: /src/opendal/core/services/github/src/lister.rs:69,1
    - Dst: ends_with
      Src: /src/opendal/core/services/github/src/lister.rs:71,1
    - Dst: push_back
      Src: /src/opendal/core/services/github/src/lister.rs:72,1
    - Dst: Entry::new
      Src: /src/opendal/core/services/github/src/lister.rs:72,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/github/src/lister.rs:74,1
    - Dst: Ok
      Src: /src/opendal/core/services/github/src/lister.rs:77,1
    - Dst: list_with_recursive
      Src: /src/opendal/core/services/github/src/lister.rs:82,1
    - Dst: Entry::new
      Src: /src/opendal/core/services/github/src/lister.rs:94,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/github/src/lister.rs:94,1
    - Dst: ends_with
      Src: /src/opendal/core/services/github/src/lister.rs:96,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/github/src/lister.rs:99,1
    - Dst: Self::with_etag
      Src: /src/opendal/core/services/github/src/lister.rs:99,1
    - Dst: Result::with_content_length
      Src: /src/opendal/core/services/github/src/lister.rs:102,1
    - Dst: Entry::new
      Src: /src/opendal/core/services/github/src/lister.rs:104,1
    - Dst: push_back
      Src: /src/opendal/core/services/github/src/lister.rs:106,1
    - Dst: ends_with
      Src: /src/opendal/core/services/github/src/lister.rs:108,1
    - Dst: push_back
      Src: /src/opendal/core/services/github/src/lister.rs:109,1
    - Dst: Entry::new
      Src: /src/opendal/core/services/github/src/lister.rs:109,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/github/src/lister.rs:111,1
    - Dst: Ok
      Src: /src/opendal/core/services/github/src/lister.rs:115,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 136
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - '&mut oio::PageContext'
    constantsTouched: []
    func_position:
      end: 116
      start: 46
    functionDepth: 39
    functionLinenumber: 46
    functionLinenumberEnd: 116
    functionName: GithubLister::next_page
    functionSourceFile: /src/opendal/core/services/github/src/lister.rs
    functionUses: 0
    functionsReached:
    - Entry::new
    - iter
    - Metadata::new
    - Ok
    - push_back
    - Result::with_content_length
    - Self::with_content_length
    - ends_with
    - build_rel_path
    - list
    - list_with_recursive
    - any
    - Self::with_etag
    linkageType: ''
    returnType: Result
    signature: 'async fn next_page(&self, ctx: &mut oio::PageContext) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: to_string
      Src: /src/opendal/core/services/github/src/reader.rs:42,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 4
    argNames:
    - backend
    - ctx
    - path
    argTypes:
    - GithubBackend
    - OperationContext
    - '&str'
    - OpRead
    constantsTouched: []
    func_position:
      end: 44
      start: 33
    functionDepth: 2
    functionLinenumber: 33
    functionLinenumberEnd: 44
    functionName: GithubReader::new
    functionSourceFile: /src/opendal/core/services/github/src/reader.rs
    functionUses: 1
    functionsReached:
    - to_string
    linkageType: ''
    returnType: Self
    signature: 'pub(super) fn new(backend: GithubBackend,ctx: OperationContext,path:
      &str,_: OpRead,) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: as_str
      Src: /src/opendal/core/services/github/src/reader.rs:50,1
    - Dst: get
      Src: /src/opendal/core/services/github/src/reader.rs:51,1
    - Dst: status
      Src: /src/opendal/core/services/github/src/reader.rs:53,1
    - Dst: RpRead::new
      Src: /src/opendal/core/services/github/src/reader.rs:57,1
    - Dst: parse_into_metadata
      Src: /src/opendal/core/services/github/src/reader.rs:57,1
    - Dst: headers
      Src: /src/opendal/core/services/github/src/reader.rs:57,1
    - Dst: into_body
      Src: /src/opendal/core/services/github/src/reader.rs:58,1
    - Dst: into_parts
      Src: /src/opendal/core/services/github/src/reader.rs:61,1
    - Dst: to_buffer
      Src: /src/opendal/core/services/github/src/reader.rs:62,1
    - Dst: Err
      Src: /src/opendal/core/services/github/src/reader.rs:63,1
    - Dst: super::core::parse_error
      Src: /src/opendal/core/services/github/src/reader.rs:63,1
    - Dst: Response::from_parts
      Src: /src/opendal/core/services/github/src/reader.rs:63,1
    - Dst: Ok
      Src: /src/opendal/core/services/github/src/reader.rs:67,1
    - Dst: Box::new
      Src: /src/opendal/core/services/github/src/reader.rs:67,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 38
    argCount: 1
    argNames:
    - range
    argTypes:
    - BytesRange
    constantsTouched: []
    func_position:
      end: 68
      start: 48
    functionDepth: 38
    functionLinenumber: 48
    functionLinenumberEnd: 68
    functionName: GithubReader::open
    functionSourceFile: /src/opendal/core/services/github/src/reader.rs
    functionUses: 0
    functionsReached:
    - parse_into_metadata
    - get
    - to_buffer
    - status
    - Ok
    - Box::new
    - into_body
    - Err
    - Response::from_parts
    - as_str
    - headers
    - into_parts
    - RpRead::new
    - super::core::parse_error
    linkageType: ''
    returnType: Result
    signature: 'async fn open(&self, range: BytesRange) -> Result<(RpRead, Box<dyn
      oio::ReadStreamDyn>)>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::debug_struct
      Src: /src/opendal/core/services/github/src/core.rs:51,1
    - Dst: field
      Src: /src/opendal/core/services/github/src/core.rs:51,1
    - Dst: field
      Src: /src/opendal/core/services/github/src/core.rs:51,1
    - Dst: field
      Src: /src/opendal/core/services/github/src/core.rs:51,1
    - Dst: finish_non_exhaustive
      Src: /src/opendal/core/services/github/src/core.rs:51,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 16
    argCount: 1
    argNames:
    - f
    argTypes:
    - '&mut std::fmt::Formatter<''_>'
    constantsTouched: []
    func_position:
      end: 56
      start: 50
    functionDepth: 5
    functionLinenumber: 50
    functionLinenumberEnd: 56
    functionName: GithubCore::fmt
    functionSourceFile: /src/opendal/core/services/github/src/core.rs
    functionUses: 0
    functionsReached:
    - field
    - Result::debug_struct
    - finish_non_exhaustive
    linkageType: ''
    returnType: std::fmt::Result
    signature: 'fn fmt(&self, f: &mut std::fmt::Formatter<''_>) -> std::fmt::Result'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::http_transport
      Src: /src/opendal/core/services/github/src/core.rs:66,1
    - Dst: Self::send
      Src: /src/opendal/core/services/github/src/core.rs:66,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - ctx
    - req
    argTypes:
    - '&OperationContext'
    - Request<Buffer>
    constantsTouched: []
    func_position:
      end: 67
      start: 61
    functionDepth: 37
    functionLinenumber: 61
    functionLinenumberEnd: 67
    functionName: GithubCore::send
    functionSourceFile: /src/opendal/core/services/github/src/core.rs
    functionUses: 5
    functionsReached:
    - Result::http_transport
    - Self::send
    linkageType: ''
    returnType: Result
    signature: 'pub async fn send(&self,ctx: &OperationContext,req: Request<Buffer>,)
      -> Result<Response<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: String::header
      Src: /src/opendal/core/services/github/src/core.rs:70,1
    - Dst: String::header
      Src: /src/opendal/core/services/github/src/core.rs:70,1
    - Dst: String::header
      Src: /src/opendal/core/services/github/src/core.rs:76,1
    - Dst: format_authorization_by_bearer
      Src: /src/opendal/core/services/github/src/core.rs:78,1
    - Dst: Ok
      Src: /src/opendal/core/services/github/src/core.rs:82,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 1
    argNames:
    - req
    argTypes:
    - request::Builder
    constantsTouched: []
    func_position:
      end: 83
      start: 69
    functionDepth: 37
    functionLinenumber: 69
    functionLinenumberEnd: 83
    functionName: GithubCore::sign
    functionSourceFile: /src/opendal/core/services/github/src/core.rs
    functionUses: 6
    functionsReached:
    - format_authorization_by_bearer
    - String::header
    - Ok
    linkageType: ''
    returnType: Result
    signature: 'pub fn sign(&self, req: request::Builder) -> Result<request::Builder>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: is_none
      Src: /src/opendal/core/services/github/src/core.rs:89,1
    - Dst: Err
      Src: /src/opendal/core/services/github/src/core.rs:90,1
    - Dst: Error::new
      Src: /src/opendal/core/services/github/src/core.rs:90,1
    - Dst: GithubCore::stat
      Src: /src/opendal/core/services/github/src/core.rs:96,1
    - Dst: status
      Src: /src/opendal/core/services/github/src/core.rs:98,1
    - Dst: into_body
      Src: /src/opendal/core/services/github/src/core.rs:100,1
    - Dst: serde_json::from_reader
      Src: /src/opendal/core/services/github/src/core.rs:102,1
    - Dst: reader
      Src: /src/opendal/core/services/github/src/core.rs:102,1
    - Dst: map_err
      Src: /src/opendal/core/services/github/src/core.rs:102,1
    - Dst: Ok
      Src: /src/opendal/core/services/github/src/core.rs:104,1
    - Dst: Some
      Src: /src/opendal/core/services/github/src/core.rs:104,1
    - Dst: Ok
      Src: /src/opendal/core/services/github/src/core.rs:106,1
    - Dst: Err
      Src: /src/opendal/core/services/github/src/core.rs:107,1
    - Dst: parse_error
      Src: /src/opendal/core/services/github/src/core.rs:107,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 31
    argCount: 2
    argNames:
    - ctx
    - path
    argTypes:
    - '&OperationContext'
    - '&str'
    constantsTouched: []
    func_position:
      end: 109
      start: 87
    functionDepth: 36
    functionLinenumber: 87
    functionLinenumberEnd: 109
    functionName: GithubCore::get_file_sha
    functionSourceFile: /src/opendal/core/services/github/src/core.rs
    functionUses: 2
    functionsReached:
    - is_none
    - map_err
    - reader
    - status
    - Ok
    - GithubCore::stat
    - serde_json::from_reader
    - into_body
    - parse_error
    - Error::new
    - Err
    - Some
    linkageType: ''
    returnType: Result
    signature: 'pub async fn get_file_sha(&self, ctx: &OperationContext, path: &str)
      -> Result<Option<String>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/github/src/core.rs:112,1
    - Dst: Request::get
      Src: /src/opendal/core/services/github/src/core.rs:121,1
    - Dst: Option::extension
      Src: /src/opendal/core/services/github/src/core.rs:123,1
    - Dst: extension
      Src: /src/opendal/core/services/github/src/core.rs:123,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/github/src/core.rs:125,1
    - Dst: GithubCore::sign
      Src: /src/opendal/core/services/github/src/core.rs:127,1
    - Dst: Option::header
      Src: /src/opendal/core/services/github/src/core.rs:129,1
    - Dst: String::body
      Src: /src/opendal/core/services/github/src/core.rs:129,1
    - Dst: Buffer::new
      Src: /src/opendal/core/services/github/src/core.rs:131,1
    - Dst: map_err
      Src: /src/opendal/core/services/github/src/core.rs:129,1
    - Dst: GithubCore::send
      Src: /src/opendal/core/services/github/src/core.rs:134,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 23
    argCount: 2
    argNames:
    - ctx
    - path
    argTypes:
    - '&OperationContext'
    - '&str'
    constantsTouched: []
    func_position:
      end: 135
      start: 111
    functionDepth: 38
    functionLinenumber: 111
    functionLinenumberEnd: 135
    functionName: GithubCore::stat
    functionSourceFile: /src/opendal/core/services/github/src/core.rs
    functionUses: 1
    functionsReached:
    - map_err
    - extension
    - Request::get
    - Buffer::new
    - String::body
    - build_abs_path
    - Option::extension
    - ServiceOperation
    - GithubCore::send
    - Option::header
    - GithubCore::sign
    linkageType: ''
    returnType: Result
    signature: 'pub async fn stat(&self, ctx: &OperationContext, path: &str) -> Result<Response<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/github/src/core.rs:143,1
    - Dst: Request::get
      Src: /src/opendal/core/services/github/src/core.rs:152,1
    - Dst: Option::extension
      Src: /src/opendal/core/services/github/src/core.rs:154,1
    - Dst: extension
      Src: /src/opendal/core/services/github/src/core.rs:154,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/github/src/core.rs:156,1
    - Dst: GithubCore::sign
      Src: /src/opendal/core/services/github/src/core.rs:158,1
    - Dst: Option::header
      Src: /src/opendal/core/services/github/src/core.rs:160,1
    - Dst: String::header
      Src: /src/opendal/core/services/github/src/core.rs:160,1
    - Dst: (Vec::to_header
      Src: /src/opendal/core/services/github/src/core.rs:162,1
    - Dst: String::body
      Src: /src/opendal/core/services/github/src/core.rs:160,1
    - Dst: Buffer::new
      Src: /src/opendal/core/services/github/src/core.rs:163,1
    - Dst: map_err
      Src: /src/opendal/core/services/github/src/core.rs:160,1
    - Dst: Result::http_transport
      Src: /src/opendal/core/services/github/src/core.rs:166,1
    - Dst: Self::fetch
      Src: /src/opendal/core/services/github/src/core.rs:166,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 29
    argCount: 3
    argNames:
    - ctx
    - path
    - range
    argTypes:
    - '&OperationContext'
    - '&str'
    - BytesRange
    constantsTouched: []
    func_position:
      end: 167
      start: 137
    functionDepth: 38
    functionLinenumber: 137
    functionLinenumberEnd: 167
    functionName: GithubCore::get
    functionSourceFile: /src/opendal/core/services/github/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - extension
    - Request::get
    - (Vec::to_header
    - Buffer::new
    - String::body
    - build_abs_path
    - String::header
    - Option::extension
    - Self::fetch
    - ServiceOperation
    - Result::http_transport
    - Option::header
    - GithubCore::sign
    linkageType: ''
    returnType: Result
    signature: 'pub async fn get(&self,ctx: &OperationContext,path: &str,range: BytesRange,)
      -> Result<Response<HttpBody>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: GithubCore::get_file_sha
      Src: /src/opendal/core/services/github/src/core.rs:175,1
    - Dst: build_abs_path
      Src: /src/opendal/core/services/github/src/core.rs:177,1
    - Dst: Request::put
      Src: /src/opendal/core/services/github/src/core.rs:186,1
    - Dst: DeleteInput::extension
      Src: /src/opendal/core/services/github/src/core.rs:188,1
    - Dst: extension
      Src: /src/opendal/core/services/github/src/core.rs:188,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/github/src/core.rs:190,1
    - Dst: GithubCore::sign
      Src: /src/opendal/core/services/github/src/core.rs:192,1
    - Dst: encode
      Src: /src/opendal/core/services/github/src/core.rs:196,1
    - Dst: Result::to_bytes
      Src: /src/opendal/core/services/github/src/core.rs:196,1
    - Dst: Some
      Src: /src/opendal/core/services/github/src/core.rs:201,1
    - Dst: serde_json::to_vec
      Src: /src/opendal/core/services/github/src/core.rs:204,1
    - Dst: Vec::map_err
      Src: /src/opendal/core/services/github/src/core.rs:204,1
    - Dst: DeleteInput::header
      Src: /src/opendal/core/services/github/src/core.rs:206,1
    - Dst: String::body
      Src: /src/opendal/core/services/github/src/core.rs:206,1
    - Dst: Buffer::from
      Src: /src/opendal/core/services/github/src/core.rs:208,1
    - Dst: map_err
      Src: /src/opendal/core/services/github/src/core.rs:206,1
    - Dst: GithubCore::send
      Src: /src/opendal/core/services/github/src/core.rs:211,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 43
    argCount: 3
    argNames:
    - ctx
    - path
    - bs
    argTypes:
    - '&OperationContext'
    - '&str'
    - Buffer
    constantsTouched: []
    func_position:
      end: 212
      start: 169
    functionDepth: 37
    functionLinenumber: 169
    functionLinenumberEnd: 212
    functionName: GithubCore::upload
    functionSourceFile: /src/opendal/core/services/github/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - extension
    - Request::put
    - encode
    - String::body
    - Result::to_bytes
    - build_abs_path
    - Some
    - DeleteInput::header
    - GithubCore::get_file_sha
    - Buffer::from
    - ServiceOperation
    - Vec::map_err
    - GithubCore::send
    - DeleteInput::extension
    - serde_json::to_vec
    - GithubCore::sign
    linkageType: ''
    returnType: Result
    signature: 'pub async fn upload(&self,ctx: &OperationContext,path: &str,bs: Buffer,)
      -> Result<Response<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: ends_with
      Src: /src/opendal/core/services/github/src/core.rs:217,1
    - Dst: as_str
      Src: /src/opendal/core/services/github/src/core.rs:218,1
    - Dst: GithubCore::get_file_sha
      Src: /src/opendal/core/services/github/src/core.rs:223,1
    - Dst: Ok
      Src: /src/opendal/core/services/github/src/core.rs:224,1
    - Dst: build_abs_path
      Src: /src/opendal/core/services/github/src/core.rs:227,1
    - Dst: Request::delete
      Src: /src/opendal/core/services/github/src/core.rs:236,1
    - Dst: Result::extension
      Src: /src/opendal/core/services/github/src/core.rs:238,1
    - Dst: extension
      Src: /src/opendal/core/services/github/src/core.rs:238,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/github/src/core.rs:240,1
    - Dst: GithubCore::sign
      Src: /src/opendal/core/services/github/src/core.rs:242,1
    - Dst: serde_json::to_vec
      Src: /src/opendal/core/services/github/src/core.rs:249,1
    - Dst: Vec::map_err
      Src: /src/opendal/core/services/github/src/core.rs:249,1
    - Dst: Result::header
      Src: /src/opendal/core/services/github/src/core.rs:251,1
    - Dst: String::body
      Src: /src/opendal/core/services/github/src/core.rs:251,1
    - Dst: Buffer::from
      Src: /src/opendal/core/services/github/src/core.rs:253,1
    - Dst: Bytes::from
      Src: /src/opendal/core/services/github/src/core.rs:253,1
    - Dst: map_err
      Src: /src/opendal/core/services/github/src/core.rs:251,1
    - Dst: GithubCore::send
      Src: /src/opendal/core/services/github/src/core.rs:256,1
    - Dst: status
      Src: /src/opendal/core/services/github/src/core.rs:258,1
    - Dst: Ok
      Src: /src/opendal/core/services/github/src/core.rs:259,1
    - Dst: Ok
      Src: /src/opendal/core/services/github/src/core.rs:260,1
    - Dst: Err
      Src: /src/opendal/core/services/github/src/core.rs:261,1
    - Dst: parse_error
      Src: /src/opendal/core/services/github/src/core.rs:261,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 54
    argCount: 2
    argNames:
    - ctx
    - path
    argTypes:
    - '&OperationContext'
    - '&str'
    constantsTouched: []
    func_position:
      end: 263
      start: 214
    functionDepth: 37
    functionLinenumber: 214
    functionLinenumberEnd: 263
    functionName: GithubCore::delete
    functionSourceFile: /src/opendal/core/services/github/src/core.rs
    functionUses: 0
    functionsReached:
    - status
    - ends_with
    - map_err
    - extension
    - Ok
    - String::body
    - as_str
    - ServiceOperation
    - Buffer::from
    - parse_error
    - build_abs_path
    - Result::header
    - Bytes::from
    - Request::delete
    - Result::extension
    - Err
    - GithubCore::get_file_sha
    - Vec::map_err
    - GithubCore::send
    - serde_json::to_vec
    - GithubCore::sign
    linkageType: ''
    returnType: Result
    signature: 'pub async fn delete(&self, ctx: &OperationContext, path: &str) ->
      Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/github/src/core.rs:266,1
    - Dst: Request::get
      Src: /src/opendal/core/services/github/src/core.rs:275,1
    - Dst: Option::extension
      Src: /src/opendal/core/services/github/src/core.rs:277,1
    - Dst: extension
      Src: /src/opendal/core/services/github/src/core.rs:277,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/github/src/core.rs:279,1
    - Dst: GithubCore::sign
      Src: /src/opendal/core/services/github/src/core.rs:281,1
    - Dst: Option::header
      Src: /src/opendal/core/services/github/src/core.rs:283,1
    - Dst: String::body
      Src: /src/opendal/core/services/github/src/core.rs:283,1
    - Dst: Buffer::new
      Src: /src/opendal/core/services/github/src/core.rs:285,1
    - Dst: map_err
      Src: /src/opendal/core/services/github/src/core.rs:283,1
    - Dst: GithubCore::send
      Src: /src/opendal/core/services/github/src/core.rs:288,1
    - Dst: status
      Src: /src/opendal/core/services/github/src/core.rs:290,1
    - Dst: into_body
      Src: /src/opendal/core/services/github/src/core.rs:292,1
    - Dst: serde_json::from_reader
      Src: /src/opendal/core/services/github/src/core.rs:294,1
    - Dst: reader
      Src: /src/opendal/core/services/github/src/core.rs:294,1
    - Dst: map_err
      Src: /src/opendal/core/services/github/src/core.rs:294,1
    - Dst: Ok
      Src: /src/opendal/core/services/github/src/core.rs:296,1
    - Dst: Ok
      Src: /src/opendal/core/services/github/src/core.rs:298,1
    - Dst: ListResponse::default
      Src: /src/opendal/core/services/github/src/core.rs:298,1
    - Dst: Err
      Src: /src/opendal/core/services/github/src/core.rs:299,1
    - Dst: parse_error
      Src: /src/opendal/core/services/github/src/core.rs:299,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 41
    argCount: 2
    argNames:
    - ctx
    - path
    argTypes:
    - '&OperationContext'
    - '&str'
    constantsTouched: []
    func_position:
      end: 301
      start: 265
    functionDepth: 38
    functionLinenumber: 265
    functionLinenumberEnd: 301
    functionName: GithubCore::list
    functionSourceFile: /src/opendal/core/services/github/src/core.rs
    functionUses: 0
    functionsReached:
    - Buffer::new
    - status
    - serde_json::from_reader
    - ListResponse::default
    - map_err
    - extension
    - reader
    - Ok
    - String::body
    - ServiceOperation
    - parse_error
    - into_body
    - build_abs_path
    - Option::header
    - Request::get
    - Err
    - Option::extension
    - GithubCore::send
    - GithubCore::sign
    linkageType: ''
    returnType: Result
    signature: 'pub async fn list(&self, ctx: &OperationContext, path: &str) -> Result<ListResponse>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Request::get
      Src: /src/opendal/core/services/github/src/core.rs:311,1
    - Dst: Option::extension
      Src: /src/opendal/core/services/github/src/core.rs:313,1
    - Dst: extension
      Src: /src/opendal/core/services/github/src/core.rs:313,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/github/src/core.rs:315,1
    - Dst: GithubCore::sign
      Src: /src/opendal/core/services/github/src/core.rs:317,1
    - Dst: Option::header
      Src: /src/opendal/core/services/github/src/core.rs:319,1
    - Dst: String::body
      Src: /src/opendal/core/services/github/src/core.rs:319,1
    - Dst: Buffer::new
      Src: /src/opendal/core/services/github/src/core.rs:321,1
    - Dst: map_err
      Src: /src/opendal/core/services/github/src/core.rs:319,1
    - Dst: GithubCore::send
      Src: /src/opendal/core/services/github/src/core.rs:324,1
    - Dst: status
      Src: /src/opendal/core/services/github/src/core.rs:326,1
    - Dst: into_body
      Src: /src/opendal/core/services/github/src/core.rs:328,1
    - Dst: serde_json::from_reader
      Src: /src/opendal/core/services/github/src/core.rs:330,1
    - Dst: reader
      Src: /src/opendal/core/services/github/src/core.rs:330,1
    - Dst: map_err
      Src: /src/opendal/core/services/github/src/core.rs:330,1
    - Dst: Ok
      Src: /src/opendal/core/services/github/src/core.rs:332,1
    - Dst: Err
      Src: /src/opendal/core/services/github/src/core.rs:334,1
    - Dst: parse_error
      Src: /src/opendal/core/services/github/src/core.rs:334,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 37
    argCount: 2
    argNames:
    - ctx
    - git_url
    argTypes:
    - '&OperationContext'
    - '&str'
    constantsTouched: []
    func_position:
      end: 336
      start: 304
    functionDepth: 38
    functionLinenumber: 304
    functionLinenumberEnd: 336
    functionName: GithubCore::list_with_recursive
    functionSourceFile: /src/opendal/core/services/github/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - extension
    - Request::get
    - Buffer::new
    - reader
    - status
    - Ok
    - String::body
    - serde_json::from_reader
    - parse_error
    - into_body
    - Err
    - Option::extension
    - ServiceOperation
    - GithubCore::send
    - Option::header
    - GithubCore::sign
    linkageType: ''
    returnType: Result
    signature: 'pub async fn list_with_recursive(&self,ctx: &OperationContext,git_url:
      &str,) -> Result<Vec<Tree>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 3
    argNames:
    - core
    - ctx
    - path
    argTypes:
    - Arc<GithubCore>
    - OperationContext
    - String
    constantsTouched: []
    func_position:
      end: 39
      start: 37
    functionDepth: 0
    functionLinenumber: 37
    functionLinenumberEnd: 39
    functionName: GithubWriter::new
    functionSourceFile: /src/opendal/core/services/github/src/writer.rs
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(core: Arc<GithubCore>, ctx: OperationContext, path: String)
      -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Metadata::new
      Src: /src/opendal/core/services/github/src/writer.rs:48,1
    - Dst: Result::set_content_length
      Src: /src/opendal/core/services/github/src/writer.rs:50,1
    - Dst: Result::set_etag
      Src: /src/opendal/core/services/github/src/writer.rs:51,1
    - Dst: Ok
      Src: /src/opendal/core/services/github/src/writer.rs:54,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 17
    argCount: 1
    argNames:
    - content
    argTypes:
    - '&super::core::Entry'
    constantsTouched: []
    func_position:
      end: 55
      start: 41
    functionDepth: 3
    functionLinenumber: 41
    functionLinenumberEnd: 55
    functionName: GithubWriter::parse_metadata
    functionSourceFile: /src/opendal/core/services/github/src/writer.rs
    functionUses: 1
    functionsReached:
    - Result::set_etag
    - Metadata::new
    - Ok
    - Result::set_content_length
    linkageType: ''
    returnType: Result
    signature: 'fn parse_metadata(content: &super::core::Entry) -> Result<Metadata>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: upload
      Src: /src/opendal/core/services/github/src/writer.rs:60,1
    - Dst: status
      Src: /src/opendal/core/services/github/src/writer.rs:62,1
    - Dst: into_body
      Src: /src/opendal/core/services/github/src/writer.rs:66,1
    - Dst: serde_json::from_reader
      Src: /src/opendal/core/services/github/src/writer.rs:68,1
    - Dst: reader
      Src: /src/opendal/core/services/github/src/writer.rs:68,1
    - Dst: map_err
      Src: /src/opendal/core/services/github/src/writer.rs:68,1
    - Dst: GithubWriter::parse_metadata
      Src: /src/opendal/core/services/github/src/writer.rs:69,1
    - Dst: Ok
      Src: /src/opendal/core/services/github/src/writer.rs:70,1
    - Dst: Err
      Src: /src/opendal/core/services/github/src/writer.rs:72,1
    - Dst: super::core::parse_error
      Src: /src/opendal/core/services/github/src/writer.rs:72,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 28
    argCount: 1
    argNames:
    - bs
    argTypes:
    - Buffer
    constantsTouched: []
    func_position:
      end: 74
      start: 59
    functionDepth: 37
    functionLinenumber: 59
    functionLinenumberEnd: 74
    functionName: GithubWriter::write_once
    functionSourceFile: /src/opendal/core/services/github/src/writer.rs
    functionUses: 0
    functionsReached:
    - map_err
    - reader
    - status
    - Ok
    - serde_json::from_reader
    - into_body
    - GithubWriter::parse_metadata
    - Err
    - super::core::parse_error
    - upload
    linkageType: ''
    returnType: Result
    signature: 'async fn write_once(&self, bs: Buffer) -> Result<Metadata>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: register::<Github>
      Src: /src/opendal/core/services/github/src/lib.rs:23,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - registry
    argTypes:
    - '&opendal_core::OperatorRegistry'
    constantsTouched: []
    func_position:
      end: 24
      start: 22
    functionDepth: 0
    functionLinenumber: 22
    functionLinenumberEnd: 24
    functionName: register_github_service
    functionSourceFile: /src/opendal/core/services/github/src/lib.rs
    functionUses: 1
    functionsReached:
    - register::<Github>
    linkageType: ''
    returnType: void
    signature: 'pub fn register_github_service(registry: &opendal_core::OperatorRegistry)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::debug_struct
      Src: /src/opendal/core/services/github/src/backend.rs:47,1
    - Dst: field
      Src: /src/opendal/core/services/github/src/backend.rs:47,1
    - Dst: finish_non_exhaustive
      Src: /src/opendal/core/services/github/src/backend.rs:47,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - f
    argTypes:
    - '&mut std::fmt::Formatter<''_>'
    constantsTouched: []
    func_position:
      end: 50
      start: 46
    functionDepth: 5
    functionLinenumber: 46
    functionLinenumberEnd: 50
    functionName: GithubBuilder::fmt
    functionSourceFile: /src/opendal/core/services/github/src/backend.rs
    functionUses: 0
    functionsReached:
    - field
    - Result::debug_struct
    - finish_non_exhaustive
    linkageType: ''
    returnType: std::fmt::Result
    signature: 'fn fmt(&self, f: &mut std::fmt::Formatter<''_>) -> std::fmt::Result'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::is_empty
      Src: /src/opendal/core/services/github/src/backend.rs:58,1
    - Dst: Some
      Src: /src/opendal/core/services/github/src/backend.rs:61,1
    - Dst: Result::to_string
      Src: /src/opendal/core/services/github/src/backend.rs:61,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - root
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 65
      start: 57
    functionDepth: 4
    functionLinenumber: 57
    functionLinenumberEnd: 65
    functionName: GithubBuilder::root
    functionSourceFile: /src/opendal/core/services/github/src/backend.rs
    functionUses: 0
    functionsReached:
    - Result::is_empty
    - Result::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn root(mut self, root: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self::is_empty
      Src: /src/opendal/core/services/github/src/backend.rs:71,1
    - Dst: Some
      Src: /src/opendal/core/services/github/src/backend.rs:72,1
    - Dst: Self::to_string
      Src: /src/opendal/core/services/github/src/backend.rs:72,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 1
    argNames:
    - token
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 75
      start: 70
    functionDepth: 4
    functionLinenumber: 70
    functionLinenumberEnd: 75
    functionName: GithubBuilder::token
    functionSourceFile: /src/opendal/core/services/github/src/backend.rs
    functionUses: 0
    functionsReached:
    - Self::is_empty
    - Self::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn token(mut self, token: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self::to_string
      Src: /src/opendal/core/services/github/src/backend.rs:79,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - owner
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 82
      start: 78
    functionDepth: 2
    functionLinenumber: 78
    functionLinenumberEnd: 82
    functionName: GithubBuilder::owner
    functionSourceFile: /src/opendal/core/services/github/src/backend.rs
    functionUses: 0
    functionsReached:
    - Self::to_string
    linkageType: ''
    returnType: Self
    signature: 'pub fn owner(mut self, owner: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: to_string
      Src: /src/opendal/core/services/github/src/backend.rs:86,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - repo
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 89
      start: 85
    functionDepth: 2
    functionLinenumber: 85
    functionLinenumberEnd: 89
    functionName: GithubBuilder::repo
    functionSourceFile: /src/opendal/core/services/github/src/backend.rs
    functionUses: 0
    functionsReached:
    - to_string
    linkageType: ''
    returnType: Self
    signature: 'pub fn repo(mut self, repo: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: normalize_root
      Src: /src/opendal/core/services/github/src/backend.rs:99,1
    - Dst: clone
      Src: /src/opendal/core/services/github/src/backend.rs:99,1
    - Dst: unwrap_or_default
      Src: /src/opendal/core/services/github/src/backend.rs:99,1
    - Dst: is_empty
      Src: /src/opendal/core/services/github/src/backend.rs:103,1
    - Dst: Err
      Src: /src/opendal/core/services/github/src/backend.rs:104,1
    - Dst: Error::new
      Src: /src/opendal/core/services/github/src/backend.rs:104,1
    - Dst: Self::with_operation
      Src: /src/opendal/core/services/github/src/backend.rs:104,1
    - Dst: Self::with_context
      Src: /src/opendal/core/services/github/src/backend.rs:104,1
    - Dst: is_empty
      Src: /src/opendal/core/services/github/src/backend.rs:112,1
    - Dst: Err
      Src: /src/opendal/core/services/github/src/backend.rs:113,1
    - Dst: Error::new
      Src: /src/opendal/core/services/github/src/backend.rs:113,1
    - Dst: Self::with_operation
      Src: /src/opendal/core/services/github/src/backend.rs:113,1
    - Dst: Self::with_context
      Src: /src/opendal/core/services/github/src/backend.rs:113,1
    - Dst: Ok
      Src: /src/opendal/core/services/github/src/backend.rs:120,1
    - Dst: Arc::new
      Src: /src/opendal/core/services/github/src/backend.rs:121,1
    - Dst: ServiceInfo::new
      Src: /src/opendal/core/services/github/src/backend.rs:122,1
    - Dst: Default::default
      Src: /src/opendal/core/services/github/src/backend.rs:141,1
    - Dst: clone
      Src: /src/opendal/core/services/github/src/backend.rs:144,1
    - Dst: clone
      Src: /src/opendal/core/services/github/src/backend.rs:145,1
    - Dst: clone
      Src: /src/opendal/core/services/github/src/backend.rs:146,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 60
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 149
      start: 96
    functionDepth: 34
    functionLinenumber: 96
    functionLinenumberEnd: 149
    functionName: GithubBuilder::build
    functionSourceFile: /src/opendal/core/services/github/src/backend.rs
    functionUses: 0
    functionsReached:
    - ServiceInfo::new
    - Ok
    - Arc::new
    - Default::default
    - clone
    - normalize_root
    - Err
    - is_empty
    - Error::new
    - Self::with_operation
    - Self::with_context
    - unwrap_or_default
    linkageType: ''
    returnType: Result
    signature: fn build(self) -> Result<impl Service>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: clone
      Src: /src/opendal/core/services/github/src/backend.rs:166,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 167
      start: 165
    functionDepth: 2
    functionLinenumber: 165
    functionLinenumberEnd: 167
    functionName: GithubBackend::info
    functionSourceFile: /src/opendal/core/services/github/src/backend.rs
    functionUses: 0
    functionsReached:
    - clone
    linkageType: ''
    returnType: ServiceInfo
    signature: fn info(&self) -> ServiceInfo
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 171
      start: 169
    functionDepth: 0
    functionLinenumber: 169
    functionLinenumberEnd: 171
    functionName: GithubBackend::capability
    functionSourceFile: /src/opendal/core/services/github/src/backend.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Capability
    signature: fn capability(&self) -> Capability
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Buffer::new
      Src: /src/opendal/core/services/github/src/backend.rs:179,1
    - Dst: upload
      Src: /src/opendal/core/services/github/src/backend.rs:181,1
    - Dst: status
      Src: /src/opendal/core/services/github/src/backend.rs:186,1
    - Dst: Ok
      Src: /src/opendal/core/services/github/src/backend.rs:189,1
    - Dst: RpCreateDir::default
      Src: /src/opendal/core/services/github/src/backend.rs:189,1
    - Dst: Err
      Src: /src/opendal/core/services/github/src/backend.rs:190,1
    - Dst: super::core::parse_error
      Src: /src/opendal/core/services/github/src/backend.rs:190,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 3
    argNames:
    - ctx
    - path
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpCreateDir
    constantsTouched: []
    func_position:
      end: 192
      start: 173
    functionDepth: 37
    functionLinenumber: 173
    functionLinenumberEnd: 192
    functionName: GithubBackend::create_dir
    functionSourceFile: /src/opendal/core/services/github/src/backend.rs
    functionUses: 0
    functionsReached:
    - Buffer::new
    - status
    - RpCreateDir::default
    - Ok
    - Err
    - super::core::parse_error
    - upload
    linkageType: ''
    returnType: Result
    signature: 'async fn create_dir(&self,ctx: &OperationContext,path: &str,_: OpCreateDir,)
      -> Result<RpCreateDir>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: stat
      Src: /src/opendal/core/services/github/src/backend.rs:195,1
    - Dst: status
      Src: /src/opendal/core/services/github/src/backend.rs:197,1
    - Dst: into_body
      Src: /src/opendal/core/services/github/src/backend.rs:201,1
    - Dst: serde_json::from_reader
      Src: /src/opendal/core/services/github/src/backend.rs:203,1
    - Dst: reader
      Src: /src/opendal/core/services/github/src/backend.rs:203,1
    - Dst: map_err
      Src: /src/opendal/core/services/github/src/backend.rs:203,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/github/src/backend.rs:206,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/github/src/backend.rs:208,1
    - Dst: Self::with_content_length
      Src: /src/opendal/core/services/github/src/backend.rs:208,1
    - Dst: Self::with_etag
      Src: /src/opendal/core/services/github/src/backend.rs:208,1
    - Dst: Ok
      Src: /src/opendal/core/services/github/src/backend.rs:213,1
    - Dst: RpStat::new
      Src: /src/opendal/core/services/github/src/backend.rs:213,1
    - Dst: Err
      Src: /src/opendal/core/services/github/src/backend.rs:215,1
    - Dst: super::core::parse_error
      Src: /src/opendal/core/services/github/src/backend.rs:215,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 32
    argCount: 3
    argNames:
    - ctx
    - path
    - _args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpStat
    constantsTouched: []
    func_position:
      end: 217
      start: 194
    functionDepth: 31
    functionLinenumber: 194
    functionLinenumberEnd: 217
    functionName: GithubBackend::stat
    functionSourceFile: /src/opendal/core/services/github/src/backend.rs
    functionUses: 0
    functionsReached:
    - map_err
    - Metadata::new
    - reader
    - status
    - Ok
    - serde_json::from_reader
    - Self::with_content_length
    - into_body
    - Self::with_etag
    - RpStat::new
    - Err
    - super::core::parse_error
    - stat
    linkageType: ''
    returnType: Result
    signature: 'async fn stat(&self, ctx: &OperationContext, path: &str, _args: OpStat)
      -> Result<RpStat>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/core/services/github/src/backend.rs:220,1
    - Dst: oio::StreamReader::new
      Src: /src/opendal/core/services/github/src/backend.rs:220,1
    - Dst: GithubReader::new
      Src: /src/opendal/core/services/github/src/backend.rs:220,1
    - Dst: GithubBackend::clone
      Src: /src/opendal/core/services/github/src/backend.rs:221,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/github/src/backend.rs:222,1
    - Dst: Ok
      Src: /src/opendal/core/services/github/src/backend.rs:228,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpRead
    constantsTouched: []
    func_position:
      end: 229
      start: 218
    functionDepth: 3
    functionLinenumber: 218
    functionLinenumberEnd: 229
    functionName: GithubBackend::read
    functionSourceFile: /src/opendal/core/services/github/src/backend.rs
    functionUses: 0
    functionsReached:
    - Result::clone
    - Ok
    - oio::StreamReader::new
    - GithubBackend::clone
    - GithubReader::new
    linkageType: ''
    returnType: Result
    signature: 'fn read(&self, ctx: &OperationContext, path: &str, args: OpRead) ->
      Result<Self::Reader>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: GithubWriter::new
      Src: /src/opendal/core/services/github/src/backend.rs:233,1
    - Dst: clone
      Src: /src/opendal/core/services/github/src/backend.rs:233,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/github/src/backend.rs:233,1
    - Dst: to_string
      Src: /src/opendal/core/services/github/src/backend.rs:233,1
    - Dst: oio::OneShotWriter::new
      Src: /src/opendal/core/services/github/src/backend.rs:235,1
    - Dst: Ok
      Src: /src/opendal/core/services/github/src/backend.rs:237,1
    - Dst: Ok
      Src: /src/opendal/core/services/github/src/backend.rs:240,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 3
    argNames:
    - ctx
    - path
    - _args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpWrite
    constantsTouched: []
    func_position:
      end: 241
      start: 231
    functionDepth: 2
    functionLinenumber: 231
    functionLinenumberEnd: 241
    functionName: GithubBackend::write
    functionSourceFile: /src/opendal/core/services/github/src/backend.rs
    functionUses: 0
    functionsReached:
    - Result::clone
    - to_string
    - Ok
    - oio::OneShotWriter::new
    - clone
    - GithubWriter::new
    linkageType: ''
    returnType: Result
    signature: 'fn write(&self, ctx: &OperationContext, path: &str, _args: OpWrite)
      -> Result<Self::Writer>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/core/services/github/src/backend.rs:245,1
    - Dst: oio::OneShotDeleter::new
      Src: /src/opendal/core/services/github/src/backend.rs:245,1
    - Dst: GithubDeleter::new
      Src: /src/opendal/core/services/github/src/backend.rs:245,1
    - Dst: clone
      Src: /src/opendal/core/services/github/src/backend.rs:246,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/github/src/backend.rs:247,1
    - Dst: Ok
      Src: /src/opendal/core/services/github/src/backend.rs:251,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - '&OperationContext'
    constantsTouched: []
    func_position:
      end: 252
      start: 243
    functionDepth: 2
    functionLinenumber: 243
    functionLinenumberEnd: 252
    functionName: GithubBackend::delete
    functionSourceFile: /src/opendal/core/services/github/src/backend.rs
    functionUses: 0
    functionsReached:
    - oio::OneShotDeleter::new
    - Result::clone
    - Ok
    - GithubDeleter::new
    - clone
    linkageType: ''
    returnType: Result
    signature: 'fn delete(&self, ctx: &OperationContext) -> Result<Self::Deleter>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: GithubLister::new
      Src: /src/opendal/core/services/github/src/backend.rs:256,1
    - Dst: clone
      Src: /src/opendal/core/services/github/src/backend.rs:256,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/github/src/backend.rs:256,1
    - Dst: OpStat::recursive
      Src: /src/opendal/core/services/github/src/backend.rs:256,1
    - Dst: Ok
      Src: /src/opendal/core/services/github/src/backend.rs:257,1
    - Dst: oio::PageLister::new
      Src: /src/opendal/core/services/github/src/backend.rs:257,1
    - Dst: Ok
      Src: /src/opendal/core/services/github/src/backend.rs:260,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpList
    constantsTouched: []
    func_position:
      end: 261
      start: 254
    functionDepth: 36
    functionLinenumber: 254
    functionLinenumberEnd: 261
    functionName: GithubBackend::list
    functionSourceFile: /src/opendal/core/services/github/src/backend.rs
    functionUses: 0
    functionsReached:
    - Result::clone
    - Ok
    - clone
    - oio::PageLister::new
    - GithubLister::new
    - OpStat::recursive
    linkageType: ''
    returnType: Result
    signature: 'fn list(&self, ctx: &OperationContext, path: &str, args: OpList) ->
      Result<Self::Lister>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/core/services/github/src/backend.rs:271,1
    - Dst: Error::new
      Src: /src/opendal/core/services/github/src/backend.rs:271,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 5
    argNames:
    - _ctx
    - _from
    - _to
    - _args
    - _opts
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    - OpCopy
    - OpCopier
    constantsTouched: []
    func_position:
      end: 275
      start: 263
    functionDepth: 36
    functionLinenumber: 263
    functionLinenumberEnd: 275
    functionName: GithubBackend::copy
    functionSourceFile: /src/opendal/core/services/github/src/backend.rs
    functionUses: 0
    functionsReached:
    - Error::new
    - Err
    linkageType: ''
    returnType: Result
    signature: 'fn copy(&self,_ctx: &OperationContext,_from: &str,_to: &str,_args:
      OpCopy,_opts: OpCopier,) -> Result<Self::Copier>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/core/services/github/src/backend.rs:284,1
    - Dst: Error::new
      Src: /src/opendal/core/services/github/src/backend.rs:284,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - _ctx
    - _from
    - _to
    - _args
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    - OpRename
    constantsTouched: []
    func_position:
      end: 288
      start: 277
    functionDepth: 36
    functionLinenumber: 277
    functionLinenumberEnd: 288
    functionName: GithubBackend::rename
    functionSourceFile: /src/opendal/core/services/github/src/backend.rs
    functionUses: 0
    functionsReached:
    - Error::new
    - Err
    linkageType: ''
    returnType: Result
    signature: 'async fn rename(&self,_ctx: &OperationContext,_from: &str,_to: &str,_args:
      OpRename,) -> Result<RpRename>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/core/services/github/src/backend.rs:296,1
    - Dst: Error::new
      Src: /src/opendal/core/services/github/src/backend.rs:296,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - _ctx
    - _path
    - _args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpPresign
    constantsTouched: []
    func_position:
      end: 300
      start: 290
    functionDepth: 36
    functionLinenumber: 290
    functionLinenumberEnd: 300
    functionName: GithubBackend::presign
    functionSourceFile: /src/opendal/core/services/github/src/backend.rs
    functionUses: 0
    functionsReached:
    - Error::new
    - Err
    linkageType: ''
    returnType: Result
    signature: 'async fn presign(&self,_ctx: &OperationContext,_path: &str,_args:
      OpPresign,) -> Result<RpPresign>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::options
      Src: /src/opendal/core/services/persy/src/config.rs:40,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/persy/src/config.rs:40,1
    - Dst: Result::root
      Src: /src/opendal/core/services/persy/src/config.rs:42,1
    - Dst: is_empty
      Src: /src/opendal/core/services/persy/src/config.rs:43,1
    - Dst: Result::entry
      Src: /src/opendal/core/services/persy/src/config.rs:45,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/persy/src/config.rs:45,1
    - Dst: crate::Entry::or_insert_with
      Src: /src/opendal/core/services/persy/src/config.rs:45,1
    - Dst: Self::from_iter
      Src: /src/opendal/core/services/persy/src/config.rs:49,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 20
    argCount: 1
    argNames:
    - uri
    argTypes:
    - '&opendal_core::OperatorUri'
    constantsTouched: []
    func_position:
      end: 50
      start: 39
    functionDepth: 35
    functionLinenumber: 39
    functionLinenumberEnd: 50
    functionName: PersyConfig::from_uri
    functionSourceFile: /src/opendal/core/services/persy/src/config.rs
    functionUses: 1
    functionsReached:
    - Result::clone
    - Self::from_iter
    - Result::entry
    - crate::Entry::or_insert_with
    - is_empty
    - Result::root
    - '&str::to_string'
    - Result::options
    linkageType: ''
    returnType: opendal_core::Result
    signature: 'fn from_uri(uri: &opendal_core::OperatorUri) -> opendal_core::Result<Self>'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 54
      start: 52
    functionDepth: 0
    functionLinenumber: 52
    functionLinenumberEnd: 54
    functionName: PersyConfig::into_builder
    functionSourceFile: /src/opendal/core/services/persy/src/config.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Self::Builder
    signature: fn into_builder(self) -> Self::Builder
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: OperatorUri::new
      Src: /src/opendal/core/services/persy/src/config.rs:65,1
    - Dst: Vec::<(String, String)>::new
      Src: /src/opendal/core/services/persy/src/config.rs:67,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/services/persy/src/config.rs:65,1
    - Dst: PersyConfig::from_uri
      Src: /src/opendal/core/services/persy/src/config.rs:71,1
    - Dst: opendal_core::Result::unwrap
      Src: /src/opendal/core/services/persy/src/config.rs:71,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 75
      start: 64
    functionDepth: 29
    functionLinenumber: 64
    functionLinenumberEnd: 75
    functionName: tests::from_uri_sets_datafile_segment_and_index
    functionSourceFile: /src/opendal/core/services/persy/src/config.rs
    functionUses: 0
    functionsReached:
    - PersyConfig::from_uri
    - Vec::<(String, String)>::new
    - OperatorUri::new
    - Result::unwrap
    - opendal_core::Result::unwrap
    linkageType: ''
    returnType: void
    signature: fn from_uri_sets_datafile_segment_and_index()
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - core
    - root
    argTypes:
    - Arc<PersyCore>
    - String
    constantsTouched: []
    func_position:
      end: 33
      start: 31
    functionDepth: 0
    functionLinenumber: 31
    functionLinenumberEnd: 33
    functionName: PersyDeleter::new
    functionSourceFile: /src/opendal/core/services/persy/src/deleter.rs
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(core: Arc<PersyCore>, root: String) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/persy/src/deleter.rs:38,1
    - Dst: delete
      Src: /src/opendal/core/services/persy/src/deleter.rs:39,1
    - Dst: Ok
      Src: /src/opendal/core/services/persy/src/deleter.rs:40,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 2
    argNames:
    - path
    argTypes:
    - String
    - OpDelete
    constantsTouched: []
    func_position:
      end: 41
      start: 37
    functionDepth: 32
    functionLinenumber: 37
    functionLinenumberEnd: 41
    functionName: PersyDeleter::delete_once
    functionSourceFile: /src/opendal/core/services/persy/src/deleter.rs
    functionUses: 0
    functionsReached:
    - Ok
    - build_abs_path
    - delete
    linkageType: ''
    returnType: Result
    signature: 'async fn delete_once(&self, path: String, _: OpDelete) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: to_string
      Src: /src/opendal/core/services/persy/src/reader.rs:32,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - backend
    - path
    argTypes:
    - PersyBackend
    - '&str'
    - OpRead
    constantsTouched: []
    func_position:
      end: 34
      start: 29
    functionDepth: 2
    functionLinenumber: 29
    functionLinenumberEnd: 34
    functionName: PersyReader::new
    functionSourceFile: /src/opendal/core/services/persy/src/reader.rs
    functionUses: 1
    functionsReached:
    - to_string
    linkageType: ''
    returnType: Self
    signature: 'pub(super) fn new(backend: PersyBackend, path: &str, _: OpRead) ->
      Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: as_str
      Src: /src/opendal/core/services/persy/src/reader.rs:40,1
    - Dst: build_abs_path
      Src: /src/opendal/core/services/persy/src/reader.rs:41,1
    - Dst: get
      Src: /src/opendal/core/services/persy/src/reader.rs:42,1
    - Dst: Err
      Src: /src/opendal/core/services/persy/src/reader.rs:45,1
    - Dst: Error::new
      Src: /src/opendal/core/services/persy/src/reader.rs:45,1
    - Dst: Result::slice
      Src: /src/opendal/core/services/persy/src/reader.rs:48,1
    - Dst: (Vec::to_content_range
      Src: /src/opendal/core/services/persy/src/reader.rs:48,1
    - Dst: Result::len
      Src: /src/opendal/core/services/persy/src/reader.rs:48,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/persy/src/reader.rs:49,1
    - Dst: Self::with_content_length
      Src: /src/opendal/core/services/persy/src/reader.rs:49,1
    - Dst: Result::len
      Src: /src/opendal/core/services/persy/src/reader.rs:49,1
    - Dst: Ok
      Src: /src/opendal/core/services/persy/src/reader.rs:50,1
    - Dst: RpRead::new
      Src: /src/opendal/core/services/persy/src/reader.rs:51,1
    - Dst: Box::new
      Src: /src/opendal/core/services/persy/src/reader.rs:52,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 36
    argCount: 1
    argNames:
    - range
    argTypes:
    - BytesRange
    constantsTouched: []
    func_position:
      end: 54
      start: 38
    functionDepth: 36
    functionLinenumber: 38
    functionLinenumberEnd: 54
    functionName: PersyReader::open
    functionSourceFile: /src/opendal/core/services/persy/src/reader.rs
    functionUses: 0
    functionsReached:
    - Metadata::new
    - get
    - Ok
    - Box::new
    - Self::with_content_length
    - build_abs_path
    - Error::new
    - Err
    - as_str
    - Result::slice
    - (Vec::to_content_range
    - Result::len
    - RpRead::new
    linkageType: ''
    returnType: Result
    signature: 'async fn open(&self, range: BytesRange) -> Result<(RpRead, Box<dyn
      oio::ReadStreamDyn>)>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::debug_struct
      Src: /src/opendal/core/services/persy/src/core.rs:32,1
    - Dst: field
      Src: /src/opendal/core/services/persy/src/core.rs:32,1
    - Dst: field
      Src: /src/opendal/core/services/persy/src/core.rs:32,1
    - Dst: field
      Src: /src/opendal/core/services/persy/src/core.rs:32,1
    - Dst: finish_non_exhaustive
      Src: /src/opendal/core/services/persy/src/core.rs:32,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 16
    argCount: 1
    argNames:
    - f
    argTypes:
    - '&mut std::fmt::Formatter<''_>'
    constantsTouched: []
    func_position:
      end: 37
      start: 31
    functionDepth: 5
    functionLinenumber: 31
    functionLinenumberEnd: 37
    functionName: PersyCore::fmt
    functionSourceFile: /src/opendal/core/services/persy/src/core.rs
    functionUses: 0
    functionsReached:
    - field
    - Result::debug_struct
    - finish_non_exhaustive
    linkageType: ''
    returnType: std::fmt::Result
    signature: 'fn fmt(&self, f: &mut std::fmt::Formatter<''_>) -> std::fmt::Result'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: "persy\n            .get::<String, persy::PersyId>"
      Src: /src/opendal/core/services/persy/src/core.rs:42,1
    - Dst: to_string
      Src: /src/opendal/core/services/persy/src/core.rs:44,1
    - Dst: map_err
      Src: /src/opendal/core/services/persy/src/core.rs:42,1
    - Dst: next
      Src: /src/opendal/core/services/persy/src/core.rs:46,1
    - Dst: read
      Src: /src/opendal/core/services/persy/src/core.rs:47,1
    - Dst: map_err
      Src: /src/opendal/core/services/persy/src/core.rs:47,1
    - Dst: Ok
      Src: /src/opendal/core/services/persy/src/core.rs:48,1
    - Dst: Vec::map
      Src: /src/opendal/core/services/persy/src/core.rs:48,1
    - Dst: Ok
      Src: /src/opendal/core/services/persy/src/core.rs:51,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 30
    argCount: 1
    argNames:
    - path
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 52
      start: 41
    functionDepth: 31
    functionLinenumber: 41
    functionLinenumberEnd: 52
    functionName: PersyCore::get
    functionSourceFile: /src/opendal/core/services/persy/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - to_string
    - next
    - read
    - Ok
    - "persy\n            .get::<String, persy::PersyId>"
    - Vec::map
    linkageType: ''
    returnType: Result
    signature: 'pub fn get(&self, path: &str) -> Result<Option<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: begin
      Src: /src/opendal/core/services/persy/src/core.rs:55,1
    - Dst: map_err
      Src: /src/opendal/core/services/persy/src/core.rs:55,1
    - Dst: Result::insert
      Src: /src/opendal/core/services/persy/src/core.rs:56,1
    - Dst: Vec::to_vec
      Src: /src/opendal/core/services/persy/src/core.rs:57,1
    - Dst: map_err
      Src: /src/opendal/core/services/persy/src/core.rs:56,1
    - Dst: put::<String, persy::PersyId>
      Src: /src/opendal/core/services/persy/src/core.rs:60,1
    - Dst: to_string
      Src: /src/opendal/core/services/persy/src/core.rs:60,1
    - Dst: map_err
      Src: /src/opendal/core/services/persy/src/core.rs:60,1
    - Dst: Result::prepare
      Src: /src/opendal/core/services/persy/src/core.rs:62,1
    - Dst: String::map_err
      Src: /src/opendal/core/services/persy/src/core.rs:62,1
    - Dst: commit
      Src: /src/opendal/core/services/persy/src/core.rs:63,1
    - Dst: map_err
      Src: /src/opendal/core/services/persy/src/core.rs:63,1
    - Dst: Ok
      Src: /src/opendal/core/services/persy/src/core.rs:65,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 39
    argCount: 2
    argNames:
    - path
    - value
    argTypes:
    - '&str'
    - Buffer
    constantsTouched: []
    func_position:
      end: 66
      start: 54
    functionDepth: 37
    functionLinenumber: 54
    functionLinenumberEnd: 66
    functionName: PersyCore::set
    functionSourceFile: /src/opendal/core/services/persy/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - to_string
    - Result::prepare
    - Ok
    - put::<String, persy::PersyId>
    - begin
    - Result::insert
    - String::map_err
    - commit
    - Vec::to_vec
    linkageType: ''
    returnType: Result
    signature: 'pub fn set(&self, path: &str, value: Buffer) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: "persy\n            .get::<String, persy::PersyId>"
      Src: /src/opendal/core/services/persy/src/core.rs:69,1
    - Dst: to_string
      Src: /src/opendal/core/services/persy/src/core.rs:71,1
    - Dst: map_err
      Src: /src/opendal/core/services/persy/src/core.rs:69,1
    - Dst: next
      Src: /src/opendal/core/services/persy/src/core.rs:73,1
    - Dst: begin
      Src: /src/opendal/core/services/persy/src/core.rs:75,1
    - Dst: map_err
      Src: /src/opendal/core/services/persy/src/core.rs:75,1
    - Dst: Result::delete
      Src: /src/opendal/core/services/persy/src/core.rs:77,1
    - Dst: Result::map_err
      Src: /src/opendal/core/services/persy/src/core.rs:77,1
    - Dst: remove::<String, persy::PersyId>
      Src: /src/opendal/core/services/persy/src/core.rs:79,1
    - Dst: to_string
      Src: /src/opendal/core/services/persy/src/core.rs:79,1
    - Dst: Some
      Src: /src/opendal/core/services/persy/src/core.rs:79,1
    - Dst: map_err
      Src: /src/opendal/core/services/persy/src/core.rs:79,1
    - Dst: Result::prepare
      Src: /src/opendal/core/services/persy/src/core.rs:82,1
    - Dst: String::map_err
      Src: /src/opendal/core/services/persy/src/core.rs:82,1
    - Dst: commit
      Src: /src/opendal/core/services/persy/src/core.rs:83,1
    - Dst: map_err
      Src: /src/opendal/core/services/persy/src/core.rs:83,1
    - Dst: Ok
      Src: /src/opendal/core/services/persy/src/core.rs:86,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 54
    argCount: 1
    argNames:
    - path
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 87
      start: 68
    functionDepth: 32
    functionLinenumber: 68
    functionLinenumberEnd: 87
    functionName: PersyCore::delete
    functionSourceFile: /src/opendal/core/services/persy/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - to_string
    - next
    - Result::map_err
    - Result::prepare
    - Ok
    - begin
    - Some
    - "persy\n            .get::<String, persy::PersyId>"
    - remove::<String, persy::PersyId>
    - String::map_err
    - commit
    - Result::delete
    linkageType: ''
    returnType: Result
    signature: 'pub fn delete(&self, path: &str) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: oio::QueueBuf::new
      Src: /src/opendal/core/services/persy/src/writer.rs:35,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - core
    - path
    argTypes:
    - Arc<PersyCore>
    - String
    constantsTouched: []
    func_position:
      end: 37
      start: 31
    functionDepth: 4
    functionLinenumber: 31
    functionLinenumberEnd: 37
    functionName: PersyWriter::new
    functionSourceFile: /src/opendal/core/services/persy/src/writer.rs
    functionUses: 1
    functionsReached:
    - oio::QueueBuf::new
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(core: Arc<PersyCore>, path: String) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: push
      Src: /src/opendal/core/services/persy/src/writer.rs:42,1
    - Dst: Ok
      Src: /src/opendal/core/services/persy/src/writer.rs:43,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - bs
    argTypes:
    - Buffer
    constantsTouched: []
    func_position:
      end: 44
      start: 41
    functionDepth: 5
    functionLinenumber: 41
    functionLinenumberEnd: 44
    functionName: PersyWriter::write
    functionSourceFile: /src/opendal/core/services/persy/src/writer.rs
    functionUses: 0
    functionsReached:
    - Ok
    - push
    linkageType: ''
    returnType: Result
    signature: 'async fn write(&mut self, bs: Buffer) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: clone
      Src: /src/opendal/core/services/persy/src/writer.rs:47,1
    - Dst: collect
      Src: /src/opendal/core/services/persy/src/writer.rs:47,1
    - Dst: io::Result::len
      Src: /src/opendal/core/services/persy/src/writer.rs:48,1
    - Dst: set
      Src: /src/opendal/core/services/persy/src/writer.rs:49,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/persy/src/writer.rs:51,1
    - Dst: EntryMode::from_path
      Src: /src/opendal/core/services/persy/src/writer.rs:51,1
    - Dst: Self::with_content_length
      Src: /src/opendal/core/services/persy/src/writer.rs:51,1
    - Dst: Ok
      Src: /src/opendal/core/services/persy/src/writer.rs:52,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 22
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 53
      start: 46
    functionDepth: 36
    functionLinenumber: 46
    functionLinenumberEnd: 53
    functionName: PersyWriter::close
    functionSourceFile: /src/opendal/core/services/persy/src/writer.rs
    functionUses: 0
    functionsReached:
    - collect
    - Metadata::new
    - Ok
    - io::Result::len
    - set
    - Self::with_content_length
    - clone
    - EntryMode::from_path
    linkageType: ''
    returnType: Result
    signature: async fn close(&mut self) -> Result<Metadata>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: clear
      Src: /src/opendal/core/services/persy/src/writer.rs:56,1
    - Dst: Ok
      Src: /src/opendal/core/services/persy/src/writer.rs:57,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 58
      start: 55
    functionDepth: 2
    functionLinenumber: 55
    functionLinenumberEnd: 58
    functionName: PersyWriter::abort
    functionSourceFile: /src/opendal/core/services/persy/src/writer.rs
    functionUses: 0
    functionsReached:
    - clear
    - Ok
    linkageType: ''
    returnType: Result
    signature: async fn abort(&mut self) -> Result<()>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: register::<Persy>
      Src: /src/opendal/core/services/persy/src/lib.rs:37,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - registry
    argTypes:
    - '&opendal_core::OperatorRegistry'
    constantsTouched: []
    func_position:
      end: 38
      start: 36
    functionDepth: 0
    functionLinenumber: 36
    functionLinenumberEnd: 38
    functionName: register_persy_service
    functionSourceFile: /src/opendal/core/services/persy/src/lib.rs
    functionUses: 1
    functionsReached:
    - register::<Persy>
    linkageType: ''
    returnType: void
    signature: 'pub fn register_persy_service(registry: &opendal_core::OperatorRegistry)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Some
      Src: /src/opendal/core/services/persy/src/backend.rs:40,1
    - Dst: into
      Src: /src/opendal/core/services/persy/src/backend.rs:40,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - path
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 42
      start: 39
    functionDepth: 29
    functionLinenumber: 39
    functionLinenumberEnd: 42
    functionName: PersyBuilder::datafile
    functionSourceFile: /src/opendal/core/services/persy/src/backend.rs
    functionUses: 0
    functionsReached:
    - into
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn datafile(mut self, path: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Some
      Src: /src/opendal/core/services/persy/src/backend.rs:46,1
    - Dst: into
      Src: /src/opendal/core/services/persy/src/backend.rs:46,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - path
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 48
      start: 45
    functionDepth: 29
    functionLinenumber: 45
    functionLinenumberEnd: 48
    functionName: PersyBuilder::segment
    functionSourceFile: /src/opendal/core/services/persy/src/backend.rs
    functionUses: 0
    functionsReached:
    - into
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn segment(mut self, path: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Some
      Src: /src/opendal/core/services/persy/src/backend.rs:52,1
    - Dst: into
      Src: /src/opendal/core/services/persy/src/backend.rs:52,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - path
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 54
      start: 51
    functionDepth: 29
    functionLinenumber: 51
    functionLinenumberEnd: 54
    functionName: PersyBuilder::index
    functionSourceFile: /src/opendal/core/services/persy/src/backend.rs
    functionUses: 0
    functionsReached:
    - into
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn index(mut self, path: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: '&persy::Persy::begin'
      Src: /src/opendal/core/services/persy/src/backend.rs:97,1
    - Dst: Result::exists_segment
      Src: /src/opendal/core/services/persy/src/backend.rs:99,1
    - Dst: Result::create_segment
      Src: /src/opendal/core/services/persy/src/backend.rs:100,1
    - Dst: Result::exists_index
      Src: /src/opendal/core/services/persy/src/backend.rs:102,1
    - Dst: create_index::<String, persy::PersyId>
      Src: /src/opendal/core/services/persy/src/backend.rs:103,1
    - Dst: Result::prepare
      Src: /src/opendal/core/services/persy/src/backend.rs:106,1
    - Dst: commit
      Src: /src/opendal/core/services/persy/src/backend.rs:107,1
    - Dst: Ok
      Src: /src/opendal/core/services/persy/src/backend.rs:109,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 32
    argCount: 3
    argNames:
    - persy
    - segment_name
    - index_name
    argTypes:
    - '&persy::Persy'
    - '&str'
    - '&str'
    constantsTouched: []
    func_position:
      end: 110
      start: 92
    functionDepth: 37
    functionLinenumber: 92
    functionLinenumberEnd: 110
    functionName: P::e::r::s::y::B::u::i::l::d::e::r::::::::b::u::i::l::d::init
    functionSourceFile: /src/opendal/core/services/persy/src/backend.rs
    functionUses: 0
    functionsReached:
    - Result::prepare
    - '&persy::Persy::begin'
    - Result::create_segment
    - Ok
    - commit
    - Result::exists_index
    - Result::exists_segment
    - create_index::<String, persy::PersyId>
    linkageType: ''
    returnType: Result
    signature: 'fn init(persy: &persy::Persy,segment_name: &str,index_name: &str,)
      -> Result<(), Box<dyn std::error::Error>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: ok_or_else
      Src: /src/opendal/core/services/persy/src/backend.rs:61,1
    - Dst: Error::new
      Src: /src/opendal/core/services/persy/src/backend.rs:62,1
    - Dst: Self::with_context
      Src: /src/opendal/core/services/persy/src/backend.rs:62,1
    - Dst: ok_or_else
      Src: /src/opendal/core/services/persy/src/backend.rs:66,1
    - Dst: Error::new
      Src: /src/opendal/core/services/persy/src/backend.rs:67,1
    - Dst: Self::with_context
      Src: /src/opendal/core/services/persy/src/backend.rs:67,1
    - Dst: clone
      Src: /src/opendal/core/services/persy/src/backend.rs:71,1
    - Dst: ok_or_else
      Src: /src/opendal/core/services/persy/src/backend.rs:73,1
    - Dst: Error::new
      Src: /src/opendal/core/services/persy/src/backend.rs:74,1
    - Dst: Self::with_context
      Src: /src/opendal/core/services/persy/src/backend.rs:74,1
    - Dst: clone
      Src: /src/opendal/core/services/persy/src/backend.rs:78,1
    - Dst: persy::OpenOptions::new
      Src: /src/opendal/core/services/persy/src/backend.rs:80,1
    - Dst: Self::create
      Src: /src/opendal/core/services/persy/src/backend.rs:80,1
    - Dst: Result::prepare_with
      Src: /src/opendal/core/services/persy/src/backend.rs:80,1
    - Dst: init
      Src: /src/opendal/core/services/persy/src/backend.rs:82,1
    - Dst: open
      Src: /src/opendal/core/services/persy/src/backend.rs:80,1
    - Dst: map_err
      Src: /src/opendal/core/services/persy/src/backend.rs:80,1
    - Dst: Error::new
      Src: /src/opendal/core/services/persy/src/backend.rs:85,1
    - Dst: Self::with_context
      Src: /src/opendal/core/services/persy/src/backend.rs:85,1
    - Dst: Self::with_context
      Src: /src/opendal/core/services/persy/src/backend.rs:85,1
    - Dst: clone
      Src: /src/opendal/core/services/persy/src/backend.rs:87,1
    - Dst: Self::set_source
      Src: /src/opendal/core/services/persy/src/backend.rs:85,1
    - Dst: Ok
      Src: /src/opendal/core/services/persy/src/backend.rs:112,1
    - Dst: PersyBackend::new
      Src: /src/opendal/core/services/persy/src/backend.rs:112,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 91
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 118
      start: 60
    functionDepth: 36
    functionLinenumber: 60
    functionLinenumberEnd: 118
    functionName: PersyBuilder::build
    functionSourceFile: /src/opendal/core/services/persy/src/backend.rs
    functionUses: 0
    functionsReached:
    - map_err
    - PersyBackend::new
    - open
    - Ok
    - Result::prepare_with
    - clone
    - Error::new
    - persy::OpenOptions::new
    - init
    - Self::create
    - Self::set_source
    - Self::with_context
    - ok_or_else
    linkageType: ''
    returnType: Result
    signature: fn build(self) -> Result<impl Service>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: ServiceInfo::new
      Src: /src/opendal/core/services/persy/src/backend.rs:132,1
    - Dst: Default::default
      Src: /src/opendal/core/services/persy/src/backend.rs:139,1
    - Dst: Arc::new
      Src: /src/opendal/core/services/persy/src/backend.rs:143,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/persy/src/backend.rs:144,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 1
    argNames:
    - core
    argTypes:
    - PersyCore
    constantsTouched: []
    func_position:
      end: 148
      start: 131
    functionDepth: 33
    functionLinenumber: 131
    functionLinenumberEnd: 148
    functionName: PersyBackend::new
    functionSourceFile: /src/opendal/core/services/persy/src/backend.rs
    functionUses: 1
    functionsReached:
    - Arc::new
    - ServiceInfo::new
    - '&str::to_string'
    - Default::default
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(core: PersyCore) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: clone
      Src: /src/opendal/core/services/persy/src/backend.rs:159,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 160
      start: 158
    functionDepth: 2
    functionLinenumber: 158
    functionLinenumberEnd: 160
    functionName: PersyBackend::info
    functionSourceFile: /src/opendal/core/services/persy/src/backend.rs
    functionUses: 0
    functionsReached:
    - clone
    linkageType: ''
    returnType: ServiceInfo
    signature: fn info(&self) -> ServiceInfo
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 164
      start: 162
    functionDepth: 0
    functionLinenumber: 162
    functionLinenumberEnd: 164
    functionName: PersyBackend::capability
    functionSourceFile: /src/opendal/core/services/persy/src/backend.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Capability
    signature: fn capability(&self) -> Capability
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/core/services/persy/src/backend.rs:172,1
    - Dst: Error::new
      Src: /src/opendal/core/services/persy/src/backend.rs:172,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - _ctx
    - _path
    - _args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpCreateDir
    constantsTouched: []
    func_position:
      end: 176
      start: 166
    functionDepth: 36
    functionLinenumber: 166
    functionLinenumberEnd: 176
    functionName: PersyBackend::create_dir
    functionSourceFile: /src/opendal/core/services/persy/src/backend.rs
    functionUses: 0
    functionsReached:
    - Error::new
    - Err
    linkageType: ''
    returnType: Result
    signature: 'async fn create_dir(&self,_ctx: &OperationContext,_path: &str,_args:
      OpCreateDir,) -> Result<RpCreateDir>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/persy/src/backend.rs:179,1
    - Dst: build_abs_path
      Src: /src/opendal/core/services/persy/src/backend.rs:181,1
    - Dst: Ok
      Src: /src/opendal/core/services/persy/src/backend.rs:182,1
    - Dst: RpStat::new
      Src: /src/opendal/core/services/persy/src/backend.rs:182,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/persy/src/backend.rs:182,1
    - Dst: get
      Src: /src/opendal/core/services/persy/src/backend.rs:184,1
    - Dst: Ok
      Src: /src/opendal/core/services/persy/src/backend.rs:186,1
    - Dst: RpStat::new
      Src: /src/opendal/core/services/persy/src/backend.rs:186,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/persy/src/backend.rs:187,1
    - Dst: Self::with_content_length
      Src: /src/opendal/core/services/persy/src/backend.rs:187,1
    - Dst: Result::len
      Src: /src/opendal/core/services/persy/src/backend.rs:187,1
    - Dst: Err
      Src: /src/opendal/core/services/persy/src/backend.rs:189,1
    - Dst: Error::new
      Src: /src/opendal/core/services/persy/src/backend.rs:189,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 29
    argCount: 3
    argNames:
    - _ctx
    - path
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpStat
    constantsTouched: []
    func_position:
      end: 192
      start: 178
    functionDepth: 36
    functionLinenumber: 178
    functionLinenumberEnd: 192
    functionName: PersyBackend::stat
    functionSourceFile: /src/opendal/core/services/persy/src/backend.rs
    functionUses: 0
    functionsReached:
    - Metadata::new
    - get
    - Ok
    - Self::with_content_length
    - RpStat::new
    - build_abs_path
    - Err
    - Error::new
    - Result::len
    linkageType: ''
    returnType: Result
    signature: 'async fn stat(&self, _ctx: &OperationContext, path: &str, _: OpStat)
      -> Result<RpStat>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/core/services/persy/src/backend.rs:195,1
    - Dst: oio::StreamReader::new
      Src: /src/opendal/core/services/persy/src/backend.rs:195,1
    - Dst: PersyReader::new
      Src: /src/opendal/core/services/persy/src/backend.rs:195,1
    - Dst: PersyBackend::clone
      Src: /src/opendal/core/services/persy/src/backend.rs:196,1
    - Dst: Ok
      Src: /src/opendal/core/services/persy/src/backend.rs:202,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - _ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpRead
    constantsTouched: []
    func_position:
      end: 203
      start: 193
    functionDepth: 3
    functionLinenumber: 193
    functionLinenumberEnd: 203
    functionName: PersyBackend::read
    functionSourceFile: /src/opendal/core/services/persy/src/backend.rs
    functionUses: 0
    functionsReached:
    - oio::StreamReader::new
    - PersyBackend::clone
    - PersyReader::new
    - Ok
    linkageType: ''
    returnType: Result
    signature: 'fn read(&self, _ctx: &OperationContext, path: &str, args: OpRead)
      -> Result<Self::Reader>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/persy/src/backend.rs:207,1
    - Dst: Ok
      Src: /src/opendal/core/services/persy/src/backend.rs:208,1
    - Dst: PersyWriter::new
      Src: /src/opendal/core/services/persy/src/backend.rs:208,1
    - Dst: clone
      Src: /src/opendal/core/services/persy/src/backend.rs:208,1
    - Dst: Ok
      Src: /src/opendal/core/services/persy/src/backend.rs:211,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 3
    argNames:
    - _ctx
    - path
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpWrite
    constantsTouched: []
    func_position:
      end: 212
      start: 205
    functionDepth: 5
    functionLinenumber: 205
    functionLinenumberEnd: 212
    functionName: PersyBackend::write
    functionSourceFile: /src/opendal/core/services/persy/src/backend.rs
    functionUses: 0
    functionsReached:
    - clone
    - Ok
    - PersyWriter::new
    - build_abs_path
    linkageType: ''
    returnType: Result
    signature: 'fn write(&self, _ctx: &OperationContext, path: &str, _: OpWrite) ->
      Result<Self::Writer>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/core/services/persy/src/backend.rs:216,1
    - Dst: oio::OneShotDeleter::new
      Src: /src/opendal/core/services/persy/src/backend.rs:216,1
    - Dst: PersyDeleter::new
      Src: /src/opendal/core/services/persy/src/backend.rs:216,1
    - Dst: clone
      Src: /src/opendal/core/services/persy/src/backend.rs:217,1
    - Dst: clone
      Src: /src/opendal/core/services/persy/src/backend.rs:218,1
    - Dst: Ok
      Src: /src/opendal/core/services/persy/src/backend.rs:222,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 1
    argNames:
    - _ctx
    argTypes:
    - '&OperationContext'
    constantsTouched: []
    func_position:
      end: 223
      start: 214
    functionDepth: 2
    functionLinenumber: 214
    functionLinenumberEnd: 223
    functionName: PersyBackend::delete
    functionSourceFile: /src/opendal/core/services/persy/src/backend.rs
    functionUses: 0
    functionsReached:
    - oio::OneShotDeleter::new
    - clone
    - Ok
    - PersyDeleter::new
    linkageType: ''
    returnType: Result
    signature: 'fn delete(&self, _ctx: &OperationContext) -> Result<Self::Deleter>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/core/services/persy/src/backend.rs:226,1
    - Dst: Error::new
      Src: /src/opendal/core/services/persy/src/backend.rs:226,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - _ctx
    - _path
    - _args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpList
    constantsTouched: []
    func_position:
      end: 230
      start: 225
    functionDepth: 36
    functionLinenumber: 225
    functionLinenumberEnd: 230
    functionName: PersyBackend::list
    functionSourceFile: /src/opendal/core/services/persy/src/backend.rs
    functionUses: 0
    functionsReached:
    - Error::new
    - Err
    linkageType: ''
    returnType: Result
    signature: 'fn list(&self, _ctx: &OperationContext, _path: &str, _args: OpList)
      -> Result<Self::Lister>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/core/services/persy/src/backend.rs:240,1
    - Dst: Error::new
      Src: /src/opendal/core/services/persy/src/backend.rs:240,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 5
    argNames:
    - _ctx
    - _from
    - _to
    - _args
    - _opts
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    - OpCopy
    - OpCopier
    constantsTouched: []
    func_position:
      end: 244
      start: 232
    functionDepth: 36
    functionLinenumber: 232
    functionLinenumberEnd: 244
    functionName: PersyBackend::copy
    functionSourceFile: /src/opendal/core/services/persy/src/backend.rs
    functionUses: 0
    functionsReached:
    - Error::new
    - Err
    linkageType: ''
    returnType: Result
    signature: 'fn copy(&self,_ctx: &OperationContext,_from: &str,_to: &str,_args:
      OpCopy,_opts: OpCopier,) -> Result<Self::Copier>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/core/services/persy/src/backend.rs:253,1
    - Dst: Error::new
      Src: /src/opendal/core/services/persy/src/backend.rs:253,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - _ctx
    - _from
    - _to
    - _args
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    - OpRename
    constantsTouched: []
    func_position:
      end: 257
      start: 246
    functionDepth: 36
    functionLinenumber: 246
    functionLinenumberEnd: 257
    functionName: PersyBackend::rename
    functionSourceFile: /src/opendal/core/services/persy/src/backend.rs
    functionUses: 0
    functionsReached:
    - Error::new
    - Err
    linkageType: ''
    returnType: Result
    signature: 'async fn rename(&self,_ctx: &OperationContext,_from: &str,_to: &str,_args:
      OpRename,) -> Result<RpRename>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/core/services/persy/src/backend.rs:265,1
    - Dst: Error::new
      Src: /src/opendal/core/services/persy/src/backend.rs:265,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - _ctx
    - _path
    - _args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpPresign
    constantsTouched: []
    func_position:
      end: 269
      start: 259
    functionDepth: 36
    functionLinenumber: 259
    functionLinenumberEnd: 269
    functionName: PersyBackend::presign
    functionSourceFile: /src/opendal/core/services/persy/src/backend.rs
    functionUses: 0
    functionsReached:
    - Error::new
    - Err
    linkageType: ''
    returnType: Result
    signature: 'async fn presign(&self,_ctx: &OperationContext,_path: &str,_args:
      OpPresign,) -> Result<RpPresign>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::debug_struct
      Src: /src/opendal/core/services/sqlite/src/config.rs:61,1
    - Dst: field
      Src: /src/opendal/core/services/sqlite/src/config.rs:61,1
    - Dst: field
      Src: /src/opendal/core/services/sqlite/src/config.rs:61,1
    - Dst: field
      Src: /src/opendal/core/services/sqlite/src/config.rs:61,1
    - Dst: field
      Src: /src/opendal/core/services/sqlite/src/config.rs:61,1
    - Dst: finish_non_exhaustive
      Src: /src/opendal/core/services/sqlite/src/config.rs:61,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 20
    argCount: 1
    argNames:
    - f
    argTypes:
    - '&mut std::fmt::Formatter<''_>'
    constantsTouched: []
    func_position:
      end: 67
      start: 60
    functionDepth: 5
    functionLinenumber: 60
    functionLinenumberEnd: 67
    functionName: SqliteConfig::fmt
    functionSourceFile: /src/opendal/core/services/sqlite/src/config.rs
    functionUses: 0
    functionsReached:
    - field
    - Result::debug_struct
    - finish_non_exhaustive
    linkageType: ''
    returnType: std::fmt::Result
    signature: 'fn fmt(&self, f: &mut std::fmt::Formatter<''_>) -> std::fmt::Result'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::options
      Src: /src/opendal/core/services/sqlite/src/config.rs:74,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/sqlite/src/config.rs:74,1
    - Dst: Result::authority
      Src: /src/opendal/core/services/sqlite/src/config.rs:76,1
    - Dst: Result::entry
      Src: /src/opendal/core/services/sqlite/src/config.rs:77,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/sqlite/src/config.rs:77,1
    - Dst: crate::Entry::or_insert_with
      Src: /src/opendal/core/services/sqlite/src/config.rs:77,1
    - Dst: Result::root
      Src: /src/opendal/core/services/sqlite/src/config.rs:81,1
    - Dst: is_empty
      Src: /src/opendal/core/services/sqlite/src/config.rs:82,1
    - Dst: split_once
      Src: /src/opendal/core/services/sqlite/src/config.rs:84,1
    - Dst: Some
      Src: /src/opendal/core/services/sqlite/src/config.rs:85,1
    - Dst: Self::is_empty
      Src: /src/opendal/core/services/sqlite/src/config.rs:89,1
    - Dst: Result::entry
      Src: /src/opendal/core/services/sqlite/src/config.rs:90,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/sqlite/src/config.rs:90,1
    - Dst: crate::Entry::or_insert_with
      Src: /src/opendal/core/services/sqlite/src/config.rs:90,1
    - Dst: Self::to_string
      Src: /src/opendal/core/services/sqlite/src/config.rs:91,1
    - Dst: Result::is_empty
      Src: /src/opendal/core/services/sqlite/src/config.rs:95,1
    - Dst: Result::insert
      Src: /src/opendal/core/services/sqlite/src/config.rs:97,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/sqlite/src/config.rs:97,1
    - Dst: Result::to_string
      Src: /src/opendal/core/services/sqlite/src/config.rs:97,1
    - Dst: Self::from_iter
      Src: /src/opendal/core/services/sqlite/src/config.rs:101,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 57
    argCount: 1
    argNames:
    - uri
    argTypes:
    - '&opendal_core::OperatorUri'
    constantsTouched: []
    func_position:
      end: 102
      start: 73
    functionDepth: 35
    functionLinenumber: 73
    functionLinenumberEnd: 102
    functionName: SqliteConfig::from_uri
    functionSourceFile: /src/opendal/core/services/sqlite/src/config.rs
    functionUses: 1
    functionsReached:
    - Result::clone
    - Self::from_iter
    - split_once
    - Result::to_string
    - Result::entry
    - Self::to_string
    - crate::Entry::or_insert_with
    - Result::insert
    - is_empty
    - Some
    - Self::is_empty
    - Result::is_empty
    - '&str::to_string'
    - Result::root
    - Result::authority
    - Result::options
    linkageType: ''
    returnType: opendal_core::Result
    signature: 'fn from_uri(uri: &opendal_core::OperatorUri) -> opendal_core::Result<Self>'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 106
      start: 104
    functionDepth: 0
    functionLinenumber: 104
    functionLinenumberEnd: 106
    functionName: SqliteConfig::into_builder
    functionSourceFile: /src/opendal/core/services/sqlite/src/config.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Self::Builder
    signature: fn into_builder(self) -> Self::Builder
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - core
    - root
    argTypes:
    - std::sync::Arc<SqliteCore>
    - String
    constantsTouched: []
    func_position:
      end: 30
      start: 28
    functionDepth: 0
    functionLinenumber: 28
    functionLinenumberEnd: 30
    functionName: SqliteDeleter::new
    functionSourceFile: /src/opendal/core/services/sqlite/src/deleter.rs
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(core: std::sync::Arc<SqliteCore>, root: String) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: opendal_core::raw::build_abs_path
      Src: /src/opendal/core/services/sqlite/src/deleter.rs:35,1
    - Dst: delete
      Src: /src/opendal/core/services/sqlite/src/deleter.rs:36,1
    - Dst: Ok
      Src: /src/opendal/core/services/sqlite/src/deleter.rs:37,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 2
    argNames:
    - path
    argTypes:
    - String
    - OpDelete
    constantsTouched: []
    func_position:
      end: 38
      start: 34
    functionDepth: 32
    functionLinenumber: 34
    functionLinenumberEnd: 38
    functionName: SqliteDeleter::delete_once
    functionSourceFile: /src/opendal/core/services/sqlite/src/deleter.rs
    functionUses: 0
    functionsReached:
    - opendal_core::raw::build_abs_path
    - Ok
    - delete
    linkageType: ''
    returnType: opendal_core::Result
    signature: 'async fn delete_once(&self, path: String, _: OpDelete) -> opendal_core::Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: to_string
      Src: /src/opendal/core/services/sqlite/src/reader.rs:33,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - backend
    - path
    argTypes:
    - SqliteBackend
    - '&str'
    - OpRead
    constantsTouched: []
    func_position:
      end: 35
      start: 30
    functionDepth: 2
    functionLinenumber: 30
    functionLinenumberEnd: 35
    functionName: SqliteReader::new
    functionSourceFile: /src/opendal/core/services/sqlite/src/reader.rs
    functionUses: 1
    functionsReached:
    - to_string
    linkageType: ''
    returnType: Self
    signature: 'pub(super) fn new(backend: SqliteBackend, path: &str, _: OpRead) ->
      Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: as_str
      Src: /src/opendal/core/services/sqlite/src/reader.rs:41,1
    - Dst: build_abs_path
      Src: /src/opendal/core/services/sqlite/src/reader.rs:42,1
    - Dst: (Vec::is_full
      Src: /src/opendal/core/services/sqlite/src/reader.rs:44,1
    - Dst: get
      Src: /src/opendal/core/services/sqlite/src/reader.rs:46,1
    - Dst: Result::len
      Src: /src/opendal/core/services/sqlite/src/reader.rs:48,1
    - Dst: Err
      Src: /src/opendal/core/services/sqlite/src/reader.rs:51,1
    - Dst: Error::new
      Src: /src/opendal/core/services/sqlite/src/reader.rs:51,1
    - Dst: get_length
      Src: /src/opendal/core/services/sqlite/src/reader.rs:55,1
    - Dst: Err
      Src: /src/opendal/core/services/sqlite/src/reader.rs:57,1
    - Dst: Error::new
      Src: /src/opendal/core/services/sqlite/src/reader.rs:57,1
    - Dst: (Vec::to_content_range
      Src: /src/opendal/core/services/sqlite/src/reader.rs:59,1
    - Dst: Result::is_empty
      Src: /src/opendal/core/services/sqlite/src/reader.rs:61,1
    - Dst: Buffer::new
      Src: /src/opendal/core/services/sqlite/src/reader.rs:62,1
    - Dst: try_into
      Src: /src/opendal/core/services/sqlite/src/reader.rs:64,1
    - Dst: map_err
      Src: /src/opendal/core/services/sqlite/src/reader.rs:64,1
    - Dst: Error::new
      Src: /src/opendal/core/services/sqlite/src/reader.rs:65,1
    - Dst: Self::set_source
      Src: /src/opendal/core/services/sqlite/src/reader.rs:65,1
    - Dst: Result::len
      Src: /src/opendal/core/services/sqlite/src/reader.rs:68,1
    - Dst: usize::try_into
      Src: /src/opendal/core/services/sqlite/src/reader.rs:68,1
    - Dst: map_err
      Src: /src/opendal/core/services/sqlite/src/reader.rs:68,1
    - Dst: Error::new
      Src: /src/opendal/core/services/sqlite/src/reader.rs:69,1
    - Dst: Self::set_source
      Src: /src/opendal/core/services/sqlite/src/reader.rs:69,1
    - Dst: get_range
      Src: /src/opendal/core/services/sqlite/src/reader.rs:72,1
    - Dst: Some
      Src: /src/opendal/core/services/sqlite/src/reader.rs:72,1
    - Dst: Err
      Src: /src/opendal/core/services/sqlite/src/reader.rs:75,1
    - Dst: Error::new
      Src: /src/opendal/core/services/sqlite/src/reader.rs:75,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/sqlite/src/reader.rs:82,1
    - Dst: Self::with_content_length
      Src: /src/opendal/core/services/sqlite/src/reader.rs:82,1
    - Dst: Ok
      Src: /src/opendal/core/services/sqlite/src/reader.rs:83,1
    - Dst: RpRead::new
      Src: /src/opendal/core/services/sqlite/src/reader.rs:84,1
    - Dst: Box::new
      Src: /src/opendal/core/services/sqlite/src/reader.rs:85,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 87
    argCount: 1
    argNames:
    - range
    argTypes:
    - BytesRange
    constantsTouched: []
    func_position:
      end: 87
      start: 39
    functionDepth: 36
    functionLinenumber: 39
    functionLinenumberEnd: 87
    functionName: SqliteReader::open
    functionSourceFile: /src/opendal/core/services/sqlite/src/reader.rs
    functionUses: 0
    functionsReached:
    - Buffer::new
    - get_range
    - Box::new
    - Result::is_empty
    - Result::len
    - map_err
    - get
    - Ok
    - (Vec::is_full
    - get_length
    - as_str
    - usize::try_into
    - RpRead::new
    - try_into
    - Metadata::new
    - build_abs_path
    - Some
    - Self::set_source
    - Self::with_content_length
    - Err
    - Error::new
    - (Vec::to_content_range
    linkageType: ''
    returnType: Result
    signature: 'async fn open(&self, range: BytesRange) -> Result<(RpRead, Box<dyn
      oio::ReadStreamDyn>)>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: get_or_try_init
      Src: /src/opendal/core/services/sqlite/src/core.rs:39,1
    - Dst: SqlitePool::connect_with
      Src: /src/opendal/core/services/sqlite/src/core.rs:41,1
    - Dst: clone
      Src: /src/opendal/core/services/sqlite/src/core.rs:41,1
    - Dst: map_err
      Src: /src/opendal/core/services/sqlite/src/core.rs:41,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 46
      start: 38
    functionDepth: 2
    functionLinenumber: 38
    functionLinenumberEnd: 46
    functionName: SqliteCore::get_client
    functionSourceFile: /src/opendal/core/services/sqlite/src/core.rs
    functionUses: 6
    functionsReached:
    - get_or_try_init
    - map_err
    - clone
    - SqlitePool::connect_with
    linkageType: ''
    returnType: Result
    signature: pub async fn get_client(&self) -> Result<&SqlitePool>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: SqliteCore::get_client
      Src: /src/opendal/core/services/sqlite/src/core.rs:49,1
    - Dst: sqlx::query_scalar
      Src: /src/opendal/core/services/sqlite/src/core.rs:60,1
    - Dst: bind
      Src: /src/opendal/core/services/sqlite/src/core.rs:60,1
    - Dst: fetch_optional
      Src: /src/opendal/core/services/sqlite/src/core.rs:60,1
    - Dst: map_err
      Src: /src/opendal/core/services/sqlite/src/core.rs:60,1
    - Dst: Ok
      Src: /src/opendal/core/services/sqlite/src/core.rs:69,1
    - Dst: Vec::map
      Src: /src/opendal/core/services/sqlite/src/core.rs:69,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 1
    argNames:
    - path
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 70
      start: 48
    functionDepth: 3
    functionLinenumber: 48
    functionLinenumberEnd: 70
    functionName: SqliteCore::get
    functionSourceFile: /src/opendal/core/services/sqlite/src/core.rs
    functionUses: 0
    functionsReached:
    - SqliteCore::get_client
    - map_err
    - Ok
    - fetch_optional
    - sqlx::query_scalar
    - bind
    - Vec::map
    linkageType: ''
    returnType: Result
    signature: 'pub async fn get(&self, path: &str) -> Result<Option<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: SqliteCore::get_client
      Src: /src/opendal/core/services/sqlite/src/core.rs:73,1
    - Dst: sqlx::query_scalar
      Src: /src/opendal/core/services/sqlite/src/core.rs:75,1
    - Dst: bind
      Src: /src/opendal/core/services/sqlite/src/core.rs:75,1
    - Dst: fetch_optional
      Src: /src/opendal/core/services/sqlite/src/core.rs:75,1
    - Dst: map_err
      Src: /src/opendal/core/services/sqlite/src/core.rs:75,1
    - Dst: Vec::map
      Src: /src/opendal/core/services/sqlite/src/core.rs:84,1
    - Dst: Result::try_into
      Src: /src/opendal/core/services/sqlite/src/core.rs:86,1
    - Dst: map_err
      Src: /src/opendal/core/services/sqlite/src/core.rs:86,1
    - Dst: Error::new
      Src: /src/opendal/core/services/sqlite/src/core.rs:87,1
    - Dst: Self::set_source
      Src: /src/opendal/core/services/sqlite/src/core.rs:87,1
    - Dst: Result::transpose
      Src: /src/opendal/core/services/sqlite/src/core.rs:84,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 27
    argCount: 1
    argNames:
    - path
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 92
      start: 72
    functionDepth: 36
    functionLinenumber: 72
    functionLinenumberEnd: 92
    functionName: SqliteCore::get_length
    functionSourceFile: /src/opendal/core/services/sqlite/src/core.rs
    functionUses: 0
    functionsReached:
    - SqliteCore::get_client
    - map_err
    - fetch_optional
    - sqlx::query_scalar
    - bind
    - Error::new
    - Result::try_into
    - Self::set_source
    - Vec::map
    - Result::transpose
    linkageType: ''
    returnType: Result
    signature: 'pub async fn get_length(&self, path: &str) -> Result<Option<usize>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: SqliteCore::get_client
      Src: /src/opendal/core/services/sqlite/src/core.rs:95,1
    - Dst: sqlx::query_scalar
      Src: /src/opendal/core/services/sqlite/src/core.rs:97,1
    - Dst: bind
      Src: /src/opendal/core/services/sqlite/src/core.rs:97,1
    - Dst: fetch_one
      Src: /src/opendal/core/services/sqlite/src/core.rs:97,1
    - Dst: map_err
      Src: /src/opendal/core/services/sqlite/src/core.rs:97,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 1
    argNames:
    - path
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 105
      start: 94
    functionDepth: 3
    functionLinenumber: 94
    functionLinenumberEnd: 105
    functionName: SqliteCore::count_under
    functionSourceFile: /src/opendal/core/services/sqlite/src/core.rs
    functionUses: 0
    functionsReached:
    - SqliteCore::get_client
    - map_err
    - sqlx::query_scalar
    - bind
    - fetch_one
    linkageType: ''
    returnType: Result
    signature: 'pub async fn count_under(&self, path: &str) -> Result<i64>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: SqliteCore::get_client
      Src: /src/opendal/core/services/sqlite/src/core.rs:113,1
    - Dst: Result::is_some_and
      Src: /src/opendal/core/services/sqlite/src/core.rs:114,1
    - Dst: Err
      Src: /src/opendal/core/services/sqlite/src/core.rs:115,1
    - Dst: Error::new
      Src: /src/opendal/core/services/sqlite/src/core.rs:115,1
    - Dst: checked_add
      Src: /src/opendal/core/services/sqlite/src/core.rs:121,1
    - Dst: ok_or_else
      Src: /src/opendal/core/services/sqlite/src/core.rs:121,1
    - Dst: Error::new
      Src: /src/opendal/core/services/sqlite/src/core.rs:122,1
    - Dst: try_into
      Src: /src/opendal/core/services/sqlite/src/core.rs:127,1
    - Dst: map_err
      Src: /src/opendal/core/services/sqlite/src/core.rs:127,1
    - Dst: Error::new
      Src: /src/opendal/core/services/sqlite/src/core.rs:128,1
    - Dst: Self::set_source
      Src: /src/opendal/core/services/sqlite/src/core.rs:128,1
    - Dst: Result::try_into
      Src: /src/opendal/core/services/sqlite/src/core.rs:136,1
    - Dst: map_err
      Src: /src/opendal/core/services/sqlite/src/core.rs:136,1
    - Dst: Error::new
      Src: /src/opendal/core/services/sqlite/src/core.rs:137,1
    - Dst: Self::set_source
      Src: /src/opendal/core/services/sqlite/src/core.rs:137,1
    - Dst: sqlx::query_as
      Src: /src/opendal/core/services/sqlite/src/core.rs:143,1
    - Dst: bind
      Src: /src/opendal/core/services/sqlite/src/core.rs:143,1
    - Dst: bind
      Src: /src/opendal/core/services/sqlite/src/core.rs:143,1
    - Dst: bind
      Src: /src/opendal/core/services/sqlite/src/core.rs:143,1
    - Dst: fetch_optional
      Src: /src/opendal/core/services/sqlite/src/core.rs:143,1
    - Dst: sqlx::query_as
      Src: /src/opendal/core/services/sqlite/src/core.rs:154,1
    - Dst: bind
      Src: /src/opendal/core/services/sqlite/src/core.rs:154,1
    - Dst: bind
      Src: /src/opendal/core/services/sqlite/src/core.rs:154,1
    - Dst: fetch_optional
      Src: /src/opendal/core/services/sqlite/src/core.rs:154,1
    - Dst: Vec::map_err
      Src: /src/opendal/core/services/sqlite/src/core.rs:164,1
    - Dst: Ok
      Src: /src/opendal/core/services/sqlite/src/core.rs:166,1
    - Dst: Vec::map
      Src: /src/opendal/core/services/sqlite/src/core.rs:166,1
    - Dst: Buffer::from
      Src: /src/opendal/core/services/sqlite/src/core.rs:166,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 72
    argCount: 3
    argNames:
    - path
    - start
    - limit
    argTypes:
    - '&str'
    - isize
    - Option<isize>
    constantsTouched: []
    func_position:
      end: 167
      start: 107
    functionDepth: 36
    functionLinenumber: 107
    functionLinenumberEnd: 167
    functionName: SqliteCore::get_range
    functionSourceFile: /src/opendal/core/services/sqlite/src/core.rs
    functionUses: 0
    functionsReached:
    - SqliteCore::get_client
    - Result::is_some_and
    - try_into
    - map_err
    - Ok
    - checked_add
    - Error::new
    - Err
    - bind
    - fetch_optional
    - Buffer::from
    - Vec::map_err
    - Result::try_into
    - Self::set_source
    - Vec::map
    - sqlx::query_as
    - ok_or_else
    linkageType: ''
    returnType: Result
    signature: 'pub async fn get_range(&self,path: &str,start: isize,limit: Option<isize>,)
      -> Result<Option<(Buffer, u64)>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: SqliteCore::get_client
      Src: /src/opendal/core/services/sqlite/src/core.rs:170,1
    - Dst: sqlx::query
      Src: /src/opendal/core/services/sqlite/src/core.rs:172,1
    - Dst: Result::bind
      Src: /src/opendal/core/services/sqlite/src/core.rs:172,1
    - Dst: bind
      Src: /src/opendal/core/services/sqlite/src/core.rs:172,1
    - Dst: Vec::to_vec
      Src: /src/opendal/core/services/sqlite/src/core.rs:177,1
    - Dst: execute
      Src: /src/opendal/core/services/sqlite/src/core.rs:172,1
    - Dst: map_err
      Src: /src/opendal/core/services/sqlite/src/core.rs:172,1
    - Dst: Ok
      Src: /src/opendal/core/services/sqlite/src/core.rs:182,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 21
    argCount: 2
    argNames:
    - path
    - value
    argTypes:
    - '&str'
    - Buffer
    constantsTouched: []
    func_position:
      end: 183
      start: 169
    functionDepth: 36
    functionLinenumber: 169
    functionLinenumberEnd: 183
    functionName: SqliteCore::set
    functionSourceFile: /src/opendal/core/services/sqlite/src/core.rs
    functionUses: 0
    functionsReached:
    - SqliteCore::get_client
    - Result::bind
    - map_err
    - Ok
    - sqlx::query
    - bind
    - Vec::to_vec
    - execute
    linkageType: ''
    returnType: Result
    signature: 'pub async fn set(&self, path: &str, value: Buffer) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: SqliteCore::get_client
      Src: /src/opendal/core/services/sqlite/src/core.rs:186,1
    - Dst: sqlx::query
      Src: /src/opendal/core/services/sqlite/src/core.rs:188,1
    - Dst: Result::bind
      Src: /src/opendal/core/services/sqlite/src/core.rs:188,1
    - Dst: execute
      Src: /src/opendal/core/services/sqlite/src/core.rs:188,1
    - Dst: map_err
      Src: /src/opendal/core/services/sqlite/src/core.rs:188,1
    - Dst: Ok
      Src: /src/opendal/core/services/sqlite/src/core.rs:197,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 1
    argNames:
    - path
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 198
      start: 185
    functionDepth: 36
    functionLinenumber: 185
    functionLinenumberEnd: 198
    functionName: SqliteCore::delete
    functionSourceFile: /src/opendal/core/services/sqlite/src/core.rs
    functionUses: 0
    functionsReached:
    - SqliteCore::get_client
    - Result::bind
    - map_err
    - Ok
    - sqlx::query
    - execute
    linkageType: ''
    returnType: Result
    signature: 'pub async fn delete(&self, path: &str) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: to_string
      Src: /src/opendal/core/services/sqlite/src/writer.rs:33,1
    - Dst: oio::QueueBuf::new
      Src: /src/opendal/core/services/sqlite/src/writer.rs:34,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - core
    - path
    argTypes:
    - std::sync::Arc<SqliteCore>
    - '&str'
    constantsTouched: []
    func_position:
      end: 36
      start: 30
    functionDepth: 4
    functionLinenumber: 30
    functionLinenumberEnd: 36
    functionName: SqliteWriter::new
    functionSourceFile: /src/opendal/core/services/sqlite/src/writer.rs
    functionUses: 1
    functionsReached:
    - to_string
    - oio::QueueBuf::new
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(core: std::sync::Arc<SqliteCore>, path: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: push
      Src: /src/opendal/core/services/sqlite/src/writer.rs:41,1
    - Dst: Ok
      Src: /src/opendal/core/services/sqlite/src/writer.rs:42,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - bs
    argTypes:
    - Buffer
    constantsTouched: []
    func_position:
      end: 43
      start: 40
    functionDepth: 5
    functionLinenumber: 40
    functionLinenumberEnd: 43
    functionName: SqliteWriter::write
    functionSourceFile: /src/opendal/core/services/sqlite/src/writer.rs
    functionUses: 0
    functionsReached:
    - Ok
    - push
    linkageType: ''
    returnType: Result
    signature: 'async fn write(&mut self, bs: Buffer) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: clone
      Src: /src/opendal/core/services/sqlite/src/writer.rs:46,1
    - Dst: collect
      Src: /src/opendal/core/services/sqlite/src/writer.rs:46,1
    - Dst: io::Result::len
      Src: /src/opendal/core/services/sqlite/src/writer.rs:47,1
    - Dst: set
      Src: /src/opendal/core/services/sqlite/src/writer.rs:48,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/sqlite/src/writer.rs:50,1
    - Dst: EntryMode::from_path
      Src: /src/opendal/core/services/sqlite/src/writer.rs:50,1
    - Dst: Self::with_content_length
      Src: /src/opendal/core/services/sqlite/src/writer.rs:50,1
    - Dst: Ok
      Src: /src/opendal/core/services/sqlite/src/writer.rs:51,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 23
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 52
      start: 45
    functionDepth: 36
    functionLinenumber: 45
    functionLinenumberEnd: 52
    functionName: SqliteWriter::close
    functionSourceFile: /src/opendal/core/services/sqlite/src/writer.rs
    functionUses: 0
    functionsReached:
    - collect
    - Metadata::new
    - Ok
    - io::Result::len
    - set
    - Self::with_content_length
    - clone
    - EntryMode::from_path
    linkageType: ''
    returnType: Result
    signature: async fn close(&mut self) -> Result<Metadata>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: clear
      Src: /src/opendal/core/services/sqlite/src/writer.rs:55,1
    - Dst: Ok
      Src: /src/opendal/core/services/sqlite/src/writer.rs:56,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 57
      start: 54
    functionDepth: 2
    functionLinenumber: 54
    functionLinenumberEnd: 57
    functionName: SqliteWriter::abort
    functionSourceFile: /src/opendal/core/services/sqlite/src/writer.rs
    functionUses: 0
    functionsReached:
    - clear
    - Ok
    linkageType: ''
    returnType: Result
    signature: async fn abort(&mut self) -> Result<()>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: register::<Sqlite>
      Src: /src/opendal/core/services/sqlite/src/lib.rs:23,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - registry
    argTypes:
    - '&opendal_core::OperatorRegistry'
    constantsTouched: []
    func_position:
      end: 24
      start: 22
    functionDepth: 0
    functionLinenumber: 22
    functionLinenumberEnd: 24
    functionName: register_sqlite_service
    functionSourceFile: /src/opendal/core/services/sqlite/src/lib.rs
    functionUses: 1
    functionsReached:
    - register::<Sqlite>
    linkageType: ''
    returnType: void
    signature: 'pub fn register_sqlite_service(registry: &opendal_core::OperatorRegistry)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::is_empty
      Src: /src/opendal/core/services/sqlite/src/backend.rs:55,1
    - Dst: Some
      Src: /src/opendal/core/services/sqlite/src/backend.rs:56,1
    - Dst: Result::to_string
      Src: /src/opendal/core/services/sqlite/src/backend.rs:56,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 1
    argNames:
    - v
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 59
      start: 54
    functionDepth: 4
    functionLinenumber: 54
    functionLinenumberEnd: 59
    functionName: SqliteBuilder::connection_string
    functionSourceFile: /src/opendal/core/services/sqlite/src/backend.rs
    functionUses: 0
    functionsReached:
    - Result::is_empty
    - Result::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn connection_string(mut self, v: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::is_empty
      Src: /src/opendal/core/services/sqlite/src/backend.rs:65,1
    - Dst: Some
      Src: /src/opendal/core/services/sqlite/src/backend.rs:68,1
    - Dst: Result::to_string
      Src: /src/opendal/core/services/sqlite/src/backend.rs:68,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - root
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 72
      start: 64
    functionDepth: 4
    functionLinenumber: 64
    functionLinenumberEnd: 72
    functionName: SqliteBuilder::root
    functionSourceFile: /src/opendal/core/services/sqlite/src/backend.rs
    functionUses: 0
    functionsReached:
    - Result::is_empty
    - Result::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn root(mut self, root: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self::is_empty
      Src: /src/opendal/core/services/sqlite/src/backend.rs:76,1
    - Dst: Some
      Src: /src/opendal/core/services/sqlite/src/backend.rs:77,1
    - Dst: Self::to_string
      Src: /src/opendal/core/services/sqlite/src/backend.rs:77,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 1
    argNames:
    - table
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 80
      start: 75
    functionDepth: 4
    functionLinenumber: 75
    functionLinenumberEnd: 80
    functionName: SqliteBuilder::table
    functionSourceFile: /src/opendal/core/services/sqlite/src/backend.rs
    functionUses: 0
    functionsReached:
    - Self::is_empty
    - Self::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn table(mut self, table: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self::is_empty
      Src: /src/opendal/core/services/sqlite/src/backend.rs:86,1
    - Dst: Some
      Src: /src/opendal/core/services/sqlite/src/backend.rs:87,1
    - Dst: Self::to_string
      Src: /src/opendal/core/services/sqlite/src/backend.rs:87,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 1
    argNames:
    - key_field
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 90
      start: 85
    functionDepth: 4
    functionLinenumber: 85
    functionLinenumberEnd: 90
    functionName: SqliteBuilder::key_field
    functionSourceFile: /src/opendal/core/services/sqlite/src/backend.rs
    functionUses: 0
    functionsReached:
    - Self::is_empty
    - Self::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn key_field(mut self, key_field: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self::is_empty
      Src: /src/opendal/core/services/sqlite/src/backend.rs:96,1
    - Dst: Some
      Src: /src/opendal/core/services/sqlite/src/backend.rs:97,1
    - Dst: Self::to_string
      Src: /src/opendal/core/services/sqlite/src/backend.rs:97,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 1
    argNames:
    - value_field
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 100
      start: 95
    functionDepth: 4
    functionLinenumber: 95
    functionLinenumberEnd: 100
    functionName: SqliteBuilder::value_field
    functionSourceFile: /src/opendal/core/services/sqlite/src/backend.rs
    functionUses: 0
    functionsReached:
    - Self::is_empty
    - Self::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn value_field(mut self, value_field: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/core/services/sqlite/src/backend.rs:110,1
    - Dst: Error::new
      Src: /src/opendal/core/services/sqlite/src/backend.rs:110,1
    - Dst: Self::with_context
      Src: /src/opendal/core/services/sqlite/src/backend.rs:110,1
    - Dst: SqliteConnectOptions::from_str
      Src: /src/opendal/core/services/sqlite/src/backend.rs:118,1
    - Dst: Result::map_err
      Src: /src/opendal/core/services/sqlite/src/backend.rs:118,1
    - Dst: Error::new
      Src: /src/opendal/core/services/sqlite/src/backend.rs:119,1
    - Dst: Self::with_context
      Src: /src/opendal/core/services/sqlite/src/backend.rs:119,1
    - Dst: Self::set_source
      Src: /src/opendal/core/services/sqlite/src/backend.rs:119,1
    - Dst: Err
      Src: /src/opendal/core/services/sqlite/src/backend.rs:127,1
    - Dst: Error::new
      Src: /src/opendal/core/services/sqlite/src/backend.rs:127,1
    - Dst: Self::with_context
      Src: /src/opendal/core/services/sqlite/src/backend.rs:127,1
    - Dst: unwrap_or_else
      Src: /src/opendal/core/services/sqlite/src/backend.rs:132,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/sqlite/src/backend.rs:132,1
    - Dst: unwrap_or_else
      Src: /src/opendal/core/services/sqlite/src/backend.rs:134,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/sqlite/src/backend.rs:137,1
    - Dst: normalize_root
      Src: /src/opendal/core/services/sqlite/src/backend.rs:139,1
    - Dst: as_deref
      Src: /src/opendal/core/services/sqlite/src/backend.rs:139,1
    - Dst: unwrap_or
      Src: /src/opendal/core/services/sqlite/src/backend.rs:139,1
    - Dst: Ok
      Src: /src/opendal/core/services/sqlite/src/backend.rs:141,1
    - Dst: SqliteBackend::new
      Src: /src/opendal/core/services/sqlite/src/backend.rs:141,1
    - Dst: OnceCell::new
      Src: /src/opendal/core/services/sqlite/src/backend.rs:142,1
    - Dst: Self::with_normalized_root
      Src: /src/opendal/core/services/sqlite/src/backend.rs:141,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 56
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 149
      start: 106
    functionDepth: 36
    functionLinenumber: 106
    functionLinenumberEnd: 149
    functionName: SqliteBuilder::build
    functionSourceFile: /src/opendal/core/services/sqlite/src/backend.rs
    functionUses: 0
    functionsReached:
    - Result::map_err
    - Ok
    - Self::with_normalized_root
    - as_deref
    - normalize_root
    - Error::new
    - Err
    - SqliteConnectOptions::from_str
    - '&str::to_string'
    - OnceCell::new
    - Self::set_source
    - Self::with_context
    - SqliteBackend::new
    - unwrap_or_else
    - unwrap_or
    linkageType: ''
    returnType: Result
    signature: fn build(self) -> Result<impl Service>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Error::new
      Src: /src/opendal/core/services/sqlite/src/backend.rs:164,1
    - Dst: Self::set_source
      Src: /src/opendal/core/services/sqlite/src/backend.rs:164,1
    - Dst: Self::set_temporary
      Src: /src/opendal/core/services/sqlite/src/backend.rs:166,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 1
    argNames:
    - err
    argTypes:
    - sqlx::Error
    constantsTouched: []
    func_position:
      end: 169
      start: 152
    functionDepth: 36
    functionLinenumber: 152
    functionLinenumberEnd: 169
    functionName: parse_sqlite_error
    functionSourceFile: /src/opendal/core/services/sqlite/src/backend.rs
    functionUses: 0
    functionsReached:
    - Self::set_source
    - Self::set_temporary
    - Error::new
    linkageType: ''
    returnType: Error
    signature: 'pub fn parse_sqlite_error(err: sqlx::Error) -> Error'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: ServiceInfo::new
      Src: /src/opendal/core/services/sqlite/src/backend.rs:182,1
    - Dst: Default::default
      Src: /src/opendal/core/services/sqlite/src/backend.rs:191,1
    - Dst: Arc::new
      Src: /src/opendal/core/services/sqlite/src/backend.rs:195,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/sqlite/src/backend.rs:196,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 1
    argNames:
    - core
    argTypes:
    - SqliteCore
    constantsTouched: []
    func_position:
      end: 200
      start: 181
    functionDepth: 33
    functionLinenumber: 181
    functionLinenumberEnd: 200
    functionName: SqliteBackend::new
    functionSourceFile: /src/opendal/core/services/sqlite/src/backend.rs
    functionUses: 2
    functionsReached:
    - Arc::new
    - ServiceInfo::new
    - '&str::to_string'
    - Default::default
    linkageType: ''
    returnType: Self
    signature: 'fn new(core: SqliteCore) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: with_root
      Src: /src/opendal/core/services/sqlite/src/backend.rs:203,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 1
    argNames:
    - root
    argTypes:
    - String
    constantsTouched: []
    func_position:
      end: 206
      start: 202
    functionDepth: 33
    functionLinenumber: 202
    functionLinenumberEnd: 206
    functionName: SqliteBackend::with_normalized_root
    functionSourceFile: /src/opendal/core/services/sqlite/src/backend.rs
    functionUses: 0
    functionsReached:
    - with_root
    linkageType: ''
    returnType: Self
    signature: 'fn with_normalized_root(mut self, root: String) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: clone
      Src: /src/opendal/core/services/sqlite/src/backend.rs:217,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 218
      start: 216
    functionDepth: 2
    functionLinenumber: 216
    functionLinenumberEnd: 218
    functionName: SqliteBackend::info
    functionSourceFile: /src/opendal/core/services/sqlite/src/backend.rs
    functionUses: 1
    functionsReached:
    - clone
    linkageType: ''
    returnType: ServiceInfo
    signature: fn info(&self) -> ServiceInfo
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 222
      start: 220
    functionDepth: 0
    functionLinenumber: 220
    functionLinenumberEnd: 222
    functionName: SqliteBackend::capability
    functionSourceFile: /src/opendal/core/services/sqlite/src/backend.rs
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: Capability
    signature: fn capability(&self) -> Capability
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/sqlite/src/backend.rs:225,1
    - Dst: build_abs_path
      Src: /src/opendal/core/services/sqlite/src/backend.rs:227,1
    - Dst: Ok
      Src: /src/opendal/core/services/sqlite/src/backend.rs:228,1
    - Dst: RpStat::new
      Src: /src/opendal/core/services/sqlite/src/backend.rs:228,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/sqlite/src/backend.rs:228,1
    - Dst: get_length
      Src: /src/opendal/core/services/sqlite/src/backend.rs:230,1
    - Dst: Ok
      Src: /src/opendal/core/services/sqlite/src/backend.rs:232,1
    - Dst: RpStat::new
      Src: /src/opendal/core/services/sqlite/src/backend.rs:232,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/sqlite/src/backend.rs:233,1
    - Dst: EntryMode::from_path
      Src: /src/opendal/core/services/sqlite/src/backend.rs:233,1
    - Dst: Self::with_content_length
      Src: /src/opendal/core/services/sqlite/src/backend.rs:233,1
    - Dst: ends_with
      Src: /src/opendal/core/services/sqlite/src/backend.rs:237,1
    - Dst: clone
      Src: /src/opendal/core/services/sqlite/src/backend.rs:238,1
    - Dst: count_under
      Src: /src/opendal/core/services/sqlite/src/backend.rs:242,1
    - Dst: Ok
      Src: /src/opendal/core/services/sqlite/src/backend.rs:246,1
    - Dst: RpStat::new
      Src: /src/opendal/core/services/sqlite/src/backend.rs:246,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/sqlite/src/backend.rs:246,1
    - Dst: Err
      Src: /src/opendal/core/services/sqlite/src/backend.rs:248,1
    - Dst: Error::new
      Src: /src/opendal/core/services/sqlite/src/backend.rs:248,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 47
    argCount: 3
    argNames:
    - _ctx
    - path
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpStat
    constantsTouched: []
    func_position:
      end: 253
      start: 224
    functionDepth: 35
    functionLinenumber: 224
    functionLinenumberEnd: 253
    functionName: SqliteBackend::stat
    functionSourceFile: /src/opendal/core/services/sqlite/src/backend.rs
    functionUses: 7
    functionsReached:
    - Metadata::new
    - Ok
    - Self::with_content_length
    - get_length
    - RpStat::new
    - EntryMode::from_path
    - build_abs_path
    - ends_with
    - clone
    - count_under
    - Err
    - Error::new
    linkageType: ''
    returnType: Result
    signature: 'async fn stat(&self, _ctx: &OperationContext, path: &str, _: OpStat)
      -> Result<RpStat>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/core/services/sqlite/src/backend.rs:256,1
    - Dst: oio::StreamReader::new
      Src: /src/opendal/core/services/sqlite/src/backend.rs:256,1
    - Dst: SqliteReader::new
      Src: /src/opendal/core/services/sqlite/src/backend.rs:256,1
    - Dst: SqliteBackend::clone
      Src: /src/opendal/core/services/sqlite/src/backend.rs:257,1
    - Dst: Ok
      Src: /src/opendal/core/services/sqlite/src/backend.rs:263,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - _ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpRead
    constantsTouched: []
    func_position:
      end: 264
      start: 254
    functionDepth: 3
    functionLinenumber: 254
    functionLinenumberEnd: 264
    functionName: SqliteBackend::read
    functionSourceFile: /src/opendal/core/services/sqlite/src/backend.rs
    functionUses: 6
    functionsReached:
    - oio::StreamReader::new
    - SqliteBackend::clone
    - SqliteReader::new
    - Ok
    linkageType: ''
    returnType: Result
    signature: 'fn read(&self, _ctx: &OperationContext, path: &str, args: OpRead)
      -> Result<Self::Reader>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/sqlite/src/backend.rs:268,1
    - Dst: Ok
      Src: /src/opendal/core/services/sqlite/src/backend.rs:269,1
    - Dst: SqliteWriter::new
      Src: /src/opendal/core/services/sqlite/src/backend.rs:269,1
    - Dst: clone
      Src: /src/opendal/core/services/sqlite/src/backend.rs:269,1
    - Dst: Ok
      Src: /src/opendal/core/services/sqlite/src/backend.rs:272,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 3
    argNames:
    - _ctx
    - path
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpWrite
    constantsTouched: []
    func_position:
      end: 273
      start: 266
    functionDepth: 5
    functionLinenumber: 266
    functionLinenumberEnd: 273
    functionName: SqliteBackend::write
    functionSourceFile: /src/opendal/core/services/sqlite/src/backend.rs
    functionUses: 6
    functionsReached:
    - SqliteWriter::new
    - Ok
    - clone
    - build_abs_path
    linkageType: ''
    returnType: Result
    signature: 'fn write(&self, _ctx: &OperationContext, path: &str, _: OpWrite) ->
      Result<Self::Writer>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/core/services/sqlite/src/backend.rs:277,1
    - Dst: oio::OneShotDeleter::new
      Src: /src/opendal/core/services/sqlite/src/backend.rs:277,1
    - Dst: SqliteDeleter::new
      Src: /src/opendal/core/services/sqlite/src/backend.rs:277,1
    - Dst: clone
      Src: /src/opendal/core/services/sqlite/src/backend.rs:278,1
    - Dst: clone
      Src: /src/opendal/core/services/sqlite/src/backend.rs:279,1
    - Dst: Ok
      Src: /src/opendal/core/services/sqlite/src/backend.rs:283,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 1
    argNames:
    - _ctx
    argTypes:
    - '&OperationContext'
    constantsTouched: []
    func_position:
      end: 284
      start: 275
    functionDepth: 2
    functionLinenumber: 275
    functionLinenumberEnd: 284
    functionName: SqliteBackend::delete
    functionSourceFile: /src/opendal/core/services/sqlite/src/backend.rs
    functionUses: 1
    functionsReached:
    - oio::OneShotDeleter::new
    - SqliteDeleter::new
    - clone
    - Ok
    linkageType: ''
    returnType: Result
    signature: 'fn delete(&self, _ctx: &OperationContext) -> Result<Self::Deleter>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/sqlite/src/backend.rs:292,1
    - Dst: ends_with
      Src: /src/opendal/core/services/sqlite/src/backend.rs:295,1
    - Dst: set
      Src: /src/opendal/core/services/sqlite/src/backend.rs:302,1
    - Dst: Buffer::new
      Src: /src/opendal/core/services/sqlite/src/backend.rs:302,1
    - Dst: Ok
      Src: /src/opendal/core/services/sqlite/src/backend.rs:304,1
    - Dst: RpCreateDir::default
      Src: /src/opendal/core/services/sqlite/src/backend.rs:304,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 3
    argNames:
    - _ctx
    - path
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpCreateDir
    constantsTouched: []
    func_position:
      end: 305
      start: 286
    functionDepth: 34
    functionLinenumber: 286
    functionLinenumberEnd: 305
    functionName: SqliteBackend::create_dir
    functionSourceFile: /src/opendal/core/services/sqlite/src/backend.rs
    functionUses: 1
    functionsReached:
    - Buffer::new
    - Ok
    - RpCreateDir::default
    - ends_with
    - set
    - build_abs_path
    linkageType: ''
    returnType: Result
    signature: 'async fn create_dir(&self,_ctx: &OperationContext,path: &str,_: OpCreateDir,)
      -> Result<RpCreateDir>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/core/services/sqlite/src/backend.rs:308,1
    - Dst: Error::new
      Src: /src/opendal/core/services/sqlite/src/backend.rs:308,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - _ctx
    - _path
    - _args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpList
    constantsTouched: []
    func_position:
      end: 312
      start: 307
    functionDepth: 36
    functionLinenumber: 307
    functionLinenumberEnd: 312
    functionName: SqliteBackend::list
    functionSourceFile: /src/opendal/core/services/sqlite/src/backend.rs
    functionUses: 2
    functionsReached:
    - Error::new
    - Err
    linkageType: ''
    returnType: Result
    signature: 'fn list(&self, _ctx: &OperationContext, _path: &str, _args: OpList)
      -> Result<Self::Lister>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/core/services/sqlite/src/backend.rs:322,1
    - Dst: Error::new
      Src: /src/opendal/core/services/sqlite/src/backend.rs:322,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 5
    argNames:
    - _ctx
    - _from
    - _to
    - _args
    - _opts
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    - OpCopy
    - OpCopier
    constantsTouched: []
    func_position:
      end: 326
      start: 314
    functionDepth: 36
    functionLinenumber: 314
    functionLinenumberEnd: 326
    functionName: SqliteBackend::copy
    functionSourceFile: /src/opendal/core/services/sqlite/src/backend.rs
    functionUses: 0
    functionsReached:
    - Error::new
    - Err
    linkageType: ''
    returnType: Result
    signature: 'fn copy(&self,_ctx: &OperationContext,_from: &str,_to: &str,_args:
      OpCopy,_opts: OpCopier,) -> Result<Self::Copier>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/core/services/sqlite/src/backend.rs:335,1
    - Dst: Error::new
      Src: /src/opendal/core/services/sqlite/src/backend.rs:335,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - _ctx
    - _from
    - _to
    - _args
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    - OpRename
    constantsTouched: []
    func_position:
      end: 339
      start: 328
    functionDepth: 36
    functionLinenumber: 328
    functionLinenumberEnd: 339
    functionName: SqliteBackend::rename
    functionSourceFile: /src/opendal/core/services/sqlite/src/backend.rs
    functionUses: 0
    functionsReached:
    - Error::new
    - Err
    linkageType: ''
    returnType: Result
    signature: 'async fn rename(&self,_ctx: &OperationContext,_from: &str,_to: &str,_args:
      OpRename,) -> Result<RpRename>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/core/services/sqlite/src/backend.rs:347,1
    - Dst: Error::new
      Src: /src/opendal/core/services/sqlite/src/backend.rs:347,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - _ctx
    - _path
    - _args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpPresign
    constantsTouched: []
    func_position:
      end: 351
      start: 341
    functionDepth: 36
    functionLinenumber: 341
    functionLinenumberEnd: 351
    functionName: SqliteBackend::presign
    functionSourceFile: /src/opendal/core/services/sqlite/src/backend.rs
    functionUses: 3
    functionsReached:
    - Error::new
    - Err
    linkageType: ''
    returnType: Result
    signature: 'async fn presign(&self,_ctx: &OperationContext,_path: &str,_args:
      OpPresign,) -> Result<RpPresign>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: SqliteConnectOptions::from_str
      Src: /src/opendal/core/services/sqlite/src/backend.rs:363,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/services/sqlite/src/backend.rs:363,1
    - Dst: SqlitePool::connect_with
      Src: /src/opendal/core/services/sqlite/src/backend.rs:364,1
    - Dst: unwrap
      Src: /src/opendal/core/services/sqlite/src/backend.rs:364,1
    - Dst: OnceCell::from_value
      Src: /src/opendal/core/services/sqlite/src/backend.rs:365,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 366
      start: 362
    functionDepth: 34
    functionLinenumber: 362
    functionLinenumberEnd: 366
    functionName: test::build_client
    functionSourceFile: /src/opendal/core/services/sqlite/src/backend.rs
    functionUses: 0
    functionsReached:
    - unwrap
    - SqliteConnectOptions::from_str
    - Result::unwrap
    - SqlitePool::connect_with
    - OnceCell::from_value
    linkageType: ''
    returnType: OnceCell
    signature: async fn build_client() -> OnceCell<SqlitePool>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_client
      Src: /src/opendal/core/services/sqlite/src/backend.rs:370,1
    - Dst: Default::default
      Src: /src/opendal/core/services/sqlite/src/backend.rs:371,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/sqlite/src/backend.rs:372,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/sqlite/src/backend.rs:373,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/sqlite/src/backend.rs:374,1
    - Dst: SqliteBackend::new
      Src: /src/opendal/core/services/sqlite/src/backend.rs:377,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 378
      start: 368
    functionDepth: 35
    functionLinenumber: 368
    functionLinenumberEnd: 378
    functionName: test::build_backend
    functionSourceFile: /src/opendal/core/services/sqlite/src/backend.rs
    functionUses: 0
    functionsReached:
    - build_client
    - Default::default
    - '&str::to_string'
    - SqliteBackend::new
    linkageType: ''
    returnType: SqliteBackend
    signature: async fn build_backend() -> SqliteBackend
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_backend
      Src: /src/opendal/core/services/sqlite/src/backend.rs:382,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 391
      start: 381
    functionDepth: 36
    functionLinenumber: 381
    functionLinenumberEnd: 391
    functionName: test::test_sqlite_backend_creation
    functionSourceFile: /src/opendal/core/services/sqlite/src/backend.rs
    functionUses: 0
    functionsReached:
    - build_backend
    linkageType: ''
    returnType: void
    signature: async fn test_sqlite_backend_creation()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_backend
      Src: /src/opendal/core/services/sqlite/src/backend.rs:395,1
    - Dst: with_normalized_root
      Src: /src/opendal/core/services/sqlite/src/backend.rs:395,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/sqlite/src/backend.rs:397,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 401
      start: 394
    functionDepth: 36
    functionLinenumber: 394
    functionLinenumberEnd: 401
    functionName: test::test_sqlite_backend_with_root
    functionSourceFile: /src/opendal/core/services/sqlite/src/backend.rs
    functionUses: 0
    functionsReached:
    - '&str::to_string'
    - build_backend
    - with_normalized_root
    linkageType: ''
    returnType: void
    signature: async fn test_sqlite_backend_with_root()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_backend
      Src: /src/opendal/core/services/sqlite/src/backend.rs:405,1
    - Dst: get_client
      Src: /src/opendal/core/services/sqlite/src/backend.rs:407,1
    - Dst: unwrap
      Src: /src/opendal/core/services/sqlite/src/backend.rs:407,1
    - Dst: sqlx::query
      Src: /src/opendal/core/services/sqlite/src/backend.rs:408,1
    - Dst: Result::execute
      Src: /src/opendal/core/services/sqlite/src/backend.rs:408,1
    - Dst: unwrap
      Src: /src/opendal/core/services/sqlite/src/backend.rs:408,1
    - Dst: OperationContext::new
      Src: /src/opendal/core/services/sqlite/src/backend.rs:413,1
    - Dst: SqliteBackend::write
      Src: /src/opendal/core/services/sqlite/src/backend.rs:414,1
    - Dst: OpWrite::default
      Src: /src/opendal/core/services/sqlite/src/backend.rs:414,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/services/sqlite/src/backend.rs:414,1
    - Dst: Result::write
      Src: /src/opendal/core/services/sqlite/src/backend.rs:415,1
    - Dst: Buffer::from
      Src: /src/opendal/core/services/sqlite/src/backend.rs:415,1
    - Dst: unwrap
      Src: /src/opendal/core/services/sqlite/src/backend.rs:415,1
    - Dst: Result::close
      Src: /src/opendal/core/services/sqlite/src/backend.rs:416,1
    - Dst: unwrap
      Src: /src/opendal/core/services/sqlite/src/backend.rs:416,1
    - Dst: SqliteBackend::read
      Src: /src/opendal/core/services/sqlite/src/backend.rs:418,1
    - Dst: OpRead::default
      Src: /src/opendal/core/services/sqlite/src/backend.rs:418,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/services/sqlite/src/backend.rs:418,1
    - Dst: anyhow::Result::open
      Src: /src/opendal/core/services/sqlite/src/backend.rs:419,1
    - Dst: BytesRange::from
      Src: /src/opendal/core/services/sqlite/src/backend.rs:419,1
    - Dst: unwrap
      Src: /src/opendal/core/services/sqlite/src/backend.rs:419,1
    - Dst: Result::read_all
      Src: /src/opendal/core/services/sqlite/src/backend.rs:420,1
    - Dst: unwrap
      Src: /src/opendal/core/services/sqlite/src/backend.rs:420,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 54
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 423
      start: 404
    functionDepth: 36
    functionLinenumber: 404
    functionLinenumberEnd: 423
    functionName: test::test_sqlite_read_range_from_offset_reads_to_eof
    functionSourceFile: /src/opendal/core/services/sqlite/src/backend.rs
    functionUses: 0
    functionsReached:
    - sqlx::query
    - BytesRange::from
    - OpWrite::default
    - unwrap
    - SqliteBackend::read
    - SqliteBackend::write
    - Result::execute
    - OperationContext::new
    - get_client
    - Result::close
    - Result::write
    - Result::unwrap
    - build_backend
    - anyhow::Result::open
    - Result::read_all
    - OpRead::default
    - Buffer::from
    linkageType: ''
    returnType: void
    signature: async fn test_sqlite_read_range_from_offset_reads_to_eof()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_backend
      Src: /src/opendal/core/services/sqlite/src/backend.rs:427,1
    - Dst: get_client
      Src: /src/opendal/core/services/sqlite/src/backend.rs:429,1
    - Dst: unwrap
      Src: /src/opendal/core/services/sqlite/src/backend.rs:429,1
    - Dst: sqlx::query
      Src: /src/opendal/core/services/sqlite/src/backend.rs:430,1
    - Dst: Result::execute
      Src: /src/opendal/core/services/sqlite/src/backend.rs:430,1
    - Dst: unwrap
      Src: /src/opendal/core/services/sqlite/src/backend.rs:430,1
    - Dst: OperationContext::new
      Src: /src/opendal/core/services/sqlite/src/backend.rs:435,1
    - Dst: SqliteBackend::write
      Src: /src/opendal/core/services/sqlite/src/backend.rs:436,1
    - Dst: OpWrite::default
      Src: /src/opendal/core/services/sqlite/src/backend.rs:436,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/services/sqlite/src/backend.rs:436,1
    - Dst: Result::write
      Src: /src/opendal/core/services/sqlite/src/backend.rs:437,1
    - Dst: Buffer::from
      Src: /src/opendal/core/services/sqlite/src/backend.rs:437,1
    - Dst: unwrap
      Src: /src/opendal/core/services/sqlite/src/backend.rs:437,1
    - Dst: Result::close
      Src: /src/opendal/core/services/sqlite/src/backend.rs:438,1
    - Dst: unwrap
      Src: /src/opendal/core/services/sqlite/src/backend.rs:438,1
    - Dst: SqliteBackend::stat
      Src: /src/opendal/core/services/sqlite/src/backend.rs:440,1
    - Dst: OpStat::default
      Src: /src/opendal/core/services/sqlite/src/backend.rs:441,1
    - Dst: unwrap
      Src: /src/opendal/core/services/sqlite/src/backend.rs:440,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 43
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 446
      start: 426
    functionDepth: 36
    functionLinenumber: 426
    functionLinenumberEnd: 446
    functionName: test::test_sqlite_stat_uses_value_length
    functionSourceFile: /src/opendal/core/services/sqlite/src/backend.rs
    functionUses: 0
    functionsReached:
    - OpStat::default
    - SqliteBackend::stat
    - sqlx::query
    - OpWrite::default
    - unwrap
    - SqliteBackend::write
    - Result::execute
    - OperationContext::new
    - get_client
    - Result::close
    - Result::write
    - Result::unwrap
    - build_backend
    - Buffer::from
    linkageType: ''
    returnType: void
    signature: async fn test_sqlite_stat_uses_value_length()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_backend
      Src: /src/opendal/core/services/sqlite/src/backend.rs:450,1
    - Dst: get_client
      Src: /src/opendal/core/services/sqlite/src/backend.rs:452,1
    - Dst: unwrap
      Src: /src/opendal/core/services/sqlite/src/backend.rs:452,1
    - Dst: sqlx::query
      Src: /src/opendal/core/services/sqlite/src/backend.rs:453,1
    - Dst: Result::execute
      Src: /src/opendal/core/services/sqlite/src/backend.rs:453,1
    - Dst: unwrap
      Src: /src/opendal/core/services/sqlite/src/backend.rs:453,1
    - Dst: sqlx::query
      Src: /src/opendal/core/services/sqlite/src/backend.rs:457,1
    - Dst: Result::bind
      Src: /src/opendal/core/services/sqlite/src/backend.rs:457,1
    - Dst: bind
      Src: /src/opendal/core/services/sqlite/src/backend.rs:457,1
    - Dst: execute
      Src: /src/opendal/core/services/sqlite/src/backend.rs:457,1
    - Dst: unwrap
      Src: /src/opendal/core/services/sqlite/src/backend.rs:457,1
    - Dst: OperationContext::new
      Src: /src/opendal/core/services/sqlite/src/backend.rs:464,1
    - Dst: SqliteBackend::stat
      Src: /src/opendal/core/services/sqlite/src/backend.rs:466,1
    - Dst: OpStat::default
      Src: /src/opendal/core/services/sqlite/src/backend.rs:467,1
    - Dst: unwrap
      Src: /src/opendal/core/services/sqlite/src/backend.rs:466,1
    - Dst: SqliteBackend::read
      Src: /src/opendal/core/services/sqlite/src/backend.rs:472,1
    - Dst: OpRead::default
      Src: /src/opendal/core/services/sqlite/src/backend.rs:472,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/services/sqlite/src/backend.rs:472,1
    - Dst: anyhow::Result::open
      Src: /src/opendal/core/services/sqlite/src/backend.rs:473,1
    - Dst: BytesRange::from
      Src: /src/opendal/core/services/sqlite/src/backend.rs:473,1
    - Dst: unwrap
      Src: /src/opendal/core/services/sqlite/src/backend.rs:473,1
    - Dst: Result::read_all
      Src: /src/opendal/core/services/sqlite/src/backend.rs:474,1
    - Dst: unwrap
      Src: /src/opendal/core/services/sqlite/src/backend.rs:474,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 55
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 478
      start: 449
    functionDepth: 36
    functionLinenumber: 449
    functionLinenumberEnd: 478
    functionName: test::test_sqlite_stat_returns_byte_length_for_text_value
    functionSourceFile: /src/opendal/core/services/sqlite/src/backend.rs
    functionUses: 0
    functionsReached:
    - Result::bind
    - SqliteBackend::stat
    - sqlx::query
    - BytesRange::from
    - SqliteBackend::read
    - unwrap
    - Result::execute
    - bind
    - get_client
    - OperationContext::new
    - Result::unwrap
    - build_backend
    - anyhow::Result::open
    - Result::read_all
    - execute
    - OpRead::default
    - OpStat::default
    linkageType: ''
    returnType: void
    signature: async fn test_sqlite_stat_returns_byte_length_for_text_value()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_backend
      Src: /src/opendal/core/services/sqlite/src/backend.rs:482,1
    - Dst: get_client
      Src: /src/opendal/core/services/sqlite/src/backend.rs:483,1
    - Dst: unwrap
      Src: /src/opendal/core/services/sqlite/src/backend.rs:483,1
    - Dst: sqlx::query
      Src: /src/opendal/core/services/sqlite/src/backend.rs:485,1
    - Dst: Result::execute
      Src: /src/opendal/core/services/sqlite/src/backend.rs:485,1
    - Dst: unwrap
      Src: /src/opendal/core/services/sqlite/src/backend.rs:485,1
    - Dst: sqlx::query
      Src: /src/opendal/core/services/sqlite/src/backend.rs:489,1
    - Dst: Result::bind
      Src: /src/opendal/core/services/sqlite/src/backend.rs:489,1
    - Dst: bind
      Src: /src/opendal/core/services/sqlite/src/backend.rs:489,1
    - Dst: execute
      Src: /src/opendal/core/services/sqlite/src/backend.rs:489,1
    - Dst: unwrap
      Src: /src/opendal/core/services/sqlite/src/backend.rs:489,1
    - Dst: OperationContext::new
      Src: /src/opendal/core/services/sqlite/src/backend.rs:496,1
    - Dst: SqliteBackend::stat
      Src: /src/opendal/core/services/sqlite/src/backend.rs:498,1
    - Dst: OpStat::default
      Src: /src/opendal/core/services/sqlite/src/backend.rs:499,1
    - Dst: unwrap
      Src: /src/opendal/core/services/sqlite/src/backend.rs:498,1
    - Dst: SqliteBackend::read
      Src: /src/opendal/core/services/sqlite/src/backend.rs:504,1
    - Dst: OpRead::default
      Src: /src/opendal/core/services/sqlite/src/backend.rs:504,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/services/sqlite/src/backend.rs:504,1
    - Dst: anyhow::Result::open
      Src: /src/opendal/core/services/sqlite/src/backend.rs:505,1
    - Dst: BytesRange::from
      Src: /src/opendal/core/services/sqlite/src/backend.rs:505,1
    - Dst: unwrap
      Src: /src/opendal/core/services/sqlite/src/backend.rs:505,1
    - Dst: Result::read_all
      Src: /src/opendal/core/services/sqlite/src/backend.rs:506,1
    - Dst: unwrap
      Src: /src/opendal/core/services/sqlite/src/backend.rs:506,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 55
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 510
      start: 481
    functionDepth: 36
    functionLinenumber: 481
    functionLinenumberEnd: 510
    functionName: test::test_sqlite_stat_returns_byte_length_for_text_column
    functionSourceFile: /src/opendal/core/services/sqlite/src/backend.rs
    functionUses: 0
    functionsReached:
    - Result::bind
    - SqliteBackend::stat
    - sqlx::query
    - BytesRange::from
    - SqliteBackend::read
    - unwrap
    - Result::execute
    - bind
    - get_client
    - OperationContext::new
    - Result::unwrap
    - build_backend
    - anyhow::Result::open
    - Result::read_all
    - execute
    - OpRead::default
    - OpStat::default
    linkageType: ''
    returnType: void
    signature: async fn test_sqlite_stat_returns_byte_length_for_text_column()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::options
      Src: /src/opendal/core/services/monoiofs/src/config.rs:41,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/monoiofs/src/config.rs:41,1
    - Dst: Result::root
      Src: /src/opendal/core/services/monoiofs/src/config.rs:43,1
    - Dst: Result::is_empty
      Src: /src/opendal/core/services/monoiofs/src/config.rs:44,1
    - Dst: Result::insert
      Src: /src/opendal/core/services/monoiofs/src/config.rs:46,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/monoiofs/src/config.rs:46,1
    - Dst: Result::to_string
      Src: /src/opendal/core/services/monoiofs/src/config.rs:46,1
    - Dst: Self::from_iter
      Src: /src/opendal/core/services/monoiofs/src/config.rs:49,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 19
    argCount: 1
    argNames:
    - uri
    argTypes:
    - '&OperatorUri'
    constantsTouched: []
    func_position:
      end: 50
      start: 40
    functionDepth: 35
    functionLinenumber: 40
    functionLinenumberEnd: 50
    functionName: MonoiofsConfig::from_uri
    functionSourceFile: /src/opendal/core/services/monoiofs/src/config.rs
    functionUses: 1
    functionsReached:
    - Result::clone
    - Self::from_iter
    - Result::to_string
    - Result::insert
    - Result::is_empty
    - Result::root
    - '&str::to_string'
    - Result::options
    linkageType: ''
    returnType: Result
    signature: 'fn from_uri(uri: &OperatorUri) -> Result<Self>'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 54
      start: 52
    functionDepth: 0
    functionLinenumber: 52
    functionLinenumberEnd: 54
    functionName: MonoiofsConfig::into_builder
    functionSourceFile: /src/opendal/core/services/monoiofs/src/config.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Self::Builder
    signature: fn into_builder(self) -> Self::Builder
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - core
    argTypes:
    - Arc<MonoiofsCore>
    constantsTouched: []
    func_position:
      end: 32
      start: 30
    functionDepth: 0
    functionLinenumber: 30
    functionLinenumberEnd: 32
    functionName: MonoiofsDeleter::new
    functionSourceFile: /src/opendal/core/services/monoiofs/src/deleter.rs
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(core: Arc<MonoiofsCore>) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: prepare_path
      Src: /src/opendal/core/services/monoiofs/src/deleter.rs:37,1
    - Dst: dispatch
      Src: /src/opendal/core/services/monoiofs/src/deleter.rs:38,1
    - Dst: clone
      Src: /src/opendal/core/services/monoiofs/src/deleter.rs:41,1
    - Dst: monoio::fs::metadata
      Src: /src/opendal/core/services/monoiofs/src/deleter.rs:42,1
    - Dst: Result::is_dir
      Src: /src/opendal/core/services/monoiofs/src/deleter.rs:47,1
    - Dst: dispatch
      Src: /src/opendal/core/services/monoiofs/src/deleter.rs:48,1
    - Dst: monoio::fs::remove_dir
      Src: /src/opendal/core/services/monoiofs/src/deleter.rs:49,1
    - Dst: map_err
      Src: /src/opendal/core/services/monoiofs/src/deleter.rs:48,1
    - Dst: dispatch
      Src: /src/opendal/core/services/monoiofs/src/deleter.rs:53,1
    - Dst: monoio::fs::remove_file
      Src: /src/opendal/core/services/monoiofs/src/deleter.rs:54,1
    - Dst: map_err
      Src: /src/opendal/core/services/monoiofs/src/deleter.rs:53,1
    - Dst: Ok
      Src: /src/opendal/core/services/monoiofs/src/deleter.rs:59,1
    - Dst: Error::kind
      Src: /src/opendal/core/services/monoiofs/src/deleter.rs:61,1
    - Dst: Ok
      Src: /src/opendal/core/services/monoiofs/src/deleter.rs:61,1
    - Dst: Err
      Src: /src/opendal/core/services/monoiofs/src/deleter.rs:62,1
    - Dst: new_std_io_error
      Src: /src/opendal/core/services/monoiofs/src/deleter.rs:62,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 48
    argCount: 2
    argNames:
    - path
    argTypes:
    - String
    - OpDelete
    constantsTouched: []
    func_position:
      end: 64
      start: 36
    functionDepth: 33
    functionLinenumber: 36
    functionLinenumberEnd: 64
    functionName: MonoiofsDeleter::delete_once
    functionSourceFile: /src/opendal/core/services/monoiofs/src/deleter.rs
    functionUses: 0
    functionsReached:
    - map_err
    - Ok
    - monoio::fs::metadata
    - Result::is_dir
    - clone
    - Err
    - monoio::fs::remove_dir
    - Error::kind
    - new_std_io_error
    - monoio::fs::remove_file
    - prepare_path
    - dispatch
    linkageType: ''
    returnType: Result
    signature: 'async fn delete_once(&self, path: String, _: OpDelete) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: oneshot::channel
      Src: /src/opendal/core/services/monoiofs/src/reader.rs:45,1
    - Dst: mpsc::unbounded
      Src: /src/opendal/core/services/monoiofs/src/reader.rs:46,1
    - Dst: CompfsCore::spawn
      Src: /src/opendal/core/services/monoiofs/src/reader.rs:47,1
    - Dst: Self::worker_entrypoint
      Src: /src/opendal/core/services/monoiofs/src/reader.rs:47,1
    - Dst: CompfsCore::unwrap
      Src: /src/opendal/core/services/monoiofs/src/reader.rs:49,1
    - Dst: Ok
      Src: /src/opendal/core/services/monoiofs/src/reader.rs:50,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 2
    argNames:
    - core
    - path
    argTypes:
    - Arc<MonoiofsCore>
    - PathBuf
    constantsTouched: []
    func_position:
      end: 51
      start: 44
    functionDepth: 32
    functionLinenumber: 44
    functionLinenumberEnd: 51
    functionName: MonoiofsReader::new
    functionSourceFile: /src/opendal/core/services/monoiofs/src/reader.rs
    functionUses: 1
    functionsReached:
    - Ok
    - CompfsCore::spawn
    - Self::worker_entrypoint
    - oneshot::channel
    - mpsc::unbounded
    - CompfsCore::unwrap
    linkageType: ''
    returnType: Result
    signature: 'pub async fn new(core: Arc<MonoiofsCore>, path: PathBuf) -> Result<Self>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: OpenOptions::new
      Src: /src/opendal/core/services/monoiofs/src/reader.rs:59,1
    - Dst: Self::read
      Src: /src/opendal/core/services/monoiofs/src/reader.rs:59,1
    - Dst: Result::open
      Src: /src/opendal/core/services/monoiofs/src/reader.rs:59,1
    - Dst: oneshot::Sender<Result<()>>::send
      Src: /src/opendal/core/services/monoiofs/src/reader.rs:64,1
    - Dst: Ok
      Src: /src/opendal/core/services/monoiofs/src/reader.rs:64,1
    - Dst: oneshot::Sender<Result<()>>::send
      Src: /src/opendal/core/services/monoiofs/src/reader.rs:73,1
    - Dst: Err
      Src: /src/opendal/core/services/monoiofs/src/reader.rs:73,1
    - Dst: new_std_io_error
      Src: /src/opendal/core/services/monoiofs/src/reader.rs:73,1
    - Dst: mpsc::UnboundedReceiver<ReaderRequest>::next
      Src: /src/opendal/core/services/monoiofs/src/reader.rs:79,1
    - Dst: Result::read_at
      Src: /src/opendal/core/services/monoiofs/src/reader.rs:85,1
    - Dst: bool::map
      Src: /src/opendal/core/services/monoiofs/src/reader.rs:86,1
    - Dst: Result::map_err
      Src: /src/opendal/core/services/monoiofs/src/reader.rs:86,1
    - Dst: Result::send
      Src: /src/opendal/core/services/monoiofs/src/reader.rs:89,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 39
    argCount: 3
    argNames:
    - path
    - rx
    - open_result_tx
    argTypes:
    - PathBuf
    - mpsc::UnboundedReceiver<ReaderRequest>
    - oneshot::Sender<Result<()>>
    constantsTouched: []
    func_position:
      end: 93
      start: 54
    functionDepth: 31
    functionLinenumber: 54
    functionLinenumberEnd: 93
    functionName: MonoiofsReader::worker_entrypoint
    functionSourceFile: /src/opendal/core/services/monoiofs/src/reader.rs
    functionUses: 0
    functionsReached:
    - mpsc::UnboundedReceiver<ReaderRequest>::next
    - Result::map_err
    - Result::read_at
    - Self::read
    - Ok
    - Result::send
    - Err
    - bool::map
    - oneshot::Sender<Result<()>>::send
    - OpenOptions::new
    - new_std_io_error
    - Result::open
    linkageType: ''
    returnType: void
    signature: 'async fn worker_entrypoint(path: PathBuf,mut rx: mpsc::UnboundedReceiver<ReaderRequest>,open_result_tx:
      oneshot::Sender<Result<()>>,)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/core/services/monoiofs/src/reader.rs:102,1
    - Dst: Buffer::new
      Src: /src/opendal/core/services/monoiofs/src/reader.rs:102,1
    - Dst: oneshot::channel
      Src: /src/opendal/core/services/monoiofs/src/reader.rs:106,1
    - Dst: unwrap
      Src: /src/opendal/core/services/monoiofs/src/reader.rs:107,1
    - Dst: unbounded_send
      Src: /src/opendal/core/services/monoiofs/src/reader.rs:108,1
    - Dst: into_boxed_slice
      Src: /src/opendal/core/services/monoiofs/src/reader.rs:110,1
    - Dst: unwrap
      Src: /src/opendal/core/services/monoiofs/src/reader.rs:113,1
    - Dst: Vec::from
      Src: /src/opendal/core/services/monoiofs/src/reader.rs:115,1
    - Dst: io::Result::truncate
      Src: /src/opendal/core/services/monoiofs/src/reader.rs:116,1
    - Dst: Ok
      Src: /src/opendal/core/services/monoiofs/src/reader.rs:117,1
    - Dst: Buffer::from
      Src: /src/opendal/core/services/monoiofs/src/reader.rs:117,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 29
    argCount: 2
    argNames:
    - offset
    - size
    argTypes:
    - u64
    - usize
    constantsTouched: []
    func_position:
      end: 118
      start: 100
    functionDepth: 35
    functionLinenumber: 100
    functionLinenumberEnd: 118
    functionName: MonoiofsReader::read_at
    functionSourceFile: /src/opendal/core/services/monoiofs/src/reader.rs
    functionUses: 0
    functionsReached:
    - Buffer::new
    - Vec::from
    - Ok
    - unwrap
    - oneshot::channel
    - io::Result::truncate
    - into_boxed_slice
    - Buffer::from
    - unbounded_send
    linkageType: ''
    returnType: Result
    signature: 'pub async fn read_at(&self, offset: u64, size: usize) -> Result<Buffer>'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - core
    - path
    argTypes:
    - Arc<MonoiofsCore>
    - PathBuf
    constantsTouched: []
    func_position:
      end: 129
      start: 127
    functionDepth: 0
    functionLinenumber: 127
    functionLinenumberEnd: 129
    functionName: MonoiofsPositionReader::new
    functionSourceFile: /src/opendal/core/services/monoiofs/src/reader.rs
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: 'pub(super) fn new(core: Arc<MonoiofsCore>, path: PathBuf) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: MonoiofsReader::new
      Src: /src/opendal/core/services/monoiofs/src/reader.rs:136,1
    - Dst: clone
      Src: /src/opendal/core/services/monoiofs/src/reader.rs:136,1
    - Dst: clone
      Src: /src/opendal/core/services/monoiofs/src/reader.rs:136,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 137
      start: 135
    functionDepth: 33
    functionLinenumber: 135
    functionLinenumberEnd: 137
    functionName: MonoiofsPositionReader::open
    functionSourceFile: /src/opendal/core/services/monoiofs/src/reader.rs
    functionUses: 0
    functionsReached:
    - clone
    - MonoiofsReader::new
    linkageType: ''
    returnType: Result
    signature: async fn open(&self) -> Result<Self::Handle>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: read_at
      Src: /src/opendal/core/services/monoiofs/src/reader.rs:140,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 3
    argNames:
    - handle
    - offset
    - size
    argTypes:
    - '&Self::Handle'
    - u64
    - usize
    constantsTouched: []
    func_position:
      end: 141
      start: 139
    functionDepth: 35
    functionLinenumber: 139
    functionLinenumberEnd: 141
    functionName: MonoiofsPositionReader::read_at
    functionSourceFile: /src/opendal/core/services/monoiofs/src/reader.rs
    functionUses: 0
    functionsReached:
    - read_at
    linkageType: ''
    returnType: Result
    signature: 'async fn read_at(handle: &Self::Handle, offset: u64, size: usize)
      -> Result<Buffer>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: to_string
      Src: /src/opendal/core/services/monoiofs/src/reader.rs:155,1
    - Dst: OpStat::append
      Src: /src/opendal/core/services/monoiofs/src/reader.rs:156,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - core
    - path
    - args
    argTypes:
    - Arc<MonoiofsCore>
    - '&str'
    - OpWrite
    constantsTouched: []
    func_position:
      end: 159
      start: 152
    functionDepth: 31
    functionLinenumber: 152
    functionLinenumberEnd: 159
    functionName: MonoiofsLazyWriter::new
    functionSourceFile: /src/opendal/core/services/monoiofs/src/reader.rs
    functionUses: 1
    functionsReached:
    - to_string
    - OpStat::append
    linkageType: ''
    returnType: Self
    signature: 'pub(super) fn new(core: Arc<MonoiofsCore>, path: &str, args: OpWrite)
      -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: is_none
      Src: /src/opendal/core/services/monoiofs/src/reader.rs:162,1
    - Dst: prepare_write_path
      Src: /src/opendal/core/services/monoiofs/src/reader.rs:163,1
    - Dst: MonoiofsWriter::new
      Src: /src/opendal/core/services/monoiofs/src/reader.rs:164,1
    - Dst: clone
      Src: /src/opendal/core/services/monoiofs/src/reader.rs:164,1
    - Dst: Some
      Src: /src/opendal/core/services/monoiofs/src/reader.rs:165,1
    - Dst: Ok
      Src: /src/opendal/core/services/monoiofs/src/reader.rs:168,1
    - Dst: as_mut
      Src: /src/opendal/core/services/monoiofs/src/reader.rs:168,1
    - Dst: expect
      Src: /src/opendal/core/services/monoiofs/src/reader.rs:168,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 29
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 172
      start: 161
    functionDepth: 34
    functionLinenumber: 161
    functionLinenumberEnd: 172
    functionName: MonoiofsLazyWriter::inner
    functionSourceFile: /src/opendal/core/services/monoiofs/src/reader.rs
    functionUses: 2
    functionsReached:
    - is_none
    - as_mut
    - MonoiofsWriter::new
    - prepare_write_path
    - Ok
    - expect
    - clone
    - Some
    linkageType: ''
    returnType: Result
    signature: async fn inner(&mut self) -> Result<&mut MonoiofsWriter>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: MonoiofsLazyWriter::inner
      Src: /src/opendal/core/services/monoiofs/src/reader.rs:177,1
    - Dst: write
      Src: /src/opendal/core/services/monoiofs/src/reader.rs:177,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 1
    argNames:
    - bs
    argTypes:
    - Buffer
    constantsTouched: []
    func_position:
      end: 178
      start: 176
    functionDepth: 35
    functionLinenumber: 176
    functionLinenumberEnd: 178
    functionName: MonoiofsLazyWriter::write
    functionSourceFile: /src/opendal/core/services/monoiofs/src/reader.rs
    functionUses: 0
    functionsReached:
    - MonoiofsLazyWriter::inner
    - write
    linkageType: ''
    returnType: Result
    signature: 'async fn write(&mut self, bs: Buffer) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: MonoiofsLazyWriter::inner
      Src: /src/opendal/core/services/monoiofs/src/reader.rs:181,1
    - Dst: close
      Src: /src/opendal/core/services/monoiofs/src/reader.rs:181,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 182
      start: 180
    functionDepth: 35
    functionLinenumber: 180
    functionLinenumberEnd: 182
    functionName: MonoiofsLazyWriter::close
    functionSourceFile: /src/opendal/core/services/monoiofs/src/reader.rs
    functionUses: 0
    functionsReached:
    - MonoiofsLazyWriter::inner
    - close
    linkageType: ''
    returnType: Result
    signature: async fn close(&mut self) -> Result<Metadata>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self::abort
      Src: /src/opendal/core/services/monoiofs/src/reader.rs:186,1
    - Dst: Err
      Src: /src/opendal/core/services/monoiofs/src/reader.rs:187,1
    - Dst: Error::new
      Src: /src/opendal/core/services/monoiofs/src/reader.rs:187,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 192
      start: 184
    functionDepth: 31
    functionLinenumber: 184
    functionLinenumberEnd: 192
    functionName: MonoiofsLazyWriter::abort
    functionSourceFile: /src/opendal/core/services/monoiofs/src/reader.rs
    functionUses: 0
    functionsReached:
    - Err
    - Error::new
    - Self::abort
    linkageType: ''
    returnType: Result
    signature: async fn abort(&mut self) -> Result<()>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: flume::unbounded
      Src: /src/opendal/core/services/monoiofs/src/core.rs:58,1
    - Dst: map
      Src: /src/opendal/core/services/monoiofs/src/core.rs:59,1
    - Dst: clone
      Src: /src/opendal/core/services/monoiofs/src/core.rs:61,1
    - Dst: std::thread::Builder::new
      Src: /src/opendal/core/services/monoiofs/src/core.rs:62,1
    - Dst: Self::name
      Src: /src/opendal/core/services/monoiofs/src/core.rs:62,1
    - Dst: Result::spawn
      Src: /src/opendal/core/services/monoiofs/src/core.rs:62,1
    - Dst: Self::worker_entrypoint
      Src: /src/opendal/core/services/monoiofs/src/core.rs:64,1
    - Dst: expect
      Src: /src/opendal/core/services/monoiofs/src/core.rs:62,1
    - Dst: collect
      Src: /src/opendal/core/services/monoiofs/src/core.rs:59,1
    - Dst: Mutex::new
      Src: /src/opendal/core/services/monoiofs/src/core.rs:68,1
    - Dst: ServiceInfo::new
      Src: /src/opendal/core/services/monoiofs/src/core.rs:71,1
    - Dst: Result::to_string_lossy
      Src: /src/opendal/core/services/monoiofs/src/core.rs:71,1
    - Dst: Default::default
      Src: /src/opendal/core/services/monoiofs/src/core.rs:85,1
    - Dst: oio::PooledBuf::new
      Src: /src/opendal/core/services/monoiofs/src/core.rs:90,1
    - Dst: Self::with_initial_capacity
      Src: /src/opendal/core/services/monoiofs/src/core.rs:90,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 29
    argCount: 3
    argNames:
    - root
    - worker_threads
    - io_uring_entries
    argTypes:
    - PathBuf
    - usize
    - u32
    constantsTouched: []
    func_position:
      end: 92
      start: 53
    functionDepth: 31
    functionLinenumber: 53
    functionLinenumberEnd: 92
    functionName: MonoiofsCore::new
    functionSourceFile: /src/opendal/core/services/monoiofs/src/core.rs
    functionUses: 4
    functionsReached:
    - collect
    - ServiceInfo::new
    - expect
    - oio::PooledBuf::new
    - Self::with_initial_capacity
    - Default::default
    - clone
    - Result::to_string_lossy
    - map
    - Result::spawn
    - std::thread::Builder::new
    - Self::worker_entrypoint
    - Self::name
    - flume::unbounded
    - Mutex::new
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(root: PathBuf, worker_threads: usize, io_uring_entries:
      u32) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: trim_end_matches
      Src: /src/opendal/core/services/monoiofs/src/core.rs:99,1
    - Dst: Path::new
      Src: /src/opendal/core/services/monoiofs/src/core.rs:100,1
    - Dst: Self::components
      Src: /src/opendal/core/services/monoiofs/src/core.rs:100,1
    - Dst: any
      Src: /src/opendal/core/services/monoiofs/src/core.rs:100,1
    - Dst: Err
      Src: /src/opendal/core/services/monoiofs/src/core.rs:104,1
    - Dst: Error::new
      Src: /src/opendal/core/services/monoiofs/src/core.rs:104,1
    - Dst: Self::with_context
      Src: /src/opendal/core/services/monoiofs/src/core.rs:104,1
    - Dst: Ok
      Src: /src/opendal/core/services/monoiofs/src/core.rs:110,1
    - Dst: join
      Src: /src/opendal/core/services/monoiofs/src/core.rs:110,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 20
    argCount: 1
    argNames:
    - path
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 111
      start: 97
    functionDepth: 32
    functionLinenumber: 97
    functionLinenumberEnd: 111
    functionName: MonoiofsCore::prepare_path
    functionSourceFile: /src/opendal/core/services/monoiofs/src/core.rs
    functionUses: 1
    functionsReached:
    - Self::components
    - Ok
    - join
    - Self::with_context
    - trim_end_matches
    - Err
    - Error::new
    - Path::new
    - any
    linkageType: ''
    returnType: Result
    signature: 'pub fn prepare_path(&self, path: &str) -> Result<PathBuf>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: MonoiofsCore::prepare_path
      Src: /src/opendal/core/services/monoiofs/src/core.rs:115,1
    - Dst: parent
      Src: /src/opendal/core/services/monoiofs/src/core.rs:116,1
    - Dst: '&str::ok_or_else'
      Src: /src/opendal/core/services/monoiofs/src/core.rs:116,1
    - Dst: Error::new
      Src: /src/opendal/core/services/monoiofs/src/core.rs:119,1
    - Dst: Self::with_context
      Src: /src/opendal/core/services/monoiofs/src/core.rs:119,1
    - Dst: to_string_lossy
      Src: /src/opendal/core/services/monoiofs/src/core.rs:123,1
    - Dst: to_path_buf
      Src: /src/opendal/core/services/monoiofs/src/core.rs:116,1
    - Dst: MonoiofsCore::dispatch
      Src: /src/opendal/core/services/monoiofs/src/core.rs:126,1
    - Dst: monoio::fs::create_dir_all
      Src: /src/opendal/core/services/monoiofs/src/core.rs:126,1
    - Dst: map_err
      Src: /src/opendal/core/services/monoiofs/src/core.rs:126,1
    - Dst: Ok
      Src: /src/opendal/core/services/monoiofs/src/core.rs:129,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 26
    argCount: 1
    argNames:
    - path
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 130
      start: 114
    functionDepth: 33
    functionLinenumber: 114
    functionLinenumberEnd: 130
    functionName: MonoiofsCore::prepare_write_path
    functionSourceFile: /src/opendal/core/services/monoiofs/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - '&str::ok_or_else'
    - Ok
    - monoio::fs::create_dir_all
    - MonoiofsCore::dispatch
    - MonoiofsCore::prepare_path
    - Error::new
    - to_path_buf
    - Self::with_context
    - parent
    - to_string_lossy
    linkageType: ''
    returnType: Result
    signature: 'pub async fn prepare_write_path(&self, path: &str) -> Result<PathBuf>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: RuntimeBuilder::<FusionDriver>::new
      Src: /src/opendal/core/services/monoiofs/src/core.rs:134,1
    - Dst: Self::enable_all
      Src: /src/opendal/core/services/monoiofs/src/core.rs:134,1
    - Dst: with_entries
      Src: /src/opendal/core/services/monoiofs/src/core.rs:134,1
    - Dst: build
      Src: /src/opendal/core/services/monoiofs/src/core.rs:134,1
    - Dst: expect
      Src: /src/opendal/core/services/monoiofs/src/core.rs:134,1
    - Dst: Result::block_on
      Src: /src/opendal/core/services/monoiofs/src/core.rs:141,1
    - Dst: Receiver<TaskSpawner>::recv_async
      Src: /src/opendal/core/services/monoiofs/src/core.rs:142,1
    - Dst: spawner
      Src: /src/opendal/core/services/monoiofs/src/core.rs:143,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 18
    argCount: 2
    argNames:
    - rx
    - io_uring_entries
    argTypes:
    - Receiver<TaskSpawner>
    - u32
    constantsTouched: []
    func_position:
      end: 146
      start: 133
    functionDepth: 36
    functionLinenumber: 133
    functionLinenumberEnd: 146
    functionName: MonoiofsCore::worker_entrypoint
    functionSourceFile: /src/opendal/core/services/monoiofs/src/core.rs
    functionUses: 0
    functionsReached:
    - RuntimeBuilder::<FusionDriver>::new
    - with_entries
    - expect
    - Receiver<TaskSpawner>::recv_async
    - build
    - Result::block_on
    - Self::enable_all
    - spawner
    linkageType: ''
    returnType: void
    signature: 'fn worker_entrypoint(rx: Receiver<TaskSpawner>, io_uring_entries:
      u32)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: oneshot::channel
      Src: /src/opendal/core/services/monoiofs/src/core.rs:157,1
    - Dst: send_async
      Src: /src/opendal/core/services/monoiofs/src/core.rs:158,1
    - Dst: Box::new
      Src: /src/opendal/core/services/monoiofs/src/core.rs:160,1
    - Dst: monoio::spawn
      Src: /src/opendal/core/services/monoiofs/src/core.rs:163,1
    - Dst: Result::send
      Src: /src/opendal/core/services/monoiofs/src/core.rs:166,1
    - Dst: f
      Src: /src/opendal/core/services/monoiofs/src/core.rs:166,1
    - Dst: MonoiofsCore::unwrap
      Src: /src/opendal/core/services/monoiofs/src/core.rs:170,1
    - Dst: MonoiofsCore::unwrap
      Src: /src/opendal/core/services/monoiofs/src/core.rs:171,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 19
    argCount: 1
    argNames:
    - f
    argTypes:
    - F
    constantsTouched: []
    func_position:
      end: 172
      start: 150
    functionDepth: 32
    functionLinenumber: 150
    functionLinenumberEnd: 172
    functionName: MonoiofsCore::dispatch
    functionSourceFile: /src/opendal/core/services/monoiofs/src/core.rs
    functionUses: 1
    functionsReached:
    - f
    - Result::send
    - Box::new
    - send_async
    - oneshot::channel
    - monoio::spawn
    - MonoiofsCore::unwrap
    linkageType: ''
    returnType: T
    signature: 'pub async fn dispatch<F, Fut, T>(&self, f: F) -> TwhereF: FnOnce()
      -> Fut + ''static + Send,Fut: Future<Output = T>,T: ''static + Send,'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: send_async
      Src: /src/opendal/core/services/monoiofs/src/core.rs:181,1
    - Dst: Box::new
      Src: /src/opendal/core/services/monoiofs/src/core.rs:183,1
    - Dst: monoio::spawn
      Src: /src/opendal/core/services/monoiofs/src/core.rs:186,1
    - Dst: f
      Src: /src/opendal/core/services/monoiofs/src/core.rs:186,1
    - Dst: MonoiofsCore::unwrap
      Src: /src/opendal/core/services/monoiofs/src/core.rs:189,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 1
    argNames:
    - f
    argTypes:
    - F
    constantsTouched: []
    func_position:
      end: 190
      start: 175
    functionDepth: 31
    functionLinenumber: 175
    functionLinenumberEnd: 190
    functionName: MonoiofsCore::spawn
    functionSourceFile: /src/opendal/core/services/monoiofs/src/core.rs
    functionUses: 0
    functionsReached:
    - f
    - Box::new
    - send_async
    - monoio::spawn
    - MonoiofsCore::unwrap
    linkageType: ''
    returnType: void
    signature: 'pub async fn spawn<F, Fut, T>(&self, f: F)whereF: FnOnce() -> Fut
      + ''static + Send,Fut: Future<Output = T> + ''static,T: ''static,'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/opendal/core/services/monoiofs/src/core.rs:197,1
    - Dst: expect
      Src: /src/opendal/core/services/monoiofs/src/core.rs:197,1
    - Dst: std::thread::sleep
      Src: /src/opendal/core/services/monoiofs/src/core.rs:199,1
    - Dst: Duration::from_millis
      Src: /src/opendal/core/services/monoiofs/src/core.rs:199,1
    - Dst: mem::take
      Src: /src/opendal/core/services/monoiofs/src/core.rs:200,1
    - Dst: is_finished
      Src: /src/opendal/core/services/monoiofs/src/core.rs:203,1
    - Dst: join
      Src: /src/opendal/core/services/monoiofs/src/core.rs:206,1
    - Dst: std::panic::resume_unwind
      Src: /src/opendal/core/services/monoiofs/src/core.rs:210,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 22
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 215
      start: 196
    functionDepth: 33
    functionLinenumber: 196
    functionLinenumberEnd: 215
    functionName: MonoiofsCore::propagate_worker_panic
    functionSourceFile: /src/opendal/core/services/monoiofs/src/core.rs
    functionUses: 1
    functionsReached:
    - expect
    - lock
    - join
    - is_finished
    - std::panic::resume_unwind
    - std::thread::sleep
    - Duration::from_millis
    - mem::take
    linkageType: ''
    returnType: '!'
    signature: pub fn propagate_worker_panic(&self) -> !
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: MonoiofsCore::propagate_worker_panic
      Src: /src/opendal/core/services/monoiofs/src/core.rs:224,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - result
    argTypes:
    - Result<T, E>
    constantsTouched: []
    func_position:
      end: 226
      start: 221
    functionDepth: 34
    functionLinenumber: 221
    functionLinenumberEnd: 226
    functionName: MonoiofsCore::unwrap
    functionSourceFile: /src/opendal/core/services/monoiofs/src/core.rs
    functionUses: 2
    functionsReached:
    - MonoiofsCore::propagate_worker_panic
    linkageType: ''
    returnType: T
    signature: 'pub fn unwrap<T, E>(&self, result: Result<T, E>) -> T'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Arc::new
      Src: /src/opendal/core/services/monoiofs/src/core.rs:240,1
    - Dst: MonoiofsCore::new
      Src: /src/opendal/core/services/monoiofs/src/core.rs:240,1
    - Dst: PathBuf::new
      Src: /src/opendal/core/services/monoiofs/src/core.rs:240,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - worker_threads
    argTypes:
    - usize
    constantsTouched: []
    func_position:
      end: 241
      start: 239
    functionDepth: 32
    functionLinenumber: 239
    functionLinenumberEnd: 241
    functionName: tests::new_core
    functionSourceFile: /src/opendal/core/services/monoiofs/src/core.rs
    functionUses: 0
    functionsReached:
    - MonoiofsCore::new
    - Arc::new
    - PathBuf::new
    linkageType: ''
    returnType: Arc
    signature: 'fn new_core(worker_threads: usize) -> Arc<MonoiofsCore>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: CompfsCore::dispatch
      Src: /src/opendal/core/services/monoiofs/src/core.rs:244,1
    - Dst: Bytes::clone
      Src: /src/opendal/core/services/monoiofs/src/core.rs:247,1
    - Dst: CompfsCore::dispatch
      Src: /src/opendal/core/services/monoiofs/src/core.rs:248,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 1
    argNames:
    - core
    argTypes:
    - Arc<MonoiofsCore>
    constantsTouched: []
    func_position:
      end: 250
      start: 243
    functionDepth: 33
    functionLinenumber: 243
    functionLinenumberEnd: 250
    functionName: tests::dispatch_simple
    functionSourceFile: /src/opendal/core/services/monoiofs/src/core.rs
    functionUses: 0
    functionsReached:
    - Bytes::clone
    - CompfsCore::dispatch
    linkageType: ''
    returnType: void
    signature: 'async fn dispatch_simple(core: Arc<MonoiofsCore>)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: tokio::spawn
      Src: /src/opendal/core/services/monoiofs/src/core.rs:256,1
    - Dst: CompfsCore::dispatch
      Src: /src/opendal/core/services/monoiofs/src/core.rs:257,1
    - Dst: monoio::time::sleep
      Src: /src/opendal/core/services/monoiofs/src/core.rs:259,1
    - Dst: Duration::from_millis
      Src: /src/opendal/core/services/monoiofs/src/core.rs:259,1
    - Dst: Result::unbounded_send
      Src: /src/opendal/core/services/monoiofs/src/core.rs:264,1
    - Dst: unwrap
      Src: /src/opendal/core/services/monoiofs/src/core.rs:264,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 3
    argNames:
    - core
    - tx
    - sleep_millis
    argTypes:
    - Arc<MonoiofsCore>
    - UnboundedSender<u64>
    - u64
    constantsTouched: []
    func_position:
      end: 266
      start: 255
    functionDepth: 32
    functionLinenumber: 255
    functionLinenumberEnd: 266
    functionName: t::e::s::t::s::::::::d::i::s::p::a::t::c::h::_::c::o::n::c::u::r::r::e::n::t::spawn_task
    functionSourceFile: /src/opendal/core/services/monoiofs/src/core.rs
    functionUses: 0
    functionsReached:
    - Result::unbounded_send
    - unwrap
    - monoio::time::sleep
    - tokio::spawn
    - CompfsCore::dispatch
    - Duration::from_millis
    linkageType: ''
    returnType: void
    signature: 'fn spawn_task(core: Arc<MonoiofsCore>, tx: UnboundedSender<u64>, sleep_millis:
      u64)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: mpsc::unbounded
      Src: /src/opendal/core/services/monoiofs/src/core.rs:253,1
    - Dst: spawn_task
      Src: /src/opendal/core/services/monoiofs/src/core.rs:268,1
    - Dst: CompfsCore::clone
      Src: /src/opendal/core/services/monoiofs/src/core.rs:268,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/monoiofs/src/core.rs:268,1
    - Dst: spawn_task
      Src: /src/opendal/core/services/monoiofs/src/core.rs:269,1
    - Dst: CompfsCore::clone
      Src: /src/opendal/core/services/monoiofs/src/core.rs:269,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/monoiofs/src/core.rs:269,1
    - Dst: drop
      Src: /src/opendal/core/services/monoiofs/src/core.rs:270,1
    - Dst: next
      Src: /src/opendal/core/services/monoiofs/src/core.rs:271,1
    - Dst: next
      Src: /src/opendal/core/services/monoiofs/src/core.rs:272,1
    - Dst: next
      Src: /src/opendal/core/services/monoiofs/src/core.rs:273,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 43
    argCount: 1
    argNames:
    - core
    argTypes:
    - Arc<MonoiofsCore>
    constantsTouched: []
    func_position:
      end: 277
      start: 252
    functionDepth: 33
    functionLinenumber: 252
    functionLinenumberEnd: 277
    functionName: tests::dispatch_concurrent
    functionSourceFile: /src/opendal/core/services/monoiofs/src/core.rs
    functionUses: 0
    functionsReached:
    - Result::clone
    - CompfsCore::clone
    - spawn_task
    - next
    - mpsc::unbounded
    - drop
    linkageType: ''
    returnType: void
    signature: 'async fn dispatch_concurrent(core: Arc<MonoiofsCore>)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: CompfsCore::dispatch
      Src: /src/opendal/core/services/monoiofs/src/core.rs:280,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - core
    argTypes:
    - Arc<MonoiofsCore>
    constantsTouched: []
    func_position:
      end: 281
      start: 279
    functionDepth: 33
    functionLinenumber: 279
    functionLinenumberEnd: 281
    functionName: tests::dispatch_panic
    functionSourceFile: /src/opendal/core/services/monoiofs/src/core.rs
    functionUses: 0
    functionsReached:
    - CompfsCore::dispatch
    linkageType: ''
    returnType: void
    signature: 'async fn dispatch_panic(core: Arc<MonoiofsCore>)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: new_core
      Src: /src/opendal/core/services/monoiofs/src/core.rs:285,1
    - Dst: dispatch_simple
      Src: /src/opendal/core/services/monoiofs/src/core.rs:287,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 288
      start: 284
    functionDepth: 33
    functionLinenumber: 284
    functionLinenumberEnd: 288
    functionName: tests::test_monoio_single_thread_dispatch
    functionSourceFile: /src/opendal/core/services/monoiofs/src/core.rs
    functionUses: 0
    functionsReached:
    - dispatch_simple
    - new_core
    linkageType: ''
    returnType: void
    signature: async fn test_monoio_single_thread_dispatch()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: new_core
      Src: /src/opendal/core/services/monoiofs/src/core.rs:292,1
    - Dst: dispatch_concurrent
      Src: /src/opendal/core/services/monoiofs/src/core.rs:293,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 294
      start: 291
    functionDepth: 33
    functionLinenumber: 291
    functionLinenumberEnd: 294
    functionName: tests::test_monoio_single_thread_dispatch_concurrent
    functionSourceFile: /src/opendal/core/services/monoiofs/src/core.rs
    functionUses: 0
    functionsReached:
    - dispatch_concurrent
    - new_core
    linkageType: ''
    returnType: void
    signature: async fn test_monoio_single_thread_dispatch_concurrent()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: new_core
      Src: /src/opendal/core/services/monoiofs/src/core.rs:299,1
    - Dst: dispatch_panic
      Src: /src/opendal/core/services/monoiofs/src/core.rs:300,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 301
      start: 298
    functionDepth: 33
    functionLinenumber: 298
    functionLinenumberEnd: 301
    functionName: tests::test_monoio_single_thread_dispatch_panic
    functionSourceFile: /src/opendal/core/services/monoiofs/src/core.rs
    functionUses: 0
    functionsReached:
    - dispatch_panic
    - new_core
    linkageType: ''
    returnType: void
    signature: async fn test_monoio_single_thread_dispatch_panic()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: new_core
      Src: /src/opendal/core/services/monoiofs/src/core.rs:305,1
    - Dst: dispatch_simple
      Src: /src/opendal/core/services/monoiofs/src/core.rs:307,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 308
      start: 304
    functionDepth: 33
    functionLinenumber: 304
    functionLinenumberEnd: 308
    functionName: tests::test_monoio_multi_thread_dispatch
    functionSourceFile: /src/opendal/core/services/monoiofs/src/core.rs
    functionUses: 0
    functionsReached:
    - dispatch_simple
    - new_core
    linkageType: ''
    returnType: void
    signature: async fn test_monoio_multi_thread_dispatch()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: new_core
      Src: /src/opendal/core/services/monoiofs/src/core.rs:312,1
    - Dst: dispatch_concurrent
      Src: /src/opendal/core/services/monoiofs/src/core.rs:313,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 314
      start: 311
    functionDepth: 33
    functionLinenumber: 311
    functionLinenumberEnd: 314
    functionName: tests::test_monoio_multi_thread_dispatch_concurrent
    functionSourceFile: /src/opendal/core/services/monoiofs/src/core.rs
    functionUses: 0
    functionsReached:
    - dispatch_concurrent
    - new_core
    linkageType: ''
    returnType: void
    signature: async fn test_monoio_multi_thread_dispatch_concurrent()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: new_core
      Src: /src/opendal/core/services/monoiofs/src/core.rs:319,1
    - Dst: dispatch_panic
      Src: /src/opendal/core/services/monoiofs/src/core.rs:320,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 321
      start: 318
    functionDepth: 33
    functionLinenumber: 318
    functionLinenumberEnd: 321
    functionName: tests::test_monoio_multi_thread_dispatch_panic
    functionSourceFile: /src/opendal/core/services/monoiofs/src/core.rs
    functionUses: 0
    functionsReached:
    - dispatch_panic
    - new_core
    linkageType: ''
    returnType: void
    signature: async fn test_monoio_multi_thread_dispatch_panic()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: oneshot::channel
      Src: /src/opendal/core/services/monoiofs/src/writer.rs:55,1
    - Dst: mpsc::unbounded
      Src: /src/opendal/core/services/monoiofs/src/writer.rs:56,1
    - Dst: CompfsCore::spawn
      Src: /src/opendal/core/services/monoiofs/src/writer.rs:57,1
    - Dst: Self::worker_entrypoint
      Src: /src/opendal/core/services/monoiofs/src/writer.rs:57,1
    - Dst: CompfsCore::unwrap
      Src: /src/opendal/core/services/monoiofs/src/writer.rs:59,1
    - Dst: Ok
      Src: /src/opendal/core/services/monoiofs/src/writer.rs:60,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 3
    argNames:
    - core
    - path
    - append
    argTypes:
    - Arc<MonoiofsCore>
    - PathBuf
    - bool
    constantsTouched: []
    func_position:
      end: 61
      start: 54
    functionDepth: 32
    functionLinenumber: 54
    functionLinenumberEnd: 61
    functionName: MonoiofsWriter::new
    functionSourceFile: /src/opendal/core/services/monoiofs/src/writer.rs
    functionUses: 1
    functionsReached:
    - Ok
    - CompfsCore::spawn
    - Self::worker_entrypoint
    - oneshot::channel
    - mpsc::unbounded
    - CompfsCore::unwrap
    linkageType: ''
    returnType: Result
    signature: 'pub async fn new(core: Arc<MonoiofsCore>, path: PathBuf, append: bool)
      -> Result<Self>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: OpenOptions::new
      Src: /src/opendal/core/services/monoiofs/src/writer.rs:70,1
    - Dst: Self::write
      Src: /src/opendal/core/services/monoiofs/src/writer.rs:70,1
    - Dst: Result::create
      Src: /src/opendal/core/services/monoiofs/src/writer.rs:70,1
    - Dst: Result::append
      Src: /src/opendal/core/services/monoiofs/src/writer.rs:70,1
    - Dst: Result::truncate
      Src: /src/opendal/core/services/monoiofs/src/writer.rs:70,1
    - Dst: open
      Src: /src/opendal/core/services/monoiofs/src/writer.rs:70,1
    - Dst: oneshot::Sender<Result<()>>::send
      Src: /src/opendal/core/services/monoiofs/src/writer.rs:81,1
    - Dst: Ok
      Src: /src/opendal/core/services/monoiofs/src/writer.rs:81,1
    - Dst: oneshot::Sender<Result<()>>::send
      Src: /src/opendal/core/services/monoiofs/src/writer.rs:90,1
    - Dst: Err
      Src: /src/opendal/core/services/monoiofs/src/writer.rs:90,1
    - Dst: new_std_io_error
      Src: /src/opendal/core/services/monoiofs/src/writer.rs:90,1
    - Dst: mpsc::UnboundedReceiver<WriterRequest>::next
      Src: /src/opendal/core/services/monoiofs/src/writer.rs:96,1
    - Dst: Result::write_all_at
      Src: /src/opendal/core/services/monoiofs/src/writer.rs:102,1
    - Dst: Result::send
      Src: /src/opendal/core/services/monoiofs/src/writer.rs:105,1
    - Dst: bool::map_err
      Src: /src/opendal/core/services/monoiofs/src/writer.rs:105,1
    - Dst: Result::metadata
      Src: /src/opendal/core/services/monoiofs/src/writer.rs:108,1
    - Dst: Result::send
      Src: /src/opendal/core/services/monoiofs/src/writer.rs:109,1
    - Dst: bool::map_err
      Src: /src/opendal/core/services/monoiofs/src/writer.rs:109,1
    - Dst: Result::sync_all
      Src: /src/opendal/core/services/monoiofs/src/writer.rs:112,1
    - Dst: Result::send
      Src: /src/opendal/core/services/monoiofs/src/writer.rs:115,1
    - Dst: bool::map_err
      Src: /src/opendal/core/services/monoiofs/src/writer.rs:115,1
    - Dst: Result::close
      Src: /src/opendal/core/services/monoiofs/src/writer.rs:117,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 61
    argCount: 4
    argNames:
    - path
    - append
    - rx
    - open_result_tx
    argTypes:
    - PathBuf
    - bool
    - mpsc::UnboundedReceiver<WriterRequest>
    - oneshot::Sender<Result<()>>
    constantsTouched: []
    func_position:
      end: 122
      start: 64
    functionDepth: 36
    functionLinenumber: 64
    functionLinenumberEnd: 122
    functionName: MonoiofsWriter::worker_entrypoint
    functionSourceFile: /src/opendal/core/services/monoiofs/src/writer.rs
    functionUses: 0
    functionsReached:
    - Result::metadata
    - Result::append
    - Result::truncate
    - Ok
    - Result::send
    - Result::write_all_at
    - bool::map_err
    - Result::sync_all
    - Self::write
    - Err
    - mpsc::UnboundedReceiver<WriterRequest>::next
    - Result::close
    - Result::create
    - oneshot::Sender<Result<()>>::send
    - OpenOptions::new
    - open
    - new_std_io_error
    linkageType: ''
    returnType: void
    signature: 'async fn worker_entrypoint(path: PathBuf,append: bool,mut rx: mpsc::UnboundedReceiver<WriterRequest>,open_result_tx:
      oneshot::Sender<Result<()>>,)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::has_remaining
      Src: /src/opendal/core/services/monoiofs/src/writer.rs:130,1
    - Dst: Result::current
      Src: /src/opendal/core/services/monoiofs/src/writer.rs:131,1
    - Dst: io::Result::len
      Src: /src/opendal/core/services/monoiofs/src/writer.rs:132,1
    - Dst: oneshot::channel
      Src: /src/opendal/core/services/monoiofs/src/writer.rs:133,1
    - Dst: unwrap
      Src: /src/opendal/core/services/monoiofs/src/writer.rs:134,1
    - Dst: send
      Src: /src/opendal/core/services/monoiofs/src/writer.rs:135,1
    - Dst: unwrap
      Src: /src/opendal/core/services/monoiofs/src/writer.rs:143,1
    - Dst: Result::advance
      Src: /src/opendal/core/services/monoiofs/src/writer.rs:145,1
    - Dst: Ok
      Src: /src/opendal/core/services/monoiofs/src/writer.rs:147,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 33
    argCount: 1
    argNames:
    - bs
    argTypes:
    - Buffer
    constantsTouched: []
    func_position:
      end: 148
      start: 129
    functionDepth: 36
    functionLinenumber: 129
    functionLinenumberEnd: 148
    functionName: MonoiofsWriter::write
    functionSourceFile: /src/opendal/core/services/monoiofs/src/writer.rs
    functionUses: 0
    functionsReached:
    - Ok
    - Result::current
    - Result::has_remaining
    - unwrap
    - io::Result::len
    - Result::advance
    - oneshot::channel
    - send
    linkageType: ''
    returnType: Result
    signature: 'async fn write(&mut self, mut bs: Buffer) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: oneshot::channel
      Src: /src/opendal/core/services/monoiofs/src/writer.rs:154,1
    - Dst: unwrap
      Src: /src/opendal/core/services/monoiofs/src/writer.rs:155,1
    - Dst: send
      Src: /src/opendal/core/services/monoiofs/src/writer.rs:156,1
    - Dst: unwrap
      Src: /src/opendal/core/services/monoiofs/src/writer.rs:157,1
    - Dst: oneshot::channel
      Src: /src/opendal/core/services/monoiofs/src/writer.rs:159,1
    - Dst: unwrap
      Src: /src/opendal/core/services/monoiofs/src/writer.rs:160,1
    - Dst: send
      Src: /src/opendal/core/services/monoiofs/src/writer.rs:161,1
    - Dst: unwrap
      Src: /src/opendal/core/services/monoiofs/src/writer.rs:162,1
    - Dst: is_dir
      Src: /src/opendal/core/services/monoiofs/src/writer.rs:164,1
    - Dst: is_file
      Src: /src/opendal/core/services/monoiofs/src/writer.rs:166,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/monoiofs/src/writer.rs:171,1
    - Dst: Self::with_content_length
      Src: /src/opendal/core/services/monoiofs/src/writer.rs:171,1
    - Dst: len
      Src: /src/opendal/core/services/monoiofs/src/writer.rs:172,1
    - Dst: Self::with_last_modified
      Src: /src/opendal/core/services/monoiofs/src/writer.rs:171,1
    - Dst: Timestamp::try_from
      Src: /src/opendal/core/services/monoiofs/src/writer.rs:173,1
    - Dst: modified
      Src: /src/opendal/core/services/monoiofs/src/writer.rs:174,1
    - Dst: map_err
      Src: /src/opendal/core/services/monoiofs/src/writer.rs:174,1
    - Dst: Ok
      Src: /src/opendal/core/services/monoiofs/src/writer.rs:176,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 52
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 177
      start: 153
    functionDepth: 35
    functionLinenumber: 153
    functionLinenumberEnd: 177
    functionName: MonoiofsWriter::close
    functionSourceFile: /src/opendal/core/services/monoiofs/src/writer.rs
    functionUses: 0
    functionsReached:
    - map_err
    - Metadata::new
    - Timestamp::try_from
    - modified
    - Ok
    - Self::with_content_length
    - unwrap
    - Self::with_last_modified
    - oneshot::channel
    - len
    - send
    - is_file
    - is_dir
    linkageType: ''
    returnType: Result
    signature: async fn close(&mut self) -> Result<Metadata>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/core/services/monoiofs/src/writer.rs:180,1
    - Dst: Error::new
      Src: /src/opendal/core/services/monoiofs/src/writer.rs:180,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 184
      start: 179
    functionDepth: 36
    functionLinenumber: 179
    functionLinenumberEnd: 184
    functionName: MonoiofsWriter::abort
    functionSourceFile: /src/opendal/core/services/monoiofs/src/writer.rs
    functionUses: 0
    functionsReached:
    - Error::new
    - Err
    linkageType: ''
    returnType: Result
    signature: async fn abort(&mut self) -> Result<()>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: register::<Monoiofs>
      Src: /src/opendal/core/services/monoiofs/src/lib.rs:38,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - registry
    argTypes:
    - '&opendal_core::OperatorRegistry'
    constantsTouched: []
    func_position:
      end: 39
      start: 37
    functionDepth: 0
    functionLinenumber: 37
    functionLinenumberEnd: 39
    functionName: register_monoiofs_service
    functionSourceFile: /src/opendal/core/services/monoiofs/src/lib.rs
    functionUses: 1
    functionsReached:
    - register::<Monoiofs>
    linkageType: ''
    returnType: void
    signature: 'pub fn register_monoiofs_service(registry: &opendal_core::OperatorRegistry)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::is_empty
      Src: /src/opendal/core/services/monoiofs/src/backend.rs:45,1
    - Dst: Some
      Src: /src/opendal/core/services/monoiofs/src/backend.rs:48,1
    - Dst: Result::to_string
      Src: /src/opendal/core/services/monoiofs/src/backend.rs:48,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - root
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 51
      start: 44
    functionDepth: 4
    functionLinenumber: 44
    functionLinenumberEnd: 51
    functionName: MonoiofsBuilder::root
    functionSourceFile: /src/opendal/core/services/monoiofs/src/backend.rs
    functionUses: 0
    functionsReached:
    - Result::is_empty
    - Result::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn root(mut self, root: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: map
      Src: /src/opendal/core/services/monoiofs/src/backend.rs:58,1
    - Dst: ok_or
      Src: /src/opendal/core/services/monoiofs/src/backend.rs:58,1
    - Dst: Error::new
      Src: /src/opendal/core/services/monoiofs/src/backend.rs:59,1
    - Dst: Self::with_operation
      Src: /src/opendal/core/services/monoiofs/src/backend.rs:59,1
    - Dst: std::fs::metadata
      Src: /src/opendal/core/services/monoiofs/src/backend.rs:62,1
    - Dst: Result::kind
      Src: /src/opendal/core/services/monoiofs/src/backend.rs:63,1
    - Dst: std::fs::create_dir_all
      Src: /src/opendal/core/services/monoiofs/src/backend.rs:65,1
    - Dst: map_err
      Src: /src/opendal/core/services/monoiofs/src/backend.rs:65,1
    - Dst: Error::new
      Src: /src/opendal/core/services/monoiofs/src/backend.rs:66,1
    - Dst: Self::with_operation
      Src: /src/opendal/core/services/monoiofs/src/backend.rs:66,1
    - Dst: Self::with_context
      Src: /src/opendal/core/services/monoiofs/src/backend.rs:66,1
    - Dst: Result::to_string_lossy
      Src: /src/opendal/core/services/monoiofs/src/backend.rs:68,1
    - Dst: Self::set_source
      Src: /src/opendal/core/services/monoiofs/src/backend.rs:66,1
    - Dst: Result::canonicalize
      Src: /src/opendal/core/services/monoiofs/src/backend.rs:72,1
    - Dst: map_err
      Src: /src/opendal/core/services/monoiofs/src/backend.rs:72,1
    - Dst: Error::new
      Src: /src/opendal/core/services/monoiofs/src/backend.rs:73,1
    - Dst: Self::with_operation
      Src: /src/opendal/core/services/monoiofs/src/backend.rs:73,1
    - Dst: Self::with_context
      Src: /src/opendal/core/services/monoiofs/src/backend.rs:73,1
    - Dst: Result::to_string_lossy
      Src: /src/opendal/core/services/monoiofs/src/backend.rs:78,1
    - Dst: Self::set_source
      Src: /src/opendal/core/services/monoiofs/src/backend.rs:73,1
    - Dst: Ok
      Src: /src/opendal/core/services/monoiofs/src/backend.rs:83,1
    - Dst: Arc::new
      Src: /src/opendal/core/services/monoiofs/src/backend.rs:84,1
    - Dst: MonoiofsCore::new
      Src: /src/opendal/core/services/monoiofs/src/backend.rs:84,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 52
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 86
      start: 57
    functionDepth: 36
    functionLinenumber: 57
    functionLinenumberEnd: 86
    functionName: MonoiofsBuilder::build
    functionSourceFile: /src/opendal/core/services/monoiofs/src/backend.rs
    functionUses: 0
    functionsReached:
    - map_err
    - MonoiofsCore::new
    - std::fs::metadata
    - Result::canonicalize
    - Ok
    - Arc::new
    - Error::new
    - std::fs::create_dir_all
    - map
    - Result::to_string_lossy
    - Result::kind
    - Self::with_operation
    - Self::set_source
    - Self::with_context
    - ok_or
    linkageType: ''
    returnType: Result
    signature: fn build(self) -> Result<impl Service>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: clone
      Src: /src/opendal/core/services/monoiofs/src/backend.rs:102,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 103
      start: 101
    functionDepth: 2
    functionLinenumber: 101
    functionLinenumberEnd: 103
    functionName: MonoiofsBackend::info
    functionSourceFile: /src/opendal/core/services/monoiofs/src/backend.rs
    functionUses: 0
    functionsReached:
    - clone
    linkageType: ''
    returnType: ServiceInfo
    signature: fn info(&self) -> ServiceInfo
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 107
      start: 105
    functionDepth: 0
    functionLinenumber: 105
    functionLinenumberEnd: 107
    functionName: MonoiofsBackend::capability
    functionSourceFile: /src/opendal/core/services/monoiofs/src/backend.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Capability
    signature: fn capability(&self) -> Capability
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: prepare_path
      Src: /src/opendal/core/services/monoiofs/src/backend.rs:110,1
    - Dst: dispatch
      Src: /src/opendal/core/services/monoiofs/src/backend.rs:111,1
    - Dst: monoio::fs::metadata
      Src: /src/opendal/core/services/monoiofs/src/backend.rs:113,1
    - Dst: map_err
      Src: /src/opendal/core/services/monoiofs/src/backend.rs:111,1
    - Dst: Result::is_dir
      Src: /src/opendal/core/services/monoiofs/src/backend.rs:116,1
    - Dst: Result::is_file
      Src: /src/opendal/core/services/monoiofs/src/backend.rs:118,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/monoiofs/src/backend.rs:123,1
    - Dst: Self::with_content_length
      Src: /src/opendal/core/services/monoiofs/src/backend.rs:123,1
    - Dst: Result::len
      Src: /src/opendal/core/services/monoiofs/src/backend.rs:124,1
    - Dst: Self::with_last_modified
      Src: /src/opendal/core/services/monoiofs/src/backend.rs:123,1
    - Dst: Timestamp::try_from
      Src: /src/opendal/core/services/monoiofs/src/backend.rs:125,1
    - Dst: Result::modified
      Src: /src/opendal/core/services/monoiofs/src/backend.rs:126,1
    - Dst: Option::map_err
      Src: /src/opendal/core/services/monoiofs/src/backend.rs:126,1
    - Dst: Ok
      Src: /src/opendal/core/services/monoiofs/src/backend.rs:128,1
    - Dst: RpStat::new
      Src: /src/opendal/core/services/monoiofs/src/backend.rs:128,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 35
    argCount: 3
    argNames:
    - _ctx
    - path
    - _args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpStat
    constantsTouched: []
    func_position:
      end: 129
      start: 109
    functionDepth: 33
    functionLinenumber: 109
    functionLinenumberEnd: 129
    functionName: MonoiofsBackend::stat
    functionSourceFile: /src/opendal/core/services/monoiofs/src/backend.rs
    functionUses: 0
    functionsReached:
    - map_err
    - Metadata::new
    - Timestamp::try_from
    - Result::modified
    - Ok
    - Self::with_content_length
    - Self::with_last_modified
    - monoio::fs::metadata
    - Result::is_dir
    - RpStat::new
    - Result::is_file
    - Result::len
    - prepare_path
    - dispatch
    - Option::map_err
    linkageType: ''
    returnType: Result
    signature: 'async fn stat(&self, _ctx: &OperationContext, path: &str, _args: OpStat)
      -> Result<RpStat>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: prepare_path
      Src: /src/opendal/core/services/monoiofs/src/backend.rs:131,1
    - Dst: Ok
      Src: /src/opendal/core/services/monoiofs/src/backend.rs:132,1
    - Dst: oio::PositionReader::new
      Src: /src/opendal/core/services/monoiofs/src/backend.rs:132,1
    - Dst: MonoiofsPositionReader::new
      Src: /src/opendal/core/services/monoiofs/src/backend.rs:132,1
    - Dst: clone
      Src: /src/opendal/core/services/monoiofs/src/backend.rs:133,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 3
    argNames:
    - _ctx
    - path
    - _args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpRead
    constantsTouched: []
    func_position:
      end: 136
      start: 130
    functionDepth: 33
    functionLinenumber: 130
    functionLinenumberEnd: 136
    functionName: MonoiofsBackend::read
    functionSourceFile: /src/opendal/core/services/monoiofs/src/backend.rs
    functionUses: 0
    functionsReached:
    - oio::PositionReader::new
    - Ok
    - clone
    - prepare_path
    - MonoiofsPositionReader::new
    linkageType: ''
    returnType: Result
    signature: 'fn read(&self, _ctx: &OperationContext, path: &str, _args: OpRead)
      -> Result<Self::Reader>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/core/services/monoiofs/src/backend.rs:139,1
    - Dst: MonoiofsLazyWriter::new
      Src: /src/opendal/core/services/monoiofs/src/backend.rs:139,1
    - Dst: clone
      Src: /src/opendal/core/services/monoiofs/src/backend.rs:139,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - _ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpWrite
    constantsTouched: []
    func_position:
      end: 140
      start: 138
    functionDepth: 32
    functionLinenumber: 138
    functionLinenumberEnd: 140
    functionName: MonoiofsBackend::write
    functionSourceFile: /src/opendal/core/services/monoiofs/src/backend.rs
    functionUses: 0
    functionsReached:
    - MonoiofsLazyWriter::new
    - clone
    - Ok
    linkageType: ''
    returnType: Result
    signature: 'fn write(&self, _ctx: &OperationContext, path: &str, args: OpWrite)
      -> Result<Self::Writer>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/core/services/monoiofs/src/backend.rs:144,1
    - Dst: oio::OneShotDeleter::new
      Src: /src/opendal/core/services/monoiofs/src/backend.rs:144,1
    - Dst: MonoiofsDeleter::new
      Src: /src/opendal/core/services/monoiofs/src/backend.rs:144,1
    - Dst: clone
      Src: /src/opendal/core/services/monoiofs/src/backend.rs:145,1
    - Dst: Ok
      Src: /src/opendal/core/services/monoiofs/src/backend.rs:149,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - _ctx
    argTypes:
    - '&OperationContext'
    constantsTouched: []
    func_position:
      end: 150
      start: 142
    functionDepth: 2
    functionLinenumber: 142
    functionLinenumberEnd: 150
    functionName: MonoiofsBackend::delete
    functionSourceFile: /src/opendal/core/services/monoiofs/src/backend.rs
    functionUses: 0
    functionsReached:
    - oio::OneShotDeleter::new
    - MonoiofsDeleter::new
    - clone
    - Ok
    linkageType: ''
    returnType: Result
    signature: 'fn delete(&self, _ctx: &OperationContext) -> Result<Self::Deleter>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/core/services/monoiofs/src/backend.rs:153,1
    - Dst: Error::new
      Src: /src/opendal/core/services/monoiofs/src/backend.rs:153,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - _ctx
    - _path
    - _args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpList
    constantsTouched: []
    func_position:
      end: 157
      start: 152
    functionDepth: 36
    functionLinenumber: 152
    functionLinenumberEnd: 157
    functionName: MonoiofsBackend::list
    functionSourceFile: /src/opendal/core/services/monoiofs/src/backend.rs
    functionUses: 0
    functionsReached:
    - Error::new
    - Err
    linkageType: ''
    returnType: Result
    signature: 'fn list(&self, _ctx: &OperationContext, _path: &str, _args: OpList)
      -> Result<Self::Lister>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: prepare_path
      Src: /src/opendal/core/services/monoiofs/src/backend.rs:166,1
    - Dst: dispatch
      Src: /src/opendal/core/services/monoiofs/src/backend.rs:168,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/monoiofs/src/backend.rs:170,1
    - Dst: monoio::fs::metadata
      Src: /src/opendal/core/services/monoiofs/src/backend.rs:171,1
    - Dst: map_err
      Src: /src/opendal/core/services/monoiofs/src/backend.rs:168,1
    - Dst: prepare_write_path
      Src: /src/opendal/core/services/monoiofs/src/backend.rs:175,1
    - Dst: dispatch
      Src: /src/opendal/core/services/monoiofs/src/backend.rs:176,1
    - Dst: monoio::fs::rename
      Src: /src/opendal/core/services/monoiofs/src/backend.rs:177,1
    - Dst: map_err
      Src: /src/opendal/core/services/monoiofs/src/backend.rs:176,1
    - Dst: Ok
      Src: /src/opendal/core/services/monoiofs/src/backend.rs:180,1
    - Dst: RpRename::default
      Src: /src/opendal/core/services/monoiofs/src/backend.rs:180,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 33
    argCount: 4
    argNames:
    - _ctx
    - from
    - to
    - _args
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    - OpRename
    constantsTouched: []
    func_position:
      end: 181
      start: 159
    functionDepth: 33
    functionLinenumber: 159
    functionLinenumberEnd: 181
    functionName: MonoiofsBackend::rename
    functionSourceFile: /src/opendal/core/services/monoiofs/src/backend.rs
    functionUses: 0
    functionsReached:
    - Result::clone
    - map_err
    - prepare_write_path
    - Ok
    - monoio::fs::metadata
    - RpRename::default
    - prepare_path
    - monoio::fs::rename
    - dispatch
    linkageType: ''
    returnType: Result
    signature: 'async fn rename(&self,_ctx: &OperationContext,from: &str,to: &str,_args:
      OpRename,) -> Result<RpRename>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: prepare_path
      Src: /src/opendal/core/services/monoiofs/src/backend.rs:189,1
    - Dst: dispatch
      Src: /src/opendal/core/services/monoiofs/src/backend.rs:190,1
    - Dst: monoio::fs::create_dir_all
      Src: /src/opendal/core/services/monoiofs/src/backend.rs:191,1
    - Dst: map_err
      Src: /src/opendal/core/services/monoiofs/src/backend.rs:190,1
    - Dst: Ok
      Src: /src/opendal/core/services/monoiofs/src/backend.rs:194,1
    - Dst: RpCreateDir::default
      Src: /src/opendal/core/services/monoiofs/src/backend.rs:194,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 3
    argNames:
    - _ctx
    - path
    - _args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpCreateDir
    constantsTouched: []
    func_position:
      end: 195
      start: 183
    functionDepth: 33
    functionLinenumber: 183
    functionLinenumberEnd: 195
    functionName: MonoiofsBackend::create_dir
    functionSourceFile: /src/opendal/core/services/monoiofs/src/backend.rs
    functionUses: 0
    functionsReached:
    - map_err
    - Ok
    - RpCreateDir::default
    - monoio::fs::create_dir_all
    - prepare_path
    - dispatch
    linkageType: ''
    returnType: Result
    signature: 'async fn create_dir(&self,_ctx: &OperationContext,path: &str,_args:
      OpCreateDir,) -> Result<RpCreateDir>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: clone
      Src: /src/opendal/core/services/monoiofs/src/backend.rs:205,1
    - Dst: prepare_path
      Src: /src/opendal/core/services/monoiofs/src/backend.rs:206,1
    - Dst: Result::to_string
      Src: /src/opendal/core/services/monoiofs/src/backend.rs:207,1
    - Dst: oio::OneShotCopier::new
      Src: /src/opendal/core/services/monoiofs/src/backend.rs:209,1
    - Dst: CompfsCore::dispatch
      Src: /src/opendal/core/services/monoiofs/src/backend.rs:211,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/monoiofs/src/backend.rs:212,1
    - Dst: monoio::fs::metadata
      Src: /src/opendal/core/services/monoiofs/src/backend.rs:213,1
    - Dst: map_err
      Src: /src/opendal/core/services/monoiofs/src/backend.rs:211,1
    - Dst: CompfsCore::prepare_write_path
      Src: /src/opendal/core/services/monoiofs/src/backend.rs:217,1
    - Dst: CompfsCore::dispatch
      Src: /src/opendal/core/services/monoiofs/src/backend.rs:218,1
    - Dst: CompfsCore::clone
      Src: /src/opendal/core/services/monoiofs/src/backend.rs:219,1
    - Dst: OpenOptions::new
      Src: /src/opendal/core/services/monoiofs/src/backend.rs:221,1
    - Dst: Self::read
      Src: /src/opendal/core/services/monoiofs/src/backend.rs:221,1
    - Dst: Result::open
      Src: /src/opendal/core/services/monoiofs/src/backend.rs:221,1
    - Dst: OpenOptions::new
      Src: /src/opendal/core/services/monoiofs/src/backend.rs:222,1
    - Dst: Self::write
      Src: /src/opendal/core/services/monoiofs/src/backend.rs:222,1
    - Dst: Result::create
      Src: /src/opendal/core/services/monoiofs/src/backend.rs:222,1
    - Dst: Result::truncate
      Src: /src/opendal/core/services/monoiofs/src/backend.rs:222,1
    - Dst: open
      Src: /src/opendal/core/services/monoiofs/src/backend.rs:222,1
    - Dst: get
      Src: /src/opendal/core/services/monoiofs/src/backend.rs:235,1
    - Dst: io::Result::reserve
      Src: /src/opendal/core/services/monoiofs/src/backend.rs:237,1
    - Dst: io::Result::split_off
      Src: /src/opendal/core/services/monoiofs/src/backend.rs:238,1
    - Dst: Result::read_at
      Src: /src/opendal/core/services/monoiofs/src/backend.rs:242,1
    - Dst: Result::write_all_at
      Src: /src/opendal/core/services/monoiofs/src/backend.rs:248,1
    - Dst: io::Result::len
      Src: /src/opendal/core/services/monoiofs/src/backend.rs:250,1
    - Dst: io::Result::clear
      Src: /src/opendal/core/services/monoiofs/src/backend.rs:251,1
    - Dst: put
      Src: /src/opendal/core/services/monoiofs/src/backend.rs:253,1
    - Dst: Ok
      Src: /src/opendal/core/services/monoiofs/src/backend.rs:254,1
    - Dst: map_err
      Src: /src/opendal/core/services/monoiofs/src/backend.rs:218,1
    - Dst: Ok
      Src: /src/opendal/core/services/monoiofs/src/backend.rs:259,1
    - Dst: Metadata::default
      Src: /src/opendal/core/services/monoiofs/src/backend.rs:259,1
    - Dst: Ok
      Src: /src/opendal/core/services/monoiofs/src/backend.rs:262,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 100
    argCount: 5
    argNames:
    - _ctx
    - from
    - to
    - _args
    - _opts
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    - OpCopy
    - OpCopier
    constantsTouched: []
    func_position:
      end: 263
      start: 197
    functionDepth: 33
    functionLinenumber: 197
    functionLinenumberEnd: 263
    functionName: MonoiofsBackend::copy
    functionSourceFile: /src/opendal/core/services/monoiofs/src/backend.rs
    functionUses: 0
    functionsReached:
    - CompfsCore::clone
    - Result::truncate
    - io::Result::len
    - monoio::fs::metadata
    - clone
    - Result::create
    - CompfsCore::dispatch
    - Result::clone
    - map_err
    - get
    - Result::read_at
    - Result::to_string
    - Self::read
    - Ok
    - Result::write_all_at
    - Self::write
    - put
    - io::Result::split_off
    - open
    - oio::OneShotCopier::new
    - Result::open
    - io::Result::reserve
    - OpenOptions::new
    - Metadata::default
    - CompfsCore::prepare_write_path
    - prepare_path
    - io::Result::clear
    linkageType: ''
    returnType: Result
    signature: 'fn copy(&self,_ctx: &OperationContext,from: &str,to: &str,_args: OpCopy,_opts:
      OpCopier,) -> Result<Self::Copier>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/core/services/monoiofs/src/backend.rs:271,1
    - Dst: Error::new
      Src: /src/opendal/core/services/monoiofs/src/backend.rs:271,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - _ctx
    - _path
    - _args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpPresign
    constantsTouched: []
    func_position:
      end: 275
      start: 265
    functionDepth: 36
    functionLinenumber: 265
    functionLinenumberEnd: 275
    functionName: MonoiofsBackend::presign
    functionSourceFile: /src/opendal/core/services/monoiofs/src/backend.rs
    functionUses: 0
    functionsReached:
    - Error::new
    - Err
    linkageType: ''
    returnType: Result
    signature: 'async fn presign(&self,_ctx: &OperationContext,_path: &str,_args:
      OpPresign,) -> Result<RpPresign>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::debug_struct
      Src: /src/opendal/core/services/ftp/src/config.rs:43,1
    - Dst: field
      Src: /src/opendal/core/services/ftp/src/config.rs:43,1
    - Dst: field
      Src: /src/opendal/core/services/ftp/src/config.rs:43,1
    - Dst: finish_non_exhaustive
      Src: /src/opendal/core/services/ftp/src/config.rs:43,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 1
    argNames:
    - f
    argTypes:
    - '&mut std::fmt::Formatter<''_>'
    constantsTouched: []
    func_position:
      end: 47
      start: 42
    functionDepth: 5
    functionLinenumber: 42
    functionLinenumberEnd: 47
    functionName: FtpConfig::fmt
    functionSourceFile: /src/opendal/core/services/ftp/src/config.rs
    functionUses: 0
    functionsReached:
    - field
    - Result::debug_struct
    - finish_non_exhaustive
    linkageType: ''
    returnType: std::fmt::Result
    signature: 'fn fmt(&self, f: &mut std::fmt::Formatter<''_>) -> std::fmt::Result'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::options
      Src: /src/opendal/core/services/ftp/src/config.rs:54,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/ftp/src/config.rs:54,1
    - Dst: Result::authority
      Src: /src/opendal/core/services/ftp/src/config.rs:55,1
    - Dst: Result::insert
      Src: /src/opendal/core/services/ftp/src/config.rs:56,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/ftp/src/config.rs:57,1
    - Dst: Result::root
      Src: /src/opendal/core/services/ftp/src/config.rs:62,1
    - Dst: Result::insert
      Src: /src/opendal/core/services/ftp/src/config.rs:63,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/ftp/src/config.rs:63,1
    - Dst: Result::to_string
      Src: /src/opendal/core/services/ftp/src/config.rs:63,1
    - Dst: Self::from_iter
      Src: /src/opendal/core/services/ftp/src/config.rs:66,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 25
    argCount: 1
    argNames:
    - uri
    argTypes:
    - '&opendal_core::OperatorUri'
    constantsTouched: []
    func_position:
      end: 67
      start: 53
    functionDepth: 35
    functionLinenumber: 53
    functionLinenumberEnd: 67
    functionName: FtpConfig::from_uri
    functionSourceFile: /src/opendal/core/services/ftp/src/config.rs
    functionUses: 2
    functionsReached:
    - Result::clone
    - Self::from_iter
    - Result::to_string
    - Result::insert
    - '&str::to_string'
    - Result::root
    - Result::authority
    - Result::options
    linkageType: ''
    returnType: opendal_core::Result
    signature: 'fn from_uri(uri: &opendal_core::OperatorUri) -> opendal_core::Result<Self>'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 71
      start: 69
    functionDepth: 0
    functionLinenumber: 69
    functionLinenumberEnd: 71
    functionName: FtpConfig::into_builder
    functionSourceFile: /src/opendal/core/services/ftp/src/config.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Self::Builder
    signature: fn into_builder(self) -> Self::Builder
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - core
    argTypes:
    - Arc<FtpCore>
    constantsTouched: []
    func_position:
      end: 36
      start: 34
    functionDepth: 0
    functionLinenumber: 34
    functionLinenumberEnd: 36
    functionName: FtpDeleter::new
    functionSourceFile: /src/opendal/core/services/ftp/src/deleter.rs
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(core: Arc<FtpCore>) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: ftp_connect
      Src: /src/opendal/core/services/ftp/src/deleter.rs:41,1
    - Dst: ends_with
      Src: /src/opendal/core/services/ftp/src/deleter.rs:43,1
    - Dst: rmdir
      Src: /src/opendal/core/services/ftp/src/deleter.rs:44,1
    - Dst: rm
      Src: /src/opendal/core/services/ftp/src/deleter.rs:46,1
    - Dst: Err
      Src: /src/opendal/core/services/ftp/src/deleter.rs:56,1
    - Dst: super::core::format_ftp_error
      Src: /src/opendal/core/services/ftp/src/deleter.rs:56,1
    - Dst: Ok
      Src: /src/opendal/core/services/ftp/src/deleter.rs:60,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 25
    argCount: 2
    argNames:
    - path
    argTypes:
    - String
    - OpDelete
    constantsTouched: []
    func_position:
      end: 61
      start: 40
    functionDepth: 38
    functionLinenumber: 40
    functionLinenumberEnd: 61
    functionName: FtpDeleter::delete_once
    functionSourceFile: /src/opendal/core/services/ftp/src/deleter.rs
    functionUses: 0
    functionsReached:
    - Ok
    - super::core::format_ftp_error
    - ends_with
    - Err
    - ftp_connect
    - rm
    - rmdir
    linkageType: ''
    returnType: Result
    signature: 'async fn delete_once(&self, path: String, _: OpDelete) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: to_string
      Src: /src/opendal/core/services/ftp/src/lister.rs:35,1
    - Dst: Vec<String>::into_iter
      Src: /src/opendal/core/services/ftp/src/lister.rs:36,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - path
    - files
    argTypes:
    - '&str'
    - Vec<String>
    constantsTouched: []
    func_position:
      end: 38
      start: 33
    functionDepth: 2
    functionLinenumber: 33
    functionLinenumberEnd: 38
    functionName: FtpLister::new
    functionSourceFile: /src/opendal/core/services/ftp/src/lister.rs
    functionUses: 1
    functionsReached:
    - to_string
    - Vec<String>::into_iter
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(path: &str, files: Vec<String>) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: next
      Src: /src/opendal/core/services/ftp/src/lister.rs:43,1
    - Dst: File::from_str
      Src: /src/opendal/core/services/ftp/src/lister.rs:44,1
    - Dst: as_str
      Src: /src/opendal/core/services/ftp/src/lister.rs:44,1
    - Dst: Result::map_err
      Src: /src/opendal/core/services/ftp/src/lister.rs:44,1
    - Dst: Error::new
      Src: /src/opendal/core/services/ftp/src/lister.rs:45,1
    - Dst: Self::set_source
      Src: /src/opendal/core/services/ftp/src/lister.rs:45,1
    - Dst: Ok
      Src: /src/opendal/core/services/ftp/src/lister.rs:47,1
    - Dst: to_string
      Src: /src/opendal/core/services/ftp/src/lister.rs:50,1
    - Dst: std::fmt::Result::name
      Src: /src/opendal/core/services/ftp/src/lister.rs:50,1
    - Dst: std::fmt::Result::is_file
      Src: /src/opendal/core/services/ftp/src/lister.rs:52,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/ftp/src/lister.rs:53,1
    - Dst: std::fmt::Result::is_directory
      Src: /src/opendal/core/services/ftp/src/lister.rs:54,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/ftp/src/lister.rs:55,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/ftp/src/lister.rs:57,1
    - Dst: Result::set_content_length
      Src: /src/opendal/core/services/ftp/src/lister.rs:59,1
    - Dst: std::fmt::Result::size
      Src: /src/opendal/core/services/ftp/src/lister.rs:59,1
    - Dst: Result::set_last_modified
      Src: /src/opendal/core/services/ftp/src/lister.rs:60,1
    - Dst: Timestamp::try_from
      Src: /src/opendal/core/services/ftp/src/lister.rs:60,1
    - Dst: std::fmt::Result::modified
      Src: /src/opendal/core/services/ftp/src/lister.rs:60,1
    - Dst: std::fmt::Result::is_file
      Src: /src/opendal/core/services/ftp/src/lister.rs:62,1
    - Dst: oio::Entry::new
      Src: /src/opendal/core/services/ftp/src/lister.rs:63,1
    - Dst: std::fmt::Result::is_directory
      Src: /src/opendal/core/services/ftp/src/lister.rs:64,1
    - Dst: oio::Entry::new
      Src: /src/opendal/core/services/ftp/src/lister.rs:65,1
    - Dst: oio::Entry::new
      Src: /src/opendal/core/services/ftp/src/lister.rs:67,1
    - Dst: Ok
      Src: /src/opendal/core/services/ftp/src/lister.rs:70,1
    - Dst: Some
      Src: /src/opendal/core/services/ftp/src/lister.rs:70,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 58
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 71
      start: 42
    functionDepth: 34
    functionLinenumber: 42
    functionLinenumberEnd: 71
    functionName: FtpLister::next
    functionSourceFile: /src/opendal/core/services/ftp/src/lister.rs
    functionUses: 0
    functionsReached:
    - std::fmt::Result::is_directory
    - std::fmt::Result::name
    - std::fmt::Result::modified
    - std::fmt::Result::is_file
    - Ok
    - as_str
    - next
    - Result::map_err
    - Metadata::new
    - std::fmt::Result::size
    - Some
    - Self::set_source
    - to_string
    - Timestamp::try_from
    - oio::Entry::new
    - File::from_str
    - Result::set_last_modified
    - Error::new
    - Result::set_content_length
    linkageType: ''
    returnType: Result
    signature: async fn next(&mut self) -> Result<Option<oio::Entry>>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: (Vec::offset
      Src: /src/opendal/core/services/ftp/src/reader.rs:55,1
    - Dst: (Vec::size
      Src: /src/opendal/core/services/ftp/src/reader.rs:55,1
    - Dst: Option::unwrap_or
      Src: /src/opendal/core/services/ftp/src/reader.rs:55,1
    - Dst: bounded::Object<Manager>::resume_transfer
      Src: /src/opendal/core/services/ftp/src/reader.rs:57,1
    - Dst: map_err
      Src: /src/opendal/core/services/ftp/src/reader.rs:57,1
    - Dst: bounded::Object<Manager>::retr_as_stream
      Src: /src/opendal/core/services/ftp/src/reader.rs:62,1
    - Dst: map_err
      Src: /src/opendal/core/services/ftp/src/reader.rs:62,1
    - Dst: take
      Src: /src/opendal/core/services/ftp/src/reader.rs:62,1
    - Dst: Ok
      Src: /src/opendal/core/services/ftp/src/reader.rs:68,1
    - Dst: Box::new
      Src: /src/opendal/core/services/ftp/src/reader.rs:71,1
    - Dst: BytesMut::new
      Src: /src/opendal/core/services/ftp/src/reader.rs:73,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 32
    argCount: 3
    argNames:
    - ftp_stream
    - path
    - range
    argTypes:
    - bounded::Object<Manager>
    - String
    - BytesRange
    constantsTouched: []
    func_position:
      end: 75
      start: 50
    functionDepth: 2
    functionLinenumber: 50
    functionLinenumberEnd: 75
    functionName: FtpReadStream::new
    functionSourceFile: /src/opendal/core/services/ftp/src/reader.rs
    functionUses: 1
    functionsReached:
    - map_err
    - Ok
    - (Vec::size
    - Box::new
    - bounded::Object<Manager>::retr_as_stream
    - Option::unwrap_or
    - take
    - BytesMut::new
    - (Vec::offset
    - bounded::Object<Manager>::resume_transfer
    linkageType: ''
    returnType: Result
    signature: 'pub async fn new(mut ftp_stream: bounded::Object<Manager>,path: String,range:
      BytesRange,) -> Result<Self>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: resize
      Src: /src/opendal/core/services/ftp/src/reader.rs:80,1
    - Dst: read
      Src: /src/opendal/core/services/ftp/src/reader.rs:81,1
    - Dst: map_err
      Src: /src/opendal/core/services/ftp/src/reader.rs:81,1
    - Dst: Ok
      Src: /src/opendal/core/services/ftp/src/reader.rs:86,1
    - Dst: Buffer::from
      Src: /src/opendal/core/services/ftp/src/reader.rs:86,1
    - Dst: split_to
      Src: /src/opendal/core/services/ftp/src/reader.rs:86,1
    - Dst: freeze
      Src: /src/opendal/core/services/ftp/src/reader.rs:86,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 21
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 87
      start: 79
    functionDepth: 31
    functionLinenumber: 79
    functionLinenumberEnd: 87
    functionName: FtpReadStream::read
    functionSourceFile: /src/opendal/core/services/ftp/src/reader.rs
    functionUses: 0
    functionsReached:
    - map_err
    - read
    - Ok
    - freeze
    - split_to
    - resize
    - Buffer::from
    linkageType: ''
    returnType: Result
    signature: async fn read(&mut self) -> Result<Buffer>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: to_string
      Src: /src/opendal/core/services/ftp/src/reader.rs:100,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - backend
    - path
    argTypes:
    - FtpBackend
    - '&str'
    - OpRead
    constantsTouched: []
    func_position:
      end: 102
      start: 97
    functionDepth: 2
    functionLinenumber: 97
    functionLinenumberEnd: 102
    functionName: FtpReader::new
    functionSourceFile: /src/opendal/core/services/ftp/src/reader.rs
    functionUses: 1
    functionsReached:
    - to_string
    linkageType: ''
    returnType: Self
    signature: 'pub(super) fn new(backend: FtpBackend, path: &str, _: OpRead) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: to_string
      Src: /src/opendal/core/services/ftp/src/reader.rs:116,1
    - Dst: append
      Src: /src/opendal/core/services/ftp/src/reader.rs:117,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - core
    - path
    - op
    argTypes:
    - Arc<FtpCore>
    - '&str'
    - OpWrite
    constantsTouched: []
    func_position:
      end: 120
      start: 113
    functionDepth: 31
    functionLinenumber: 113
    functionLinenumberEnd: 120
    functionName: FtpLazyWriter::new
    functionSourceFile: /src/opendal/core/services/ftp/src/reader.rs
    functionUses: 1
    functionsReached:
    - to_string
    - append
    linkageType: ''
    returnType: Self
    signature: 'pub(super) fn new(core: Arc<FtpCore>, path: &str, op: OpWrite) ->
      Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: is_none
      Src: /src/opendal/core/services/ftp/src/reader.rs:123,1
    - Dst: get_parent
      Src: /src/opendal/core/services/ftp/src/reader.rs:124,1
    - Dst: '&str::split'
      Src: /src/opendal/core/services/ftp/src/reader.rs:125,1
    - Dst: collect
      Src: /src/opendal/core/services/ftp/src/reader.rs:125,1
    - Dst: ftp_connect
      Src: /src/opendal/core/services/ftp/src/reader.rs:128,1
    - Dst: String::new
      Src: /src/opendal/core/services/ftp/src/reader.rs:129,1
    - Dst: is_empty
      Src: /src/opendal/core/services/ftp/src/reader.rs:132,1
    - Dst: Self::push_str
      Src: /src/opendal/core/services/ftp/src/reader.rs:135,1
    - Dst: Self::push
      Src: /src/opendal/core/services/ftp/src/reader.rs:136,1
    - Dst: mkdir
      Src: /src/opendal/core/services/ftp/src/reader.rs:137,1
    - Dst: Err
      Src: /src/opendal/core/services/ftp/src/reader.rs:145,1
    - Dst: super::core::format_ftp_error
      Src: /src/opendal/core/services/ftp/src/reader.rs:145,1
    - Dst: then_some
      Src: /src/opendal/core/services/ftp/src/reader.rs:150,1
    - Dst: build_tmp_path_of
      Src: /src/opendal/core/services/ftp/src/reader.rs:150,1
    - Dst: FtpWriter::new
      Src: /src/opendal/core/services/ftp/src/reader.rs:151,1
    - Dst: clone
      Src: /src/opendal/core/services/ftp/src/reader.rs:151,1
    - Dst: Some
      Src: /src/opendal/core/services/ftp/src/reader.rs:152,1
    - Dst: Ok
      Src: /src/opendal/core/services/ftp/src/reader.rs:155,1
    - Dst: as_mut
      Src: /src/opendal/core/services/ftp/src/reader.rs:155,1
    - Dst: expect
      Src: /src/opendal/core/services/ftp/src/reader.rs:155,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 65
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 156
      start: 122
    functionDepth: 36
    functionLinenumber: 122
    functionLinenumberEnd: 156
    functionName: FtpLazyWriter::inner
    functionSourceFile: /src/opendal/core/services/ftp/src/reader.rs
    functionUses: 1
    functionsReached:
    - is_none
    - collect
    - as_mut
    - clone
    - Self::push_str
    - build_tmp_path_of
    - expect
    - Ok
    - then_some
    - mkdir
    - FtpWriter::new
    - Self::push
    - is_empty
    - Some
    - ftp_connect
    - '&str::split'
    - get_parent
    - String::new
    - super::core::format_ftp_error
    - Err
    linkageType: ''
    returnType: Result
    signature: async fn inner(&mut self) -> Result<&mut FtpWriter>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: FtpLazyWriter::inner
      Src: /src/opendal/core/services/ftp/src/reader.rs:161,1
    - Dst: write
      Src: /src/opendal/core/services/ftp/src/reader.rs:161,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 1
    argNames:
    - bs
    argTypes:
    - Buffer
    constantsTouched: []
    func_position:
      end: 162
      start: 160
    functionDepth: 37
    functionLinenumber: 160
    functionLinenumberEnd: 162
    functionName: FtpLazyWriter::write
    functionSourceFile: /src/opendal/core/services/ftp/src/reader.rs
    functionUses: 0
    functionsReached:
    - write
    - FtpLazyWriter::inner
    linkageType: ''
    returnType: Result
    signature: 'async fn write(&mut self, bs: Buffer) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self::close
      Src: /src/opendal/core/services/ftp/src/reader.rs:166,1
    - Dst: Ok
      Src: /src/opendal/core/services/ftp/src/reader.rs:167,1
    - Dst: Metadata::default
      Src: /src/opendal/core/services/ftp/src/reader.rs:167,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 169
      start: 164
    functionDepth: 3
    functionLinenumber: 164
    functionLinenumberEnd: 169
    functionName: FtpLazyWriter::close
    functionSourceFile: /src/opendal/core/services/ftp/src/reader.rs
    functionUses: 0
    functionsReached:
    - Self::close
    - Metadata::default
    - Ok
    linkageType: ''
    returnType: Result
    signature: async fn close(&mut self) -> Result<Metadata>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self::abort
      Src: /src/opendal/core/services/ftp/src/reader.rs:173,1
    - Dst: Err
      Src: /src/opendal/core/services/ftp/src/reader.rs:174,1
    - Dst: Error::new
      Src: /src/opendal/core/services/ftp/src/reader.rs:174,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 179
      start: 171
    functionDepth: 31
    functionLinenumber: 171
    functionLinenumberEnd: 179
    functionName: FtpLazyWriter::abort
    functionSourceFile: /src/opendal/core/services/ftp/src/reader.rs
    functionUses: 0
    functionsReached:
    - Err
    - Error::new
    - Self::abort
    linkageType: ''
    returnType: Result
    signature: async fn abort(&mut self) -> Result<()>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: to_string
      Src: /src/opendal/core/services/ftp/src/reader.rs:192,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - core
    - path
    argTypes:
    - Arc<FtpCore>
    - '&str'
    constantsTouched: []
    func_position:
      end: 195
      start: 189
    functionDepth: 2
    functionLinenumber: 189
    functionLinenumberEnd: 195
    functionName: FtpLazyLister::new
    functionSourceFile: /src/opendal/core/services/ftp/src/reader.rs
    functionUses: 1
    functionsReached:
    - to_string
    linkageType: ''
    returnType: Self
    signature: 'pub(super) fn new(core: Arc<FtpCore>, path: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: is_none
      Src: /src/opendal/core/services/ftp/src/reader.rs:198,1
    - Dst: ftp_connect
      Src: /src/opendal/core/services/ftp/src/reader.rs:199,1
    - Dst: Some
      Src: /src/opendal/core/services/ftp/src/reader.rs:204,1
    - Dst: as_str
      Src: /src/opendal/core/services/ftp/src/reader.rs:204,1
    - Dst: list
      Src: /src/opendal/core/services/ftp/src/reader.rs:206,1
    - Dst: map_err
      Src: /src/opendal/core/services/ftp/src/reader.rs:206,1
    - Dst: Some
      Src: /src/opendal/core/services/ftp/src/reader.rs:208,1
    - Dst: FtpLister::new
      Src: /src/opendal/core/services/ftp/src/reader.rs:208,1
    - Dst: Ok
      Src: /src/opendal/core/services/ftp/src/reader.rs:214,1
    - Dst: as_mut
      Src: /src/opendal/core/services/ftp/src/reader.rs:214,1
    - Dst: expect
      Src: /src/opendal/core/services/ftp/src/reader.rs:214,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 39
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 215
      start: 197
    functionDepth: 3
    functionLinenumber: 197
    functionLinenumberEnd: 215
    functionName: FtpLazyLister::inner
    functionSourceFile: /src/opendal/core/services/ftp/src/reader.rs
    functionUses: 1
    functionsReached:
    - is_none
    - map_err
    - as_mut
    - expect
    - Ok
    - FtpLister::new
    - Some
    - ftp_connect
    - as_str
    - list
    linkageType: ''
    returnType: Result
    signature: async fn inner(&mut self) -> Result<&mut FtpLister>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: FtpLazyLister::inner
      Src: /src/opendal/core/services/ftp/src/reader.rs:220,1
    - Dst: next
      Src: /src/opendal/core/services/ftp/src/reader.rs:220,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 221
      start: 219
    functionDepth: 4
    functionLinenumber: 219
    functionLinenumberEnd: 221
    functionName: FtpLazyLister::next
    functionSourceFile: /src/opendal/core/services/ftp/src/reader.rs
    functionUses: 0
    functionsReached:
    - next
    - FtpLazyLister::inner
    linkageType: ''
    returnType: Result
    signature: async fn next(&mut self) -> Result<Option<oio::Entry>>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: as_str
      Src: /src/opendal/core/services/ftp/src/reader.rs:227,1
    - Dst: ftp_connect
      Src: /src/opendal/core/services/ftp/src/reader.rs:229,1
    - Dst: RpRead::default
      Src: /src/opendal/core/services/ftp/src/reader.rs:230,1
    - Dst: FtpReadStream::new
      Src: /src/opendal/core/services/ftp/src/reader.rs:231,1
    - Dst: to_string
      Src: /src/opendal/core/services/ftp/src/reader.rs:231,1
    - Dst: Ok
      Src: /src/opendal/core/services/ftp/src/reader.rs:233,1
    - Dst: Box::new
      Src: /src/opendal/core/services/ftp/src/reader.rs:233,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 20
    argCount: 1
    argNames:
    - range
    argTypes:
    - BytesRange
    constantsTouched: []
    func_position:
      end: 234
      start: 225
    functionDepth: 3
    functionLinenumber: 225
    functionLinenumberEnd: 234
    functionName: FtpReader::open
    functionSourceFile: /src/opendal/core/services/ftp/src/reader.rs
    functionUses: 0
    functionsReached:
    - to_string
    - Ok
    - Box::new
    - ftp_connect
    - as_str
    - RpRead::default
    - FtpReadStream::new
    linkageType: ''
    returnType: Result
    signature: 'async fn open(&self, range: BytesRange) -> Result<(RpRead, Box<dyn
      oio::ReadStreamDyn>)>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: bounded::Pool::new
      Src: /src/opendal/core/services/ftp/src/core.rs:42,1
    - Dst: bounded::PoolConfig::new
      Src: /src/opendal/core/services/ftp/src/core.rs:42,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - info
    - capability
    - manager
    argTypes:
    - ServiceInfo
    - Capability
    - Manager
    constantsTouched: []
    func_position:
      end: 48
      start: 41
    functionDepth: 0
    functionLinenumber: 41
    functionLinenumberEnd: 48
    functionName: FtpCore::new
    functionSourceFile: /src/opendal/core/services/ftp/src/core.rs
    functionUses: 1
    functionsReached:
    - bounded::PoolConfig::new
    - bounded::Pool::new
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(info: ServiceInfo, capability: Capability, manager: Manager)
      -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: clone
      Src: /src/opendal/core/services/ftp/src/core.rs:51,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 52
      start: 50
    functionDepth: 2
    functionLinenumber: 50
    functionLinenumberEnd: 52
    functionName: FtpCore::info
    functionSourceFile: /src/opendal/core/services/ftp/src/core.rs
    functionUses: 0
    functionsReached:
    - clone
    linkageType: ''
    returnType: ServiceInfo
    signature: pub fn info(&self) -> ServiceInfo
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 56
      start: 54
    functionDepth: 0
    functionLinenumber: 54
    functionLinenumberEnd: 56
    functionName: FtpCore::capability
    functionSourceFile: /src/opendal/core/services/ftp/src/core.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Capability
    signature: pub fn capability(&self) -> Capability
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: get
      Src: /src/opendal/core/services/ftp/src/core.rs:59,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames: []
    argTypes:
    - Operation
    constantsTouched: []
    func_position:
      end: 70
      start: 58
    functionDepth: 2
    functionLinenumber: 58
    functionLinenumberEnd: 70
    functionName: FtpCore::ftp_connect
    functionSourceFile: /src/opendal/core/services/ftp/src/core.rs
    functionUses: 0
    functionsReached:
    - get
    linkageType: ''
    returnType: Result
    signature: 'pub async fn ftp_connect(&self, _: Operation) -> Result<bounded::Object<Manager>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Error::new
      Src: /src/opendal/core/services/ftp/src/core.rs:165,1
    - Dst: Self::set_source
      Src: /src/opendal/core/services/ftp/src/core.rs:165,1
    - Dst: Error::set_temporary
      Src: /src/opendal/core/services/ftp/src/core.rs:168,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 18
    argCount: 1
    argNames:
    - err
    argTypes:
    - FtpError
    constantsTouched: []
    func_position:
      end: 172
      start: 149
    functionDepth: 36
    functionLinenumber: 149
    functionLinenumberEnd: 172
    functionName: err::format_ftp_error
    functionSourceFile: /src/opendal/core/services/ftp/src/core.rs
    functionUses: 0
    functionsReached:
    - Self::set_source
    - Error::set_temporary
    - Error::new
    linkageType: ''
    returnType: Error
    signature: 'pub(crate) fn format_ftp_error(err: FtpError) -> Error'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 3
    argNames:
    - ftp_stream
    - target_path
    - tmp_path
    argTypes:
    - bounded::Object<Manager>
    - String
    - Option<String>
    constantsTouched: []
    func_position:
      end: 57
      start: 46
    functionDepth: 0
    functionLinenumber: 46
    functionLinenumberEnd: 57
    functionName: FtpWriter::new
    functionSourceFile: /src/opendal/core/services/ftp/src/writer.rs
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(ftp_stream: bounded::Object<Manager>,target_path: String,tmp_path:
      Option<String>,) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: is_none
      Src: /src/opendal/core/services/ftp/src/writer.rs:68,1
    - Dst: Some
      Src: /src/opendal/core/services/ftp/src/writer.rs:69,1
    - Dst: Box::new
      Src: /src/opendal/core/services/ftp/src/writer.rs:69,1
    - Dst: append_with_stream
      Src: /src/opendal/core/services/ftp/src/writer.rs:70,1
    - Dst: map_err
      Src: /src/opendal/core/services/ftp/src/writer.rs:70,1
    - Dst: Result::has_remaining
      Src: /src/opendal/core/services/ftp/src/writer.rs:77,1
    - Dst: as_mut
      Src: /src/opendal/core/services/ftp/src/writer.rs:78,1
    - Dst: unwrap
      Src: /src/opendal/core/services/ftp/src/writer.rs:78,1
    - Dst: write
      Src: /src/opendal/core/services/ftp/src/writer.rs:78,1
    - Dst: Result::chunk
      Src: /src/opendal/core/services/ftp/src/writer.rs:82,1
    - Dst: map_err
      Src: /src/opendal/core/services/ftp/src/writer.rs:78,1
    - Dst: Error::new
      Src: /src/opendal/core/services/ftp/src/writer.rs:85,1
    - Dst: Self::set_source
      Src: /src/opendal/core/services/ftp/src/writer.rs:85,1
    - Dst: Result::advance
      Src: /src/opendal/core/services/ftp/src/writer.rs:87,1
    - Dst: Ok
      Src: /src/opendal/core/services/ftp/src/writer.rs:90,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 48
    argCount: 1
    argNames:
    - bs
    argTypes:
    - Buffer
    constantsTouched: []
    func_position:
      end: 91
      start: 61
    functionDepth: 36
    functionLinenumber: 61
    functionLinenumberEnd: 91
    functionName: FtpWriter::write
    functionSourceFile: /src/opendal/core/services/ftp/src/writer.rs
    functionUses: 0
    functionsReached:
    - is_none
    - map_err
    - as_mut
    - append_with_stream
    - Ok
    - Box::new
    - Result::has_remaining
    - unwrap
    - Result::advance
    - Some
    - Error::new
    - Result::chunk
    - Self::set_source
    - write
    linkageType: ''
    returnType: Result
    signature: 'async fn write(&mut self, mut bs: Buffer) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: take
      Src: /src/opendal/core/services/ftp/src/writer.rs:94,1
    - Dst: flush
      Src: /src/opendal/core/services/ftp/src/writer.rs:96,1
    - Dst: map_err
      Src: /src/opendal/core/services/ftp/src/writer.rs:96,1
    - Dst: Error::new
      Src: /src/opendal/core/services/ftp/src/writer.rs:97,1
    - Dst: Self::set_source
      Src: /src/opendal/core/services/ftp/src/writer.rs:97,1
    - Dst: finalize_put_stream
      Src: /src/opendal/core/services/ftp/src/writer.rs:100,1
    - Dst: map_err
      Src: /src/opendal/core/services/ftp/src/writer.rs:100,1
    - Dst: rename
      Src: /src/opendal/core/services/ftp/src/writer.rs:106,1
    - Dst: map_err
      Src: /src/opendal/core/services/ftp/src/writer.rs:106,1
    - Dst: Ok
      Src: /src/opendal/core/services/ftp/src/writer.rs:113,1
    - Dst: Metadata::default
      Src: /src/opendal/core/services/ftp/src/writer.rs:113,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 40
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 114
      start: 93
    functionDepth: 37
    functionLinenumber: 93
    functionLinenumberEnd: 114
    functionName: FtpWriter::close
    functionSourceFile: /src/opendal/core/services/ftp/src/writer.rs
    functionUses: 0
    functionsReached:
    - map_err
    - finalize_put_stream
    - Metadata::default
    - Ok
    - Error::new
    - take
    - rename
    - flush
    - Self::set_source
    linkageType: ''
    returnType: Result
    signature: async fn close(&mut self) -> Result<Metadata>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/core/services/ftp/src/writer.rs:117,1
    - Dst: Error::new
      Src: /src/opendal/core/services/ftp/src/writer.rs:117,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 121
      start: 116
    functionDepth: 36
    functionLinenumber: 116
    functionLinenumberEnd: 121
    functionName: FtpWriter::abort
    functionSourceFile: /src/opendal/core/services/ftp/src/writer.rs
    functionUses: 0
    functionsReached:
    - Error::new
    - Err
    linkageType: ''
    returnType: Result
    signature: async fn abort(&mut self) -> Result<()>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: register::<Ftp>
      Src: /src/opendal/core/services/ftp/src/lib.rs:23,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - registry
    argTypes:
    - '&opendal_core::OperatorRegistry'
    constantsTouched: []
    func_position:
      end: 24
      start: 22
    functionDepth: 0
    functionLinenumber: 22
    functionLinenumberEnd: 24
    functionName: register_ftp_service
    functionSourceFile: /src/opendal/core/services/ftp/src/lib.rs
    functionUses: 1
    functionsReached:
    - register::<Ftp>
    linkageType: ''
    returnType: void
    signature: 'pub fn register_ftp_service(registry: &opendal_core::OperatorRegistry)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self::is_empty
      Src: /src/opendal/core/services/ftp/src/backend.rs:49,1
    - Dst: Some
      Src: /src/opendal/core/services/ftp/src/backend.rs:52,1
    - Dst: Self::to_string
      Src: /src/opendal/core/services/ftp/src/backend.rs:52,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - endpoint
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 56
      start: 48
    functionDepth: 4
    functionLinenumber: 48
    functionLinenumberEnd: 56
    functionName: FtpBuilder::endpoint
    functionSourceFile: /src/opendal/core/services/ftp/src/backend.rs
    functionUses: 0
    functionsReached:
    - Self::is_empty
    - Self::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn endpoint(mut self, endpoint: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::is_empty
      Src: /src/opendal/core/services/ftp/src/backend.rs:60,1
    - Dst: Some
      Src: /src/opendal/core/services/ftp/src/backend.rs:63,1
    - Dst: Result::to_string
      Src: /src/opendal/core/services/ftp/src/backend.rs:63,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - root
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 67
      start: 59
    functionDepth: 4
    functionLinenumber: 59
    functionLinenumberEnd: 67
    functionName: FtpBuilder::root
    functionSourceFile: /src/opendal/core/services/ftp/src/backend.rs
    functionUses: 0
    functionsReached:
    - Result::is_empty
    - Result::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn root(mut self, root: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self::is_empty
      Src: /src/opendal/core/services/ftp/src/backend.rs:71,1
    - Dst: Some
      Src: /src/opendal/core/services/ftp/src/backend.rs:74,1
    - Dst: Self::to_string
      Src: /src/opendal/core/services/ftp/src/backend.rs:74,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - user
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 78
      start: 70
    functionDepth: 4
    functionLinenumber: 70
    functionLinenumberEnd: 78
    functionName: FtpBuilder::user
    functionSourceFile: /src/opendal/core/services/ftp/src/backend.rs
    functionUses: 0
    functionsReached:
    - Self::is_empty
    - Self::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn user(mut self, user: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Option::is_empty
      Src: /src/opendal/core/services/ftp/src/backend.rs:82,1
    - Dst: Some
      Src: /src/opendal/core/services/ftp/src/backend.rs:85,1
    - Dst: Option::to_string
      Src: /src/opendal/core/services/ftp/src/backend.rs:85,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - password
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 89
      start: 81
    functionDepth: 4
    functionLinenumber: 81
    functionLinenumberEnd: 89
    functionName: FtpBuilder::password
    functionSourceFile: /src/opendal/core/services/ftp/src/backend.rs
    functionUses: 0
    functionsReached:
    - Option::to_string
    - Option::is_empty
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn password(mut self, password: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/core/services/ftp/src/backend.rs:98,1
    - Dst: Error::new
      Src: /src/opendal/core/services/ftp/src/backend.rs:98,1
    - Dst: parse::<Uri>
      Src: /src/opendal/core/services/ftp/src/backend.rs:102,1
    - Dst: Err
      Src: /src/opendal/core/services/ftp/src/backend.rs:104,1
    - Dst: Error::new
      Src: /src/opendal/core/services/ftp/src/backend.rs:104,1
    - Dst: Self::with_context
      Src: /src/opendal/core/services/ftp/src/backend.rs:104,1
    - Dst: Self::set_source
      Src: /src/opendal/core/services/ftp/src/backend.rs:104,1
    - Dst: host
      Src: /src/opendal/core/services/ftp/src/backend.rs:111,1
    - Dst: unwrap_or
      Src: /src/opendal/core/services/ftp/src/backend.rs:111,1
    - Dst: port_u16
      Src: /src/opendal/core/services/ftp/src/backend.rs:112,1
    - Dst: unwrap_or
      Src: /src/opendal/core/services/ftp/src/backend.rs:112,1
    - Dst: scheme_str
      Src: /src/opendal/core/services/ftp/src/backend.rs:116,1
    - Dst: Err
      Src: /src/opendal/core/services/ftp/src/backend.rs:123,1
    - Dst: Error::new
      Src: /src/opendal/core/services/ftp/src/backend.rs:123,1
    - Dst: Self::with_context
      Src: /src/opendal/core/services/ftp/src/backend.rs:123,1
    - Dst: normalize_root
      Src: /src/opendal/core/services/ftp/src/backend.rs:131,1
    - Dst: unwrap_or_default
      Src: /src/opendal/core/services/ftp/src/backend.rs:131,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/ftp/src/backend.rs:134,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/ftp/src/backend.rs:135,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/ftp/src/backend.rs:139,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/ftp/src/backend.rs:140,1
    - Dst: ServiceInfo::new
      Src: /src/opendal/core/services/ftp/src/backend.rs:143,1
    - Dst: Default::default
      Src: /src/opendal/core/services/ftp/src/backend.rs:160,1
    - Dst: Self::clone
      Src: /src/opendal/core/services/ftp/src/backend.rs:164,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/ftp/src/backend.rs:165,1
    - Dst: Self::clone
      Src: /src/opendal/core/services/ftp/src/backend.rs:166,1
    - Dst: Option::clone
      Src: /src/opendal/core/services/ftp/src/backend.rs:167,1
    - Dst: Arc::new
      Src: /src/opendal/core/services/ftp/src/backend.rs:171,1
    - Dst: FtpCore::new
      Src: /src/opendal/core/services/ftp/src/backend.rs:171,1
    - Dst: clone
      Src: /src/opendal/core/services/ftp/src/backend.rs:171,1
    - Dst: Ok
      Src: /src/opendal/core/services/ftp/src/backend.rs:172,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 77
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 173
      start: 95
    functionDepth: 36
    functionLinenumber: 95
    functionLinenumberEnd: 173
    functionName: FtpBuilder::build
    functionSourceFile: /src/opendal/core/services/ftp/src/backend.rs
    functionUses: 0
    functionsReached:
    - host
    - Default::default
    - Arc::new
    - clone
    - Self::clone
    - scheme_str
    - Self::with_context
    - Result::clone
    - ServiceInfo::new
    - Ok
    - normalize_root
    - '&str::to_string'
    - unwrap_or_default
    - unwrap_or
    - FtpCore::new
    - Self::set_source
    - parse::<Uri>
    - Error::new
    - Err
    - port_u16
    - Option::clone
    linkageType: ''
    returnType: Result
    signature: fn build(self) -> Result<impl Service>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::debug_struct
      Src: /src/opendal/core/services/ftp/src/backend.rs:183,1
    - Dst: finish
      Src: /src/opendal/core/services/ftp/src/backend.rs:183,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - f
    argTypes:
    - '&mut std::fmt::Formatter<''_>'
    constantsTouched: []
    func_position:
      end: 184
      start: 182
    functionDepth: 3
    functionLinenumber: 182
    functionLinenumberEnd: 184
    functionName: FtpBackend::fmt
    functionSourceFile: /src/opendal/core/services/ftp/src/backend.rs
    functionUses: 0
    functionsReached:
    - finish
    - Result::debug_struct
    linkageType: ''
    returnType: std::fmt::Result
    signature: 'fn fmt(&self, f: &mut std::fmt::Formatter<''_>) -> std::fmt::Result'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: info
      Src: /src/opendal/core/services/ftp/src/backend.rs:195,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 196
      start: 194
    functionDepth: 2
    functionLinenumber: 194
    functionLinenumberEnd: 196
    functionName: FtpBackend::info
    functionSourceFile: /src/opendal/core/services/ftp/src/backend.rs
    functionUses: 0
    functionsReached:
    - info
    linkageType: ''
    returnType: ServiceInfo
    signature: fn info(&self) -> ServiceInfo
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: capability
      Src: /src/opendal/core/services/ftp/src/backend.rs:199,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 200
      start: 198
    functionDepth: 2
    functionLinenumber: 198
    functionLinenumberEnd: 200
    functionName: FtpBackend::capability
    functionSourceFile: /src/opendal/core/services/ftp/src/backend.rs
    functionUses: 0
    functionsReached:
    - capability
    linkageType: ''
    returnType: Capability
    signature: fn capability(&self) -> Capability
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: ftp_connect
      Src: /src/opendal/core/services/ftp/src/backend.rs:208,1
    - Dst: split_inclusive
      Src: /src/opendal/core/services/ftp/src/backend.rs:210,1
    - Dst: collect
      Src: /src/opendal/core/services/ftp/src/backend.rs:210,1
    - Dst: String::new
      Src: /src/opendal/core/services/ftp/src/backend.rs:212,1
    - Dst: Self::push_str
      Src: /src/opendal/core/services/ftp/src/backend.rs:215,1
    - Dst: mkdir
      Src: /src/opendal/core/services/ftp/src/backend.rs:216,1
    - Dst: Err
      Src: /src/opendal/core/services/ftp/src/backend.rs:224,1
    - Dst: super::core::format_ftp_error
      Src: /src/opendal/core/services/ftp/src/backend.rs:224,1
    - Dst: Ok
      Src: /src/opendal/core/services/ftp/src/backend.rs:229,1
    - Dst: RpCreateDir::default
      Src: /src/opendal/core/services/ftp/src/backend.rs:229,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 28
    argCount: 3
    argNames:
    - _ctx
    - path
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpCreateDir
    constantsTouched: []
    func_position:
      end: 230
      start: 202
    functionDepth: 36
    functionLinenumber: 202
    functionLinenumberEnd: 230
    functionName: FtpBackend::create_dir
    functionSourceFile: /src/opendal/core/services/ftp/src/backend.rs
    functionUses: 0
    functionsReached:
    - collect
    - String::new
    - Ok
    - RpCreateDir::default
    - super::core::format_ftp_error
    - Err
    - ftp_connect
    - split_inclusive
    - Self::push_str
    - mkdir
    linkageType: ''
    returnType: Result
    signature: 'async fn create_dir(&self,_ctx: &OperationContext,path: &str,_: OpCreateDir,)
      -> Result<RpCreateDir>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: FtpBackend::ftp_stat
      Src: /src/opendal/core/services/ftp/src/backend.rs:233,1
    - Dst: Result::is_file
      Src: /src/opendal/core/services/ftp/src/backend.rs:235,1
    - Dst: Result::is_directory
      Src: /src/opendal/core/services/ftp/src/backend.rs:237,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/ftp/src/backend.rs:243,1
    - Dst: Result::set_content_length
      Src: /src/opendal/core/services/ftp/src/backend.rs:244,1
    - Dst: Result::size
      Src: /src/opendal/core/services/ftp/src/backend.rs:244,1
    - Dst: Result::set_last_modified
      Src: /src/opendal/core/services/ftp/src/backend.rs:245,1
    - Dst: Timestamp::try_from
      Src: /src/opendal/core/services/ftp/src/backend.rs:245,1
    - Dst: Result::modified
      Src: /src/opendal/core/services/ftp/src/backend.rs:245,1
    - Dst: Ok
      Src: /src/opendal/core/services/ftp/src/backend.rs:247,1
    - Dst: RpStat::new
      Src: /src/opendal/core/services/ftp/src/backend.rs:247,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 26
    argCount: 3
    argNames:
    - _ctx
    - path
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpStat
    constantsTouched: []
    func_position:
      end: 248
      start: 232
    functionDepth: 35
    functionLinenumber: 232
    functionLinenumberEnd: 248
    functionName: FtpBackend::stat
    functionSourceFile: /src/opendal/core/services/ftp/src/backend.rs
    functionUses: 0
    functionsReached:
    - Metadata::new
    - Timestamp::try_from
    - Result::modified
    - FtpBackend::ftp_stat
    - Ok
    - Result::size
    - RpStat::new
    - Result::set_last_modified
    - Result::is_file
    - Result::set_content_length
    - Result::is_directory
    linkageType: ''
    returnType: Result
    signature: 'async fn stat(&self, _ctx: &OperationContext, path: &str, _: OpStat)
      -> Result<RpStat>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/core/services/ftp/src/backend.rs:251,1
    - Dst: oio::StreamReader::new
      Src: /src/opendal/core/services/ftp/src/backend.rs:251,1
    - Dst: FtpReader::new
      Src: /src/opendal/core/services/ftp/src/backend.rs:251,1
    - Dst: FtpBackend::clone
      Src: /src/opendal/core/services/ftp/src/backend.rs:252,1
    - Dst: Ok
      Src: /src/opendal/core/services/ftp/src/backend.rs:258,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - _ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpRead
    constantsTouched: []
    func_position:
      end: 259
      start: 249
    functionDepth: 3
    functionLinenumber: 249
    functionLinenumberEnd: 259
    functionName: FtpBackend::read
    functionSourceFile: /src/opendal/core/services/ftp/src/backend.rs
    functionUses: 0
    functionsReached:
    - oio::StreamReader::new
    - FtpBackend::clone
    - FtpReader::new
    - Ok
    linkageType: ''
    returnType: Result
    signature: 'fn read(&self, _ctx: &OperationContext, path: &str, args: OpRead)
      -> Result<Self::Reader>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/core/services/ftp/src/backend.rs:262,1
    - Dst: FtpLazyWriter::new
      Src: /src/opendal/core/services/ftp/src/backend.rs:262,1
    - Dst: clone
      Src: /src/opendal/core/services/ftp/src/backend.rs:262,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - _ctx
    - path
    - op
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpWrite
    constantsTouched: []
    func_position:
      end: 263
      start: 261
    functionDepth: 32
    functionLinenumber: 261
    functionLinenumberEnd: 263
    functionName: FtpBackend::write
    functionSourceFile: /src/opendal/core/services/ftp/src/backend.rs
    functionUses: 0
    functionsReached:
    - FtpLazyWriter::new
    - clone
    - Ok
    linkageType: ''
    returnType: Result
    signature: 'fn write(&self, _ctx: &OperationContext, path: &str, op: OpWrite)
      -> Result<Self::Writer>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/core/services/ftp/src/backend.rs:267,1
    - Dst: oio::OneShotDeleter::new
      Src: /src/opendal/core/services/ftp/src/backend.rs:267,1
    - Dst: FtpDeleter::new
      Src: /src/opendal/core/services/ftp/src/backend.rs:267,1
    - Dst: clone
      Src: /src/opendal/core/services/ftp/src/backend.rs:267,1
    - Dst: Ok
      Src: /src/opendal/core/services/ftp/src/backend.rs:269,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - _ctx
    argTypes:
    - '&OperationContext'
    constantsTouched: []
    func_position:
      end: 270
      start: 265
    functionDepth: 2
    functionLinenumber: 265
    functionLinenumberEnd: 270
    functionName: FtpBackend::delete
    functionSourceFile: /src/opendal/core/services/ftp/src/backend.rs
    functionUses: 0
    functionsReached:
    - oio::OneShotDeleter::new
    - clone
    - FtpDeleter::new
    - Ok
    linkageType: ''
    returnType: Result
    signature: 'fn delete(&self, _ctx: &OperationContext) -> Result<Self::Deleter>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/core/services/ftp/src/backend.rs:273,1
    - Dst: FtpLazyLister::new
      Src: /src/opendal/core/services/ftp/src/backend.rs:273,1
    - Dst: clone
      Src: /src/opendal/core/services/ftp/src/backend.rs:273,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - _ctx
    - path
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpList
    constantsTouched: []
    func_position:
      end: 274
      start: 272
    functionDepth: 3
    functionLinenumber: 272
    functionLinenumberEnd: 274
    functionName: FtpBackend::list
    functionSourceFile: /src/opendal/core/services/ftp/src/backend.rs
    functionUses: 0
    functionsReached:
    - FtpLazyLister::new
    - clone
    - Ok
    linkageType: ''
    returnType: Result
    signature: 'fn list(&self, _ctx: &OperationContext, path: &str, _: OpList) ->
      Result<Self::Lister>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/core/services/ftp/src/backend.rs:284,1
    - Dst: Error::new
      Src: /src/opendal/core/services/ftp/src/backend.rs:284,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 5
    argNames:
    - _ctx
    - _from
    - _to
    - _args
    - _opts
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    - OpCopy
    - OpCopier
    constantsTouched: []
    func_position:
      end: 288
      start: 276
    functionDepth: 36
    functionLinenumber: 276
    functionLinenumberEnd: 288
    functionName: FtpBackend::copy
    functionSourceFile: /src/opendal/core/services/ftp/src/backend.rs
    functionUses: 0
    functionsReached:
    - Error::new
    - Err
    linkageType: ''
    returnType: Result
    signature: 'fn copy(&self,_ctx: &OperationContext,_from: &str,_to: &str,_args:
      OpCopy,_opts: OpCopier,) -> Result<Self::Copier>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/core/services/ftp/src/backend.rs:297,1
    - Dst: Error::new
      Src: /src/opendal/core/services/ftp/src/backend.rs:297,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - _ctx
    - _from
    - _to
    - _args
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    - OpRename
    constantsTouched: []
    func_position:
      end: 301
      start: 290
    functionDepth: 36
    functionLinenumber: 290
    functionLinenumberEnd: 301
    functionName: FtpBackend::rename
    functionSourceFile: /src/opendal/core/services/ftp/src/backend.rs
    functionUses: 0
    functionsReached:
    - Error::new
    - Err
    linkageType: ''
    returnType: Result
    signature: 'async fn rename(&self,_ctx: &OperationContext,_from: &str,_to: &str,_args:
      OpRename,) -> Result<RpRename>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/core/services/ftp/src/backend.rs:309,1
    - Dst: Error::new
      Src: /src/opendal/core/services/ftp/src/backend.rs:309,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - _ctx
    - _path
    - _args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpPresign
    constantsTouched: []
    func_position:
      end: 313
      start: 303
    functionDepth: 36
    functionLinenumber: 303
    functionLinenumberEnd: 313
    functionName: FtpBackend::presign
    functionSourceFile: /src/opendal/core/services/ftp/src/backend.rs
    functionUses: 0
    functionsReached:
    - Error::new
    - Err
    linkageType: ''
    returnType: Result
    signature: 'async fn presign(&self,_ctx: &OperationContext,_path: &str,_args:
      OpPresign,) -> Result<RpPresign>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: ftp_connect
      Src: /src/opendal/core/services/ftp/src/backend.rs:318,1
    - Dst: get_parent
      Src: /src/opendal/core/services/ftp/src/backend.rs:320,1
    - Dst: get_basename
      Src: /src/opendal/core/services/ftp/src/backend.rs:320,1
    - Dst: Some
      Src: /src/opendal/core/services/ftp/src/backend.rs:322,1
    - Dst: list
      Src: /src/opendal/core/services/ftp/src/backend.rs:324,1
    - Dst: map_err
      Src: /src/opendal/core/services/ftp/src/backend.rs:324,1
    - Dst: into_iter
      Src: /src/opendal/core/services/ftp/src/backend.rs:327,1
    - Dst: filter_map
      Src: /src/opendal/core/services/ftp/src/backend.rs:327,1
    - Dst: File::from_str
      Src: /src/opendal/core/services/ftp/src/backend.rs:329,1
    - Dst: Result::as_str
      Src: /src/opendal/core/services/ftp/src/backend.rs:329,1
    - Dst: Result::ok
      Src: /src/opendal/core/services/ftp/src/backend.rs:329,1
    - Dst: filter
      Src: /src/opendal/core/services/ftp/src/backend.rs:327,1
    - Dst: Result::name
      Src: /src/opendal/core/services/ftp/src/backend.rs:330,1
    - Dst: '&str::trim_end_matches'
      Src: /src/opendal/core/services/ftp/src/backend.rs:330,1
    - Dst: "into_iter()\n            .filter_map(|file| File::from_str(file.as_str()).ok())\n\
        \            .filter(|f| f.name() == basename.trim_end_matches('/'))\n   \
        \         .collect::<Vec<File>>"
      Src: /src/opendal/core/services/ftp/src/backend.rs:327,1
    - Dst: is_empty
      Src: /src/opendal/core/services/ftp/src/backend.rs:333,1
    - Dst: Err
      Src: /src/opendal/core/services/ftp/src/backend.rs:334,1
    - Dst: Error::new
      Src: /src/opendal/core/services/ftp/src/backend.rs:334,1
    - Dst: Ok
      Src: /src/opendal/core/services/ftp/src/backend.rs:339,1
    - Dst: remove
      Src: /src/opendal/core/services/ftp/src/backend.rs:339,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 46
    argCount: 1
    argNames:
    - path
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 341
      start: 317
    functionDepth: 34
    functionLinenumber: 317
    functionLinenumberEnd: 341
    functionName: FtpBackend::ftp_stat
    functionSourceFile: /src/opendal/core/services/ftp/src/backend.rs
    functionUses: 1
    functionsReached:
    - remove
    - filter_map
    - map_err
    - Ok
    - Result::as_str
    - Some
    - is_empty
    - ftp_connect
    - "into_iter()\n            .filter_map(|file| File::from_str(file.as_str()).ok())\n\
      \            .filter(|f| f.name() == basename.trim_end_matches('/'))\n     \
      \       .collect::<Vec<File>>"
    - '&str::trim_end_matches'
    - filter
    - Result::ok
    - get_parent
    - File::from_str
    - get_basename
    - into_iter
    - Err
    - list
    - Result::name
    - Error::new
    linkageType: ''
    returnType: Result
    signature: 'pub async fn ftp_stat(&self, path: &str) -> Result<File>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: FtpBuilder::default
      Src: /src/opendal/core/services/ftp/src/backend.rs:353,1
    - Dst: Self::endpoint
      Src: /src/opendal/core/services/ftp/src/backend.rs:353,1
    - Dst: Self::build
      Src: /src/opendal/core/services/ftp/src/backend.rs:353,1
    - Dst: FtpBuilder::default
      Src: /src/opendal/core/services/ftp/src/backend.rs:359,1
    - Dst: Self::endpoint
      Src: /src/opendal/core/services/ftp/src/backend.rs:359,1
    - Dst: Self::build
      Src: /src/opendal/core/services/ftp/src/backend.rs:359,1
    - Dst: FtpBuilder::default
      Src: /src/opendal/core/services/ftp/src/backend.rs:365,1
    - Dst: Self::endpoint
      Src: /src/opendal/core/services/ftp/src/backend.rs:365,1
    - Dst: Self::build
      Src: /src/opendal/core/services/ftp/src/backend.rs:365,1
    - Dst: FtpBuilder::default
      Src: /src/opendal/core/services/ftp/src/backend.rs:371,1
    - Dst: Self::endpoint
      Src: /src/opendal/core/services/ftp/src/backend.rs:371,1
    - Dst: Self::build
      Src: /src/opendal/core/services/ftp/src/backend.rs:371,1
    - Dst: Timestamp::unwrap_err
      Src: /src/opendal/core/services/ftp/src/backend.rs:375,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 27
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 377
      start: 351
    functionDepth: 37
    functionLinenumber: 351
    functionLinenumberEnd: 377
    functionName: build_test::test_build
    functionSourceFile: /src/opendal/core/services/ftp/src/backend.rs
    functionUses: 0
    functionsReached:
    - FtpBuilder::default
    - Self::endpoint
    - Self::build
    - Timestamp::unwrap_err
    linkageType: ''
    returnType: void
    signature: fn test_build()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: OperatorUri::new
      Src: /src/opendal/core/services/ftp/src/backend.rs:381,1
    - Dst: Vec::<(String, String)>::new
      Src: /src/opendal/core/services/ftp/src/backend.rs:383,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/services/ftp/src/backend.rs:381,1
    - Dst: FtpConfig::from_uri
      Src: /src/opendal/core/services/ftp/src/backend.rs:387,1
    - Dst: opendal_core::Result::unwrap
      Src: /src/opendal/core/services/ftp/src/backend.rs:387,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 390
      start: 380
    functionDepth: 29
    functionLinenumber: 380
    functionLinenumberEnd: 390
    functionName: build_test::from_uri_sets_endpoint_and_root
    functionSourceFile: /src/opendal/core/services/ftp/src/backend.rs
    functionUses: 0
    functionsReached:
    - FtpConfig::from_uri
    - Vec::<(String, String)>::new
    - OperatorUri::new
    - Result::unwrap
    - opendal_core::Result::unwrap
    linkageType: ''
    returnType: void
    signature: fn from_uri_sets_endpoint_and_root()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: OperatorUri::new
      Src: /src/opendal/core/services/ftp/src/backend.rs:394,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/services/ftp/src/backend.rs:394,1
    - Dst: FtpConfig::from_uri
      Src: /src/opendal/core/services/ftp/src/backend.rs:403,1
    - Dst: opendal_core::Result::unwrap
      Src: /src/opendal/core/services/ftp/src/backend.rs:403,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 407
      start: 393
    functionDepth: 29
    functionLinenumber: 393
    functionLinenumberEnd: 407
    functionName: build_test::from_uri_applies_credentials_from_query
    functionSourceFile: /src/opendal/core/services/ftp/src/backend.rs
    functionUses: 0
    functionsReached:
    - OperatorUri::new
    - Result::unwrap
    - opendal_core::Result::unwrap
    - FtpConfig::from_uri
    linkageType: ''
    returnType: void
    signature: fn from_uri_applies_credentials_from_query()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::debug_struct
      Src: /src/opendal/core/services/opfs/src/config.rs:36,1
    - Dst: field
      Src: /src/opendal/core/services/opfs/src/config.rs:36,1
    - Dst: finish_non_exhaustive
      Src: /src/opendal/core/services/opfs/src/config.rs:36,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - f
    argTypes:
    - '&mut std::fmt::Formatter<''_>'
    constantsTouched: []
    func_position:
      end: 39
      start: 35
    functionDepth: 5
    functionLinenumber: 35
    functionLinenumberEnd: 39
    functionName: OpfsConfig::fmt
    functionSourceFile: /src/opendal/core/services/opfs/src/config.rs
    functionUses: 0
    functionsReached:
    - field
    - Result::debug_struct
    - finish_non_exhaustive
    linkageType: ''
    returnType: std::fmt::Result
    signature: 'fn fmt(&self, f: &mut std::fmt::Formatter<''_>) -> std::fmt::Result'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 47
      start: 45
    functionDepth: 0
    functionLinenumber: 45
    functionLinenumberEnd: 47
    functionName: OpfsConfig::into_builder
    functionSourceFile: /src/opendal/core/services/opfs/src/config.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Self::Builder
    signature: fn into_builder(self) -> Self::Builder
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - core
    argTypes:
    - Arc<OpfsCore>
    constantsTouched: []
    func_position:
      end: 36
      start: 34
    functionDepth: 0
    functionLinenumber: 34
    functionLinenumberEnd: 36
    functionName: OpfsDeleter::new
    functionSourceFile: /src/opendal/core/services/opfs/src/deleter.rs
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(core: Arc<OpfsCore>) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/opfs/src/deleter.rs:41,1
    - Dst: get_parent_dir_and_name
      Src: /src/opendal/core/services/opfs/src/deleter.rs:42,1
    - Dst: FileSystemRemoveOptions::new
      Src: /src/opendal/core/services/opfs/src/deleter.rs:44,1
    - Dst: Result::set_recursive
      Src: /src/opendal/core/services/opfs/src/deleter.rs:45,1
    - Dst: OpStat::recursive
      Src: /src/opendal/core/services/opfs/src/deleter.rs:45,1
    - Dst: JsFuture::from
      Src: /src/opendal/core/services/opfs/src/deleter.rs:47,1
    - Dst: Result::remove_entry_with_options
      Src: /src/opendal/core/services/opfs/src/deleter.rs:47,1
    - Dst: Ok
      Src: /src/opendal/core/services/opfs/src/deleter.rs:48,1
    - Dst: parse_js_error
      Src: /src/opendal/core/services/opfs/src/deleter.rs:50,1
    - Dst: Error::kind
      Src: /src/opendal/core/services/opfs/src/deleter.rs:52,1
    - Dst: Ok
      Src: /src/opendal/core/services/opfs/src/deleter.rs:53,1
    - Dst: Err
      Src: /src/opendal/core/services/opfs/src/deleter.rs:55,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 33
    argCount: 2
    argNames:
    - path
    - args
    argTypes:
    - String
    - OpDelete
    constantsTouched: []
    func_position:
      end: 59
      start: 40
    functionDepth: 38
    functionLinenumber: 40
    functionLinenumberEnd: 59
    functionName: OpfsDeleter::delete_once
    functionSourceFile: /src/opendal/core/services/opfs/src/deleter.rs
    functionUses: 0
    functionsReached:
    - Result::set_recursive
    - FileSystemRemoveOptions::new
    - get_parent_dir_and_name
    - Ok
    - JsFuture::from
    - build_abs_path
    - Err
    - Error::kind
    - parse_js_error
    - Result::remove_entry_with_options
    - OpStat::recursive
    linkageType: ''
    returnType: Result
    signature: 'async fn delete_once(&self, path: String, args: OpDelete) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: String::new
      Src: /src/opendal/core/services/opfs/src/lister.rs:40,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - core
    - path
    argTypes:
    - Arc<OpfsCore>
    - String
    constantsTouched: []
    func_position:
      end: 46
      start: 37
    functionDepth: 2
    functionLinenumber: 37
    functionLinenumberEnd: 46
    functionName: OpfsLister::new
    functionSourceFile: /src/opendal/core/services/opfs/src/lister.rs
    functionUses: 1
    functionsReached:
    - String::new
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(core: Arc<OpfsCore>, path: String) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: is_some
      Src: /src/opendal/core/services/opfs/src/lister.rs:49,1
    - Dst: Ok
      Src: /src/opendal/core/services/opfs/src/lister.rs:50,1
    - Dst: build_abs_path
      Src: /src/opendal/core/services/opfs/src/lister.rs:53,1
    - Dst: get_directory_handle
      Src: /src/opendal/core/services/opfs/src/lister.rs:54,1
    - Dst: Some
      Src: /src/opendal/core/services/opfs/src/lister.rs:55,1
    - Dst: SendWrapper::new
      Src: /src/opendal/core/services/opfs/src/lister.rs:55,1
    - Dst: Result::entries
      Src: /src/opendal/core/services/opfs/src/lister.rs:55,1
    - Dst: Ok
      Src: /src/opendal/core/services/opfs/src/lister.rs:57,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 28
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 58
      start: 48
    functionDepth: 37
    functionLinenumber: 48
    functionLinenumberEnd: 58
    functionName: OpfsLister::init_iter
    functionSourceFile: /src/opendal/core/services/opfs/src/lister.rs
    functionUses: 1
    functionsReached:
    - Result::entries
    - SendWrapper::new
    - Ok
    - build_abs_path
    - Some
    - get_directory_handle
    - is_some
    linkageType: ''
    returnType: Result
    signature: async fn init_iter(&mut self) -> Result<()>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: OpfsLister::init_iter
      Src: /src/opendal/core/services/opfs/src/lister.rs:63,1
    - Dst: as_ref
      Src: /src/opendal/core/services/opfs/src/lister.rs:65,1
    - Dst: expect
      Src: /src/opendal/core/services/opfs/src/lister.rs:65,1
    - Dst: JsFuture::from
      Src: /src/opendal/core/services/opfs/src/lister.rs:69,1
    - Dst: next
      Src: /src/opendal/core/services/opfs/src/lister.rs:69,1
    - Dst: Result::map_err
      Src: /src/opendal/core/services/opfs/src/lister.rs:69,1
    - Dst: map_err
      Src: /src/opendal/core/services/opfs/src/lister.rs:69,1
    - Dst: js_sys::Reflect::get
      Src: /src/opendal/core/services/opfs/src/lister.rs:73,1
    - Dst: '&str::into'
      Src: /src/opendal/core/services/opfs/src/lister.rs:73,1
    - Dst: Option::unwrap_or
      Src: /src/opendal/core/services/opfs/src/lister.rs:73,1
    - Dst: as_bool
      Src: /src/opendal/core/services/opfs/src/lister.rs:73,1
    - Dst: unwrap_or
      Src: /src/opendal/core/services/opfs/src/lister.rs:73,1
    - Dst: Ok
      Src: /src/opendal/core/services/opfs/src/lister.rs:78,1
    - Dst: js_sys::Reflect::get
      Src: /src/opendal/core/services/opfs/src/lister.rs:81,1
    - Dst: '&str::into'
      Src: /src/opendal/core/services/opfs/src/lister.rs:81,1
    - Dst: Option::map_err
      Src: /src/opendal/core/services/opfs/src/lister.rs:81,1
    - Dst: Vec::unchecked_into
      Src: /src/opendal/core/services/opfs/src/lister.rs:82,1
    - Dst: get
      Src: /src/opendal/core/services/opfs/src/lister.rs:83,1
    - Dst: as_string
      Src: /src/opendal/core/services/opfs/src/lister.rs:83,1
    - Dst: unwrap_or_default
      Src: /src/opendal/core/services/opfs/src/lister.rs:83,1
    - Dst: get
      Src: /src/opendal/core/services/opfs/src/lister.rs:84,1
    - Dst: js_sys::Reflect::get
      Src: /src/opendal/core/services/opfs/src/lister.rs:86,1
    - Dst: '&str::into'
      Src: /src/opendal/core/services/opfs/src/lister.rs:86,1
    - Dst: Option::ok
      Src: /src/opendal/core/services/opfs/src/lister.rs:86,1
    - Dst: Self::and_then
      Src: /src/opendal/core/services/opfs/src/lister.rs:86,1
    - Dst: Result::as_string
      Src: /src/opendal/core/services/opfs/src/lister.rs:88,1
    - Dst: unwrap_or_default
      Src: /src/opendal/core/services/opfs/src/lister.rs:86,1
    - Dst: Ok
      Src: /src/opendal/core/services/opfs/src/lister.rs:97,1
    - Dst: Some
      Src: /src/opendal/core/services/opfs/src/lister.rs:97,1
    - Dst: oio::Entry::new
      Src: /src/opendal/core/services/opfs/src/lister.rs:97,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/opfs/src/lister.rs:97,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 77
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 98
      start: 62
    functionDepth: 38
    functionLinenumber: 62
    functionLinenumberEnd: 98
    functionName: OpfsLister::next
    functionSourceFile: /src/opendal/core/services/opfs/src/lister.rs
    functionUses: 0
    functionsReached:
    - JsFuture::from
    - js_sys::Reflect::get
    - Option::map_err
    - map_err
    - get
    - expect
    - as_bool
    - Ok
    - Vec::unchecked_into
    - unwrap_or_default
    - unwrap_or
    - next
    - Result::map_err
    - Metadata::new
    - Result::as_string
    - '&str::into'
    - Option::unwrap_or
    - Some
    - Self::and_then
    - oio::Entry::new
    - OpfsLister::init_iter
    - as_string
    - as_ref
    - Option::ok
    linkageType: ''
    returnType: Result
    signature: async fn next(&mut self) -> Result<Option<oio::Entry>>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: SendWrapper::new
      Src: /src/opendal/core/services/opfs/src/reader.rs:43,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - handle
    - range
    argTypes:
    - FileSystemFileHandle
    - BytesRange
    constantsTouched: []
    func_position:
      end: 47
      start: 41
    functionDepth: 2
    functionLinenumber: 41
    functionLinenumberEnd: 47
    functionName: OpfsReadStream::new
    functionSourceFile: /src/opendal/core/services/opfs/src/reader.rs
    functionUses: 1
    functionsReached:
    - SendWrapper::new
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(handle: FileSystemFileHandle, range: BytesRange) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/core/services/opfs/src/reader.rs:53,1
    - Dst: Buffer::new
      Src: /src/opendal/core/services/opfs/src/reader.rs:53,1
    - Dst: JsFuture::from
      Src: /src/opendal/core/services/opfs/src/reader.rs:57,1
    - Dst: get_file
      Src: /src/opendal/core/services/opfs/src/reader.rs:57,1
    - Dst: and_then
      Src: /src/opendal/core/services/opfs/src/reader.rs:57,1
    - Dst: map_err
      Src: /src/opendal/core/services/opfs/src/reader.rs:57,1
    - Dst: Result::as_ref
      Src: /src/opendal/core/services/opfs/src/reader.rs:62,1
    - Dst: is_full
      Src: /src/opendal/core/services/opfs/src/reader.rs:63,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/opfs/src/reader.rs:64,1
    - Dst: offset
      Src: /src/opendal/core/services/opfs/src/reader.rs:66,1
    - Dst: size
      Src: /src/opendal/core/services/opfs/src/reader.rs:67,1
    - Dst: Result::size
      Src: /src/opendal/core/services/opfs/src/reader.rs:69,1
    - Dst: Result::slice_with_f64_and_f64
      Src: /src/opendal/core/services/opfs/src/reader.rs:71,1
    - Dst: map_err
      Src: /src/opendal/core/services/opfs/src/reader.rs:71,1
    - Dst: JsFuture::from
      Src: /src/opendal/core/services/opfs/src/reader.rs:75,1
    - Dst: Result::array_buffer
      Src: /src/opendal/core/services/opfs/src/reader.rs:75,1
    - Dst: map_err
      Src: /src/opendal/core/services/opfs/src/reader.rs:75,1
    - Dst: js_sys::Uint8Array::new
      Src: /src/opendal/core/services/opfs/src/reader.rs:78,1
    - Dst: Ok
      Src: /src/opendal/core/services/opfs/src/reader.rs:80,1
    - Dst: Buffer::from
      Src: /src/opendal/core/services/opfs/src/reader.rs:80,1
    - Dst: Self::to_vec
      Src: /src/opendal/core/services/opfs/src/reader.rs:80,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 58
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 81
      start: 51
    functionDepth: 32
    functionLinenumber: 51
    functionLinenumberEnd: 81
    functionName: OpfsReadStream::read
    functionSourceFile: /src/opendal/core/services/opfs/src/reader.rs
    functionUses: 0
    functionsReached:
    - map_err
    - Result::clone
    - Buffer::new
    - Self::to_vec
    - and_then
    - Ok
    - is_full
    - Result::size
    - get_file
    - JsFuture::from
    - offset
    - Result::slice_with_f64_and_f64
    - size
    - Result::array_buffer
    - Result::as_ref
    - js_sys::Uint8Array::new
    - Buffer::from
    linkageType: ''
    returnType: Result
    signature: async fn read(&mut self) -> Result<Buffer>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: to_string
      Src: /src/opendal/core/services/opfs/src/reader.rs:94,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - backend
    - path
    argTypes:
    - OpfsBackend
    - '&str'
    - OpRead
    constantsTouched: []
    func_position:
      end: 96
      start: 91
    functionDepth: 2
    functionLinenumber: 91
    functionLinenumberEnd: 96
    functionName: OpfsReader::new
    functionSourceFile: /src/opendal/core/services/opfs/src/reader.rs
    functionUses: 1
    functionsReached:
    - to_string
    linkageType: ''
    returnType: Self
    signature: 'pub(super) fn new(backend: OpfsBackend, path: &str, _: OpRead) ->
      Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: as_str
      Src: /src/opendal/core/services/opfs/src/reader.rs:102,1
    - Dst: build_abs_path
      Src: /src/opendal/core/services/opfs/src/reader.rs:104,1
    - Dst: get_file_handle
      Src: /src/opendal/core/services/opfs/src/reader.rs:105,1
    - Dst: RpRead::default
      Src: /src/opendal/core/services/opfs/src/reader.rs:106,1
    - Dst: OpfsReadStream::new
      Src: /src/opendal/core/services/opfs/src/reader.rs:107,1
    - Dst: Ok
      Src: /src/opendal/core/services/opfs/src/reader.rs:109,1
    - Dst: Box::new
      Src: /src/opendal/core/services/opfs/src/reader.rs:109,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 19
    argCount: 1
    argNames:
    - range
    argTypes:
    - BytesRange
    constantsTouched: []
    func_position:
      end: 110
      start: 100
    functionDepth: 39
    functionLinenumber: 100
    functionLinenumberEnd: 110
    functionName: OpfsReader::open
    functionSourceFile: /src/opendal/core/services/opfs/src/reader.rs
    functionUses: 0
    functionsReached:
    - Ok
    - Box::new
    - get_file_handle
    - build_abs_path
    - as_str
    - RpRead::default
    - OpfsReadStream::new
    linkageType: ''
    returnType: Result
    signature: 'async fn open(&self, range: BytesRange) -> Result<(RpRead, Box<dyn
      oio::ReadStreamDyn>)>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: ServiceInfo::new
      Src: /src/opendal/core/services/opfs/src/core.rs:31,1
    - Dst: Default::default
      Src: /src/opendal/core/services/opfs/src/core.rs:49,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - root
    argTypes:
    - String
    constantsTouched: []
    func_position:
      end: 57
      start: 30
    functionDepth: 33
    functionLinenumber: 30
    functionLinenumberEnd: 57
    functionName: OpfsCore::new
    functionSourceFile: /src/opendal/core/services/opfs/src/core.rs
    functionUses: 1
    functionsReached:
    - ServiceInfo::new
    - Default::default
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(root: String) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: dyn_ref::<DomException>
      Src: /src/opendal/core/services/opfs/src/core.rs:69,1
    - Dst: name
      Src: /src/opendal/core/services/opfs/src/core.rs:70,1
    - Dst: as_str
      Src: /src/opendal/core/services/opfs/src/core.rs:70,1
    - Dst: console_debug
      Src: /src/opendal/core/services/opfs/src/core.rs:76,1
    - Dst: Error::new
      Src: /src/opendal/core/services/opfs/src/core.rs:80,1
    - Dst: message
      Src: /src/opendal/core/services/opfs/src/core.rs:80,1
    - Dst: dyn_ref::<js_sys::Error>
      Src: /src/opendal/core/services/opfs/src/core.rs:86,1
    - Dst: Error::new
      Src: /src/opendal/core/services/opfs/src/core.rs:87,1
    - Dst: String::from
      Src: /src/opendal/core/services/opfs/src/core.rs:87,1
    - Dst: Error::message
      Src: /src/opendal/core/services/opfs/src/core.rs:87,1
    - Dst: Error::new
      Src: /src/opendal/core/services/opfs/src/core.rs:90,1
    - Dst: Vec::as_string
      Src: /src/opendal/core/services/opfs/src/core.rs:92,1
    - Dst: unwrap_or_else
      Src: /src/opendal/core/services/opfs/src/core.rs:92,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/opfs/src/core.rs:94,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 33
    argCount: 1
    argNames:
    - value
    argTypes:
    - JsValue
    constantsTouched: []
    func_position:
      end: 96
      start: 68
    functionDepth: 31
    functionLinenumber: 68
    functionLinenumberEnd: 96
    functionName: error::parse_js_error
    functionSourceFile: /src/opendal/core/services/opfs/src/core.rs
    functionUses: 0
    functionsReached:
    - dyn_ref::<DomException>
    - name
    - String::from
    - Error::new
    - message
    - console_debug
    - as_str
    - Error::message
    - '&str::to_string'
    - Vec::as_string
    - dyn_ref::<js_sys::Error>
    - unwrap_or_else
    linkageType: ''
    returnType: Error
    signature: 'pub(crate) fn parse_js_error(value: JsValue) -> Error'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: window
      Src: /src/opendal/core/services/opfs/src/core.rs:115,1
    - Dst: Self::unwrap
      Src: /src/opendal/core/services/opfs/src/core.rs:115,1
    - Dst: T::navigator
      Src: /src/opendal/core/services/opfs/src/core.rs:115,1
    - Dst: storage
      Src: /src/opendal/core/services/opfs/src/core.rs:116,1
    - Dst: JsFuture::from
      Src: /src/opendal/core/services/opfs/src/core.rs:118,1
    - Dst: get_directory
      Src: /src/opendal/core/services/opfs/src/core.rs:118,1
    - Dst: and_then
      Src: /src/opendal/core/services/opfs/src/core.rs:118,1
    - Dst: map_err
      Src: /src/opendal/core/services/opfs/src/core.rs:118,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 15
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 122
      start: 114
    functionDepth: 35
    functionLinenumber: 114
    functionLinenumberEnd: 122
    functionName: utils::get_root_directory_handle
    functionSourceFile: /src/opendal/core/services/opfs/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - storage
    - T::navigator
    - Self::unwrap
    - and_then
    - JsFuture::from
    - get_directory
    - window
    linkageType: ''
    returnType: Result
    signature: pub(crate) async fn get_root_directory_handle() -> Result<FileSystemDirectoryHandle>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: FileSystemGetDirectoryOptions::new
      Src: /src/opendal/core/services/opfs/src/core.rs:131,1
    - Dst: Result::set_create
      Src: /src/opendal/core/services/opfs/src/core.rs:132,1
    - Dst: trim_matches
      Src: /src/opendal/core/services/opfs/src/core.rs:134,1
    - Dst: get_root_directory_handle
      Src: /src/opendal/core/services/opfs/src/core.rs:135,1
    - Dst: is_empty
      Src: /src/opendal/core/services/opfs/src/core.rs:136,1
    - Dst: Ok
      Src: /src/opendal/core/services/opfs/src/core.rs:137,1
    - Dst: split
      Src: /src/opendal/core/services/opfs/src/core.rs:139,1
    - Dst: JsFuture::from
      Src: /src/opendal/core/services/opfs/src/core.rs:140,1
    - Dst: get_directory_handle_with_options
      Src: /src/opendal/core/services/opfs/src/core.rs:140,1
    - Dst: and_then
      Src: /src/opendal/core/services/opfs/src/core.rs:140,1
    - Dst: map_err
      Src: /src/opendal/core/services/opfs/src/core.rs:140,1
    - Dst: Ok
      Src: /src/opendal/core/services/opfs/src/core.rs:146,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 33
    argCount: 2
    argNames:
    - path
    - create
    argTypes:
    - '&str'
    - bool
    constantsTouched: []
    func_position:
      end: 147
      start: 127
    functionDepth: 36
    functionLinenumber: 127
    functionLinenumberEnd: 147
    functionName: utils::get_directory_handle
    functionSourceFile: /src/opendal/core/services/opfs/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - trim_matches
    - Ok
    - and_then
    - JsFuture::from
    - Result::set_create
    - FileSystemGetDirectoryOptions::new
    - split
    - is_empty
    - get_root_directory_handle
    - get_directory_handle_with_options
    linkageType: ''
    returnType: Result
    signature: 'pub(crate) async fn get_directory_handle(path: &str,create: bool,)
      -> Result<FileSystemDirectoryHandle>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: trim_matches
      Src: /src/opendal/core/services/opfs/src/core.rs:156,1
    - Dst: rsplit_once
      Src: /src/opendal/core/services/opfs/src/core.rs:157,1
    - Dst: get_directory_handle
      Src: /src/opendal/core/services/opfs/src/core.rs:159,1
    - Dst: Ok
      Src: /src/opendal/core/services/opfs/src/core.rs:160,1
    - Dst: get_root_directory_handle
      Src: /src/opendal/core/services/opfs/src/core.rs:163,1
    - Dst: Ok
      Src: /src/opendal/core/services/opfs/src/core.rs:164,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 2
    argNames:
    - path
    - create
    argTypes:
    - '&''a str'
    - bool
    constantsTouched: []
    func_position:
      end: 167
      start: 152
    functionDepth: 37
    functionLinenumber: 152
    functionLinenumberEnd: 167
    functionName: utils::get_parent_dir_and_name
    functionSourceFile: /src/opendal/core/services/opfs/src/core.rs
    functionUses: 0
    functionsReached:
    - trim_matches
    - Ok
    - rsplit_once
    - get_directory_handle
    - get_root_directory_handle
    linkageType: ''
    returnType: Result
    signature: 'pub(crate) async fn get_parent_dir_and_name<''a>(path: &''a str,create:
      bool,) -> Result<(FileSystemDirectoryHandle, &''a str)>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: get_parent_dir_and_name
      Src: /src/opendal/core/services/opfs/src/core.rs:173,1
    - Dst: FileSystemGetFileOptions::new
      Src: /src/opendal/core/services/opfs/src/core.rs:175,1
    - Dst: Result::set_create
      Src: /src/opendal/core/services/opfs/src/core.rs:176,1
    - Dst: JsFuture::from
      Src: /src/opendal/core/services/opfs/src/core.rs:178,1
    - Dst: Result::get_file_handle_with_options
      Src: /src/opendal/core/services/opfs/src/core.rs:178,1
    - Dst: and_then
      Src: /src/opendal/core/services/opfs/src/core.rs:178,1
    - Dst: map_err
      Src: /src/opendal/core/services/opfs/src/core.rs:178,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 2
    argNames:
    - path
    - create
    argTypes:
    - '&str'
    - bool
    constantsTouched: []
    func_position:
      end: 182
      start: 172
    functionDepth: 38
    functionLinenumber: 172
    functionLinenumberEnd: 182
    functionName: utils::get_file_handle
    functionSourceFile: /src/opendal/core/services/opfs/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - get_parent_dir_and_name
    - and_then
    - Result::get_file_handle_with_options
    - JsFuture::from
    - Result::set_create
    - FileSystemGetFileOptions::new
    linkageType: ''
    returnType: Result
    signature: 'pub(crate) async fn get_file_handle(path: &str, create: bool) -> Result<FileSystemFileHandle>'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - core
    - path
    argTypes:
    - Arc<OpfsCore>
    - String
    constantsTouched: []
    func_position:
      end: 50
      start: 43
    functionDepth: 0
    functionLinenumber: 43
    functionLinenumberEnd: 50
    functionName: OpfsWriter::new
    functionSourceFile: /src/opendal/core/services/opfs/src/writer.rs
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(core: Arc<OpfsCore>, path: String) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: is_some
      Src: /src/opendal/core/services/opfs/src/writer.rs:53,1
    - Dst: Ok
      Src: /src/opendal/core/services/opfs/src/writer.rs:54,1
    - Dst: build_abs_path
      Src: /src/opendal/core/services/opfs/src/writer.rs:57,1
    - Dst: get_file_handle
      Src: /src/opendal/core/services/opfs/src/writer.rs:58,1
    - Dst: JsFuture::from
      Src: /src/opendal/core/services/opfs/src/writer.rs:59,1
    - Dst: create_writable
      Src: /src/opendal/core/services/opfs/src/writer.rs:59,1
    - Dst: and_then
      Src: /src/opendal/core/services/opfs/src/writer.rs:59,1
    - Dst: map_err
      Src: /src/opendal/core/services/opfs/src/writer.rs:59,1
    - Dst: Some
      Src: /src/opendal/core/services/opfs/src/writer.rs:63,1
    - Dst: SendWrapper::new
      Src: /src/opendal/core/services/opfs/src/writer.rs:63,1
    - Dst: Ok
      Src: /src/opendal/core/services/opfs/src/writer.rs:65,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 35
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 66
      start: 52
    functionDepth: 39
    functionLinenumber: 52
    functionLinenumberEnd: 66
    functionName: OpfsWriter::init_stream
    functionSourceFile: /src/opendal/core/services/opfs/src/writer.rs
    functionUses: 2
    functionsReached:
    - map_err
    - SendWrapper::new
    - Ok
    - and_then
    - JsFuture::from
    - get_file_handle
    - build_abs_path
    - Some
    - is_some
    - create_writable
    linkageType: ''
    returnType: Result
    signature: async fn init_stream(&mut self) -> Result<()>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: OpfsWriter::init_stream
      Src: /src/opendal/core/services/opfs/src/writer.rs:71,1
    - Dst: Result::to_bytes
      Src: /src/opendal/core/services/opfs/src/writer.rs:73,1
    - Dst: WriteParams::new
      Src: /src/opendal/core/services/opfs/src/writer.rs:74,1
    - Dst: Self::set_size
      Src: /src/opendal/core/services/opfs/src/writer.rs:75,1
    - Dst: Some
      Src: /src/opendal/core/services/opfs/src/writer.rs:75,1
    - Dst: Bytes::len
      Src: /src/opendal/core/services/opfs/src/writer.rs:75,1
    - Dst: js_sys::Uint8Array::from
      Src: /src/opendal/core/services/opfs/src/writer.rs:76,1
    - Dst: Bytes::as_ref
      Src: /src/opendal/core/services/opfs/src/writer.rs:76,1
    - Dst: Result::into
      Src: /src/opendal/core/services/opfs/src/writer.rs:76,1
    - Dst: Self::set_data
      Src: /src/opendal/core/services/opfs/src/writer.rs:77,1
    - Dst: as_ref
      Src: /src/opendal/core/services/opfs/src/writer.rs:78,1
    - Dst: expect
      Src: /src/opendal/core/services/opfs/src/writer.rs:78,1
    - Dst: JsFuture::from
      Src: /src/opendal/core/services/opfs/src/writer.rs:82,1
    - Dst: Result::write_with_write_params
      Src: /src/opendal/core/services/opfs/src/writer.rs:83,1
    - Dst: Self::into
      Src: /src/opendal/core/services/opfs/src/writer.rs:84,1
    - Dst: map_err
      Src: /src/opendal/core/services/opfs/src/writer.rs:83,1
    - Dst: map_err
      Src: /src/opendal/core/services/opfs/src/writer.rs:82,1
    - Dst: Bytes::len
      Src: /src/opendal/core/services/opfs/src/writer.rs:90,1
    - Dst: Ok
      Src: /src/opendal/core/services/opfs/src/writer.rs:91,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 50
    argCount: 1
    argNames:
    - bs
    argTypes:
    - Buffer
    constantsTouched: []
    func_position:
      end: 92
      start: 70
    functionDepth: 40
    functionLinenumber: 70
    functionLinenumberEnd: 92
    functionName: OpfsWriter::write
    functionSourceFile: /src/opendal/core/services/opfs/src/writer.rs
    functionUses: 0
    functionsReached:
    - map_err
    - OpfsWriter::init_stream
    - Self::set_size
    - expect
    - Ok
    - Result::write_with_write_params
    - WriteParams::new
    - Result::to_bytes
    - JsFuture::from
    - Some
    - Result::into
    - as_ref
    - Bytes::len
    - Self::into
    - Bytes::as_ref
    - Self::set_data
    - js_sys::Uint8Array::from
    linkageType: ''
    returnType: Result
    signature: 'async fn write(&mut self, bs: Buffer) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: OpfsWriter::init_stream
      Src: /src/opendal/core/services/opfs/src/writer.rs:95,1
    - Dst: take
      Src: /src/opendal/core/services/opfs/src/writer.rs:97,1
    - Dst: JsFuture::from
      Src: /src/opendal/core/services/opfs/src/writer.rs:98,1
    - Dst: Result::close
      Src: /src/opendal/core/services/opfs/src/writer.rs:98,1
    - Dst: map_err
      Src: /src/opendal/core/services/opfs/src/writer.rs:98,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/opfs/src/writer.rs:104,1
    - Dst: Result::set_content_length
      Src: /src/opendal/core/services/opfs/src/writer.rs:105,1
    - Dst: Ok
      Src: /src/opendal/core/services/opfs/src/writer.rs:106,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 24
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 107
      start: 94
    functionDepth: 40
    functionLinenumber: 94
    functionLinenumberEnd: 107
    functionName: OpfsWriter::close
    functionSourceFile: /src/opendal/core/services/opfs/src/writer.rs
    functionUses: 0
    functionsReached:
    - map_err
    - OpfsWriter::init_stream
    - Metadata::new
    - Ok
    - JsFuture::from
    - take
    - Result::close
    - Result::set_content_length
    linkageType: ''
    returnType: Result
    signature: async fn close(&mut self) -> Result<Metadata>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: take
      Src: /src/opendal/core/services/opfs/src/writer.rs:110,1
    - Dst: JsFuture::from
      Src: /src/opendal/core/services/opfs/src/writer.rs:111,1
    - Dst: Result::abort
      Src: /src/opendal/core/services/opfs/src/writer.rs:111,1
    - Dst: map_err
      Src: /src/opendal/core/services/opfs/src/writer.rs:111,1
    - Dst: Ok
      Src: /src/opendal/core/services/opfs/src/writer.rs:115,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 116
      start: 109
    functionDepth: 32
    functionLinenumber: 109
    functionLinenumberEnd: 116
    functionName: OpfsWriter::abort
    functionSourceFile: /src/opendal/core/services/opfs/src/writer.rs
    functionUses: 0
    functionsReached:
    - map_err
    - Result::abort
    - Ok
    - JsFuture::from
    - take
    linkageType: ''
    returnType: Result
    signature: async fn abort(&mut self) -> Result<()>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: register::<Opfs>
      Src: /src/opendal/core/services/opfs/src/lib.rs:25,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - registry
    argTypes:
    - '&opendal_core::OperatorRegistry'
    constantsTouched: []
    func_position:
      end: 26
      start: 24
    functionDepth: 0
    functionLinenumber: 24
    functionLinenumberEnd: 26
    functionName: register_opfs_service
    functionSourceFile: /src/opendal/core/services/opfs/src/lib.rs
    functionUses: 1
    functionsReached:
    - register::<Opfs>
    linkageType: ''
    returnType: void
    signature: 'pub fn register_opfs_service(registry: &opendal_core::OperatorRegistry)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: web_sys::console::log_1
      Src: /src/opendal/core/services/opfs/src/lib.rs:3,1
    - Dst: into
      Src: /src/opendal/core/services/opfs/src/lib.rs:3,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 33
      start: 28
    functionDepth: 29
    functionLinenumber: 28
    functionLinenumberEnd: 33
    functionName: console_debug
    functionSourceFile: /src/opendal/core/services/opfs/src/lib.rs
    functionUses: 1
    functionsReached:
    - into
    - web_sys::console::log_1
    linkageType: ''
    returnType: ''
    signature: ''
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::is_empty
      Src: /src/opendal/core/services/opfs/src/backend.rs:45,1
    - Dst: Some
      Src: /src/opendal/core/services/opfs/src/backend.rs:48,1
    - Dst: Result::to_string
      Src: /src/opendal/core/services/opfs/src/backend.rs:48,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - root
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 51
      start: 44
    functionDepth: 4
    functionLinenumber: 44
    functionLinenumberEnd: 51
    functionName: OpfsBuilder::root
    functionSourceFile: /src/opendal/core/services/opfs/src/backend.rs
    functionUses: 0
    functionsReached:
    - Result::is_empty
    - Result::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn root(mut self, root: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: normalize_root
      Src: /src/opendal/core/services/opfs/src/backend.rs:58,1
    - Dst: unwrap_or_default
      Src: /src/opendal/core/services/opfs/src/backend.rs:58,1
    - Dst: Arc::new
      Src: /src/opendal/core/services/opfs/src/backend.rs:59,1
    - Dst: OpfsCore::new
      Src: /src/opendal/core/services/opfs/src/backend.rs:59,1
    - Dst: Ok
      Src: /src/opendal/core/services/opfs/src/backend.rs:60,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 61
      start: 57
    functionDepth: 34
    functionLinenumber: 57
    functionLinenumberEnd: 61
    functionName: OpfsBuilder::build
    functionSourceFile: /src/opendal/core/services/opfs/src/backend.rs
    functionUses: 0
    functionsReached:
    - Ok
    - Arc::new
    - normalize_root
    - OpfsCore::new
    - unwrap_or_default
    linkageType: ''
    returnType: Result
    signature: fn build(self) -> Result<impl Service>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: clone
      Src: /src/opendal/core/services/opfs/src/backend.rs:78,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 79
      start: 77
    functionDepth: 2
    functionLinenumber: 77
    functionLinenumberEnd: 79
    functionName: OpfsBackend::info
    functionSourceFile: /src/opendal/core/services/opfs/src/backend.rs
    functionUses: 0
    functionsReached:
    - clone
    linkageType: ''
    returnType: ServiceInfo
    signature: fn info(&self) -> ServiceInfo
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 83
      start: 81
    functionDepth: 0
    functionLinenumber: 81
    functionLinenumberEnd: 83
    functionName: OpfsBackend::capability
    functionSourceFile: /src/opendal/core/services/opfs/src/backend.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Capability
    signature: fn capability(&self) -> Capability
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/opfs/src/backend.rs:86,1
    - Dst: ends_with
      Src: /src/opendal/core/services/opfs/src/backend.rs:88,1
    - Dst: get_directory_handle
      Src: /src/opendal/core/services/opfs/src/backend.rs:89,1
    - Dst: Ok
      Src: /src/opendal/core/services/opfs/src/backend.rs:90,1
    - Dst: RpStat::new
      Src: /src/opendal/core/services/opfs/src/backend.rs:90,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/opfs/src/backend.rs:90,1
    - Dst: get_file_handle
      Src: /src/opendal/core/services/opfs/src/backend.rs:94,1
    - Dst: JsFuture::from
      Src: /src/opendal/core/services/opfs/src/backend.rs:95,1
    - Dst: get_file
      Src: /src/opendal/core/services/opfs/src/backend.rs:95,1
    - Dst: and_then
      Src: /src/opendal/core/services/opfs/src/backend.rs:95,1
    - Dst: map_err
      Src: /src/opendal/core/services/opfs/src/backend.rs:95,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/opfs/src/backend.rs:100,1
    - Dst: Result::set_content_length
      Src: /src/opendal/core/services/opfs/src/backend.rs:101,1
    - Dst: Result::size
      Src: /src/opendal/core/services/opfs/src/backend.rs:101,1
    - Dst: Timestamp::from_millisecond
      Src: /src/opendal/core/services/opfs/src/backend.rs:102,1
    - Dst: Result::last_modified
      Src: /src/opendal/core/services/opfs/src/backend.rs:102,1
    - Dst: Result::set_last_modified
      Src: /src/opendal/core/services/opfs/src/backend.rs:103,1
    - Dst: Ok
      Src: /src/opendal/core/services/opfs/src/backend.rs:106,1
    - Dst: RpStat::new
      Src: /src/opendal/core/services/opfs/src/backend.rs:106,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 49
    argCount: 3
    argNames:
    - _ctx
    - path
    - _args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpStat
    constantsTouched: []
    func_position:
      end: 107
      start: 85
    functionDepth: 37
    functionLinenumber: 85
    functionLinenumberEnd: 107
    functionName: OpfsBackend::stat
    functionSourceFile: /src/opendal/core/services/opfs/src/backend.rs
    functionUses: 0
    functionsReached:
    - map_err
    - Metadata::new
    - Result::last_modified
    - Ok
    - and_then
    - Result::size
    - get_file
    - ends_with
    - RpStat::new
    - get_file_handle
    - build_abs_path
    - JsFuture::from
    - Result::set_last_modified
    - get_directory_handle
    - Result::set_content_length
    - Timestamp::from_millisecond
    linkageType: ''
    returnType: Result
    signature: 'async fn stat(&self, _ctx: &OperationContext, path: &str, _args: OpStat)
      -> Result<RpStat>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/core/services/opfs/src/backend.rs:110,1
    - Dst: oio::StreamReader::new
      Src: /src/opendal/core/services/opfs/src/backend.rs:110,1
    - Dst: OpfsReader::new
      Src: /src/opendal/core/services/opfs/src/backend.rs:110,1
    - Dst: OpfsBackend::clone
      Src: /src/opendal/core/services/opfs/src/backend.rs:111,1
    - Dst: Ok
      Src: /src/opendal/core/services/opfs/src/backend.rs:117,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - _ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpRead
    constantsTouched: []
    func_position:
      end: 118
      start: 108
    functionDepth: 3
    functionLinenumber: 108
    functionLinenumberEnd: 118
    functionName: OpfsBackend::read
    functionSourceFile: /src/opendal/core/services/opfs/src/backend.rs
    functionUses: 0
    functionsReached:
    - oio::StreamReader::new
    - OpfsBackend::clone
    - OpfsReader::new
    - Ok
    linkageType: ''
    returnType: Result
    signature: 'fn read(&self, _ctx: &OperationContext, path: &str, args: OpRead)
      -> Result<Self::Reader>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/core/services/opfs/src/backend.rs:121,1
    - Dst: OpfsLister::new
      Src: /src/opendal/core/services/opfs/src/backend.rs:121,1
    - Dst: clone
      Src: /src/opendal/core/services/opfs/src/backend.rs:121,1
    - Dst: to_string
      Src: /src/opendal/core/services/opfs/src/backend.rs:121,1
    - Dst: Ok
      Src: /src/opendal/core/services/opfs/src/backend.rs:123,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 3
    argNames:
    - _ctx
    - path
    - _args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpList
    constantsTouched: []
    func_position:
      end: 124
      start: 120
    functionDepth: 3
    functionLinenumber: 120
    functionLinenumberEnd: 124
    functionName: OpfsBackend::list
    functionSourceFile: /src/opendal/core/services/opfs/src/backend.rs
    functionUses: 0
    functionsReached:
    - OpfsLister::new
    - to_string
    - clone
    - Ok
    linkageType: ''
    returnType: Result
    signature: 'fn list(&self, _ctx: &OperationContext, path: &str, _args: OpList)
      -> Result<Self::Lister>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/opfs/src/backend.rs:133,1
    - Dst: get_directory_handle
      Src: /src/opendal/core/services/opfs/src/backend.rs:134,1
    - Dst: Ok
      Src: /src/opendal/core/services/opfs/src/backend.rs:136,1
    - Dst: RpCreateDir::default
      Src: /src/opendal/core/services/opfs/src/backend.rs:136,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 3
    argNames:
    - _ctx
    - path
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpCreateDir
    constantsTouched: []
    func_position:
      end: 137
      start: 126
    functionDepth: 37
    functionLinenumber: 126
    functionLinenumberEnd: 137
    functionName: OpfsBackend::create_dir
    functionSourceFile: /src/opendal/core/services/opfs/src/backend.rs
    functionUses: 0
    functionsReached:
    - RpCreateDir::default
    - get_directory_handle
    - Ok
    - build_abs_path
    linkageType: ''
    returnType: Result
    signature: 'async fn create_dir(&self,_ctx: &OperationContext,path: &str,_: OpCreateDir,)
      -> Result<RpCreateDir>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/core/services/opfs/src/backend.rs:140,1
    - Dst: OpfsWriter::new
      Src: /src/opendal/core/services/opfs/src/backend.rs:140,1
    - Dst: clone
      Src: /src/opendal/core/services/opfs/src/backend.rs:140,1
    - Dst: to_string
      Src: /src/opendal/core/services/opfs/src/backend.rs:140,1
    - Dst: Ok
      Src: /src/opendal/core/services/opfs/src/backend.rs:142,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 3
    argNames:
    - _ctx
    - path
    - _args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpWrite
    constantsTouched: []
    func_position:
      end: 143
      start: 139
    functionDepth: 2
    functionLinenumber: 139
    functionLinenumberEnd: 143
    functionName: OpfsBackend::write
    functionSourceFile: /src/opendal/core/services/opfs/src/backend.rs
    functionUses: 0
    functionsReached:
    - OpfsWriter::new
    - to_string
    - clone
    - Ok
    linkageType: ''
    returnType: Result
    signature: 'fn write(&self, _ctx: &OperationContext, path: &str, _args: OpWrite)
      -> Result<Self::Writer>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/core/services/opfs/src/backend.rs:147,1
    - Dst: oio::OneShotDeleter::new
      Src: /src/opendal/core/services/opfs/src/backend.rs:147,1
    - Dst: OpfsDeleter::new
      Src: /src/opendal/core/services/opfs/src/backend.rs:147,1
    - Dst: clone
      Src: /src/opendal/core/services/opfs/src/backend.rs:148,1
    - Dst: Ok
      Src: /src/opendal/core/services/opfs/src/backend.rs:152,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - _ctx
    argTypes:
    - '&OperationContext'
    constantsTouched: []
    func_position:
      end: 153
      start: 145
    functionDepth: 2
    functionLinenumber: 145
    functionLinenumberEnd: 153
    functionName: OpfsBackend::delete
    functionSourceFile: /src/opendal/core/services/opfs/src/backend.rs
    functionUses: 0
    functionsReached:
    - oio::OneShotDeleter::new
    - OpfsDeleter::new
    - clone
    - Ok
    linkageType: ''
    returnType: Result
    signature: 'fn delete(&self, _ctx: &OperationContext) -> Result<Self::Deleter>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/core/services/opfs/src/backend.rs:163,1
    - Dst: Error::new
      Src: /src/opendal/core/services/opfs/src/backend.rs:163,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 5
    argNames: []
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    - OpCopy
    - OpCopier
    constantsTouched: []
    func_position:
      end: 167
      start: 155
    functionDepth: 36
    functionLinenumber: 155
    functionLinenumberEnd: 167
    functionName: OpfsBackend::copy
    functionSourceFile: /src/opendal/core/services/opfs/src/backend.rs
    functionUses: 0
    functionsReached:
    - Error::new
    - Err
    linkageType: ''
    returnType: Result
    signature: 'fn copy(&self,_: &OperationContext,_: &str,_: &str,_: OpCopy,_: OpCopier,)
      -> Result<Self::Copier>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/core/services/opfs/src/backend.rs:176,1
    - Dst: Error::new
      Src: /src/opendal/core/services/opfs/src/backend.rs:176,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames: []
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    - OpRename
    constantsTouched: []
    func_position:
      end: 180
      start: 169
    functionDepth: 36
    functionLinenumber: 169
    functionLinenumberEnd: 180
    functionName: OpfsBackend::rename
    functionSourceFile: /src/opendal/core/services/opfs/src/backend.rs
    functionUses: 0
    functionsReached:
    - Error::new
    - Err
    linkageType: ''
    returnType: Result
    signature: 'async fn rename(&self,_: &OperationContext,_: &str,_: &str,_: OpRename,)
      -> Result<RpRename>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/core/services/opfs/src/backend.rs:183,1
    - Dst: Error::new
      Src: /src/opendal/core/services/opfs/src/backend.rs:183,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames: []
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpPresign
    constantsTouched: []
    func_position:
      end: 187
      start: 182
    functionDepth: 36
    functionLinenumber: 182
    functionLinenumberEnd: 187
    functionName: OpfsBackend::presign
    functionSourceFile: /src/opendal/core/services/opfs/src/backend.rs
    functionUses: 0
    functionsReached:
    - Error::new
    - Err
    linkageType: ''
    returnType: Result
    signature: 'async fn presign(&self, _: &OperationContext, _: &str, _: OpPresign)
      -> Result<RpPresign>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::debug_struct
      Src: /src/opendal/core/services/yandex-disk/src/config.rs:40,1
    - Dst: field
      Src: /src/opendal/core/services/yandex-disk/src/config.rs:40,1
    - Dst: finish_non_exhaustive
      Src: /src/opendal/core/services/yandex-disk/src/config.rs:40,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - f
    argTypes:
    - '&mut std::fmt::Formatter<''_>'
    constantsTouched: []
    func_position:
      end: 43
      start: 39
    functionDepth: 5
    functionLinenumber: 39
    functionLinenumberEnd: 43
    functionName: YandexDiskConfig::fmt
    functionSourceFile: /src/opendal/core/services/yandex-disk/src/config.rs
    functionUses: 0
    functionsReached:
    - field
    - Result::debug_struct
    - finish_non_exhaustive
    linkageType: ''
    returnType: std::fmt::Result
    signature: 'fn fmt(&self, f: &mut std::fmt::Formatter<''_>) -> std::fmt::Result'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::options
      Src: /src/opendal/core/services/yandex-disk/src/config.rs:50,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/yandex-disk/src/config.rs:50,1
    - Dst: Result::root
      Src: /src/opendal/core/services/yandex-disk/src/config.rs:52,1
    - Dst: Result::is_empty
      Src: /src/opendal/core/services/yandex-disk/src/config.rs:53,1
    - Dst: Result::insert
      Src: /src/opendal/core/services/yandex-disk/src/config.rs:55,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/yandex-disk/src/config.rs:55,1
    - Dst: Result::to_string
      Src: /src/opendal/core/services/yandex-disk/src/config.rs:55,1
    - Dst: Self::from_iter
      Src: /src/opendal/core/services/yandex-disk/src/config.rs:58,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 19
    argCount: 1
    argNames:
    - uri
    argTypes:
    - '&opendal_core::OperatorUri'
    constantsTouched: []
    func_position:
      end: 59
      start: 49
    functionDepth: 35
    functionLinenumber: 49
    functionLinenumberEnd: 59
    functionName: YandexDiskConfig::from_uri
    functionSourceFile: /src/opendal/core/services/yandex-disk/src/config.rs
    functionUses: 1
    functionsReached:
    - Result::clone
    - Self::from_iter
    - Result::to_string
    - Result::insert
    - Result::is_empty
    - Result::root
    - '&str::to_string'
    - Result::options
    linkageType: ''
    returnType: opendal_core::Result
    signature: 'fn from_uri(uri: &opendal_core::OperatorUri) -> opendal_core::Result<Self>'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 63
      start: 61
    functionDepth: 0
    functionLinenumber: 61
    functionLinenumberEnd: 63
    functionName: YandexDiskConfig::into_builder
    functionSourceFile: /src/opendal/core/services/yandex-disk/src/config.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Self::Builder
    signature: fn into_builder(self) -> Self::Builder
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: OperatorUri::new
      Src: /src/opendal/core/services/yandex-disk/src/config.rs:74,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/services/yandex-disk/src/config.rs:74,1
    - Dst: YandexDiskConfig::from_uri
      Src: /src/opendal/core/services/yandex-disk/src/config.rs:80,1
    - Dst: opendal_core::Result::unwrap
      Src: /src/opendal/core/services/yandex-disk/src/config.rs:80,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 83
      start: 73
    functionDepth: 29
    functionLinenumber: 73
    functionLinenumberEnd: 83
    functionName: tests::from_uri_sets_root_and_preserves_token
    functionSourceFile: /src/opendal/core/services/yandex-disk/src/config.rs
    functionUses: 0
    functionsReached:
    - OperatorUri::new
    - YandexDiskConfig::from_uri
    - Result::unwrap
    - opendal_core::Result::unwrap
    linkageType: ''
    returnType: void
    signature: fn from_uri_sets_root_and_preserves_token()
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - core
    - ctx
    argTypes:
    - Arc<YandexDiskCore>
    - OperationContext
    constantsTouched: []
    func_position:
      end: 35
      start: 33
    functionDepth: 0
    functionLinenumber: 33
    functionLinenumberEnd: 35
    functionName: YandexDiskDeleter::new
    functionSourceFile: /src/opendal/core/services/yandex-disk/src/deleter.rs
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(core: Arc<YandexDiskCore>, ctx: OperationContext) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: delete
      Src: /src/opendal/core/services/yandex-disk/src/deleter.rs:40,1
    - Dst: status
      Src: /src/opendal/core/services/yandex-disk/src/deleter.rs:42,1
    - Dst: Ok
      Src: /src/opendal/core/services/yandex-disk/src/deleter.rs:45,1
    - Dst: Ok
      Src: /src/opendal/core/services/yandex-disk/src/deleter.rs:46,1
    - Dst: Ok
      Src: /src/opendal/core/services/yandex-disk/src/deleter.rs:49,1
    - Dst: Ok
      Src: /src/opendal/core/services/yandex-disk/src/deleter.rs:51,1
    - Dst: Err
      Src: /src/opendal/core/services/yandex-disk/src/deleter.rs:52,1
    - Dst: super::core::parse_error
      Src: /src/opendal/core/services/yandex-disk/src/deleter.rs:52,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 22
    argCount: 2
    argNames:
    - path
    argTypes:
    - String
    - OpDelete
    constantsTouched: []
    func_position:
      end: 54
      start: 39
    functionDepth: 32
    functionLinenumber: 39
    functionLinenumberEnd: 54
    functionName: YandexDiskDeleter::delete_once
    functionSourceFile: /src/opendal/core/services/yandex-disk/src/deleter.rs
    functionUses: 0
    functionsReached:
    - status
    - Ok
    - delete
    - Err
    - super::core::parse_error
    linkageType: ''
    returnType: Result
    signature: 'async fn delete_once(&self, path: String, _: OpDelete) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: to_string
      Src: /src/opendal/core/services/yandex-disk/src/lister.rs:49,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 4
    argNames:
    - core
    - ctx
    - path
    - limit
    argTypes:
    - Arc<YandexDiskCore>
    - OperationContext
    - '&str'
    - Option<usize>
    constantsTouched: []
    func_position:
      end: 52
      start: 40
    functionDepth: 2
    functionLinenumber: 40
    functionLinenumberEnd: 52
    functionName: YandexDiskLister::new
    functionSourceFile: /src/opendal/core/services/yandex-disk/src/lister.rs
    functionUses: 1
    functionsReached:
    - to_string
    linkageType: ''
    returnType: Self
    signature: 'pub(super) fn new(core: Arc<YandexDiskCore>,ctx: OperationContext,path:
      &str,limit: Option<usize>,) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: is_empty
      Src: /src/opendal/core/services/yandex-disk/src/lister.rs:57,1
    - Dst: Some
      Src: /src/opendal/core/services/yandex-disk/src/lister.rs:60,1
    - Dst: clone
      Src: /src/opendal/core/services/yandex-disk/src/lister.rs:60,1
    - Dst: metainformation
      Src: /src/opendal/core/services/yandex-disk/src/lister.rs:63,1
    - Dst: status
      Src: /src/opendal/core/services/yandex-disk/src/lister.rs:68,1
    - Dst: Ok
      Src: /src/opendal/core/services/yandex-disk/src/lister.rs:70,1
    - Dst: status
      Src: /src/opendal/core/services/yandex-disk/src/lister.rs:73,1
    - Dst: into_body
      Src: /src/opendal/core/services/yandex-disk/src/lister.rs:75,1
    - Dst: serde_json::from_reader
      Src: /src/opendal/core/services/yandex-disk/src/lister.rs:78,1
    - Dst: reader
      Src: /src/opendal/core/services/yandex-disk/src/lister.rs:78,1
    - Dst: map_err
      Src: /src/opendal/core/services/yandex-disk/src/lister.rs:78,1
    - Dst: len
      Src: /src/opendal/core/services/yandex-disk/src/lister.rs:81,1
    - Dst: strip_prefix
      Src: /src/opendal/core/services/yandex-disk/src/lister.rs:84,1
    - Dst: build_rel_path
      Src: /src/opendal/core/services/yandex-disk/src/lister.rs:87,1
    - Dst: super::core::parse_info
      Src: /src/opendal/core/services/yandex-disk/src/lister.rs:89,1
    - Dst: storage::Result::mode
      Src: /src/opendal/core/services/yandex-disk/src/lister.rs:91,1
    - Dst: Option::is_dir
      Src: /src/opendal/core/services/yandex-disk/src/lister.rs:91,1
    - Dst: push_back
      Src: /src/opendal/core/services/yandex-disk/src/lister.rs:95,1
    - Dst: Entry::new
      Src: /src/opendal/core/services/yandex-disk/src/lister.rs:95,1
    - Dst: token.parse::<usize>
      Src: /src/opendal/core/services/yandex-disk/src/lister.rs:99,1
    - Dst: unwrap_or
      Src: /src/opendal/core/services/yandex-disk/src/lister.rs:99,1
    - Dst: to_string
      Src: /src/opendal/core/services/yandex-disk/src/lister.rs:105,1
    - Dst: Ok
      Src: /src/opendal/core/services/yandex-disk/src/lister.rs:107,1
    - Dst: Ok
      Src: /src/opendal/core/services/yandex-disk/src/lister.rs:112,1
    - Dst: Err
      Src: /src/opendal/core/services/yandex-disk/src/lister.rs:115,1
    - Dst: super::core::parse_error
      Src: /src/opendal/core/services/yandex-disk/src/lister.rs:115,1
    - Dst: Ok
      Src: /src/opendal/core/services/yandex-disk/src/lister.rs:119,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 111
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - '&mut oio::PageContext'
    constantsTouched: []
    func_position:
      end: 120
      start: 56
    functionDepth: 39
    functionLinenumber: 56
    functionLinenumberEnd: 120
    functionName: YandexDiskLister::next_page
    functionSourceFile: /src/opendal/core/services/yandex-disk/src/lister.rs
    functionUses: 0
    functionsReached:
    - status
    - serde_json::from_reader
    - clone
    - build_rel_path
    - map_err
    - Entry::new
    - reader
    - Ok
    - Option::is_dir
    - len
    - unwrap_or
    - metainformation
    - into_body
    - super::core::parse_info
    - Some
    - is_empty
    - strip_prefix
    - token.parse::<usize>
    - super::core::parse_error
    - storage::Result::mode
    - to_string
    - push_back
    - Err
    linkageType: ''
    returnType: Result
    signature: 'async fn next_page(&self, ctx: &mut oio::PageContext) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: to_string
      Src: /src/opendal/core/services/yandex-disk/src/reader.rs:42,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 4
    argNames:
    - backend
    - ctx
    - path
    argTypes:
    - YandexDiskBackend
    - OperationContext
    - '&str'
    - OpRead
    constantsTouched: []
    func_position:
      end: 44
      start: 33
    functionDepth: 2
    functionLinenumber: 33
    functionLinenumberEnd: 44
    functionName: YandexDiskReader::new
    functionSourceFile: /src/opendal/core/services/yandex-disk/src/reader.rs
    functionUses: 1
    functionsReached:
    - to_string
    linkageType: ''
    returnType: Self
    signature: 'pub(super) fn new(backend: YandexDiskBackend,ctx: OperationContext,path:
      &str,_: OpRead,) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: as_str
      Src: /src/opendal/core/services/yandex-disk/src/reader.rs:50,1
    - Dst: download
      Src: /src/opendal/core/services/yandex-disk/src/reader.rs:51,1
    - Dst: status
      Src: /src/opendal/core/services/yandex-disk/src/reader.rs:53,1
    - Dst: RpRead::new
      Src: /src/opendal/core/services/yandex-disk/src/reader.rs:56,1
    - Dst: parse_into_metadata
      Src: /src/opendal/core/services/yandex-disk/src/reader.rs:56,1
    - Dst: headers
      Src: /src/opendal/core/services/yandex-disk/src/reader.rs:56,1
    - Dst: into_body
      Src: /src/opendal/core/services/yandex-disk/src/reader.rs:57,1
    - Dst: into_parts
      Src: /src/opendal/core/services/yandex-disk/src/reader.rs:60,1
    - Dst: to_buffer
      Src: /src/opendal/core/services/yandex-disk/src/reader.rs:61,1
    - Dst: Err
      Src: /src/opendal/core/services/yandex-disk/src/reader.rs:62,1
    - Dst: super::core::parse_error
      Src: /src/opendal/core/services/yandex-disk/src/reader.rs:62,1
    - Dst: Response::from_parts
      Src: /src/opendal/core/services/yandex-disk/src/reader.rs:62,1
    - Dst: Ok
      Src: /src/opendal/core/services/yandex-disk/src/reader.rs:66,1
    - Dst: Box::new
      Src: /src/opendal/core/services/yandex-disk/src/reader.rs:66,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 38
    argCount: 1
    argNames:
    - range
    argTypes:
    - BytesRange
    constantsTouched: []
    func_position:
      end: 67
      start: 48
    functionDepth: 38
    functionLinenumber: 48
    functionLinenumberEnd: 67
    functionName: YandexDiskReader::open
    functionSourceFile: /src/opendal/core/services/yandex-disk/src/reader.rs
    functionUses: 0
    functionsReached:
    - download
    - parse_into_metadata
    - to_buffer
    - status
    - Ok
    - Box::new
    - into_body
    - Err
    - Response::from_parts
    - as_str
    - headers
    - into_parts
    - RpRead::new
    - super::core::parse_error
    linkageType: ''
    returnType: Result
    signature: 'async fn open(&self, range: BytesRange) -> Result<(RpRead, Box<dyn
      oio::ReadStreamDyn>)>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::debug_struct
      Src: /src/opendal/core/services/yandex-disk/src/core.rs:43,1
    - Dst: field
      Src: /src/opendal/core/services/yandex-disk/src/core.rs:43,1
    - Dst: finish_non_exhaustive
      Src: /src/opendal/core/services/yandex-disk/src/core.rs:43,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - f
    argTypes:
    - '&mut std::fmt::Formatter<''_>'
    constantsTouched: []
    func_position:
      end: 46
      start: 42
    functionDepth: 5
    functionLinenumber: 42
    functionLinenumberEnd: 46
    functionName: YandexDiskCore::fmt
    functionSourceFile: /src/opendal/core/services/yandex-disk/src/core.rs
    functionUses: 0
    functionsReached:
    - field
    - Result::debug_struct
    - finish_non_exhaustive
    linkageType: ''
    returnType: std::fmt::Result
    signature: 'fn fmt(&self, f: &mut std::fmt::Formatter<''_>) -> std::fmt::Result'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::http_transport
      Src: /src/opendal/core/services/yandex-disk/src/core.rs:56,1
    - Dst: Self::send
      Src: /src/opendal/core/services/yandex-disk/src/core.rs:56,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - ctx
    - req
    argTypes:
    - '&OperationContext'
    - Request<Buffer>
    constantsTouched: []
    func_position:
      end: 57
      start: 51
    functionDepth: 37
    functionLinenumber: 51
    functionLinenumberEnd: 57
    functionName: YandexDiskCore::send
    functionSourceFile: /src/opendal/core/services/yandex-disk/src/core.rs
    functionUses: 8
    functionsReached:
    - Result::http_transport
    - Self::send
    linkageType: ''
    returnType: Result
    signature: 'pub async fn send(&self,ctx: &OperationContext,req: Request<Buffer>,)
      -> Result<Response<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: request::Builder::header
      Src: /src/opendal/core/services/yandex-disk/src/core.rs:61,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - req
    argTypes:
    - request::Builder
    constantsTouched: []
    func_position:
      end: 65
      start: 60
    functionDepth: 0
    functionLinenumber: 60
    functionLinenumberEnd: 65
    functionName: YandexDiskCore::sign
    functionSourceFile: /src/opendal/core/services/yandex-disk/src/core.rs
    functionUses: 7
    functionsReached:
    - request::Builder::header
    linkageType: ''
    returnType: request::Builder
    signature: 'pub fn sign(&self, req: request::Builder) -> request::Builder'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_rooted_abs_path
      Src: /src/opendal/core/services/yandex-disk/src/core.rs:71,1
    - Dst: Request::get
      Src: /src/opendal/core/services/yandex-disk/src/core.rs:78,1
    - Dst: Option::extension
      Src: /src/opendal/core/services/yandex-disk/src/core.rs:80,1
    - Dst: extension
      Src: /src/opendal/core/services/yandex-disk/src/core.rs:80,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/yandex-disk/src/core.rs:82,1
    - Dst: YandexDiskCore::sign
      Src: /src/opendal/core/services/yandex-disk/src/core.rs:84,1
    - Dst: request::Builder::body
      Src: /src/opendal/core/services/yandex-disk/src/core.rs:87,1
    - Dst: Buffer::new
      Src: /src/opendal/core/services/yandex-disk/src/core.rs:87,1
    - Dst: map_err
      Src: /src/opendal/core/services/yandex-disk/src/core.rs:87,1
    - Dst: YandexDiskCore::send
      Src: /src/opendal/core/services/yandex-disk/src/core.rs:89,1
    - Dst: status
      Src: /src/opendal/core/services/yandex-disk/src/core.rs:91,1
    - Dst: into_body
      Src: /src/opendal/core/services/yandex-disk/src/core.rs:95,1
    - Dst: serde_json::from_reader
      Src: /src/opendal/core/services/yandex-disk/src/core.rs:98,1
    - Dst: Bytes::reader
      Src: /src/opendal/core/services/yandex-disk/src/core.rs:98,1
    - Dst: map_err
      Src: /src/opendal/core/services/yandex-disk/src/core.rs:98,1
    - Dst: Ok
      Src: /src/opendal/core/services/yandex-disk/src/core.rs:100,1
    - Dst: Err
      Src: /src/opendal/core/services/yandex-disk/src/core.rs:102,1
    - Dst: parse_error
      Src: /src/opendal/core/services/yandex-disk/src/core.rs:102,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 37
    argCount: 2
    argNames:
    - ctx
    - path
    argTypes:
    - '&OperationContext'
    - '&str'
    constantsTouched: []
    func_position:
      end: 104
      start: 70
    functionDepth: 38
    functionLinenumber: 70
    functionLinenumberEnd: 104
    functionName: YandexDiskCore::get_upload_url
    functionSourceFile: /src/opendal/core/services/yandex-disk/src/core.rs
    functionUses: 1
    functionsReached:
    - map_err
    - extension
    - Request::get
    - Buffer::new
    - YandexDiskCore::sign
    - status
    - YandexDiskCore::send
    - Ok
    - serde_json::from_reader
    - parse_error
    - into_body
    - build_rooted_abs_path
    - request::Builder::body
    - Err
    - Option::extension
    - ServiceOperation
    - Bytes::reader
    linkageType: ''
    returnType: Result
    signature: 'async fn get_upload_url(&self, ctx: &OperationContext, path: &str)
      -> Result<String>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: YandexDiskCore::get_upload_url
      Src: /src/opendal/core/services/yandex-disk/src/core.rs:112,1
    - Dst: Request::put
      Src: /src/opendal/core/services/yandex-disk/src/core.rs:113,1
    - Dst: DeleteInput::extension
      Src: /src/opendal/core/services/yandex-disk/src/core.rs:113,1
    - Dst: extension
      Src: /src/opendal/core/services/yandex-disk/src/core.rs:113,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/yandex-disk/src/core.rs:115,1
    - Dst: body
      Src: /src/opendal/core/services/yandex-disk/src/core.rs:113,1
    - Dst: map_err
      Src: /src/opendal/core/services/yandex-disk/src/core.rs:113,1
    - Dst: YandexDiskCore::send
      Src: /src/opendal/core/services/yandex-disk/src/core.rs:119,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 3
    argNames:
    - ctx
    - path
    - body
    argTypes:
    - '&OperationContext'
    - '&str'
    - Buffer
    constantsTouched: []
    func_position:
      end: 120
      start: 106
    functionDepth: 39
    functionLinenumber: 106
    functionLinenumberEnd: 120
    functionName: YandexDiskCore::upload
    functionSourceFile: /src/opendal/core/services/yandex-disk/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - extension
    - Request::put
    - YandexDiskCore::send
    - YandexDiskCore::get_upload_url
    - body
    - ServiceOperation
    - DeleteInput::extension
    linkageType: ''
    returnType: Result
    signature: 'pub async fn upload(&self,ctx: &OperationContext,path: &str,body:
      Buffer,) -> Result<Response<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_rooted_abs_path
      Src: /src/opendal/core/services/yandex-disk/src/core.rs:123,1
    - Dst: Request::get
      Src: /src/opendal/core/services/yandex-disk/src/core.rs:130,1
    - Dst: Option::extension
      Src: /src/opendal/core/services/yandex-disk/src/core.rs:132,1
    - Dst: extension
      Src: /src/opendal/core/services/yandex-disk/src/core.rs:132,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/yandex-disk/src/core.rs:134,1
    - Dst: YandexDiskCore::sign
      Src: /src/opendal/core/services/yandex-disk/src/core.rs:136,1
    - Dst: request::Builder::body
      Src: /src/opendal/core/services/yandex-disk/src/core.rs:139,1
    - Dst: Buffer::new
      Src: /src/opendal/core/services/yandex-disk/src/core.rs:139,1
    - Dst: map_err
      Src: /src/opendal/core/services/yandex-disk/src/core.rs:139,1
    - Dst: YandexDiskCore::send
      Src: /src/opendal/core/services/yandex-disk/src/core.rs:141,1
    - Dst: status
      Src: /src/opendal/core/services/yandex-disk/src/core.rs:143,1
    - Dst: into_body
      Src: /src/opendal/core/services/yandex-disk/src/core.rs:147,1
    - Dst: serde_json::from_reader
      Src: /src/opendal/core/services/yandex-disk/src/core.rs:150,1
    - Dst: Bytes::reader
      Src: /src/opendal/core/services/yandex-disk/src/core.rs:150,1
    - Dst: map_err
      Src: /src/opendal/core/services/yandex-disk/src/core.rs:150,1
    - Dst: Ok
      Src: /src/opendal/core/services/yandex-disk/src/core.rs:152,1
    - Dst: Err
      Src: /src/opendal/core/services/yandex-disk/src/core.rs:154,1
    - Dst: parse_error
      Src: /src/opendal/core/services/yandex-disk/src/core.rs:154,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 37
    argCount: 2
    argNames:
    - ctx
    - path
    argTypes:
    - '&OperationContext'
    - '&str'
    constantsTouched: []
    func_position:
      end: 156
      start: 122
    functionDepth: 38
    functionLinenumber: 122
    functionLinenumberEnd: 156
    functionName: YandexDiskCore::get_download_url
    functionSourceFile: /src/opendal/core/services/yandex-disk/src/core.rs
    functionUses: 1
    functionsReached:
    - map_err
    - extension
    - Request::get
    - Buffer::new
    - YandexDiskCore::sign
    - status
    - YandexDiskCore::send
    - Ok
    - serde_json::from_reader
    - parse_error
    - into_body
    - build_rooted_abs_path
    - request::Builder::body
    - Err
    - Option::extension
    - ServiceOperation
    - Bytes::reader
    linkageType: ''
    returnType: Result
    signature: 'async fn get_download_url(&self, ctx: &OperationContext, path: &str)
      -> Result<String>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: YandexDiskCore::get_download_url
      Src: /src/opendal/core/services/yandex-disk/src/core.rs:164,1
    - Dst: Request::get
      Src: /src/opendal/core/services/yandex-disk/src/core.rs:165,1
    - Dst: Option::header
      Src: /src/opendal/core/services/yandex-disk/src/core.rs:165,1
    - Dst: (Vec::to_header
      Src: /src/opendal/core/services/yandex-disk/src/core.rs:166,1
    - Dst: String::extension
      Src: /src/opendal/core/services/yandex-disk/src/core.rs:165,1
    - Dst: extension
      Src: /src/opendal/core/services/yandex-disk/src/core.rs:165,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/yandex-disk/src/core.rs:168,1
    - Dst: body
      Src: /src/opendal/core/services/yandex-disk/src/core.rs:165,1
    - Dst: Buffer::new
      Src: /src/opendal/core/services/yandex-disk/src/core.rs:169,1
    - Dst: map_err
      Src: /src/opendal/core/services/yandex-disk/src/core.rs:165,1
    - Dst: Result::http_transport
      Src: /src/opendal/core/services/yandex-disk/src/core.rs:172,1
    - Dst: Self::fetch
      Src: /src/opendal/core/services/yandex-disk/src/core.rs:172,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 25
    argCount: 3
    argNames:
    - ctx
    - path
    - range
    argTypes:
    - '&OperationContext'
    - '&str'
    - BytesRange
    constantsTouched: []
    func_position:
      end: 173
      start: 158
    functionDepth: 39
    functionLinenumber: 158
    functionLinenumberEnd: 173
    functionName: YandexDiskCore::download
    functionSourceFile: /src/opendal/core/services/yandex-disk/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - extension
    - Request::get
    - (Vec::to_header
    - Buffer::new
    - body
    - Self::fetch
    - ServiceOperation
    - Result::http_transport
    - String::extension
    - Option::header
    - YandexDiskCore::get_download_url
    linkageType: ''
    returnType: Result
    signature: 'pub async fn download(&self,ctx: &OperationContext,path: &str,range:
      BytesRange,) -> Result<Response<HttpBody>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/yandex-disk/src/core.rs:176,1
    - Dst: split
      Src: /src/opendal/core/services/yandex-disk/src/core.rs:178,1
    - Dst: split('/').collect::<Vec<&str>>
      Src: /src/opendal/core/services/yandex-disk/src/core.rs:178,1
    - Dst: Result::len
      Src: /src/opendal/core/services/yandex-disk/src/core.rs:180,1
    - Dst: join
      Src: /src/opendal/core/services/yandex-disk/src/core.rs:181,1
    - Dst: YandexDiskCore::create_dir
      Src: /src/opendal/core/services/yandex-disk/src/core.rs:182,1
    - Dst: status
      Src: /src/opendal/core/services/yandex-disk/src/core.rs:184,1
    - Dst: Err
      Src: /src/opendal/core/services/yandex-disk/src/core.rs:188,1
    - Dst: parse_error
      Src: /src/opendal/core/services/yandex-disk/src/core.rs:188,1
    - Dst: Ok
      Src: /src/opendal/core/services/yandex-disk/src/core.rs:191,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 32
    argCount: 2
    argNames:
    - ctx
    - path
    argTypes:
    - '&OperationContext'
    - '&str'
    constantsTouched: []
    func_position:
      end: 192
      start: 175
    functionDepth: 33
    functionLinenumber: 175
    functionLinenumberEnd: 192
    functionName: YandexDiskCore::ensure_dir_exists
    functionSourceFile: /src/opendal/core/services/yandex-disk/src/core.rs
    functionUses: 0
    functionsReached:
    - status
    - Ok
    - join
    - parse_error
    - split
    - YandexDiskCore::create_dir
    - build_abs_path
    - Err
    - split('/').collect::<Vec<&str>>
    - Result::len
    linkageType: ''
    returnType: Result
    signature: 'pub async fn ensure_dir_exists(&self, ctx: &OperationContext, path:
      &str) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Request::put
      Src: /src/opendal/core/services/yandex-disk/src/core.rs:200,1
    - Dst: DeleteInput::extension
      Src: /src/opendal/core/services/yandex-disk/src/core.rs:202,1
    - Dst: extension
      Src: /src/opendal/core/services/yandex-disk/src/core.rs:202,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/yandex-disk/src/core.rs:204,1
    - Dst: YandexDiskCore::sign
      Src: /src/opendal/core/services/yandex-disk/src/core.rs:206,1
    - Dst: request::Builder::body
      Src: /src/opendal/core/services/yandex-disk/src/core.rs:209,1
    - Dst: Buffer::new
      Src: /src/opendal/core/services/yandex-disk/src/core.rs:209,1
    - Dst: map_err
      Src: /src/opendal/core/services/yandex-disk/src/core.rs:209,1
    - Dst: YandexDiskCore::send
      Src: /src/opendal/core/services/yandex-disk/src/core.rs:211,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 17
    argCount: 2
    argNames:
    - ctx
    - path
    argTypes:
    - '&OperationContext'
    - '&str'
    constantsTouched: []
    func_position:
      end: 212
      start: 194
    functionDepth: 38
    functionLinenumber: 194
    functionLinenumberEnd: 212
    functionName: YandexDiskCore::create_dir
    functionSourceFile: /src/opendal/core/services/yandex-disk/src/core.rs
    functionUses: 1
    functionsReached:
    - map_err
    - extension
    - Buffer::new
    - YandexDiskCore::sign
    - Request::put
    - YandexDiskCore::send
    - request::Builder::body
    - ServiceOperation
    - DeleteInput::extension
    linkageType: ''
    returnType: Result
    signature: 'pub async fn create_dir(&self, ctx: &OperationContext, path: &str)
      -> Result<Response<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_rooted_abs_path
      Src: /src/opendal/core/services/yandex-disk/src/core.rs:220,1
    - Dst: build_rooted_abs_path
      Src: /src/opendal/core/services/yandex-disk/src/core.rs:221,1
    - Dst: Request::post
      Src: /src/opendal/core/services/yandex-disk/src/core.rs:229,1
    - Dst: extension
      Src: /src/opendal/core/services/yandex-disk/src/core.rs:231,1
    - Dst: extension
      Src: /src/opendal/core/services/yandex-disk/src/core.rs:231,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/yandex-disk/src/core.rs:233,1
    - Dst: YandexDiskCore::sign
      Src: /src/opendal/core/services/yandex-disk/src/core.rs:235,1
    - Dst: request::Builder::body
      Src: /src/opendal/core/services/yandex-disk/src/core.rs:238,1
    - Dst: Buffer::new
      Src: /src/opendal/core/services/yandex-disk/src/core.rs:238,1
    - Dst: map_err
      Src: /src/opendal/core/services/yandex-disk/src/core.rs:238,1
    - Dst: YandexDiskCore::send
      Src: /src/opendal/core/services/yandex-disk/src/core.rs:240,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 23
    argCount: 3
    argNames:
    - ctx
    - from
    - to
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    constantsTouched: []
    func_position:
      end: 241
      start: 214
    functionDepth: 38
    functionLinenumber: 214
    functionLinenumberEnd: 241
    functionName: YandexDiskCore::copy
    functionSourceFile: /src/opendal/core/services/yandex-disk/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - extension
    - Buffer::new
    - YandexDiskCore::sign
    - YandexDiskCore::send
    - Request::post
    - build_rooted_abs_path
    - request::Builder::body
    - ServiceOperation
    linkageType: ''
    returnType: Result
    signature: 'pub async fn copy(&self,ctx: &OperationContext,from: &str,to: &str,)
      -> Result<Response<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_rooted_abs_path
      Src: /src/opendal/core/services/yandex-disk/src/core.rs:249,1
    - Dst: build_rooted_abs_path
      Src: /src/opendal/core/services/yandex-disk/src/core.rs:250,1
    - Dst: Request::post
      Src: /src/opendal/core/services/yandex-disk/src/core.rs:258,1
    - Dst: extension
      Src: /src/opendal/core/services/yandex-disk/src/core.rs:260,1
    - Dst: extension
      Src: /src/opendal/core/services/yandex-disk/src/core.rs:260,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/yandex-disk/src/core.rs:262,1
    - Dst: YandexDiskCore::sign
      Src: /src/opendal/core/services/yandex-disk/src/core.rs:264,1
    - Dst: request::Builder::body
      Src: /src/opendal/core/services/yandex-disk/src/core.rs:267,1
    - Dst: Buffer::new
      Src: /src/opendal/core/services/yandex-disk/src/core.rs:267,1
    - Dst: map_err
      Src: /src/opendal/core/services/yandex-disk/src/core.rs:267,1
    - Dst: YandexDiskCore::send
      Src: /src/opendal/core/services/yandex-disk/src/core.rs:269,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 23
    argCount: 3
    argNames:
    - ctx
    - from
    - to
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    constantsTouched: []
    func_position:
      end: 270
      start: 243
    functionDepth: 38
    functionLinenumber: 243
    functionLinenumberEnd: 270
    functionName: YandexDiskCore::move_object
    functionSourceFile: /src/opendal/core/services/yandex-disk/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - extension
    - Buffer::new
    - YandexDiskCore::sign
    - YandexDiskCore::send
    - Request::post
    - build_rooted_abs_path
    - request::Builder::body
    - ServiceOperation
    linkageType: ''
    returnType: Result
    signature: 'pub async fn move_object(&self,ctx: &OperationContext,from: &str,to:
      &str,) -> Result<Response<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_rooted_abs_path
      Src: /src/opendal/core/services/yandex-disk/src/core.rs:273,1
    - Dst: Request::delete
      Src: /src/opendal/core/services/yandex-disk/src/core.rs:280,1
    - Dst: Result::extension
      Src: /src/opendal/core/services/yandex-disk/src/core.rs:282,1
    - Dst: extension
      Src: /src/opendal/core/services/yandex-disk/src/core.rs:282,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/yandex-disk/src/core.rs:284,1
    - Dst: YandexDiskCore::sign
      Src: /src/opendal/core/services/yandex-disk/src/core.rs:286,1
    - Dst: request::Builder::body
      Src: /src/opendal/core/services/yandex-disk/src/core.rs:289,1
    - Dst: Buffer::new
      Src: /src/opendal/core/services/yandex-disk/src/core.rs:289,1
    - Dst: map_err
      Src: /src/opendal/core/services/yandex-disk/src/core.rs:289,1
    - Dst: YandexDiskCore::send
      Src: /src/opendal/core/services/yandex-disk/src/core.rs:291,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 20
    argCount: 2
    argNames:
    - ctx
    - path
    argTypes:
    - '&OperationContext'
    - '&str'
    constantsTouched: []
    func_position:
      end: 292
      start: 272
    functionDepth: 32
    functionLinenumber: 272
    functionLinenumberEnd: 292
    functionName: YandexDiskCore::delete
    functionSourceFile: /src/opendal/core/services/yandex-disk/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - extension
    - Buffer::new
    - YandexDiskCore::sign
    - Request::delete
    - YandexDiskCore::send
    - Result::extension
    - build_rooted_abs_path
    - request::Builder::body
    - ServiceOperation
    linkageType: ''
    returnType: Result
    signature: 'pub async fn delete(&self, ctx: &OperationContext, path: &str) ->
      Result<Response<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_rooted_abs_path
      Src: /src/opendal/core/services/yandex-disk/src/core.rs:301,1
    - Dst: Request::get
      Src: /src/opendal/core/services/yandex-disk/src/core.rs:316,1
    - Dst: Option::extension
      Src: /src/opendal/core/services/yandex-disk/src/core.rs:318,1
    - Dst: extension
      Src: /src/opendal/core/services/yandex-disk/src/core.rs:318,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/yandex-disk/src/core.rs:320,1
    - Dst: YandexDiskCore::sign
      Src: /src/opendal/core/services/yandex-disk/src/core.rs:322,1
    - Dst: request::Builder::body
      Src: /src/opendal/core/services/yandex-disk/src/core.rs:325,1
    - Dst: Buffer::new
      Src: /src/opendal/core/services/yandex-disk/src/core.rs:325,1
    - Dst: map_err
      Src: /src/opendal/core/services/yandex-disk/src/core.rs:325,1
    - Dst: YandexDiskCore::send
      Src: /src/opendal/core/services/yandex-disk/src/core.rs:327,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 28
    argCount: 4
    argNames:
    - ctx
    - path
    - limit
    - offset
    argTypes:
    - '&OperationContext'
    - '&str'
    - Option<usize>
    - Option<String>
    constantsTouched: []
    func_position:
      end: 328
      start: 294
    functionDepth: 38
    functionLinenumber: 294
    functionLinenumberEnd: 328
    functionName: YandexDiskCore::metainformation
    functionSourceFile: /src/opendal/core/services/yandex-disk/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - extension
    - Request::get
    - Buffer::new
    - YandexDiskCore::sign
    - YandexDiskCore::send
    - build_rooted_abs_path
    - request::Builder::body
    - Option::extension
    - ServiceOperation
    linkageType: ''
    returnType: Result
    signature: 'pub async fn metainformation(&self,ctx: &OperationContext,path: &str,limit:
      Option<usize>,offset: Option<String>,) -> Result<Response<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 3
    argNames:
    - core
    - ctx
    - path
    argTypes:
    - Arc<YandexDiskCore>
    - OperationContext
    - String
    constantsTouched: []
    func_position:
      end: 38
      start: 36
    functionDepth: 0
    functionLinenumber: 36
    functionLinenumberEnd: 38
    functionName: YandexDiskWriter::new
    functionSourceFile: /src/opendal/core/services/yandex-disk/src/writer.rs
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(core: Arc<YandexDiskCore>, ctx: OperationContext, path:
      String) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: ensure_dir_exists
      Src: /src/opendal/core/services/yandex-disk/src/writer.rs:43,1
    - Dst: upload
      Src: /src/opendal/core/services/yandex-disk/src/writer.rs:45,1
    - Dst: status
      Src: /src/opendal/core/services/yandex-disk/src/writer.rs:47,1
    - Dst: Ok
      Src: /src/opendal/core/services/yandex-disk/src/writer.rs:49,1
    - Dst: Metadata::default
      Src: /src/opendal/core/services/yandex-disk/src/writer.rs:49,1
    - Dst: Err
      Src: /src/opendal/core/services/yandex-disk/src/writer.rs:50,1
    - Dst: super::core::parse_error
      Src: /src/opendal/core/services/yandex-disk/src/writer.rs:50,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 27
    argCount: 1
    argNames:
    - bs
    argTypes:
    - Buffer
    constantsTouched: []
    func_position:
      end: 52
      start: 42
    functionDepth: 34
    functionLinenumber: 42
    functionLinenumberEnd: 52
    functionName: YandexDiskWriter::write_once
    functionSourceFile: /src/opendal/core/services/yandex-disk/src/writer.rs
    functionUses: 0
    functionsReached:
    - Metadata::default
    - status
    - Ok
    - Err
    - super::core::parse_error
    - ensure_dir_exists
    - upload
    linkageType: ''
    returnType: Result
    signature: 'async fn write_once(&self, bs: Buffer) -> Result<Metadata>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: register::<YandexDisk>
      Src: /src/opendal/core/services/yandex-disk/src/lib.rs:38,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - registry
    argTypes:
    - '&opendal_core::OperatorRegistry'
    constantsTouched: []
    func_position:
      end: 39
      start: 37
    functionDepth: 0
    functionLinenumber: 37
    functionLinenumberEnd: 39
    functionName: register_yandex_disk_service
    functionSourceFile: /src/opendal/core/services/yandex-disk/src/lib.rs
    functionUses: 1
    functionsReached:
    - register::<YandexDisk>
    linkageType: ''
    returnType: void
    signature: 'pub fn register_yandex_disk_service(registry: &opendal_core::OperatorRegistry)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::debug_struct
      Src: /src/opendal/core/services/yandex-disk/src/backend.rs:46,1
    - Dst: field
      Src: /src/opendal/core/services/yandex-disk/src/backend.rs:46,1
    - Dst: finish_non_exhaustive
      Src: /src/opendal/core/services/yandex-disk/src/backend.rs:46,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - f
    argTypes:
    - '&mut std::fmt::Formatter<''_>'
    constantsTouched: []
    func_position:
      end: 49
      start: 45
    functionDepth: 5
    functionLinenumber: 45
    functionLinenumberEnd: 49
    functionName: YandexDiskBuilder::fmt
    functionSourceFile: /src/opendal/core/services/yandex-disk/src/backend.rs
    functionUses: 0
    functionsReached:
    - field
    - Result::debug_struct
    - finish_non_exhaustive
    linkageType: ''
    returnType: std::fmt::Result
    signature: 'fn fmt(&self, f: &mut std::fmt::Formatter<''_>) -> std::fmt::Result'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::is_empty
      Src: /src/opendal/core/services/yandex-disk/src/backend.rs:57,1
    - Dst: Some
      Src: /src/opendal/core/services/yandex-disk/src/backend.rs:60,1
    - Dst: Result::to_string
      Src: /src/opendal/core/services/yandex-disk/src/backend.rs:60,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - root
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 64
      start: 56
    functionDepth: 4
    functionLinenumber: 56
    functionLinenumberEnd: 64
    functionName: YandexDiskBuilder::root
    functionSourceFile: /src/opendal/core/services/yandex-disk/src/backend.rs
    functionUses: 0
    functionsReached:
    - Result::is_empty
    - Result::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn root(mut self, root: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: to_string
      Src: /src/opendal/core/services/yandex-disk/src/backend.rs:71,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - access_token
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 74
      start: 70
    functionDepth: 2
    functionLinenumber: 70
    functionLinenumberEnd: 74
    functionName: YandexDiskBuilder::access_token
    functionSourceFile: /src/opendal/core/services/yandex-disk/src/backend.rs
    functionUses: 0
    functionsReached:
    - to_string
    linkageType: ''
    returnType: Self
    signature: 'pub fn access_token(mut self, access_token: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: normalize_root
      Src: /src/opendal/core/services/yandex-disk/src/backend.rs:84,1
    - Dst: clone
      Src: /src/opendal/core/services/yandex-disk/src/backend.rs:84,1
    - Dst: unwrap_or_default
      Src: /src/opendal/core/services/yandex-disk/src/backend.rs:84,1
    - Dst: is_empty
      Src: /src/opendal/core/services/yandex-disk/src/backend.rs:88,1
    - Dst: Err
      Src: /src/opendal/core/services/yandex-disk/src/backend.rs:89,1
    - Dst: Error::new
      Src: /src/opendal/core/services/yandex-disk/src/backend.rs:90,1
    - Dst: Self::with_operation
      Src: /src/opendal/core/services/yandex-disk/src/backend.rs:90,1
    - Dst: Self::with_context
      Src: /src/opendal/core/services/yandex-disk/src/backend.rs:90,1
    - Dst: Ok
      Src: /src/opendal/core/services/yandex-disk/src/backend.rs:96,1
    - Dst: Arc::new
      Src: /src/opendal/core/services/yandex-disk/src/backend.rs:97,1
    - Dst: ServiceInfo::new
      Src: /src/opendal/core/services/yandex-disk/src/backend.rs:98,1
    - Dst: Default::default
      Src: /src/opendal/core/services/yandex-disk/src/backend.rs:119,1
    - Dst: clone
      Src: /src/opendal/core/services/yandex-disk/src/backend.rs:122,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 36
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 125
      start: 81
    functionDepth: 34
    functionLinenumber: 81
    functionLinenumberEnd: 125
    functionName: YandexDiskBuilder::build
    functionSourceFile: /src/opendal/core/services/yandex-disk/src/backend.rs
    functionUses: 0
    functionsReached:
    - ServiceInfo::new
    - Ok
    - Arc::new
    - Default::default
    - clone
    - normalize_root
    - Err
    - is_empty
    - Error::new
    - Self::with_operation
    - Self::with_context
    - unwrap_or_default
    linkageType: ''
    returnType: Result
    signature: fn build(self) -> Result<impl Service>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: clone
      Src: /src/opendal/core/services/yandex-disk/src/backend.rs:142,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 143
      start: 141
    functionDepth: 2
    functionLinenumber: 141
    functionLinenumberEnd: 143
    functionName: YandexDiskBackend::info
    functionSourceFile: /src/opendal/core/services/yandex-disk/src/backend.rs
    functionUses: 0
    functionsReached:
    - clone
    linkageType: ''
    returnType: ServiceInfo
    signature: fn info(&self) -> ServiceInfo
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 147
      start: 145
    functionDepth: 0
    functionLinenumber: 145
    functionLinenumberEnd: 147
    functionName: YandexDiskBackend::capability
    functionSourceFile: /src/opendal/core/services/yandex-disk/src/backend.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Capability
    signature: fn capability(&self) -> Capability
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: ensure_dir_exists
      Src: /src/opendal/core/services/yandex-disk/src/backend.rs:155,1
    - Dst: Ok
      Src: /src/opendal/core/services/yandex-disk/src/backend.rs:157,1
    - Dst: RpCreateDir::default
      Src: /src/opendal/core/services/yandex-disk/src/backend.rs:157,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 3
    argNames:
    - ctx
    - path
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpCreateDir
    constantsTouched: []
    func_position:
      end: 158
      start: 149
    functionDepth: 34
    functionLinenumber: 149
    functionLinenumberEnd: 158
    functionName: YandexDiskBackend::create_dir
    functionSourceFile: /src/opendal/core/services/yandex-disk/src/backend.rs
    functionUses: 0
    functionsReached:
    - RpCreateDir::default
    - Ok
    - ensure_dir_exists
    linkageType: ''
    returnType: Result
    signature: 'async fn create_dir(&self,ctx: &OperationContext,path: &str,_: OpCreateDir,)
      -> Result<RpCreateDir>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: ensure_dir_exists
      Src: /src/opendal/core/services/yandex-disk/src/backend.rs:167,1
    - Dst: move_object
      Src: /src/opendal/core/services/yandex-disk/src/backend.rs:169,1
    - Dst: status
      Src: /src/opendal/core/services/yandex-disk/src/backend.rs:171,1
    - Dst: Ok
      Src: /src/opendal/core/services/yandex-disk/src/backend.rs:174,1
    - Dst: RpRename::default
      Src: /src/opendal/core/services/yandex-disk/src/backend.rs:174,1
    - Dst: Err
      Src: /src/opendal/core/services/yandex-disk/src/backend.rs:175,1
    - Dst: super::core::parse_error
      Src: /src/opendal/core/services/yandex-disk/src/backend.rs:175,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 19
    argCount: 4
    argNames:
    - ctx
    - from
    - to
    - _args
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    - OpRename
    constantsTouched: []
    func_position:
      end: 177
      start: 160
    functionDepth: 34
    functionLinenumber: 160
    functionLinenumberEnd: 177
    functionName: YandexDiskBackend::rename
    functionSourceFile: /src/opendal/core/services/yandex-disk/src/backend.rs
    functionUses: 0
    functionsReached:
    - status
    - Ok
    - move_object
    - Err
    - RpRename::default
    - super::core::parse_error
    - ensure_dir_exists
    linkageType: ''
    returnType: Result
    signature: 'async fn rename(&self,ctx: &OperationContext,from: &str,to: &str,_args:
      OpRename,) -> Result<RpRename>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: clone
      Src: /src/opendal/core/services/yandex-disk/src/backend.rs:187,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/yandex-disk/src/backend.rs:188,1
    - Dst: Result::to_string
      Src: /src/opendal/core/services/yandex-disk/src/backend.rs:189,1
    - Dst: Result::to_string
      Src: /src/opendal/core/services/yandex-disk/src/backend.rs:190,1
    - Dst: Ok
      Src: /src/opendal/core/services/yandex-disk/src/backend.rs:192,1
    - Dst: oio::OneShotCopier::new
      Src: /src/opendal/core/services/yandex-disk/src/backend.rs:192,1
    - Dst: CompfsCore::ensure_dir_exists
      Src: /src/opendal/core/services/yandex-disk/src/backend.rs:193,1
    - Dst: CompfsCore::copy
      Src: /src/opendal/core/services/yandex-disk/src/backend.rs:195,1
    - Dst: status
      Src: /src/opendal/core/services/yandex-disk/src/backend.rs:197,1
    - Dst: Ok
      Src: /src/opendal/core/services/yandex-disk/src/backend.rs:200,1
    - Dst: Metadata::default
      Src: /src/opendal/core/services/yandex-disk/src/backend.rs:200,1
    - Dst: Err
      Src: /src/opendal/core/services/yandex-disk/src/backend.rs:201,1
    - Dst: super::core::parse_error
      Src: /src/opendal/core/services/yandex-disk/src/backend.rs:201,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 33
    argCount: 5
    argNames:
    - ctx
    - from
    - to
    - _args
    - _opts
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    - OpCopy
    - OpCopier
    constantsTouched: []
    func_position:
      end: 204
      start: 179
    functionDepth: 34
    functionLinenumber: 179
    functionLinenumberEnd: 204
    functionName: YandexDiskBackend::copy
    functionSourceFile: /src/opendal/core/services/yandex-disk/src/backend.rs
    functionUses: 0
    functionsReached:
    - Result::clone
    - Metadata::default
    - Result::to_string
    - Ok
    - status
    - clone
    - Err
    - CompfsCore::copy
    - super::core::parse_error
    - oio::OneShotCopier::new
    - CompfsCore::ensure_dir_exists
    linkageType: ''
    returnType: Result
    signature: 'fn copy(&self,ctx: &OperationContext,from: &str,to: &str,_args: OpCopy,_opts:
      OpCopier,) -> Result<Self::Copier>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/core/services/yandex-disk/src/backend.rs:207,1
    - Dst: oio::StreamReader::new
      Src: /src/opendal/core/services/yandex-disk/src/backend.rs:207,1
    - Dst: YandexDiskReader::new
      Src: /src/opendal/core/services/yandex-disk/src/backend.rs:207,1
    - Dst: YandexDiskBackend::clone
      Src: /src/opendal/core/services/yandex-disk/src/backend.rs:208,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/yandex-disk/src/backend.rs:209,1
    - Dst: Ok
      Src: /src/opendal/core/services/yandex-disk/src/backend.rs:215,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpRead
    constantsTouched: []
    func_position:
      end: 216
      start: 205
    functionDepth: 3
    functionLinenumber: 205
    functionLinenumberEnd: 216
    functionName: YandexDiskBackend::read
    functionSourceFile: /src/opendal/core/services/yandex-disk/src/backend.rs
    functionUses: 0
    functionsReached:
    - Result::clone
    - Ok
    - oio::StreamReader::new
    - YandexDiskReader::new
    - YandexDiskBackend::clone
    linkageType: ''
    returnType: Result
    signature: 'fn read(&self, ctx: &OperationContext, path: &str, args: OpRead) ->
      Result<Self::Reader>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: metainformation
      Src: /src/opendal/core/services/yandex-disk/src/backend.rs:219,1
    - Dst: status
      Src: /src/opendal/core/services/yandex-disk/src/backend.rs:221,1
    - Dst: into_body
      Src: /src/opendal/core/services/yandex-disk/src/backend.rs:225,1
    - Dst: serde_json::from_reader
      Src: /src/opendal/core/services/yandex-disk/src/backend.rs:228,1
    - Dst: Result::reader
      Src: /src/opendal/core/services/yandex-disk/src/backend.rs:228,1
    - Dst: map_err
      Src: /src/opendal/core/services/yandex-disk/src/backend.rs:228,1
    - Dst: parse_info
      Src: /src/opendal/core/services/yandex-disk/src/backend.rs:230,1
    - Dst: Result::map
      Src: /src/opendal/core/services/yandex-disk/src/backend.rs:230,1
    - Dst: Err
      Src: /src/opendal/core/services/yandex-disk/src/backend.rs:232,1
    - Dst: super::core::parse_error
      Src: /src/opendal/core/services/yandex-disk/src/backend.rs:232,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 22
    argCount: 3
    argNames:
    - ctx
    - path
    - _args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpStat
    constantsTouched: []
    func_position:
      end: 234
      start: 218
    functionDepth: 39
    functionLinenumber: 218
    functionLinenumberEnd: 234
    functionName: YandexDiskBackend::stat
    functionSourceFile: /src/opendal/core/services/yandex-disk/src/backend.rs
    functionUses: 0
    functionsReached:
    - map_err
    - status
    - metainformation
    - serde_json::from_reader
    - into_body
    - Err
    - Result::reader
    - Result::map
    - parse_info
    - super::core::parse_error
    linkageType: ''
    returnType: Result
    signature: 'async fn stat(&self, ctx: &OperationContext, path: &str, _args: OpStat)
      -> Result<RpStat>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: YandexDiskWriter::new
      Src: /src/opendal/core/services/yandex-disk/src/backend.rs:238,1
    - Dst: clone
      Src: /src/opendal/core/services/yandex-disk/src/backend.rs:238,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/yandex-disk/src/backend.rs:238,1
    - Dst: to_string
      Src: /src/opendal/core/services/yandex-disk/src/backend.rs:238,1
    - Dst: oio::OneShotWriter::new
      Src: /src/opendal/core/services/yandex-disk/src/backend.rs:240,1
    - Dst: Ok
      Src: /src/opendal/core/services/yandex-disk/src/backend.rs:242,1
    - Dst: Ok
      Src: /src/opendal/core/services/yandex-disk/src/backend.rs:245,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 3
    argNames:
    - ctx
    - path
    - _args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpWrite
    constantsTouched: []
    func_position:
      end: 246
      start: 236
    functionDepth: 2
    functionLinenumber: 236
    functionLinenumberEnd: 246
    functionName: YandexDiskBackend::write
    functionSourceFile: /src/opendal/core/services/yandex-disk/src/backend.rs
    functionUses: 0
    functionsReached:
    - Result::clone
    - to_string
    - Ok
    - clone
    - oio::OneShotWriter::new
    - YandexDiskWriter::new
    linkageType: ''
    returnType: Result
    signature: 'fn write(&self, ctx: &OperationContext, path: &str, _args: OpWrite)
      -> Result<Self::Writer>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/core/services/yandex-disk/src/backend.rs:250,1
    - Dst: oio::OneShotDeleter::new
      Src: /src/opendal/core/services/yandex-disk/src/backend.rs:250,1
    - Dst: YandexDiskDeleter::new
      Src: /src/opendal/core/services/yandex-disk/src/backend.rs:250,1
    - Dst: clone
      Src: /src/opendal/core/services/yandex-disk/src/backend.rs:251,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/yandex-disk/src/backend.rs:252,1
    - Dst: Ok
      Src: /src/opendal/core/services/yandex-disk/src/backend.rs:256,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - '&OperationContext'
    constantsTouched: []
    func_position:
      end: 257
      start: 248
    functionDepth: 2
    functionLinenumber: 248
    functionLinenumberEnd: 257
    functionName: YandexDiskBackend::delete
    functionSourceFile: /src/opendal/core/services/yandex-disk/src/backend.rs
    functionUses: 0
    functionsReached:
    - oio::OneShotDeleter::new
    - Result::clone
    - Ok
    - clone
    - YandexDiskDeleter::new
    linkageType: ''
    returnType: Result
    signature: 'fn delete(&self, ctx: &OperationContext) -> Result<Self::Deleter>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: YandexDiskLister::new
      Src: /src/opendal/core/services/yandex-disk/src/backend.rs:261,1
    - Dst: clone
      Src: /src/opendal/core/services/yandex-disk/src/backend.rs:261,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/yandex-disk/src/backend.rs:261,1
    - Dst: OpStat::limit
      Src: /src/opendal/core/services/yandex-disk/src/backend.rs:261,1
    - Dst: Ok
      Src: /src/opendal/core/services/yandex-disk/src/backend.rs:262,1
    - Dst: oio::PageLister::new
      Src: /src/opendal/core/services/yandex-disk/src/backend.rs:262,1
    - Dst: Ok
      Src: /src/opendal/core/services/yandex-disk/src/backend.rs:265,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpList
    constantsTouched: []
    func_position:
      end: 266
      start: 259
    functionDepth: 36
    functionLinenumber: 259
    functionLinenumberEnd: 266
    functionName: YandexDiskBackend::list
    functionSourceFile: /src/opendal/core/services/yandex-disk/src/backend.rs
    functionUses: 0
    functionsReached:
    - Result::clone
    - YandexDiskLister::new
    - Ok
    - clone
    - oio::PageLister::new
    - OpStat::limit
    linkageType: ''
    returnType: Result
    signature: 'fn list(&self, ctx: &OperationContext, path: &str, args: OpList) ->
      Result<Self::Lister>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/core/services/yandex-disk/src/backend.rs:274,1
    - Dst: Error::new
      Src: /src/opendal/core/services/yandex-disk/src/backend.rs:274,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - _ctx
    - _path
    - _args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpPresign
    constantsTouched: []
    func_position:
      end: 278
      start: 268
    functionDepth: 36
    functionLinenumber: 268
    functionLinenumberEnd: 278
    functionName: YandexDiskBackend::presign
    functionSourceFile: /src/opendal/core/services/yandex-disk/src/backend.rs
    functionUses: 0
    functionsReached:
    - Error::new
    - Err
    linkageType: ''
    returnType: Result
    signature: 'async fn presign(&self,_ctx: &OperationContext,_path: &str,_args:
      OpPresign,) -> Result<RpPresign>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::debug_struct
      Src: /src/opendal/core/services/hdfs/src/config.rs:52,1
    - Dst: field
      Src: /src/opendal/core/services/hdfs/src/config.rs:52,1
    - Dst: field
      Src: /src/opendal/core/services/hdfs/src/config.rs:52,1
    - Dst: field
      Src: /src/opendal/core/services/hdfs/src/config.rs:52,1
    - Dst: field
      Src: /src/opendal/core/services/hdfs/src/config.rs:52,1
    - Dst: field
      Src: /src/opendal/core/services/hdfs/src/config.rs:52,1
    - Dst: finish_non_exhaustive
      Src: /src/opendal/core/services/hdfs/src/config.rs:52,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 24
    argCount: 1
    argNames:
    - f
    argTypes:
    - '&mut std::fmt::Formatter<''_>'
    constantsTouched: []
    func_position:
      end: 62
      start: 51
    functionDepth: 5
    functionLinenumber: 51
    functionLinenumberEnd: 62
    functionName: HdfsConfig::fmt
    functionSourceFile: /src/opendal/core/services/hdfs/src/config.rs
    functionUses: 0
    functionsReached:
    - field
    - Result::debug_struct
    - finish_non_exhaustive
    linkageType: ''
    returnType: std::fmt::Result
    signature: 'fn fmt(&self, f: &mut std::fmt::Formatter<''_>) -> std::fmt::Result'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::options
      Src: /src/opendal/core/services/hdfs/src/config.rs:69,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/hdfs/src/config.rs:69,1
    - Dst: Result::authority
      Src: /src/opendal/core/services/hdfs/src/config.rs:70,1
    - Dst: Result::insert
      Src: /src/opendal/core/services/hdfs/src/config.rs:71,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/hdfs/src/config.rs:71,1
    - Dst: Result::root
      Src: /src/opendal/core/services/hdfs/src/config.rs:74,1
    - Dst: Result::is_empty
      Src: /src/opendal/core/services/hdfs/src/config.rs:75,1
    - Dst: Result::insert
      Src: /src/opendal/core/services/hdfs/src/config.rs:77,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/hdfs/src/config.rs:77,1
    - Dst: Result::to_string
      Src: /src/opendal/core/services/hdfs/src/config.rs:77,1
    - Dst: Self::from_iter
      Src: /src/opendal/core/services/hdfs/src/config.rs:80,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 28
    argCount: 1
    argNames:
    - uri
    argTypes:
    - '&opendal_core::OperatorUri'
    constantsTouched: []
    func_position:
      end: 81
      start: 68
    functionDepth: 35
    functionLinenumber: 68
    functionLinenumberEnd: 81
    functionName: HdfsConfig::from_uri
    functionSourceFile: /src/opendal/core/services/hdfs/src/config.rs
    functionUses: 2
    functionsReached:
    - Result::clone
    - Self::from_iter
    - Result::to_string
    - Result::insert
    - Result::is_empty
    - '&str::to_string'
    - Result::root
    - Result::authority
    - Result::options
    linkageType: ''
    returnType: opendal_core::Result
    signature: 'fn from_uri(uri: &opendal_core::OperatorUri) -> opendal_core::Result<Self>'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 86
      start: 84
    functionDepth: 0
    functionLinenumber: 84
    functionLinenumberEnd: 86
    functionName: HdfsConfig::into_builder
    functionSourceFile: /src/opendal/core/services/hdfs/src/config.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Self::Builder
    signature: fn into_builder(self) -> Self::Builder
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - core
    argTypes:
    - Arc<HdfsCore>
    constantsTouched: []
    func_position:
      end: 32
      start: 30
    functionDepth: 0
    functionLinenumber: 30
    functionLinenumberEnd: 32
    functionName: HdfsDeleter::new
    functionSourceFile: /src/opendal/core/services/hdfs/src/deleter.rs
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(core: Arc<HdfsCore>) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_rooted_abs_path
      Src: /src/opendal/core/services/hdfs/src/deleter.rs:37,1
    - Dst: metadata
      Src: /src/opendal/core/services/hdfs/src/deleter.rs:39,1
    - Dst: Error::kind
      Src: /src/opendal/core/services/hdfs/src/deleter.rs:42,1
    - Dst: Ok
      Src: /src/opendal/core/services/hdfs/src/deleter.rs:43,1
    - Dst: Err
      Src: /src/opendal/core/services/hdfs/src/deleter.rs:45,1
    - Dst: new_std_io_error
      Src: /src/opendal/core/services/hdfs/src/deleter.rs:45,1
    - Dst: Result::ok
      Src: /src/opendal/core/services/hdfs/src/deleter.rs:50,1
    - Dst: Self::unwrap
      Src: /src/opendal/core/services/hdfs/src/deleter.rs:50,1
    - Dst: Result::is_dir
      Src: /src/opendal/core/services/hdfs/src/deleter.rs:52,1
    - Dst: OpStat::recursive
      Src: /src/opendal/core/services/hdfs/src/deleter.rs:53,1
    - Dst: remove_dir_all
      Src: /src/opendal/core/services/hdfs/src/deleter.rs:54,1
    - Dst: remove_dir
      Src: /src/opendal/core/services/hdfs/src/deleter.rs:56,1
    - Dst: remove_file
      Src: /src/opendal/core/services/hdfs/src/deleter.rs:59,1
    - Dst: bool::map_err
      Src: /src/opendal/core/services/hdfs/src/deleter.rs:62,1
    - Dst: Ok
      Src: /src/opendal/core/services/hdfs/src/deleter.rs:64,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 54
    argCount: 2
    argNames:
    - path
    - args
    argTypes:
    - String
    - OpDelete
    constantsTouched: []
    func_position:
      end: 65
      start: 36
    functionDepth: 37
    functionLinenumber: 36
    functionLinenumberEnd: 65
    functionName: HdfsDeleter::delete_once
    functionSourceFile: /src/opendal/core/services/hdfs/src/deleter.rs
    functionUses: 0
    functionsReached:
    - remove_file
    - Result::ok
    - Ok
    - Self::unwrap
    - metadata
    - bool::map_err
    - build_rooted_abs_path
    - Result::is_dir
    - Err
    - remove_dir
    - Error::kind
    - new_std_io_error
    - remove_dir_all
    - OpStat::recursive
    linkageType: ''
    returnType: Result
    signature: 'async fn delete_once(&self, path: String, args: OpDelete) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::to_string
      Src: /src/opendal/core/services/hdfs/src/lister.rs:34,1
    - Dst: Some
      Src: /src/opendal/core/services/hdfs/src/lister.rs:38,1
    - Dst: to_string
      Src: /src/opendal/core/services/hdfs/src/lister.rs:38,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 3
    argNames:
    - root
    - rd
    - path
    argTypes:
    - '&str'
    - hdrs::Readdir
    - '&str'
    constantsTouched: []
    func_position:
      end: 40
      start: 32
    functionDepth: 2
    functionLinenumber: 32
    functionLinenumberEnd: 40
    functionName: HdfsLister::new
    functionSourceFile: /src/opendal/core/services/hdfs/src/lister.rs
    functionUses: 1
    functionsReached:
    - to_string
    - Result::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(root: &str, rd: hdrs::Readdir, path: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: take
      Src: /src/opendal/core/services/hdfs/src/lister.rs:45,1
    - Dst: Ok
      Src: /src/opendal/core/services/hdfs/src/lister.rs:46,1
    - Dst: Some
      Src: /src/opendal/core/services/hdfs/src/lister.rs:46,1
    - Dst: oio::Entry::new
      Src: /src/opendal/core/services/hdfs/src/lister.rs:46,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/hdfs/src/lister.rs:46,1
    - Dst: next
      Src: /src/opendal/core/services/hdfs/src/lister.rs:49,1
    - Dst: Ok
      Src: /src/opendal/core/services/hdfs/src/lister.rs:51,1
    - Dst: build_rel_path
      Src: /src/opendal/core/services/hdfs/src/lister.rs:54,1
    - Dst: std::fmt::Result::path
      Src: /src/opendal/core/services/hdfs/src/lister.rs:54,1
    - Dst: std::fmt::Result::is_file
      Src: /src/opendal/core/services/hdfs/src/lister.rs:56,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/hdfs/src/lister.rs:57,1
    - Dst: Self::with_content_length
      Src: /src/opendal/core/services/hdfs/src/lister.rs:57,1
    - Dst: std::fmt::Result::len
      Src: /src/opendal/core/services/hdfs/src/lister.rs:58,1
    - Dst: Self::with_last_modified
      Src: /src/opendal/core/services/hdfs/src/lister.rs:57,1
    - Dst: Timestamp::try_from
      Src: /src/opendal/core/services/hdfs/src/lister.rs:59,1
    - Dst: std::fmt::Result::modified
      Src: /src/opendal/core/services/hdfs/src/lister.rs:59,1
    - Dst: oio::Entry::new
      Src: /src/opendal/core/services/hdfs/src/lister.rs:60,1
    - Dst: std::fmt::Result::is_dir
      Src: /src/opendal/core/services/hdfs/src/lister.rs:61,1
    - Dst: oio::Entry::new
      Src: /src/opendal/core/services/hdfs/src/lister.rs:63,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/hdfs/src/lister.rs:63,1
    - Dst: oio::Entry::new
      Src: /src/opendal/core/services/hdfs/src/lister.rs:65,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/hdfs/src/lister.rs:65,1
    - Dst: Ok
      Src: /src/opendal/core/services/hdfs/src/lister.rs:68,1
    - Dst: Some
      Src: /src/opendal/core/services/hdfs/src/lister.rs:68,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 50
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 69
      start: 44
    functionDepth: 37
    functionLinenumber: 44
    functionLinenumberEnd: 69
    functionName: HdfsLister::next
    functionSourceFile: /src/opendal/core/services/hdfs/src/lister.rs
    functionUses: 0
    functionsReached:
    - next
    - Metadata::new
    - Timestamp::try_from
    - oio::Entry::new
    - std::fmt::Result::is_file
    - Ok
    - std::fmt::Result::len
    - Self::with_content_length
    - Self::with_last_modified
    - std::fmt::Result::is_dir
    - build_rel_path
    - Some
    - take
    - std::fmt::Result::path
    - std::fmt::Result::modified
    linkageType: ''
    returnType: Result
    signature: async fn next(&mut self) -> Result<Option<oio::Entry>>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: to_string
      Src: /src/opendal/core/services/hdfs/src/reader.rs:34,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - core
    - path
    argTypes:
    - Arc<HdfsCore>
    - '&str'
    constantsTouched: []
    func_position:
      end: 36
      start: 31
    functionDepth: 2
    functionLinenumber: 31
    functionLinenumberEnd: 36
    functionName: HdfsReader::new
    functionSourceFile: /src/opendal/core/services/hdfs/src/reader.rs
    functionUses: 1
    functionsReached:
    - to_string
    linkageType: ''
    returnType: Self
    signature: 'pub(super) fn new(core: Arc<HdfsCore>, path: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::into
      Src: /src/opendal/core/services/hdfs/src/reader.rs:45,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - file
    argTypes:
    - hdrs::File
    constantsTouched: []
    func_position:
      end: 46
      start: 44
    functionDepth: 29
    functionLinenumber: 44
    functionLinenumberEnd: 46
    functionName: HdfsReaderHandle::new
    functionSourceFile: /src/opendal/core/services/hdfs/src/reader.rs
    functionUses: 1
    functionsReached:
    - Result::into
    linkageType: ''
    returnType: Self
    signature: 'pub(super) fn new(file: hdrs::File) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: hdfs_open
      Src: /src/opendal/core/services/hdfs/src/reader.rs:53,1
    - Dst: Ok
      Src: /src/opendal/core/services/hdfs/src/reader.rs:54,1
    - Dst: HdfsReaderHandle::new
      Src: /src/opendal/core/services/hdfs/src/reader.rs:54,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 55
      start: 52
    functionDepth: 32
    functionLinenumber: 52
    functionLinenumberEnd: 55
    functionName: HdfsReader::open
    functionSourceFile: /src/opendal/core/services/hdfs/src/reader.rs
    functionUses: 0
    functionsReached:
    - hdfs_open
    - Ok
    - HdfsReaderHandle::new
    linkageType: ''
    returnType: Result
    signature: async fn open(&self) -> Result<Self::Handle>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/core/services/hdfs/src/reader.rs:59,1
    - Dst: Buffer::new
      Src: /src/opendal/core/services/hdfs/src/reader.rs:59,1
    - Dst: clone
      Src: /src/opendal/core/services/hdfs/src/reader.rs:62,1
    - Dst: tokio::task::spawn_blocking
      Src: /src/opendal/core/services/hdfs/src/reader.rs:63,1
    - Dst: Result::read_at
      Src: /src/opendal/core/services/hdfs/src/reader.rs:65,1
    - Dst: Result::map_err
      Src: /src/opendal/core/services/hdfs/src/reader.rs:65,1
    - Dst: io::Result::truncate
      Src: /src/opendal/core/services/hdfs/src/reader.rs:66,1
    - Dst: Ok::<_, Error>
      Src: /src/opendal/core/services/hdfs/src/reader.rs:67,1
    - Dst: Buffer::from
      Src: /src/opendal/core/services/hdfs/src/reader.rs:67,1
    - Dst: map_err
      Src: /src/opendal/core/services/hdfs/src/reader.rs:63,1
    - Dst: Error::new
      Src: /src/opendal/core/services/hdfs/src/reader.rs:70,1
    - Dst: Self::set_source
      Src: /src/opendal/core/services/hdfs/src/reader.rs:70,1
    - Dst: Ok
      Src: /src/opendal/core/services/hdfs/src/reader.rs:72,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 33
    argCount: 3
    argNames:
    - handle
    - offset
    - size
    argTypes:
    - '&Self::Handle'
    - u64
    - usize
    constantsTouched: []
    func_position:
      end: 73
      start: 57
    functionDepth: 34
    functionLinenumber: 57
    functionLinenumberEnd: 73
    functionName: HdfsReader::read_at
    functionSourceFile: /src/opendal/core/services/hdfs/src/reader.rs
    functionUses: 0
    functionsReached:
    - Result::map_err
    - map_err
    - Buffer::new
    - Result::read_at
    - tokio::task::spawn_blocking
    - Ok
    - clone
    - Error::new
    - io::Result::truncate
    - Ok::<_, Error>
    - Self::set_source
    - Buffer::from
    linkageType: ''
    returnType: Result
    signature: 'async fn read_at(handle: &Self::Handle, offset: u64, size: usize)
      -> Result<Buffer>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: to_string
      Src: /src/opendal/core/services/hdfs/src/reader.rs:87,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - core
    - path
    - op
    argTypes:
    - Arc<HdfsCore>
    - '&str'
    - OpWrite
    constantsTouched: []
    func_position:
      end: 91
      start: 84
    functionDepth: 2
    functionLinenumber: 84
    functionLinenumberEnd: 91
    functionName: HdfsLazyWriter::new
    functionSourceFile: /src/opendal/core/services/hdfs/src/reader.rs
    functionUses: 1
    functionsReached:
    - to_string
    linkageType: ''
    returnType: Self
    signature: 'pub(super) fn new(core: Arc<HdfsCore>, path: &str, op: OpWrite) ->
      Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: is_none
      Src: /src/opendal/core/services/hdfs/src/reader.rs:94,1
    - Dst: hdfs_write
      Src: /src/opendal/core/services/hdfs/src/reader.rs:96,1
    - Dst: Some
      Src: /src/opendal/core/services/hdfs/src/reader.rs:98,1
    - Dst: HdfsWriter::new
      Src: /src/opendal/core/services/hdfs/src/reader.rs:98,1
    - Dst: Arc::clone
      Src: /src/opendal/core/services/hdfs/src/reader.rs:102,1
    - Dst: Ok
      Src: /src/opendal/core/services/hdfs/src/reader.rs:108,1
    - Dst: as_mut
      Src: /src/opendal/core/services/hdfs/src/reader.rs:108,1
    - Dst: expect
      Src: /src/opendal/core/services/hdfs/src/reader.rs:108,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 29
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 109
      start: 93
    functionDepth: 35
    functionLinenumber: 93
    functionLinenumberEnd: 109
    functionName: HdfsLazyWriter::inner
    functionSourceFile: /src/opendal/core/services/hdfs/src/reader.rs
    functionUses: 3
    functionsReached:
    - is_none
    - as_mut
    - expect
    - hdfs_write
    - Ok
    - Some
    - HdfsWriter::new
    - Arc::clone
    linkageType: ''
    returnType: Result
    signature: async fn inner(&mut self) -> Result<&mut HdfsWriter<hdrs::AsyncFile>>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: HdfsLazyWriter::inner
      Src: /src/opendal/core/services/hdfs/src/reader.rs:114,1
    - Dst: write
      Src: /src/opendal/core/services/hdfs/src/reader.rs:114,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 1
    argNames:
    - bs
    argTypes:
    - Buffer
    constantsTouched: []
    func_position:
      end: 115
      start: 113
    functionDepth: 36
    functionLinenumber: 113
    functionLinenumberEnd: 115
    functionName: HdfsLazyWriter::write
    functionSourceFile: /src/opendal/core/services/hdfs/src/reader.rs
    functionUses: 0
    functionsReached:
    - write
    - HdfsLazyWriter::inner
    linkageType: ''
    returnType: Result
    signature: 'async fn write(&mut self, bs: Buffer) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: HdfsLazyWriter::inner
      Src: /src/opendal/core/services/hdfs/src/reader.rs:118,1
    - Dst: close
      Src: /src/opendal/core/services/hdfs/src/reader.rs:118,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 119
      start: 117
    functionDepth: 36
    functionLinenumber: 117
    functionLinenumberEnd: 119
    functionName: HdfsLazyWriter::close
    functionSourceFile: /src/opendal/core/services/hdfs/src/reader.rs
    functionUses: 0
    functionsReached:
    - close
    - HdfsLazyWriter::inner
    linkageType: ''
    returnType: Result
    signature: async fn close(&mut self) -> Result<Metadata>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: HdfsLazyWriter::inner
      Src: /src/opendal/core/services/hdfs/src/reader.rs:122,1
    - Dst: abort
      Src: /src/opendal/core/services/hdfs/src/reader.rs:122,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 123
      start: 121
    functionDepth: 36
    functionLinenumber: 121
    functionLinenumberEnd: 123
    functionName: HdfsLazyWriter::abort
    functionSourceFile: /src/opendal/core/services/hdfs/src/reader.rs
    functionUses: 0
    functionsReached:
    - HdfsLazyWriter::inner
    - abort
    linkageType: ''
    returnType: Result
    signature: async fn abort(&mut self) -> Result<()>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Error::kind
      Src: /src/opendal/core/services/hdfs/src/core.rs:26,1
    - Dst: Error::new
      Src: /src/opendal/core/services/hdfs/src/core.rs:27,1
    - Dst: Self::with_context
      Src: /src/opendal/core/services/hdfs/src/core.rs:27,1
    - Dst: Self::set_source
      Src: /src/opendal/core/services/hdfs/src/core.rs:27,1
    - Dst: new_std_io_error
      Src: /src/opendal/core/services/hdfs/src/core.rs:35,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 3
    argNames:
    - err
    - if_not_exists
    - to_path
    argTypes:
    - io::Error
    - bool
    - '&str'
    constantsTouched: []
    func_position:
      end: 36
      start: 25
    functionDepth: 36
    functionLinenumber: 25
    functionLinenumberEnd: 36
    functionName: map_hdfs_rename_error
    functionSourceFile: /src/opendal/core/services/hdfs/src/core.rs
    functionUses: 2
    functionsReached:
    - Error::new
    - Error::kind
    - new_std_io_error
    - Self::set_source
    - Self::with_context
    linkageType: ''
    returnType: Error
    signature: 'fn map_hdfs_rename_error(err: io::Error, if_not_exists: bool, to_path:
      &str) -> Error'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::debug_struct
      Src: /src/opendal/core/services/hdfs/src/core.rs:50,1
    - Dst: field
      Src: /src/opendal/core/services/hdfs/src/core.rs:50,1
    - Dst: field
      Src: /src/opendal/core/services/hdfs/src/core.rs:50,1
    - Dst: finish_non_exhaustive
      Src: /src/opendal/core/services/hdfs/src/core.rs:50,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 1
    argNames:
    - f
    argTypes:
    - '&mut std::fmt::Formatter<''_>'
    constantsTouched: []
    func_position:
      end: 54
      start: 49
    functionDepth: 5
    functionLinenumber: 49
    functionLinenumberEnd: 54
    functionName: HdfsCore::fmt
    functionSourceFile: /src/opendal/core/services/hdfs/src/core.rs
    functionUses: 0
    functionsReached:
    - field
    - Result::debug_struct
    - finish_non_exhaustive
    linkageType: ''
    returnType: std::fmt::Result
    signature: 'fn fmt(&self, f: &mut std::fmt::Formatter<''_>) -> std::fmt::Result'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_rooted_abs_path
      Src: /src/opendal/core/services/hdfs/src/core.rs:59,1
    - Dst: create_dir
      Src: /src/opendal/core/services/hdfs/src/core.rs:60,1
    - Dst: map_err
      Src: /src/opendal/core/services/hdfs/src/core.rs:60,1
    - Dst: Ok
      Src: /src/opendal/core/services/hdfs/src/core.rs:61,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 1
    argNames:
    - path
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 62
      start: 58
    functionDepth: 35
    functionLinenumber: 58
    functionLinenumberEnd: 62
    functionName: HdfsCore::hdfs_create_dir
    functionSourceFile: /src/opendal/core/services/hdfs/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - create_dir
    - build_rooted_abs_path
    - Ok
    linkageType: ''
    returnType: Result
    signature: 'pub fn hdfs_create_dir(&self, path: &str) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_rooted_abs_path
      Src: /src/opendal/core/services/hdfs/src/core.rs:65,1
    - Dst: metadata
      Src: /src/opendal/core/services/hdfs/src/core.rs:66,1
    - Dst: map_err
      Src: /src/opendal/core/services/hdfs/src/core.rs:66,1
    - Dst: Result::is_dir
      Src: /src/opendal/core/services/hdfs/src/core.rs:68,1
    - Dst: Result::is_file
      Src: /src/opendal/core/services/hdfs/src/core.rs:70,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/hdfs/src/core.rs:75,1
    - Dst: Result::set_content_length
      Src: /src/opendal/core/services/hdfs/src/core.rs:76,1
    - Dst: Result::len
      Src: /src/opendal/core/services/hdfs/src/core.rs:76,1
    - Dst: Result::set_last_modified
      Src: /src/opendal/core/services/hdfs/src/core.rs:77,1
    - Dst: Timestamp::try_from
      Src: /src/opendal/core/services/hdfs/src/core.rs:77,1
    - Dst: Result::modified
      Src: /src/opendal/core/services/hdfs/src/core.rs:77,1
    - Dst: Ok
      Src: /src/opendal/core/services/hdfs/src/core.rs:79,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 30
    argCount: 1
    argNames:
    - path
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 80
      start: 64
    functionDepth: 37
    functionLinenumber: 64
    functionLinenumberEnd: 80
    functionName: HdfsCore::hdfs_stat
    functionSourceFile: /src/opendal/core/services/hdfs/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - Metadata::new
    - Timestamp::try_from
    - Result::modified
    - Ok
    - metadata
    - Result::is_dir
    - build_rooted_abs_path
    - Result::is_file
    - Result::set_last_modified
    - Result::set_content_length
    - Result::len
    linkageType: ''
    returnType: Result
    signature: 'pub fn hdfs_stat(&self, path: &str) -> Result<Metadata>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_rooted_abs_path
      Src: /src/opendal/core/services/hdfs/src/core.rs:83,1
    - Dst: clone
      Src: /src/opendal/core/services/hdfs/src/core.rs:85,1
    - Dst: tokio::task::spawn_blocking
      Src: /src/opendal/core/services/hdfs/src/core.rs:86,1
    - Dst: Result::open_file
      Src: /src/opendal/core/services/hdfs/src/core.rs:86,1
    - Dst: Result::read
      Src: /src/opendal/core/services/hdfs/src/core.rs:86,1
    - Dst: Result::open
      Src: /src/opendal/core/services/hdfs/src/core.rs:86,1
    - Dst: map_err
      Src: /src/opendal/core/services/hdfs/src/core.rs:86,1
    - Dst: Error::new
      Src: /src/opendal/core/services/hdfs/src/core.rs:88,1
    - Dst: Self::set_source
      Src: /src/opendal/core/services/hdfs/src/core.rs:88,1
    - Dst: map_err
      Src: /src/opendal/core/services/hdfs/src/core.rs:86,1
    - Dst: Ok
      Src: /src/opendal/core/services/hdfs/src/core.rs:91,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 27
    argCount: 1
    argNames:
    - path
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 92
      start: 82
    functionDepth: 38
    functionLinenumber: 82
    functionLinenumberEnd: 92
    functionName: HdfsCore::hdfs_open
    functionSourceFile: /src/opendal/core/services/hdfs/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - Result::open_file
    - tokio::task::spawn_blocking
    - Result::read
    - Ok
    - clone
    - build_rooted_abs_path
    - Error::new
    - Self::set_source
    - Result::open
    linkageType: ''
    returnType: Result
    signature: 'pub async fn hdfs_open(&self, path: &str) -> Result<hdrs::File>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_rooted_abs_path
      Src: /src/opendal/core/services/hdfs/src/core.rs:99,1
    - Dst: metadata
      Src: /src/opendal/core/services/hdfs/src/core.rs:101,1
    - Dst: Result::len
      Src: /src/opendal/core/services/hdfs/src/core.rs:103,1
    - Dst: Error::kind
      Src: /src/opendal/core/services/hdfs/src/core.rs:107,1
    - Dst: Err
      Src: /src/opendal/core/services/hdfs/src/core.rs:108,1
    - Dst: new_std_io_error
      Src: /src/opendal/core/services/hdfs/src/core.rs:108,1
    - Dst: append
      Src: /src/opendal/core/services/hdfs/src/core.rs:114,1
    - Dst: as_ref
      Src: /src/opendal/core/services/hdfs/src/core.rs:115,1
    - Dst: and_then
      Src: /src/opendal/core/services/hdfs/src/core.rs:115,1
    - Dst: then_some
      Src: /src/opendal/core/services/hdfs/src/core.rs:117,1
    - Dst: build_rooted_abs_path
      Src: /src/opendal/core/services/hdfs/src/core.rs:117,1
    - Dst: build_tmp_path_of
      Src: /src/opendal/core/services/hdfs/src/core.rs:119,1
    - Dst: get_parent
      Src: /src/opendal/core/services/hdfs/src/core.rs:124,1
    - Dst: create_dir
      Src: /src/opendal/core/services/hdfs/src/core.rs:125,1
    - Dst: map_err
      Src: /src/opendal/core/services/hdfs/src/core.rs:125,1
    - Dst: open_file
      Src: /src/opendal/core/services/hdfs/src/core.rs:131,1
    - Dst: create
      Src: /src/opendal/core/services/hdfs/src/core.rs:132,1
    - Dst: append
      Src: /src/opendal/core/services/hdfs/src/core.rs:134,1
    - Dst: write
      Src: /src/opendal/core/services/hdfs/src/core.rs:136,1
    - Dst: async_open
      Src: /src/opendal/core/services/hdfs/src/core.rs:139,1
    - Dst: String::as_ref
      Src: /src/opendal/core/services/hdfs/src/core.rs:140,1
    - Dst: '&[&''static str]::unwrap_or'
      Src: /src/opendal/core/services/hdfs/src/core.rs:140,1
    - Dst: map_err
      Src: /src/opendal/core/services/hdfs/src/core.rs:139,1
    - Dst: Ok
      Src: /src/opendal/core/services/hdfs/src/core.rs:144,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 81
    argCount: 2
    argNames:
    - path
    - op
    argTypes:
    - '&str'
    - '&OpWrite'
    constantsTouched: []
    func_position:
      end: 145
      start: 94
    functionDepth: 37
    functionLinenumber: 94
    functionLinenumberEnd: 145
    functionName: HdfsCore::hdfs_write
    functionSourceFile: /src/opendal/core/services/hdfs/src/core.rs
    functionUses: 0
    functionsReached:
    - create
    - Result::len
    - write
    - map_err
    - build_tmp_path_of
    - and_then
    - Ok
    - then_some
    - String::as_ref
    - build_rooted_abs_path
    - append
    - Error::kind
    - create_dir
    - '&[&''static str]::unwrap_or'
    - open_file
    - new_std_io_error
    - get_parent
    - metadata
    - async_open
    - Err
    - as_ref
    linkageType: ''
    returnType: Result
    signature: 'pub async fn hdfs_write(&self,path: &str,op: &OpWrite,) -> Result<(String,
      Option<String>, hdrs::AsyncFile, bool, u64)>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_rooted_abs_path
      Src: /src/opendal/core/services/hdfs/src/core.rs:148,1
    - Dst: read_dir
      Src: /src/opendal/core/services/hdfs/src/core.rs:150,1
    - Dst: Ok
      Src: /src/opendal/core/services/hdfs/src/core.rs:151,1
    - Dst: Some
      Src: /src/opendal/core/services/hdfs/src/core.rs:151,1
    - Dst: Result::kind
      Src: /src/opendal/core/services/hdfs/src/core.rs:153,1
    - Dst: Ok
      Src: /src/opendal/core/services/hdfs/src/core.rs:154,1
    - Dst: Err
      Src: /src/opendal/core/services/hdfs/src/core.rs:156,1
    - Dst: new_std_io_error
      Src: /src/opendal/core/services/hdfs/src/core.rs:156,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 19
    argCount: 1
    argNames:
    - path
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 160
      start: 147
    functionDepth: 34
    functionLinenumber: 147
    functionLinenumberEnd: 160
    functionName: HdfsCore::hdfs_list
    functionSourceFile: /src/opendal/core/services/hdfs/src/core.rs
    functionUses: 0
    functionsReached:
    - Ok
    - build_rooted_abs_path
    - Some
    - Err
    - Result::kind
    - new_std_io_error
    - read_dir
    linkageType: ''
    returnType: Result
    signature: 'pub fn hdfs_list(&self, path: &str) -> Result<Option<hdrs::Readdir>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_rooted_abs_path
      Src: /src/opendal/core/services/hdfs/src/core.rs:163,1
    - Dst: metadata
      Src: /src/opendal/core/services/hdfs/src/core.rs:164,1
    - Dst: map_err
      Src: /src/opendal/core/services/hdfs/src/core.rs:164,1
    - Dst: build_rooted_abs_path
      Src: /src/opendal/core/services/hdfs/src/core.rs:166,1
    - Dst: metadata
      Src: /src/opendal/core/services/hdfs/src/core.rs:167,1
    - Dst: Error::kind
      Src: /src/opendal/core/services/hdfs/src/core.rs:171,1
    - Dst: Err
      Src: /src/opendal/core/services/hdfs/src/core.rs:172,1
    - Dst: new_std_io_error
      Src: /src/opendal/core/services/hdfs/src/core.rs:172,1
    - Dst: std::path::PathBuf::from
      Src: /src/opendal/core/services/hdfs/src/core.rs:175,1
    - Dst: Result::parent
      Src: /src/opendal/core/services/hdfs/src/core.rs:175,1
    - Dst: '&str::ok_or_else'
      Src: /src/opendal/core/services/hdfs/src/core.rs:175,1
    - Dst: Error::new
      Src: /src/opendal/core/services/hdfs/src/core.rs:178,1
    - Dst: Self::with_context
      Src: /src/opendal/core/services/hdfs/src/core.rs:178,1
    - Dst: to_path_buf
      Src: /src/opendal/core/services/hdfs/src/core.rs:175,1
    - Dst: create_dir
      Src: /src/opendal/core/services/hdfs/src/core.rs:186,1
    - Dst: '&str::to_string_lossy'
      Src: /src/opendal/core/services/hdfs/src/core.rs:187,1
    - Dst: map_err
      Src: /src/opendal/core/services/hdfs/src/core.rs:186,1
    - Dst: anyhow::Result::is_file
      Src: /src/opendal/core/services/hdfs/src/core.rs:191,1
    - Dst: OpStat::if_not_exists
      Src: /src/opendal/core/services/hdfs/src/core.rs:192,1
    - Dst: Err
      Src: /src/opendal/core/services/hdfs/src/core.rs:193,1
    - Dst: Error::new
      Src: /src/opendal/core/services/hdfs/src/core.rs:193,1
    - Dst: Self::with_context
      Src: /src/opendal/core/services/hdfs/src/core.rs:193,1
    - Dst: remove_file
      Src: /src/opendal/core/services/hdfs/src/core.rs:199,1
    - Dst: map_err
      Src: /src/opendal/core/services/hdfs/src/core.rs:199,1
    - Dst: Err
      Src: /src/opendal/core/services/hdfs/src/core.rs:203,1
    - Dst: Error::new
      Src: /src/opendal/core/services/hdfs/src/core.rs:203,1
    - Dst: Self::with_context
      Src: /src/opendal/core/services/hdfs/src/core.rs:203,1
    - Dst: rename_file
      Src: /src/opendal/core/services/hdfs/src/core.rs:209,1
    - Dst: map_err
      Src: /src/opendal/core/services/hdfs/src/core.rs:209,1
    - Dst: map_hdfs_rename_error
      Src: /src/opendal/core/services/hdfs/src/core.rs:211,1
    - Dst: OpStat::if_not_exists
      Src: /src/opendal/core/services/hdfs/src/core.rs:211,1
    - Dst: Ok
      Src: /src/opendal/core/services/hdfs/src/core.rs:213,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 99
    argCount: 3
    argNames:
    - from
    - to
    - args
    argTypes:
    - '&str'
    - '&str'
    - '&OpRename'
    constantsTouched: []
    func_position:
      end: 214
      start: 162
    functionDepth: 37
    functionLinenumber: 162
    functionLinenumberEnd: 214
    functionName: HdfsCore::hdfs_rename
    functionSourceFile: /src/opendal/core/services/hdfs/src/core.rs
    functionUses: 0
    functionsReached:
    - '&str::to_string_lossy'
    - Self::with_context
    - map_err
    - Ok
    - to_path_buf
    - map_hdfs_rename_error
    - anyhow::Result::is_file
    - remove_file
    - build_rooted_abs_path
    - Error::kind
    - create_dir
    - Result::parent
    - new_std_io_error
    - OpStat::if_not_exists
    - '&str::ok_or_else'
    - metadata
    - Err
    - Error::new
    - std::path::PathBuf::from
    - rename_file
    linkageType: ''
    returnType: Result
    signature: 'pub fn hdfs_rename(&self, from: &str, to: &str, args: &OpRename) ->
      Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: map_hdfs_rename_error
      Src: /src/opendal/core/services/hdfs/src/core.rs:223,1
    - Dst: io::Error::new
      Src: /src/opendal/core/services/hdfs/src/core.rs:224,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 230
      start: 222
    functionDepth: 37
    functionLinenumber: 222
    functionLinenumberEnd: 230
    functionName: tests::map_existing_target_error_to_condition_not_match
    functionSourceFile: /src/opendal/core/services/hdfs/src/core.rs
    functionUses: 0
    functionsReached:
    - map_hdfs_rename_error
    - io::Error::new
    linkageType: ''
    returnType: void
    signature: fn map_existing_target_error_to_condition_not_match()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Some
      Src: /src/opendal/core/services/hdfs/src/writer.rs:52,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 6
    argNames:
    - target_path
    - tmp_path
    - f
    - client
    - target_path_exists
    - initial_size
    argTypes:
    - String
    - Option<String>
    - F
    - Arc<hdrs::Client>
    - bool
    - u64
    constantsTouched: []
    func_position:
      end: 57
      start: 41
    functionDepth: 0
    functionLinenumber: 41
    functionLinenumberEnd: 57
    functionName: HdfsWriter::new
    functionSourceFile: /src/opendal/core/services/hdfs/src/writer.rs
    functionUses: 1
    functionsReached:
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(target_path: String,tmp_path: Option<String>,f: F,client:
      Arc<hdrs::Client>,target_path_exists: bool,initial_size: u64,) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::len
      Src: /src/opendal/core/services/hdfs/src/writer.rs:62,1
    - Dst: as_mut
      Src: /src/opendal/core/services/hdfs/src/writer.rs:63,1
    - Dst: expect
      Src: /src/opendal/core/services/hdfs/src/writer.rs:63,1
    - Dst: Result::has_remaining
      Src: /src/opendal/core/services/hdfs/src/writer.rs:65,1
    - Dst: Result::write
      Src: /src/opendal/core/services/hdfs/src/writer.rs:66,1
    - Dst: Result::chunk
      Src: /src/opendal/core/services/hdfs/src/writer.rs:66,1
    - Dst: map_err
      Src: /src/opendal/core/services/hdfs/src/writer.rs:66,1
    - Dst: Result::advance
      Src: /src/opendal/core/services/hdfs/src/writer.rs:67,1
    - Dst: Result::flush
      Src: /src/opendal/core/services/hdfs/src/writer.rs:70,1
    - Dst: map_err
      Src: /src/opendal/core/services/hdfs/src/writer.rs:70,1
    - Dst: Ok
      Src: /src/opendal/core/services/hdfs/src/writer.rs:75,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 37
    argCount: 1
    argNames:
    - bs
    argTypes:
    - Buffer
    constantsTouched: []
    func_position:
      end: 76
      start: 61
    functionDepth: 36
    functionLinenumber: 61
    functionLinenumberEnd: 76
    functionName: HdfsWriter::write
    functionSourceFile: /src/opendal/core/services/hdfs/src/writer.rs
    functionUses: 0
    functionsReached:
    - map_err
    - as_mut
    - expect
    - Ok
    - Result::has_remaining
    - Result::advance
    - Result::flush
    - Result::write
    - Result::len
    - Result::chunk
    linkageType: ''
    returnType: Result
    signature: 'async fn write(&mut self, mut bs: Buffer) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: as_mut
      Src: /src/opendal/core/services/hdfs/src/writer.rs:79,1
    - Dst: expect
      Src: /src/opendal/core/services/hdfs/src/writer.rs:79,1
    - Dst: Result::close
      Src: /src/opendal/core/services/hdfs/src/writer.rs:80,1
    - Dst: map_err
      Src: /src/opendal/core/services/hdfs/src/writer.rs:80,1
    - Dst: remove_file
      Src: /src/opendal/core/services/hdfs/src/writer.rs:86,1
    - Dst: map_err
      Src: /src/opendal/core/services/hdfs/src/writer.rs:86,1
    - Dst: rename_file
      Src: /src/opendal/core/services/hdfs/src/writer.rs:90,1
    - Dst: map_err
      Src: /src/opendal/core/services/hdfs/src/writer.rs:90,1
    - Dst: Ok
      Src: /src/opendal/core/services/hdfs/src/writer.rs:95,1
    - Dst: Metadata::default
      Src: /src/opendal/core/services/hdfs/src/writer.rs:95,1
    - Dst: Self::with_content_length
      Src: /src/opendal/core/services/hdfs/src/writer.rs:95,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 41
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 96
      start: 78
    functionDepth: 33
    functionLinenumber: 78
    functionLinenumberEnd: 96
    functionName: HdfsWriter::close
    functionSourceFile: /src/opendal/core/services/hdfs/src/writer.rs
    functionUses: 0
    functionsReached:
    - map_err
    - as_mut
    - remove_file
    - Metadata::default
    - expect
    - Ok
    - Self::with_content_length
    - Result::close
    - rename_file
    linkageType: ''
    returnType: Result
    signature: async fn close(&mut self) -> Result<Metadata>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/core/services/hdfs/src/writer.rs:99,1
    - Dst: Error::new
      Src: /src/opendal/core/services/hdfs/src/writer.rs:99,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 103
      start: 98
    functionDepth: 36
    functionLinenumber: 98
    functionLinenumberEnd: 103
    functionName: HdfsWriter::abort
    functionSourceFile: /src/opendal/core/services/hdfs/src/writer.rs
    functionUses: 0
    functionsReached:
    - Error::new
    - Err
    linkageType: ''
    returnType: Result
    signature: async fn abort(&mut self) -> Result<()>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: register::<Hdfs>
      Src: /src/opendal/core/services/hdfs/src/lib.rs:23,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - registry
    argTypes:
    - '&opendal_core::OperatorRegistry'
    constantsTouched: []
    func_position:
      end: 24
      start: 22
    functionDepth: 0
    functionLinenumber: 22
    functionLinenumberEnd: 24
    functionName: register_hdfs_service
    functionSourceFile: /src/opendal/core/services/hdfs/src/lib.rs
    functionUses: 1
    functionsReached:
    - register::<Hdfs>
    linkageType: ''
    returnType: void
    signature: 'pub fn register_hdfs_service(registry: &opendal_core::OperatorRegistry)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::is_empty
      Src: /src/opendal/core/services/hdfs/src/backend.rs:43,1
    - Dst: Some
      Src: /src/opendal/core/services/hdfs/src/backend.rs:46,1
    - Dst: Result::to_string
      Src: /src/opendal/core/services/hdfs/src/backend.rs:46,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - root
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 50
      start: 42
    functionDepth: 4
    functionLinenumber: 42
    functionLinenumberEnd: 50
    functionName: HdfsBuilder::root
    functionSourceFile: /src/opendal/core/services/hdfs/src/backend.rs
    functionUses: 0
    functionsReached:
    - Result::is_empty
    - Result::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn root(mut self, root: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self::is_empty
      Src: /src/opendal/core/services/hdfs/src/backend.rs:59,1
    - Dst: Some
      Src: /src/opendal/core/services/hdfs/src/backend.rs:60,1
    - Dst: Self::to_string
      Src: /src/opendal/core/services/hdfs/src/backend.rs:60,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 1
    argNames:
    - name_node
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 64
      start: 58
    functionDepth: 4
    functionLinenumber: 58
    functionLinenumberEnd: 64
    functionName: HdfsBuilder::name_node
    functionSourceFile: /src/opendal/core/services/hdfs/src/backend.rs
    functionUses: 0
    functionsReached:
    - Self::is_empty
    - Self::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn name_node(mut self, name_node: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self::is_empty
      Src: /src/opendal/core/services/hdfs/src/backend.rs:70,1
    - Dst: Some
      Src: /src/opendal/core/services/hdfs/src/backend.rs:71,1
    - Dst: Self::to_string
      Src: /src/opendal/core/services/hdfs/src/backend.rs:71,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 1
    argNames:
    - kerberos_ticket_cache_path
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 74
      start: 69
    functionDepth: 4
    functionLinenumber: 69
    functionLinenumberEnd: 74
    functionName: HdfsBuilder::kerberos_ticket_cache_path
    functionSourceFile: /src/opendal/core/services/hdfs/src/backend.rs
    functionUses: 0
    functionsReached:
    - Self::is_empty
    - Self::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn kerberos_ticket_cache_path(mut self, kerberos_ticket_cache_path:
      &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self::is_empty
      Src: /src/opendal/core/services/hdfs/src/backend.rs:78,1
    - Dst: Some
      Src: /src/opendal/core/services/hdfs/src/backend.rs:79,1
    - Dst: Self::to_string
      Src: /src/opendal/core/services/hdfs/src/backend.rs:79,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 1
    argNames:
    - user
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 82
      start: 77
    functionDepth: 4
    functionLinenumber: 77
    functionLinenumberEnd: 82
    functionName: HdfsBuilder::user
    functionSourceFile: /src/opendal/core/services/hdfs/src/backend.rs
    functionUses: 0
    functionsReached:
    - Self::is_empty
    - Self::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn user(mut self, user: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 1
    argNames:
    - _enable_append
    argTypes:
    - bool
    constantsTouched: []
    func_position:
      end: 91
      start: 89
    functionDepth: 0
    functionLinenumber: 89
    functionLinenumberEnd: 91
    functionName: HdfsBuilder::enable_append
    functionSourceFile: /src/opendal/core/services/hdfs/src/backend.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: 'pub fn enable_append(self, _enable_append: bool) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::is_empty
      Src: /src/opendal/core/services/hdfs/src/backend.rs:100,1
    - Dst: Some
      Src: /src/opendal/core/services/hdfs/src/backend.rs:103,1
    - Dst: String::from
      Src: /src/opendal/core/services/hdfs/src/backend.rs:103,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - dir
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 106
      start: 99
    functionDepth: 31
    functionLinenumber: 99
    functionLinenumberEnd: 106
    functionName: HdfsBuilder::atomic_write_dir
    functionSourceFile: /src/opendal/core/services/hdfs/src/backend.rs
    functionUses: 0
    functionsReached:
    - Result::is_empty
    - String::from
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn atomic_write_dir(mut self, dir: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/core/services/hdfs/src/backend.rs:118,1
    - Dst: Error::new
      Src: /src/opendal/core/services/hdfs/src/backend.rs:118,1
    - Dst: Self::with_context
      Src: /src/opendal/core/services/hdfs/src/backend.rs:118,1
    - Dst: normalize_root
      Src: /src/opendal/core/services/hdfs/src/backend.rs:123,1
    - Dst: unwrap_or_default
      Src: /src/opendal/core/services/hdfs/src/backend.rs:123,1
    - Dst: hdrs::ClientBuilder::new
      Src: /src/opendal/core/services/hdfs/src/backend.rs:126,1
    - Dst: OtelMetricsLayerBuilder::with_kerberos_ticket_cache_path
      Src: /src/opendal/core/services/hdfs/src/backend.rs:128,1
    - Dst: Self::as_str
      Src: /src/opendal/core/services/hdfs/src/backend.rs:128,1
    - Dst: OtelMetricsLayerBuilder::with_user
      Src: /src/opendal/core/services/hdfs/src/backend.rs:131,1
    - Dst: Self::as_str
      Src: /src/opendal/core/services/hdfs/src/backend.rs:131,1
    - Dst: OtelMetricsLayerBuilder::connect
      Src: /src/opendal/core/services/hdfs/src/backend.rs:134,1
    - Dst: Result::map_err
      Src: /src/opendal/core/services/hdfs/src/backend.rs:134,1
    - Dst: Result::metadata
      Src: /src/opendal/core/services/hdfs/src/backend.rs:137,1
    - Dst: Result::kind
      Src: /src/opendal/core/services/hdfs/src/backend.rs:138,1
    - Dst: Result::create_dir
      Src: /src/opendal/core/services/hdfs/src/backend.rs:142,1
    - Dst: Result::map_err
      Src: /src/opendal/core/services/hdfs/src/backend.rs:142,1
    - Dst: Result::metadata
      Src: /src/opendal/core/services/hdfs/src/backend.rs:149,1
    - Dst: Result::kind
      Src: /src/opendal/core/services/hdfs/src/backend.rs:150,1
    - Dst: Result::create_dir
      Src: /src/opendal/core/services/hdfs/src/backend.rs:152,1
    - Dst: Result::map_err
      Src: /src/opendal/core/services/hdfs/src/backend.rs:152,1
    - Dst: Ok
      Src: /src/opendal/core/services/hdfs/src/backend.rs:155,1
    - Dst: Arc::new
      Src: /src/opendal/core/services/hdfs/src/backend.rs:156,1
    - Dst: ServiceInfo::new
      Src: /src/opendal/core/services/hdfs/src/backend.rs:157,1
    - Dst: Default::default
      Src: /src/opendal/core/services/hdfs/src/backend.rs:177,1
    - Dst: Arc::new
      Src: /src/opendal/core/services/hdfs/src/backend.rs:181,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 85
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 184
      start: 112
    functionDepth: 36
    functionLinenumber: 112
    functionLinenumberEnd: 184
    functionName: HdfsBuilder::build
    functionSourceFile: /src/opendal/core/services/hdfs/src/backend.rs
    functionUses: 0
    functionsReached:
    - OtelMetricsLayerBuilder::with_kerberos_ticket_cache_path
    - Result::map_err
    - hdrs::ClientBuilder::new
    - Result::metadata
    - Result::create_dir
    - ServiceInfo::new
    - Ok
    - Self::as_str
    - Arc::new
    - Default::default
    - normalize_root
    - Error::new
    - Err
    - Result::kind
    - OtelMetricsLayerBuilder::with_user
    - Self::with_context
    - unwrap_or_default
    - OtelMetricsLayerBuilder::connect
    linkageType: ''
    returnType: Result
    signature: fn build(self) -> Result<impl Service>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: clone
      Src: /src/opendal/core/services/hdfs/src/backend.rs:201,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 202
      start: 200
    functionDepth: 2
    functionLinenumber: 200
    functionLinenumberEnd: 202
    functionName: HdfsBackend::info
    functionSourceFile: /src/opendal/core/services/hdfs/src/backend.rs
    functionUses: 0
    functionsReached:
    - clone
    linkageType: ''
    returnType: ServiceInfo
    signature: fn info(&self) -> ServiceInfo
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 206
      start: 204
    functionDepth: 0
    functionLinenumber: 204
    functionLinenumberEnd: 206
    functionName: HdfsBackend::capability
    functionSourceFile: /src/opendal/core/services/hdfs/src/backend.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Capability
    signature: fn capability(&self) -> Capability
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: hdfs_create_dir
      Src: /src/opendal/core/services/hdfs/src/backend.rs:214,1
    - Dst: Ok
      Src: /src/opendal/core/services/hdfs/src/backend.rs:215,1
    - Dst: RpCreateDir::default
      Src: /src/opendal/core/services/hdfs/src/backend.rs:215,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - _ctx
    - path
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpCreateDir
    constantsTouched: []
    func_position:
      end: 216
      start: 208
    functionDepth: 38
    functionLinenumber: 208
    functionLinenumberEnd: 216
    functionName: HdfsBackend::create_dir
    functionSourceFile: /src/opendal/core/services/hdfs/src/backend.rs
    functionUses: 0
    functionsReached:
    - RpCreateDir::default
    - hdfs_create_dir
    - Ok
    linkageType: ''
    returnType: Result
    signature: 'async fn create_dir(&self,_ctx: &OperationContext,path: &str,_: OpCreateDir,)
      -> Result<RpCreateDir>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: hdfs_stat
      Src: /src/opendal/core/services/hdfs/src/backend.rs:219,1
    - Dst: Ok
      Src: /src/opendal/core/services/hdfs/src/backend.rs:220,1
    - Dst: RpStat::new
      Src: /src/opendal/core/services/hdfs/src/backend.rs:220,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - _ctx
    - path
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpStat
    constantsTouched: []
    func_position:
      end: 221
      start: 218
    functionDepth: 35
    functionLinenumber: 218
    functionLinenumberEnd: 221
    functionName: HdfsBackend::stat
    functionSourceFile: /src/opendal/core/services/hdfs/src/backend.rs
    functionUses: 0
    functionsReached:
    - hdfs_stat
    - Ok
    - RpStat::new
    linkageType: ''
    returnType: Result
    signature: 'async fn stat(&self, _ctx: &OperationContext, path: &str, _: OpStat)
      -> Result<RpStat>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/core/services/hdfs/src/backend.rs:223,1
    - Dst: oio::PositionReader::new
      Src: /src/opendal/core/services/hdfs/src/backend.rs:223,1
    - Dst: HdfsReader::new
      Src: /src/opendal/core/services/hdfs/src/backend.rs:223,1
    - Dst: clone
      Src: /src/opendal/core/services/hdfs/src/backend.rs:224,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 3
    argNames:
    - _ctx
    - path
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpRead
    constantsTouched: []
    func_position:
      end: 227
      start: 222
    functionDepth: 3
    functionLinenumber: 222
    functionLinenumberEnd: 227
    functionName: HdfsBackend::read
    functionSourceFile: /src/opendal/core/services/hdfs/src/backend.rs
    functionUses: 0
    functionsReached:
    - clone
    - HdfsReader::new
    - oio::PositionReader::new
    - Ok
    linkageType: ''
    returnType: Result
    signature: 'fn read(&self, _ctx: &OperationContext, path: &str, _: OpRead) ->
      Result<Self::Reader>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/core/services/hdfs/src/backend.rs:230,1
    - Dst: HdfsLazyWriter::new
      Src: /src/opendal/core/services/hdfs/src/backend.rs:230,1
    - Dst: clone
      Src: /src/opendal/core/services/hdfs/src/backend.rs:230,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - _ctx
    - path
    - op
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpWrite
    constantsTouched: []
    func_position:
      end: 231
      start: 229
    functionDepth: 3
    functionLinenumber: 229
    functionLinenumberEnd: 231
    functionName: HdfsBackend::write
    functionSourceFile: /src/opendal/core/services/hdfs/src/backend.rs
    functionUses: 0
    functionsReached:
    - clone
    - HdfsLazyWriter::new
    - Ok
    linkageType: ''
    returnType: Result
    signature: 'fn write(&self, _ctx: &OperationContext, path: &str, op: OpWrite)
      -> Result<Self::Writer>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/core/services/hdfs/src/backend.rs:235,1
    - Dst: oio::OneShotDeleter::new
      Src: /src/opendal/core/services/hdfs/src/backend.rs:235,1
    - Dst: HdfsDeleter::new
      Src: /src/opendal/core/services/hdfs/src/backend.rs:235,1
    - Dst: Arc::clone
      Src: /src/opendal/core/services/hdfs/src/backend.rs:235,1
    - Dst: Ok
      Src: /src/opendal/core/services/hdfs/src/backend.rs:240,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - _ctx
    argTypes:
    - '&OperationContext'
    constantsTouched: []
    func_position:
      end: 241
      start: 233
    functionDepth: 2
    functionLinenumber: 233
    functionLinenumberEnd: 241
    functionName: HdfsBackend::delete
    functionSourceFile: /src/opendal/core/services/hdfs/src/backend.rs
    functionUses: 0
    functionsReached:
    - oio::OneShotDeleter::new
    - Arc::clone
    - HdfsDeleter::new
    - Ok
    linkageType: ''
    returnType: Result
    signature: 'fn delete(&self, _ctx: &OperationContext) -> Result<Self::Deleter>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: hdfs_list
      Src: /src/opendal/core/services/hdfs/src/backend.rs:245,1
    - Dst: HdfsLister::new
      Src: /src/opendal/core/services/hdfs/src/backend.rs:247,1
    - Dst: Ok
      Src: /src/opendal/core/services/hdfs/src/backend.rs:248,1
    - Dst: Some
      Src: /src/opendal/core/services/hdfs/src/backend.rs:248,1
    - Dst: Ok
      Src: /src/opendal/core/services/hdfs/src/backend.rs:250,1
    - Dst: Ok
      Src: /src/opendal/core/services/hdfs/src/backend.rs:254,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 3
    argNames:
    - _ctx
    - path
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpList
    constantsTouched: []
    func_position:
      end: 255
      start: 243
    functionDepth: 35
    functionLinenumber: 243
    functionLinenumberEnd: 255
    functionName: HdfsBackend::list
    functionSourceFile: /src/opendal/core/services/hdfs/src/backend.rs
    functionUses: 0
    functionsReached:
    - hdfs_list
    - HdfsLister::new
    - Ok
    - Some
    linkageType: ''
    returnType: Result
    signature: 'fn list(&self, _ctx: &OperationContext, path: &str, _: OpList) ->
      Result<Self::Lister>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/core/services/hdfs/src/backend.rs:265,1
    - Dst: Error::new
      Src: /src/opendal/core/services/hdfs/src/backend.rs:265,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 5
    argNames:
    - _ctx
    - _from
    - _to
    - _args
    - _opts
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    - OpCopy
    - OpCopier
    constantsTouched: []
    func_position:
      end: 269
      start: 257
    functionDepth: 36
    functionLinenumber: 257
    functionLinenumberEnd: 269
    functionName: HdfsBackend::copy
    functionSourceFile: /src/opendal/core/services/hdfs/src/backend.rs
    functionUses: 0
    functionsReached:
    - Error::new
    - Err
    linkageType: ''
    returnType: Result
    signature: 'fn copy(&self,_ctx: &OperationContext,_from: &str,_to: &str,_args:
      OpCopy,_opts: OpCopier,) -> Result<Self::Copier>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: hdfs_rename
      Src: /src/opendal/core/services/hdfs/src/backend.rs:278,1
    - Dst: Ok
      Src: /src/opendal/core/services/hdfs/src/backend.rs:279,1
    - Dst: RpRename::new
      Src: /src/opendal/core/services/hdfs/src/backend.rs:279,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 4
    argNames:
    - _ctx
    - from
    - to
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    - OpRename
    constantsTouched: []
    func_position:
      end: 280
      start: 271
    functionDepth: 35
    functionLinenumber: 271
    functionLinenumberEnd: 280
    functionName: HdfsBackend::rename
    functionSourceFile: /src/opendal/core/services/hdfs/src/backend.rs
    functionUses: 0
    functionsReached:
    - RpRename::new
    - Ok
    - hdfs_rename
    linkageType: ''
    returnType: Result
    signature: 'async fn rename(&self,_ctx: &OperationContext,from: &str,to: &str,args:
      OpRename,) -> Result<RpRename>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/core/services/hdfs/src/backend.rs:288,1
    - Dst: Error::new
      Src: /src/opendal/core/services/hdfs/src/backend.rs:288,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - _ctx
    - _path
    - _args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpPresign
    constantsTouched: []
    func_position:
      end: 292
      start: 282
    functionDepth: 36
    functionLinenumber: 282
    functionLinenumberEnd: 292
    functionName: HdfsBackend::presign
    functionSourceFile: /src/opendal/core/services/hdfs/src/backend.rs
    functionUses: 0
    functionsReached:
    - Error::new
    - Err
    linkageType: ''
    returnType: Result
    signature: 'async fn presign(&self,_ctx: &OperationContext,_path: &str,_args:
      OpPresign,) -> Result<RpPresign>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::debug_struct
      Src: /src/opendal/core/services/obs/src/config.rs:50,1
    - Dst: field
      Src: /src/opendal/core/services/obs/src/config.rs:50,1
    - Dst: field
      Src: /src/opendal/core/services/obs/src/config.rs:50,1
    - Dst: field
      Src: /src/opendal/core/services/obs/src/config.rs:50,1
    - Dst: finish_non_exhaustive
      Src: /src/opendal/core/services/obs/src/config.rs:50,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 16
    argCount: 1
    argNames:
    - f
    argTypes:
    - '&mut std::fmt::Formatter<''_>'
    constantsTouched: []
    func_position:
      end: 55
      start: 49
    functionDepth: 5
    functionLinenumber: 49
    functionLinenumberEnd: 55
    functionName: ObsConfig::fmt
    functionSourceFile: /src/opendal/core/services/obs/src/config.rs
    functionUses: 0
    functionsReached:
    - field
    - Result::debug_struct
    - finish_non_exhaustive
    linkageType: ''
    returnType: std::fmt::Result
    signature: 'fn fmt(&self, f: &mut std::fmt::Formatter<''_>) -> std::fmt::Result'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::options
      Src: /src/opendal/core/services/obs/src/config.rs:62,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/obs/src/config.rs:62,1
    - Dst: Result::name
      Src: /src/opendal/core/services/obs/src/config.rs:64,1
    - Dst: Result::insert
      Src: /src/opendal/core/services/obs/src/config.rs:65,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/obs/src/config.rs:65,1
    - Dst: Result::to_string
      Src: /src/opendal/core/services/obs/src/config.rs:65,1
    - Dst: Result::root
      Src: /src/opendal/core/services/obs/src/config.rs:68,1
    - Dst: Result::insert
      Src: /src/opendal/core/services/obs/src/config.rs:69,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/obs/src/config.rs:69,1
    - Dst: Result::to_string
      Src: /src/opendal/core/services/obs/src/config.rs:69,1
    - Dst: Self::from_iter
      Src: /src/opendal/core/services/obs/src/config.rs:72,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 27
    argCount: 1
    argNames:
    - uri
    argTypes:
    - '&opendal_core::OperatorUri'
    constantsTouched: []
    func_position:
      end: 73
      start: 61
    functionDepth: 35
    functionLinenumber: 61
    functionLinenumberEnd: 73
    functionName: ObsConfig::from_uri
    functionSourceFile: /src/opendal/core/services/obs/src/config.rs
    functionUses: 1
    functionsReached:
    - Result::clone
    - Self::from_iter
    - Result::to_string
    - Result::insert
    - Result::name
    - '&str::to_string'
    - Result::root
    - Result::options
    linkageType: ''
    returnType: opendal_core::Result
    signature: 'fn from_uri(uri: &opendal_core::OperatorUri) -> opendal_core::Result<Self>'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 77
      start: 75
    functionDepth: 0
    functionLinenumber: 75
    functionLinenumberEnd: 77
    functionName: ObsConfig::into_builder
    functionSourceFile: /src/opendal/core/services/obs/src/config.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Self::Builder
    signature: fn into_builder(self) -> Self::Builder
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - core
    - ctx
    argTypes:
    - Arc<ObsCore>
    - OperationContext
    constantsTouched: []
    func_position:
      end: 35
      start: 33
    functionDepth: 0
    functionLinenumber: 33
    functionLinenumberEnd: 35
    functionName: ObsDeleter::new
    functionSourceFile: /src/opendal/core/services/obs/src/deleter.rs
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(core: Arc<ObsCore>, ctx: OperationContext) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: obs_delete_object
      Src: /src/opendal/core/services/obs/src/deleter.rs:40,1
    - Dst: status
      Src: /src/opendal/core/services/obs/src/deleter.rs:42,1
    - Dst: Ok
      Src: /src/opendal/core/services/obs/src/deleter.rs:45,1
    - Dst: Err
      Src: /src/opendal/core/services/obs/src/deleter.rs:46,1
    - Dst: super::core::parse_error
      Src: /src/opendal/core/services/obs/src/deleter.rs:46,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 2
    argNames:
    - path
    argTypes:
    - String
    - OpDelete
    constantsTouched: []
    func_position:
      end: 48
      start: 39
    functionDepth: 33
    functionLinenumber: 39
    functionLinenumberEnd: 48
    functionName: ObsDeleter::delete_once
    functionSourceFile: /src/opendal/core/services/obs/src/deleter.rs
    functionUses: 0
    functionsReached:
    - status
    - Ok
    - obs_delete_object
    - Err
    - super::core::parse_error
    linkageType: ''
    returnType: Result
    signature: 'async fn delete_once(&self, path: String, _: OpDelete) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: to_string
      Src: /src/opendal/core/services/obs/src/lister.rs:52,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 5
    argNames:
    - core
    - ctx
    - path
    - recursive
    - limit
    argTypes:
    - Arc<ObsCore>
    - OperationContext
    - '&str'
    - bool
    - Option<usize>
    constantsTouched: []
    func_position:
      end: 56
      start: 40
    functionDepth: 2
    functionLinenumber: 40
    functionLinenumberEnd: 56
    functionName: ObsLister::new
    functionSourceFile: /src/opendal/core/services/obs/src/lister.rs
    functionUses: 1
    functionsReached:
    - to_string
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(core: Arc<ObsCore>,ctx: OperationContext,path: &str,recursive:
      bool,limit: Option<usize>,) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: obs_list_objects
      Src: /src/opendal/core/services/obs/src/lister.rs:61,1
    - Dst: status
      Src: /src/opendal/core/services/obs/src/lister.rs:72,1
    - Dst: Err
      Src: /src/opendal/core/services/obs/src/lister.rs:73,1
    - Dst: super::core::parse_error
      Src: /src/opendal/core/services/obs/src/lister.rs:73,1
    - Dst: into_body
      Src: /src/opendal/core/services/obs/src/lister.rs:76,1
    - Dst: de::from_reader
      Src: /src/opendal/core/services/obs/src/lister.rs:79,1
    - Dst: Result::reader
      Src: /src/opendal/core/services/obs/src/lister.rs:79,1
    - Dst: map_err
      Src: /src/opendal/core/services/obs/src/lister.rs:79,1
    - Dst: as_ref
      Src: /src/opendal/core/services/obs/src/lister.rs:84,1
    - Dst: is_empty
      Src: /src/opendal/core/services/obs/src/lister.rs:86,1
    - Dst: clone
      Src: /src/opendal/core/services/obs/src/lister.rs:88,1
    - Dst: unwrap_or_default
      Src: /src/opendal/core/services/obs/src/lister.rs:88,1
    - Dst: oio::Entry::new
      Src: /src/opendal/core/services/obs/src/lister.rs:93,1
    - Dst: build_rel_path
      Src: /src/opendal/core/services/obs/src/lister.rs:94,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/obs/src/lister.rs:95,1
    - Dst: push_back
      Src: /src/opendal/core/services/obs/src/lister.rs:98,1
    - Dst: build_rel_path
      Src: /src/opendal/core/services/obs/src/lister.rs:102,1
    - Dst: is_empty
      Src: /src/opendal/core/services/obs/src/lister.rs:103,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/obs/src/lister.rs:104,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/obs/src/lister.rs:107,1
    - Dst: EntryMode::from_path
      Src: /src/opendal/core/services/obs/src/lister.rs:107,1
    - Dst: Self::with_content_length
      Src: /src/opendal/core/services/obs/src/lister.rs:107,1
    - Dst: oio::Entry::with
      Src: /src/opendal/core/services/obs/src/lister.rs:109,1
    - Dst: push_back
      Src: /src/opendal/core/services/obs/src/lister.rs:111,1
    - Dst: Ok
      Src: /src/opendal/core/services/obs/src/lister.rs:114,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 93
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - '&mut oio::PageContext'
    constantsTouched: []
    func_position:
      end: 115
      start: 60
    functionDepth: 37
    functionLinenumber: 60
    functionLinenumberEnd: 115
    functionName: ObsLister::next_page
    functionSourceFile: /src/opendal/core/services/obs/src/lister.rs
    functionUses: 0
    functionsReached:
    - status
    - clone
    - build_rel_path
    - obs_list_objects
    - Result::reader
    - map_err
    - Ok
    - oio::Entry::with
    - '&str::to_string'
    - unwrap_or_default
    - Metadata::new
    - into_body
    - de::from_reader
    - is_empty
    - super::core::parse_error
    - oio::Entry::new
    - push_back
    - Self::with_content_length
    - EntryMode::from_path
    - Err
    - as_ref
    linkageType: ''
    returnType: Result
    signature: 'async fn next_page(&self, ctx: &mut oio::PageContext) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: to_string
      Src: /src/opendal/core/services/obs/src/reader.rs:43,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 4
    argNames:
    - backend
    - ctx
    - path
    - args
    argTypes:
    - ObsBackend
    - OperationContext
    - '&str'
    - OpRead
    constantsTouched: []
    func_position:
      end: 46
      start: 34
    functionDepth: 2
    functionLinenumber: 34
    functionLinenumberEnd: 46
    functionName: ObsReader::new
    functionSourceFile: /src/opendal/core/services/obs/src/reader.rs
    functionUses: 1
    functionsReached:
    - to_string
    linkageType: ''
    returnType: Self
    signature: 'pub(super) fn new(backend: ObsBackend,ctx: OperationContext,path:
      &str,args: OpRead,) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: as_str
      Src: /src/opendal/core/services/obs/src/reader.rs:52,1
    - Dst: clone
      Src: /src/opendal/core/services/obs/src/reader.rs:53,1
    - Dst: obs_get_object
      Src: /src/opendal/core/services/obs/src/reader.rs:54,1
    - Dst: status
      Src: /src/opendal/core/services/obs/src/reader.rs:59,1
    - Dst: RpRead::new
      Src: /src/opendal/core/services/obs/src/reader.rs:63,1
    - Dst: parse_into_metadata
      Src: /src/opendal/core/services/obs/src/reader.rs:63,1
    - Dst: headers
      Src: /src/opendal/core/services/obs/src/reader.rs:63,1
    - Dst: into_body
      Src: /src/opendal/core/services/obs/src/reader.rs:64,1
    - Dst: into_parts
      Src: /src/opendal/core/services/obs/src/reader.rs:67,1
    - Dst: to_buffer
      Src: /src/opendal/core/services/obs/src/reader.rs:68,1
    - Dst: Err
      Src: /src/opendal/core/services/obs/src/reader.rs:69,1
    - Dst: super::core::parse_error
      Src: /src/opendal/core/services/obs/src/reader.rs:69,1
    - Dst: Response::from_parts
      Src: /src/opendal/core/services/obs/src/reader.rs:69,1
    - Dst: Ok
      Src: /src/opendal/core/services/obs/src/reader.rs:73,1
    - Dst: Box::new
      Src: /src/opendal/core/services/obs/src/reader.rs:73,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 42
    argCount: 1
    argNames:
    - range
    argTypes:
    - BytesRange
    constantsTouched: []
    func_position:
      end: 74
      start: 50
    functionDepth: 37
    functionLinenumber: 50
    functionLinenumberEnd: 74
    functionName: ObsReader::open
    functionSourceFile: /src/opendal/core/services/obs/src/reader.rs
    functionUses: 0
    functionsReached:
    - parse_into_metadata
    - to_buffer
    - status
    - Ok
    - Box::new
    - into_body
    - clone
    - Err
    - Response::from_parts
    - as_str
    - headers
    - into_parts
    - RpRead::new
    - super::core::parse_error
    - obs_get_object
    linkageType: ''
    returnType: Result
    signature: 'async fn open(&self, range: BytesRange) -> Result<(RpRead, Box<dyn
      oio::ReadStreamDyn>)>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::debug_struct
      Src: /src/opendal/core/services/obs/src/core.rs:55,1
    - Dst: field
      Src: /src/opendal/core/services/obs/src/core.rs:55,1
    - Dst: field
      Src: /src/opendal/core/services/obs/src/core.rs:55,1
    - Dst: field
      Src: /src/opendal/core/services/obs/src/core.rs:55,1
    - Dst: finish_non_exhaustive
      Src: /src/opendal/core/services/obs/src/core.rs:55,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 16
    argCount: 1
    argNames:
    - f
    argTypes:
    - '&mut std::fmt::Formatter<''_>'
    constantsTouched: []
    func_position:
      end: 60
      start: 54
    functionDepth: 5
    functionLinenumber: 54
    functionLinenumberEnd: 60
    functionName: ObsCore::fmt
    functionSourceFile: /src/opendal/core/services/obs/src/core.rs
    functionUses: 0
    functionsReached:
    - field
    - Result::debug_struct
    - finish_non_exhaustive
    linkageType: ''
    returnType: std::fmt::Result
    signature: 'fn fmt(&self, f: &mut std::fmt::Formatter<''_>) -> std::fmt::Result'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: clone
      Src: /src/opendal/core/services/obs/src/core.rs:65,1
    - Dst: with_context
      Src: /src/opendal/core/services/obs/src/core.rs:65,1
    - Dst: Context::new
      Src: /src/opendal/core/services/obs/src/core.rs:66,1
    - Dst: Self::with_file_read
      Src: /src/opendal/core/services/obs/src/core.rs:66,1
    - Dst: with_http_send
      Src: /src/opendal/core/services/obs/src/core.rs:66,1
    - Dst: Result::http_transport
      Src: /src/opendal/core/services/obs/src/core.rs:68,1
    - Dst: Self::clone
      Src: /src/opendal/core/services/obs/src/core.rs:68,1
    - Dst: with_env
      Src: /src/opendal/core/services/obs/src/core.rs:66,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 16
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - '&OperationContext'
    constantsTouched: []
    func_position:
      end: 71
      start: 64
    functionDepth: 6
    functionLinenumber: 64
    functionLinenumberEnd: 71
    functionName: ObsCore::signer
    functionSourceFile: /src/opendal/core/services/obs/src/core.rs
    functionUses: 2
    functionsReached:
    - with_http_send
    - with_env
    - Context::new
    - clone
    - with_context
    - Self::clone
    - Self::with_file_read
    - Result::http_transport
    linkageType: ''
    returnType: Signer
    signature: 'fn signer(&self, ctx: &OperationContext) -> Signer<Credential>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Request<T>::into_parts
      Src: /src/opendal/core/services/obs/src/core.rs:74,1
    - Dst: ObsCore::signer
      Src: /src/opendal/core/services/obs/src/core.rs:76,1
    - Dst: Signer::sign
      Src: /src/opendal/core/services/obs/src/core.rs:76,1
    - Dst: map_err
      Src: /src/opendal/core/services/obs/src/core.rs:76,1
    - Dst: new_request_sign_error
      Src: /src/opendal/core/services/obs/src/core.rs:79,1
    - Dst: Result::into
      Src: /src/opendal/core/services/obs/src/core.rs:79,1
    - Dst: Ok
      Src: /src/opendal/core/services/obs/src/core.rs:81,1
    - Dst: Request::from_parts
      Src: /src/opendal/core/services/obs/src/core.rs:81,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 18
    argCount: 2
    argNames:
    - ctx
    - req
    argTypes:
    - '&OperationContext'
    - Request<T>
    constantsTouched: []
    func_position:
      end: 82
      start: 73
    functionDepth: 35
    functionLinenumber: 73
    functionLinenumberEnd: 82
    functionName: ObsCore::sign
    functionSourceFile: /src/opendal/core/services/obs/src/core.rs
    functionUses: 9
    functionsReached:
    - map_err
    - Ok
    - ObsCore::signer
    - Signer::sign
    - Request<T>::into_parts
    - Result::into
    - Request::from_parts
    - new_request_sign_error
    linkageType: ''
    returnType: Result
    signature: 'pub async fn sign<T>(&self, ctx: &OperationContext, req: Request<T>)
      -> Result<Request<T>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Request<T>::into_parts
      Src: /src/opendal/core/services/obs/src/core.rs:90,1
    - Dst: ObsCore::signer
      Src: /src/opendal/core/services/obs/src/core.rs:92,1
    - Dst: Signer::sign
      Src: /src/opendal/core/services/obs/src/core.rs:92,1
    - Dst: Some
      Src: /src/opendal/core/services/obs/src/core.rs:93,1
    - Dst: map_err
      Src: /src/opendal/core/services/obs/src/core.rs:92,1
    - Dst: new_request_sign_error
      Src: /src/opendal/core/services/obs/src/core.rs:95,1
    - Dst: Result::into
      Src: /src/opendal/core/services/obs/src/core.rs:95,1
    - Dst: Ok
      Src: /src/opendal/core/services/obs/src/core.rs:97,1
    - Dst: Request::from_parts
      Src: /src/opendal/core/services/obs/src/core.rs:97,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 19
    argCount: 3
    argNames:
    - ctx
    - req
    - duration
    argTypes:
    - '&OperationContext'
    - Request<T>
    - Duration
    constantsTouched: []
    func_position:
      end: 98
      start: 84
    functionDepth: 35
    functionLinenumber: 84
    functionLinenumberEnd: 98
    functionName: ObsCore::sign_query
    functionSourceFile: /src/opendal/core/services/obs/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - Ok
    - ObsCore::signer
    - Signer::sign
    - Some
    - Request<T>::into_parts
    - Result::into
    - Request::from_parts
    - new_request_sign_error
    linkageType: ''
    returnType: Result
    signature: 'pub async fn sign_query<T>(&self,ctx: &OperationContext,req: Request<T>,duration:
      Duration,) -> Result<Request<T>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::http_transport
      Src: /src/opendal/core/services/obs/src/core.rs:106,1
    - Dst: Self::send
      Src: /src/opendal/core/services/obs/src/core.rs:106,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - ctx
    - req
    argTypes:
    - '&OperationContext'
    - Request<Buffer>
    constantsTouched: []
    func_position:
      end: 107
      start: 101
    functionDepth: 37
    functionLinenumber: 101
    functionLinenumberEnd: 107
    functionName: ObsCore::send
    functionSourceFile: /src/opendal/core/services/obs/src/core.rs
    functionUses: 8
    functionsReached:
    - Result::http_transport
    - Self::send
    linkageType: ''
    returnType: Result
    signature: 'pub async fn send(&self,ctx: &OperationContext,req: Request<Buffer>,)
      -> Result<Response<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: ObsCore::obs_get_object_request
      Src: /src/opendal/core/services/obs/src/core.rs:118,1
    - Dst: ObsCore::sign
      Src: /src/opendal/core/services/obs/src/core.rs:120,1
    - Dst: Result::http_transport
      Src: /src/opendal/core/services/obs/src/core.rs:122,1
    - Dst: Self::fetch
      Src: /src/opendal/core/services/obs/src/core.rs:122,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 4
    argNames:
    - ctx
    - path
    - range
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - BytesRange
    - '&OpRead'
    constantsTouched: []
    func_position:
      end: 123
      start: 111
    functionDepth: 36
    functionLinenumber: 111
    functionLinenumberEnd: 123
    functionName: ObsCore::obs_get_object
    functionSourceFile: /src/opendal/core/services/obs/src/core.rs
    functionUses: 0
    functionsReached:
    - Result::http_transport
    - Self::fetch
    - ObsCore::sign
    - ObsCore::obs_get_object_request
    linkageType: ''
    returnType: Result
    signature: 'pub async fn obs_get_object(&self,ctx: &OperationContext,path: &str,range:
      BytesRange,args: &OpRead,) -> Result<Response<HttpBody>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/obs/src/core.rs:131,1
    - Dst: Request::get
      Src: /src/opendal/core/services/obs/src/core.rs:135,1
    - Dst: OpStat::if_match
      Src: /src/opendal/core/services/obs/src/core.rs:137,1
    - Dst: Option::header
      Src: /src/opendal/core/services/obs/src/core.rs:138,1
    - Dst: (Vec::is_full
      Src: /src/opendal/core/services/obs/src/core.rs:141,1
    - Dst: Option::header
      Src: /src/opendal/core/services/obs/src/core.rs:142,1
    - Dst: (Vec::to_header
      Src: /src/opendal/core/services/obs/src/core.rs:142,1
    - Dst: OpStat::if_none_match
      Src: /src/opendal/core/services/obs/src/core.rs:145,1
    - Dst: Option::header
      Src: /src/opendal/core/services/obs/src/core.rs:146,1
    - Dst: OpStat::if_modified_since
      Src: /src/opendal/core/services/obs/src/core.rs:149,1
    - Dst: Option::header
      Src: /src/opendal/core/services/obs/src/core.rs:150,1
    - Dst: Result::format_http_date
      Src: /src/opendal/core/services/obs/src/core.rs:150,1
    - Dst: OpStat::if_unmodified_since
      Src: /src/opendal/core/services/obs/src/core.rs:153,1
    - Dst: Option::header
      Src: /src/opendal/core/services/obs/src/core.rs:154,1
    - Dst: Result::format_http_date
      Src: /src/opendal/core/services/obs/src/core.rs:154,1
    - Dst: Option::extension
      Src: /src/opendal/core/services/obs/src/core.rs:157,1
    - Dst: extension
      Src: /src/opendal/core/services/obs/src/core.rs:157,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/obs/src/core.rs:159,1
    - Dst: body
      Src: /src/opendal/core/services/obs/src/core.rs:157,1
    - Dst: Buffer::new
      Src: /src/opendal/core/services/obs/src/core.rs:160,1
    - Dst: map_err
      Src: /src/opendal/core/services/obs/src/core.rs:157,1
    - Dst: Ok
      Src: /src/opendal/core/services/obs/src/core.rs:163,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 63
    argCount: 3
    argNames:
    - path
    - range
    - args
    argTypes:
    - '&str'
    - BytesRange
    - '&OpRead'
    constantsTouched: []
    func_position:
      end: 164
      start: 125
    functionDepth: 3
    functionLinenumber: 125
    functionLinenumberEnd: 164
    functionName: ObsCore::obs_get_object_request
    functionSourceFile: /src/opendal/core/services/obs/src/core.rs
    functionUses: 1
    functionsReached:
    - map_err
    - extension
    - Request::get
    - (Vec::to_header
    - Buffer::new
    - Ok
    - OpStat::if_modified_since
    - OpStat::if_unmodified_since
    - (Vec::is_full
    - body
    - build_abs_path
    - OpStat::if_none_match
    - Option::extension
    - ServiceOperation
    - Result::format_http_date
    - OpStat::if_match
    - Option::header
    linkageType: ''
    returnType: Result
    signature: 'pub fn obs_get_object_request(&self,path: &str,range: BytesRange,args:
      &OpRead,) -> Result<Request<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/obs/src/core.rs:173,1
    - Dst: Request::put
      Src: /src/opendal/core/services/obs/src/core.rs:177,1
    - Dst: DeleteInput::header
      Src: /src/opendal/core/services/obs/src/core.rs:180,1
    - Dst: OpStat::cache_control
      Src: /src/opendal/core/services/obs/src/core.rs:182,1
    - Dst: DeleteInput::header
      Src: /src/opendal/core/services/obs/src/core.rs:183,1
    - Dst: OpStat::content_type
      Src: /src/opendal/core/services/obs/src/core.rs:186,1
    - Dst: DeleteInput::header
      Src: /src/opendal/core/services/obs/src/core.rs:187,1
    - Dst: OpStat::user_metadata
      Src: /src/opendal/core/services/obs/src/core.rs:191,1
    - Dst: DeleteInput::header
      Src: /src/opendal/core/services/obs/src/core.rs:193,1
    - Dst: DeleteInput::extension
      Src: /src/opendal/core/services/obs/src/core.rs:197,1
    - Dst: extension
      Src: /src/opendal/core/services/obs/src/core.rs:197,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/obs/src/core.rs:199,1
    - Dst: body
      Src: /src/opendal/core/services/obs/src/core.rs:197,1
    - Dst: map_err
      Src: /src/opendal/core/services/obs/src/core.rs:197,1
    - Dst: Ok
      Src: /src/opendal/core/services/obs/src/core.rs:203,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 44
    argCount: 4
    argNames:
    - path
    - size
    - args
    - body
    argTypes:
    - '&str'
    - Option<u64>
    - '&OpWrite'
    - Buffer
    constantsTouched: []
    func_position:
      end: 204
      start: 166
    functionDepth: 32
    functionLinenumber: 166
    functionLinenumberEnd: 204
    functionName: ObsCore::obs_put_object_request
    functionSourceFile: /src/opendal/core/services/obs/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - extension
    - Request::put
    - Ok
    - body
    - OpStat::cache_control
    - build_abs_path
    - DeleteInput::header
    - ServiceOperation
    - OpStat::user_metadata
    - DeleteInput::extension
    - OpStat::content_type
    linkageType: ''
    returnType: Result
    signature: 'pub fn obs_put_object_request(&self,path: &str,size: Option<u64>,args:
      &OpWrite,body: Buffer,) -> Result<Request<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: ObsCore::obs_head_object_request
      Src: /src/opendal/core/services/obs/src/core.rs:212,1
    - Dst: ObsCore::sign
      Src: /src/opendal/core/services/obs/src/core.rs:214,1
    - Dst: ObsCore::send
      Src: /src/opendal/core/services/obs/src/core.rs:216,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&OpStat'
    constantsTouched: []
    func_position:
      end: 217
      start: 206
    functionDepth: 39
    functionLinenumber: 206
    functionLinenumberEnd: 217
    functionName: ObsCore::obs_head_object
    functionSourceFile: /src/opendal/core/services/obs/src/core.rs
    functionUses: 0
    functionsReached:
    - ObsCore::send
    - ObsCore::obs_head_object_request
    - ObsCore::sign
    linkageType: ''
    returnType: Result
    signature: 'pub async fn obs_head_object(&self,ctx: &OperationContext,path: &str,args:
      &OpStat,) -> Result<Response<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/obs/src/core.rs:220,1
    - Dst: Request::head
      Src: /src/opendal/core/services/obs/src/core.rs:227,1
    - Dst: OpStat::if_match
      Src: /src/opendal/core/services/obs/src/core.rs:229,1
    - Dst: Result::header
      Src: /src/opendal/core/services/obs/src/core.rs:230,1
    - Dst: OpStat::if_none_match
      Src: /src/opendal/core/services/obs/src/core.rs:233,1
    - Dst: Result::header
      Src: /src/opendal/core/services/obs/src/core.rs:234,1
    - Dst: Result::extension
      Src: /src/opendal/core/services/obs/src/core.rs:237,1
    - Dst: extension
      Src: /src/opendal/core/services/obs/src/core.rs:237,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/obs/src/core.rs:239,1
    - Dst: body
      Src: /src/opendal/core/services/obs/src/core.rs:237,1
    - Dst: Buffer::new
      Src: /src/opendal/core/services/obs/src/core.rs:240,1
    - Dst: map_err
      Src: /src/opendal/core/services/obs/src/core.rs:237,1
    - Dst: Ok
      Src: /src/opendal/core/services/obs/src/core.rs:243,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 33
    argCount: 2
    argNames:
    - path
    - args
    argTypes:
    - '&str'
    - '&OpStat'
    constantsTouched: []
    func_position:
      end: 244
      start: 219
    functionDepth: 38
    functionLinenumber: 219
    functionLinenumberEnd: 244
    functionName: ObsCore::obs_head_object_request
    functionSourceFile: /src/opendal/core/services/obs/src/core.rs
    functionUses: 1
    functionsReached:
    - map_err
    - extension
    - Request::head
    - Buffer::new
    - Ok
    - Result::extension
    - body
    - build_abs_path
    - Result::header
    - OpStat::if_none_match
    - ServiceOperation
    - OpStat::if_match
    linkageType: ''
    returnType: Result
    signature: 'pub fn obs_head_object_request(&self, path: &str, args: &OpStat) ->
      Result<Request<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/obs/src/core.rs:251,1
    - Dst: Request::delete
      Src: /src/opendal/core/services/obs/src/core.rs:255,1
    - Dst: Result::extension
      Src: /src/opendal/core/services/obs/src/core.rs:257,1
    - Dst: extension
      Src: /src/opendal/core/services/obs/src/core.rs:257,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/obs/src/core.rs:259,1
    - Dst: body
      Src: /src/opendal/core/services/obs/src/core.rs:257,1
    - Dst: Buffer::new
      Src: /src/opendal/core/services/obs/src/core.rs:260,1
    - Dst: map_err
      Src: /src/opendal/core/services/obs/src/core.rs:257,1
    - Dst: ObsCore::sign
      Src: /src/opendal/core/services/obs/src/core.rs:263,1
    - Dst: ObsCore::send
      Src: /src/opendal/core/services/obs/src/core.rs:265,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 23
    argCount: 2
    argNames:
    - ctx
    - path
    argTypes:
    - '&OperationContext'
    - '&str'
    constantsTouched: []
    func_position:
      end: 266
      start: 246
    functionDepth: 32
    functionLinenumber: 246
    functionLinenumberEnd: 266
    functionName: ObsCore::obs_delete_object
    functionSourceFile: /src/opendal/core/services/obs/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - extension
    - Buffer::new
    - Request::delete
    - ObsCore::sign
    - Result::extension
    - body
    - build_abs_path
    - ServiceOperation
    - ObsCore::send
    linkageType: ''
    returnType: Result
    signature: 'pub async fn obs_delete_object(&self,ctx: &OperationContext,path:
      &str,) -> Result<Response<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/obs/src/core.rs:276,1
    - Dst: Request::post
      Src: /src/opendal/core/services/obs/src/core.rs:284,1
    - Dst: header
      Src: /src/opendal/core/services/obs/src/core.rs:286,1
    - Dst: OpStat::content_type
      Src: /src/opendal/core/services/obs/src/core.rs:288,1
    - Dst: header
      Src: /src/opendal/core/services/obs/src/core.rs:289,1
    - Dst: OpStat::content_disposition
      Src: /src/opendal/core/services/obs/src/core.rs:292,1
    - Dst: header
      Src: /src/opendal/core/services/obs/src/core.rs:293,1
    - Dst: OpStat::cache_control
      Src: /src/opendal/core/services/obs/src/core.rs:296,1
    - Dst: header
      Src: /src/opendal/core/services/obs/src/core.rs:297,1
    - Dst: extension
      Src: /src/opendal/core/services/obs/src/core.rs:300,1
    - Dst: extension
      Src: /src/opendal/core/services/obs/src/core.rs:300,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/obs/src/core.rs:302,1
    - Dst: body
      Src: /src/opendal/core/services/obs/src/core.rs:300,1
    - Dst: map_err
      Src: /src/opendal/core/services/obs/src/core.rs:300,1
    - Dst: Ok
      Src: /src/opendal/core/services/obs/src/core.rs:306,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 43
    argCount: 5
    argNames:
    - path
    - position
    - size
    - args
    - body
    argTypes:
    - '&str'
    - u64
    - u64
    - '&OpWrite'
    - Buffer
    constantsTouched: []
    func_position:
      end: 307
      start: 268
    functionDepth: 32
    functionLinenumber: 268
    functionLinenumberEnd: 307
    functionName: ObsCore::obs_append_object_request
    functionSourceFile: /src/opendal/core/services/obs/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - extension
    - Ok
    - Request::post
    - OpStat::content_disposition
    - OpStat::cache_control
    - build_abs_path
    - body
    - ServiceOperation
    - OpStat::content_type
    - header
    linkageType: ''
    returnType: Result
    signature: 'pub fn obs_append_object_request(&self,path: &str,position: u64,size:
      u64,args: &OpWrite,body: Buffer,) -> Result<Request<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/obs/src/core.rs:315,1
    - Dst: build_abs_path
      Src: /src/opendal/core/services/obs/src/core.rs:316,1
    - Dst: Request::put
      Src: /src/opendal/core/services/obs/src/core.rs:321,1
    - Dst: DeleteInput::extension
      Src: /src/opendal/core/services/obs/src/core.rs:321,1
    - Dst: extension
      Src: /src/opendal/core/services/obs/src/core.rs:321,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/obs/src/core.rs:323,1
    - Dst: header
      Src: /src/opendal/core/services/obs/src/core.rs:321,1
    - Dst: body
      Src: /src/opendal/core/services/obs/src/core.rs:321,1
    - Dst: Buffer::new
      Src: /src/opendal/core/services/obs/src/core.rs:325,1
    - Dst: map_err
      Src: /src/opendal/core/services/obs/src/core.rs:321,1
    - Dst: ObsCore::sign
      Src: /src/opendal/core/services/obs/src/core.rs:328,1
    - Dst: ObsCore::send
      Src: /src/opendal/core/services/obs/src/core.rs:330,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 29
    argCount: 3
    argNames:
    - ctx
    - from
    - to
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    constantsTouched: []
    func_position:
      end: 331
      start: 309
    functionDepth: 36
    functionLinenumber: 309
    functionLinenumberEnd: 331
    functionName: ObsCore::obs_copy_object
    functionSourceFile: /src/opendal/core/services/obs/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - extension
    - Buffer::new
    - Request::put
    - ObsCore::sign
    - body
    - build_abs_path
    - ServiceOperation
    - ObsCore::send
    - DeleteInput::extension
    - header
    linkageType: ''
    returnType: Result
    signature: 'pub async fn obs_copy_object(&self,ctx: &OperationContext,from: &str,to:
      &str,) -> Result<Response<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/obs/src/core.rs:341,1
    - Dst: QueryPairsWriter::new
      Src: /src/opendal/core/services/obs/src/core.rs:342,1
    - Dst: is_empty
      Src: /src/opendal/core/services/obs/src/core.rs:344,1
    - Dst: Result::push
      Src: /src/opendal/core/services/obs/src/core.rs:345,1
    - Dst: percent_encode_path
      Src: /src/opendal/core/services/obs/src/core.rs:345,1
    - Dst: object_store::Result::is_empty
      Src: /src/opendal/core/services/obs/src/core.rs:347,1
    - Dst: Result::push
      Src: /src/opendal/core/services/obs/src/core.rs:348,1
    - Dst: Result::push
      Src: /src/opendal/core/services/obs/src/core.rs:351,1
    - Dst: Result::to_string
      Src: /src/opendal/core/services/obs/src/core.rs:351,1
    - Dst: '&str::is_empty'
      Src: /src/opendal/core/services/obs/src/core.rs:353,1
    - Dst: Result::push
      Src: /src/opendal/core/services/obs/src/core.rs:354,1
    - Dst: Request::get
      Src: /src/opendal/core/services/obs/src/core.rs:357,1
    - Dst: Result::finish
      Src: /src/opendal/core/services/obs/src/core.rs:357,1
    - Dst: Option::extension
      Src: /src/opendal/core/services/obs/src/core.rs:357,1
    - Dst: extension
      Src: /src/opendal/core/services/obs/src/core.rs:357,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/obs/src/core.rs:359,1
    - Dst: body
      Src: /src/opendal/core/services/obs/src/core.rs:357,1
    - Dst: Buffer::new
      Src: /src/opendal/core/services/obs/src/core.rs:360,1
    - Dst: map_err
      Src: /src/opendal/core/services/obs/src/core.rs:357,1
    - Dst: ObsCore::sign
      Src: /src/opendal/core/services/obs/src/core.rs:363,1
    - Dst: ObsCore::send
      Src: /src/opendal/core/services/obs/src/core.rs:365,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 66
    argCount: 5
    argNames:
    - ctx
    - path
    - next_marker
    - delimiter
    - limit
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    - '&str'
    - Option<usize>
    constantsTouched: []
    func_position:
      end: 366
      start: 333
    functionDepth: 36
    functionLinenumber: 333
    functionLinenumberEnd: 366
    functionName: ObsCore::obs_list_objects
    functionSourceFile: /src/opendal/core/services/obs/src/core.rs
    functionUses: 0
    functionsReached:
    - QueryPairsWriter::new
    - extension
    - Request::get
    - Buffer::new
    - map_err
    - Result::to_string
    - ObsCore::sign
    - body
    - build_abs_path
    - is_empty
    - '&str::is_empty'
    - Result::finish
    - Result::push
    - Option::extension
    - percent_encode_path
    - ServiceOperation
    - object_store::Result::is_empty
    - ObsCore::send
    linkageType: ''
    returnType: Result
    signature: 'pub async fn obs_list_objects(&self,ctx: &OperationContext,path: &str,next_marker:
      &str,delimiter: &str,limit: Option<usize>,) -> Result<Response<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/obs/src/core.rs:373,1
    - Dst: Request::post
      Src: /src/opendal/core/services/obs/src/core.rs:376,1
    - Dst: header
      Src: /src/opendal/core/services/obs/src/core.rs:379,1
    - Dst: extension
      Src: /src/opendal/core/services/obs/src/core.rs:382,1
    - Dst: extension
      Src: /src/opendal/core/services/obs/src/core.rs:382,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/obs/src/core.rs:384,1
    - Dst: body
      Src: /src/opendal/core/services/obs/src/core.rs:382,1
    - Dst: Buffer::new
      Src: /src/opendal/core/services/obs/src/core.rs:385,1
    - Dst: map_err
      Src: /src/opendal/core/services/obs/src/core.rs:382,1
    - Dst: ObsCore::sign
      Src: /src/opendal/core/services/obs/src/core.rs:388,1
    - Dst: ObsCore::send
      Src: /src/opendal/core/services/obs/src/core.rs:390,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 28
    argCount: 3
    argNames:
    - ctx
    - path
    - content_type
    argTypes:
    - '&OperationContext'
    - '&str'
    - Option<&str>
    constantsTouched: []
    func_position:
      end: 391
      start: 367
    functionDepth: 36
    functionLinenumber: 367
    functionLinenumberEnd: 391
    functionName: ObsCore::obs_initiate_multipart_upload
    functionSourceFile: /src/opendal/core/services/obs/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - extension
    - Buffer::new
    - ObsCore::sign
    - Request::post
    - body
    - build_abs_path
    - ServiceOperation
    - ObsCore::send
    - header
    linkageType: ''
    returnType: Result
    signature: 'pub async fn obs_initiate_multipart_upload(&self,ctx: &OperationContext,path:
      &str,content_type: Option<&str>,) -> Result<Response<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/obs/src/core.rs:401,1
    - Dst: Request::put
      Src: /src/opendal/core/services/obs/src/core.rs:411,1
    - Dst: DeleteInput::header
      Src: /src/opendal/core/services/obs/src/core.rs:414,1
    - Dst: DeleteInput::extension
      Src: /src/opendal/core/services/obs/src/core.rs:417,1
    - Dst: extension
      Src: /src/opendal/core/services/obs/src/core.rs:417,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/obs/src/core.rs:419,1
    - Dst: body
      Src: /src/opendal/core/services/obs/src/core.rs:417,1
    - Dst: map_err
      Src: /src/opendal/core/services/obs/src/core.rs:417,1
    - Dst: ObsCore::sign
      Src: /src/opendal/core/services/obs/src/core.rs:424,1
    - Dst: ObsCore::send
      Src: /src/opendal/core/services/obs/src/core.rs:426,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 28
    argCount: 6
    argNames:
    - ctx
    - path
    - upload_id
    - part_number
    - size
    - body
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    - usize
    - Option<u64>
    - Buffer
    constantsTouched: []
    func_position:
      end: 427
      start: 392
    functionDepth: 36
    functionLinenumber: 392
    functionLinenumberEnd: 427
    functionName: ObsCore::obs_upload_part_request
    functionSourceFile: /src/opendal/core/services/obs/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - extension
    - Request::put
    - ObsCore::sign
    - body
    - build_abs_path
    - DeleteInput::header
    - ServiceOperation
    - ObsCore::send
    - DeleteInput::extension
    linkageType: ''
    returnType: Result
    signature: 'pub async fn obs_upload_part_request(&self,ctx: &OperationContext,path:
      &str,upload_id: &str,part_number: usize,size: Option<u64>,body: Buffer,) ->
      Result<Response<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/obs/src/core.rs:436,1
    - Dst: Request::post
      Src: /src/opendal/core/services/obs/src/core.rs:444,1
    - Dst: quick_xml::se::to_string
      Src: /src/opendal/core/services/obs/src/core.rs:446,1
    - Dst: (String, Metadata)::to_vec
      Src: /src/opendal/core/services/obs/src/core.rs:447,1
    - Dst: map_err
      Src: /src/opendal/core/services/obs/src/core.rs:446,1
    - Dst: header
      Src: /src/opendal/core/services/obs/src/core.rs:451,1
    - Dst: Result::len
      Src: /src/opendal/core/services/obs/src/core.rs:451,1
    - Dst: header
      Src: /src/opendal/core/services/obs/src/core.rs:453,1
    - Dst: extension
      Src: /src/opendal/core/services/obs/src/core.rs:455,1
    - Dst: extension
      Src: /src/opendal/core/services/obs/src/core.rs:455,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/obs/src/core.rs:457,1
    - Dst: body
      Src: /src/opendal/core/services/obs/src/core.rs:455,1
    - Dst: Buffer::from
      Src: /src/opendal/core/services/obs/src/core.rs:458,1
    - Dst: Bytes::from
      Src: /src/opendal/core/services/obs/src/core.rs:458,1
    - Dst: map_err
      Src: /src/opendal/core/services/obs/src/core.rs:455,1
    - Dst: ObsCore::sign
      Src: /src/opendal/core/services/obs/src/core.rs:461,1
    - Dst: ObsCore::send
      Src: /src/opendal/core/services/obs/src/core.rs:462,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 38
    argCount: 4
    argNames:
    - ctx
    - path
    - upload_id
    - parts
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    - Vec<CompleteMultipartUploadRequestPart>
    constantsTouched: []
    func_position:
      end: 463
      start: 429
    functionDepth: 40
    functionLinenumber: 429
    functionLinenumberEnd: 463
    functionName: ObsCore::obs_complete_multipart_upload
    functionSourceFile: /src/opendal/core/services/obs/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - extension
    - (String, Metadata)::to_vec
    - ObsCore::sign
    - Request::post
    - body
    - quick_xml::se::to_string
    - build_abs_path
    - Bytes::from
    - ServiceOperation
    - Result::len
    - ObsCore::send
    - Buffer::from
    - header
    linkageType: ''
    returnType: Result
    signature: 'pub async fn obs_complete_multipart_upload(&self,ctx: &OperationContext,path:
      &str,upload_id: &str,parts: Vec<CompleteMultipartUploadRequestPart>,) -> Result<Response<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_abs_path
      Src: /src/opendal/core/services/obs/src/core.rs:472,1
    - Dst: Request::delete
      Src: /src/opendal/core/services/obs/src/core.rs:481,1
    - Dst: Result::extension
      Src: /src/opendal/core/services/obs/src/core.rs:481,1
    - Dst: extension
      Src: /src/opendal/core/services/obs/src/core.rs:481,1
    - Dst: ServiceOperation
      Src: /src/opendal/core/services/obs/src/core.rs:483,1
    - Dst: body
      Src: /src/opendal/core/services/obs/src/core.rs:481,1
    - Dst: Buffer::new
      Src: /src/opendal/core/services/obs/src/core.rs:484,1
    - Dst: map_err
      Src: /src/opendal/core/services/obs/src/core.rs:481,1
    - Dst: ObsCore::sign
      Src: /src/opendal/core/services/obs/src/core.rs:487,1
    - Dst: ObsCore::send
      Src: /src/opendal/core/services/obs/src/core.rs:488,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 23
    argCount: 3
    argNames:
    - ctx
    - path
    - upload_id
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    constantsTouched: []
    func_position:
      end: 489
      start: 466
    functionDepth: 32
    functionLinenumber: 466
    functionLinenumberEnd: 489
    functionName: ObsCore::obs_abort_multipart_upload
    functionSourceFile: /src/opendal/core/services/obs/src/core.rs
    functionUses: 0
    functionsReached:
    - map_err
    - extension
    - Buffer::new
    - Request::delete
    - ObsCore::sign
    - Result::extension
    - body
    - build_abs_path
    - ServiceOperation
    - ObsCore::send
    linkageType: ''
    returnType: Result
    signature: 'pub async fn obs_abort_multipart_upload(&self,ctx: &OperationContext,path:
      &str,upload_id: &str,) -> Result<Response<Buffer>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: to_string
      Src: /src/opendal/core/services/obs/src/writer.rs:45,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 4
    argNames:
    - core
    - ctx
    - path
    - op
    argTypes:
    - Arc<ObsCore>
    - OperationContext
    - '&str'
    - OpWrite
    constantsTouched: []
    func_position:
      end: 48
      start: 41
    functionDepth: 2
    functionLinenumber: 41
    functionLinenumberEnd: 48
    functionName: ObsWriter::new
    functionSourceFile: /src/opendal/core/services/obs/src/writer.rs
    functionUses: 1
    functionsReached:
    - to_string
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(core: Arc<ObsCore>, ctx: OperationContext, path: &str,
      op: OpWrite) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Metadata::default
      Src: /src/opendal/core/services/obs/src/writer.rs:51,1
    - Dst: parse_etag
      Src: /src/opendal/core/services/obs/src/writer.rs:52,1
    - Dst: Result::set_etag
      Src: /src/opendal/core/services/obs/src/writer.rs:53,1
    - Dst: parse_content_md5
      Src: /src/opendal/core/services/obs/src/writer.rs:55,1
    - Dst: Result::set_content_md5
      Src: /src/opendal/core/services/obs/src/writer.rs:56,1
    - Dst: parse_header_to_str
      Src: /src/opendal/core/services/obs/src/writer.rs:58,1
    - Dst: Result::set_version
      Src: /src/opendal/core/services/obs/src/writer.rs:59,1
    - Dst: Ok
      Src: /src/opendal/core/services/obs/src/writer.rs:62,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 23
    argCount: 1
    argNames:
    - headers
    argTypes:
    - '&HeaderMap<HeaderValue>'
    constantsTouched: []
    func_position:
      end: 63
      start: 50
    functionDepth: 39
    functionLinenumber: 50
    functionLinenumberEnd: 63
    functionName: ObsWriter::parse_metadata
    functionSourceFile: /src/opendal/core/services/obs/src/writer.rs
    functionUses: 0
    functionsReached:
    - parse_content_md5
    - Metadata::default
    - Ok
    - parse_header_to_str
    - Result::set_version
    - parse_etag
    - Result::set_etag
    - Result::set_content_md5
    linkageType: ''
    returnType: Result
    signature: 'fn parse_metadata(headers: &HeaderMap<HeaderValue>) -> Result<Metadata>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: obs_put_object_request
      Src: /src/opendal/core/services/obs/src/writer.rs:68,1
    - Dst: Some
      Src: /src/opendal/core/services/obs/src/writer.rs:70,1
    - Dst: sign
      Src: /src/opendal/core/services/obs/src/writer.rs:72,1
    - Dst: send
      Src: /src/opendal/core/services/obs/src/writer.rs:74,1
    - Dst: Self::parse_metadata
      Src: /src/opendal/core/services/obs/src/writer.rs:76,1
    - Dst: headers
      Src: /src/opendal/core/services/obs/src/writer.rs:76,1
    - Dst: status
      Src: /src/opendal/core/services/obs/src/writer.rs:78,1
    - Dst: Ok
      Src: /src/opendal/core/services/obs/src/writer.rs:81,1
    - Dst: Err
      Src: /src/opendal/core/services/obs/src/writer.rs:82,1
    - Dst: super::core::parse_error
      Src: /src/opendal/core/services/obs/src/writer.rs:82,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 34
    argCount: 2
    argNames:
    - size
    - body
    argTypes:
    - u64
    - Buffer
    constantsTouched: []
    func_position:
      end: 84
      start: 67
    functionDepth: 33
    functionLinenumber: 67
    functionLinenumberEnd: 84
    functionName: ObsWriter::write_once
    functionSourceFile: /src/opendal/core/services/obs/src/writer.rs
    functionUses: 0
    functionsReached:
    - status
    - Ok
    - sign
    - obs_put_object_request
    - Some
    - Err
    - Self::parse_metadata
    - headers
    - send
    - super::core::parse_error
    linkageType: ''
    returnType: Result
    signature: 'async fn write_once(&self, size: u64, body: Buffer) -> Result<Metadata>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: obs_initiate_multipart_upload
      Src: /src/opendal/core/services/obs/src/writer.rs:87,1
    - Dst: content_type
      Src: /src/opendal/core/services/obs/src/writer.rs:89,1
    - Dst: status
      Src: /src/opendal/core/services/obs/src/writer.rs:92,1
    - Dst: into_body
      Src: /src/opendal/core/services/obs/src/writer.rs:96,1
    - Dst: quick_xml::de::from_reader
      Src: /src/opendal/core/services/obs/src/writer.rs:99,1
    - Dst: bytes::Buf::reader
      Src: /src/opendal/core/services/obs/src/writer.rs:99,1
    - Dst: map_err
      Src: /src/opendal/core/services/obs/src/writer.rs:99,1
    - Dst: Ok
      Src: /src/opendal/core/services/obs/src/writer.rs:102,1
    - Dst: Err
      Src: /src/opendal/core/services/obs/src/writer.rs:104,1
    - Dst: super::core::parse_error
      Src: /src/opendal/core/services/obs/src/writer.rs:104,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 27
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 106
      start: 86
    functionDepth: 37
    functionLinenumber: 86
    functionLinenumberEnd: 106
    functionName: ObsWriter::initiate_part
    functionSourceFile: /src/opendal/core/services/obs/src/writer.rs
    functionUses: 0
    functionsReached:
    - obs_initiate_multipart_upload
    - map_err
    - status
    - Ok
    - into_body
    - Err
    - quick_xml::de::from_reader
    - bytes::Buf::reader
    - content_type
    - super::core::parse_error
    linkageType: ''
    returnType: Result
    signature: async fn initiate_part(&self) -> Result<String>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: obs_upload_part_request
      Src: /src/opendal/core/services/obs/src/writer.rs:118,1
    - Dst: Some
      Src: /src/opendal/core/services/obs/src/writer.rs:125,1
    - Dst: status
      Src: /src/opendal/core/services/obs/src/writer.rs:130,1
    - Dst: parse_etag
      Src: /src/opendal/core/services/obs/src/writer.rs:134,1
    - Dst: headers
      Src: /src/opendal/core/services/obs/src/writer.rs:134,1
    - Dst: ok_or_else
      Src: /src/opendal/core/services/obs/src/writer.rs:134,1
    - Dst: Error::new
      Src: /src/opendal/core/services/obs/src/writer.rs:136,1
    - Dst: to_string
      Src: /src/opendal/core/services/obs/src/writer.rs:134,1
    - Dst: Ok
      Src: /src/opendal/core/services/obs/src/writer.rs:143,1
    - Dst: Err
      Src: /src/opendal/core/services/obs/src/writer.rs:150,1
    - Dst: super::core::parse_error
      Src: /src/opendal/core/services/obs/src/writer.rs:150,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 30
    argCount: 4
    argNames:
    - upload_id
    - part_number
    - size
    - body
    argTypes:
    - '&str'
    - usize
    - u64
    - Buffer
    constantsTouched: []
    func_position:
      end: 152
      start: 108
    functionDepth: 37
    functionLinenumber: 108
    functionLinenumberEnd: 152
    functionName: ObsWriter::write_part
    functionSourceFile: /src/opendal/core/services/obs/src/writer.rs
    functionUses: 0
    functionsReached:
    - to_string
    - status
    - Ok
    - Some
    - Error::new
    - Err
    - headers
    - parse_etag
    - super::core::parse_error
    - obs_upload_part_request
    - ok_or_else
    linkageType: ''
    returnType: Result
    signature: 'async fn write_part(&self,upload_id: &str,part_number: usize,size:
      u64,body: Buffer,) -> Result<oio::MultipartPart>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: (String, Metadata)::iter
      Src: /src/opendal/core/services/obs/src/writer.rs:159,1
    - Dst: map
      Src: /src/opendal/core/services/obs/src/writer.rs:159,1
    - Dst: clone
      Src: /src/opendal/core/services/obs/src/writer.rs:163,1
    - Dst: Result::collect
      Src: /src/opendal/core/services/obs/src/writer.rs:159,1
    - Dst: obs_complete_multipart_upload
      Src: /src/opendal/core/services/obs/src/writer.rs:167,1
    - Dst: Self::parse_metadata
      Src: /src/opendal/core/services/obs/src/writer.rs:172,1
    - Dst: headers
      Src: /src/opendal/core/services/obs/src/writer.rs:172,1
    - Dst: quick_xml::de::from_reader
      Src: /src/opendal/core/services/obs/src/writer.rs:175,1
    - Dst: body_mut
      Src: /src/opendal/core/services/obs/src/writer.rs:175,1
    - Dst: reader
      Src: /src/opendal/core/services/obs/src/writer.rs:175,1
    - Dst: map_err
      Src: /src/opendal/core/services/obs/src/writer.rs:175,1
    - Dst: Result::set_etag
      Src: /src/opendal/core/services/obs/src/writer.rs:177,1
    - Dst: status
      Src: /src/opendal/core/services/obs/src/writer.rs:179,1
    - Dst: Ok
      Src: /src/opendal/core/services/obs/src/writer.rs:182,1
    - Dst: Err
      Src: /src/opendal/core/services/obs/src/writer.rs:183,1
    - Dst: super::core::parse_error
      Src: /src/opendal/core/services/obs/src/writer.rs:183,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 45
    argCount: 2
    argNames:
    - upload_id
    - parts
    argTypes:
    - '&str'
    - '&[oio::MultipartPart]'
    constantsTouched: []
    func_position:
      end: 185
      start: 154
    functionDepth: 36
    functionLinenumber: 154
    functionLinenumberEnd: 185
    functionName: ObsWriter::complete_part
    functionSourceFile: /src/opendal/core/services/obs/src/writer.rs
    functionUses: 0
    functionsReached:
    - map_err
    - reader
    - status
    - Ok
    - body_mut
    - clone
    - Err
    - map
    - quick_xml::de::from_reader
    - Result::collect
    - Self::parse_metadata
    - headers
    - (String, Metadata)::iter
    - Result::set_etag
    - obs_complete_multipart_upload
    - super::core::parse_error
    linkageType: ''
    returnType: Result
    signature: 'async fn complete_part(&self,upload_id: &str,parts: &[oio::MultipartPart],)
      -> Result<Metadata>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: obs_abort_multipart_upload
      Src: /src/opendal/core/services/obs/src/writer.rs:188,1
    - Dst: status
      Src: /src/opendal/core/services/obs/src/writer.rs:192,1
    - Dst: Ok
      Src: /src/opendal/core/services/obs/src/writer.rs:195,1
    - Dst: Err
      Src: /src/opendal/core/services/obs/src/writer.rs:196,1
    - Dst: super::core::parse_error
      Src: /src/opendal/core/services/obs/src/writer.rs:196,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 1
    argNames:
    - upload_id
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 198
      start: 187
    functionDepth: 33
    functionLinenumber: 187
    functionLinenumberEnd: 198
    functionName: ObsWriter::abort_part
    functionSourceFile: /src/opendal/core/services/obs/src/writer.rs
    functionUses: 0
    functionsReached:
    - status
    - Ok
    - obs_abort_multipart_upload
    - Err
    - super::core::parse_error
    linkageType: ''
    returnType: Result
    signature: 'async fn abort_part(&self, upload_id: &str) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: obs_head_object
      Src: /src/opendal/core/services/obs/src/writer.rs:203,1
    - Dst: OpStat::default
      Src: /src/opendal/core/services/obs/src/writer.rs:205,1
    - Dst: status
      Src: /src/opendal/core/services/obs/src/writer.rs:208,1
    - Dst: parse_content_length
      Src: /src/opendal/core/services/obs/src/writer.rs:211,1
    - Dst: headers
      Src: /src/opendal/core/services/obs/src/writer.rs:211,1
    - Dst: ok_or_else
      Src: /src/opendal/core/services/obs/src/writer.rs:211,1
    - Dst: Error::new
      Src: /src/opendal/core/services/obs/src/writer.rs:212,1
    - Dst: Ok
      Src: /src/opendal/core/services/obs/src/writer.rs:217,1
    - Dst: Ok
      Src: /src/opendal/core/services/obs/src/writer.rs:219,1
    - Dst: Err
      Src: /src/opendal/core/services/obs/src/writer.rs:220,1
    - Dst: super::core::parse_error
      Src: /src/opendal/core/services/obs/src/writer.rs:220,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 28
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 222
      start: 202
    functionDepth: 40
    functionLinenumber: 202
    functionLinenumberEnd: 222
    functionName: ObsWriter::offset
    functionSourceFile: /src/opendal/core/services/obs/src/writer.rs
    functionUses: 0
    functionsReached:
    - status
    - Ok
    - obs_head_object
    - ok_or_else
    - Error::new
    - parse_content_length
    - Err
    - headers
    - super::core::parse_error
    - OpStat::default
    linkageType: ''
    returnType: Result
    signature: async fn offset(&self) -> Result<u64>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: obs_append_object_request
      Src: /src/opendal/core/services/obs/src/writer.rs:225,1
    - Dst: sign
      Src: /src/opendal/core/services/obs/src/writer.rs:229,1
    - Dst: send
      Src: /src/opendal/core/services/obs/src/writer.rs:231,1
    - Dst: Metadata::default
      Src: /src/opendal/core/services/obs/src/writer.rs:233,1
    - Dst: parse_content_md5
      Src: /src/opendal/core/services/obs/src/writer.rs:234,1
    - Dst: headers
      Src: /src/opendal/core/services/obs/src/writer.rs:234,1
    - Dst: Result::set_content_md5
      Src: /src/opendal/core/services/obs/src/writer.rs:235,1
    - Dst: parse_header_to_str
      Src: /src/opendal/core/services/obs/src/writer.rs:237,1
    - Dst: headers
      Src: /src/opendal/core/services/obs/src/writer.rs:237,1
    - Dst: Result::set_version
      Src: /src/opendal/core/services/obs/src/writer.rs:238,1
    - Dst: status
      Src: /src/opendal/core/services/obs/src/writer.rs:241,1
    - Dst: Ok
      Src: /src/opendal/core/services/obs/src/writer.rs:244,1
    - Dst: Err
      Src: /src/opendal/core/services/obs/src/writer.rs:245,1
    - Dst: super::core::parse_error
      Src: /src/opendal/core/services/obs/src/writer.rs:245,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 48
    argCount: 3
    argNames:
    - offset
    - size
    - body
    argTypes:
    - u64
    - u64
    - Buffer
    constantsTouched: []
    func_position:
      end: 247
      start: 224
    functionDepth: 33
    functionLinenumber: 224
    functionLinenumberEnd: 247
    functionName: ObsWriter::append
    functionSourceFile: /src/opendal/core/services/obs/src/writer.rs
    functionUses: 0
    functionsReached:
    - parse_content_md5
    - Metadata::default
    - obs_append_object_request
    - status
    - Ok
    - sign
    - parse_header_to_str
    - Result::set_version
    - Err
    - headers
    - send
    - super::core::parse_error
    - Result::set_content_md5
    linkageType: ''
    returnType: Result
    signature: 'async fn append(&self, offset: u64, size: u64, body: Buffer) -> Result<Metadata>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: register::<Obs>
      Src: /src/opendal/core/services/obs/src/lib.rs:23,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - registry
    argTypes:
    - '&opendal_core::OperatorRegistry'
    constantsTouched: []
    func_position:
      end: 24
      start: 22
    functionDepth: 0
    functionLinenumber: 22
    functionLinenumberEnd: 24
    functionName: register_obs_service
    functionSourceFile: /src/opendal/core/services/obs/src/lib.rs
    functionUses: 1
    functionsReached:
    - register::<Obs>
    linkageType: ''
    returnType: void
    signature: 'pub fn register_obs_service(registry: &opendal_core::OperatorRegistry)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::debug_struct
      Src: /src/opendal/core/services/obs/src/backend.rs:56,1
    - Dst: field
      Src: /src/opendal/core/services/obs/src/backend.rs:56,1
    - Dst: finish_non_exhaustive
      Src: /src/opendal/core/services/obs/src/backend.rs:56,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - f
    argTypes:
    - '&mut std::fmt::Formatter<''_>'
    constantsTouched: []
    func_position:
      end: 59
      start: 55
    functionDepth: 5
    functionLinenumber: 55
    functionLinenumberEnd: 59
    functionName: ObsBuilder::fmt
    functionSourceFile: /src/opendal/core/services/obs/src/backend.rs
    functionUses: 0
    functionsReached:
    - field
    - Result::debug_struct
    - finish_non_exhaustive
    linkageType: ''
    returnType: std::fmt::Result
    signature: 'fn fmt(&self, f: &mut std::fmt::Formatter<''_>) -> std::fmt::Result'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::is_empty
      Src: /src/opendal/core/services/obs/src/backend.rs:67,1
    - Dst: Some
      Src: /src/opendal/core/services/obs/src/backend.rs:70,1
    - Dst: Result::to_string
      Src: /src/opendal/core/services/obs/src/backend.rs:70,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - root
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 74
      start: 66
    functionDepth: 4
    functionLinenumber: 66
    functionLinenumberEnd: 74
    functionName: ObsBuilder::root
    functionSourceFile: /src/opendal/core/services/obs/src/backend.rs
    functionUses: 0
    functionsReached:
    - Result::is_empty
    - Result::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn root(mut self, root: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self::is_empty
      Src: /src/opendal/core/services/obs/src/backend.rs:85,1
    - Dst: Some
      Src: /src/opendal/core/services/obs/src/backend.rs:86,1
    - Dst: Self::trim_end_matches
      Src: /src/opendal/core/services/obs/src/backend.rs:86,1
    - Dst: to_string
      Src: /src/opendal/core/services/obs/src/backend.rs:86,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 14
    argCount: 1
    argNames:
    - endpoint
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 90
      start: 84
    functionDepth: 4
    functionLinenumber: 84
    functionLinenumberEnd: 90
    functionName: ObsBuilder::endpoint
    functionSourceFile: /src/opendal/core/services/obs/src/backend.rs
    functionUses: 0
    functionsReached:
    - Self::is_empty
    - to_string
    - Self::trim_end_matches
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn endpoint(mut self, endpoint: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self::is_empty
      Src: /src/opendal/core/services/obs/src/backend.rs:96,1
    - Dst: Some
      Src: /src/opendal/core/services/obs/src/backend.rs:97,1
    - Dst: Self::to_string
      Src: /src/opendal/core/services/obs/src/backend.rs:97,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 1
    argNames:
    - access_key_id
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 101
      start: 95
    functionDepth: 4
    functionLinenumber: 95
    functionLinenumberEnd: 101
    functionName: ObsBuilder::access_key_id
    functionSourceFile: /src/opendal/core/services/obs/src/backend.rs
    functionUses: 0
    functionsReached:
    - Self::is_empty
    - Self::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn access_key_id(mut self, access_key_id: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self::is_empty
      Src: /src/opendal/core/services/obs/src/backend.rs:107,1
    - Dst: Some
      Src: /src/opendal/core/services/obs/src/backend.rs:108,1
    - Dst: Self::to_string
      Src: /src/opendal/core/services/obs/src/backend.rs:108,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 1
    argNames:
    - secret_access_key
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 112
      start: 106
    functionDepth: 4
    functionLinenumber: 106
    functionLinenumberEnd: 112
    functionName: ObsBuilder::secret_access_key
    functionSourceFile: /src/opendal/core/services/obs/src/backend.rs
    functionUses: 0
    functionsReached:
    - Self::is_empty
    - Self::to_string
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn secret_access_key(mut self, secret_access_key: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: usize::is_empty
      Src: /src/opendal/core/services/obs/src/backend.rs:117,1
    - Dst: Some
      Src: /src/opendal/core/services/obs/src/backend.rs:118,1
    - Dst: usize::to_string
      Src: /src/opendal/core/services/obs/src/backend.rs:118,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 1
    argNames:
    - bucket
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 122
      start: 116
    functionDepth: 4
    functionLinenumber: 116
    functionLinenumberEnd: 122
    functionName: ObsBuilder::bucket
    functionSourceFile: /src/opendal/core/services/obs/src/backend.rs
    functionUses: 0
    functionsReached:
    - Some
    - usize::to_string
    - usize::is_empty
    linkageType: ''
    returnType: Self
    signature: 'pub fn bucket(mut self, bucket: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 1
    argNames:
    - _enabled
    argTypes:
    - bool
    constantsTouched: []
    func_position:
      end: 131
      start: 129
    functionDepth: 0
    functionLinenumber: 129
    functionLinenumberEnd: 131
    functionName: ObsBuilder::enable_versioning
    functionSourceFile: /src/opendal/core/services/obs/src/backend.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: 'pub fn enable_versioning(self, _enabled: bool) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: normalize_root
      Src: /src/opendal/core/services/obs/src/backend.rs:140,1
    - Dst: unwrap_or_default
      Src: /src/opendal/core/services/obs/src/backend.rs:140,1
    - Dst: Ok
      Src: /src/opendal/core/services/obs/src/backend.rs:144,1
    - Dst: usize::to_string
      Src: /src/opendal/core/services/obs/src/backend.rs:144,1
    - Dst: Err
      Src: /src/opendal/core/services/obs/src/backend.rs:145,1
    - Dst: Error::new
      Src: /src/opendal/core/services/obs/src/backend.rs:146,1
    - Dst: Self::with_context
      Src: /src/opendal/core/services/obs/src/backend.rs:146,1
    - Dst: parse::<Uri>
      Src: /src/opendal/core/services/obs/src/backend.rs:153,1
    - Dst: map_err
      Src: /src/opendal/core/services/obs/src/backend.rs:153,1
    - Dst: Error::new
      Src: /src/opendal/core/services/obs/src/backend.rs:154,1
    - Dst: Self::with_context
      Src: /src/opendal/core/services/obs/src/backend.rs:154,1
    - Dst: Self::set_source
      Src: /src/opendal/core/services/obs/src/backend.rs:154,1
    - Dst: Err
      Src: /src/opendal/core/services/obs/src/backend.rs:158,1
    - Dst: Error::new
      Src: /src/opendal/core/services/obs/src/backend.rs:158,1
    - Dst: Self::with_context
      Src: /src/opendal/core/services/obs/src/backend.rs:158,1
    - Dst: Result::scheme_str
      Src: /src/opendal/core/services/obs/src/backend.rs:162,1
    - Dst: to_string
      Src: /src/opendal/core/services/obs/src/backend.rs:163,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/services/obs/src/backend.rs:164,1
    - Dst: Result::host
      Src: /src/opendal/core/services/obs/src/backend.rs:168,1
    - Dst: Self::unwrap_or_default
      Src: /src/opendal/core/services/obs/src/backend.rs:168,1
    - Dst: to_string
      Src: /src/opendal/core/services/obs/src/backend.rs:168,1
    - Dst: Self::starts_with
      Src: /src/opendal/core/services/obs/src/backend.rs:169,1
    - Dst: Self::ends_with
      Src: /src/opendal/core/services/obs/src/backend.rs:170,1
    - Dst: Self::ends_with
      Src: /src/opendal/core/services/obs/src/backend.rs:170,1
    - Dst: Context::new
      Src: /src/opendal/core/services/obs/src/backend.rs:179,1
    - Dst: Self::with_file_read
      Src: /src/opendal/core/services/obs/src/backend.rs:179,1
    - Dst: with_env
      Src: /src/opendal/core/services/obs/src/backend.rs:179,1
    - Dst: ProvideCredentialChain::new
      Src: /src/opendal/core/services/obs/src/backend.rs:181,1
    - Dst: Self::push
      Src: /src/opendal/core/services/obs/src/backend.rs:181,1
    - Dst: EnvCredentialProvider::new
      Src: /src/opendal/core/services/obs/src/backend.rs:181,1
    - Dst: StaticCredentialProvider::new
      Src: /src/opendal/core/services/obs/src/backend.rs:184,1
    - Dst: Self::push_front
      Src: /src/opendal/core/services/obs/src/backend.rs:185,1
    - Dst: RequestSigner::new
      Src: /src/opendal/core/services/obs/src/backend.rs:195,1
    - Dst: Signer::new
      Src: /src/opendal/core/services/obs/src/backend.rs:196,1
    - Dst: ServiceInfo::new
      Src: /src/opendal/core/services/obs/src/backend.rs:198,1
    - Dst: Some
      Src: /src/opendal/core/services/obs/src/backend.rs:221,1
    - Dst: Some
      Src: /src/opendal/core/services/obs/src/backend.rs:226,1
    - Dst: Some
      Src: /src/opendal/core/services/obs/src/backend.rs:228,1
    - Dst: Default::default
      Src: /src/opendal/core/services/obs/src/backend.rs:245,1
    - Dst: Ok
      Src: /src/opendal/core/services/obs/src/backend.rs:249,1
    - Dst: Arc::new
      Src: /src/opendal/core/services/obs/src/backend.rs:250,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 114
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 259
      start: 137
    functionDepth: 34
    functionLinenumber: 137
    functionLinenumberEnd: 259
    functionName: ObsBuilder::build
    functionSourceFile: /src/opendal/core/services/obs/src/backend.rs
    functionUses: 0
    functionsReached:
    - Self::push_front
    - Default::default
    - Arc::new
    - EnvCredentialProvider::new
    - ProvideCredentialChain::new
    - Signer::new
    - Result::host
    - usize::to_string
    - Self::with_context
    - map_err
    - ServiceInfo::new
    - Self::ends_with
    - Ok
    - Self::unwrap_or_default
    - Context::new
    - normalize_root
    - '&str::to_string'
    - unwrap_or_default
    - RequestSigner::new
    - Result::scheme_str
    - Self::push
    - Some
    - Self::set_source
    - to_string
    - with_env
    - parse::<Uri>
    - Err
    - Error::new
    - Self::with_file_read
    - StaticCredentialProvider::new
    - Self::starts_with
    linkageType: ''
    returnType: Result
    signature: fn build(self) -> Result<impl Service>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: clone
      Src: /src/opendal/core/services/obs/src/backend.rs:276,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 277
      start: 275
    functionDepth: 2
    functionLinenumber: 275
    functionLinenumberEnd: 277
    functionName: ObsBackend::info
    functionSourceFile: /src/opendal/core/services/obs/src/backend.rs
    functionUses: 0
    functionsReached:
    - clone
    linkageType: ''
    returnType: ServiceInfo
    signature: fn info(&self) -> ServiceInfo
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 281
      start: 279
    functionDepth: 0
    functionLinenumber: 279
    functionLinenumberEnd: 281
    functionName: ObsBackend::capability
    functionSourceFile: /src/opendal/core/services/obs/src/backend.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Capability
    signature: fn capability(&self) -> Capability
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/core/services/obs/src/backend.rs:289,1
    - Dst: Error::new
      Src: /src/opendal/core/services/obs/src/backend.rs:289,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - _ctx
    - _path
    - _args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpCreateDir
    constantsTouched: []
    func_position:
      end: 293
      start: 283
    functionDepth: 36
    functionLinenumber: 283
    functionLinenumberEnd: 293
    functionName: ObsBackend::create_dir
    functionSourceFile: /src/opendal/core/services/obs/src/backend.rs
    functionUses: 0
    functionsReached:
    - Error::new
    - Err
    linkageType: ''
    returnType: Result
    signature: 'async fn create_dir(&self,_ctx: &OperationContext,_path: &str,_args:
      OpCreateDir,) -> Result<RpCreateDir>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: obs_head_object
      Src: /src/opendal/core/services/obs/src/backend.rs:296,1
    - Dst: headers
      Src: /src/opendal/core/services/obs/src/backend.rs:297,1
    - Dst: status
      Src: /src/opendal/core/services/obs/src/backend.rs:299,1
    - Dst: parse_into_metadata
      Src: /src/opendal/core/services/obs/src/backend.rs:304,1
    - Dst: HashMap::iter
      Src: /src/opendal/core/services/obs/src/backend.rs:305,1
    - Dst: filter_map
      Src: /src/opendal/core/services/obs/src/backend.rs:305,1
    - Dst: Result::as_str
      Src: /src/opendal/core/services/obs/src/backend.rs:308,1
    - Dst: '&''static str::strip_prefix'
      Src: /src/opendal/core/services/obs/src/backend.rs:308,1
    - Dst: and_then
      Src: /src/opendal/core/services/obs/src/backend.rs:308,1
    - Dst: parse_header_to_str
      Src: /src/opendal/core/services/obs/src/backend.rs:311,1
    - Dst: Result::unwrap_or
      Src: /src/opendal/core/services/obs/src/backend.rs:311,1
    - Dst: map
      Src: /src/opendal/core/services/obs/src/backend.rs:311,1
    - Dst: to_string
      Src: /src/opendal/core/services/obs/src/backend.rs:313,1
    - Dst: Option::to_string
      Src: /src/opendal/core/services/obs/src/backend.rs:313,1
    - Dst: "iter()\n                    .filter_map(|(name, _)| {\n              \
        \          name.as_str()\n                            .strip_prefix(constants::X_OBS_META_PREFIX)\n\
        \                            .and_then(|stripped_key| {\n                \
        \                parse_header_to_str(headers, name)\n                    \
        \                .unwrap_or(None)\n                                    .map(|val|\
        \ (stripped_key.to_string(), val.to_string()))\n                         \
        \   })\n                    })\n                    .collect::<HashMap<_,\
        \ _>>"
      Src: /src/opendal/core/services/obs/src/backend.rs:305,1
    - Dst: is_empty
      Src: /src/opendal/core/services/obs/src/backend.rs:318,1
    - Dst: Result::with_user_metadata
      Src: /src/opendal/core/services/obs/src/backend.rs:319,1
    - Dst: parse_header_to_str
      Src: /src/opendal/core/services/obs/src/backend.rs:322,1
    - Dst: Result::set_version
      Src: /src/opendal/core/services/obs/src/backend.rs:323,1
    - Dst: Ok
      Src: /src/opendal/core/services/obs/src/backend.rs:326,1
    - Dst: RpStat::new
      Src: /src/opendal/core/services/obs/src/backend.rs:326,1
    - Dst: ends_with
      Src: /src/opendal/core/services/obs/src/backend.rs:328,1
    - Dst: Ok
      Src: /src/opendal/core/services/obs/src/backend.rs:329,1
    - Dst: RpStat::new
      Src: /src/opendal/core/services/obs/src/backend.rs:329,1
    - Dst: Metadata::new
      Src: /src/opendal/core/services/obs/src/backend.rs:329,1
    - Dst: Err
      Src: /src/opendal/core/services/obs/src/backend.rs:331,1
    - Dst: super::core::parse_error
      Src: /src/opendal/core/services/obs/src/backend.rs:331,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 64
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpStat
    constantsTouched: []
    func_position:
      end: 333
      start: 295
    functionDepth: 40
    functionLinenumber: 295
    functionLinenumberEnd: 333
    functionName: ObsBackend::stat
    functionSourceFile: /src/opendal/core/services/obs/src/backend.rs
    functionUses: 0
    functionsReached:
    - status
    - '&''static str::strip_prefix'
    - ends_with
    - HashMap::iter
    - map
    - Result::unwrap_or
    - filter_map
    - Option::to_string
    - and_then
    - Ok
    - parse_header_to_str
    - Result::with_user_metadata
    - headers
    - Result::as_str
    - "iter()\n                    .filter_map(|(name, _)| {\n                   \
      \     name.as_str()\n                            .strip_prefix(constants::X_OBS_META_PREFIX)\n\
      \                            .and_then(|stripped_key| {\n                  \
      \              parse_header_to_str(headers, name)\n                        \
      \            .unwrap_or(None)\n                                    .map(|val|\
      \ (stripped_key.to_string(), val.to_string()))\n                           \
      \ })\n                    })\n                    .collect::<HashMap<_, _>>"
    - parse_into_metadata
    - Metadata::new
    - is_empty
    - super::core::parse_error
    - to_string
    - RpStat::new
    - Result::set_version
    - obs_head_object
    - Err
    linkageType: ''
    returnType: Result
    signature: 'async fn stat(&self, ctx: &OperationContext, path: &str, args: OpStat)
      -> Result<RpStat>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/core/services/obs/src/backend.rs:336,1
    - Dst: oio::StreamReader::new
      Src: /src/opendal/core/services/obs/src/backend.rs:336,1
    - Dst: ObsReader::new
      Src: /src/opendal/core/services/obs/src/backend.rs:336,1
    - Dst: ObsBackend::clone
      Src: /src/opendal/core/services/obs/src/backend.rs:337,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/obs/src/backend.rs:338,1
    - Dst: Ok
      Src: /src/opendal/core/services/obs/src/backend.rs:344,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpRead
    constantsTouched: []
    func_position:
      end: 345
      start: 334
    functionDepth: 3
    functionLinenumber: 334
    functionLinenumberEnd: 345
    functionName: ObsBackend::read
    functionSourceFile: /src/opendal/core/services/obs/src/backend.rs
    functionUses: 0
    functionsReached:
    - Result::clone
    - Ok
    - ObsReader::new
    - oio::StreamReader::new
    - ObsBackend::clone
    linkageType: ''
    returnType: Result
    signature: 'fn read(&self, ctx: &OperationContext, path: &str, args: OpRead) ->
      Result<Self::Reader>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: ObsWriter::new
      Src: /src/opendal/core/services/obs/src/backend.rs:349,1
    - Dst: clone
      Src: /src/opendal/core/services/obs/src/backend.rs:349,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/obs/src/backend.rs:349,1
    - Dst: OpStat::clone
      Src: /src/opendal/core/services/obs/src/backend.rs:349,1
    - Dst: OpStat::append
      Src: /src/opendal/core/services/obs/src/backend.rs:351,1
    - Dst: ObsWriters::Two
      Src: /src/opendal/core/services/obs/src/backend.rs:352,1
    - Dst: oio::AppendWriter::new
      Src: /src/opendal/core/services/obs/src/backend.rs:352,1
    - Dst: ObsWriters::One
      Src: /src/opendal/core/services/obs/src/backend.rs:354,1
    - Dst: oio::MultipartWriter::new
      Src: /src/opendal/core/services/obs/src/backend.rs:354,1
    - Dst: Result::executor
      Src: /src/opendal/core/services/obs/src/backend.rs:355,1
    - Dst: Self::clone
      Src: /src/opendal/core/services/obs/src/backend.rs:355,1
    - Dst: OpStat::concurrent
      Src: /src/opendal/core/services/obs/src/backend.rs:357,1
    - Dst: Ok
      Src: /src/opendal/core/services/obs/src/backend.rs:361,1
    - Dst: Ok
      Src: /src/opendal/core/services/obs/src/backend.rs:364,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 24
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpWrite
    constantsTouched: []
    func_position:
      end: 365
      start: 347
    functionDepth: 31
    functionLinenumber: 347
    functionLinenumberEnd: 365
    functionName: ObsBackend::write
    functionSourceFile: /src/opendal/core/services/obs/src/backend.rs
    functionUses: 0
    functionsReached:
    - OpStat::clone
    - Result::clone
    - oio::MultipartWriter::new
    - ObsWriters::One
    - Ok
    - Result::executor
    - clone
    - ObsWriters::Two
    - OpStat::append
    - Self::clone
    - OpStat::concurrent
    - ObsWriter::new
    - oio::AppendWriter::new
    linkageType: ''
    returnType: Result
    signature: 'fn write(&self, ctx: &OperationContext, path: &str, args: OpWrite)
      -> Result<Self::Writer>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/core/services/obs/src/backend.rs:369,1
    - Dst: oio::OneShotDeleter::new
      Src: /src/opendal/core/services/obs/src/backend.rs:369,1
    - Dst: ObsDeleter::new
      Src: /src/opendal/core/services/obs/src/backend.rs:369,1
    - Dst: clone
      Src: /src/opendal/core/services/obs/src/backend.rs:370,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/obs/src/backend.rs:371,1
    - Dst: Ok
      Src: /src/opendal/core/services/obs/src/backend.rs:375,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - '&OperationContext'
    constantsTouched: []
    func_position:
      end: 376
      start: 367
    functionDepth: 2
    functionLinenumber: 367
    functionLinenumberEnd: 376
    functionName: ObsBackend::delete
    functionSourceFile: /src/opendal/core/services/obs/src/backend.rs
    functionUses: 0
    functionsReached:
    - oio::OneShotDeleter::new
    - Result::clone
    - Ok
    - ObsDeleter::new
    - clone
    linkageType: ''
    returnType: Result
    signature: 'fn delete(&self, ctx: &OperationContext) -> Result<Self::Deleter>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: ObsLister::new
      Src: /src/opendal/core/services/obs/src/backend.rs:380,1
    - Dst: clone
      Src: /src/opendal/core/services/obs/src/backend.rs:381,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/obs/src/backend.rs:382,1
    - Dst: OpStat::recursive
      Src: /src/opendal/core/services/obs/src/backend.rs:384,1
    - Dst: OpStat::limit
      Src: /src/opendal/core/services/obs/src/backend.rs:385,1
    - Dst: Ok
      Src: /src/opendal/core/services/obs/src/backend.rs:387,1
    - Dst: oio::PageLister::new
      Src: /src/opendal/core/services/obs/src/backend.rs:387,1
    - Dst: Ok
      Src: /src/opendal/core/services/obs/src/backend.rs:390,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 14
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpList
    constantsTouched: []
    func_position:
      end: 391
      start: 378
    functionDepth: 36
    functionLinenumber: 378
    functionLinenumberEnd: 391
    functionName: ObsBackend::list
    functionSourceFile: /src/opendal/core/services/obs/src/backend.rs
    functionUses: 0
    functionsReached:
    - Result::clone
    - ObsLister::new
    - Ok
    - clone
    - oio::PageLister::new
    - OpStat::limit
    - OpStat::recursive
    linkageType: ''
    returnType: Result
    signature: 'fn list(&self, ctx: &OperationContext, path: &str, args: OpList) ->
      Result<Self::Lister>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: clone
      Src: /src/opendal/core/services/obs/src/backend.rs:401,1
    - Dst: Result::clone
      Src: /src/opendal/core/services/obs/src/backend.rs:402,1
    - Dst: Result::to_string
      Src: /src/opendal/core/services/obs/src/backend.rs:403,1
    - Dst: Result::to_string
      Src: /src/opendal/core/services/obs/src/backend.rs:404,1
    - Dst: Ok
      Src: /src/opendal/core/services/obs/src/backend.rs:405,1
    - Dst: oio::OneShotCopier::new
      Src: /src/opendal/core/services/obs/src/backend.rs:405,1
    - Dst: CompfsCore::obs_copy_object
      Src: /src/opendal/core/services/obs/src/backend.rs:406,1
    - Dst: status
      Src: /src/opendal/core/services/obs/src/backend.rs:408,1
    - Dst: Ok
      Src: /src/opendal/core/services/obs/src/backend.rs:411,1
    - Dst: Metadata::default
      Src: /src/opendal/core/services/obs/src/backend.rs:411,1
    - Dst: Err
      Src: /src/opendal/core/services/obs/src/backend.rs:412,1
    - Dst: super::core::parse_error
      Src: /src/opendal/core/services/obs/src/backend.rs:412,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 26
    argCount: 5
    argNames:
    - ctx
    - from
    - to
    - _args
    - _opts
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    - OpCopy
    - OpCopier
    constantsTouched: []
    func_position:
      end: 415
      start: 393
    functionDepth: 37
    functionLinenumber: 393
    functionLinenumberEnd: 415
    functionName: ObsBackend::copy
    functionSourceFile: /src/opendal/core/services/obs/src/backend.rs
    functionUses: 0
    functionsReached:
    - Result::clone
    - Metadata::default
    - Result::to_string
    - Ok
    - status
    - clone
    - Err
    - super::core::parse_error
    - oio::OneShotCopier::new
    - CompfsCore::obs_copy_object
    linkageType: ''
    returnType: Result
    signature: 'fn copy(&self,ctx: &OperationContext,from: &str,to: &str,_args: OpCopy,_opts:
      OpCopier,) -> Result<Self::Copier>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/core/services/obs/src/backend.rs:424,1
    - Dst: Error::new
      Src: /src/opendal/core/services/obs/src/backend.rs:424,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - _ctx
    - _from
    - _to
    - _args
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    - OpRename
    constantsTouched: []
    func_position:
      end: 428
      start: 417
    functionDepth: 36
    functionLinenumber: 417
    functionLinenumberEnd: 428
    functionName: ObsBackend::rename
    functionSourceFile: /src/opendal/core/services/obs/src/backend.rs
    functionUses: 0
    functionsReached:
    - Error::new
    - Err
    linkageType: ''
    returnType: Result
    signature: 'async fn rename(&self,_ctx: &OperationContext,_from: &str,_to: &str,_args:
      OpRename,) -> Result<RpRename>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: OpStat::operation
      Src: /src/opendal/core/services/obs/src/backend.rs:436,1
    - Dst: obs_head_object_request
      Src: /src/opendal/core/services/obs/src/backend.rs:437,1
    - Dst: obs_get_object_request
      Src: /src/opendal/core/services/obs/src/backend.rs:438,1
    - Dst: obs_put_object_request
      Src: /src/opendal/core/services/obs/src/backend.rs:440,1
    - Dst: Buffer::new
      Src: /src/opendal/core/services/obs/src/backend.rs:441,1
    - Dst: Err
      Src: /src/opendal/core/services/obs/src/backend.rs:443,1
    - Dst: Error::new
      Src: /src/opendal/core/services/obs/src/backend.rs:443,1
    - Dst: Err
      Src: /src/opendal/core/services/obs/src/backend.rs:447,1
    - Dst: Error::new
      Src: /src/opendal/core/services/obs/src/backend.rs:447,1
    - Dst: sign_query
      Src: /src/opendal/core/services/obs/src/backend.rs:453,1
    - Dst: OpStat::expire
      Src: /src/opendal/core/services/obs/src/backend.rs:453,1
    - Dst: into_parts
      Src: /src/opendal/core/services/obs/src/backend.rs:456,1
    - Dst: Ok
      Src: /src/opendal/core/services/obs/src/backend.rs:458,1
    - Dst: RpPresign::new
      Src: /src/opendal/core/services/obs/src/backend.rs:458,1
    - Dst: PresignedRequest::new
      Src: /src/opendal/core/services/obs/src/backend.rs:458,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 34
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpPresign
    constantsTouched: []
    func_position:
      end: 463
      start: 430
    functionDepth: 39
    functionLinenumber: 430
    functionLinenumberEnd: 463
    functionName: ObsBackend::presign
    functionSourceFile: /src/opendal/core/services/obs/src/backend.rs
    functionUses: 0
    functionsReached:
    - sign_query
    - Buffer::new
    - Ok
    - OpStat::operation
    - obs_put_object_request
    - Err
    - Error::new
    - OpStat::expire
    - RpPresign::new
    - obs_get_object_request
    - into_parts
    - PresignedRequest::new
    - obs_head_object_request
    linkageType: ''
    returnType: Result
    signature: 'async fn presign(&self,ctx: &OperationContext,path: &str,args: OpPresign,)
      -> Result<RpPresign>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: rand::rng
      Src: /src/opendal/core/testkit/src/read.rs:48,1
    - Dst: fill_bytes
      Src: /src/opendal/core/testkit/src/read.rs:50,1
    - Dst: Bytes::from
      Src: /src/opendal/core/testkit/src/read.rs:52,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - size
    argTypes:
    - usize
    constantsTouched: []
    func_position:
      end: 55
      start: 47
    functionDepth: 32
    functionLinenumber: 47
    functionLinenumberEnd: 55
    functionName: ReadChecker::new
    functionSourceFile: /src/opendal/core/testkit/src/read.rs
    functionUses: 1
    functionsReached:
    - Bytes::from
    - fill_bytes
    - rand::rng
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(size: usize) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: clone
      Src: /src/opendal/core/testkit/src/read.rs:59,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 60
      start: 58
    functionDepth: 2
    functionLinenumber: 58
    functionLinenumberEnd: 60
    functionName: ReadChecker::data
    functionSourceFile: /src/opendal/core/testkit/src/read.rs
    functionUses: 0
    functionsReached:
    - clone
    linkageType: ''
    returnType: Bytes
    signature: pub fn data(&self) -> Bytes
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::is_empty
      Src: /src/opendal/core/testkit/src/read.rs:76,1
    - Dst: Result::len
      Src: /src/opendal/core/testkit/src/read.rs:92,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 27
    argCount: 3
    argNames:
    - offset
    - size
    - output
    argTypes:
    - usize
    - usize
    - '&[u8]'
    constantsTouched: []
    func_position:
      end: 101
      start: 66
    functionDepth: 4
    functionLinenumber: 66
    functionLinenumberEnd: 101
    functionName: ReadChecker::check_read
    functionSourceFile: /src/opendal/core/testkit/src/read.rs
    functionUses: 1
    functionsReached:
    - Result::is_empty
    - Result::len
    linkageType: ''
    returnType: void
    signature: 'fn check_read(&self, offset: usize, size: usize, output: &[u8])'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::read
      Src: /src/opendal/core/testkit/src/read.rs:110,1
    - Dst: expect
      Src: /src/opendal/core/testkit/src/read.rs:110,1
    - Dst: ReadChecker::check_read
      Src: /src/opendal/core/testkit/src/read.rs:114,1
    - Dst: Result::to_bytes
      Src: /src/opendal/core/testkit/src/read.rs:114,1
    - Dst: Bytes::as_ref
      Src: /src/opendal/core/testkit/src/read.rs:114,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 22
    argCount: 2
    argNames:
    - r
    - actions
    argTypes:
    - Reader
    - '&[ReadAction]'
    constantsTouched: []
    func_position:
      end: 118
      start: 106
    functionDepth: 31
    functionLinenumber: 106
    functionLinenumberEnd: 118
    functionName: ReadChecker::check
    functionSourceFile: /src/opendal/core/testkit/src/read.rs
    functionUses: 0
    functionsReached:
    - Result::read
    - ReadChecker::check_read
    - expect
    - Result::to_bytes
    - Bytes::as_ref
    linkageType: ''
    returnType: void
    signature: 'pub async fn check(&mut self, r: Reader, actions: &[ReadAction])'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: dotenvy::dotenv
      Src: /src/opendal/core/testkit/src/utils.rs:58,1
    - Dst: env::var
      Src: /src/opendal/core/testkit/src/utils.rs:60,1
    - Dst: Ok
      Src: /src/opendal/core/testkit/src/utils.rs:63,1
    - Dst: replace
      Src: /src/opendal/core/testkit/src/utils.rs:67,1
    - Dst: env::vars
      Src: /src/opendal/core/testkit/src/utils.rs:71,1
    - Dst: filter_map
      Src: /src/opendal/core/testkit/src/utils.rs:71,1
    - Dst: Result::to_lowercase
      Src: /src/opendal/core/testkit/src/utils.rs:73,1
    - Dst: strip_prefix
      Src: /src/opendal/core/testkit/src/utils.rs:73,1
    - Dst: map
      Src: /src/opendal/core/testkit/src/utils.rs:73,1
    - Dst: Result::to_string
      Src: /src/opendal/core/testkit/src/utils.rs:75,1
    - Dst: "filter_map(|(k, v)| {\n            k.to_lowercase()\n                .strip_prefix(&prefix)\n\
        \                .map(|k| (k.to_string(), v))\n        })\n        .collect::<HashMap<String,\
        \ String>>"
      Src: /src/opendal/core/testkit/src/utils.rs:71,1
    - Dst: env::var
      Src: /src/opendal/core/testkit/src/utils.rs:80,1
    - Dst: unwrap_or_default
      Src: /src/opendal/core/testkit/src/utils.rs:80,1
    - Dst: insert
      Src: /src/opendal/core/testkit/src/utils.rs:87,1
    - Dst: '&str::to_string'
      Src: /src/opendal/core/testkit/src/utils.rs:87,1
    - Dst: replace
      Src: /src/opendal/core/testkit/src/utils.rs:91,1
    - Dst: Operator::via_iter
      Src: /src/opendal/core/testkit/src/utils.rs:92,1
    - Dst: Result::expect
      Src: /src/opendal/core/testkit/src/utils.rs:92,1
    - Dst: env::var
      Src: /src/opendal/core/testkit/src/utils.rs:94,1
    - Dst: layer
      Src: /src/opendal/core/testkit/src/utils.rs:95,1
    - Dst: CapabilityOverrideLayer::from_overrides
      Src: /src/opendal/core/testkit/src/utils.rs:95,1
    - Dst: layer
      Src: /src/opendal/core/testkit/src/utils.rs:98,1
    - Dst: LoggingLayer::default
      Src: /src/opendal/core/testkit/src/utils.rs:99,1
    - Dst: ThrottleAccessor::layer
      Src: /src/opendal/core/testkit/src/utils.rs:98,1
    - Dst: TimeoutLayer::new
      Src: /src/opendal/core/testkit/src/utils.rs:100,1
    - Dst: ThrottleAccessor::layer
      Src: /src/opendal/core/testkit/src/utils.rs:98,1
    - Dst: RetryLayer::new
      Src: /src/opendal/core/testkit/src/utils.rs:101,1
    - Dst: Self::with_max_times
      Src: /src/opendal/core/testkit/src/utils.rs:101,1
    - Dst: Ok
      Src: /src/opendal/core/testkit/src/utils.rs:103,1
    - Dst: Some
      Src: /src/opendal/core/testkit/src/utils.rs:103,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 65
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 104
      start: 57
    functionDepth: 34
    functionLinenumber: 57
    functionLinenumberEnd: 104
    functionName: init_test_service
    functionSourceFile: /src/opendal/core/testkit/src/utils.rs
    functionUses: 3
    functionsReached:
    - Self::with_max_times
    - map
    - filter_map
    - Result::to_string
    - Ok
    - Result::expect
    - env::var
    - '&str::to_string'
    - unwrap_or_default
    - insert
    - dotenvy::dotenv
    - LoggingLayer::default
    - replace
    - RetryLayer::new
    - Some
    - strip_prefix
    - "filter_map(|(k, v)| {\n            k.to_lowercase()\n                .strip_prefix(&prefix)\n\
      \                .map(|k| (k.to_string(), v))\n        })\n        .collect::<HashMap<String,\
      \ String>>"
    - ThrottleAccessor::layer
    - env::vars
    - CapabilityOverrideLayer::from_overrides
    - TimeoutLayer::new
    - Result::to_lowercase
    - layer
    - Operator::via_iter
    linkageType: ''
    returnType: Result
    signature: pub fn init_test_service() -> Result<Option<Operator>>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: rand::rng
      Src: /src/opendal/core/testkit/src/write.rs:45,1
    - Dst: Vec::with_capacity
      Src: /src/opendal/core/testkit/src/write.rs:47,1
    - Dst: Option::len
      Src: /src/opendal/core/testkit/src/write.rs:47,1
    - Dst: fill_bytes
      Src: /src/opendal/core/testkit/src/write.rs:51,1
    - Dst: BufferChunks::push
      Src: /src/opendal/core/testkit/src/write.rs:52,1
    - Dst: Bytes::from
      Src: /src/opendal/core/testkit/src/write.rs:52,1
    - Dst: BufferChunks::iter
      Src: /src/opendal/core/testkit/src/write.rs:55,1
    - Dst: fold
      Src: /src/opendal/core/testkit/src/write.rs:55,1
    - Dst: BytesMut::new
      Src: /src/opendal/core/testkit/src/write.rs:55,1
    - Dst: extend_from_slice
      Src: /src/opendal/core/testkit/src/write.rs:56,1
    - Dst: anyhow::Result::freeze
      Src: /src/opendal/core/testkit/src/write.rs:62,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 26
    argCount: 1
    argNames:
    - size
    argTypes:
    - Vec<usize>
    constantsTouched: []
    func_position:
      end: 64
      start: 44
    functionDepth: 32
    functionLinenumber: 44
    functionLinenumberEnd: 64
    functionName: WriteChecker::new
    functionSourceFile: /src/opendal/core/testkit/src/write.rs
    functionUses: 1
    functionsReached:
    - anyhow::Result::freeze
    - Vec::with_capacity
    - rand::rng
    - BufferChunks::push
    - Bytes::from
    - Option::len
    - BytesMut::new
    - extend_from_slice
    - fill_bytes
    - fold
    - BufferChunks::iter
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(size: Vec<usize>) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 69
      start: 67
    functionDepth: 0
    functionLinenumber: 67
    functionLinenumberEnd: 69
    functionName: WriteChecker::chunks
    functionSourceFile: /src/opendal/core/testkit/src/write.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: '&[Bytes]'
    signature: pub fn chunks(&self) -> &[Bytes]
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: as_ref
      Src: /src/opendal/core/testkit/src/write.rs:73,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - actual
    argTypes:
    - '&[u8]'
    constantsTouched: []
    func_position:
      end: 80
      start: 72
    functionDepth: 1
    functionLinenumber: 72
    functionLinenumberEnd: 80
    functionName: WriteChecker::check
    functionSourceFile: /src/opendal/core/testkit/src/write.rs
    functionUses: 0
    functionsReached:
    - as_ref
    linkageType: ''
    returnType: void
    signature: 'pub fn check(&self, actual: &[u8])'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: init_default_registry
      Src: /src/opendal/core/src/lib.rs:36,1
    - Dst: HttpTransporter::install_default
      Src: /src/opendal/core/src/lib.rs:39,1
    - Dst: opendal_http_transport_reqwest::ReqwestTransport::default
      Src: /src/opendal/core/src/lib.rs:39,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 40
      start: 35
    functionDepth: 35
    functionLinenumber: 35
    functionLinenumberEnd: 40
    functionName: install_default
    functionSourceFile: /src/opendal/core/src/lib.rs
    functionUses: 3
    functionsReached:
    - init_default_registry
    - HttpTransporter::install_default
    - opendal_http_transport_reqwest::ReqwestTransport::default
    linkageType: ''
    returnType: void
    signature: pub fn install_default()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: call_once
      Src: /src/opendal/core/src/lib.rs:55,1
    - Dst: init_default_registry_inner
      Src: /src/opendal/core/src/lib.rs:55,1
    - Dst: OperatorRegistry::get
      Src: /src/opendal/core/src/lib.rs:55,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 56
      start: 53
    functionDepth: 2
    functionLinenumber: 53
    functionLinenumberEnd: 56
    functionName: init_default_registry
    functionSourceFile: /src/opendal/core/src/lib.rs
    functionUses: 4
    functionsReached:
    - init_default_registry_inner
    - OperatorRegistry::get
    - call_once
    linkageType: ''
    returnType: void
    signature: pub fn init_default_registry()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: opendal_core::services::register_memory_service
      Src: /src/opendal/core/src/lib.rs:59,1
    - Dst: opendal_service_aliyun_drive::register_aliyun_drive_service
      Src: /src/opendal/core/src/lib.rs:62,1
    - Dst: opendal_service_alluxio::register_alluxio_service
      Src: /src/opendal/core/src/lib.rs:65,1
    - Dst: opendal_service_azblob::register_azblob_service
      Src: /src/opendal/core/src/lib.rs:68,1
    - Dst: opendal_service_azdls::register_azdls_service
      Src: /src/opendal/core/src/lib.rs:71,1
    - Dst: opendal_service_azfile::register_azfile_service
      Src: /src/opendal/core/src/lib.rs:74,1
    - Dst: opendal_service_b2::register_b2_service
      Src: /src/opendal/core/src/lib.rs:77,1
    - Dst: opendal_service_cacache::register_cacache_service
      Src: /src/opendal/core/src/lib.rs:80,1
    - Dst: opendal_service_cloudflare_kv::register_cloudflare_kv_service
      Src: /src/opendal/core/src/lib.rs:83,1
    - Dst: opendal_service_compfs::register_compfs_service
      Src: /src/opendal/core/src/lib.rs:86,1
    - Dst: opendal_service_cos::register_cos_service
      Src: /src/opendal/core/src/lib.rs:89,1
    - Dst: opendal_service_d1::register_d1_service
      Src: /src/opendal/core/src/lib.rs:92,1
    - Dst: opendal_service_dashmap::register_dashmap_service
      Src: /src/opendal/core/src/lib.rs:95,1
    - Dst: opendal_service_dbfs::register_dbfs_service
      Src: /src/opendal/core/src/lib.rs:98,1
    - Dst: opendal_service_dropbox::register_dropbox_service
      Src: /src/opendal/core/src/lib.rs:101,1
    - Dst: opendal_service_etcd::register_etcd_service
      Src: /src/opendal/core/src/lib.rs:104,1
    - Dst: opendal_service_foundationdb::register_foundationdb_service
      Src: /src/opendal/core/src/lib.rs:107,1
    - Dst: opendal_service_foyer::register_foyer_service
      Src: /src/opendal/core/src/lib.rs:110,1
    - Dst: opendal_service_fs::register_fs_service
      Src: /src/opendal/core/src/lib.rs:113,1
    - Dst: opendal_service_ftp::register_ftp_service
      Src: /src/opendal/core/src/lib.rs:116,1
    - Dst: opendal_service_gcs::register_gcs_service
      Src: /src/opendal/core/src/lib.rs:119,1
    - Dst: opendal_service_gdrive::register_gdrive_service
      Src: /src/opendal/core/src/lib.rs:122,1
    - Dst: opendal_service_ghac::register_ghac_service
      Src: /src/opendal/core/src/lib.rs:125,1
    - Dst: opendal_service_github::register_github_service
      Src: /src/opendal/core/src/lib.rs:128,1
    - Dst: opendal_service_goosefs::register_goosefs_service
      Src: /src/opendal/core/src/lib.rs:131,1
    - Dst: opendal_service_gridfs::register_gridfs_service
      Src: /src/opendal/core/src/lib.rs:134,1
    - Dst: opendal_service_hdfs::register_hdfs_service
      Src: /src/opendal/core/src/lib.rs:137,1
    - Dst: opendal_service_hdfs_native::register_hdfs_native_service
      Src: /src/opendal/core/src/lib.rs:140,1
    - Dst: opendal_service_http::register_http_service
      Src: /src/opendal/core/src/lib.rs:143,1
    - Dst: opendal_service_hf::register_hf_service
      Src: /src/opendal/core/src/lib.rs:146,1
    - Dst: opendal_service_ipfs::register_ipfs_service
      Src: /src/opendal/core/src/lib.rs:149,1
    - Dst: opendal_service_ipmfs::register_ipmfs_service
      Src: /src/opendal/core/src/lib.rs:152,1
    - Dst: opendal_service_koofr::register_koofr_service
      Src: /src/opendal/core/src/lib.rs:155,1
    - Dst: opendal_service_lakefs::register_lakefs_service
      Src: /src/opendal/core/src/lib.rs:158,1
    - Dst: opendal_service_memcached::register_memcached_service
      Src: /src/opendal/core/src/lib.rs:161,1
    - Dst: opendal_service_mini_moka::register_mini_moka_service
      Src: /src/opendal/core/src/lib.rs:164,1
    - Dst: opendal_service_moka::register_moka_service
      Src: /src/opendal/core/src/lib.rs:167,1
    - Dst: opendal_service_mongodb::register_mongodb_service
      Src: /src/opendal/core/src/lib.rs:170,1
    - Dst: opendal_service_monoiofs::register_monoiofs_service
      Src: /src/opendal/core/src/lib.rs:173,1
    - Dst: opendal_service_mysql::register_mysql_service
      Src: /src/opendal/core/src/lib.rs:176,1
    - Dst: opendal_service_obs::register_obs_service
      Src: /src/opendal/core/src/lib.rs:179,1
    - Dst: opendal_service_onedrive::register_onedrive_service
      Src: /src/opendal/core/src/lib.rs:182,1
    - Dst: opendal_service_oss::register_oss_service
      Src: /src/opendal/core/src/lib.rs:185,1
    - Dst: opendal_service_pcloud::register_pcloud_service
      Src: /src/opendal/core/src/lib.rs:188,1
    - Dst: opendal_service_persy::register_persy_service
      Src: /src/opendal/core/src/lib.rs:191,1
    - Dst: opendal_service_postgresql::register_postgresql_service
      Src: /src/opendal/core/src/lib.rs:194,1
    - Dst: opendal_service_redb::register_redb_service
      Src: /src/opendal/core/src/lib.rs:197,1
    - Dst: opendal_service_rocksdb::register_rocksdb_service
      Src: /src/opendal/core/src/lib.rs:200,1
    - Dst: opendal_service_s3::register_s3_service
      Src: /src/opendal/core/src/lib.rs:203,1
    - Dst: opendal_service_seafile::register_seafile_service
      Src: /src/opendal/core/src/lib.rs:206,1
    - Dst: opendal_service_sftp::register_sftp_service
      Src: /src/opendal/core/src/lib.rs:209,1
    - Dst: opendal_service_sled::register_sled_service
      Src: /src/opendal/core/src/lib.rs:212,1
    - Dst: opendal_service_sqlite::register_sqlite_service
      Src: /src/opendal/core/src/lib.rs:215,1
    - Dst: opendal_service_surrealdb::register_surrealdb_service
      Src: /src/opendal/core/src/lib.rs:218,1
    - Dst: opendal_service_swift::register_swift_service
      Src: /src/opendal/core/src/lib.rs:221,1
    - Dst: opendal_service_tikv::register_tikv_service
      Src: /src/opendal/core/src/lib.rs:224,1
    - Dst: opendal_service_tos::register_tos_service
      Src: /src/opendal/core/src/lib.rs:227,1
    - Dst: opendal_service_upyun::register_upyun_service
      Src: /src/opendal/core/src/lib.rs:230,1
    - Dst: opendal_service_vercel_artifacts::register_vercel_artifacts_service
      Src: /src/opendal/core/src/lib.rs:233,1
    - Dst: opendal_service_vercel_blob::register_vercel_blob_service
      Src: /src/opendal/core/src/lib.rs:236,1
    - Dst: opendal_service_webdav::register_webdav_service
      Src: /src/opendal/core/src/lib.rs:239,1
    - Dst: opendal_service_webhdfs::register_webhdfs_service
      Src: /src/opendal/core/src/lib.rs:242,1
    - Dst: opendal_service_yandex_disk::register_yandex_disk_service
      Src: /src/opendal/core/src/lib.rs:245,1
    - Dst: opendal_service_opfs::register_opfs_service
      Src: /src/opendal/core/src/lib.rs:248,1
    - Dst: opendal_service_redis::register_redis_service
      Src: /src/opendal/core/src/lib.rs:251,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 130
    argCount: 1
    argNames:
    - registry
    argTypes:
    - '&OperatorRegistry'
    constantsTouched: []
    func_position:
      end: 252
      start: 58
    functionDepth: 1
    functionLinenumber: 58
    functionLinenumberEnd: 252
    functionName: init_default_registry_inner
    functionSourceFile: /src/opendal/core/src/lib.rs
    functionUses: 1
    functionsReached:
    - opendal_service_ftp::register_ftp_service
    - opendal_service_b2::register_b2_service
    - opendal_service_swift::register_swift_service
    - opendal_service_koofr::register_koofr_service
    - opendal_service_goosefs::register_goosefs_service
    - opendal_service_dropbox::register_dropbox_service
    - opendal_service_d1::register_d1_service
    - opendal_service_sftp::register_sftp_service
    - opendal_service_yandex_disk::register_yandex_disk_service
    - opendal_service_azblob::register_azblob_service
    - opendal_service_alluxio::register_alluxio_service
    - opendal_service_gcs::register_gcs_service
    - opendal_service_oss::register_oss_service
    - opendal_service_webhdfs::register_webhdfs_service
    - opendal_service_github::register_github_service
    - opendal_service_mysql::register_mysql_service
    - opendal_service_postgresql::register_postgresql_service
    - opendal_service_upyun::register_upyun_service
    - opendal_service_hdfs_native::register_hdfs_native_service
    - opendal_service_http::register_http_service
    - opendal_service_foundationdb::register_foundationdb_service
    - opendal_service_tos::register_tos_service
    - opendal_service_s3::register_s3_service
    - opendal_service_sled::register_sled_service
    - opendal_service_gdrive::register_gdrive_service
    - opendal_service_cos::register_cos_service
    - opendal_service_sqlite::register_sqlite_service
    - opendal_service_vercel_artifacts::register_vercel_artifacts_service
    - opendal_service_aliyun_drive::register_aliyun_drive_service
    - opendal_service_dbfs::register_dbfs_service
    - opendal_service_surrealdb::register_surrealdb_service
    - opendal_service_mini_moka::register_mini_moka_service
    - opendal_service_memcached::register_memcached_service
    - opendal_service_hf::register_hf_service
    - opendal_service_rocksdb::register_rocksdb_service
    - opendal_service_onedrive::register_onedrive_service
    - opendal_service_webdav::register_webdav_service
    - opendal_service_redis::register_redis_service
    - opendal_service_persy::register_persy_service
    - opendal_service_redb::register_redb_service
    - opendal_service_opfs::register_opfs_service
    - opendal_service_mongodb::register_mongodb_service
    - opendal_service_dashmap::register_dashmap_service
    - opendal_service_lakefs::register_lakefs_service
    - opendal_service_hdfs::register_hdfs_service
    - opendal_service_seafile::register_seafile_service
    - opendal_core::services::register_memory_service
    - opendal_service_cacache::register_cacache_service
    - opendal_service_fs::register_fs_service
    - opendal_service_ipfs::register_ipfs_service
    - opendal_service_azfile::register_azfile_service
    - opendal_service_ipmfs::register_ipmfs_service
    - opendal_service_monoiofs::register_monoiofs_service
    - opendal_service_obs::register_obs_service
    - opendal_service_etcd::register_etcd_service
    - opendal_service_compfs::register_compfs_service
    - opendal_service_pcloud::register_pcloud_service
    - opendal_service_gridfs::register_gridfs_service
    - opendal_service_moka::register_moka_service
    - opendal_service_tikv::register_tikv_service
    - opendal_service_ghac::register_ghac_service
    - opendal_service_azdls::register_azdls_service
    - opendal_service_foyer::register_foyer_service
    - opendal_service_cloudflare_kv::register_cloudflare_kv_service
    - opendal_service_vercel_blob::register_vercel_blob_service
    linkageType: ''
    returnType: void
    signature: 'fn init_default_registry_inner(registry: &OperatorRegistry)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: install_default
      Src: /src/opendal/core/src/lib.rs:257,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 258
      start: 256
    functionDepth: 36
    functionLinenumber: 256
    functionLinenumberEnd: 258
    functionName: register_default_operator_registry
    functionSourceFile: /src/opendal/core/src/lib.rs
    functionUses: 0
    functionsReached:
    - install_default
    linkageType: ''
    returnType: void
    signature: fn register_default_operator_registry()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::debug_struct
      Src: /src/opendal/core/http-transports/reqwest/src/lib.rs:95,1
    - Dst: finish
      Src: /src/opendal/core/http-transports/reqwest/src/lib.rs:95,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - f
    argTypes:
    - '&mut Formatter<''_>'
    constantsTouched: []
    func_position:
      end: 96
      start: 94
    functionDepth: 3
    functionLinenumber: 94
    functionLinenumberEnd: 96
    functionName: ReqwestTransport::fmt
    functionSourceFile: /src/opendal/core/http-transports/reqwest/src/lib.rs
    functionUses: 0
    functionsReached:
    - finish
    - Result::debug_struct
    linkageType: ''
    returnType: std::fmt::Result
    signature: 'fn fmt(&self, f: &mut Formatter<''_>) -> std::fmt::Result'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self::new
      Src: /src/opendal/core/http-transports/reqwest/src/lib.rs:101,1
    - Dst: clone
      Src: /src/opendal/core/http-transports/reqwest/src/lib.rs:101,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 102
      start: 100
    functionDepth: 2
    functionLinenumber: 100
    functionLinenumberEnd: 102
    functionName: ReqwestTransport::default
    functionSourceFile: /src/opendal/core/http-transports/reqwest/src/lib.rs
    functionUses: 4
    functionsReached:
    - clone
    - Self::new
    linkageType: ''
    returnType: Self
    signature: fn default() -> Self
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self::new
      Src: /src/opendal/core/http-transports/reqwest/src/lib.rs:107,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - client
    argTypes:
    - reqwest::Client
    constantsTouched: []
    func_position:
      end: 108
      start: 106
    functionDepth: 2
    functionLinenumber: 106
    functionLinenumberEnd: 108
    functionName: ReqwestTransport::from
    functionSourceFile: /src/opendal/core/http-transports/reqwest/src/lib.rs
    functionUses: 1
    functionsReached:
    - Self::new
    linkageType: ''
    returnType: Self
    signature: 'fn from(client: reqwest::Client) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - client
    argTypes:
    - reqwest::Client
    constantsTouched: []
    func_position:
      end: 115
      start: 113
    functionDepth: 0
    functionLinenumber: 113
    functionLinenumberEnd: 115
    functionName: ReqwestTransport::new
    functionSourceFile: /src/opendal/core/http-transports/reqwest/src/lib.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(client: reqwest::Client) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Request<Buffer>::uri
      Src: /src/opendal/core/http-transports/reqwest/src/lib.rs:122,1
    - Dst: Result::clone
      Src: /src/opendal/core/http-transports/reqwest/src/lib.rs:122,1
    - Dst: Request<Buffer>::method
      Src: /src/opendal/core/http-transports/reqwest/src/lib.rs:123,1
    - Dst: Request<Buffer>::into_parts
      Src: /src/opendal/core/http-transports/reqwest/src/lib.rs:125,1
    - Dst: reqwest::Url::parse
      Src: /src/opendal/core/http-transports/reqwest/src/lib.rs:127,1
    - Dst: Result::to_string
      Src: /src/opendal/core/http-transports/reqwest/src/lib.rs:127,1
    - Dst: Result::map_err
      Src: /src/opendal/core/http-transports/reqwest/src/lib.rs:127,1
    - Dst: Error::new
      Src: /src/opendal/core/http-transports/reqwest/src/lib.rs:128,1
    - Dst: Self::with_operation
      Src: /src/opendal/core/http-transports/reqwest/src/lib.rs:128,1
    - Dst: Self::with_context
      Src: /src/opendal/core/http-transports/reqwest/src/lib.rs:128,1
    - Dst: Result::to_string
      Src: /src/opendal/core/http-transports/reqwest/src/lib.rs:130,1
    - Dst: Self::set_source
      Src: /src/opendal/core/http-transports/reqwest/src/lib.rs:128,1
    - Dst: request
      Src: /src/opendal/core/http-transports/reqwest/src/lib.rs:134,1
    - Dst: headers
      Src: /src/opendal/core/http-transports/reqwest/src/lib.rs:134,1
    - Dst: version
      Src: /src/opendal/core/http-transports/reqwest/src/lib.rs:142,1
    - Dst: is_empty
      Src: /src/opendal/core/http-transports/reqwest/src/lib.rs:146,1
    - Dst: body
      Src: /src/opendal/core/http-transports/reqwest/src/lib.rs:149,1
    - Dst: reqwest::Body::wrap
      Src: /src/opendal/core/http-transports/reqwest/src/lib.rs:149,1
    - Dst: HttpBufferBody
      Src: /src/opendal/core/http-transports/reqwest/src/lib.rs:149,1
    - Dst: body
      Src: /src/opendal/core/http-transports/reqwest/src/lib.rs:153,1
    - Dst: reqwest::Body::from
      Src: /src/opendal/core/http-transports/reqwest/src/lib.rs:153,1
    - Dst: to_bytes
      Src: /src/opendal/core/http-transports/reqwest/src/lib.rs:153,1
    - Dst: send
      Src: /src/opendal/core/http-transports/reqwest/src/lib.rs:157,1
    - Dst: map_err
      Src: /src/opendal/core/http-transports/reqwest/src/lib.rs:157,1
    - Dst: Error::new
      Src: /src/opendal/core/http-transports/reqwest/src/lib.rs:158,1
    - Dst: Self::with_operation
      Src: /src/opendal/core/http-transports/reqwest/src/lib.rs:158,1
    - Dst: Self::with_context
      Src: /src/opendal/core/http-transports/reqwest/src/lib.rs:158,1
    - Dst: Result::to_string
      Src: /src/opendal/core/http-transports/reqwest/src/lib.rs:160,1
    - Dst: Self::with_temporary
      Src: /src/opendal/core/http-transports/reqwest/src/lib.rs:158,1
    - Dst: is_temporary_error
      Src: /src/opendal/core/http-transports/reqwest/src/lib.rs:161,1
    - Dst: Self::set_source
      Src: /src/opendal/core/http-transports/reqwest/src/lib.rs:158,1
    - Dst: opendal_core::raw::parse_content_encoding
      Src: /src/opendal/core/http-transports/reqwest/src/lib.rs:169,1
    - Dst: headers
      Src: /src/opendal/core/http-transports/reqwest/src/lib.rs:169,1
    - Dst: is_some
      Src: /src/opendal/core/http-transports/reqwest/src/lib.rs:169,1
    - Dst: opendal_core::raw::parse_content_length
      Src: /src/opendal/core/http-transports/reqwest/src/lib.rs:172,1
    - Dst: headers
      Src: /src/opendal/core/http-transports/reqwest/src/lib.rs:172,1
    - Dst: Response::builder
      Src: /src/opendal/core/http-transports/reqwest/src/lib.rs:175,1
    - Dst: OtelMetricsLayerBuilder::status
      Src: /src/opendal/core/http-transports/reqwest/src/lib.rs:175,1
    - Dst: status
      Src: /src/opendal/core/http-transports/reqwest/src/lib.rs:176,1
    - Dst: Result::extension
      Src: /src/opendal/core/http-transports/reqwest/src/lib.rs:175,1
    - Dst: Result::clone
      Src: /src/opendal/core/http-transports/reqwest/src/lib.rs:179,1
    - Dst: version
      Src: /src/opendal/core/http-transports/reqwest/src/lib.rs:184,1
    - Dst: version
      Src: /src/opendal/core/http-transports/reqwest/src/lib.rs:184,1
    - Dst: mem::swap
      Src: /src/opendal/core/http-transports/reqwest/src/lib.rs:188,1
    - Dst: headers_mut
      Src: /src/opendal/core/http-transports/reqwest/src/lib.rs:188,1
    - Dst: unwrap
      Src: /src/opendal/core/http-transports/reqwest/src/lib.rs:188,1
    - Dst: headers_mut
      Src: /src/opendal/core/http-transports/reqwest/src/lib.rs:188,1
    - Dst: HttpBody::new
      Src: /src/opendal/core/http-transports/reqwest/src/lib.rs:190,1
    - Dst: bytes_stream
      Src: /src/opendal/core/http-transports/reqwest/src/lib.rs:191,1
    - Dst: try_filter
      Src: /src/opendal/core/http-transports/reqwest/src/lib.rs:191,1
    - Dst: future::ready
      Src: /src/opendal/core/http-transports/reqwest/src/lib.rs:192,1
    - Dst: Result::is_empty
      Src: /src/opendal/core/http-transports/reqwest/src/lib.rs:192,1
    - Dst: map_ok
      Src: /src/opendal/core/http-transports/reqwest/src/lib.rs:191,1
    - Dst: map_err
      Src: /src/opendal/core/http-transports/reqwest/src/lib.rs:191,1
    - Dst: Error::new
      Src: /src/opendal/core/http-transports/reqwest/src/lib.rs:195,1
    - Dst: Self::with_operation
      Src: /src/opendal/core/http-transports/reqwest/src/lib.rs:195,1
    - Dst: Self::with_context
      Src: /src/opendal/core/http-transports/reqwest/src/lib.rs:195,1
    - Dst: Result::to_string
      Src: /src/opendal/core/http-transports/reqwest/src/lib.rs:197,1
    - Dst: Self::with_temporary
      Src: /src/opendal/core/http-transports/reqwest/src/lib.rs:195,1
    - Dst: is_temporary_error
      Src: /src/opendal/core/http-transports/reqwest/src/lib.rs:198,1
    - Dst: Self::set_source
      Src: /src/opendal/core/http-transports/reqwest/src/lib.rs:195,1
    - Dst: body
      Src: /src/opendal/core/http-transports/reqwest/src/lib.rs:204,1
    - Dst: expect
      Src: /src/opendal/core/http-transports/reqwest/src/lib.rs:204,1
    - Dst: Ok
      Src: /src/opendal/core/http-transports/reqwest/src/lib.rs:205,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 146
    argCount: 1
    argNames:
    - req
    argTypes:
    - Request<Buffer>
    constantsTouched: []
    func_position:
      end: 206
      start: 119
    functionDepth: 36
    functionLinenumber: 119
    functionLinenumberEnd: 206
    functionName: ReqwestTransport::fetch
    functionSourceFile: /src/opendal/core/http-transports/reqwest/src/lib.rs
    functionUses: 0
    functionsReached:
    - headers_mut
    - opendal_core::raw::parse_content_length
    - status
    - opendal_core::raw::parse_content_encoding
    - OtelMetricsLayerBuilder::status
    - bytes_stream
    - reqwest::Url::parse
    - Result::is_empty
    - is_some
    - Self::with_context
    - map_ok
    - Result::clone
    - map_err
    - Result::to_string
    - Request<Buffer>::uri
    - Response::builder
    - expect
    - Self::with_temporary
    - Ok
    - unwrap
    - reqwest::Body::wrap
    - try_filter
    - reqwest::Body::from
    - Request<Buffer>::into_parts
    - headers
    - HttpBufferBody
    - Result::map_err
    - HttpBody::new
    - is_empty
    - is_temporary_error
    - Self::set_source
    - to_bytes
    - send
    - Request<Buffer>::method
    - future::ready
    - mem::swap
    - Result::extension
    - body
    - request
    - Error::new
    - Self::with_operation
    - version
    linkageType: ''
    returnType: Result
    signature: 'async fn fetch(&self, req: Request<Buffer>) -> Result<Response<HttpBody>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Error::is_request
      Src: /src/opendal/core/http-transports/reqwest/src/lib.rs:212,1
    - Dst: Error::is_body
      Src: /src/opendal/core/http-transports/reqwest/src/lib.rs:214,1
    - Dst: Error::is_decode
      Src: /src/opendal/core/http-transports/reqwest/src/lib.rs:216,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - err
    argTypes:
    - '&reqwest::Error'
    constantsTouched: []
    func_position:
      end: 217
      start: 210
    functionDepth: 0
    functionLinenumber: 210
    functionLinenumberEnd: 217
    functionName: is_temporary_error
    functionSourceFile: /src/opendal/core/http-transports/reqwest/src/lib.rs
    functionUses: 1
    functionsReached:
    - Error::is_decode
    - Error::is_request
    - Error::is_body
    linkageType: ''
    returnType: bool
    signature: 'fn is_temporary_error(err: &reqwest::Error) -> bool'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: next
      Src: /src/opendal/core/http-transports/reqwest/src/lib.rs:231,1
    - Dst: std::task::Poll::Ready
      Src: /src/opendal/core/http-transports/reqwest/src/lib.rs:232,1
    - Dst: Some
      Src: /src/opendal/core/http-transports/reqwest/src/lib.rs:232,1
    - Dst: Ok
      Src: /src/opendal/core/http-transports/reqwest/src/lib.rs:232,1
    - Dst: http_body::Frame::data
      Src: /src/opendal/core/http-transports/reqwest/src/lib.rs:232,1
    - Dst: std::task::Poll::Ready
      Src: /src/opendal/core/http-transports/reqwest/src/lib.rs:233,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 2
    argNames: []
    argTypes:
    - std::pin::Pin<&mut Self>
    - '&mut std::task::Context<''_>'
    constantsTouched: []
    func_position:
      end: 235
      start: 227
    functionDepth: 2
    functionLinenumber: 227
    functionLinenumberEnd: 235
    functionName: HttpBufferBody::poll_frame
    functionSourceFile: /src/opendal/core/http-transports/reqwest/src/lib.rs
    functionUses: 0
    functionsReached:
    - next
    - http_body::Frame::data
    - Ok
    - Some
    - std::task::Poll::Ready
    linkageType: ''
    returnType: std::task::Poll
    signature: 'fn poll_frame(mut self: std::pin::Pin<&mut Self>,_: &mut std::task::Context<''_>,)
      -> std::task::Poll<Option<Result<http_body::Frame<Self::Data>, Self::Error>>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: is_empty
      Src: /src/opendal/core/http-transports/reqwest/src/lib.rs:238,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 239
      start: 237
    functionDepth: 4
    functionLinenumber: 237
    functionLinenumberEnd: 239
    functionName: HttpBufferBody::is_end_stream
    functionSourceFile: /src/opendal/core/http-transports/reqwest/src/lib.rs
    functionUses: 0
    functionsReached:
    - is_empty
    linkageType: ''
    returnType: bool
    signature: fn is_end_stream(&self) -> bool
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: http_body::SizeHint::with_exact
      Src: /src/opendal/core/http-transports/reqwest/src/lib.rs:242,1
    - Dst: len
      Src: /src/opendal/core/http-transports/reqwest/src/lib.rs:242,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 243
      start: 241
    functionDepth: 3
    functionLinenumber: 241
    functionLinenumberEnd: 243
    functionName: HttpBufferBody::size_hint
    functionSourceFile: /src/opendal/core/http-transports/reqwest/src/lib.rs
    functionUses: 0
    functionsReached:
    - len
    - http_body::SizeHint::with_exact
    linkageType: ''
    returnType: http_body::SizeHint
    signature: fn size_hint(&self) -> http_body::SizeHint
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: ReqwestTransport::default
      Src: /src/opendal/core/http-transports/reqwest/src/lib.rs:253,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 255
      start: 252
    functionDepth: 3
    functionLinenumber: 252
    functionLinenumberEnd: 255
    functionName: tests::test_default_transport_succeeds
    functionSourceFile: /src/opendal/core/http-transports/reqwest/src/lib.rs
    functionUses: 0
    functionsReached:
    - ReqwestTransport::default
    linkageType: ''
    returnType: void
    signature: fn test_default_transport_succeeds()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: reqwest::Client::new
      Src: /src/opendal/core/http-transports/reqwest/src/lib.rs:259,1
    - Dst: ReqwestTransport::from
      Src: /src/opendal/core/http-transports/reqwest/src/lib.rs:260,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 262
      start: 258
    functionDepth: 3
    functionLinenumber: 258
    functionLinenumberEnd: 262
    functionName: tests::test_from_reqwest_client
    functionSourceFile: /src/opendal/core/http-transports/reqwest/src/lib.rs
    functionUses: 0
    functionsReached:
    - reqwest::Client::new
    - ReqwestTransport::from
    linkageType: ''
    returnType: void
    signature: fn test_from_reqwest_client()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: clone
      Src: /src/opendal/core/fuzz/fuzz_reader.rs:45,1
    - Dst: ReadAction::Read
      Src: /src/opendal/core/fuzz/fuzz_reader.rs:47,1
    - Dst: retain
      Src: /src/opendal/core/fuzz/fuzz_reader.rs:48,1
    - Dst: Result::debug_struct
      Src: /src/opendal/core/fuzz/fuzz_reader.rs:50,1
    - Dst: field
      Src: /src/opendal/core/fuzz/fuzz_reader.rs:50,1
    - Dst: field
      Src: /src/opendal/core/fuzz/fuzz_reader.rs:50,1
    - Dst: field
      Src: /src/opendal/core/fuzz/fuzz_reader.rs:50,1
    - Dst: finish
      Src: /src/opendal/core/fuzz/fuzz_reader.rs:50,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 25
    argCount: 1
    argNames:
    - f
    argTypes:
    - '&mut Formatter<''_>'
    constantsTouched: []
    func_position:
      end: 55
      start: 44
    functionDepth: 32
    functionLinenumber: 44
    functionLinenumberEnd: 55
    functionName: FuzzInput::fmt
    functionSourceFile: /src/opendal/core/fuzz/fuzz_reader.rs
    functionUses: 0
    functionsReached:
    - finish
    - field
    - retain
    - clone
    - ReadAction::Read
    - Result::debug_struct
    linkageType: ''
    returnType: std::fmt::Result
    signature: 'fn fmt(&self, f: &mut Formatter<''_>) -> std::fmt::Result'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: '&mut Unstructured<''_>::int_in_range'
      Src: /src/opendal/core/fuzz/fuzz_writer.rs:44,1
    - Dst: Some
      Src: /src/opendal/core/fuzz/fuzz_writer.rs:45,1
    - Dst: '&mut Unstructured<''_>::int_in_range'
      Src: /src/opendal/core/fuzz/fuzz_writer.rs:45,1
    - Dst: '&mut Unstructured<''_>::int_in_range'
      Src: /src/opendal/core/fuzz/fuzz_writer.rs:49,1
    - Dst: Some
      Src: /src/opendal/core/fuzz/fuzz_writer.rs:50,1
    - Dst: '&mut Unstructured<''_>::int_in_range'
      Src: /src/opendal/core/fuzz/fuzz_writer.rs:50,1
    - Dst: '&mut Unstructured<''_>::int_in_range'
      Src: /src/opendal/core/fuzz/fuzz_writer.rs:55,1
    - Dst: '&mut Unstructured<''_>::int_in_range'
      Src: /src/opendal/core/fuzz/fuzz_writer.rs:58,1
    - Dst: push
      Src: /src/opendal/core/fuzz/fuzz_writer.rs:59,1
    - Dst: WriteAction::Write
      Src: /src/opendal/core/fuzz/fuzz_writer.rs:59,1
    - Dst: Ok
      Src: /src/opendal/core/fuzz/fuzz_writer.rs:62,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 41
    argCount: 1
    argNames:
    - u
    argTypes:
    - '&mut Unstructured<''_>'
    constantsTouched: []
    func_position:
      end: 67
      start: 42
    functionDepth: 32
    functionLinenumber: 42
    functionLinenumberEnd: 67
    functionName: FuzzInput::arbitrary
    functionSourceFile: /src/opendal/core/fuzz/fuzz_writer.rs
    functionUses: 0
    functionsReached:
    - Ok
    - push
    - WriteAction::Write
    - Some
    - '&mut Unstructured<''_>::int_in_range'
    linkageType: ''
    returnType: arbitrary::Result
    signature: 'fn arbitrary(u: &mut Unstructured<''_>) -> arbitrary::Result<Self>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: ReadChecker::new
      Src: /src/opendal/core/fuzz/fuzz_reader.rs:81,1
    - Dst: write
      Src: /src/opendal/core/fuzz/fuzz_reader.rs:82,1
    - Dst: Self::data
      Src: /src/opendal/core/fuzz/fuzz_reader.rs:82,1
    - Dst: reader
      Src: /src/opendal/core/fuzz/fuzz_reader.rs:84,1
    - Dst: Self::check
      Src: /src/opendal/core/fuzz/fuzz_reader.rs:86,1
    - Dst: delete
      Src: /src/opendal/core/fuzz/fuzz_reader.rs:88,1
    - Dst: Ok
      Src: /src/opendal/core/fuzz/fuzz_reader.rs:89,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 32
    argCount: 2
    argNames:
    - op
    - input
    argTypes:
    - Operator
    - FuzzInput
    constantsTouched: []
    func_position:
      end: 90
      start: 80
    functionDepth: 33
    functionLinenumber: 80
    functionLinenumberEnd: 90
    functionName: fuzz_reader
    functionSourceFile: /src/opendal/core/fuzz/fuzz_reader.rs
    functionUses: 0
    functionsReached:
    - reader
    - Ok
    - delete
    - Self::data
    - ReadChecker::new
    - write
    - Self::check
    linkageType: ''
    returnType: Result
    signature: 'async fn fuzz_reader(op: Operator, input: FuzzInput) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: uuid::Uuid::new_v4
      Src: /src/opendal/core/fuzz/fuzz_writer.rs:71,1
    - Dst: to_string
      Src: /src/opendal/core/fuzz/fuzz_writer.rs:71,1
    - Dst: iter
      Src: /src/opendal/core/fuzz/fuzz_writer.rs:73,1
    - Dst: map
      Src: /src/opendal/core/fuzz/fuzz_writer.rs:73,1
    - Dst: collect
      Src: /src/opendal/core/fuzz/fuzz_writer.rs:73,1
    - Dst: WriteChecker::new
      Src: /src/opendal/core/fuzz/fuzz_writer.rs:81,1
    - Dst: writer_with
      Src: /src/opendal/core/fuzz/fuzz_writer.rs:83,1
    - Dst: Result::chunk
      Src: /src/opendal/core/fuzz/fuzz_writer.rs:85,1
    - Dst: info
      Src: /src/opendal/core/fuzz/fuzz_writer.rs:86,1
    - Dst: ServiceInfo::capability
      Src: /src/opendal/core/fuzz/fuzz_writer.rs:86,1
    - Dst: Result::chunk
      Src: /src/opendal/core/fuzz/fuzz_writer.rs:87,1
    - Dst: Result::concurrent
      Src: /src/opendal/core/fuzz/fuzz_writer.rs:90,1
    - Dst: Self::chunks
      Src: /src/opendal/core/fuzz/fuzz_writer.rs:95,1
    - Dst: Result::write
      Src: /src/opendal/core/fuzz/fuzz_writer.rs:96,1
    - Dst: Result::clone
      Src: /src/opendal/core/fuzz/fuzz_writer.rs:96,1
    - Dst: Result::close
      Src: /src/opendal/core/fuzz/fuzz_writer.rs:99,1
    - Dst: read
      Src: /src/opendal/core/fuzz/fuzz_writer.rs:101,1
    - Dst: to_bytes
      Src: /src/opendal/core/fuzz/fuzz_writer.rs:101,1
    - Dst: Self::check
      Src: /src/opendal/core/fuzz/fuzz_writer.rs:103,1
    - Dst: delete
      Src: /src/opendal/core/fuzz/fuzz_writer.rs:105,1
    - Dst: Ok
      Src: /src/opendal/core/fuzz/fuzz_writer.rs:106,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 78
    argCount: 2
    argNames:
    - op
    - input
    argTypes:
    - Operator
    - FuzzInput
    constantsTouched: []
    func_position:
      end: 107
      start: 70
    functionDepth: 36
    functionLinenumber: 70
    functionLinenumberEnd: 107
    functionName: fuzz_writer
    functionSourceFile: /src/opendal/core/fuzz/fuzz_writer.rs
    functionUses: 0
    functionsReached:
    - collect
    - map
    - Result::clone
    - iter
    - info
    - Ok
    - delete
    - ServiceInfo::capability
    - uuid::Uuid::new_v4
    - writer_with
    - read
    - Result::concurrent
    - Result::close
    - Self::chunks
    - Result::write
    - Result::chunk
    - to_bytes
    - Self::check
    - to_string
    - WriteChecker::new
    linkageType: ''
    returnType: Result
    signature: 'async fn fuzz_writer(op: Operator, input: FuzzInput) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: logforth::starter_log::stderr
      Src: /src/opendal/core/fuzz/fuzz_writer.rs:2,1
    - Dst: try_apply
      Src: /src/opendal/core/fuzz/fuzz_writer.rs:2,1
    - Dst: clone
      Src: /src/opendal/core/fuzz/fuzz_writer.rs:4,1
    - Dst: info
      Src: /src/opendal/core/fuzz/fuzz_writer.rs:5,1
    - Dst: ServiceInfo::capability
      Src: /src/opendal/core/fuzz/fuzz_writer.rs:5,1
    - Dst: block_on
      Src: /src/opendal/core/fuzz/fuzz_writer.rs:10,1
    - Dst: fuzz_writer
      Src: /src/opendal/core/fuzz/fuzz_writer.rs:11,1
    - Dst: DeleteInput::clone
      Src: /src/opendal/core/fuzz/fuzz_writer.rs:11,1
    - Dst: unwrap_or_else
      Src: /src/opendal/core/fuzz/fuzz_writer.rs:11,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 27
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 135
      start: 121
    functionDepth: 37
    functionLinenumber: 121
    functionLinenumberEnd: 135
    functionName: fuzz_target
    functionSourceFile: /src/opendal/core/fuzz/fuzz_writer.rs
    functionUses: 0
    functionsReached:
    - DeleteInput::clone
    - info
    - ServiceInfo::capability
    - clone
    - logforth::starter_log::stderr
    - try_apply
    - fuzz_writer
    - block_on
    - unwrap_or_else
    linkageType: ''
    returnType: ''
    signature: ''
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: write
      Src: /src/opendal/core/fuzz/fuzz_path.rs:47,1
    - Dst: '&str::as_bytes'
      Src: /src/opendal/core/fuzz/fuzz_path.rs:47,1
    - Dst: stat
      Src: /src/opendal/core/fuzz/fuzz_path.rs:48,1
    - Dst: list
      Src: /src/opendal/core/fuzz/fuzz_path.rs:49,1
    - Dst: create_dir
      Src: /src/opendal/core/fuzz/fuzz_path.rs:50,1
    - Dst: copy
      Src: /src/opendal/core/fuzz/fuzz_path.rs:51,1
    - Dst: rename
      Src: /src/opendal/core/fuzz/fuzz_path.rs:52,1
    - Dst: delete
      Src: /src/opendal/core/fuzz/fuzz_path.rs:53,1
    - Dst: delete
      Src: /src/opendal/core/fuzz/fuzz_path.rs:54,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 46
    argCount: 2
    argNames:
    - op
    - input
    argTypes:
    - Operator
    - FuzzInput
    constantsTouched: []
    func_position:
      end: 55
      start: 46
    functionDepth: 36
    functionLinenumber: 46
    functionLinenumberEnd: 55
    functionName: fuzz_path
    functionSourceFile: /src/opendal/core/fuzz/fuzz_path.rs
    functionUses: 0
    functionsReached:
    - delete
    - rename
    - list
    - create_dir
    - '&str::as_bytes'
    - copy
    - write
    - stat
    linkageType: ''
    returnType: void
    signature: 'async fn fuzz_path(op: Operator, input: FuzzInput)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: write
      Src: /src/opendal/core/examples/basic/src/main.rs:23,1
    - Dst: read
      Src: /src/opendal/core/examples/basic/src/main.rs:27,1
    - Dst: stat
      Src: /src/opendal/core/examples/basic/src/main.rs:32,1
    - Dst: delete
      Src: /src/opendal/core/examples/basic/src/main.rs:36,1
    - Dst: Ok
      Src: /src/opendal/core/examples/basic/src/main.rs:39,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 24
    argCount: 1
    argNames:
    - op
    argTypes:
    - Operator
    constantsTouched: []
    func_position:
      end: 40
      start: 21
    functionDepth: 36
    functionLinenumber: 21
    functionLinenumberEnd: 40
    functionName: example
    functionSourceFile: /src/opendal/core/examples/basic/src/main.rs
    functionUses: 0
    functionsReached:
    - read
    - Ok
    - delete
    - write
    - stat
    linkageType: ''
    returnType: Result
    signature: 'async fn example(op: Operator) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::benchmark_group
      Src: /src/opendal/core/benches/vs_s3/src/main.rs:66,1
    - Dst: Result::throughput
      Src: /src/opendal/core/benches/vs_s3/src/main.rs:67,1
    - Dst: criterion::Throughput::Bytes
      Src: /src/opendal/core/benches/vs_s3/src/main.rs:67,1
    - Dst: block_on
      Src: /src/opendal/core/benches/vs_s3/src/main.rs:69,1
    - Dst: prepare
      Src: /src/opendal/core/benches/vs_s3/src/main.rs:69,1
    - Dst: Result::bench_function
      Src: /src/opendal/core/benches/vs_s3/src/main.rs:71,1
    - Dst: Timestamp::to_async
      Src: /src/opendal/core/benches/vs_s3/src/main.rs:72,1
    - Dst: iter
      Src: /src/opendal/core/benches/vs_s3/src/main.rs:72,1
    - Dst: reader
      Src: /src/opendal/core/benches/vs_s3/src/main.rs:73,1
    - Dst: unwrap
      Src: /src/opendal/core/benches/vs_s3/src/main.rs:73,1
    - Dst: Result::read
      Src: /src/opendal/core/benches/vs_s3/src/main.rs:74,1
    - Dst: unwrap
      Src: /src/opendal/core/benches/vs_s3/src/main.rs:74,1
    - Dst: Result::bench_function
      Src: /src/opendal/core/benches/vs_s3/src/main.rs:77,1
    - Dst: Timestamp::to_async
      Src: /src/opendal/core/benches/vs_s3/src/main.rs:78,1
    - Dst: iter
      Src: /src/opendal/core/benches/vs_s3/src/main.rs:78,1
    - Dst: aws_sdk_s3::Client::get_object
      Src: /src/opendal/core/benches/vs_s3/src/main.rs:79,1
    - Dst: Result::bucket
      Src: /src/opendal/core/benches/vs_s3/src/main.rs:79,1
    - Dst: usize::key
      Src: /src/opendal/core/benches/vs_s3/src/main.rs:79,1
    - Dst: FoyerKey::send
      Src: /src/opendal/core/benches/vs_s3/src/main.rs:79,1
    - Dst: unwrap
      Src: /src/opendal/core/benches/vs_s3/src/main.rs:79,1
    - Dst: into_async_read
      Src: /src/opendal/core/benches/vs_s3/src/main.rs:79,1
    - Dst: Vec::new
      Src: /src/opendal/core/benches/vs_s3/src/main.rs:88,1
    - Dst: Result::read_to_end
      Src: /src/opendal/core/benches/vs_s3/src/main.rs:89,1
    - Dst: unwrap
      Src: /src/opendal/core/benches/vs_s3/src/main.rs:89,1
    - Dst: Result::bench_function
      Src: /src/opendal/core/benches/vs_s3/src/main.rs:93,1
    - Dst: Timestamp::to_async
      Src: /src/opendal/core/benches/vs_s3/src/main.rs:94,1
    - Dst: iter
      Src: /src/opendal/core/benches/vs_s3/src/main.rs:94,1
    - Dst: reader
      Src: /src/opendal/core/benches/vs_s3/src/main.rs:95,1
    - Dst: unwrap
      Src: /src/opendal/core/benches/vs_s3/src/main.rs:95,1
    - Dst: Result::read
      Src: /src/opendal/core/benches/vs_s3/src/main.rs:96,1
    - Dst: unwrap
      Src: /src/opendal/core/benches/vs_s3/src/main.rs:96,1
    - Dst: Result::bench_function
      Src: /src/opendal/core/benches/vs_s3/src/main.rs:99,1
    - Dst: Timestamp::to_async
      Src: /src/opendal/core/benches/vs_s3/src/main.rs:100,1
    - Dst: iter
      Src: /src/opendal/core/benches/vs_s3/src/main.rs:100,1
    - Dst: aws_sdk_s3::Client::get_object
      Src: /src/opendal/core/benches/vs_s3/src/main.rs:101,1
    - Dst: Result::bucket
      Src: /src/opendal/core/benches/vs_s3/src/main.rs:101,1
    - Dst: usize::key
      Src: /src/opendal/core/benches/vs_s3/src/main.rs:101,1
    - Dst: FoyerKey::send
      Src: /src/opendal/core/benches/vs_s3/src/main.rs:101,1
    - Dst: unwrap
      Src: /src/opendal/core/benches/vs_s3/src/main.rs:101,1
    - Dst: into_async_read
      Src: /src/opendal/core/benches/vs_s3/src/main.rs:101,1
    - Dst: Vec::with_capacity
      Src: /src/opendal/core/benches/vs_s3/src/main.rs:110,1
    - Dst: Result::read_to_end
      Src: /src/opendal/core/benches/vs_s3/src/main.rs:111,1
    - Dst: unwrap
      Src: /src/opendal/core/benches/vs_s3/src/main.rs:111,1
    - Dst: Result::finish
      Src: /src/opendal/core/benches/vs_s3/src/main.rs:115,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 131
    argCount: 4
    argNames:
    - c
    - op
    - s3_client
    - bucket
    argTypes:
    - '&mut Criterion'
    - Operator
    - aws_sdk_s3::Client
    - '&str'
    constantsTouched: []
    func_position:
      end: 116
      start: 65
    functionDepth: 31
    functionLinenumber: 65
    functionLinenumberEnd: 116
    functionName: bench_read
    functionSourceFile: /src/opendal/core/benches/vs_s3/src/main.rs
    functionUses: 0
    functionsReached:
    - Vec::with_capacity
    - aws_sdk_s3::Client::get_object
    - Result::finish
    - Result::throughput
    - Vec::new
    - Timestamp::to_async
    - iter
    - reader
    - Result::read
    - unwrap
    - block_on
    - usize::key
    - prepare
    - FoyerKey::send
    - Result::bench_function
    - criterion::Throughput::Bytes
    - Result::bucket
    - Result::benchmark_group
    - into_async_read
    - Result::read_to_end
    linkageType: ''
    returnType: void
    signature: 'fn bench_read(c: &mut Criterion, op: Operator, s3_client: aws_sdk_s3::Client,
      bucket: &str)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: rand::rng
      Src: /src/opendal/core/benches/vs_fs/src/main.rs:75,1
    - Dst: fill_bytes
      Src: /src/opendal/core/benches/vs_fs/src/main.rs:77,1
    - Dst: uuid::Uuid::new_v4
      Src: /src/opendal/core/benches/vs_fs/src/main.rs:79,1
    - Dst: std::fs::write
      Src: /src/opendal/core/benches/vs_fs/src/main.rs:81,1
    - Dst: Result::to_string
      Src: /src/opendal/core/benches/vs_fs/src/main.rs:83,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 84
      start: 74
    functionDepth: 2
    functionLinenumber: 74
    functionLinenumberEnd: 84
    functionName: prepare
    functionSourceFile: /src/opendal/core/benches/vs_fs/src/main.rs
    functionUses: 5
    functionsReached:
    - Result::to_string
    - rand::rng
    - uuid::Uuid::new_v4
    - std::fs::write
    - fill_bytes
    linkageType: ''
    returnType: String
    signature: fn prepare() -> String
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: opendal::tests::init_test_service
      Src: /src/opendal/core/benches/ops/write.rs:37,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/benches/ops/write.rs:37,1
    - Dst: T::unwrap
      Src: /src/opendal/core/benches/ops/write.rs:37,1
    - Dst: uuid::Uuid::new_v4
      Src: /src/opendal/core/benches/ops/write.rs:38,1
    - Dst: to_string
      Src: /src/opendal/core/benches/ops/write.rs:38,1
    - Dst: TempData::existing
      Src: /src/opendal/core/benches/ops/write.rs:39,1
    - Dst: clone
      Src: /src/opendal/core/benches/ops/write.rs:39,1
    - Dst: Timestamp::counter
      Src: /src/opendal/core/benches/ops/write.rs:41,1
    - Dst: BytesCount::from
      Src: /src/opendal/core/benches/ops/write.rs:41,1
    - Dst: Option::bytes
      Src: /src/opendal/core/benches/ops/write.rs:41,1
    - Dst: '&''static Mutex::with_inputs'
      Src: /src/opendal/core/benches/ops/write.rs:41,1
    - Dst: rand::rng
      Src: /src/opendal/core/benches/ops/write.rs:43,1
    - Dst: gen_bytes
      Src: /src/opendal/core/benches/ops/write.rs:44,1
    - Dst: Option::bytes
      Src: /src/opendal/core/benches/ops/write.rs:44,1
    - Dst: bench_values
      Src: /src/opendal/core/benches/ops/write.rs:41,1
    - Dst: clone
      Src: /src/opendal/core/benches/ops/write.rs:47,1
    - Dst: clone
      Src: /src/opendal/core/benches/ops/write.rs:48,1
    - Dst: block_on
      Src: /src/opendal/core/benches/ops/write.rs:49,1
    - Dst: write
      Src: /src/opendal/core/benches/ops/write.rs:50,1
    - Dst: unwrap
      Src: /src/opendal/core/benches/ops/write.rs:50,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 42
    argCount: 2
    argNames:
    - b
    - size
    argTypes:
    - Bencher
    - Size
    constantsTouched: []
    func_position:
      end: 53
      start: 36
    functionDepth: 35
    functionLinenumber: 36
    functionLinenumberEnd: 53
    functionName: whole
    functionSourceFile: /src/opendal/core/benches/ops/write.rs
    functionUses: 0
    functionsReached:
    - to_string
    - opendal::tests::init_test_service
    - Option::bytes
    - BytesCount::from
    - '&''static Mutex::with_inputs'
    - T::unwrap
    - rand::rng
    - uuid::Uuid::new_v4
    - unwrap
    - clone
    - gen_bytes
    - TempData::existing
    - write
    - Result::unwrap
    - Timestamp::counter
    - block_on
    - bench_values
    linkageType: ''
    returnType: void
    signature: 'fn whole(b: Bencher, size: Size)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: opendal::tests::init_test_service
      Src: /src/opendal/core/benches/ops/write.rs:65,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/benches/ops/write.rs:65,1
    - Dst: T::unwrap
      Src: /src/opendal/core/benches/ops/write.rs:65,1
    - Dst: uuid::Uuid::new_v4
      Src: /src/opendal/core/benches/ops/write.rs:66,1
    - Dst: to_string
      Src: /src/opendal/core/benches/ops/write.rs:66,1
    - Dst: TempData::existing
      Src: /src/opendal/core/benches/ops/write.rs:67,1
    - Dst: clone
      Src: /src/opendal/core/benches/ops/write.rs:67,1
    - Dst: rand::rng
      Src: /src/opendal/core/benches/ops/write.rs:68,1
    - Dst: gen_bytes
      Src: /src/opendal/core/benches/ops/write.rs:69,1
    - Dst: Timestamp::counter
      Src: /src/opendal/core/benches/ops/write.rs:71,1
    - Dst: BytesCount::from
      Src: /src/opendal/core/benches/ops/write.rs:71,1
    - Dst: '&''static Mutex::bench'
      Src: /src/opendal/core/benches/ops/write.rs:71,1
    - Dst: clone
      Src: /src/opendal/core/benches/ops/write.rs:72,1
    - Dst: clone
      Src: /src/opendal/core/benches/ops/write.rs:73,1
    - Dst: Result::clone
      Src: /src/opendal/core/benches/ops/write.rs:74,1
    - Dst: block_on
      Src: /src/opendal/core/benches/ops/write.rs:75,1
    - Dst: write
      Src: /src/opendal/core/benches/ops/write.rs:76,1
    - Dst: unwrap
      Src: /src/opendal/core/benches/ops/write.rs:76,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 35
    argCount: 1
    argNames:
    - b
    argTypes:
    - Bencher
    constantsTouched: []
    func_position:
      end: 79
      start: 64
    functionDepth: 35
    functionLinenumber: 64
    functionLinenumberEnd: 79
    functionName: concurrent::baseline
    functionSourceFile: /src/opendal/core/benches/ops/write.rs
    functionUses: 0
    functionsReached:
    - Result::clone
    - to_string
    - opendal::tests::init_test_service
    - BytesCount::from
    - T::unwrap
    - rand::rng
    - uuid::Uuid::new_v4
    - unwrap
    - clone
    - gen_bytes
    - TempData::existing
    - '&''static Mutex::bench'
    - Result::unwrap
    - Timestamp::counter
    - block_on
    - write
    linkageType: ''
    returnType: void
    signature: 'fn baseline(b: Bencher)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: opendal::tests::init_test_service
      Src: /src/opendal/core/benches/ops/write.rs:86,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/benches/ops/write.rs:86,1
    - Dst: T::unwrap
      Src: /src/opendal/core/benches/ops/write.rs:86,1
    - Dst: uuid::Uuid::new_v4
      Src: /src/opendal/core/benches/ops/write.rs:87,1
    - Dst: to_string
      Src: /src/opendal/core/benches/ops/write.rs:87,1
    - Dst: TempData::existing
      Src: /src/opendal/core/benches/ops/write.rs:88,1
    - Dst: clone
      Src: /src/opendal/core/benches/ops/write.rs:88,1
    - Dst: rand::rng
      Src: /src/opendal/core/benches/ops/write.rs:89,1
    - Dst: gen_bytes
      Src: /src/opendal/core/benches/ops/write.rs:90,1
    - Dst: Timestamp::counter
      Src: /src/opendal/core/benches/ops/write.rs:92,1
    - Dst: BytesCount::from
      Src: /src/opendal/core/benches/ops/write.rs:92,1
    - Dst: '&''static Mutex::bench'
      Src: /src/opendal/core/benches/ops/write.rs:92,1
    - Dst: clone
      Src: /src/opendal/core/benches/ops/write.rs:93,1
    - Dst: clone
      Src: /src/opendal/core/benches/ops/write.rs:94,1
    - Dst: Result::clone
      Src: /src/opendal/core/benches/ops/write.rs:95,1
    - Dst: block_on
      Src: /src/opendal/core/benches/ops/write.rs:96,1
    - Dst: write_with
      Src: /src/opendal/core/benches/ops/write.rs:97,1
    - Dst: chunk
      Src: /src/opendal/core/benches/ops/write.rs:97,1
    - Dst: Result::concurrent
      Src: /src/opendal/core/benches/ops/write.rs:97,1
    - Dst: unwrap
      Src: /src/opendal/core/benches/ops/write.rs:97,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 41
    argCount: 2
    argNames:
    - b
    - concurrent
    argTypes:
    - Bencher
    - usize
    constantsTouched: []
    func_position:
      end: 105
      start: 85
    functionDepth: 35
    functionLinenumber: 85
    functionLinenumberEnd: 105
    functionName: concurrent::concurrent
    functionSourceFile: /src/opendal/core/benches/ops/write.rs
    functionUses: 0
    functionsReached:
    - Result::clone
    - to_string
    - opendal::tests::init_test_service
    - BytesCount::from
    - Result::concurrent
    - T::unwrap
    - rand::rng
    - uuid::Uuid::new_v4
    - unwrap
    - clone
    - gen_bytes
    - TempData::existing
    - '&''static Mutex::bench'
    - chunk
    - Result::unwrap
    - write_with
    - Timestamp::counter
    - block_on
    linkageType: ''
    returnType: void
    signature: 'fn concurrent(b: Bencher, concurrent: usize)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: to_string
      Src: /src/opendal/core/benches/ops/utils.rs:39,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - op
    - path
    argTypes:
    - Operator
    - '&str'
    constantsTouched: []
    func_position:
      end: 41
      start: 36
    functionDepth: 2
    functionLinenumber: 36
    functionLinenumberEnd: 41
    functionName: TempData::existing
    functionSourceFile: /src/opendal/core/benches/ops/utils.rs
    functionUses: 3
    functionsReached:
    - to_string
    linkageType: ''
    returnType: Self
    signature: 'pub fn existing(op: Operator, path: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: block_on
      Src: /src/opendal/core/benches/ops/utils.rs:44,1
    - Dst: write
      Src: /src/opendal/core/benches/ops/utils.rs:44,1
    - Dst: expect
      Src: /src/opendal/core/benches/ops/utils.rs:44,1
    - Dst: to_string
      Src: /src/opendal/core/benches/ops/utils.rs:48,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 3
    argNames:
    - op
    - path
    - content
    argTypes:
    - Operator
    - '&str'
    - Bytes
    constantsTouched: []
    func_position:
      end: 50
      start: 43
    functionDepth: 36
    functionLinenumber: 43
    functionLinenumberEnd: 50
    functionName: TempData::generate
    functionSourceFile: /src/opendal/core/benches/ops/utils.rs
    functionUses: 0
    functionsReached:
    - to_string
    - block_on
    - write
    - expect
    linkageType: ''
    returnType: Self
    signature: 'pub fn generate(op: Operator, path: &str, content: Bytes) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: block_on
      Src: /src/opendal/core/benches/ops/utils.rs:55,1
    - Dst: delete
      Src: /src/opendal/core/benches/ops/utils.rs:56,1
    - Dst: expect
      Src: /src/opendal/core/benches/ops/utils.rs:56,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 58
      start: 54
    functionDepth: 32
    functionLinenumber: 54
    functionLinenumberEnd: 58
    functionName: TempData::drop
    functionSourceFile: /src/opendal/core/benches/ops/utils.rs
    functionUses: 0
    functionsReached:
    - block_on
    - expect
    - delete
    linkageType: ''
    returnType: void
    signature: fn drop(&mut self)
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Timestamp::bench
      Src: /src/opendal/core/benches/types/tasks.rs:32,1
    - Dst: block_on
      Src: /src/opendal/core/benches/types/tasks.rs:33,1
    - Dst: tokio::time::sleep
      Src: /src/opendal/core/benches/types/tasks.rs:35,1
    - Dst: Duration::from_millis
      Src: /src/opendal/core/benches/types/tasks.rs:35,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 1
    argNames:
    - b
    argTypes:
    - Bencher
    constantsTouched: []
    func_position:
      end: 39
      start: 31
    functionDepth: 2
    functionLinenumber: 31
    functionLinenumberEnd: 39
    functionName: baseline
    functionSourceFile: /src/opendal/core/benches/types/tasks.rs
    functionUses: 0
    functionsReached:
    - tokio::time::sleep
    - block_on
    - Timestamp::bench
    - Duration::from_millis
    linkageType: ''
    returnType: void
    signature: 'fn baseline(b: Bencher)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Timestamp::with_inputs
      Src: /src/opendal/core/benches/types/tasks.rs:43,1
    - Dst: ConcurrentTasks::new
      Src: /src/opendal/core/benches/types/tasks.rs:44,1
    - Dst: Executor::new
      Src: /src/opendal/core/benches/types/tasks.rs:44,1
    - Dst: Box::pin
      Src: /src/opendal/core/benches/types/tasks.rs:45,1
    - Dst: tokio::time::sleep
      Src: /src/opendal/core/benches/types/tasks.rs:46,1
    - Dst: Duration::from_millis
      Src: /src/opendal/core/benches/types/tasks.rs:46,1
    - Dst: Ok
      Src: /src/opendal/core/benches/types/tasks.rs:47,1
    - Dst: bench_refs
      Src: /src/opendal/core/benches/types/tasks.rs:43,1
    - Dst: block_on
      Src: /src/opendal/core/benches/types/tasks.rs:52,1
    - Dst: execute
      Src: /src/opendal/core/benches/types/tasks.rs:54,1
    - Dst: next
      Src: /src/opendal/core/benches/types/tasks.rs:58,1
    - Dst: is_none
      Src: /src/opendal/core/benches/types/tasks.rs:58,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 39
    argCount: 2
    argNames:
    - b
    - concurrent
    argTypes:
    - Bencher
    - usize
    constantsTouched: []
    func_position:
      end: 64
      start: 42
    functionDepth: 33
    functionLinenumber: 42
    functionLinenumberEnd: 64
    functionName: concurrent
    functionSourceFile: /src/opendal/core/benches/types/tasks.rs
    functionUses: 45
    functionsReached:
    - next
    - is_none
    - bench_refs
    - Timestamp::with_inputs
    - Ok
    - Executor::new
    - tokio::time::sleep
    - ConcurrentTasks::new
    - execute
    - Box::pin
    - block_on
    - Duration::from_millis
    linkageType: ''
    returnType: void
    signature: 'fn concurrent(b: Bencher, concurrent: usize)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Timestamp::with_inputs
      Src: /src/opendal/core/benches/types/buffer.rs:29,1
    - Dst: Bytes::from
      Src: /src/opendal/core/benches/types/buffer.rs:29,1
    - Dst: bench_refs
      Src: /src/opendal/core/benches/types/buffer.rs:29,1
    - Dst: divan::black_box
      Src: /src/opendal/core/benches/types/buffer.rs:31,1
    - Dst: chunk
      Src: /src/opendal/core/benches/types/buffer.rs:31,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 1
    argNames:
    - b
    argTypes:
    - Bencher
    constantsTouched: []
    func_position:
      end: 33
      start: 28
    functionDepth: 32
    functionLinenumber: 28
    functionLinenumberEnd: 33
    functionName: chunk::bytes
    functionSourceFile: /src/opendal/core/benches/types/buffer.rs
    functionUses: 0
    functionsReached:
    - bench_refs
    - Timestamp::with_inputs
    - Bytes::from
    - chunk
    - divan::black_box
    linkageType: ''
    returnType: void
    signature: 'fn bytes(b: Bencher)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Timestamp::with_inputs
      Src: /src/opendal/core/benches/types/buffer.rs:37,1
    - Dst: Buffer::from
      Src: /src/opendal/core/benches/types/buffer.rs:37,1
    - Dst: bench_refs
      Src: /src/opendal/core/benches/types/buffer.rs:37,1
    - Dst: divan::black_box
      Src: /src/opendal/core/benches/types/buffer.rs:39,1
    - Dst: chunk
      Src: /src/opendal/core/benches/types/buffer.rs:39,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 1
    argNames:
    - b
    argTypes:
    - Bencher
    constantsTouched: []
    func_position:
      end: 41
      start: 36
    functionDepth: 40
    functionLinenumber: 36
    functionLinenumberEnd: 41
    functionName: chunk::contiguous
    functionSourceFile: /src/opendal/core/benches/types/buffer.rs
    functionUses: 0
    functionsReached:
    - bench_refs
    - Timestamp::with_inputs
    - chunk
    - Buffer::from
    - divan::black_box
    linkageType: ''
    returnType: void
    signature: 'fn contiguous(b: Bencher)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Timestamp::with_inputs
      Src: /src/opendal/core/benches/types/buffer.rs:45,1
    - Dst: Buffer::from
      Src: /src/opendal/core/benches/types/buffer.rs:45,1
    - Dst: repeat
      Src: /src/opendal/core/benches/types/buffer.rs:45,1
    - Dst: bench_refs
      Src: /src/opendal/core/benches/types/buffer.rs:45,1
    - Dst: divan::black_box
      Src: /src/opendal/core/benches/types/buffer.rs:47,1
    - Dst: chunk
      Src: /src/opendal/core/benches/types/buffer.rs:47,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 15
    argCount: 2
    argNames:
    - b
    - parts
    argTypes:
    - Bencher
    - usize
    constantsTouched: []
    func_position:
      end: 49
      start: 44
    functionDepth: 40
    functionLinenumber: 44
    functionLinenumberEnd: 49
    functionName: chunk::non_contiguous
    functionSourceFile: /src/opendal/core/benches/types/buffer.rs
    functionUses: 0
    functionsReached:
    - bench_refs
    - repeat
    - Timestamp::with_inputs
    - chunk
    - Buffer::from
    - divan::black_box
    linkageType: ''
    returnType: void
    signature: 'fn non_contiguous(b: Bencher, parts: usize)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Timestamp::with_inputs
      Src: /src/opendal/core/benches/types/buffer.rs:57,1
    - Dst: Bytes::from
      Src: /src/opendal/core/benches/types/buffer.rs:57,1
    - Dst: bench_refs
      Src: /src/opendal/core/benches/types/buffer.rs:57,1
    - Dst: advance
      Src: /src/opendal/core/benches/types/buffer.rs:58,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 1
    argNames:
    - b
    argTypes:
    - Bencher
    constantsTouched: []
    func_position:
      end: 59
      start: 56
    functionDepth: 32
    functionLinenumber: 56
    functionLinenumberEnd: 59
    functionName: advance::bytes
    functionSourceFile: /src/opendal/core/benches/types/buffer.rs
    functionUses: 0
    functionsReached:
    - Bytes::from
    - bench_refs
    - Timestamp::with_inputs
    - advance
    linkageType: ''
    returnType: void
    signature: 'fn bytes(b: Bencher)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Timestamp::with_inputs
      Src: /src/opendal/core/benches/types/buffer.rs:63,1
    - Dst: Buffer::from
      Src: /src/opendal/core/benches/types/buffer.rs:63,1
    - Dst: bench_refs
      Src: /src/opendal/core/benches/types/buffer.rs:63,1
    - Dst: advance
      Src: /src/opendal/core/benches/types/buffer.rs:64,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 1
    argNames:
    - b
    argTypes:
    - Bencher
    constantsTouched: []
    func_position:
      end: 65
      start: 62
    functionDepth: 40
    functionLinenumber: 62
    functionLinenumberEnd: 65
    functionName: advance::contiguous
    functionSourceFile: /src/opendal/core/benches/types/buffer.rs
    functionUses: 0
    functionsReached:
    - bench_refs
    - Buffer::from
    - Timestamp::with_inputs
    - advance
    linkageType: ''
    returnType: void
    signature: 'fn contiguous(b: Bencher)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Timestamp::with_inputs
      Src: /src/opendal/core/benches/types/buffer.rs:69,1
    - Dst: Buffer::from
      Src: /src/opendal/core/benches/types/buffer.rs:69,1
    - Dst: repeat
      Src: /src/opendal/core/benches/types/buffer.rs:69,1
    - Dst: bench_refs
      Src: /src/opendal/core/benches/types/buffer.rs:69,1
    - Dst: advance
      Src: /src/opendal/core/benches/types/buffer.rs:70,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 13
    argCount: 2
    argNames:
    - b
    - parts
    argTypes:
    - Bencher
    - usize
    constantsTouched: []
    func_position:
      end: 71
      start: 68
    functionDepth: 40
    functionLinenumber: 68
    functionLinenumberEnd: 71
    functionName: advance::non_contiguous
    functionSourceFile: /src/opendal/core/benches/types/buffer.rs
    functionUses: 0
    functionsReached:
    - bench_refs
    - repeat
    - Timestamp::with_inputs
    - advance
    - Buffer::from
    linkageType: ''
    returnType: void
    signature: 'fn non_contiguous(b: Bencher, parts: usize)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Timestamp::with_inputs
      Src: /src/opendal/core/benches/types/buffer.rs:79,1
    - Dst: Bytes::from
      Src: /src/opendal/core/benches/types/buffer.rs:79,1
    - Dst: bench_refs
      Src: /src/opendal/core/benches/types/buffer.rs:79,1
    - Dst: truncate
      Src: /src/opendal/core/benches/types/buffer.rs:80,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 1
    argNames:
    - b
    argTypes:
    - Bencher
    constantsTouched: []
    func_position:
      end: 81
      start: 78
    functionDepth: 32
    functionLinenumber: 78
    functionLinenumberEnd: 81
    functionName: truncate::bytes
    functionSourceFile: /src/opendal/core/benches/types/buffer.rs
    functionUses: 0
    functionsReached:
    - Bytes::from
    - bench_refs
    - Timestamp::with_inputs
    - truncate
    linkageType: ''
    returnType: void
    signature: 'fn bytes(b: Bencher)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Timestamp::with_inputs
      Src: /src/opendal/core/benches/types/buffer.rs:85,1
    - Dst: Buffer::from
      Src: /src/opendal/core/benches/types/buffer.rs:85,1
    - Dst: bench_refs
      Src: /src/opendal/core/benches/types/buffer.rs:85,1
    - Dst: truncate
      Src: /src/opendal/core/benches/types/buffer.rs:86,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 1
    argNames:
    - b
    argTypes:
    - Bencher
    constantsTouched: []
    func_position:
      end: 87
      start: 84
    functionDepth: 40
    functionLinenumber: 84
    functionLinenumberEnd: 87
    functionName: truncate::contiguous
    functionSourceFile: /src/opendal/core/benches/types/buffer.rs
    functionUses: 0
    functionsReached:
    - bench_refs
    - Buffer::from
    - Timestamp::with_inputs
    - truncate
    linkageType: ''
    returnType: void
    signature: 'fn contiguous(b: Bencher)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Timestamp::with_inputs
      Src: /src/opendal/core/benches/types/buffer.rs:91,1
    - Dst: Buffer::from
      Src: /src/opendal/core/benches/types/buffer.rs:91,1
    - Dst: repeat
      Src: /src/opendal/core/benches/types/buffer.rs:91,1
    - Dst: bench_refs
      Src: /src/opendal/core/benches/types/buffer.rs:91,1
    - Dst: truncate
      Src: /src/opendal/core/benches/types/buffer.rs:92,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 13
    argCount: 2
    argNames:
    - b
    - parts
    argTypes:
    - Bencher
    - usize
    constantsTouched: []
    func_position:
      end: 93
      start: 90
    functionDepth: 40
    functionLinenumber: 90
    functionLinenumberEnd: 93
    functionName: truncate::non_contiguous
    functionSourceFile: /src/opendal/core/benches/types/buffer.rs
    functionUses: 0
    functionsReached:
    - bench_refs
    - truncate
    - repeat
    - Timestamp::with_inputs
    - Buffer::from
    linkageType: ''
    returnType: void
    signature: 'fn non_contiguous(b: Bencher, parts: usize)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Timestamp::with_inputs
      Src: /src/opendal/core/benches/types/buffer.rs:101,1
    - Dst: Buffer::from
      Src: /src/opendal/core/benches/types/buffer.rs:101,1
    - Dst: bench_refs
      Src: /src/opendal/core/benches/types/buffer.rs:101,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - b
    argTypes:
    - Bencher
    constantsTouched: []
    func_position:
      end: 103
      start: 100
    functionDepth: 40
    functionLinenumber: 100
    functionLinenumberEnd: 103
    functionName: iterator::contiguous
    functionSourceFile: /src/opendal/core/benches/types/buffer.rs
    functionUses: 0
    functionsReached:
    - bench_refs
    - Buffer::from
    - Timestamp::with_inputs
    linkageType: ''
    returnType: void
    signature: 'fn contiguous(b: Bencher)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Timestamp::with_inputs
      Src: /src/opendal/core/benches/types/buffer.rs:107,1
    - Dst: Buffer::from
      Src: /src/opendal/core/benches/types/buffer.rs:107,1
    - Dst: repeat
      Src: /src/opendal/core/benches/types/buffer.rs:107,1
    - Dst: bench_refs
      Src: /src/opendal/core/benches/types/buffer.rs:107,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 2
    argNames:
    - b
    - parts
    argTypes:
    - Bencher
    - usize
    constantsTouched: []
    func_position:
      end: 109
      start: 106
    functionDepth: 40
    functionLinenumber: 106
    functionLinenumberEnd: 109
    functionName: iterator::non_contiguous
    functionSourceFile: /src/opendal/core/benches/types/buffer.rs
    functionUses: 0
    functionsReached:
    - repeat
    - bench_refs
    - Buffer::from
    - Timestamp::with_inputs
    linkageType: ''
    returnType: void
    signature: 'fn non_contiguous(b: Bencher, parts: usize)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: services::Fs::default
      Src: /src/opendal/core/benches/vs_fs/src/main.rs:34,1
    - Dst: Self::root
      Src: /src/opendal/core/benches/vs_fs/src/main.rs:34,1
    - Dst: Operator::new
      Src: /src/opendal/core/benches/vs_fs/src/main.rs:35,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/benches/vs_fs/src/main.rs:35,1
    - Dst: tokio::runtime::Runtime::new
      Src: /src/opendal/core/benches/vs_fs/src/main.rs:37,1
    - Dst: Self::unwrap
      Src: /src/opendal/core/benches/vs_fs/src/main.rs:37,1
    - Dst: T::enter
      Src: /src/opendal/core/benches/vs_fs/src/main.rs:38,1
    - Dst: blocking::Operator::new
      Src: /src/opendal/core/benches/vs_fs/src/main.rs:39,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/benches/vs_fs/src/main.rs:39,1
    - Dst: Result::benchmark_group
      Src: /src/opendal/core/benches/vs_fs/src/main.rs:41,1
    - Dst: Result::throughput
      Src: /src/opendal/core/benches/vs_fs/src/main.rs:42,1
    - Dst: criterion::Throughput::Bytes
      Src: /src/opendal/core/benches/vs_fs/src/main.rs:42,1
    - Dst: Result::bench_function
      Src: /src/opendal/core/benches/vs_fs/src/main.rs:44,1
    - Dst: Timestamp::iter
      Src: /src/opendal/core/benches/vs_fs/src/main.rs:46,1
    - Dst: std::fs::read
      Src: /src/opendal/core/benches/vs_fs/src/main.rs:47,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/benches/vs_fs/src/main.rs:47,1
    - Dst: Result::bench_function
      Src: /src/opendal/core/benches/vs_fs/src/main.rs:50,1
    - Dst: prepare
      Src: /src/opendal/core/benches/vs_fs/src/main.rs:51,1
    - Dst: Timestamp::iter
      Src: /src/opendal/core/benches/vs_fs/src/main.rs:52,1
    - Dst: read
      Src: /src/opendal/core/benches/vs_fs/src/main.rs:53,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/benches/vs_fs/src/main.rs:53,1
    - Dst: Result::bench_function
      Src: /src/opendal/core/benches/vs_fs/src/main.rs:56,1
    - Dst: prepare
      Src: /src/opendal/core/benches/vs_fs/src/main.rs:57,1
    - Dst: Timestamp::iter
      Src: /src/opendal/core/benches/vs_fs/src/main.rs:58,1
    - Dst: read_options
      Src: /src/opendal/core/benches/vs_fs/src/main.rs:59,1
    - Dst: into
      Src: /src/opendal/core/benches/vs_fs/src/main.rs:63,1
    - Dst: Default::default
      Src: /src/opendal/core/benches/vs_fs/src/main.rs:64,1
    - Dst: Result::unwrap
      Src: /src/opendal/core/benches/vs_fs/src/main.rs:59,1
    - Dst: Result::finish
      Src: /src/opendal/core/benches/vs_fs/src/main.rs:71,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 72
    argCount: 1
    argNames:
    - c
    argTypes:
    - '&mut Criterion'
    constantsTouched: []
    func_position:
      end: 72
      start: 33
    functionDepth: 32
    functionLinenumber: 33
    functionLinenumberEnd: 72
    functionName: bench_vs_fs
    functionSourceFile: /src/opendal/core/benches/vs_fs/src/main.rs
    functionUses: 0
    functionsReached:
    - Self::unwrap
    - Default::default
    - into
    - Result::finish
    - Result::throughput
    - Result::unwrap
    - read_options
    - Self::root
    - blocking::Operator::new
    - prepare
    - services::Fs::default
    - read
    - tokio::runtime::Runtime::new
    - Result::bench_function
    - criterion::Throughput::Bytes
    - Operator::new
    - Result::benchmark_group
    - std::fs::read
    - Timestamp::iter
    - T::enter
    linkageType: ''
    returnType: void
    signature: 'fn bench_vs_fs(c: &mut Criterion)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: PathBuf::from
      Src: /src/opendal/dev/src/main.rs:26,1
    - Dst: Result::canonicalize
      Src: /src/opendal/dev/src/main.rs:26,1
    - Dst: unwrap
      Src: /src/opendal/dev/src/main.rs:26,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 29
      start: 25
    functionDepth: 32
    functionLinenumber: 25
    functionLinenumberEnd: 29
    functionName: manifest_dir
    functionSourceFile: /src/opendal/dev/src/main.rs
    functionUses: 1
    functionsReached:
    - PathBuf::from
    - Result::canonicalize
    - unwrap
    linkageType: ''
    returnType: PathBuf
    signature: fn manifest_dir() -> PathBuf
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: manifest_dir
      Src: /src/opendal/dev/src/main.rs:32,1
    - Dst: PathBuf::join
      Src: /src/opendal/dev/src/main.rs:32,1
    - Dst: Result::canonicalize
      Src: /src/opendal/dev/src/main.rs:32,1
    - Dst: unwrap
      Src: /src/opendal/dev/src/main.rs:32,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 33
      start: 31
    functionDepth: 33
    functionLinenumber: 31
    functionLinenumberEnd: 33
    functionName: workspace_dir
    functionSourceFile: /src/opendal/dev/src/main.rs
    functionUses: 6
    functionsReached:
    - PathBuf::join
    - Result::canonicalize
    - unwrap
    - manifest_dir
    linkageType: ''
    returnType: PathBuf
    signature: fn workspace_dir() -> PathBuf
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: which::which
      Src: /src/opendal/dev/src/main.rs:36,1
    - Dst: StdCommand::new
      Src: /src/opendal/dev/src/main.rs:38,1
    - Dst: Self::current_dir
      Src: /src/opendal/dev/src/main.rs:39,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - cmd
    - cwd
    argTypes:
    - '&str'
    - impl AsRef<Path>
    constantsTouched: []
    func_position:
      end: 46
      start: 35
    functionDepth: 2
    functionLinenumber: 35
    functionLinenumberEnd: 46
    functionName: find_command
    functionSourceFile: /src/opendal/dev/src/main.rs
    functionUses: 1
    functionsReached:
    - which::which
    - StdCommand::new
    - Self::current_dir
    linkageType: ''
    returnType: StdCommand
    signature: 'fn find_command(cmd: &str, cwd: impl AsRef<Path>) -> StdCommand'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 35
      start: 33
    functionDepth: 0
    functionLinenumber: 33
    functionLinenumberEnd: 35
    functionName: Package::dependencies
    functionSourceFile: /src/opendal/dev/src/release/package.rs
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: '&[Package]'
    signature: pub fn dependencies(&self) -> &[Package]
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 39
      start: 37
    functionDepth: 0
    functionLinenumber: 37
    functionLinenumberEnd: 39
    functionName: Package::name
    functionSourceFile: /src/opendal/dev/src/release/package.rs
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: '&str'
    signature: pub fn name(&self) -> &str
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 47
      start: 41
    functionDepth: 0
    functionLinenumber: 41
    functionLinenumberEnd: 47
    functionName: Package::make_prefix
    functionSourceFile: /src/opendal/dev/src/release/package.rs
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: String
    signature: pub fn make_prefix(&self) -> String
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: to_string
      Src: /src/opendal/dev/src/release/package.rs:51,1
    - Dst: workspace_dir
      Src: /src/opendal/dev/src/release/package.rs:52,1
    - Dst: PathBuf::join
      Src: /src/opendal/dev/src/release/package.rs:52,1
    - Dst: Version::parse
      Src: /src/opendal/dev/src/release/package.rs:53,1
    - Dst: Result::unwrap
      Src: /src/opendal/dev/src/release/package.rs:53,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 3
    argNames:
    - path
    - version
    - dependencies
    argTypes:
    - '&str'
    - '&str'
    - Vec<Package>
    constantsTouched: []
    func_position:
      end: 60
      start: 50
    functionDepth: 34
    functionLinenumber: 50
    functionLinenumberEnd: 60
    functionName: make_package
    functionSourceFile: /src/opendal/dev/src/release/package.rs
    functionUses: 1
    functionsReached:
    - to_string
    - workspace_dir
    - Version::parse
    - PathBuf::join
    - Result::unwrap
    linkageType: ''
    returnType: Package
    signature: 'fn make_package(path: &str, version: &str, dependencies: Vec<Package>)
      -> Package'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: make_package
      Src: /src/opendal/dev/src/release/package.rs:64,1
    - Dst: make_package
      Src: /src/opendal/dev/src/release/package.rs:67,1
    - Dst: make_package
      Src: /src/opendal/dev/src/release/package.rs:68,1
    - Dst: make_package
      Src: /src/opendal/dev/src/release/package.rs:69,1
    - Dst: make_package
      Src: /src/opendal/dev/src/release/package.rs:70,1
    - Dst: make_package
      Src: /src/opendal/dev/src/release/package.rs:75,1
    - Dst: make_package
      Src: /src/opendal/dev/src/release/package.rs:76,1
    - Dst: make_package
      Src: /src/opendal/dev/src/release/package.rs:77,1
    - Dst: make_package
      Src: /src/opendal/dev/src/release/package.rs:78,1
    - Dst: make_package
      Src: /src/opendal/dev/src/release/package.rs:79,1
    - Dst: make_package
      Src: /src/opendal/dev/src/release/package.rs:80,1
    - Dst: make_package
      Src: /src/opendal/dev/src/release/package.rs:81,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 97
      start: 63
    functionDepth: 35
    functionLinenumber: 63
    functionLinenumberEnd: 97
    functionName: all_packages
    functionSourceFile: /src/opendal/dev/src/release/package.rs
    functionUses: 3
    functionsReached:
    - make_package
    linkageType: ''
    returnType: Vec
    signature: pub fn all_packages() -> Vec<Package>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: as_str
      Src: /src/opendal/dev/src/release/package.rs:100,1
    - Dst: update_cargo_version
      Src: /src/opendal/dev/src/release/package.rs:101,1
    - Dst: Package::dependencies
      Src: /src/opendal/dev/src/release/package.rs:101,1
    - Dst: update_cargo_version
      Src: /src/opendal/dev/src/release/package.rs:103,1
    - Dst: Package::dependencies
      Src: /src/opendal/dev/src/release/package.rs:103,1
    - Dst: update_cargo_version
      Src: /src/opendal/dev/src/release/package.rs:106,1
    - Dst: Package::dependencies
      Src: /src/opendal/dev/src/release/package.rs:106,1
    - Dst: update_cargo_version
      Src: /src/opendal/dev/src/release/package.rs:109,1
    - Dst: Package::dependencies
      Src: /src/opendal/dev/src/release/package.rs:109,1
    - Dst: update_cargo_version
      Src: /src/opendal/dev/src/release/package.rs:112,1
    - Dst: Package::dependencies
      Src: /src/opendal/dev/src/release/package.rs:112,1
    - Dst: update_cargo_version
      Src: /src/opendal/dev/src/release/package.rs:119,1
    - Dst: update_cargo_version
      Src: /src/opendal/dev/src/release/package.rs:121,1
    - Dst: Package::dependencies
      Src: /src/opendal/dev/src/release/package.rs:121,1
    - Dst: update_maven_version
      Src: /src/opendal/dev/src/release/package.rs:123,1
    - Dst: update_nodejs_version
      Src: /src/opendal/dev/src/release/package.rs:124,1
    - Dst: update_dotnet_version
      Src: /src/opendal/dev/src/release/package.rs:125,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 69
    argCount: 1
    argNames:
    - package
    argTypes:
    - '&Package'
    constantsTouched: []
    func_position:
      end: 129
      start: 99
    functionDepth: 34
    functionLinenumber: 99
    functionLinenumberEnd: 129
    functionName: update_package_version
    functionSourceFile: /src/opendal/dev/src/release/package.rs
    functionUses: 1
    functionsReached:
    - update_maven_version
    - update_nodejs_version
    - update_cargo_version
    - as_str
    - Package::dependencies
    - update_dotnet_version
    linkageType: ''
    returnType: bool
    signature: 'pub fn update_package_version(package: &Package) -> bool'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: join
      Src: /src/opendal/dev/src/release/package.rs:132,1
    - Dst: std::fs::read_to_string
      Src: /src/opendal/dev/src/release/package.rs:133,1
    - Dst: unwrap
      Src: /src/opendal/dev/src/release/package.rs:133,1
    - Dst: DocumentMut::from_str
      Src: /src/opendal/dev/src/release/package.rs:134,1
    - Dst: Result::as_str
      Src: /src/opendal/dev/src/release/package.rs:134,1
    - Dst: Result::unwrap
      Src: /src/opendal/dev/src/release/package.rs:134,1
    - Dst: update_manifest_version
      Src: /src/opendal/dev/src/release/package.rs:135,1
    - Dst: update_dependency_version
      Src: /src/opendal/dev/src/release/package.rs:138,1
    - Dst: std::fs::write
      Src: /src/opendal/dev/src/release/package.rs:142,1
    - Dst: Result::to_string
      Src: /src/opendal/dev/src/release/package.rs:142,1
    - Dst: Result::unwrap
      Src: /src/opendal/dev/src/release/package.rs:142,1
    - Dst: is_core_workspace_root
      Src: /src/opendal/dev/src/release/package.rs:145,1
    - Dst: sync_workspace_internal_dependency_versions
      Src: /src/opendal/dev/src/release/package.rs:146,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 33
    argCount: 3
    argNames:
    - path
    - version
    - dependencies
    argTypes:
    - '&Path'
    - '&Version'
    - '&[Package]'
    constantsTouched: []
    func_position:
      end: 150
      start: 131
    functionDepth: 33
    functionLinenumber: 131
    functionLinenumberEnd: 150
    functionName: update_cargo_version
    functionSourceFile: /src/opendal/dev/src/release/package.rs
    functionUses: 2
    functionsReached:
    - is_core_workspace_root
    - std::fs::read_to_string
    - Result::to_string
    - join
    - DocumentMut::from_str
    - update_dependency_version
    - unwrap
    - std::fs::write
    - Result::unwrap
    - update_manifest_version
    - Result::as_str
    - sync_workspace_internal_dependency_versions
    linkageType: ''
    returnType: bool
    signature: 'fn update_cargo_version(path: &Path, version: &Version, dependencies:
      &[Package]) -> bool'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: as_str
      Src: /src/opendal/dev/src/release/package.rs:153,1
    - Dst: map
      Src: /src/opendal/dev/src/release/package.rs:153,1
    - Dst: transpose
      Src: /src/opendal/dev/src/release/package.rs:153,1
    - Dst: unwrap
      Src: /src/opendal/dev/src/release/package.rs:153,1
    - Dst: toml_edit::value
      Src: /src/opendal/dev/src/release/package.rs:160,1
    - Dst: Result::to_string
      Src: /src/opendal/dev/src/release/package.rs:160,1
    - Dst: as_str
      Src: /src/opendal/dev/src/release/package.rs:173,1
    - Dst: map
      Src: /src/opendal/dev/src/release/package.rs:173,1
    - Dst: transpose
      Src: /src/opendal/dev/src/release/package.rs:173,1
    - Dst: unwrap
      Src: /src/opendal/dev/src/release/package.rs:173,1
    - Dst: toml_edit::value
      Src: /src/opendal/dev/src/release/package.rs:180,1
    - Dst: Result::to_string
      Src: /src/opendal/dev/src/release/package.rs:180,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 59
    argCount: 3
    argNames:
    - manifest
    - version
    - path
    argTypes:
    - '&mut DocumentMut'
    - '&Version'
    - '&Path'
    constantsTouched: []
    func_position:
      end: 194
      start: 152
    functionDepth: 35
    functionLinenumber: 152
    functionLinenumberEnd: 194
    functionName: update_manifest_version
    functionSourceFile: /src/opendal/dev/src/release/package.rs
    functionUses: 2
    functionsReached:
    - transpose
    - Result::to_string
    - unwrap
    - as_str
    - map
    - toml_edit::value
    linkageType: ''
    returnType: bool
    signature: 'fn update_manifest_version(manifest: &mut DocumentMut, version: &Version,
      path: &Path) -> bool'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: '&Package::crate_name'
      Src: /src/opendal/dev/src/release/package.rs:201,1
    - Dst: update_dependency_version_in_table
      Src: /src/opendal/dev/src/release/package.rs:205,1
    - Dst: Result::as_table_mut
      Src: /src/opendal/dev/src/release/package.rs:206,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 3
    argNames:
    - manifest
    - manifest_dir
    - dependency
    argTypes:
    - '&mut DocumentMut'
    - '&Path'
    - '&Package'
    constantsTouched: []
    func_position:
      end: 211
      start: 196
    functionDepth: 37
    functionLinenumber: 196
    functionLinenumberEnd: 211
    functionName: update_dependency_version
    functionSourceFile: /src/opendal/dev/src/release/package.rs
    functionUses: 1
    functionsReached:
    - Result::as_table_mut
    - update_dependency_version_in_table
    - '&Package::crate_name'
    linkageType: ''
    returnType: bool
    signature: 'fn update_dependency_version(manifest: &mut DocumentMut,manifest_dir:
      &Path,dependency: &Package,) -> bool'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self::get_mut
      Src: /src/opendal/dev/src/release/package.rs:222,1
    - Dst: and_then
      Src: /src/opendal/dev/src/release/package.rs:222,1
    - Dst: update_dependency_version_in_dependencies
      Src: /src/opendal/dev/src/release/package.rs:226,1
    - Dst: Self::get_mut
      Src: /src/opendal/dev/src/release/package.rs:234,1
    - Dst: and_then
      Src: /src/opendal/dev/src/release/package.rs:234,1
    - Dst: iter_mut
      Src: /src/opendal/dev/src/release/package.rs:238,1
    - Dst: Option::as_table_like_mut
      Src: /src/opendal/dev/src/release/package.rs:239,1
    - Dst: update_dependency_version_in_table
      Src: /src/opendal/dev/src/release/package.rs:242,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 27
    argCount: 4
    argNames:
    - table
    - manifest_dir
    - crate_name
    - dependency
    argTypes:
    - '&mut dyn TableLike'
    - '&Path'
    - '&str'
    - '&Package'
    constantsTouched: []
    func_position:
      end: 246
      start: 213
    functionDepth: 36
    functionLinenumber: 213
    functionLinenumberEnd: 246
    functionName: update_dependency_version_in_table
    functionSourceFile: /src/opendal/dev/src/release/package.rs
    functionUses: 2
    functionsReached:
    - Self::get_mut
    - iter_mut
    - and_then
    - update_dependency_version_in_dependencies
    - update_dependency_version_in_table
    - Option::as_table_like_mut
    linkageType: ''
    returnType: bool
    signature: 'fn update_dependency_version_in_table(table: &mut dyn TableLike,manifest_dir:
      &Path,crate_name: &str,dependency: &Package,) -> bool'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: '&[Package]::get_mut'
      Src: /src/opendal/dev/src/release/package.rs:254,1
    - Dst: crate::Entry::as_table_like_mut
      Src: /src/opendal/dev/src/release/package.rs:257,1
    - Dst: crate::Entry::get
      Src: /src/opendal/dev/src/release/package.rs:260,1
    - Dst: Option::and_then
      Src: /src/opendal/dev/src/release/package.rs:260,1
    - Dst: path_points_to
      Src: /src/opendal/dev/src/release/package.rs:263,1
    - Dst: crate::Entry::get_mut
      Src: /src/opendal/dev/src/release/package.rs:266,1
    - Dst: Vec::as_str
      Src: /src/opendal/dev/src/release/package.rs:270,1
    - Dst: Version::parse
      Src: /src/opendal/dev/src/release/package.rs:271,1
    - Dst: toml_edit::value
      Src: /src/opendal/dev/src/release/package.rs:282,1
    - Dst: to_string
      Src: /src/opendal/dev/src/release/package.rs:282,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 46
    argCount: 4
    argNames:
    - dependencies
    - manifest_dir
    - crate_name
    - dependency
    argTypes:
    - '&mut dyn TableLike'
    - '&Path'
    - '&str'
    - '&Package'
    constantsTouched: []
    func_position:
      end: 288
      start: 248
    functionDepth: 35
    functionLinenumber: 248
    functionLinenumberEnd: 288
    functionName: update_dependency_version_in_dependencies
    functionSourceFile: /src/opendal/dev/src/release/package.rs
    functionUses: 1
    functionsReached:
    - crate::Entry::get_mut
    - to_string
    - Vec::as_str
    - '&[Package]::get_mut'
    - path_points_to
    - Version::parse
    - crate::Entry::as_table_like_mut
    - Option::and_then
    - crate::Entry::get
    - toml_edit::value
    linkageType: ''
    returnType: bool
    signature: 'fn update_dependency_version_in_dependencies(dependencies: &mut dyn
      TableLike,manifest_dir: &Path,crate_name: &str,dependency: &Package,) -> bool'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: workspace_dir
      Src: /src/opendal/dev/src/release/package.rs:291,1
    - Dst: PathBuf::join
      Src: /src/opendal/dev/src/release/package.rs:291,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - path
    argTypes:
    - '&Path'
    constantsTouched: []
    func_position:
      end: 292
      start: 290
    functionDepth: 34
    functionLinenumber: 290
    functionLinenumberEnd: 292
    functionName: is_core_workspace_root
    functionSourceFile: /src/opendal/dev/src/release/package.rs
    functionUses: 1
    functionsReached:
    - PathBuf::join
    - workspace_dir
    linkageType: ''
    returnType: bool
    signature: 'fn is_core_workspace_root(path: &Path) -> bool'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: normalize_path
      Src: /src/opendal/dev/src/release/package.rs:295,1
    - Dst: ignore::Walk::new
      Src: /src/opendal/dev/src/release/package.rs:298,1
    - Dst: crate::Entry::unwrap
      Src: /src/opendal/dev/src/release/package.rs:299,1
    - Dst: crate::Entry::file_name
      Src: /src/opendal/dev/src/release/package.rs:300,1
    - Dst: crate::Entry::path
      Src: /src/opendal/dev/src/release/package.rs:304,1
    - Dst: String::parent
      Src: /src/opendal/dev/src/release/package.rs:305,1
    - Dst: '&str::unwrap'
      Src: /src/opendal/dev/src/release/package.rs:305,1
    - Dst: std::fs::read_to_string
      Src: /src/opendal/dev/src/release/package.rs:306,1
    - Dst: unwrap
      Src: /src/opendal/dev/src/release/package.rs:306,1
    - Dst: DocumentMut::from_str
      Src: /src/opendal/dev/src/release/package.rs:307,1
    - Dst: Result::unwrap
      Src: /src/opendal/dev/src/release/package.rs:307,1
    - Dst: sync_workspace_internal_dependency_versions_in_table
      Src: /src/opendal/dev/src/release/package.rs:309,1
    - Dst: Result::as_table_mut
      Src: /src/opendal/dev/src/release/package.rs:310,1
    - Dst: sync_workspace_package_version
      Src: /src/opendal/dev/src/release/package.rs:315,1
    - Dst: std::fs::write
      Src: /src/opendal/dev/src/release/package.rs:317,1
    - Dst: Result::to_string
      Src: /src/opendal/dev/src/release/package.rs:317,1
    - Dst: Result::unwrap
      Src: /src/opendal/dev/src/release/package.rs:317,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 44
    argCount: 2
    argNames:
    - workspace_root
    - version
    argTypes:
    - '&Path'
    - '&Version'
    constantsTouched: []
    func_position:
      end: 323
      start: 294
    functionDepth: 34
    functionLinenumber: 294
    functionLinenumberEnd: 323
    functionName: sync_workspace_internal_dependency_versions
    functionSourceFile: /src/opendal/dev/src/release/package.rs
    functionUses: 2
    functionsReached:
    - crate::Entry::file_name
    - crate::Entry::path
    - sync_workspace_internal_dependency_versions_in_table
    - normalize_path
    - std::fs::read_to_string
    - Result::to_string
    - DocumentMut::from_str
    - unwrap
    - Result::as_table_mut
    - ignore::Walk::new
    - sync_workspace_package_version
    - std::fs::write
    - Result::unwrap
    - crate::Entry::unwrap
    - String::parent
    - '&str::unwrap'
    linkageType: ''
    returnType: bool
    signature: 'fn sync_workspace_internal_dependency_versions(workspace_root: &Path,
      version: &Version) -> bool'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::get
      Src: /src/opendal/dev/src/release/package.rs:326,1
    - Dst: Option::and_then
      Src: /src/opendal/dev/src/release/package.rs:326,1
    - Dst: Package::get
      Src: /src/opendal/dev/src/release/package.rs:329,1
    - Dst: Option::and_then
      Src: /src/opendal/dev/src/release/package.rs:329,1
    - Dst: Result::starts_with
      Src: /src/opendal/dev/src/release/package.rs:332,1
    - Dst: as_str
      Src: /src/opendal/dev/src/release/package.rs:335,1
    - Dst: map
      Src: /src/opendal/dev/src/release/package.rs:335,1
    - Dst: transpose
      Src: /src/opendal/dev/src/release/package.rs:335,1
    - Dst: unwrap
      Src: /src/opendal/dev/src/release/package.rs:335,1
    - Dst: toml_edit::value
      Src: /src/opendal/dev/src/release/package.rs:347,1
    - Dst: Result::to_string
      Src: /src/opendal/dev/src/release/package.rs:347,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 44
    argCount: 2
    argNames:
    - manifest
    - version
    argTypes:
    - '&mut DocumentMut'
    - '&Version'
    constantsTouched: []
    func_position:
      end: 349
      start: 325
    functionDepth: 35
    functionLinenumber: 325
    functionLinenumberEnd: 349
    functionName: sync_workspace_package_version
    functionSourceFile: /src/opendal/dev/src/release/package.rs
    functionUses: 1
    functionsReached:
    - transpose
    - Result::to_string
    - unwrap
    - Option::and_then
    - as_str
    - map
    - Package::get
    - Result::starts_with
    - toml_edit::value
    - Result::get
    linkageType: ''
    returnType: bool
    signature: 'fn sync_workspace_package_version(manifest: &mut DocumentMut, version:
      &Version) -> bool'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self::get_mut
      Src: /src/opendal/dev/src/release/package.rs:360,1
    - Dst: and_then
      Src: /src/opendal/dev/src/release/package.rs:360,1
    - Dst: sync_workspace_internal_dependency_versions_in_dependencies
      Src: /src/opendal/dev/src/release/package.rs:364,1
    - Dst: Self::get_mut
      Src: /src/opendal/dev/src/release/package.rs:372,1
    - Dst: and_then
      Src: /src/opendal/dev/src/release/package.rs:372,1
    - Dst: iter_mut
      Src: /src/opendal/dev/src/release/package.rs:376,1
    - Dst: Option::as_table_like_mut
      Src: /src/opendal/dev/src/release/package.rs:377,1
    - Dst: sync_workspace_internal_dependency_versions_in_table
      Src: /src/opendal/dev/src/release/package.rs:380,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 27
    argCount: 4
    argNames:
    - table
    - manifest_dir
    - workspace_root
    - version
    argTypes:
    - '&mut dyn TableLike'
    - '&Path'
    - '&Path'
    - '&Version'
    constantsTouched: []
    func_position:
      end: 389
      start: 351
    functionDepth: 36
    functionLinenumber: 351
    functionLinenumberEnd: 389
    functionName: sync_workspace_internal_dependency_versions_in_table
    functionSourceFile: /src/opendal/dev/src/release/package.rs
    functionUses: 2
    functionsReached:
    - Self::get_mut
    - iter_mut
    - and_then
    - sync_workspace_internal_dependency_versions_in_dependencies
    - Option::as_table_like_mut
    - sync_workspace_internal_dependency_versions_in_table
    linkageType: ''
    returnType: bool
    signature: 'fn sync_workspace_internal_dependency_versions_in_table(table: &mut
      dyn TableLike,manifest_dir: &Path,workspace_root: &Path,version: &Version,)
      -> bool'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: '&[Package]::iter_mut'
      Src: /src/opendal/dev/src/release/package.rs:399,1
    - Dst: as_table_like_mut
      Src: /src/opendal/dev/src/release/package.rs:400,1
    - Dst: get
      Src: /src/opendal/dev/src/release/package.rs:403,1
    - Dst: and_then
      Src: /src/opendal/dev/src/release/package.rs:403,1
    - Dst: path_points_into
      Src: /src/opendal/dev/src/release/package.rs:406,1
    - Dst: get_mut
      Src: /src/opendal/dev/src/release/package.rs:409,1
    - Dst: Vec::as_str
      Src: /src/opendal/dev/src/release/package.rs:413,1
    - Dst: Version::parse
      Src: /src/opendal/dev/src/release/package.rs:414,1
    - Dst: toml_edit::value
      Src: /src/opendal/dev/src/release/package.rs:425,1
    - Dst: Result::to_string
      Src: /src/opendal/dev/src/release/package.rs:425,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 45
    argCount: 4
    argNames:
    - dependencies
    - manifest_dir
    - workspace_root
    - version
    argTypes:
    - '&mut dyn TableLike'
    - '&Path'
    - '&Path'
    - '&Version'
    constantsTouched: []
    func_position:
      end: 430
      start: 391
    functionDepth: 35
    functionLinenumber: 391
    functionLinenumberEnd: 430
    functionName: sync_workspace_internal_dependency_versions_in_dependencies
    functionSourceFile: /src/opendal/dev/src/release/package.rs
    functionUses: 1
    functionsReached:
    - get
    - '&[Package]::iter_mut'
    - and_then
    - Vec::as_str
    - Result::to_string
    - Version::parse
    - as_table_like_mut
    - toml_edit::value
    - get_mut
    - path_points_into
    linkageType: ''
    returnType: bool
    signature: 'fn sync_workspace_internal_dependency_versions_in_dependencies(dependencies:
      &mut dyn TableLike,manifest_dir: &Path,workspace_root: &Path,version: &Version,)
      -> bool'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: normalize_path
      Src: /src/opendal/dev/src/release/package.rs:433,1
    - Dst: PathBuf::join
      Src: /src/opendal/dev/src/release/package.rs:433,1
    - Dst: normalize_path
      Src: /src/opendal/dev/src/release/package.rs:433,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 3
    argNames:
    - manifest_dir
    - raw_path
    - expected
    argTypes:
    - '&Path'
    - '&str'
    - '&Path'
    constantsTouched: []
    func_position:
      end: 434
      start: 432
    functionDepth: 34
    functionLinenumber: 432
    functionLinenumberEnd: 434
    functionName: path_points_to
    functionSourceFile: /src/opendal/dev/src/release/package.rs
    functionUses: 1
    functionsReached:
    - PathBuf::join
    - normalize_path
    linkageType: ''
    returnType: bool
    signature: 'fn path_points_to(manifest_dir: &Path, raw_path: &str, expected: &Path)
      -> bool'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: normalize_path
      Src: /src/opendal/dev/src/release/package.rs:437,1
    - Dst: PathBuf::join
      Src: /src/opendal/dev/src/release/package.rs:437,1
    - Dst: PathBuf::starts_with
      Src: /src/opendal/dev/src/release/package.rs:437,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 3
    argNames:
    - manifest_dir
    - raw_path
    - workspace_root
    argTypes:
    - '&Path'
    - '&str'
    - '&Path'
    constantsTouched: []
    func_position:
      end: 438
      start: 436
    functionDepth: 34
    functionLinenumber: 436
    functionLinenumberEnd: 438
    functionName: path_points_into
    functionSourceFile: /src/opendal/dev/src/release/package.rs
    functionUses: 1
    functionsReached:
    - PathBuf::join
    - normalize_path
    - PathBuf::starts_with
    linkageType: ''
    returnType: bool
    signature: 'fn path_points_into(manifest_dir: &Path, raw_path: &str, workspace_root:
      &Path) -> bool'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: PathBuf::new
      Src: /src/opendal/dev/src/release/package.rs:445,1
    - Dst: components
      Src: /src/opendal/dev/src/release/package.rs:447,1
    - Dst: Self::pop
      Src: /src/opendal/dev/src/release/package.rs:451,1
    - Dst: Self::push
      Src: /src/opendal/dev/src/release/package.rs:453,1
    - Dst: as_os_str
      Src: /src/opendal/dev/src/release/package.rs:453,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 1
    argNames:
    - path
    argTypes:
    - '&Path'
    constantsTouched: []
    func_position:
      end: 458
      start: 444
    functionDepth: 32
    functionLinenumber: 444
    functionLinenumberEnd: 458
    functionName: lexical_normalize
    functionSourceFile: /src/opendal/dev/src/release/package.rs
    functionUses: 1
    functionsReached:
    - as_os_str
    - Self::push
    - components
    - Self::pop
    - PathBuf::new
    linkageType: ''
    returnType: PathBuf
    signature: 'fn lexical_normalize(path: &Path) -> PathBuf'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: as_str
      Src: /src/opendal/dev/src/release/package.rs:462,1
    - Dst: Some
      Src: /src/opendal/dev/src/release/package.rs:463,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 466
      start: 461
    functionDepth: 1
    functionLinenumber: 461
    functionLinenumberEnd: 466
    functionName: Package::crate_name
    functionSourceFile: /src/opendal/dev/src/release/package.rs
    functionUses: 1
    functionsReached:
    - as_str
    - Some
    linkageType: ''
    returnType: Option
    signature: fn crate_name(&self) -> Option<&'static str>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: join
      Src: /src/opendal/dev/src/release/package.rs:470,1
    - Dst: std::fs::read_to_string
      Src: /src/opendal/dev/src/release/package.rs:471,1
    - Dst: unwrap
      Src: /src/opendal/dev/src/release/package.rs:471,1
    - Dst: regex::Regex::new
      Src: /src/opendal/dev/src/release/package.rs:476,1
    - Dst: Self::unwrap
      Src: /src/opendal/dev/src/release/package.rs:476,1
    - Dst: T::replace_all
      Src: /src/opendal/dev/src/release/package.rs:476,1
    - Dst: Result::as_str
      Src: /src/opendal/dev/src/release/package.rs:478,1
    - Dst: as_str
      Src: /src/opendal/dev/src/release/package.rs:478,1
    - Dst: std::fs::write
      Src: /src/opendal/dev/src/release/package.rs:480,1
    - Dst: as_bytes
      Src: /src/opendal/dev/src/release/package.rs:480,1
    - Dst: Result::unwrap
      Src: /src/opendal/dev/src/release/package.rs:480,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 26
    argCount: 2
    argNames:
    - path
    - version
    argTypes:
    - '&Path'
    - '&Version'
    constantsTouched: []
    func_position:
      end: 490
      start: 469
    functionDepth: 33
    functionLinenumber: 469
    functionLinenumberEnd: 490
    functionName: update_maven_version
    functionSourceFile: /src/opendal/dev/src/release/package.rs
    functionUses: 1
    functionsReached:
    - std::fs::read_to_string
    - as_bytes
    - Self::unwrap
    - join
    - unwrap
    - as_str
    - T::replace_all
    - std::fs::write
    - Result::unwrap
    - Result::as_str
    - regex::Regex::new
    linkageType: ''
    returnType: bool
    signature: 'fn update_maven_version(path: &Path, version: &Version) -> bool'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: ignore::Walk::new
      Src: /src/opendal/dev/src/release/package.rs:495,1
    - Dst: crate::Entry::unwrap
      Src: /src/opendal/dev/src/release/package.rs:496,1
    - Dst: crate::Entry::file_name
      Src: /src/opendal/dev/src/release/package.rs:497,1
    - Dst: crate::Entry::path
      Src: /src/opendal/dev/src/release/package.rs:501,1
    - Dst: String::to_str
      Src: /src/opendal/dev/src/release/package.rs:501,1
    - Dst: Result::unwrap
      Src: /src/opendal/dev/src/release/package.rs:501,1
    - Dst: T::contains
      Src: /src/opendal/dev/src/release/package.rs:501,1
    - Dst: std::fs::read_to_string
      Src: /src/opendal/dev/src/release/package.rs:504,1
    - Dst: crate::Entry::path
      Src: /src/opendal/dev/src/release/package.rs:504,1
    - Dst: unwrap
      Src: /src/opendal/dev/src/release/package.rs:504,1
    - Dst: serde_json::from_str
      Src: /src/opendal/dev/src/release/package.rs:505,1
    - Dst: Result::unwrap
      Src: /src/opendal/dev/src/release/package.rs:505,1
    - Dst: Result::pointer_mut
      Src: /src/opendal/dev/src/release/package.rs:507,1
    - Dst: unwrap
      Src: /src/opendal/dev/src/release/package.rs:507,1
    - Dst: Version::parse
      Src: /src/opendal/dev/src/release/package.rs:508,1
    - Dst: Vec::as_str
      Src: /src/opendal/dev/src/release/package.rs:508,1
    - Dst: '&''static str::unwrap'
      Src: /src/opendal/dev/src/release/package.rs:508,1
    - Dst: Result::unwrap
      Src: /src/opendal/dev/src/release/package.rs:508,1
    - Dst: serde_json::Value::String
      Src: /src/opendal/dev/src/release/package.rs:510,1
    - Dst: Result::to_string
      Src: /src/opendal/dev/src/release/package.rs:510,1
    - Dst: serde_json::to_string_pretty
      Src: /src/opendal/dev/src/release/package.rs:511,1
    - Dst: unwrap
      Src: /src/opendal/dev/src/release/package.rs:511,1
    - Dst: push
      Src: /src/opendal/dev/src/release/package.rs:512,1
    - Dst: std::fs::write
      Src: /src/opendal/dev/src/release/package.rs:513,1
    - Dst: crate::Entry::path
      Src: /src/opendal/dev/src/release/package.rs:513,1
    - Dst: Result::unwrap
      Src: /src/opendal/dev/src/release/package.rs:513,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 70
    argCount: 2
    argNames:
    - path
    - version
    argTypes:
    - '&Path'
    - '&Version'
    constantsTouched: []
    func_position:
      end: 525
      start: 492
    functionDepth: 35
    functionLinenumber: 492
    functionLinenumberEnd: 525
    functionName: update_nodejs_version
    functionSourceFile: /src/opendal/dev/src/release/package.rs
    functionUses: 1
    functionsReached:
    - crate::Entry::file_name
    - crate::Entry::path
    - push
    - serde_json::Value::String
    - Result::unwrap
    - Result::pointer_mut
    - Result::to_string
    - unwrap
    - Version::parse
    - ignore::Walk::new
    - '&''static str::unwrap'
    - crate::Entry::unwrap
    - Vec::as_str
    - T::contains
    - std::fs::write
    - std::fs::read_to_string
    - serde_json::from_str
    - String::to_str
    - serde_json::to_string_pretty
    linkageType: ''
    returnType: bool
    signature: 'fn update_nodejs_version(path: &Path, version: &Version) -> bool'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: join
      Src: /src/opendal/dev/src/release/package.rs:528,1
    - Dst: Result::join
      Src: /src/opendal/dev/src/release/package.rs:528,1
    - Dst: std::fs::read_to_string
      Src: /src/opendal/dev/src/release/package.rs:529,1
    - Dst: unwrap
      Src: /src/opendal/dev/src/release/package.rs:529,1
    - Dst: regex::Regex::new
      Src: /src/opendal/dev/src/release/package.rs:530,1
    - Dst: Self::unwrap
      Src: /src/opendal/dev/src/release/package.rs:530,1
    - Dst: T::captures
      Src: /src/opendal/dev/src/release/package.rs:531,1
    - Dst: and_then
      Src: /src/opendal/dev/src/release/package.rs:531,1
    - Dst: get
      Src: /src/opendal/dev/src/release/package.rs:533,1
    - Dst: map
      Src: /src/opendal/dev/src/release/package.rs:531,1
    - Dst: Version::parse
      Src: /src/opendal/dev/src/release/package.rs:534,1
    - Dst: as_str
      Src: /src/opendal/dev/src/release/package.rs:534,1
    - Dst: Result::unwrap
      Src: /src/opendal/dev/src/release/package.rs:534,1
    - Dst: unwrap_or_else
      Src: /src/opendal/dev/src/release/package.rs:531,1
    - Dst: T::replace
      Src: /src/opendal/dev/src/release/package.rs:542,1
    - Dst: as_str
      Src: /src/opendal/dev/src/release/package.rs:542,1
    - Dst: std::fs::write
      Src: /src/opendal/dev/src/release/package.rs:543,1
    - Dst: as_bytes
      Src: /src/opendal/dev/src/release/package.rs:543,1
    - Dst: Result::unwrap
      Src: /src/opendal/dev/src/release/package.rs:543,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 49
    argCount: 2
    argNames:
    - path
    - version
    argTypes:
    - '&Path'
    - '&Version'
    constantsTouched: []
    func_position:
      end: 552
      start: 527
    functionDepth: 33
    functionLinenumber: 527
    functionLinenumberEnd: 552
    functionName: update_dotnet_version
    functionSourceFile: /src/opendal/dev/src/release/package.rs
    functionUses: 2
    functionsReached:
    - get
    - std::fs::read_to_string
    - Result::join
    - Self::unwrap
    - join
    - and_then
    - as_bytes
    - unwrap
    - Version::parse
    - T::replace
    - map
    - as_str
    - std::fs::write
    - Result::unwrap
    - regex::Regex::new
    - T::captures
    - unwrap_or_else
    linkageType: ''
    returnType: bool
    signature: 'fn update_dotnet_version(path: &Path, version: &Version) -> bool'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: std::time::SystemTime::now
      Src: /src/opendal/dev/src/release/package.rs:559,1
    - Dst: Self::duration_since
      Src: /src/opendal/dev/src/release/package.rs:559,1
    - Dst: unwrap
      Src: /src/opendal/dev/src/release/package.rs:559,1
    - Dst: as_nanos
      Src: /src/opendal/dev/src/release/package.rs:559,1
    - Dst: std::env::temp_dir
      Src: /src/opendal/dev/src/release/package.rs:563,1
    - Dst: join
      Src: /src/opendal/dev/src/release/package.rs:563,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 1
    argNames:
    - name
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 564
      start: 558
    functionDepth: 35
    functionLinenumber: 558
    functionLinenumberEnd: 564
    functionName: tests::temp_test_dir
    functionSourceFile: /src/opendal/dev/src/release/package.rs
    functionUses: 0
    functionsReached:
    - Self::duration_since
    - std::time::SystemTime::now
    - join
    - unwrap
    - as_nanos
    - std::env::temp_dir
    linkageType: ''
    returnType: PathBuf
    signature: 'fn temp_test_dir(name: &str) -> PathBuf'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: all_packages
      Src: /src/opendal/dev/src/release/package.rs:567,1
    - Dst: Vec::into_iter
      Src: /src/opendal/dev/src/release/package.rs:567,1
    - Dst: find
      Src: /src/opendal/dev/src/release/package.rs:567,1
    - Dst: Package::name
      Src: /src/opendal/dev/src/release/package.rs:569,1
    - Dst: unwrap
      Src: /src/opendal/dev/src/release/package.rs:567,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 1
    argNames:
    - name
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 571
      start: 566
    functionDepth: 36
    functionLinenumber: 566
    functionLinenumberEnd: 571
    functionName: tests::release_package
    functionSourceFile: /src/opendal/dev/src/release/package.rs
    functionUses: 0
    functionsReached:
    - find
    - all_packages
    - Package::name
    - Vec::into_iter
    - unwrap
    linkageType: ''
    returnType: Package
    signature: 'fn release_package(name: &str) -> Package'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: join
      Src: /src/opendal/dev/src/release/package.rs:574,1
    - Dst: std::fs::read_to_string
      Src: /src/opendal/dev/src/release/package.rs:575,1
    - Dst: unwrap
      Src: /src/opendal/dev/src/release/package.rs:575,1
    - Dst: DocumentMut::from_str
      Src: /src/opendal/dev/src/release/package.rs:576,1
    - Dst: Result::unwrap
      Src: /src/opendal/dev/src/release/package.rs:576,1
    - Dst: as_str
      Src: /src/opendal/dev/src/release/package.rs:578,1
    - Dst: map
      Src: /src/opendal/dev/src/release/package.rs:578,1
    - Dst: transpose
      Src: /src/opendal/dev/src/release/package.rs:578,1
    - Dst: unwrap
      Src: /src/opendal/dev/src/release/package.rs:578,1
    - Dst: unwrap
      Src: /src/opendal/dev/src/release/package.rs:578,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 22
    argCount: 1
    argNames:
    - package
    argTypes:
    - '&Package'
    constantsTouched: []
    func_position:
      end: 584
      start: 573
    functionDepth: 33
    functionLinenumber: 573
    functionLinenumberEnd: 584
    functionName: tests::cargo_manifest_version
    functionSourceFile: /src/opendal/dev/src/release/package.rs
    functionUses: 0
    functionsReached:
    - transpose
    - std::fs::read_to_string
    - join
    - DocumentMut::from_str
    - unwrap
    - as_str
    - map
    - Result::unwrap
    linkageType: ''
    returnType: Version
    signature: 'fn cargo_manifest_version(package: &Package) -> Version'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: join
      Src: /src/opendal/dev/src/release/package.rs:587,1
    - Dst: join
      Src: /src/opendal/dev/src/release/package.rs:587,1
    - Dst: std::fs::read_to_string
      Src: /src/opendal/dev/src/release/package.rs:588,1
    - Dst: unwrap
      Src: /src/opendal/dev/src/release/package.rs:588,1
    - Dst: regex::Regex::new
      Src: /src/opendal/dev/src/release/package.rs:589,1
    - Dst: Self::unwrap
      Src: /src/opendal/dev/src/release/package.rs:589,1
    - Dst: T::captures
      Src: /src/opendal/dev/src/release/package.rs:590,1
    - Dst: and_then
      Src: /src/opendal/dev/src/release/package.rs:590,1
    - Dst: get
      Src: /src/opendal/dev/src/release/package.rs:592,1
    - Dst: map
      Src: /src/opendal/dev/src/release/package.rs:590,1
    - Dst: Version::parse
      Src: /src/opendal/dev/src/release/package.rs:593,1
    - Dst: as_str
      Src: /src/opendal/dev/src/release/package.rs:593,1
    - Dst: Result::unwrap
      Src: /src/opendal/dev/src/release/package.rs:593,1
    - Dst: unwrap
      Src: /src/opendal/dev/src/release/package.rs:590,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 29
    argCount: 1
    argNames:
    - package
    argTypes:
    - '&Package'
    constantsTouched: []
    func_position:
      end: 595
      start: 586
    functionDepth: 33
    functionLinenumber: 586
    functionLinenumberEnd: 595
    functionName: tests::dotnet_project_version
    functionSourceFile: /src/opendal/dev/src/release/package.rs
    functionUses: 0
    functionsReached:
    - get
    - std::fs::read_to_string
    - Self::unwrap
    - join
    - and_then
    - unwrap
    - Version::parse
    - map
    - as_str
    - Result::unwrap
    - regex::Regex::new
    - T::captures
    linkageType: ''
    returnType: Version
    signature: 'fn dotnet_project_version(package: &Package) -> Version'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: release_package
      Src: /src/opendal/dev/src/release/package.rs:599,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 602
      start: 598
    functionDepth: 37
    functionLinenumber: 598
    functionLinenumberEnd: 602
    functionName: tests::parquet_release_version_matches_manifest
    functionSourceFile: /src/opendal/dev/src/release/package.rs
    functionUses: 0
    functionsReached:
    - release_package
    linkageType: ''
    returnType: void
    signature: fn parquet_release_version_matches_manifest()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: release_package
      Src: /src/opendal/dev/src/release/package.rs:606,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 609
      start: 605
    functionDepth: 37
    functionLinenumber: 605
    functionLinenumberEnd: 609
    functionName: tests::ruby_release_version_matches_manifest
    functionSourceFile: /src/opendal/dev/src/release/package.rs
    functionUses: 0
    functionsReached:
    - release_package
    linkageType: ''
    returnType: void
    signature: fn ruby_release_version_matches_manifest()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: release_package
      Src: /src/opendal/dev/src/release/package.rs:613,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 616
      start: 612
    functionDepth: 37
    functionLinenumber: 612
    functionLinenumberEnd: 616
    functionName: tests::dotnet_release_version_matches_project
    functionSourceFile: /src/opendal/dev/src/release/package.rs
    functionUses: 0
    functionsReached:
    - release_package
    linkageType: ''
    returnType: void
    signature: fn dotnet_release_version_matches_project()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: DocumentMut::from_str
      Src: /src/opendal/dev/src/release/package.rs:620,1
    - Dst: Result::unwrap
      Src: /src/opendal/dev/src/release/package.rs:620,1
    - Dst: update_manifest_version
      Src: /src/opendal/dev/src/release/package.rs:632,1
    - Dst: Version::parse
      Src: /src/opendal/dev/src/release/package.rs:634,1
    - Dst: Result::unwrap
      Src: /src/opendal/dev/src/release/package.rs:634,1
    - Dst: Path::new
      Src: /src/opendal/dev/src/release/package.rs:635,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 644
      start: 619
    functionDepth: 34
    functionLinenumber: 619
    functionLinenumberEnd: 644
    functionName: tests::update_manifest_version_supports_workspace_package_version
    functionSourceFile: /src/opendal/dev/src/release/package.rs
    functionUses: 0
    functionsReached:
    - DocumentMut::from_str
    - Version::parse
    - Path::new
    - Result::unwrap
    - update_manifest_version
    linkageType: ''
    returnType: void
    signature: fn update_manifest_version_supports_workspace_package_version()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: temp_test_dir
      Src: /src/opendal/dev/src/release/package.rs:648,1
    - Dst: std::fs::create_dir_all
      Src: /src/opendal/dev/src/release/package.rs:649,1
    - Dst: unwrap
      Src: /src/opendal/dev/src/release/package.rs:649,1
    - Dst: Result::join
      Src: /src/opendal/dev/src/release/package.rs:651,1
    - Dst: std::fs::write
      Src: /src/opendal/dev/src/release/package.rs:652,1
    - Dst: Result::unwrap
      Src: /src/opendal/dev/src/release/package.rs:652,1
    - Dst: '&str::to_string'
      Src: /src/opendal/dev/src/release/package.rs:678,1
    - Dst: Result::join
      Src: /src/opendal/dev/src/release/package.rs:679,1
    - Dst: Version::parse
      Src: /src/opendal/dev/src/release/package.rs:680,1
    - Dst: Result::unwrap
      Src: /src/opendal/dev/src/release/package.rs:680,1
    - Dst: update_cargo_version
      Src: /src/opendal/dev/src/release/package.rs:684,1
    - Dst: Result::as_path
      Src: /src/opendal/dev/src/release/package.rs:685,1
    - Dst: Version::parse
      Src: /src/opendal/dev/src/release/package.rs:686,1
    - Dst: Result::unwrap
      Src: /src/opendal/dev/src/release/package.rs:686,1
    - Dst: std::fs::read_to_string
      Src: /src/opendal/dev/src/release/package.rs:691,1
    - Dst: unwrap
      Src: /src/opendal/dev/src/release/package.rs:691,1
    - Dst: DocumentMut::from_str
      Src: /src/opendal/dev/src/release/package.rs:692,1
    - Dst: Result::unwrap
      Src: /src/opendal/dev/src/release/package.rs:692,1
    - Dst: std::fs::remove_dir_all
      Src: /src/opendal/dev/src/release/package.rs:715,1
    - Dst: unwrap
      Src: /src/opendal/dev/src/release/package.rs:715,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 48
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 716
      start: 647
    functionDepth: 36
    functionLinenumber: 647
    functionLinenumberEnd: 716
    functionName: tests::update_dependency_version_only_touches_release_managed_core_constraints
    functionSourceFile: /src/opendal/dev/src/release/package.rs
    functionUses: 0
    functionsReached:
    - temp_test_dir
    - Result::join
    - std::fs::read_to_string
    - DocumentMut::from_str
    - Result::as_path
    - unwrap
    - Version::parse
    - update_cargo_version
    - std::fs::create_dir_all
    - std::fs::write
    - Result::unwrap
    - '&str::to_string'
    - std::fs::remove_dir_all
    linkageType: ''
    returnType: void
    signature: fn update_dependency_version_only_touches_release_managed_core_constraints()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: temp_test_dir
      Src: /src/opendal/dev/src/release/package.rs:720,1
    - Dst: Result::join
      Src: /src/opendal/dev/src/release/package.rs:721,1
    - Dst: std::fs::create_dir_all
      Src: /src/opendal/dev/src/release/package.rs:722,1
    - Dst: unwrap
      Src: /src/opendal/dev/src/release/package.rs:722,1
    - Dst: Result::join
      Src: /src/opendal/dev/src/release/package.rs:724,1
    - Dst: std::fs::write
      Src: /src/opendal/dev/src/release/package.rs:725,1
    - Dst: Result::unwrap
      Src: /src/opendal/dev/src/release/package.rs:725,1
    - Dst: update_dotnet_version
      Src: /src/opendal/dev/src/release/package.rs:737,1
    - Dst: Version::parse
      Src: /src/opendal/dev/src/release/package.rs:737,1
    - Dst: Result::unwrap
      Src: /src/opendal/dev/src/release/package.rs:737,1
    - Dst: std::fs::read_to_string
      Src: /src/opendal/dev/src/release/package.rs:740,1
    - Dst: unwrap
      Src: /src/opendal/dev/src/release/package.rs:740,1
    - Dst: std::fs::remove_dir_all
      Src: /src/opendal/dev/src/release/package.rs:749,1
    - Dst: unwrap
      Src: /src/opendal/dev/src/release/package.rs:749,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 34
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 750
      start: 719
    functionDepth: 36
    functionLinenumber: 719
    functionLinenumberEnd: 750
    functionName: tests::update_dotnet_version_updates_version_prefix
    functionSourceFile: /src/opendal/dev/src/release/package.rs
    functionUses: 0
    functionsReached:
    - temp_test_dir
    - Result::join
    - std::fs::read_to_string
    - unwrap
    - Version::parse
    - std::fs::create_dir_all
    - std::fs::write
    - Result::unwrap
    - std::fs::remove_dir_all
    - update_dotnet_version
    linkageType: ''
    returnType: void
    signature: fn update_dotnet_version_updates_version_prefix()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: temp_test_dir
      Src: /src/opendal/dev/src/release/package.rs:754,1
    - Dst: Result::join
      Src: /src/opendal/dev/src/release/package.rs:755,1
    - Dst: Result::join
      Src: /src/opendal/dev/src/release/package.rs:756,1
    - Dst: std::fs::create_dir_all
      Src: /src/opendal/dev/src/release/package.rs:757,1
    - Dst: unwrap
      Src: /src/opendal/dev/src/release/package.rs:757,1
    - Dst: std::fs::create_dir_all
      Src: /src/opendal/dev/src/release/package.rs:758,1
    - Dst: unwrap
      Src: /src/opendal/dev/src/release/package.rs:758,1
    - Dst: std::fs::write
      Src: /src/opendal/dev/src/release/package.rs:760,1
    - Dst: Result::join
      Src: /src/opendal/dev/src/release/package.rs:761,1
    - Dst: Result::unwrap
      Src: /src/opendal/dev/src/release/package.rs:760,1
    - Dst: std::fs::write
      Src: /src/opendal/dev/src/release/package.rs:770,1
    - Dst: Result::join
      Src: /src/opendal/dev/src/release/package.rs:771,1
    - Dst: Result::unwrap
      Src: /src/opendal/dev/src/release/package.rs:770,1
    - Dst: std::fs::write
      Src: /src/opendal/dev/src/release/package.rs:782,1
    - Dst: Result::join
      Src: /src/opendal/dev/src/release/package.rs:783,1
    - Dst: Result::unwrap
      Src: /src/opendal/dev/src/release/package.rs:782,1
    - Dst: sync_workspace_internal_dependency_versions
      Src: /src/opendal/dev/src/release/package.rs:791,1
    - Dst: Result::as_path
      Src: /src/opendal/dev/src/release/package.rs:792,1
    - Dst: Version::parse
      Src: /src/opendal/dev/src/release/package.rs:793,1
    - Dst: Result::unwrap
      Src: /src/opendal/dev/src/release/package.rs:793,1
    - Dst: std::fs::read_to_string
      Src: /src/opendal/dev/src/release/package.rs:797,1
    - Dst: Result::join
      Src: /src/opendal/dev/src/release/package.rs:797,1
    - Dst: unwrap
      Src: /src/opendal/dev/src/release/package.rs:797,1
    - Dst: DocumentMut::from_str
      Src: /src/opendal/dev/src/release/package.rs:798,1
    - Dst: Result::unwrap
      Src: /src/opendal/dev/src/release/package.rs:798,1
    - Dst: std::fs::read_to_string
      Src: /src/opendal/dev/src/release/package.rs:805,1
    - Dst: Result::join
      Src: /src/opendal/dev/src/release/package.rs:805,1
    - Dst: unwrap
      Src: /src/opendal/dev/src/release/package.rs:805,1
    - Dst: DocumentMut::from_str
      Src: /src/opendal/dev/src/release/package.rs:806,1
    - Dst: Result::unwrap
      Src: /src/opendal/dev/src/release/package.rs:806,1
    - Dst: std::fs::remove_dir_all
      Src: /src/opendal/dev/src/release/package.rs:809,1
    - Dst: unwrap
      Src: /src/opendal/dev/src/release/package.rs:809,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 66
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 810
      start: 753
    functionDepth: 36
    functionLinenumber: 753
    functionLinenumberEnd: 810
    functionName: tests::sync_workspace_internal_dependency_versions_updates_workspace_path_dependencies
    functionSourceFile: /src/opendal/dev/src/release/package.rs
    functionUses: 0
    functionsReached:
    - temp_test_dir
    - Result::join
    - std::fs::read_to_string
    - DocumentMut::from_str
    - Result::as_path
    - unwrap
    - Version::parse
    - std::fs::create_dir_all
    - std::fs::write
    - Result::unwrap
    - sync_workspace_internal_dependency_versions
    - std::fs::remove_dir_all
    linkageType: ''
    returnType: void
    signature: fn sync_workspace_internal_dependency_versions_updates_workspace_path_dependencies()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: package::all_packages
      Src: /src/opendal/dev/src/release/mod.rs:28,1
    - Dst: package::update_package_version
      Src: /src/opendal/dev/src/release/mod.rs:31,1
    - Dst: Ok
      Src: /src/opendal/dev/src/release/mod.rs:36,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 37
      start: 27
    functionDepth: 36
    functionLinenumber: 27
    functionLinenumberEnd: 37
    functionName: update_version
    functionSourceFile: /src/opendal/dev/src/release/mod.rs
    functionUses: 0
    functionsReached:
    - package::update_package_version
    - Ok
    - package::all_packages
    linkageType: ''
    returnType: anyhow::Result
    signature: pub fn update_version() -> anyhow::Result<()>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: std::fs::create_dir_all
      Src: /src/opendal/dev/src/release/mod.rs:40,1
    - Dst: workspace_dir
      Src: /src/opendal/dev/src/release/mod.rs:40,1
    - Dst: PathBuf::join
      Src: /src/opendal/dev/src/release/mod.rs:40,1
    - Dst: workspace_dir
      Src: /src/opendal/dev/src/release/mod.rs:42,1
    - Dst: PathBuf::join
      Src: /src/opendal/dev/src/release/mod.rs:43,1
    - Dst: package::all_packages
      Src: /src/opendal/dev/src/release/mod.rs:45,1
    - Dst: find_command
      Src: /src/opendal/dev/src/release/mod.rs:47,1
    - Dst: StdCommand::args
      Src: /src/opendal/dev/src/release/mod.rs:48,1
    - Dst: StdCommand::arg
      Src: /src/opendal/dev/src/release/mod.rs:49,1
    - Dst: Package::name
      Src: /src/opendal/dev/src/release/mod.rs:49,1
    - Dst: Package::dependencies
      Src: /src/opendal/dev/src/release/mod.rs:50,1
    - Dst: StdCommand::arg
      Src: /src/opendal/dev/src/release/mod.rs:51,1
    - Dst: name
      Src: /src/opendal/dev/src/release/mod.rs:51,1
    - Dst: StdCommand::output
      Src: /src/opendal/dev/src/release/mod.rs:53,1
    - Dst: Result::expect
      Src: /src/opendal/dev/src/release/mod.rs:53,1
    - Dst: String::from_utf8_lossy
      Src: /src/opendal/dev/src/release/mod.rs:54,1
    - Dst: Result::lines
      Src: /src/opendal/dev/src/release/mod.rs:55,1
    - Dst: lines().collect::<Vec<_>>
      Src: /src/opendal/dev/src/release/mod.rs:55,1
    - Dst: archive_and_checksum
      Src: /src/opendal/dev/src/release/mod.rs:56,1
    - Dst: find_command
      Src: /src/opendal/dev/src/release/mod.rs:61,1
    - Dst: StdCommand::args
      Src: /src/opendal/dev/src/release/mod.rs:62,1
    - Dst: as_str
      Src: /src/opendal/dev/src/release/mod.rs:66,1
    - Dst: as_str
      Src: /src/opendal/dev/src/release/mod.rs:68,1
    - Dst: StdCommand::output
      Src: /src/opendal/dev/src/release/mod.rs:70,1
    - Dst: Result::expect
      Src: /src/opendal/dev/src/release/mod.rs:70,1
    - Dst: find_command
      Src: /src/opendal/dev/src/release/mod.rs:73,1
    - Dst: StdCommand::args
      Src: /src/opendal/dev/src/release/mod.rs:74,1
    - Dst: as_str
      Src: /src/opendal/dev/src/release/mod.rs:76,1
    - Dst: as_str
      Src: /src/opendal/dev/src/release/mod.rs:77,1
    - Dst: StdCommand::output
      Src: /src/opendal/dev/src/release/mod.rs:79,1
    - Dst: Result::expect
      Src: /src/opendal/dev/src/release/mod.rs:79,1
    - Dst: Ok
      Src: /src/opendal/dev/src/release/mod.rs:83,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 82
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 84
      start: 39
    functionDepth: 34
    functionLinenumber: 39
    functionLinenumberEnd: 84
    functionName: archive_package
    functionSourceFile: /src/opendal/dev/src/release/mod.rs
    functionUses: 0
    functionsReached:
    - lines().collect::<Vec<_>>
    - archive_and_checksum
    - workspace_dir
    - package::all_packages
    - Package::name
    - Result::expect
    - StdCommand::args
    - name
    - Ok
    - std::fs::create_dir_all
    - PathBuf::join
    - StdCommand::output
    - Package::dependencies
    - Result::lines
    - StdCommand::arg
    - as_str
    - find_command
    - String::from_utf8_lossy
    linkageType: ''
    returnType: anyhow::Result
    signature: pub fn archive_package() -> anyhow::Result<()>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Package::make_prefix
      Src: /src/opendal/dev/src/release/mod.rs:89,1
    - Dst: workspace_dir
      Src: /src/opendal/dev/src/release/mod.rs:91,1
    - Dst: PathBuf::join
      Src: /src/opendal/dev/src/release/mod.rs:91,1
    - Dst: Result::join
      Src: /src/opendal/dev/src/release/mod.rs:91,1
    - Dst: std::fs::File::create
      Src: /src/opendal/dev/src/release/mod.rs:94,1
    - Dst: GzEncoder::new
      Src: /src/opendal/dev/src/release/mod.rs:95,1
    - Dst: Compression::default
      Src: /src/opendal/dev/src/release/mod.rs:95,1
    - Dst: tar::Builder::new
      Src: /src/opendal/dev/src/release/mod.rs:96,1
    - Dst: Self::append_path_with_name
      Src: /src/opendal/dev/src/release/mod.rs:98,1
    - Dst: workspace_dir
      Src: /src/opendal/dev/src/release/mod.rs:98,1
    - Dst: PathBuf::join
      Src: /src/opendal/dev/src/release/mod.rs:98,1
    - Dst: std::fs::File::open
      Src: /src/opendal/dev/src/release/mod.rs:103,1
    - Dst: BufReader::new
      Src: /src/opendal/dev/src/release/mod.rs:104,1
    - Dst: Sha512::new
      Src: /src/opendal/dev/src/release/mod.rs:105,1
    - Dst: anyhow::Result::read
      Src: /src/opendal/dev/src/release/mod.rs:108,1
    - Dst: Self::update
      Src: /src/opendal/dev/src/release/mod.rs:112,1
    - Dst: Self::finalize
      Src: /src/opendal/dev/src/release/mod.rs:114,1
    - Dst: workspace_dir
      Src: /src/opendal/dev/src/release/mod.rs:117,1
    - Dst: PathBuf::join
      Src: /src/opendal/dev/src/release/mod.rs:117,1
    - Dst: Result::join
      Src: /src/opendal/dev/src/release/mod.rs:117,1
    - Dst: std::fs::write
      Src: /src/opendal/dev/src/release/mod.rs:120,1
    - Dst: Ok
      Src: /src/opendal/dev/src/release/mod.rs:123,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 62
    argCount: 2
    argNames:
    - package
    - files
    argTypes:
    - '&package::Package'
    - '&[&str]'
    constantsTouched: []
    func_position:
      end: 124
      start: 86
    functionDepth: 34
    functionLinenumber: 86
    functionLinenumberEnd: 124
    functionName: archive_and_checksum
    functionSourceFile: /src/opendal/dev/src/release/mod.rs
    functionUses: 1
    functionsReached:
    - Result::join
    - std::fs::File::create
    - workspace_dir
    - Sha512::new
    - BufReader::new
    - Ok
    - anyhow::Result::read
    - GzEncoder::new
    - std::fs::File::open
    - PathBuf::join
    - Self::append_path_with_name
    - Self::finalize
    - std::fs::write
    - Package::make_prefix
    - Compression::default
    - tar::Builder::new
    - Self::update
    linkageType: ''
    returnType: anyhow::Result
    signature: 'fn archive_and_checksum(package: &package::Package, files: &[&str])
      -> anyhow::Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: generate::parser::sorted_services
      Src: /src/opendal/dev/src/generate/python.rs:36,1
    - Dst: Environment::new
      Src: /src/opendal/dev/src/generate/python.rs:37,1
    - Dst: Result::add_template
      Src: /src/opendal/dev/src/generate/python.rs:38,1
    - Dst: Result::add_function
      Src: /src/opendal/dev/src/generate/python.rs:39,1
    - Dst: Result::add_function
      Src: /src/opendal/dev/src/generate/python.rs:40,1
    - Dst: Result::add_function
      Src: /src/opendal/dev/src/generate/python.rs:41,1
    - Dst: Result::add_function
      Src: /src/opendal/dev/src/generate/python.rs:42,1
    - Dst: Result::add_function
      Src: /src/opendal/dev/src/generate/python.rs:43,1
    - Dst: Result::add_function
      Src: /src/opendal/dev/src/generate/python.rs:44,1
    - Dst: Result::get_template
      Src: /src/opendal/dev/src/generate/python.rs:45,1
    - Dst: PathBuf::join
      Src: /src/opendal/dev/src/generate/python.rs:47,1
    - Dst: render
      Src: /src/opendal/dev/src/generate/python.rs:48,1
    - Dst: ends_with
      Src: /src/opendal/dev/src/generate/python.rs:49,1
    - Dst: push
      Src: /src/opendal/dev/src/generate/python.rs:50,1
    - Dst: fs::write
      Src: /src/opendal/dev/src/generate/python.rs:52,1
    - Dst: Ok
      Src: /src/opendal/dev/src/generate/python.rs:53,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 45
    argCount: 2
    argNames:
    - workspace_dir
    - services
    argTypes:
    - PathBuf
    - Services
    constantsTouched: []
    func_position:
      end: 54
      start: 35
    functionDepth: 33
    functionLinenumber: 35
    functionLinenumberEnd: 54
    functionName: generate
    functionSourceFile: /src/opendal/dev/src/generate/python.rs
    functionUses: 1
    functionsReached:
    - render
    - push
    - Ok
    - Result::add_function
    - ends_with
    - Result::add_template
    - PathBuf::join
    - Environment::new
    - Result::get_template
    - generate::parser::sorted_services
    - fs::write
    linkageType: ''
    returnType: Result
    signature: 'pub fn generate(workspace_dir: PathBuf, services: Services) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: '&Path::join'
      Src: /src/opendal/dev/src/generate/docs.rs:267,1
    - Dst: fs::read_to_string
      Src: /src/opendal/dev/src/generate/docs.rs:269,1
    - Dst: with_context
      Src: /src/opendal/dev/src/generate/docs.rs:269,1
    - Dst: Regex::new
      Src: /src/opendal/dev/src/generate/docs.rs:271,1
    - Dst: Self::expect
      Src: /src/opendal/dev/src/generate/docs.rs:271,1
    - Dst: HashSet::new
      Src: /src/opendal/dev/src/generate/docs.rs:272,1
    - Dst: Result::lines
      Src: /src/opendal/dev/src/generate/docs.rs:273,1
    - Dst: Self::split
      Src: /src/opendal/dev/src/generate/docs.rs:276,1
    - Dst: next
      Src: /src/opendal/dev/src/generate/docs.rs:276,1
    - Dst: unwrap_or
      Src: /src/opendal/dev/src/generate/docs.rs:276,1
    - Dst: Self::Permit::captures_iter
      Src: /src/opendal/dev/src/generate/docs.rs:277,1
    - Dst: Result::insert
      Src: /src/opendal/dev/src/generate/docs.rs:278,1
    - Dst: to_string
      Src: /src/opendal/dev/src/generate/docs.rs:278,1
    - Dst: Ok
      Src: /src/opendal/dev/src/generate/docs.rs:281,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 33
    argCount: 2
    argNames:
    - workspace
    - cargo_rel
    argTypes:
    - '&Path'
    - '&str'
    constantsTouched: []
    func_position:
      end: 282
      start: 266
    functionDepth: 33
    functionLinenumber: 266
    functionLinenumberEnd: 282
    functionName: supported_schemes
    functionSourceFile: /src/opendal/dev/src/generate/docs.rs
    functionUses: 0
    functionsReached:
    - '&Path::join'
    - next
    - to_string
    - Self::Permit::captures_iter
    - Ok
    - Self::expect
    - Regex::new
    - Result::insert
    - with_context
    - fs::read_to_string
    - Self::split
    - Result::lines
    - HashSet::new
    - unwrap_or
    linkageType: ''
    returnType: Result
    signature: 'fn supported_schemes(workspace: &Path, cargo_rel: &str) -> Result<HashSet<String>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: as_deref
      Src: /src/opendal/dev/src/generate/docs.rs:302,1
    - Dst: unwrap_or
      Src: /src/opendal/dev/src/generate/docs.rs:302,1
    - Dst: as_deref
      Src: /src/opendal/dev/src/generate/docs.rs:303,1
    - Dst: as_deref
      Src: /src/opendal/dev/src/generate/docs.rs:304,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 19
    argCount: 1
    argNames:
    - c
    argTypes:
    - '&''a Config'
    constantsTouched: []
    func_position:
      end: 306
      start: 296
    functionDepth: 0
    functionLinenumber: 296
    functionLinenumberEnd: 306
    functionName: Field::from
    functionSourceFile: /src/opendal/dev/src/generate/docs.rs
    functionUses: 0
    functionsReached:
    - as_deref
    - unwrap_or
    linkageType: ''
    returnType: Self
    signature: 'fn from(c: &''a Config) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: clone
      Src: /src/opendal/dev/src/generate/docs.rs:312,1
    - Dst: friendly_type
      Src: /src/opendal/dev/src/generate/docs.rs:313,1
    - Dst: '&''static str::to_string'
      Src: /src/opendal/dev/src/generate/docs.rs:313,1
    - Dst: clone
      Src: /src/opendal/dev/src/generate/docs.rs:315,1
    - Dst: unwrap_or_else
      Src: /src/opendal/dev/src/generate/docs.rs:315,1
    - Dst: to_string
      Src: /src/opendal/dev/src/generate/docs.rs:315,1
    - Dst: clone
      Src: /src/opendal/dev/src/generate/docs.rs:316,1
    - Dst: clone
      Src: /src/opendal/dev/src/generate/docs.rs:317,1
    - Dst: clone
      Src: /src/opendal/dev/src/generate/docs.rs:318,1
    - Dst: clone
      Src: /src/opendal/dev/src/generate/docs.rs:319,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 30
    argCount: 1
    argNames:
    - c
    argTypes:
    - '&Config'
    constantsTouched: []
    func_position:
      end: 321
      start: 310
    functionDepth: 2
    functionLinenumber: 310
    functionLinenumberEnd: 321
    functionName: ConfigDoc::from
    functionSourceFile: /src/opendal/dev/src/generate/docs.rs
    functionUses: 0
    functionsReached:
    - friendly_type
    - to_string
    - clone
    - '&''static str::to_string'
    - unwrap_or_else
    linkageType: ''
    returnType: Self
    signature: 'fn from(c: &Config) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: '&''a [String]::iter'
      Src: /src/opendal/dev/src/generate/docs.rs:329,1
    - Dst: map
      Src: /src/opendal/dev/src/generate/docs.rs:329,1
    - Dst: Vec::iter
      Src: /src/opendal/dev/src/generate/docs.rs:332,1
    - Dst: filter
      Src: /src/opendal/dev/src/generate/docs.rs:332,1
    - Dst: collect
      Src: /src/opendal/dev/src/generate/docs.rs:332,1
    - Dst: Result::as_str
      Src: /src/opendal/dev/src/generate/docs.rs:333,1
    - Dst: Result::filter
      Src: /src/opendal/dev/src/generate/docs.rs:329,1
    - Dst: is_empty
      Src: /src/opendal/dev/src/generate/docs.rs:335,1
    - Dst: collect
      Src: /src/opendal/dev/src/generate/docs.rs:329,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 25
    argCount: 2
    argNames:
    - fields
    - groups
    argTypes:
    - '&''a [Field<''a>]'
    - '&''a [String]'
    constantsTouched: []
    func_position:
      end: 337
      start: 325
    functionDepth: 36
    functionLinenumber: 325
    functionLinenumberEnd: 337
    functionName: group_fields
    functionSourceFile: /src/opendal/dev/src/generate/docs.rs
    functionUses: 0
    functionsReached:
    - collect
    - filter
    - Result::filter
    - is_empty
    - map
    - Vec::iter
    - Result::as_str
    - '&''a [String]::iter'
    linkageType: ''
    returnType: Vec
    signature: 'fn group_fields<''a>(fields: &''a [Field<''a>],groups: &''a [String],)
      -> Vec<(&''a str, Vec<&''a Field<''a>>)>'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - ty
    argTypes:
    - ConfigType
    constantsTouched: []
    func_position:
      end: 352
      start: 339
    functionDepth: 0
    functionLinenumber: 339
    functionLinenumberEnd: 352
    functionName: friendly_type
    functionSourceFile: /src/opendal/dev/src/generate/docs.rs
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: '&''static str'
    signature: 'fn friendly_type(ty: ConfigType) -> &''static str'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: or
      Src: /src/opendal/dev/src/generate/docs.rs:370,1
    - Dst: unwrap_or
      Src: /src/opendal/dev/src/generate/docs.rs:370,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - f
    argTypes:
    - '&Field<''a>'
    constantsTouched: []
    func_position:
      end: 371
      start: 358
    functionDepth: 3
    functionLinenumber: 358
    functionLinenumberEnd: 371
    functionName: value_of
    functionSourceFile: /src/opendal/dev/src/generate/docs.rs
    functionUses: 0
    functionsReached:
    - or
    - unwrap_or
    linkageType: ''
    returnType: '&''a str'
    signature: 'fn value_of<''a>(f: &Field<''a>) -> &''a str'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::lines
      Src: /src/opendal/dev/src/generate/docs.rs:397,1
    - Dst: Self::trim
      Src: /src/opendal/dev/src/generate/docs.rs:398,1
    - Dst: is_empty
      Src: /src/opendal/dev/src/generate/docs.rs:398,1
    - Dst: Self::push_str
      Src: /src/opendal/dev/src/generate/docs.rs:399,1
    - Dst: trim_end
      Src: /src/opendal/dev/src/generate/docs.rs:399,1
    - Dst: Self::push_str
      Src: /src/opendal/dev/src/generate/docs.rs:401,1
    - Dst: Self::push_str
      Src: /src/opendal/dev/src/generate/docs.rs:402,1
    - Dst: Self::push
      Src: /src/opendal/dev/src/generate/docs.rs:404,1
    - Dst: clone
      Src: /src/opendal/dev/src/generate/docs.rs:408,1
    - Dst: push_str
      Src: /src/opendal/dev/src/generate/docs.rs:410,1
    - Dst: push_str
      Src: /src/opendal/dev/src/generate/docs.rs:412,1
    - Dst: '&[(&str, Vec<&Field>)]::len'
      Src: /src/opendal/dev/src/generate/docs.rs:414,1
    - Dst: clone
      Src: /src/opendal/dev/src/generate/docs.rs:415,1
    - Dst: anyhow::Result::push_str
      Src: /src/opendal/dev/src/generate/docs.rs:418,1
    - Dst: String::new
      Src: /src/opendal/dev/src/generate/docs.rs:422,1
    - Dst: comment_block
      Src: /src/opendal/dev/src/generate/docs.rs:423,1
    - Dst: push
      Src: /src/opendal/dev/src/generate/docs.rs:427,1
    - Dst: push
      Src: /src/opendal/dev/src/generate/docs.rs:429,1
    - Dst: is_empty
      Src: /src/opendal/dev/src/generate/docs.rs:433,1
    - Dst: anyhow::Result::push_str
      Src: /src/opendal/dev/src/generate/docs.rs:434,1
    - Dst: join
      Src: /src/opendal/dev/src/generate/docs.rs:434,1
    - Dst: trim_end
      Src: /src/opendal/dev/src/generate/docs.rs:434,1
    - Dst: anyhow::Result::push
      Src: /src/opendal/dev/src/generate/docs.rs:435,1
    - Dst: anyhow::Result::push_str
      Src: /src/opendal/dev/src/generate/docs.rs:438,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 94
    argCount: 3
    argNames:
    - required
    - grouped
    - s
    argTypes:
    - '&[&Field]'
    - '&[(&str, Vec<&Field>)]'
    - '&Syntax'
    constantsTouched: []
    func_position:
      end: 441
      start: 393
    functionDepth: 35
    functionLinenumber: 393
    functionLinenumberEnd: 441
    functionName: build
    functionSourceFile: /src/opendal/dev/src/generate/docs.rs
    functionUses: 63
    functionsReached:
    - trim_end
    - Self::trim
    - String::new
    - push
    - join
    - Self::push
    - push_str
    - anyhow::Result::push
    - clone
    - anyhow::Result::push_str
    - is_empty
    - Result::lines
    - Self::push_str
    - comment_block
    - '&[(&str, Vec<&Field>)]::len'
    linkageType: ''
    returnType: (String, String)
    signature: 'fn build(required: &[&Field], grouped: &[(&str, Vec<&Field>)], s:
      &Syntax) -> (String, String)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: '&str::to_string'
      Src: /src/opendal/dev/src/generate/docs.rs:452,1
    - Dst: '&str::to_string'
      Src: /src/opendal/dev/src/generate/docs.rs:465,1
    - Dst: '&str::to_string'
      Src: /src/opendal/dev/src/generate/docs.rs:474,1
    - Dst: '&str::to_string'
      Src: /src/opendal/dev/src/generate/docs.rs:480,1
    - Dst: '&str::to_string'
      Src: /src/opendal/dev/src/generate/docs.rs:490,1
    - Dst: '&str::to_string'
      Src: /src/opendal/dev/src/generate/docs.rs:496,1
    - Dst: '&str::to_string'
      Src: /src/opendal/dev/src/generate/docs.rs:511,1
    - Dst: '&str::to_string'
      Src: /src/opendal/dev/src/generate/docs.rs:521,1
    - Dst: build
      Src: /src/opendal/dev/src/generate/docs.rs:529,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 35
    argCount: 4
    argNames:
    - binding
    - scheme
    - required
    - grouped
    argTypes:
    - '&str'
    - '&str'
    - '&[&Field]'
    - '&[(&str, Vec<&Field>)]'
    constantsTouched: []
    func_position:
      end: 530
      start: 443
    functionDepth: 36
    functionLinenumber: 443
    functionLinenumberEnd: 530
    functionName: render_examples
    functionSourceFile: /src/opendal/dev/src/generate/docs.rs
    functionUses: 0
    functionsReached:
    - build
    - '&str::to_string'
    linkageType: ''
    returnType: (String, String)
    signature: 'fn render_examples(binding: &str,scheme: &str,required: &[&Field],grouped:
      &[(&str, Vec<&Field>)],) -> (String, String)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: workspace_dir
      Src: /src/opendal/dev/src/generate/mod.rs:27,1
    - Dst: parser::Services::new
      Src: /src/opendal/dev/src/generate/mod.rs:28,1
    - Dst: PathBuf::join
      Src: /src/opendal/dev/src/generate/mod.rs:31,1
    - Dst: Result::exists
      Src: /src/opendal/dev/src/generate/mod.rs:32,1
    - Dst: Services::extend
      Src: /src/opendal/dev/src/generate/mod.rs:33,1
    - Dst: parser::parse
      Src: /src/opendal/dev/src/generate/mod.rs:33,1
    - Dst: Result::to_string_lossy
      Src: /src/opendal/dev/src/generate/mod.rs:33,1
    - Dst: PathBuf::join
      Src: /src/opendal/dev/src/generate/mod.rs:37,1
    - Dst: Result::exists
      Src: /src/opendal/dev/src/generate/mod.rs:38,1
    - Dst: Services::extend
      Src: /src/opendal/dev/src/generate/mod.rs:39,1
    - Dst: parser::parse
      Src: /src/opendal/dev/src/generate/mod.rs:39,1
    - Dst: Result::to_string_lossy
      Src: /src/opendal/dev/src/generate/mod.rs:39,1
    - Dst: java::generate
      Src: /src/opendal/dev/src/generate/mod.rs:43,1
    - Dst: python::generate
      Src: /src/opendal/dev/src/generate/mod.rs:44,1
    - Dst: docs::generate
      Src: /src/opendal/dev/src/generate/mod.rs:45,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 35
    argCount: 1
    argNames:
    - language
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 48
      start: 26
    functionDepth: 34
    functionLinenumber: 26
    functionLinenumberEnd: 48
    functionName: run
    functionSourceFile: /src/opendal/dev/src/generate/mod.rs
    functionUses: 5
    functionsReached:
    - parser::parse
    - workspace_dir
    - java::generate
    - PathBuf::join
    - Result::to_string_lossy
    - Services::extend
    - Result::exists
    - docs::generate
    - parser::Services::new
    - python::generate
    linkageType: ''
    returnType: Result
    signature: 'pub fn run(language: &str) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - srv
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 33
      start: 25
    functionDepth: 0
    functionLinenumber: 25
    functionLinenumberEnd: 33
    functionName: enabled_service
    functionSourceFile: /src/opendal/dev/src/generate/python.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: 'fn enabled_service(srv: &str) -> bool'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: heck::AsUpperCamelCase
      Src: /src/opendal/dev/src/generate/java.rs:50,1
    - Dst: to_string
      Src: /src/opendal/dev/src/generate/java.rs:50,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - s
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 51
      start: 49
    functionDepth: 2
    functionLinenumber: 49
    functionLinenumberEnd: 51
    functionName: case_java_class_name
    functionSourceFile: /src/opendal/dev/src/generate/java.rs
    functionUses: 0
    functionsReached:
    - to_string
    - heck::AsUpperCamelCase
    linkageType: ''
    returnType: String
    signature: 'fn case_java_class_name(s: &str) -> String'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: heck::AsLowerCamelCase
      Src: /src/opendal/dev/src/generate/java.rs:54,1
    - Dst: to_string
      Src: /src/opendal/dev/src/generate/java.rs:54,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - s
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 55
      start: 53
    functionDepth: 2
    functionLinenumber: 53
    functionLinenumberEnd: 55
    functionName: case_java_field_name
    functionSourceFile: /src/opendal/dev/src/generate/java.rs
    functionUses: 0
    functionsReached:
    - heck::AsLowerCamelCase
    - to_string
    linkageType: ''
    returnType: String
    signature: 'fn case_java_field_name(s: &str) -> String'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: String::new
      Src: /src/opendal/dev/src/generate/java.rs:60,1
    - Dst: markdown::to_html
      Src: /src/opendal/dev/src/generate/java.rs:64,1
    - Dst: lines
      Src: /src/opendal/dev/src/generate/java.rs:66,1
    - Dst: Ok
      Src: /src/opendal/dev/src/generate/java.rs:104,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 34
    argCount: 1
    argNames:
    - field
    argTypes:
    - ViaDeserialize<Config>
    constantsTouched: []
    func_position:
      end: 105
      start: 57
    functionDepth: 35
    functionLinenumber: 57
    functionLinenumberEnd: 105
    functionName: make_field
    functionSourceFile: /src/opendal/dev/src/generate/java.rs
    functionUses: 0
    functionsReached:
    - lines
    - markdown::to_html
    - String::new
    - Ok
    linkageType: ''
    returnType: Result
    signature: 'fn make_field(field: ViaDeserialize<Config>) -> Result<String, minijinja::Error>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: String::new
      Src: /src/opendal/dev/src/generate/java.rs:110,1
    - Dst: Ok
      Src: /src/opendal/dev/src/generate/java.rs:150,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 16
    argCount: 1
    argNames:
    - field
    argTypes:
    - ViaDeserialize<Config>
    constantsTouched: []
    func_position:
      end: 151
      start: 107
    functionDepth: 2
    functionLinenumber: 107
    functionLinenumberEnd: 151
    functionName: make_populate_map
    functionSourceFile: /src/opendal/dev/src/generate/java.rs
    functionUses: 0
    functionsReached:
    - Ok
    - String::new
    linkageType: ''
    returnType: Result
    signature: 'fn make_populate_map(field: ViaDeserialize<Config>) -> Result<String,
      minijinja::Error>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Services::new
      Src: /src/opendal/dev/src/generate/parser.rs:33,1
    - Dst: Services::into_iter
      Src: /src/opendal/dev/src/generate/parser.rs:34,1
    - Dst: Result::as_str
      Src: /src/opendal/dev/src/generate/parser.rs:35,1
    - Dst: sort_by
      Src: /src/opendal/dev/src/generate/parser.rs:41,1
    - Dst: cmp
      Src: /src/opendal/dev/src/generate/parser.rs:41,1
    - Dst: Self::insert
      Src: /src/opendal/dev/src/generate/parser.rs:43,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 27
    argCount: 2
    argNames:
    - services
    - test
    argTypes:
    - Services
    - fn(&str) -> bool
    constantsTouched: []
    func_position:
      end: 46
      start: 32
    functionDepth: 6
    functionLinenumber: 32
    functionLinenumberEnd: 46
    functionName: sorted_services
    functionSourceFile: /src/opendal/dev/src/generate/parser.rs
    functionUses: 1
    functionsReached:
    - cmp
    - Self::insert
    - Services::new
    - sort_by
    - Result::as_str
    - Services::into_iter
    linkageType: ''
    returnType: Services
    signature: 'pub fn sorted_services(services: Services, test: fn(&str) -> bool)
      -> Services'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/dev/src/generate/parser.rs:113,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - s
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 129
      start: 112
    functionDepth: 0
    functionLinenumber: 112
    functionLinenumberEnd: 129
    functionName: ConfigType::from_str
    functionSourceFile: /src/opendal/dev/src/generate/parser.rs
    functionUses: 0
    functionsReached:
    - Ok
    linkageType: ''
    returnType: Result
    signature: 'fn from_str(s: &str) -> Result<Self>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Some
      Src: /src/opendal/dev/src/generate/parser.rs:175,1
    - Dst: to_string
      Src: /src/opendal/dev/src/generate/parser.rs:175,1
    - Dst: as_ref
      Src: /src/opendal/dev/src/generate/parser.rs:177,1
    - Dst: extract_name
      Src: /src/opendal/dev/src/generate/parser.rs:178,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - tree
    argTypes:
    - '&UseTree'
    constantsTouched: []
    func_position:
      end: 182
      start: 173
    functionDepth: 2
    functionLinenumber: 173
    functionLinenumberEnd: 182
    functionName: c::o::l::l::e::c::t::_::c::u::s::t::o::m::_::t::y::p::e::_::n::a::m::e::s::extract_name
    functionSourceFile: /src/opendal/dev/src/generate/parser.rs
    functionUses: 0
    functionsReached:
    - to_string
    - as_ref
    - extract_name
    - Some
    linkageType: ''
    returnType: Option
    signature: 'fn extract_name(tree: &UseTree) -> Option<String>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: HashSet::new
      Src: /src/opendal/dev/src/generate/parser.rs:184,1
    - Dst: extract_name
      Src: /src/opendal/dev/src/generate/parser.rs:187,1
    - Dst: OperationLabelNames::insert
      Src: /src/opendal/dev/src/generate/parser.rs:189,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 21
    argCount: 1
    argNames:
    - items
    argTypes:
    - '&[Item]'
    constantsTouched: []
    func_position:
      end: 193
      start: 172
    functionDepth: 6
    functionLinenumber: 172
    functionLinenumberEnd: 193
    functionName: collect_custom_type_names
    functionSourceFile: /src/opendal/dev/src/generate/parser.rs
    functionUses: 1
    functionsReached:
    - HashSet::new
    - OperationLabelNames::insert
    - extract_name
    linkageType: ''
    returnType: HashSet
    signature: 'fn collect_custom_type_names(items: &[Item]) -> HashSet<String>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: HashMap::default
      Src: /src/opendal/dev/src/generate/parser.rs:196,1
    - Dst: std::fs::read_dir
      Src: /src/opendal/dev/src/generate/parser.rs:198,1
    - Dst: Result::file_type
      Src: /src/opendal/dev/src/generate/parser.rs:200,1
    - Dst: is_file
      Src: /src/opendal/dev/src/generate/parser.rs:200,1
    - Dst: Result::path
      Src: /src/opendal/dev/src/generate/parser.rs:203,1
    - Dst: join
      Src: /src/opendal/dev/src/generate/parser.rs:203,1
    - Dst: exists
      Src: /src/opendal/dev/src/generate/parser.rs:205,1
    - Dst: Result::path
      Src: /src/opendal/dev/src/generate/parser.rs:208,1
    - Dst: join
      Src: /src/opendal/dev/src/generate/parser.rs:208,1
    - Dst: exists
      Src: /src/opendal/dev/src/generate/parser.rs:210,1
    - Dst: fs::read_to_string
      Src: /src/opendal/dev/src/generate/parser.rs:213,1
    - Dst: Result::file_name
      Src: /src/opendal/dev/src/generate/parser.rs:215,1
    - Dst: to_string_lossy
      Src: /src/opendal/dev/src/generate/parser.rs:215,1
    - Dst: to_string
      Src: /src/opendal/dev/src/generate/parser.rs:215,1
    - Dst: to_string_lossy
      Src: /src/opendal/dev/src/generate/parser.rs:216,1
    - Dst: to_string
      Src: /src/opendal/dev/src/generate/parser.rs:216,1
    - Dst: parse
      Src: /src/opendal/dev/src/generate/parser.rs:219,1
    - Dst: context
      Src: /src/opendal/dev/src/generate/parser.rs:219,1
    - Dst: Result::insert
      Src: /src/opendal/dev/src/generate/parser.rs:220,1
    - Dst: Ok
      Src: /src/opendal/dev/src/generate/parser.rs:223,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 57
    argCount: 1
    argNames:
    - path
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 224
      start: 195
    functionDepth: 34
    functionLinenumber: 195
    functionLinenumberEnd: 224
    functionName: parse
    functionSourceFile: /src/opendal/dev/src/generate/parser.rs
    functionUses: 70
    functionsReached:
    - context
    - to_string
    - std::fs::read_dir
    - Result::path
    - Ok
    - join
    - Result::file_name
    - Result::insert
    - fs::read_to_string
    - parse
    - Result::file_type
    - HashMap::default
    - exists
    - is_file
    - to_string_lossy
    linkageType: ''
    returnType: Result
    signature: 'pub fn parse(path: &str) -> Result<Services>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: syn::parse_file
      Src: /src/opendal/dev/src/generate/parser.rs:259,1
    - Dst: iter
      Src: /src/opendal/dev/src/generate/parser.rs:261,1
    - Dst: find_map
      Src: /src/opendal/dev/src/generate/parser.rs:261,1
    - Dst: to_string
      Src: /src/opendal/dev/src/generate/parser.rs:266,1
    - Dst: contains
      Src: /src/opendal/dev/src/generate/parser.rs:266,1
    - Dst: Some
      Src: /src/opendal/dev/src/generate/parser.rs:268,1
    - Dst: Result::clone
      Src: /src/opendal/dev/src/generate/parser.rs:268,1
    - Dst: ok_or_else
      Src: /src/opendal/dev/src/generate/parser.rs:261,1
    - Dst: collect_custom_type_names
      Src: /src/opendal/dev/src/generate/parser.rs:274,1
    - Dst: Vec::with_capacity
      Src: /src/opendal/dev/src/generate/parser.rs:276,1
    - Dst: len
      Src: /src/opendal/dev/src/generate/parser.rs:276,1
    - Dst: Self::parse_field
      Src: /src/opendal/dev/src/generate/parser.rs:278,1
    - Dst: Result::push
      Src: /src/opendal/dev/src/generate/parser.rs:279,1
    - Dst: Ok
      Src: /src/opendal/dev/src/generate/parser.rs:283,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 46
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 284
      start: 256
    functionDepth: 36
    functionLinenumber: 256
    functionLinenumberEnd: 284
    functionName: ServiceParser::parse
    functionSourceFile: /src/opendal/dev/src/generate/parser.rs
    functionUses: 0
    functionsReached:
    - Result::clone
    - to_string
    - iter
    - collect_custom_type_names
    - Self::parse_field
    - Vec::with_capacity
    - Ok
    - Some
    - Result::push
    - syn::parse_file
    - contains
    - len
    - find_map
    - ok_or_else
    linkageType: ''
    returnType: Result
    signature: fn parse(&self) -> Result<Service>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: clone
      Src: /src/opendal/dev/src/generate/parser.rs:288,1
    - Dst: ok_or_else
      Src: /src/opendal/dev/src/generate/parser.rs:288,1
    - Dst: Self::parse_attr_deprecated
      Src: /src/opendal/dev/src/generate/parser.rs:293,1
    - Dst: Self::parse_attr_comments
      Src: /src/opendal/dev/src/generate/parser.rs:294,1
    - Dst: Self::parse_attr_markers
      Src: /src/opendal/dev/src/generate/parser.rs:295,1
    - Dst: last
      Src: /src/opendal/dev/src/generate/parser.rs:299,1
    - Dst: ok_or_else
      Src: /src/opendal/dev/src/generate/parser.rs:299,1
    - Dst: first
      Src: /src/opendal/dev/src/generate/parser.rs:309,1
    - Dst: last
      Src: /src/opendal/dev/src/generate/parser.rs:311,1
    - Dst: to_string
      Src: /src/opendal/dev/src/generate/parser.rs:312,1
    - Dst: to_string
      Src: /src/opendal/dev/src/generate/parser.rs:323,1
    - Dst: as_str
      Src: /src/opendal/dev/src/generate/parser.rs:326,1
    - Dst: as_str().parse::<ConfigType>
      Src: /src/opendal/dev/src/generate/parser.rs:326,1
    - Dst: '&HashSet<String>::contains'
      Src: /src/opendal/dev/src/generate/parser.rs:328,1
    - Dst: Err
      Src: /src/opendal/dev/src/generate/parser.rs:335,1
    - Dst: Ok
      Src: /src/opendal/dev/src/generate/parser.rs:338,1
    - Dst: Result::to_string
      Src: /src/opendal/dev/src/generate/parser.rs:339,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 69
    argCount: 2
    argNames:
    - field
    - custom_types
    argTypes:
    - Field
    - '&HashSet<String>'
    constantsTouched: []
    func_position:
      end: 348
      start: 287
    functionDepth: 35
    functionLinenumber: 287
    functionLinenumberEnd: 348
    functionName: ServiceParser::parse_field
    functionSourceFile: /src/opendal/dev/src/generate/parser.rs
    functionUses: 2
    functionsReached:
    - to_string
    - Result::to_string
    - Ok
    - Self::parse_attr_comments
    - '&HashSet<String>::contains'
    - last
    - clone
    - as_str().parse::<ConfigType>
    - Err
    - Self::parse_attr_deprecated
    - as_str
    - Self::parse_attr_markers
    - ok_or_else
    - first
    linkageType: ''
    returnType: Result
    signature: 'fn parse_field(field: Field, custom_types: &HashSet<String>) -> Result<Config>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: iter
      Src: /src/opendal/dev/src/generate/parser.rs:352,1
    - Dst: filter
      Src: /src/opendal/dev/src/generate/parser.rs:352,1
    - Dst: path
      Src: /src/opendal/dev/src/generate/parser.rs:355,1
    - Dst: is_ident
      Src: /src/opendal/dev/src/generate/parser.rs:355,1
    - Dst: filter_map
      Src: /src/opendal/dev/src/generate/parser.rs:352,1
    - Dst: Some
      Src: /src/opendal/dev/src/generate/parser.rs:362,1
    - Dst: value
      Src: /src/opendal/dev/src/generate/parser.rs:362,1
    - Dst: Vec::trim
      Src: /src/opendal/dev/src/generate/parser.rs:362,1
    - Dst: to_string
      Src: /src/opendal/dev/src/generate/parser.rs:362,1
    - Dst: collect
      Src: /src/opendal/dev/src/generate/parser.rs:352,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 30
    argCount: 1
    argNames:
    - field
    argTypes:
    - '&Field'
    constantsTouched: []
    func_position:
      end: 368
      start: 351
    functionDepth: 34
    functionLinenumber: 351
    functionLinenumberEnd: 368
    functionName: ServiceParser::doc_lines
    functionSourceFile: /src/opendal/dev/src/generate/parser.rs
    functionUses: 0
    functionsReached:
    - to_string
    - iter
    - filter
    - collect
    - is_ident
    - Some
    - Vec::trim
    - path
    - value
    - filter_map
    linkageType: ''
    returnType: Vec
    signature: 'fn doc_lines(field: &Field) -> Vec<String>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self::trim
      Src: /src/opendal/dev/src/generate/parser.rs:378,1
    - Dst: Self::strip_prefix
      Src: /src/opendal/dev/src/generate/parser.rs:379,1
    - Dst: and_then
      Src: /src/opendal/dev/src/generate/parser.rs:379,1
    - Dst: Trial::strip_suffix
      Src: /src/opendal/dev/src/generate/parser.rs:381,1
    - Dst: map
      Src: /src/opendal/dev/src/generate/parser.rs:379,1
    - Dst: unwrap_or
      Src: /src/opendal/dev/src/generate/parser.rs:379,1
    - Dst: Arc::strip_prefix
      Src: /src/opendal/dev/src/generate/parser.rs:384,1
    - Dst: split_once
      Src: /src/opendal/dev/src/generate/parser.rs:385,1
    - Dst: Vec::trim
      Src: /src/opendal/dev/src/generate/parser.rs:386,1
    - Dst: to_string
      Src: /src/opendal/dev/src/generate/parser.rs:386,1
    - Dst: Some
      Src: /src/opendal/dev/src/generate/parser.rs:388,1
    - Dst: Some
      Src: /src/opendal/dev/src/generate/parser.rs:389,1
    - Dst: Some
      Src: /src/opendal/dev/src/generate/parser.rs:390,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 31
    argCount: 1
    argNames:
    - line
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 393
      start: 377
    functionDepth: 2
    functionLinenumber: 377
    functionLinenumberEnd: 393
    functionName: ServiceParser::parse_marker
    functionSourceFile: /src/opendal/dev/src/generate/parser.rs
    functionUses: 0
    functionsReached:
    - to_string
    - Self::trim
    - split_once
    - Trial::strip_suffix
    - and_then
    - Arc::strip_prefix
    - Some
    - map
    - Vec::trim
    - Self::strip_prefix
    - unwrap_or
    linkageType: ''
    returnType: Option
    signature: 'fn parse_marker(line: &str) -> Option<(&''static str, String)>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self::doc_lines
      Src: /src/opendal/dev/src/generate/parser.rs:400,1
    - Dst: Vec::into_iter
      Src: /src/opendal/dev/src/generate/parser.rs:400,1
    - Dst: filter
      Src: /src/opendal/dev/src/generate/parser.rs:400,1
    - Dst: Self::parse_marker
      Src: /src/opendal/dev/src/generate/parser.rs:402,1
    - Dst: Option::is_none
      Src: /src/opendal/dev/src/generate/parser.rs:402,1
    - Dst: collect
      Src: /src/opendal/dev/src/generate/parser.rs:400,1
    - Dst: Vec::last
      Src: /src/opendal/dev/src/generate/parser.rs:406,1
    - Dst: is_some_and
      Src: /src/opendal/dev/src/generate/parser.rs:406,1
    - Dst: Trial::is_empty
      Src: /src/opendal/dev/src/generate/parser.rs:406,1
    - Dst: Vec::pop
      Src: /src/opendal/dev/src/generate/parser.rs:407,1
    - Dst: Ok
      Src: /src/opendal/dev/src/generate/parser.rs:410,1
    - Dst: Vec::join
      Src: /src/opendal/dev/src/generate/parser.rs:410,1
    - Dst: Result::trim
      Src: /src/opendal/dev/src/generate/parser.rs:410,1
    - Dst: to_string
      Src: /src/opendal/dev/src/generate/parser.rs:410,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 30
    argCount: 1
    argNames:
    - field
    argTypes:
    - '&Field'
    constantsTouched: []
    func_position:
      end: 411
      start: 399
    functionDepth: 35
    functionLinenumber: 399
    functionLinenumberEnd: 411
    functionName: ServiceParser::parse_attr_comments
    functionSourceFile: /src/opendal/dev/src/generate/parser.rs
    functionUses: 1
    functionsReached:
    - collect
    - filter
    - to_string
    - Self::parse_marker
    - Ok
    - Vec::into_iter
    - is_some_and
    - Trial::is_empty
    - Self::doc_lines
    - Option::is_none
    - Vec::join
    - Vec::pop
    - Result::trim
    - Vec::last
    linkageType: ''
    returnType: Result
    signature: 'fn parse_attr_comments(field: &Field) -> Result<String>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: DocMarkers::default
      Src: /src/opendal/dev/src/generate/parser.rs:415,1
    - Dst: Self::doc_lines
      Src: /src/opendal/dev/src/generate/parser.rs:416,1
    - Dst: Self::parse_marker
      Src: /src/opendal/dev/src/generate/parser.rs:417,1
    - Dst: Some
      Src: /src/opendal/dev/src/generate/parser.rs:419,1
    - Dst: Some
      Src: /src/opendal/dev/src/generate/parser.rs:420,1
    - Dst: Some
      Src: /src/opendal/dev/src/generate/parser.rs:421,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 19
    argCount: 1
    argNames:
    - field
    argTypes:
    - '&Field'
    constantsTouched: []
    func_position:
      end: 427
      start: 414
    functionDepth: 35
    functionLinenumber: 414
    functionLinenumberEnd: 427
    functionName: ServiceParser::parse_attr_markers
    functionSourceFile: /src/opendal/dev/src/generate/parser.rs
    functionUses: 0
    functionsReached:
    - DocMarkers::default
    - Some
    - Self::parse_marker
    - Self::doc_lines
    linkageType: ''
    returnType: DocMarkers
    signature: 'fn parse_attr_markers(field: &Field) -> DocMarkers'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: iter
      Src: /src/opendal/dev/src/generate/parser.rs:439,1
    - Dst: filter
      Src: /src/opendal/dev/src/generate/parser.rs:439,1
    - Dst: path
      Src: /src/opendal/dev/src/generate/parser.rs:442,1
    - Dst: is_ident
      Src: /src/opendal/dev/src/generate/parser.rs:442,1
    - Dst: collect
      Src: /src/opendal/dev/src/generate/parser.rs:439,1
    - Dst: Result::len
      Src: /src/opendal/dev/src/generate/parser.rs:445,1
    - Dst: Err
      Src: /src/opendal/dev/src/generate/parser.rs:446,1
    - Dst: Result::first
      Src: /src/opendal/dev/src/generate/parser.rs:449,1
    - Dst: Ok
      Src: /src/opendal/dev/src/generate/parser.rs:450,1
    - Dst: AttrDeprecated::default
      Src: /src/opendal/dev/src/generate/parser.rs:453,1
    - Dst: parse_nested_meta
      Src: /src/opendal/dev/src/generate/parser.rs:455,1
    - Dst: is_ident
      Src: /src/opendal/dev/src/generate/parser.rs:457,1
    - Dst: Result::value
      Src: /src/opendal/dev/src/generate/parser.rs:459,1
    - Dst: Vec::parse
      Src: /src/opendal/dev/src/generate/parser.rs:461,1
    - Dst: value
      Src: /src/opendal/dev/src/generate/parser.rs:462,1
    - Dst: is_ident
      Src: /src/opendal/dev/src/generate/parser.rs:466,1
    - Dst: Result::value
      Src: /src/opendal/dev/src/generate/parser.rs:468,1
    - Dst: Vec::parse
      Src: /src/opendal/dev/src/generate/parser.rs:470,1
    - Dst: value
      Src: /src/opendal/dev/src/generate/parser.rs:471,1
    - Dst: Ok
      Src: /src/opendal/dev/src/generate/parser.rs:474,1
    - Dst: Ok
      Src: /src/opendal/dev/src/generate/parser.rs:477,1
    - Dst: Some
      Src: /src/opendal/dev/src/generate/parser.rs:477,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 67
    argCount: 1
    argNames:
    - field
    argTypes:
    - '&Field'
    constantsTouched: []
    func_position:
      end: 478
      start: 438
    functionDepth: 34
    functionLinenumber: 438
    functionLinenumberEnd: 478
    functionName: ServiceParser::parse_attr_deprecated
    functionSourceFile: /src/opendal/dev/src/generate/parser.rs
    functionUses: 0
    functionsReached:
    - collect
    - iter
    - filter
    - Ok
    - is_ident
    - Err
    - Vec::parse
    - Some
    - Result::value
    - Result::first
    - path
    - Result::len
    - parse_nested_meta
    - value
    - AttrDeprecated::default
    linkageType: ''
    returnType: Result
    signature: 'fn parse_attr_deprecated(field: &Field) -> Result<Option<AttrDeprecated>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: syn::parse_str
      Src: /src/opendal/dev/src/generate/parser.rs:521,1
    - Dst: unwrap
      Src: /src/opendal/dev/src/generate/parser.rs:521,1
    - Dst: ServiceParser::parse_field
      Src: /src/opendal/dev/src/generate/parser.rs:522,1
    - Dst: iter
      Src: /src/opendal/dev/src/generate/parser.rs:523,1
    - Dst: next
      Src: /src/opendal/dev/src/generate/parser.rs:523,1
    - Dst: unwrap
      Src: /src/opendal/dev/src/generate/parser.rs:523,1
    - Dst: clone
      Src: /src/opendal/dev/src/generate/parser.rs:523,1
    - Dst: HashSet::new
      Src: /src/opendal/dev/src/generate/parser.rs:524,1
    - Dst: Result::unwrap
      Src: /src/opendal/dev/src/generate/parser.rs:522,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 21
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 529
      start: 489
    functionDepth: 35
    functionLinenumber: 489
    functionLinenumberEnd: 529
    functionName: tests::test_parse_field
    functionSourceFile: /src/opendal/dev/src/generate/parser.rs
    functionUses: 0
    functionsReached:
    - next
    - iter
    - unwrap
    - clone
    - Result::unwrap
    - ServiceParser::parse_field
    - syn::parse_str
    - HashSet::new
    linkageType: ''
    returnType: void
    signature: fn test_parse_field()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: syn::parse_str
      Src: /src/opendal/dev/src/generate/parser.rs:551,1
    - Dst: unwrap
      Src: /src/opendal/dev/src/generate/parser.rs:551,1
    - Dst: ServiceParser::parse_attr_comments
      Src: /src/opendal/dev/src/generate/parser.rs:554,1
    - Dst: iter
      Src: /src/opendal/dev/src/generate/parser.rs:554,1
    - Dst: next
      Src: /src/opendal/dev/src/generate/parser.rs:554,1
    - Dst: unwrap
      Src: /src/opendal/dev/src/generate/parser.rs:554,1
    - Dst: clone
      Src: /src/opendal/dev/src/generate/parser.rs:554,1
    - Dst: Result::unwrap
      Src: /src/opendal/dev/src/generate/parser.rs:554,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 20
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 558
      start: 532
    functionDepth: 35
    functionLinenumber: 532
    functionLinenumberEnd: 558
    functionName: tests::test_parse_field_comments
    functionSourceFile: /src/opendal/dev/src/generate/parser.rs
    functionUses: 0
    functionsReached:
    - next
    - iter
    - ServiceParser::parse_attr_comments
    - unwrap
    - clone
    - Result::unwrap
    - syn::parse_str
    linkageType: ''
    returnType: void
    signature: fn test_parse_field_comments()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: '&str::to_string'
      Src: /src/opendal/dev/src/generate/parser.rs:769,1
    - Dst: '&str::to_string'
      Src: /src/opendal/dev/src/generate/parser.rs:770,1
    - Dst: Result::to_string
      Src: /src/opendal/dev/src/generate/parser.rs:771,1
    - Dst: parse
      Src: /src/opendal/dev/src/generate/parser.rs:774,1
    - Dst: unwrap
      Src: /src/opendal/dev/src/generate/parser.rs:774,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 813
      start: 561
    functionDepth: 35
    functionLinenumber: 561
    functionLinenumberEnd: 813
    functionName: tests::test_parse_service
    functionSourceFile: /src/opendal/dev/src/generate/parser.rs
    functionUses: 0
    functionsReached:
    - parse
    - unwrap
    - '&str::to_string'
    - Result::to_string
    linkageType: ''
    returnType: void
    signature: fn test_parse_service()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: syn::parse_str
      Src: /src/opendal/dev/src/generate/parser.rs:829,1
    - Dst: unwrap
      Src: /src/opendal/dev/src/generate/parser.rs:829,1
    - Dst: ServiceParser::parse_field
      Src: /src/opendal/dev/src/generate/parser.rs:831,1
    - Dst: iter
      Src: /src/opendal/dev/src/generate/parser.rs:831,1
    - Dst: next
      Src: /src/opendal/dev/src/generate/parser.rs:831,1
    - Dst: unwrap
      Src: /src/opendal/dev/src/generate/parser.rs:831,1
    - Dst: clone
      Src: /src/opendal/dev/src/generate/parser.rs:831,1
    - Dst: HashSet::new
      Src: /src/opendal/dev/src/generate/parser.rs:831,1
    - Dst: Result::unwrap
      Src: /src/opendal/dev/src/generate/parser.rs:831,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 21
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 839
      start: 816
    functionDepth: 35
    functionLinenumber: 816
    functionLinenumberEnd: 839
    functionName: tests::test_parse_field_markers
    functionSourceFile: /src/opendal/dev/src/generate/parser.rs
    functionUses: 0
    functionsReached:
    - next
    - iter
    - unwrap
    - clone
    - Result::unwrap
    - ServiceParser::parse_field
    - syn::parse_str
    - HashSet::new
    linkageType: ''
    returnType: void
    signature: fn test_parse_field_markers()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: workspace_dir
      Src: /src/opendal/dev/src/generate/parser.rs:843,1
    - Dst: PathBuf::join
      Src: /src/opendal/dev/src/generate/parser.rs:843,1
    - Dst: Result::canonicalize
      Src: /src/opendal/dev/src/generate/parser.rs:843,1
    - Dst: unwrap
      Src: /src/opendal/dev/src/generate/parser.rs:843,1
    - Dst: parse
      Src: /src/opendal/dev/src/generate/parser.rs:849,1
    - Dst: to_string_lossy
      Src: /src/opendal/dev/src/generate/parser.rs:849,1
    - Dst: Result::unwrap
      Src: /src/opendal/dev/src/generate/parser.rs:849,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 850
      start: 842
    functionDepth: 34
    functionLinenumber: 842
    functionLinenumberEnd: 850
    functionName: tests::test_parse
    functionSourceFile: /src/opendal/dev/src/generate/parser.rs
    functionUses: 0
    functionsReached:
    - Result::canonicalize
    - workspace_dir
    - unwrap
    - PathBuf::join
    - parse
    - Result::unwrap
    - to_string_lossy
    linkageType: ''
    returnType: void
    signature: fn test_parse()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::replace
      Src: /src/opendal/dev/src/generate/python.rs:57,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - str
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 58
      start: 56
    functionDepth: 1
    functionLinenumber: 56
    functionLinenumberEnd: 58
    functionName: snake_to_kebab_case
    functionSourceFile: /src/opendal/dev/src/generate/python.rs
    functionUses: 0
    functionsReached:
    - Result::replace
    linkageType: ''
    returnType: String
    signature: 'fn snake_to_kebab_case(str: &str) -> String'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 1
    argNames:
    - service
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 62
      start: 60
    functionDepth: 0
    functionLinenumber: 60
    functionLinenumberEnd: 62
    functionName: service_to_feature
    functionSourceFile: /src/opendal/dev/src/generate/python.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: String
    signature: 'fn service_to_feature(service: &str) -> String'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: String::with_capacity
      Src: /src/opendal/dev/src/generate/python.rs:65,1
    - Dst: Servicer::len
      Src: /src/opendal/dev/src/generate/python.rs:65,1
    - Dst: Servicer::as_bytes
      Src: /src/opendal/dev/src/generate/python.rs:68,1
    - Dst: bool::push
      Src: /src/opendal/dev/src/generate/python.rs:72,1
    - Dst: to_ascii_uppercase
      Src: /src/opendal/dev/src/generate/python.rs:72,1
    - Dst: bool::push
      Src: /src/opendal/dev/src/generate/python.rs:75,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 28
    argCount: 1
    argNames:
    - service
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 80
      start: 64
    functionDepth: 3
    functionLinenumber: 64
    functionLinenumberEnd: 80
    functionName: service_to_pascal
    functionSourceFile: /src/opendal/dev/src/generate/python.rs
    functionUses: 0
    functionsReached:
    - bool::push
    - String::with_capacity
    - Servicer::len
    - Servicer::as_bytes
    - to_ascii_uppercase
    linkageType: ''
    returnType: String
    signature: 'fn service_to_pascal(service: &str) -> String'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: '&str::repeat'
      Src: /src/opendal/dev/src/generate/python.rs:97,1
    - Dst: usize::saturating_sub
      Src: /src/opendal/dev/src/generate/python.rs:98,1
    - Dst: String::with_capacity
      Src: /src/opendal/dev/src/generate/python.rs:101,1
    - Dst: OperationContext::len
      Src: /src/opendal/dev/src/generate/python.rs:101,1
    - Dst: OperationContext::len
      Src: /src/opendal/dev/src/generate/python.rs:101,1
    - Dst: String::with_capacity
      Src: /src/opendal/dev/src/generate/python.rs:105,1
    - Dst: len
      Src: /src/opendal/dev/src/generate/python.rs:105,1
    - Dst: chars
      Src: /src/opendal/dev/src/generate/python.rs:107,1
    - Dst: Result::is_whitespace
      Src: /src/opendal/dev/src/generate/python.rs:108,1
    - Dst: bool::push
      Src: /src/opendal/dev/src/generate/python.rs:110,1
    - Dst: bool::push
      Src: /src/opendal/dev/src/generate/python.rs:114,1
    - Dst: bool::trim
      Src: /src/opendal/dev/src/generate/python.rs:118,1
    - Dst: to_owned
      Src: /src/opendal/dev/src/generate/python.rs:118,1
    - Dst: OperationContext::chars
      Src: /src/opendal/dev/src/generate/python.rs:123,1
    - Dst: Result::collect
      Src: /src/opendal/dev/src/generate/python.rs:123,1
    - Dst: Vec::new
      Src: /src/opendal/dev/src/generate/python.rs:124,1
    - Dst: Result::iter
      Src: /src/opendal/dev/src/generate/python.rs:126,1
    - Dst: enumerate
      Src: /src/opendal/dev/src/generate/python.rs:126,1
    - Dst: Result::len
      Src: /src/opendal/dev/src/generate/python.rs:128,1
    - Dst: is_whitespace
      Src: /src/opendal/dev/src/generate/python.rs:128,1
    - Dst: Self::push
      Src: /src/opendal/dev/src/generate/python.rs:130,1
    - Dst: Self::push
      Src: /src/opendal/dev/src/generate/python.rs:135,1
    - Dst: OperationContext::len
      Src: /src/opendal/dev/src/generate/python.rs:142,1
    - Dst: Self::push
      Src: /src/opendal/dev/src/generate/python.rs:143,1
    - Dst: normalize
      Src: /src/opendal/dev/src/generate/python.rs:148,1
    - Dst: String::is_empty
      Src: /src/opendal/dev/src/generate/python.rs:149,1
    - Dst: String::with_capacity
      Src: /src/opendal/dev/src/generate/python.rs:153,1
    - Dst: String::split_whitespace
      Src: /src/opendal/dev/src/generate/python.rs:154,1
    - Dst: Self::is_empty
      Src: /src/opendal/dev/src/generate/python.rs:155,1
    - Dst: Self::push_str
      Src: /src/opendal/dev/src/generate/python.rs:156,1
    - Dst: Self::len
      Src: /src/opendal/dev/src/generate/python.rs:157,1
    - Dst: Option::len
      Src: /src/opendal/dev/src/generate/python.rs:157,1
    - Dst: Self::push
      Src: /src/opendal/dev/src/generate/python.rs:158,1
    - Dst: Self::push_str
      Src: /src/opendal/dev/src/generate/python.rs:159,1
    - Dst: Result::push_str
      Src: /src/opendal/dev/src/generate/python.rs:162,1
    - Dst: Result::push_str
      Src: /src/opendal/dev/src/generate/python.rs:163,1
    - Dst: Self::trim_end
      Src: /src/opendal/dev/src/generate/python.rs:163,1
    - Dst: Result::push
      Src: /src/opendal/dev/src/generate/python.rs:164,1
    - Dst: Self::clear
      Src: /src/opendal/dev/src/generate/python.rs:167,1
    - Dst: Self::push_str
      Src: /src/opendal/dev/src/generate/python.rs:168,1
    - Dst: Self::is_empty
      Src: /src/opendal/dev/src/generate/python.rs:173,1
    - Dst: Result::push_str
      Src: /src/opendal/dev/src/generate/python.rs:174,1
    - Dst: Result::push_str
      Src: /src/opendal/dev/src/generate/python.rs:175,1
    - Dst: Self::trim_end
      Src: /src/opendal/dev/src/generate/python.rs:175,1
    - Dst: Result::push
      Src: /src/opendal/dev/src/generate/python.rs:176,1
    - Dst: Result::ends_with
      Src: /src/opendal/dev/src/generate/python.rs:181,1
    - Dst: Result::pop
      Src: /src/opendal/dev/src/generate/python.rs:182,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 171
    argCount: 3
    argNames:
    - text
    - indent
    - max_line_length
    argTypes:
    - '&str'
    - usize
    - usize
    constantsTouched: []
    func_position:
      end: 186
      start: 95
    functionDepth: 31
    functionLinenumber: 95
    functionLinenumberEnd: 186
    functionName: format_text
    functionSourceFile: /src/opendal/dev/src/generate/python.rs
    functionUses: 1
    functionsReached:
    - Self::clear
    - Result::push_str
    - is_whitespace
    - bool::push
    - Result::ends_with
    - OperationContext::len
    - Result::pop
    - Option::len
    - Result::len
    - Self::push_str
    - Vec::new
    - Self::trim_end
    - normalize
    - Self::len
    - String::split_whitespace
    - Self::is_empty
    - Result::iter
    - Result::push
    - '&str::repeat'
    - to_owned
    - chars
    - OperationContext::chars
    - len
    - Result::is_whitespace
    - bool::trim
    - String::with_capacity
    - Self::push
    - String::is_empty
    - enumerate
    - usize::saturating_sub
    - Result::collect
    linkageType: ''
    returnType: String
    signature: 'pub fn format_text(text: &str, indent: usize, max_line_length: usize)
      -> String'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: make_python_type
      Src: /src/opendal/dev/src/generate/python.rs:194,1
    - Dst: Ok
      Src: /src/opendal/dev/src/generate/python.rs:198,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 3
    argNames:
    - name
    - ty
    - optional
    argTypes:
    - '&str'
    - ViaDeserialize<ConfigType>
    - bool
    constantsTouched: []
    func_position:
      end: 199
      start: 189
    functionDepth: 3
    functionLinenumber: 189
    functionLinenumberEnd: 199
    functionName: make_pydoc_param_header
    functionSourceFile: /src/opendal/dev/src/generate/python.rs
    functionUses: 0
    functionsReached:
    - make_python_type
    - Ok
    linkageType: ''
    returnType: Result
    signature: 'pub fn make_pydoc_param_header(name: &str,ty: ViaDeserialize<ConfigType>,optional:
      bool,) -> Result<String, minijinja::Error>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Vec::new
      Src: /src/opendal/dev/src/generate/python.rs:207,1
    - Dst: Result::trim
      Src: /src/opendal/dev/src/generate/python.rs:208,1
    - Dst: Result::is_empty
      Src: /src/opendal/dev/src/generate/python.rs:210,1
    - Dst: Result::replace
      Src: /src/opendal/dev/src/generate/python.rs:211,1
    - Dst: is_empty
      Src: /src/opendal/dev/src/generate/python.rs:212,1
    - Dst: Self::push
      Src: /src/opendal/dev/src/generate/python.rs:213,1
    - Dst: Self::push
      Src: /src/opendal/dev/src/generate/python.rs:218,1
    - Dst: '&str::to_string'
      Src: /src/opendal/dev/src/generate/python.rs:219,1
    - Dst: Self::push
      Src: /src/opendal/dev/src/generate/python.rs:221,1
    - Dst: '&str::to_string'
      Src: /src/opendal/dev/src/generate/python.rs:222,1
    - Dst: Ok
      Src: /src/opendal/dev/src/generate/python.rs:227,1
    - Dst: format_text
      Src: /src/opendal/dev/src/generate/python.rs:227,1
    - Dst: Self::join
      Src: /src/opendal/dev/src/generate/python.rs:227,1
    - Dst: String::trim_end
      Src: /src/opendal/dev/src/generate/python.rs:227,1
    - Dst: to_string
      Src: /src/opendal/dev/src/generate/python.rs:227,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 38
    argCount: 2
    argNames:
    - comments
    - ty
    argTypes:
    - '&str'
    - ViaDeserialize<ConfigType>
    constantsTouched: []
    func_position:
      end: 230
      start: 202
    functionDepth: 32
    functionLinenumber: 202
    functionLinenumberEnd: 230
    functionName: make_pydoc_param
    functionSourceFile: /src/opendal/dev/src/generate/python.rs
    functionUses: 0
    functionsReached:
    - to_string
    - Ok
    - format_text
    - Self::push
    - is_empty
    - Self::join
    - Result::is_empty
    - '&str::to_string'
    - Result::replace
    - Vec::new
    - Result::trim
    - String::trim_end
    linkageType: ''
    returnType: Result
    signature: 'pub fn make_pydoc_param(comments: &str,ty: ViaDeserialize<ConfigType>,)
      -> Result<String, minijinja::Error>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/dev/src/generate/python.rs:233,1
    - Dst: to_string
      Src: /src/opendal/dev/src/generate/python.rs:233,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - ty
    argTypes:
    - ViaDeserialize<ConfigType>
    constantsTouched: []
    func_position:
      end: 246
      start: 232
    functionDepth: 2
    functionLinenumber: 232
    functionLinenumberEnd: 246
    functionName: make_python_type
    functionSourceFile: /src/opendal/dev/src/generate/python.rs
    functionUses: 1
    functionsReached:
    - to_string
    - Ok
    linkageType: ''
    returnType: Result
    signature: 'fn make_python_type(ty: ViaDeserialize<ConfigType>) -> Result<String,
      minijinja::Error>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Vec<ffi::HashMapValue>::into_iter
      Src: /src/opendal/bindings/cpp/src/lib.rs:163,1
    - Dst: map
      Src: /src/opendal/bindings/cpp/src/lib.rs:163,1
    - Dst: collect
      Src: /src/opendal/bindings/cpp/src/lib.rs:163,1
    - Dst: od::init_default_registry
      Src: /src/opendal/bindings/cpp/src/lib.rs:168,1
    - Dst: tokio::runtime::Handle::try_current
      Src: /src/opendal/bindings/cpp/src/lib.rs:171,1
    - Dst: unwrap_or_else
      Src: /src/opendal/bindings/cpp/src/lib.rs:171,1
    - Dst: handle
      Src: /src/opendal/bindings/cpp/src/lib.rs:171,1
    - Dst: clone
      Src: /src/opendal/bindings/cpp/src/lib.rs:171,1
    - Dst: enter
      Src: /src/opendal/bindings/cpp/src/lib.rs:172,1
    - Dst: od::Operator::via_iter
      Src: /src/opendal/bindings/cpp/src/lib.rs:174,1
    - Dst: od::blocking::Operator::new
      Src: /src/opendal/bindings/cpp/src/lib.rs:175,1
    - Dst: Box::into_raw
      Src: /src/opendal/bindings/cpp/src/lib.rs:177,1
    - Dst: Box::new
      Src: /src/opendal/bindings/cpp/src/lib.rs:177,1
    - Dst: Operator
      Src: /src/opendal/bindings/cpp/src/lib.rs:177,1
    - Dst: Ok
      Src: /src/opendal/bindings/cpp/src/lib.rs:179,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 30
    argCount: 2
    argNames:
    - scheme
    - configs
    argTypes:
    - '&str'
    - Vec<ffi::HashMapValue>
    constantsTouched: []
    func_position:
      end: 180
      start: 162
    functionDepth: 36
    functionLinenumber: 162
    functionLinenumberEnd: 180
    functionName: new_operator
    functionSourceFile: /src/opendal/bindings/cpp/src/lib.rs
    functionUses: 9
    functionsReached:
    - collect
    - od::Operator::via_iter
    - Box::into_raw
    - Ok
    - Box::new
    - od::init_default_registry
    - clone
    - map
    - handle
    - od::blocking::Operator::new
    - Vec<ffi::HashMapValue>::into_iter
    - Operator
    - tokio::runtime::Handle::try_current
    - unwrap_or_else
    - enter
    linkageType: ''
    returnType: Result
    signature: 'fn new_operator(scheme: &str, configs: Vec<ffi::HashMapValue>) ->
      Result<*mut Operator>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result<T, od::Error>::map_err
      Src: /src/opendal/bindings/ocaml/src/lib.rs:43,1
    - Dst: Result::to_string
      Src: /src/opendal/bindings/ocaml/src/lib.rs:43,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - res
    argTypes:
    - Result<T, od::Error>
    constantsTouched: []
    func_position:
      end: 44
      start: 42
    functionDepth: 2
    functionLinenumber: 42
    functionLinenumberEnd: 44
    functionName: map_res_error
    functionSourceFile: /src/opendal/bindings/ocaml/src/lib.rs
    functionUses: 6
    functionsReached:
    - Result<T, od::Error>::map_err
    - Result::to_string
    linkageType: ''
    returnType: Result
    signature: 'pub fn map_res_error<T>(res: Result<T, od::Error>) -> Result<T, String>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: get::<ODMetadata>
      Src: /src/opendal/bindings/lua/src/lib.rs:175,1
    - Dst: Ok
      Src: /src/opendal/bindings/lua/src/lib.rs:178,1
    - Dst: anyhow::Result::is_file
      Src: /src/opendal/bindings/lua/src/lib.rs:178,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - metadata
    argTypes:
    - '&Lua'
    - LuaTable
    constantsTouched: []
    func_position:
      end: 179
      start: 174
    functionDepth: 0
    functionLinenumber: 174
    functionLinenumberEnd: 179
    functionName: metadata_is_file
    functionSourceFile: /src/opendal/bindings/lua/src/lib.rs
    functionUses: 0
    functionsReached:
    - anyhow::Result::is_file
    - Ok
    - get::<ODMetadata>
    linkageType: ''
    returnType: LuaResult
    signature: 'fn metadata_is_file(_: &Lua, metadata: LuaTable) -> LuaResult<bool>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: get::<ODMetadata>
      Src: /src/opendal/bindings/lua/src/lib.rs:182,1
    - Dst: Ok
      Src: /src/opendal/bindings/lua/src/lib.rs:185,1
    - Dst: anyhow::Result::is_dir
      Src: /src/opendal/bindings/lua/src/lib.rs:185,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - metadata
    argTypes:
    - '&Lua'
    - LuaTable
    constantsTouched: []
    func_position:
      end: 186
      start: 181
    functionDepth: 0
    functionLinenumber: 181
    functionLinenumberEnd: 186
    functionName: metadata_is_dir
    functionSourceFile: /src/opendal/bindings/lua/src/lib.rs
    functionUses: 0
    functionsReached:
    - anyhow::Result::is_dir
    - Ok
    - get::<ODMetadata>
    linkageType: ''
    returnType: LuaResult
    signature: 'fn metadata_is_dir(_: &Lua, metadata: LuaTable) -> LuaResult<bool>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: get::<ODMetadata>
      Src: /src/opendal/bindings/lua/src/lib.rs:168,1
    - Dst: Ok
      Src: /src/opendal/bindings/lua/src/lib.rs:171,1
    - Dst: anyhow::Result::content_length
      Src: /src/opendal/bindings/lua/src/lib.rs:171,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - metadata
    argTypes:
    - '&Lua'
    - LuaTable
    constantsTouched: []
    func_position:
      end: 172
      start: 167
    functionDepth: 0
    functionLinenumber: 167
    functionLinenumberEnd: 172
    functionName: metadata_content_length
    functionSourceFile: /src/opendal/bindings/lua/src/lib.rs
    functionUses: 0
    functionsReached:
    - anyhow::Result::content_length
    - Ok
    - get::<ODMetadata>
    linkageType: ''
    returnType: LuaResult
    signature: 'fn metadata_content_length(_: &Lua, metadata: LuaTable) -> LuaResult<LuaNumber>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: content_md5
      Src: /src/opendal/bindings/ocaml/src/operator/metadata.rs:41,1
    - Dst: map
      Src: /src/opendal/bindings/ocaml/src/operator/metadata.rs:41,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - metadata
    argTypes:
    - '&mut Metadata'
    constantsTouched: []
    func_position:
      end: 42
      start: 40
    functionDepth: 3
    functionLinenumber: 40
    functionLinenumberEnd: 42
    functionName: metadata_content_md5
    functionSourceFile: /src/opendal/bindings/ocaml/src/operator/metadata.rs
    functionUses: 0
    functionsReached:
    - map
    - content_md5
    linkageType: ''
    returnType: Option
    signature: 'pub fn metadata_content_md5(metadata: &mut Metadata) -> Option<String>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: content_type
      Src: /src/opendal/bindings/ocaml/src/operator/metadata.rs:47,1
    - Dst: map
      Src: /src/opendal/bindings/ocaml/src/operator/metadata.rs:47,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - metadata
    argTypes:
    - '&mut Metadata'
    constantsTouched: []
    func_position:
      end: 48
      start: 46
    functionDepth: 32
    functionLinenumber: 46
    functionLinenumberEnd: 48
    functionName: metadata_content_type
    functionSourceFile: /src/opendal/bindings/ocaml/src/operator/metadata.rs
    functionUses: 0
    functionsReached:
    - map
    - content_type
    linkageType: ''
    returnType: Option
    signature: 'pub fn metadata_content_type(metadata: &mut Metadata) -> Option<String>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: content_disposition
      Src: /src/opendal/bindings/ocaml/src/operator/metadata.rs:53,1
    - Dst: map
      Src: /src/opendal/bindings/ocaml/src/operator/metadata.rs:53,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - metadata
    argTypes:
    - '&mut Metadata'
    constantsTouched: []
    func_position:
      end: 54
      start: 52
    functionDepth: 32
    functionLinenumber: 52
    functionLinenumberEnd: 54
    functionName: metadata_content_disposition
    functionSourceFile: /src/opendal/bindings/ocaml/src/operator/metadata.rs
    functionUses: 0
    functionsReached:
    - content_disposition
    - map
    linkageType: ''
    returnType: Option
    signature: 'pub fn metadata_content_disposition(metadata: &mut Metadata) -> Option<String>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: etag
      Src: /src/opendal/bindings/ocaml/src/operator/metadata.rs:59,1
    - Dst: map
      Src: /src/opendal/bindings/ocaml/src/operator/metadata.rs:59,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - metadata
    argTypes:
    - '&mut Metadata'
    constantsTouched: []
    func_position:
      end: 60
      start: 58
    functionDepth: 3
    functionLinenumber: 58
    functionLinenumberEnd: 60
    functionName: metadata_etag
    functionSourceFile: /src/opendal/bindings/ocaml/src/operator/metadata.rs
    functionUses: 0
    functionsReached:
    - map
    - etag
    linkageType: ''
    returnType: Option
    signature: 'pub fn metadata_etag(metadata: &mut Metadata) -> Option<String>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: last_modified
      Src: /src/opendal/bindings/ocaml/src/operator/metadata.rs:65,1
    - Dst: map
      Src: /src/opendal/bindings/ocaml/src/operator/metadata.rs:65,1
    - Dst: Result::into_inner
      Src: /src/opendal/bindings/ocaml/src/operator/metadata.rs:68,1
    - Dst: Arc::as_second
      Src: /src/opendal/bindings/ocaml/src/operator/metadata.rs:68,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 1
    argNames:
    - metadata
    argTypes:
    - '&mut Metadata'
    constantsTouched: []
    func_position:
      end: 69
      start: 64
    functionDepth: 2
    functionLinenumber: 64
    functionLinenumberEnd: 69
    functionName: metadata_last_modified
    functionSourceFile: /src/opendal/bindings/ocaml/src/operator/metadata.rs
    functionUses: 0
    functionsReached:
    - Arc::as_second
    - map
    - last_modified
    - Result::into_inner
    linkageType: ''
    returnType: Option
    signature: 'pub fn metadata_last_modified(metadata: &mut Metadata) -> Option<i64>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::is_null
      Src: /src/opendal/bindings/haskell/src/lib.rs:599,1
    - Dst: FFIResult::err
      Src: /src/opendal/bindings/haskell/src/lib.rs:600,1
    - Dst: Result::next
      Src: /src/opendal/bindings/haskell/src/lib.rs:606,1
    - Dst: types::leak_str
      Src: /src/opendal/bindings/haskell/src/lib.rs:608,1
    - Dst: Result::path
      Src: /src/opendal/bindings/haskell/src/lib.rs:608,1
    - Dst: FFIResult::ok
      Src: /src/opendal/bindings/haskell/src/lib.rs:609,1
    - Dst: FFIResult::err_with_source
      Src: /src/opendal/bindings/haskell/src/lib.rs:611,1
    - Dst: FFIResult::ok
      Src: /src/opendal/bindings/haskell/src/lib.rs:612,1
    - Dst: std::ptr::null
      Src: /src/opendal/bindings/haskell/src/lib.rs:612,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 25
    argCount: 2
    argNames:
    - lister
    - result
    argTypes:
    - '*mut blocking::Lister'
    - '*mut FFIResult<*const c_char>'
    constantsTouched: []
    func_position:
      end: 617
      start: 594
    functionDepth: 36
    functionLinenumber: 594
    functionLinenumberEnd: 617
    functionName: lister_next
    functionSourceFile: /src/opendal/bindings/haskell/src/lib.rs
    functionUses: 0
    functionsReached:
    - Result::is_null
    - FFIResult::err
    - std::ptr::null
    - Result::next
    - types::leak_str
    - FFIResult::err_with_source
    - FFIResult::ok
    - Result::path
    linkageType: ''
    returnType: void
    signature: 'pub unsafe extern "C" fn lister_next(lister: *mut blocking::Lister,result:
      *mut FFIResult<*const c_char>,)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: io::Result::len
      Src: /src/opendal/bindings/ocaml/src/operator/reader.rs:23,1
    - Dst: map_res_error
      Src: /src/opendal/bindings/ocaml/src/operator/reader.rs:24,1
    - Dst: read_into
      Src: /src/opendal/bindings/ocaml/src/operator/reader.rs:24,1
    - Dst: Ok
      Src: /src/opendal/bindings/ocaml/src/operator/reader.rs:25,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 3
    argNames:
    - reader
    - buf
    - offset
    argTypes:
    - '&mut Reader'
    - '&mut [u8]'
    - u64
    constantsTouched: []
    func_position:
      end: 26
      start: 22
    functionDepth: 29
    functionLinenumber: 22
    functionLinenumberEnd: 26
    functionName: reader_pread
    functionSourceFile: /src/opendal/bindings/ocaml/src/operator/reader.rs
    functionUses: 0
    functionsReached:
    - map_res_error
    - io::Result::len
    - read_into
    - Ok
    linkageType: ''
    returnType: Result
    signature: 'pub fn reader_pread(reader: &mut Reader, mut buf: &mut [u8], offset:
      u64) -> Result<usize, String>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::is_null
      Src: /src/opendal/bindings/haskell/src/lib.rs:840,1
    - Dst: FFIResult::err
      Src: /src/opendal/bindings/haskell/src/lib.rs:841,1
    - Dst: Vec::from_raw_parts
      Src: /src/opendal/bindings/haskell/src/lib.rs:847,1
    - Dst: Result::write
      Src: /src/opendal/bindings/haskell/src/lib.rs:849,1
    - Dst: Bytes::clone
      Src: /src/opendal/bindings/haskell/src/lib.rs:849,1
    - Dst: FFIResult::ok
      Src: /src/opendal/bindings/haskell/src/lib.rs:850,1
    - Dst: FFIResult::err_with_source
      Src: /src/opendal/bindings/haskell/src/lib.rs:851,1
    - Dst: mem::forget
      Src: /src/opendal/bindings/haskell/src/lib.rs:857,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 27
    argCount: 4
    argNames:
    - writer
    - bytes
    - len
    - result
    argTypes:
    - '*mut blocking::Writer'
    - '*const c_char'
    - usize
    - '*mut FFIResult<()>'
    constantsTouched: []
    func_position:
      end: 859
      start: 833
    functionDepth: 36
    functionLinenumber: 833
    functionLinenumberEnd: 859
    functionName: writer_write
    functionSourceFile: /src/opendal/bindings/haskell/src/lib.rs
    functionUses: 0
    functionsReached:
    - Result::is_null
    - Bytes::clone
    - Vec::from_raw_parts
    - FFIResult::err
    - Result::write
    - FFIResult::err_with_source
    - FFIResult::ok
    - mem::forget
    linkageType: ''
    returnType: void
    signature: 'pub unsafe extern "C" fn writer_write(writer: *mut blocking::Writer,bytes:
      *const c_char,len: usize,result: *mut FFIResult<()>,)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::is_null
      Src: /src/opendal/bindings/haskell/src/lib.rs:878,1
    - Dst: FFIResult::err
      Src: /src/opendal/bindings/haskell/src/lib.rs:879,1
    - Dst: Result::close
      Src: /src/opendal/bindings/haskell/src/lib.rs:885,1
    - Dst: FFIResult::ok
      Src: /src/opendal/bindings/haskell/src/lib.rs:886,1
    - Dst: Result::into
      Src: /src/opendal/bindings/haskell/src/lib.rs:886,1
    - Dst: FFIResult::err_with_source
      Src: /src/opendal/bindings/haskell/src/lib.rs:887,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 22
    argCount: 2
    argNames:
    - writer
    - result
    argTypes:
    - '*mut blocking::Writer'
    - '*mut FFIResult<Metadata>'
    constantsTouched: []
    func_position:
      end: 892
      start: 873
    functionDepth: 36
    functionLinenumber: 873
    functionLinenumberEnd: 892
    functionName: writer_close
    functionSourceFile: /src/opendal/bindings/haskell/src/lib.rs
    functionUses: 0
    functionsReached:
    - Result::is_null
    - FFIResult::err
    - Result::close
    - Result::into
    - FFIResult::err_with_source
    - FFIResult::ok
    linkageType: ''
    returnType: void
    signature: 'pub unsafe extern "C" fn writer_close(writer: *mut blocking::Writer,result:
      *mut FFIResult<Metadata>,)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: map_res_error
      Src: /src/opendal/bindings/ocaml/src/operator/mod.rs:37,1
    - Dst: new_operator
      Src: /src/opendal/bindings/ocaml/src/operator/mod.rs:37,1
    - Dst: handle
      Src: /src/opendal/bindings/ocaml/src/operator/mod.rs:39,1
    - Dst: enter
      Src: /src/opendal/bindings/ocaml/src/operator/mod.rs:40,1
    - Dst: od::blocking::Operator::new
      Src: /src/opendal/bindings/ocaml/src/operator/mod.rs:41,1
    - Dst: clone
      Src: /src/opendal/bindings/ocaml/src/operator/mod.rs:41,1
    - Dst: Result::unwrap
      Src: /src/opendal/bindings/ocaml/src/operator/mod.rs:41,1
    - Dst: Ok
      Src: /src/opendal/bindings/ocaml/src/operator/mod.rs:43,1
    - Dst: Operator
      Src: /src/opendal/bindings/ocaml/src/operator/mod.rs:43,1
    - Dst: into
      Src: /src/opendal/bindings/ocaml/src/operator/mod.rs:43,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 16
    argCount: 2
    argNames:
    - scheme_str
    - map
    argTypes:
    - String
    - BTreeMap<String, String>
    constantsTouched: []
    func_position:
      end: 44
      start: 33
    functionDepth: 37
    functionLinenumber: 33
    functionLinenumberEnd: 44
    functionName: operator
    functionSourceFile: /src/opendal/bindings/ocaml/src/operator/mod.rs
    functionUses: 62
    functionsReached:
    - Ok
    - into
    - clone
    - handle
    - Result::unwrap
    - od::blocking::Operator::new
    - Operator
    - map_res_error
    - new_operator
    - enter
    linkageType: ''
    returnType: Result
    signature: 'pub fn operator(scheme_str: String,map: BTreeMap<String, String>,)
      -> Result<ocaml::Pointer<Operator>, String>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: is_null
      Src: /src/opendal/bindings/haskell/src/lib.rs:513,1
    - Dst: FFIResult::err
      Src: /src/opendal/bindings/haskell/src/lib.rs:514,1
    - Dst: CStr::from_ptr
      Src: /src/opendal/bindings/haskell/src/lib.rs:520,1
    - Dst: to_str
      Src: /src/opendal/bindings/haskell/src/lib.rs:520,1
    - Dst: FFIResult::err
      Src: /src/opendal/bindings/haskell/src/lib.rs:523,1
    - Dst: lister
      Src: /src/opendal/bindings/haskell/src/lib.rs:528,1
    - Dst: FFIResult::ok
      Src: /src/opendal/bindings/haskell/src/lib.rs:529,1
    - Dst: Box::into_raw
      Src: /src/opendal/bindings/haskell/src/lib.rs:529,1
    - Dst: Box::new
      Src: /src/opendal/bindings/haskell/src/lib.rs:529,1
    - Dst: FFIResult::err_with_source
      Src: /src/opendal/bindings/haskell/src/lib.rs:530,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 32
    argCount: 3
    argNames:
    - op
    - path
    - result
    argTypes:
    - '*mut od::blocking::Operator'
    - '*const c_char'
    - '*mut FFIResult<*mut blocking::Lister>'
    constantsTouched: []
    func_position:
      end: 535
      start: 507
    functionDepth: 36
    functionLinenumber: 507
    functionLinenumberEnd: 535
    functionName: blocking_list
    functionSourceFile: /src/opendal/bindings/haskell/src/lib.rs
    functionUses: 0
    functionsReached:
    - to_str
    - Box::new
    - FFIResult::err
    - CStr::from_ptr
    - lister
    - FFIResult::err_with_source
    - FFIResult::ok
    - is_null
    - Box::into_raw
    linkageType: ''
    returnType: void
    signature: 'pub unsafe extern "C" fn blocking_list(op: *mut od::blocking::Operator,path:
      *const c_char,result: *mut FFIResult<*mut blocking::Lister>,)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: map_res_error
      Src: /src/opendal/bindings/ocaml/src/operator/mod.rs:66,1
    - Dst: lister
      Src: /src/opendal/bindings/ocaml/src/operator/mod.rs:66,1
    - Dst: as_str
      Src: /src/opendal/bindings/ocaml/src/operator/mod.rs:66,1
    - Dst: Result::map
      Src: /src/opendal/bindings/ocaml/src/operator/mod.rs:66,1
    - Dst: Lister
      Src: /src/opendal/bindings/ocaml/src/operator/mod.rs:66,1
    - Dst: into
      Src: /src/opendal/bindings/ocaml/src/operator/mod.rs:66,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 2
    argNames:
    - operator
    - path
    argTypes:
    - '&mut Operator'
    - String
    constantsTouched: []
    func_position:
      end: 67
      start: 62
    functionDepth: 36
    functionLinenumber: 62
    functionLinenumberEnd: 67
    functionName: blocking_lister
    functionSourceFile: /src/opendal/bindings/ocaml/src/operator/mod.rs
    functionUses: 0
    functionsReached:
    - Lister
    - into
    - as_str
    - lister
    - map_res_error
    - Result::map
    linkageType: ''
    returnType: Result
    signature: 'pub fn blocking_lister(operator: &mut Operator,path: String,) -> Result<ocaml::Pointer<Lister>,
      String>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: is_null
      Src: /src/opendal/bindings/haskell/src/lib.rs:472,1
    - Dst: FFIResult::err
      Src: /src/opendal/bindings/haskell/src/lib.rs:473,1
    - Dst: CStr::from_ptr
      Src: /src/opendal/bindings/haskell/src/lib.rs:479,1
    - Dst: to_str
      Src: /src/opendal/bindings/haskell/src/lib.rs:479,1
    - Dst: FFIResult::err
      Src: /src/opendal/bindings/haskell/src/lib.rs:482,1
    - Dst: stat
      Src: /src/opendal/bindings/haskell/src/lib.rs:487,1
    - Dst: FFIResult::ok
      Src: /src/opendal/bindings/haskell/src/lib.rs:488,1
    - Dst: Result::into
      Src: /src/opendal/bindings/haskell/src/lib.rs:488,1
    - Dst: FFIResult::err_with_source
      Src: /src/opendal/bindings/haskell/src/lib.rs:489,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 32
    argCount: 3
    argNames:
    - op
    - path
    - result
    argTypes:
    - '*mut od::blocking::Operator'
    - '*const c_char'
    - '*mut FFIResult<Metadata>'
    constantsTouched: []
    func_position:
      end: 494
      start: 466
    functionDepth: 36
    functionLinenumber: 466
    functionLinenumberEnd: 494
    functionName: blocking_stat
    functionSourceFile: /src/opendal/bindings/haskell/src/lib.rs
    functionUses: 0
    functionsReached:
    - to_str
    - FFIResult::err
    - CStr::from_ptr
    - Result::into
    - FFIResult::err_with_source
    - FFIResult::ok
    - is_null
    - stat
    linkageType: ''
    returnType: void
    signature: 'pub unsafe extern "C" fn blocking_stat(op: *mut od::blocking::Operator,path:
      *const c_char,result: *mut FFIResult<Metadata>,)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: is_null
      Src: /src/opendal/bindings/haskell/src/lib.rs:247,1
    - Dst: FFIResult::err
      Src: /src/opendal/bindings/haskell/src/lib.rs:248,1
    - Dst: CStr::from_ptr
      Src: /src/opendal/bindings/haskell/src/lib.rs:254,1
    - Dst: to_str
      Src: /src/opendal/bindings/haskell/src/lib.rs:254,1
    - Dst: FFIResult::err
      Src: /src/opendal/bindings/haskell/src/lib.rs:257,1
    - Dst: exists
      Src: /src/opendal/bindings/haskell/src/lib.rs:262,1
    - Dst: FFIResult::ok
      Src: /src/opendal/bindings/haskell/src/lib.rs:263,1
    - Dst: FFIResult::err_with_source
      Src: /src/opendal/bindings/haskell/src/lib.rs:264,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 30
    argCount: 3
    argNames:
    - op
    - path
    - result
    argTypes:
    - '*mut od::blocking::Operator'
    - '*const c_char'
    - '*mut FFIResult<bool>'
    constantsTouched: []
    func_position:
      end: 269
      start: 241
    functionDepth: 36
    functionLinenumber: 241
    functionLinenumberEnd: 269
    functionName: blocking_is_exist
    functionSourceFile: /src/opendal/bindings/haskell/src/lib.rs
    functionUses: 0
    functionsReached:
    - to_str
    - FFIResult::err
    - CStr::from_ptr
    - exists
    - FFIResult::err_with_source
    - FFIResult::ok
    - is_null
    linkageType: ''
    returnType: void
    signature: 'pub unsafe extern "C" fn blocking_is_exist(op: *mut od::blocking::Operator,path:
      *const c_char,result: *mut FFIResult<bool>,)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: is_null
      Src: /src/opendal/bindings/haskell/src/lib.rs:288,1
    - Dst: FFIResult::err
      Src: /src/opendal/bindings/haskell/src/lib.rs:289,1
    - Dst: CStr::from_ptr
      Src: /src/opendal/bindings/haskell/src/lib.rs:295,1
    - Dst: to_str
      Src: /src/opendal/bindings/haskell/src/lib.rs:295,1
    - Dst: FFIResult::err
      Src: /src/opendal/bindings/haskell/src/lib.rs:298,1
    - Dst: create_dir
      Src: /src/opendal/bindings/haskell/src/lib.rs:303,1
    - Dst: FFIResult::ok
      Src: /src/opendal/bindings/haskell/src/lib.rs:304,1
    - Dst: FFIResult::err_with_source
      Src: /src/opendal/bindings/haskell/src/lib.rs:305,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 31
    argCount: 3
    argNames:
    - op
    - path
    - result
    argTypes:
    - '*mut od::blocking::Operator'
    - '*const c_char'
    - '*mut FFIResult<()>'
    constantsTouched: []
    func_position:
      end: 310
      start: 282
    functionDepth: 36
    functionLinenumber: 282
    functionLinenumberEnd: 310
    functionName: blocking_create_dir
    functionSourceFile: /src/opendal/bindings/haskell/src/lib.rs
    functionUses: 0
    functionsReached:
    - to_str
    - FFIResult::err
    - CStr::from_ptr
    - create_dir
    - FFIResult::err_with_source
    - FFIResult::ok
    - is_null
    linkageType: ''
    returnType: void
    signature: 'pub unsafe extern "C" fn blocking_create_dir(op: *mut od::blocking::Operator,path:
      *const c_char,result: *mut FFIResult<()>,)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: is_null
      Src: /src/opendal/bindings/haskell/src/lib.rs:155,1
    - Dst: FFIResult::err
      Src: /src/opendal/bindings/haskell/src/lib.rs:156,1
    - Dst: CStr::from_ptr
      Src: /src/opendal/bindings/haskell/src/lib.rs:162,1
    - Dst: to_str
      Src: /src/opendal/bindings/haskell/src/lib.rs:162,1
    - Dst: FFIResult::err
      Src: /src/opendal/bindings/haskell/src/lib.rs:165,1
    - Dst: read
      Src: /src/opendal/bindings/haskell/src/lib.rs:170,1
    - Dst: FFIResult::ok
      Src: /src/opendal/bindings/haskell/src/lib.rs:171,1
    - Dst: ByteSlice::from_vec
      Src: /src/opendal/bindings/haskell/src/lib.rs:171,1
    - Dst: Bytes::to_vec
      Src: /src/opendal/bindings/haskell/src/lib.rs:171,1
    - Dst: FFIResult::err_with_source
      Src: /src/opendal/bindings/haskell/src/lib.rs:172,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 33
    argCount: 3
    argNames:
    - op
    - path
    - result
    argTypes:
    - '*mut od::blocking::Operator'
    - '*const c_char'
    - '*mut FFIResult<ByteSlice>'
    constantsTouched: []
    func_position:
      end: 177
      start: 149
    functionDepth: 36
    functionLinenumber: 149
    functionLinenumberEnd: 177
    functionName: blocking_read
    functionSourceFile: /src/opendal/bindings/haskell/src/lib.rs
    functionUses: 0
    functionsReached:
    - read
    - Bytes::to_vec
    - to_str
    - FFIResult::err
    - CStr::from_ptr
    - FFIResult::err_with_source
    - FFIResult::ok
    - is_null
    - ByteSlice::from_vec
    linkageType: ''
    returnType: void
    signature: 'pub unsafe extern "C" fn blocking_read(op: *mut od::blocking::Operator,path:
      *const c_char,result: *mut FFIResult<ByteSlice>,)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: map_res_error
      Src: /src/opendal/bindings/ocaml/src/operator/mod.rs:102,1
    - Dst: reader
      Src: /src/opendal/bindings/ocaml/src/operator/mod.rs:102,1
    - Dst: as_str
      Src: /src/opendal/bindings/ocaml/src/operator/mod.rs:102,1
    - Dst: Result::map
      Src: /src/opendal/bindings/ocaml/src/operator/mod.rs:102,1
    - Dst: Reader
      Src: /src/opendal/bindings/ocaml/src/operator/mod.rs:102,1
    - Dst: jlong::into
      Src: /src/opendal/bindings/ocaml/src/operator/mod.rs:102,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 2
    argNames:
    - operator
    - path
    argTypes:
    - '&mut Operator'
    - String
    constantsTouched: []
    func_position:
      end: 103
      start: 98
    functionDepth: 31
    functionLinenumber: 98
    functionLinenumberEnd: 103
    functionName: blocking_reader
    functionSourceFile: /src/opendal/bindings/ocaml/src/operator/mod.rs
    functionUses: 0
    functionsReached:
    - Reader
    - reader
    - jlong::into
    - as_str
    - map_res_error
    - Result::map
    linkageType: ''
    returnType: Result
    signature: 'pub fn blocking_reader(operator: &mut Operator,path: String,) -> Result<ocaml::Pointer<Reader>,
      String>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: is_null
      Src: /src/opendal/bindings/haskell/src/lib.rs:201,1
    - Dst: FFIResult::err
      Src: /src/opendal/bindings/haskell/src/lib.rs:202,1
    - Dst: CStr::from_ptr
      Src: /src/opendal/bindings/haskell/src/lib.rs:208,1
    - Dst: to_str
      Src: /src/opendal/bindings/haskell/src/lib.rs:208,1
    - Dst: FFIResult::err
      Src: /src/opendal/bindings/haskell/src/lib.rs:211,1
    - Dst: Vec::from_raw_parts
      Src: /src/opendal/bindings/haskell/src/lib.rs:216,1
    - Dst: write
      Src: /src/opendal/bindings/haskell/src/lib.rs:218,1
    - Dst: Bytes::clone
      Src: /src/opendal/bindings/haskell/src/lib.rs:218,1
    - Dst: FFIResult::ok
      Src: /src/opendal/bindings/haskell/src/lib.rs:219,1
    - Dst: FFIResult::err_with_source
      Src: /src/opendal/bindings/haskell/src/lib.rs:220,1
    - Dst: mem::forget
      Src: /src/opendal/bindings/haskell/src/lib.rs:226,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 37
    argCount: 5
    argNames:
    - op
    - path
    - bytes
    - len
    - result
    argTypes:
    - '*mut od::blocking::Operator'
    - '*const c_char'
    - '*const c_char'
    - usize
    - '*mut FFIResult<()>'
    constantsTouched: []
    func_position:
      end: 228
      start: 193
    functionDepth: 36
    functionLinenumber: 193
    functionLinenumberEnd: 228
    functionName: blocking_write
    functionSourceFile: /src/opendal/bindings/haskell/src/lib.rs
    functionUses: 0
    functionsReached:
    - mem::forget
    - Bytes::clone
    - to_str
    - Vec::from_raw_parts
    - FFIResult::err
    - CStr::from_ptr
    - FFIResult::err_with_source
    - FFIResult::ok
    - is_null
    - write
    linkageType: ''
    returnType: void
    signature: 'pub unsafe extern "C" fn blocking_write(op: *mut od::blocking::Operator,path:
      *const c_char,bytes: *const c_char,len: usize,result: *mut FFIResult<()>,)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: is_null
      Src: /src/opendal/bindings/haskell/src/lib.rs:745,1
    - Dst: FFIResult::err
      Src: /src/opendal/bindings/haskell/src/lib.rs:746,1
    - Dst: CStr::from_ptr
      Src: /src/opendal/bindings/haskell/src/lib.rs:752,1
    - Dst: to_str
      Src: /src/opendal/bindings/haskell/src/lib.rs:752,1
    - Dst: FFIResult::err
      Src: /src/opendal/bindings/haskell/src/lib.rs:755,1
    - Dst: writer
      Src: /src/opendal/bindings/haskell/src/lib.rs:760,1
    - Dst: FFIResult::ok
      Src: /src/opendal/bindings/haskell/src/lib.rs:761,1
    - Dst: Box::into_raw
      Src: /src/opendal/bindings/haskell/src/lib.rs:761,1
    - Dst: Box::new
      Src: /src/opendal/bindings/haskell/src/lib.rs:761,1
    - Dst: FFIResult::err_with_source
      Src: /src/opendal/bindings/haskell/src/lib.rs:762,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 32
    argCount: 3
    argNames:
    - op
    - path
    - result
    argTypes:
    - '*mut od::blocking::Operator'
    - '*const c_char'
    - '*mut FFIResult<*mut blocking::Writer>'
    constantsTouched: []
    func_position:
      end: 767
      start: 739
    functionDepth: 36
    functionLinenumber: 739
    functionLinenumberEnd: 767
    functionName: blocking_writer
    functionSourceFile: /src/opendal/bindings/haskell/src/lib.rs
    functionUses: 0
    functionsReached:
    - to_str
    - Box::new
    - FFIResult::err
    - CStr::from_ptr
    - writer
    - FFIResult::err_with_source
    - FFIResult::ok
    - is_null
    - Box::into_raw
    linkageType: ''
    returnType: void
    signature: 'pub unsafe extern "C" fn blocking_writer(op: *mut od::blocking::Operator,path:
      *const c_char,result: *mut FFIResult<*mut blocking::Writer>,)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: is_null
      Src: /src/opendal/bindings/haskell/src/lib.rs:331,1
    - Dst: FFIResult::err
      Src: /src/opendal/bindings/haskell/src/lib.rs:332,1
    - Dst: CStr::from_ptr
      Src: /src/opendal/bindings/haskell/src/lib.rs:338,1
    - Dst: to_str
      Src: /src/opendal/bindings/haskell/src/lib.rs:338,1
    - Dst: FFIResult::err
      Src: /src/opendal/bindings/haskell/src/lib.rs:341,1
    - Dst: CStr::from_ptr
      Src: /src/opendal/bindings/haskell/src/lib.rs:346,1
    - Dst: to_str
      Src: /src/opendal/bindings/haskell/src/lib.rs:346,1
    - Dst: FFIResult::err
      Src: /src/opendal/bindings/haskell/src/lib.rs:349,1
    - Dst: copy
      Src: /src/opendal/bindings/haskell/src/lib.rs:354,1
    - Dst: FFIResult::ok
      Src: /src/opendal/bindings/haskell/src/lib.rs:355,1
    - Dst: FFIResult::err_with_source
      Src: /src/opendal/bindings/haskell/src/lib.rs:356,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 41
    argCount: 4
    argNames:
    - op
    - path_from
    - path_to
    - result
    argTypes:
    - '*mut od::blocking::Operator'
    - '*const c_char'
    - '*const c_char'
    - '*mut FFIResult<()>'
    constantsTouched: []
    func_position:
      end: 361
      start: 324
    functionDepth: 36
    functionLinenumber: 324
    functionLinenumberEnd: 361
    functionName: blocking_copy
    functionSourceFile: /src/opendal/bindings/haskell/src/lib.rs
    functionUses: 0
    functionsReached:
    - to_str
    - FFIResult::err
    - CStr::from_ptr
    - copy
    - FFIResult::err_with_source
    - FFIResult::ok
    - is_null
    linkageType: ''
    returnType: void
    signature: 'pub unsafe extern "C" fn blocking_copy(op: *mut od::blocking::Operator,path_from:
      *const c_char,path_to: *const c_char,result: *mut FFIResult<()>,)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: is_null
      Src: /src/opendal/bindings/haskell/src/lib.rs:382,1
    - Dst: FFIResult::err
      Src: /src/opendal/bindings/haskell/src/lib.rs:383,1
    - Dst: CStr::from_ptr
      Src: /src/opendal/bindings/haskell/src/lib.rs:389,1
    - Dst: to_str
      Src: /src/opendal/bindings/haskell/src/lib.rs:389,1
    - Dst: FFIResult::err
      Src: /src/opendal/bindings/haskell/src/lib.rs:392,1
    - Dst: CStr::from_ptr
      Src: /src/opendal/bindings/haskell/src/lib.rs:397,1
    - Dst: to_str
      Src: /src/opendal/bindings/haskell/src/lib.rs:397,1
    - Dst: FFIResult::err
      Src: /src/opendal/bindings/haskell/src/lib.rs:400,1
    - Dst: rename
      Src: /src/opendal/bindings/haskell/src/lib.rs:405,1
    - Dst: FFIResult::ok
      Src: /src/opendal/bindings/haskell/src/lib.rs:406,1
    - Dst: FFIResult::err_with_source
      Src: /src/opendal/bindings/haskell/src/lib.rs:407,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 41
    argCount: 4
    argNames:
    - op
    - path_from
    - path_to
    - result
    argTypes:
    - '*mut od::blocking::Operator'
    - '*const c_char'
    - '*const c_char'
    - '*mut FFIResult<()>'
    constantsTouched: []
    func_position:
      end: 412
      start: 375
    functionDepth: 36
    functionLinenumber: 375
    functionLinenumberEnd: 412
    functionName: blocking_rename
    functionSourceFile: /src/opendal/bindings/haskell/src/lib.rs
    functionUses: 0
    functionsReached:
    - to_str
    - FFIResult::err
    - CStr::from_ptr
    - rename
    - FFIResult::err_with_source
    - FFIResult::ok
    - is_null
    linkageType: ''
    returnType: void
    signature: 'pub unsafe extern "C" fn blocking_rename(op: *mut od::blocking::Operator,path_from:
      *const c_char,path_to: *const c_char,result: *mut FFIResult<()>,)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: is_null
      Src: /src/opendal/bindings/haskell/src/lib.rs:431,1
    - Dst: FFIResult::err
      Src: /src/opendal/bindings/haskell/src/lib.rs:432,1
    - Dst: CStr::from_ptr
      Src: /src/opendal/bindings/haskell/src/lib.rs:438,1
    - Dst: to_str
      Src: /src/opendal/bindings/haskell/src/lib.rs:438,1
    - Dst: FFIResult::err
      Src: /src/opendal/bindings/haskell/src/lib.rs:441,1
    - Dst: delete
      Src: /src/opendal/bindings/haskell/src/lib.rs:446,1
    - Dst: FFIResult::ok
      Src: /src/opendal/bindings/haskell/src/lib.rs:447,1
    - Dst: FFIResult::err_with_source
      Src: /src/opendal/bindings/haskell/src/lib.rs:448,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 31
    argCount: 3
    argNames:
    - op
    - path
    - result
    argTypes:
    - '*mut od::blocking::Operator'
    - '*const c_char'
    - '*mut FFIResult<()>'
    constantsTouched: []
    func_position:
      end: 453
      start: 425
    functionDepth: 36
    functionLinenumber: 425
    functionLinenumberEnd: 453
    functionName: blocking_delete
    functionSourceFile: /src/opendal/bindings/haskell/src/lib.rs
    functionUses: 0
    functionsReached:
    - to_str
    - delete
    - FFIResult::err
    - CStr::from_ptr
    - FFIResult::err_with_source
    - FFIResult::ok
    - is_null
    linkageType: ''
    returnType: void
    signature: 'pub unsafe extern "C" fn blocking_delete(op: *mut od::blocking::Operator,path:
      *const c_char,result: *mut FFIResult<()>,)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: map_res_error
      Src: /src/opendal/bindings/ocaml/src/operator/mod.rs:145,1
    - Dst: delete_iter
      Src: /src/opendal/bindings/ocaml/src/operator/mod.rs:145,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - operator
    - path
    argTypes:
    - '&mut Operator'
    - Vec<String>
    constantsTouched: []
    func_position:
      end: 146
      start: 144
    functionDepth: 35
    functionLinenumber: 144
    functionLinenumberEnd: 146
    functionName: blocking_remove
    functionSourceFile: /src/opendal/bindings/ocaml/src/operator/mod.rs
    functionUses: 0
    functionsReached:
    - map_res_error
    - delete_iter
    linkageType: ''
    returnType: Result
    signature: 'pub fn blocking_remove(operator: &mut Operator, path: Vec<String>)
      -> Result<(), String>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: is_null
      Src: /src/opendal/bindings/haskell/src/lib.rs:693,1
    - Dst: FFIResult::err
      Src: /src/opendal/bindings/haskell/src/lib.rs:694,1
    - Dst: CStr::from_ptr
      Src: /src/opendal/bindings/haskell/src/lib.rs:700,1
    - Dst: to_str
      Src: /src/opendal/bindings/haskell/src/lib.rs:700,1
    - Dst: FFIResult::err
      Src: /src/opendal/bindings/haskell/src/lib.rs:703,1
    - Dst: delete_options
      Src: /src/opendal/bindings/haskell/src/lib.rs:710,1
    - Dst: Default::default
      Src: /src/opendal/bindings/haskell/src/lib.rs:714,1
    - Dst: FFIResult::ok
      Src: /src/opendal/bindings/haskell/src/lib.rs:717,1
    - Dst: FFIResult::err_with_source
      Src: /src/opendal/bindings/haskell/src/lib.rs:718,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 34
    argCount: 3
    argNames:
    - op
    - path
    - result
    argTypes:
    - '*mut od::blocking::Operator'
    - '*const c_char'
    - '*mut FFIResult<()>'
    constantsTouched: []
    func_position:
      end: 724
      start: 687
    functionDepth: 36
    functionLinenumber: 687
    functionLinenumberEnd: 724
    functionName: blocking_remove_all
    functionSourceFile: /src/opendal/bindings/haskell/src/lib.rs
    functionUses: 0
    functionsReached:
    - delete_options
    - to_str
    - FFIResult::err
    - Default::default
    - CStr::from_ptr
    - FFIResult::err_with_source
    - FFIResult::ok
    - is_null
    linkageType: ''
    returnType: void
    signature: 'pub unsafe extern "C" fn blocking_remove_all(op: *mut od::blocking::Operator,path:
      *const c_char,result: *mut FFIResult<()>,)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: map_res_error
      Src: /src/opendal/bindings/ocaml/src/operator/mod.rs:164,1
    - Dst: check
      Src: /src/opendal/bindings/ocaml/src/operator/mod.rs:164,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - operator
    argTypes:
    - '&mut Operator'
    constantsTouched: []
    func_position:
      end: 165
      start: 163
    functionDepth: 3
    functionLinenumber: 163
    functionLinenumberEnd: 165
    functionName: blocking_check
    functionSourceFile: /src/opendal/bindings/ocaml/src/operator/mod.rs
    functionUses: 0
    functionsReached:
    - map_res_error
    - check
    linkageType: ''
    returnType: Result
    signature: 'pub fn blocking_check(operator: &mut Operator) -> Result<(), String>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: is_null
      Src: /src/opendal/bindings/haskell/src/lib.rs:652,1
    - Dst: FFIResult::err
      Src: /src/opendal/bindings/haskell/src/lib.rs:653,1
    - Dst: info
      Src: /src/opendal/bindings/haskell/src/lib.rs:659,1
    - Dst: ServiceInfo::scheme
      Src: /src/opendal/bindings/haskell/src/lib.rs:660,1
    - Dst: '&''static str::to_string'
      Src: /src/opendal/bindings/haskell/src/lib.rs:660,1
    - Dst: CString::new
      Src: /src/opendal/bindings/haskell/src/lib.rs:662,1
    - Dst: into_raw
      Src: /src/opendal/bindings/haskell/src/lib.rs:664,1
    - Dst: FFIResult::ok
      Src: /src/opendal/bindings/haskell/src/lib.rs:665,1
    - Dst: FFIResult::err
      Src: /src/opendal/bindings/haskell/src/lib.rs:667,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 28
    argCount: 2
    argNames:
    - op
    - result
    argTypes:
    - '*mut od::blocking::Operator'
    - '*mut FFIResult<*const c_char>'
    constantsTouched: []
    func_position:
      end: 672
      start: 647
    functionDepth: 36
    functionLinenumber: 647
    functionLinenumberEnd: 672
    functionName: operator_info
    functionSourceFile: /src/opendal/bindings/haskell/src/lib.rs
    functionUses: 3
    functionsReached:
    - info
    - FFIResult::err
    - CString::new
    - into_raw
    - FFIResult::ok
    - ServiceInfo::scheme
    - is_null
    - '&''static str::to_string'
    linkageType: ''
    returnType: void
    signature: 'pub unsafe extern "C" fn operator_info(op: *mut od::blocking::Operator,result:
      *mut FFIResult<*const c_char>,)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Capability
      Src: /src/opendal/bindings/ocaml/src/operator/mod.rs:176,1
    - Dst: capability
      Src: /src/opendal/bindings/ocaml/src/operator/mod.rs:176,1
    - Dst: into
      Src: /src/opendal/bindings/ocaml/src/operator/mod.rs:176,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - info
    argTypes:
    - '&mut OperatorInfo'
    constantsTouched: []
    func_position:
      end: 177
      start: 175
    functionDepth: 29
    functionLinenumber: 175
    functionLinenumberEnd: 177
    functionName: operator_info_capability
    functionSourceFile: /src/opendal/bindings/ocaml/src/operator/mod.rs
    functionUses: 0
    functionsReached:
    - Capability
    - into
    - capability
    linkageType: ''
    returnType: ocaml::Pointer
    signature: 'pub fn operator_info_capability(info: &mut OperatorInfo) -> ocaml::Pointer<Capability>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: name
      Src: /src/opendal/bindings/ocaml/src/operator/operator_info.rs:23,1
    - Dst: to_string
      Src: /src/opendal/bindings/ocaml/src/operator/operator_info.rs:23,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - info
    argTypes:
    - '&OperatorInfo'
    constantsTouched: []
    func_position:
      end: 24
      start: 22
    functionDepth: 31
    functionLinenumber: 22
    functionLinenumberEnd: 24
    functionName: operator_info_name
    functionSourceFile: /src/opendal/bindings/ocaml/src/operator/operator_info.rs
    functionUses: 0
    functionsReached:
    - to_string
    - name
    linkageType: ''
    returnType: String
    signature: 'pub fn operator_info_name(info: &OperatorInfo) -> String'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: scheme
      Src: /src/opendal/bindings/ocaml/src/operator/operator_info.rs:29,1
    - Dst: to_string
      Src: /src/opendal/bindings/ocaml/src/operator/operator_info.rs:29,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - info
    argTypes:
    - '&OperatorInfo'
    constantsTouched: []
    func_position:
      end: 30
      start: 28
    functionDepth: 34
    functionLinenumber: 28
    functionLinenumberEnd: 30
    functionName: operator_info_scheme
    functionSourceFile: /src/opendal/bindings/ocaml/src/operator/operator_info.rs
    functionUses: 0
    functionsReached:
    - to_string
    - scheme
    linkageType: ''
    returnType: String
    signature: 'pub fn operator_info_scheme(info: &OperatorInfo) -> String'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: root
      Src: /src/opendal/bindings/ocaml/src/operator/operator_info.rs:35,1
    - Dst: to_string
      Src: /src/opendal/bindings/ocaml/src/operator/operator_info.rs:35,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - info
    argTypes:
    - '&OperatorInfo'
    constantsTouched: []
    func_position:
      end: 36
      start: 34
    functionDepth: 32
    functionLinenumber: 34
    functionLinenumberEnd: 36
    functionName: operator_info_root
    functionSourceFile: /src/opendal/bindings/ocaml/src/operator/operator_info.rs
    functionUses: 0
    functionsReached:
    - root
    - to_string
    linkageType: ''
    returnType: String
    signature: 'pub fn operator_info_root(info: &OperatorInfo) -> String'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: path
      Src: /src/opendal/bindings/ocaml/src/operator/entry.rs:23,1
    - Dst: to_string
      Src: /src/opendal/bindings/ocaml/src/operator/entry.rs:23,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - entry
    argTypes:
    - '&mut Entry'
    constantsTouched: []
    func_position:
      end: 24
      start: 22
    functionDepth: 34
    functionLinenumber: 22
    functionLinenumberEnd: 24
    functionName: entry_path
    functionSourceFile: /src/opendal/bindings/ocaml/src/operator/entry.rs
    functionUses: 0
    functionsReached:
    - to_string
    - path
    linkageType: ''
    returnType: String
    signature: 'pub fn entry_path(entry: &mut Entry) -> String'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: name
      Src: /src/opendal/bindings/ocaml/src/operator/entry.rs:29,1
    - Dst: to_string
      Src: /src/opendal/bindings/ocaml/src/operator/entry.rs:29,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - entry
    argTypes:
    - '&mut Entry'
    constantsTouched: []
    func_position:
      end: 30
      start: 28
    functionDepth: 31
    functionLinenumber: 28
    functionLinenumberEnd: 30
    functionName: entry_name
    functionSourceFile: /src/opendal/bindings/ocaml/src/operator/entry.rs
    functionUses: 0
    functionsReached:
    - to_string
    - name
    linkageType: ''
    returnType: String
    signature: 'pub fn entry_name(entry: &mut Entry) -> String'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Metadata
      Src: /src/opendal/bindings/ocaml/src/operator/entry.rs:35,1
    - Dst: metadata
      Src: /src/opendal/bindings/ocaml/src/operator/entry.rs:35,1
    - Dst: clone
      Src: /src/opendal/bindings/ocaml/src/operator/entry.rs:35,1
    - Dst: into
      Src: /src/opendal/bindings/ocaml/src/operator/entry.rs:35,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - entry
    argTypes:
    - '&mut Entry'
    constantsTouched: []
    func_position:
      end: 36
      start: 34
    functionDepth: 37
    functionLinenumber: 34
    functionLinenumberEnd: 36
    functionName: entry_metadata
    functionSourceFile: /src/opendal/bindings/ocaml/src/operator/entry.rs
    functionUses: 0
    functionsReached:
    - Metadata
    - metadata
    - into
    - clone
    linkageType: ''
    returnType: ocaml::Pointer
    signature: 'pub fn entry_metadata(entry: &mut Entry) -> ocaml::Pointer<Metadata>'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - cap
    argTypes:
    - '&Capability'
    constantsTouched: []
    func_position:
      end: 24
      start: 22
    functionDepth: 0
    functionLinenumber: 22
    functionLinenumberEnd: 24
    functionName: capability_stat
    functionSourceFile: /src/opendal/bindings/ocaml/src/operator/capability.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: 'pub fn capability_stat(cap: &Capability) -> bool'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - cap
    argTypes:
    - '&Capability'
    constantsTouched: []
    func_position:
      end: 30
      start: 28
    functionDepth: 0
    functionLinenumber: 28
    functionLinenumberEnd: 30
    functionName: capability_read
    functionSourceFile: /src/opendal/bindings/ocaml/src/operator/capability.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: 'pub fn capability_read(cap: &Capability) -> bool'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - cap
    argTypes:
    - '&Capability'
    constantsTouched: []
    func_position:
      end: 36
      start: 34
    functionDepth: 0
    functionLinenumber: 34
    functionLinenumberEnd: 36
    functionName: capability_write
    functionSourceFile: /src/opendal/bindings/ocaml/src/operator/capability.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: 'pub fn capability_write(cap: &Capability) -> bool'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - cap
    argTypes:
    - '&Capability'
    constantsTouched: []
    func_position:
      end: 42
      start: 40
    functionDepth: 0
    functionLinenumber: 40
    functionLinenumberEnd: 42
    functionName: capability_create_dir
    functionSourceFile: /src/opendal/bindings/ocaml/src/operator/capability.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: 'pub fn capability_create_dir(cap: &Capability) -> bool'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - cap
    argTypes:
    - '&Capability'
    constantsTouched: []
    func_position:
      end: 48
      start: 46
    functionDepth: 0
    functionLinenumber: 46
    functionLinenumberEnd: 48
    functionName: capability_delete
    functionSourceFile: /src/opendal/bindings/ocaml/src/operator/capability.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: 'pub fn capability_delete(cap: &Capability) -> bool'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - cap
    argTypes:
    - '&Capability'
    constantsTouched: []
    func_position:
      end: 54
      start: 52
    functionDepth: 0
    functionLinenumber: 52
    functionLinenumberEnd: 54
    functionName: capability_copy
    functionSourceFile: /src/opendal/bindings/ocaml/src/operator/capability.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: 'pub fn capability_copy(cap: &Capability) -> bool'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - cap
    argTypes:
    - '&Capability'
    constantsTouched: []
    func_position:
      end: 60
      start: 58
    functionDepth: 0
    functionLinenumber: 58
    functionLinenumberEnd: 60
    functionName: capability_rename
    functionSourceFile: /src/opendal/bindings/ocaml/src/operator/capability.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: 'pub fn capability_rename(cap: &Capability) -> bool'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - cap
    argTypes:
    - '&Capability'
    constantsTouched: []
    func_position:
      end: 66
      start: 64
    functionDepth: 0
    functionLinenumber: 64
    functionLinenumberEnd: 66
    functionName: capability_list
    functionSourceFile: /src/opendal/bindings/ocaml/src/operator/capability.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: 'pub fn capability_list(cap: &Capability) -> bool'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - cap
    argTypes:
    - '&Capability'
    constantsTouched: []
    func_position:
      end: 72
      start: 70
    functionDepth: 0
    functionLinenumber: 70
    functionLinenumberEnd: 72
    functionName: capability_list_with_limit
    functionSourceFile: /src/opendal/bindings/ocaml/src/operator/capability.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: 'pub fn capability_list_with_limit(cap: &Capability) -> bool'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - cap
    argTypes:
    - '&Capability'
    constantsTouched: []
    func_position:
      end: 78
      start: 76
    functionDepth: 0
    functionLinenumber: 76
    functionLinenumberEnd: 78
    functionName: capability_list_with_start_after
    functionSourceFile: /src/opendal/bindings/ocaml/src/operator/capability.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: 'pub fn capability_list_with_start_after(cap: &Capability) -> bool'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - cap
    argTypes:
    - '&Capability'
    constantsTouched: []
    func_position:
      end: 84
      start: 82
    functionDepth: 0
    functionLinenumber: 82
    functionLinenumberEnd: 84
    functionName: capability_list_with_recursive
    functionSourceFile: /src/opendal/bindings/ocaml/src/operator/capability.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: 'pub fn capability_list_with_recursive(cap: &Capability) -> bool'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - cap
    argTypes:
    - '&Capability'
    constantsTouched: []
    func_position:
      end: 90
      start: 88
    functionDepth: 0
    functionLinenumber: 88
    functionLinenumberEnd: 90
    functionName: capability_presign
    functionSourceFile: /src/opendal/bindings/ocaml/src/operator/capability.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: 'pub fn capability_presign(cap: &Capability) -> bool'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - cap
    argTypes:
    - '&Capability'
    constantsTouched: []
    func_position:
      end: 96
      start: 94
    functionDepth: 0
    functionLinenumber: 94
    functionLinenumberEnd: 96
    functionName: capability_presign_read
    functionSourceFile: /src/opendal/bindings/ocaml/src/operator/capability.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: 'pub fn capability_presign_read(cap: &Capability) -> bool'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - cap
    argTypes:
    - '&Capability'
    constantsTouched: []
    func_position:
      end: 102
      start: 100
    functionDepth: 0
    functionLinenumber: 100
    functionLinenumberEnd: 102
    functionName: capability_presign_stat
    functionSourceFile: /src/opendal/bindings/ocaml/src/operator/capability.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: 'pub fn capability_presign_stat(cap: &Capability) -> bool'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - cap
    argTypes:
    - '&Capability'
    constantsTouched: []
    func_position:
      end: 108
      start: 106
    functionDepth: 0
    functionLinenumber: 106
    functionLinenumberEnd: 108
    functionName: capability_presign_write
    functionSourceFile: /src/opendal/bindings/ocaml/src/operator/capability.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: 'pub fn capability_presign_write(cap: &Capability) -> bool'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - cap
    argTypes:
    - '&Capability'
    constantsTouched: []
    func_position:
      end: 114
      start: 112
    functionDepth: 0
    functionLinenumber: 112
    functionLinenumberEnd: 114
    functionName: capability_shared
    functionSourceFile: /src/opendal/bindings/ocaml/src/operator/capability.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: 'pub fn capability_shared(cap: &Capability) -> bool'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: io::SeekFrom::Start
      Src: /src/opendal/bindings/ocaml/src/seek_from/mod.rs:53,1
    - Dst: io::SeekFrom::End
      Src: /src/opendal/bindings/ocaml/src/seek_from/mod.rs:54,1
    - Dst: io::SeekFrom::Current
      Src: /src/opendal/bindings/ocaml/src/seek_from/mod.rs:55,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - value
    argTypes:
    - SeekFrom
    constantsTouched: []
    func_position:
      end: 57
      start: 51
    functionDepth: 0
    functionLinenumber: 51
    functionLinenumberEnd: 57
    functionName: io::SeekFrom::from
    functionSourceFile: /src/opendal/bindings/ocaml/src/seek_from/mod.rs
    functionUses: 0
    functionsReached:
    - io::SeekFrom::Current
    - io::SeekFrom::Start
    - io::SeekFrom::End
    linkageType: ''
    returnType: Self
    signature: 'fn from(value: SeekFrom) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: is_empty
      Src: /src/opendal/bindings/lua/src/lib.rs:47,1
    - Dst: Err
      Src: /src/opendal/bindings/lua/src/lib.rs:48,1
    - Dst: LuaError::external
      Src: /src/opendal/bindings/lua/src/lib.rs:48,1
    - Dst: HashMap::<String, String>::default
      Src: /src/opendal/bindings/lua/src/lib.rs:51,1
    - Dst: pairs::<String, String>
      Src: /src/opendal/bindings/lua/src/lib.rs:52,1
    - Dst: Result::insert
      Src: /src/opendal/bindings/lua/src/lib.rs:54,1
    - Dst: od::Operator::via_iter
      Src: /src/opendal/bindings/lua/src/lib.rs:57,1
    - Dst: Err
      Src: /src/opendal/bindings/lua/src/lib.rs:59,1
    - Dst: LuaError::external
      Src: /src/opendal/bindings/lua/src/lib.rs:59,1
    - Dst: handle
      Src: /src/opendal/bindings/lua/src/lib.rs:62,1
    - Dst: enter
      Src: /src/opendal/bindings/lua/src/lib.rs:63,1
    - Dst: od::blocking::Operator::new
      Src: /src/opendal/bindings/lua/src/lib.rs:64,1
    - Dst: Result::map_err
      Src: /src/opendal/bindings/lua/src/lib.rs:64,1
    - Dst: '&Lua::create_table'
      Src: /src/opendal/bindings/lua/src/lib.rs:69,1
    - Dst: Result::set
      Src: /src/opendal/bindings/lua/src/lib.rs:70,1
    - Dst: Result::set
      Src: /src/opendal/bindings/lua/src/lib.rs:71,1
    - Dst: '&Lua::create_function'
      Src: /src/opendal/bindings/lua/src/lib.rs:71,1
    - Dst: Result::set
      Src: /src/opendal/bindings/lua/src/lib.rs:72,1
    - Dst: '&Lua::create_function'
      Src: /src/opendal/bindings/lua/src/lib.rs:72,1
    - Dst: Result::set
      Src: /src/opendal/bindings/lua/src/lib.rs:73,1
    - Dst: '&Lua::create_function'
      Src: /src/opendal/bindings/lua/src/lib.rs:73,1
    - Dst: Result::set
      Src: /src/opendal/bindings/lua/src/lib.rs:74,1
    - Dst: '&Lua::create_function'
      Src: /src/opendal/bindings/lua/src/lib.rs:74,1
    - Dst: Result::set
      Src: /src/opendal/bindings/lua/src/lib.rs:75,1
    - Dst: '&Lua::create_function'
      Src: /src/opendal/bindings/lua/src/lib.rs:75,1
    - Dst: Result::set
      Src: /src/opendal/bindings/lua/src/lib.rs:76,1
    - Dst: '&Lua::create_function'
      Src: /src/opendal/bindings/lua/src/lib.rs:76,1
    - Dst: Result::set
      Src: /src/opendal/bindings/lua/src/lib.rs:77,1
    - Dst: '&Lua::create_function'
      Src: /src/opendal/bindings/lua/src/lib.rs:77,1
    - Dst: Ok
      Src: /src/opendal/bindings/lua/src/lib.rs:78,1
    CyclomaticComplexity: 21
    EdgeCount: 21
    ICount: 88
    argCount: 2
    argNames:
    - lua
    argTypes:
    - '&Lua'
    - (String, LuaTable)
    constantsTouched: []
    func_position:
      end: 79
      start: 46
    functionDepth: 38
    functionLinenumber: 46
    functionLinenumberEnd: 79
    functionName: operator_new
    functionSourceFile: /src/opendal/bindings/lua/src/lib.rs
    functionUses: 0
    functionsReached:
    - Result::map_err
    - Result::set
    - HashMap::<String, String>::default
    - '&Lua::create_table'
    - od::Operator::via_iter
    - Ok
    - pairs::<String, String>
    - '&Lua::create_function'
    - Result::insert
    - Err
    - is_empty
    - handle
    - LuaError::external
    - od::blocking::Operator::new
    - enter
    linkageType: ''
    returnType: LuaResult
    signature: 'fn operator_new(lua: &Lua, (scheme, option): (String, LuaTable)) ->
      LuaResult<LuaTable>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: get::<ODOperator>
      Src: /src/opendal/bindings/lua/src/lib.rs:82,1
    - Dst: is_empty
      Src: /src/opendal/bindings/lua/src/lib.rs:85,1
    - Dst: Err
      Src: /src/opendal/bindings/lua/src/lib.rs:86,1
    - Dst: LuaError::external
      Src: /src/opendal/bindings/lua/src/lib.rs:86,1
    - Dst: as_str
      Src: /src/opendal/bindings/lua/src/lib.rs:89,1
    - Dst: exists
      Src: /src/opendal/bindings/lua/src/lib.rs:90,1
    - Dst: Ok
      Src: /src/opendal/bindings/lua/src/lib.rs:92,1
    - Dst: Err
      Src: /src/opendal/bindings/lua/src/lib.rs:93,1
    - Dst: LuaError::external
      Src: /src/opendal/bindings/lua/src/lib.rs:93,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 21
    argCount: 2
    argNames: []
    argTypes:
    - '&Lua'
    - (LuaTable, String)
    constantsTouched: []
    func_position:
      end: 95
      start: 81
    functionDepth: 31
    functionLinenumber: 81
    functionLinenumberEnd: 95
    functionName: operator_is_exist
    functionSourceFile: /src/opendal/bindings/lua/src/lib.rs
    functionUses: 0
    functionsReached:
    - Ok
    - is_empty
    - Err
    - as_str
    - LuaError::external
    - get::<ODOperator>
    - exists
    linkageType: ''
    returnType: LuaResult
    signature: 'fn operator_is_exist(_: &Lua, (operator, path): (LuaTable, String))
      -> LuaResult<bool>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: operator_delete_inner
      Src: /src/opendal/bindings/dotnet/src/operator.rs:508,1
    - Dst: OpendalResult::ok
      Src: /src/opendal/bindings/dotnet/src/operator.rs:509,1
    - Dst: OpendalResult::from_error
      Src: /src/opendal/bindings/dotnet/src/operator.rs:510,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - op
    - executor
    - path
    argTypes:
    - '*const opendal::Operator'
    - '*const c_void'
    - '*const c_char'
    constantsTouched: []
    func_position:
      end: 512
      start: 503
    functionDepth: 34
    functionLinenumber: 503
    functionLinenumberEnd: 512
    functionName: operator_delete
    functionSourceFile: /src/opendal/bindings/dotnet/src/operator.rs
    functionUses: 0
    functionsReached:
    - operator_delete_inner
    - OpendalResult::from_error
    - OpendalResult::ok
    linkageType: ''
    returnType: OpendalResult
    signature: 'pub extern "C" fn operator_delete(op: *const opendal::Operator,executor:
      *const c_void,path: *const c_char,) -> OpendalResult'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: RustFutureWrite::fallible
      Src: /src/opendal/bindings/cpp/src/async.rs:186,1
    - Dst: write
      Src: /src/opendal/bindings/cpp/src/async.rs:187,1
    - Dst: map
      Src: /src/opendal/bindings/cpp/src/async.rs:187,1
    - Dst: map_err
      Src: /src/opendal/bindings/cpp/src/async.rs:187,1
    - Dst: CxxAsyncException::new
      Src: /src/opendal/bindings/cpp/src/async.rs:190,1
    - Dst: Result::to_string
      Src: /src/opendal/bindings/cpp/src/async.rs:190,1
    - Dst: into_boxed_str
      Src: /src/opendal/bindings/cpp/src/async.rs:190,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 18
    argCount: 3
    argNames:
    - op
    - path
    - bs
    argTypes:
    - ffi::OperatorPtr
    - String
    - Vec<u8>
    constantsTouched: []
    func_position:
      end: 192
      start: 185
    functionDepth: 36
    functionLinenumber: 185
    functionLinenumberEnd: 192
    functionName: operator_write
    functionSourceFile: /src/opendal/bindings/cpp/src/async.rs
    functionUses: 0
    functionsReached:
    - map_err
    - CxxAsyncException::new
    - Result::to_string
    - RustFutureWrite::fallible
    - into_boxed_str
    - map
    - write
    linkageType: ''
    returnType: RustFutureWrite
    signature: 'unsafe fn operator_write(op: ffi::OperatorPtr, path: String, bs: Vec<u8>)
      -> RustFutureWrite'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: operator_create_dir_inner
      Src: /src/opendal/bindings/dotnet/src/operator.rs:592,1
    - Dst: OpendalResult::ok
      Src: /src/opendal/bindings/dotnet/src/operator.rs:593,1
    - Dst: OpendalResult::from_error
      Src: /src/opendal/bindings/dotnet/src/operator.rs:594,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - op
    - executor
    - path
    argTypes:
    - '*const opendal::Operator'
    - '*const c_void'
    - '*const c_char'
    constantsTouched: []
    func_position:
      end: 596
      start: 587
    functionDepth: 34
    functionLinenumber: 587
    functionLinenumberEnd: 596
    functionName: operator_create_dir
    functionSourceFile: /src/opendal/bindings/dotnet/src/operator.rs
    functionUses: 0
    functionsReached:
    - OpendalResult::from_error
    - operator_create_dir_inner
    - OpendalResult::ok
    linkageType: ''
    returnType: OpendalResult
    signature: 'pub extern "C" fn operator_create_dir(op: *const opendal::Operator,executor:
      *const c_void,path: *const c_char,) -> OpendalResult'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: operator_rename_inner
      Src: /src/opendal/bindings/dotnet/src/operator.rs:769,1
    - Dst: OpendalResult::ok
      Src: /src/opendal/bindings/dotnet/src/operator.rs:770,1
    - Dst: OpendalResult::from_error
      Src: /src/opendal/bindings/dotnet/src/operator.rs:771,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 4
    argNames:
    - op
    - executor
    - source_path
    - target_path
    argTypes:
    - '*const opendal::Operator'
    - '*const c_void'
    - '*const c_char'
    - '*const c_char'
    constantsTouched: []
    func_position:
      end: 773
      start: 763
    functionDepth: 34
    functionLinenumber: 763
    functionLinenumberEnd: 773
    functionName: operator_rename
    functionSourceFile: /src/opendal/bindings/dotnet/src/operator.rs
    functionUses: 0
    functionsReached:
    - OpendalResult::from_error
    - operator_rename_inner
    - OpendalResult::ok
    linkageType: ''
    returnType: OpendalResult
    signature: 'pub extern "C" fn operator_rename(op: *const opendal::Operator,executor:
      *const c_void,source_path: *const c_char,target_path: *const c_char,) -> OpendalResult'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: RustFutureRead::fallible
      Src: /src/opendal/bindings/cpp/src/async.rs:175,1
    - Dst: Ok
      Src: /src/opendal/bindings/cpp/src/async.rs:176,1
    - Dst: read
      Src: /src/opendal/bindings/cpp/src/async.rs:176,1
    - Dst: map_err
      Src: /src/opendal/bindings/cpp/src/async.rs:176,1
    - Dst: CxxAsyncException::new
      Src: /src/opendal/bindings/cpp/src/async.rs:180,1
    - Dst: Result::to_string
      Src: /src/opendal/bindings/cpp/src/async.rs:180,1
    - Dst: into_boxed_str
      Src: /src/opendal/bindings/cpp/src/async.rs:180,1
    - Dst: to_vec
      Src: /src/opendal/bindings/cpp/src/async.rs:176,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 18
    argCount: 2
    argNames:
    - op
    - path
    argTypes:
    - ffi::OperatorPtr
    - String
    constantsTouched: []
    func_position:
      end: 183
      start: 174
    functionDepth: 31
    functionLinenumber: 174
    functionLinenumberEnd: 183
    functionName: operator_read
    functionSourceFile: /src/opendal/bindings/cpp/src/async.rs
    functionUses: 0
    functionsReached:
    - map_err
    - read
    - CxxAsyncException::new
    - Result::to_string
    - Ok
    - into_boxed_str
    - RustFutureRead::fallible
    - to_vec
    linkageType: ''
    returnType: RustFutureRead
    signature: 'unsafe fn operator_read(op: ffi::OperatorPtr, path: String) -> RustFutureRead'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: get::<ODOperator>
      Src: /src/opendal/bindings/lua/src/lib.rs:189,1
    - Dst: is_empty
      Src: /src/opendal/bindings/lua/src/lib.rs:192,1
    - Dst: Err
      Src: /src/opendal/bindings/lua/src/lib.rs:193,1
    - Dst: LuaError::external
      Src: /src/opendal/bindings/lua/src/lib.rs:193,1
    - Dst: as_str
      Src: /src/opendal/bindings/lua/src/lib.rs:196,1
    - Dst: stat
      Src: /src/opendal/bindings/lua/src/lib.rs:197,1
    - Dst: '&Lua::create_table'
      Src: /src/opendal/bindings/lua/src/lib.rs:200,1
    - Dst: anyhow::Result::set
      Src: /src/opendal/bindings/lua/src/lib.rs:201,1
    - Dst: anyhow::Result::set
      Src: /src/opendal/bindings/lua/src/lib.rs:202,1
    - Dst: '&Lua::create_function'
      Src: /src/opendal/bindings/lua/src/lib.rs:204,1
    - Dst: anyhow::Result::set
      Src: /src/opendal/bindings/lua/src/lib.rs:206,1
    - Dst: '&Lua::create_function'
      Src: /src/opendal/bindings/lua/src/lib.rs:206,1
    - Dst: anyhow::Result::set
      Src: /src/opendal/bindings/lua/src/lib.rs:207,1
    - Dst: '&Lua::create_function'
      Src: /src/opendal/bindings/lua/src/lib.rs:207,1
    - Dst: Ok
      Src: /src/opendal/bindings/lua/src/lib.rs:208,1
    - Dst: Err
      Src: /src/opendal/bindings/lua/src/lib.rs:210,1
    - Dst: LuaError::external
      Src: /src/opendal/bindings/lua/src/lib.rs:210,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 50
    argCount: 2
    argNames:
    - lua
    argTypes:
    - '&Lua'
    - (LuaTable, String)
    constantsTouched: []
    func_position:
      end: 212
      start: 188
    functionDepth: 31
    functionLinenumber: 188
    functionLinenumberEnd: 212
    functionName: operator_stat
    functionSourceFile: /src/opendal/bindings/lua/src/lib.rs
    functionUses: 0
    functionsReached:
    - '&Lua::create_table'
    - Ok
    - '&Lua::create_function'
    - is_empty
    - Err
    - as_str
    - LuaError::external
    - get::<ODOperator>
    - stat
    - anyhow::Result::set
    linkageType: ''
    returnType: LuaResult
    signature: 'fn operator_stat(lua: &Lua, (operator, path): (LuaTable, String))
      -> LuaResult<LuaTable>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: '&Lua::create_table'
      Src: /src/opendal/bindings/lua/src/lib.rs:216,1
    - Dst: '&Lua::create_table'
      Src: /src/opendal/bindings/lua/src/lib.rs:217,1
    - Dst: Result::set
      Src: /src/opendal/bindings/lua/src/lib.rs:218,1
    - Dst: '&Lua::create_function'
      Src: /src/opendal/bindings/lua/src/lib.rs:218,1
    - Dst: set
      Src: /src/opendal/bindings/lua/src/lib.rs:220,1
    - Dst: Ok
      Src: /src/opendal/bindings/lua/src/lib.rs:222,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 1
    argNames:
    - lua
    argTypes:
    - '&Lua'
    constantsTouched: []
    func_position:
      end: 223
      start: 215
    functionDepth: 38
    functionLinenumber: 215
    functionLinenumberEnd: 223
    functionName: opendal
    functionSourceFile: /src/opendal/bindings/lua/src/lib.rs
    functionUses: 0
    functionsReached:
    - Result::set
    - '&Lua::create_table'
    - Ok
    - '&Lua::create_function'
    - set
    linkageType: ''
    returnType: LuaResult
    signature: 'fn opendal(lua: &Lua) -> LuaResult<LuaTable>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: '*mut c_char::is_null'
      Src: /src/opendal/bindings/c/src/types.rs:32,1
    - Dst: drop
      Src: /src/opendal/bindings/c/src/types.rs:33,1
    - Dst: CString::from_raw
      Src: /src/opendal/bindings/c/src/types.rs:33,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - ptr
    argTypes:
    - '*mut c_char'
    constantsTouched: []
    func_position:
      end: 35
      start: 31
    functionDepth: 33
    functionLinenumber: 31
    functionLinenumberEnd: 35
    functionName: opendal_string_free
    functionSourceFile: /src/opendal/bindings/c/src/types.rs
    functionUses: 0
    functionsReached:
    - '*mut c_char::is_null'
    - drop
    - CString::from_raw
    linkageType: ''
    returnType: void
    signature: 'pub unsafe extern "C" fn opendal_string_free(ptr: *mut c_char)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: std::ptr::null_mut
      Src: /src/opendal/bindings/c/src/types.rs:59,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 63
      start: 57
    functionDepth: 0
    functionLinenumber: 57
    functionLinenumberEnd: 63
    functionName: opendal_bytes::empty
    functionSourceFile: /src/opendal/bindings/c/src/types.rs
    functionUses: 2
    functionsReached:
    - std::ptr::null_mut
    linkageType: ''
    returnType: Self
    signature: pub(crate) fn empty() -> Self
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: std::mem::ManuallyDrop::new
      Src: /src/opendal/bindings/c/src/types.rs:67,1
    - Dst: Timestamp::to_vec
      Src: /src/opendal/bindings/c/src/types.rs:67,1
    - Dst: Timestamp::as_mut_ptr
      Src: /src/opendal/bindings/c/src/types.rs:69,1
    - Dst: Timestamp::len
      Src: /src/opendal/bindings/c/src/types.rs:70,1
    - Dst: Timestamp::capacity
      Src: /src/opendal/bindings/c/src/types.rs:71,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 1
    argNames:
    - b
    argTypes:
    - Buffer
    constantsTouched: []
    func_position:
      end: 73
      start: 66
    functionDepth: 4
    functionLinenumber: 66
    functionLinenumberEnd: 73
    functionName: opendal_bytes::new
    functionSourceFile: /src/opendal/bindings/c/src/types.rs
    functionUses: 3
    functionsReached:
    - std::mem::ManuallyDrop::new
    - Timestamp::capacity
    - Timestamp::to_vec
    - Timestamp::as_mut_ptr
    - Timestamp::len
    linkageType: ''
    returnType: Self
    signature: 'pub(crate) fn new(b: Buffer) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: '*mut c_char::is_null'
      Src: /src/opendal/bindings/c/src/types.rs:79,1
    - Dst: is_null
      Src: /src/opendal/bindings/c/src/types.rs:81,1
    - Dst: drop
      Src: /src/opendal/bindings/c/src/types.rs:82,1
    - Dst: Vec::from_raw_parts
      Src: /src/opendal/bindings/c/src/types.rs:82,1
    - Dst: std::ptr::null_mut
      Src: /src/opendal/bindings/c/src/types.rs:83,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 30
    argCount: 1
    argNames:
    - ptr
    argTypes:
    - '*mut opendal_bytes'
    constantsTouched: []
    func_position:
      end: 89
      start: 77
    functionDepth: 33
    functionLinenumber: 77
    functionLinenumberEnd: 89
    functionName: opendal_bytes::opendal_bytes_free
    functionSourceFile: /src/opendal/bindings/c/src/types.rs
    functionUses: 1
    functionsReached:
    - is_null
    - std::ptr::null_mut
    - Vec::from_raw_parts
    - '*mut c_char::is_null'
    - drop
    linkageType: ''
    returnType: void
    signature: 'pub unsafe extern "C" fn opendal_bytes_free(ptr: *mut opendal_bytes)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: is_null
      Src: /src/opendal/bindings/c/src/types.rs:93,1
    - Dst: Ok
      Src: /src/opendal/bindings/c/src/types.rs:94,1
    - Dst: Buffer::new
      Src: /src/opendal/bindings/c/src/types.rs:94,1
    - Dst: Err
      Src: /src/opendal/bindings/c/src/types.rs:97,1
    - Dst: Error::new
      Src: /src/opendal/bindings/c/src/types.rs:97,1
    - Dst: is_null
      Src: /src/opendal/bindings/c/src/types.rs:103,1
    - Dst: Err
      Src: /src/opendal/bindings/c/src/types.rs:104,1
    - Dst: Error::new
      Src: /src/opendal/bindings/c/src/types.rs:104,1
    - Dst: std::slice::from_raw_parts
      Src: /src/opendal/bindings/c/src/types.rs:110,1
    - Dst: Ok
      Src: /src/opendal/bindings/c/src/types.rs:111,1
    - Dst: Buffer::from
      Src: /src/opendal/bindings/c/src/types.rs:111,1
    - Dst: bytes::Bytes::copy_from_slice
      Src: /src/opendal/bindings/c/src/types.rs:111,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 32
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 112
      start: 91
    functionDepth: 36
    functionLinenumber: 91
    functionLinenumberEnd: 112
    functionName: opendal_bytes::to_buffer
    functionSourceFile: /src/opendal/bindings/c/src/types.rs
    functionUses: 0
    functionsReached:
    - Buffer::new
    - Ok
    - Error::new
    - Err
    - bytes::Bytes::copy_from_slice
    - std::slice::from_raw_parts
    - is_null
    - Buffer::from
    linkageType: ''
    returnType: opendal::Result
    signature: pub(crate) fn to_buffer(&self) -> opendal::Result<Buffer>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Box::into_raw
      Src: /src/opendal/bindings/c/src/types.rs:151,1
    - Dst: Box::new
      Src: /src/opendal/bindings/c/src/types.rs:151,1
    - Dst: std::ptr::null_mut
      Src: /src/opendal/bindings/c/src/types.rs:154,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 158
      start: 150
    functionDepth: 2
    functionLinenumber: 150
    functionLinenumberEnd: 158
    functionName: opendal_list_options::opendal_list_options_new
    functionSourceFile: /src/opendal/bindings/c/src/types.rs
    functionUses: 0
    functionsReached:
    - Box::new
    - std::ptr::null_mut
    - Box::into_raw
    linkageType: ''
    returnType: '*mut Self'
    signature: pub extern "C" fn opendal_list_options_new() -> *mut Self
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: object_store::Result::is_null
      Src: /src/opendal/bindings/c/src/types.rs:169,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 2
    argNames:
    - opts
    - recursive
    argTypes:
    - '*mut opendal_list_options'
    - bool
    constantsTouched: []
    func_position:
      end: 172
      start: 165
    functionDepth: 0
    functionLinenumber: 165
    functionLinenumberEnd: 172
    functionName: opendal_list_options::opendal_list_options_set_recursive
    functionSourceFile: /src/opendal/bindings/c/src/types.rs
    functionUses: 0
    functionsReached:
    - object_store::Result::is_null
    linkageType: ''
    returnType: void
    signature: 'pub unsafe extern "C" fn opendal_list_options_set_recursive(opts:
      *mut opendal_list_options,recursive: bool,)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: object_store::Result::is_null
      Src: /src/opendal/bindings/c/src/types.rs:183,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 2
    argNames:
    - opts
    - limit
    argTypes:
    - '*mut opendal_list_options'
    - usize
    constantsTouched: []
    func_position:
      end: 186
      start: 179
    functionDepth: 0
    functionLinenumber: 179
    functionLinenumberEnd: 186
    functionName: opendal_list_options::opendal_list_options_set_limit
    functionSourceFile: /src/opendal/bindings/c/src/types.rs
    functionUses: 0
    functionsReached:
    - object_store::Result::is_null
    linkageType: ''
    returnType: void
    signature: 'pub unsafe extern "C" fn opendal_list_options_set_limit(opts: *mut
      opendal_list_options,limit: usize,)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: object_store::Result::is_null
      Src: /src/opendal/bindings/c/src/types.rs:199,1
    - Dst: is_null
      Src: /src/opendal/bindings/c/src/types.rs:205,1
    - Dst: drop
      Src: /src/opendal/bindings/c/src/types.rs:206,1
    - Dst: CString::from_raw
      Src: /src/opendal/bindings/c/src/types.rs:206,1
    - Dst: std::ptr::null_mut
      Src: /src/opendal/bindings/c/src/types.rs:207,1
    - Dst: Result::is_null
      Src: /src/opendal/bindings/c/src/types.rs:209,1
    - Dst: CStr::from_ptr
      Src: /src/opendal/bindings/c/src/types.rs:210,1
    - Dst: to_str
      Src: /src/opendal/bindings/c/src/types.rs:210,1
    - Dst: expect
      Src: /src/opendal/bindings/c/src/types.rs:210,1
    - Dst: to_owned
      Src: /src/opendal/bindings/c/src/types.rs:210,1
    - Dst: CString::new
      Src: /src/opendal/bindings/c/src/types.rs:214,1
    - Dst: Self::unwrap
      Src: /src/opendal/bindings/c/src/types.rs:214,1
    - Dst: T::into_raw
      Src: /src/opendal/bindings/c/src/types.rs:214,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 42
    argCount: 2
    argNames:
    - opts
    - start_after
    argTypes:
    - '*mut opendal_list_options'
    - '*const c_char'
    constantsTouched: []
    func_position:
      end: 216
      start: 195
    functionDepth: 33
    functionLinenumber: 195
    functionLinenumberEnd: 216
    functionName: opendal_list_options::opendal_list_options_set_start_after
    functionSourceFile: /src/opendal/bindings/c/src/types.rs
    functionUses: 0
    functionsReached:
    - is_null
    - object_store::Result::is_null
    - Result::is_null
    - to_str
    - expect
    - Self::unwrap
    - std::ptr::null_mut
    - CString::new
    - CString::from_raw
    - CStr::from_ptr
    - to_owned
    - drop
    - T::into_raw
    linkageType: ''
    returnType: void
    signature: 'pub unsafe extern "C" fn opendal_list_options_set_start_after(opts:
      *mut opendal_list_options,start_after: *const c_char,)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: object_store::Result::is_null
      Src: /src/opendal/bindings/c/src/types.rs:227,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 2
    argNames:
    - opts
    - versions
    argTypes:
    - '*mut opendal_list_options'
    - bool
    constantsTouched: []
    func_position:
      end: 230
      start: 223
    functionDepth: 0
    functionLinenumber: 223
    functionLinenumberEnd: 230
    functionName: opendal_list_options::opendal_list_options_set_versions
    functionSourceFile: /src/opendal/bindings/c/src/types.rs
    functionUses: 0
    functionsReached:
    - object_store::Result::is_null
    linkageType: ''
    returnType: void
    signature: 'pub unsafe extern "C" fn opendal_list_options_set_versions(opts: *mut
      opendal_list_options,versions: bool,)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: object_store::Result::is_null
      Src: /src/opendal/bindings/c/src/types.rs:241,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 2
    argNames:
    - opts
    - deleted
    argTypes:
    - '*mut opendal_list_options'
    - bool
    constantsTouched: []
    func_position:
      end: 244
      start: 237
    functionDepth: 0
    functionLinenumber: 237
    functionLinenumberEnd: 244
    functionName: opendal_list_options::opendal_list_options_set_deleted
    functionSourceFile: /src/opendal/bindings/c/src/types.rs
    functionUses: 0
    functionsReached:
    - object_store::Result::is_null
    linkageType: ''
    returnType: void
    signature: 'pub unsafe extern "C" fn opendal_list_options_set_deleted(opts: *mut
      opendal_list_options,deleted: bool,)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: object_store::Result::is_null
      Src: /src/opendal/bindings/c/src/types.rs:251,1
    - Dst: is_null
      Src: /src/opendal/bindings/c/src/types.rs:253,1
    - Dst: drop
      Src: /src/opendal/bindings/c/src/types.rs:254,1
    - Dst: CString::from_raw
      Src: /src/opendal/bindings/c/src/types.rs:254,1
    - Dst: std::ptr::null_mut
      Src: /src/opendal/bindings/c/src/types.rs:255,1
    - Dst: drop
      Src: /src/opendal/bindings/c/src/types.rs:257,1
    - Dst: Box::from_raw
      Src: /src/opendal/bindings/c/src/types.rs:257,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 24
    argCount: 1
    argNames:
    - opts
    argTypes:
    - '*mut opendal_list_options'
    constantsTouched: []
    func_position:
      end: 259
      start: 250
    functionDepth: 33
    functionLinenumber: 250
    functionLinenumberEnd: 259
    functionName: opendal_list_options::opendal_list_options_free
    functionSourceFile: /src/opendal/bindings/c/src/types.rs
    functionUses: 0
    functionsReached:
    - is_null
    - object_store::Result::is_null
    - Box::from_raw
    - std::ptr::null_mut
    - CString::from_raw
    - drop
    linkageType: ''
    returnType: void
    signature: 'pub unsafe extern "C" fn opendal_list_options_free(opts: *mut opendal_list_options)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Box::into_raw
      Src: /src/opendal/bindings/c/src/types.rs:289,1
    - Dst: Box::new
      Src: /src/opendal/bindings/c/src/types.rs:289,1
    - Dst: std::ptr::null_mut
      Src: /src/opendal/bindings/c/src/types.rs:290,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 293
      start: 288
    functionDepth: 2
    functionLinenumber: 288
    functionLinenumberEnd: 293
    functionName: opendal_delete_options::opendal_delete_options_new
    functionSourceFile: /src/opendal/bindings/c/src/types.rs
    functionUses: 0
    functionsReached:
    - Box::new
    - std::ptr::null_mut
    - Box::into_raw
    linkageType: ''
    returnType: '*mut Self'
    signature: pub extern "C" fn opendal_delete_options_new() -> *mut Self
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: object_store::Result::is_null
      Src: /src/opendal/bindings/c/src/types.rs:304,1
    - Dst: is_null
      Src: /src/opendal/bindings/c/src/types.rs:308,1
    - Dst: drop
      Src: /src/opendal/bindings/c/src/types.rs:309,1
    - Dst: CString::from_raw
      Src: /src/opendal/bindings/c/src/types.rs:309,1
    - Dst: std::ptr::null_mut
      Src: /src/opendal/bindings/c/src/types.rs:310,1
    - Dst: Result::is_null
      Src: /src/opendal/bindings/c/src/types.rs:312,1
    - Dst: CStr::from_ptr
      Src: /src/opendal/bindings/c/src/types.rs:313,1
    - Dst: to_str
      Src: /src/opendal/bindings/c/src/types.rs:313,1
    - Dst: expect
      Src: /src/opendal/bindings/c/src/types.rs:313,1
    - Dst: to_owned
      Src: /src/opendal/bindings/c/src/types.rs:313,1
    - Dst: CString::new
      Src: /src/opendal/bindings/c/src/types.rs:317,1
    - Dst: Self::unwrap
      Src: /src/opendal/bindings/c/src/types.rs:317,1
    - Dst: T::into_raw
      Src: /src/opendal/bindings/c/src/types.rs:317,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 42
    argCount: 2
    argNames:
    - opts
    - version
    argTypes:
    - '*mut opendal_delete_options'
    - '*const c_char'
    constantsTouched: []
    func_position:
      end: 319
      start: 300
    functionDepth: 33
    functionLinenumber: 300
    functionLinenumberEnd: 319
    functionName: opendal_delete_options::opendal_delete_options_set_version
    functionSourceFile: /src/opendal/bindings/c/src/types.rs
    functionUses: 0
    functionsReached:
    - is_null
    - object_store::Result::is_null
    - Result::is_null
    - to_str
    - expect
    - Self::unwrap
    - std::ptr::null_mut
    - CString::new
    - CString::from_raw
    - CStr::from_ptr
    - to_owned
    - drop
    - T::into_raw
    linkageType: ''
    returnType: void
    signature: 'pub unsafe extern "C" fn opendal_delete_options_set_version(opts:
      *mut opendal_delete_options,version: *const c_char,)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: object_store::Result::is_null
      Src: /src/opendal/bindings/c/src/types.rs:330,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 2
    argNames:
    - opts
    - recursive
    argTypes:
    - '*mut opendal_delete_options'
    - bool
    constantsTouched: []
    func_position:
      end: 333
      start: 326
    functionDepth: 0
    functionLinenumber: 326
    functionLinenumberEnd: 333
    functionName: opendal_delete_options::opendal_delete_options_set_recursive
    functionSourceFile: /src/opendal/bindings/c/src/types.rs
    functionUses: 0
    functionsReached:
    - object_store::Result::is_null
    linkageType: ''
    returnType: void
    signature: 'pub unsafe extern "C" fn opendal_delete_options_set_recursive(opts:
      *mut opendal_delete_options,recursive: bool,)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: object_store::Result::is_null
      Src: /src/opendal/bindings/c/src/types.rs:340,1
    - Dst: is_null
      Src: /src/opendal/bindings/c/src/types.rs:342,1
    - Dst: drop
      Src: /src/opendal/bindings/c/src/types.rs:343,1
    - Dst: CString::from_raw
      Src: /src/opendal/bindings/c/src/types.rs:343,1
    - Dst: std::ptr::null_mut
      Src: /src/opendal/bindings/c/src/types.rs:344,1
    - Dst: drop
      Src: /src/opendal/bindings/c/src/types.rs:346,1
    - Dst: Box::from_raw
      Src: /src/opendal/bindings/c/src/types.rs:346,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 24
    argCount: 1
    argNames:
    - opts
    argTypes:
    - '*mut opendal_delete_options'
    constantsTouched: []
    func_position:
      end: 348
      start: 339
    functionDepth: 33
    functionLinenumber: 339
    functionLinenumberEnd: 348
    functionName: opendal_delete_options::opendal_delete_options_free
    functionSourceFile: /src/opendal/bindings/c/src/types.rs
    functionUses: 0
    functionsReached:
    - is_null
    - object_store::Result::is_null
    - Box::from_raw
    - std::ptr::null_mut
    - CString::from_raw
    - drop
    linkageType: ''
    returnType: void
    signature: 'pub unsafe extern "C" fn opendal_delete_options_free(opts: *mut opendal_delete_options)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Box::into_raw
      Src: /src/opendal/bindings/c/src/types.rs:398,1
    - Dst: Box::new
      Src: /src/opendal/bindings/c/src/types.rs:398,1
    - Dst: Self::default
      Src: /src/opendal/bindings/c/src/types.rs:398,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 399
      start: 397
    functionDepth: 2
    functionLinenumber: 397
    functionLinenumberEnd: 399
    functionName: opendal_write_options::opendal_write_options_new
    functionSourceFile: /src/opendal/bindings/c/src/types.rs
    functionUses: 0
    functionsReached:
    - Box::new
    - Self::default
    - Box::into_raw
    linkageType: ''
    returnType: '*mut Self'
    signature: pub extern "C" fn opendal_write_options_new() -> *mut Self
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: object_store::Result::is_null
      Src: /src/opendal/bindings/c/src/types.rs:404,1
    - Dst: drop
      Src: /src/opendal/bindings/c/src/types.rs:405,1
    - Dst: Box::from_raw
      Src: /src/opendal/bindings/c/src/types.rs:405,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - opts
    argTypes:
    - '*mut opendal_write_options'
    constantsTouched: []
    func_position:
      end: 407
      start: 403
    functionDepth: 33
    functionLinenumber: 403
    functionLinenumberEnd: 407
    functionName: opendal_write_options::opendal_write_options_free
    functionSourceFile: /src/opendal/bindings/c/src/types.rs
    functionUses: 0
    functionsReached:
    - Box::from_raw
    - object_store::Result::is_null
    - drop
    linkageType: ''
    returnType: void
    signature: 'pub unsafe extern "C" fn opendal_write_options_free(opts: *mut opendal_write_options)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: object_store::Result::is_null
      Src: /src/opendal/bindings/c/src/types.rs:415,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 2
    argNames:
    - opts
    - append
    argTypes:
    - '*mut opendal_write_options'
    - bool
    constantsTouched: []
    func_position:
      end: 418
      start: 411
    functionDepth: 0
    functionLinenumber: 411
    functionLinenumberEnd: 418
    functionName: opendal_write_options::opendal_write_options_set_append
    functionSourceFile: /src/opendal/bindings/c/src/types.rs
    functionUses: 0
    functionsReached:
    - object_store::Result::is_null
    linkageType: ''
    returnType: void
    signature: 'pub unsafe extern "C" fn opendal_write_options_set_append(opts: *mut
      opendal_write_options,append: bool,)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: object_store::Result::is_null
      Src: /src/opendal/bindings/c/src/types.rs:426,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 2
    argNames:
    - opts
    - cache_control
    argTypes:
    - '*mut opendal_write_options'
    - '*const c_char'
    constantsTouched: []
    func_position:
      end: 429
      start: 422
    functionDepth: 0
    functionLinenumber: 422
    functionLinenumberEnd: 429
    functionName: opendal_write_options::opendal_write_options_set_cache_control
    functionSourceFile: /src/opendal/bindings/c/src/types.rs
    functionUses: 0
    functionsReached:
    - object_store::Result::is_null
    linkageType: ''
    returnType: void
    signature: 'pub unsafe extern "C" fn opendal_write_options_set_cache_control(opts:
      *mut opendal_write_options,cache_control: *const c_char,)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: object_store::Result::is_null
      Src: /src/opendal/bindings/c/src/types.rs:437,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 2
    argNames:
    - opts
    - content_type
    argTypes:
    - '*mut opendal_write_options'
    - '*const c_char'
    constantsTouched: []
    func_position:
      end: 440
      start: 433
    functionDepth: 0
    functionLinenumber: 433
    functionLinenumberEnd: 440
    functionName: opendal_write_options::opendal_write_options_set_content_type
    functionSourceFile: /src/opendal/bindings/c/src/types.rs
    functionUses: 0
    functionsReached:
    - object_store::Result::is_null
    linkageType: ''
    returnType: void
    signature: 'pub unsafe extern "C" fn opendal_write_options_set_content_type(opts:
      *mut opendal_write_options,content_type: *const c_char,)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: object_store::Result::is_null
      Src: /src/opendal/bindings/c/src/types.rs:448,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 2
    argNames:
    - opts
    - content_disposition
    argTypes:
    - '*mut opendal_write_options'
    - '*const c_char'
    constantsTouched: []
    func_position:
      end: 451
      start: 444
    functionDepth: 0
    functionLinenumber: 444
    functionLinenumberEnd: 451
    functionName: opendal_write_options::opendal_write_options_set_content_disposition
    functionSourceFile: /src/opendal/bindings/c/src/types.rs
    functionUses: 0
    functionsReached:
    - object_store::Result::is_null
    linkageType: ''
    returnType: void
    signature: 'pub unsafe extern "C" fn opendal_write_options_set_content_disposition(opts:
      *mut opendal_write_options,content_disposition: *const c_char,)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: object_store::Result::is_null
      Src: /src/opendal/bindings/c/src/types.rs:459,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 2
    argNames:
    - opts
    - content_encoding
    argTypes:
    - '*mut opendal_write_options'
    - '*const c_char'
    constantsTouched: []
    func_position:
      end: 462
      start: 455
    functionDepth: 0
    functionLinenumber: 455
    functionLinenumberEnd: 462
    functionName: opendal_write_options::opendal_write_options_set_content_encoding
    functionSourceFile: /src/opendal/bindings/c/src/types.rs
    functionUses: 0
    functionsReached:
    - object_store::Result::is_null
    linkageType: ''
    returnType: void
    signature: 'pub unsafe extern "C" fn opendal_write_options_set_content_encoding(opts:
      *mut opendal_write_options,content_encoding: *const c_char,)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: object_store::Result::is_null
      Src: /src/opendal/bindings/c/src/types.rs:470,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 2
    argNames:
    - opts
    - if_match
    argTypes:
    - '*mut opendal_write_options'
    - '*const c_char'
    constantsTouched: []
    func_position:
      end: 473
      start: 466
    functionDepth: 0
    functionLinenumber: 466
    functionLinenumberEnd: 473
    functionName: opendal_write_options::opendal_write_options_set_if_match
    functionSourceFile: /src/opendal/bindings/c/src/types.rs
    functionUses: 0
    functionsReached:
    - object_store::Result::is_null
    linkageType: ''
    returnType: void
    signature: 'pub unsafe extern "C" fn opendal_write_options_set_if_match(opts:
      *mut opendal_write_options,if_match: *const c_char,)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: object_store::Result::is_null
      Src: /src/opendal/bindings/c/src/types.rs:481,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 2
    argNames:
    - opts
    - if_none_match
    argTypes:
    - '*mut opendal_write_options'
    - '*const c_char'
    constantsTouched: []
    func_position:
      end: 484
      start: 477
    functionDepth: 0
    functionLinenumber: 477
    functionLinenumberEnd: 484
    functionName: opendal_write_options::opendal_write_options_set_if_none_match
    functionSourceFile: /src/opendal/bindings/c/src/types.rs
    functionUses: 0
    functionsReached:
    - object_store::Result::is_null
    linkageType: ''
    returnType: void
    signature: 'pub unsafe extern "C" fn opendal_write_options_set_if_none_match(opts:
      *mut opendal_write_options,if_none_match: *const c_char,)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: object_store::Result::is_null
      Src: /src/opendal/bindings/c/src/types.rs:492,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 2
    argNames:
    - opts
    - if_not_exists
    argTypes:
    - '*mut opendal_write_options'
    - bool
    constantsTouched: []
    func_position:
      end: 495
      start: 488
    functionDepth: 0
    functionLinenumber: 488
    functionLinenumberEnd: 495
    functionName: opendal_write_options::opendal_write_options_set_if_not_exists
    functionSourceFile: /src/opendal/bindings/c/src/types.rs
    functionUses: 0
    functionsReached:
    - object_store::Result::is_null
    linkageType: ''
    returnType: void
    signature: 'pub unsafe extern "C" fn opendal_write_options_set_if_not_exists(opts:
      *mut opendal_write_options,if_not_exists: bool,)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: object_store::Result::is_null
      Src: /src/opendal/bindings/c/src/types.rs:503,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 2
    argNames:
    - opts
    - concurrent
    argTypes:
    - '*mut opendal_write_options'
    - usize
    constantsTouched: []
    func_position:
      end: 506
      start: 499
    functionDepth: 0
    functionLinenumber: 499
    functionLinenumberEnd: 506
    functionName: opendal_write_options::opendal_write_options_set_concurrent
    functionSourceFile: /src/opendal/bindings/c/src/types.rs
    functionUses: 0
    functionsReached:
    - object_store::Result::is_null
    linkageType: ''
    returnType: void
    signature: 'pub unsafe extern "C" fn opendal_write_options_set_concurrent(opts:
      *mut opendal_write_options,concurrent: usize,)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: object_store::Result::is_null
      Src: /src/opendal/bindings/c/src/types.rs:514,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 15
    argCount: 2
    argNames:
    - opts
    - chunk
    argTypes:
    - '*mut opendal_write_options'
    - usize
    constantsTouched: []
    func_position:
      end: 518
      start: 510
    functionDepth: 0
    functionLinenumber: 510
    functionLinenumberEnd: 518
    functionName: opendal_write_options::opendal_write_options_set_chunk
    functionSourceFile: /src/opendal/bindings/c/src/types.rs
    functionUses: 0
    functionsReached:
    - object_store::Result::is_null
    linkageType: ''
    returnType: void
    signature: 'pub unsafe extern "C" fn opendal_write_options_set_chunk(opts: *mut
      opendal_write_options,chunk: usize,)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: object_store::Result::is_null
      Src: /src/opendal/bindings/c/src/types.rs:527,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 15
    argCount: 3
    argNames:
    - opts
    - pairs
    - len
    argTypes:
    - '*mut opendal_write_options'
    - '*const opendal_write_user_metadata_pair'
    - usize
    constantsTouched: []
    func_position:
      end: 531
      start: 522
    functionDepth: 0
    functionLinenumber: 522
    functionLinenumberEnd: 531
    functionName: opendal_write_options::opendal_write_options_set_user_metadata
    functionSourceFile: /src/opendal/bindings/c/src/types.rs
    functionUses: 0
    functionsReached:
    - object_store::Result::is_null
    linkageType: ''
    returnType: void
    signature: 'pub unsafe extern "C" fn opendal_write_options_set_user_metadata(opts:
      *mut opendal_write_options,pairs: *const opendal_write_user_metadata_pair,len:
      usize,)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: std::ptr::null
      Src: /src/opendal/bindings/c/src/types.rs:538,1
    - Dst: std::ptr::null
      Src: /src/opendal/bindings/c/src/types.rs:539,1
    - Dst: std::ptr::null
      Src: /src/opendal/bindings/c/src/types.rs:540,1
    - Dst: std::ptr::null
      Src: /src/opendal/bindings/c/src/types.rs:541,1
    - Dst: std::ptr::null
      Src: /src/opendal/bindings/c/src/types.rs:542,1
    - Dst: std::ptr::null
      Src: /src/opendal/bindings/c/src/types.rs:543,1
    - Dst: std::ptr::null
      Src: /src/opendal/bindings/c/src/types.rs:548,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 551
      start: 535
    functionDepth: 0
    functionLinenumber: 535
    functionLinenumberEnd: 551
    functionName: opendal_write_options::default
    functionSourceFile: /src/opendal/bindings/c/src/types.rs
    functionUses: 0
    functionsReached:
    - std::ptr::null
    linkageType: ''
    returnType: Self
    signature: fn default() -> Self
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: '*mut c_char::is_null'
      Src: /src/opendal/bindings/c/src/types.rs:555,1
    - Dst: Some
      Src: /src/opendal/bindings/c/src/types.rs:558,1
    - Dst: CStr::from_ptr
      Src: /src/opendal/bindings/c/src/types.rs:559,1
    - Dst: to_str
      Src: /src/opendal/bindings/c/src/types.rs:559,1
    - Dst: expect
      Src: /src/opendal/bindings/c/src/types.rs:559,1
    - Dst: to_string
      Src: /src/opendal/bindings/c/src/types.rs:559,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 1
    argNames:
    - ptr
    argTypes:
    - '*const c_char'
    constantsTouched: []
    func_position:
      end: 565
      start: 554
    functionDepth: 38
    functionLinenumber: 554
    functionLinenumberEnd: 565
    functionName: optional_cstr
    functionSourceFile: /src/opendal/bindings/c/src/types.rs
    functionUses: 5
    functionsReached:
    - to_string
    - expect
    - to_str
    - CStr::from_ptr
    - Some
    - '*mut c_char::is_null'
    linkageType: ''
    returnType: Option
    signature: 'unsafe fn optional_cstr(ptr: *const c_char) -> Option<String>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: is_null
      Src: /src/opendal/bindings/c/src/types.rs:569,1
    - Dst: std::slice::from_raw_parts
      Src: /src/opendal/bindings/c/src/types.rs:573,1
    - Dst: HashMap::with_capacity
      Src: /src/opendal/bindings/c/src/types.rs:574,1
    - Dst: '*const opendal_metadata_user_metadata_pair::len'
      Src: /src/opendal/bindings/c/src/types.rs:574,1
    - Dst: is_null
      Src: /src/opendal/bindings/c/src/types.rs:576,1
    - Dst: is_null
      Src: /src/opendal/bindings/c/src/types.rs:576,1
    - Dst: CStr::from_ptr
      Src: /src/opendal/bindings/c/src/types.rs:579,1
    - Dst: to_str
      Src: /src/opendal/bindings/c/src/types.rs:579,1
    - Dst: expect
      Src: /src/opendal/bindings/c/src/types.rs:579,1
    - Dst: to_string
      Src: /src/opendal/bindings/c/src/types.rs:579,1
    - Dst: CStr::from_ptr
      Src: /src/opendal/bindings/c/src/types.rs:583,1
    - Dst: to_str
      Src: /src/opendal/bindings/c/src/types.rs:583,1
    - Dst: expect
      Src: /src/opendal/bindings/c/src/types.rs:583,1
    - Dst: to_string
      Src: /src/opendal/bindings/c/src/types.rs:583,1
    - Dst: anyhow::Result::insert
      Src: /src/opendal/bindings/c/src/types.rs:587,1
    - Dst: Some
      Src: /src/opendal/bindings/c/src/types.rs:589,1
    - Dst: optional_cstr
      Src: /src/opendal/bindings/c/src/types.rs:594,1
    - Dst: optional_cstr
      Src: /src/opendal/bindings/c/src/types.rs:595,1
    - Dst: optional_cstr
      Src: /src/opendal/bindings/c/src/types.rs:596,1
    - Dst: optional_cstr
      Src: /src/opendal/bindings/c/src/types.rs:597,1
    - Dst: optional_cstr
      Src: /src/opendal/bindings/c/src/types.rs:599,1
    - Dst: optional_cstr
      Src: /src/opendal/bindings/c/src/types.rs:600,1
    - Dst: then_some
      Src: /src/opendal/bindings/c/src/types.rs:603,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 66
    argCount: 1
    argNames:
    - value
    argTypes:
    - '&opendal_write_options'
    constantsTouched: []
    func_position:
      end: 605
      start: 568
    functionDepth: 38
    functionLinenumber: 568
    functionLinenumberEnd: 605
    functionName: options::WriteOptions::from
    functionSourceFile: /src/opendal/bindings/c/src/types.rs
    functionUses: 0
    functionsReached:
    - to_string
    - to_str
    - expect
    - anyhow::Result::insert
    - then_some
    - CStr::from_ptr
    - Some
    - '*const opendal_metadata_user_metadata_pair::len'
    - std::slice::from_raw_parts
    - HashMap::with_capacity
    - is_null
    - optional_cstr
    linkageType: ''
    returnType: Self
    signature: 'fn from(value: &opendal_write_options) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Box::into_raw
      Src: /src/opendal/bindings/c/src/types.rs:642,1
    - Dst: Box::new
      Src: /src/opendal/bindings/c/src/types.rs:642,1
    - Dst: Self::default
      Src: /src/opendal/bindings/c/src/types.rs:642,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 643
      start: 641
    functionDepth: 2
    functionLinenumber: 641
    functionLinenumberEnd: 643
    functionName: opendal_stat_options::opendal_stat_options_new
    functionSourceFile: /src/opendal/bindings/c/src/types.rs
    functionUses: 0
    functionsReached:
    - Box::new
    - Self::default
    - Box::into_raw
    linkageType: ''
    returnType: '*mut Self'
    signature: pub extern "C" fn opendal_stat_options_new() -> *mut Self
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: object_store::Result::is_null
      Src: /src/opendal/bindings/c/src/types.rs:648,1
    - Dst: drop
      Src: /src/opendal/bindings/c/src/types.rs:649,1
    - Dst: Box::from_raw
      Src: /src/opendal/bindings/c/src/types.rs:649,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - opts
    argTypes:
    - '*mut opendal_stat_options'
    constantsTouched: []
    func_position:
      end: 651
      start: 647
    functionDepth: 33
    functionLinenumber: 647
    functionLinenumberEnd: 651
    functionName: opendal_stat_options::opendal_stat_options_free
    functionSourceFile: /src/opendal/bindings/c/src/types.rs
    functionUses: 0
    functionsReached:
    - Box::from_raw
    - object_store::Result::is_null
    - drop
    linkageType: ''
    returnType: void
    signature: 'pub unsafe extern "C" fn opendal_stat_options_free(opts: *mut opendal_stat_options)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: object_store::Result::is_null
      Src: /src/opendal/bindings/c/src/types.rs:659,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 2
    argNames:
    - opts
    - version
    argTypes:
    - '*mut opendal_stat_options'
    - '*const c_char'
    constantsTouched: []
    func_position:
      end: 662
      start: 655
    functionDepth: 0
    functionLinenumber: 655
    functionLinenumberEnd: 662
    functionName: opendal_stat_options::opendal_stat_options_set_version
    functionSourceFile: /src/opendal/bindings/c/src/types.rs
    functionUses: 0
    functionsReached:
    - object_store::Result::is_null
    linkageType: ''
    returnType: void
    signature: 'pub unsafe extern "C" fn opendal_stat_options_set_version(opts: *mut
      opendal_stat_options,version: *const c_char,)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: object_store::Result::is_null
      Src: /src/opendal/bindings/c/src/types.rs:670,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 2
    argNames:
    - opts
    - if_match
    argTypes:
    - '*mut opendal_stat_options'
    - '*const c_char'
    constantsTouched: []
    func_position:
      end: 673
      start: 666
    functionDepth: 0
    functionLinenumber: 666
    functionLinenumberEnd: 673
    functionName: opendal_stat_options::opendal_stat_options_set_if_match
    functionSourceFile: /src/opendal/bindings/c/src/types.rs
    functionUses: 0
    functionsReached:
    - object_store::Result::is_null
    linkageType: ''
    returnType: void
    signature: 'pub unsafe extern "C" fn opendal_stat_options_set_if_match(opts: *mut
      opendal_stat_options,if_match: *const c_char,)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: object_store::Result::is_null
      Src: /src/opendal/bindings/c/src/types.rs:681,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 2
    argNames:
    - opts
    - if_none_match
    argTypes:
    - '*mut opendal_stat_options'
    - '*const c_char'
    constantsTouched: []
    func_position:
      end: 684
      start: 677
    functionDepth: 0
    functionLinenumber: 677
    functionLinenumberEnd: 684
    functionName: opendal_stat_options::opendal_stat_options_set_if_none_match
    functionSourceFile: /src/opendal/bindings/c/src/types.rs
    functionUses: 0
    functionsReached:
    - object_store::Result::is_null
    linkageType: ''
    returnType: void
    signature: 'pub unsafe extern "C" fn opendal_stat_options_set_if_none_match(opts:
      *mut opendal_stat_options,if_none_match: *const c_char,)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: object_store::Result::is_null
      Src: /src/opendal/bindings/c/src/types.rs:692,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 15
    argCount: 2
    argNames:
    - opts
    - if_modified_since
    argTypes:
    - '*mut opendal_stat_options'
    - i64
    constantsTouched: []
    func_position:
      end: 696
      start: 688
    functionDepth: 0
    functionLinenumber: 688
    functionLinenumberEnd: 696
    functionName: opendal_stat_options::opendal_stat_options_set_if_modified_since
    functionSourceFile: /src/opendal/bindings/c/src/types.rs
    functionUses: 0
    functionsReached:
    - object_store::Result::is_null
    linkageType: ''
    returnType: void
    signature: 'pub unsafe extern "C" fn opendal_stat_options_set_if_modified_since(opts:
      *mut opendal_stat_options,if_modified_since: i64,)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: object_store::Result::is_null
      Src: /src/opendal/bindings/c/src/types.rs:704,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 15
    argCount: 2
    argNames:
    - opts
    - if_unmodified_since
    argTypes:
    - '*mut opendal_stat_options'
    - i64
    constantsTouched: []
    func_position:
      end: 708
      start: 700
    functionDepth: 0
    functionLinenumber: 700
    functionLinenumberEnd: 708
    functionName: opendal_stat_options::opendal_stat_options_set_if_unmodified_since
    functionSourceFile: /src/opendal/bindings/c/src/types.rs
    functionUses: 0
    functionsReached:
    - object_store::Result::is_null
    linkageType: ''
    returnType: void
    signature: 'pub unsafe extern "C" fn opendal_stat_options_set_if_unmodified_since(opts:
      *mut opendal_stat_options,if_unmodified_since: i64,)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: object_store::Result::is_null
      Src: /src/opendal/bindings/c/src/types.rs:716,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 2
    argNames:
    - opts
    - override_content_type
    argTypes:
    - '*mut opendal_stat_options'
    - '*const c_char'
    constantsTouched: []
    func_position:
      end: 719
      start: 712
    functionDepth: 0
    functionLinenumber: 712
    functionLinenumberEnd: 719
    functionName: opendal_stat_options::opendal_stat_options_set_override_content_type
    functionSourceFile: /src/opendal/bindings/c/src/types.rs
    functionUses: 0
    functionsReached:
    - object_store::Result::is_null
    linkageType: ''
    returnType: void
    signature: 'pub unsafe extern "C" fn opendal_stat_options_set_override_content_type(opts:
      *mut opendal_stat_options,override_content_type: *const c_char,)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: object_store::Result::is_null
      Src: /src/opendal/bindings/c/src/types.rs:727,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 2
    argNames:
    - opts
    - override_cache_control
    argTypes:
    - '*mut opendal_stat_options'
    - '*const c_char'
    constantsTouched: []
    func_position:
      end: 730
      start: 723
    functionDepth: 0
    functionLinenumber: 723
    functionLinenumberEnd: 730
    functionName: opendal_stat_options::opendal_stat_options_set_override_cache_control
    functionSourceFile: /src/opendal/bindings/c/src/types.rs
    functionUses: 0
    functionsReached:
    - object_store::Result::is_null
    linkageType: ''
    returnType: void
    signature: 'pub unsafe extern "C" fn opendal_stat_options_set_override_cache_control(opts:
      *mut opendal_stat_options,override_cache_control: *const c_char,)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: object_store::Result::is_null
      Src: /src/opendal/bindings/c/src/types.rs:738,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 2
    argNames:
    - opts
    - override_content_disposition
    argTypes:
    - '*mut opendal_stat_options'
    - '*const c_char'
    constantsTouched: []
    func_position:
      end: 741
      start: 734
    functionDepth: 0
    functionLinenumber: 734
    functionLinenumberEnd: 741
    functionName: opendal_stat_options::opendal_stat_options_set_override_content_disposition
    functionSourceFile: /src/opendal/bindings/c/src/types.rs
    functionUses: 0
    functionsReached:
    - object_store::Result::is_null
    linkageType: ''
    returnType: void
    signature: 'pub unsafe extern "C" fn opendal_stat_options_set_override_content_disposition(opts:
      *mut opendal_stat_options,override_content_disposition: *const c_char,)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: std::ptr::null
      Src: /src/opendal/bindings/c/src/types.rs:747,1
    - Dst: std::ptr::null
      Src: /src/opendal/bindings/c/src/types.rs:748,1
    - Dst: std::ptr::null
      Src: /src/opendal/bindings/c/src/types.rs:749,1
    - Dst: std::ptr::null
      Src: /src/opendal/bindings/c/src/types.rs:754,1
    - Dst: std::ptr::null
      Src: /src/opendal/bindings/c/src/types.rs:755,1
    - Dst: std::ptr::null
      Src: /src/opendal/bindings/c/src/types.rs:756,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 758
      start: 745
    functionDepth: 0
    functionLinenumber: 745
    functionLinenumberEnd: 758
    functionName: opendal_stat_options::default
    functionSourceFile: /src/opendal/bindings/c/src/types.rs
    functionUses: 0
    functionsReached:
    - std::ptr::null
    linkageType: ''
    returnType: Self
    signature: fn default() -> Self
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: optional_cstr
      Src: /src/opendal/bindings/c/src/types.rs:764,1
    - Dst: optional_cstr
      Src: /src/opendal/bindings/c/src/types.rs:765,1
    - Dst: optional_cstr
      Src: /src/opendal/bindings/c/src/types.rs:766,1
    - Dst: then
      Src: /src/opendal/bindings/c/src/types.rs:767,1
    - Dst: Timestamp::from_millisecond
      Src: /src/opendal/bindings/c/src/types.rs:769,1
    - Dst: Result::ok
      Src: /src/opendal/bindings/c/src/types.rs:769,1
    - Dst: flatten
      Src: /src/opendal/bindings/c/src/types.rs:767,1
    - Dst: then
      Src: /src/opendal/bindings/c/src/types.rs:771,1
    - Dst: Timestamp::from_millisecond
      Src: /src/opendal/bindings/c/src/types.rs:773,1
    - Dst: Result::ok
      Src: /src/opendal/bindings/c/src/types.rs:773,1
    - Dst: flatten
      Src: /src/opendal/bindings/c/src/types.rs:771,1
    - Dst: optional_cstr
      Src: /src/opendal/bindings/c/src/types.rs:775,1
    - Dst: optional_cstr
      Src: /src/opendal/bindings/c/src/types.rs:776,1
    - Dst: optional_cstr
      Src: /src/opendal/bindings/c/src/types.rs:778,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 33
    argCount: 1
    argNames:
    - value
    argTypes:
    - '&opendal_stat_options'
    constantsTouched: []
    func_position:
      end: 781
      start: 762
    functionDepth: 39
    functionLinenumber: 762
    functionLinenumberEnd: 781
    functionName: options::StatOptions::from
    functionSourceFile: /src/opendal/bindings/c/src/types.rs
    functionUses: 0
    functionsReached:
    - Result::ok
    - then
    - flatten
    - Timestamp::from_millisecond
    - optional_cstr
    linkageType: ''
    returnType: Self
    signature: 'fn from(value: &opendal_stat_options) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: std::ptr::null
      Src: /src/opendal/bindings/c/src/types.rs:839,1
    - Dst: std::ptr::null
      Src: /src/opendal/bindings/c/src/types.rs:840,1
    - Dst: std::ptr::null
      Src: /src/opendal/bindings/c/src/types.rs:841,1
    - Dst: std::ptr::null
      Src: /src/opendal/bindings/c/src/types.rs:853,1
    - Dst: std::ptr::null
      Src: /src/opendal/bindings/c/src/types.rs:854,1
    - Dst: std::ptr::null
      Src: /src/opendal/bindings/c/src/types.rs:855,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 857
      start: 834
    functionDepth: 0
    functionLinenumber: 834
    functionLinenumberEnd: 857
    functionName: opendal_read_options::default
    functionSourceFile: /src/opendal/bindings/c/src/types.rs
    functionUses: 0
    functionsReached:
    - std::ptr::null
    linkageType: ''
    returnType: Self
    signature: fn default() -> Self
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Box::into_raw
      Src: /src/opendal/bindings/c/src/types.rs:864,1
    - Dst: Box::new
      Src: /src/opendal/bindings/c/src/types.rs:864,1
    - Dst: Self::default
      Src: /src/opendal/bindings/c/src/types.rs:864,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 865
      start: 863
    functionDepth: 2
    functionLinenumber: 863
    functionLinenumberEnd: 865
    functionName: opendal_read_options::opendal_read_options_new
    functionSourceFile: /src/opendal/bindings/c/src/types.rs
    functionUses: 0
    functionsReached:
    - Box::new
    - Self::default
    - Box::into_raw
    linkageType: ''
    returnType: '*mut Self'
    signature: pub extern "C" fn opendal_read_options_new() -> *mut Self
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: object_store::Result::is_null
      Src: /src/opendal/bindings/c/src/types.rs:870,1
    - Dst: drop
      Src: /src/opendal/bindings/c/src/types.rs:871,1
    - Dst: Box::from_raw
      Src: /src/opendal/bindings/c/src/types.rs:871,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - opts
    argTypes:
    - '*mut opendal_read_options'
    constantsTouched: []
    func_position:
      end: 873
      start: 869
    functionDepth: 33
    functionLinenumber: 869
    functionLinenumberEnd: 873
    functionName: opendal_read_options::opendal_read_options_free
    functionSourceFile: /src/opendal/bindings/c/src/types.rs
    functionUses: 0
    functionsReached:
    - Box::from_raw
    - object_store::Result::is_null
    - drop
    linkageType: ''
    returnType: void
    signature: 'pub unsafe extern "C" fn opendal_read_options_free(opts: *mut opendal_read_options)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: object_store::Result::is_null
      Src: /src/opendal/bindings/c/src/types.rs:882,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 20
    argCount: 3
    argNames:
    - opts
    - offset
    - length
    argTypes:
    - '*mut opendal_read_options'
    - u64
    - u64
    constantsTouched: []
    func_position:
      end: 887
      start: 877
    functionDepth: 0
    functionLinenumber: 877
    functionLinenumberEnd: 887
    functionName: opendal_read_options::opendal_read_options_set_range
    functionSourceFile: /src/opendal/bindings/c/src/types.rs
    functionUses: 0
    functionsReached:
    - object_store::Result::is_null
    linkageType: ''
    returnType: void
    signature: 'pub unsafe extern "C" fn opendal_read_options_set_range(opts: *mut
      opendal_read_options,offset: u64,length: u64,)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: object_store::Result::is_null
      Src: /src/opendal/bindings/c/src/types.rs:895,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 20
    argCount: 2
    argNames:
    - opts
    - offset
    argTypes:
    - '*mut opendal_read_options'
    - u64
    constantsTouched: []
    func_position:
      end: 900
      start: 891
    functionDepth: 0
    functionLinenumber: 891
    functionLinenumberEnd: 900
    functionName: opendal_read_options::opendal_read_options_set_range_from
    functionSourceFile: /src/opendal/bindings/c/src/types.rs
    functionUses: 0
    functionsReached:
    - object_store::Result::is_null
    linkageType: ''
    returnType: void
    signature: 'pub unsafe extern "C" fn opendal_read_options_set_range_from(opts:
      *mut opendal_read_options,offset: u64,)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: object_store::Result::is_null
      Src: /src/opendal/bindings/c/src/types.rs:908,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 2
    argNames:
    - opts
    - version
    argTypes:
    - '*mut opendal_read_options'
    - '*const c_char'
    constantsTouched: []
    func_position:
      end: 911
      start: 904
    functionDepth: 0
    functionLinenumber: 904
    functionLinenumberEnd: 911
    functionName: opendal_read_options::opendal_read_options_set_version
    functionSourceFile: /src/opendal/bindings/c/src/types.rs
    functionUses: 0
    functionsReached:
    - object_store::Result::is_null
    linkageType: ''
    returnType: void
    signature: 'pub unsafe extern "C" fn opendal_read_options_set_version(opts: *mut
      opendal_read_options,version: *const c_char,)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: object_store::Result::is_null
      Src: /src/opendal/bindings/c/src/types.rs:919,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 2
    argNames:
    - opts
    - if_match
    argTypes:
    - '*mut opendal_read_options'
    - '*const c_char'
    constantsTouched: []
    func_position:
      end: 922
      start: 915
    functionDepth: 0
    functionLinenumber: 915
    functionLinenumberEnd: 922
    functionName: opendal_read_options::opendal_read_options_set_if_match
    functionSourceFile: /src/opendal/bindings/c/src/types.rs
    functionUses: 0
    functionsReached:
    - object_store::Result::is_null
    linkageType: ''
    returnType: void
    signature: 'pub unsafe extern "C" fn opendal_read_options_set_if_match(opts: *mut
      opendal_read_options,if_match: *const c_char,)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: object_store::Result::is_null
      Src: /src/opendal/bindings/c/src/types.rs:930,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 2
    argNames:
    - opts
    - if_none_match
    argTypes:
    - '*mut opendal_read_options'
    - '*const c_char'
    constantsTouched: []
    func_position:
      end: 933
      start: 926
    functionDepth: 0
    functionLinenumber: 926
    functionLinenumberEnd: 933
    functionName: opendal_read_options::opendal_read_options_set_if_none_match
    functionSourceFile: /src/opendal/bindings/c/src/types.rs
    functionUses: 0
    functionsReached:
    - object_store::Result::is_null
    linkageType: ''
    returnType: void
    signature: 'pub unsafe extern "C" fn opendal_read_options_set_if_none_match(opts:
      *mut opendal_read_options,if_none_match: *const c_char,)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: object_store::Result::is_null
      Src: /src/opendal/bindings/c/src/types.rs:941,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 15
    argCount: 2
    argNames:
    - opts
    - if_modified_since
    argTypes:
    - '*mut opendal_read_options'
    - i64
    constantsTouched: []
    func_position:
      end: 945
      start: 937
    functionDepth: 0
    functionLinenumber: 937
    functionLinenumberEnd: 945
    functionName: opendal_read_options::opendal_read_options_set_if_modified_since
    functionSourceFile: /src/opendal/bindings/c/src/types.rs
    functionUses: 0
    functionsReached:
    - object_store::Result::is_null
    linkageType: ''
    returnType: void
    signature: 'pub unsafe extern "C" fn opendal_read_options_set_if_modified_since(opts:
      *mut opendal_read_options,if_modified_since: i64,)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: object_store::Result::is_null
      Src: /src/opendal/bindings/c/src/types.rs:953,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 15
    argCount: 2
    argNames:
    - opts
    - if_unmodified_since
    argTypes:
    - '*mut opendal_read_options'
    - i64
    constantsTouched: []
    func_position:
      end: 957
      start: 949
    functionDepth: 0
    functionLinenumber: 949
    functionLinenumberEnd: 957
    functionName: opendal_read_options::opendal_read_options_set_if_unmodified_since
    functionSourceFile: /src/opendal/bindings/c/src/types.rs
    functionUses: 0
    functionsReached:
    - object_store::Result::is_null
    linkageType: ''
    returnType: void
    signature: 'pub unsafe extern "C" fn opendal_read_options_set_if_unmodified_since(opts:
      *mut opendal_read_options,if_unmodified_since: i64,)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: object_store::Result::is_null
      Src: /src/opendal/bindings/c/src/types.rs:965,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 2
    argNames:
    - opts
    - concurrent
    argTypes:
    - '*mut opendal_read_options'
    - usize
    constantsTouched: []
    func_position:
      end: 968
      start: 961
    functionDepth: 0
    functionLinenumber: 961
    functionLinenumberEnd: 968
    functionName: opendal_read_options::opendal_read_options_set_concurrent
    functionSourceFile: /src/opendal/bindings/c/src/types.rs
    functionUses: 0
    functionsReached:
    - object_store::Result::is_null
    linkageType: ''
    returnType: void
    signature: 'pub unsafe extern "C" fn opendal_read_options_set_concurrent(opts:
      *mut opendal_read_options,concurrent: usize,)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: object_store::Result::is_null
      Src: /src/opendal/bindings/c/src/types.rs:976,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 15
    argCount: 2
    argNames:
    - opts
    - chunk
    argTypes:
    - '*mut opendal_read_options'
    - usize
    constantsTouched: []
    func_position:
      end: 980
      start: 972
    functionDepth: 0
    functionLinenumber: 972
    functionLinenumberEnd: 980
    functionName: opendal_read_options::opendal_read_options_set_chunk
    functionSourceFile: /src/opendal/bindings/c/src/types.rs
    functionUses: 0
    functionsReached:
    - object_store::Result::is_null
    linkageType: ''
    returnType: void
    signature: 'pub unsafe extern "C" fn opendal_read_options_set_chunk(opts: *mut
      opendal_read_options,chunk: usize,)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: object_store::Result::is_null
      Src: /src/opendal/bindings/c/src/types.rs:988,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 15
    argCount: 2
    argNames:
    - opts
    - gap
    argTypes:
    - '*mut opendal_read_options'
    - usize
    constantsTouched: []
    func_position:
      end: 992
      start: 984
    functionDepth: 0
    functionLinenumber: 984
    functionLinenumberEnd: 992
    functionName: opendal_read_options::opendal_read_options_set_gap
    functionSourceFile: /src/opendal/bindings/c/src/types.rs
    functionUses: 0
    functionsReached:
    - object_store::Result::is_null
    linkageType: ''
    returnType: void
    signature: 'pub unsafe extern "C" fn opendal_read_options_set_gap(opts: *mut opendal_read_options,gap:
      usize,)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: object_store::Result::is_null
      Src: /src/opendal/bindings/c/src/types.rs:1004,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 15
    argCount: 2
    argNames:
    - opts
    - content_length_hint
    argTypes:
    - '*mut opendal_read_options'
    - u64
    constantsTouched: []
    func_position:
      end: 1008
      start: 1000
    functionDepth: 0
    functionLinenumber: 1000
    functionLinenumberEnd: 1008
    functionName: opendal_read_options::opendal_read_options_set_content_length_hint
    functionSourceFile: /src/opendal/bindings/c/src/types.rs
    functionUses: 0
    functionsReached:
    - object_store::Result::is_null
    linkageType: ''
    returnType: void
    signature: 'pub unsafe extern "C" fn opendal_read_options_set_content_length_hint(opts:
      *mut opendal_read_options,content_length_hint: u64,)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: object_store::Result::is_null
      Src: /src/opendal/bindings/c/src/types.rs:1016,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 2
    argNames:
    - opts
    - override_content_type
    argTypes:
    - '*mut opendal_read_options'
    - '*const c_char'
    constantsTouched: []
    func_position:
      end: 1019
      start: 1012
    functionDepth: 0
    functionLinenumber: 1012
    functionLinenumberEnd: 1019
    functionName: opendal_read_options::opendal_read_options_set_override_content_type
    functionSourceFile: /src/opendal/bindings/c/src/types.rs
    functionUses: 0
    functionsReached:
    - object_store::Result::is_null
    linkageType: ''
    returnType: void
    signature: 'pub unsafe extern "C" fn opendal_read_options_set_override_content_type(opts:
      *mut opendal_read_options,override_content_type: *const c_char,)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: object_store::Result::is_null
      Src: /src/opendal/bindings/c/src/types.rs:1027,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 2
    argNames:
    - opts
    - override_cache_control
    argTypes:
    - '*mut opendal_read_options'
    - '*const c_char'
    constantsTouched: []
    func_position:
      end: 1030
      start: 1023
    functionDepth: 0
    functionLinenumber: 1023
    functionLinenumberEnd: 1030
    functionName: opendal_read_options::opendal_read_options_set_override_cache_control
    functionSourceFile: /src/opendal/bindings/c/src/types.rs
    functionUses: 0
    functionsReached:
    - object_store::Result::is_null
    linkageType: ''
    returnType: void
    signature: 'pub unsafe extern "C" fn opendal_read_options_set_override_cache_control(opts:
      *mut opendal_read_options,override_cache_control: *const c_char,)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: object_store::Result::is_null
      Src: /src/opendal/bindings/c/src/types.rs:1038,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 2
    argNames:
    - opts
    - override_content_disposition
    argTypes:
    - '*mut opendal_read_options'
    - '*const c_char'
    constantsTouched: []
    func_position:
      end: 1041
      start: 1034
    functionDepth: 0
    functionLinenumber: 1034
    functionLinenumberEnd: 1041
    functionName: opendal_read_options::opendal_read_options_set_override_content_disposition
    functionSourceFile: /src/opendal/bindings/c/src/types.rs
    functionUses: 0
    functionsReached:
    - object_store::Result::is_null
    linkageType: ''
    returnType: void
    signature: 'pub unsafe extern "C" fn opendal_read_options_set_override_content_disposition(opts:
      *mut opendal_read_options,override_content_disposition: *const c_char,)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Some
      Src: /src/opendal/bindings/c/src/types.rs:1048,1
    - Dst: BytesRange::new
      Src: /src/opendal/bindings/c/src/types.rs:1052,1
    - Dst: BytesRange::default
      Src: /src/opendal/bindings/c/src/types.rs:1054,1
    - Dst: optional_cstr
      Src: /src/opendal/bindings/c/src/types.rs:1059,1
    - Dst: optional_cstr
      Src: /src/opendal/bindings/c/src/types.rs:1060,1
    - Dst: optional_cstr
      Src: /src/opendal/bindings/c/src/types.rs:1061,1
    - Dst: then
      Src: /src/opendal/bindings/c/src/types.rs:1062,1
    - Dst: Timestamp::from_millisecond
      Src: /src/opendal/bindings/c/src/types.rs:1064,1
    - Dst: Result::ok
      Src: /src/opendal/bindings/c/src/types.rs:1064,1
    - Dst: flatten
      Src: /src/opendal/bindings/c/src/types.rs:1062,1
    - Dst: then
      Src: /src/opendal/bindings/c/src/types.rs:1066,1
    - Dst: Timestamp::from_millisecond
      Src: /src/opendal/bindings/c/src/types.rs:1068,1
    - Dst: Result::ok
      Src: /src/opendal/bindings/c/src/types.rs:1068,1
    - Dst: flatten
      Src: /src/opendal/bindings/c/src/types.rs:1066,1
    - Dst: then_some
      Src: /src/opendal/bindings/c/src/types.rs:1070,1
    - Dst: then_some
      Src: /src/opendal/bindings/c/src/types.rs:1074,1
    - Dst: then_some
      Src: /src/opendal/bindings/c/src/types.rs:1075,1
    - Dst: optional_cstr
      Src: /src/opendal/bindings/c/src/types.rs:1076,1
    - Dst: optional_cstr
      Src: /src/opendal/bindings/c/src/types.rs:1077,1
    - Dst: optional_cstr
      Src: /src/opendal/bindings/c/src/types.rs:1079,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 58
    argCount: 1
    argNames:
    - value
    argTypes:
    - '&opendal_read_options'
    constantsTouched: []
    func_position:
      end: 1082
      start: 1045
    functionDepth: 39
    functionLinenumber: 1045
    functionLinenumberEnd: 1082
    functionName: options::ReadOptions::from
    functionSourceFile: /src/opendal/bindings/c/src/types.rs
    functionUses: 0
    functionsReached:
    - BytesRange::default
    - then
    - Result::ok
    - then_some
    - Some
    - flatten
    - Timestamp::from_millisecond
    - BytesRange::new
    - optional_cstr
    linkageType: ''
    returnType: Self
    signature: 'fn from(value: &opendal_read_options) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: std::ptr::null
      Src: /src/opendal/bindings/c/src/types.rs:1127,1
    - Dst: std::ptr::null
      Src: /src/opendal/bindings/c/src/types.rs:1128,1
    - Dst: std::ptr::null
      Src: /src/opendal/bindings/c/src/types.rs:1129,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 1143
      start: 1125
    functionDepth: 0
    functionLinenumber: 1125
    functionLinenumberEnd: 1143
    functionName: opendal_reader_options::default
    functionSourceFile: /src/opendal/bindings/c/src/types.rs
    functionUses: 0
    functionsReached:
    - std::ptr::null
    linkageType: ''
    returnType: Self
    signature: fn default() -> Self
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Box::into_raw
      Src: /src/opendal/bindings/c/src/types.rs:1150,1
    - Dst: Box::new
      Src: /src/opendal/bindings/c/src/types.rs:1150,1
    - Dst: Self::default
      Src: /src/opendal/bindings/c/src/types.rs:1150,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 1151
      start: 1149
    functionDepth: 2
    functionLinenumber: 1149
    functionLinenumberEnd: 1151
    functionName: opendal_reader_options::opendal_reader_options_new
    functionSourceFile: /src/opendal/bindings/c/src/types.rs
    functionUses: 0
    functionsReached:
    - Box::new
    - Self::default
    - Box::into_raw
    linkageType: ''
    returnType: '*mut Self'
    signature: pub extern "C" fn opendal_reader_options_new() -> *mut Self
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: object_store::Result::is_null
      Src: /src/opendal/bindings/c/src/types.rs:1156,1
    - Dst: drop
      Src: /src/opendal/bindings/c/src/types.rs:1157,1
    - Dst: Box::from_raw
      Src: /src/opendal/bindings/c/src/types.rs:1157,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - opts
    argTypes:
    - '*mut opendal_reader_options'
    constantsTouched: []
    func_position:
      end: 1159
      start: 1155
    functionDepth: 33
    functionLinenumber: 1155
    functionLinenumberEnd: 1159
    functionName: opendal_reader_options::opendal_reader_options_free
    functionSourceFile: /src/opendal/bindings/c/src/types.rs
    functionUses: 0
    functionsReached:
    - Box::from_raw
    - object_store::Result::is_null
    - drop
    linkageType: ''
    returnType: void
    signature: 'pub unsafe extern "C" fn opendal_reader_options_free(opts: *mut opendal_reader_options)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: object_store::Result::is_null
      Src: /src/opendal/bindings/c/src/types.rs:1167,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 2
    argNames:
    - opts
    - version
    argTypes:
    - '*mut opendal_reader_options'
    - '*const c_char'
    constantsTouched: []
    func_position:
      end: 1170
      start: 1163
    functionDepth: 0
    functionLinenumber: 1163
    functionLinenumberEnd: 1170
    functionName: opendal_reader_options::opendal_reader_options_set_version
    functionSourceFile: /src/opendal/bindings/c/src/types.rs
    functionUses: 0
    functionsReached:
    - object_store::Result::is_null
    linkageType: ''
    returnType: void
    signature: 'pub unsafe extern "C" fn opendal_reader_options_set_version(opts:
      *mut opendal_reader_options,version: *const c_char,)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: object_store::Result::is_null
      Src: /src/opendal/bindings/c/src/types.rs:1178,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 2
    argNames:
    - opts
    - if_match
    argTypes:
    - '*mut opendal_reader_options'
    - '*const c_char'
    constantsTouched: []
    func_position:
      end: 1181
      start: 1174
    functionDepth: 0
    functionLinenumber: 1174
    functionLinenumberEnd: 1181
    functionName: opendal_reader_options::opendal_reader_options_set_if_match
    functionSourceFile: /src/opendal/bindings/c/src/types.rs
    functionUses: 0
    functionsReached:
    - object_store::Result::is_null
    linkageType: ''
    returnType: void
    signature: 'pub unsafe extern "C" fn opendal_reader_options_set_if_match(opts:
      *mut opendal_reader_options,if_match: *const c_char,)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: object_store::Result::is_null
      Src: /src/opendal/bindings/c/src/types.rs:1189,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 2
    argNames:
    - opts
    - if_none_match
    argTypes:
    - '*mut opendal_reader_options'
    - '*const c_char'
    constantsTouched: []
    func_position:
      end: 1192
      start: 1185
    functionDepth: 0
    functionLinenumber: 1185
    functionLinenumberEnd: 1192
    functionName: opendal_reader_options::opendal_reader_options_set_if_none_match
    functionSourceFile: /src/opendal/bindings/c/src/types.rs
    functionUses: 0
    functionsReached:
    - object_store::Result::is_null
    linkageType: ''
    returnType: void
    signature: 'pub unsafe extern "C" fn opendal_reader_options_set_if_none_match(opts:
      *mut opendal_reader_options,if_none_match: *const c_char,)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: object_store::Result::is_null
      Src: /src/opendal/bindings/c/src/types.rs:1200,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 15
    argCount: 2
    argNames:
    - opts
    - if_modified_since
    argTypes:
    - '*mut opendal_reader_options'
    - i64
    constantsTouched: []
    func_position:
      end: 1204
      start: 1196
    functionDepth: 0
    functionLinenumber: 1196
    functionLinenumberEnd: 1204
    functionName: opendal_reader_options::opendal_reader_options_set_if_modified_since
    functionSourceFile: /src/opendal/bindings/c/src/types.rs
    functionUses: 0
    functionsReached:
    - object_store::Result::is_null
    linkageType: ''
    returnType: void
    signature: 'pub unsafe extern "C" fn opendal_reader_options_set_if_modified_since(opts:
      *mut opendal_reader_options,if_modified_since: i64,)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: object_store::Result::is_null
      Src: /src/opendal/bindings/c/src/types.rs:1212,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 15
    argCount: 2
    argNames:
    - opts
    - if_unmodified_since
    argTypes:
    - '*mut opendal_reader_options'
    - i64
    constantsTouched: []
    func_position:
      end: 1216
      start: 1208
    functionDepth: 0
    functionLinenumber: 1208
    functionLinenumberEnd: 1216
    functionName: opendal_reader_options::opendal_reader_options_set_if_unmodified_since
    functionSourceFile: /src/opendal/bindings/c/src/types.rs
    functionUses: 0
    functionsReached:
    - object_store::Result::is_null
    linkageType: ''
    returnType: void
    signature: 'pub unsafe extern "C" fn opendal_reader_options_set_if_unmodified_since(opts:
      *mut opendal_reader_options,if_unmodified_since: i64,)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: object_store::Result::is_null
      Src: /src/opendal/bindings/c/src/types.rs:1228,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 15
    argCount: 2
    argNames:
    - opts
    - content_length_hint
    argTypes:
    - '*mut opendal_reader_options'
    - u64
    constantsTouched: []
    func_position:
      end: 1232
      start: 1224
    functionDepth: 0
    functionLinenumber: 1224
    functionLinenumberEnd: 1232
    functionName: opendal_reader_options::opendal_reader_options_set_content_length_hint
    functionSourceFile: /src/opendal/bindings/c/src/types.rs
    functionUses: 0
    functionsReached:
    - object_store::Result::is_null
    linkageType: ''
    returnType: void
    signature: 'pub unsafe extern "C" fn opendal_reader_options_set_content_length_hint(opts:
      *mut opendal_reader_options,content_length_hint: u64,)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: object_store::Result::is_null
      Src: /src/opendal/bindings/c/src/types.rs:1240,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 2
    argNames:
    - opts
    - concurrent
    argTypes:
    - '*mut opendal_reader_options'
    - usize
    constantsTouched: []
    func_position:
      end: 1243
      start: 1236
    functionDepth: 0
    functionLinenumber: 1236
    functionLinenumberEnd: 1243
    functionName: opendal_reader_options::opendal_reader_options_set_concurrent
    functionSourceFile: /src/opendal/bindings/c/src/types.rs
    functionUses: 0
    functionsReached:
    - object_store::Result::is_null
    linkageType: ''
    returnType: void
    signature: 'pub unsafe extern "C" fn opendal_reader_options_set_concurrent(opts:
      *mut opendal_reader_options,concurrent: usize,)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: object_store::Result::is_null
      Src: /src/opendal/bindings/c/src/types.rs:1251,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 15
    argCount: 2
    argNames:
    - opts
    - chunk
    argTypes:
    - '*mut opendal_reader_options'
    - usize
    constantsTouched: []
    func_position:
      end: 1255
      start: 1247
    functionDepth: 0
    functionLinenumber: 1247
    functionLinenumberEnd: 1255
    functionName: opendal_reader_options::opendal_reader_options_set_chunk
    functionSourceFile: /src/opendal/bindings/c/src/types.rs
    functionUses: 0
    functionsReached:
    - object_store::Result::is_null
    linkageType: ''
    returnType: void
    signature: 'pub unsafe extern "C" fn opendal_reader_options_set_chunk(opts: *mut
      opendal_reader_options,chunk: usize,)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: object_store::Result::is_null
      Src: /src/opendal/bindings/c/src/types.rs:1263,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 15
    argCount: 2
    argNames:
    - opts
    - gap
    argTypes:
    - '*mut opendal_reader_options'
    - usize
    constantsTouched: []
    func_position:
      end: 1267
      start: 1259
    functionDepth: 0
    functionLinenumber: 1259
    functionLinenumberEnd: 1267
    functionName: opendal_reader_options::opendal_reader_options_set_gap
    functionSourceFile: /src/opendal/bindings/c/src/types.rs
    functionUses: 0
    functionsReached:
    - object_store::Result::is_null
    linkageType: ''
    returnType: void
    signature: 'pub unsafe extern "C" fn opendal_reader_options_set_gap(opts: *mut
      opendal_reader_options,gap: usize,)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: object_store::Result::is_null
      Src: /src/opendal/bindings/c/src/types.rs:1275,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 2
    argNames:
    - opts
    - prefetch
    argTypes:
    - '*mut opendal_reader_options'
    - usize
    constantsTouched: []
    func_position:
      end: 1278
      start: 1271
    functionDepth: 0
    functionLinenumber: 1271
    functionLinenumberEnd: 1278
    functionName: opendal_reader_options::opendal_reader_options_set_prefetch
    functionSourceFile: /src/opendal/bindings/c/src/types.rs
    functionUses: 0
    functionsReached:
    - object_store::Result::is_null
    linkageType: ''
    returnType: void
    signature: 'pub unsafe extern "C" fn opendal_reader_options_set_prefetch(opts:
      *mut opendal_reader_options,prefetch: usize,)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: optional_cstr
      Src: /src/opendal/bindings/c/src/types.rs:1284,1
    - Dst: optional_cstr
      Src: /src/opendal/bindings/c/src/types.rs:1285,1
    - Dst: optional_cstr
      Src: /src/opendal/bindings/c/src/types.rs:1286,1
    - Dst: then
      Src: /src/opendal/bindings/c/src/types.rs:1287,1
    - Dst: Timestamp::from_millisecond
      Src: /src/opendal/bindings/c/src/types.rs:1289,1
    - Dst: Result::ok
      Src: /src/opendal/bindings/c/src/types.rs:1289,1
    - Dst: flatten
      Src: /src/opendal/bindings/c/src/types.rs:1287,1
    - Dst: then
      Src: /src/opendal/bindings/c/src/types.rs:1291,1
    - Dst: Timestamp::from_millisecond
      Src: /src/opendal/bindings/c/src/types.rs:1293,1
    - Dst: Result::ok
      Src: /src/opendal/bindings/c/src/types.rs:1293,1
    - Dst: flatten
      Src: /src/opendal/bindings/c/src/types.rs:1291,1
    - Dst: then_some
      Src: /src/opendal/bindings/c/src/types.rs:1295,1
    - Dst: then_some
      Src: /src/opendal/bindings/c/src/types.rs:1299,1
    - Dst: then_some
      Src: /src/opendal/bindings/c/src/types.rs:1300,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 41
    argCount: 1
    argNames:
    - value
    argTypes:
    - '&opendal_reader_options'
    constantsTouched: []
    func_position:
      end: 1303
      start: 1282
    functionDepth: 39
    functionLinenumber: 1282
    functionLinenumberEnd: 1303
    functionName: options::ReaderOptions::from
    functionSourceFile: /src/opendal/bindings/c/src/types.rs
    functionUses: 0
    functionsReached:
    - Result::ok
    - then
    - then_some
    - flatten
    - Timestamp::from_millisecond
    - optional_cstr
    linkageType: ''
    returnType: Self
    signature: 'fn from(value: &opendal_reader_options) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Box::into_raw
      Src: /src/opendal/bindings/c/src/types.rs:1334,1
    - Dst: Box::new
      Src: /src/opendal/bindings/c/src/types.rs:1334,1
    - Dst: Self::default
      Src: /src/opendal/bindings/c/src/types.rs:1334,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 1335
      start: 1333
    functionDepth: 2
    functionLinenumber: 1333
    functionLinenumberEnd: 1335
    functionName: opendal_copy_options::opendal_copy_options_new
    functionSourceFile: /src/opendal/bindings/c/src/types.rs
    functionUses: 0
    functionsReached:
    - Box::new
    - Self::default
    - Box::into_raw
    linkageType: ''
    returnType: '*mut Self'
    signature: pub extern "C" fn opendal_copy_options_new() -> *mut Self
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: object_store::Result::is_null
      Src: /src/opendal/bindings/c/src/types.rs:1340,1
    - Dst: drop
      Src: /src/opendal/bindings/c/src/types.rs:1341,1
    - Dst: Box::from_raw
      Src: /src/opendal/bindings/c/src/types.rs:1341,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - opts
    argTypes:
    - '*mut opendal_copy_options'
    constantsTouched: []
    func_position:
      end: 1343
      start: 1339
    functionDepth: 33
    functionLinenumber: 1339
    functionLinenumberEnd: 1343
    functionName: opendal_copy_options::opendal_copy_options_free
    functionSourceFile: /src/opendal/bindings/c/src/types.rs
    functionUses: 0
    functionsReached:
    - Box::from_raw
    - object_store::Result::is_null
    - drop
    linkageType: ''
    returnType: void
    signature: 'pub unsafe extern "C" fn opendal_copy_options_free(opts: *mut opendal_copy_options)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: object_store::Result::is_null
      Src: /src/opendal/bindings/c/src/types.rs:1351,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 2
    argNames:
    - opts
    - if_not_exists
    argTypes:
    - '*mut opendal_copy_options'
    - bool
    constantsTouched: []
    func_position:
      end: 1354
      start: 1347
    functionDepth: 0
    functionLinenumber: 1347
    functionLinenumberEnd: 1354
    functionName: opendal_copy_options::opendal_copy_options_set_if_not_exists
    functionSourceFile: /src/opendal/bindings/c/src/types.rs
    functionUses: 0
    functionsReached:
    - object_store::Result::is_null
    linkageType: ''
    returnType: void
    signature: 'pub unsafe extern "C" fn opendal_copy_options_set_if_not_exists(opts:
      *mut opendal_copy_options,if_not_exists: bool,)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: object_store::Result::is_null
      Src: /src/opendal/bindings/c/src/types.rs:1362,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 2
    argNames:
    - opts
    - if_match
    argTypes:
    - '*mut opendal_copy_options'
    - '*const c_char'
    constantsTouched: []
    func_position:
      end: 1365
      start: 1358
    functionDepth: 0
    functionLinenumber: 1358
    functionLinenumberEnd: 1365
    functionName: opendal_copy_options::opendal_copy_options_set_if_match
    functionSourceFile: /src/opendal/bindings/c/src/types.rs
    functionUses: 0
    functionsReached:
    - object_store::Result::is_null
    linkageType: ''
    returnType: void
    signature: 'pub unsafe extern "C" fn opendal_copy_options_set_if_match(opts: *mut
      opendal_copy_options,if_match: *const c_char,)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: object_store::Result::is_null
      Src: /src/opendal/bindings/c/src/types.rs:1373,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 2
    argNames:
    - opts
    - source_version
    argTypes:
    - '*mut opendal_copy_options'
    - '*const c_char'
    constantsTouched: []
    func_position:
      end: 1376
      start: 1369
    functionDepth: 0
    functionLinenumber: 1369
    functionLinenumberEnd: 1376
    functionName: opendal_copy_options::opendal_copy_options_set_source_version
    functionSourceFile: /src/opendal/bindings/c/src/types.rs
    functionUses: 0
    functionsReached:
    - object_store::Result::is_null
    linkageType: ''
    returnType: void
    signature: 'pub unsafe extern "C" fn opendal_copy_options_set_source_version(opts:
      *mut opendal_copy_options,source_version: *const c_char,)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: object_store::Result::is_null
      Src: /src/opendal/bindings/c/src/types.rs:1384,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 15
    argCount: 2
    argNames:
    - opts
    - source_content_length_hint
    argTypes:
    - '*mut opendal_copy_options'
    - u64
    constantsTouched: []
    func_position:
      end: 1388
      start: 1380
    functionDepth: 0
    functionLinenumber: 1380
    functionLinenumberEnd: 1388
    functionName: opendal_copy_options::opendal_copy_options_set_source_content_length_hint
    functionSourceFile: /src/opendal/bindings/c/src/types.rs
    functionUses: 0
    functionsReached:
    - object_store::Result::is_null
    linkageType: ''
    returnType: void
    signature: 'pub unsafe extern "C" fn opendal_copy_options_set_source_content_length_hint(opts:
      *mut opendal_copy_options,source_content_length_hint: u64,)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: object_store::Result::is_null
      Src: /src/opendal/bindings/c/src/types.rs:1396,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 2
    argNames:
    - opts
    - concurrent
    argTypes:
    - '*mut opendal_copy_options'
    - usize
    constantsTouched: []
    func_position:
      end: 1399
      start: 1392
    functionDepth: 0
    functionLinenumber: 1392
    functionLinenumberEnd: 1399
    functionName: opendal_copy_options::opendal_copy_options_set_concurrent
    functionSourceFile: /src/opendal/bindings/c/src/types.rs
    functionUses: 0
    functionsReached:
    - object_store::Result::is_null
    linkageType: ''
    returnType: void
    signature: 'pub unsafe extern "C" fn opendal_copy_options_set_concurrent(opts:
      *mut opendal_copy_options,concurrent: usize,)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: object_store::Result::is_null
      Src: /src/opendal/bindings/c/src/types.rs:1407,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 15
    argCount: 2
    argNames:
    - opts
    - chunk
    argTypes:
    - '*mut opendal_copy_options'
    - usize
    constantsTouched: []
    func_position:
      end: 1411
      start: 1403
    functionDepth: 0
    functionLinenumber: 1403
    functionLinenumberEnd: 1411
    functionName: opendal_copy_options::opendal_copy_options_set_chunk
    functionSourceFile: /src/opendal/bindings/c/src/types.rs
    functionUses: 0
    functionsReached:
    - object_store::Result::is_null
    linkageType: ''
    returnType: void
    signature: 'pub unsafe extern "C" fn opendal_copy_options_set_chunk(opts: *mut
      opendal_copy_options,chunk: usize,)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: std::ptr::null
      Src: /src/opendal/bindings/c/src/types.rs:1418,1
    - Dst: std::ptr::null
      Src: /src/opendal/bindings/c/src/types.rs:1419,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 1426
      start: 1415
    functionDepth: 0
    functionLinenumber: 1415
    functionLinenumberEnd: 1426
    functionName: opendal_copy_options::default
    functionSourceFile: /src/opendal/bindings/c/src/types.rs
    functionUses: 0
    functionsReached:
    - std::ptr::null
    linkageType: ''
    returnType: Self
    signature: fn default() -> Self
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: optional_cstr
      Src: /src/opendal/bindings/c/src/types.rs:1433,1
    - Dst: optional_cstr
      Src: /src/opendal/bindings/c/src/types.rs:1434,1
    - Dst: then_some
      Src: /src/opendal/bindings/c/src/types.rs:1435,1
    - Dst: then_some
      Src: /src/opendal/bindings/c/src/types.rs:1439,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 15
    argCount: 1
    argNames:
    - value
    argTypes:
    - '&opendal_copy_options'
    constantsTouched: []
    func_position:
      end: 1441
      start: 1430
    functionDepth: 39
    functionLinenumber: 1430
    functionLinenumberEnd: 1441
    functionName: options::CopyOptions::from
    functionSourceFile: /src/opendal/bindings/c/src/types.rs
    functionUses: 2
    functionsReached:
    - then_some
    - optional_cstr
    linkageType: ''
    returnType: Self
    signature: 'fn from(value: &opendal_copy_options) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self::opendal_bytes_free
      Src: /src/opendal/bindings/c/src/types.rs:1448,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 1450
      start: 1445
    functionDepth: 34
    functionLinenumber: 1445
    functionLinenumberEnd: 1450
    functionName: opendal_bytes::drop
    functionSourceFile: /src/opendal/bindings/c/src/types.rs
    functionUses: 0
    functionsReached:
    - Self::opendal_bytes_free
    linkageType: ''
    returnType: void
    signature: fn drop(&mut self)
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 1473
      start: 1469
    functionDepth: 0
    functionLinenumber: 1469
    functionLinenumberEnd: 1473
    functionName: opendal_operator_options::deref
    functionSourceFile: /src/opendal/bindings/c/src/types.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: '&HashMap'
    signature: pub(crate) fn deref(&self) -> &HashMap<String, String>
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 1479
      start: 1475
    functionDepth: 0
    functionLinenumber: 1475
    functionLinenumberEnd: 1479
    functionName: opendal_operator_options::deref_mut
    functionSourceFile: /src/opendal/bindings/c/src/types.rs
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: '&mut HashMap'
    signature: pub(crate) fn deref_mut(&mut self) -> &mut HashMap<String, String>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: HashMap::default
      Src: /src/opendal/bindings/c/src/types.rs:1491,1
    - Dst: Box::into_raw
      Src: /src/opendal/bindings/c/src/types.rs:1493,1
    - Dst: Box::new
      Src: /src/opendal/bindings/c/src/types.rs:1493,1
    - Dst: Box::into_raw
      Src: /src/opendal/bindings/c/src/types.rs:1495,1
    - Dst: Box::new
      Src: /src/opendal/bindings/c/src/types.rs:1495,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 1496
      start: 1490
    functionDepth: 3
    functionLinenumber: 1490
    functionLinenumberEnd: 1496
    functionName: opendal_operator_options::opendal_operator_options_new
    functionSourceFile: /src/opendal/bindings/c/src/types.rs
    functionUses: 0
    functionsReached:
    - Box::new
    - HashMap::default
    - Box::into_raw
    linkageType: ''
    returnType: '*mut Self'
    signature: pub extern "C" fn opendal_operator_options_new() -> *mut Self
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: std::ffi::CStr::from_ptr
      Src: /src/opendal/bindings/c/src/types.rs:1521,1
    - Dst: to_str
      Src: /src/opendal/bindings/c/src/types.rs:1521,1
    - Dst: unwrap
      Src: /src/opendal/bindings/c/src/types.rs:1521,1
    - Dst: to_string
      Src: /src/opendal/bindings/c/src/types.rs:1521,1
    - Dst: std::ffi::CStr::from_ptr
      Src: /src/opendal/bindings/c/src/types.rs:1525,1
    - Dst: to_str
      Src: /src/opendal/bindings/c/src/types.rs:1525,1
    - Dst: unwrap
      Src: /src/opendal/bindings/c/src/types.rs:1525,1
    - Dst: to_string
      Src: /src/opendal/bindings/c/src/types.rs:1525,1
    - Dst: opendal_operator_options::deref_mut
      Src: /src/opendal/bindings/c/src/types.rs:1529,1
    - Dst: '&mut HashMap::insert'
      Src: /src/opendal/bindings/c/src/types.rs:1529,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 19
    argCount: 2
    argNames:
    - key
    - value
    argTypes:
    - '*const c_char'
    - '*const c_char'
    constantsTouched: []
    func_position:
      end: 1530
      start: 1516
    functionDepth: 38
    functionLinenumber: 1516
    functionLinenumberEnd: 1530
    functionName: opendal_operator_options::opendal_operator_options_set
    functionSourceFile: /src/opendal/bindings/c/src/types.rs
    functionUses: 0
    functionsReached:
    - to_string
    - opendal_operator_options::deref_mut
    - to_str
    - std::ffi::CStr::from_ptr
    - unwrap
    - '&mut HashMap::insert'
    linkageType: ''
    returnType: void
    signature: 'pub unsafe extern "C" fn opendal_operator_options_set(&mut self,key:
      *const c_char,value: *const c_char,)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: '*mut c_char::is_null'
      Src: /src/opendal/bindings/c/src/types.rs:1536,1
    - Dst: drop
      Src: /src/opendal/bindings/c/src/types.rs:1537,1
    - Dst: Box::from_raw
      Src: /src/opendal/bindings/c/src/types.rs:1537,1
    - Dst: drop
      Src: /src/opendal/bindings/c/src/types.rs:1538,1
    - Dst: Box::from_raw
      Src: /src/opendal/bindings/c/src/types.rs:1538,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 16
    argCount: 1
    argNames:
    - ptr
    argTypes:
    - '*mut opendal_operator_options'
    constantsTouched: []
    func_position:
      end: 1541
      start: 1534
    functionDepth: 33
    functionLinenumber: 1534
    functionLinenumberEnd: 1541
    functionName: opendal_operator_options::opendal_operator_options_free
    functionSourceFile: /src/opendal/bindings/c/src/types.rs
    functionUses: 0
    functionsReached:
    - Box::from_raw
    - '*mut c_char::is_null'
    - drop
    linkageType: ''
    returnType: void
    signature: 'pub unsafe extern "C" fn opendal_operator_options_free(ptr: *mut opendal_operator_options)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Vec::with_capacity
      Src: /src/opendal/bindings/c/src/metadata.rs:42,1
    - Dst: Result::len
      Src: /src/opendal/bindings/c/src/metadata.rs:42,1
    - Dst: Vec::with_capacity
      Src: /src/opendal/bindings/c/src/metadata.rs:43,1
    - Dst: Result::len
      Src: /src/opendal/bindings/c/src/metadata.rs:43,1
    - Dst: Vec::with_capacity
      Src: /src/opendal/bindings/c/src/metadata.rs:44,1
    - Dst: Result::len
      Src: /src/opendal/bindings/c/src/metadata.rs:44,1
    - Dst: push
      Src: /src/opendal/bindings/c/src/metadata.rs:47,1
    - Dst: CString::new
      Src: /src/opendal/bindings/c/src/metadata.rs:48,1
    - Dst: FoyerKey::as_str
      Src: /src/opendal/bindings/c/src/metadata.rs:48,1
    - Dst: Self::expect
      Src: /src/opendal/bindings/c/src/metadata.rs:48,1
    - Dst: Vec::push
      Src: /src/opendal/bindings/c/src/metadata.rs:50,1
    - Dst: CString::new
      Src: /src/opendal/bindings/c/src/metadata.rs:51,1
    - Dst: Vec::as_str
      Src: /src/opendal/bindings/c/src/metadata.rs:51,1
    - Dst: Self::expect
      Src: /src/opendal/bindings/c/src/metadata.rs:51,1
    - Dst: '*const opendal_metadata_user_metadata_pair::push'
      Src: /src/opendal/bindings/c/src/metadata.rs:54,1
    - Dst: last
      Src: /src/opendal/bindings/c/src/metadata.rs:55,1
    - Dst: expect
      Src: /src/opendal/bindings/c/src/metadata.rs:55,1
    - Dst: as_ptr
      Src: /src/opendal/bindings/c/src/metadata.rs:55,1
    - Dst: Vec::last
      Src: /src/opendal/bindings/c/src/metadata.rs:56,1
    - Dst: expect
      Src: /src/opendal/bindings/c/src/metadata.rs:56,1
    - Dst: as_ptr
      Src: /src/opendal/bindings/c/src/metadata.rs:56,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 44
    argCount: 1
    argNames:
    - user_metadata
    argTypes:
    - '&HashMap<String, String>'
    constantsTouched: []
    func_position:
      end: 65
      start: 41
    functionDepth: 3
    functionLinenumber: 41
    functionLinenumberEnd: 65
    functionName: opendal_metadata_user_metadata_inner::new
    functionSourceFile: /src/opendal/bindings/c/src/metadata.rs
    functionUses: 1
    functionsReached:
    - FoyerKey::as_str
    - expect
    - push
    - Vec::with_capacity
    - Self::expect
    - Vec::push
    - CString::new
    - Vec::as_str
    - last
    - as_ptr
    - '*const opendal_metadata_user_metadata_pair::push'
    - Result::len
    - Vec::last
    linkageType: ''
    returnType: Self
    signature: 'fn new(user_metadata: &HashMap<String, String>) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 97
      start: 93
    functionDepth: 0
    functionLinenumber: 93
    functionLinenumberEnd: 97
    functionName: opendal_metadata::deref
    functionSourceFile: /src/opendal/bindings/c/src/metadata.rs
    functionUses: 15
    functionsReached: []
    linkageType: ''
    returnType: '&core::Metadata'
    signature: fn deref(&self) -> &core::Metadata
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Box::into_raw
      Src: /src/opendal/bindings/c/src/metadata.rs:105,1
    - Dst: Box::new
      Src: /src/opendal/bindings/c/src/metadata.rs:105,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - m
    argTypes:
    - core::Metadata
    constantsTouched: []
    func_position:
      end: 107
      start: 103
    functionDepth: 2
    functionLinenumber: 103
    functionLinenumberEnd: 107
    functionName: opendal_metadata::new
    functionSourceFile: /src/opendal/bindings/c/src/metadata.rs
    functionUses: 5
    functionsReached:
    - Box::new
    - Box::into_raw
    linkageType: ''
    returnType: Self
    signature: 'pub(crate) fn new(m: core::Metadata) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: '*mut c_char::is_null'
      Src: /src/opendal/bindings/c/src/metadata.rs:113,1
    - Dst: drop
      Src: /src/opendal/bindings/c/src/metadata.rs:114,1
    - Dst: Box::from_raw
      Src: /src/opendal/bindings/c/src/metadata.rs:114,1
    - Dst: drop
      Src: /src/opendal/bindings/c/src/metadata.rs:115,1
    - Dst: Box::from_raw
      Src: /src/opendal/bindings/c/src/metadata.rs:115,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 16
    argCount: 1
    argNames:
    - ptr
    argTypes:
    - '*mut opendal_metadata'
    constantsTouched: []
    func_position:
      end: 118
      start: 111
    functionDepth: 33
    functionLinenumber: 111
    functionLinenumberEnd: 118
    functionName: opendal_metadata::opendal_metadata_free
    functionSourceFile: /src/opendal/bindings/c/src/metadata.rs
    functionUses: 0
    functionsReached:
    - Box::from_raw
    - '*mut c_char::is_null'
    - drop
    linkageType: ''
    returnType: void
    signature: 'pub unsafe extern "C" fn opendal_metadata_free(ptr: *mut opendal_metadata)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: CString::new
      Src: /src/opendal/bindings/c/src/metadata.rs:122,1
    - Dst: Self::expect
      Src: /src/opendal/bindings/c/src/metadata.rs:122,1
    - Dst: into_raw
      Src: /src/opendal/bindings/c/src/metadata.rs:122,1
    - Dst: ptr::null_mut
      Src: /src/opendal/bindings/c/src/metadata.rs:125,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - v
    argTypes:
    - Option<&str>
    constantsTouched: []
    func_position:
      end: 127
      start: 120
    functionDepth: 2
    functionLinenumber: 120
    functionLinenumberEnd: 127
    functionName: opendal_metadata::optional_str
    functionSourceFile: /src/opendal/bindings/c/src/metadata.rs
    functionUses: 0
    functionsReached:
    - Self::expect
    - CString::new
    - into_raw
    - ptr::null_mut
    linkageType: ''
    returnType: '*mut c_char'
    signature: 'fn optional_str(v: Option<&str>) -> *mut c_char'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: opendal_metadata::deref
      Src: /src/opendal/bindings/c/src/metadata.rs:132,1
    - Dst: '&core::Metadata::mode'
      Src: /src/opendal/bindings/c/src/metadata.rs:132,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 137
      start: 131
    functionDepth: 30
    functionLinenumber: 131
    functionLinenumberEnd: 137
    functionName: opendal_metadata::opendal_metadata_mode
    functionSourceFile: /src/opendal/bindings/c/src/metadata.rs
    functionUses: 0
    functionsReached:
    - opendal_metadata::deref
    - '&core::Metadata::mode'
    linkageType: ''
    returnType: u8
    signature: pub extern "C" fn opendal_metadata_mode(&self) -> u8
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: opendal_metadata::deref
      Src: /src/opendal/bindings/c/src/metadata.rs:142,1
    - Dst: '&core::Metadata::content_length'
      Src: /src/opendal/bindings/c/src/metadata.rs:142,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 143
      start: 141
    functionDepth: 37
    functionLinenumber: 141
    functionLinenumberEnd: 143
    functionName: opendal_metadata::opendal_metadata_content_length
    functionSourceFile: /src/opendal/bindings/c/src/metadata.rs
    functionUses: 0
    functionsReached:
    - '&core::Metadata::content_length'
    - opendal_metadata::deref
    linkageType: ''
    returnType: u64
    signature: pub extern "C" fn opendal_metadata_content_length(&self) -> u64
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: opendal_metadata::deref
      Src: /src/opendal/bindings/c/src/metadata.rs:148,1
    - Dst: '&core::Metadata::is_file'
      Src: /src/opendal/bindings/c/src/metadata.rs:148,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 149
      start: 147
    functionDepth: 2
    functionLinenumber: 147
    functionLinenumberEnd: 149
    functionName: opendal_metadata::opendal_metadata_is_file
    functionSourceFile: /src/opendal/bindings/c/src/metadata.rs
    functionUses: 0
    functionsReached:
    - opendal_metadata::deref
    - '&core::Metadata::is_file'
    linkageType: ''
    returnType: bool
    signature: pub extern "C" fn opendal_metadata_is_file(&self) -> bool
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: opendal_metadata::deref
      Src: /src/opendal/bindings/c/src/metadata.rs:154,1
    - Dst: '&core::Metadata::is_dir'
      Src: /src/opendal/bindings/c/src/metadata.rs:154,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 155
      start: 153
    functionDepth: 31
    functionLinenumber: 153
    functionLinenumberEnd: 155
    functionName: opendal_metadata::opendal_metadata_is_dir
    functionSourceFile: /src/opendal/bindings/c/src/metadata.rs
    functionUses: 0
    functionsReached:
    - opendal_metadata::deref
    - '&core::Metadata::is_dir'
    linkageType: ''
    returnType: bool
    signature: pub extern "C" fn opendal_metadata_is_dir(&self) -> bool
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: opendal_metadata::deref
      Src: /src/opendal/bindings/c/src/metadata.rs:162,1
    - Dst: '&core::Metadata::is_current'
      Src: /src/opendal/bindings/c/src/metadata.rs:162,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 167
      start: 161
    functionDepth: 1
    functionLinenumber: 161
    functionLinenumberEnd: 167
    functionName: opendal_metadata::opendal_metadata_is_current
    functionSourceFile: /src/opendal/bindings/c/src/metadata.rs
    functionUses: 0
    functionsReached:
    - '&core::Metadata::is_current'
    - opendal_metadata::deref
    linkageType: ''
    returnType: u8
    signature: pub extern "C" fn opendal_metadata_is_current(&self) -> u8
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: opendal_metadata::deref
      Src: /src/opendal/bindings/c/src/metadata.rs:172,1
    - Dst: '&core::Metadata::is_deleted'
      Src: /src/opendal/bindings/c/src/metadata.rs:172,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 173
      start: 171
    functionDepth: 35
    functionLinenumber: 171
    functionLinenumberEnd: 173
    functionName: opendal_metadata::opendal_metadata_is_deleted
    functionSourceFile: /src/opendal/bindings/c/src/metadata.rs
    functionUses: 0
    functionsReached:
    - opendal_metadata::deref
    - '&core::Metadata::is_deleted'
    linkageType: ''
    returnType: bool
    signature: pub extern "C" fn opendal_metadata_is_deleted(&self) -> bool
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self::optional_str
      Src: /src/opendal/bindings/c/src/metadata.rs:180,1
    - Dst: opendal_metadata::deref
      Src: /src/opendal/bindings/c/src/metadata.rs:180,1
    - Dst: '&core::Metadata::cache_control'
      Src: /src/opendal/bindings/c/src/metadata.rs:180,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 181
      start: 179
    functionDepth: 33
    functionLinenumber: 179
    functionLinenumberEnd: 181
    functionName: opendal_metadata::opendal_metadata_cache_control
    functionSourceFile: /src/opendal/bindings/c/src/metadata.rs
    functionUses: 0
    functionsReached:
    - '&core::Metadata::cache_control'
    - Self::optional_str
    - opendal_metadata::deref
    linkageType: ''
    returnType: '*mut c_char'
    signature: pub extern "C" fn opendal_metadata_cache_control(&self) -> *mut c_char
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self::optional_str
      Src: /src/opendal/bindings/c/src/metadata.rs:188,1
    - Dst: opendal_metadata::deref
      Src: /src/opendal/bindings/c/src/metadata.rs:188,1
    - Dst: '&core::Metadata::content_disposition'
      Src: /src/opendal/bindings/c/src/metadata.rs:188,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 189
      start: 187
    functionDepth: 33
    functionLinenumber: 187
    functionLinenumberEnd: 189
    functionName: opendal_metadata::opendal_metadata_content_disposition
    functionSourceFile: /src/opendal/bindings/c/src/metadata.rs
    functionUses: 0
    functionsReached:
    - Self::optional_str
    - opendal_metadata::deref
    - '&core::Metadata::content_disposition'
    linkageType: ''
    returnType: '*mut c_char'
    signature: pub extern "C" fn opendal_metadata_content_disposition(&self) -> *mut
      c_char
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self::optional_str
      Src: /src/opendal/bindings/c/src/metadata.rs:196,1
    - Dst: opendal_metadata::deref
      Src: /src/opendal/bindings/c/src/metadata.rs:196,1
    - Dst: '&core::Metadata::content_md5'
      Src: /src/opendal/bindings/c/src/metadata.rs:196,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 197
      start: 195
    functionDepth: 3
    functionLinenumber: 195
    functionLinenumberEnd: 197
    functionName: opendal_metadata::opendal_metadata_content_md5
    functionSourceFile: /src/opendal/bindings/c/src/metadata.rs
    functionUses: 0
    functionsReached:
    - '&core::Metadata::content_md5'
    - Self::optional_str
    - opendal_metadata::deref
    linkageType: ''
    returnType: '*mut c_char'
    signature: pub extern "C" fn opendal_metadata_content_md5(&self) -> *mut c_char
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self::optional_str
      Src: /src/opendal/bindings/c/src/metadata.rs:204,1
    - Dst: opendal_metadata::deref
      Src: /src/opendal/bindings/c/src/metadata.rs:204,1
    - Dst: '&core::Metadata::content_type'
      Src: /src/opendal/bindings/c/src/metadata.rs:204,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 205
      start: 203
    functionDepth: 33
    functionLinenumber: 203
    functionLinenumberEnd: 205
    functionName: opendal_metadata::opendal_metadata_content_type
    functionSourceFile: /src/opendal/bindings/c/src/metadata.rs
    functionUses: 0
    functionsReached:
    - '&core::Metadata::content_type'
    - Self::optional_str
    - opendal_metadata::deref
    linkageType: ''
    returnType: '*mut c_char'
    signature: pub extern "C" fn opendal_metadata_content_type(&self) -> *mut c_char
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self::optional_str
      Src: /src/opendal/bindings/c/src/metadata.rs:212,1
    - Dst: opendal_metadata::deref
      Src: /src/opendal/bindings/c/src/metadata.rs:212,1
    - Dst: '&core::Metadata::content_encoding'
      Src: /src/opendal/bindings/c/src/metadata.rs:212,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 213
      start: 211
    functionDepth: 33
    functionLinenumber: 211
    functionLinenumberEnd: 213
    functionName: opendal_metadata::opendal_metadata_content_encoding
    functionSourceFile: /src/opendal/bindings/c/src/metadata.rs
    functionUses: 0
    functionsReached:
    - Self::optional_str
    - opendal_metadata::deref
    - '&core::Metadata::content_encoding'
    linkageType: ''
    returnType: '*mut c_char'
    signature: pub extern "C" fn opendal_metadata_content_encoding(&self) -> *mut
      c_char
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self::optional_str
      Src: /src/opendal/bindings/c/src/metadata.rs:220,1
    - Dst: opendal_metadata::deref
      Src: /src/opendal/bindings/c/src/metadata.rs:220,1
    - Dst: '&core::Metadata::etag'
      Src: /src/opendal/bindings/c/src/metadata.rs:220,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 221
      start: 219
    functionDepth: 3
    functionLinenumber: 219
    functionLinenumberEnd: 221
    functionName: opendal_metadata::opendal_metadata_etag
    functionSourceFile: /src/opendal/bindings/c/src/metadata.rs
    functionUses: 0
    functionsReached:
    - Self::optional_str
    - opendal_metadata::deref
    - '&core::Metadata::etag'
    linkageType: ''
    returnType: '*mut c_char'
    signature: pub extern "C" fn opendal_metadata_etag(&self) -> *mut c_char
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self::optional_str
      Src: /src/opendal/bindings/c/src/metadata.rs:228,1
    - Dst: opendal_metadata::deref
      Src: /src/opendal/bindings/c/src/metadata.rs:228,1
    - Dst: '&core::Metadata::version'
      Src: /src/opendal/bindings/c/src/metadata.rs:228,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 229
      start: 227
    functionDepth: 33
    functionLinenumber: 227
    functionLinenumberEnd: 229
    functionName: opendal_metadata::opendal_metadata_version
    functionSourceFile: /src/opendal/bindings/c/src/metadata.rs
    functionUses: 0
    functionsReached:
    - Self::optional_str
    - opendal_metadata::deref
    - '&core::Metadata::version'
    linkageType: ''
    returnType: '*mut c_char'
    signature: pub extern "C" fn opendal_metadata_version(&self) -> *mut c_char
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: opendal_metadata::deref
      Src: /src/opendal/bindings/c/src/metadata.rs:238,1
    - Dst: '&core::Metadata::user_metadata'
      Src: /src/opendal/bindings/c/src/metadata.rs:238,1
    - Dst: Box::into_raw
      Src: /src/opendal/bindings/c/src/metadata.rs:239,1
    - Dst: Box::new
      Src: /src/opendal/bindings/c/src/metadata.rs:239,1
    - Dst: Box::into_raw
      Src: /src/opendal/bindings/c/src/metadata.rs:240,1
    - Dst: Box::new
      Src: /src/opendal/bindings/c/src/metadata.rs:240,1
    - Dst: opendal_metadata_user_metadata_inner::new
      Src: /src/opendal/bindings/c/src/metadata.rs:240,1
    - Dst: ptr::null_mut
      Src: /src/opendal/bindings/c/src/metadata.rs:244,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 246
      start: 235
    functionDepth: 33
    functionLinenumber: 235
    functionLinenumberEnd: 246
    functionName: opendal_metadata::opendal_metadata_get_user_metadata
    functionSourceFile: /src/opendal/bindings/c/src/metadata.rs
    functionUses: 0
    functionsReached:
    - Box::new
    - opendal_metadata_user_metadata_inner::new
    - ptr::null_mut
    - '&core::Metadata::user_metadata'
    - opendal_metadata::deref
    - Box::into_raw
    linkageType: ''
    returnType: '*mut opendal_metadata_user_metadata'
    signature: pub extern "C" fn opendal_metadata_get_user_metadata(&self,) -> *mut
      opendal_metadata_user_metadata
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: opendal_metadata::deref
      Src: /src/opendal/bindings/c/src/metadata.rs:261,1
    - Dst: '&core::Metadata::last_modified'
      Src: /src/opendal/bindings/c/src/metadata.rs:261,1
    - Dst: Timestamp::into_inner
      Src: /src/opendal/bindings/c/src/metadata.rs:264,1
    - Dst: jiff::Timestamp::as_millisecond
      Src: /src/opendal/bindings/c/src/metadata.rs:264,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 266
      start: 260
    functionDepth: 2
    functionLinenumber: 260
    functionLinenumberEnd: 266
    functionName: opendal_metadata::opendal_metadata_last_modified_ms
    functionSourceFile: /src/opendal/bindings/c/src/metadata.rs
    functionUses: 0
    functionsReached:
    - jiff::Timestamp::as_millisecond
    - opendal_metadata::deref
    - Timestamp::into_inner
    - '&core::Metadata::last_modified'
    linkageType: ''
    returnType: i64
    signature: pub extern "C" fn opendal_metadata_last_modified_ms(&self) -> i64
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: anyhow::Result::is_null
      Src: /src/opendal/bindings/c/src/metadata.rs:275,1
    - Dst: ptr::null
      Src: /src/opendal/bindings/c/src/metadata.rs:276,1
    - Dst: as_ptr
      Src: /src/opendal/bindings/c/src/metadata.rs:280,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 17
    argCount: 1
    argNames:
    - metadata
    argTypes:
    - '*const Self'
    constantsTouched: []
    func_position:
      end: 281
      start: 272
    functionDepth: 0
    functionLinenumber: 272
    functionLinenumberEnd: 281
    functionName: opendal_metadata_user_metadata::opendal_metadata_user_metadata_pairs
    functionSourceFile: /src/opendal/bindings/c/src/metadata.rs
    functionUses: 0
    functionsReached:
    - anyhow::Result::is_null
    - ptr::null
    - as_ptr
    linkageType: ''
    returnType: '*const opendal_metadata_user_metadata_pair'
    signature: 'pub unsafe extern "C" fn opendal_metadata_user_metadata_pairs(metadata:
      *const Self,) -> *const opendal_metadata_user_metadata_pair'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: anyhow::Result::is_null
      Src: /src/opendal/bindings/c/src/metadata.rs:286,1
    - Dst: len
      Src: /src/opendal/bindings/c/src/metadata.rs:291,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 16
    argCount: 1
    argNames:
    - metadata
    argTypes:
    - '*const Self'
    constantsTouched: []
    func_position:
      end: 292
      start: 285
    functionDepth: 3
    functionLinenumber: 285
    functionLinenumberEnd: 292
    functionName: opendal_metadata_user_metadata::opendal_metadata_user_metadata_len
    functionSourceFile: /src/opendal/bindings/c/src/metadata.rs
    functionUses: 0
    functionsReached:
    - len
    - anyhow::Result::is_null
    linkageType: ''
    returnType: usize
    signature: 'pub unsafe extern "C" fn opendal_metadata_user_metadata_len(metadata:
      *const Self) -> usize'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: anyhow::Result::is_null
      Src: /src/opendal/bindings/c/src/metadata.rs:297,1
    - Dst: drop
      Src: /src/opendal/bindings/c/src/metadata.rs:298,1
    - Dst: Box::from_raw
      Src: /src/opendal/bindings/c/src/metadata.rs:299,1
    - Dst: drop
      Src: /src/opendal/bindings/c/src/metadata.rs:301,1
    - Dst: Box::from_raw
      Src: /src/opendal/bindings/c/src/metadata.rs:301,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 1
    argNames:
    - metadata
    argTypes:
    - '*mut Self'
    constantsTouched: []
    func_position:
      end: 303
      start: 296
    functionDepth: 33
    functionLinenumber: 296
    functionLinenumberEnd: 303
    functionName: opendal_metadata_user_metadata::opendal_metadata_user_metadata_free
    functionSourceFile: /src/opendal/bindings/c/src/metadata.rs
    functionUses: 0
    functionsReached:
    - Box::from_raw
    - anyhow::Result::is_null
    - drop
    linkageType: ''
    returnType: void
    signature: 'pub unsafe extern "C" fn opendal_metadata_user_metadata_free(metadata:
      *mut Self)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: core::layers::RetryLayer::new
      Src: /src/opendal/bindings/c/src/layer.rs:47,1
    - Dst: Self::with_factor
      Src: /src/opendal/bindings/c/src/layer.rs:47,1
    - Dst: Self::with_min_delay
      Src: /src/opendal/bindings/c/src/layer.rs:47,1
    - Dst: Self::with_max_delay
      Src: /src/opendal/bindings/c/src/layer.rs:47,1
    - Dst: Self::with_max_times
      Src: /src/opendal/bindings/c/src/layer.rs:47,1
    - Dst: ThrottleAccessor::with_jitter
      Src: /src/opendal/bindings/c/src/layer.rs:53,1
    - Dst: layer
      Src: /src/opendal/bindings/c/src/layer.rs:55,1
    - Dst: layer
      Src: /src/opendal/bindings/c/src/layer.rs:60,1
    - Dst: core::layers::TimeoutLayer::new
      Src: /src/opendal/bindings/c/src/layer.rs:61,1
    - Dst: Self::with_timeout
      Src: /src/opendal/bindings/c/src/layer.rs:61,1
    - Dst: Self::with_io_timeout
      Src: /src/opendal/bindings/c/src/layer.rs:61,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 34
    argCount: 1
    argNames:
    - op
    argTypes:
    - core::Operator
    constantsTouched: []
    func_position:
      end: 66
      start: 38
    functionDepth: 3
    functionLinenumber: 38
    functionLinenumberEnd: 66
    functionName: OperatorLayer::apply
    functionSourceFile: /src/opendal/bindings/c/src/layer.rs
    functionUses: 0
    functionsReached:
    - Self::with_max_times
    - core::layers::RetryLayer::new
    - Self::with_timeout
    - Self::with_io_timeout
    - Self::with_max_delay
    - core::layers::TimeoutLayer::new
    - Self::with_min_delay
    - ThrottleAccessor::with_jitter
    - Self::with_factor
    - layer
    linkageType: ''
    returnType: core::Operator
    signature: 'fn apply(&self, op: core::Operator) -> core::Operator'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: opendal_operator_layers::deref
      Src: /src/opendal/bindings/c/src/layer.rs:81,1
    - Dst: ThrottleAccessor::apply
      Src: /src/opendal/bindings/c/src/layer.rs:82,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - op
    argTypes:
    - core::Operator
    constantsTouched: []
    func_position:
      end: 85
      start: 80
    functionDepth: 38
    functionLinenumber: 80
    functionLinenumberEnd: 85
    functionName: opendal_operator_layers::apply
    functionSourceFile: /src/opendal/bindings/c/src/layer.rs
    functionUses: 0
    functionsReached:
    - ThrottleAccessor::apply
    - opendal_operator_layers::deref
    linkageType: ''
    returnType: core::Operator
    signature: 'pub(crate) fn apply(&self, mut op: core::Operator) -> core::Operator'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 90
      start: 87
    functionDepth: 0
    functionLinenumber: 87
    functionLinenumberEnd: 90
    functionName: opendal_operator_layers::deref
    functionSourceFile: /src/opendal/bindings/c/src/layer.rs
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: '&[OperatorLayer]'
    signature: fn deref(&self) -> &[OperatorLayer]
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 95
      start: 92
    functionDepth: 0
    functionLinenumber: 92
    functionLinenumberEnd: 95
    functionName: opendal_operator_layers::deref_mut
    functionSourceFile: /src/opendal/bindings/c/src/layer.rs
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: '&mut Vec'
    signature: fn deref_mut(&mut self) -> &mut Vec<OperatorLayer>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Vec::new
      Src: /src/opendal/bindings/c/src/layer.rs:100,1
    - Dst: Box::into_raw
      Src: /src/opendal/bindings/c/src/layer.rs:102,1
    - Dst: Box::new
      Src: /src/opendal/bindings/c/src/layer.rs:102,1
    - Dst: Box::into_raw
      Src: /src/opendal/bindings/c/src/layer.rs:104,1
    - Dst: Box::new
      Src: /src/opendal/bindings/c/src/layer.rs:104,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 105
      start: 99
    functionDepth: 2
    functionLinenumber: 99
    functionLinenumberEnd: 105
    functionName: opendal_operator_layers::opendal_operator_layers_new
    functionSourceFile: /src/opendal/bindings/c/src/layer.rs
    functionUses: 0
    functionsReached:
    - Box::new
    - Vec::new
    - Box::into_raw
    linkageType: ''
    returnType: '*mut Self'
    signature: pub extern "C" fn opendal_operator_layers_new() -> *mut Self
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: opendal_operator_layers::deref_mut
      Src: /src/opendal/bindings/c/src/layer.rs:116,1
    - Dst: '&mut Vec::push'
      Src: /src/opendal/bindings/c/src/layer.rs:116,1
    - Dst: Duration::from_nanos
      Src: /src/opendal/bindings/c/src/layer.rs:119,1
    - Dst: Duration::from_nanos
      Src: /src/opendal/bindings/c/src/layer.rs:120,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 5
    argNames:
    - jitter
    - factor
    - min_delay_ns
    - max_delay_ns
    - max_times
    argTypes:
    - bool
    - f32
    - u64
    - u64
    - u64
    constantsTouched: []
    func_position:
      end: 123
      start: 108
    functionDepth: 5
    functionLinenumber: 108
    functionLinenumberEnd: 123
    functionName: opendal_operator_layers::add_retry
    functionSourceFile: /src/opendal/bindings/c/src/layer.rs
    functionUses: 1
    functionsReached:
    - Duration::from_nanos
    - '&mut Vec::push'
    - opendal_operator_layers::deref_mut
    linkageType: ''
    returnType: void
    signature: 'pub fn add_retry(&mut self,jitter: bool,factor: f32,min_delay_ns:
      u64,max_delay_ns: u64,max_times: u64,)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: opendal_operator_layers::add_retry
      Src: /src/opendal/bindings/c/src/layer.rs:135,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 5
    argNames:
    - jitter
    - factor
    - min_delay_ns
    - max_delay_ns
    - max_times
    argTypes:
    - bool
    - f32
    - u64
    - u64
    - u64
    constantsTouched: []
    func_position:
      end: 136
      start: 127
    functionDepth: 6
    functionLinenumber: 127
    functionLinenumberEnd: 136
    functionName: opendal_operator_layers::opendal_operator_layers_add_retry
    functionSourceFile: /src/opendal/bindings/c/src/layer.rs
    functionUses: 0
    functionsReached:
    - opendal_operator_layers::add_retry
    linkageType: ''
    returnType: void
    signature: 'pub unsafe extern "C" fn opendal_operator_layers_add_retry(&mut self,jitter:
      bool,factor: f32,min_delay_ns: u64,max_delay_ns: u64,max_times: u64,)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: opendal_operator_layers::deref_mut
      Src: /src/opendal/bindings/c/src/layer.rs:140,1
    - Dst: '&mut Vec::push'
      Src: /src/opendal/bindings/c/src/layer.rs:140,1
    - Dst: Duration::from_nanos
      Src: /src/opendal/bindings/c/src/layer.rs:141,1
    - Dst: Duration::from_nanos
      Src: /src/opendal/bindings/c/src/layer.rs:142,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 2
    argNames:
    - timeout_ns
    - io_timeout_ns
    argTypes:
    - u64
    - u64
    constantsTouched: []
    func_position:
      end: 144
      start: 139
    functionDepth: 5
    functionLinenumber: 139
    functionLinenumberEnd: 144
    functionName: opendal_operator_layers::add_timeout
    functionSourceFile: /src/opendal/bindings/c/src/layer.rs
    functionUses: 1
    functionsReached:
    - Duration::from_nanos
    - '&mut Vec::push'
    - opendal_operator_layers::deref_mut
    linkageType: ''
    returnType: void
    signature: 'pub fn add_timeout(&mut self, timeout_ns: u64, io_timeout_ns: u64)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: opendal_operator_layers::add_timeout
      Src: /src/opendal/bindings/c/src/layer.rs:153,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - timeout_ns
    - io_timeout_ns
    argTypes:
    - u64
    - u64
    constantsTouched: []
    func_position:
      end: 154
      start: 148
    functionDepth: 6
    functionLinenumber: 148
    functionLinenumberEnd: 154
    functionName: opendal_operator_layers::opendal_operator_layers_add_timeout
    functionSourceFile: /src/opendal/bindings/c/src/layer.rs
    functionUses: 0
    functionsReached:
    - opendal_operator_layers::add_timeout
    linkageType: ''
    returnType: void
    signature: 'pub unsafe extern "C" fn opendal_operator_layers_add_timeout(&mut
      self,timeout_ns: u64,io_timeout_ns: u64,)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: '*mut c_char::is_null'
      Src: /src/opendal/bindings/c/src/layer.rs:160,1
    - Dst: drop
      Src: /src/opendal/bindings/c/src/layer.rs:161,1
    - Dst: Box::from_raw
      Src: /src/opendal/bindings/c/src/layer.rs:161,1
    - Dst: drop
      Src: /src/opendal/bindings/c/src/layer.rs:162,1
    - Dst: Box::from_raw
      Src: /src/opendal/bindings/c/src/layer.rs:162,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 16
    argCount: 1
    argNames:
    - ptr
    argTypes:
    - '*mut opendal_operator_layers'
    constantsTouched: []
    func_position:
      end: 165
      start: 158
    functionDepth: 33
    functionLinenumber: 158
    functionLinenumberEnd: 165
    functionName: opendal_operator_layers::opendal_operator_layers_free
    functionSourceFile: /src/opendal/bindings/c/src/layer.rs
    functionUses: 0
    functionsReached:
    - Box::from_raw
    - '*mut c_char::is_null'
    - drop
    linkageType: ''
    returnType: void
    signature: 'pub unsafe extern "C" fn opendal_operator_layers_free(ptr: *mut opendal_operator_layers)'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 42
      start: 38
    functionDepth: 0
    functionLinenumber: 38
    functionLinenumberEnd: 42
    functionName: opendal_lister::deref_mut
    functionSourceFile: /src/opendal/bindings/c/src/lister.rs
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: '&mut core::blocking::Lister'
    signature: fn deref_mut(&mut self) -> &mut core::blocking::Lister
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Box::into_raw
      Src: /src/opendal/bindings/c/src/lister.rs:48,1
    - Dst: Box::new
      Src: /src/opendal/bindings/c/src/lister.rs:48,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - lister
    argTypes:
    - core::blocking::Lister
    constantsTouched: []
    func_position:
      end: 50
      start: 46
    functionDepth: 2
    functionLinenumber: 46
    functionLinenumberEnd: 50
    functionName: opendal_lister::new
    functionSourceFile: /src/opendal/bindings/c/src/lister.rs
    functionUses: 2
    functionsReached:
    - Box::new
    - Box::into_raw
    linkageType: ''
    returnType: Self
    signature: 'pub(crate) fn new(lister: core::blocking::Lister) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: opendal_lister::deref_mut
      Src: /src/opendal/bindings/c/src/lister.rs:61,1
    - Dst: '&mut core::blocking::Lister::next'
      Src: /src/opendal/bindings/c/src/lister.rs:61,1
    - Dst: Result::is_none
      Src: /src/opendal/bindings/c/src/lister.rs:62,1
    - Dst: std::ptr::null_mut
      Src: /src/opendal/bindings/c/src/lister.rs:64,1
    - Dst: std::ptr::null_mut
      Src: /src/opendal/bindings/c/src/lister.rs:65,1
    - Dst: Result::unwrap
      Src: /src/opendal/bindings/c/src/lister.rs:69,1
    - Dst: Box::into_raw
      Src: /src/opendal/bindings/c/src/lister.rs:71,1
    - Dst: Box::new
      Src: /src/opendal/bindings/c/src/lister.rs:71,1
    - Dst: opendal_entry::new
      Src: /src/opendal/bindings/c/src/lister.rs:71,1
    - Dst: std::ptr::null_mut
      Src: /src/opendal/bindings/c/src/lister.rs:74,1
    - Dst: std::ptr::null_mut
      Src: /src/opendal/bindings/c/src/lister.rs:78,1
    - Dst: opendal_error::new
      Src: /src/opendal/bindings/c/src/lister.rs:79,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 25
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 82
      start: 60
    functionDepth: 35
    functionLinenumber: 60
    functionLinenumberEnd: 82
    functionName: opendal_lister::opendal_lister_next
    functionSourceFile: /src/opendal/bindings/c/src/lister.rs
    functionUses: 0
    functionsReached:
    - opendal_error::new
    - Box::into_raw
    - std::ptr::null_mut
    - Box::new
    - opendal_entry::new
    - '&mut core::blocking::Lister::next'
    - Result::unwrap
    - Result::is_none
    - opendal_lister::deref_mut
    linkageType: ''
    returnType: opendal_result_lister_next
    signature: pub unsafe extern "C" fn opendal_lister_next(&mut self) -> opendal_result_lister_next
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: '*mut c_char::is_null'
      Src: /src/opendal/bindings/c/src/lister.rs:88,1
    - Dst: drop
      Src: /src/opendal/bindings/c/src/lister.rs:89,1
    - Dst: Box::from_raw
      Src: /src/opendal/bindings/c/src/lister.rs:89,1
    - Dst: drop
      Src: /src/opendal/bindings/c/src/lister.rs:90,1
    - Dst: Box::from_raw
      Src: /src/opendal/bindings/c/src/lister.rs:90,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 16
    argCount: 1
    argNames:
    - ptr
    argTypes:
    - '*mut opendal_lister'
    constantsTouched: []
    func_position:
      end: 93
      start: 86
    functionDepth: 33
    functionLinenumber: 86
    functionLinenumberEnd: 93
    functionName: opendal_lister::opendal_lister_free
    functionSourceFile: /src/opendal/bindings/c/src/lister.rs
    functionUses: 0
    functionsReached:
    - Box::from_raw
    - '*mut c_char::is_null'
    - drop
    linkageType: ''
    returnType: void
    signature: 'pub unsafe extern "C" fn opendal_lister_free(ptr: *mut opendal_lister)'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 47
      start: 43
    functionDepth: 0
    functionLinenumber: 43
    functionLinenumberEnd: 47
    functionName: opendal_reader::deref_mut
    functionSourceFile: /src/opendal/bindings/c/src/reader.rs
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: '&mut core::blocking::StdReader'
    signature: fn deref_mut(&mut self) -> &mut core::blocking::StdReader
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Box::into_raw
      Src: /src/opendal/bindings/c/src/reader.rs:53,1
    - Dst: Box::new
      Src: /src/opendal/bindings/c/src/reader.rs:53,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - reader
    argTypes:
    - core::blocking::StdReader
    constantsTouched: []
    func_position:
      end: 55
      start: 51
    functionDepth: 2
    functionLinenumber: 51
    functionLinenumberEnd: 55
    functionName: opendal_reader::new
    functionSourceFile: /src/opendal/bindings/c/src/reader.rs
    functionUses: 2
    functionsReached:
    - Box::new
    - Box::into_raw
    linkageType: ''
    returnType: Self
    signature: 'pub(crate) fn new(reader: core::blocking::StdReader) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: std::slice::from_raw_parts_mut
      Src: /src/opendal/bindings/c/src/reader.rs:65,1
    - Dst: opendal_reader::deref_mut
      Src: /src/opendal/bindings/c/src/reader.rs:66,1
    - Dst: '&mut core::blocking::StdReader::read'
      Src: /src/opendal/bindings/c/src/reader.rs:66,1
    - Dst: std::ptr::null_mut
      Src: /src/opendal/bindings/c/src/reader.rs:69,1
    - Dst: opendal_error::new
      Src: /src/opendal/bindings/c/src/reader.rs:73,1
    - Dst: core::Error::new
      Src: /src/opendal/bindings/c/src/reader.rs:74,1
    - Dst: Self::set_source
      Src: /src/opendal/bindings/c/src/reader.rs:74,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 15
    argCount: 2
    argNames:
    - buf
    - len
    argTypes:
    - '*mut u8'
    - usize
    constantsTouched: []
    func_position:
      end: 79
      start: 59
    functionDepth: 41
    functionLinenumber: 59
    functionLinenumberEnd: 79
    functionName: opendal_reader::opendal_reader_read
    functionSourceFile: /src/opendal/bindings/c/src/reader.rs
    functionUses: 0
    functionsReached:
    - opendal_error::new
    - std::ptr::null_mut
    - '&mut core::blocking::StdReader::read'
    - Self::set_source
    - opendal_reader::deref_mut
    - core::Error::new
    - std::slice::from_raw_parts_mut
    linkageType: ''
    returnType: opendal_result_reader_read
    signature: 'pub unsafe extern "C" fn opendal_reader_read(&mut self,buf: *mut u8,len:
      usize,) -> opendal_result_reader_read'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: SeekFrom::Start
      Src: /src/opendal/bindings/c/src/reader.rs:89,1
    - Dst: SeekFrom::Current
      Src: /src/opendal/bindings/c/src/reader.rs:90,1
    - Dst: SeekFrom::End
      Src: /src/opendal/bindings/c/src/reader.rs:91,1
    - Dst: opendal_error::new
      Src: /src/opendal/bindings/c/src/reader.rs:95,1
    - Dst: core::Error::new
      Src: /src/opendal/bindings/c/src/reader.rs:95,1
    - Dst: opendal_reader::deref_mut
      Src: /src/opendal/bindings/c/src/reader.rs:103,1
    - Dst: '&mut core::blocking::StdReader::seek'
      Src: /src/opendal/bindings/c/src/reader.rs:103,1
    - Dst: std::ptr::null_mut
      Src: /src/opendal/bindings/c/src/reader.rs:106,1
    - Dst: opendal_error::new
      Src: /src/opendal/bindings/c/src/reader.rs:110,1
    - Dst: core::Error::new
      Src: /src/opendal/bindings/c/src/reader.rs:111,1
    - Dst: Self::set_source
      Src: /src/opendal/bindings/c/src/reader.rs:111,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 23
    argCount: 2
    argNames:
    - offset
    - whence
    argTypes:
    - i64
    - i32
    constantsTouched: []
    func_position:
      end: 116
      start: 83
    functionDepth: 41
    functionLinenumber: 83
    functionLinenumberEnd: 116
    functionName: opendal_reader::opendal_reader_seek
    functionSourceFile: /src/opendal/bindings/c/src/reader.rs
    functionUses: 0
    functionsReached:
    - opendal_error::new
    - SeekFrom::Start
    - std::ptr::null_mut
    - SeekFrom::Current
    - '&mut core::blocking::StdReader::seek'
    - Self::set_source
    - opendal_reader::deref_mut
    - core::Error::new
    - SeekFrom::End
    linkageType: ''
    returnType: opendal_result_reader_seek
    signature: 'pub unsafe extern "C" fn opendal_reader_seek(&mut self,offset: i64,whence:
      i32,) -> opendal_result_reader_seek'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: '*mut c_char::is_null'
      Src: /src/opendal/bindings/c/src/reader.rs:122,1
    - Dst: drop
      Src: /src/opendal/bindings/c/src/reader.rs:123,1
    - Dst: Box::from_raw
      Src: /src/opendal/bindings/c/src/reader.rs:123,1
    - Dst: drop
      Src: /src/opendal/bindings/c/src/reader.rs:126,1
    - Dst: Box::from_raw
      Src: /src/opendal/bindings/c/src/reader.rs:126,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 16
    argCount: 1
    argNames:
    - ptr
    argTypes:
    - '*mut opendal_reader'
    constantsTouched: []
    func_position:
      end: 129
      start: 120
    functionDepth: 33
    functionLinenumber: 120
    functionLinenumberEnd: 129
    functionName: opendal_reader::opendal_reader_free
    functionSourceFile: /src/opendal/bindings/c/src/reader.rs
    functionUses: 0
    functionsReached:
    - Box::from_raw
    - '*mut c_char::is_null'
    - drop
    linkageType: ''
    returnType: void
    signature: 'pub unsafe extern "C" fn opendal_reader_free(ptr: *mut opendal_reader)'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 53
      start: 49
    functionDepth: 0
    functionLinenumber: 49
    functionLinenumberEnd: 53
    functionName: opendal_copier::deref_mut
    functionSourceFile: /src/opendal/bindings/c/src/copier.rs
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: '&mut core::blocking::Copier'
    signature: fn deref_mut(&mut self) -> &mut core::blocking::Copier
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Box::into_raw
      Src: /src/opendal/bindings/c/src/copier.rs:59,1
    - Dst: Box::new
      Src: /src/opendal/bindings/c/src/copier.rs:59,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - copier
    argTypes:
    - core::blocking::Copier
    constantsTouched: []
    func_position:
      end: 61
      start: 57
    functionDepth: 2
    functionLinenumber: 57
    functionLinenumberEnd: 61
    functionName: opendal_copier::new
    functionSourceFile: /src/opendal/bindings/c/src/copier.rs
    functionUses: 2
    functionsReached:
    - Box::new
    - Box::into_raw
    linkageType: ''
    returnType: Self
    signature: 'pub(crate) fn new(copier: core::blocking::Copier) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: opendal_copier::deref_mut
      Src: /src/opendal/bindings/c/src/copier.rs:77,1
    - Dst: '&mut core::blocking::Copier::next'
      Src: /src/opendal/bindings/c/src/copier.rs:77,1
    - Dst: std::ptr::null_mut
      Src: /src/opendal/bindings/c/src/copier.rs:81,1
    - Dst: std::ptr::null_mut
      Src: /src/opendal/bindings/c/src/copier.rs:86,1
    - Dst: opendal_error::new
      Src: /src/opendal/bindings/c/src/copier.rs:91,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 94
      start: 76
    functionDepth: 41
    functionLinenumber: 76
    functionLinenumberEnd: 94
    functionName: opendal_copier::opendal_copier_next
    functionSourceFile: /src/opendal/bindings/c/src/copier.rs
    functionUses: 0
    functionsReached:
    - '&mut core::blocking::Copier::next'
    - opendal_copier::deref_mut
    - std::ptr::null_mut
    - opendal_error::new
    linkageType: ''
    returnType: opendal_result_copier_next
    signature: pub unsafe extern "C" fn opendal_copier_next(&mut self) -> opendal_result_copier_next
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: opendal_copier::deref_mut
      Src: /src/opendal/bindings/c/src/copier.rs:102,1
    - Dst: '&mut core::blocking::Copier::abort'
      Src: /src/opendal/bindings/c/src/copier.rs:102,1
    - Dst: opendal_error::new
      Src: /src/opendal/bindings/c/src/copier.rs:103,1
    - Dst: std::ptr::null_mut
      Src: /src/opendal/bindings/c/src/copier.rs:105,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 107
      start: 101
    functionDepth: 41
    functionLinenumber: 101
    functionLinenumberEnd: 107
    functionName: opendal_copier::opendal_copier_abort
    functionSourceFile: /src/opendal/bindings/c/src/copier.rs
    functionUses: 0
    functionsReached:
    - opendal_error::new
    - opendal_copier::deref_mut
    - '&mut core::blocking::Copier::abort'
    - std::ptr::null_mut
    linkageType: ''
    returnType: '*mut opendal_error'
    signature: pub unsafe extern "C" fn opendal_copier_abort(&mut self) -> *mut opendal_error
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: '*mut c_char::is_null'
      Src: /src/opendal/bindings/c/src/copier.rs:113,1
    - Dst: drop
      Src: /src/opendal/bindings/c/src/copier.rs:114,1
    - Dst: Box::from_raw
      Src: /src/opendal/bindings/c/src/copier.rs:114,1
    - Dst: std::ptr::null_mut
      Src: /src/opendal/bindings/c/src/copier.rs:116,1
    - Dst: drop
      Src: /src/opendal/bindings/c/src/copier.rs:117,1
    - Dst: Box::from_raw
      Src: /src/opendal/bindings/c/src/copier.rs:117,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 22
    argCount: 1
    argNames:
    - ptr
    argTypes:
    - '*mut opendal_copier'
    constantsTouched: []
    func_position:
      end: 120
      start: 111
    functionDepth: 33
    functionLinenumber: 111
    functionLinenumberEnd: 120
    functionName: opendal_copier::opendal_copier_free
    functionSourceFile: /src/opendal/bindings/c/src/copier.rs
    functionUses: 0
    functionsReached:
    - Box::from_raw
    - '*mut c_char::is_null'
    - drop
    - std::ptr::null_mut
    linkageType: ''
    returnType: void
    signature: 'pub unsafe extern "C" fn opendal_copier_free(ptr: *mut opendal_copier)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: CString::new
      Src: /src/opendal/bindings/c/src/presign.rs:55,1
    - Dst: ocorePresignedRequest::method
      Src: /src/opendal/bindings/c/src/presign.rs:55,1
    - Dst: '&str::as_str'
      Src: /src/opendal/bindings/c/src/presign.rs:55,1
    - Dst: Self::unwrap
      Src: /src/opendal/bindings/c/src/presign.rs:55,1
    - Dst: CString::new
      Src: /src/opendal/bindings/c/src/presign.rs:56,1
    - Dst: ocorePresignedRequest::uri
      Src: /src/opendal/bindings/c/src/presign.rs:56,1
    - Dst: Result::to_string
      Src: /src/opendal/bindings/c/src/presign.rs:56,1
    - Dst: Self::unwrap
      Src: /src/opendal/bindings/c/src/presign.rs:56,1
    - Dst: ocorePresignedRequest::header
      Src: /src/opendal/bindings/c/src/presign.rs:58,1
    - Dst: String::iter
      Src: /src/opendal/bindings/c/src/presign.rs:58,1
    - Dst: map
      Src: /src/opendal/bindings/c/src/presign.rs:58,1
    - Dst: CString::new
      Src: /src/opendal/bindings/c/src/presign.rs:61,1
    - Dst: Result::as_str
      Src: /src/opendal/bindings/c/src/presign.rs:61,1
    - Dst: Self::unwrap
      Src: /src/opendal/bindings/c/src/presign.rs:61,1
    - Dst: Result::collect
      Src: /src/opendal/bindings/c/src/presign.rs:58,1
    - Dst: ocorePresignedRequest::header
      Src: /src/opendal/bindings/c/src/presign.rs:63,1
    - Dst: String::iter
      Src: /src/opendal/bindings/c/src/presign.rs:63,1
    - Dst: map
      Src: /src/opendal/bindings/c/src/presign.rs:63,1
    - Dst: CString::new
      Src: /src/opendal/bindings/c/src/presign.rs:66,1
    - Dst: Result::to_str
      Src: /src/opendal/bindings/c/src/presign.rs:66,1
    - Dst: Result::unwrap
      Src: /src/opendal/bindings/c/src/presign.rs:66,1
    - Dst: Self::unwrap
      Src: /src/opendal/bindings/c/src/presign.rs:66,1
    - Dst: Result::collect
      Src: /src/opendal/bindings/c/src/presign.rs:63,1
    - Dst: Buffer::iter
      Src: /src/opendal/bindings/c/src/presign.rs:69,1
    - Dst: zip
      Src: /src/opendal/bindings/c/src/presign.rs:69,1
    - Dst: Buffer::iter
      Src: /src/opendal/bindings/c/src/presign.rs:71,1
    - Dst: map
      Src: /src/opendal/bindings/c/src/presign.rs:69,1
    - Dst: Result::as_ptr
      Src: /src/opendal/bindings/c/src/presign.rs:73,1
    - Dst: Result::as_ptr
      Src: /src/opendal/bindings/c/src/presign.rs:74,1
    - Dst: collect
      Src: /src/opendal/bindings/c/src/presign.rs:69,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 61
    argCount: 1
    argNames:
    - req
    argTypes:
    - ocorePresignedRequest
    constantsTouched: []
    func_position:
      end: 85
      start: 54
    functionDepth: 35
    functionLinenumber: 54
    functionLinenumberEnd: 85
    functionName: opendal_presigned_request_inner::new
    functionSourceFile: /src/opendal/bindings/c/src/presign.rs
    functionUses: 1
    functionsReached:
    - ocorePresignedRequest::uri
    - collect
    - Result::to_string
    - Self::unwrap
    - Result::to_str
    - CString::new
    - ocorePresignedRequest::header
    - zip
    - Result::as_ptr
    - map
    - ocorePresignedRequest::method
    - Result::collect
    - Result::unwrap
    - String::iter
    - Result::as_str
    - '&str::as_str'
    - Buffer::iter
    linkageType: ''
    returnType: Self
    signature: 'fn new(req: ocorePresignedRequest) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Box::new
      Src: /src/opendal/bindings/c/src/presign.rs:91,1
    - Dst: opendal_presigned_request_inner::new
      Src: /src/opendal/bindings/c/src/presign.rs:91,1
    - Dst: Box::new
      Src: /src/opendal/bindings/c/src/presign.rs:92,1
    - Dst: Box::into_raw
      Src: /src/opendal/bindings/c/src/presign.rs:93,1
    - Dst: Box::into_raw
      Src: /src/opendal/bindings/c/src/presign.rs:96,1
    - Dst: std::ptr::null_mut
      Src: /src/opendal/bindings/c/src/presign.rs:97,1
    - Dst: std::ptr::null_mut
      Src: /src/opendal/bindings/c/src/presign.rs:101,1
    - Dst: opendal_error::new
      Src: /src/opendal/bindings/c/src/presign.rs:102,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 1
    argNames:
    - result
    argTypes:
    - core::Result<ocorePresignedRequest>
    constantsTouched: []
    func_position:
      end: 105
      start: 88
    functionDepth: 36
    functionLinenumber: 88
    functionLinenumberEnd: 105
    functionName: make_presign_result
    functionSourceFile: /src/opendal/bindings/c/src/presign.rs
    functionUses: 8
    functionsReached:
    - opendal_error::new
    - Box::new
    - std::ptr::null_mut
    - opendal_presigned_request_inner::new
    - Box::into_raw
    linkageType: ''
    returnType: opendal_result_presign
    signature: 'fn make_presign_result(result: core::Result<ocorePresignedRequest>)
      -> opendal_result_presign'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: deref
      Src: /src/opendal/bindings/c/src/presign.rs:132,1
    - Dst: CStr::from_ptr
      Src: /src/opendal/bindings/c/src/presign.rs:133,1
    - Dst: to_str
      Src: /src/opendal/bindings/c/src/presign.rs:133,1
    - Dst: expect
      Src: /src/opendal/bindings/c/src/presign.rs:133,1
    - Dst: Duration::from_secs
      Src: /src/opendal/bindings/c/src/presign.rs:134,1
    - Dst: make_presign_result
      Src: /src/opendal/bindings/c/src/presign.rs:136,1
    - Dst: presign_read
      Src: /src/opendal/bindings/c/src/presign.rs:136,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 3
    argNames:
    - op
    - path
    - expire_secs
    argTypes:
    - '&opendal_operator'
    - '*const c_char'
    - u64
    constantsTouched: []
    func_position:
      end: 137
      start: 125
    functionDepth: 38
    functionLinenumber: 125
    functionLinenumberEnd: 137
    functionName: opendal_operator_presign_read
    functionSourceFile: /src/opendal/bindings/c/src/presign.rs
    functionUses: 0
    functionsReached:
    - presign_read
    - deref
    - expect
    - to_str
    - make_presign_result
    - CStr::from_ptr
    - Duration::from_secs
    linkageType: ''
    returnType: opendal_result_presign
    signature: 'pub unsafe extern "C" fn opendal_operator_presign_read(op: &opendal_operator,path:
      *const c_char,expire_secs: u64,) -> opendal_result_presign'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: deref
      Src: /src/opendal/bindings/c/src/presign.rs:149,1
    - Dst: CStr::from_ptr
      Src: /src/opendal/bindings/c/src/presign.rs:150,1
    - Dst: to_str
      Src: /src/opendal/bindings/c/src/presign.rs:150,1
    - Dst: expect
      Src: /src/opendal/bindings/c/src/presign.rs:150,1
    - Dst: Duration::from_secs
      Src: /src/opendal/bindings/c/src/presign.rs:151,1
    - Dst: object_store::Result::is_null
      Src: /src/opendal/bindings/c/src/presign.rs:152,1
    - Dst: core::options::ReadOptions::default
      Src: /src/opendal/bindings/c/src/presign.rs:153,1
    - Dst: into
      Src: /src/opendal/bindings/c/src/presign.rs:155,1
    - Dst: make_presign_result
      Src: /src/opendal/bindings/c/src/presign.rs:158,1
    - Dst: presign_read_options
      Src: /src/opendal/bindings/c/src/presign.rs:158,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 21
    argCount: 4
    argNames:
    - op
    - path
    - expire_secs
    - opts
    argTypes:
    - '&opendal_operator'
    - '*const c_char'
    - u64
    - '*const opendal_read_options'
    constantsTouched: []
    func_position:
      end: 159
      start: 141
    functionDepth: 38
    functionLinenumber: 141
    functionLinenumberEnd: 159
    functionName: opendal_operator_presign_read_with
    functionSourceFile: /src/opendal/bindings/c/src/presign.rs
    functionUses: 0
    functionsReached:
    - object_store::Result::is_null
    - deref
    - expect
    - to_str
    - core::options::ReadOptions::default
    - make_presign_result
    - into
    - presign_read_options
    - CStr::from_ptr
    - Duration::from_secs
    linkageType: ''
    returnType: opendal_result_presign
    signature: 'pub unsafe extern "C" fn opendal_operator_presign_read_with(op: &opendal_operator,path:
      *const c_char,expire_secs: u64,opts: *const opendal_read_options,) -> opendal_result_presign'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: deref
      Src: /src/opendal/bindings/c/src/presign.rs:170,1
    - Dst: CStr::from_ptr
      Src: /src/opendal/bindings/c/src/presign.rs:171,1
    - Dst: to_str
      Src: /src/opendal/bindings/c/src/presign.rs:171,1
    - Dst: expect
      Src: /src/opendal/bindings/c/src/presign.rs:171,1
    - Dst: Duration::from_secs
      Src: /src/opendal/bindings/c/src/presign.rs:172,1
    - Dst: make_presign_result
      Src: /src/opendal/bindings/c/src/presign.rs:174,1
    - Dst: presign_write
      Src: /src/opendal/bindings/c/src/presign.rs:174,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 3
    argNames:
    - op
    - path
    - expire_secs
    argTypes:
    - '&opendal_operator'
    - '*const c_char'
    - u64
    constantsTouched: []
    func_position:
      end: 175
      start: 163
    functionDepth: 38
    functionLinenumber: 163
    functionLinenumberEnd: 175
    functionName: opendal_operator_presign_write
    functionSourceFile: /src/opendal/bindings/c/src/presign.rs
    functionUses: 0
    functionsReached:
    - deref
    - expect
    - to_str
    - make_presign_result
    - CStr::from_ptr
    - presign_write
    - Duration::from_secs
    linkageType: ''
    returnType: opendal_result_presign
    signature: 'pub unsafe extern "C" fn opendal_operator_presign_write(op: &opendal_operator,path:
      *const c_char,expire_secs: u64,) -> opendal_result_presign'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: deref
      Src: /src/opendal/bindings/c/src/presign.rs:187,1
    - Dst: CStr::from_ptr
      Src: /src/opendal/bindings/c/src/presign.rs:188,1
    - Dst: to_str
      Src: /src/opendal/bindings/c/src/presign.rs:188,1
    - Dst: expect
      Src: /src/opendal/bindings/c/src/presign.rs:188,1
    - Dst: Duration::from_secs
      Src: /src/opendal/bindings/c/src/presign.rs:189,1
    - Dst: object_store::Result::is_null
      Src: /src/opendal/bindings/c/src/presign.rs:190,1
    - Dst: core::options::WriteOptions::default
      Src: /src/opendal/bindings/c/src/presign.rs:191,1
    - Dst: into
      Src: /src/opendal/bindings/c/src/presign.rs:193,1
    - Dst: make_presign_result
      Src: /src/opendal/bindings/c/src/presign.rs:196,1
    - Dst: presign_write_options
      Src: /src/opendal/bindings/c/src/presign.rs:196,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 21
    argCount: 4
    argNames:
    - op
    - path
    - expire_secs
    - opts
    argTypes:
    - '&opendal_operator'
    - '*const c_char'
    - u64
    - '*const opendal_write_options'
    constantsTouched: []
    func_position:
      end: 197
      start: 179
    functionDepth: 38
    functionLinenumber: 179
    functionLinenumberEnd: 197
    functionName: opendal_operator_presign_write_with
    functionSourceFile: /src/opendal/bindings/c/src/presign.rs
    functionUses: 0
    functionsReached:
    - object_store::Result::is_null
    - deref
    - expect
    - to_str
    - make_presign_result
    - into
    - core::options::WriteOptions::default
    - CStr::from_ptr
    - Duration::from_secs
    - presign_write_options
    linkageType: ''
    returnType: opendal_result_presign
    signature: 'pub unsafe extern "C" fn opendal_operator_presign_write_with(op: &opendal_operator,path:
      *const c_char,expire_secs: u64,opts: *const opendal_write_options,) -> opendal_result_presign'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: deref
      Src: /src/opendal/bindings/c/src/presign.rs:208,1
    - Dst: CStr::from_ptr
      Src: /src/opendal/bindings/c/src/presign.rs:209,1
    - Dst: to_str
      Src: /src/opendal/bindings/c/src/presign.rs:209,1
    - Dst: expect
      Src: /src/opendal/bindings/c/src/presign.rs:209,1
    - Dst: Duration::from_secs
      Src: /src/opendal/bindings/c/src/presign.rs:210,1
    - Dst: make_presign_result
      Src: /src/opendal/bindings/c/src/presign.rs:211,1
    - Dst: presign_delete
      Src: /src/opendal/bindings/c/src/presign.rs:211,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 3
    argNames:
    - op
    - path
    - expire_secs
    argTypes:
    - '&opendal_operator'
    - '*const c_char'
    - u64
    constantsTouched: []
    func_position:
      end: 212
      start: 201
    functionDepth: 38
    functionLinenumber: 201
    functionLinenumberEnd: 212
    functionName: opendal_operator_presign_delete
    functionSourceFile: /src/opendal/bindings/c/src/presign.rs
    functionUses: 0
    functionsReached:
    - deref
    - expect
    - to_str
    - presign_delete
    - make_presign_result
    - CStr::from_ptr
    - Duration::from_secs
    linkageType: ''
    returnType: opendal_result_presign
    signature: 'pub unsafe extern "C" fn opendal_operator_presign_delete(op: &opendal_operator,path:
      *const c_char,expire_secs: u64,) -> opendal_result_presign'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: deref
      Src: /src/opendal/bindings/c/src/presign.rs:224,1
    - Dst: CStr::from_ptr
      Src: /src/opendal/bindings/c/src/presign.rs:225,1
    - Dst: to_str
      Src: /src/opendal/bindings/c/src/presign.rs:225,1
    - Dst: expect
      Src: /src/opendal/bindings/c/src/presign.rs:225,1
    - Dst: Duration::from_secs
      Src: /src/opendal/bindings/c/src/presign.rs:226,1
    - Dst: object_store::Result::is_null
      Src: /src/opendal/bindings/c/src/presign.rs:227,1
    - Dst: core::options::DeleteOptions::default
      Src: /src/opendal/bindings/c/src/presign.rs:228,1
    - Dst: is_null
      Src: /src/opendal/bindings/c/src/presign.rs:231,1
    - Dst: Some
      Src: /src/opendal/bindings/c/src/presign.rs:234,1
    - Dst: CStr::from_ptr
      Src: /src/opendal/bindings/c/src/presign.rs:235,1
    - Dst: to_str
      Src: /src/opendal/bindings/c/src/presign.rs:235,1
    - Dst: expect
      Src: /src/opendal/bindings/c/src/presign.rs:235,1
    - Dst: to_owned
      Src: /src/opendal/bindings/c/src/presign.rs:235,1
    - Dst: make_presign_result
      Src: /src/opendal/bindings/c/src/presign.rs:247,1
    - Dst: presign_delete_options
      Src: /src/opendal/bindings/c/src/presign.rs:247,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 33
    argCount: 4
    argNames:
    - op
    - path
    - expire_secs
    - opts
    argTypes:
    - '&opendal_operator'
    - '*const c_char'
    - u64
    - '*const opendal_delete_options'
    constantsTouched: []
    func_position:
      end: 248
      start: 216
    functionDepth: 38
    functionLinenumber: 216
    functionLinenumberEnd: 248
    functionName: opendal_operator_presign_delete_with
    functionSourceFile: /src/opendal/bindings/c/src/presign.rs
    functionUses: 0
    functionsReached:
    - object_store::Result::is_null
    - deref
    - expect
    - to_str
    - make_presign_result
    - CStr::from_ptr
    - Some
    - presign_delete_options
    - core::options::DeleteOptions::default
    - Duration::from_secs
    - to_owned
    - is_null
    linkageType: ''
    returnType: opendal_result_presign
    signature: 'pub unsafe extern "C" fn opendal_operator_presign_delete_with(op:
      &opendal_operator,path: *const c_char,expire_secs: u64,opts: *const opendal_delete_options,)
      -> opendal_result_presign'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: deref
      Src: /src/opendal/bindings/c/src/presign.rs:259,1
    - Dst: CStr::from_ptr
      Src: /src/opendal/bindings/c/src/presign.rs:260,1
    - Dst: to_str
      Src: /src/opendal/bindings/c/src/presign.rs:260,1
    - Dst: expect
      Src: /src/opendal/bindings/c/src/presign.rs:260,1
    - Dst: Duration::from_secs
      Src: /src/opendal/bindings/c/src/presign.rs:261,1
    - Dst: make_presign_result
      Src: /src/opendal/bindings/c/src/presign.rs:263,1
    - Dst: presign_stat
      Src: /src/opendal/bindings/c/src/presign.rs:263,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 3
    argNames:
    - op
    - path
    - expire_secs
    argTypes:
    - '&opendal_operator'
    - '*const c_char'
    - u64
    constantsTouched: []
    func_position:
      end: 264
      start: 252
    functionDepth: 38
    functionLinenumber: 252
    functionLinenumberEnd: 264
    functionName: opendal_operator_presign_stat
    functionSourceFile: /src/opendal/bindings/c/src/presign.rs
    functionUses: 0
    functionsReached:
    - deref
    - expect
    - to_str
    - make_presign_result
    - CStr::from_ptr
    - Duration::from_secs
    - presign_stat
    linkageType: ''
    returnType: opendal_result_presign
    signature: 'pub unsafe extern "C" fn opendal_operator_presign_stat(op: &opendal_operator,path:
      *const c_char,expire_secs: u64,) -> opendal_result_presign'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: deref
      Src: /src/opendal/bindings/c/src/presign.rs:276,1
    - Dst: CStr::from_ptr
      Src: /src/opendal/bindings/c/src/presign.rs:277,1
    - Dst: to_str
      Src: /src/opendal/bindings/c/src/presign.rs:277,1
    - Dst: expect
      Src: /src/opendal/bindings/c/src/presign.rs:277,1
    - Dst: Duration::from_secs
      Src: /src/opendal/bindings/c/src/presign.rs:278,1
    - Dst: object_store::Result::is_null
      Src: /src/opendal/bindings/c/src/presign.rs:279,1
    - Dst: core::options::StatOptions::default
      Src: /src/opendal/bindings/c/src/presign.rs:280,1
    - Dst: into
      Src: /src/opendal/bindings/c/src/presign.rs:282,1
    - Dst: make_presign_result
      Src: /src/opendal/bindings/c/src/presign.rs:285,1
    - Dst: presign_stat_options
      Src: /src/opendal/bindings/c/src/presign.rs:285,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 21
    argCount: 4
    argNames:
    - op
    - path
    - expire_secs
    - opts
    argTypes:
    - '&opendal_operator'
    - '*const c_char'
    - u64
    - '*const opendal_stat_options'
    constantsTouched: []
    func_position:
      end: 286
      start: 268
    functionDepth: 38
    functionLinenumber: 268
    functionLinenumberEnd: 286
    functionName: opendal_operator_presign_stat_with
    functionSourceFile: /src/opendal/bindings/c/src/presign.rs
    functionUses: 0
    functionsReached:
    - core::options::StatOptions::default
    - object_store::Result::is_null
    - deref
    - expect
    - to_str
    - make_presign_result
    - into
    - CStr::from_ptr
    - presign_stat_options
    - Duration::from_secs
    linkageType: ''
    returnType: opendal_result_presign
    signature: 'pub unsafe extern "C" fn opendal_operator_presign_stat_with(op: &opendal_operator,path:
      *const c_char,expire_secs: u64,opts: *const opendal_stat_options,) -> opendal_result_presign'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: as_ptr
      Src: /src/opendal/bindings/c/src/presign.rs:293,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - req
    argTypes:
    - '*const opendal_presigned_request'
    constantsTouched: []
    func_position:
      end: 294
      start: 290
    functionDepth: 0
    functionLinenumber: 290
    functionLinenumberEnd: 294
    functionName: opendal_presigned_request_method
    functionSourceFile: /src/opendal/bindings/c/src/presign.rs
    functionUses: 0
    functionsReached:
    - as_ptr
    linkageType: ''
    returnType: '*const c_char'
    signature: 'pub unsafe extern "C" fn opendal_presigned_request_method(req: *const
      opendal_presigned_request,) -> *const c_char'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: as_ptr
      Src: /src/opendal/bindings/c/src/presign.rs:301,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - req
    argTypes:
    - '*const opendal_presigned_request'
    constantsTouched: []
    func_position:
      end: 302
      start: 298
    functionDepth: 0
    functionLinenumber: 298
    functionLinenumberEnd: 302
    functionName: opendal_presigned_request_uri
    functionSourceFile: /src/opendal/bindings/c/src/presign.rs
    functionUses: 0
    functionsReached:
    - as_ptr
    linkageType: ''
    returnType: '*const c_char'
    signature: 'pub unsafe extern "C" fn opendal_presigned_request_uri(req: *const
      opendal_presigned_request,) -> *const c_char'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: as_ptr
      Src: /src/opendal/bindings/c/src/presign.rs:309,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - req
    argTypes:
    - '*const opendal_presigned_request'
    constantsTouched: []
    func_position:
      end: 310
      start: 306
    functionDepth: 0
    functionLinenumber: 306
    functionLinenumberEnd: 310
    functionName: opendal_presigned_request_headers
    functionSourceFile: /src/opendal/bindings/c/src/presign.rs
    functionUses: 0
    functionsReached:
    - as_ptr
    linkageType: ''
    returnType: '*const opendal_http_header_pair'
    signature: 'pub unsafe extern "C" fn opendal_presigned_request_headers(req: *const
      opendal_presigned_request,) -> *const opendal_http_header_pair'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: len
      Src: /src/opendal/bindings/c/src/presign.rs:317,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - req
    argTypes:
    - '*const opendal_presigned_request'
    constantsTouched: []
    func_position:
      end: 318
      start: 314
    functionDepth: 3
    functionLinenumber: 314
    functionLinenumberEnd: 318
    functionName: opendal_presigned_request_headers_len
    functionSourceFile: /src/opendal/bindings/c/src/presign.rs
    functionUses: 0
    functionsReached:
    - len
    linkageType: ''
    returnType: usize
    signature: 'pub unsafe extern "C" fn opendal_presigned_request_headers_len(req:
      *const opendal_presigned_request,) -> usize'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: '*mut opendal_presigned_request::is_null'
      Src: /src/opendal/bindings/c/src/presign.rs:323,1
    - Dst: drop
      Src: /src/opendal/bindings/c/src/presign.rs:324,1
    - Dst: Box::from_raw
      Src: /src/opendal/bindings/c/src/presign.rs:324,1
    - Dst: drop
      Src: /src/opendal/bindings/c/src/presign.rs:325,1
    - Dst: Box::from_raw
      Src: /src/opendal/bindings/c/src/presign.rs:325,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 14
    argCount: 1
    argNames:
    - req
    argTypes:
    - '*mut opendal_presigned_request'
    constantsTouched: []
    func_position:
      end: 327
      start: 322
    functionDepth: 33
    functionLinenumber: 322
    functionLinenumberEnd: 327
    functionName: opendal_presigned_request_free
    functionSourceFile: /src/opendal/bindings/c/src/presign.rs
    functionUses: 0
    functionsReached:
    - Box::from_raw
    - '*mut opendal_presigned_request::is_null'
    - drop
    linkageType: ''
    returnType: void
    signature: 'pub unsafe extern "C" fn opendal_presigned_request_free(req: *mut
      opendal_presigned_request)'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - value
    argTypes:
    - core::ErrorKind
    constantsTouched: []
    func_position:
      end: 75
      start: 55
    functionDepth: 0
    functionLinenumber: 55
    functionLinenumberEnd: 75
    functionName: opendal_code::from
    functionSourceFile: /src/opendal/bindings/c/src/error.rs
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: 'fn from(value: core::ErrorKind) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: opendal_code::from
      Src: /src/opendal/bindings/c/src/error.rs:107,1
    - Dst: Error::kind
      Src: /src/opendal/bindings/c/src/error.rs:107,1
    - Dst: opendal_bytes::new
      Src: /src/opendal/bindings/c/src/error.rs:108,1
    - Dst: Buffer::from
      Src: /src/opendal/bindings/c/src/error.rs:108,1
    - Dst: Error::to_string
      Src: /src/opendal/bindings/c/src/error.rs:108,1
    - Dst: Box::into_raw
      Src: /src/opendal/bindings/c/src/error.rs:110,1
    - Dst: Box::new
      Src: /src/opendal/bindings/c/src/error.rs:110,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 1
    argNames:
    - err
    argTypes:
    - core::Error
    constantsTouched: []
    func_position:
      end: 111
      start: 106
    functionDepth: 40
    functionLinenumber: 106
    functionLinenumberEnd: 111
    functionName: opendal_error::new
    functionSourceFile: /src/opendal/bindings/c/src/error.rs
    functionUses: 34
    functionsReached:
    - opendal_bytes::new
    - opendal_code::from
    - Box::into_raw
    - Box::new
    - Error::to_string
    - Error::kind
    - Buffer::from
    linkageType: ''
    returnType: '*mut opendal_error'
    signature: 'pub fn new(err: core::Error) -> *mut opendal_error'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: '*mut c_char::is_null'
      Src: /src/opendal/bindings/c/src/error.rs:117,1
    - Dst: Box::from_raw
      Src: /src/opendal/bindings/c/src/error.rs:118,1
    - Dst: opendal_bytes::opendal_bytes_free
      Src: /src/opendal/bindings/c/src/error.rs:119,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 1
    argNames:
    - ptr
    argTypes:
    - '*mut opendal_error'
    constantsTouched: []
    func_position:
      end: 122
      start: 115
    functionDepth: 34
    functionLinenumber: 115
    functionLinenumberEnd: 122
    functionName: opendal_error::opendal_error_free
    functionSourceFile: /src/opendal/bindings/c/src/error.rs
    functionUses: 0
    functionsReached:
    - Box::from_raw
    - '*mut c_char::is_null'
    - opendal_bytes::opendal_bytes_free
    linkageType: ''
    returnType: void
    signature: 'pub unsafe extern "C" fn opendal_error_free(ptr: *mut opendal_error)'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 38
      start: 34
    functionDepth: 0
    functionLinenumber: 34
    functionLinenumberEnd: 38
    functionName: opendal_writer::deref_mut
    functionSourceFile: /src/opendal/bindings/c/src/writer.rs
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: '&mut core::blocking::Writer'
    signature: fn deref_mut(&mut self) -> &mut core::blocking::Writer
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Box::into_raw
      Src: /src/opendal/bindings/c/src/writer.rs:44,1
    - Dst: Box::new
      Src: /src/opendal/bindings/c/src/writer.rs:44,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - writer
    argTypes:
    - core::blocking::Writer
    constantsTouched: []
    func_position:
      end: 46
      start: 42
    functionDepth: 2
    functionLinenumber: 42
    functionLinenumberEnd: 46
    functionName: opendal_writer::new
    functionSourceFile: /src/opendal/bindings/c/src/writer.rs
    functionUses: 2
    functionsReached:
    - Box::new
    - Box::into_raw
    linkageType: ''
    returnType: Self
    signature: 'pub(crate) fn new(writer: core::blocking::Writer) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Bytes::to_buffer
      Src: /src/opendal/bindings/c/src/writer.rs:55,1
    - Dst: opendal_error::new
      Src: /src/opendal/bindings/c/src/writer.rs:60,1
    - Dst: opendal_writer::deref_mut
      Src: /src/opendal/bindings/c/src/writer.rs:64,1
    - Dst: '&mut core::blocking::Writer::write'
      Src: /src/opendal/bindings/c/src/writer.rs:64,1
    - Dst: std::ptr::null_mut
      Src: /src/opendal/bindings/c/src/writer.rs:67,1
    - Dst: opendal_error::new
      Src: /src/opendal/bindings/c/src/writer.rs:71,1
    - Dst: core::Error::new
      Src: /src/opendal/bindings/c/src/writer.rs:72,1
    - Dst: Self::set_source
      Src: /src/opendal/bindings/c/src/writer.rs:72,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 21
    argCount: 1
    argNames:
    - bytes
    argTypes:
    - '&opendal_bytes'
    constantsTouched: []
    func_position:
      end: 77
      start: 50
    functionDepth: 34
    functionLinenumber: 50
    functionLinenumberEnd: 77
    functionName: opendal_writer::opendal_writer_write
    functionSourceFile: /src/opendal/bindings/c/src/writer.rs
    functionUses: 0
    functionsReached:
    - opendal_error::new
    - Bytes::to_buffer
    - std::ptr::null_mut
    - '&mut core::blocking::Writer::write'
    - opendal_writer::deref_mut
    - Self::set_source
    - core::Error::new
    linkageType: ''
    returnType: opendal_result_writer_write
    signature: 'pub unsafe extern "C" fn opendal_writer_write(&mut self,bytes: &opendal_bytes,)
      -> opendal_result_writer_write'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: '*mut c_char::is_null'
      Src: /src/opendal/bindings/c/src/writer.rs:83,1
    - Dst: deref_mut
      Src: /src/opendal/bindings/c/src/writer.rs:84,1
    - Dst: close
      Src: /src/opendal/bindings/c/src/writer.rs:84,1
    - Dst: opendal_error::new
      Src: /src/opendal/bindings/c/src/writer.rs:85,1
    - Dst: core::Error::new
      Src: /src/opendal/bindings/c/src/writer.rs:86,1
    - Dst: Self::set_source
      Src: /src/opendal/bindings/c/src/writer.rs:86,1
    - Dst: std::ptr::null_mut
      Src: /src/opendal/bindings/c/src/writer.rs:91,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 21
    argCount: 1
    argNames:
    - ptr
    argTypes:
    - '*mut opendal_writer'
    constantsTouched: []
    func_position:
      end: 93
      start: 81
    functionDepth: 41
    functionLinenumber: 81
    functionLinenumberEnd: 93
    functionName: opendal_writer::opendal_writer_close
    functionSourceFile: /src/opendal/bindings/c/src/writer.rs
    functionUses: 0
    functionsReached:
    - opendal_error::new
    - close
    - std::ptr::null_mut
    - deref_mut
    - Self::set_source
    - '*mut c_char::is_null'
    - core::Error::new
    linkageType: ''
    returnType: '*mut opendal_error'
    signature: 'pub unsafe extern "C" fn opendal_writer_close(ptr: *mut opendal_writer)
      -> *mut opendal_error'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: '*mut c_char::is_null'
      Src: /src/opendal/bindings/c/src/writer.rs:111,1
    - Dst: std::ptr::null_mut
      Src: /src/opendal/bindings/c/src/writer.rs:113,1
    - Dst: std::ptr::null_mut
      Src: /src/opendal/bindings/c/src/writer.rs:114,1
    - Dst: deref_mut
      Src: /src/opendal/bindings/c/src/writer.rs:117,1
    - Dst: close
      Src: /src/opendal/bindings/c/src/writer.rs:117,1
    - Dst: Box::into_raw
      Src: /src/opendal/bindings/c/src/writer.rs:119,1
    - Dst: Box::new
      Src: /src/opendal/bindings/c/src/writer.rs:119,1
    - Dst: opendal_metadata::new
      Src: /src/opendal/bindings/c/src/writer.rs:119,1
    - Dst: std::ptr::null_mut
      Src: /src/opendal/bindings/c/src/writer.rs:120,1
    - Dst: std::ptr::null_mut
      Src: /src/opendal/bindings/c/src/writer.rs:123,1
    - Dst: opendal_error::new
      Src: /src/opendal/bindings/c/src/writer.rs:124,1
    - Dst: core::Error::new
      Src: /src/opendal/bindings/c/src/writer.rs:125,1
    - Dst: Self::set_source
      Src: /src/opendal/bindings/c/src/writer.rs:125,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 29
    argCount: 1
    argNames:
    - ptr
    argTypes:
    - '*mut opendal_writer'
    constantsTouched: []
    func_position:
      end: 131
      start: 107
    functionDepth: 41
    functionLinenumber: 107
    functionLinenumberEnd: 131
    functionName: opendal_writer::opendal_writer_close_with_metadata
    functionSourceFile: /src/opendal/bindings/c/src/writer.rs
    functionUses: 0
    functionsReached:
    - opendal_error::new
    - opendal_metadata::new
    - close
    - std::ptr::null_mut
    - Box::new
    - deref_mut
    - Self::set_source
    - '*mut c_char::is_null'
    - core::Error::new
    - Box::into_raw
    linkageType: ''
    returnType: opendal_result_write
    signature: 'pub unsafe extern "C" fn opendal_writer_close_with_metadata(ptr: *mut
      opendal_writer,) -> opendal_result_write'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: '*mut c_char::is_null'
      Src: /src/opendal/bindings/c/src/writer.rs:137,1
    - Dst: drop
      Src: /src/opendal/bindings/c/src/writer.rs:138,1
    - Dst: Box::from_raw
      Src: /src/opendal/bindings/c/src/writer.rs:138,1
    - Dst: drop
      Src: /src/opendal/bindings/c/src/writer.rs:139,1
    - Dst: Box::from_raw
      Src: /src/opendal/bindings/c/src/writer.rs:139,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 16
    argCount: 1
    argNames:
    - ptr
    argTypes:
    - '*mut opendal_writer'
    constantsTouched: []
    func_position:
      end: 142
      start: 135
    functionDepth: 33
    functionLinenumber: 135
    functionLinenumberEnd: 142
    functionName: opendal_writer::opendal_writer_free
    functionSourceFile: /src/opendal/bindings/c/src/writer.rs
    functionUses: 0
    functionsReached:
    - Box::from_raw
    - '*mut c_char::is_null'
    - drop
    linkageType: ''
    returnType: void
    signature: 'pub unsafe extern "C" fn opendal_writer_free(ptr: *mut opendal_writer)'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 39
      start: 35
    functionDepth: 0
    functionLinenumber: 35
    functionLinenumberEnd: 39
    functionName: opendal_operator_info::deref
    functionSourceFile: /src/opendal/bindings/c/src/operator_info.rs
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: '&core::OperatorInfo'
    signature: fn deref(&self) -> &core::OperatorInfo
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: deref
      Src: /src/opendal/bindings/c/src/operator_info.rs:206,1
    - Dst: '&Self::Target::info'
      Src: /src/opendal/bindings/c/src/operator_info.rs:206,1
    - Dst: Box::into_raw
      Src: /src/opendal/bindings/c/src/operator_info.rs:207,1
    - Dst: Box::new
      Src: /src/opendal/bindings/c/src/operator_info.rs:207,1
    - Dst: Box::into_raw
      Src: /src/opendal/bindings/c/src/operator_info.rs:208,1
    - Dst: Box::new
      Src: /src/opendal/bindings/c/src/operator_info.rs:208,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 1
    argNames:
    - op
    argTypes:
    - '&opendal_operator'
    constantsTouched: []
    func_position:
      end: 210
      start: 205
    functionDepth: 2
    functionLinenumber: 205
    functionLinenumberEnd: 210
    functionName: opendal_operator_info::opendal_operator_info_new
    functionSourceFile: /src/opendal/bindings/c/src/operator_info.rs
    functionUses: 0
    functionsReached:
    - Box::new
    - '&Self::Target::info'
    - deref
    - Box::into_raw
    linkageType: ''
    returnType: '*mut Self'
    signature: 'pub unsafe extern "C" fn opendal_operator_info_new(op: &opendal_operator)
      -> *mut Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: '*mut c_char::is_null'
      Src: /src/opendal/bindings/c/src/operator_info.rs:216,1
    - Dst: drop
      Src: /src/opendal/bindings/c/src/operator_info.rs:217,1
    - Dst: Box::from_raw
      Src: /src/opendal/bindings/c/src/operator_info.rs:217,1
    - Dst: drop
      Src: /src/opendal/bindings/c/src/operator_info.rs:218,1
    - Dst: Box::from_raw
      Src: /src/opendal/bindings/c/src/operator_info.rs:218,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 16
    argCount: 1
    argNames:
    - ptr
    argTypes:
    - '*mut Self'
    constantsTouched: []
    func_position:
      end: 221
      start: 214
    functionDepth: 33
    functionLinenumber: 214
    functionLinenumberEnd: 221
    functionName: opendal_operator_info::opendal_operator_info_free
    functionSourceFile: /src/opendal/bindings/c/src/operator_info.rs
    functionUses: 0
    functionsReached:
    - Box::from_raw
    - '*mut c_char::is_null'
    - drop
    linkageType: ''
    returnType: void
    signature: 'pub unsafe extern "C" fn opendal_operator_info_free(ptr: *mut Self)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: opendal_operator_info::deref
      Src: /src/opendal/bindings/c/src/operator_info.rs:228,1
    - Dst: '&core::OperatorInfo::scheme'
      Src: /src/opendal/bindings/c/src/operator_info.rs:228,1
    - Dst: '&str::to_string'
      Src: /src/opendal/bindings/c/src/operator_info.rs:228,1
    - Dst: CString::new
      Src: /src/opendal/bindings/c/src/operator_info.rs:229,1
    - Dst: Self::expect
      Src: /src/opendal/bindings/c/src/operator_info.rs:229,1
    - Dst: into_raw
      Src: /src/opendal/bindings/c/src/operator_info.rs:229,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 232
      start: 227
    functionDepth: 35
    functionLinenumber: 227
    functionLinenumberEnd: 232
    functionName: opendal_operator_info::opendal_operator_info_get_scheme
    functionSourceFile: /src/opendal/bindings/c/src/operator_info.rs
    functionUses: 0
    functionsReached:
    - Self::expect
    - CString::new
    - into_raw
    - opendal_operator_info::deref
    - '&str::to_string'
    - '&core::OperatorInfo::scheme'
    linkageType: ''
    returnType: '*mut c_char'
    signature: pub unsafe extern "C" fn opendal_operator_info_get_scheme(&self) ->
      *mut c_char
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: opendal_operator_info::deref
      Src: /src/opendal/bindings/c/src/operator_info.rs:239,1
    - Dst: '&core::OperatorInfo::root'
      Src: /src/opendal/bindings/c/src/operator_info.rs:239,1
    - Dst: CString::new
      Src: /src/opendal/bindings/c/src/operator_info.rs:240,1
    - Dst: Self::expect
      Src: /src/opendal/bindings/c/src/operator_info.rs:240,1
    - Dst: into_raw
      Src: /src/opendal/bindings/c/src/operator_info.rs:240,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 243
      start: 238
    functionDepth: 33
    functionLinenumber: 238
    functionLinenumberEnd: 243
    functionName: opendal_operator_info::opendal_operator_info_get_root
    functionSourceFile: /src/opendal/bindings/c/src/operator_info.rs
    functionUses: 0
    functionsReached:
    - '&core::OperatorInfo::root'
    - Self::expect
    - CString::new
    - into_raw
    - opendal_operator_info::deref
    linkageType: ''
    returnType: '*mut c_char'
    signature: pub unsafe extern "C" fn opendal_operator_info_get_root(&self) -> *mut
      c_char
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: opendal_operator_info::deref
      Src: /src/opendal/bindings/c/src/operator_info.rs:251,1
    - Dst: '&core::OperatorInfo::name'
      Src: /src/opendal/bindings/c/src/operator_info.rs:251,1
    - Dst: CString::new
      Src: /src/opendal/bindings/c/src/operator_info.rs:252,1
    - Dst: Self::expect
      Src: /src/opendal/bindings/c/src/operator_info.rs:252,1
    - Dst: into_raw
      Src: /src/opendal/bindings/c/src/operator_info.rs:252,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 255
      start: 250
    functionDepth: 32
    functionLinenumber: 250
    functionLinenumberEnd: 255
    functionName: opendal_operator_info::opendal_operator_info_get_name
    functionSourceFile: /src/opendal/bindings/c/src/operator_info.rs
    functionUses: 0
    functionsReached:
    - '&core::OperatorInfo::name'
    - Self::expect
    - CString::new
    - into_raw
    - opendal_operator_info::deref
    linkageType: ''
    returnType: '*mut c_char'
    signature: pub unsafe extern "C" fn opendal_operator_info_get_name(&self) -> *mut
      c_char
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: opendal_operator_info::deref
      Src: /src/opendal/bindings/c/src/operator_info.rs:260,1
    - Dst: '&core::OperatorInfo::capability'
      Src: /src/opendal/bindings/c/src/operator_info.rs:260,1
    - Dst: Capability::into
      Src: /src/opendal/bindings/c/src/operator_info.rs:261,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 262
      start: 259
    functionDepth: 29
    functionLinenumber: 259
    functionLinenumberEnd: 262
    functionName: opendal_operator_info::opendal_operator_info_get_capability
    functionSourceFile: /src/opendal/bindings/c/src/operator_info.rs
    functionUses: 0
    functionsReached:
    - Capability::into
    - opendal_operator_info::deref
    - '&core::OperatorInfo::capability'
    linkageType: ''
    returnType: opendal_capability
    signature: pub unsafe extern "C" fn opendal_operator_info_get_capability(&self)
      -> opendal_capability
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: unwrap_or
      Src: /src/opendal/bindings/c/src/operator_info.rs:298,1
    - Dst: unwrap_or
      Src: /src/opendal/bindings/c/src/operator_info.rs:299,1
    - Dst: unwrap_or
      Src: /src/opendal/bindings/c/src/operator_info.rs:300,1
    - Dst: unwrap_or
      Src: /src/opendal/bindings/c/src/operator_info.rs:310,1
    - Dst: unwrap_or
      Src: /src/opendal/bindings/c/src/operator_info.rs:311,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 68
    argCount: 1
    argNames:
    - value
    argTypes:
    - core::Capability
    constantsTouched: []
    func_position:
      end: 326
      start: 266
    functionDepth: 0
    functionLinenumber: 266
    functionLinenumberEnd: 326
    functionName: opendal_capability::from
    functionSourceFile: /src/opendal/bindings/c/src/operator_info.rs
    functionUses: 0
    functionsReached:
    - unwrap_or
    linkageType: ''
    returnType: Self
    signature: 'fn from(value: core::Capability) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 57
      start: 53
    functionDepth: 0
    functionLinenumber: 53
    functionLinenumberEnd: 57
    functionName: opendal_operator::deref
    functionSourceFile: /src/opendal/bindings/c/src/operator.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: '&core::blocking::Operator'
    signature: pub(crate) fn deref(&self) -> &core::blocking::Operator
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: '*mut c_char::is_null'
      Src: /src/opendal/bindings/c/src/operator.rs:79,1
    - Dst: drop
      Src: /src/opendal/bindings/c/src/operator.rs:80,1
    - Dst: Box::from_raw
      Src: /src/opendal/bindings/c/src/operator.rs:80,1
    - Dst: drop
      Src: /src/opendal/bindings/c/src/operator.rs:81,1
    - Dst: Box::from_raw
      Src: /src/opendal/bindings/c/src/operator.rs:81,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 17
    argCount: 1
    argNames:
    - ptr
    argTypes:
    - '*const opendal_operator'
    constantsTouched: []
    func_position:
      end: 84
      start: 77
    functionDepth: 33
    functionLinenumber: 77
    functionLinenumberEnd: 84
    functionName: opendal_operator::opendal_operator_free
    functionSourceFile: /src/opendal/bindings/c/src/operator.rs
    functionUses: 0
    functionsReached:
    - Box::from_raw
    - '*mut c_char::is_null'
    - drop
    linkageType: ''
    returnType: void
    signature: 'pub unsafe extern "C" fn opendal_operator_free(ptr: *const opendal_operator)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: ocore::Operator::via_iter
      Src: /src/opendal/bindings/python/src/operator.rs:33,1
    - Dst: Result::map_err
      Src: /src/opendal/bindings/python/src/operator.rs:33,1
    - Dst: Ok
      Src: /src/opendal/bindings/python/src/operator.rs:34,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - scheme
    - map
    argTypes:
    - '&str'
    - HashMap<String, String>
    constantsTouched: []
    func_position:
      end: 35
      start: 32
    functionDepth: 6
    functionLinenumber: 32
    functionLinenumberEnd: 35
    functionName: build_operator
    functionSourceFile: /src/opendal/bindings/python/src/operator.rs
    functionUses: 5
    functionsReached:
    - Result::map_err
    - ocore::Operator::via_iter
    - Ok
    linkageType: ''
    returnType: PyResult
    signature: 'fn build_operator(scheme: &str, map: HashMap<String, String>) -> PyResult<ocore::Operator>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: core::init_default_registry
      Src: /src/opendal/bindings/c/src/operator.rs:103,1
    - Dst: core::Operator::via_iter
      Src: /src/opendal/bindings/c/src/operator.rs:105,1
    - Dst: (Servicer, OperationContext)::is_null
      Src: /src/opendal/bindings/c/src/operator.rs:106,1
    - Dst: apply
      Src: /src/opendal/bindings/c/src/operator.rs:107,1
    - Dst: build_blocking_operator
      Src: /src/opendal/bindings/c/src/operator.rs:110,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 3
    argNames:
    - schema
    - map
    - layers
    argTypes:
    - '&str'
    - HashMap<String, String>
    - '*const opendal_operator_layers'
    constantsTouched: []
    func_position:
      end: 111
      start: 98
    functionDepth: 38
    functionLinenumber: 98
    functionLinenumberEnd: 111
    functionName: build_operator_with_layers
    functionSourceFile: /src/opendal/bindings/c/src/operator.rs
    functionUses: 1
    functionsReached:
    - apply
    - core::Operator::via_iter
    - (Servicer, OperationContext)::is_null
    - core::init_default_registry
    - build_blocking_operator
    linkageType: ''
    returnType: core::Result
    signature: 'fn build_operator_with_layers(schema: &str,map: HashMap<String, String>,layers:
      *const opendal_operator_layers,) -> core::Result<core::blocking::Operator>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: ocore::Operator::via_iter
      Src: /src/opendal/bindings/python/src/operator.rs:41,1
    - Dst: Result::map_err
      Src: /src/opendal/bindings/python/src/operator.rs:41,1
    - Dst: pyo3_async_runtimes::tokio::get_runtime
      Src: /src/opendal/bindings/python/src/operator.rs:43,1
    - Dst: enter
      Src: /src/opendal/bindings/python/src/operator.rs:44,1
    - Dst: ocore::blocking::Operator::new
      Src: /src/opendal/bindings/python/src/operator.rs:45,1
    - Dst: Result::map_err
      Src: /src/opendal/bindings/python/src/operator.rs:45,1
    - Dst: Ok
      Src: /src/opendal/bindings/python/src/operator.rs:46,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 2
    argNames:
    - scheme
    - map
    argTypes:
    - '&str'
    - HashMap<String, String>
    constantsTouched: []
    func_position:
      end: 47
      start: 37
    functionDepth: 6
    functionLinenumber: 37
    functionLinenumberEnd: 47
    functionName: build_blocking_operator
    functionSourceFile: /src/opendal/bindings/python/src/operator.rs
    functionUses: 1
    functionsReached:
    - Result::map_err
    - ocore::Operator::via_iter
    - Ok
    - ocore::blocking::Operator::new
    - pyo3_async_runtimes::tokio::get_runtime
    - enter
    linkageType: ''
    returnType: PyResult
    signature: 'fn build_blocking_operator(scheme: &str,map: HashMap<String, String>,)
      -> PyResult<ocore::blocking::Operator>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: HashMap::<String, String>::default
      Src: /src/opendal/bindings/c/src/operator.rs:122,1
    - Dst: Result::is_null
      Src: /src/opendal/bindings/c/src/operator.rs:123,1
    - Dst: deref
      Src: /src/opendal/bindings/c/src/operator.rs:125,1
    - Dst: Result::insert
      Src: /src/opendal/bindings/c/src/operator.rs:126,1
    - Dst: Result::to_string
      Src: /src/opendal/bindings/c/src/operator.rs:126,1
    - Dst: Result::to_string
      Src: /src/opendal/bindings/c/src/operator.rs:126,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 20
    argCount: 1
    argNames:
    - options
    argTypes:
    - '*const opendal_operator_options'
    constantsTouched: []
    func_position:
      end: 131
      start: 121
    functionDepth: 6
    functionLinenumber: 121
    functionLinenumberEnd: 131
    functionName: parse_operator_options
    functionSourceFile: /src/opendal/bindings/c/src/operator.rs
    functionUses: 2
    functionsReached:
    - Result::is_null
    - HashMap::<String, String>::default
    - Result::to_string
    - deref
    - Result::insert
    linkageType: ''
    returnType: HashMap
    signature: 'fn parse_operator_options(options: *const opendal_operator_options)
      -> HashMap<String, String>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Box::into_raw
      Src: /src/opendal/bindings/c/src/operator.rs:136,1
    - Dst: Box::new
      Src: /src/opendal/bindings/c/src/operator.rs:136,1
    - Dst: Box::into_raw
      Src: /src/opendal/bindings/c/src/operator.rs:137,1
    - Dst: Box::new
      Src: /src/opendal/bindings/c/src/operator.rs:137,1
    - Dst: std::ptr::null_mut
      Src: /src/opendal/bindings/c/src/operator.rs:139,1
    - Dst: std::ptr::null_mut
      Src: /src/opendal/bindings/c/src/operator.rs:142,1
    - Dst: opendal_error::new
      Src: /src/opendal/bindings/c/src/operator.rs:143,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 1
    argNames:
    - op
    argTypes:
    - core::Result<core::blocking::Operator>
    constantsTouched: []
    func_position:
      end: 146
      start: 133
    functionDepth: 41
    functionLinenumber: 133
    functionLinenumberEnd: 146
    functionName: new_operator_result
    functionSourceFile: /src/opendal/bindings/c/src/operator.rs
    functionUses: 2
    functionsReached:
    - Box::new
    - std::ptr::null_mut
    - Box::into_raw
    - opendal_error::new
    linkageType: ''
    returnType: opendal_result_operator_new
    signature: 'fn new_operator_result(op: core::Result<core::blocking::Operator>)
      -> opendal_result_operator_new'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: std::ffi::CStr::from_ptr
      Src: /src/opendal/bindings/c/src/operator.rs:191,1
    - Dst: to_str
      Src: /src/opendal/bindings/c/src/operator.rs:191,1
    - Dst: expect
      Src: /src/opendal/bindings/c/src/operator.rs:191,1
    - Dst: parse_operator_options
      Src: /src/opendal/bindings/c/src/operator.rs:195,1
    - Dst: new_operator_result
      Src: /src/opendal/bindings/c/src/operator.rs:197,1
    - Dst: build_operator
      Src: /src/opendal/bindings/c/src/operator.rs:197,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 2
    argNames:
    - scheme
    - options
    argTypes:
    - '*const c_char'
    - '*const opendal_operator_options'
    constantsTouched: []
    func_position:
      end: 198
      start: 186
    functionDepth: 38
    functionLinenumber: 186
    functionLinenumberEnd: 198
    functionName: opendal_operator_new
    functionSourceFile: /src/opendal/bindings/c/src/operator.rs
    functionUses: 0
    functionsReached:
    - parse_operator_options
    - new_operator_result
    - to_str
    - expect
    - std::ffi::CStr::from_ptr
    - build_operator
    linkageType: ''
    returnType: opendal_result_operator_new
    signature: 'pub unsafe extern "C" fn opendal_operator_new(scheme: *const c_char,options:
      *const opendal_operator_options,) -> opendal_result_operator_new'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: std::ffi::CStr::from_ptr
      Src: /src/opendal/bindings/c/src/operator.rs:215,1
    - Dst: to_str
      Src: /src/opendal/bindings/c/src/operator.rs:215,1
    - Dst: expect
      Src: /src/opendal/bindings/c/src/operator.rs:215,1
    - Dst: parse_operator_options
      Src: /src/opendal/bindings/c/src/operator.rs:219,1
    - Dst: new_operator_result
      Src: /src/opendal/bindings/c/src/operator.rs:221,1
    - Dst: build_operator_with_layers
      Src: /src/opendal/bindings/c/src/operator.rs:221,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 3
    argNames:
    - scheme
    - options
    - layers
    argTypes:
    - '*const c_char'
    - '*const opendal_operator_options'
    - '*const opendal_operator_layers'
    constantsTouched: []
    func_position:
      end: 222
      start: 209
    functionDepth: 38
    functionLinenumber: 209
    functionLinenumberEnd: 222
    functionName: opendal_operator_new_with_layers
    functionSourceFile: /src/opendal/bindings/c/src/operator.rs
    functionUses: 0
    functionsReached:
    - parse_operator_options
    - new_operator_result
    - to_str
    - expect
    - std::ffi::CStr::from_ptr
    - build_operator_with_layers
    linkageType: ''
    returnType: opendal_result_operator_new
    signature: 'pub unsafe extern "C" fn opendal_operator_new_with_layers(scheme:
      *const c_char,options: *const opendal_operator_options,layers: *const opendal_operator_layers,)
      -> opendal_result_operator_new'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: std::ffi::CStr::from_ptr
      Src: /src/opendal/bindings/c/src/operator.rs:275,1
    - Dst: to_str
      Src: /src/opendal/bindings/c/src/operator.rs:275,1
    - Dst: expect
      Src: /src/opendal/bindings/c/src/operator.rs:275,1
    - Dst: Bytes::to_buffer
      Src: /src/opendal/bindings/c/src/operator.rs:278,1
    - Dst: opendal_error::new
      Src: /src/opendal/bindings/c/src/operator.rs:280,1
    - Dst: deref
      Src: /src/opendal/bindings/c/src/operator.rs:282,1
    - Dst: '&Self::Target::write'
      Src: /src/opendal/bindings/c/src/operator.rs:282,1
    - Dst: std::ptr::null_mut
      Src: /src/opendal/bindings/c/src/operator.rs:283,1
    - Dst: opendal_error::new
      Src: /src/opendal/bindings/c/src/operator.rs:284,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 19
    argCount: 3
    argNames:
    - op
    - path
    - bytes
    argTypes:
    - '&opendal_operator'
    - '*const c_char'
    - '&opendal_bytes'
    constantsTouched: []
    func_position:
      end: 286
      start: 269
    functionDepth: 38
    functionLinenumber: 269
    functionLinenumberEnd: 286
    functionName: opendal_operator_write
    functionSourceFile: /src/opendal/bindings/c/src/operator.rs
    functionUses: 0
    functionsReached:
    - opendal_error::new
    - Bytes::to_buffer
    - deref
    - to_str
    - expect
    - std::ffi::CStr::from_ptr
    - std::ptr::null_mut
    - '&Self::Target::write'
    linkageType: ''
    returnType: '*mut opendal_error'
    signature: 'pub unsafe extern "C" fn opendal_operator_write(op: &opendal_operator,path:
      *const c_char,bytes: &opendal_bytes,) -> *mut opendal_error'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: std::ffi::CStr::from_ptr
      Src: /src/opendal/bindings/c/src/operator.rs:297,1
    - Dst: to_str
      Src: /src/opendal/bindings/c/src/operator.rs:297,1
    - Dst: expect
      Src: /src/opendal/bindings/c/src/operator.rs:297,1
    - Dst: object_store::Result::is_null
      Src: /src/opendal/bindings/c/src/operator.rs:300,1
    - Dst: core::options::WriteOptions::default
      Src: /src/opendal/bindings/c/src/operator.rs:301,1
    - Dst: into
      Src: /src/opendal/bindings/c/src/operator.rs:303,1
    - Dst: Bytes::to_buffer
      Src: /src/opendal/bindings/c/src/operator.rs:305,1
    - Dst: opendal_error::new
      Src: /src/opendal/bindings/c/src/operator.rs:307,1
    - Dst: deref
      Src: /src/opendal/bindings/c/src/operator.rs:309,1
    - Dst: '&Self::Target::write_options'
      Src: /src/opendal/bindings/c/src/operator.rs:309,1
    - Dst: std::ptr::null_mut
      Src: /src/opendal/bindings/c/src/operator.rs:310,1
    - Dst: opendal_error::new
      Src: /src/opendal/bindings/c/src/operator.rs:311,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 28
    argCount: 4
    argNames:
    - op
    - path
    - bytes
    - opts
    argTypes:
    - '&opendal_operator'
    - '*const c_char'
    - '&opendal_bytes'
    - '*const opendal_write_options'
    constantsTouched: []
    func_position:
      end: 313
      start: 290
    functionDepth: 38
    functionLinenumber: 290
    functionLinenumberEnd: 313
    functionName: opendal_operator_write_with
    functionSourceFile: /src/opendal/bindings/c/src/operator.rs
    functionUses: 0
    functionsReached:
    - opendal_error::new
    - object_store::Result::is_null
    - Bytes::to_buffer
    - deref
    - to_str
    - expect
    - std::ffi::CStr::from_ptr
    - std::ptr::null_mut
    - into
    - core::options::WriteOptions::default
    - '&Self::Target::write_options'
    linkageType: ''
    returnType: '*mut opendal_error'
    signature: 'pub unsafe extern "C" fn opendal_operator_write_with(op: &opendal_operator,path:
      *const c_char,bytes: &opendal_bytes,opts: *const opendal_write_options,) ->
      *mut opendal_error'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: std::ffi::CStr::from_ptr
      Src: /src/opendal/bindings/c/src/operator.rs:353,1
    - Dst: to_str
      Src: /src/opendal/bindings/c/src/operator.rs:353,1
    - Dst: expect
      Src: /src/opendal/bindings/c/src/operator.rs:353,1
    - Dst: object_store::Result::is_null
      Src: /src/opendal/bindings/c/src/operator.rs:356,1
    - Dst: core::options::WriteOptions::default
      Src: /src/opendal/bindings/c/src/operator.rs:357,1
    - Dst: into
      Src: /src/opendal/bindings/c/src/operator.rs:359,1
    - Dst: Bytes::to_buffer
      Src: /src/opendal/bindings/c/src/operator.rs:361,1
    - Dst: std::ptr::null_mut
      Src: /src/opendal/bindings/c/src/operator.rs:365,1
    - Dst: opendal_error::new
      Src: /src/opendal/bindings/c/src/operator.rs:366,1
    - Dst: deref
      Src: /src/opendal/bindings/c/src/operator.rs:370,1
    - Dst: '&Self::Target::write_options'
      Src: /src/opendal/bindings/c/src/operator.rs:370,1
    - Dst: Box::into_raw
      Src: /src/opendal/bindings/c/src/operator.rs:372,1
    - Dst: Box::new
      Src: /src/opendal/bindings/c/src/operator.rs:372,1
    - Dst: opendal_metadata::new
      Src: /src/opendal/bindings/c/src/operator.rs:372,1
    - Dst: std::ptr::null_mut
      Src: /src/opendal/bindings/c/src/operator.rs:373,1
    - Dst: std::ptr::null_mut
      Src: /src/opendal/bindings/c/src/operator.rs:376,1
    - Dst: opendal_error::new
      Src: /src/opendal/bindings/c/src/operator.rs:377,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 36
    argCount: 4
    argNames:
    - op
    - path
    - bytes
    - opts
    argTypes:
    - '&opendal_operator'
    - '*const c_char'
    - '&opendal_bytes'
    - '*const opendal_write_options'
    constantsTouched: []
    func_position:
      end: 380
      start: 346
    functionDepth: 38
    functionLinenumber: 346
    functionLinenumberEnd: 380
    functionName: opendal_operator_write_with_metadata
    functionSourceFile: /src/opendal/bindings/c/src/operator.rs
    functionUses: 0
    functionsReached:
    - opendal_error::new
    - object_store::Result::is_null
    - Bytes::to_buffer
    - deref
    - to_str
    - expect
    - opendal_metadata::new
    - std::ffi::CStr::from_ptr
    - std::ptr::null_mut
    - into
    - Box::new
    - core::options::WriteOptions::default
    - '&Self::Target::write_options'
    - Box::into_raw
    linkageType: ''
    returnType: opendal_result_write
    signature: 'pub unsafe extern "C" fn opendal_operator_write_with_metadata(op:
      &opendal_operator,path: *const c_char,bytes: &opendal_bytes,opts: *const opendal_write_options,)
      -> opendal_result_write'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: std::ffi::CStr::from_ptr
      Src: /src/opendal/bindings/c/src/operator.rs:427,1
    - Dst: to_str
      Src: /src/opendal/bindings/c/src/operator.rs:427,1
    - Dst: expect
      Src: /src/opendal/bindings/c/src/operator.rs:427,1
    - Dst: deref
      Src: /src/opendal/bindings/c/src/operator.rs:430,1
    - Dst: '&Self::Target::read'
      Src: /src/opendal/bindings/c/src/operator.rs:430,1
    - Dst: opendal_bytes::new
      Src: /src/opendal/bindings/c/src/operator.rs:432,1
    - Dst: std::ptr::null_mut
      Src: /src/opendal/bindings/c/src/operator.rs:433,1
    - Dst: opendal_bytes::empty
      Src: /src/opendal/bindings/c/src/operator.rs:436,1
    - Dst: opendal_error::new
      Src: /src/opendal/bindings/c/src/operator.rs:437,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 18
    argCount: 2
    argNames:
    - op
    - path
    argTypes:
    - '&opendal_operator'
    - '*const c_char'
    constantsTouched: []
    func_position:
      end: 440
      start: 422
    functionDepth: 38
    functionLinenumber: 422
    functionLinenumberEnd: 440
    functionName: opendal_operator_read
    functionSourceFile: /src/opendal/bindings/c/src/operator.rs
    functionUses: 0
    functionsReached:
    - opendal_bytes::new
    - opendal_error::new
    - deref
    - to_str
    - expect
    - opendal_bytes::empty
    - std::ffi::CStr::from_ptr
    - '&Self::Target::read'
    - std::ptr::null_mut
    linkageType: ''
    returnType: opendal_result_read
    signature: 'pub unsafe extern "C" fn opendal_operator_read(op: &opendal_operator,path:
      *const c_char,) -> opendal_result_read'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: std::ffi::CStr::from_ptr
      Src: /src/opendal/bindings/c/src/operator.rs:478,1
    - Dst: to_str
      Src: /src/opendal/bindings/c/src/operator.rs:478,1
    - Dst: expect
      Src: /src/opendal/bindings/c/src/operator.rs:478,1
    - Dst: object_store::Result::is_null
      Src: /src/opendal/bindings/c/src/operator.rs:481,1
    - Dst: core::options::ReadOptions::default
      Src: /src/opendal/bindings/c/src/operator.rs:482,1
    - Dst: into
      Src: /src/opendal/bindings/c/src/operator.rs:484,1
    - Dst: deref
      Src: /src/opendal/bindings/c/src/operator.rs:486,1
    - Dst: '&Self::Target::read_options'
      Src: /src/opendal/bindings/c/src/operator.rs:486,1
    - Dst: opendal_bytes::new
      Src: /src/opendal/bindings/c/src/operator.rs:488,1
    - Dst: std::ptr::null_mut
      Src: /src/opendal/bindings/c/src/operator.rs:489,1
    - Dst: opendal_bytes::empty
      Src: /src/opendal/bindings/c/src/operator.rs:492,1
    - Dst: opendal_error::new
      Src: /src/opendal/bindings/c/src/operator.rs:493,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 27
    argCount: 3
    argNames:
    - op
    - path
    - opts
    argTypes:
    - '&opendal_operator'
    - '*const c_char'
    - '*const opendal_read_options'
    constantsTouched: []
    func_position:
      end: 496
      start: 472
    functionDepth: 38
    functionLinenumber: 472
    functionLinenumberEnd: 496
    functionName: opendal_operator_read_with
    functionSourceFile: /src/opendal/bindings/c/src/operator.rs
    functionUses: 0
    functionsReached:
    - opendal_bytes::new
    - object_store::Result::is_null
    - opendal_error::new
    - deref
    - to_str
    - expect
    - opendal_bytes::empty
    - core::options::ReadOptions::default
    - std::ffi::CStr::from_ptr
    - '&Self::Target::read_options'
    - into
    - std::ptr::null_mut
    linkageType: ''
    returnType: opendal_result_read
    signature: 'pub unsafe extern "C" fn opendal_operator_read_with(op: &opendal_operator,path:
      *const c_char,opts: *const opendal_read_options,) -> opendal_result_read'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: std::ffi::CStr::from_ptr
      Src: /src/opendal/bindings/c/src/operator.rs:540,1
    - Dst: to_str
      Src: /src/opendal/bindings/c/src/operator.rs:540,1
    - Dst: expect
      Src: /src/opendal/bindings/c/src/operator.rs:540,1
    - Dst: deref
      Src: /src/opendal/bindings/c/src/operator.rs:543,1
    - Dst: '&Self::Target::reader'
      Src: /src/opendal/bindings/c/src/operator.rs:543,1
    - Dst: std::ptr::null_mut
      Src: /src/opendal/bindings/c/src/operator.rs:547,1
    - Dst: opendal_error::new
      Src: /src/opendal/bindings/c/src/operator.rs:548,1
    - Dst: anyhow::Result::into_std_read
      Src: /src/opendal/bindings/c/src/operator.rs:553,1
    - Dst: Box::into_raw
      Src: /src/opendal/bindings/c/src/operator.rs:555,1
    - Dst: Box::new
      Src: /src/opendal/bindings/c/src/operator.rs:555,1
    - Dst: opendal_reader::new
      Src: /src/opendal/bindings/c/src/operator.rs:555,1
    - Dst: std::ptr::null_mut
      Src: /src/opendal/bindings/c/src/operator.rs:556,1
    - Dst: std::ptr::null_mut
      Src: /src/opendal/bindings/c/src/operator.rs:559,1
    - Dst: opendal_error::new
      Src: /src/opendal/bindings/c/src/operator.rs:560,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 29
    argCount: 2
    argNames:
    - op
    - path
    argTypes:
    - '&opendal_operator'
    - '*const c_char'
    constantsTouched: []
    func_position:
      end: 563
      start: 535
    functionDepth: 38
    functionLinenumber: 535
    functionLinenumberEnd: 563
    functionName: opendal_operator_reader
    functionSourceFile: /src/opendal/bindings/c/src/operator.rs
    functionUses: 0
    functionsReached:
    - opendal_error::new
    - opendal_reader::new
    - deref
    - to_str
    - expect
    - std::ffi::CStr::from_ptr
    - std::ptr::null_mut
    - Box::new
    - anyhow::Result::into_std_read
    - '&Self::Target::reader'
    - Box::into_raw
    linkageType: ''
    returnType: opendal_result_operator_reader
    signature: 'pub unsafe extern "C" fn opendal_operator_reader(op: &opendal_operator,path:
      *const c_char,) -> opendal_result_operator_reader'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: std::ffi::CStr::from_ptr
      Src: /src/opendal/bindings/c/src/operator.rs:597,1
    - Dst: to_str
      Src: /src/opendal/bindings/c/src/operator.rs:597,1
    - Dst: expect
      Src: /src/opendal/bindings/c/src/operator.rs:597,1
    - Dst: object_store::Result::is_null
      Src: /src/opendal/bindings/c/src/operator.rs:600,1
    - Dst: core::options::ReaderOptions::default
      Src: /src/opendal/bindings/c/src/operator.rs:601,1
    - Dst: into
      Src: /src/opendal/bindings/c/src/operator.rs:603,1
    - Dst: deref
      Src: /src/opendal/bindings/c/src/operator.rs:605,1
    - Dst: '&Self::Target::reader_options'
      Src: /src/opendal/bindings/c/src/operator.rs:605,1
    - Dst: std::ptr::null_mut
      Src: /src/opendal/bindings/c/src/operator.rs:609,1
    - Dst: opendal_error::new
      Src: /src/opendal/bindings/c/src/operator.rs:610,1
    - Dst: anyhow::Result::into_std_read
      Src: /src/opendal/bindings/c/src/operator.rs:615,1
    - Dst: Box::into_raw
      Src: /src/opendal/bindings/c/src/operator.rs:617,1
    - Dst: Box::new
      Src: /src/opendal/bindings/c/src/operator.rs:617,1
    - Dst: opendal_reader::new
      Src: /src/opendal/bindings/c/src/operator.rs:617,1
    - Dst: std::ptr::null_mut
      Src: /src/opendal/bindings/c/src/operator.rs:618,1
    - Dst: std::ptr::null_mut
      Src: /src/opendal/bindings/c/src/operator.rs:621,1
    - Dst: opendal_error::new
      Src: /src/opendal/bindings/c/src/operator.rs:622,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 38
    argCount: 3
    argNames:
    - op
    - path
    - opts
    argTypes:
    - '&opendal_operator'
    - '*const c_char'
    - '*const opendal_reader_options'
    constantsTouched: []
    func_position:
      end: 625
      start: 591
    functionDepth: 38
    functionLinenumber: 591
    functionLinenumberEnd: 625
    functionName: opendal_operator_reader_with
    functionSourceFile: /src/opendal/bindings/c/src/operator.rs
    functionUses: 0
    functionsReached:
    - opendal_error::new
    - object_store::Result::is_null
    - deref
    - to_str
    - expect
    - std::ffi::CStr::from_ptr
    - std::ptr::null_mut
    - into
    - Box::new
    - '&Self::Target::reader_options'
    - core::options::ReaderOptions::default
    - anyhow::Result::into_std_read
    - opendal_reader::new
    - Box::into_raw
    linkageType: ''
    returnType: opendal_result_operator_reader
    signature: 'pub unsafe extern "C" fn opendal_operator_reader_with(op: &opendal_operator,path:
      *const c_char,opts: *const opendal_reader_options,) -> opendal_result_operator_reader'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: std::ffi::CStr::from_ptr
      Src: /src/opendal/bindings/c/src/operator.rs:669,1
    - Dst: to_str
      Src: /src/opendal/bindings/c/src/operator.rs:669,1
    - Dst: expect
      Src: /src/opendal/bindings/c/src/operator.rs:669,1
    - Dst: deref
      Src: /src/opendal/bindings/c/src/operator.rs:672,1
    - Dst: '&Self::Target::writer'
      Src: /src/opendal/bindings/c/src/operator.rs:672,1
    - Dst: std::ptr::null_mut
      Src: /src/opendal/bindings/c/src/operator.rs:676,1
    - Dst: opendal_error::new
      Src: /src/opendal/bindings/c/src/operator.rs:677,1
    - Dst: Box::into_raw
      Src: /src/opendal/bindings/c/src/operator.rs:683,1
    - Dst: Box::new
      Src: /src/opendal/bindings/c/src/operator.rs:683,1
    - Dst: opendal_writer::new
      Src: /src/opendal/bindings/c/src/operator.rs:683,1
    - Dst: std::ptr::null_mut
      Src: /src/opendal/bindings/c/src/operator.rs:684,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 21
    argCount: 2
    argNames:
    - op
    - path
    argTypes:
    - '&opendal_operator'
    - '*const c_char'
    constantsTouched: []
    func_position:
      end: 686
      start: 664
    functionDepth: 38
    functionLinenumber: 664
    functionLinenumberEnd: 686
    functionName: opendal_operator_writer
    functionSourceFile: /src/opendal/bindings/c/src/operator.rs
    functionUses: 0
    functionsReached:
    - opendal_error::new
    - deref
    - to_str
    - expect
    - std::ffi::CStr::from_ptr
    - std::ptr::null_mut
    - Box::new
    - '&Self::Target::writer'
    - Box::into_raw
    - opendal_writer::new
    linkageType: ''
    returnType: opendal_result_operator_writer
    signature: 'pub unsafe extern "C" fn opendal_operator_writer(op: &opendal_operator,path:
      *const c_char,) -> opendal_result_operator_writer'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: std::ffi::CStr::from_ptr
      Src: /src/opendal/bindings/c/src/operator.rs:696,1
    - Dst: to_str
      Src: /src/opendal/bindings/c/src/operator.rs:696,1
    - Dst: expect
      Src: /src/opendal/bindings/c/src/operator.rs:696,1
    - Dst: object_store::Result::is_null
      Src: /src/opendal/bindings/c/src/operator.rs:699,1
    - Dst: core::options::WriteOptions::default
      Src: /src/opendal/bindings/c/src/operator.rs:700,1
    - Dst: into
      Src: /src/opendal/bindings/c/src/operator.rs:702,1
    - Dst: deref
      Src: /src/opendal/bindings/c/src/operator.rs:704,1
    - Dst: '&Self::Target::writer_options'
      Src: /src/opendal/bindings/c/src/operator.rs:704,1
    - Dst: std::ptr::null_mut
      Src: /src/opendal/bindings/c/src/operator.rs:708,1
    - Dst: opendal_error::new
      Src: /src/opendal/bindings/c/src/operator.rs:709,1
    - Dst: Box::into_raw
      Src: /src/opendal/bindings/c/src/operator.rs:715,1
    - Dst: Box::new
      Src: /src/opendal/bindings/c/src/operator.rs:715,1
    - Dst: opendal_writer::new
      Src: /src/opendal/bindings/c/src/operator.rs:715,1
    - Dst: std::ptr::null_mut
      Src: /src/opendal/bindings/c/src/operator.rs:716,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 30
    argCount: 3
    argNames:
    - op
    - path
    - opts
    argTypes:
    - '&opendal_operator'
    - '*const c_char'
    - '*const opendal_write_options'
    constantsTouched: []
    func_position:
      end: 718
      start: 690
    functionDepth: 38
    functionLinenumber: 690
    functionLinenumberEnd: 718
    functionName: opendal_operator_writer_with
    functionSourceFile: /src/opendal/bindings/c/src/operator.rs
    functionUses: 0
    functionsReached:
    - opendal_error::new
    - object_store::Result::is_null
    - deref
    - to_str
    - expect
    - std::ffi::CStr::from_ptr
    - std::ptr::null_mut
    - into
    - Box::new
    - core::options::WriteOptions::default
    - '&Self::Target::writer_options'
    - Box::into_raw
    - opendal_writer::new
    linkageType: ''
    returnType: opendal_result_operator_writer
    signature: 'pub unsafe extern "C" fn opendal_operator_writer_with(op: &opendal_operator,path:
      *const c_char,opts: *const opendal_write_options,) -> opendal_result_operator_writer'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: std::ffi::CStr::from_ptr
      Src: /src/opendal/bindings/c/src/operator.rs:766,1
    - Dst: to_str
      Src: /src/opendal/bindings/c/src/operator.rs:766,1
    - Dst: expect
      Src: /src/opendal/bindings/c/src/operator.rs:766,1
    - Dst: deref
      Src: /src/opendal/bindings/c/src/operator.rs:769,1
    - Dst: '&Self::Target::delete'
      Src: /src/opendal/bindings/c/src/operator.rs:769,1
    - Dst: std::ptr::null_mut
      Src: /src/opendal/bindings/c/src/operator.rs:770,1
    - Dst: opendal_error::new
      Src: /src/opendal/bindings/c/src/operator.rs:771,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 14
    argCount: 2
    argNames:
    - op
    - path
    argTypes:
    - '&opendal_operator'
    - '*const c_char'
    constantsTouched: []
    func_position:
      end: 773
      start: 761
    functionDepth: 38
    functionLinenumber: 761
    functionLinenumberEnd: 773
    functionName: opendal_operator_delete
    functionSourceFile: /src/opendal/bindings/c/src/operator.rs
    functionUses: 0
    functionsReached:
    - opendal_error::new
    - deref
    - to_str
    - expect
    - std::ffi::CStr::from_ptr
    - std::ptr::null_mut
    - '&Self::Target::delete'
    linkageType: ''
    returnType: '*mut opendal_error'
    signature: 'pub unsafe extern "C" fn opendal_operator_delete(op: &opendal_operator,path:
      *const c_char,) -> *mut opendal_error'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: std::ffi::CStr::from_ptr
      Src: /src/opendal/bindings/c/src/operator.rs:802,1
    - Dst: to_str
      Src: /src/opendal/bindings/c/src/operator.rs:802,1
    - Dst: expect
      Src: /src/opendal/bindings/c/src/operator.rs:802,1
    - Dst: object_store::Result::is_null
      Src: /src/opendal/bindings/c/src/operator.rs:805,1
    - Dst: core::options::DeleteOptions::default
      Src: /src/opendal/bindings/c/src/operator.rs:806,1
    - Dst: is_null
      Src: /src/opendal/bindings/c/src/operator.rs:809,1
    - Dst: Some
      Src: /src/opendal/bindings/c/src/operator.rs:812,1
    - Dst: std::ffi::CStr::from_ptr
      Src: /src/opendal/bindings/c/src/operator.rs:813,1
    - Dst: to_str
      Src: /src/opendal/bindings/c/src/operator.rs:813,1
    - Dst: expect
      Src: /src/opendal/bindings/c/src/operator.rs:813,1
    - Dst: to_owned
      Src: /src/opendal/bindings/c/src/operator.rs:813,1
    - Dst: deref
      Src: /src/opendal/bindings/c/src/operator.rs:824,1
    - Dst: '&Self::Target::delete_options'
      Src: /src/opendal/bindings/c/src/operator.rs:824,1
    - Dst: std::ptr::null_mut
      Src: /src/opendal/bindings/c/src/operator.rs:825,1
    - Dst: opendal_error::new
      Src: /src/opendal/bindings/c/src/operator.rs:826,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 35
    argCount: 3
    argNames:
    - op
    - path
    - opts
    argTypes:
    - '&opendal_operator'
    - '*const c_char'
    - '*const opendal_delete_options'
    constantsTouched: []
    func_position:
      end: 828
      start: 796
    functionDepth: 38
    functionLinenumber: 796
    functionLinenumberEnd: 828
    functionName: opendal_operator_delete_with
    functionSourceFile: /src/opendal/bindings/c/src/operator.rs
    functionUses: 0
    functionsReached:
    - opendal_error::new
    - object_store::Result::is_null
    - deref
    - to_str
    - expect
    - std::ffi::CStr::from_ptr
    - std::ptr::null_mut
    - Some
    - '&Self::Target::delete_options'
    - core::options::DeleteOptions::default
    - to_owned
    - is_null
    linkageType: ''
    returnType: '*mut opendal_error'
    signature: 'pub unsafe extern "C" fn opendal_operator_delete_with(op: &opendal_operator,path:
      *const c_char,opts: *const opendal_delete_options,) -> *mut opendal_error'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: std::ffi::CStr::from_ptr
      Src: /src/opendal/bindings/c/src/operator.rs:874,1
    - Dst: to_str
      Src: /src/opendal/bindings/c/src/operator.rs:874,1
    - Dst: expect
      Src: /src/opendal/bindings/c/src/operator.rs:874,1
    - Dst: deref
      Src: /src/opendal/bindings/c/src/operator.rs:877,1
    - Dst: '&Self::Target::exists'
      Src: /src/opendal/bindings/c/src/operator.rs:877,1
    - Dst: std::ptr::null_mut
      Src: /src/opendal/bindings/c/src/operator.rs:880,1
    - Dst: opendal_error::new
      Src: /src/opendal/bindings/c/src/operator.rs:884,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 16
    argCount: 2
    argNames:
    - op
    - path
    argTypes:
    - '&opendal_operator'
    - '*const c_char'
    constantsTouched: []
    func_position:
      end: 887
      start: 869
    functionDepth: 38
    functionLinenumber: 869
    functionLinenumberEnd: 887
    functionName: opendal_operator_is_exist
    functionSourceFile: /src/opendal/bindings/c/src/operator.rs
    functionUses: 0
    functionsReached:
    - opendal_error::new
    - deref
    - to_str
    - expect
    - std::ffi::CStr::from_ptr
    - std::ptr::null_mut
    - '&Self::Target::exists'
    linkageType: ''
    returnType: opendal_result_is_exist
    signature: 'pub unsafe extern "C" fn opendal_operator_is_exist(op: &opendal_operator,path:
      *const c_char,) -> opendal_result_is_exist'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: std::ffi::CStr::from_ptr
      Src: /src/opendal/bindings/c/src/operator.rs:932,1
    - Dst: to_str
      Src: /src/opendal/bindings/c/src/operator.rs:932,1
    - Dst: expect
      Src: /src/opendal/bindings/c/src/operator.rs:932,1
    - Dst: deref
      Src: /src/opendal/bindings/c/src/operator.rs:935,1
    - Dst: '&Self::Target::exists'
      Src: /src/opendal/bindings/c/src/operator.rs:935,1
    - Dst: std::ptr::null_mut
      Src: /src/opendal/bindings/c/src/operator.rs:938,1
    - Dst: opendal_error::new
      Src: /src/opendal/bindings/c/src/operator.rs:942,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 16
    argCount: 2
    argNames:
    - op
    - path
    argTypes:
    - '&opendal_operator'
    - '*const c_char'
    constantsTouched: []
    func_position:
      end: 945
      start: 927
    functionDepth: 38
    functionLinenumber: 927
    functionLinenumberEnd: 945
    functionName: opendal_operator_exists
    functionSourceFile: /src/opendal/bindings/c/src/operator.rs
    functionUses: 0
    functionsReached:
    - opendal_error::new
    - deref
    - to_str
    - expect
    - std::ffi::CStr::from_ptr
    - std::ptr::null_mut
    - '&Self::Target::exists'
    linkageType: ''
    returnType: opendal_result_exists
    signature: 'pub unsafe extern "C" fn opendal_operator_exists(op: &opendal_operator,path:
      *const c_char,) -> opendal_result_exists'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: std::ffi::CStr::from_ptr
      Src: /src/opendal/bindings/c/src/operator.rs:989,1
    - Dst: to_str
      Src: /src/opendal/bindings/c/src/operator.rs:989,1
    - Dst: expect
      Src: /src/opendal/bindings/c/src/operator.rs:989,1
    - Dst: deref
      Src: /src/opendal/bindings/c/src/operator.rs:992,1
    - Dst: '&Self::Target::stat'
      Src: /src/opendal/bindings/c/src/operator.rs:992,1
    - Dst: Box::into_raw
      Src: /src/opendal/bindings/c/src/operator.rs:994,1
    - Dst: Box::new
      Src: /src/opendal/bindings/c/src/operator.rs:994,1
    - Dst: opendal_metadata::new
      Src: /src/opendal/bindings/c/src/operator.rs:994,1
    - Dst: std::ptr::null_mut
      Src: /src/opendal/bindings/c/src/operator.rs:995,1
    - Dst: std::ptr::null_mut
      Src: /src/opendal/bindings/c/src/operator.rs:998,1
    - Dst: opendal_error::new
      Src: /src/opendal/bindings/c/src/operator.rs:999,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 20
    argCount: 2
    argNames:
    - op
    - path
    argTypes:
    - '&opendal_operator'
    - '*const c_char'
    constantsTouched: []
    func_position:
      end: 1002
      start: 984
    functionDepth: 38
    functionLinenumber: 984
    functionLinenumberEnd: 1002
    functionName: opendal_operator_stat
    functionSourceFile: /src/opendal/bindings/c/src/operator.rs
    functionUses: 0
    functionsReached:
    - opendal_error::new
    - opendal_metadata::new
    - deref
    - to_str
    - expect
    - std::ffi::CStr::from_ptr
    - Box::new
    - std::ptr::null_mut
    - '&Self::Target::stat'
    - Box::into_raw
    linkageType: ''
    returnType: opendal_result_stat
    signature: 'pub unsafe extern "C" fn opendal_operator_stat(op: &opendal_operator,path:
      *const c_char,) -> opendal_result_stat'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: std::ffi::CStr::from_ptr
      Src: /src/opendal/bindings/c/src/operator.rs:1033,1
    - Dst: to_str
      Src: /src/opendal/bindings/c/src/operator.rs:1033,1
    - Dst: expect
      Src: /src/opendal/bindings/c/src/operator.rs:1033,1
    - Dst: object_store::Result::is_null
      Src: /src/opendal/bindings/c/src/operator.rs:1036,1
    - Dst: core::options::StatOptions::default
      Src: /src/opendal/bindings/c/src/operator.rs:1037,1
    - Dst: into
      Src: /src/opendal/bindings/c/src/operator.rs:1039,1
    - Dst: deref
      Src: /src/opendal/bindings/c/src/operator.rs:1041,1
    - Dst: '&Self::Target::stat_options'
      Src: /src/opendal/bindings/c/src/operator.rs:1041,1
    - Dst: Box::into_raw
      Src: /src/opendal/bindings/c/src/operator.rs:1043,1
    - Dst: Box::new
      Src: /src/opendal/bindings/c/src/operator.rs:1043,1
    - Dst: opendal_metadata::new
      Src: /src/opendal/bindings/c/src/operator.rs:1043,1
    - Dst: std::ptr::null_mut
      Src: /src/opendal/bindings/c/src/operator.rs:1044,1
    - Dst: std::ptr::null_mut
      Src: /src/opendal/bindings/c/src/operator.rs:1047,1
    - Dst: opendal_error::new
      Src: /src/opendal/bindings/c/src/operator.rs:1048,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 29
    argCount: 3
    argNames:
    - op
    - path
    - opts
    argTypes:
    - '&opendal_operator'
    - '*const c_char'
    - '*const opendal_stat_options'
    constantsTouched: []
    func_position:
      end: 1051
      start: 1027
    functionDepth: 38
    functionLinenumber: 1027
    functionLinenumberEnd: 1051
    functionName: opendal_operator_stat_with
    functionSourceFile: /src/opendal/bindings/c/src/operator.rs
    functionUses: 0
    functionsReached:
    - core::options::StatOptions::default
    - object_store::Result::is_null
    - opendal_metadata::new
    - deref
    - to_str
    - expect
    - opendal_error::new
    - std::ffi::CStr::from_ptr
    - '&Self::Target::stat_options'
    - into
    - Box::new
    - std::ptr::null_mut
    - Box::into_raw
    linkageType: ''
    returnType: opendal_result_stat
    signature: 'pub unsafe extern "C" fn opendal_operator_stat_with(op: &opendal_operator,path:
      *const c_char,opts: *const opendal_stat_options,) -> opendal_result_stat'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: std::ffi::CStr::from_ptr
      Src: /src/opendal/bindings/c/src/operator.rs:1107,1
    - Dst: to_str
      Src: /src/opendal/bindings/c/src/operator.rs:1107,1
    - Dst: expect
      Src: /src/opendal/bindings/c/src/operator.rs:1107,1
    - Dst: deref
      Src: /src/opendal/bindings/c/src/operator.rs:1110,1
    - Dst: '&Self::Target::lister'
      Src: /src/opendal/bindings/c/src/operator.rs:1110,1
    - Dst: Box::into_raw
      Src: /src/opendal/bindings/c/src/operator.rs:1112,1
    - Dst: Box::new
      Src: /src/opendal/bindings/c/src/operator.rs:1112,1
    - Dst: opendal_lister::new
      Src: /src/opendal/bindings/c/src/operator.rs:1112,1
    - Dst: std::ptr::null_mut
      Src: /src/opendal/bindings/c/src/operator.rs:1113,1
    - Dst: std::ptr::null_mut
      Src: /src/opendal/bindings/c/src/operator.rs:1116,1
    - Dst: opendal_error::new
      Src: /src/opendal/bindings/c/src/operator.rs:1117,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 20
    argCount: 2
    argNames:
    - op
    - path
    argTypes:
    - '&opendal_operator'
    - '*const c_char'
    constantsTouched: []
    func_position:
      end: 1120
      start: 1102
    functionDepth: 38
    functionLinenumber: 1102
    functionLinenumberEnd: 1120
    functionName: opendal_operator_list
    functionSourceFile: /src/opendal/bindings/c/src/operator.rs
    functionUses: 0
    functionsReached:
    - opendal_lister::new
    - '&Self::Target::lister'
    - opendal_error::new
    - deref
    - to_str
    - expect
    - std::ffi::CStr::from_ptr
    - Box::new
    - std::ptr::null_mut
    - Box::into_raw
    linkageType: ''
    returnType: opendal_result_list
    signature: 'pub unsafe extern "C" fn opendal_operator_list(op: &opendal_operator,path:
      *const c_char,) -> opendal_result_list'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: std::ffi::CStr::from_ptr
      Src: /src/opendal/bindings/c/src/operator.rs:1150,1
    - Dst: to_str
      Src: /src/opendal/bindings/c/src/operator.rs:1150,1
    - Dst: expect
      Src: /src/opendal/bindings/c/src/operator.rs:1150,1
    - Dst: object_store::Result::is_null
      Src: /src/opendal/bindings/c/src/operator.rs:1153,1
    - Dst: core::options::ListOptions::default
      Src: /src/opendal/bindings/c/src/operator.rs:1154,1
    - Dst: Some
      Src: /src/opendal/bindings/c/src/operator.rs:1157,1
    - Dst: is_null
      Src: /src/opendal/bindings/c/src/operator.rs:1158,1
    - Dst: Some
      Src: /src/opendal/bindings/c/src/operator.rs:1161,1
    - Dst: std::ffi::CStr::from_ptr
      Src: /src/opendal/bindings/c/src/operator.rs:1162,1
    - Dst: to_str
      Src: /src/opendal/bindings/c/src/operator.rs:1162,1
    - Dst: expect
      Src: /src/opendal/bindings/c/src/operator.rs:1162,1
    - Dst: to_owned
      Src: /src/opendal/bindings/c/src/operator.rs:1162,1
    - Dst: deref
      Src: /src/opendal/bindings/c/src/operator.rs:1176,1
    - Dst: '&Self::Target::lister_options'
      Src: /src/opendal/bindings/c/src/operator.rs:1176,1
    - Dst: Box::into_raw
      Src: /src/opendal/bindings/c/src/operator.rs:1178,1
    - Dst: Box::new
      Src: /src/opendal/bindings/c/src/operator.rs:1178,1
    - Dst: opendal_lister::new
      Src: /src/opendal/bindings/c/src/operator.rs:1178,1
    - Dst: std::ptr::null_mut
      Src: /src/opendal/bindings/c/src/operator.rs:1179,1
    - Dst: std::ptr::null_mut
      Src: /src/opendal/bindings/c/src/operator.rs:1182,1
    - Dst: opendal_error::new
      Src: /src/opendal/bindings/c/src/operator.rs:1183,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 48
    argCount: 3
    argNames:
    - op
    - path
    - opts
    argTypes:
    - '&opendal_operator'
    - '*const c_char'
    - '*const opendal_list_options'
    constantsTouched: []
    func_position:
      end: 1186
      start: 1144
    functionDepth: 38
    functionLinenumber: 1144
    functionLinenumberEnd: 1186
    functionName: opendal_operator_list_with
    functionSourceFile: /src/opendal/bindings/c/src/operator.rs
    functionUses: 0
    functionsReached:
    - opendal_lister::new
    - opendal_error::new
    - object_store::Result::is_null
    - deref
    - to_str
    - expect
    - std::ffi::CStr::from_ptr
    - Box::new
    - std::ptr::null_mut
    - Some
    - core::options::ListOptions::default
    - to_owned
    - is_null
    - Box::into_raw
    - '&Self::Target::lister_options'
    linkageType: ''
    returnType: opendal_result_list
    signature: 'pub unsafe extern "C" fn opendal_operator_list_with(op: &opendal_operator,path:
      *const c_char,opts: *const opendal_list_options,) -> opendal_result_list'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: std::ffi::CStr::from_ptr
      Src: /src/opendal/bindings/c/src/operator.rs:1227,1
    - Dst: to_str
      Src: /src/opendal/bindings/c/src/operator.rs:1227,1
    - Dst: expect
      Src: /src/opendal/bindings/c/src/operator.rs:1227,1
    - Dst: deref
      Src: /src/opendal/bindings/c/src/operator.rs:1230,1
    - Dst: '&Self::Target::create_dir'
      Src: /src/opendal/bindings/c/src/operator.rs:1230,1
    - Dst: opendal_error::new
      Src: /src/opendal/bindings/c/src/operator.rs:1231,1
    - Dst: std::ptr::null_mut
      Src: /src/opendal/bindings/c/src/operator.rs:1233,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 14
    argCount: 2
    argNames:
    - op
    - path
    argTypes:
    - '&opendal_operator'
    - '*const c_char'
    constantsTouched: []
    func_position:
      end: 1235
      start: 1222
    functionDepth: 38
    functionLinenumber: 1222
    functionLinenumberEnd: 1235
    functionName: opendal_operator_create_dir
    functionSourceFile: /src/opendal/bindings/c/src/operator.rs
    functionUses: 0
    functionsReached:
    - opendal_error::new
    - deref
    - to_str
    - expect
    - std::ffi::CStr::from_ptr
    - std::ptr::null_mut
    - '&Self::Target::create_dir'
    linkageType: ''
    returnType: '*mut opendal_error'
    signature: 'pub unsafe extern "C" fn opendal_operator_create_dir(op: &opendal_operator,path:
      *const c_char,) -> *mut opendal_error'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: std::ffi::CStr::from_ptr
      Src: /src/opendal/bindings/c/src/operator.rs:1286,1
    - Dst: to_str
      Src: /src/opendal/bindings/c/src/operator.rs:1286,1
    - Dst: expect
      Src: /src/opendal/bindings/c/src/operator.rs:1286,1
    - Dst: std::ffi::CStr::from_ptr
      Src: /src/opendal/bindings/c/src/operator.rs:1289,1
    - Dst: to_str
      Src: /src/opendal/bindings/c/src/operator.rs:1289,1
    - Dst: expect
      Src: /src/opendal/bindings/c/src/operator.rs:1289,1
    - Dst: deref
      Src: /src/opendal/bindings/c/src/operator.rs:1292,1
    - Dst: '&Self::Target::rename'
      Src: /src/opendal/bindings/c/src/operator.rs:1292,1
    - Dst: opendal_error::new
      Src: /src/opendal/bindings/c/src/operator.rs:1293,1
    - Dst: std::ptr::null_mut
      Src: /src/opendal/bindings/c/src/operator.rs:1295,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 20
    argCount: 3
    argNames:
    - op
    - src
    - dest
    argTypes:
    - '&opendal_operator'
    - '*const c_char'
    - '*const c_char'
    constantsTouched: []
    func_position:
      end: 1297
      start: 1279
    functionDepth: 38
    functionLinenumber: 1279
    functionLinenumberEnd: 1297
    functionName: opendal_operator_rename
    functionSourceFile: /src/opendal/bindings/c/src/operator.rs
    functionUses: 0
    functionsReached:
    - opendal_error::new
    - deref
    - to_str
    - expect
    - std::ffi::CStr::from_ptr
    - std::ptr::null_mut
    - '&Self::Target::rename'
    linkageType: ''
    returnType: '*mut opendal_error'
    signature: 'pub unsafe extern "C" fn opendal_operator_rename(op: &opendal_operator,src:
      *const c_char,dest: *const c_char,) -> *mut opendal_error'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: std::ffi::CStr::from_ptr
      Src: /src/opendal/bindings/c/src/operator.rs:1348,1
    - Dst: to_str
      Src: /src/opendal/bindings/c/src/operator.rs:1348,1
    - Dst: expect
      Src: /src/opendal/bindings/c/src/operator.rs:1348,1
    - Dst: std::ffi::CStr::from_ptr
      Src: /src/opendal/bindings/c/src/operator.rs:1351,1
    - Dst: to_str
      Src: /src/opendal/bindings/c/src/operator.rs:1351,1
    - Dst: expect
      Src: /src/opendal/bindings/c/src/operator.rs:1351,1
    - Dst: deref
      Src: /src/opendal/bindings/c/src/operator.rs:1354,1
    - Dst: '&Self::Target::copy'
      Src: /src/opendal/bindings/c/src/operator.rs:1354,1
    - Dst: opendal_error::new
      Src: /src/opendal/bindings/c/src/operator.rs:1355,1
    - Dst: std::ptr::null_mut
      Src: /src/opendal/bindings/c/src/operator.rs:1357,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 20
    argCount: 3
    argNames:
    - op
    - src
    - dest
    argTypes:
    - '&opendal_operator'
    - '*const c_char'
    - '*const c_char'
    constantsTouched: []
    func_position:
      end: 1359
      start: 1341
    functionDepth: 38
    functionLinenumber: 1341
    functionLinenumberEnd: 1359
    functionName: opendal_operator_copy
    functionSourceFile: /src/opendal/bindings/c/src/operator.rs
    functionUses: 0
    functionsReached:
    - opendal_error::new
    - deref
    - to_str
    - expect
    - std::ffi::CStr::from_ptr
    - std::ptr::null_mut
    - '&Self::Target::copy'
    linkageType: ''
    returnType: '*mut opendal_error'
    signature: 'pub unsafe extern "C" fn opendal_operator_copy(op: &opendal_operator,src:
      *const c_char,dest: *const c_char,) -> *mut opendal_error'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: std::ffi::CStr::from_ptr
      Src: /src/opendal/bindings/c/src/operator.rs:1421,1
    - Dst: to_str
      Src: /src/opendal/bindings/c/src/operator.rs:1421,1
    - Dst: expect
      Src: /src/opendal/bindings/c/src/operator.rs:1421,1
    - Dst: std::ffi::CStr::from_ptr
      Src: /src/opendal/bindings/c/src/operator.rs:1424,1
    - Dst: to_str
      Src: /src/opendal/bindings/c/src/operator.rs:1424,1
    - Dst: expect
      Src: /src/opendal/bindings/c/src/operator.rs:1424,1
    - Dst: object_store::Result::is_null
      Src: /src/opendal/bindings/c/src/operator.rs:1427,1
    - Dst: core::options::CopyOptions::default
      Src: /src/opendal/bindings/c/src/operator.rs:1428,1
    - Dst: core::options::CopyOptions::from
      Src: /src/opendal/bindings/c/src/operator.rs:1430,1
    - Dst: deref
      Src: /src/opendal/bindings/c/src/operator.rs:1432,1
    - Dst: '&Self::Target::copy_options'
      Src: /src/opendal/bindings/c/src/operator.rs:1432,1
    - Dst: opendal_error::new
      Src: /src/opendal/bindings/c/src/operator.rs:1433,1
    - Dst: std::ptr::null_mut
      Src: /src/opendal/bindings/c/src/operator.rs:1435,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 27
    argCount: 4
    argNames:
    - op
    - src
    - dest
    - opts
    argTypes:
    - '&opendal_operator'
    - '*const c_char'
    - '*const c_char'
    - '*const opendal_copy_options'
    constantsTouched: []
    func_position:
      end: 1437
      start: 1413
    functionDepth: 38
    functionLinenumber: 1413
    functionLinenumberEnd: 1437
    functionName: opendal_operator_copy_with
    functionSourceFile: /src/opendal/bindings/c/src/operator.rs
    functionUses: 0
    functionsReached:
    - opendal_error::new
    - object_store::Result::is_null
    - deref
    - to_str
    - expect
    - std::ffi::CStr::from_ptr
    - std::ptr::null_mut
    - '&Self::Target::copy_options'
    - core::options::CopyOptions::default
    - core::options::CopyOptions::from
    linkageType: ''
    returnType: '*mut opendal_error'
    signature: 'pub unsafe extern "C" fn opendal_operator_copy_with(op: &opendal_operator,src:
      *const c_char,dest: *const c_char,opts: *const opendal_copy_options,) -> *mut
      opendal_error'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: deref
      Src: /src/opendal/bindings/c/src/operator.rs:1441,1
    - Dst: '&Self::Target::check'
      Src: /src/opendal/bindings/c/src/operator.rs:1441,1
    - Dst: opendal_error::new
      Src: /src/opendal/bindings/c/src/operator.rs:1442,1
    - Dst: std::ptr::null_mut
      Src: /src/opendal/bindings/c/src/operator.rs:1444,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - op
    argTypes:
    - '&opendal_operator'
    constantsTouched: []
    func_position:
      end: 1446
      start: 1440
    functionDepth: 41
    functionLinenumber: 1440
    functionLinenumberEnd: 1446
    functionName: opendal_operator_check
    functionSourceFile: /src/opendal/bindings/c/src/operator.rs
    functionUses: 0
    functionsReached:
    - opendal_error::new
    - std::ptr::null_mut
    - deref
    - '&Self::Target::check'
    linkageType: ''
    returnType: '*mut opendal_error'
    signature: 'pub unsafe extern "C" fn opendal_operator_check(op: &opendal_operator)
      -> *mut opendal_error'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: std::ffi::CStr::from_ptr
      Src: /src/opendal/bindings/c/src/operator.rs:1481,1
    - Dst: to_str
      Src: /src/opendal/bindings/c/src/operator.rs:1481,1
    - Dst: expect
      Src: /src/opendal/bindings/c/src/operator.rs:1481,1
    - Dst: std::ffi::CStr::from_ptr
      Src: /src/opendal/bindings/c/src/operator.rs:1484,1
    - Dst: to_str
      Src: /src/opendal/bindings/c/src/operator.rs:1484,1
    - Dst: expect
      Src: /src/opendal/bindings/c/src/operator.rs:1484,1
    - Dst: deref
      Src: /src/opendal/bindings/c/src/operator.rs:1487,1
    - Dst: '&Self::Target::copier'
      Src: /src/opendal/bindings/c/src/operator.rs:1487,1
    - Dst: Box::into_raw
      Src: /src/opendal/bindings/c/src/operator.rs:1489,1
    - Dst: Box::new
      Src: /src/opendal/bindings/c/src/operator.rs:1489,1
    - Dst: opendal_copier::new
      Src: /src/opendal/bindings/c/src/operator.rs:1489,1
    - Dst: std::ptr::null_mut
      Src: /src/opendal/bindings/c/src/operator.rs:1490,1
    - Dst: std::ptr::null_mut
      Src: /src/opendal/bindings/c/src/operator.rs:1493,1
    - Dst: opendal_error::new
      Src: /src/opendal/bindings/c/src/operator.rs:1494,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 26
    argCount: 3
    argNames:
    - op
    - src
    - dest
    argTypes:
    - '&opendal_operator'
    - '*const c_char'
    - '*const c_char'
    constantsTouched: []
    func_position:
      end: 1497
      start: 1474
    functionDepth: 38
    functionLinenumber: 1474
    functionLinenumberEnd: 1497
    functionName: opendal_operator_copier
    functionSourceFile: /src/opendal/bindings/c/src/operator.rs
    functionUses: 0
    functionsReached:
    - opendal_error::new
    - deref
    - to_str
    - expect
    - opendal_copier::new
    - std::ffi::CStr::from_ptr
    - Box::new
    - std::ptr::null_mut
    - '&Self::Target::copier'
    - Box::into_raw
    linkageType: ''
    returnType: opendal_result_operator_copier
    signature: 'pub unsafe extern "C" fn opendal_operator_copier(op: &opendal_operator,src:
      *const c_char,dest: *const c_char,) -> opendal_result_operator_copier'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: std::ffi::CStr::from_ptr
      Src: /src/opendal/bindings/c/src/operator.rs:1520,1
    - Dst: to_str
      Src: /src/opendal/bindings/c/src/operator.rs:1520,1
    - Dst: expect
      Src: /src/opendal/bindings/c/src/operator.rs:1520,1
    - Dst: std::ffi::CStr::from_ptr
      Src: /src/opendal/bindings/c/src/operator.rs:1523,1
    - Dst: to_str
      Src: /src/opendal/bindings/c/src/operator.rs:1523,1
    - Dst: expect
      Src: /src/opendal/bindings/c/src/operator.rs:1523,1
    - Dst: object_store::Result::is_null
      Src: /src/opendal/bindings/c/src/operator.rs:1526,1
    - Dst: core::options::CopyOptions::default
      Src: /src/opendal/bindings/c/src/operator.rs:1527,1
    - Dst: core::options::CopyOptions::from
      Src: /src/opendal/bindings/c/src/operator.rs:1529,1
    - Dst: deref
      Src: /src/opendal/bindings/c/src/operator.rs:1531,1
    - Dst: '&Self::Target::copier_options'
      Src: /src/opendal/bindings/c/src/operator.rs:1531,1
    - Dst: Box::into_raw
      Src: /src/opendal/bindings/c/src/operator.rs:1533,1
    - Dst: Box::new
      Src: /src/opendal/bindings/c/src/operator.rs:1533,1
    - Dst: opendal_copier::new
      Src: /src/opendal/bindings/c/src/operator.rs:1533,1
    - Dst: std::ptr::null_mut
      Src: /src/opendal/bindings/c/src/operator.rs:1534,1
    - Dst: std::ptr::null_mut
      Src: /src/opendal/bindings/c/src/operator.rs:1537,1
    - Dst: opendal_error::new
      Src: /src/opendal/bindings/c/src/operator.rs:1538,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 33
    argCount: 4
    argNames:
    - op
    - src
    - dest
    - opts
    argTypes:
    - '&opendal_operator'
    - '*const c_char'
    - '*const c_char'
    - '*const opendal_copy_options'
    constantsTouched: []
    func_position:
      end: 1541
      start: 1512
    functionDepth: 38
    functionLinenumber: 1512
    functionLinenumberEnd: 1541
    functionName: opendal_operator_copier_with
    functionSourceFile: /src/opendal/bindings/c/src/operator.rs
    functionUses: 0
    functionsReached:
    - opendal_error::new
    - object_store::Result::is_null
    - deref
    - to_str
    - expect
    - opendal_copier::new
    - std::ffi::CStr::from_ptr
    - Box::new
    - std::ptr::null_mut
    - core::options::CopyOptions::default
    - '&Self::Target::copier_options'
    - core::options::CopyOptions::from
    - Box::into_raw
    linkageType: ''
    returnType: opendal_result_operator_copier
    signature: 'pub unsafe extern "C" fn opendal_operator_copier_with(op: &opendal_operator,src:
      *const c_char,dest: *const c_char,opts: *const opendal_copy_options,) -> opendal_result_operator_copier'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 43
      start: 39
    functionDepth: 0
    functionLinenumber: 39
    functionLinenumberEnd: 43
    functionName: opendal_entry::deref
    functionSourceFile: /src/opendal/bindings/c/src/entry.rs
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: '&core::Entry'
    signature: fn deref(&self) -> &core::Entry
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Box::into_raw
      Src: /src/opendal/bindings/c/src/entry.rs:50,1
    - Dst: Box::new
      Src: /src/opendal/bindings/c/src/entry.rs:50,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - entry
    argTypes:
    - core::Entry
    constantsTouched: []
    func_position:
      end: 52
      start: 48
    functionDepth: 2
    functionLinenumber: 48
    functionLinenumberEnd: 52
    functionName: opendal_entry::new
    functionSourceFile: /src/opendal/bindings/c/src/entry.rs
    functionUses: 1
    functionsReached:
    - Box::new
    - Box::into_raw
    linkageType: ''
    returnType: Self
    signature: 'pub(crate) fn new(entry: core::Entry) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: opendal_entry::deref
      Src: /src/opendal/bindings/c/src/entry.rs:61,1
    - Dst: '&core::Entry::path'
      Src: /src/opendal/bindings/c/src/entry.rs:61,1
    - Dst: CString::new
      Src: /src/opendal/bindings/c/src/entry.rs:62,1
    - Dst: Self::unwrap
      Src: /src/opendal/bindings/c/src/entry.rs:62,1
    - Dst: T::into_raw
      Src: /src/opendal/bindings/c/src/entry.rs:63,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 64
      start: 60
    functionDepth: 35
    functionLinenumber: 60
    functionLinenumberEnd: 64
    functionName: opendal_entry::opendal_entry_path
    functionSourceFile: /src/opendal/bindings/c/src/entry.rs
    functionUses: 0
    functionsReached:
    - Self::unwrap
    - CString::new
    - opendal_entry::deref
    - '&core::Entry::path'
    - T::into_raw
    linkageType: ''
    returnType: '*mut c_char'
    signature: pub unsafe extern "C" fn opendal_entry_path(&self) -> *mut c_char
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: opendal_entry::deref
      Src: /src/opendal/bindings/c/src/entry.rs:75,1
    - Dst: '&core::Entry::name'
      Src: /src/opendal/bindings/c/src/entry.rs:75,1
    - Dst: CString::new
      Src: /src/opendal/bindings/c/src/entry.rs:76,1
    - Dst: Self::unwrap
      Src: /src/opendal/bindings/c/src/entry.rs:76,1
    - Dst: T::into_raw
      Src: /src/opendal/bindings/c/src/entry.rs:77,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 78
      start: 74
    functionDepth: 32
    functionLinenumber: 74
    functionLinenumberEnd: 78
    functionName: opendal_entry::opendal_entry_name
    functionSourceFile: /src/opendal/bindings/c/src/entry.rs
    functionUses: 0
    functionsReached:
    - Self::unwrap
    - '&core::Entry::name'
    - CString::new
    - opendal_entry::deref
    - T::into_raw
    linkageType: ''
    returnType: '*mut c_char'
    signature: pub unsafe extern "C" fn opendal_entry_name(&self) -> *mut c_char
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: opendal_entry::deref
      Src: /src/opendal/bindings/c/src/entry.rs:86,1
    - Dst: '&core::Entry::metadata'
      Src: /src/opendal/bindings/c/src/entry.rs:86,1
    - Dst: Metadata::clone
      Src: /src/opendal/bindings/c/src/entry.rs:86,1
    - Dst: Box::into_raw
      Src: /src/opendal/bindings/c/src/entry.rs:87,1
    - Dst: Box::new
      Src: /src/opendal/bindings/c/src/entry.rs:87,1
    - Dst: opendal_metadata::new
      Src: /src/opendal/bindings/c/src/entry.rs:87,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 88
      start: 85
    functionDepth: 38
    functionLinenumber: 85
    functionLinenumberEnd: 88
    functionName: opendal_entry::opendal_entry_metadata
    functionSourceFile: /src/opendal/bindings/c/src/entry.rs
    functionUses: 0
    functionsReached:
    - opendal_metadata::new
    - Metadata::clone
    - Box::new
    - opendal_entry::deref
    - '&core::Entry::metadata'
    - Box::into_raw
    linkageType: ''
    returnType: '*mut opendal_metadata'
    signature: pub unsafe extern "C" fn opendal_entry_metadata(&self) -> *mut opendal_metadata
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: '*mut c_char::is_null'
      Src: /src/opendal/bindings/c/src/entry.rs:94,1
    - Dst: drop
      Src: /src/opendal/bindings/c/src/entry.rs:95,1
    - Dst: Box::from_raw
      Src: /src/opendal/bindings/c/src/entry.rs:95,1
    - Dst: drop
      Src: /src/opendal/bindings/c/src/entry.rs:96,1
    - Dst: Box::from_raw
      Src: /src/opendal/bindings/c/src/entry.rs:96,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 16
    argCount: 1
    argNames:
    - ptr
    argTypes:
    - '*mut opendal_entry'
    constantsTouched: []
    func_position:
      end: 99
      start: 92
    functionDepth: 33
    functionLinenumber: 92
    functionLinenumberEnd: 99
    functionName: opendal_entry::opendal_entry_free
    functionSourceFile: /src/opendal/bindings/c/src/entry.rs
    functionUses: 0
    functionsReached:
    - Box::from_raw
    - '*mut c_char::is_null'
    - drop
    linkageType: ''
    returnType: void
    signature: 'pub unsafe extern "C" fn opendal_entry_free(ptr: *mut opendal_entry)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: '&RModule::define_class'
      Src: /src/opendal/bindings/ruby/src/capability.rs:101,1
    - Dst: class_object
      Src: /src/opendal/bindings/ruby/src/capability.rs:101,1
    - Dst: bind_methods_to_ruby
      Src: /src/opendal/bindings/ruby/src/capability.rs:102,1
    - Dst: Ok
      Src: /src/opendal/bindings/ruby/src/capability.rs:145,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - ruby
    - gem_module
    argTypes:
    - '&Ruby'
    - '&RModule'
    constantsTouched: []
    func_position:
      end: 146
      start: 100
    functionDepth: 1
    functionLinenumber: 100
    functionLinenumberEnd: 146
    functionName: include
    functionSourceFile: /src/opendal/bindings/ruby/src/capability.rs
    functionUses: 1
    functionsReached:
    - class_object
    - Ok
    - '&RModule::define_class'
    - bind_methods_to_ruby
    linkageType: ''
    returnType: Result
    signature: 'pub fn include(ruby: &Ruby, gem_module: &RModule) -> Result<(), Error>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/bindings/ruby/src/lister.rs:124,1
    - Dst: Yield::Iter
      Src: /src/opendal/bindings/ruby/src/lister.rs:124,1
    - Dst: Lister
      Src: /src/opendal/bindings/ruby/src/lister.rs:124,1
    - Dst: clone
      Src: /src/opendal/bindings/ruby/src/lister.rs:124,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 125
      start: 115
    functionDepth: 2
    functionLinenumber: 115
    functionLinenumberEnd: 125
    functionName: Lister::each
    functionSourceFile: /src/opendal/bindings/ruby/src/lister.rs
    functionUses: 0
    functionsReached:
    - Lister
    - Yield::Iter
    - clone
    - Ok
    linkageType: ''
    returnType: Result
    signature: fn each(&self) -> Result<Yield<Lister>, Error>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Error::new
      Src: /src/opendal/bindings/ruby/src/io.rs:80,1
    - Dst: exception_runtime_error
      Src: /src/opendal/bindings/ruby/src/io.rs:80,1
    - Dst: Error::to_string
      Src: /src/opendal/bindings/ruby/src/io.rs:80,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - ruby
    - err
    argTypes:
    - '&Ruby'
    - std::io::Error
    constantsTouched: []
    func_position:
      end: 81
      start: 79
    functionDepth: 36
    functionLinenumber: 79
    functionLinenumberEnd: 81
    functionName: format_io_error
    functionSourceFile: /src/opendal/bindings/ruby/src/io.rs
    functionUses: 7
    functionsReached:
    - Error::to_string
    - exception_runtime_error
    - Error::new
    linkageType: ''
    returnType: Error
    signature: 'pub fn format_io_error(ruby: &Ruby, err: std::io::Error) -> Error'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: io_extract_modeenc
      Src: /src/opendal/bindings/ruby/src/io.rs:96,1
    - Dst: contains
      Src: /src/opendal/bindings/ruby/src/io.rs:100,1
    - Dst: FileState::Reader
      Src: /src/opendal/bindings/ruby/src/io.rs:101,1
    - Dst: Result::reader
      Src: /src/opendal/bindings/ruby/src/io.rs:102,1
    - Dst: anyhow::Result::map_err
      Src: /src/opendal/bindings/ruby/src/io.rs:102,1
    - Dst: format_magnus_error
      Src: /src/opendal/bindings/ruby/src/io.rs:104,1
    - Dst: into_std_read
      Src: /src/opendal/bindings/ruby/src/io.rs:102,1
    - Dst: map_err
      Src: /src/opendal/bindings/ruby/src/io.rs:102,1
    - Dst: format_magnus_error
      Src: /src/opendal/bindings/ruby/src/io.rs:106,1
    - Dst: contains
      Src: /src/opendal/bindings/ruby/src/io.rs:108,1
    - Dst: FileState::Writer
      Src: /src/opendal/bindings/ruby/src/io.rs:109,1
    - Dst: Result::writer
      Src: /src/opendal/bindings/ruby/src/io.rs:110,1
    - Dst: Result::map_err
      Src: /src/opendal/bindings/ruby/src/io.rs:110,1
    - Dst: format_magnus_error
      Src: /src/opendal/bindings/ruby/src/io.rs:112,1
    - Dst: into_std_write
      Src: /src/opendal/bindings/ruby/src/io.rs:110,1
    - Dst: Err
      Src: /src/opendal/bindings/ruby/src/io.rs:116,1
    - Dst: Error::new
      Src: /src/opendal/bindings/ruby/src/io.rs:116,1
    - Dst: exception_arg_error
      Src: /src/opendal/bindings/ruby/src/io.rs:117,1
    - Dst: Ok
      Src: /src/opendal/bindings/ruby/src/io.rs:122,1
    - Dst: Self
      Src: /src/opendal/bindings/ruby/src/io.rs:122,1
    - Dst: RefCell::new
      Src: /src/opendal/bindings/ruby/src/io.rs:122,1
    - Dst: map
      Src: /src/opendal/bindings/ruby/src/io.rs:125,1
    - Dst: Result::to_string
      Src: /src/opendal/bindings/ruby/src/io.rs:125,1
    - Dst: map
      Src: /src/opendal/bindings/ruby/src/io.rs:126,1
    - Dst: Result::to_string
      Src: /src/opendal/bindings/ruby/src/io.rs:126,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 63
    argCount: 6
    argNames:
    - ruby
    - operator
    - path
    - mode
    - permission
    - kwargs
    argTypes:
    - '&Ruby'
    - ocore::blocking::Operator
    - String
    - Value
    - Value
    - RHash
    constantsTouched: []
    func_position:
      end: 129
      start: 87
    functionDepth: 32
    functionLinenumber: 87
    functionLinenumberEnd: 129
    functionName: Io::new
    functionSourceFile: /src/opendal/bindings/ruby/src/io.rs
    functionUses: 0
    functionsReached:
    - exception_arg_error
    - Self
    - map
    - Result::reader
    - into_std_read
    - map_err
    - Result::to_string
    - FileState::Reader
    - Ok
    - RefCell::new
    - contains
    - Result::map_err
    - Result::writer
    - FileState::Writer
    - io_extract_modeenc
    - format_magnus_error
    - Err
    - Error::new
    - anyhow::Result::map_err
    - into_std_write
    linkageType: ''
    returnType: Result
    signature: 'pub fn new(ruby: &Ruby,operator: ocore::blocking::Operator,path: String,mut
      mode: Value,mut permission: Value,kwargs: RHash,) -> Result<Self, Error>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: borrow_mut
      Src: /src/opendal/bindings/ruby/src/io.rs:137,1
    - Dst: Err
      Src: /src/opendal/bindings/ruby/src/io.rs:139,1
    - Dst: Error::new
      Src: /src/opendal/bindings/ruby/src/io.rs:139,1
    - Dst: exception_io_error
      Src: /src/opendal/bindings/ruby/src/io.rs:139,1
    - Dst: FMode::new
      Src: /src/opendal/bindings/ruby/src/io.rs:141,1
    - Dst: bits
      Src: /src/opendal/bindings/ruby/src/io.rs:141,1
    - Dst: Ok
      Src: /src/opendal/bindings/ruby/src/io.rs:142,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 22
    argCount: 2
    argNames:
    - ruby
    - rb_self
    argTypes:
    - '&Ruby'
    - '&Self'
    constantsTouched: []
    func_position:
      end: 143
      start: 136
    functionDepth: 36
    functionLinenumber: 136
    functionLinenumberEnd: 143
    functionName: Io::binary_mode
    functionSourceFile: /src/opendal/bindings/ruby/src/io.rs
    functionUses: 0
    functionsReached:
    - FMode::new
    - Ok
    - exception_io_error
    - bits
    - Error::new
    - Err
    - borrow_mut
    linkageType: ''
    returnType: Result
    signature: 'fn binary_mode(ruby: &Ruby, rb_self: &Self) -> Result<(), Error>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: borrow
      Src: /src/opendal/bindings/ruby/src/io.rs:151,1
    - Dst: Err
      Src: /src/opendal/bindings/ruby/src/io.rs:153,1
    - Dst: Error::new
      Src: /src/opendal/bindings/ruby/src/io.rs:153,1
    - Dst: exception_io_error
      Src: /src/opendal/bindings/ruby/src/io.rs:153,1
    - Dst: Ok
      Src: /src/opendal/bindings/ruby/src/io.rs:155,1
    - Dst: contains
      Src: /src/opendal/bindings/ruby/src/io.rs:155,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 16
    argCount: 2
    argNames:
    - ruby
    - rb_self
    argTypes:
    - '&Ruby'
    - '&Self'
    constantsTouched: []
    func_position:
      end: 156
      start: 150
    functionDepth: 36
    functionLinenumber: 150
    functionLinenumberEnd: 156
    functionName: Io::is_binary_mode
    functionSourceFile: /src/opendal/bindings/ruby/src/io.rs
    functionUses: 0
    functionsReached:
    - Ok
    - exception_io_error
    - Error::new
    - Err
    - contains
    - borrow
    linkageType: ''
    returnType: Result
    signature: 'fn is_binary_mode(ruby: &Ruby, rb_self: &Self) -> Result<bool, Error>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: borrow_mut
      Src: /src/opendal/bindings/ruby/src/io.rs:163,1
    - Dst: Result::close
      Src: /src/opendal/bindings/ruby/src/io.rs:165,1
    - Dst: Result::map_err
      Src: /src/opendal/bindings/ruby/src/io.rs:165,1
    - Dst: format_io_error
      Src: /src/opendal/bindings/ruby/src/io.rs:165,1
    - Dst: Ok
      Src: /src/opendal/bindings/ruby/src/io.rs:168,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 20
    argCount: 2
    argNames:
    - ruby
    - rb_self
    argTypes:
    - '&Ruby'
    - '&Self'
    constantsTouched: []
    func_position:
      end: 169
      start: 162
    functionDepth: 37
    functionLinenumber: 162
    functionLinenumberEnd: 169
    functionName: Io::close
    functionSourceFile: /src/opendal/bindings/ruby/src/io.rs
    functionUses: 0
    functionsReached:
    - Result::map_err
    - Ok
    - Result::close
    - borrow_mut
    - format_io_error
    linkageType: ''
    returnType: Result
    signature: 'fn close(ruby: &Ruby, rb_self: &Self) -> Result<(), Error>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: borrow_mut
      Src: /src/opendal/bindings/ruby/src/io.rs:176,1
    - Dst: Ok
      Src: /src/opendal/bindings/ruby/src/io.rs:180,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 181
      start: 175
    functionDepth: 0
    functionLinenumber: 175
    functionLinenumberEnd: 181
    functionName: Io::close_read
    functionSourceFile: /src/opendal/bindings/ruby/src/io.rs
    functionUses: 0
    functionsReached:
    - borrow_mut
    - Ok
    linkageType: ''
    returnType: Result
    signature: fn close_read(&self) -> Result<(), Error>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: borrow_mut
      Src: /src/opendal/bindings/ruby/src/io.rs:188,1
    - Dst: Result::close
      Src: /src/opendal/bindings/ruby/src/io.rs:190,1
    - Dst: Result::map_err
      Src: /src/opendal/bindings/ruby/src/io.rs:190,1
    - Dst: format_io_error
      Src: /src/opendal/bindings/ruby/src/io.rs:190,1
    - Dst: Ok
      Src: /src/opendal/bindings/ruby/src/io.rs:193,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 20
    argCount: 2
    argNames:
    - ruby
    - rb_self
    argTypes:
    - '&Ruby'
    - '&Self'
    constantsTouched: []
    func_position:
      end: 194
      start: 187
    functionDepth: 37
    functionLinenumber: 187
    functionLinenumberEnd: 194
    functionName: Io::close_write
    functionSourceFile: /src/opendal/bindings/ruby/src/io.rs
    functionUses: 0
    functionsReached:
    - Result::map_err
    - Ok
    - Result::close
    - borrow_mut
    - format_io_error
    linkageType: ''
    returnType: Result
    signature: 'fn close_write(ruby: &Ruby, rb_self: &Self) -> Result<(), Error>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: borrow
      Src: /src/opendal/bindings/ruby/src/io.rs:201,1
    - Dst: Ok
      Src: /src/opendal/bindings/ruby/src/io.rs:202,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 203
      start: 200
    functionDepth: 0
    functionLinenumber: 200
    functionLinenumberEnd: 203
    functionName: Io::is_closed
    functionSourceFile: /src/opendal/bindings/ruby/src/io.rs
    functionUses: 0
    functionsReached:
    - borrow
    - Ok
    linkageType: ''
    returnType: Result
    signature: fn is_closed(&self) -> Result<bool, Error>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: borrow
      Src: /src/opendal/bindings/ruby/src/io.rs:210,1
    - Dst: Ok
      Src: /src/opendal/bindings/ruby/src/io.rs:211,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 212
      start: 209
    functionDepth: 0
    functionLinenumber: 209
    functionLinenumberEnd: 212
    functionName: Io::is_closed_read
    functionSourceFile: /src/opendal/bindings/ruby/src/io.rs
    functionUses: 0
    functionsReached:
    - borrow
    - Ok
    linkageType: ''
    returnType: Result
    signature: fn is_closed_read(&self) -> Result<bool, Error>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: borrow
      Src: /src/opendal/bindings/ruby/src/io.rs:219,1
    - Dst: Ok
      Src: /src/opendal/bindings/ruby/src/io.rs:220,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 221
      start: 218
    functionDepth: 0
    functionLinenumber: 218
    functionLinenumberEnd: 221
    functionName: Io::is_closed_write
    functionSourceFile: /src/opendal/bindings/ruby/src/io.rs
    functionUses: 0
    functionsReached:
    - borrow
    - Ok
    linkageType: ''
    returnType: Result
    signature: fn is_closed_write(&self) -> Result<bool, Error>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: scan_args::<(), (Option<Option<i64>>, Option<RString>), (), (), (), ()>
      Src: /src/opendal/bindings/ruby/src/io.rs:232,1
    - Dst: unwrap_or_default
      Src: /src/opendal/bindings/ruby/src/io.rs:234,1
    - Dst: borrow_mut
      Src: /src/opendal/bindings/ruby/src/io.rs:236,1
    - Dst: Err
      Src: /src/opendal/bindings/ruby/src/io.rs:242,1
    - Dst: Error::new
      Src: /src/opendal/bindings/ruby/src/io.rs:242,1
    - Dst: exception_arg_error
      Src: /src/opendal/bindings/ruby/src/io.rs:243,1
    - Dst: anyhow::Result::read
      Src: /src/opendal/bindings/ruby/src/io.rs:248,1
    - Dst: Result::map_err
      Src: /src/opendal/bindings/ruby/src/io.rs:248,1
    - Dst: format_io_error
      Src: /src/opendal/bindings/ruby/src/io.rs:250,1
    - Dst: Result::truncate
      Src: /src/opendal/bindings/ruby/src/io.rs:255,1
    - Dst: Some
      Src: /src/opendal/bindings/ruby/src/io.rs:256,1
    - Dst: Result::into
      Src: /src/opendal/bindings/ruby/src/io.rs:256,1
    - Dst: Vec::new
      Src: /src/opendal/bindings/ruby/src/io.rs:260,1
    - Dst: anyhow::Result::read_to_end
      Src: /src/opendal/bindings/ruby/src/io.rs:261,1
    - Dst: map_err
      Src: /src/opendal/bindings/ruby/src/io.rs:261,1
    - Dst: format_io_error
      Src: /src/opendal/bindings/ruby/src/io.rs:263,1
    - Dst: Some
      Src: /src/opendal/bindings/ruby/src/io.rs:264,1
    - Dst: into
      Src: /src/opendal/bindings/ruby/src/io.rs:264,1
    - Dst: as_mut
      Src: /src/opendal/bindings/ruby/src/io.rs:270,1
    - Dst: as_ref
      Src: /src/opendal/bindings/ruby/src/io.rs:270,1
    - Dst: cat
      Src: /src/opendal/bindings/ruby/src/io.rs:272,1
    - Dst: Ok
      Src: /src/opendal/bindings/ruby/src/io.rs:275,1
    - Dst: Err
      Src: /src/opendal/bindings/ruby/src/io.rs:277,1
    - Dst: Error::new
      Src: /src/opendal/bindings/ruby/src/io.rs:277,1
    - Dst: exception_runtime_error
      Src: /src/opendal/bindings/ruby/src/io.rs:278,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 69
    argCount: 3
    argNames:
    - ruby
    - rb_self
    - args
    argTypes:
    - '&Ruby'
    - '&Self'
    - '&[Value]'
    constantsTouched: []
    func_position:
      end: 282
      start: 231
    functionDepth: 36
    functionLinenumber: 231
    functionLinenumberEnd: 282
    functionName: Io::read
    functionSourceFile: /src/opendal/bindings/ruby/src/io.rs
    functionUses: 0
    functionsReached:
    - as_mut
    - Result::truncate
    - scan_args::<(), (Option<Option<i64>>, Option<RString>), (), (), (), ()>
    - exception_arg_error
    - into
    - exception_runtime_error
    - Vec::new
    - format_io_error
    - map_err
    - Ok
    - unwrap_or_default
    - Result::map_err
    - Some
    - Result::into
    - borrow_mut
    - anyhow::Result::read_to_end
    - anyhow::Result::read
    - Error::new
    - Err
    - as_ref
    - cat
    linkageType: ''
    returnType: Result
    signature: 'fn read(ruby: &Ruby, rb_self: &Self, args: &[Value]) -> Result<Option<bytes::Bytes>,
      Error>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: borrow_mut
      Src: /src/opendal/bindings/ruby/src/io.rs:290,1
    - Dst: String::new
      Src: /src/opendal/bindings/ruby/src/io.rs:293,1
    - Dst: anyhow::Result::read_line
      Src: /src/opendal/bindings/ruby/src/io.rs:294,1
    - Dst: map_err
      Src: /src/opendal/bindings/ruby/src/io.rs:294,1
    - Dst: format_io_error
      Src: /src/opendal/bindings/ruby/src/io.rs:296,1
    - Dst: Err
      Src: /src/opendal/bindings/ruby/src/io.rs:298,1
    - Dst: Error::new
      Src: /src/opendal/bindings/ruby/src/io.rs:298,1
    - Dst: exception_eof_error
      Src: /src/opendal/bindings/ruby/src/io.rs:299,1
    - Dst: Ok
      Src: /src/opendal/bindings/ruby/src/io.rs:304,1
    - Dst: Err
      Src: /src/opendal/bindings/ruby/src/io.rs:306,1
    - Dst: Error::new
      Src: /src/opendal/bindings/ruby/src/io.rs:306,1
    - Dst: exception_runtime_error
      Src: /src/opendal/bindings/ruby/src/io.rs:307,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 30
    argCount: 2
    argNames:
    - ruby
    - rb_self
    argTypes:
    - '&Ruby'
    - '&Self'
    constantsTouched: []
    func_position:
      end: 311
      start: 289
    functionDepth: 37
    functionLinenumber: 289
    functionLinenumberEnd: 311
    functionName: Io::readline
    functionSourceFile: /src/opendal/bindings/ruby/src/io.rs
    functionUses: 0
    functionsReached:
    - map_err
    - String::new
    - Ok
    - exception_runtime_error
    - Err
    - Error::new
    - exception_eof_error
    - format_io_error
    - borrow_mut
    - anyhow::Result::read_line
    linkageType: ''
    returnType: Result
    signature: 'fn readline(ruby: &Ruby, rb_self: &Self) -> Result<String, Error>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: borrow_mut
      Src: /src/opendal/bindings/ruby/src/io.rs:319,1
    - Dst: Result::len
      Src: /src/opendal/bindings/ruby/src/io.rs:322,1
    - Dst: Result::write_all
      Src: /src/opendal/bindings/ruby/src/io.rs:323,1
    - Dst: Result::as_bytes
      Src: /src/opendal/bindings/ruby/src/io.rs:324,1
    - Dst: map_err
      Src: /src/opendal/bindings/ruby/src/io.rs:323,1
    - Dst: format_io_error
      Src: /src/opendal/bindings/ruby/src/io.rs:325,1
    - Dst: Ok
      Src: /src/opendal/bindings/ruby/src/io.rs:326,1
    - Dst: Err
      Src: /src/opendal/bindings/ruby/src/io.rs:328,1
    - Dst: Error::new
      Src: /src/opendal/bindings/ruby/src/io.rs:328,1
    - Dst: exception_runtime_error
      Src: /src/opendal/bindings/ruby/src/io.rs:329,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 24
    argCount: 3
    argNames:
    - ruby
    - rb_self
    - bs
    argTypes:
    - '&Ruby'
    - '&Self'
    - String
    constantsTouched: []
    func_position:
      end: 333
      start: 318
    functionDepth: 37
    functionLinenumber: 318
    functionLinenumberEnd: 333
    functionName: Io::write
    functionSourceFile: /src/opendal/bindings/ruby/src/io.rs
    functionUses: 0
    functionsReached:
    - map_err
    - Ok
    - exception_runtime_error
    - Err
    - Error::new
    - Result::len
    - borrow_mut
    - format_io_error
    - Result::as_bytes
    - Result::write_all
    linkageType: ''
    returnType: Result
    signature: 'fn write(ruby: &Ruby, rb_self: &Self, bs: String) -> Result<usize,
      Error>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: borrow_mut
      Src: /src/opendal/bindings/ruby/src/io.rs:348,1
    - Dst: Err
      Src: /src/opendal/bindings/ruby/src/io.rs:356,1
    - Dst: Error::new
      Src: /src/opendal/bindings/ruby/src/io.rs:356,1
    - Dst: exception_runtime_error
      Src: /src/opendal/bindings/ruby/src/io.rs:357,1
    - Dst: anyhow::Result::stream_position
      Src: /src/opendal/bindings/ruby/src/io.rs:365,1
    - Dst: map_err
      Src: /src/opendal/bindings/ruby/src/io.rs:365,1
    - Dst: format_io_error
      Src: /src/opendal/bindings/ruby/src/io.rs:367,1
    - Dst: Err
      Src: /src/opendal/bindings/ruby/src/io.rs:369,1
    - Dst: Error::new
      Src: /src/opendal/bindings/ruby/src/io.rs:369,1
    - Dst: exception_runtime_error
      Src: /src/opendal/bindings/ruby/src/io.rs:370,1
    - Dst: anyhow::Result::seek
      Src: /src/opendal/bindings/ruby/src/io.rs:378,1
    - Dst: SeekFrom::End
      Src: /src/opendal/bindings/ruby/src/io.rs:379,1
    - Dst: io::Result::map_err
      Src: /src/opendal/bindings/ruby/src/io.rs:378,1
    - Dst: format_io_error
      Src: /src/opendal/bindings/ruby/src/io.rs:380,1
    - Dst: Err
      Src: /src/opendal/bindings/ruby/src/io.rs:382,1
    - Dst: Error::new
      Src: /src/opendal/bindings/ruby/src/io.rs:382,1
    - Dst: exception_runtime_error
      Src: /src/opendal/bindings/ruby/src/io.rs:383,1
    - Dst: Err
      Src: /src/opendal/bindings/ruby/src/io.rs:389,1
    - Dst: Error::new
      Src: /src/opendal/bindings/ruby/src/io.rs:389,1
    - Dst: exception_arg_error
      Src: /src/opendal/bindings/ruby/src/io.rs:389,1
    - Dst: anyhow::Result::seek
      Src: /src/opendal/bindings/ruby/src/io.rs:392,1
    - Dst: std::io::SeekFrom::Start
      Src: /src/opendal/bindings/ruby/src/io.rs:392,1
    - Dst: Err
      Src: /src/opendal/bindings/ruby/src/io.rs:394,1
    - Dst: Error::new
      Src: /src/opendal/bindings/ruby/src/io.rs:394,1
    - Dst: exception_runtime_error
      Src: /src/opendal/bindings/ruby/src/io.rs:395,1
    - Dst: Ok
      Src: /src/opendal/bindings/ruby/src/io.rs:400,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 84
    argCount: 4
    argNames:
    - ruby
    - rb_self
    - offset
    - whence
    argTypes:
    - '&Ruby'
    - '&Self'
    - i64
    - u8
    constantsTouched: []
    func_position:
      end: 401
      start: 347
    functionDepth: 36
    functionLinenumber: 347
    functionLinenumberEnd: 401
    functionName: Io::seek
    functionSourceFile: /src/opendal/bindings/ruby/src/io.rs
    functionUses: 0
    functionsReached:
    - map_err
    - io::Result::map_err
    - anyhow::Result::stream_position
    - Ok
    - exception_arg_error
    - std::io::SeekFrom::Start
    - exception_runtime_error
    - Error::new
    - Err
    - anyhow::Result::seek
    - borrow_mut
    - format_io_error
    - SeekFrom::End
    linkageType: ''
    returnType: Result
    signature: 'fn seek(ruby: &Ruby, rb_self: &Self, offset: i64, whence: u8) -> Result<u8,
      Error>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: borrow_mut
      Src: /src/opendal/bindings/ruby/src/io.rs:409,1
    - Dst: Ok
      Src: /src/opendal/bindings/ruby/src/io.rs:412,1
    - Dst: anyhow::Result::stream_position
      Src: /src/opendal/bindings/ruby/src/io.rs:412,1
    - Dst: map_err
      Src: /src/opendal/bindings/ruby/src/io.rs:412,1
    - Dst: format_io_error
      Src: /src/opendal/bindings/ruby/src/io.rs:414,1
    - Dst: Err
      Src: /src/opendal/bindings/ruby/src/io.rs:415,1
    - Dst: Error::new
      Src: /src/opendal/bindings/ruby/src/io.rs:415,1
    - Dst: exception_runtime_error
      Src: /src/opendal/bindings/ruby/src/io.rs:416,1
    - Dst: Err
      Src: /src/opendal/bindings/ruby/src/io.rs:419,1
    - Dst: Error::new
      Src: /src/opendal/bindings/ruby/src/io.rs:419,1
    - Dst: exception_runtime_error
      Src: /src/opendal/bindings/ruby/src/io.rs:420,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 23
    argCount: 2
    argNames:
    - ruby
    - rb_self
    argTypes:
    - '&Ruby'
    - '&Self'
    constantsTouched: []
    func_position:
      end: 424
      start: 408
    functionDepth: 37
    functionLinenumber: 408
    functionLinenumberEnd: 424
    functionName: Io::tell
    functionSourceFile: /src/opendal/bindings/ruby/src/io.rs
    functionUses: 0
    functionsReached:
    - map_err
    - anyhow::Result::stream_position
    - Ok
    - exception_runtime_error
    - Err
    - Error::new
    - borrow_mut
    - format_io_error
    linkageType: ''
    returnType: Result
    signature: 'fn tell(ruby: &Ruby, rb_self: &Self) -> Result<u64, Error>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Error::new
      Src: /src/opendal/bindings/ruby/src/lib.rs:45,1
    - Dst: exception_runtime_error
      Src: /src/opendal/bindings/ruby/src/lib.rs:45,1
    - Dst: Error::to_string
      Src: /src/opendal/bindings/ruby/src/lib.rs:45,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - ruby
    - err
    argTypes:
    - '&Ruby'
    - ocore::Error
    constantsTouched: []
    func_position:
      end: 46
      start: 44
    functionDepth: 36
    functionLinenumber: 44
    functionLinenumberEnd: 46
    functionName: format_magnus_error
    functionSourceFile: /src/opendal/bindings/ruby/src/lib.rs
    functionUses: 1
    functionsReached:
    - Error::to_string
    - exception_runtime_error
    - Error::new
    linkageType: ''
    returnType: Error
    signature: 'pub fn format_magnus_error(ruby: &Ruby, err: ocore::Error) -> Error'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: define_module
      Src: /src/opendal/bindings/ruby/src/lib.rs:51,1
    - Dst: operator::include
      Src: /src/opendal/bindings/ruby/src/lib.rs:52,1
    - Dst: metadata::include
      Src: /src/opendal/bindings/ruby/src/lib.rs:53,1
    - Dst: capability::include
      Src: /src/opendal/bindings/ruby/src/lib.rs:54,1
    - Dst: io::include
      Src: /src/opendal/bindings/ruby/src/lib.rs:55,1
    - Dst: lister::include
      Src: /src/opendal/bindings/ruby/src/lib.rs:56,1
    - Dst: operator_info::include
      Src: /src/opendal/bindings/ruby/src/lib.rs:57,1
    - Dst: define_module
      Src: /src/opendal/bindings/ruby/src/lib.rs:59,1
    - Dst: middlewares::include
      Src: /src/opendal/bindings/ruby/src/lib.rs:60,1
    - Dst: Ok
      Src: /src/opendal/bindings/ruby/src/lib.rs:62,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 22
    argCount: 1
    argNames:
    - ruby
    argTypes:
    - '&Ruby'
    constantsTouched: []
    func_position:
      end: 63
      start: 50
    functionDepth: 2
    functionLinenumber: 50
    functionLinenumberEnd: 63
    functionName: init
    functionSourceFile: /src/opendal/bindings/ruby/src/lib.rs
    functionUses: 18
    functionsReached:
    - define_module
    - capability::include
    - Ok
    - metadata::include
    - middlewares::include
    - operator::include
    - lister::include
    - io::include
    - operator_info::include
    linkageType: ''
    returnType: Result
    signature: 'fn init(ruby: &Ruby) -> Result<(), Error>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Arc::lock
      Src: /src/opendal/bindings/ruby/src/middlewares.rs:50,1
    - Dst: Result::map_err
      Src: /src/opendal/bindings/ruby/src/middlewares.rs:50,1
    - Dst: Error::new
      Src: /src/opendal/bindings/ruby/src/middlewares.rs:51,1
    - Dst: exception_runtime_error
      Src: /src/opendal/bindings/ruby/src/middlewares.rs:52,1
    - Dst: clone
      Src: /src/opendal/bindings/ruby/src/middlewares.rs:57,1
    - Dst: layer
      Src: /src/opendal/bindings/ruby/src/middlewares.rs:57,1
    - Dst: clone
      Src: /src/opendal/bindings/ruby/src/middlewares.rs:57,1
    - Dst: Ok
      Src: /src/opendal/bindings/ruby/src/middlewares.rs:59,1
    - Dst: Operator::from_operator
      Src: /src/opendal/bindings/ruby/src/middlewares.rs:59,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 18
    argCount: 4
    argNames:
    - ruby
    - inner
    - operator
    - name
    argTypes:
    - '&Ruby'
    - '&Arc<Mutex<T>>'
    - '&Operator'
    - '&''static str'
    constantsTouched: []
    func_position:
      end: 60
      start: 41
    functionDepth: 33
    functionLinenumber: 41
    functionLinenumberEnd: 60
    functionName: apply_layer
    functionSourceFile: /src/opendal/bindings/ruby/src/middlewares.rs
    functionUses: 4
    functionsReached:
    - Result::map_err
    - Ok
    - clone
    - Arc::lock
    - exception_runtime_error
    - Error::new
    - Operator::from_operator
    - layer
    linkageType: ''
    returnType: Result
    signature: 'fn apply_layer<T>(ruby: &Ruby,inner: &Arc<Mutex<T>>,operator: &Operator,name:
      &''static str,) -> Result<Operator, Error>whereT: OCoreLayer + Clone + Send
      + Sync + ''static,'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self
      Src: /src/opendal/bindings/ruby/src/middlewares.rs:71,1
    - Dst: Arc::new
      Src: /src/opendal/bindings/ruby/src/middlewares.rs:71,1
    - Dst: Mutex::new
      Src: /src/opendal/bindings/ruby/src/middlewares.rs:71,1
    - Dst: ocore::layers::RetryLayer::default
      Src: /src/opendal/bindings/ruby/src/middlewares.rs:71,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 72
      start: 70
    functionDepth: 2
    functionLinenumber: 70
    functionLinenumberEnd: 72
    functionName: RetryMiddleware::new
    functionSourceFile: /src/opendal/bindings/ruby/src/middlewares.rs
    functionUses: 0
    functionsReached:
    - Self
    - Arc::new
    - ocore::layers::RetryLayer::default
    - Mutex::new
    linkageType: ''
    returnType: Self
    signature: fn new() -> Self
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: apply_layer
      Src: /src/opendal/bindings/ruby/src/middlewares.rs:75,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - ruby
    - rb_self
    - operator
    argTypes:
    - '&Ruby'
    - '&Self'
    - '&Operator'
    constantsTouched: []
    func_position:
      end: 76
      start: 74
    functionDepth: 34
    functionLinenumber: 74
    functionLinenumberEnd: 76
    functionName: RetryMiddleware::apply_to
    functionSourceFile: /src/opendal/bindings/ruby/src/middlewares.rs
    functionUses: 0
    functionsReached:
    - apply_layer
    linkageType: ''
    returnType: Result
    signature: 'fn apply_to(ruby: &Ruby, rb_self: &Self, operator: &Operator) -> Result<Operator,
      Error>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self
      Src: /src/opendal/bindings/ruby/src/middlewares.rs:88,1
    - Dst: Arc::new
      Src: /src/opendal/bindings/ruby/src/middlewares.rs:88,1
    - Dst: Mutex::new
      Src: /src/opendal/bindings/ruby/src/middlewares.rs:88,1
    - Dst: ocore::layers::ConcurrentLimitLayer::new
      Src: /src/opendal/bindings/ruby/src/middlewares.rs:89,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - permits
    argTypes:
    - usize
    constantsTouched: []
    func_position:
      end: 91
      start: 87
    functionDepth: 2
    functionLinenumber: 87
    functionLinenumberEnd: 91
    functionName: ConcurrentLimitMiddleware::new
    functionSourceFile: /src/opendal/bindings/ruby/src/middlewares.rs
    functionUses: 0
    functionsReached:
    - Self
    - ocore::layers::ConcurrentLimitLayer::new
    - Arc::new
    - Mutex::new
    linkageType: ''
    returnType: Self
    signature: 'fn new(permits: usize) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: apply_layer
      Src: /src/opendal/bindings/ruby/src/middlewares.rs:94,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - ruby
    - rb_self
    - operator
    argTypes:
    - '&Ruby'
    - '&Self'
    - '&Operator'
    constantsTouched: []
    func_position:
      end: 100
      start: 93
    functionDepth: 34
    functionLinenumber: 93
    functionLinenumberEnd: 100
    functionName: ConcurrentLimitMiddleware::apply_to
    functionSourceFile: /src/opendal/bindings/ruby/src/middlewares.rs
    functionUses: 0
    functionsReached:
    - apply_layer
    linkageType: ''
    returnType: Result
    signature: 'fn apply_to(ruby: &Ruby, rb_self: &Self, operator: &Operator) -> Result<Operator,
      Error>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self
      Src: /src/opendal/bindings/ruby/src/middlewares.rs:112,1
    - Dst: Arc::new
      Src: /src/opendal/bindings/ruby/src/middlewares.rs:112,1
    - Dst: Mutex::new
      Src: /src/opendal/bindings/ruby/src/middlewares.rs:112,1
    - Dst: ocore::layers::ThrottleLayer::new
      Src: /src/opendal/bindings/ruby/src/middlewares.rs:112,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - bandwidth
    - burst
    argTypes:
    - u32
    - u32
    constantsTouched: []
    func_position:
      end: 115
      start: 111
    functionDepth: 2
    functionLinenumber: 111
    functionLinenumberEnd: 115
    functionName: ThrottleMiddleware::new
    functionSourceFile: /src/opendal/bindings/ruby/src/middlewares.rs
    functionUses: 0
    functionsReached:
    - Self
    - Arc::new
    - Mutex::new
    - ocore::layers::ThrottleLayer::new
    linkageType: ''
    returnType: Self
    signature: 'fn new(bandwidth: u32, burst: u32) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: apply_layer
      Src: /src/opendal/bindings/ruby/src/middlewares.rs:118,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - ruby
    - rb_self
    - operator
    argTypes:
    - '&Ruby'
    - '&Self'
    - '&Operator'
    constantsTouched: []
    func_position:
      end: 119
      start: 117
    functionDepth: 34
    functionLinenumber: 117
    functionLinenumberEnd: 119
    functionName: ThrottleMiddleware::apply_to
    functionSourceFile: /src/opendal/bindings/ruby/src/middlewares.rs
    functionUses: 0
    functionsReached:
    - apply_layer
    linkageType: ''
    returnType: Result
    signature: 'fn apply_to(ruby: &Ruby, rb_self: &Self, operator: &Operator) -> Result<Operator,
      Error>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Duration::try_from_secs_f64
      Src: /src/opendal/bindings/ruby/src/middlewares.rs:123,1
    - Dst: map_err
      Src: /src/opendal/bindings/ruby/src/middlewares.rs:123,1
    - Dst: Error::new
      Src: /src/opendal/bindings/ruby/src/middlewares.rs:124,1
    - Dst: exception_arg_error
      Src: /src/opendal/bindings/ruby/src/middlewares.rs:125,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 2
    argNames:
    - ruby
    - val
    argTypes:
    - '&Ruby'
    - f64
    constantsTouched: []
    func_position:
      end: 129
      start: 122
    functionDepth: 36
    functionLinenumber: 122
    functionLinenumberEnd: 129
    functionName: parse_duration
    functionSourceFile: /src/opendal/bindings/ruby/src/middlewares.rs
    functionUses: 1
    functionsReached:
    - map_err
    - exception_arg_error
    - Duration::try_from_secs_f64
    - Error::new
    linkageType: ''
    returnType: Result
    signature: 'fn parse_duration(ruby: &Ruby, val: f64) -> Result<Duration, Error>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: ocore::layers::TimeoutLayer::new
      Src: /src/opendal/bindings/ruby/src/middlewares.rs:140,1
    - Dst: Self::with_timeout
      Src: /src/opendal/bindings/ruby/src/middlewares.rs:140,1
    - Dst: parse_duration
      Src: /src/opendal/bindings/ruby/src/middlewares.rs:141,1
    - Dst: Self::with_io_timeout
      Src: /src/opendal/bindings/ruby/src/middlewares.rs:140,1
    - Dst: parse_duration
      Src: /src/opendal/bindings/ruby/src/middlewares.rs:142,1
    - Dst: Ok
      Src: /src/opendal/bindings/ruby/src/middlewares.rs:143,1
    - Dst: Self
      Src: /src/opendal/bindings/ruby/src/middlewares.rs:143,1
    - Dst: Arc::new
      Src: /src/opendal/bindings/ruby/src/middlewares.rs:143,1
    - Dst: Mutex::new
      Src: /src/opendal/bindings/ruby/src/middlewares.rs:143,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 3
    argNames:
    - ruby
    - timeout
    - io_timeout
    argTypes:
    - '&Ruby'
    - f64
    - f64
    constantsTouched: []
    func_position:
      end: 144
      start: 139
    functionDepth: 37
    functionLinenumber: 139
    functionLinenumberEnd: 144
    functionName: TimeoutMiddleware::new
    functionSourceFile: /src/opendal/bindings/ruby/src/middlewares.rs
    functionUses: 0
    functionsReached:
    - Ok
    - Self::with_timeout
    - ocore::layers::TimeoutLayer::new
    - Self::with_io_timeout
    - Arc::new
    - Self
    - parse_duration
    - Mutex::new
    linkageType: ''
    returnType: Result
    signature: 'fn new(ruby: &Ruby, timeout: f64, io_timeout: f64) -> Result<Self,
      Error>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: apply_layer
      Src: /src/opendal/bindings/ruby/src/middlewares.rs:147,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - ruby
    - rb_self
    - operator
    argTypes:
    - '&Ruby'
    - '&Self'
    - '&Operator'
    constantsTouched: []
    func_position:
      end: 148
      start: 146
    functionDepth: 34
    functionLinenumber: 146
    functionLinenumberEnd: 148
    functionName: TimeoutMiddleware::apply_to
    functionSourceFile: /src/opendal/bindings/ruby/src/middlewares.rs
    functionUses: 0
    functionsReached:
    - apply_layer
    linkageType: ''
    returnType: Result
    signature: 'fn apply_to(ruby: &Ruby, rb_self: &Self, operator: &Operator) -> Result<Operator,
      Error>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: handle
      Src: /src/opendal/bindings/ruby/src/operator.rs:72,1
    - Dst: enter
      Src: /src/opendal/bindings/ruby/src/operator.rs:73,1
    - Dst: ocore::blocking::Operator::new
      Src: /src/opendal/bindings/ruby/src/operator.rs:74,1
    - Dst: Result::clone
      Src: /src/opendal/bindings/ruby/src/operator.rs:74,1
    - Dst: Result::expect
      Src: /src/opendal/bindings/ruby/src/operator.rs:74,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 1
    argNames:
    - operator
    argTypes:
    - ocore::Operator
    constantsTouched: []
    func_position:
      end: 81
      start: 71
    functionDepth: 38
    functionLinenumber: 71
    functionLinenumberEnd: 81
    functionName: Operator::from_operator
    functionSourceFile: /src/opendal/bindings/ruby/src/operator.rs
    functionUses: 1
    functionsReached:
    - Result::clone
    - Result::expect
    - ocore::blocking::Operator::new
    - handle
    - enter
    linkageType: ''
    returnType: Operator
    signature: 'pub(crate) fn from_operator(operator: ocore::Operator) -> Operator'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/bindings/nodejs/src/lib.rs:101,1
    - Dst: capability::Capability::new
      Src: /src/opendal/bindings/nodejs/src/lib.rs:101,1
    - Dst: info
      Src: /src/opendal/bindings/nodejs/src/lib.rs:102,1
    - Dst: capability
      Src: /src/opendal/bindings/nodejs/src/lib.rs:102,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 104
      start: 100
    functionDepth: 2
    functionLinenumber: 100
    functionLinenumberEnd: 104
    functionName: Operator::capability
    functionSourceFile: /src/opendal/bindings/nodejs/src/lib.rs
    functionUses: 0
    functionsReached:
    - capability::Capability::new
    - info
    - Ok
    - capability
    linkageType: ''
    returnType: Result
    signature: pub fn capability(&self) -> Result<capability::Capability>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: clone
      Src: /src/opendal/bindings/python/src/operator.rs:243,1
    - Dst: to_string_lossy
      Src: /src/opendal/bindings/python/src/operator.rs:244,1
    - Dst: to_string
      Src: /src/opendal/bindings/python/src/operator.rs:244,1
    - Dst: PyResult::map
      Src: /src/opendal/bindings/python/src/operator.rs:246,1
    - Dst: extract::<ReadOptions>
      Src: /src/opendal/bindings/python/src/operator.rs:247,1
    - Dst: Result::transpose
      Src: /src/opendal/bindings/python/src/operator.rs:246,1
    - Dst: unwrap_or_default
      Src: /src/opendal/bindings/python/src/operator.rs:246,1
    - Dst: PyResult::map
      Src: /src/opendal/bindings/python/src/operator.rs:251,1
    - Dst: extract::<WriteOptions>
      Src: /src/opendal/bindings/python/src/operator.rs:252,1
    - Dst: Result::transpose
      Src: /src/opendal/bindings/python/src/operator.rs:251,1
    - Dst: unwrap_or_default
      Src: /src/opendal/bindings/python/src/operator.rs:251,1
    - Dst: make_range
      Src: /src/opendal/bindings/python/src/operator.rs:257,1
    - Dst: reader_options
      Src: /src/opendal/bindings/python/src/operator.rs:258,1
    - Dst: into
      Src: /src/opendal/bindings/python/src/operator.rs:259,1
    - Dst: map_err
      Src: /src/opendal/bindings/python/src/operator.rs:258,1
    - Dst: anyhow::Result::into_std_read
      Src: /src/opendal/bindings/python/src/operator.rs:262,1
    - Dst: (Vec::to_range
      Src: /src/opendal/bindings/python/src/operator.rs:263,1
    - Dst: Result::map_err
      Src: /src/opendal/bindings/python/src/operator.rs:262,1
    - Dst: Ok
      Src: /src/opendal/bindings/python/src/operator.rs:265,1
    - Dst: File::new_reader
      Src: /src/opendal/bindings/python/src/operator.rs:265,1
    - Dst: writer_options
      Src: /src/opendal/bindings/python/src/operator.rs:267,1
    - Dst: into
      Src: /src/opendal/bindings/python/src/operator.rs:268,1
    - Dst: map_err
      Src: /src/opendal/bindings/python/src/operator.rs:267,1
    - Dst: Ok
      Src: /src/opendal/bindings/python/src/operator.rs:270,1
    - Dst: File::new_writer
      Src: /src/opendal/bindings/python/src/operator.rs:270,1
    - Dst: Err
      Src: /src/opendal/bindings/python/src/operator.rs:272,1
    - Dst: Unsupported::new_err
      Src: /src/opendal/bindings/python/src/operator.rs:272,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 63
    argCount: 3
    argNames:
    - path
    - mode
    - kwargs
    argTypes:
    - PathBuf
    - String
    - Option<&Bound<PyDict>>
    constantsTouched: []
    func_position:
      end: 276
      start: 237
    functionDepth: 35
    functionLinenumber: 237
    functionLinenumberEnd: 276
    functionName: Operator::open
    functionSourceFile: /src/opendal/bindings/python/src/operator.rs
    functionUses: 0
    functionsReached:
    - (Vec::to_range
    - Unsupported::new_err
    - into
    - clone
    - extract::<ReadOptions>
    - map_err
    - Ok
    - PyResult::map
    - reader_options
    - anyhow::Result::into_std_read
    - Result::transpose
    - unwrap_or_default
    - Result::map_err
    - make_range
    - writer_options
    - to_string
    - File::new_reader
    - File::new_writer
    - Err
    - extract::<WriteOptions>
    - to_string_lossy
    linkageType: ''
    returnType: PyResult
    signature: 'pub fn open(&self,path: PathBuf,mode: String,kwargs: Option<&Bound<PyDict>>,)
      -> PyResult<File>'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 36
      start: 26
    functionDepth: 0
    functionLinenumber: 26
    functionLinenumberEnd: 36
    functionName: define_accessors
    functionSourceFile: /src/opendal/bindings/ruby/src/capability.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: ''
    signature: ''
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: define_method
      Src: /src/opendal/bindings/ruby/src/capability.rs:3,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 43
      start: 37
    functionDepth: 0
    functionLinenumber: 37
    functionLinenumberEnd: 43
    functionName: bind_methods_to_ruby
    functionSourceFile: /src/opendal/bindings/ruby/src/capability.rs
    functionUses: 1
    functionsReached:
    - define_method
    linkageType: ''
    returnType: ''
    signature: ''
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: unwrap_or
      Src: /src/opendal/bindings/dotnet/src/capability.rs:126,1
    - Dst: unwrap_or
      Src: /src/opendal/bindings/dotnet/src/capability.rs:127,1
    - Dst: unwrap_or
      Src: /src/opendal/bindings/dotnet/src/capability.rs:128,1
    - Dst: unwrap_or
      Src: /src/opendal/bindings/dotnet/src/capability.rs:133,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 63
    argCount: 1
    argNames:
    - cap
    argTypes:
    - opendal::Capability
    constantsTouched: []
    func_position:
      end: 151
      start: 94
    functionDepth: 0
    functionLinenumber: 94
    functionLinenumberEnd: 151
    functionName: Capability::new
    functionSourceFile: /src/opendal/bindings/dotnet/src/capability.rs
    functionUses: 4
    functionsReached:
    - unwrap_or
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(cap: opendal::Capability) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: path
      Src: /src/opendal/bindings/python/src/metadata.rs:57,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 58
      start: 56
    functionDepth: 34
    functionLinenumber: 56
    functionLinenumberEnd: 58
    functionName: Entry::__str__
    functionSourceFile: /src/opendal/bindings/python/src/metadata.rs
    functionUses: 0
    functionsReached:
    - path
    linkageType: ''
    returnType: '&str'
    signature: fn __str__(&self) -> &str
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 65
      start: 59
    functionDepth: 0
    functionLinenumber: 59
    functionLinenumberEnd: 65
    functionName: Entry::__repr__
    functionSourceFile: /src/opendal/bindings/python/src/metadata.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: String
    signature: fn __repr__(&self) -> String
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: (String, Metadata)::push
      Src: /src/opendal/bindings/python/src/metadata.rs:163,1
    - Dst: (String, Metadata)::push
      Src: /src/opendal/bindings/python/src/metadata.rs:164,1
    - Dst: (String, Metadata)::push
      Src: /src/opendal/bindings/python/src/metadata.rs:168,1
    - Dst: (String, Metadata)::push
      Src: /src/opendal/bindings/python/src/metadata.rs:169,1
    - Dst: (String, Metadata)::push
      Src: /src/opendal/bindings/python/src/metadata.rs:170,1
    - Dst: (String, Metadata)::push
      Src: /src/opendal/bindings/python/src/metadata.rs:171,1
    - Dst: (String, Metadata)::push
      Src: /src/opendal/bindings/python/src/metadata.rs:172,1
    - Dst: (String, Metadata)::push
      Src: /src/opendal/bindings/python/src/metadata.rs:173,1
    - Dst: (String, Metadata)::push
      Src: /src/opendal/bindings/python/src/metadata.rs:174,1
    - Dst: (String, Metadata)::push
      Src: /src/opendal/bindings/python/src/metadata.rs:175,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 30
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 178
      start: 160
    functionDepth: 5
    functionLinenumber: 160
    functionLinenumberEnd: 178
    functionName: Metadata::__repr__
    functionSourceFile: /src/opendal/bindings/python/src/metadata.rs
    functionUses: 0
    functionsReached:
    - (String, Metadata)::push
    linkageType: ''
    returnType: String
    signature: pub fn __repr__(&self) -> String
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - mode
    argTypes:
    - ocore::EntryMode
    constantsTouched: []
    func_position:
      end: 210
      start: 204
    functionDepth: 0
    functionLinenumber: 204
    functionLinenumberEnd: 210
    functionName: EntryMode::new
    functionSourceFile: /src/opendal/bindings/python/src/metadata.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(mode: ocore::EntryMode) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self
      Src: /src/opendal/bindings/python/src/lister.rs:35,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - inner
    argTypes:
    - ocore::blocking::Lister
    constantsTouched: []
    func_position:
      end: 36
      start: 34
    functionDepth: 0
    functionLinenumber: 34
    functionLinenumberEnd: 36
    functionName: BlockingLister::new
    functionSourceFile: /src/opendal/bindings/python/src/lister.rs
    functionUses: 0
    functionsReached:
    - Self
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(inner: ocore::blocking::Lister) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 1
    argNames:
    - slf
    argTypes:
    - PyRef<'_, Self>
    constantsTouched: []
    func_position:
      end: 43
      start: 41
    functionDepth: 0
    functionLinenumber: 41
    functionLinenumberEnd: 43
    functionName: BlockingLister::__iter__
    functionSourceFile: /src/opendal/bindings/python/src/lister.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: PyRef
    signature: 'fn __iter__(slf: PyRef<''_, Self>) -> PyRef<''_, Self>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: next
      Src: /src/opendal/bindings/python/src/lister.rs:45,1
    - Dst: Ok
      Src: /src/opendal/bindings/python/src/lister.rs:46,1
    - Dst: Some
      Src: /src/opendal/bindings/python/src/lister.rs:46,1
    - Dst: Entry::new
      Src: /src/opendal/bindings/python/src/lister.rs:46,1
    - Dst: Self::into_py_any
      Src: /src/opendal/bindings/python/src/lister.rs:46,1
    - Dst: PyRefMut<'_, Self>::py
      Src: /src/opendal/bindings/python/src/lister.rs:46,1
    - Dst: format_pyerr
      Src: /src/opendal/bindings/python/src/lister.rs:48,1
    - Dst: Err
      Src: /src/opendal/bindings/python/src/lister.rs:49,1
    - Dst: Ok
      Src: /src/opendal/bindings/python/src/lister.rs:51,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 16
    argCount: 1
    argNames:
    - slf
    argTypes:
    - PyRefMut<'_, Self>
    constantsTouched: []
    func_position:
      end: 53
      start: 44
    functionDepth: 34
    functionLinenumber: 44
    functionLinenumberEnd: 53
    functionName: BlockingLister::__next__
    functionSourceFile: /src/opendal/bindings/python/src/lister.rs
    functionUses: 0
    functionsReached:
    - next
    - Entry::new
    - Self::into_py_any
    - Ok
    - PyRefMut<'_, Self>::py
    - Some
    - Err
    - format_pyerr
    linkageType: ''
    returnType: PyResult
    signature: 'fn __next__(mut slf: PyRefMut<''_, Self>) -> PyResult<Option<Py<PyAny>>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self
      Src: /src/opendal/bindings/python/src/lister.rs:61,1
    - Dst: Arc::new
      Src: /src/opendal/bindings/python/src/lister.rs:61,1
    - Dst: Mutex::new
      Src: /src/opendal/bindings/python/src/lister.rs:61,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - lister
    argTypes:
    - ocore::Lister
    constantsTouched: []
    func_position:
      end: 62
      start: 60
    functionDepth: 2
    functionLinenumber: 60
    functionLinenumberEnd: 62
    functionName: AsyncLister::new
    functionSourceFile: /src/opendal/bindings/python/src/lister.rs
    functionUses: 1
    functionsReached:
    - Self
    - Arc::new
    - Mutex::new
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(lister: ocore::Lister) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 1
    argNames:
    - slf
    argTypes:
    - PyRef<'_, Self>
    constantsTouched: []
    func_position:
      end: 69
      start: 67
    functionDepth: 0
    functionLinenumber: 67
    functionLinenumberEnd: 69
    functionName: AsyncLister::__aiter__
    functionSourceFile: /src/opendal/bindings/python/src/lister.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: PyRef
    signature: 'fn __aiter__(slf: PyRef<''_, Self>) -> PyRef<''_, Self>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: clone
      Src: /src/opendal/bindings/python/src/lister.rs:71,1
    - Dst: pyo3_async_runtimes::tokio::future_into_py
      Src: /src/opendal/bindings/python/src/lister.rs:72,1
    - Dst: PyRefMut<'_, Self>::py
      Src: /src/opendal/bindings/python/src/lister.rs:72,1
    - Dst: Result::lock
      Src: /src/opendal/bindings/python/src/lister.rs:73,1
    - Dst: Result::try_next
      Src: /src/opendal/bindings/python/src/lister.rs:74,1
    - Dst: map_err
      Src: /src/opendal/bindings/python/src/lister.rs:74,1
    - Dst: Python::attach
      Src: /src/opendal/bindings/python/src/lister.rs:76,1
    - Dst: Entry::new
      Src: /src/opendal/bindings/python/src/lister.rs:77,1
    - Dst: Self::into_py_any
      Src: /src/opendal/bindings/python/src/lister.rs:77,1
    - Dst: Ok
      Src: /src/opendal/bindings/python/src/lister.rs:78,1
    - Dst: Some
      Src: /src/opendal/bindings/python/src/lister.rs:78,1
    - Dst: Err
      Src: /src/opendal/bindings/python/src/lister.rs:80,1
    - Dst: PyStopAsyncIteration::new_err
      Src: /src/opendal/bindings/python/src/lister.rs:80,1
    - Dst: Ok
      Src: /src/opendal/bindings/python/src/lister.rs:85,1
    - Dst: Some
      Src: /src/opendal/bindings/python/src/lister.rs:85,1
    - Dst: into
      Src: /src/opendal/bindings/python/src/lister.rs:85,1
    - Dst: Err
      Src: /src/opendal/bindings/python/src/lister.rs:86,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 34
    argCount: 1
    argNames:
    - slf
    argTypes:
    - PyRefMut<'_, Self>
    constantsTouched: []
    func_position:
      end: 88
      start: 70
    functionDepth: 34
    functionLinenumber: 70
    functionLinenumberEnd: 88
    functionName: AsyncLister::__anext__
    functionSourceFile: /src/opendal/bindings/python/src/lister.rs
    functionUses: 0
    functionsReached:
    - map_err
    - Result::try_next
    - Entry::new
    - pyo3_async_runtimes::tokio::future_into_py
    - Self::into_py_any
    - Ok
    - PyRefMut<'_, Self>::py
    - Result::lock
    - clone
    - PyStopAsyncIteration::new_err
    - Some
    - Err
    - into
    - Python::attach
    linkageType: ''
    returnType: PyResult
    signature: 'fn __anext__(slf: PyRefMut<''_, Self>) -> PyResult<Option<Py<PyAny>>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Buffer::into_py_any
      Src: /src/opendal/bindings/python/src/utils.rs:37,1
    - Dst: Bound::from_owned_ptr_or_err
      Src: /src/opendal/bindings/python/src/utils.rs:40,1
    - Dst: ffi::PyBytes_FromObject
      Src: /src/opendal/bindings/python/src/utils.rs:40,1
    - Dst: as_ptr
      Src: /src/opendal/bindings/python/src/utils.rs:40,1
    - Dst: map
      Src: /src/opendal/bindings/python/src/utils.rs:40,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - py
    argTypes:
    - Python
    constantsTouched: []
    func_position:
      end: 43
      start: 36
    functionDepth: 1
    functionLinenumber: 36
    functionLinenumberEnd: 43
    functionName: Buffer::into_bytes
    functionSourceFile: /src/opendal/bindings/python/src/utils.rs
    functionUses: 0
    functionsReached:
    - ffi::PyBytes_FromObject
    - Buffer::into_py_any
    - Bound::from_owned_ptr_or_err
    - as_ptr
    - map
    linkageType: ''
    returnType: PyResult
    signature: 'pub fn into_bytes(self, py: Python) -> PyResult<Py<PyAny>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Buffer::into_py_any
      Src: /src/opendal/bindings/python/src/utils.rs:47,1
    - Dst: Bound::from_owned_ptr_or_err
      Src: /src/opendal/bindings/python/src/utils.rs:49,1
    - Dst: ffi::PyBytes_FromObject
      Src: /src/opendal/bindings/python/src/utils.rs:49,1
    - Dst: as_ptr
      Src: /src/opendal/bindings/python/src/utils.rs:49,1
    - Dst: Ok
      Src: /src/opendal/bindings/python/src/utils.rs:51,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 1
    argNames:
    - py
    argTypes:
    - Python
    constantsTouched: []
    func_position:
      end: 52
      start: 46
    functionDepth: 0
    functionLinenumber: 46
    functionLinenumberEnd: 52
    functionName: Buffer::into_bytes_ref
    functionSourceFile: /src/opendal/bindings/python/src/utils.rs
    functionUses: 0
    functionsReached:
    - ffi::PyBytes_FromObject
    - Ok
    - Buffer::into_py_any
    - Bound::from_owned_ptr_or_err
    - as_ptr
    linkageType: ''
    returnType: PyResult
    signature: 'pub fn into_bytes_ref(self, py: Python) -> PyResult<Bound<PyAny>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: as_slice
      Src: /src/opendal/bindings/python/src/utils.rs:62,1
    - Dst: ffi::PyBuffer_FillInfo
      Src: /src/opendal/bindings/python/src/utils.rs:64,1
    - Dst: PyRefMut<Self>::as_ptr
      Src: /src/opendal/bindings/python/src/utils.rs:66,1
    - Dst: Bytes::as_ptr
      Src: /src/opendal/bindings/python/src/utils.rs:67,1
    - Dst: Bytes::len
      Src: /src/opendal/bindings/python/src/utils.rs:68,1
    - Dst: usize::try_into
      Src: /src/opendal/bindings/python/src/utils.rs:68,1
    - Dst: unwrap
      Src: /src/opendal/bindings/python/src/utils.rs:68,1
    - Dst: Err
      Src: /src/opendal/bindings/python/src/utils.rs:74,1
    - Dst: PyErr::fetch
      Src: /src/opendal/bindings/python/src/utils.rs:74,1
    - Dst: PyRefMut<Self>::py
      Src: /src/opendal/bindings/python/src/utils.rs:74,1
    - Dst: Ok
      Src: /src/opendal/bindings/python/src/utils.rs:76,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 28
    argCount: 3
    argNames:
    - slf
    - view
    - flags
    argTypes:
    - PyRefMut<Self>
    - '*mut ffi::Py_buffer'
    - c_int
    constantsTouched: []
    func_position:
      end: 77
      start: 57
    functionDepth: 35
    functionLinenumber: 57
    functionLinenumberEnd: 77
    functionName: Buffer::__getbuffer__
    functionSourceFile: /src/opendal/bindings/python/src/utils.rs
    functionUses: 0
    functionsReached:
    - Bytes::as_ptr
    - Ok
    - unwrap
    - Err
    - PyRefMut<Self>::as_ptr
    - Bytes::len
    - PyErr::fetch
    - usize::try_into
    - ffi::PyBuffer_FillInfo
    - PyRefMut<Self>::py
    - as_slice
    linkageType: ''
    returnType: PyResult
    signature: 'unsafe fn __getbuffer__(slf: PyRefMut<Self>,view: *mut ffi::Py_buffer,flags:
      c_int,) -> PyResult<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: ModuleBuilder::py
      Src: /src/opendal/bindings/python/src/utils.rs:87,1
    - Dst: Result::import
      Src: /src/opendal/bindings/python/src/utils.rs:87,1
    - Dst: getattr
      Src: /src/opendal/bindings/python/src/utils.rs:87,1
    - Dst: ModuleBuilder::index
      Src: /src/opendal/bindings/python/src/utils.rs:88,1
    - Dst: extract
      Src: /src/opendal/bindings/python/src/utils.rs:89,1
    - Dst: ModuleBuilder::getattr
      Src: /src/opendal/bindings/python/src/utils.rs:90,1
    - Dst: cast::<PyModule>
      Src: /src/opendal/bindings/python/src/utils.rs:91,1
    - Dst: setattr
      Src: /src/opendal/bindings/python/src/utils.rs:93,1
    - Dst: set_item
      Src: /src/opendal/bindings/python/src/utils.rs:94,1
    - Dst: register_submodules
      Src: /src/opendal/bindings/python/src/utils.rs:95,1
    - Dst: Ok
      Src: /src/opendal/bindings/python/src/utils.rs:98,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 40
    argCount: 2
    argNames:
    - module
    - parent_name
    argTypes:
    - '&Bound<''_, PyModule>'
    - '&str'
    constantsTouched: []
    func_position:
      end: 99
      start: 86
    functionDepth: 34
    functionLinenumber: 86
    functionLinenumberEnd: 99
    functionName: register_submodules
    functionSourceFile: /src/opendal/bindings/python/src/utils.rs
    functionUses: 2
    functionsReached:
    - ModuleBuilder::index
    - Ok
    - setattr
    - getattr
    - extract
    - ModuleBuilder::getattr
    - Result::import
    - cast::<PyModule>
    - register_submodules
    - ModuleBuilder::py
    - set_item
    linkageType: ''
    returnType: PyResult
    signature: 'pub fn register_submodules(module: &Bound<''_, PyModule>, parent_name:
      &str) -> PyResult<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: add
      Src: /src/opendal/bindings/python/src/utils.rs:3,1
    - Dst: py
      Src: /src/opendal/bindings/python/src/utils.rs:3,1
    - Dst: py().get_type::<$exc>
      Src: /src/opendal/bindings/python/src/utils.rs:3,1
    - Dst: Ok::<_, pyo3::PyErr>
      Src: /src/opendal/bindings/python/src/utils.rs:5,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 113
      start: 106
    functionDepth: 34
    functionLinenumber: 106
    functionLinenumberEnd: 113
    functionName: add_exceptions
    functionSourceFile: /src/opendal/bindings/python/src/utils.rs
    functionUses: 0
    functionsReached:
    - py
    - Ok::<_, pyo3::PyErr>
    - py().get_type::<$exc>
    - add
    linkageType: ''
    returnType: ''
    signature: ''
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self
      Src: /src/opendal/bindings/python/src/file.rs:53,1
    - Dst: FileState::Reader
      Src: /src/opendal/bindings/python/src/file.rs:53,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - reader
    argTypes:
    - ocore::blocking::StdReader
    constantsTouched: []
    func_position:
      end: 54
      start: 52
    functionDepth: 32
    functionLinenumber: 52
    functionLinenumberEnd: 54
    functionName: File::new_reader
    functionSourceFile: /src/opendal/bindings/python/src/file.rs
    functionUses: 2
    functionsReached:
    - Self
    - FileState::Reader
    linkageType: ''
    returnType: Self
    signature: 'pub fn new_reader(reader: ocore::blocking::StdReader) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self
      Src: /src/opendal/bindings/python/src/file.rs:57,1
    - Dst: FileState::Writer
      Src: /src/opendal/bindings/python/src/file.rs:57,1
    - Dst: Result::into_std_write
      Src: /src/opendal/bindings/python/src/file.rs:57,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - writer
    argTypes:
    - ocore::blocking::Writer
    constantsTouched: []
    func_position:
      end: 58
      start: 56
    functionDepth: 32
    functionLinenumber: 56
    functionLinenumberEnd: 58
    functionName: File::new_writer
    functionSourceFile: /src/opendal/bindings/python/src/file.rs
    functionUses: 2
    functionsReached:
    - Self
    - Result::into_std_write
    - FileState::Writer
    linkageType: ''
    returnType: Self
    signature: 'pub fn new_writer(writer: ocore::blocking::Writer) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/bindings/python/src/file.rs:89,1
    - Dst: PyIOError::new_err
      Src: /src/opendal/bindings/python/src/file.rs:89,1
    - Dst: Err
      Src: /src/opendal/bindings/python/src/file.rs:94,1
    - Dst: PyIOError::new_err
      Src: /src/opendal/bindings/python/src/file.rs:94,1
    - Dst: anyhow::Result::read
      Src: /src/opendal/bindings/python/src/file.rs:103,1
    - Dst: Result::map_err
      Src: /src/opendal/bindings/python/src/file.rs:103,1
    - Dst: PyIOError::new_err
      Src: /src/opendal/bindings/python/src/file.rs:105,1
    - Dst: Error::to_string
      Src: /src/opendal/bindings/python/src/file.rs:105,1
    - Dst: Result::truncate
      Src: /src/opendal/bindings/python/src/file.rs:106,1
    - Dst: Vec::new
      Src: /src/opendal/bindings/python/src/file.rs:110,1
    - Dst: anyhow::Result::read_to_end
      Src: /src/opendal/bindings/python/src/file.rs:111,1
    - Dst: map_err
      Src: /src/opendal/bindings/python/src/file.rs:111,1
    - Dst: PyIOError::new_err
      Src: /src/opendal/bindings/python/src/file.rs:113,1
    - Dst: Error::to_string
      Src: /src/opendal/bindings/python/src/file.rs:113,1
    - Dst: Buffer::new
      Src: /src/opendal/bindings/python/src/file.rs:118,1
    - Dst: Self::into_bytes_ref
      Src: /src/opendal/bindings/python/src/file.rs:118,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 40
    argCount: 2
    argNames:
    - py
    - size
    argTypes:
    - Python<'p>
    - Option<usize>
    constantsTouched: []
    func_position:
      end: 119
      start: 81
    functionDepth: 2
    functionLinenumber: 81
    functionLinenumberEnd: 119
    functionName: File::read
    functionSourceFile: /src/opendal/bindings/python/src/file.rs
    functionUses: 0
    functionsReached:
    - Result::map_err
    - map_err
    - Result::truncate
    - Buffer::new
    - anyhow::Result::read
    - Error::to_string
    - Self::into_bytes_ref
    - Err
    - PyIOError::new_err
    - Vec::new
    - anyhow::Result::read_to_end
    linkageType: ''
    returnType: PyResult
    signature: 'pub fn read<''p>(&''p mut self,py: Python<''p>,size: Option<usize>,)
      -> PyResult<Bound<''p, PyAny>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/bindings/python/src/file.rs:148,1
    - Dst: PyIOError::new_err
      Src: /src/opendal/bindings/python/src/file.rs:148,1
    - Dst: Err
      Src: /src/opendal/bindings/python/src/file.rs:153,1
    - Dst: PyIOError::new_err
      Src: /src/opendal/bindings/python/src/file.rs:153,1
    - Dst: Vec::new
      Src: /src/opendal/bindings/python/src/file.rs:161,1
    - Dst: anyhow::Result::read_until
      Src: /src/opendal/bindings/python/src/file.rs:162,1
    - Dst: map_err
      Src: /src/opendal/bindings/python/src/file.rs:162,1
    - Dst: PyIOError::new_err
      Src: /src/opendal/bindings/python/src/file.rs:164,1
    - Dst: Error::to_string
      Src: /src/opendal/bindings/python/src/file.rs:164,1
    - Dst: anyhow::Result::take
      Src: /src/opendal/bindings/python/src/file.rs:169,1
    - Dst: anyhow::Result::read_until
      Src: /src/opendal/bindings/python/src/file.rs:170,1
    - Dst: map_err
      Src: /src/opendal/bindings/python/src/file.rs:170,1
    - Dst: PyIOError::new_err
      Src: /src/opendal/bindings/python/src/file.rs:172,1
    - Dst: Error::to_string
      Src: /src/opendal/bindings/python/src/file.rs:172,1
    - Dst: Result::truncate
      Src: /src/opendal/bindings/python/src/file.rs:173,1
    - Dst: Buffer::new
      Src: /src/opendal/bindings/python/src/file.rs:178,1
    - Dst: Self::into_bytes_ref
      Src: /src/opendal/bindings/python/src/file.rs:178,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 43
    argCount: 2
    argNames:
    - py
    - size
    argTypes:
    - Python<'p>
    - Option<usize>
    constantsTouched: []
    func_position:
      end: 179
      start: 140
    functionDepth: 2
    functionLinenumber: 140
    functionLinenumberEnd: 179
    functionName: File::readline
    functionSourceFile: /src/opendal/bindings/python/src/file.rs
    functionUses: 0
    functionsReached:
    - map_err
    - Result::truncate
    - anyhow::Result::read_until
    - Buffer::new
    - Error::to_string
    - Self::into_bytes_ref
    - Err
    - PyIOError::new_err
    - Vec::new
    - anyhow::Result::take
    linkageType: ''
    returnType: PyResult
    signature: 'pub fn readline<''p>(&''p mut self,py: Python<''p>,size: Option<usize>,)
      -> PyResult<Bound<''p, PyAny>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/bindings/python/src/file.rs:197,1
    - Dst: PyIOError::new_err
      Src: /src/opendal/bindings/python/src/file.rs:197,1
    - Dst: Err
      Src: /src/opendal/bindings/python/src/file.rs:202,1
    - Dst: PyIOError::new_err
      Src: /src/opendal/bindings/python/src/file.rs:202,1
    - Dst: readonly
      Src: /src/opendal/bindings/python/src/file.rs:208,1
    - Dst: Err
      Src: /src/opendal/bindings/python/src/file.rs:209,1
    - Dst: PyIOError::new_err
      Src: /src/opendal/bindings/python/src/file.rs:209,1
    - Dst: is_c_contiguous
      Src: /src/opendal/bindings/python/src/file.rs:212,1
    - Dst: Err
      Src: /src/opendal/bindings/python/src/file.rs:213,1
    - Dst: PyIOError::new_err
      Src: /src/opendal/bindings/python/src/file.rs:213,1
    - Dst: Python::attach
      Src: /src/opendal/bindings/python/src/file.rs:216,1
    - Dst: buf_ptr
      Src: /src/opendal/bindings/python/src/file.rs:217,1
    - Dst: len_bytes
      Src: /src/opendal/bindings/python/src/file.rs:218,1
    - Dst: std::slice::from_raw_parts_mut
      Src: /src/opendal/bindings/python/src/file.rs:220,1
    - Dst: Read::read
      Src: /src/opendal/bindings/python/src/file.rs:221,1
    - Dst: Ok
      Src: /src/opendal/bindings/python/src/file.rs:222,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 40
    argCount: 1
    argNames:
    - buffer
    argTypes:
    - PyBuffer<u8>
    constantsTouched: []
    func_position:
      end: 225
      start: 193
    functionDepth: 31
    functionLinenumber: 193
    functionLinenumberEnd: 225
    functionName: File::readinto
    functionSourceFile: /src/opendal/bindings/python/src/file.rs
    functionUses: 0
    functionsReached:
    - readonly
    - buf_ptr
    - Ok
    - is_c_contiguous
    - len_bytes
    - Read::read
    - Err
    - PyIOError::new_err
    - Python::attach
    - std::slice::from_raw_parts_mut
    linkageType: ''
    returnType: PyResult
    signature: 'pub fn readinto(&mut self, buffer: PyBuffer<u8>) -> PyResult<usize>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/bindings/python/src/file.rs:242,1
    - Dst: PyIOError::new_err
      Src: /src/opendal/bindings/python/src/file.rs:242,1
    - Dst: Err
      Src: /src/opendal/bindings/python/src/file.rs:248,1
    - Dst: PyIOError::new_err
      Src: /src/opendal/bindings/python/src/file.rs:248,1
    - Dst: Result::write_all
      Src: /src/opendal/bindings/python/src/file.rs:254,1
    - Dst: map
      Src: /src/opendal/bindings/python/src/file.rs:254,1
    - Dst: Result::len
      Src: /src/opendal/bindings/python/src/file.rs:256,1
    - Dst: map_err
      Src: /src/opendal/bindings/python/src/file.rs:254,1
    - Dst: PyIOError::new_err
      Src: /src/opendal/bindings/python/src/file.rs:257,1
    - Dst: Error::to_string
      Src: /src/opendal/bindings/python/src/file.rs:257,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 24
    argCount: 1
    argNames:
    - bs
    argTypes:
    - '&[u8]'
    constantsTouched: []
    func_position:
      end: 258
      start: 239
    functionDepth: 3
    functionLinenumber: 239
    functionLinenumberEnd: 258
    functionName: File::write
    functionSourceFile: /src/opendal/bindings/python/src/file.rs
    functionUses: 0
    functionsReached:
    - map_err
    - Error::to_string
    - Err
    - PyIOError::new_err
    - map
    - Result::len
    - Result::write_all
    linkageType: ''
    returnType: PyResult
    signature: 'pub fn write(&mut self, bs: &[u8]) -> PyResult<usize>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: File::seekable
      Src: /src/opendal/bindings/python/src/file.rs:276,1
    - Dst: Err
      Src: /src/opendal/bindings/python/src/file.rs:277,1
    - Dst: PyIOError::new_err
      Src: /src/opendal/bindings/python/src/file.rs:277,1
    - Dst: Err
      Src: /src/opendal/bindings/python/src/file.rs:284,1
    - Dst: PyIOError::new_err
      Src: /src/opendal/bindings/python/src/file.rs:284,1
    - Dst: Err
      Src: /src/opendal/bindings/python/src/file.rs:289,1
    - Dst: PyIOError::new_err
      Src: /src/opendal/bindings/python/src/file.rs:289,1
    - Dst: SeekFrom::Start
      Src: /src/opendal/bindings/python/src/file.rs:296,1
    - Dst: SeekFrom::Current
      Src: /src/opendal/bindings/python/src/file.rs:297,1
    - Dst: SeekFrom::End
      Src: /src/opendal/bindings/python/src/file.rs:298,1
    - Dst: Err
      Src: /src/opendal/bindings/python/src/file.rs:299,1
    - Dst: PyValueError::new_err
      Src: /src/opendal/bindings/python/src/file.rs:299,1
    - Dst: anyhow::Result::seek
      Src: /src/opendal/bindings/python/src/file.rs:302,1
    - Dst: io::Result::map_err
      Src: /src/opendal/bindings/python/src/file.rs:302,1
    - Dst: PyIOError::new_err
      Src: /src/opendal/bindings/python/src/file.rs:304,1
    - Dst: Error::to_string
      Src: /src/opendal/bindings/python/src/file.rs:304,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 37
    argCount: 2
    argNames:
    - pos
    - whence
    argTypes:
    - i64
    - u8
    constantsTouched: []
    func_position:
      end: 305
      start: 275
    functionDepth: 2
    functionLinenumber: 275
    functionLinenumberEnd: 305
    functionName: File::seek
    functionSourceFile: /src/opendal/bindings/python/src/file.rs
    functionUses: 0
    functionsReached:
    - io::Result::map_err
    - File::seekable
    - SeekFrom::Start
    - SeekFrom::Current
    - Error::to_string
    - Err
    - PyIOError::new_err
    - PyValueError::new_err
    - anyhow::Result::seek
    - SeekFrom::End
    linkageType: ''
    returnType: PyResult
    signature: 'pub fn seek(&mut self, pos: i64, whence: u8) -> PyResult<u64>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/bindings/python/src/file.rs:317,1
    - Dst: PyIOError::new_err
      Src: /src/opendal/bindings/python/src/file.rs:317,1
    - Dst: Err
      Src: /src/opendal/bindings/python/src/file.rs:322,1
    - Dst: PyIOError::new_err
      Src: /src/opendal/bindings/python/src/file.rs:322,1
    - Dst: anyhow::Result::stream_position
      Src: /src/opendal/bindings/python/src/file.rs:328,1
    - Dst: map_err
      Src: /src/opendal/bindings/python/src/file.rs:328,1
    - Dst: PyIOError::new_err
      Src: /src/opendal/bindings/python/src/file.rs:330,1
    - Dst: Error::to_string
      Src: /src/opendal/bindings/python/src/file.rs:330,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 19
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 331
      start: 313
    functionDepth: 2
    functionLinenumber: 313
    functionLinenumberEnd: 331
    functionName: File::tell
    functionSourceFile: /src/opendal/bindings/python/src/file.rs
    functionUses: 0
    functionsReached:
    - map_err
    - anyhow::Result::stream_position
    - Error::to_string
    - Err
    - PyIOError::new_err
    linkageType: ''
    returnType: PyResult
    signature: pub fn tell(&mut self) -> PyResult<u64>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self::close
      Src: /src/opendal/bindings/python/src/file.rs:342,1
    - Dst: Result::map_err
      Src: /src/opendal/bindings/python/src/file.rs:342,1
    - Dst: Ok
      Src: /src/opendal/bindings/python/src/file.rs:345,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 15
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 346
      start: 340
    functionDepth: 2
    functionLinenumber: 340
    functionLinenumberEnd: 346
    functionName: File::close
    functionSourceFile: /src/opendal/bindings/python/src/file.rs
    functionUses: 2
    functionsReached:
    - Result::map_err
    - Self::close
    - Ok
    linkageType: ''
    returnType: PyResult
    signature: fn close(&mut self) -> PyResult<()>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: PyRef<'_, Self>::into
      Src: /src/opendal/bindings/python/src/file.rs:349,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - slf
    argTypes:
    - PyRef<'_, Self>
    constantsTouched: []
    func_position:
      end: 350
      start: 348
    functionDepth: 29
    functionLinenumber: 348
    functionLinenumberEnd: 350
    functionName: File::__enter__
    functionSourceFile: /src/opendal/bindings/python/src/file.rs
    functionUses: 0
    functionsReached:
    - PyRef<'_, Self>::into
    linkageType: ''
    returnType: Py
    signature: 'pub fn __enter__(slf: PyRef<''_, Self>) -> Py<Self>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: File::close
      Src: /src/opendal/bindings/python/src/file.rs:363,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - exc_type
    - exc_value
    - traceback
    argTypes:
    - Py<PyAny>
    - Py<PyAny>
    - Py<PyAny>
    constantsTouched: []
    func_position:
      end: 364
      start: 357
    functionDepth: 3
    functionLinenumber: 357
    functionLinenumberEnd: 364
    functionName: File::__exit__
    functionSourceFile: /src/opendal/bindings/python/src/file.rs
    functionUses: 0
    functionsReached:
    - File::close
    linkageType: ''
    returnType: PyResult
    signature: 'pub fn __exit__(&mut self,exc_type: Py<PyAny>,exc_value: Py<PyAny>,traceback:
      Py<PyAny>,) -> PyResult<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/bindings/python/src/file.rs:373,1
    - Dst: Self::flush
      Src: /src/opendal/bindings/python/src/file.rs:375,1
    - Dst: Ok
      Src: /src/opendal/bindings/python/src/file.rs:376,1
    - Dst: Err
      Src: /src/opendal/bindings/python/src/file.rs:377,1
    - Dst: Result::into
      Src: /src/opendal/bindings/python/src/file.rs:377,1
    - Dst: Ok
      Src: /src/opendal/bindings/python/src/file.rs:380,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 18
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 382
      start: 371
    functionDepth: 37
    functionLinenumber: 371
    functionLinenumberEnd: 382
    functionName: File::flush
    functionSourceFile: /src/opendal/bindings/python/src/file.rs
    functionUses: 0
    functionsReached:
    - Result::into
    - Self::flush
    - Ok
    - Err
    linkageType: ''
    returnType: PyResult
    signature: pub fn flush(&mut self) -> PyResult<()>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/bindings/python/src/file.rs:391,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 392
      start: 390
    functionDepth: 0
    functionLinenumber: 390
    functionLinenumberEnd: 392
    functionName: File::readable
    functionSourceFile: /src/opendal/bindings/python/src/file.rs
    functionUses: 1
    functionsReached:
    - Ok
    linkageType: ''
    returnType: PyResult
    signature: pub fn readable(&self) -> PyResult<bool>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/bindings/python/src/file.rs:401,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 402
      start: 400
    functionDepth: 0
    functionLinenumber: 400
    functionLinenumberEnd: 402
    functionName: File::writable
    functionSourceFile: /src/opendal/bindings/python/src/file.rs
    functionUses: 0
    functionsReached:
    - Ok
    linkageType: ''
    returnType: PyResult
    signature: pub fn writable(&self) -> PyResult<bool>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/bindings/python/src/file.rs:416,1
    - Dst: Ok
      Src: /src/opendal/bindings/python/src/file.rs:417,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 419
      start: 414
    functionDepth: 0
    functionLinenumber: 414
    functionLinenumberEnd: 419
    functionName: File::seekable
    functionSourceFile: /src/opendal/bindings/python/src/file.rs
    functionUses: 1
    functionsReached:
    - Ok
    linkageType: ''
    returnType: PyResult
    signature: pub fn seekable(&self) -> PyResult<bool>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/bindings/python/src/file.rs:429,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 430
      start: 428
    functionDepth: 0
    functionLinenumber: 428
    functionLinenumberEnd: 430
    functionName: File::closed
    functionSourceFile: /src/opendal/bindings/python/src/file.rs
    functionUses: 0
    functionsReached:
    - Ok
    linkageType: ''
    returnType: PyResult
    signature: pub fn closed(&self) -> PyResult<bool>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self
      Src: /src/opendal/bindings/python/src/file.rs:447,1
    - Dst: Arc::new
      Src: /src/opendal/bindings/python/src/file.rs:447,1
    - Dst: Mutex::new
      Src: /src/opendal/bindings/python/src/file.rs:447,1
    - Dst: AsyncFileState::Reader
      Src: /src/opendal/bindings/python/src/file.rs:447,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - reader
    argTypes:
    - ocore::FuturesAsyncReader
    constantsTouched: []
    func_position:
      end: 448
      start: 446
    functionDepth: 32
    functionLinenumber: 446
    functionLinenumberEnd: 448
    functionName: AsyncFile::new_reader
    functionSourceFile: /src/opendal/bindings/python/src/file.rs
    functionUses: 1
    functionsReached:
    - Self
    - AsyncFileState::Reader
    - Arc::new
    - Mutex::new
    linkageType: ''
    returnType: Self
    signature: 'pub fn new_reader(reader: ocore::FuturesAsyncReader) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self
      Src: /src/opendal/bindings/python/src/file.rs:451,1
    - Dst: Arc::new
      Src: /src/opendal/bindings/python/src/file.rs:451,1
    - Dst: Mutex::new
      Src: /src/opendal/bindings/python/src/file.rs:451,1
    - Dst: AsyncFileState::Writer
      Src: /src/opendal/bindings/python/src/file.rs:451,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - writer
    argTypes:
    - ocore::FuturesAsyncWriter
    constantsTouched: []
    func_position:
      end: 452
      start: 450
    functionDepth: 32
    functionLinenumber: 450
    functionLinenumberEnd: 452
    functionName: AsyncFile::new_writer
    functionSourceFile: /src/opendal/bindings/python/src/file.rs
    functionUses: 1
    functionsReached:
    - Self
    - Arc::new
    - AsyncFileState::Writer
    - Mutex::new
    linkageType: ''
    returnType: Self
    signature: 'pub fn new_writer(writer: ocore::FuturesAsyncWriter) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: clone
      Src: /src/opendal/bindings/python/src/file.rs:476,1
    - Dst: pyo3_async_runtimes::tokio::future_into_py
      Src: /src/opendal/bindings/python/src/file.rs:478,1
    - Dst: lock
      Src: /src/opendal/bindings/python/src/file.rs:479,1
    - Dst: deref_mut
      Src: /src/opendal/bindings/python/src/file.rs:480,1
    - Dst: Err
      Src: /src/opendal/bindings/python/src/file.rs:483,1
    - Dst: PyIOError::new_err
      Src: /src/opendal/bindings/python/src/file.rs:483,1
    - Dst: Err
      Src: /src/opendal/bindings/python/src/file.rs:488,1
    - Dst: PyIOError::new_err
      Src: /src/opendal/bindings/python/src/file.rs:488,1
    - Dst: anyhow::Result::read
      Src: /src/opendal/bindings/python/src/file.rs:498,1
    - Dst: map_err
      Src: /src/opendal/bindings/python/src/file.rs:498,1
    - Dst: PyIOError::new_err
      Src: /src/opendal/bindings/python/src/file.rs:501,1
    - Dst: Error::to_string
      Src: /src/opendal/bindings/python/src/file.rs:501,1
    - Dst: Result::truncate
      Src: /src/opendal/bindings/python/src/file.rs:502,1
    - Dst: Vec::new
      Src: /src/opendal/bindings/python/src/file.rs:506,1
    - Dst: anyhow::Result::read_to_end
      Src: /src/opendal/bindings/python/src/file.rs:507,1
    - Dst: map_err
      Src: /src/opendal/bindings/python/src/file.rs:507,1
    - Dst: PyIOError::new_err
      Src: /src/opendal/bindings/python/src/file.rs:510,1
    - Dst: Error::to_string
      Src: /src/opendal/bindings/python/src/file.rs:510,1
    - Dst: Python::attach
      Src: /src/opendal/bindings/python/src/file.rs:515,1
    - Dst: Buffer::new
      Src: /src/opendal/bindings/python/src/file.rs:515,1
    - Dst: Self::into_bytes
      Src: /src/opendal/bindings/python/src/file.rs:515,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 51
    argCount: 2
    argNames:
    - py
    - size
    argTypes:
    - Python<'p>
    - Option<usize>
    constantsTouched: []
    func_position:
      end: 517
      start: 475
    functionDepth: 33
    functionLinenumber: 475
    functionLinenumberEnd: 517
    functionName: AsyncFile::read
    functionSourceFile: /src/opendal/bindings/python/src/file.rs
    functionUses: 0
    functionsReached:
    - map_err
    - Result::truncate
    - Buffer::new
    - pyo3_async_runtimes::tokio::future_into_py
    - lock
    - Self::into_bytes
    - anyhow::Result::read
    - Error::to_string
    - clone
    - deref_mut
    - Err
    - PyIOError::new_err
    - Vec::new
    - Python::attach
    - anyhow::Result::read_to_end
    linkageType: ''
    returnType: PyResult
    signature: 'pub fn read<''p>(&''p self, py: Python<''p>, size: Option<usize>)
      -> PyResult<Bound<''p, PyAny>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: clone
      Src: /src/opendal/bindings/python/src/file.rs:532,1
    - Dst: Result::to_vec
      Src: /src/opendal/bindings/python/src/file.rs:535,1
    - Dst: pyo3_async_runtimes::tokio::future_into_py
      Src: /src/opendal/bindings/python/src/file.rs:537,1
    - Dst: lock
      Src: /src/opendal/bindings/python/src/file.rs:538,1
    - Dst: deref_mut
      Src: /src/opendal/bindings/python/src/file.rs:539,1
    - Dst: Err
      Src: /src/opendal/bindings/python/src/file.rs:541,1
    - Dst: PyIOError::new_err
      Src: /src/opendal/bindings/python/src/file.rs:541,1
    - Dst: Err
      Src: /src/opendal/bindings/python/src/file.rs:547,1
    - Dst: PyIOError::new_err
      Src: /src/opendal/bindings/python/src/file.rs:547,1
    - Dst: Result::len
      Src: /src/opendal/bindings/python/src/file.rs:553,1
    - Dst: Result::write_all
      Src: /src/opendal/bindings/python/src/file.rs:554,1
    - Dst: map
      Src: /src/opendal/bindings/python/src/file.rs:554,1
    - Dst: map_err
      Src: /src/opendal/bindings/python/src/file.rs:554,1
    - Dst: PyIOError::new_err
      Src: /src/opendal/bindings/python/src/file.rs:558,1
    - Dst: Error::to_string
      Src: /src/opendal/bindings/python/src/file.rs:558,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 35
    argCount: 2
    argNames:
    - py
    - bs
    argTypes:
    - Python<'p>
    - '&''p [u8]'
    constantsTouched: []
    func_position:
      end: 560
      start: 531
    functionDepth: 33
    functionLinenumber: 531
    functionLinenumberEnd: 560
    functionName: AsyncFile::write
    functionSourceFile: /src/opendal/bindings/python/src/file.rs
    functionUses: 0
    functionsReached:
    - map_err
    - pyo3_async_runtimes::tokio::future_into_py
    - lock
    - Error::to_string
    - Result::to_vec
    - deref_mut
    - clone
    - Err
    - PyIOError::new_err
    - map
    - Result::len
    - Result::write_all
    linkageType: ''
    returnType: PyResult
    signature: 'pub fn write<''p>(&''p mut self, py: Python<''p>, bs: &''p [u8]) ->
      PyResult<Bound<''p, PyAny>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: clone
      Src: /src/opendal/bindings/python/src/file.rs:583,1
    - Dst: SeekFrom::Start
      Src: /src/opendal/bindings/python/src/file.rs:586,1
    - Dst: SeekFrom::Current
      Src: /src/opendal/bindings/python/src/file.rs:587,1
    - Dst: SeekFrom::End
      Src: /src/opendal/bindings/python/src/file.rs:588,1
    - Dst: Err
      Src: /src/opendal/bindings/python/src/file.rs:589,1
    - Dst: PyValueError::new_err
      Src: /src/opendal/bindings/python/src/file.rs:589,1
    - Dst: pyo3_async_runtimes::tokio::future_into_py
      Src: /src/opendal/bindings/python/src/file.rs:592,1
    - Dst: lock
      Src: /src/opendal/bindings/python/src/file.rs:593,1
    - Dst: deref_mut
      Src: /src/opendal/bindings/python/src/file.rs:594,1
    - Dst: Err
      Src: /src/opendal/bindings/python/src/file.rs:597,1
    - Dst: PyIOError::new_err
      Src: /src/opendal/bindings/python/src/file.rs:597,1
    - Dst: Err
      Src: /src/opendal/bindings/python/src/file.rs:602,1
    - Dst: PyIOError::new_err
      Src: /src/opendal/bindings/python/src/file.rs:602,1
    - Dst: anyhow::Result::seek
      Src: /src/opendal/bindings/python/src/file.rs:608,1
    - Dst: map_err
      Src: /src/opendal/bindings/python/src/file.rs:608,1
    - Dst: PyIOError::new_err
      Src: /src/opendal/bindings/python/src/file.rs:611,1
    - Dst: Error::to_string
      Src: /src/opendal/bindings/python/src/file.rs:611,1
    - Dst: Ok
      Src: /src/opendal/bindings/python/src/file.rs:612,1
    - Dst: and_then
      Src: /src/opendal/bindings/python/src/file.rs:592,1
    - Dst: i64::into_bound_py_any
      Src: /src/opendal/bindings/python/src/file.rs:614,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 42
    argCount: 3
    argNames:
    - py
    - pos
    - whence
    argTypes:
    - Python<'p>
    - i64
    - u8
    constantsTouched: []
    func_position:
      end: 615
      start: 577
    functionDepth: 33
    functionLinenumber: 577
    functionLinenumberEnd: 615
    functionName: AsyncFile::seek
    functionSourceFile: /src/opendal/bindings/python/src/file.rs
    functionUses: 0
    functionsReached:
    - map_err
    - pyo3_async_runtimes::tokio::future_into_py
    - lock
    - SeekFrom::Start
    - Ok
    - and_then
    - SeekFrom::Current
    - Error::to_string
    - i64::into_bound_py_any
    - clone
    - deref_mut
    - Err
    - PyIOError::new_err
    - PyValueError::new_err
    - anyhow::Result::seek
    - SeekFrom::End
    linkageType: ''
    returnType: PyResult
    signature: 'pub fn seek<''p>(&''p mut self,py: Python<''p>,pos: i64,whence: u8,)
      -> PyResult<Bound<''p, PyAny>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: clone
      Src: /src/opendal/bindings/python/src/file.rs:625,1
    - Dst: pyo3_async_runtimes::tokio::future_into_py
      Src: /src/opendal/bindings/python/src/file.rs:627,1
    - Dst: lock
      Src: /src/opendal/bindings/python/src/file.rs:628,1
    - Dst: deref_mut
      Src: /src/opendal/bindings/python/src/file.rs:629,1
    - Dst: Err
      Src: /src/opendal/bindings/python/src/file.rs:632,1
    - Dst: PyIOError::new_err
      Src: /src/opendal/bindings/python/src/file.rs:632,1
    - Dst: Err
      Src: /src/opendal/bindings/python/src/file.rs:637,1
    - Dst: PyIOError::new_err
      Src: /src/opendal/bindings/python/src/file.rs:637,1
    - Dst: anyhow::Result::stream_position
      Src: /src/opendal/bindings/python/src/file.rs:643,1
    - Dst: map_err
      Src: /src/opendal/bindings/python/src/file.rs:643,1
    - Dst: PyIOError::new_err
      Src: /src/opendal/bindings/python/src/file.rs:646,1
    - Dst: Error::to_string
      Src: /src/opendal/bindings/python/src/file.rs:646,1
    - Dst: Ok
      Src: /src/opendal/bindings/python/src/file.rs:647,1
    - Dst: and_then
      Src: /src/opendal/bindings/python/src/file.rs:627,1
    - Dst: into_bound_py_any
      Src: /src/opendal/bindings/python/src/file.rs:649,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 34
    argCount: 1
    argNames:
    - py
    argTypes:
    - Python<'p>
    constantsTouched: []
    func_position:
      end: 650
      start: 624
    functionDepth: 33
    functionLinenumber: 624
    functionLinenumberEnd: 650
    functionName: AsyncFile::tell
    functionSourceFile: /src/opendal/bindings/python/src/file.rs
    functionUses: 0
    functionsReached:
    - map_err
    - anyhow::Result::stream_position
    - pyo3_async_runtimes::tokio::future_into_py
    - lock
    - Ok
    - and_then
    - Error::to_string
    - clone
    - deref_mut
    - Err
    - PyIOError::new_err
    - into_bound_py_any
    linkageType: ''
    returnType: PyResult
    signature: 'pub fn tell<''p>(&''p mut self, py: Python<''p>) -> PyResult<Bound<''p,
      PyAny>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: clone
      Src: /src/opendal/bindings/python/src/file.rs:661,1
    - Dst: pyo3_async_runtimes::tokio::future_into_py
      Src: /src/opendal/bindings/python/src/file.rs:662,1
    - Dst: lock
      Src: /src/opendal/bindings/python/src/file.rs:663,1
    - Dst: Self::close
      Src: /src/opendal/bindings/python/src/file.rs:665,1
    - Dst: map_err
      Src: /src/opendal/bindings/python/src/file.rs:665,1
    - Dst: Ok
      Src: /src/opendal/bindings/python/src/file.rs:668,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 23
    argCount: 1
    argNames:
    - py
    argTypes:
    - Python<'p>
    constantsTouched: []
    func_position:
      end: 670
      start: 660
    functionDepth: 33
    functionLinenumber: 660
    functionLinenumberEnd: 670
    functionName: AsyncFile::close
    functionSourceFile: /src/opendal/bindings/python/src/file.rs
    functionUses: 1
    functionsReached:
    - map_err
    - pyo3_async_runtimes::tokio::future_into_py
    - lock
    - Ok
    - clone
    - Self::close
    linkageType: ''
    returnType: PyResult
    signature: 'fn close<''p>(&''p mut self, py: Python<''p>) -> PyResult<Bound<''p,
      PyAny>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: PyRef<'a, Self>::into_py_any
      Src: /src/opendal/bindings/python/src/file.rs:675,1
    - Dst: pyo3_async_runtimes::tokio::future_into_py
      Src: /src/opendal/bindings/python/src/file.rs:676,1
    - Dst: Ok
      Src: /src/opendal/bindings/python/src/file.rs:676,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - slf
    - py
    argTypes:
    - PyRef<'a, Self>
    - Python<'a>
    constantsTouched: []
    func_position:
      end: 677
      start: 674
    functionDepth: 0
    functionLinenumber: 674
    functionLinenumberEnd: 677
    functionName: AsyncFile::__aenter__
    functionSourceFile: /src/opendal/bindings/python/src/file.rs
    functionUses: 0
    functionsReached:
    - pyo3_async_runtimes::tokio::future_into_py
    - PyRef<'a, Self>::into_py_any
    - Ok
    linkageType: ''
    returnType: PyResult
    signature: 'fn __aenter__<''a>(slf: PyRef<''a, Self>, py: Python<''a>) -> PyResult<Bound<''a,
      PyAny>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: AsyncFile::close
      Src: /src/opendal/bindings/python/src/file.rs:691,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - py
    - exc_type
    - exc_value
    - traceback
    argTypes:
    - Python<'a>
    - '&Bound<''a, PyAny>'
    - '&Bound<''a, PyAny>'
    - '&Bound<''a, PyAny>'
    constantsTouched: []
    func_position:
      end: 692
      start: 684
    functionDepth: 34
    functionLinenumber: 684
    functionLinenumberEnd: 692
    functionName: AsyncFile::__aexit__
    functionSourceFile: /src/opendal/bindings/python/src/file.rs
    functionUses: 0
    functionsReached:
    - AsyncFile::close
    linkageType: ''
    returnType: PyResult
    signature: 'fn __aexit__<''a>(&''a mut self,py: Python<''a>,exc_type: &Bound<''a,
      PyAny>,exc_value: &Bound<''a, PyAny>,traceback: &Bound<''a, PyAny>,) -> PyResult<Bound<''a,
      PyAny>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: clone
      Src: /src/opendal/bindings/python/src/file.rs:702,1
    - Dst: pyo3_async_runtimes::tokio::future_into_py
      Src: /src/opendal/bindings/python/src/file.rs:703,1
    - Dst: lock
      Src: /src/opendal/bindings/python/src/file.rs:704,1
    - Dst: Ok
      Src: /src/opendal/bindings/python/src/file.rs:705,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - py
    argTypes:
    - Python<'p>
    constantsTouched: []
    func_position:
      end: 707
      start: 701
    functionDepth: 33
    functionLinenumber: 701
    functionLinenumberEnd: 707
    functionName: AsyncFile::readable
    functionSourceFile: /src/opendal/bindings/python/src/file.rs
    functionUses: 1
    functionsReached:
    - pyo3_async_runtimes::tokio::future_into_py
    - Ok
    - clone
    - lock
    linkageType: ''
    returnType: PyResult
    signature: 'pub fn readable<''p>(&''p self, py: Python<''p>) -> PyResult<Bound<''p,
      PyAny>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: clone
      Src: /src/opendal/bindings/python/src/file.rs:717,1
    - Dst: pyo3_async_runtimes::tokio::future_into_py
      Src: /src/opendal/bindings/python/src/file.rs:718,1
    - Dst: lock
      Src: /src/opendal/bindings/python/src/file.rs:719,1
    - Dst: Ok
      Src: /src/opendal/bindings/python/src/file.rs:720,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - py
    argTypes:
    - Python<'p>
    constantsTouched: []
    func_position:
      end: 722
      start: 716
    functionDepth: 33
    functionLinenumber: 716
    functionLinenumberEnd: 722
    functionName: AsyncFile::writable
    functionSourceFile: /src/opendal/bindings/python/src/file.rs
    functionUses: 0
    functionsReached:
    - pyo3_async_runtimes::tokio::future_into_py
    - Ok
    - clone
    - lock
    linkageType: ''
    returnType: PyResult
    signature: 'pub fn writable<''p>(&''p self, py: Python<''p>) -> PyResult<Bound<''p,
      PyAny>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: AsyncFile::readable
      Src: /src/opendal/bindings/python/src/file.rs:737,1
    - Dst: pyo3_async_runtimes::tokio::future_into_py
      Src: /src/opendal/bindings/python/src/file.rs:739,1
    - Dst: Ok
      Src: /src/opendal/bindings/python/src/file.rs:739,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - py
    argTypes:
    - Python<'p>
    constantsTouched: []
    func_position:
      end: 741
      start: 735
    functionDepth: 34
    functionLinenumber: 735
    functionLinenumberEnd: 741
    functionName: AsyncFile::seekable
    functionSourceFile: /src/opendal/bindings/python/src/file.rs
    functionUses: 0
    functionsReached:
    - pyo3_async_runtimes::tokio::future_into_py
    - Ok
    - AsyncFile::readable
    linkageType: ''
    returnType: PyResult
    signature: 'pub fn seekable<''p>(&''p self, py: Python<''p>) -> PyResult<Bound<''p,
      PyAny>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: clone
      Src: /src/opendal/bindings/python/src/file.rs:751,1
    - Dst: pyo3_async_runtimes::tokio::future_into_py
      Src: /src/opendal/bindings/python/src/file.rs:752,1
    - Dst: lock
      Src: /src/opendal/bindings/python/src/file.rs:753,1
    - Dst: Ok
      Src: /src/opendal/bindings/python/src/file.rs:754,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - py
    argTypes:
    - Python<'p>
    constantsTouched: []
    func_position:
      end: 756
      start: 750
    functionDepth: 33
    functionLinenumber: 750
    functionLinenumberEnd: 756
    functionName: AsyncFile::closed
    functionSourceFile: /src/opendal/bindings/python/src/file.rs
    functionUses: 0
    functionsReached:
    - pyo3_async_runtimes::tokio::future_into_py
    - Ok
    - clone
    - lock
    linkageType: ''
    returnType: PyResult
    signature: 'pub fn closed<''p>(&''p self, py: Python<''p>) -> PyResult<Bound<''p,
      PyAny>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Error::kind
      Src: /src/opendal/bindings/python/src/errors.rs:90,1
    - Dst: Unexpected::new_err
      Src: /src/opendal/bindings/python/src/errors.rs:91,1
    - Dst: Unsupported::new_err
      Src: /src/opendal/bindings/python/src/errors.rs:92,1
    - Dst: ConfigInvalid::new_err
      Src: /src/opendal/bindings/python/src/errors.rs:93,1
    - Dst: NotFound::new_err
      Src: /src/opendal/bindings/python/src/errors.rs:94,1
    - Dst: PermissionDenied::new_err
      Src: /src/opendal/bindings/python/src/errors.rs:95,1
    - Dst: IsADirectory::new_err
      Src: /src/opendal/bindings/python/src/errors.rs:96,1
    - Dst: NotADirectory::new_err
      Src: /src/opendal/bindings/python/src/errors.rs:97,1
    - Dst: AlreadyExists::new_err
      Src: /src/opendal/bindings/python/src/errors.rs:98,1
    - Dst: IsSameFile::new_err
      Src: /src/opendal/bindings/python/src/errors.rs:99,1
    - Dst: ConditionNotMatch::new_err
      Src: /src/opendal/bindings/python/src/errors.rs:100,1
    - Dst: RateLimited::new_err
      Src: /src/opendal/bindings/python/src/errors.rs:101,1
    - Dst: RangeNotSatisfied::new_err
      Src: /src/opendal/bindings/python/src/errors.rs:102,1
    - Dst: Unexpected::new_err
      Src: /src/opendal/bindings/python/src/errors.rs:103,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 17
    argCount: 1
    argNames:
    - err
    argTypes:
    - '&ocore::Error'
    constantsTouched: []
    func_position:
      end: 105
      start: 88
    functionDepth: 1
    functionLinenumber: 88
    functionLinenumberEnd: 105
    functionName: format_pyerr_impl
    functionSourceFile: /src/opendal/bindings/python/src/errors.rs
    functionUses: 2
    functionsReached:
    - ConfigInvalid::new_err
    - Unsupported::new_err
    - RangeNotSatisfied::new_err
    - PermissionDenied::new_err
    - IsSameFile::new_err
    - Error::kind
    - NotADirectory::new_err
    - NotFound::new_err
    - ConditionNotMatch::new_err
    - AlreadyExists::new_err
    - Unexpected::new_err
    - IsADirectory::new_err
    - RateLimited::new_err
    linkageType: ''
    returnType: PyErr
    signature: 'fn format_pyerr_impl(err: &ocore::Error) -> PyErr'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: format_pyerr_impl
      Src: /src/opendal/bindings/python/src/errors.rs:108,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - err
    argTypes:
    - ocore::Error
    constantsTouched: []
    func_position:
      end: 109
      start: 107
    functionDepth: 2
    functionLinenumber: 107
    functionLinenumberEnd: 109
    functionName: format_pyerr
    functionSourceFile: /src/opendal/bindings/python/src/errors.rs
    functionUses: 1
    functionsReached:
    - format_pyerr_impl
    linkageType: ''
    returnType: PyErr
    signature: 'pub fn format_pyerr(err: ocore::Error) -> PyErr'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Error::get_ref
      Src: /src/opendal/bindings/python/src/errors.rs:114,1
    - Dst: and_then
      Src: /src/opendal/bindings/python/src/errors.rs:114,1
    - Dst: downcast_ref::<ocore::Error>
      Src: /src/opendal/bindings/python/src/errors.rs:114,1
    - Dst: format_pyerr_impl
      Src: /src/opendal/bindings/python/src/errors.rs:116,1
    - Dst: PyIOError::new_err
      Src: /src/opendal/bindings/python/src/errors.rs:119,1
    - Dst: Error::to_string
      Src: /src/opendal/bindings/python/src/errors.rs:119,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 1
    argNames:
    - err
    argTypes:
    - std::io::Error
    constantsTouched: []
    func_position:
      end: 121
      start: 112
    functionDepth: 2
    functionLinenumber: 112
    functionLinenumberEnd: 121
    functionName: format_pyerr_from_io_error
    functionSourceFile: /src/opendal/bindings/python/src/errors.rs
    functionUses: 0
    functionsReached:
    - format_pyerr_impl
    - Error::get_ref
    - and_then
    - Error::to_string
    - PyIOError::new_err
    - downcast_ref::<ocore::Error>
    linkageType: ''
    returnType: PyErr
    signature: 'pub fn format_pyerr_from_io_error(err: std::io::Error) -> PyErr'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: crate::register_submodules
      Src: /src/opendal/bindings/python/src/lib.rs:144,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - m
    argTypes:
    - '&Bound<''_, PyModule>'
    constantsTouched: []
    func_position:
      end: 145
      start: 143
    functionDepth: 35
    functionLinenumber: 143
    functionLinenumberEnd: 145
    functionName: _opendal::init
    functionSourceFile: /src/opendal/bindings/python/src/lib.rs
    functionUses: 0
    functionsReached:
    - crate::register_submodules
    linkageType: ''
    returnType: PyResult
    signature: 'fn init(m: &Bound<''_, PyModule>) -> PyResult<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: PyErr::new::<PyTypeError, _>
      Src: /src/opendal/bindings/python/src/options.rs:52,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - name
    - err
    argTypes:
    - '&str'
    - PyErr
    constantsTouched: []
    func_position:
      end: 53
      start: 51
    functionDepth: 0
    functionLinenumber: 51
    functionLinenumberEnd: 53
    functionName: map_exception
    functionSourceFile: /src/opendal/bindings/python/src/options.rs
    functionUses: 1
    functionsReached:
    - PyErr::new::<PyTypeError, _>
    linkageType: ''
    returnType: PyErr
    signature: 'fn map_exception(name: &str, err: PyErr) -> PyErr'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: '&pyo3::Bound<''py, PyDict>::get_item'
      Src: /src/opendal/bindings/python/src/options.rs:59,1
    - Dst: extract::<T>
      Src: /src/opendal/bindings/python/src/options.rs:60,1
    - Dst: map
      Src: /src/opendal/bindings/python/src/options.rs:60,1
    - Dst: map_err
      Src: /src/opendal/bindings/python/src/options.rs:60,1
    - Dst: map_exception
      Src: /src/opendal/bindings/python/src/options.rs:63,1
    - Dst: Error::into
      Src: /src/opendal/bindings/python/src/options.rs:63,1
    - Dst: Ok
      Src: /src/opendal/bindings/python/src/options.rs:64,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 16
    argCount: 2
    argNames:
    - dict
    - name
    argTypes:
    - '&pyo3::Bound<''py, PyDict>'
    - '&str'
    constantsTouched: []
    func_position:
      end: 66
      start: 55
    functionDepth: 29
    functionLinenumber: 55
    functionLinenumberEnd: 66
    functionName: extract_optional
    functionSourceFile: /src/opendal/bindings/python/src/options.rs
    functionUses: 5
    functionsReached:
    - map_err
    - Error::into
    - map_exception
    - Ok
    - '&pyo3::Bound<''py, PyDict>::get_item'
    - map
    - extract::<T>
    linkageType: ''
    returnType: PyResult
    signature: 'fn extract_optional<''py, T>(dict: &pyo3::Bound<''py, PyDict>, name:
      &str) -> PyResult<Option<T>>whereT: FromPyObjectOwned<''py>,'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: cast::<PyDict>
      Src: /src/opendal/bindings/python/src/options.rs:70,1
    - Dst: cloned
      Src: /src/opendal/bindings/python/src/options.rs:70,1
    - Dst: map_err
      Src: /src/opendal/bindings/python/src/options.rs:70,1
    - Dst: PyErr::new::<PyTypeError, _>
      Src: /src/opendal/bindings/python/src/options.rs:72,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 1
    argNames:
    - obj
    argTypes:
    - Borrowed<'a, 'py, PyAny>
    constantsTouched: []
    func_position:
      end: 73
      start: 68
    functionDepth: 0
    functionLinenumber: 68
    functionLinenumberEnd: 73
    functionName: downcast_kwargs
    functionSourceFile: /src/opendal/bindings/python/src/options.rs
    functionUses: 5
    functionsReached:
    - map_err
    - cast::<PyDict>
    - PyErr::new::<PyTypeError, _>
    - cloned
    linkageType: ''
    returnType: PyResult
    signature: 'fn downcast_kwargs<''a, ''py>(obj: Borrowed<''a, ''py, PyAny>) ->
      PyResult<pyo3::Bound<''py, PyDict>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: downcast_kwargs
      Src: /src/opendal/bindings/python/src/options.rs:79,1
    - Dst: Ok
      Src: /src/opendal/bindings/python/src/options.rs:81,1
    - Dst: extract_optional
      Src: /src/opendal/bindings/python/src/options.rs:82,1
    - Dst: extract_optional
      Src: /src/opendal/bindings/python/src/options.rs:83,1
    - Dst: extract_optional
      Src: /src/opendal/bindings/python/src/options.rs:84,1
    - Dst: extract_optional
      Src: /src/opendal/bindings/python/src/options.rs:85,1
    - Dst: extract_optional
      Src: /src/opendal/bindings/python/src/options.rs:86,1
    - Dst: extract_optional
      Src: /src/opendal/bindings/python/src/options.rs:87,1
    - Dst: extract_optional
      Src: /src/opendal/bindings/python/src/options.rs:88,1
    - Dst: extract_optional
      Src: /src/opendal/bindings/python/src/options.rs:89,1
    - Dst: extract_optional
      Src: /src/opendal/bindings/python/src/options.rs:90,1
    - Dst: extract_optional
      Src: /src/opendal/bindings/python/src/options.rs:91,1
    - Dst: extract_optional
      Src: /src/opendal/bindings/python/src/options.rs:92,1
    - Dst: extract_optional
      Src: /src/opendal/bindings/python/src/options.rs:93,1
    - Dst: extract_optional
      Src: /src/opendal/bindings/python/src/options.rs:94,1
    - Dst: extract_optional
      Src: /src/opendal/bindings/python/src/options.rs:95,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 46
    argCount: 1
    argNames:
    - obj
    argTypes:
    - Borrowed<'a, 'py, PyAny>
    constantsTouched: []
    func_position:
      end: 97
      start: 78
    functionDepth: 30
    functionLinenumber: 78
    functionLinenumberEnd: 97
    functionName: ReadOptions::extract
    functionSourceFile: /src/opendal/bindings/python/src/options.rs
    functionUses: 0
    functionsReached:
    - downcast_kwargs
    - extract_optional
    - Ok
    linkageType: ''
    returnType: Result
    signature: 'fn extract(obj: Borrowed<''a, ''py, PyAny>) -> Result<Self, Self::Error>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: clone
      Src: /src/opendal/bindings/nodejs/src/options.rs:208,1
    - Dst: map
      Src: /src/opendal/bindings/nodejs/src/options.rs:208,1
    - Dst: u64::get_u64
      Src: /src/opendal/bindings/nodejs/src/options.rs:208,1
    - Dst: clone
      Src: /src/opendal/bindings/nodejs/src/options.rs:209,1
    - Dst: map
      Src: /src/opendal/bindings/nodejs/src/options.rs:209,1
    - Dst: Option::get_u64
      Src: /src/opendal/bindings/nodejs/src/options.rs:209,1
    - Dst: BytesRange::new
      Src: /src/opendal/bindings/nodejs/src/options.rs:210,1
    - Dst: u64::unwrap_or_default
      Src: /src/opendal/bindings/nodejs/src/options.rs:210,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 21
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 211
      start: 207
    functionDepth: 2
    functionLinenumber: 207
    functionLinenumberEnd: 211
    functionName: ReadOptions::make_range
    functionSourceFile: /src/opendal/bindings/nodejs/src/options.rs
    functionUses: 0
    functionsReached:
    - u64::get_u64
    - clone
    - map
    - u64::unwrap_or_default
    - Option::get_u64
    - BytesRange::new
    linkageType: ''
    returnType: BytesRange
    signature: pub fn make_range(&self) -> BytesRange
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: downcast_kwargs
      Src: /src/opendal/bindings/python/src/options.rs:129,1
    - Dst: Ok
      Src: /src/opendal/bindings/python/src/options.rs:131,1
    - Dst: extract_optional
      Src: /src/opendal/bindings/python/src/options.rs:132,1
    - Dst: extract_optional
      Src: /src/opendal/bindings/python/src/options.rs:133,1
    - Dst: extract_optional
      Src: /src/opendal/bindings/python/src/options.rs:134,1
    - Dst: extract_optional
      Src: /src/opendal/bindings/python/src/options.rs:135,1
    - Dst: extract_optional
      Src: /src/opendal/bindings/python/src/options.rs:136,1
    - Dst: extract_optional
      Src: /src/opendal/bindings/python/src/options.rs:137,1
    - Dst: extract_optional
      Src: /src/opendal/bindings/python/src/options.rs:138,1
    - Dst: extract_optional
      Src: /src/opendal/bindings/python/src/options.rs:139,1
    - Dst: extract_optional
      Src: /src/opendal/bindings/python/src/options.rs:140,1
    - Dst: extract_optional
      Src: /src/opendal/bindings/python/src/options.rs:141,1
    - Dst: extract_optional
      Src: /src/opendal/bindings/python/src/options.rs:142,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 37
    argCount: 1
    argNames:
    - obj
    argTypes:
    - Borrowed<'a, 'py, PyAny>
    constantsTouched: []
    func_position:
      end: 144
      start: 128
    functionDepth: 30
    functionLinenumber: 128
    functionLinenumberEnd: 144
    functionName: WriteOptions::extract
    functionSourceFile: /src/opendal/bindings/python/src/options.rs
    functionUses: 0
    functionsReached:
    - downcast_kwargs
    - extract_optional
    - Ok
    linkageType: ''
    returnType: Result
    signature: 'fn extract(obj: Borrowed<''a, ''py, PyAny>) -> Result<Self, Self::Error>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: object_store::Result::make_range
      Src: /src/opendal/bindings/python/src/options.rs:150,1
    - Dst: map
      Src: /src/opendal/bindings/python/src/options.rs:154,1
    - Dst: map
      Src: /src/opendal/bindings/python/src/options.rs:155,1
    - Dst: unwrap_or_default
      Src: /src/opendal/bindings/python/src/options.rs:157,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 20
    argCount: 1
    argNames:
    - opts
    argTypes:
    - ReadOptions
    constantsTouched: []
    func_position:
      end: 164
      start: 148
    functionDepth: 1
    functionLinenumber: 148
    functionLinenumberEnd: 164
    functionName: ocore::options::ReadOptions::from
    functionSourceFile: /src/opendal/bindings/python/src/options.rs
    functionUses: 0
    functionsReached:
    - map
    - unwrap_or_default
    - object_store::Result::make_range
    linkageType: ''
    returnType: Self
    signature: 'fn from(opts: ReadOptions) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: map
      Src: /src/opendal/bindings/python/src/options.rs:173,1
    - Dst: map
      Src: /src/opendal/bindings/python/src/options.rs:174,1
    - Dst: unwrap_or_default
      Src: /src/opendal/bindings/python/src/options.rs:176,1
    - Dst: unwrap_or_default
      Src: /src/opendal/bindings/python/src/options.rs:179,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 18
    argCount: 1
    argNames:
    - opts
    argTypes:
    - ReadOptions
    constantsTouched: []
    func_position:
      end: 181
      start: 168
    functionDepth: 1
    functionLinenumber: 168
    functionLinenumberEnd: 181
    functionName: ocore::options::ReaderOptions::from
    functionSourceFile: /src/opendal/bindings/python/src/options.rs
    functionUses: 0
    functionsReached:
    - map
    - unwrap_or_default
    linkageType: ''
    returnType: Self
    signature: 'fn from(opts: ReadOptions) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: unwrap_or
      Src: /src/opendal/bindings/python/src/options.rs:187,1
    - Dst: unwrap_or_default
      Src: /src/opendal/bindings/python/src/options.rs:188,1
    - Dst: unwrap_or
      Src: /src/opendal/bindings/python/src/options.rs:197,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 18
    argCount: 1
    argNames:
    - opts
    argTypes:
    - WriteOptions
    constantsTouched: []
    func_position:
      end: 199
      start: 185
    functionDepth: 0
    functionLinenumber: 185
    functionLinenumberEnd: 199
    functionName: ocore::options::WriteOptions::from
    functionSourceFile: /src/opendal/bindings/python/src/options.rs
    functionUses: 0
    functionsReached:
    - unwrap_or_default
    - unwrap_or
    linkageType: ''
    returnType: Self
    signature: 'fn from(opts: WriteOptions) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: downcast_kwargs
      Src: /src/opendal/bindings/python/src/options.rs:216,1
    - Dst: Ok
      Src: /src/opendal/bindings/python/src/options.rs:218,1
    - Dst: extract_optional
      Src: /src/opendal/bindings/python/src/options.rs:219,1
    - Dst: extract_optional
      Src: /src/opendal/bindings/python/src/options.rs:220,1
    - Dst: extract_optional
      Src: /src/opendal/bindings/python/src/options.rs:221,1
    - Dst: extract_optional
      Src: /src/opendal/bindings/python/src/options.rs:222,1
    - Dst: extract_optional
      Src: /src/opendal/bindings/python/src/options.rs:223,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 19
    argCount: 1
    argNames:
    - obj
    argTypes:
    - Borrowed<'a, 'py, PyAny>
    constantsTouched: []
    func_position:
      end: 225
      start: 215
    functionDepth: 30
    functionLinenumber: 215
    functionLinenumberEnd: 225
    functionName: ListOptions::extract
    functionSourceFile: /src/opendal/bindings/python/src/options.rs
    functionUses: 0
    functionsReached:
    - downcast_kwargs
    - extract_optional
    - Ok
    linkageType: ''
    returnType: Result
    signature: 'fn extract(obj: Borrowed<''a, ''py, PyAny>) -> Result<Self, Self::Error>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: unwrap_or
      Src: /src/opendal/bindings/python/src/options.rs:233,1
    - Dst: unwrap_or
      Src: /src/opendal/bindings/python/src/options.rs:234,1
    - Dst: unwrap_or
      Src: /src/opendal/bindings/python/src/options.rs:235,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 1
    argNames:
    - opts
    argTypes:
    - ListOptions
    constantsTouched: []
    func_position:
      end: 237
      start: 229
    functionDepth: 0
    functionLinenumber: 229
    functionLinenumberEnd: 237
    functionName: ocore::options::ListOptions::from
    functionSourceFile: /src/opendal/bindings/python/src/options.rs
    functionUses: 0
    functionsReached:
    - unwrap_or
    linkageType: ''
    returnType: Self
    signature: 'fn from(opts: ListOptions) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: downcast_kwargs
      Src: /src/opendal/bindings/python/src/options.rs:257,1
    - Dst: Ok
      Src: /src/opendal/bindings/python/src/options.rs:259,1
    - Dst: extract_optional
      Src: /src/opendal/bindings/python/src/options.rs:260,1
    - Dst: extract_optional
      Src: /src/opendal/bindings/python/src/options.rs:261,1
    - Dst: extract_optional
      Src: /src/opendal/bindings/python/src/options.rs:262,1
    - Dst: extract_optional
      Src: /src/opendal/bindings/python/src/options.rs:263,1
    - Dst: extract_optional
      Src: /src/opendal/bindings/python/src/options.rs:264,1
    - Dst: extract_optional
      Src: /src/opendal/bindings/python/src/options.rs:265,1
    - Dst: extract_optional
      Src: /src/opendal/bindings/python/src/options.rs:266,1
    - Dst: extract_optional
      Src: /src/opendal/bindings/python/src/options.rs:267,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 28
    argCount: 1
    argNames:
    - obj
    argTypes:
    - Borrowed<'a, 'py, PyAny>
    constantsTouched: []
    func_position:
      end: 269
      start: 256
    functionDepth: 30
    functionLinenumber: 256
    functionLinenumberEnd: 269
    functionName: StatOptions::extract
    functionSourceFile: /src/opendal/bindings/python/src/options.rs
    functionUses: 0
    functionsReached:
    - downcast_kwargs
    - extract_optional
    - Ok
    linkageType: ''
    returnType: Result
    signature: 'fn extract(obj: Borrowed<''a, ''py, PyAny>) -> Result<Self, Self::Error>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: map
      Src: /src/opendal/bindings/python/src/options.rs:278,1
    - Dst: map
      Src: /src/opendal/bindings/python/src/options.rs:279,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 13
    argCount: 1
    argNames:
    - opts
    argTypes:
    - StatOptions
    constantsTouched: []
    func_position:
      end: 284
      start: 273
    functionDepth: 1
    functionLinenumber: 273
    functionLinenumberEnd: 284
    functionName: ocore::options::StatOptions::from
    functionSourceFile: /src/opendal/bindings/python/src/options.rs
    functionUses: 0
    functionsReached:
    - map
    linkageType: ''
    returnType: Self
    signature: 'fn from(opts: StatOptions) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: downcast_kwargs
      Src: /src/opendal/bindings/python/src/options.rs:298,1
    - Dst: Ok
      Src: /src/opendal/bindings/python/src/options.rs:300,1
    - Dst: extract_optional
      Src: /src/opendal/bindings/python/src/options.rs:301,1
    - Dst: extract_optional
      Src: /src/opendal/bindings/python/src/options.rs:302,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 1
    argNames:
    - obj
    argTypes:
    - Borrowed<'a, 'py, PyAny>
    constantsTouched: []
    func_position:
      end: 304
      start: 297
    functionDepth: 30
    functionLinenumber: 297
    functionLinenumberEnd: 304
    functionName: DeleteOptions::extract
    functionSourceFile: /src/opendal/bindings/python/src/options.rs
    functionUses: 0
    functionsReached:
    - downcast_kwargs
    - extract_optional
    - Ok
    linkageType: ''
    returnType: Result
    signature: 'fn extract(obj: Borrowed<''a, ''py, PyAny>) -> Result<Self, Self::Error>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: unwrap_or
      Src: /src/opendal/bindings/python/src/options.rs:311,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - opts
    argTypes:
    - DeleteOptions
    constantsTouched: []
    func_position:
      end: 313
      start: 308
    functionDepth: 0
    functionLinenumber: 308
    functionLinenumberEnd: 313
    functionName: ocore::options::DeleteOptions::from
    functionSourceFile: /src/opendal/bindings/python/src/options.rs
    functionUses: 0
    functionsReached:
    - unwrap_or
    linkageType: ''
    returnType: Self
    signature: 'fn from(opts: DeleteOptions) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: ocore::Operator::from_uri
      Src: /src/opendal/bindings/python/src/operator.rs:50,1
    - Dst: Result::map_err
      Src: /src/opendal/bindings/python/src/operator.rs:50,1
    - Dst: Ok
      Src: /src/opendal/bindings/python/src/operator.rs:51,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - uri
    - map
    argTypes:
    - '&str'
    - HashMap<String, String>
    constantsTouched: []
    func_position:
      end: 52
      start: 49
    functionDepth: 5
    functionLinenumber: 49
    functionLinenumberEnd: 52
    functionName: build_operator_from_uri
    functionSourceFile: /src/opendal/bindings/python/src/operator.rs
    functionUses: 3
    functionsReached:
    - Result::map_err
    - ocore::Operator::from_uri
    - Ok
    linkageType: ''
    returnType: PyResult
    signature: 'fn build_operator_from_uri(uri: &str, map: HashMap<String, String>)
      -> PyResult<ocore::Operator>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: build_operator_from_uri
      Src: /src/opendal/bindings/python/src/operator.rs:58,1
    - Dst: pyo3_async_runtimes::tokio::get_runtime
      Src: /src/opendal/bindings/python/src/operator.rs:60,1
    - Dst: enter
      Src: /src/opendal/bindings/python/src/operator.rs:61,1
    - Dst: ocore::blocking::Operator::new
      Src: /src/opendal/bindings/python/src/operator.rs:62,1
    - Dst: Result::map_err
      Src: /src/opendal/bindings/python/src/operator.rs:62,1
    - Dst: Ok
      Src: /src/opendal/bindings/python/src/operator.rs:63,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - uri
    - map
    argTypes:
    - '&str'
    - HashMap<String, String>
    constantsTouched: []
    func_position:
      end: 64
      start: 54
    functionDepth: 6
    functionLinenumber: 54
    functionLinenumberEnd: 64
    functionName: build_blocking_operator_from_uri
    functionSourceFile: /src/opendal/bindings/python/src/operator.rs
    functionUses: 1
    functionsReached:
    - Result::map_err
    - Ok
    - ocore::blocking::Operator::new
    - pyo3_async_runtimes::tokio::get_runtime
    - build_operator_from_uri
    - enter
    linkageType: ''
    returnType: PyResult
    signature: 'fn build_blocking_operator_from_uri(uri: &str,map: HashMap<String,
      String>,) -> PyResult<ocore::blocking::Operator>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: trim
      Src: /src/opendal/bindings/python/src/operator.rs:67,1
    - Dst: to_ascii_lowercase
      Src: /src/opendal/bindings/python/src/operator.rs:67,1
    - Dst: replace
      Src: /src/opendal/bindings/python/src/operator.rs:67,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - raw
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 68
      start: 66
    functionDepth: 1
    functionLinenumber: 66
    functionLinenumberEnd: 68
    functionName: normalize_scheme
    functionSourceFile: /src/opendal/bindings/python/src/operator.rs
    functionUses: 1
    functionsReached:
    - to_ascii_lowercase
    - trim
    - replace
    linkageType: ''
    returnType: String
    signature: 'fn normalize_scheme(raw: &str) -> String'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/bindings/python/src/operator.rs:77,1
    - Dst: build_blocking_operator_from_uri
      Src: /src/opendal/bindings/python/src/operator.rs:78,1
    - Dst: Result::clone
      Src: /src/opendal/bindings/python/src/operator.rs:78,1
    - Dst: to_string
      Src: /src/opendal/bindings/python/src/operator.rs:79,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - scheme
    - map
    argTypes:
    - '&str'
    - HashMap<String, String>
    constantsTouched: []
    func_position:
      end: 82
      start: 76
    functionDepth: 7
    functionLinenumber: 76
    functionLinenumberEnd: 82
    functionName: _reconstruct_operator
    functionSourceFile: /src/opendal/bindings/python/src/operator.rs
    functionUses: 0
    functionsReached:
    - Result::clone
    - to_string
    - build_blocking_operator_from_uri
    - Ok
    linkageType: ''
    returnType: PyResult
    signature: 'pub fn _reconstruct_operator(scheme: &str, map: HashMap<String, String>)
      -> PyResult<Operator>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/bindings/python/src/operator.rs:92,1
    - Dst: build_operator_from_uri
      Src: /src/opendal/bindings/python/src/operator.rs:93,1
    - Dst: Result::clone
      Src: /src/opendal/bindings/python/src/operator.rs:93,1
    - Dst: to_string
      Src: /src/opendal/bindings/python/src/operator.rs:94,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - scheme
    - map
    argTypes:
    - '&str'
    - HashMap<String, String>
    constantsTouched: []
    func_position:
      end: 97
      start: 88
    functionDepth: 6
    functionLinenumber: 88
    functionLinenumberEnd: 97
    functionName: _reconstruct_async_operator
    functionSourceFile: /src/opendal/bindings/python/src/operator.rs
    functionUses: 0
    functionsReached:
    - Result::clone
    - to_string
    - build_operator_from_uri
    - Ok
    linkageType: ''
    returnType: PyResult
    signature: 'pub fn _reconstruct_async_operator(scheme: &str,map: HashMap<String,
      String>,) -> PyResult<AsyncOperator>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Operator::list
      Src: /src/opendal/bindings/python/src/operator.rs:733,1
    - Dst: Some
      Src: /src/opendal/bindings/python/src/operator.rs:733,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 5
    argNames:
    - path
    - limit
    - start_after
    - versions
    - deleted
    argTypes:
    - PathBuf
    - Option<usize>
    - Option<String>
    - Option<bool>
    - Option<bool>
    constantsTouched: []
    func_position:
      end: 734
      start: 725
    functionDepth: 36
    functionLinenumber: 725
    functionLinenumberEnd: 734
    functionName: Operator::scan
    functionSourceFile: /src/opendal/bindings/python/src/operator.rs
    functionUses: 0
    functionsReached:
    - Some
    - Operator::list
    linkageType: ''
    returnType: PyResult
    signature: 'pub fn scan(&self,path: PathBuf,limit: Option<usize>,start_after:
      Option<String>,versions: Option<bool>,deleted: Option<bool>,) -> PyResult<BlockingLister>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/bindings/python/src/operator.rs:763,1
    - Dst: clone
      Src: /src/opendal/bindings/python/src/operator.rs:764,1
    - Dst: into
      Src: /src/opendal/bindings/python/src/operator.rs:764,1
    - Dst: clone
      Src: /src/opendal/bindings/python/src/operator.rs:765,1
    - Dst: clone
      Src: /src/opendal/bindings/python/src/operator.rs:766,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 768
      start: 762
    functionDepth: 29
    functionLinenumber: 762
    functionLinenumberEnd: 768
    functionName: Operator::to_async_operator
    functionSourceFile: /src/opendal/bindings/python/src/operator.rs
    functionUses: 0
    functionsReached:
    - into
    - clone
    - Ok
    linkageType: ''
    returnType: PyResult
    signature: pub fn to_async_operator(&self) -> PyResult<AsyncOperator>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: info
      Src: /src/opendal/bindings/python/src/operator.rs:771,1
    - Dst: ServiceInfo::name
      Src: /src/opendal/bindings/python/src/operator.rs:772,1
    - Dst: Result::is_empty
      Src: /src/opendal/bindings/python/src/operator.rs:773,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 782
      start: 770
    functionDepth: 4
    functionLinenumber: 770
    functionLinenumberEnd: 782
    functionName: Operator::__repr__
    functionSourceFile: /src/opendal/bindings/python/src/operator.rs
    functionUses: 0
    functionsReached:
    - info
    - Result::is_empty
    - ServiceInfo::name
    linkageType: ''
    returnType: String
    signature: fn __repr__(&self) -> String
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::import
      Src: /src/opendal/bindings/python/src/operator.rs:784,1
    - Dst: getattr
      Src: /src/opendal/bindings/python/src/operator.rs:784,1
    - Dst: clone
      Src: /src/opendal/bindings/python/src/operator.rs:787,1
    - Dst: clone
      Src: /src/opendal/bindings/python/src/operator.rs:787,1
    - Dst: into_py_any
      Src: /src/opendal/bindings/python/src/operator.rs:787,1
    - Dst: PyTuple::new
      Src: /src/opendal/bindings/python/src/operator.rs:788,1
    - Dst: into_py_any
      Src: /src/opendal/bindings/python/src/operator.rs:788,1
    - Dst: into_py_any
      Src: /src/opendal/bindings/python/src/operator.rs:788,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 24
    argCount: 1
    argNames:
    - py
    argTypes:
    - Python
    constantsTouched: []
    func_position:
      end: 789
      start: 783
    functionDepth: 2
    functionLinenumber: 783
    functionLinenumberEnd: 789
    functionName: Operator::__reduce__
    functionSourceFile: /src/opendal/bindings/python/src/operator.rs
    functionUses: 0
    functionsReached:
    - getattr
    - clone
    - Result::import
    - into_py_any
    - PyTuple::new
    linkageType: ''
    returnType: PyResult
    signature: 'fn __reduce__(&self, py: Python) -> PyResult<Py<PyAny>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: extract::<&str>
      Src: /src/opendal/bindings/python/src/operator.rs:823,1
    - Dst: to_string
      Src: /src/opendal/bindings/python/src/operator.rs:824,1
    - Dst: extract::<Scheme>
      Src: /src/opendal/bindings/python/src/operator.rs:825,1
    - Dst: String::from
      Src: /src/opendal/bindings/python/src/operator.rs:826,1
    - Dst: Err
      Src: /src/opendal/bindings/python/src/operator.rs:828,1
    - Dst: Unsupported::new_err
      Src: /src/opendal/bindings/python/src/operator.rs:828,1
    - Dst: normalize_scheme
      Src: /src/opendal/bindings/python/src/operator.rs:832,1
    - Dst: PyResult::unwrap_or_default
      Src: /src/opendal/bindings/python/src/operator.rs:834,1
    - Dst: Ok
      Src: /src/opendal/bindings/python/src/operator.rs:836,1
    - Dst: build_operator
      Src: /src/opendal/bindings/python/src/operator.rs:837,1
    - Dst: Result::clone
      Src: /src/opendal/bindings/python/src/operator.rs:837,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 24
    argCount: 2
    argNames:
    - scheme
    - kwargs
    argTypes:
    - Bound<PyAny>
    - Option<HashMap<String, String>>
    constantsTouched: []
    func_position:
      end: 841
      start: 822
    functionDepth: 31
    functionLinenumber: 822
    functionLinenumberEnd: 841
    functionName: AsyncOperator::new
    functionSourceFile: /src/opendal/bindings/python/src/operator.rs
    functionUses: 0
    functionsReached:
    - Result::clone
    - to_string
    - extract::<&str>
    - Unsupported::new_err
    - Ok
    - PyResult::unwrap_or_default
    - normalize_scheme
    - String::from
    - Err
    - extract::<Scheme>
    - build_operator
    linkageType: ''
    returnType: PyResult
    signature: 'pub fn new(scheme: Bound<PyAny>, kwargs: Option<HashMap<String, String>>)
      -> PyResult<Self>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: PyResult::unwrap_or_default
      Src: /src/opendal/bindings/python/src/operator.rs:880,1
    - Dst: Ok
      Src: /src/opendal/bindings/python/src/operator.rs:882,1
    - Dst: build_operator_from_uri
      Src: /src/opendal/bindings/python/src/operator.rs:883,1
    - Dst: Result::clone
      Src: /src/opendal/bindings/python/src/operator.rs:883,1
    - Dst: Result::to_string
      Src: /src/opendal/bindings/python/src/operator.rs:884,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 3
    argNames:
    - _cls
    - uri
    - kwargs
    argTypes:
    - '&Bound<PyType>'
    - '&str'
    - Option<HashMap<String, String>>
    constantsTouched: []
    func_position:
      end: 887
      start: 875
    functionDepth: 6
    functionLinenumber: 875
    functionLinenumberEnd: 887
    functionName: AsyncOperator::from_uri
    functionSourceFile: /src/opendal/bindings/python/src/operator.rs
    functionUses: 0
    functionsReached:
    - Result::clone
    - Result::to_string
    - Ok
    - PyResult::unwrap_or_default
    - build_operator_from_uri
    linkageType: ''
    returnType: PyResult
    signature: 'pub fn from_uri(_cls: &Bound<PyType>,uri: &str,kwargs: Option<HashMap<String,
      String>>,) -> PyResult<Self>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: layer
      Src: /src/opendal/bindings/python/src/operator.rs:901,1
    - Dst: clone
      Src: /src/opendal/bindings/python/src/operator.rs:901,1
    - Dst: Ok
      Src: /src/opendal/bindings/python/src/operator.rs:902,1
    - Dst: clone
      Src: /src/opendal/bindings/python/src/operator.rs:904,1
    - Dst: clone
      Src: /src/opendal/bindings/python/src/operator.rs:905,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 14
    argCount: 1
    argNames:
    - layer
    argTypes:
    - '&layers::Layer'
    constantsTouched: []
    func_position:
      end: 907
      start: 900
    functionDepth: 3
    functionLinenumber: 900
    functionLinenumberEnd: 907
    functionName: AsyncOperator::layer
    functionSourceFile: /src/opendal/bindings/python/src/operator.rs
    functionUses: 0
    functionsReached:
    - layer
    - clone
    - Ok
    linkageType: ''
    returnType: PyResult
    signature: 'pub fn layer(&self, layer: &layers::Layer) -> PyResult<Self>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: clone
      Src: /src/opendal/bindings/python/src/operator.rs:934,1
    - Dst: to_string_lossy
      Src: /src/opendal/bindings/python/src/operator.rs:935,1
    - Dst: to_string
      Src: /src/opendal/bindings/python/src/operator.rs:935,1
    - Dst: PyResult::map
      Src: /src/opendal/bindings/python/src/operator.rs:937,1
    - Dst: extract::<ReadOptions>
      Src: /src/opendal/bindings/python/src/operator.rs:938,1
    - Dst: Result::transpose
      Src: /src/opendal/bindings/python/src/operator.rs:937,1
    - Dst: unwrap_or_default
      Src: /src/opendal/bindings/python/src/operator.rs:937,1
    - Dst: PyResult::map
      Src: /src/opendal/bindings/python/src/operator.rs:942,1
    - Dst: extract::<WriteOptions>
      Src: /src/opendal/bindings/python/src/operator.rs:943,1
    - Dst: Result::transpose
      Src: /src/opendal/bindings/python/src/operator.rs:942,1
    - Dst: unwrap_or_default
      Src: /src/opendal/bindings/python/src/operator.rs:942,1
    - Dst: pyo3_async_runtimes::tokio::future_into_py
      Src: /src/opendal/bindings/python/src/operator.rs:947,1
    - Dst: make_range
      Src: /src/opendal/bindings/python/src/operator.rs:949,1
    - Dst: reader_options
      Src: /src/opendal/bindings/python/src/operator.rs:950,1
    - Dst: into
      Src: /src/opendal/bindings/python/src/operator.rs:951,1
    - Dst: map_err
      Src: /src/opendal/bindings/python/src/operator.rs:950,1
    - Dst: anyhow::Result::into_futures_async_read
      Src: /src/opendal/bindings/python/src/operator.rs:955,1
    - Dst: (Vec::to_range
      Src: /src/opendal/bindings/python/src/operator.rs:956,1
    - Dst: map_err
      Src: /src/opendal/bindings/python/src/operator.rs:955,1
    - Dst: Ok
      Src: /src/opendal/bindings/python/src/operator.rs:959,1
    - Dst: AsyncFile::new_reader
      Src: /src/opendal/bindings/python/src/operator.rs:959,1
    - Dst: writer_options
      Src: /src/opendal/bindings/python/src/operator.rs:961,1
    - Dst: into
      Src: /src/opendal/bindings/python/src/operator.rs:962,1
    - Dst: map_err
      Src: /src/opendal/bindings/python/src/operator.rs:961,1
    - Dst: Result::into_futures_async_write
      Src: /src/opendal/bindings/python/src/operator.rs:965,1
    - Dst: Ok
      Src: /src/opendal/bindings/python/src/operator.rs:966,1
    - Dst: AsyncFile::new_writer
      Src: /src/opendal/bindings/python/src/operator.rs:966,1
    - Dst: Err
      Src: /src/opendal/bindings/python/src/operator.rs:968,1
    - Dst: Unsupported::new_err
      Src: /src/opendal/bindings/python/src/operator.rs:968,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 69
    argCount: 4
    argNames:
    - py
    - path
    - mode
    - kwargs
    argTypes:
    - Python<'p>
    - PathBuf
    - String
    - Option<&Bound<PyDict>>
    constantsTouched: []
    func_position:
      end: 973
      start: 927
    functionDepth: 35
    functionLinenumber: 927
    functionLinenumberEnd: 973
    functionName: AsyncOperator::open
    functionSourceFile: /src/opendal/bindings/python/src/operator.rs
    functionUses: 0
    functionsReached:
    - (Vec::to_range
    - Unsupported::new_err
    - into
    - clone
    - extract::<ReadOptions>
    - AsyncFile::new_reader
    - anyhow::Result::into_futures_async_read
    - map_err
    - Ok
    - PyResult::map
    - reader_options
    - Result::transpose
    - unwrap_or_default
    - make_range
    - AsyncFile::new_writer
    - writer_options
    - to_string
    - pyo3_async_runtimes::tokio::future_into_py
    - Result::into_futures_async_write
    - Err
    - extract::<WriteOptions>
    - to_string_lossy
    linkageType: ''
    returnType: PyResult
    signature: 'pub fn open<''p>(&''p self,py: Python<''p>,path: PathBuf,mode: String,kwargs:
      Option<&Bound<PyDict>>,) -> PyResult<Bound<''p, PyAny>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: clone
      Src: /src/opendal/bindings/python/src/operator.rs:1049,1
    - Dst: to_string_lossy
      Src: /src/opendal/bindings/python/src/operator.rs:1050,1
    - Dst: to_string
      Src: /src/opendal/bindings/python/src/operator.rs:1050,1
    - Dst: pyo3_async_runtimes::tokio::future_into_py
      Src: /src/opendal/bindings/python/src/operator.rs:1067,1
    - Dst: object_store::Result::make_range
      Src: /src/opendal/bindings/python/src/operator.rs:1068,1
    - Dst: reader_options
      Src: /src/opendal/bindings/python/src/operator.rs:1069,1
    - Dst: object_store::Result::into
      Src: /src/opendal/bindings/python/src/operator.rs:1070,1
    - Dst: map_err
      Src: /src/opendal/bindings/python/src/operator.rs:1069,1
    - Dst: read
      Src: /src/opendal/bindings/python/src/operator.rs:1069,1
    - Dst: (Vec::to_range
      Src: /src/opendal/bindings/python/src/operator.rs:1073,1
    - Dst: map_err
      Src: /src/opendal/bindings/python/src/operator.rs:1069,1
    - Dst: to_vec
      Src: /src/opendal/bindings/python/src/operator.rs:1069,1
    - Dst: Python::attach
      Src: /src/opendal/bindings/python/src/operator.rs:1077,1
    - Dst: Buffer::new
      Src: /src/opendal/bindings/python/src/operator.rs:1077,1
    - Dst: Self::into_bytes
      Src: /src/opendal/bindings/python/src/operator.rs:1077,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 35
    argCount: 16
    argNames:
    - py
    - path
    - version
    - concurrent
    - chunk
    - gap
    - offset
    - prefetch
    - size
    - if_match
    - if_none_match
    - if_modified_since
    - if_unmodified_since
    - content_type
    - cache_control
    - content_disposition
    argTypes:
    - Python<'p>
    - PathBuf
    - Option<String>
    - Option<usize>
    - Option<usize>
    - Option<usize>
    - Option<usize>
    - Option<usize>
    - Option<usize>
    - Option<String>
    - Option<String>
    - Option<jiff::Timestamp>
    - Option<jiff::Timestamp>
    - Option<String>
    - Option<String>
    - Option<String>
    constantsTouched: []
    func_position:
      end: 1079
      start: 1030
    functionDepth: 35
    functionLinenumber: 1030
    functionLinenumberEnd: 1079
    functionName: AsyncOperator::read
    functionSourceFile: /src/opendal/bindings/python/src/operator.rs
    functionUses: 0
    functionsReached:
    - map_err
    - to_string
    - read
    - (Vec::to_range
    - Buffer::new
    - pyo3_async_runtimes::tokio::future_into_py
    - Self::into_bytes
    - object_store::Result::into
    - clone
    - reader_options
    - object_store::Result::make_range
    - to_vec
    - Python::attach
    - to_string_lossy
    linkageType: ''
    returnType: PyResult
    signature: 'pub fn read<''p>(&''p self,py: Python<''p>,path: PathBuf,version:
      Option<String>,concurrent: Option<usize>,chunk: Option<usize>,gap: Option<usize>,offset:
      Option<usize>,prefetch: Option<usize>,size: Option<usize>,if_match: Option<String>,if_none_match:
      Option<String>,if_modified_since: Option<jiff::Timestamp>,if_unmodified_since:
      Option<jiff::Timestamp>,content_type: Option<String>,cache_control: Option<String>,content_disposition:
      Option<String>,) -> PyResult<Bound<''p, PyAny>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: clone
      Src: /src/opendal/bindings/python/src/operator.rs:1162,1
    - Dst: Result::as_bytes
      Src: /src/opendal/bindings/python/src/operator.rs:1163,1
    - Dst: to_vec
      Src: /src/opendal/bindings/python/src/operator.rs:1163,1
    - Dst: to_string_lossy
      Src: /src/opendal/bindings/python/src/operator.rs:1164,1
    - Dst: to_string
      Src: /src/opendal/bindings/python/src/operator.rs:1164,1
    - Dst: pyo3_async_runtimes::tokio::future_into_py
      Src: /src/opendal/bindings/python/src/operator.rs:1165,1
    - Dst: write_options
      Src: /src/opendal/bindings/python/src/operator.rs:1166,1
    - Dst: object_store::Result::into
      Src: /src/opendal/bindings/python/src/operator.rs:1166,1
    - Dst: map
      Src: /src/opendal/bindings/python/src/operator.rs:1166,1
    - Dst: map_err
      Src: /src/opendal/bindings/python/src/operator.rs:1166,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 25
    argCount: 14
    argNames:
    - py
    - path
    - bs
    - append
    - chunk
    - concurrent
    - cache_control
    - content_type
    - content_disposition
    - content_encoding
    - if_match
    - if_none_match
    - if_not_exists
    - user_metadata
    argTypes:
    - Python<'p>
    - PathBuf
    - '&Bound<PyBytes>'
    - Option<bool>
    - Option<usize>
    - Option<usize>
    - Option<String>
    - Option<String>
    - Option<String>
    - Option<String>
    - Option<String>
    - Option<String>
    - Option<bool>
    - Option<HashMap<String, String>>
    constantsTouched: []
    func_position:
      end: 1171
      start: 1132
    functionDepth: 35
    functionLinenumber: 1132
    functionLinenumberEnd: 1171
    functionName: AsyncOperator::write
    functionSourceFile: /src/opendal/bindings/python/src/operator.rs
    functionUses: 0
    functionsReached:
    - map_err
    - to_string
    - pyo3_async_runtimes::tokio::future_into_py
    - write_options
    - object_store::Result::into
    - clone
    - map
    - to_vec
    - Result::as_bytes
    - to_string_lossy
    linkageType: ''
    returnType: PyResult
    signature: 'pub fn write<''p>(&''p self,py: Python<''p>,path: PathBuf,bs: &Bound<PyBytes>,append:
      Option<bool>,chunk: Option<usize>,concurrent: Option<usize>,cache_control: Option<String>,content_type:
      Option<String>,content_disposition: Option<String>,content_encoding: Option<String>,if_match:
      Option<String>,if_none_match: Option<String>,if_not_exists: Option<bool>,user_metadata:
      Option<HashMap<String, String>>,) -> PyResult<Bound<''p, PyAny>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: clone
      Src: /src/opendal/bindings/python/src/operator.rs:1223,1
    - Dst: to_string_lossy
      Src: /src/opendal/bindings/python/src/operator.rs:1224,1
    - Dst: to_string
      Src: /src/opendal/bindings/python/src/operator.rs:1224,1
    - Dst: pyo3_async_runtimes::tokio::future_into_py
      Src: /src/opendal/bindings/python/src/operator.rs:1236,1
    - Dst: stat_options
      Src: /src/opendal/bindings/python/src/operator.rs:1237,1
    - Dst: object_store::Result::into
      Src: /src/opendal/bindings/python/src/operator.rs:1238,1
    - Dst: map_err
      Src: /src/opendal/bindings/python/src/operator.rs:1237,1
    - Dst: map
      Src: /src/opendal/bindings/python/src/operator.rs:1237,1
    - Dst: Ok
      Src: /src/opendal/bindings/python/src/operator.rs:1243,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 21
    argCount: 10
    argNames:
    - py
    - path
    - version
    - if_match
    - if_none_match
    - if_modified_since
    - if_unmodified_since
    - content_type
    - cache_control
    - content_disposition
    argTypes:
    - Python<'p>
    - PathBuf
    - Option<String>
    - Option<String>
    - Option<String>
    - Option<jiff::Timestamp>
    - Option<jiff::Timestamp>
    - Option<String>
    - Option<String>
    - Option<String>
    constantsTouched: []
    func_position:
      end: 1245
      start: 1210
    functionDepth: 35
    functionLinenumber: 1210
    functionLinenumberEnd: 1245
    functionName: AsyncOperator::stat
    functionSourceFile: /src/opendal/bindings/python/src/operator.rs
    functionUses: 0
    functionsReached:
    - map_err
    - to_string
    - pyo3_async_runtimes::tokio::future_into_py
    - stat_options
    - Ok
    - object_store::Result::into
    - clone
    - map
    - to_string_lossy
    linkageType: ''
    returnType: PyResult
    signature: 'pub fn stat<''p>(&''p self,py: Python<''p>,path: PathBuf,version:
      Option<String>,if_match: Option<String>,if_none_match: Option<String>,if_modified_since:
      Option<jiff::Timestamp>,if_unmodified_since: Option<jiff::Timestamp>,content_type:
      Option<String>,cache_control: Option<String>,content_disposition: Option<String>,)
      -> PyResult<Bound<''p, PyAny>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: clone
      Src: /src/opendal/bindings/python/src/operator.rs:1267,1
    - Dst: Result::to_string_lossy
      Src: /src/opendal/bindings/python/src/operator.rs:1268,1
    - Dst: to_string
      Src: /src/opendal/bindings/python/src/operator.rs:1268,1
    - Dst: Option::to_string_lossy
      Src: /src/opendal/bindings/python/src/operator.rs:1269,1
    - Dst: to_string
      Src: /src/opendal/bindings/python/src/operator.rs:1269,1
    - Dst: pyo3_async_runtimes::tokio::future_into_py
      Src: /src/opendal/bindings/python/src/operator.rs:1270,1
    - Dst: copy
      Src: /src/opendal/bindings/python/src/operator.rs:1271,1
    - Dst: map
      Src: /src/opendal/bindings/python/src/operator.rs:1271,1
    - Dst: map_err
      Src: /src/opendal/bindings/python/src/operator.rs:1271,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 23
    argCount: 3
    argNames:
    - py
    - source
    - target
    argTypes:
    - Python<'p>
    - PathBuf
    - PathBuf
    constantsTouched: []
    func_position:
      end: 1276
      start: 1261
    functionDepth: 34
    functionLinenumber: 1261
    functionLinenumberEnd: 1276
    functionName: AsyncOperator::copy
    functionSourceFile: /src/opendal/bindings/python/src/operator.rs
    functionUses: 0
    functionsReached:
    - map_err
    - to_string
    - Option::to_string_lossy
    - pyo3_async_runtimes::tokio::future_into_py
    - clone
    - Result::to_string_lossy
    - map
    - copy
    linkageType: ''
    returnType: PyResult
    signature: 'pub fn copy<''p>(&''p self,py: Python<''p>,source: PathBuf,target:
      PathBuf,) -> PyResult<Bound<''p, PyAny>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: clone
      Src: /src/opendal/bindings/python/src/operator.rs:1298,1
    - Dst: Result::to_string_lossy
      Src: /src/opendal/bindings/python/src/operator.rs:1299,1
    - Dst: to_string
      Src: /src/opendal/bindings/python/src/operator.rs:1299,1
    - Dst: Option::to_string_lossy
      Src: /src/opendal/bindings/python/src/operator.rs:1300,1
    - Dst: to_string
      Src: /src/opendal/bindings/python/src/operator.rs:1300,1
    - Dst: pyo3_async_runtimes::tokio::future_into_py
      Src: /src/opendal/bindings/python/src/operator.rs:1301,1
    - Dst: rename
      Src: /src/opendal/bindings/python/src/operator.rs:1302,1
    - Dst: map_err
      Src: /src/opendal/bindings/python/src/operator.rs:1302,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 19
    argCount: 3
    argNames:
    - py
    - source
    - target
    argTypes:
    - Python<'p>
    - PathBuf
    - PathBuf
    constantsTouched: []
    func_position:
      end: 1304
      start: 1292
    functionDepth: 2
    functionLinenumber: 1292
    functionLinenumberEnd: 1304
    functionName: AsyncOperator::rename
    functionSourceFile: /src/opendal/bindings/python/src/operator.rs
    functionUses: 0
    functionsReached:
    - map_err
    - to_string
    - Option::to_string_lossy
    - pyo3_async_runtimes::tokio::future_into_py
    - clone
    - Result::to_string_lossy
    - rename
    linkageType: ''
    returnType: PyResult
    signature: 'pub fn rename<''p>(&''p self,py: Python<''p>,source: PathBuf,target:
      PathBuf,) -> PyResult<Bound<''p, PyAny>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: clone
      Src: /src/opendal/bindings/python/src/operator.rs:1319,1
    - Dst: to_string_lossy
      Src: /src/opendal/bindings/python/src/operator.rs:1320,1
    - Dst: to_string
      Src: /src/opendal/bindings/python/src/operator.rs:1320,1
    - Dst: pyo3_async_runtimes::tokio::future_into_py
      Src: /src/opendal/bindings/python/src/operator.rs:1321,1
    - Dst: delete_with
      Src: /src/opendal/bindings/python/src/operator.rs:1322,1
    - Dst: recursive
      Src: /src/opendal/bindings/python/src/operator.rs:1322,1
    - Dst: map_err
      Src: /src/opendal/bindings/python/src/operator.rs:1322,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 16
    argCount: 2
    argNames:
    - py
    - path
    argTypes:
    - Python<'p>
    - PathBuf
    constantsTouched: []
    func_position:
      end: 1327
      start: 1318
    functionDepth: 35
    functionLinenumber: 1318
    functionLinenumberEnd: 1327
    functionName: AsyncOperator::remove_all
    functionSourceFile: /src/opendal/bindings/python/src/operator.rs
    functionUses: 0
    functionsReached:
    - map_err
    - to_string
    - pyo3_async_runtimes::tokio::future_into_py
    - clone
    - recursive
    - delete_with
    - to_string_lossy
    linkageType: ''
    returnType: PyResult
    signature: 'pub fn remove_all<''p>(&''p self, py: Python<''p>, path: PathBuf)
      -> PyResult<Bound<''p, PyAny>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: clone
      Src: /src/opendal/bindings/python/src/operator.rs:1342,1
    - Dst: pyo3_async_runtimes::tokio::future_into_py
      Src: /src/opendal/bindings/python/src/operator.rs:1343,1
    - Dst: check
      Src: /src/opendal/bindings/python/src/operator.rs:1343,1
    - Dst: map_err
      Src: /src/opendal/bindings/python/src/operator.rs:1343,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - py
    argTypes:
    - Python<'p>
    constantsTouched: []
    func_position:
      end: 1344
      start: 1341
    functionDepth: 3
    functionLinenumber: 1341
    functionLinenumberEnd: 1344
    functionName: AsyncOperator::check
    functionSourceFile: /src/opendal/bindings/python/src/operator.rs
    functionUses: 0
    functionsReached:
    - map_err
    - pyo3_async_runtimes::tokio::future_into_py
    - check
    - clone
    linkageType: ''
    returnType: PyResult
    signature: 'pub fn check<''p>(&''p self, py: Python<''p>) -> PyResult<Bound<''p,
      PyAny>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: clone
      Src: /src/opendal/bindings/python/src/operator.rs:1364,1
    - Dst: to_string_lossy
      Src: /src/opendal/bindings/python/src/operator.rs:1365,1
    - Dst: to_string
      Src: /src/opendal/bindings/python/src/operator.rs:1365,1
    - Dst: pyo3_async_runtimes::tokio::future_into_py
      Src: /src/opendal/bindings/python/src/operator.rs:1366,1
    - Dst: create_dir
      Src: /src/opendal/bindings/python/src/operator.rs:1367,1
    - Dst: map_err
      Src: /src/opendal/bindings/python/src/operator.rs:1367,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 2
    argNames:
    - py
    - path
    argTypes:
    - Python<'p>
    - PathBuf
    constantsTouched: []
    func_position:
      end: 1369
      start: 1363
    functionDepth: 35
    functionLinenumber: 1363
    functionLinenumberEnd: 1369
    functionName: AsyncOperator::create_dir
    functionSourceFile: /src/opendal/bindings/python/src/operator.rs
    functionUses: 0
    functionsReached:
    - map_err
    - to_string
    - pyo3_async_runtimes::tokio::future_into_py
    - clone
    - create_dir
    - to_string_lossy
    linkageType: ''
    returnType: PyResult
    signature: 'pub fn create_dir<''p>(&''p self, py: Python<''p>, path: PathBuf)
      -> PyResult<Bound<''p, PyAny>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: clone
      Src: /src/opendal/bindings/python/src/operator.rs:1399,1
    - Dst: to_string_lossy
      Src: /src/opendal/bindings/python/src/operator.rs:1400,1
    - Dst: to_string
      Src: /src/opendal/bindings/python/src/operator.rs:1400,1
    - Dst: pyo3_async_runtimes::tokio::future_into_py
      Src: /src/opendal/bindings/python/src/operator.rs:1401,1
    - Dst: Result::is_some
      Src: /src/opendal/bindings/python/src/operator.rs:1402,1
    - Dst: Result::is_some
      Src: /src/opendal/bindings/python/src/operator.rs:1402,1
    - Dst: Result::unwrap_or
      Src: /src/opendal/bindings/python/src/operator.rs:1405,1
    - Dst: delete_options
      Src: /src/opendal/bindings/python/src/operator.rs:1407,1
    - Dst: map_err
      Src: /src/opendal/bindings/python/src/operator.rs:1407,1
    - Dst: delete
      Src: /src/opendal/bindings/python/src/operator.rs:1409,1
    - Dst: map_err
      Src: /src/opendal/bindings/python/src/operator.rs:1409,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 30
    argCount: 4
    argNames:
    - py
    - path
    - version
    - recursive
    argTypes:
    - Python<'p>
    - PathBuf
    - Option<String>
    - Option<bool>
    constantsTouched: []
    func_position:
      end: 1412
      start: 1392
    functionDepth: 35
    functionLinenumber: 1392
    functionLinenumberEnd: 1412
    functionName: AsyncOperator::delete
    functionSourceFile: /src/opendal/bindings/python/src/operator.rs
    functionUses: 0
    functionsReached:
    - map_err
    - to_string
    - pyo3_async_runtimes::tokio::future_into_py
    - delete_options
    - delete
    - clone
    - Result::is_some
    - Result::unwrap_or
    - to_string_lossy
    linkageType: ''
    returnType: PyResult
    signature: 'pub fn delete<''p>(&''p self,py: Python<''p>,path: PathBuf,version:
      Option<String>,recursive: Option<bool>,) -> PyResult<Bound<''p, PyAny>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: clone
      Src: /src/opendal/bindings/python/src/operator.rs:1427,1
    - Dst: to_string_lossy
      Src: /src/opendal/bindings/python/src/operator.rs:1428,1
    - Dst: to_string
      Src: /src/opendal/bindings/python/src/operator.rs:1428,1
    - Dst: pyo3_async_runtimes::tokio::future_into_py
      Src: /src/opendal/bindings/python/src/operator.rs:1429,1
    - Dst: exists
      Src: /src/opendal/bindings/python/src/operator.rs:1431,1
    - Dst: map_err
      Src: /src/opendal/bindings/python/src/operator.rs:1431,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 2
    argNames:
    - py
    - path
    argTypes:
    - Python<'p>
    - PathBuf
    constantsTouched: []
    func_position:
      end: 1433
      start: 1426
    functionDepth: 31
    functionLinenumber: 1426
    functionLinenumberEnd: 1433
    functionName: AsyncOperator::exists
    functionSourceFile: /src/opendal/bindings/python/src/operator.rs
    functionUses: 0
    functionsReached:
    - map_err
    - to_string
    - pyo3_async_runtimes::tokio::future_into_py
    - clone
    - exists
    - to_string_lossy
    linkageType: ''
    returnType: PyResult
    signature: 'pub fn exists<''p>(&''p self, py: Python<''p>, path: PathBuf) -> PyResult<Bound<''p,
      PyAny>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: clone
      Src: /src/opendal/bindings/python/src/operator.rs:1473,1
    - Dst: to_string_lossy
      Src: /src/opendal/bindings/python/src/operator.rs:1474,1
    - Dst: to_string
      Src: /src/opendal/bindings/python/src/operator.rs:1474,1
    - Dst: pyo3_async_runtimes::tokio::future_into_py
      Src: /src/opendal/bindings/python/src/operator.rs:1483,1
    - Dst: lister_options
      Src: /src/opendal/bindings/python/src/operator.rs:1484,1
    - Dst: object_store::Result::into
      Src: /src/opendal/bindings/python/src/operator.rs:1485,1
    - Dst: map_err
      Src: /src/opendal/bindings/python/src/operator.rs:1484,1
    - Dst: Python::attach
      Src: /src/opendal/bindings/python/src/operator.rs:1488,1
    - Dst: AsyncLister::new
      Src: /src/opendal/bindings/python/src/operator.rs:1488,1
    - Dst: Self::into_py_any
      Src: /src/opendal/bindings/python/src/operator.rs:1488,1
    - Dst: Ok
      Src: /src/opendal/bindings/python/src/operator.rs:1490,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 25
    argCount: 7
    argNames:
    - py
    - path
    - limit
    - start_after
    - recursive
    - versions
    - deleted
    argTypes:
    - Python<'p>
    - PathBuf
    - Option<usize>
    - Option<String>
    - Option<bool>
    - Option<bool>
    - Option<bool>
    constantsTouched: []
    func_position:
      end: 1492
      start: 1463
    functionDepth: 35
    functionLinenumber: 1463
    functionLinenumberEnd: 1492
    functionName: AsyncOperator::list
    functionSourceFile: /src/opendal/bindings/python/src/operator.rs
    functionUses: 1
    functionsReached:
    - map_err
    - to_string
    - AsyncLister::new
    - lister_options
    - pyo3_async_runtimes::tokio::future_into_py
    - Self::into_py_any
    - Ok
    - object_store::Result::into
    - clone
    - Python::attach
    - to_string_lossy
    linkageType: ''
    returnType: PyResult
    signature: 'pub fn list<''p>(&''p self,py: Python<''p>,path: PathBuf,limit: Option<usize>,start_after:
      Option<String>,recursive: Option<bool>,versions: Option<bool>,deleted: Option<bool>,)
      -> PyResult<Bound<''p, PyAny>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: AsyncOperator::list
      Src: /src/opendal/bindings/python/src/operator.rs:1531,1
    - Dst: Some
      Src: /src/opendal/bindings/python/src/operator.rs:1531,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 6
    argNames:
    - py
    - path
    - limit
    - start_after
    - versions
    - deleted
    argTypes:
    - Python<'p>
    - PathBuf
    - Option<usize>
    - Option<String>
    - Option<bool>
    - Option<bool>
    constantsTouched: []
    func_position:
      end: 1532
      start: 1522
    functionDepth: 36
    functionLinenumber: 1522
    functionLinenumberEnd: 1532
    functionName: AsyncOperator::scan
    functionSourceFile: /src/opendal/bindings/python/src/operator.rs
    functionUses: 0
    functionsReached:
    - AsyncOperator::list
    - Some
    linkageType: ''
    returnType: PyResult
    signature: 'pub fn scan<''p>(&''p self,py: Python<''p>,path: PathBuf,limit: Option<usize>,start_after:
      Option<String>,versions: Option<bool>,deleted: Option<bool>,) -> PyResult<Bound<''p,
      PyAny>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: clone
      Src: /src/opendal/bindings/python/src/operator.rs:1587,1
    - Dst: to_string_lossy
      Src: /src/opendal/bindings/python/src/operator.rs:1588,1
    - Dst: to_string
      Src: /src/opendal/bindings/python/src/operator.rs:1588,1
    - Dst: pyo3_async_runtimes::tokio::future_into_py
      Src: /src/opendal/bindings/python/src/operator.rs:1599,1
    - Dst: presign_stat_options
      Src: /src/opendal/bindings/python/src/operator.rs:1600,1
    - Dst: Duration::from_secs
      Src: /src/opendal/bindings/python/src/operator.rs:1601,1
    - Dst: object_store::Result::into
      Src: /src/opendal/bindings/python/src/operator.rs:1601,1
    - Dst: map_err
      Src: /src/opendal/bindings/python/src/operator.rs:1600,1
    - Dst: map
      Src: /src/opendal/bindings/python/src/operator.rs:1600,1
    - Dst: Ok
      Src: /src/opendal/bindings/python/src/operator.rs:1606,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 22
    argCount: 11
    argNames:
    - py
    - path
    - expire_second
    - version
    - if_match
    - if_none_match
    - if_modified_since
    - if_unmodified_since
    - content_type
    - cache_control
    - content_disposition
    argTypes:
    - Python<'p>
    - PathBuf
    - u64
    - Option<String>
    - Option<String>
    - Option<String>
    - Option<jiff::Timestamp>
    - Option<jiff::Timestamp>
    - Option<String>
    - Option<String>
    - Option<String>
    constantsTouched: []
    func_position:
      end: 1608
      start: 1573
    functionDepth: 35
    functionLinenumber: 1573
    functionLinenumberEnd: 1608
    functionName: AsyncOperator::presign_stat
    functionSourceFile: /src/opendal/bindings/python/src/operator.rs
    functionUses: 0
    functionsReached:
    - map_err
    - to_string
    - pyo3_async_runtimes::tokio::future_into_py
    - Ok
    - object_store::Result::into
    - clone
    - map
    - presign_stat_options
    - Duration::from_secs
    - to_string_lossy
    linkageType: ''
    returnType: PyResult
    signature: 'pub fn presign_stat<''p>(&''p self,py: Python<''p>,path: PathBuf,expire_second:
      u64,version: Option<String>,if_match: Option<String>,if_none_match: Option<String>,if_modified_since:
      Option<jiff::Timestamp>,if_unmodified_since: Option<jiff::Timestamp>,content_type:
      Option<String>,cache_control: Option<String>,content_disposition: Option<String>,)
      -> PyResult<Bound<''p, PyAny>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: clone
      Src: /src/opendal/bindings/python/src/operator.rs:1663,1
    - Dst: to_string_lossy
      Src: /src/opendal/bindings/python/src/operator.rs:1664,1
    - Dst: to_string
      Src: /src/opendal/bindings/python/src/operator.rs:1664,1
    - Dst: Default::default
      Src: /src/opendal/bindings/python/src/operator.rs:1674,1
    - Dst: pyo3_async_runtimes::tokio::future_into_py
      Src: /src/opendal/bindings/python/src/operator.rs:1676,1
    - Dst: presign_read_options
      Src: /src/opendal/bindings/python/src/operator.rs:1677,1
    - Dst: Duration::from_secs
      Src: /src/opendal/bindings/python/src/operator.rs:1678,1
    - Dst: object_store::Result::into
      Src: /src/opendal/bindings/python/src/operator.rs:1678,1
    - Dst: map_err
      Src: /src/opendal/bindings/python/src/operator.rs:1677,1
    - Dst: map
      Src: /src/opendal/bindings/python/src/operator.rs:1677,1
    - Dst: Ok
      Src: /src/opendal/bindings/python/src/operator.rs:1683,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 23
    argCount: 11
    argNames:
    - py
    - path
    - expire_second
    - version
    - if_match
    - if_none_match
    - if_modified_since
    - if_unmodified_since
    - content_type
    - cache_control
    - content_disposition
    argTypes:
    - Python<'p>
    - PathBuf
    - u64
    - Option<String>
    - Option<String>
    - Option<String>
    - Option<jiff::Timestamp>
    - Option<jiff::Timestamp>
    - Option<String>
    - Option<String>
    - Option<String>
    constantsTouched: []
    func_position:
      end: 1685
      start: 1649
    functionDepth: 35
    functionLinenumber: 1649
    functionLinenumberEnd: 1685
    functionName: AsyncOperator::presign_read
    functionSourceFile: /src/opendal/bindings/python/src/operator.rs
    functionUses: 0
    functionsReached:
    - map_err
    - to_string
    - pyo3_async_runtimes::tokio::future_into_py
    - Ok
    - Default::default
    - object_store::Result::into
    - clone
    - presign_read_options
    - map
    - Duration::from_secs
    - to_string_lossy
    linkageType: ''
    returnType: PyResult
    signature: 'pub fn presign_read<''p>(&''p self,py: Python<''p>,path: PathBuf,expire_second:
      u64,version: Option<String>,if_match: Option<String>,if_none_match: Option<String>,if_modified_since:
      Option<jiff::Timestamp>,if_unmodified_since: Option<jiff::Timestamp>,content_type:
      Option<String>,cache_control: Option<String>,content_disposition: Option<String>,)
      -> PyResult<Bound<''p, PyAny>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: clone
      Src: /src/opendal/bindings/python/src/operator.rs:1740,1
    - Dst: to_string_lossy
      Src: /src/opendal/bindings/python/src/operator.rs:1741,1
    - Dst: to_string
      Src: /src/opendal/bindings/python/src/operator.rs:1741,1
    - Dst: Default::default
      Src: /src/opendal/bindings/python/src/operator.rs:1751,1
    - Dst: pyo3_async_runtimes::tokio::future_into_py
      Src: /src/opendal/bindings/python/src/operator.rs:1753,1
    - Dst: presign_write_options
      Src: /src/opendal/bindings/python/src/operator.rs:1754,1
    - Dst: Duration::from_secs
      Src: /src/opendal/bindings/python/src/operator.rs:1755,1
    - Dst: object_store::Result::into
      Src: /src/opendal/bindings/python/src/operator.rs:1755,1
    - Dst: map_err
      Src: /src/opendal/bindings/python/src/operator.rs:1754,1
    - Dst: map
      Src: /src/opendal/bindings/python/src/operator.rs:1754,1
    - Dst: Ok
      Src: /src/opendal/bindings/python/src/operator.rs:1760,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 23
    argCount: 11
    argNames:
    - py
    - path
    - expire_second
    - content_type
    - content_disposition
    - content_encoding
    - cache_control
    - if_match
    - if_none_match
    - if_not_exists
    - user_metadata
    argTypes:
    - Python<'p>
    - PathBuf
    - u64
    - Option<String>
    - Option<String>
    - Option<String>
    - Option<String>
    - Option<String>
    - Option<String>
    - Option<bool>
    - Option<HashMap<String, String>>
    constantsTouched: []
    func_position:
      end: 1762
      start: 1726
    functionDepth: 35
    functionLinenumber: 1726
    functionLinenumberEnd: 1762
    functionName: AsyncOperator::presign_write
    functionSourceFile: /src/opendal/bindings/python/src/operator.rs
    functionUses: 0
    functionsReached:
    - map_err
    - to_string
    - pyo3_async_runtimes::tokio::future_into_py
    - Ok
    - Default::default
    - object_store::Result::into
    - clone
    - map
    - Duration::from_secs
    - presign_write_options
    - to_string_lossy
    linkageType: ''
    returnType: PyResult
    signature: 'pub fn presign_write<''p>(&''p self,py: Python<''p>,path: PathBuf,expire_second:
      u64,content_type: Option<String>,content_disposition: Option<String>,content_encoding:
      Option<String>,cache_control: Option<String>,if_match: Option<String>,if_none_match:
      Option<String>,if_not_exists: Option<bool>,user_metadata: Option<HashMap<String,
      String>>,) -> PyResult<Bound<''p, PyAny>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: clone
      Src: /src/opendal/bindings/python/src/operator.rs:1787,1
    - Dst: to_string_lossy
      Src: /src/opendal/bindings/python/src/operator.rs:1788,1
    - Dst: to_string
      Src: /src/opendal/bindings/python/src/operator.rs:1788,1
    - Dst: Default::default
      Src: /src/opendal/bindings/python/src/operator.rs:1791,1
    - Dst: pyo3_async_runtimes::tokio::future_into_py
      Src: /src/opendal/bindings/python/src/operator.rs:1793,1
    - Dst: presign_delete_options
      Src: /src/opendal/bindings/python/src/operator.rs:1794,1
    - Dst: Duration::from_secs
      Src: /src/opendal/bindings/python/src/operator.rs:1795,1
    - Dst: object_store::Result::into
      Src: /src/opendal/bindings/python/src/operator.rs:1795,1
    - Dst: map_err
      Src: /src/opendal/bindings/python/src/operator.rs:1794,1
    - Dst: map
      Src: /src/opendal/bindings/python/src/operator.rs:1794,1
    - Dst: Ok
      Src: /src/opendal/bindings/python/src/operator.rs:1800,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 23
    argCount: 4
    argNames:
    - py
    - path
    - expire_second
    - version
    argTypes:
    - Python<'p>
    - PathBuf
    - u64
    - Option<String>
    constantsTouched: []
    func_position:
      end: 1802
      start: 1780
    functionDepth: 35
    functionLinenumber: 1780
    functionLinenumberEnd: 1802
    functionName: AsyncOperator::presign_delete
    functionSourceFile: /src/opendal/bindings/python/src/operator.rs
    functionUses: 0
    functionsReached:
    - map_err
    - to_string
    - pyo3_async_runtimes::tokio::future_into_py
    - Ok
    - Default::default
    - object_store::Result::into
    - clone
    - map
    - presign_delete_options
    - Duration::from_secs
    - to_string_lossy
    linkageType: ''
    returnType: PyResult
    signature: 'pub fn presign_delete<''p>(&''p self,py: Python<''p>,path: PathBuf,expire_second:
      u64,version: Option<String>,) -> PyResult<Bound<''p, PyAny>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/bindings/python/src/operator.rs:1811,1
    - Dst: capability::Capability::new
      Src: /src/opendal/bindings/python/src/operator.rs:1811,1
    - Dst: info
      Src: /src/opendal/bindings/python/src/operator.rs:1811,1
    - Dst: capability
      Src: /src/opendal/bindings/python/src/operator.rs:1811,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 1812
      start: 1810
    functionDepth: 2
    functionLinenumber: 1810
    functionLinenumberEnd: 1812
    functionName: AsyncOperator::capability
    functionSourceFile: /src/opendal/bindings/python/src/operator.rs
    functionUses: 0
    functionsReached:
    - capability::Capability::new
    - info
    - Ok
    - capability
    linkageType: ''
    returnType: PyResult
    signature: pub fn capability(&self) -> PyResult<Capability>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: pyo3_async_runtimes::tokio::get_runtime
      Src: /src/opendal/bindings/python/src/operator.rs:1821,1
    - Dst: enter
      Src: /src/opendal/bindings/python/src/operator.rs:1822,1
    - Dst: ocore::blocking::Operator::new
      Src: /src/opendal/bindings/python/src/operator.rs:1823,1
    - Dst: clone
      Src: /src/opendal/bindings/python/src/operator.rs:1823,1
    - Dst: Result::map_err
      Src: /src/opendal/bindings/python/src/operator.rs:1823,1
    - Dst: Ok
      Src: /src/opendal/bindings/python/src/operator.rs:1825,1
    - Dst: clone
      Src: /src/opendal/bindings/python/src/operator.rs:1827,1
    - Dst: clone
      Src: /src/opendal/bindings/python/src/operator.rs:1828,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 18
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 1830
      start: 1820
    functionDepth: 2
    functionLinenumber: 1820
    functionLinenumberEnd: 1830
    functionName: AsyncOperator::to_operator
    functionSourceFile: /src/opendal/bindings/python/src/operator.rs
    functionUses: 0
    functionsReached:
    - Result::map_err
    - Ok
    - clone
    - ocore::blocking::Operator::new
    - pyo3_async_runtimes::tokio::get_runtime
    - enter
    linkageType: ''
    returnType: PyResult
    signature: pub fn to_operator(&self) -> PyResult<Operator>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: info
      Src: /src/opendal/bindings/python/src/operator.rs:1833,1
    - Dst: ServiceInfo::name
      Src: /src/opendal/bindings/python/src/operator.rs:1834,1
    - Dst: Result::is_empty
      Src: /src/opendal/bindings/python/src/operator.rs:1835,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 1848
      start: 1832
    functionDepth: 4
    functionLinenumber: 1832
    functionLinenumberEnd: 1848
    functionName: AsyncOperator::__repr__
    functionSourceFile: /src/opendal/bindings/python/src/operator.rs
    functionUses: 0
    functionsReached:
    - info
    - Result::is_empty
    - ServiceInfo::name
    linkageType: ''
    returnType: String
    signature: fn __repr__(&self) -> String
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::import
      Src: /src/opendal/bindings/python/src/operator.rs:1850,1
    - Dst: getattr
      Src: /src/opendal/bindings/python/src/operator.rs:1850,1
    - Dst: clone
      Src: /src/opendal/bindings/python/src/operator.rs:1853,1
    - Dst: clone
      Src: /src/opendal/bindings/python/src/operator.rs:1853,1
    - Dst: into_py_any
      Src: /src/opendal/bindings/python/src/operator.rs:1853,1
    - Dst: PyTuple::new
      Src: /src/opendal/bindings/python/src/operator.rs:1854,1
    - Dst: into_py_any
      Src: /src/opendal/bindings/python/src/operator.rs:1854,1
    - Dst: into_py_any
      Src: /src/opendal/bindings/python/src/operator.rs:1854,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 24
    argCount: 1
    argNames:
    - py
    argTypes:
    - Python
    constantsTouched: []
    func_position:
      end: 1855
      start: 1849
    functionDepth: 2
    functionLinenumber: 1849
    functionLinenumberEnd: 1855
    functionName: AsyncOperator::__reduce__
    functionSourceFile: /src/opendal/bindings/python/src/operator.rs
    functionUses: 0
    functionsReached:
    - getattr
    - clone
    - Result::import
    - into_py_any
    - PyTuple::new
    linkageType: ''
    returnType: PyResult
    signature: 'fn __reduce__(&self, py: Python) -> PyResult<Py<PyAny>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: uri
      Src: /src/opendal/bindings/python/src/operator.rs:1869,1
    - Dst: to_string
      Src: /src/opendal/bindings/python/src/operator.rs:1869,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 1870
      start: 1868
    functionDepth: 5
    functionLinenumber: 1868
    functionLinenumberEnd: 1870
    functionName: PresignedRequest::url
    functionSourceFile: /src/opendal/bindings/python/src/operator.rs
    functionUses: 0
    functionsReached:
    - to_string
    - uri
    linkageType: ''
    returnType: String
    signature: pub fn url(&self) -> String
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: HashMap::new
      Src: /src/opendal/bindings/python/src/operator.rs:1886,1
    - Dst: header
      Src: /src/opendal/bindings/python/src/operator.rs:1887,1
    - Dst: iter
      Src: /src/opendal/bindings/python/src/operator.rs:1887,1
    - Dst: Result::as_str
      Src: /src/opendal/bindings/python/src/operator.rs:1888,1
    - Dst: Result::to_str
      Src: /src/opendal/bindings/python/src/operator.rs:1889,1
    - Dst: Result::map_err
      Src: /src/opendal/bindings/python/src/operator.rs:1889,1
    - Dst: Unexpected::new_err
      Src: /src/opendal/bindings/python/src/operator.rs:1891,1
    - Dst: Error::to_string
      Src: /src/opendal/bindings/python/src/operator.rs:1891,1
    - Dst: HashMap::insert
      Src: /src/opendal/bindings/python/src/operator.rs:1892,1
    - Dst: is_some
      Src: /src/opendal/bindings/python/src/operator.rs:1892,1
    - Dst: Err
      Src: /src/opendal/bindings/python/src/operator.rs:1893,1
    - Dst: Unexpected::new_err
      Src: /src/opendal/bindings/python/src/operator.rs:1893,1
    - Dst: Ok
      Src: /src/opendal/bindings/python/src/operator.rs:1896,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 30
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 1897
      start: 1885
    functionDepth: 38
    functionLinenumber: 1885
    functionLinenumberEnd: 1897
    functionName: PresignedRequest::headers
    functionSourceFile: /src/opendal/bindings/python/src/operator.rs
    functionUses: 0
    functionsReached:
    - Result::map_err
    - iter
    - Result::to_str
    - Ok
    - Error::to_string
    - Err
    - HashMap::insert
    - Result::as_str
    - is_some
    - Unexpected::new_err
    - HashMap::new
    - header
    linkageType: ''
    returnType: PyResult
    signature: pub fn headers(&self) -> PyResult<HashMap<&str, &str>>
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 139
      start: 137
    functionDepth: 0
    functionLinenumber: 137
    functionLinenumberEnd: 139
    functionName: Scheme::name
    functionSourceFile: /src/opendal/bindings/python/src/services.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: String
    signature: pub fn name(&self) -> String
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: into
      Src: /src/opendal/bindings/python/src/services.rs:143,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 144
      start: 142
    functionDepth: 29
    functionLinenumber: 142
    functionLinenumberEnd: 144
    functionName: Scheme::value
    functionSourceFile: /src/opendal/bindings/python/src/services.rs
    functionUses: 0
    functionsReached:
    - into
    linkageType: ''
    returnType: '&''static str'
    signature: pub fn value(&self) -> &'static str
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 170
      start: 147
    functionDepth: 0
    functionLinenumber: 147
    functionLinenumberEnd: 170
    functionName: impl_enum_to_str
    functionSourceFile: /src/opendal/bindings/python/src/services.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: ''
    signature: ''
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Q::as_ref
      Src: /src/opendal/bindings/cpp/build.rs:27,1
    - Dst: '&[&''static str]::exists'
      Src: /src/opendal/bindings/cpp/build.rs:27,1
    - Dst: std::fs::remove_file
      Src: /src/opendal/bindings/cpp/build.rs:28,1
    - Dst: std::fs::copy
      Src: /src/opendal/bindings/cpp/build.rs:31,1
    - Dst: Ok
      Src: /src/opendal/bindings/cpp/build.rs:32,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 2
    argNames:
    - src
    - dst
    argTypes:
    - P
    - Q
    constantsTouched: []
    func_position:
      end: 33
      start: 26
    functionDepth: 31
    functionLinenumber: 26
    functionLinenumberEnd: 33
    functionName: build_async::copy_force
    functionSourceFile: /src/opendal/bindings/cpp/build.rs
    functionUses: 0
    functionsReached:
    - Ok
    - std::fs::copy
    - Q::as_ref
    - std::fs::remove_file
    - '&[&''static str]::exists'
    linkageType: ''
    returnType: io::Result
    signature: 'fn copy_force<P: AsRef<Path>, Q: AsRef<Path>>(src: P, dst: Q) -> io::Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: var
      Src: /src/opendal/bindings/cpp/build.rs:36,1
    - Dst: unwrap
      Src: /src/opendal/bindings/cpp/build.rs:36,1
    - Dst: PathBuf::from
      Src: /src/opendal/bindings/cpp/build.rs:37,1
    - Dst: Result::join
      Src: /src/opendal/bindings/cpp/build.rs:37,1
    - Dst: var
      Src: /src/opendal/bindings/cpp/build.rs:39,1
    - Dst: unwrap
      Src: /src/opendal/bindings/cpp/build.rs:39,1
    - Dst: PathBuf::from
      Src: /src/opendal/bindings/cpp/build.rs:40,1
    - Dst: Result::join
      Src: /src/opendal/bindings/cpp/build.rs:40,1
    - Dst: Result::join
      Src: /src/opendal/bindings/cpp/build.rs:40,1
    - Dst: Result::join
      Src: /src/opendal/bindings/cpp/build.rs:40,1
    - Dst: copy_force
      Src: /src/opendal/bindings/cpp/build.rs:45,1
    - Dst: Result::join
      Src: /src/opendal/bindings/cpp/build.rs:45,1
    - Dst: Result::join
      Src: /src/opendal/bindings/cpp/build.rs:45,1
    - Dst: io::Result::unwrap
      Src: /src/opendal/bindings/cpp/build.rs:45,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 24
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 46
      start: 35
    functionDepth: 34
    functionLinenumber: 35
    functionLinenumberEnd: 46
    functionName: build_async::symlink_async_includes
    functionSourceFile: /src/opendal/bindings/cpp/build.rs
    functionUses: 0
    functionsReached:
    - PathBuf::from
    - Result::join
    - copy_force
    - var
    - unwrap
    - io::Result::unwrap
    linkageType: ''
    returnType: void
    signature: pub fn symlink_async_includes()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::mode
      Src: /src/opendal/bindings/cpp/src/types.rs:24,1
    - Dst: Option::into
      Src: /src/opendal/bindings/cpp/src/types.rs:24,1
    - Dst: Result::content_length
      Src: /src/opendal/bindings/cpp/src/types.rs:25,1
    - Dst: Result::cache_control
      Src: /src/opendal/bindings/cpp/src/types.rs:26,1
    - Dst: Result::map
      Src: /src/opendal/bindings/cpp/src/types.rs:26,1
    - Dst: Result::into
      Src: /src/opendal/bindings/cpp/src/types.rs:26,1
    - Dst: Result::content_disposition
      Src: /src/opendal/bindings/cpp/src/types.rs:27,1
    - Dst: Result::map
      Src: /src/opendal/bindings/cpp/src/types.rs:27,1
    - Dst: Result::into
      Src: /src/opendal/bindings/cpp/src/types.rs:27,1
    - Dst: Result::content_md5
      Src: /src/opendal/bindings/cpp/src/types.rs:28,1
    - Dst: Option::map
      Src: /src/opendal/bindings/cpp/src/types.rs:28,1
    - Dst: Result::into
      Src: /src/opendal/bindings/cpp/src/types.rs:28,1
    - Dst: Result::content_type
      Src: /src/opendal/bindings/cpp/src/types.rs:29,1
    - Dst: Result::map
      Src: /src/opendal/bindings/cpp/src/types.rs:29,1
    - Dst: Result::into
      Src: /src/opendal/bindings/cpp/src/types.rs:29,1
    - Dst: Result::content_encoding
      Src: /src/opendal/bindings/cpp/src/types.rs:30,1
    - Dst: Result::map
      Src: /src/opendal/bindings/cpp/src/types.rs:30,1
    - Dst: Result::into
      Src: /src/opendal/bindings/cpp/src/types.rs:30,1
    - Dst: Result::etag
      Src: /src/opendal/bindings/cpp/src/types.rs:31,1
    - Dst: Option::map
      Src: /src/opendal/bindings/cpp/src/types.rs:31,1
    - Dst: Result::into
      Src: /src/opendal/bindings/cpp/src/types.rs:31,1
    - Dst: Result::last_modified
      Src: /src/opendal/bindings/cpp/src/types.rs:32,1
    - Dst: Option::map
      Src: /src/opendal/bindings/cpp/src/types.rs:32,1
    - Dst: Timestamp::to_string
      Src: /src/opendal/bindings/cpp/src/types.rs:32,1
    - Dst: Result::into
      Src: /src/opendal/bindings/cpp/src/types.rs:32,1
    - Dst: Result::version
      Src: /src/opendal/bindings/cpp/src/types.rs:33,1
    - Dst: Result::map
      Src: /src/opendal/bindings/cpp/src/types.rs:33,1
    - Dst: Result::into
      Src: /src/opendal/bindings/cpp/src/types.rs:33,1
    - Dst: Result::is_current
      Src: /src/opendal/bindings/cpp/src/types.rs:34,1
    - Dst: Option::into
      Src: /src/opendal/bindings/cpp/src/types.rs:34,1
    - Dst: Result::is_deleted
      Src: /src/opendal/bindings/cpp/src/types.rs:35,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 64
    argCount: 1
    argNames:
    - meta
    argTypes:
    - od::Metadata
    constantsTouched: []
    func_position:
      end: 51
      start: 23
    functionDepth: 30
    functionLinenumber: 23
    functionLinenumberEnd: 51
    functionName: ffi::Metadata::from
    functionSourceFile: /src/opendal/bindings/cpp/src/types.rs
    functionUses: 0
    functionsReached:
    - Result::is_current
    - Result::last_modified
    - Result::content_encoding
    - Result::version
    - Result::is_deleted
    - Result::cache_control
    - Result::content_disposition
    - Option::map
    - Result::etag
    - Option::into
    - Result::into
    - Result::mode
    - Result::content_md5
    - Timestamp::to_string
    - Result::map
    - Result::content_type
    - Result::content_length
    linkageType: ''
    returnType: Self
    signature: 'fn from(meta: od::Metadata) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: crate::Entry::into_parts
      Src: /src/opendal/bindings/cpp/src/types.rs:56,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - entry
    argTypes:
    - od::Entry
    constantsTouched: []
    func_position:
      end: 58
      start: 55
    functionDepth: 1
    functionLinenumber: 55
    functionLinenumberEnd: 58
    functionName: ffi::Entry::from
    functionSourceFile: /src/opendal/bindings/cpp/src/types.rs
    functionUses: 0
    functionsReached:
    - crate::Entry::into_parts
    linkageType: ''
    returnType: Self
    signature: 'fn from(entry: od::Entry) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - mode
    argTypes:
    - od::EntryMode
    constantsTouched: []
    func_position:
      end: 68
      start: 62
    functionDepth: 0
    functionLinenumber: 62
    functionLinenumberEnd: 68
    functionName: ffi::EntryMode::from
    functionSourceFile: /src/opendal/bindings/cpp/src/types.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: 'fn from(mode: od::EntryMode) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: String::default
      Src: /src/opendal/bindings/cpp/src/types.rs:80,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - s
    argTypes:
    - Option<String>
    constantsTouched: []
    func_position:
      end: 83
      start: 72
    functionDepth: 3
    functionLinenumber: 72
    functionLinenumberEnd: 83
    functionName: ffi::OptionalString::from
    functionSourceFile: /src/opendal/bindings/cpp/src/types.rs
    functionUses: 0
    functionsReached:
    - String::default
    linkageType: ''
    returnType: Self
    signature: 'fn from(s: Option<String>) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - b
    argTypes:
    - Option<bool>
    constantsTouched: []
    func_position:
      end: 98
      start: 87
    functionDepth: 0
    functionLinenumber: 87
    functionLinenumberEnd: 98
    functionName: ffi::OptionalBool::from
    functionSourceFile: /src/opendal/bindings/cpp/src/types.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: 'fn from(b: Option<bool>) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: crate::Entry::into
      Src: /src/opendal/bindings/cpp/src/types.rs:106,1
    - Dst: String::default
      Src: /src/opendal/bindings/cpp/src/types.rs:111,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - entry
    argTypes:
    - Option<od::Entry>
    constantsTouched: []
    func_position:
      end: 115
      start: 102
    functionDepth: 3
    functionLinenumber: 102
    functionLinenumberEnd: 115
    functionName: ffi::OptionalEntry::from
    functionSourceFile: /src/opendal/bindings/cpp/src/types.rs
    functionUses: 0
    functionsReached:
    - crate::Entry::into
    - String::default
    linkageType: ''
    returnType: Self
    signature: 'fn from(entry: Option<od::Entry>) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: std::io::SeekFrom::Start
      Src: /src/opendal/bindings/cpp/src/reader.rs:36,1
    - Dst: std::io::SeekFrom::Current
      Src: /src/opendal/bindings/cpp/src/reader.rs:37,1
    - Dst: std::io::SeekFrom::End
      Src: /src/opendal/bindings/cpp/src/reader.rs:38,1
    - Dst: Err
      Src: /src/opendal/bindings/cpp/src/reader.rs:39,1
    - Dst: Ok
      Src: /src/opendal/bindings/cpp/src/reader.rs:42,1
    - Dst: seek
      Src: /src/opendal/bindings/cpp/src/reader.rs:42,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 2
    argNames:
    - offset
    - dir
    argTypes:
    - u64
    - ffi::SeekFrom
    constantsTouched: []
    func_position:
      end: 43
      start: 34
    functionDepth: 37
    functionLinenumber: 34
    functionLinenumberEnd: 43
    functionName: Reader::seek
    functionSourceFile: /src/opendal/bindings/cpp/src/reader.rs
    functionUses: 1
    functionsReached:
    - Ok
    - std::io::SeekFrom::Start
    - std::io::SeekFrom::Current
    - seek
    - Err
    - std::io::SeekFrom::End
    linkageType: ''
    returnType: Result
    signature: 'pub fn seek(&mut self, offset: u64, dir: ffi::SeekFrom) -> Result<u64>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: get_or_init
      Src: /src/opendal/bindings/cpp/src/async.rs:134,1
    - Dst: Mutex::new
      Src: /src/opendal/bindings/cpp/src/async.rs:134,1
    - Dst: HashMap::new
      Src: /src/opendal/bindings/cpp/src/async.rs:134,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 135
      start: 133
    functionDepth: 2
    functionLinenumber: 133
    functionLinenumberEnd: 135
    functionName: get_reader_storage
    functionSourceFile: /src/opendal/bindings/cpp/src/async.rs
    functionUses: 2
    functionsReached:
    - HashMap::new
    - get_or_init
    - Mutex::new
    linkageType: ''
    returnType: '&''static Mutex'
    signature: fn get_reader_storage() -> &'static Mutex<HashMap<usize, Arc<od::Reader>>>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: get_or_init
      Src: /src/opendal/bindings/cpp/src/async.rs:138,1
    - Dst: Mutex::new
      Src: /src/opendal/bindings/cpp/src/async.rs:138,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 139
      start: 137
    functionDepth: 2
    functionLinenumber: 137
    functionLinenumberEnd: 139
    functionName: get_reader_counter
    functionSourceFile: /src/opendal/bindings/cpp/src/async.rs
    functionUses: 1
    functionsReached:
    - get_or_init
    - Mutex::new
    linkageType: ''
    returnType: '&''static Mutex'
    signature: fn get_reader_counter() -> &'static Mutex<usize>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: get_or_init
      Src: /src/opendal/bindings/cpp/src/async.rs:142,1
    - Dst: Mutex::new
      Src: /src/opendal/bindings/cpp/src/async.rs:142,1
    - Dst: HashMap::new
      Src: /src/opendal/bindings/cpp/src/async.rs:142,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 143
      start: 141
    functionDepth: 2
    functionLinenumber: 141
    functionLinenumberEnd: 143
    functionName: get_lister_storage
    functionSourceFile: /src/opendal/bindings/cpp/src/async.rs
    functionUses: 1
    functionsReached:
    - HashMap::new
    - get_or_init
    - Mutex::new
    linkageType: ''
    returnType: '&''static Mutex'
    signature: fn get_lister_storage() -> &'static Mutex<HashMap<usize, Arc<Mutex<od::Lister>>>>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: get_or_init
      Src: /src/opendal/bindings/cpp/src/async.rs:146,1
    - Dst: Mutex::new
      Src: /src/opendal/bindings/cpp/src/async.rs:146,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 147
      start: 145
    functionDepth: 2
    functionLinenumber: 145
    functionLinenumberEnd: 147
    functionName: get_lister_counter
    functionSourceFile: /src/opendal/bindings/cpp/src/async.rs
    functionUses: 1
    functionsReached:
    - get_or_init
    - Mutex::new
    linkageType: ''
    returnType: '&''static Mutex'
    signature: fn get_lister_counter() -> &'static Mutex<usize>
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 167
      start: 165
    functionDepth: 0
    functionLinenumber: 165
    functionLinenumberEnd: 167
    functionName: ffi::OperatorPtr::deref
    functionSourceFile: /src/opendal/bindings/cpp/src/async.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: '&Self::Target'
    signature: fn deref(&self) -> &Self::Target
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: RustFutureList::fallible
      Src: /src/opendal/bindings/cpp/src/async.rs:195,1
    - Dst: list
      Src: /src/opendal/bindings/cpp/src/async.rs:197,1
    - Dst: map_err
      Src: /src/opendal/bindings/cpp/src/async.rs:197,1
    - Dst: CxxAsyncException::new
      Src: /src/opendal/bindings/cpp/src/async.rs:199,1
    - Dst: Result::to_string
      Src: /src/opendal/bindings/cpp/src/async.rs:199,1
    - Dst: into_boxed_str
      Src: /src/opendal/bindings/cpp/src/async.rs:199,1
    - Dst: Ok
      Src: /src/opendal/bindings/cpp/src/async.rs:200,1
    - Dst: into_iter
      Src: /src/opendal/bindings/cpp/src/async.rs:200,1
    - Dst: map
      Src: /src/opendal/bindings/cpp/src/async.rs:200,1
    - Dst: Result::path
      Src: /src/opendal/bindings/cpp/src/async.rs:200,1
    - Dst: to_string
      Src: /src/opendal/bindings/cpp/src/async.rs:200,1
    - Dst: collect
      Src: /src/opendal/bindings/cpp/src/async.rs:200,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 27
    argCount: 2
    argNames:
    - op
    - path
    argTypes:
    - ffi::OperatorPtr
    - String
    constantsTouched: []
    func_position:
      end: 202
      start: 194
    functionDepth: 34
    functionLinenumber: 194
    functionLinenumberEnd: 202
    functionName: operator_list
    functionSourceFile: /src/opendal/bindings/cpp/src/async.rs
    functionUses: 0
    functionsReached:
    - map_err
    - to_string
    - collect
    - CxxAsyncException::new
    - Result::to_string
    - Ok
    - into_boxed_str
    - into_iter
    - list
    - map
    - RustFutureList::fallible
    - Result::path
    linkageType: ''
    returnType: RustFutureList
    signature: 'unsafe fn operator_list(op: ffi::OperatorPtr, path: String) -> RustFutureList'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: RustFutureBool::fallible
      Src: /src/opendal/bindings/cpp/src/async.rs:205,1
    - Dst: exists
      Src: /src/opendal/bindings/cpp/src/async.rs:206,1
    - Dst: map_err
      Src: /src/opendal/bindings/cpp/src/async.rs:206,1
    - Dst: CxxAsyncException::new
      Src: /src/opendal/bindings/cpp/src/async.rs:208,1
    - Dst: Result::to_string
      Src: /src/opendal/bindings/cpp/src/async.rs:208,1
    - Dst: into_boxed_str
      Src: /src/opendal/bindings/cpp/src/async.rs:208,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 2
    argNames:
    - op
    - path
    argTypes:
    - ffi::OperatorPtr
    - String
    constantsTouched: []
    func_position:
      end: 210
      start: 204
    functionDepth: 31
    functionLinenumber: 204
    functionLinenumberEnd: 210
    functionName: operator_exists
    functionSourceFile: /src/opendal/bindings/cpp/src/async.rs
    functionUses: 0
    functionsReached:
    - map_err
    - CxxAsyncException::new
    - Result::to_string
    - into_boxed_str
    - RustFutureBool::fallible
    - exists
    linkageType: ''
    returnType: RustFutureBool
    signature: 'unsafe fn operator_exists(op: ffi::OperatorPtr, path: String) -> RustFutureBool'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: operator_copy_inner
      Src: /src/opendal/bindings/dotnet/src/operator.rs:677,1
    - Dst: OpendalResult::ok
      Src: /src/opendal/bindings/dotnet/src/operator.rs:678,1
    - Dst: OpendalResult::from_error
      Src: /src/opendal/bindings/dotnet/src/operator.rs:679,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 4
    argNames:
    - op
    - executor
    - source_path
    - target_path
    argTypes:
    - '*const opendal::Operator'
    - '*const c_void'
    - '*const c_char'
    - '*const c_char'
    constantsTouched: []
    func_position:
      end: 681
      start: 671
    functionDepth: 34
    functionLinenumber: 671
    functionLinenumberEnd: 681
    functionName: operator_copy
    functionSourceFile: /src/opendal/bindings/dotnet/src/operator.rs
    functionUses: 0
    functionsReached:
    - OpendalResult::from_error
    - operator_copy_inner
    - OpendalResult::ok
    linkageType: ''
    returnType: OpendalResult
    signature: 'pub extern "C" fn operator_copy(op: *const opendal::Operator,executor:
      *const c_void,source_path: *const c_char,target_path: *const c_char,) -> OpendalResult'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: RustFutureReaderId::fallible
      Src: /src/opendal/bindings/cpp/src/async.rs:246,1
    - Dst: reader
      Src: /src/opendal/bindings/cpp/src/async.rs:248,1
    - Dst: map_err
      Src: /src/opendal/bindings/cpp/src/async.rs:248,1
    - Dst: CxxAsyncException::new
      Src: /src/opendal/bindings/cpp/src/async.rs:250,1
    - Dst: Result::to_string
      Src: /src/opendal/bindings/cpp/src/async.rs:250,1
    - Dst: into_boxed_str
      Src: /src/opendal/bindings/cpp/src/async.rs:250,1
    - Dst: Arc::new
      Src: /src/opendal/bindings/cpp/src/async.rs:253,1
    - Dst: get_reader_counter
      Src: /src/opendal/bindings/cpp/src/async.rs:254,1
    - Dst: '&''static Mutex::lock'
      Src: /src/opendal/bindings/cpp/src/async.rs:254,1
    - Dst: get_reader_storage
      Src: /src/opendal/bindings/cpp/src/async.rs:258,1
    - Dst: '&''static Mutex::lock'
      Src: /src/opendal/bindings/cpp/src/async.rs:258,1
    - Dst: insert
      Src: /src/opendal/bindings/cpp/src/async.rs:259,1
    - Dst: Ok
      Src: /src/opendal/bindings/cpp/src/async.rs:261,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 31
    argCount: 2
    argNames:
    - op
    - path
    argTypes:
    - ffi::OperatorPtr
    - String
    constantsTouched: []
    func_position:
      end: 263
      start: 245
    functionDepth: 31
    functionLinenumber: 245
    functionLinenumberEnd: 263
    functionName: operator_reader
    functionSourceFile: /src/opendal/bindings/cpp/src/async.rs
    functionUses: 0
    functionsReached:
    - map_err
    - insert
    - CxxAsyncException::new
    - reader
    - Result::to_string
    - Ok
    - into_boxed_str
    - Arc::new
    - get_reader_storage
    - '&''static Mutex::lock'
    - get_reader_counter
    - RustFutureReaderId::fallible
    linkageType: ''
    returnType: RustFutureReaderId
    signature: 'unsafe fn operator_reader(op: ffi::OperatorPtr, path: String) -> RustFutureReaderId'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: RustFutureListerId::fallible
      Src: /src/opendal/bindings/cpp/src/async.rs:266,1
    - Dst: lister
      Src: /src/opendal/bindings/cpp/src/async.rs:268,1
    - Dst: map_err
      Src: /src/opendal/bindings/cpp/src/async.rs:268,1
    - Dst: CxxAsyncException::new
      Src: /src/opendal/bindings/cpp/src/async.rs:270,1
    - Dst: Result::to_string
      Src: /src/opendal/bindings/cpp/src/async.rs:270,1
    - Dst: into_boxed_str
      Src: /src/opendal/bindings/cpp/src/async.rs:270,1
    - Dst: Arc::new
      Src: /src/opendal/bindings/cpp/src/async.rs:273,1
    - Dst: Mutex::new
      Src: /src/opendal/bindings/cpp/src/async.rs:273,1
    - Dst: get_lister_counter
      Src: /src/opendal/bindings/cpp/src/async.rs:274,1
    - Dst: '&''static Mutex::lock'
      Src: /src/opendal/bindings/cpp/src/async.rs:274,1
    - Dst: get_lister_storage
      Src: /src/opendal/bindings/cpp/src/async.rs:278,1
    - Dst: '&''static Mutex::lock'
      Src: /src/opendal/bindings/cpp/src/async.rs:278,1
    - Dst: insert
      Src: /src/opendal/bindings/cpp/src/async.rs:279,1
    - Dst: Ok
      Src: /src/opendal/bindings/cpp/src/async.rs:281,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 32
    argCount: 2
    argNames:
    - op
    - path
    argTypes:
    - ffi::OperatorPtr
    - String
    constantsTouched: []
    func_position:
      end: 283
      start: 265
    functionDepth: 36
    functionLinenumber: 265
    functionLinenumberEnd: 283
    functionName: operator_lister
    functionSourceFile: /src/opendal/bindings/cpp/src/async.rs
    functionUses: 0
    functionsReached:
    - map_err
    - insert
    - RustFutureListerId::fallible
    - CxxAsyncException::new
    - Result::to_string
    - get_lister_storage
    - Ok
    - into_boxed_str
    - Arc::new
    - '&''static Mutex::lock'
    - lister
    - get_lister_counter
    - Mutex::new
    linkageType: ''
    returnType: RustFutureListerId
    signature: 'unsafe fn operator_lister(op: ffi::OperatorPtr, path: String) -> RustFutureListerId'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: RustFutureRead::fallible
      Src: /src/opendal/bindings/cpp/src/async.rs:286,1
    - Dst: get_reader_storage
      Src: /src/opendal/bindings/cpp/src/async.rs:287,1
    - Dst: '&''static Mutex::lock'
      Src: /src/opendal/bindings/cpp/src/async.rs:287,1
    - Dst: get
      Src: /src/opendal/bindings/cpp/src/async.rs:288,1
    - Dst: Option::ok_or_else
      Src: /src/opendal/bindings/cpp/src/async.rs:288,1
    - Dst: CxxAsyncException::new
      Src: /src/opendal/bindings/cpp/src/async.rs:290,1
    - Dst: '&str::into'
      Src: /src/opendal/bindings/cpp/src/async.rs:290,1
    - Dst: clone
      Src: /src/opendal/bindings/cpp/src/async.rs:288,1
    - Dst: drop
      Src: /src/opendal/bindings/cpp/src/async.rs:292,1
    - Dst: read
      Src: /src/opendal/bindings/cpp/src/async.rs:294,1
    - Dst: map_err
      Src: /src/opendal/bindings/cpp/src/async.rs:294,1
    - Dst: CxxAsyncException::new
      Src: /src/opendal/bindings/cpp/src/async.rs:297,1
    - Dst: Result::to_string
      Src: /src/opendal/bindings/cpp/src/async.rs:297,1
    - Dst: into_boxed_str
      Src: /src/opendal/bindings/cpp/src/async.rs:297,1
    - Dst: Ok
      Src: /src/opendal/bindings/cpp/src/async.rs:298,1
    - Dst: to_vec
      Src: /src/opendal/bindings/cpp/src/async.rs:298,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 38
    argCount: 3
    argNames:
    - reader
    - start
    - len
    argTypes:
    - ffi::ReaderPtr
    - u64
    - u64
    constantsTouched: []
    func_position:
      end: 300
      start: 285
    functionDepth: 33
    functionLinenumber: 285
    functionLinenumberEnd: 300
    functionName: reader_read
    functionSourceFile: /src/opendal/bindings/cpp/src/async.rs
    functionUses: 0
    functionsReached:
    - map_err
    - read
    - Option::ok_or_else
    - get
    - CxxAsyncException::new
    - Result::to_string
    - Ok
    - get_reader_storage
    - into_boxed_str
    - clone
    - RustFutureRead::fallible
    - '&''static Mutex::lock'
    - to_vec
    - drop
    - '&str::into'
    linkageType: ''
    returnType: RustFutureRead
    signature: 'unsafe fn reader_read(reader: ffi::ReaderPtr, start: u64, len: u64)
      -> RustFutureRead'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: anyhow::Result::is_null
      Src: /src/opendal/bindings/cpp/src/lib.rs:191,1
    - Dst: drop
      Src: /src/opendal/bindings/cpp/src/lib.rs:193,1
    - Dst: Box::from_raw
      Src: /src/opendal/bindings/cpp/src/lib.rs:193,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - reader
    argTypes:
    - '*mut Reader'
    constantsTouched: []
    func_position:
      end: 196
      start: 190
    functionDepth: 33
    functionLinenumber: 190
    functionLinenumberEnd: 196
    functionName: delete_reader
    functionSourceFile: /src/opendal/bindings/cpp/src/lib.rs
    functionUses: 0
    functionsReached:
    - Box::from_raw
    - anyhow::Result::is_null
    - drop
    linkageType: ''
    returnType: void
    signature: 'unsafe fn delete_reader(reader: *mut Reader)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::is_null
      Src: /src/opendal/bindings/cpp/src/lib.rs:199,1
    - Dst: drop
      Src: /src/opendal/bindings/cpp/src/lib.rs:201,1
    - Dst: Box::from_raw
      Src: /src/opendal/bindings/cpp/src/lib.rs:201,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - lister
    argTypes:
    - '*mut Lister'
    constantsTouched: []
    func_position:
      end: 204
      start: 198
    functionDepth: 33
    functionLinenumber: 198
    functionLinenumberEnd: 204
    functionName: delete_lister
    functionSourceFile: /src/opendal/bindings/cpp/src/lib.rs
    functionUses: 0
    functionsReached:
    - Box::from_raw
    - Result::is_null
    - drop
    linkageType: ''
    returnType: void
    signature: 'unsafe fn delete_lister(lister: *mut Lister)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: is_null
      Src: /src/opendal/bindings/cpp/src/lib.rs:183,1
    - Dst: drop
      Src: /src/opendal/bindings/cpp/src/lib.rs:185,1
    - Dst: Box::from_raw
      Src: /src/opendal/bindings/cpp/src/lib.rs:185,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - op
    argTypes:
    - '*mut Operator'
    constantsTouched: []
    func_position:
      end: 188
      start: 182
    functionDepth: 33
    functionLinenumber: 182
    functionLinenumberEnd: 188
    functionName: delete_operator
    functionSourceFile: /src/opendal/bindings/cpp/src/lib.rs
    functionUses: 0
    functionsReached:
    - drop
    - is_null
    - Box::from_raw
    linkageType: ''
    returnType: void
    signature: 'unsafe fn delete_operator(op: *mut Operator)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: delete_iter
      Src: /src/opendal/bindings/nodejs/src/lib.rs:521,1
    - Dst: map_err
      Src: /src/opendal/bindings/nodejs/src/lib.rs:521,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - paths
    argTypes:
    - Vec<String>
    constantsTouched: []
    func_position:
      end: 525
      start: 520
    functionDepth: 35
    functionLinenumber: 520
    functionLinenumberEnd: 525
    functionName: Operator::remove
    functionSourceFile: /src/opendal/bindings/nodejs/src/lib.rs
    functionUses: 0
    functionsReached:
    - map_err
    - delete_iter
    linkageType: ''
    returnType: Result
    signature: 'pub async fn remove(&self, paths: Vec<String>) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: RetryLayer::new
      Src: /src/opendal/bindings/java/src/layer.rs:47,1
    - Dst: with_factor
      Src: /src/opendal/bindings/java/src/layer.rs:48,1
    - Dst: with_min_delay
      Src: /src/opendal/bindings/java/src/layer.rs:49,1
    - Dst: Duration::from_nanos
      Src: /src/opendal/bindings/java/src/layer.rs:49,1
    - Dst: with_max_delay
      Src: /src/opendal/bindings/java/src/layer.rs:50,1
    - Dst: Duration::from_nanos
      Src: /src/opendal/bindings/java/src/layer.rs:50,1
    - Dst: with_jitter
      Src: /src/opendal/bindings/java/src/layer.rs:52,1
    - Dst: with_max_times
      Src: /src/opendal/bindings/java/src/layer.rs:55,1
    - Dst: Box::into_raw
      Src: /src/opendal/bindings/java/src/layer.rs:57,1
    - Dst: Box::new
      Src: /src/opendal/bindings/java/src/layer.rs:57,1
    - Dst: clone
      Src: /src/opendal/bindings/java/src/layer.rs:57,1
    - Dst: Self::layer
      Src: /src/opendal/bindings/java/src/layer.rs:57,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 39
    argCount: 8
    argNames:
    - op
    - jitter
    - factor
    - min_delay
    - max_delay
    - max_times
    argTypes:
    - EnvUnowned<'local>
    - JClass<'local>
    - '*mut Operator'
    - jboolean
    - jfloat
    - jlong
    - jlong
    - jlong
    constantsTouched: []
    func_position:
      end: 58
      start: 36
    functionDepth: 4
    functionLinenumber: 36
    functionLinenumberEnd: 58
    functionName: Java_org_apache_opendal_layer_RetryLayer_doLayer
    functionSourceFile: /src/opendal/bindings/java/src/layer.rs
    functionUses: 0
    functionsReached:
    - with_jitter
    - with_max_times
    - with_min_delay
    - Box::into_raw
    - Duration::from_nanos
    - Box::new
    - Self::layer
    - with_max_delay
    - clone
    - RetryLayer::new
    - with_factor
    linkageType: ''
    returnType: jlong
    signature: 'pub extern "system" fn Java_org_apache_opendal_layer_RetryLayer_doLayer<''local>(_:
      EnvUnowned<''local>,_: JClass<''local>,op: *mut Operator,jitter: jboolean,factor:
      jfloat,min_delay: jlong,max_delay: jlong,max_times: jlong,) -> jlong'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::with_env
      Src: /src/opendal/bindings/java/src/layer.rs:67,1
    - Dst: intern_capability_override_layer
      Src: /src/opendal/bindings/java/src/layer.rs:67,1
    - Dst: "with_env(|env| intern_capability_override_layer(env, op, overrides))\n\
        \        .resolve::<ThrowException>"
      Src: /src/opendal/bindings/java/src/layer.rs:67,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 4
    argNames:
    - env
    - op
    - overrides
    argTypes:
    - EnvUnowned<'local>
    - JClass<'local>
    - '*mut Operator'
    - JString<'local>
    constantsTouched: []
    func_position:
      end: 69
      start: 61
    functionDepth: 31
    functionLinenumber: 61
    functionLinenumberEnd: 69
    functionName: Java_org_apache_opendal_layer_CapabilityOverrideLayer_doLayer
    functionSourceFile: /src/opendal/bindings/java/src/layer.rs
    functionUses: 0
    functionsReached:
    - intern_capability_override_layer
    - "with_env(|env| intern_capability_override_layer(env, op, overrides))\n    \
      \    .resolve::<ThrowException>"
    - Result::with_env
    linkageType: ''
    returnType: jlong
    signature: 'pub extern "system" fn Java_org_apache_opendal_layer_CapabilityOverrideLayer_doLayer<''local>(mut
      env: EnvUnowned<''local>,_: JClass<''local>,op: *mut Operator,overrides: JString<''local>,)
      -> jlong'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: convert::jstring_to_string
      Src: /src/opendal/bindings/java/src/layer.rs:77,1
    - Dst: CapabilityOverrideLayer::from_overrides
      Src: /src/opendal/bindings/java/src/layer.rs:78,1
    - Dst: Ok
      Src: /src/opendal/bindings/java/src/layer.rs:79,1
    - Dst: Box::into_raw
      Src: /src/opendal/bindings/java/src/layer.rs:79,1
    - Dst: Box::new
      Src: /src/opendal/bindings/java/src/layer.rs:79,1
    - Dst: clone
      Src: /src/opendal/bindings/java/src/layer.rs:79,1
    - Dst: Self::layer
      Src: /src/opendal/bindings/java/src/layer.rs:79,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 3
    argNames:
    - env
    - op
    - overrides
    argTypes:
    - '&mut Env'
    - '*mut Operator'
    - JString
    constantsTouched: []
    func_position:
      end: 80
      start: 71
    functionDepth: 30
    functionLinenumber: 71
    functionLinenumberEnd: 80
    functionName: intern_capability_override_layer
    functionSourceFile: /src/opendal/bindings/java/src/layer.rs
    functionUses: 1
    functionsReached:
    - Ok
    - Box::new
    - CapabilityOverrideLayer::from_overrides
    - Self::layer
    - clone
    - convert::jstring_to_string
    - Box::into_raw
    linkageType: ''
    returnType: Result
    signature: 'fn intern_capability_override_layer(env: &mut Env,op: *mut Operator,overrides:
      JString,) -> Result<jlong>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: ConcurrentLimitLayer::new
      Src: /src/opendal/bindings/java/src/layer.rs:90,1
    - Dst: Box::into_raw
      Src: /src/opendal/bindings/java/src/layer.rs:91,1
    - Dst: Box::new
      Src: /src/opendal/bindings/java/src/layer.rs:91,1
    - Dst: clone
      Src: /src/opendal/bindings/java/src/layer.rs:91,1
    - Dst: Self::layer
      Src: /src/opendal/bindings/java/src/layer.rs:91,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 4
    argNames:
    - op
    - permits
    argTypes:
    - EnvUnowned<'local>
    - JClass<'local>
    - '*mut Operator'
    - jlong
    constantsTouched: []
    func_position:
      end: 92
      start: 83
    functionDepth: 2
    functionLinenumber: 83
    functionLinenumberEnd: 92
    functionName: Java_org_apache_opendal_layer_ConcurrentLimitLayer_doLayer
    functionSourceFile: /src/opendal/bindings/java/src/layer.rs
    functionUses: 0
    functionsReached:
    - Box::new
    - Self::layer
    - clone
    - ConcurrentLimitLayer::new
    - Box::into_raw
    linkageType: ''
    returnType: jlong
    signature: 'pub extern "system" fn Java_org_apache_opendal_layer_ConcurrentLimitLayer_doLayer<''local>(_:
      EnvUnowned<''local>,_: JClass<''local>,op: *mut Operator,permits: jlong,) ->
      jlong'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::with_env
      Src: /src/opendal/bindings/java/src/async_operator.rs:56,1
    - Dst: intern_constructor
      Src: /src/opendal/bindings/java/src/async_operator.rs:56,1
    - Dst: "with_env(|env| intern_constructor(env, scheme, map))\n        .resolve::<ThrowException>"
      Src: /src/opendal/bindings/java/src/async_operator.rs:56,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 4
    argNames:
    - env
    - scheme
    - map
    argTypes:
    - EnvUnowned<'local>
    - JClass<'local>
    - JString<'local>
    - JObject<'local>
    constantsTouched: []
    func_position:
      end: 58
      start: 50
    functionDepth: 31
    functionLinenumber: 50
    functionLinenumberEnd: 58
    functionName: Java_org_apache_opendal_AsyncOperator_constructor
    functionSourceFile: /src/opendal/bindings/java/src/async_operator.rs
    functionUses: 0
    functionsReached:
    - intern_constructor
    - "with_env(|env| intern_constructor(env, scheme, map))\n        .resolve::<ThrowException>"
    - Result::with_env
    linkageType: ''
    returnType: jlong
    signature: 'pub extern "system" fn Java_org_apache_opendal_AsyncOperator_constructor<''local>(mut
      env: EnvUnowned<''local>,_: JClass<''local>,scheme: JString<''local>,map: JObject<''local>,)
      -> jlong'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: convert::jstring_to_string
      Src: /src/opendal/bindings/java/src/async_operator.rs:61,1
    - Dst: convert::jmap_to_hashmap
      Src: /src/opendal/bindings/java/src/async_operator.rs:62,1
    - Dst: Operator::via_iter
      Src: /src/opendal/bindings/java/src/async_operator.rs:63,1
    - Dst: Ok
      Src: /src/opendal/bindings/java/src/async_operator.rs:64,1
    - Dst: Box::into_raw
      Src: /src/opendal/bindings/java/src/async_operator.rs:64,1
    - Dst: Box::new
      Src: /src/opendal/bindings/java/src/async_operator.rs:64,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 3
    argNames:
    - env
    - scheme
    - map
    argTypes:
    - '&mut Env'
    - JString
    - JObject
    constantsTouched: []
    func_position:
      end: 65
      start: 60
    functionDepth: 30
    functionLinenumber: 60
    functionLinenumberEnd: 65
    functionName: intern_constructor
    functionSourceFile: /src/opendal/bindings/java/src/async_operator.rs
    functionUses: 1
    functionsReached:
    - Operator::via_iter
    - convert::jmap_to_hashmap
    - Ok
    - Box::new
    - convert::jstring_to_string
    - Box::into_raw
    linkageType: ''
    returnType: Result
    signature: 'fn intern_constructor(env: &mut Env, scheme: JString, map: JObject)
      -> Result<jlong>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Box::into_raw
      Src: /src/opendal/bindings/java/src/async_operator.rs:77,1
    - Dst: Box::new
      Src: /src/opendal/bindings/java/src/async_operator.rs:77,1
    - Dst: clone
      Src: /src/opendal/bindings/java/src/async_operator.rs:77,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - op
    argTypes:
    - EnvUnowned<'local>
    - JClass<'local>
    - '*mut Operator'
    constantsTouched: []
    func_position:
      end: 78
      start: 71
    functionDepth: 2
    functionLinenumber: 71
    functionLinenumberEnd: 78
    functionName: Java_org_apache_opendal_AsyncOperator_duplicate
    functionSourceFile: /src/opendal/bindings/java/src/async_operator.rs
    functionUses: 0
    functionsReached:
    - Box::new
    - clone
    - Box::into_raw
    linkageType: ''
    returnType: jlong
    signature: 'pub unsafe extern "system" fn Java_org_apache_opendal_AsyncOperator_duplicate<''local>(_:
      EnvUnowned<''local>,_: JClass<''local>,op: *mut Operator,) -> jlong'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: drop
      Src: /src/opendal/bindings/java/src/async_operator.rs:90,1
    - Dst: Box::from_raw
      Src: /src/opendal/bindings/java/src/async_operator.rs:90,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - op
    argTypes:
    - EnvUnowned<'local>
    - JObject<'local>
    - '*mut Operator'
    constantsTouched: []
    func_position:
      end: 92
      start: 84
    functionDepth: 33
    functionLinenumber: 84
    functionLinenumberEnd: 92
    functionName: Java_org_apache_opendal_AsyncOperator_disposeInternal
    functionSourceFile: /src/opendal/bindings/java/src/async_operator.rs
    functionUses: 0
    functionsReached:
    - Box::from_raw
    - drop
    linkageType: ''
    returnType: void
    signature: 'pub unsafe extern "system" fn Java_org_apache_opendal_AsyncOperator_disposeInternal<''local>(_:
      EnvUnowned<''local>,_: JObject<''local>,op: *mut Operator,)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::with_env
      Src: /src/opendal/bindings/java/src/async_operator.rs:107,1
    - Dst: intern_write
      Src: /src/opendal/bindings/java/src/async_operator.rs:107,1
    - Dst: "with_env(|env| intern_write(env, op, executor, path, content, write_options))\n\
        \        .resolve::<ThrowException>"
      Src: /src/opendal/bindings/java/src/async_operator.rs:107,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 7
    argNames:
    - env
    - op
    - executor
    - path
    - content
    - write_options
    argTypes:
    - EnvUnowned<'local>
    - JClass<'local>
    - '*mut Operator'
    - '*const Executor'
    - JString<'local>
    - JByteArray<'local>
    - JObject<'local>
    constantsTouched: []
    func_position:
      end: 109
      start: 98
    functionDepth: 31
    functionLinenumber: 98
    functionLinenumberEnd: 109
    functionName: Java_org_apache_opendal_AsyncOperator_write
    functionSourceFile: /src/opendal/bindings/java/src/async_operator.rs
    functionUses: 0
    functionsReached:
    - "with_env(|env| intern_write(env, op, executor, path, content, write_options))\n\
      \        .resolve::<ThrowException>"
    - intern_write
    - Result::with_env
    linkageType: ''
    returnType: jlong
    signature: 'pub unsafe extern "system" fn Java_org_apache_opendal_AsyncOperator_write<''local>(mut
      env: EnvUnowned<''local>,_: JClass<''local>,op: *mut Operator,executor: *const
      Executor,path: JString<''local>,content: JByteArray<''local>,write_options:
      JObject<''local>,) -> jlong'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: convert::jstring_to_string
      Src: /src/opendal/bindings/java/src/operator.rs:122,1
    - Dst: Result::convert_byte_array
      Src: /src/opendal/bindings/java/src/operator.rs:123,1
    - Dst: make_write_options
      Src: /src/opendal/bindings/java/src/operator.rs:124,1
    - Dst: write_options
      Src: /src/opendal/bindings/java/src/operator.rs:126,1
    - Dst: Ok
      Src: /src/opendal/bindings/java/src/operator.rs:127,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 5
    argNames:
    - env
    - op
    - path
    - content
    - options
    argTypes:
    - '&mut Env<''local>'
    - '&mut blocking::Operator'
    - JString<'local>
    - JByteArray<'local>
    - JObject<'local>
    constantsTouched: []
    func_position:
      end: 128
      start: 115
    functionDepth: 30
    functionLinenumber: 115
    functionLinenumberEnd: 128
    functionName: intern_write
    functionSourceFile: /src/opendal/bindings/java/src/operator.rs
    functionUses: 2
    functionsReached:
    - Ok
    - write_options
    - convert::jstring_to_string
    - Result::convert_byte_array
    - make_write_options
    linkageType: ''
    returnType: Result
    signature: 'fn intern_write<''local>(env: &mut Env<''local>,op: &mut blocking::Operator,path:
      JString<''local>,content: JByteArray<''local>,options: JObject<''local>,) ->
      Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::with_env
      Src: /src/opendal/bindings/java/src/async_operator.rs:149,1
    - Dst: intern_stat
      Src: /src/opendal/bindings/java/src/async_operator.rs:149,1
    - Dst: "with_env(|env| intern_stat(env, op, executor, path, stat_options))\n \
        \       .resolve::<ThrowException>"
      Src: /src/opendal/bindings/java/src/async_operator.rs:149,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 6
    argNames:
    - env
    - op
    - executor
    - path
    - stat_options
    argTypes:
    - EnvUnowned<'local>
    - JClass<'local>
    - '*mut Operator'
    - '*const Executor'
    - JString<'local>
    - JObject<'local>
    constantsTouched: []
    func_position:
      end: 151
      start: 141
    functionDepth: 31
    functionLinenumber: 141
    functionLinenumberEnd: 151
    functionName: Java_org_apache_opendal_AsyncOperator_stat
    functionSourceFile: /src/opendal/bindings/java/src/async_operator.rs
    functionUses: 0
    functionsReached:
    - intern_stat
    - "with_env(|env| intern_stat(env, op, executor, path, stat_options))\n      \
      \  .resolve::<ThrowException>"
    - Result::with_env
    linkageType: ''
    returnType: jlong
    signature: 'pub unsafe extern "system" fn Java_org_apache_opendal_AsyncOperator_stat<''local>(mut
      env: EnvUnowned<''local>,_: JClass<''local>,op: *mut Operator,executor: *const
      Executor,path: JString<''local>,stat_options: JObject<''local>,) -> jlong'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: convert::jstring_to_string
      Src: /src/opendal/bindings/java/src/operator.rs:154,1
    - Dst: make_stat_options
      Src: /src/opendal/bindings/java/src/operator.rs:155,1
    - Dst: stat_options
      Src: /src/opendal/bindings/java/src/operator.rs:156,1
    - Dst: make_metadata
      Src: /src/opendal/bindings/java/src/operator.rs:157,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 4
    argNames:
    - env
    - op
    - path
    - options
    argTypes:
    - '&mut Env<''local>'
    - '&mut blocking::Operator'
    - JString<'local>
    - JObject<'local>
    constantsTouched: []
    func_position:
      end: 158
      start: 148
    functionDepth: 30
    functionLinenumber: 148
    functionLinenumberEnd: 158
    functionName: intern_stat
    functionSourceFile: /src/opendal/bindings/java/src/operator.rs
    functionUses: 2
    functionsReached:
    - convert::jstring_to_string
    - make_stat_options
    - make_metadata
    - stat_options
    linkageType: ''
    returnType: Result
    signature: 'fn intern_stat<''local>(env: &mut Env<''local>,op: &mut blocking::Operator,path:
      JString<''local>,options: JObject<''local>,) -> Result<JObject<''local>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::with_env
      Src: /src/opendal/bindings/java/src/async_operator.rs:186,1
    - Dst: intern_read
      Src: /src/opendal/bindings/java/src/async_operator.rs:186,1
    - Dst: "with_env(|env| intern_read(env, op, executor, path, read_options))\n \
        \       .resolve::<ThrowException>"
      Src: /src/opendal/bindings/java/src/async_operator.rs:186,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 6
    argNames:
    - env
    - op
    - executor
    - path
    - read_options
    argTypes:
    - EnvUnowned<'local>
    - JClass<'local>
    - '*mut Operator'
    - '*const Executor'
    - JString<'local>
    - JObject<'local>
    constantsTouched: []
    func_position:
      end: 188
      start: 178
    functionDepth: 31
    functionLinenumber: 178
    functionLinenumberEnd: 188
    functionName: Java_org_apache_opendal_AsyncOperator_read
    functionSourceFile: /src/opendal/bindings/java/src/async_operator.rs
    functionUses: 0
    functionsReached:
    - intern_read
    - "with_env(|env| intern_read(env, op, executor, path, read_options))\n      \
      \  .resolve::<ThrowException>"
    - Result::with_env
    linkageType: ''
    returnType: jlong
    signature: 'pub unsafe extern "system" fn Java_org_apache_opendal_AsyncOperator_read<''local>(mut
      env: EnvUnowned<''local>,_: JClass<''local>,op: *mut Operator,executor: *const
      Executor,path: JString<''local>,read_options: JObject<''local>,) -> jlong'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: convert::jstring_to_string
      Src: /src/opendal/bindings/java/src/operator.rs:89,1
    - Dst: make_read_options
      Src: /src/opendal/bindings/java/src/operator.rs:90,1
    - Dst: read_options
      Src: /src/opendal/bindings/java/src/operator.rs:91,1
    - Dst: convert::bytes_to_jbytearray
      Src: /src/opendal/bindings/java/src/operator.rs:93,1
    - Dst: Result::to_bytes
      Src: /src/opendal/bindings/java/src/operator.rs:93,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 4
    argNames:
    - env
    - op
    - path
    - options
    argTypes:
    - '&mut Env<''local>'
    - '&mut blocking::Operator'
    - JString<'local>
    - JObject<'local>
    constantsTouched: []
    func_position:
      end: 94
      start: 81
    functionDepth: 30
    functionLinenumber: 81
    functionLinenumberEnd: 94
    functionName: intern_read
    functionSourceFile: /src/opendal/bindings/java/src/operator.rs
    functionUses: 2
    functionsReached:
    - make_read_options
    - Result::to_bytes
    - convert::jstring_to_string
    - convert::bytes_to_jbytearray
    - read_options
    linkageType: ''
    returnType: Result
    signature: 'fn intern_read<''local>(env: &mut Env<''local>,op: &mut blocking::Operator,path:
      JString<''local>,options: JObject<''local>,) -> Result<JByteArray<''local>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::with_env
      Src: /src/opendal/bindings/java/src/async_operator.rs:231,1
    - Dst: intern_delete
      Src: /src/opendal/bindings/java/src/async_operator.rs:231,1
    - Dst: "with_env(|env| intern_delete(env, op, executor, path))\n        .resolve::<ThrowException>"
      Src: /src/opendal/bindings/java/src/async_operator.rs:231,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 5
    argNames:
    - env
    - op
    - executor
    - path
    argTypes:
    - EnvUnowned<'local>
    - JClass<'local>
    - '*mut Operator'
    - '*const Executor'
    - JString<'local>
    constantsTouched: []
    func_position:
      end: 233
      start: 224
    functionDepth: 31
    functionLinenumber: 224
    functionLinenumberEnd: 233
    functionName: Java_org_apache_opendal_AsyncOperator_delete
    functionSourceFile: /src/opendal/bindings/java/src/async_operator.rs
    functionUses: 0
    functionsReached:
    - intern_delete
    - Result::with_env
    - "with_env(|env| intern_delete(env, op, executor, path))\n        .resolve::<ThrowException>"
    linkageType: ''
    returnType: jlong
    signature: 'pub unsafe extern "system" fn Java_org_apache_opendal_AsyncOperator_delete<''local>(mut
      env: EnvUnowned<''local>,_: JClass<''local>,op: *mut Operator,executor: *const
      Executor,path: JString<''local>,) -> jlong'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: convert::jstring_to_string
      Src: /src/opendal/bindings/java/src/operator.rs:182,1
    - Dst: Ok
      Src: /src/opendal/bindings/java/src/operator.rs:183,1
    - Dst: delete
      Src: /src/opendal/bindings/java/src/operator.rs:183,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 3
    argNames:
    - env
    - op
    - path
    argTypes:
    - '&mut Env<''local>'
    - '&mut blocking::Operator'
    - JString<'local>
    constantsTouched: []
    func_position:
      end: 184
      start: 177
    functionDepth: 30
    functionLinenumber: 177
    functionLinenumberEnd: 184
    functionName: intern_delete
    functionSourceFile: /src/opendal/bindings/java/src/operator.rs
    functionUses: 2
    functionsReached:
    - convert::jstring_to_string
    - Ok
    - delete
    linkageType: ''
    returnType: Result
    signature: 'fn intern_delete<''local>(env: &mut Env<''local>,op: &mut blocking::Operator,path:
      JString<''local>,) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::with_env
      Src: /src/opendal/bindings/java/src/async_operator.rs:267,1
    - Dst: intern_make_blocking_op
      Src: /src/opendal/bindings/java/src/async_operator.rs:267,1
    - Dst: "with_env(|env| intern_make_blocking_op(env, op, executor))\n        .resolve::<ThrowException>"
      Src: /src/opendal/bindings/java/src/async_operator.rs:267,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 4
    argNames:
    - env
    - op
    - executor
    argTypes:
    - EnvUnowned<'local>
    - JClass<'local>
    - '*mut Operator'
    - '*const Executor'
    constantsTouched: []
    func_position:
      end: 269
      start: 261
    functionDepth: 36
    functionLinenumber: 261
    functionLinenumberEnd: 269
    functionName: Java_org_apache_opendal_AsyncOperator_makeBlockingOp
    functionSourceFile: /src/opendal/bindings/java/src/async_operator.rs
    functionUses: 0
    functionsReached:
    - intern_make_blocking_op
    - "with_env(|env| intern_make_blocking_op(env, op, executor))\n        .resolve::<ThrowException>"
    - Result::with_env
    linkageType: ''
    returnType: jlong
    signature: 'pub unsafe extern "system" fn Java_org_apache_opendal_AsyncOperator_makeBlockingOp<''local>(mut
      env: EnvUnowned<''local>,_: JClass<''local>,op: *mut Operator,executor: *const
      Executor,) -> jlong'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: executor::executor_or_default
      Src: /src/opendal/bindings/java/src/async_operator.rs:278,1
    - Dst: enter_with
      Src: /src/opendal/bindings/java/src/async_operator.rs:278,1
    - Dst: blocking::Operator::new
      Src: /src/opendal/bindings/java/src/async_operator.rs:278,1
    - Dst: clone
      Src: /src/opendal/bindings/java/src/async_operator.rs:278,1
    - Dst: Ok
      Src: /src/opendal/bindings/java/src/async_operator.rs:279,1
    - Dst: Box::into_raw
      Src: /src/opendal/bindings/java/src/async_operator.rs:279,1
    - Dst: Box::new
      Src: /src/opendal/bindings/java/src/async_operator.rs:279,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 3
    argNames:
    - _env
    - op
    - executor
    argTypes:
    - '&mut Env'
    - '*mut Operator'
    - '*const Executor'
    constantsTouched: []
    func_position:
      end: 280
      start: 271
    functionDepth: 35
    functionLinenumber: 271
    functionLinenumberEnd: 280
    functionName: intern_make_blocking_op
    functionSourceFile: /src/opendal/bindings/java/src/async_operator.rs
    functionUses: 1
    functionsReached:
    - enter_with
    - Ok
    - Box::new
    - executor::executor_or_default
    - clone
    - blocking::Operator::new
    - Box::into_raw
    linkageType: ''
    returnType: Result
    signature: 'fn intern_make_blocking_op(_env: &mut Env,op: *mut Operator,executor:
      *const Executor,) -> Result<jlong>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::with_env
      Src: /src/opendal/bindings/java/src/async_operator.rs:291,1
    - Dst: intern_make_operator_info
      Src: /src/opendal/bindings/java/src/async_operator.rs:291,1
    - Dst: "with_env(|env| intern_make_operator_info(env, op))\n        .resolve::<ThrowException>"
      Src: /src/opendal/bindings/java/src/async_operator.rs:291,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 3
    argNames:
    - env
    - op
    argTypes:
    - EnvUnowned<'local>
    - JClass<'local>
    - '*mut Operator'
    constantsTouched: []
    func_position:
      end: 293
      start: 286
    functionDepth: 5
    functionLinenumber: 286
    functionLinenumberEnd: 293
    functionName: Java_org_apache_opendal_AsyncOperator_makeOperatorInfo
    functionSourceFile: /src/opendal/bindings/java/src/async_operator.rs
    functionUses: 0
    functionsReached:
    - "with_env(|env| intern_make_operator_info(env, op))\n        .resolve::<ThrowException>"
    - intern_make_operator_info
    - Result::with_env
    linkageType: ''
    returnType: JObject
    signature: 'pub unsafe extern "system" fn Java_org_apache_opendal_AsyncOperator_makeOperatorInfo<''local>(mut
      env: EnvUnowned<''local>,_: JClass<''local>,op: *mut Operator,) -> JObject<''local>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: make_operator_info
      Src: /src/opendal/bindings/java/src/async_operator.rs:300,1
    - Dst: info
      Src: /src/opendal/bindings/java/src/async_operator.rs:300,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - env
    - op
    argTypes:
    - '&mut Env<''local>'
    - '*mut Operator'
    constantsTouched: []
    func_position:
      end: 301
      start: 295
    functionDepth: 4
    functionLinenumber: 295
    functionLinenumberEnd: 301
    functionName: intern_make_operator_info
    functionSourceFile: /src/opendal/bindings/java/src/async_operator.rs
    functionUses: 1
    functionsReached:
    - info
    - make_operator_info
    linkageType: ''
    returnType: Result
    signature: 'fn intern_make_operator_info<''local>(env: &mut Env<''local>,op: *mut
      Operator,) -> Result<JObject<''local>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::with_env
      Src: /src/opendal/bindings/java/src/async_operator.rs:314,1
    - Dst: intern_create_dir
      Src: /src/opendal/bindings/java/src/async_operator.rs:314,1
    - Dst: "with_env(|env| intern_create_dir(env, op, executor, path))\n        .resolve::<ThrowException>"
      Src: /src/opendal/bindings/java/src/async_operator.rs:314,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 5
    argNames:
    - env
    - op
    - executor
    - path
    argTypes:
    - EnvUnowned<'local>
    - JClass<'local>
    - '*mut Operator'
    - '*const Executor'
    - JString<'local>
    constantsTouched: []
    func_position:
      end: 316
      start: 307
    functionDepth: 31
    functionLinenumber: 307
    functionLinenumberEnd: 316
    functionName: Java_org_apache_opendal_AsyncOperator_createDir
    functionSourceFile: /src/opendal/bindings/java/src/async_operator.rs
    functionUses: 0
    functionsReached:
    - "with_env(|env| intern_create_dir(env, op, executor, path))\n        .resolve::<ThrowException>"
    - intern_create_dir
    - Result::with_env
    linkageType: ''
    returnType: jlong
    signature: 'pub unsafe extern "system" fn Java_org_apache_opendal_AsyncOperator_createDir<''local>(mut
      env: EnvUnowned<''local>,_: JClass<''local>,op: *mut Operator,executor: *const
      Executor,path: JString<''local>,) -> jlong'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: convert::jstring_to_string
      Src: /src/opendal/bindings/java/src/operator.rs:208,1
    - Dst: Ok
      Src: /src/opendal/bindings/java/src/operator.rs:209,1
    - Dst: create_dir
      Src: /src/opendal/bindings/java/src/operator.rs:209,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 3
    argNames:
    - env
    - op
    - path
    argTypes:
    - '&mut Env<''local>'
    - '&mut blocking::Operator'
    - JString<'local>
    constantsTouched: []
    func_position:
      end: 210
      start: 203
    functionDepth: 30
    functionLinenumber: 203
    functionLinenumberEnd: 210
    functionName: intern_create_dir
    functionSourceFile: /src/opendal/bindings/java/src/operator.rs
    functionUses: 2
    functionsReached:
    - convert::jstring_to_string
    - create_dir
    - Ok
    linkageType: ''
    returnType: Result
    signature: 'fn intern_create_dir<''local>(env: &mut Env<''local>,op: &mut blocking::Operator,path:
      JString<''local>,) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::with_env
      Src: /src/opendal/bindings/java/src/async_operator.rs:352,1
    - Dst: intern_copy
      Src: /src/opendal/bindings/java/src/async_operator.rs:352,1
    - Dst: "with_env(|env| intern_copy(env, op, executor, source_path, target_path))\n\
        \        .resolve::<ThrowException>"
      Src: /src/opendal/bindings/java/src/async_operator.rs:352,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 6
    argNames:
    - env
    - op
    - executor
    - source_path
    - target_path
    argTypes:
    - EnvUnowned<'local>
    - JClass<'local>
    - '*mut Operator'
    - '*const Executor'
    - JString<'local>
    - JString<'local>
    constantsTouched: []
    func_position:
      end: 354
      start: 344
    functionDepth: 31
    functionLinenumber: 344
    functionLinenumberEnd: 354
    functionName: Java_org_apache_opendal_AsyncOperator_copy
    functionSourceFile: /src/opendal/bindings/java/src/async_operator.rs
    functionUses: 0
    functionsReached:
    - intern_copy
    - Result::with_env
    - "with_env(|env| intern_copy(env, op, executor, source_path, target_path))\n\
      \        .resolve::<ThrowException>"
    linkageType: ''
    returnType: jlong
    signature: 'pub unsafe extern "system" fn Java_org_apache_opendal_AsyncOperator_copy<''local>(mut
      env: EnvUnowned<''local>,_: JClass<''local>,op: *mut Operator,executor: *const
      Executor,source_path: JString<''local>,target_path: JString<''local>,) -> jlong'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: convert::jstring_to_string
      Src: /src/opendal/bindings/java/src/operator.rs:236,1
    - Dst: convert::jstring_to_string
      Src: /src/opendal/bindings/java/src/operator.rs:237,1
    - Dst: copy
      Src: /src/opendal/bindings/java/src/operator.rs:239,1
    - Dst: Ok
      Src: /src/opendal/bindings/java/src/operator.rs:240,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 4
    argNames:
    - env
    - op
    - source_path
    - target_path
    argTypes:
    - '&mut Env<''local>'
    - '&mut blocking::Operator'
    - JString<'local>
    - JString<'local>
    constantsTouched: []
    func_position:
      end: 241
      start: 230
    functionDepth: 30
    functionLinenumber: 230
    functionLinenumberEnd: 241
    functionName: intern_copy
    functionSourceFile: /src/opendal/bindings/java/src/operator.rs
    functionUses: 2
    functionsReached:
    - convert::jstring_to_string
    - Ok
    - copy
    linkageType: ''
    returnType: Result
    signature: 'fn intern_copy<''local>(env: &mut Env<''local>,op: &mut blocking::Operator,source_path:
      JString<''local>,target_path: JString<''local>,) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::with_env
      Src: /src/opendal/bindings/java/src/async_operator.rs:392,1
    - Dst: intern_rename
      Src: /src/opendal/bindings/java/src/async_operator.rs:392,1
    - Dst: "with_env(|env| intern_rename(env, op, executor, source_path, target_path))\n\
        \        .resolve::<ThrowException>"
      Src: /src/opendal/bindings/java/src/async_operator.rs:392,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 6
    argNames:
    - env
    - op
    - executor
    - source_path
    - target_path
    argTypes:
    - EnvUnowned<'local>
    - JClass<'local>
    - '*mut Operator'
    - '*const Executor'
    - JString<'local>
    - JString<'local>
    constantsTouched: []
    func_position:
      end: 394
      start: 384
    functionDepth: 31
    functionLinenumber: 384
    functionLinenumberEnd: 394
    functionName: Java_org_apache_opendal_AsyncOperator_rename
    functionSourceFile: /src/opendal/bindings/java/src/async_operator.rs
    functionUses: 0
    functionsReached:
    - "with_env(|env| intern_rename(env, op, executor, source_path, target_path))\n\
      \        .resolve::<ThrowException>"
    - intern_rename
    - Result::with_env
    linkageType: ''
    returnType: jlong
    signature: 'pub unsafe extern "system" fn Java_org_apache_opendal_AsyncOperator_rename<''local>(mut
      env: EnvUnowned<''local>,_: JClass<''local>,op: *mut Operator,executor: *const
      Executor,source_path: JString<''local>,target_path: JString<''local>,) -> jlong'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: convert::jstring_to_string
      Src: /src/opendal/bindings/java/src/operator.rs:267,1
    - Dst: convert::jstring_to_string
      Src: /src/opendal/bindings/java/src/operator.rs:268,1
    - Dst: Ok
      Src: /src/opendal/bindings/java/src/operator.rs:270,1
    - Dst: rename
      Src: /src/opendal/bindings/java/src/operator.rs:270,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 4
    argNames:
    - env
    - op
    - source_path
    - target_path
    argTypes:
    - '&mut Env<''local>'
    - '&mut blocking::Operator'
    - JString<'local>
    - JString<'local>
    constantsTouched: []
    func_position:
      end: 271
      start: 261
    functionDepth: 30
    functionLinenumber: 261
    functionLinenumberEnd: 271
    functionName: intern_rename
    functionSourceFile: /src/opendal/bindings/java/src/operator.rs
    functionUses: 2
    functionsReached:
    - convert::jstring_to_string
    - rename
    - Ok
    linkageType: ''
    returnType: Result
    signature: 'fn intern_rename<''local>(env: &mut Env<''local>,op: &mut blocking::Operator,source_path:
      JString<''local>,target_path: JString<''local>,) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::with_env
      Src: /src/opendal/bindings/java/src/async_operator.rs:431,1
    - Dst: intern_remove_all
      Src: /src/opendal/bindings/java/src/async_operator.rs:431,1
    - Dst: "with_env(|env| intern_remove_all(env, op, executor, path))\n        .resolve::<ThrowException>"
      Src: /src/opendal/bindings/java/src/async_operator.rs:431,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 5
    argNames:
    - env
    - op
    - executor
    - path
    argTypes:
    - EnvUnowned<'local>
    - JClass<'local>
    - '*mut Operator'
    - '*const Executor'
    - JString<'local>
    constantsTouched: []
    func_position:
      end: 433
      start: 424
    functionDepth: 31
    functionLinenumber: 424
    functionLinenumberEnd: 433
    functionName: Java_org_apache_opendal_AsyncOperator_removeAll
    functionSourceFile: /src/opendal/bindings/java/src/async_operator.rs
    functionUses: 0
    functionsReached:
    - intern_remove_all
    - Result::with_env
    - "with_env(|env| intern_remove_all(env, op, executor, path))\n        .resolve::<ThrowException>"
    linkageType: ''
    returnType: jlong
    signature: 'pub unsafe extern "system" fn Java_org_apache_opendal_AsyncOperator_removeAll<''local>(mut
      env: EnvUnowned<''local>,_: JClass<''local>,op: *mut Operator,executor: *const
      Executor,path: JString<''local>,) -> jlong'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: convert::jstring_to_string
      Src: /src/opendal/bindings/java/src/operator.rs:296,1
    - Dst: Ok
      Src: /src/opendal/bindings/java/src/operator.rs:298,1
    - Dst: delete_options
      Src: /src/opendal/bindings/java/src/operator.rs:298,1
    - Dst: Default::default
      Src: /src/opendal/bindings/java/src/operator.rs:302,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 3
    argNames:
    - env
    - op
    - path
    argTypes:
    - '&mut Env<''local>'
    - '&mut blocking::Operator'
    - JString<'local>
    constantsTouched: []
    func_position:
      end: 305
      start: 290
    functionDepth: 30
    functionLinenumber: 290
    functionLinenumberEnd: 305
    functionName: intern_remove_all
    functionSourceFile: /src/opendal/bindings/java/src/operator.rs
    functionUses: 2
    functionsReached:
    - convert::jstring_to_string
    - Default::default
    - delete_options
    - Ok
    linkageType: ''
    returnType: Result
    signature: 'fn intern_remove_all<''local>(env: &mut Env<''local>,op: &mut blocking::Operator,path:
      JString<''local>,) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::with_env
      Src: /src/opendal/bindings/java/src/async_operator.rs:469,1
    - Dst: intern_list
      Src: /src/opendal/bindings/java/src/async_operator.rs:469,1
    - Dst: "with_env(|env| intern_list(env, op, executor, path, options))\n      \
        \  .resolve::<ThrowException>"
      Src: /src/opendal/bindings/java/src/async_operator.rs:469,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 6
    argNames:
    - env
    - op
    - executor
    - path
    - options
    argTypes:
    - EnvUnowned<'local>
    - JClass<'local>
    - '*mut Operator'
    - '*const Executor'
    - JString<'local>
    - JObject<'local>
    constantsTouched: []
    func_position:
      end: 471
      start: 461
    functionDepth: 31
    functionLinenumber: 461
    functionLinenumberEnd: 471
    functionName: Java_org_apache_opendal_AsyncOperator_list
    functionSourceFile: /src/opendal/bindings/java/src/async_operator.rs
    functionUses: 0
    functionsReached:
    - intern_list
    - "with_env(|env| intern_list(env, op, executor, path, options))\n        .resolve::<ThrowException>"
    - Result::with_env
    linkageType: ''
    returnType: jlong
    signature: 'pub unsafe extern "system" fn Java_org_apache_opendal_AsyncOperator_list<''local>(mut
      env: EnvUnowned<''local>,_: JClass<''local>,op: *mut Operator,executor: *const
      Executor,path: JString<''local>,options: JObject<''local>,) -> jlong'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: convert::jstring_to_string
      Src: /src/opendal/bindings/java/src/operator.rs:331,1
    - Dst: make_list_options
      Src: /src/opendal/bindings/java/src/operator.rs:332,1
    - Dst: list_options
      Src: /src/opendal/bindings/java/src/operator.rs:333,1
    - Dst: Result::new_object_array
      Src: /src/opendal/bindings/java/src/operator.rs:335,1
    - Dst: len
      Src: /src/opendal/bindings/java/src/operator.rs:336,1
    - Dst: JObject::null
      Src: /src/opendal/bindings/java/src/operator.rs:338,1
    - Dst: into_iter
      Src: /src/opendal/bindings/java/src/operator.rs:341,1
    - Dst: enumerate
      Src: /src/opendal/bindings/java/src/operator.rs:341,1
    - Dst: make_entry
      Src: /src/opendal/bindings/java/src/operator.rs:342,1
    - Dst: set_element
      Src: /src/opendal/bindings/java/src/operator.rs:343,1
    - Dst: Ok
      Src: /src/opendal/bindings/java/src/operator.rs:346,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 31
    argCount: 4
    argNames:
    - env
    - op
    - path
    - options
    argTypes:
    - '&mut Env<''local>'
    - '&mut blocking::Operator'
    - JString<'local>
    - JObject<'local>
    constantsTouched: []
    func_position:
      end: 347
      start: 325
    functionDepth: 30
    functionLinenumber: 325
    functionLinenumberEnd: 347
    functionName: intern_list
    functionSourceFile: /src/opendal/bindings/java/src/operator.rs
    functionUses: 2
    functionsReached:
    - Ok
    - make_entry
    - JObject::null
    - into_iter
    - convert::jstring_to_string
    - list_options
    - enumerate
    - set_element
    - Result::new_object_array
    - len
    - make_list_options
    linkageType: ''
    returnType: Result
    signature: 'fn intern_list<''local>(env: &mut Env<''local>,op: &mut blocking::Operator,path:
      JString<''local>,options: JObject<''local>,) -> Result<JObjectArray<''local>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::new_object_array
      Src: /src/opendal/bindings/java/src/async_operator.rs:494,1
    - Dst: len
      Src: /src/opendal/bindings/java/src/async_operator.rs:495,1
    - Dst: JObject::null
      Src: /src/opendal/bindings/java/src/async_operator.rs:497,1
    - Dst: into_iter
      Src: /src/opendal/bindings/java/src/async_operator.rs:500,1
    - Dst: enumerate
      Src: /src/opendal/bindings/java/src/async_operator.rs:500,1
    - Dst: make_entry
      Src: /src/opendal/bindings/java/src/async_operator.rs:501,1
    - Dst: set_element
      Src: /src/opendal/bindings/java/src/async_operator.rs:502,1
    - Dst: Ok
      Src: /src/opendal/bindings/java/src/async_operator.rs:505,1
    - Dst: into
      Src: /src/opendal/bindings/java/src/async_operator.rs:505,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 23
    argCount: 2
    argNames:
    - env
    - entries
    argTypes:
    - '&mut Env<''local>'
    - Vec<Entry>
    constantsTouched: []
    func_position:
      end: 506
      start: 493
    functionDepth: 36
    functionLinenumber: 493
    functionLinenumberEnd: 506
    functionName: make_entries
    functionSourceFile: /src/opendal/bindings/java/src/async_operator.rs
    functionUses: 0
    functionsReached:
    - Ok
    - make_entry
    - JObject::null
    - into
    - into_iter
    - set_element
    - enumerate
    - Result::new_object_array
    - len
    linkageType: ''
    returnType: Result
    signature: 'fn make_entries<''local>(env: &mut Env<''local>, entries: Vec<Entry>)
      -> Result<JObject<''local>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::with_env
      Src: /src/opendal/bindings/java/src/async_operator.rs:520,1
    - Dst: intern_presign_read
      Src: /src/opendal/bindings/java/src/async_operator.rs:520,1
    - Dst: "with_env(|env| intern_presign_read(env, op, executor, path, expire))\n\
        \        .resolve::<ThrowException>"
      Src: /src/opendal/bindings/java/src/async_operator.rs:520,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 6
    argNames:
    - env
    - op
    - executor
    - path
    - expire
    argTypes:
    - EnvUnowned<'local>
    - JClass<'local>
    - '*mut Operator'
    - '*const Executor'
    - JString<'local>
    - jlong
    constantsTouched: []
    func_position:
      end: 522
      start: 512
    functionDepth: 31
    functionLinenumber: 512
    functionLinenumberEnd: 522
    functionName: Java_org_apache_opendal_AsyncOperator_presignRead
    functionSourceFile: /src/opendal/bindings/java/src/async_operator.rs
    functionUses: 0
    functionsReached:
    - "with_env(|env| intern_presign_read(env, op, executor, path, expire))\n    \
      \    .resolve::<ThrowException>"
    - intern_presign_read
    - Result::with_env
    linkageType: ''
    returnType: jlong
    signature: 'pub unsafe extern "system" fn Java_org_apache_opendal_AsyncOperator_presignRead<''local>(mut
      env: EnvUnowned<''local>,_: JClass<''local>,op: *mut Operator,executor: *const
      Executor,path: JString<''local>,expire: jlong,) -> jlong'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: request_id
      Src: /src/opendal/bindings/java/src/async_operator.rs:532,1
    - Dst: convert::jstring_to_string
      Src: /src/opendal/bindings/java/src/async_operator.rs:534,1
    - Dst: Duration::from_nanos
      Src: /src/opendal/bindings/java/src/async_operator.rs:535,1
    - Dst: executor::executor_or_default
      Src: /src/opendal/bindings/java/src/async_operator.rs:537,1
    - Dst: spawn
      Src: /src/opendal/bindings/java/src/async_operator.rs:537,1
    - Dst: presign_read
      Src: /src/opendal/bindings/java/src/async_operator.rs:538,1
    - Dst: complete_future
      Src: /src/opendal/bindings/java/src/async_operator.rs:539,1
    - Dst: make_presigned_request
      Src: /src/opendal/bindings/java/src/async_operator.rs:539,1
    - Dst: Ok
      Src: /src/opendal/bindings/java/src/async_operator.rs:542,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 24
    argCount: 5
    argNames:
    - env
    - op
    - executor
    - path
    - expire
    argTypes:
    - '&mut Env'
    - '*mut Operator'
    - '*const Executor'
    - JString
    - jlong
    constantsTouched: []
    func_position:
      end: 543
      start: 524
    functionDepth: 30
    functionLinenumber: 524
    functionLinenumberEnd: 543
    functionName: intern_presign_read
    functionSourceFile: /src/opendal/bindings/java/src/async_operator.rs
    functionUses: 1
    functionsReached:
    - request_id
    - presign_read
    - complete_future
    - Ok
    - Duration::from_nanos
    - executor::executor_or_default
    - spawn
    - convert::jstring_to_string
    - make_presigned_request
    linkageType: ''
    returnType: Result
    signature: 'fn intern_presign_read(env: &mut Env,op: *mut Operator,executor: *const
      Executor,path: JString,expire: jlong,) -> Result<jlong>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::with_env
      Src: /src/opendal/bindings/java/src/async_operator.rs:556,1
    - Dst: intern_presign_write
      Src: /src/opendal/bindings/java/src/async_operator.rs:556,1
    - Dst: "with_env(|env| intern_presign_write(env, op, executor, path, expire))\n\
        \        .resolve::<ThrowException>"
      Src: /src/opendal/bindings/java/src/async_operator.rs:556,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 6
    argNames:
    - env
    - op
    - executor
    - path
    - expire
    argTypes:
    - EnvUnowned<'local>
    - JClass<'local>
    - '*mut Operator'
    - '*const Executor'
    - JString<'local>
    - jlong
    constantsTouched: []
    func_position:
      end: 558
      start: 548
    functionDepth: 31
    functionLinenumber: 548
    functionLinenumberEnd: 558
    functionName: Java_org_apache_opendal_AsyncOperator_presignWrite
    functionSourceFile: /src/opendal/bindings/java/src/async_operator.rs
    functionUses: 0
    functionsReached:
    - intern_presign_write
    - "with_env(|env| intern_presign_write(env, op, executor, path, expire))\n   \
      \     .resolve::<ThrowException>"
    - Result::with_env
    linkageType: ''
    returnType: jlong
    signature: 'pub unsafe extern "system" fn Java_org_apache_opendal_AsyncOperator_presignWrite<''local>(mut
      env: EnvUnowned<''local>,_: JClass<''local>,op: *mut Operator,executor: *const
      Executor,path: JString<''local>,expire: jlong,) -> jlong'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: request_id
      Src: /src/opendal/bindings/java/src/async_operator.rs:568,1
    - Dst: convert::jstring_to_string
      Src: /src/opendal/bindings/java/src/async_operator.rs:570,1
    - Dst: Duration::from_nanos
      Src: /src/opendal/bindings/java/src/async_operator.rs:571,1
    - Dst: executor::executor_or_default
      Src: /src/opendal/bindings/java/src/async_operator.rs:573,1
    - Dst: spawn
      Src: /src/opendal/bindings/java/src/async_operator.rs:573,1
    - Dst: presign_write
      Src: /src/opendal/bindings/java/src/async_operator.rs:574,1
    - Dst: complete_future
      Src: /src/opendal/bindings/java/src/async_operator.rs:575,1
    - Dst: make_presigned_request
      Src: /src/opendal/bindings/java/src/async_operator.rs:575,1
    - Dst: Ok
      Src: /src/opendal/bindings/java/src/async_operator.rs:578,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 24
    argCount: 5
    argNames:
    - env
    - op
    - executor
    - path
    - expire
    argTypes:
    - '&mut Env'
    - '*mut Operator'
    - '*const Executor'
    - JString
    - jlong
    constantsTouched: []
    func_position:
      end: 579
      start: 560
    functionDepth: 30
    functionLinenumber: 560
    functionLinenumberEnd: 579
    functionName: intern_presign_write
    functionSourceFile: /src/opendal/bindings/java/src/async_operator.rs
    functionUses: 1
    functionsReached:
    - request_id
    - complete_future
    - Ok
    - Duration::from_nanos
    - executor::executor_or_default
    - spawn
    - convert::jstring_to_string
    - presign_write
    - make_presigned_request
    linkageType: ''
    returnType: Result
    signature: 'fn intern_presign_write(env: &mut Env,op: *mut Operator,executor:
      *const Executor,path: JString,expire: jlong,) -> Result<jlong>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::with_env
      Src: /src/opendal/bindings/java/src/async_operator.rs:593,1
    - Dst: intern_presign_stat
      Src: /src/opendal/bindings/java/src/async_operator.rs:593,1
    - Dst: "with_env(|env| intern_presign_stat(env, op, executor, path, expire))\n\
        \        .resolve::<ThrowException>"
      Src: /src/opendal/bindings/java/src/async_operator.rs:593,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 6
    argNames:
    - env
    - op
    - executor
    - path
    - expire
    argTypes:
    - EnvUnowned<'local>
    - JClass<'local>
    - '*mut Operator'
    - '*const Executor'
    - JString<'local>
    - jlong
    constantsTouched: []
    func_position:
      end: 595
      start: 585
    functionDepth: 31
    functionLinenumber: 585
    functionLinenumberEnd: 595
    functionName: Java_org_apache_opendal_AsyncOperator_presignStat
    functionSourceFile: /src/opendal/bindings/java/src/async_operator.rs
    functionUses: 0
    functionsReached:
    - "with_env(|env| intern_presign_stat(env, op, executor, path, expire))\n    \
      \    .resolve::<ThrowException>"
    - intern_presign_stat
    - Result::with_env
    linkageType: ''
    returnType: jlong
    signature: 'pub unsafe extern "system" fn Java_org_apache_opendal_AsyncOperator_presignStat<''local>(mut
      env: EnvUnowned<''local>,_: JClass<''local>,op: *mut Operator,executor: *const
      Executor,path: JString<''local>,expire: jlong,) -> jlong'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: request_id
      Src: /src/opendal/bindings/java/src/async_operator.rs:605,1
    - Dst: convert::jstring_to_string
      Src: /src/opendal/bindings/java/src/async_operator.rs:607,1
    - Dst: Duration::from_nanos
      Src: /src/opendal/bindings/java/src/async_operator.rs:608,1
    - Dst: executor::executor_or_default
      Src: /src/opendal/bindings/java/src/async_operator.rs:610,1
    - Dst: spawn
      Src: /src/opendal/bindings/java/src/async_operator.rs:610,1
    - Dst: presign_stat
      Src: /src/opendal/bindings/java/src/async_operator.rs:611,1
    - Dst: complete_future
      Src: /src/opendal/bindings/java/src/async_operator.rs:612,1
    - Dst: make_presigned_request
      Src: /src/opendal/bindings/java/src/async_operator.rs:612,1
    - Dst: Ok
      Src: /src/opendal/bindings/java/src/async_operator.rs:615,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 24
    argCount: 5
    argNames:
    - env
    - op
    - executor
    - path
    - expire
    argTypes:
    - '&mut Env'
    - '*mut Operator'
    - '*const Executor'
    - JString
    - jlong
    constantsTouched: []
    func_position:
      end: 616
      start: 597
    functionDepth: 30
    functionLinenumber: 597
    functionLinenumberEnd: 616
    functionName: intern_presign_stat
    functionSourceFile: /src/opendal/bindings/java/src/async_operator.rs
    functionUses: 1
    functionsReached:
    - request_id
    - complete_future
    - Ok
    - Duration::from_nanos
    - executor::executor_or_default
    - spawn
    - convert::jstring_to_string
    - make_presigned_request
    - presign_stat
    linkageType: ''
    returnType: Result
    signature: 'fn intern_presign_stat(env: &mut Env,op: *mut Operator,executor: *const
      Executor,path: JString,expire: jlong,) -> Result<jlong>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: JavaVM::singleton
      Src: /src/opendal/bindings/java/src/async_operator.rs:630,1
    - Dst: expect
      Src: /src/opendal/bindings/java/src/async_operator.rs:630,1
    - Dst: attach_current_thread
      Src: /src/opendal/bindings/java/src/async_operator.rs:631,1
    - Dst: get_future
      Src: /src/opendal/bindings/java/src/async_operator.rs:632,1
    - Dst: build
      Src: /src/opendal/bindings/java/src/async_operator.rs:633,1
    - Dst: Result::call_method
      Src: /src/opendal/bindings/java/src/async_operator.rs:635,1
    - Dst: JValue::Object
      Src: /src/opendal/bindings/java/src/async_operator.rs:639,1
    - Dst: Error::to_exception
      Src: /src/opendal/bindings/java/src/async_operator.rs:643,1
    - Dst: Result::call_method
      Src: /src/opendal/bindings/java/src/async_operator.rs:644,1
    - Dst: JValue::Object
      Src: /src/opendal/bindings/java/src/async_operator.rs:648,1
    - Dst: Ok
      Src: /src/opendal/bindings/java/src/async_operator.rs:652,1
    - Dst: expect
      Src: /src/opendal/bindings/java/src/async_operator.rs:631,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 37
    argCount: 2
    argNames:
    - id
    - build
    argTypes:
    - jlong
    - F
    constantsTouched: []
    func_position:
      end: 655
      start: 626
    functionDepth: 40
    functionLinenumber: 626
    functionLinenumberEnd: 655
    functionName: complete_future
    functionSourceFile: /src/opendal/bindings/java/src/async_operator.rs
    functionUses: 3
    functionsReached:
    - Result::call_method
    - expect
    - JavaVM::singleton
    - Ok
    - build
    - JValue::Object
    - Error::to_exception
    - attach_current_thread
    - get_future
    linkageType: ''
    returnType: void
    signature: 'fn complete_future<F>(id: jlong, build: F)whereF: for<''a> FnOnce(&mut
      Env<''a>) -> Result<JObject<''a>>,'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/bindings/java/src/async_operator.rs:658,1
    - Dst: Result::call_static_method
      Src: /src/opendal/bindings/java/src/async_operator.rs:658,1
    - Dst: j
      Src: /src/opendal/bindings/java/src/async_operator.rs:658,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - env
    argTypes:
    - '&mut Env'
    constantsTouched: []
    func_position:
      end: 666
      start: 657
    functionDepth: 0
    functionLinenumber: 657
    functionLinenumberEnd: 666
    functionName: request_id
    functionSourceFile: /src/opendal/bindings/java/src/async_operator.rs
    functionUses: 3
    functionsReached:
    - j
    - Result::call_static_method
    - Ok
    linkageType: ''
    returnType: Result
    signature: 'fn request_id(env: &mut Env) -> Result<jlong>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/bindings/java/src/async_operator.rs:669,1
    - Dst: Result::call_static_method
      Src: /src/opendal/bindings/java/src/async_operator.rs:669,1
    - Dst: JValue::Long
      Src: /src/opendal/bindings/java/src/async_operator.rs:674,1
    - Dst: l
      Src: /src/opendal/bindings/java/src/async_operator.rs:669,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - env
    - id
    argTypes:
    - '&mut Env<''local>'
    - jlong
    constantsTouched: []
    func_position:
      end: 677
      start: 668
    functionDepth: 39
    functionLinenumber: 668
    functionLinenumberEnd: 677
    functionName: get_future
    functionSourceFile: /src/opendal/bindings/java/src/async_operator.rs
    functionUses: 1
    functionsReached:
    - l
    - Result::call_static_method
    - JValue::Long
    - Ok
    linkageType: ''
    returnType: Result
    signature: 'fn get_future<''local>(env: &mut Env<''local>, id: jlong) -> Result<JObject<''local>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: JavaVM::from_raw
      Src: /src/opendal/bindings/java/src/executor.rs:45,1
    - Dst: opendal::init_default_registry
      Src: /src/opendal/bindings/java/src/executor.rs:46,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 2
    argNames:
    - vm
    argTypes:
    - '*mut jni::sys::JavaVM'
    - '*mut c_void'
    constantsTouched: []
    func_position:
      end: 48
      start: 42
    functionDepth: 3
    functionLinenumber: 42
    functionLinenumberEnd: 48
    functionName: JNI_OnLoad
    functionSourceFile: /src/opendal/bindings/java/src/executor.rs
    functionUses: 0
    functionsReached:
    - JavaVM::from_raw
    - opendal::init_default_registry
    linkageType: ''
    returnType: jint
    signature: 'pub unsafe extern "system" fn JNI_OnLoad(vm: *mut jni::sys::JavaVM,
      _: *mut c_void) -> jint'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: take
      Src: /src/opendal/bindings/java/src/executor.rs:57,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames: []
    argTypes:
    - '*mut jni::sys::JavaVM'
    - '*mut c_void'
    constantsTouched: []
    func_position:
      end: 59
      start: 55
    functionDepth: 2
    functionLinenumber: 55
    functionLinenumberEnd: 59
    functionName: JNI_OnUnload
    functionSourceFile: /src/opendal/bindings/java/src/executor.rs
    functionUses: 0
    functionsReached:
    - take
    linkageType: ''
    returnType: void
    signature: 'pub unsafe extern "system" fn JNI_OnUnload(_: *mut jni::sys::JavaVM,
      _: *mut c_void)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::enter
      Src: /src/opendal/bindings/java/src/executor.rs:72,1
    - Dst: f
      Src: /src/opendal/bindings/java/src/executor.rs:73,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - f
    argTypes:
    - F
    constantsTouched: []
    func_position:
      end: 76
      start: 66
    functionDepth: 31
    functionLinenumber: 66
    functionLinenumberEnd: 76
    functionName: Executor::enter_with
    functionSourceFile: /src/opendal/bindings/java/src/executor.rs
    functionUses: 0
    functionsReached:
    - f
    - Result::enter
    linkageType: ''
    returnType: R
    signature: 'pub fn enter_with<F, R>(&self, f: F) -> RwhereF: FnOnce() -> R,'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: spawn
      Src: /src/opendal/bindings/dotnet/src/executor.rs:74,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - future
    argTypes:
    - F
    constantsTouched: []
    func_position:
      end: 75
      start: 69
    functionDepth: 32
    functionLinenumber: 69
    functionLinenumberEnd: 75
    functionName: Executor::spawn
    functionSourceFile: /src/opendal/bindings/dotnet/src/executor.rs
    functionUses: 0
    functionsReached:
    - spawn
    linkageType: ''
    returnType: tokio::task::JoinHandle
    signature: 'pub fn spawn<F>(&self, future: F) -> tokio::task::JoinHandle<F::Output>whereF:
      Future + Send + ''static,F::Output: Send + ''static,'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::with_env
      Src: /src/opendal/bindings/java/src/executor.rs:95,1
    - Dst: make_tokio_executor
      Src: /src/opendal/bindings/java/src/executor.rs:96,1
    - Dst: Ok
      Src: /src/opendal/bindings/java/src/executor.rs:97,1
    - Dst: Box::into_raw
      Src: /src/opendal/bindings/java/src/executor.rs:97,1
    - Dst: Box::new
      Src: /src/opendal/bindings/java/src/executor.rs:97,1
    - Dst: "with_env(|_env| -> Result<jlong> {\n        let executor = make_tokio_executor(cores)?;\n\
        \        Ok(Box::into_raw(Box::new(executor)) as jlong)\n    })\n    .resolve::<ThrowException>"
      Src: /src/opendal/bindings/java/src/executor.rs:95,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 3
    argNames:
    - env
    - cores
    argTypes:
    - EnvUnowned<'local>
    - JClass<'local>
    - usize
    constantsTouched: []
    func_position:
      end: 100
      start: 90
    functionDepth: 37
    functionLinenumber: 90
    functionLinenumberEnd: 100
    functionName: Java_org_apache_opendal_AsyncExecutor_makeTokioExecutor
    functionSourceFile: /src/opendal/bindings/java/src/executor.rs
    functionUses: 0
    functionsReached:
    - make_tokio_executor
    - Ok
    - Box::new
    - "with_env(|_env| -> Result<jlong> {\n        let executor = make_tokio_executor(cores)?;\n\
      \        Ok(Box::into_raw(Box::new(executor)) as jlong)\n    })\n    .resolve::<ThrowException>"
    - Result::with_env
    - Box::into_raw
    linkageType: ''
    returnType: jlong
    signature: 'pub extern "system" fn Java_org_apache_opendal_AsyncExecutor_makeTokioExecutor<''local>(mut
      env: EnvUnowned<''local>,_: JClass<''local>,cores: usize,) -> jlong'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: drop
      Src: /src/opendal/bindings/java/src/executor.rs:112,1
    - Dst: Box::from_raw
      Src: /src/opendal/bindings/java/src/executor.rs:112,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - executor
    argTypes:
    - EnvUnowned<'local>
    - JObject<'local>
    - '*mut Executor'
    constantsTouched: []
    func_position:
      end: 114
      start: 106
    functionDepth: 33
    functionLinenumber: 106
    functionLinenumberEnd: 114
    functionName: Java_org_apache_opendal_AsyncExecutor_disposeInternal
    functionSourceFile: /src/opendal/bindings/java/src/executor.rs
    functionUses: 0
    functionsReached:
    - Box::from_raw
    - drop
    linkageType: ''
    returnType: void
    signature: 'pub unsafe extern "system" fn Java_org_apache_opendal_AsyncExecutor_disposeInternal<''local>(_:
      EnvUnowned<''local>,_: JObject<''local>,executor: *mut Executor,)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: AtomicUsize::new
      Src: /src/opendal/bindings/java/src/executor.rs:117,1
    - Dst: tokio::runtime::Builder::new_multi_thread
      Src: /src/opendal/bindings/java/src/executor.rs:118,1
    - Dst: worker_threads
      Src: /src/opendal/bindings/java/src/executor.rs:118,1
    - Dst: thread_name_fn
      Src: /src/opendal/bindings/java/src/executor.rs:118,1
    - Dst: '&''static Mutex::fetch_add'
      Src: /src/opendal/bindings/java/src/executor.rs:121,1
    - Dst: on_thread_start
      Src: /src/opendal/bindings/java/src/executor.rs:118,1
    - Dst: JavaVM::singleton
      Src: /src/opendal/bindings/java/src/executor.rs:127,1
    - Dst: expect
      Src: /src/opendal/bindings/java/src/executor.rs:127,1
    - Dst: attach_current_thread
      Src: /src/opendal/bindings/java/src/executor.rs:128,1
    - Dst: expect
      Src: /src/opendal/bindings/java/src/executor.rs:128,1
    - Dst: on_thread_stop
      Src: /src/opendal/bindings/java/src/executor.rs:118,1
    - Dst: JavaVM::singleton
      Src: /src/opendal/bindings/java/src/executor.rs:138,1
    - Dst: detach_current_thread
      Src: /src/opendal/bindings/java/src/executor.rs:139,1
    - Dst: enable_all
      Src: /src/opendal/bindings/java/src/executor.rs:118,1
    - Dst: build
      Src: /src/opendal/bindings/java/src/executor.rs:118,1
    - Dst: map_err
      Src: /src/opendal/bindings/java/src/executor.rs:118,1
    - Dst: opendal::Error::new
      Src: /src/opendal/bindings/java/src/executor.rs:145,1
    - Dst: Self::set_source
      Src: /src/opendal/bindings/java/src/executor.rs:145,1
    - Dst: Ok
      Src: /src/opendal/bindings/java/src/executor.rs:151,1
    - Dst: Executor::Tokio
      Src: /src/opendal/bindings/java/src/executor.rs:151,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 41
    argCount: 1
    argNames:
    - cores
    argTypes:
    - usize
    constantsTouched: []
    func_position:
      end: 152
      start: 116
    functionDepth: 36
    functionLinenumber: 116
    functionLinenumberEnd: 152
    functionName: make_tokio_executor
    functionSourceFile: /src/opendal/bindings/java/src/executor.rs
    functionUses: 1
    functionsReached:
    - map_err
    - Executor::Tokio
    - AtomicUsize::new
    - expect
    - JavaVM::singleton
    - detach_current_thread
    - opendal::Error::new
    - build
    - Ok
    - thread_name_fn
    - tokio::runtime::Builder::new_multi_thread
    - worker_threads
    - '&''static Mutex::fetch_add'
    - on_thread_start
    - on_thread_stop
    - Self::set_source
    - enable_all
    - attach_current_thread
    linkageType: ''
    returnType: Result
    signature: 'pub(crate) fn make_tokio_executor(cores: usize) -> Result<Executor>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::call_static_method
      Src: /src/opendal/bindings/java/src/executor.rs:155,1
    - Dst: l
      Src: /src/opendal/bindings/java/src/executor.rs:155,1
    - Dst: std::thread::current
      Src: /src/opendal/bindings/java/src/executor.rs:163,1
    - Dst: Result::name
      Src: /src/opendal/bindings/java/src/executor.rs:163,1
    - Dst: Result::new_string
      Src: /src/opendal/bindings/java/src/executor.rs:164,1
    - Dst: Result::call_method
      Src: /src/opendal/bindings/java/src/executor.rs:167,1
    - Dst: JValue::Object
      Src: /src/opendal/bindings/java/src/executor.rs:171,1
    - Dst: Ok
      Src: /src/opendal/bindings/java/src/executor.rs:173,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 26
    argCount: 1
    argNames:
    - env
    argTypes:
    - '&mut Env'
    constantsTouched: []
    func_position:
      end: 174
      start: 154
    functionDepth: 39
    functionLinenumber: 154
    functionLinenumberEnd: 174
    functionName: set_current_thread_name
    functionSourceFile: /src/opendal/bindings/java/src/executor.rs
    functionUses: 0
    functionsReached:
    - l
    - Result::call_method
    - Ok
    - Result::new_string
    - std::thread::current
    - Result::name
    - JValue::Object
    - Result::call_static_method
    linkageType: ''
    returnType: Result
    signature: 'fn set_current_thread_name(env: &mut Env) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self::is_null
      Src: /src/opendal/bindings/dotnet/src/executor.rs:106,1
    - Dst: default_executor
      Src: /src/opendal/bindings/dotnet/src/executor.rs:107,1
    - Dst: lock
      Src: /src/opendal/bindings/dotnet/src/executor.rs:111,1
    - Dst: map_err
      Src: /src/opendal/bindings/dotnet/src/executor.rs:111,1
    - Dst: utils::config_invalid_error
      Src: /src/opendal/bindings/dotnet/src/executor.rs:113,1
    - Dst: get
      Src: /src/opendal/bindings/dotnet/src/executor.rs:115,1
    - Dst: Option::cloned
      Src: /src/opendal/bindings/dotnet/src/executor.rs:115,1
    - Dst: ok_or_else
      Src: /src/opendal/bindings/dotnet/src/executor.rs:115,1
    - Dst: utils::config_invalid_error
      Src: /src/opendal/bindings/dotnet/src/executor.rs:118,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 24
    argCount: 1
    argNames:
    - executor
    argTypes:
    - '*const c_void'
    constantsTouched: []
    func_position:
      end: 119
      start: 105
    functionDepth: 34
    functionLinenumber: 105
    functionLinenumberEnd: 119
    functionName: executor_or_default
    functionSourceFile: /src/opendal/bindings/dotnet/src/executor.rs
    functionUses: 28
    functionsReached:
    - map_err
    - default_executor
    - get
    - lock
    - Option::cloned
    - utils::config_invalid_error
    - Self::is_null
    - ok_or_else
    linkageType: ''
    returnType: Result
    signature: 'pub fn executor_or_default(executor: *const c_void) -> Result<Arc<Executor>,
      OpenDALError>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: get
      Src: /src/opendal/bindings/dotnet/src/executor.rs:83,1
    - Dst: Ok
      Src: /src/opendal/bindings/dotnet/src/executor.rs:84,1
    - Dst: Self::clone
      Src: /src/opendal/bindings/dotnet/src/executor.rs:84,1
    - Dst: std::thread::available_parallelism
      Src: /src/opendal/bindings/dotnet/src/executor.rs:87,1
    - Dst: map
      Src: /src/opendal/bindings/dotnet/src/executor.rs:87,1
    - Dst: unwrap_or
      Src: /src/opendal/bindings/dotnet/src/executor.rs:87,1
    - Dst: Arc::new
      Src: /src/opendal/bindings/dotnet/src/executor.rs:88,1
    - Dst: Executor::new
      Src: /src/opendal/bindings/dotnet/src/executor.rs:88,1
    - Dst: set
      Src: /src/opendal/bindings/dotnet/src/executor.rs:90,1
    - Dst: Self::clone
      Src: /src/opendal/bindings/dotnet/src/executor.rs:90,1
    - Dst: is_ok
      Src: /src/opendal/bindings/dotnet/src/executor.rs:90,1
    - Dst: Ok
      Src: /src/opendal/bindings/dotnet/src/executor.rs:91,1
    - Dst: get
      Src: /src/opendal/bindings/dotnet/src/executor.rs:94,1
    - Dst: Ok
      Src: /src/opendal/bindings/dotnet/src/executor.rs:95,1
    - Dst: Result::clone
      Src: /src/opendal/bindings/dotnet/src/executor.rs:95,1
    - Dst: Ok
      Src: /src/opendal/bindings/dotnet/src/executor.rs:98,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 38
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 99
      start: 82
    functionDepth: 33
    functionLinenumber: 82
    functionLinenumberEnd: 99
    functionName: default_executor
    functionSourceFile: /src/opendal/bindings/dotnet/src/executor.rs
    functionUses: 1
    functionsReached:
    - Result::clone
    - get
    - is_ok
    - Ok
    - Arc::new
    - set
    - Executor::new
    - map
    - Self::clone
    - unwrap_or
    - std::thread::available_parallelism
    linkageType: ''
    returnType: Result
    signature: fn default_executor() -> Result<Arc<Executor>, OpenDALError>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::with_env
      Src: /src/opendal/bindings/java/src/utility.rs:40,1
    - Dst: intern_load_enabled_services
      Src: /src/opendal/bindings/java/src/utility.rs:40,1
    - Dst: "with_env(|env| intern_load_enabled_services(env))\n        .resolve::<ThrowException>"
      Src: /src/opendal/bindings/java/src/utility.rs:40,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - env
    argTypes:
    - EnvUnowned<'local>
    - JClass<'local>
    constantsTouched: []
    func_position:
      end: 42
      start: 36
    functionDepth: 33
    functionLinenumber: 36
    functionLinenumberEnd: 42
    functionName: Java_org_apache_opendal_OpenDAL_loadEnabledServices
    functionSourceFile: /src/opendal/bindings/java/src/utility.rs
    functionUses: 0
    functionsReached:
    - intern_load_enabled_services
    - "with_env(|env| intern_load_enabled_services(env))\n        .resolve::<ThrowException>"
    - Result::with_env
    linkageType: ''
    returnType: JObjectArray
    signature: 'pub unsafe extern "system" fn Java_org_apache_opendal_OpenDAL_loadEnabledServices<''local>(mut
      env: EnvUnowned<''local>,_: JClass<''local>,) -> JObjectArray<''local>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: HashSet::from
      Src: /src/opendal/bindings/java/src/utility.rs:45,1
    - Dst: Result::new_object_array
      Src: /src/opendal/bindings/java/src/utility.rs:96,1
    - Dst: Services::len
      Src: /src/opendal/bindings/java/src/utility.rs:97,1
    - Dst: JObject::null
      Src: /src/opendal/bindings/java/src/utility.rs:99,1
    - Dst: Services::into_iter
      Src: /src/opendal/bindings/java/src/utility.rs:102,1
    - Dst: enumerate
      Src: /src/opendal/bindings/java/src/utility.rs:102,1
    - Dst: convert::string_to_jstring
      Src: /src/opendal/bindings/java/src/utility.rs:103,1
    - Dst: Some
      Src: /src/opendal/bindings/java/src/utility.rs:103,1
    - Dst: set_element
      Src: /src/opendal/bindings/java/src/utility.rs:104,1
    - Dst: Ok
      Src: /src/opendal/bindings/java/src/utility.rs:107,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 24
    argCount: 1
    argNames:
    - env
    argTypes:
    - '&mut Env<''local>'
    constantsTouched: []
    func_position:
      end: 108
      start: 44
    functionDepth: 32
    functionLinenumber: 44
    functionLinenumberEnd: 108
    functionName: intern_load_enabled_services
    functionSourceFile: /src/opendal/bindings/java/src/utility.rs
    functionUses: 1
    functionsReached:
    - Services::len
    - Ok
    - JObject::null
    - Some
    - set_element
    - enumerate
    - convert::string_to_jstring
    - Result::new_object_array
    - HashSet::from
    - Services::into_iter
    linkageType: ''
    returnType: Result
    signature: 'fn intern_load_enabled_services<''local>(env: &mut Env<''local>) ->
      Result<JObjectArray<''local>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Error::do_throw
      Src: /src/opendal/bindings/java/src/error.rs:37,1
    - Dst: Result::fatal_error
      Src: /src/opendal/bindings/java/src/error.rs:42,1
    - Dst: JNIString::new
      Src: /src/opendal/bindings/java/src/error.rs:42,1
    - Dst: Error::to_string
      Src: /src/opendal/bindings/java/src/error.rs:42,1
    - Dst: Self::as_ref
      Src: /src/opendal/bindings/java/src/error.rs:42,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 1
    argNames:
    - env
    argTypes:
    - '&mut Env'
    constantsTouched: []
    func_position:
      end: 45
      start: 36
    functionDepth: 3
    functionLinenumber: 36
    functionLinenumberEnd: 45
    functionName: Error::throw
    functionSourceFile: /src/opendal/bindings/java/src/error.rs
    functionUses: 1
    functionsReached:
    - JNIString::new
    - Result::fatal_error
    - Error::to_string
    - Self::as_ref
    - Error::do_throw
    linkageType: ''
    returnType: void
    signature: 'pub(crate) fn throw(&self, env: &mut Env)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::new_string
      Src: /src/opendal/bindings/java/src/error.rs:51,1
    - Dst: kind
      Src: /src/opendal/bindings/java/src/error.rs:51,1
    - Dst: Result::new_string
      Src: /src/opendal/bindings/java/src/error.rs:66,1
    - Dst: Result::new_object
      Src: /src/opendal/bindings/java/src/error.rs:67,1
    - Dst: JValue::Object
      Src: /src/opendal/bindings/java/src/error.rs:70,1
    - Dst: JValue::Object
      Src: /src/opendal/bindings/java/src/error.rs:70,1
    - Dst: Ok
      Src: /src/opendal/bindings/java/src/error.rs:74,1
    - Dst: JThrowable::from_raw
      Src: /src/opendal/bindings/java/src/error.rs:74,1
    - Dst: PyErr::into_raw
      Src: /src/opendal/bindings/java/src/error.rs:74,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 23
    argCount: 1
    argNames:
    - env
    argTypes:
    - '&mut Env<''local>'
    constantsTouched: []
    func_position:
      end: 75
      start: 47
    functionDepth: 1
    functionLinenumber: 47
    functionLinenumberEnd: 75
    functionName: Error::to_exception
    functionSourceFile: /src/opendal/bindings/java/src/error.rs
    functionUses: 2
    functionsReached:
    - Ok
    - Result::new_object
    - kind
    - Result::new_string
    - JValue::Object
    - JThrowable::from_raw
    - PyErr::into_raw
    linkageType: ''
    returnType: jni::errors::Result
    signature: 'pub(crate) fn to_exception<''local>(&self,env: &mut Env<''local>,)
      -> jni::errors::Result<JThrowable<''local>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Error::to_exception
      Src: /src/opendal/bindings/java/src/error.rs:78,1
    - Dst: Result::throw
      Src: /src/opendal/bindings/java/src/error.rs:79,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - env
    argTypes:
    - '&mut Env'
    constantsTouched: []
    func_position:
      end: 80
      start: 77
    functionDepth: 3
    functionLinenumber: 77
    functionLinenumberEnd: 80
    functionName: Error::do_throw
    functionSourceFile: /src/opendal/bindings/java/src/error.rs
    functionUses: 1
    functionsReached:
    - Error::to_exception
    - Result::throw
    linkageType: ''
    returnType: jni::errors::Result
    signature: 'fn do_throw(&self, env: &mut Env) -> jni::errors::Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::exception_check
      Src: /src/opendal/bindings/java/src/error.rs:96,1
    - Dst: Error::throw
      Src: /src/opendal/bindings/java/src/error.rs:97,1
    - Dst: Ok
      Src: /src/opendal/bindings/java/src/error.rs:99,1
    - Dst: T::default
      Src: /src/opendal/bindings/java/src/error.rs:99,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 3
    argNames:
    - env
    - _cap
    - err
    argTypes:
    - '&mut Env<''unowned_env_local>'
    - '&mut Self::Captures<''unowned_env_local, ''native_method>'
    - Error
    constantsTouched: []
    func_position:
      end: 100
      start: 91
    functionDepth: 4
    functionLinenumber: 91
    functionLinenumberEnd: 100
    functionName: ThrowException::on_error
    functionSourceFile: /src/opendal/bindings/java/src/error.rs
    functionUses: 0
    functionsReached:
    - Result::exception_check
    - Ok
    - Error::throw
    - T::default
    linkageType: ''
    returnType: jni::errors::Result
    signature: 'fn on_error<''unowned_env_local: ''native_method, ''native_method>(env:
      &mut Env<''unowned_env_local>,_cap: &mut Self::Captures<''unowned_env_local,
      ''native_method>,err: Error,) -> jni::errors::Result<T>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::exception_check
      Src: /src/opendal/bindings/java/src/error.rs:107,1
    - Dst: downcast::<&'static str>
      Src: /src/opendal/bindings/java/src/error.rs:109,1
    - Dst: Box<dyn std::any::Any + Send + 'static>::to_string
      Src: /src/opendal/bindings/java/src/error.rs:110,1
    - Dst: downcast::<String>
      Src: /src/opendal/bindings/java/src/error.rs:114,1
    - Dst: '&str::to_string'
      Src: /src/opendal/bindings/java/src/error.rs:120,1
    - Dst: downcast_payload
      Src: /src/opendal/bindings/java/src/error.rs:123,1
    - Dst: Result::fatal_error
      Src: /src/opendal/bindings/java/src/error.rs:124,1
    - Dst: JNIString::new
      Src: /src/opendal/bindings/java/src/error.rs:124,1
    - Dst: Self::as_ref
      Src: /src/opendal/bindings/java/src/error.rs:124,1
    - Dst: Ok
      Src: /src/opendal/bindings/java/src/error.rs:126,1
    - Dst: T::default
      Src: /src/opendal/bindings/java/src/error.rs:126,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 27
    argCount: 3
    argNames:
    - env
    - _cap
    - payload
    argTypes:
    - '&mut Env<''unowned_env_local>'
    - '&mut Self::Captures<''unowned_env_local, ''native_method>'
    - Box<dyn std::any::Any + Send + 'static>
    constantsTouched: []
    func_position:
      end: 127
      start: 102
    functionDepth: 2
    functionLinenumber: 102
    functionLinenumberEnd: 127
    functionName: ThrowException::on_panic
    functionSourceFile: /src/opendal/bindings/java/src/error.rs
    functionUses: 0
    functionsReached:
    - Ok
    - Result::fatal_error
    - JNIString::new
    - Box<dyn std::any::Any + Send + 'static>::to_string
    - Result::exception_check
    - downcast_payload
    - '&str::to_string'
    - Self::as_ref
    - downcast::<&'static str>
    - downcast::<String>
    - T::default
    linkageType: ''
    returnType: jni::errors::Result
    signature: 'fn on_panic<''unowned_env_local: ''native_method, ''native_method>(env:
      &mut Env<''unowned_env_local>,_cap: &mut Self::Captures<''unowned_env_local,
      ''native_method>,payload: Box<dyn std::any::Any + Send + ''static>,) -> jni::errors::Result<T>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: opendal::Error::new
      Src: /src/opendal/bindings/java/src/error.rs:138,1
    - Dst: Error::to_string
      Src: /src/opendal/bindings/java/src/error.rs:138,1
    - Dst: Self::into
      Src: /src/opendal/bindings/java/src/error.rs:138,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - err
    argTypes:
    - jni::errors::Error
    constantsTouched: []
    func_position:
      end: 139
      start: 137
    functionDepth: 36
    functionLinenumber: 137
    functionLinenumberEnd: 139
    functionName: Error::from
    functionSourceFile: /src/opendal/bindings/java/src/error.rs
    functionUses: 0
    functionsReached:
    - Self::into
    - Error::to_string
    - opendal::Error::new
    linkageType: ''
    returnType: Self
    signature: 'fn from(err: jni::errors::Error) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::with_env
      Src: /src/opendal/bindings/java/src/operator_input_stream.rs:44,1
    - Dst: intern_construct_reader
      Src: /src/opendal/bindings/java/src/operator_input_stream.rs:46,1
    - Dst: "with_env(|env| {\n        let op_ref = unsafe { &mut *op };\n        intern_construct_reader(env,\
        \ op_ref, path, options)\n    })\n    .resolve::<ThrowException>"
      Src: /src/opendal/bindings/java/src/operator_input_stream.rs:44,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 5
    argNames:
    - env
    - op
    - path
    - options
    argTypes:
    - EnvUnowned<'local>
    - JClass<'local>
    - '*mut blocking::Operator'
    - JString<'local>
    - JObject<'local>
    constantsTouched: []
    func_position:
      end: 49
      start: 35
    functionDepth: 31
    functionLinenumber: 35
    functionLinenumberEnd: 49
    functionName: Java_org_apache_opendal_OperatorInputStream_constructReader
    functionSourceFile: /src/opendal/bindings/java/src/operator_input_stream.rs
    functionUses: 0
    functionsReached:
    - intern_construct_reader
    - Result::with_env
    - "with_env(|env| {\n        let op_ref = unsafe { &mut *op };\n        intern_construct_reader(env,\
      \ op_ref, path, options)\n    })\n    .resolve::<ThrowException>"
    linkageType: ''
    returnType: jlong
    signature: 'pub unsafe extern "system" fn Java_org_apache_opendal_OperatorInputStream_constructReader<''local,>(mut
      env: EnvUnowned<''local>,_: JClass<''local>,op: *mut blocking::Operator,path:
      JString<''local>,options: JObject<''local>,) -> jlong'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: convert::jstring_to_string
      Src: /src/opendal/bindings/java/src/operator_input_stream.rs:60,1
    - Dst: make_reader_options
      Src: /src/opendal/bindings/java/src/operator_input_stream.rs:61,1
    - Dst: convert::read_int64_field
      Src: /src/opendal/bindings/java/src/operator_input_stream.rs:63,1
    - Dst: convert::read_int64_field
      Src: /src/opendal/bindings/java/src/operator_input_stream.rs:64,1
    - Dst: convert::offset_length_to_range
      Src: /src/opendal/bindings/java/src/operator_input_stream.rs:65,1
    - Dst: reader_options
      Src: /src/opendal/bindings/java/src/operator_input_stream.rs:67,1
    - Dst: into_bytes_iterator
      Src: /src/opendal/bindings/java/src/operator_input_stream.rs:67,1
    - Dst: Ok
      Src: /src/opendal/bindings/java/src/operator_input_stream.rs:70,1
    - Dst: Box::into_raw
      Src: /src/opendal/bindings/java/src/operator_input_stream.rs:70,1
    - Dst: Box::new
      Src: /src/opendal/bindings/java/src/operator_input_stream.rs:70,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 25
    argCount: 4
    argNames:
    - env
    - op
    - path
    - options
    argTypes:
    - '&mut Env'
    - '&mut blocking::Operator'
    - JString
    - JObject
    constantsTouched: []
    func_position:
      end: 71
      start: 51
    functionDepth: 30
    functionLinenumber: 51
    functionLinenumberEnd: 71
    functionName: intern_construct_reader
    functionSourceFile: /src/opendal/bindings/java/src/operator_input_stream.rs
    functionUses: 1
    functionsReached:
    - convert::offset_length_to_range
    - Ok
    - convert::read_int64_field
    - Box::new
    - convert::jstring_to_string
    - reader_options
    - make_reader_options
    - into_bytes_iterator
    - Box::into_raw
    linkageType: ''
    returnType: crate::Result
    signature: 'fn intern_construct_reader(env: &mut Env,op: &mut blocking::Operator,path:
      JString,options: JObject,) -> crate::Result<jlong>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: drop
      Src: /src/opendal/bindings/java/src/operator_input_stream.rs:83,1
    - Dst: Box::from_raw
      Src: /src/opendal/bindings/java/src/operator_input_stream.rs:83,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - reader
    argTypes:
    - EnvUnowned<'local>
    - JClass<'local>
    - '*mut StdBytesIterator'
    constantsTouched: []
    func_position:
      end: 85
      start: 77
    functionDepth: 33
    functionLinenumber: 77
    functionLinenumberEnd: 85
    functionName: Java_org_apache_opendal_OperatorInputStream_disposeReader
    functionSourceFile: /src/opendal/bindings/java/src/operator_input_stream.rs
    functionUses: 0
    functionsReached:
    - Box::from_raw
    - drop
    linkageType: ''
    returnType: void
    signature: 'pub unsafe extern "system" fn Java_org_apache_opendal_OperatorInputStream_disposeReader<''local>(_:
      EnvUnowned<''local>,_: JClass<''local>,reader: *mut StdBytesIterator,)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::with_env
      Src: /src/opendal/bindings/java/src/operator_input_stream.rs:96,1
    - Dst: intern_read_next_bytes
      Src: /src/opendal/bindings/java/src/operator_input_stream.rs:98,1
    - Dst: "with_env(|env| {\n        let reader_ref = unsafe { &mut *reader };\n\
        \        intern_read_next_bytes(env, reader_ref)\n    })\n    .resolve::<ThrowException>"
      Src: /src/opendal/bindings/java/src/operator_input_stream.rs:96,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 3
    argNames:
    - env
    - reader
    argTypes:
    - EnvUnowned<'local>
    - JClass<'local>
    - '*mut StdBytesIterator'
    constantsTouched: []
    func_position:
      end: 101
      start: 91
    functionDepth: 37
    functionLinenumber: 91
    functionLinenumberEnd: 101
    functionName: Java_org_apache_opendal_OperatorInputStream_readNextBytes
    functionSourceFile: /src/opendal/bindings/java/src/operator_input_stream.rs
    functionUses: 0
    functionsReached:
    - "with_env(|env| {\n        let reader_ref = unsafe { &mut *reader };\n     \
      \   intern_read_next_bytes(env, reader_ref)\n    })\n    .resolve::<ThrowException>"
    - Result::with_env
    - intern_read_next_bytes
    linkageType: ''
    returnType: JByteArray
    signature: 'pub unsafe extern "system" fn Java_org_apache_opendal_OperatorInputStream_readNextBytes<''local>(mut
      env: EnvUnowned<''local>,_: JClass<''local>,reader: *mut StdBytesIterator,)
      -> JByteArray<''local>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: anyhow::Result::next
      Src: /src/opendal/bindings/java/src/operator_input_stream.rs:107,1
    - Dst: Result::transpose
      Src: /src/opendal/bindings/java/src/operator_input_stream.rs:107,1
    - Dst: map_err
      Src: /src/opendal/bindings/java/src/operator_input_stream.rs:107,1
    - Dst: opendal::Error::new
      Src: /src/opendal/bindings/java/src/operator_input_stream.rs:110,1
    - Dst: Error::to_string
      Src: /src/opendal/bindings/java/src/operator_input_stream.rs:110,1
    - Dst: Ok
      Src: /src/opendal/bindings/java/src/operator_input_stream.rs:112,1
    - Dst: JByteArray::default
      Src: /src/opendal/bindings/java/src/operator_input_stream.rs:112,1
    - Dst: Ok
      Src: /src/opendal/bindings/java/src/operator_input_stream.rs:113,1
    - Dst: Result::byte_array_from_slice
      Src: /src/opendal/bindings/java/src/operator_input_stream.rs:113,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 20
    argCount: 2
    argNames:
    - env
    - reader
    argTypes:
    - '&mut Env<''local>'
    - '&mut StdBytesIterator'
    constantsTouched: []
    func_position:
      end: 115
      start: 103
    functionDepth: 36
    functionLinenumber: 103
    functionLinenumberEnd: 115
    functionName: intern_read_next_bytes
    functionSourceFile: /src/opendal/bindings/java/src/operator_input_stream.rs
    functionUses: 1
    functionsReached:
    - map_err
    - JByteArray::default
    - opendal::Error::new
    - Ok
    - anyhow::Result::next
    - Error::to_string
    - Result::byte_array_from_slice
    - Result::transpose
    linkageType: ''
    returnType: crate::Result
    signature: 'fn intern_read_next_bytes<''local>(env: &mut Env<''local>,reader:
      &mut StdBytesIterator,) -> crate::Result<JByteArray<''local>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::map_or
      Src: /src/opendal/bindings/java/src/convert.rs:34,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - n
    argTypes:
    - Option<usize>
    constantsTouched: []
    func_position:
      end: 35
      start: 32
    functionDepth: 0
    functionLinenumber: 32
    functionLinenumberEnd: 35
    functionName: usize_to_jlong
    functionSourceFile: /src/opendal/bindings/java/src/convert.rs
    functionUses: 1
    functionsReached:
    - Result::map_or
    linkageType: ''
    returnType: jlong
    signature: 'pub(crate) fn usize_to_jlong(n: Option<usize>) -> jlong'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: new_cast_local_ref::<JMap>
      Src: /src/opendal/bindings/java/src/convert.rs:38,1
    - Dst: Result::iter
      Src: /src/opendal/bindings/java/src/convert.rs:39,1
    - Dst: HashMap::new
      Src: /src/opendal/bindings/java/src/convert.rs:41,1
    - Dst: next
      Src: /src/opendal/bindings/java/src/convert.rs:42,1
    - Dst: crate::Entry::key
      Src: /src/opendal/bindings/java/src/convert.rs:43,1
    - Dst: crate::Entry::value
      Src: /src/opendal/bindings/java/src/convert.rs:44,1
    - Dst: JString::from_raw
      Src: /src/opendal/bindings/java/src/convert.rs:46,1
    - Dst: Result::into_raw
      Src: /src/opendal/bindings/java/src/convert.rs:46,1
    - Dst: JString::from_raw
      Src: /src/opendal/bindings/java/src/convert.rs:47,1
    - Dst: Result::into_raw
      Src: /src/opendal/bindings/java/src/convert.rs:47,1
    - Dst: bool::insert
      Src: /src/opendal/bindings/java/src/convert.rs:48,1
    - Dst: Result::mutf8_chars
      Src: /src/opendal/bindings/java/src/convert.rs:48,1
    - Dst: into
      Src: /src/opendal/bindings/java/src/convert.rs:48,1
    - Dst: Result::mutf8_chars
      Src: /src/opendal/bindings/java/src/convert.rs:48,1
    - Dst: into
      Src: /src/opendal/bindings/java/src/convert.rs:48,1
    - Dst: Ok
      Src: /src/opendal/bindings/java/src/convert.rs:51,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 38
    argCount: 2
    argNames:
    - env
    - params
    argTypes:
    - '&mut Env'
    - '&JObject'
    constantsTouched: []
    func_position:
      end: 52
      start: 37
    functionDepth: 29
    functionLinenumber: 37
    functionLinenumberEnd: 52
    functionName: jmap_to_hashmap
    functionSourceFile: /src/opendal/bindings/java/src/convert.rs
    functionUses: 2
    functionsReached:
    - next
    - Ok
    - crate::Entry::key
    - Result::into_raw
    - into
    - JString::from_raw
    - bool::insert
    - Result::iter
    - Result::mutf8_chars
    - new_cast_local_ref::<JMap>
    - crate::Entry::value
    - HashMap::new
    linkageType: ''
    returnType: Result
    signature: 'pub(crate) fn jmap_to_hashmap(env: &mut Env, params: &JObject) ->
      Result<HashMap<String, String>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::new_object
      Src: /src/opendal/bindings/java/src/convert.rs:58,1
    - Dst: new_cast_local_ref::<JMap>
      Src: /src/opendal/bindings/java/src/convert.rs:59,1
    - Dst: Result::new_string
      Src: /src/opendal/bindings/java/src/convert.rs:61,1
    - Dst: Result::new_string
      Src: /src/opendal/bindings/java/src/convert.rs:62,1
    - Dst: Result::put
      Src: /src/opendal/bindings/java/src/convert.rs:63,1
    - Dst: Ok
      Src: /src/opendal/bindings/java/src/convert.rs:65,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 24
    argCount: 2
    argNames:
    - env
    - map
    argTypes:
    - '&mut Env<''a>'
    - '&HashMap<String, String>'
    constantsTouched: []
    func_position:
      end: 66
      start: 54
    functionDepth: 1
    functionLinenumber: 54
    functionLinenumberEnd: 66
    functionName: hashmap_to_jmap
    functionSourceFile: /src/opendal/bindings/java/src/convert.rs
    functionUses: 1
    functionsReached:
    - Ok
    - Result::new_object
    - Result::put
    - Result::new_string
    - new_cast_local_ref::<JMap>
    linkageType: ''
    returnType: Result
    signature: 'pub(crate) fn hashmap_to_jmap<''a>(env: &mut Env<''a>,map: &HashMap<String,
      String>,) -> Result<JObject<''a>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: map_or_else
      Src: /src/opendal/bindings/java/src/convert.rs:69,1
    - Dst: Ok
      Src: /src/opendal/bindings/java/src/convert.rs:69,1
    - Dst: JObject::null
      Src: /src/opendal/bindings/java/src/convert.rs:69,1
    - Dst: Ok
      Src: /src/opendal/bindings/java/src/convert.rs:69,1
    - Dst: Result::new_string
      Src: /src/opendal/bindings/java/src/convert.rs:69,1
    - Dst: into
      Src: /src/opendal/bindings/java/src/convert.rs:69,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 2
    argNames:
    - env
    - s
    argTypes:
    - '&mut Env<''a>'
    - Option<&str>
    constantsTouched: []
    func_position:
      end: 70
      start: 68
    functionDepth: 29
    functionLinenumber: 68
    functionLinenumberEnd: 70
    functionName: string_to_jstring
    functionSourceFile: /src/opendal/bindings/java/src/convert.rs
    functionUses: 2
    functionsReached:
    - Ok
    - Result::new_string
    - JObject::null
    - into
    - map_or_else
    linkageType: ''
    returnType: Result
    signature: 'pub(crate) fn string_to_jstring<''a>(env: &mut Env<''a>, s: Option<&str>)
      -> Result<JObject<''a>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/bindings/java/src/convert.rs:73,1
    - Dst: Result::get_field
      Src: /src/opendal/bindings/java/src/convert.rs:73,1
    - Dst: JNIString::new
      Src: /src/opendal/bindings/java/src/convert.rs:74,1
    - Dst: z
      Src: /src/opendal/bindings/java/src/convert.rs:73,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 3
    argNames:
    - env
    - obj
    - field
    argTypes:
    - '&mut Env<''_>'
    - '&JObject'
    - '&str'
    constantsTouched: []
    func_position:
      end: 76
      start: 72
    functionDepth: 2
    functionLinenumber: 72
    functionLinenumberEnd: 76
    functionName: read_bool_field
    functionSourceFile: /src/opendal/bindings/java/src/convert.rs
    functionUses: 2
    functionsReached:
    - Result::get_field
    - z
    - Ok
    - JNIString::new
    linkageType: ''
    returnType: Result
    signature: 'pub(crate) fn read_bool_field(env: &mut Env<''_>, obj: &JObject, field:
      &str) -> Result<bool>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/bindings/java/src/convert.rs:79,1
    - Dst: Result::get_field
      Src: /src/opendal/bindings/java/src/convert.rs:79,1
    - Dst: JNIString::new
      Src: /src/opendal/bindings/java/src/convert.rs:80,1
    - Dst: j
      Src: /src/opendal/bindings/java/src/convert.rs:79,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 3
    argNames:
    - env
    - obj
    - field
    argTypes:
    - '&mut Env<''_>'
    - '&JObject'
    - '&str'
    constantsTouched: []
    func_position:
      end: 82
      start: 78
    functionDepth: 2
    functionLinenumber: 78
    functionLinenumberEnd: 82
    functionName: read_int64_field
    functionSourceFile: /src/opendal/bindings/java/src/convert.rs
    functionUses: 3
    functionsReached:
    - j
    - Result::get_field
    - Ok
    - JNIString::new
    linkageType: ''
    returnType: Result
    signature: 'pub(crate) fn read_int64_field(env: &mut Env<''_>, obj: &JObject,
      field: &str) -> Result<i64>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/bindings/java/src/convert.rs:85,1
    - Dst: Result::get_field
      Src: /src/opendal/bindings/java/src/convert.rs:85,1
    - Dst: JNIString::new
      Src: /src/opendal/bindings/java/src/convert.rs:86,1
    - Dst: i
      Src: /src/opendal/bindings/java/src/convert.rs:85,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 3
    argNames:
    - env
    - obj
    - field
    argTypes:
    - '&mut Env<''_>'
    - '&JObject'
    - '&str'
    constantsTouched: []
    func_position:
      end: 88
      start: 84
    functionDepth: 5
    functionLinenumber: 84
    functionLinenumberEnd: 88
    functionName: read_int_field
    functionSourceFile: /src/opendal/bindings/java/src/convert.rs
    functionUses: 1
    functionsReached:
    - Result::get_field
    - i
    - Ok
    - JNIString::new
    linkageType: ''
    returnType: Result
    signature: 'pub(crate) fn read_int_field(env: &mut Env<''_>, obj: &JObject, field:
      &str) -> Result<i32>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::get_field
      Src: /src/opendal/bindings/java/src/convert.rs:95,1
    - Dst: JNIString::new
      Src: /src/opendal/bindings/java/src/convert.rs:96,1
    - Dst: l
      Src: /src/opendal/bindings/java/src/convert.rs:95,1
    - Dst: bool::is_null
      Src: /src/opendal/bindings/java/src/convert.rs:98,1
    - Dst: Ok
      Src: /src/opendal/bindings/java/src/convert.rs:99,1
    - Dst: JString::from_raw
      Src: /src/opendal/bindings/java/src/convert.rs:102,1
    - Dst: bool::into_raw
      Src: /src/opendal/bindings/java/src/convert.rs:102,1
    - Dst: Ok
      Src: /src/opendal/bindings/java/src/convert.rs:103,1
    - Dst: Some
      Src: /src/opendal/bindings/java/src/convert.rs:103,1
    - Dst: jstring_to_string
      Src: /src/opendal/bindings/java/src/convert.rs:103,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 20
    argCount: 3
    argNames:
    - env
    - obj
    - field
    argTypes:
    - '&mut Env<''_>'
    - '&JObject'
    - '&str'
    constantsTouched: []
    func_position:
      end: 105
      start: 90
    functionDepth: 39
    functionLinenumber: 90
    functionLinenumberEnd: 105
    functionName: read_string_field
    functionSourceFile: /src/opendal/bindings/java/src/convert.rs
    functionUses: 3
    functionsReached:
    - l
    - Ok
    - JNIString::new
    - JString::from_raw
    - bool::into_raw
    - Some
    - bool::is_null
    - jstring_to_string
    - Result::get_field
    linkageType: ''
    returnType: Result
    signature: 'pub(crate) fn read_string_field(env: &mut Env<''_>,obj: &JObject,field:
      &str,) -> Result<Option<String>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::get_field
      Src: /src/opendal/bindings/java/src/convert.rs:112,1
    - Dst: JNIString::new
      Src: /src/opendal/bindings/java/src/convert.rs:113,1
    - Dst: l
      Src: /src/opendal/bindings/java/src/convert.rs:112,1
    - Dst: bool::is_null
      Src: /src/opendal/bindings/java/src/convert.rs:115,1
    - Dst: Ok
      Src: /src/opendal/bindings/java/src/convert.rs:116,1
    - Dst: Ok
      Src: /src/opendal/bindings/java/src/convert.rs:118,1
    - Dst: Some
      Src: /src/opendal/bindings/java/src/convert.rs:118,1
    - Dst: jmap_to_hashmap
      Src: /src/opendal/bindings/java/src/convert.rs:118,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 3
    argNames:
    - env
    - obj
    - field
    argTypes:
    - '&mut Env<''_>'
    - '&JObject'
    - '&str'
    constantsTouched: []
    func_position:
      end: 120
      start: 107
    functionDepth: 39
    functionLinenumber: 107
    functionLinenumberEnd: 120
    functionName: read_map_field
    functionSourceFile: /src/opendal/bindings/java/src/convert.rs
    functionUses: 1
    functionsReached:
    - l
    - Ok
    - JNIString::new
    - jmap_to_hashmap
    - Some
    - bool::is_null
    - Result::get_field
    linkageType: ''
    returnType: Result
    signature: 'pub(crate) fn read_map_field(env: &mut Env<''_>,obj: &JObject,field:
      &str,) -> Result<Option<HashMap<String, String>>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: read_int64_field
      Src: /src/opendal/bindings/java/src/convert.rs:127,1
    - Dst: Ok
      Src: /src/opendal/bindings/java/src/convert.rs:128,1
    - Dst: Ok
      Src: /src/opendal/bindings/java/src/convert.rs:129,1
    - Dst: Some
      Src: /src/opendal/bindings/java/src/convert.rs:129,1
    - Dst: Err
      Src: /src/opendal/bindings/java/src/convert.rs:130,1
    - Dst: Error::new
      Src: /src/opendal/bindings/java/src/convert.rs:130,1
    - Dst: Self::into
      Src: /src/opendal/bindings/java/src/convert.rs:130,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 3
    argNames:
    - env
    - options
    - field_name
    argTypes:
    - '&mut Env'
    - '&JObject'
    - '&str'
    constantsTouched: []
    func_position:
      end: 136
      start: 122
    functionDepth: 36
    functionLinenumber: 122
    functionLinenumberEnd: 136
    functionName: read_jlong_field_to_usize
    functionSourceFile: /src/opendal/bindings/java/src/convert.rs
    functionUses: 2
    functionsReached:
    - Ok
    - read_int64_field
    - Some
    - Err
    - Error::new
    - Self::into
    linkageType: ''
    returnType: Result
    signature: 'pub(crate) fn read_jlong_field_to_usize(env: &mut Env,options: &JObject,field_name:
      &str,) -> Result<Option<usize>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::get_field
      Src: /src/opendal/bindings/java/src/convert.rs:143,1
    - Dst: JNIString::new
      Src: /src/opendal/bindings/java/src/convert.rs:144,1
    - Dst: l
      Src: /src/opendal/bindings/java/src/convert.rs:143,1
    - Dst: bool::is_null
      Src: /src/opendal/bindings/java/src/convert.rs:146,1
    - Dst: Ok
      Src: /src/opendal/bindings/java/src/convert.rs:147,1
    - Dst: Result::call_method
      Src: /src/opendal/bindings/java/src/convert.rs:150,1
    - Dst: j
      Src: /src/opendal/bindings/java/src/convert.rs:150,1
    - Dst: Result::call_method
      Src: /src/opendal/bindings/java/src/convert.rs:153,1
    - Dst: i
      Src: /src/opendal/bindings/java/src/convert.rs:153,1
    - Dst: opendal::raw::Timestamp::new
      Src: /src/opendal/bindings/java/src/convert.rs:156,1
    - Dst: Ok
      Src: /src/opendal/bindings/java/src/convert.rs:157,1
    - Dst: Some
      Src: /src/opendal/bindings/java/src/convert.rs:157,1
    - Dst: Err
      Src: /src/opendal/bindings/java/src/convert.rs:158,1
    - Dst: Error::new
      Src: /src/opendal/bindings/java/src/convert.rs:158,1
    - Dst: Self::set_source
      Src: /src/opendal/bindings/java/src/convert.rs:158,1
    - Dst: Self::into
      Src: /src/opendal/bindings/java/src/convert.rs:158,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 43
    argCount: 3
    argNames:
    - env
    - obj
    - field
    argTypes:
    - '&mut Env<''_>'
    - '&JObject'
    - '&str'
    constantsTouched: []
    func_position:
      end: 165
      start: 138
    functionDepth: 39
    functionLinenumber: 138
    functionLinenumberEnd: 165
    functionName: read_instant_field_to_timestamp
    functionSourceFile: /src/opendal/bindings/java/src/convert.rs
    functionUses: 1
    functionsReached:
    - Self::set_source
    - l
    - Result::call_method
    - Ok
    - JNIString::new
    - Some
    - Err
    - Error::new
    - Self::into
    - bool::is_null
    - opendal::raw::Timestamp::new
    - j
    - i
    - Result::get_field
    linkageType: ''
    returnType: Result
    signature: 'pub(crate) fn read_instant_field_to_timestamp(env: &mut Env<''_>,obj:
      &JObject,field: &str,) -> Result<Option<opendal::raw::Timestamp>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: u64::try_from
      Src: /src/opendal/bindings/java/src/convert.rs:168,1
    - Dst: Result::map_err
      Src: /src/opendal/bindings/java/src/convert.rs:168,1
    - Dst: Error::new
      Src: /src/opendal/bindings/java/src/convert.rs:169,1
    - Dst: Ok
      Src: /src/opendal/bindings/java/src/convert.rs:172,1
    - Dst: Bound::Included
      Src: /src/opendal/bindings/java/src/convert.rs:172,1
    - Dst: u64::try_from
      Src: /src/opendal/bindings/java/src/convert.rs:173,1
    - Dst: u64::checked_add
      Src: /src/opendal/bindings/java/src/convert.rs:174,1
    - Dst: Ok
      Src: /src/opendal/bindings/java/src/convert.rs:175,1
    - Dst: Bound::Included
      Src: /src/opendal/bindings/java/src/convert.rs:175,1
    - Dst: Bound::Excluded
      Src: /src/opendal/bindings/java/src/convert.rs:175,1
    - Dst: Err
      Src: /src/opendal/bindings/java/src/convert.rs:176,1
    - Dst: Error::new
      Src: /src/opendal/bindings/java/src/convert.rs:176,1
    - Dst: Self::into
      Src: /src/opendal/bindings/java/src/convert.rs:176,1
    - Dst: Err
      Src: /src/opendal/bindings/java/src/convert.rs:183,1
    - Dst: Error::new
      Src: /src/opendal/bindings/java/src/convert.rs:183,1
    - Dst: Self::into
      Src: /src/opendal/bindings/java/src/convert.rs:183,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 28
    argCount: 2
    argNames:
    - offset
    - length
    argTypes:
    - i64
    - i64
    constantsTouched: []
    func_position:
      end: 187
      start: 167
    functionDepth: 37
    functionLinenumber: 167
    functionLinenumberEnd: 187
    functionName: offset_length_to_range
    functionSourceFile: /src/opendal/bindings/java/src/convert.rs
    functionUses: 2
    functionsReached:
    - Result::map_err
    - Ok
    - u64::checked_add
    - Error::new
    - Bound::Excluded
    - Err
    - u64::try_from
    - Self::into
    - Bound::Included
    linkageType: ''
    returnType: Result
    signature: 'pub(crate) fn offset_length_to_range(offset: i64, length: i64) ->
      Result<(Bound<u64>, Bound<u64>)>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Bytes::as_ref
      Src: /src/opendal/bindings/java/src/convert.rs:193,1
    - Dst: Result::byte_array_from_slice
      Src: /src/opendal/bindings/java/src/convert.rs:194,1
    - Dst: Ok
      Src: /src/opendal/bindings/java/src/convert.rs:195,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - env
    - bytes
    argTypes:
    - '&mut Env<''a>'
    - impl AsRef<[u8]>
    constantsTouched: []
    func_position:
      end: 196
      start: 189
    functionDepth: 1
    functionLinenumber: 189
    functionLinenumberEnd: 196
    functionName: bytes_to_jbytearray
    functionSourceFile: /src/opendal/bindings/java/src/convert.rs
    functionUses: 1
    functionsReached:
    - Result::byte_array_from_slice
    - Bytes::as_ref
    - Ok
    linkageType: ''
    returnType: Result
    signature: 'pub(crate) fn bytes_to_jbytearray<''a>(env: &mut Env<''a>,bytes: impl
      AsRef<[u8]>,) -> Result<JByteArray<''a>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/bindings/java/src/convert.rs:199,1
    - Dst: mutf8_chars
      Src: /src/opendal/bindings/java/src/convert.rs:199,1
    - Dst: into
      Src: /src/opendal/bindings/java/src/convert.rs:199,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - env
    - s
    argTypes:
    - '&mut Env'
    - '&JString'
    constantsTouched: []
    func_position:
      end: 200
      start: 198
    functionDepth: 29
    functionLinenumber: 198
    functionLinenumberEnd: 200
    functionName: jstring_to_string
    functionSourceFile: /src/opendal/bindings/java/src/convert.rs
    functionUses: 17
    functionsReached:
    - mutf8_chars
    - into
    - Ok
    linkageType: ''
    returnType: Result
    signature: 'pub(crate) fn jstring_to_string(env: &mut Env, s: &JString) -> Result<String>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::new_string
      Src: /src/opendal/bindings/java/src/lib.rs:47,1
    - Dst: PresignedRequest::method
      Src: /src/opendal/bindings/java/src/lib.rs:47,1
    - Dst: '&str::as_str'
      Src: /src/opendal/bindings/java/src/lib.rs:47,1
    - Dst: Result::new_string
      Src: /src/opendal/bindings/java/src/lib.rs:48,1
    - Dst: PresignedRequest::uri
      Src: /src/opendal/bindings/java/src/lib.rs:48,1
    - Dst: '&http::Uri::to_string'
      Src: /src/opendal/bindings/java/src/lib.rs:48,1
    - Dst: HashMap::new
      Src: /src/opendal/bindings/java/src/lib.rs:50,1
    - Dst: PresignedRequest::header
      Src: /src/opendal/bindings/java/src/lib.rs:51,1
    - Dst: '&http::HeaderMap::iter'
      Src: /src/opendal/bindings/java/src/lib.rs:51,1
    - Dst: Result::to_string
      Src: /src/opendal/bindings/java/src/lib.rs:52,1
    - Dst: Result::to_str
      Src: /src/opendal/bindings/java/src/lib.rs:53,1
    - Dst: Result::map_err
      Src: /src/opendal/bindings/java/src/lib.rs:53,1
    - Dst: opendal::Error::new
      Src: /src/opendal/bindings/java/src/lib.rs:54,1
    - Dst: Error::to_string
      Src: /src/opendal/bindings/java/src/lib.rs:54,1
    - Dst: Result::insert
      Src: /src/opendal/bindings/java/src/lib.rs:56,1
    - Dst: Vec::to_owned
      Src: /src/opendal/bindings/java/src/lib.rs:56,1
    - Dst: convert::hashmap_to_jmap
      Src: /src/opendal/bindings/java/src/lib.rs:60,1
    - Dst: Result::new_object
      Src: /src/opendal/bindings/java/src/lib.rs:61,1
    - Dst: JValue::Object
      Src: /src/opendal/bindings/java/src/lib.rs:65,1
    - Dst: JValue::Object
      Src: /src/opendal/bindings/java/src/lib.rs:66,1
    - Dst: JValue::Object
      Src: /src/opendal/bindings/java/src/lib.rs:67,1
    - Dst: Ok
      Src: /src/opendal/bindings/java/src/lib.rs:70,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 52
    argCount: 2
    argNames:
    - env
    - req
    argTypes:
    - '&mut Env<''a>'
    - PresignedRequest
    constantsTouched: []
    func_position:
      end: 71
      start: 46
    functionDepth: 38
    functionLinenumber: 46
    functionLinenumberEnd: 71
    functionName: make_presigned_request
    functionSourceFile: /src/opendal/bindings/java/src/lib.rs
    functionUses: 3
    functionsReached:
    - Result::new_object
    - Vec::to_owned
    - Error::to_string
    - convert::hashmap_to_jmap
    - JValue::Object
    - PresignedRequest::header
    - PresignedRequest::uri
    - '&http::HeaderMap::iter'
    - Result::to_string
    - Ok
    - '&http::Uri::to_string'
    - Result::map_err
    - Result::new_string
    - Result::insert
    - Result::to_str
    - opendal::Error::new
    - PresignedRequest::method
    - '&str::as_str'
    - HashMap::new
    linkageType: ''
    returnType: Result
    signature: 'fn make_presigned_request<''a>(env: &mut Env<''a>, req: PresignedRequest)
      -> Result<JObject<''a>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::new_string
      Src: /src/opendal/bindings/java/src/lib.rs:74,1
    - Dst: ServiceInfo::scheme
      Src: /src/opendal/bindings/java/src/lib.rs:74,1
    - Dst: Result::new_string
      Src: /src/opendal/bindings/java/src/lib.rs:75,1
    - Dst: ServiceInfo::root
      Src: /src/opendal/bindings/java/src/lib.rs:75,1
    - Dst: Result::new_string
      Src: /src/opendal/bindings/java/src/lib.rs:76,1
    - Dst: ServiceInfo::name
      Src: /src/opendal/bindings/java/src/lib.rs:76,1
    - Dst: make_capability
      Src: /src/opendal/bindings/java/src/lib.rs:77,1
    - Dst: ServiceInfo::capability
      Src: /src/opendal/bindings/java/src/lib.rs:77,1
    - Dst: Result::new_object
      Src: /src/opendal/bindings/java/src/lib.rs:79,1
    - Dst: JValue::Object
      Src: /src/opendal/bindings/java/src/lib.rs:85,1
    - Dst: JValue::Object
      Src: /src/opendal/bindings/java/src/lib.rs:86,1
    - Dst: JValue::Object
      Src: /src/opendal/bindings/java/src/lib.rs:87,1
    - Dst: JValue::Object
      Src: /src/opendal/bindings/java/src/lib.rs:88,1
    - Dst: Ok
      Src: /src/opendal/bindings/java/src/lib.rs:91,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 33
    argCount: 2
    argNames:
    - env
    - info
    argTypes:
    - '&mut Env<''a>'
    - OperatorInfo
    constantsTouched: []
    func_position:
      end: 92
      start: 73
    functionDepth: 3
    functionLinenumber: 73
    functionLinenumberEnd: 92
    functionName: make_operator_info
    functionSourceFile: /src/opendal/bindings/java/src/lib.rs
    functionUses: 2
    functionsReached:
    - make_capability
    - ServiceInfo::root
    - Result::new_object
    - Ok
    - Result::new_string
    - ServiceInfo::capability
    - ServiceInfo::name
    - JValue::Object
    - ServiceInfo::scheme
    linkageType: ''
    returnType: Result
    signature: 'fn make_operator_info<''a>(env: &mut Env<''a>, info: OperatorInfo)
      -> Result<JObject<''a>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::new_object
      Src: /src/opendal/bindings/java/src/lib.rs:95,1
    - Dst: JValue::Bool
      Src: /src/opendal/bindings/java/src/lib.rs:99,1
    - Dst: JValue::Bool
      Src: /src/opendal/bindings/java/src/lib.rs:100,1
    - Dst: JValue::Bool
      Src: /src/opendal/bindings/java/src/lib.rs:101,1
    - Dst: JValue::Bool
      Src: /src/opendal/bindings/java/src/lib.rs:102,1
    - Dst: JValue::Bool
      Src: /src/opendal/bindings/java/src/lib.rs:103,1
    - Dst: JValue::Bool
      Src: /src/opendal/bindings/java/src/lib.rs:104,1
    - Dst: JValue::Bool
      Src: /src/opendal/bindings/java/src/lib.rs:105,1
    - Dst: JValue::Bool
      Src: /src/opendal/bindings/java/src/lib.rs:106,1
    - Dst: JValue::Bool
      Src: /src/opendal/bindings/java/src/lib.rs:107,1
    - Dst: JValue::Bool
      Src: /src/opendal/bindings/java/src/lib.rs:108,1
    - Dst: JValue::Bool
      Src: /src/opendal/bindings/java/src/lib.rs:109,1
    - Dst: JValue::Bool
      Src: /src/opendal/bindings/java/src/lib.rs:110,1
    - Dst: JValue::Bool
      Src: /src/opendal/bindings/java/src/lib.rs:111,1
    - Dst: JValue::Bool
      Src: /src/opendal/bindings/java/src/lib.rs:112,1
    - Dst: JValue::Bool
      Src: /src/opendal/bindings/java/src/lib.rs:113,1
    - Dst: JValue::Bool
      Src: /src/opendal/bindings/java/src/lib.rs:114,1
    - Dst: JValue::Bool
      Src: /src/opendal/bindings/java/src/lib.rs:115,1
    - Dst: JValue::Bool
      Src: /src/opendal/bindings/java/src/lib.rs:116,1
    - Dst: JValue::Bool
      Src: /src/opendal/bindings/java/src/lib.rs:117,1
    - Dst: JValue::Bool
      Src: /src/opendal/bindings/java/src/lib.rs:118,1
    - Dst: JValue::Bool
      Src: /src/opendal/bindings/java/src/lib.rs:119,1
    - Dst: JValue::Bool
      Src: /src/opendal/bindings/java/src/lib.rs:120,1
    - Dst: JValue::Long
      Src: /src/opendal/bindings/java/src/lib.rs:121,1
    - Dst: convert::usize_to_jlong
      Src: /src/opendal/bindings/java/src/lib.rs:121,1
    - Dst: JValue::Long
      Src: /src/opendal/bindings/java/src/lib.rs:122,1
    - Dst: convert::usize_to_jlong
      Src: /src/opendal/bindings/java/src/lib.rs:122,1
    - Dst: JValue::Bool
      Src: /src/opendal/bindings/java/src/lib.rs:123,1
    - Dst: JValue::Bool
      Src: /src/opendal/bindings/java/src/lib.rs:124,1
    - Dst: JValue::Bool
      Src: /src/opendal/bindings/java/src/lib.rs:125,1
    - Dst: JValue::Bool
      Src: /src/opendal/bindings/java/src/lib.rs:126,1
    - Dst: JValue::Bool
      Src: /src/opendal/bindings/java/src/lib.rs:127,1
    - Dst: JValue::Bool
      Src: /src/opendal/bindings/java/src/lib.rs:128,1
    - Dst: JValue::Bool
      Src: /src/opendal/bindings/java/src/lib.rs:129,1
    - Dst: JValue::Bool
      Src: /src/opendal/bindings/java/src/lib.rs:130,1
    - Dst: JValue::Bool
      Src: /src/opendal/bindings/java/src/lib.rs:131,1
    - Dst: JValue::Bool
      Src: /src/opendal/bindings/java/src/lib.rs:132,1
    - Dst: JValue::Bool
      Src: /src/opendal/bindings/java/src/lib.rs:133,1
    - Dst: JValue::Bool
      Src: /src/opendal/bindings/java/src/lib.rs:134,1
    - Dst: JValue::Bool
      Src: /src/opendal/bindings/java/src/lib.rs:135,1
    - Dst: JValue::Bool
      Src: /src/opendal/bindings/java/src/lib.rs:136,1
    - Dst: JValue::Bool
      Src: /src/opendal/bindings/java/src/lib.rs:137,1
    - Dst: Ok
      Src: /src/opendal/bindings/java/src/lib.rs:140,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 86
    argCount: 2
    argNames:
    - env
    - cap
    argTypes:
    - '&mut Env<''a>'
    - Capability
    constantsTouched: []
    func_position:
      end: 141
      start: 94
    functionDepth: 1
    functionLinenumber: 94
    functionLinenumberEnd: 141
    functionName: make_capability
    functionSourceFile: /src/opendal/bindings/java/src/lib.rs
    functionUses: 1
    functionsReached:
    - JValue::Bool
    - JValue::Long
    - Ok
    - Result::new_object
    - convert::usize_to_jlong
    linkageType: ''
    returnType: Result
    signature: 'fn make_capability<''a>(env: &mut Env<''a>, cap: Capability) -> Result<JObject<''a>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: anyhow::Result::mode
      Src: /src/opendal/bindings/java/src/lib.rs:144,1
    - Dst: anyhow::Result::last_modified
      Src: /src/opendal/bindings/java/src/lib.rs:150,1
    - Dst: Option::map_or_else
      Src: /src/opendal/bindings/java/src/lib.rs:150,1
    - Dst: Ok::<JObject<'_>, error::Error>
      Src: /src/opendal/bindings/java/src/lib.rs:151,1
    - Dst: JObject::null
      Src: /src/opendal/bindings/java/src/lib.rs:151,1
    - Dst: Ok
      Src: /src/opendal/bindings/java/src/lib.rs:153,1
    - Dst: Result::call_static_method
      Src: /src/opendal/bindings/java/src/lib.rs:153,1
    - Dst: JValue::Long
      Src: /src/opendal/bindings/java/src/lib.rs:159,1
    - Dst: Result::into_inner
      Src: /src/opendal/bindings/java/src/lib.rs:159,1
    - Dst: Arc::as_second
      Src: /src/opendal/bindings/java/src/lib.rs:159,1
    - Dst: JValue::Long
      Src: /src/opendal/bindings/java/src/lib.rs:160,1
    - Dst: Result::into_inner
      Src: /src/opendal/bindings/java/src/lib.rs:160,1
    - Dst: Arc::subsec_nanosecond
      Src: /src/opendal/bindings/java/src/lib.rs:160,1
    - Dst: l
      Src: /src/opendal/bindings/java/src/lib.rs:153,1
    - Dst: convert::string_to_jstring
      Src: /src/opendal/bindings/java/src/lib.rs:167,1
    - Dst: anyhow::Result::cache_control
      Src: /src/opendal/bindings/java/src/lib.rs:167,1
    - Dst: convert::string_to_jstring
      Src: /src/opendal/bindings/java/src/lib.rs:169,1
    - Dst: anyhow::Result::content_disposition
      Src: /src/opendal/bindings/java/src/lib.rs:169,1
    - Dst: convert::string_to_jstring
      Src: /src/opendal/bindings/java/src/lib.rs:171,1
    - Dst: anyhow::Result::content_md5
      Src: /src/opendal/bindings/java/src/lib.rs:171,1
    - Dst: convert::string_to_jstring
      Src: /src/opendal/bindings/java/src/lib.rs:173,1
    - Dst: anyhow::Result::content_type
      Src: /src/opendal/bindings/java/src/lib.rs:173,1
    - Dst: convert::string_to_jstring
      Src: /src/opendal/bindings/java/src/lib.rs:175,1
    - Dst: anyhow::Result::etag
      Src: /src/opendal/bindings/java/src/lib.rs:175,1
    - Dst: convert::string_to_jstring
      Src: /src/opendal/bindings/java/src/lib.rs:177,1
    - Dst: anyhow::Result::version
      Src: /src/opendal/bindings/java/src/lib.rs:177,1
    - Dst: anyhow::Result::content_length
      Src: /src/opendal/bindings/java/src/lib.rs:179,1
    - Dst: Result::new_object
      Src: /src/opendal/bindings/java/src/lib.rs:181,1
    - Dst: JValue::Int
      Src: /src/opendal/bindings/java/src/lib.rs:188,1
    - Dst: JValue::Long
      Src: /src/opendal/bindings/java/src/lib.rs:189,1
    - Dst: JValue::Object
      Src: /src/opendal/bindings/java/src/lib.rs:190,1
    - Dst: JValue::Object
      Src: /src/opendal/bindings/java/src/lib.rs:191,1
    - Dst: JValue::Object
      Src: /src/opendal/bindings/java/src/lib.rs:192,1
    - Dst: JValue::Object
      Src: /src/opendal/bindings/java/src/lib.rs:193,1
    - Dst: JValue::Object
      Src: /src/opendal/bindings/java/src/lib.rs:194,1
    - Dst: JValue::Object
      Src: /src/opendal/bindings/java/src/lib.rs:195,1
    - Dst: JValue::Object
      Src: /src/opendal/bindings/java/src/lib.rs:196,1
    - Dst: Ok
      Src: /src/opendal/bindings/java/src/lib.rs:199,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 82
    argCount: 2
    argNames:
    - env
    - metadata
    argTypes:
    - '&mut Env<''a>'
    - Metadata
    constantsTouched: []
    func_position:
      end: 200
      start: 143
    functionDepth: 39
    functionLinenumber: 143
    functionLinenumberEnd: 200
    functionName: make_metadata
    functionSourceFile: /src/opendal/bindings/java/src/lib.rs
    functionUses: 2
    functionsReached:
    - l
    - Result::new_object
    - JValue::Object
    - anyhow::Result::etag
    - Result::call_static_method
    - Ok
    - Result::into_inner
    - anyhow::Result::content_type
    - convert::string_to_jstring
    - anyhow::Result::cache_control
    - Arc::as_second
    - anyhow::Result::content_md5
    - anyhow::Result::content_length
    - anyhow::Result::content_disposition
    - anyhow::Result::mode
    - JObject::null
    - Arc::subsec_nanosecond
    - Ok::<JObject<'_>, error::Error>
    - anyhow::Result::version
    - Option::map_or_else
    - anyhow::Result::last_modified
    - JValue::Long
    - JValue::Int
    linkageType: ''
    returnType: Result
    signature: 'fn make_metadata<''a>(env: &mut Env<''a>, metadata: Metadata) -> Result<JObject<''a>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::new_string
      Src: /src/opendal/bindings/java/src/lib.rs:203,1
    - Dst: crate::Entry::path
      Src: /src/opendal/bindings/java/src/lib.rs:203,1
    - Dst: make_metadata
      Src: /src/opendal/bindings/java/src/lib.rs:204,1
    - Dst: crate::Entry::metadata
      Src: /src/opendal/bindings/java/src/lib.rs:204,1
    - Dst: Metadata::to_owned
      Src: /src/opendal/bindings/java/src/lib.rs:204,1
    - Dst: Ok
      Src: /src/opendal/bindings/java/src/lib.rs:206,1
    - Dst: Result::new_object
      Src: /src/opendal/bindings/java/src/lib.rs:206,1
    - Dst: JValue::Object
      Src: /src/opendal/bindings/java/src/lib.rs:209,1
    - Dst: JValue::Object
      Src: /src/opendal/bindings/java/src/lib.rs:209,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 21
    argCount: 2
    argNames:
    - env
    - entry
    argTypes:
    - '&mut Env<''a>'
    - Entry
    constantsTouched: []
    func_position:
      end: 211
      start: 202
    functionDepth: 35
    functionLinenumber: 202
    functionLinenumberEnd: 211
    functionName: make_entry
    functionSourceFile: /src/opendal/bindings/java/src/lib.rs
    functionUses: 2
    functionsReached:
    - crate::Entry::path
    - Ok
    - Result::new_object
    - Result::new_string
    - crate::Entry::metadata
    - make_metadata
    - JValue::Object
    - Metadata::to_owned
    linkageType: ''
    returnType: Result
    signature: 'fn make_entry<''a>(env: &mut Env<''a>, entry: Entry) -> Result<JObject<''a>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: convert::read_int_field
      Src: /src/opendal/bindings/java/src/lib.rs:217,1
    - Dst: Err
      Src: /src/opendal/bindings/java/src/lib.rs:220,1
    - Dst: Error::new
      Src: /src/opendal/bindings/java/src/lib.rs:220,1
    - Dst: Self::into
      Src: /src/opendal/bindings/java/src/lib.rs:220,1
    - Dst: Ok
      Src: /src/opendal/bindings/java/src/lib.rs:227,1
    - Dst: convert::read_bool_field
      Src: /src/opendal/bindings/java/src/lib.rs:228,1
    - Dst: Result::unwrap_or_default
      Src: /src/opendal/bindings/java/src/lib.rs:228,1
    - Dst: convert::read_string_field
      Src: /src/opendal/bindings/java/src/lib.rs:229,1
    - Dst: convert::read_string_field
      Src: /src/opendal/bindings/java/src/lib.rs:230,1
    - Dst: convert::read_string_field
      Src: /src/opendal/bindings/java/src/lib.rs:231,1
    - Dst: convert::read_string_field
      Src: /src/opendal/bindings/java/src/lib.rs:232,1
    - Dst: convert::read_string_field
      Src: /src/opendal/bindings/java/src/lib.rs:233,1
    - Dst: convert::read_string_field
      Src: /src/opendal/bindings/java/src/lib.rs:234,1
    - Dst: convert::read_bool_field
      Src: /src/opendal/bindings/java/src/lib.rs:235,1
    - Dst: Result::unwrap_or_default
      Src: /src/opendal/bindings/java/src/lib.rs:235,1
    - Dst: convert::read_map_field
      Src: /src/opendal/bindings/java/src/lib.rs:236,1
    - Dst: convert::read_jlong_field_to_usize
      Src: /src/opendal/bindings/java/src/lib.rs:238,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 35
    argCount: 2
    argNames:
    - env
    - options
    argTypes:
    - '&mut Env<''a>'
    - '&JObject'
    constantsTouched: []
    func_position:
      end: 240
      start: 213
    functionDepth: 36
    functionLinenumber: 213
    functionLinenumberEnd: 240
    functionName: make_write_options
    functionSourceFile: /src/opendal/bindings/java/src/lib.rs
    functionUses: 2
    functionsReached:
    - Result::unwrap_or_default
    - Ok
    - convert::read_map_field
    - Error::new
    - Err
    - convert::read_bool_field
    - convert::read_int_field
    - Self::into
    - convert::read_jlong_field_to_usize
    - convert::read_string_field
    linkageType: ''
    returnType: Result
    signature: 'fn make_write_options<''a>(env: &mut Env<''a>,options: &JObject,)
      -> Result<opendal::options::WriteOptions>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/bindings/java/src/lib.rs:246,1
    - Dst: convert::read_jlong_field_to_usize
      Src: /src/opendal/bindings/java/src/lib.rs:247,1
    - Dst: convert::read_string_field
      Src: /src/opendal/bindings/java/src/lib.rs:248,1
    - Dst: convert::read_bool_field
      Src: /src/opendal/bindings/java/src/lib.rs:249,1
    - Dst: Result::unwrap_or_default
      Src: /src/opendal/bindings/java/src/lib.rs:249,1
    - Dst: convert::read_bool_field
      Src: /src/opendal/bindings/java/src/lib.rs:250,1
    - Dst: Result::unwrap_or_default
      Src: /src/opendal/bindings/java/src/lib.rs:250,1
    - Dst: convert::read_bool_field
      Src: /src/opendal/bindings/java/src/lib.rs:251,1
    - Dst: Result::unwrap_or_default
      Src: /src/opendal/bindings/java/src/lib.rs:251,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 15
    argCount: 2
    argNames:
    - env
    - options
    argTypes:
    - '&mut Env<''a>'
    - '&JObject'
    constantsTouched: []
    func_position:
      end: 253
      start: 242
    functionDepth: 37
    functionLinenumber: 242
    functionLinenumberEnd: 253
    functionName: make_list_options
    functionSourceFile: /src/opendal/bindings/java/src/lib.rs
    functionUses: 1
    functionsReached:
    - Result::unwrap_or_default
    - Ok
    - convert::read_bool_field
    - convert::read_jlong_field_to_usize
    - convert::read_string_field
    linkageType: ''
    returnType: Result
    signature: 'fn make_list_options<''a>(env: &mut Env<''a>,options: &JObject,) ->
      Result<opendal::options::ListOptions>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/bindings/java/src/lib.rs:256,1
    - Dst: convert::read_string_field
      Src: /src/opendal/bindings/java/src/lib.rs:257,1
    - Dst: convert::read_string_field
      Src: /src/opendal/bindings/java/src/lib.rs:258,1
    - Dst: convert::read_instant_field_to_timestamp
      Src: /src/opendal/bindings/java/src/lib.rs:259,1
    - Dst: convert::read_instant_field_to_timestamp
      Src: /src/opendal/bindings/java/src/lib.rs:264,1
    - Dst: convert::read_string_field
      Src: /src/opendal/bindings/java/src/lib.rs:269,1
    - Dst: convert::read_string_field
      Src: /src/opendal/bindings/java/src/lib.rs:270,1
    - Dst: convert::read_string_field
      Src: /src/opendal/bindings/java/src/lib.rs:271,1
    - Dst: convert::read_string_field
      Src: /src/opendal/bindings/java/src/lib.rs:272,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 18
    argCount: 2
    argNames:
    - env
    - options
    argTypes:
    - '&mut Env'
    - '&JObject'
    constantsTouched: []
    func_position:
      end: 278
      start: 255
    functionDepth: 40
    functionLinenumber: 255
    functionLinenumberEnd: 278
    functionName: make_stat_options
    functionSourceFile: /src/opendal/bindings/java/src/lib.rs
    functionUses: 1
    functionsReached:
    - convert::read_instant_field_to_timestamp
    - Ok
    - convert::read_string_field
    linkageType: ''
    returnType: Result
    signature: 'fn make_stat_options(env: &mut Env, options: &JObject) -> Result<opendal::options::StatOptions>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: convert::read_int64_field
      Src: /src/opendal/bindings/java/src/lib.rs:284,1
    - Dst: convert::read_int64_field
      Src: /src/opendal/bindings/java/src/lib.rs:285,1
    - Dst: Ok
      Src: /src/opendal/bindings/java/src/lib.rs:287,1
    - Dst: convert::offset_length_to_range
      Src: /src/opendal/bindings/java/src/lib.rs:288,1
    - Dst: into
      Src: /src/opendal/bindings/java/src/lib.rs:288,1
    - Dst: Default::default
      Src: /src/opendal/bindings/java/src/lib.rs:289,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 2
    argNames:
    - env
    - options
    argTypes:
    - '&mut Env<''a>'
    - '&JObject'
    constantsTouched: []
    func_position:
      end: 291
      start: 280
    functionDepth: 38
    functionLinenumber: 280
    functionLinenumberEnd: 291
    functionName: make_read_options
    functionSourceFile: /src/opendal/bindings/java/src/lib.rs
    functionUses: 1
    functionsReached:
    - convert::offset_length_to_range
    - Ok
    - convert::read_int64_field
    - Default::default
    - into
    linkageType: ''
    returnType: Result
    signature: 'fn make_read_options<''a>(env: &mut Env<''a>,options: &JObject,) ->
      Result<opendal::options::ReadOptions>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/bindings/java/src/lib.rs:297,1
    - Dst: opendal::options::ReaderOptions::default
      Src: /src/opendal/bindings/java/src/lib.rs:297,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames: []
    argTypes:
    - '&mut Env<''a>'
    - '&JObject'
    constantsTouched: []
    func_position:
      end: 298
      start: 293
    functionDepth: 0
    functionLinenumber: 293
    functionLinenumberEnd: 298
    functionName: make_reader_options
    functionSourceFile: /src/opendal/bindings/java/src/lib.rs
    functionUses: 1
    functionsReached:
    - Ok
    - opendal::options::ReaderOptions::default
    linkageType: ''
    returnType: Result
    signature: 'fn make_reader_options<''a>(_: &mut Env<''a>,_: &JObject,) -> Result<opendal::options::ReaderOptions>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::with_env
      Src: /src/opendal/bindings/java/src/operator_output_stream.rs:43,1
    - Dst: intern_construct_write
      Src: /src/opendal/bindings/java/src/operator_output_stream.rs:45,1
    - Dst: "with_env(|env| {\n        let op_ref = unsafe { &mut *op };\n        intern_construct_write(env,\
        \ op_ref, path, options)\n    })\n    .resolve::<ThrowException>"
      Src: /src/opendal/bindings/java/src/operator_output_stream.rs:43,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 5
    argNames:
    - env
    - op
    - path
    - options
    argTypes:
    - EnvUnowned<'local>
    - JClass<'local>
    - '*mut blocking::Operator'
    - JString<'local>
    - JObject<'local>
    constantsTouched: []
    func_position:
      end: 48
      start: 34
    functionDepth: 31
    functionLinenumber: 34
    functionLinenumberEnd: 48
    functionName: Java_org_apache_opendal_OperatorOutputStream_constructWriter
    functionSourceFile: /src/opendal/bindings/java/src/operator_output_stream.rs
    functionUses: 0
    functionsReached:
    - "with_env(|env| {\n        let op_ref = unsafe { &mut *op };\n        intern_construct_write(env,\
      \ op_ref, path, options)\n    })\n    .resolve::<ThrowException>"
    - intern_construct_write
    - Result::with_env
    linkageType: ''
    returnType: jlong
    signature: 'pub unsafe extern "system" fn Java_org_apache_opendal_OperatorOutputStream_constructWriter<''local,>(mut
      env: EnvUnowned<''local>,_: JClass<''local>,op: *mut blocking::Operator,path:
      JString<''local>,options: JObject<''local>,) -> jlong'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: convert::jstring_to_string
      Src: /src/opendal/bindings/java/src/operator_output_stream.rs:58,1
    - Dst: make_write_options
      Src: /src/opendal/bindings/java/src/operator_output_stream.rs:59,1
    - Dst: writer_options
      Src: /src/opendal/bindings/java/src/operator_output_stream.rs:60,1
    - Dst: Ok
      Src: /src/opendal/bindings/java/src/operator_output_stream.rs:61,1
    - Dst: Box::into_raw
      Src: /src/opendal/bindings/java/src/operator_output_stream.rs:61,1
    - Dst: Box::new
      Src: /src/opendal/bindings/java/src/operator_output_stream.rs:61,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 4
    argNames:
    - env
    - op
    - path
    - options
    argTypes:
    - '&mut Env'
    - '&mut blocking::Operator'
    - JString
    - JObject
    constantsTouched: []
    func_position:
      end: 62
      start: 50
    functionDepth: 30
    functionLinenumber: 50
    functionLinenumberEnd: 62
    functionName: intern_construct_write
    functionSourceFile: /src/opendal/bindings/java/src/operator_output_stream.rs
    functionUses: 1
    functionsReached:
    - Ok
    - Box::new
    - convert::jstring_to_string
    - writer_options
    - make_write_options
    - Box::into_raw
    linkageType: ''
    returnType: crate::Result
    signature: 'fn intern_construct_write(env: &mut Env,op: &mut blocking::Operator,path:
      JString,options: JObject,) -> crate::Result<jlong>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::with_env
      Src: /src/opendal/bindings/java/src/operator_output_stream.rs:73,1
    - Dst: Box::from_raw
      Src: /src/opendal/bindings/java/src/operator_output_stream.rs:74,1
    - Dst: intern_dispose_write
      Src: /src/opendal/bindings/java/src/operator_output_stream.rs:75,1
    - Dst: "with_env(|_env| {\n        let mut writer = unsafe { Box::from_raw(writer)\
        \ };\n        intern_dispose_write(&mut writer)\n    })\n    .resolve::<ThrowException>"
      Src: /src/opendal/bindings/java/src/operator_output_stream.rs:73,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 3
    argNames:
    - env
    - writer
    argTypes:
    - EnvUnowned<'local>
    - JClass<'local>
    - '*mut blocking::Writer'
    constantsTouched: []
    func_position:
      end: 78
      start: 68
    functionDepth: 3
    functionLinenumber: 68
    functionLinenumberEnd: 78
    functionName: Java_org_apache_opendal_OperatorOutputStream_disposeWriter
    functionSourceFile: /src/opendal/bindings/java/src/operator_output_stream.rs
    functionUses: 0
    functionsReached:
    - Box::from_raw
    - "with_env(|_env| {\n        let mut writer = unsafe { Box::from_raw(writer)\
      \ };\n        intern_dispose_write(&mut writer)\n    })\n    .resolve::<ThrowException>"
    - intern_dispose_write
    - Result::with_env
    linkageType: ''
    returnType: void
    signature: 'pub unsafe extern "system" fn Java_org_apache_opendal_OperatorOutputStream_disposeWriter<''local>(mut
      env: EnvUnowned<''local>,_: JClass<''local>,writer: *mut blocking::Writer,)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::close
      Src: /src/opendal/bindings/java/src/operator_output_stream.rs:81,1
    - Dst: Ok
      Src: /src/opendal/bindings/java/src/operator_output_stream.rs:82,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - writer
    argTypes:
    - '&mut blocking::Writer'
    constantsTouched: []
    func_position:
      end: 83
      start: 80
    functionDepth: 2
    functionLinenumber: 80
    functionLinenumberEnd: 83
    functionName: intern_dispose_write
    functionSourceFile: /src/opendal/bindings/java/src/operator_output_stream.rs
    functionUses: 1
    functionsReached:
    - Result::close
    - Ok
    linkageType: ''
    returnType: crate::Result
    signature: 'fn intern_dispose_write(writer: &mut blocking::Writer) -> crate::Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::with_env
      Src: /src/opendal/bindings/java/src/operator_output_stream.rs:95,1
    - Dst: intern_write_bytes
      Src: /src/opendal/bindings/java/src/operator_output_stream.rs:97,1
    - Dst: "with_env(|env| {\n        let writer_ref = unsafe { &mut *writer };\n\
        \        intern_write_bytes(env, writer_ref, content)\n    })\n    .resolve::<ThrowException>"
      Src: /src/opendal/bindings/java/src/operator_output_stream.rs:95,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 4
    argNames:
    - env
    - writer
    - content
    argTypes:
    - EnvUnowned<'local>
    - JClass<'local>
    - '*mut blocking::Writer'
    - JByteArray<'local>
    constantsTouched: []
    func_position:
      end: 100
      start: 89
    functionDepth: 37
    functionLinenumber: 89
    functionLinenumberEnd: 100
    functionName: Java_org_apache_opendal_OperatorOutputStream_writeBytes
    functionSourceFile: /src/opendal/bindings/java/src/operator_output_stream.rs
    functionUses: 0
    functionsReached:
    - intern_write_bytes
    - "with_env(|env| {\n        let writer_ref = unsafe { &mut *writer };\n     \
      \   intern_write_bytes(env, writer_ref, content)\n    })\n    .resolve::<ThrowException>"
    - Result::with_env
    linkageType: ''
    returnType: void
    signature: 'pub unsafe extern "system" fn Java_org_apache_opendal_OperatorOutputStream_writeBytes<''local>(mut
      env: EnvUnowned<''local>,_: JClass<''local>,writer: *mut blocking::Writer,content:
      JByteArray<''local>,)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::convert_byte_array
      Src: /src/opendal/bindings/java/src/operator_output_stream.rs:107,1
    - Dst: Result::write
      Src: /src/opendal/bindings/java/src/operator_output_stream.rs:108,1
    - Dst: Ok
      Src: /src/opendal/bindings/java/src/operator_output_stream.rs:109,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 3
    argNames:
    - env
    - writer
    - content
    argTypes:
    - '&mut Env'
    - '&mut blocking::Writer'
    - JByteArray
    constantsTouched: []
    func_position:
      end: 110
      start: 102
    functionDepth: 36
    functionLinenumber: 102
    functionLinenumberEnd: 110
    functionName: intern_write_bytes
    functionSourceFile: /src/opendal/bindings/java/src/operator_output_stream.rs
    functionUses: 1
    functionsReached:
    - Result::write
    - Result::convert_byte_array
    - Ok
    linkageType: ''
    returnType: crate::Result
    signature: 'fn intern_write_bytes(env: &mut Env,writer: &mut blocking::Writer,content:
      JByteArray,) -> crate::Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: drop
      Src: /src/opendal/bindings/java/src/operator.rs:46,1
    - Dst: Box::from_raw
      Src: /src/opendal/bindings/java/src/operator.rs:46,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - op
    argTypes:
    - EnvUnowned<'local>
    - JObject<'local>
    - '*mut blocking::Operator'
    constantsTouched: []
    func_position:
      end: 48
      start: 40
    functionDepth: 33
    functionLinenumber: 40
    functionLinenumberEnd: 48
    functionName: Java_org_apache_opendal_Operator_disposeInternal
    functionSourceFile: /src/opendal/bindings/java/src/operator.rs
    functionUses: 0
    functionsReached:
    - Box::from_raw
    - drop
    linkageType: ''
    returnType: void
    signature: 'pub unsafe extern "system" fn Java_org_apache_opendal_Operator_disposeInternal<''local>(_:
      EnvUnowned<''local>,_: JObject<''local>,op: *mut blocking::Operator,)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Box::into_raw
      Src: /src/opendal/bindings/java/src/operator.rs:60,1
    - Dst: Box::new
      Src: /src/opendal/bindings/java/src/operator.rs:60,1
    - Dst: clone
      Src: /src/opendal/bindings/java/src/operator.rs:60,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - op
    argTypes:
    - EnvUnowned<'local>
    - JObject<'local>
    - '*mut blocking::Operator'
    constantsTouched: []
    func_position:
      end: 61
      start: 54
    functionDepth: 2
    functionLinenumber: 54
    functionLinenumberEnd: 61
    functionName: Java_org_apache_opendal_Operator_duplicate
    functionSourceFile: /src/opendal/bindings/java/src/operator.rs
    functionUses: 0
    functionsReached:
    - Box::new
    - clone
    - Box::into_raw
    linkageType: ''
    returnType: jlong
    signature: 'pub unsafe extern "system" fn Java_org_apache_opendal_Operator_duplicate<''local>(_:
      EnvUnowned<''local>,_: JObject<''local>,op: *mut blocking::Operator,) -> jlong'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::with_env
      Src: /src/opendal/bindings/java/src/operator.rs:74,1
    - Dst: intern_read
      Src: /src/opendal/bindings/java/src/operator.rs:76,1
    - Dst: "with_env(|env| {\n        let op_ref = unsafe { &mut *op };\n        intern_read(env,\
        \ op_ref, path, read_options)\n    })\n    .resolve::<ThrowException>"
      Src: /src/opendal/bindings/java/src/operator.rs:74,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 5
    argNames:
    - env
    - op
    - path
    - read_options
    argTypes:
    - EnvUnowned<'local>
    - JClass<'local>
    - '*mut blocking::Operator'
    - JString<'local>
    - JObject<'local>
    constantsTouched: []
    func_position:
      end: 79
      start: 67
    functionDepth: 31
    functionLinenumber: 67
    functionLinenumberEnd: 79
    functionName: Java_org_apache_opendal_Operator_read
    functionSourceFile: /src/opendal/bindings/java/src/operator.rs
    functionUses: 0
    functionsReached:
    - "with_env(|env| {\n        let op_ref = unsafe { &mut *op };\n        intern_read(env,\
      \ op_ref, path, read_options)\n    })\n    .resolve::<ThrowException>"
    - intern_read
    - Result::with_env
    linkageType: ''
    returnType: JByteArray
    signature: 'pub unsafe extern "system" fn Java_org_apache_opendal_Operator_read<''local>(mut
      env: EnvUnowned<''local>,_: JClass<''local>,op: *mut blocking::Operator,path:
      JString<''local>,read_options: JObject<''local>,) -> JByteArray<''local>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::with_env
      Src: /src/opendal/bindings/java/src/operator.rs:108,1
    - Dst: intern_write
      Src: /src/opendal/bindings/java/src/operator.rs:110,1
    - Dst: "with_env(|env| {\n        let op_ref = unsafe { &mut *op };\n        intern_write(env,\
        \ op_ref, path, content, write_options)\n    })\n    .resolve::<ThrowException>"
      Src: /src/opendal/bindings/java/src/operator.rs:108,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 6
    argNames:
    - env
    - op
    - path
    - content
    - write_options
    argTypes:
    - EnvUnowned<'local>
    - JClass<'local>
    - '*mut blocking::Operator'
    - JString<'local>
    - JByteArray<'local>
    - JObject<'local>
    constantsTouched: []
    func_position:
      end: 113
      start: 100
    functionDepth: 31
    functionLinenumber: 100
    functionLinenumberEnd: 113
    functionName: Java_org_apache_opendal_Operator_write
    functionSourceFile: /src/opendal/bindings/java/src/operator.rs
    functionUses: 0
    functionsReached:
    - "with_env(|env| {\n        let op_ref = unsafe { &mut *op };\n        intern_write(env,\
      \ op_ref, path, content, write_options)\n    })\n    .resolve::<ThrowException>"
    - intern_write
    - Result::with_env
    linkageType: ''
    returnType: void
    signature: 'pub unsafe extern "system" fn Java_org_apache_opendal_Operator_write<''local>(mut
      env: EnvUnowned<''local>,_: JClass<''local>,op: *mut blocking::Operator,path:
      JString<''local>,content: JByteArray<''local>,write_options: JObject<''local>,)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::with_env
      Src: /src/opendal/bindings/java/src/operator.rs:141,1
    - Dst: intern_stat
      Src: /src/opendal/bindings/java/src/operator.rs:143,1
    - Dst: "with_env(|env| {\n        let op_ref = unsafe { &mut *op };\n        intern_stat(env,\
        \ op_ref, path, stat_options)\n    })\n    .resolve::<ThrowException>"
      Src: /src/opendal/bindings/java/src/operator.rs:141,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 5
    argNames:
    - env
    - op
    - path
    - stat_options
    argTypes:
    - EnvUnowned<'local>
    - JClass<'local>
    - '*mut blocking::Operator'
    - JString<'local>
    - JObject<'local>
    constantsTouched: []
    func_position:
      end: 146
      start: 134
    functionDepth: 31
    functionLinenumber: 134
    functionLinenumberEnd: 146
    functionName: Java_org_apache_opendal_Operator_stat
    functionSourceFile: /src/opendal/bindings/java/src/operator.rs
    functionUses: 0
    functionsReached:
    - intern_stat
    - "with_env(|env| {\n        let op_ref = unsafe { &mut *op };\n        intern_stat(env,\
      \ op_ref, path, stat_options)\n    })\n    .resolve::<ThrowException>"
    - Result::with_env
    linkageType: ''
    returnType: JObject
    signature: 'pub unsafe extern "system" fn Java_org_apache_opendal_Operator_stat<''local>(mut
      env: EnvUnowned<''local>,_: JClass<''local>,op: *mut blocking::Operator,path:
      JString<''local>,stat_options: JObject<''local>,) -> JObject<''local>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::with_env
      Src: /src/opendal/bindings/java/src/operator.rs:170,1
    - Dst: intern_delete
      Src: /src/opendal/bindings/java/src/operator.rs:172,1
    - Dst: "with_env(|env| {\n        let op_ref = unsafe { &mut *op };\n        intern_delete(env,\
        \ op_ref, path)\n    })\n    .resolve::<ThrowException>"
      Src: /src/opendal/bindings/java/src/operator.rs:170,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 4
    argNames:
    - env
    - op
    - path
    argTypes:
    - EnvUnowned<'local>
    - JClass<'local>
    - '*mut blocking::Operator'
    - JString<'local>
    constantsTouched: []
    func_position:
      end: 175
      start: 164
    functionDepth: 31
    functionLinenumber: 164
    functionLinenumberEnd: 175
    functionName: Java_org_apache_opendal_Operator_delete
    functionSourceFile: /src/opendal/bindings/java/src/operator.rs
    functionUses: 0
    functionsReached:
    - intern_delete
    - Result::with_env
    - "with_env(|env| {\n        let op_ref = unsafe { &mut *op };\n        intern_delete(env,\
      \ op_ref, path)\n    })\n    .resolve::<ThrowException>"
    linkageType: ''
    returnType: void
    signature: 'pub unsafe extern "system" fn Java_org_apache_opendal_Operator_delete<''local>(mut
      env: EnvUnowned<''local>,_: JClass<''local>,op: *mut blocking::Operator,path:
      JString<''local>,)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::with_env
      Src: /src/opendal/bindings/java/src/operator.rs:196,1
    - Dst: intern_create_dir
      Src: /src/opendal/bindings/java/src/operator.rs:198,1
    - Dst: "with_env(|env| {\n        let op_ref = unsafe { &mut *op };\n        intern_create_dir(env,\
        \ op_ref, path)\n    })\n    .resolve::<ThrowException>"
      Src: /src/opendal/bindings/java/src/operator.rs:196,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 4
    argNames:
    - env
    - op
    - path
    argTypes:
    - EnvUnowned<'local>
    - JClass<'local>
    - '*mut blocking::Operator'
    - JString<'local>
    constantsTouched: []
    func_position:
      end: 201
      start: 190
    functionDepth: 31
    functionLinenumber: 190
    functionLinenumberEnd: 201
    functionName: Java_org_apache_opendal_Operator_createDir
    functionSourceFile: /src/opendal/bindings/java/src/operator.rs
    functionUses: 0
    functionsReached:
    - "with_env(|env| {\n        let op_ref = unsafe { &mut *op };\n        intern_create_dir(env,\
      \ op_ref, path)\n    })\n    .resolve::<ThrowException>"
    - intern_create_dir
    - Result::with_env
    linkageType: ''
    returnType: void
    signature: 'pub unsafe extern "system" fn Java_org_apache_opendal_Operator_createDir<''local>(mut
      env: EnvUnowned<''local>,_: JClass<''local>,op: *mut blocking::Operator,path:
      JString<''local>,)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::with_env
      Src: /src/opendal/bindings/java/src/operator.rs:223,1
    - Dst: intern_copy
      Src: /src/opendal/bindings/java/src/operator.rs:225,1
    - Dst: "with_env(|env| {\n        let op_ref = unsafe { &mut *op };\n        intern_copy(env,\
        \ op_ref, source_path, target_path)\n    })\n    .resolve::<ThrowException>"
      Src: /src/opendal/bindings/java/src/operator.rs:223,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 5
    argNames:
    - env
    - op
    - source_path
    - target_path
    argTypes:
    - EnvUnowned<'local>
    - JClass<'local>
    - '*mut blocking::Operator'
    - JString<'local>
    - JString<'local>
    constantsTouched: []
    func_position:
      end: 228
      start: 216
    functionDepth: 31
    functionLinenumber: 216
    functionLinenumberEnd: 228
    functionName: Java_org_apache_opendal_Operator_copy
    functionSourceFile: /src/opendal/bindings/java/src/operator.rs
    functionUses: 0
    functionsReached:
    - intern_copy
    - "with_env(|env| {\n        let op_ref = unsafe { &mut *op };\n        intern_copy(env,\
      \ op_ref, source_path, target_path)\n    })\n    .resolve::<ThrowException>"
    - Result::with_env
    linkageType: ''
    returnType: void
    signature: 'pub unsafe extern "system" fn Java_org_apache_opendal_Operator_copy<''local>(mut
      env: EnvUnowned<''local>,_: JClass<''local>,op: *mut blocking::Operator,source_path:
      JString<''local>,target_path: JString<''local>,)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::with_env
      Src: /src/opendal/bindings/java/src/operator.rs:254,1
    - Dst: intern_rename
      Src: /src/opendal/bindings/java/src/operator.rs:256,1
    - Dst: "with_env(|env| {\n        let op_ref = unsafe { &mut *op };\n        intern_rename(env,\
        \ op_ref, source_path, target_path)\n    })\n    .resolve::<ThrowException>"
      Src: /src/opendal/bindings/java/src/operator.rs:254,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 5
    argNames:
    - env
    - op
    - source_path
    - target_path
    argTypes:
    - EnvUnowned<'local>
    - JClass<'local>
    - '*mut blocking::Operator'
    - JString<'local>
    - JString<'local>
    constantsTouched: []
    func_position:
      end: 259
      start: 247
    functionDepth: 31
    functionLinenumber: 247
    functionLinenumberEnd: 259
    functionName: Java_org_apache_opendal_Operator_rename
    functionSourceFile: /src/opendal/bindings/java/src/operator.rs
    functionUses: 0
    functionsReached:
    - "with_env(|env| {\n        let op_ref = unsafe { &mut *op };\n        intern_rename(env,\
      \ op_ref, source_path, target_path)\n    })\n    .resolve::<ThrowException>"
    - intern_rename
    - Result::with_env
    linkageType: ''
    returnType: void
    signature: 'pub unsafe extern "system" fn Java_org_apache_opendal_Operator_rename<''local>(mut
      env: EnvUnowned<''local>,_: JClass<''local>,op: *mut blocking::Operator,source_path:
      JString<''local>,target_path: JString<''local>,)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::with_env
      Src: /src/opendal/bindings/java/src/operator.rs:283,1
    - Dst: intern_remove_all
      Src: /src/opendal/bindings/java/src/operator.rs:285,1
    - Dst: "with_env(|env| {\n        let op_ref = unsafe { &mut *op };\n        intern_remove_all(env,\
        \ op_ref, path)\n    })\n    .resolve::<ThrowException>"
      Src: /src/opendal/bindings/java/src/operator.rs:283,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 4
    argNames:
    - env
    - op
    - path
    argTypes:
    - EnvUnowned<'local>
    - JClass<'local>
    - '*mut blocking::Operator'
    - JString<'local>
    constantsTouched: []
    func_position:
      end: 288
      start: 277
    functionDepth: 31
    functionLinenumber: 277
    functionLinenumberEnd: 288
    functionName: Java_org_apache_opendal_Operator_removeAll
    functionSourceFile: /src/opendal/bindings/java/src/operator.rs
    functionUses: 0
    functionsReached:
    - intern_remove_all
    - "with_env(|env| {\n        let op_ref = unsafe { &mut *op };\n        intern_remove_all(env,\
      \ op_ref, path)\n    })\n    .resolve::<ThrowException>"
    - Result::with_env
    linkageType: ''
    returnType: void
    signature: 'pub unsafe extern "system" fn Java_org_apache_opendal_Operator_removeAll<''local>(mut
      env: EnvUnowned<''local>,_: JClass<''local>,op: *mut blocking::Operator,path:
      JString<''local>,)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::with_env
      Src: /src/opendal/bindings/java/src/operator.rs:318,1
    - Dst: intern_list
      Src: /src/opendal/bindings/java/src/operator.rs:320,1
    - Dst: "with_env(|env| {\n        let op_ref = unsafe { &mut *op };\n        intern_list(env,\
        \ op_ref, path, options)\n    })\n    .resolve::<ThrowException>"
      Src: /src/opendal/bindings/java/src/operator.rs:318,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 5
    argNames:
    - env
    - op
    - path
    - options
    argTypes:
    - EnvUnowned<'local>
    - JClass<'local>
    - '*mut blocking::Operator'
    - JString<'local>
    - JObject<'local>
    constantsTouched: []
    func_position:
      end: 323
      start: 311
    functionDepth: 31
    functionLinenumber: 311
    functionLinenumberEnd: 323
    functionName: Java_org_apache_opendal_Operator_list
    functionSourceFile: /src/opendal/bindings/java/src/operator.rs
    functionUses: 0
    functionsReached:
    - intern_list
    - "with_env(|env| {\n        let op_ref = unsafe { &mut *op };\n        intern_list(env,\
      \ op_ref, path, options)\n    })\n    .resolve::<ThrowException>"
    - Result::with_env
    linkageType: ''
    returnType: JObjectArray
    signature: 'pub unsafe extern "system" fn Java_org_apache_opendal_Operator_list<''local>(mut
      env: EnvUnowned<''local>,_: JClass<''local>,op: *mut blocking::Operator,path:
      JString<''local>,options: JObject<''local>,) -> JObjectArray<''local>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: wrap_sync::<flutter_rust_bridge::for_generated::SseCodec, _>
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:55,1
    - Dst: flutter_rust_bridge::for_generated::Dart2RustMessageSse::from_wire
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:63,1
    - Dst: flutter_rust_bridge::for_generated::SseDeserializer::new
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:70,1
    - Dst: "<RustOpaqueMoi<\n                flutter_rust_bridge::for_generated::RustAutoOpaqueInner<Metadata>,\n\
        \            >>::sse_decode"
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:71,1
    - Dst: Self::Deserializer::end
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:74,1
    - Dst: transform_result_sse::<_, ()>
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:75,1
    - Dst: flutter_rust_bridge::for_generated::lockable_compute_decode_order
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:78,1
    - Dst: Some
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:85,1
    - Dst: Self::lockable_decode_sync_ref
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:85,1
    - Dst: T::unwrap
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:89,1
    - Dst: Result::<_, ()>::Ok
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:90,1
    - Dst: crate::api::opendal_api::Metadata::content_disposition
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:91,1
    - Dst: Ok
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:93,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 32
    argCount: 3
    argNames:
    - ptr_
    - rust_vec_len_
    - data_len_
    argTypes:
    - flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr
    - i32
    - i32
    constantsTouched: []
    func_position:
      end: 97
      start: 50
    functionDepth: 35
    functionLinenumber: 50
    functionLinenumberEnd: 97
    functionName: wire__crate__api__opendal_api__Metadata_content_disposition_impl
    functionSourceFile: /src/opendal/bindings/dart/rust/src/frb_generated.rs
    functionUses: 1
    functionsReached:
    - flutter_rust_bridge::for_generated::lockable_compute_decode_order
    - Ok
    - T::unwrap
    - flutter_rust_bridge::for_generated::Dart2RustMessageSse::from_wire
    - transform_result_sse::<_, ()>
    - flutter_rust_bridge::for_generated::SseDeserializer::new
    - "<RustOpaqueMoi<\n                flutter_rust_bridge::for_generated::RustAutoOpaqueInner<Metadata>,\n\
      \            >>::sse_decode"
    - Result::<_, ()>::Ok
    - Some
    - Self::lockable_decode_sync_ref
    - crate::api::opendal_api::Metadata::content_disposition
    - Self::Deserializer::end
    - wrap_sync::<flutter_rust_bridge::for_generated::SseCodec, _>
    linkageType: ''
    returnType: flutter_rust_bridge::for_generated::WireSyncRust2DartSse
    signature: 'fn wire__crate__api__opendal_api__Metadata_content_disposition_impl(ptr_:
      flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr,rust_vec_len_:
      i32,data_len_: i32,) -> flutter_rust_bridge::for_generated::WireSyncRust2DartSse'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: wrap_sync::<flutter_rust_bridge::for_generated::SseCodec, _>
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:103,1
    - Dst: flutter_rust_bridge::for_generated::Dart2RustMessageSse::from_wire
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:111,1
    - Dst: flutter_rust_bridge::for_generated::SseDeserializer::new
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:118,1
    - Dst: "<RustOpaqueMoi<\n                flutter_rust_bridge::for_generated::RustAutoOpaqueInner<Metadata>,\n\
        \            >>::sse_decode"
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:119,1
    - Dst: Self::Deserializer::end
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:122,1
    - Dst: transform_result_sse::<_, ()>
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:123,1
    - Dst: flutter_rust_bridge::for_generated::lockable_compute_decode_order
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:126,1
    - Dst: Some
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:133,1
    - Dst: Self::lockable_decode_sync_ref
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:133,1
    - Dst: T::unwrap
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:137,1
    - Dst: Result::<_, ()>::Ok
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:138,1
    - Dst: crate::api::opendal_api::Metadata::content_length
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:139,1
    - Dst: Ok
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:141,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 32
    argCount: 3
    argNames:
    - ptr_
    - rust_vec_len_
    - data_len_
    argTypes:
    - flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr
    - i32
    - i32
    constantsTouched: []
    func_position:
      end: 145
      start: 98
    functionDepth: 35
    functionLinenumber: 98
    functionLinenumberEnd: 145
    functionName: wire__crate__api__opendal_api__Metadata_content_length_impl
    functionSourceFile: /src/opendal/bindings/dart/rust/src/frb_generated.rs
    functionUses: 1
    functionsReached:
    - flutter_rust_bridge::for_generated::lockable_compute_decode_order
    - Ok
    - T::unwrap
    - flutter_rust_bridge::for_generated::Dart2RustMessageSse::from_wire
    - transform_result_sse::<_, ()>
    - flutter_rust_bridge::for_generated::SseDeserializer::new
    - "<RustOpaqueMoi<\n                flutter_rust_bridge::for_generated::RustAutoOpaqueInner<Metadata>,\n\
      \            >>::sse_decode"
    - Result::<_, ()>::Ok
    - Some
    - Self::lockable_decode_sync_ref
    - Self::Deserializer::end
    - crate::api::opendal_api::Metadata::content_length
    - wrap_sync::<flutter_rust_bridge::for_generated::SseCodec, _>
    linkageType: ''
    returnType: flutter_rust_bridge::for_generated::WireSyncRust2DartSse
    signature: 'fn wire__crate__api__opendal_api__Metadata_content_length_impl(ptr_:
      flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr,rust_vec_len_:
      i32,data_len_: i32,) -> flutter_rust_bridge::for_generated::WireSyncRust2DartSse'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: wrap_sync::<flutter_rust_bridge::for_generated::SseCodec, _>
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:151,1
    - Dst: flutter_rust_bridge::for_generated::Dart2RustMessageSse::from_wire
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:159,1
    - Dst: flutter_rust_bridge::for_generated::SseDeserializer::new
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:166,1
    - Dst: "<RustOpaqueMoi<\n                flutter_rust_bridge::for_generated::RustAutoOpaqueInner<Metadata>,\n\
        \            >>::sse_decode"
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:167,1
    - Dst: Self::Deserializer::end
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:170,1
    - Dst: transform_result_sse::<_, ()>
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:171,1
    - Dst: flutter_rust_bridge::for_generated::lockable_compute_decode_order
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:174,1
    - Dst: Some
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:181,1
    - Dst: Self::lockable_decode_sync_ref
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:181,1
    - Dst: T::unwrap
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:185,1
    - Dst: Result::<_, ()>::Ok
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:186,1
    - Dst: crate::api::opendal_api::Metadata::content_md5
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:187,1
    - Dst: Ok
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:189,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 32
    argCount: 3
    argNames:
    - ptr_
    - rust_vec_len_
    - data_len_
    argTypes:
    - flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr
    - i32
    - i32
    constantsTouched: []
    func_position:
      end: 193
      start: 146
    functionDepth: 35
    functionLinenumber: 146
    functionLinenumberEnd: 193
    functionName: wire__crate__api__opendal_api__Metadata_content_md5_impl
    functionSourceFile: /src/opendal/bindings/dart/rust/src/frb_generated.rs
    functionUses: 1
    functionsReached:
    - flutter_rust_bridge::for_generated::lockable_compute_decode_order
    - Ok
    - T::unwrap
    - flutter_rust_bridge::for_generated::Dart2RustMessageSse::from_wire
    - transform_result_sse::<_, ()>
    - flutter_rust_bridge::for_generated::SseDeserializer::new
    - "<RustOpaqueMoi<\n                flutter_rust_bridge::for_generated::RustAutoOpaqueInner<Metadata>,\n\
      \            >>::sse_decode"
    - Result::<_, ()>::Ok
    - Some
    - Self::lockable_decode_sync_ref
    - Self::Deserializer::end
    - crate::api::opendal_api::Metadata::content_md5
    - wrap_sync::<flutter_rust_bridge::for_generated::SseCodec, _>
    linkageType: ''
    returnType: flutter_rust_bridge::for_generated::WireSyncRust2DartSse
    signature: 'fn wire__crate__api__opendal_api__Metadata_content_md5_impl(ptr_:
      flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr,rust_vec_len_:
      i32,data_len_: i32,) -> flutter_rust_bridge::for_generated::WireSyncRust2DartSse'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: wrap_sync::<flutter_rust_bridge::for_generated::SseCodec, _>
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:199,1
    - Dst: flutter_rust_bridge::for_generated::Dart2RustMessageSse::from_wire
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:207,1
    - Dst: flutter_rust_bridge::for_generated::SseDeserializer::new
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:214,1
    - Dst: "<RustOpaqueMoi<\n                flutter_rust_bridge::for_generated::RustAutoOpaqueInner<Metadata>,\n\
        \            >>::sse_decode"
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:215,1
    - Dst: Self::Deserializer::end
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:218,1
    - Dst: transform_result_sse::<_, ()>
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:219,1
    - Dst: flutter_rust_bridge::for_generated::lockable_compute_decode_order
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:222,1
    - Dst: Some
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:229,1
    - Dst: Self::lockable_decode_sync_ref
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:229,1
    - Dst: T::unwrap
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:233,1
    - Dst: Result::<_, ()>::Ok
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:234,1
    - Dst: crate::api::opendal_api::Metadata::content_type
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:235,1
    - Dst: Ok
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:237,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 32
    argCount: 3
    argNames:
    - ptr_
    - rust_vec_len_
    - data_len_
    argTypes:
    - flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr
    - i32
    - i32
    constantsTouched: []
    func_position:
      end: 241
      start: 194
    functionDepth: 35
    functionLinenumber: 194
    functionLinenumberEnd: 241
    functionName: wire__crate__api__opendal_api__Metadata_content_type_impl
    functionSourceFile: /src/opendal/bindings/dart/rust/src/frb_generated.rs
    functionUses: 1
    functionsReached:
    - flutter_rust_bridge::for_generated::lockable_compute_decode_order
    - crate::api::opendal_api::Metadata::content_type
    - Ok
    - T::unwrap
    - flutter_rust_bridge::for_generated::Dart2RustMessageSse::from_wire
    - transform_result_sse::<_, ()>
    - flutter_rust_bridge::for_generated::SseDeserializer::new
    - "<RustOpaqueMoi<\n                flutter_rust_bridge::for_generated::RustAutoOpaqueInner<Metadata>,\n\
      \            >>::sse_decode"
    - Result::<_, ()>::Ok
    - Some
    - Self::lockable_decode_sync_ref
    - Self::Deserializer::end
    - wrap_sync::<flutter_rust_bridge::for_generated::SseCodec, _>
    linkageType: ''
    returnType: flutter_rust_bridge::for_generated::WireSyncRust2DartSse
    signature: 'fn wire__crate__api__opendal_api__Metadata_content_type_impl(ptr_:
      flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr,rust_vec_len_:
      i32,data_len_: i32,) -> flutter_rust_bridge::for_generated::WireSyncRust2DartSse'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: wrap_sync::<flutter_rust_bridge::for_generated::SseCodec, _>
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:247,1
    - Dst: flutter_rust_bridge::for_generated::Dart2RustMessageSse::from_wire
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:255,1
    - Dst: flutter_rust_bridge::for_generated::SseDeserializer::new
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:262,1
    - Dst: "<RustOpaqueMoi<\n                flutter_rust_bridge::for_generated::RustAutoOpaqueInner<Metadata>,\n\
        \            >>::sse_decode"
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:263,1
    - Dst: Self::Deserializer::end
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:266,1
    - Dst: transform_result_sse::<_, ()>
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:267,1
    - Dst: flutter_rust_bridge::for_generated::lockable_compute_decode_order
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:270,1
    - Dst: Some
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:277,1
    - Dst: Self::lockable_decode_sync_ref
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:277,1
    - Dst: T::unwrap
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:281,1
    - Dst: Result::<_, ()>::Ok
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:283,1
    - Dst: crate::api::opendal_api::Metadata::etag
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:283,1
    - Dst: Ok
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:284,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 32
    argCount: 3
    argNames:
    - ptr_
    - rust_vec_len_
    - data_len_
    argTypes:
    - flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr
    - i32
    - i32
    constantsTouched: []
    func_position:
      end: 288
      start: 242
    functionDepth: 35
    functionLinenumber: 242
    functionLinenumberEnd: 288
    functionName: wire__crate__api__opendal_api__Metadata_etag_impl
    functionSourceFile: /src/opendal/bindings/dart/rust/src/frb_generated.rs
    functionUses: 1
    functionsReached:
    - flutter_rust_bridge::for_generated::lockable_compute_decode_order
    - Ok
    - T::unwrap
    - flutter_rust_bridge::for_generated::Dart2RustMessageSse::from_wire
    - transform_result_sse::<_, ()>
    - flutter_rust_bridge::for_generated::SseDeserializer::new
    - "<RustOpaqueMoi<\n                flutter_rust_bridge::for_generated::RustAutoOpaqueInner<Metadata>,\n\
      \            >>::sse_decode"
    - Result::<_, ()>::Ok
    - Some
    - Self::lockable_decode_sync_ref
    - Self::Deserializer::end
    - crate::api::opendal_api::Metadata::etag
    - wrap_sync::<flutter_rust_bridge::for_generated::SseCodec, _>
    linkageType: ''
    returnType: flutter_rust_bridge::for_generated::WireSyncRust2DartSse
    signature: 'fn wire__crate__api__opendal_api__Metadata_etag_impl(ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr,rust_vec_len_:
      i32,data_len_: i32,) -> flutter_rust_bridge::for_generated::WireSyncRust2DartSse'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: wrap_sync::<flutter_rust_bridge::for_generated::SseCodec, _>
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:294,1
    - Dst: flutter_rust_bridge::for_generated::Dart2RustMessageSse::from_wire
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:302,1
    - Dst: flutter_rust_bridge::for_generated::SseDeserializer::new
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:309,1
    - Dst: "<RustOpaqueMoi<\n                flutter_rust_bridge::for_generated::RustAutoOpaqueInner<Metadata>,\n\
        \            >>::sse_decode"
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:310,1
    - Dst: Self::Deserializer::end
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:313,1
    - Dst: transform_result_sse::<_, ()>
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:314,1
    - Dst: flutter_rust_bridge::for_generated::lockable_compute_decode_order
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:317,1
    - Dst: Some
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:324,1
    - Dst: Self::lockable_decode_sync_ref
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:324,1
    - Dst: T::unwrap
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:328,1
    - Dst: Result::<_, ()>::Ok
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:329,1
    - Dst: crate::api::opendal_api::Metadata::is_directory
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:330,1
    - Dst: Ok
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:332,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 32
    argCount: 3
    argNames:
    - ptr_
    - rust_vec_len_
    - data_len_
    argTypes:
    - flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr
    - i32
    - i32
    constantsTouched: []
    func_position:
      end: 336
      start: 289
    functionDepth: 35
    functionLinenumber: 289
    functionLinenumberEnd: 336
    functionName: wire__crate__api__opendal_api__Metadata_is_directory_impl
    functionSourceFile: /src/opendal/bindings/dart/rust/src/frb_generated.rs
    functionUses: 1
    functionsReached:
    - flutter_rust_bridge::for_generated::lockable_compute_decode_order
    - crate::api::opendal_api::Metadata::is_directory
    - Ok
    - T::unwrap
    - flutter_rust_bridge::for_generated::Dart2RustMessageSse::from_wire
    - transform_result_sse::<_, ()>
    - flutter_rust_bridge::for_generated::SseDeserializer::new
    - "<RustOpaqueMoi<\n                flutter_rust_bridge::for_generated::RustAutoOpaqueInner<Metadata>,\n\
      \            >>::sse_decode"
    - Result::<_, ()>::Ok
    - Some
    - Self::lockable_decode_sync_ref
    - Self::Deserializer::end
    - wrap_sync::<flutter_rust_bridge::for_generated::SseCodec, _>
    linkageType: ''
    returnType: flutter_rust_bridge::for_generated::WireSyncRust2DartSse
    signature: 'fn wire__crate__api__opendal_api__Metadata_is_directory_impl(ptr_:
      flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr,rust_vec_len_:
      i32,data_len_: i32,) -> flutter_rust_bridge::for_generated::WireSyncRust2DartSse'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: wrap_sync::<flutter_rust_bridge::for_generated::SseCodec, _>
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:342,1
    - Dst: flutter_rust_bridge::for_generated::Dart2RustMessageSse::from_wire
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:350,1
    - Dst: flutter_rust_bridge::for_generated::SseDeserializer::new
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:357,1
    - Dst: "<RustOpaqueMoi<\n                flutter_rust_bridge::for_generated::RustAutoOpaqueInner<Metadata>,\n\
        \            >>::sse_decode"
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:358,1
    - Dst: Self::Deserializer::end
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:361,1
    - Dst: transform_result_sse::<_, ()>
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:362,1
    - Dst: flutter_rust_bridge::for_generated::lockable_compute_decode_order
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:365,1
    - Dst: Some
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:372,1
    - Dst: Self::lockable_decode_sync_ref
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:372,1
    - Dst: T::unwrap
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:376,1
    - Dst: Result::<_, ()>::Ok
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:377,1
    - Dst: crate::api::opendal_api::Metadata::is_file
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:377,1
    - Dst: Ok
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:380,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 32
    argCount: 3
    argNames:
    - ptr_
    - rust_vec_len_
    - data_len_
    argTypes:
    - flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr
    - i32
    - i32
    constantsTouched: []
    func_position:
      end: 384
      start: 337
    functionDepth: 35
    functionLinenumber: 337
    functionLinenumberEnd: 384
    functionName: wire__crate__api__opendal_api__Metadata_is_file_impl
    functionSourceFile: /src/opendal/bindings/dart/rust/src/frb_generated.rs
    functionUses: 1
    functionsReached:
    - flutter_rust_bridge::for_generated::lockable_compute_decode_order
    - crate::api::opendal_api::Metadata::is_file
    - Ok
    - T::unwrap
    - flutter_rust_bridge::for_generated::Dart2RustMessageSse::from_wire
    - transform_result_sse::<_, ()>
    - flutter_rust_bridge::for_generated::SseDeserializer::new
    - "<RustOpaqueMoi<\n                flutter_rust_bridge::for_generated::RustAutoOpaqueInner<Metadata>,\n\
      \            >>::sse_decode"
    - Result::<_, ()>::Ok
    - Some
    - Self::lockable_decode_sync_ref
    - Self::Deserializer::end
    - wrap_sync::<flutter_rust_bridge::for_generated::SseCodec, _>
    linkageType: ''
    returnType: flutter_rust_bridge::for_generated::WireSyncRust2DartSse
    signature: 'fn wire__crate__api__opendal_api__Metadata_is_file_impl(ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr,rust_vec_len_:
      i32,data_len_: i32,) -> flutter_rust_bridge::for_generated::WireSyncRust2DartSse'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: wrap_sync::<flutter_rust_bridge::for_generated::SseCodec, _>
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:390,1
    - Dst: flutter_rust_bridge::for_generated::Dart2RustMessageSse::from_wire
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:398,1
    - Dst: flutter_rust_bridge::for_generated::SseDeserializer::new
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:405,1
    - Dst: "<RustOpaqueMoi<\n                flutter_rust_bridge::for_generated::RustAutoOpaqueInner<Metadata>,\n\
        \            >>::sse_decode"
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:406,1
    - Dst: Self::Deserializer::end
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:409,1
    - Dst: transform_result_sse::<_, ()>
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:410,1
    - Dst: flutter_rust_bridge::for_generated::lockable_compute_decode_order
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:413,1
    - Dst: Some
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:420,1
    - Dst: Self::lockable_decode_sync_ref
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:420,1
    - Dst: T::unwrap
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:424,1
    - Dst: Result::<_, ()>::Ok
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:425,1
    - Dst: crate::api::opendal_api::Metadata::last_modified
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:426,1
    - Dst: Ok
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:428,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 32
    argCount: 3
    argNames:
    - ptr_
    - rust_vec_len_
    - data_len_
    argTypes:
    - flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr
    - i32
    - i32
    constantsTouched: []
    func_position:
      end: 432
      start: 385
    functionDepth: 35
    functionLinenumber: 385
    functionLinenumberEnd: 432
    functionName: wire__crate__api__opendal_api__Metadata_last_modified_impl
    functionSourceFile: /src/opendal/bindings/dart/rust/src/frb_generated.rs
    functionUses: 1
    functionsReached:
    - flutter_rust_bridge::for_generated::lockable_compute_decode_order
    - Ok
    - T::unwrap
    - flutter_rust_bridge::for_generated::Dart2RustMessageSse::from_wire
    - transform_result_sse::<_, ()>
    - flutter_rust_bridge::for_generated::SseDeserializer::new
    - "<RustOpaqueMoi<\n                flutter_rust_bridge::for_generated::RustAutoOpaqueInner<Metadata>,\n\
      \            >>::sse_decode"
    - Result::<_, ()>::Ok
    - Some
    - Self::lockable_decode_sync_ref
    - crate::api::opendal_api::Metadata::last_modified
    - Self::Deserializer::end
    - wrap_sync::<flutter_rust_bridge::for_generated::SseCodec, _>
    linkageType: ''
    returnType: flutter_rust_bridge::for_generated::WireSyncRust2DartSse
    signature: 'fn wire__crate__api__opendal_api__Metadata_last_modified_impl(ptr_:
      flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr,rust_vec_len_:
      i32,data_len_: i32,) -> flutter_rust_bridge::for_generated::WireSyncRust2DartSse'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: wrap_async::<flutter_rust_bridge::for_generated::SseCodec, _, _, _>
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:439,1
    - Dst: Some
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:442,1
    - Dst: flutter_rust_bridge::for_generated::Dart2RustMessageSse::from_wire
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:447,1
    - Dst: flutter_rust_bridge::for_generated::SseDeserializer::new
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:454,1
    - Dst: "<RustOpaqueMoi<\n                flutter_rust_bridge::for_generated::RustAutoOpaqueInner<Operator>,\n\
        \            >>::sse_decode"
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:455,1
    - Dst: Self::Deserializer::end
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:458,1
    - Dst: transform_result_sse::<_, ()>
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:460,1
    - Dst: flutter_rust_bridge::for_generated::lockable_compute_decode_order
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:464,1
    - Dst: Some
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:473,1
    - Dst: Self::lockable_decode_async_ref
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:473,1
    - Dst: T::unwrap
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:478,1
    - Dst: Result::<_, ()>::Ok
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:479,1
    - Dst: crate::api::opendal_api::Operator::check
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:480,1
    - Dst: Ok
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:482,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 38
    argCount: 4
    argNames:
    - port_
    - ptr_
    - rust_vec_len_
    - data_len_
    argTypes:
    - flutter_rust_bridge::for_generated::MessagePort
    - flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr
    - i32
    - i32
    constantsTouched: []
    func_position:
      end: 489
      start: 433
    functionDepth: 35
    functionLinenumber: 433
    functionLinenumberEnd: 489
    functionName: wire__crate__api__opendal_api__Operator_check_impl
    functionSourceFile: /src/opendal/bindings/dart/rust/src/frb_generated.rs
    functionUses: 1
    functionsReached:
    - flutter_rust_bridge::for_generated::lockable_compute_decode_order
    - Ok
    - T::unwrap
    - flutter_rust_bridge::for_generated::Dart2RustMessageSse::from_wire
    - transform_result_sse::<_, ()>
    - flutter_rust_bridge::for_generated::SseDeserializer::new
    - wrap_async::<flutter_rust_bridge::for_generated::SseCodec, _, _, _>
    - Result::<_, ()>::Ok
    - Some
    - crate::api::opendal_api::Operator::check
    - Self::Deserializer::end
    - Self::lockable_decode_async_ref
    - "<RustOpaqueMoi<\n                flutter_rust_bridge::for_generated::RustAutoOpaqueInner<Operator>,\n\
      \            >>::sse_decode"
    linkageType: ''
    returnType: void
    signature: 'fn wire__crate__api__opendal_api__Operator_check_impl(port_: flutter_rust_bridge::for_generated::MessagePort,ptr_:
      flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr,rust_vec_len_:
      i32,data_len_: i32,)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: wrap_async::<flutter_rust_bridge::for_generated::SseCodec, _, _, _>
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:496,1
    - Dst: Some
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:499,1
    - Dst: flutter_rust_bridge::for_generated::Dart2RustMessageSse::from_wire
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:504,1
    - Dst: flutter_rust_bridge::for_generated::SseDeserializer::new
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:511,1
    - Dst: "<RustOpaqueMoi<\n                flutter_rust_bridge::for_generated::RustAutoOpaqueInner<Operator>,\n\
        \            >>::sse_decode"
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:512,1
    - Dst: <String>::sse_decode
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:515,1
    - Dst: Self::Deserializer::end
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:516,1
    - Dst: transform_result_sse::<_, ()>
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:518,1
    - Dst: flutter_rust_bridge::for_generated::lockable_compute_decode_order
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:522,1
    - Dst: Some
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:531,1
    - Dst: Self::lockable_decode_async_ref
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:531,1
    - Dst: T::unwrap
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:536,1
    - Dst: Result::<_, ()>::Ok
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:537,1
    - Dst: crate::api::opendal_api::Operator::create_dir
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:538,1
    - Dst: Ok
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:544,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 40
    argCount: 4
    argNames:
    - port_
    - ptr_
    - rust_vec_len_
    - data_len_
    argTypes:
    - flutter_rust_bridge::for_generated::MessagePort
    - flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr
    - i32
    - i32
    constantsTouched: []
    func_position:
      end: 551
      start: 490
    functionDepth: 35
    functionLinenumber: 490
    functionLinenumberEnd: 551
    functionName: wire__crate__api__opendal_api__Operator_create_dir_impl
    functionSourceFile: /src/opendal/bindings/dart/rust/src/frb_generated.rs
    functionUses: 1
    functionsReached:
    - flutter_rust_bridge::for_generated::lockable_compute_decode_order
    - crate::api::opendal_api::Operator::create_dir
    - Ok
    - T::unwrap
    - flutter_rust_bridge::for_generated::Dart2RustMessageSse::from_wire
    - transform_result_sse::<_, ()>
    - flutter_rust_bridge::for_generated::SseDeserializer::new
    - wrap_async::<flutter_rust_bridge::for_generated::SseCodec, _, _, _>
    - <String>::sse_decode
    - Some
    - Result::<_, ()>::Ok
    - Self::Deserializer::end
    - Self::lockable_decode_async_ref
    - "<RustOpaqueMoi<\n                flutter_rust_bridge::for_generated::RustAutoOpaqueInner<Operator>,\n\
      \            >>::sse_decode"
    linkageType: ''
    returnType: void
    signature: 'fn wire__crate__api__opendal_api__Operator_create_dir_impl(port_:
      flutter_rust_bridge::for_generated::MessagePort,ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr,rust_vec_len_:
      i32,data_len_: i32,)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: wrap_sync::<flutter_rust_bridge::for_generated::SseCodec, _>
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:557,1
    - Dst: flutter_rust_bridge::for_generated::Dart2RustMessageSse::from_wire
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:565,1
    - Dst: flutter_rust_bridge::for_generated::SseDeserializer::new
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:572,1
    - Dst: "<RustOpaqueMoi<\n                flutter_rust_bridge::for_generated::RustAutoOpaqueInner<Operator>,\n\
        \            >>::sse_decode"
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:573,1
    - Dst: <String>::sse_decode
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:576,1
    - Dst: Self::Deserializer::end
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:577,1
    - Dst: transform_result_sse::<_, ()>
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:578,1
    - Dst: flutter_rust_bridge::for_generated::lockable_compute_decode_order
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:581,1
    - Dst: Some
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:588,1
    - Dst: Self::lockable_decode_sync_ref
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:588,1
    - Dst: T::unwrap
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:592,1
    - Dst: Result::<_, ()>::Ok
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:593,1
    - Dst: crate::api::opendal_api::Operator::create_dir_sync
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:594,1
    - Dst: Ok
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:596,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 35
    argCount: 3
    argNames:
    - ptr_
    - rust_vec_len_
    - data_len_
    argTypes:
    - flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr
    - i32
    - i32
    constantsTouched: []
    func_position:
      end: 600
      start: 552
    functionDepth: 35
    functionLinenumber: 552
    functionLinenumberEnd: 600
    functionName: wire__crate__api__opendal_api__Operator_create_dir_sync_impl
    functionSourceFile: /src/opendal/bindings/dart/rust/src/frb_generated.rs
    functionUses: 1
    functionsReached:
    - flutter_rust_bridge::for_generated::lockable_compute_decode_order
    - Ok
    - T::unwrap
    - flutter_rust_bridge::for_generated::Dart2RustMessageSse::from_wire
    - transform_result_sse::<_, ()>
    - flutter_rust_bridge::for_generated::SseDeserializer::new
    - <String>::sse_decode
    - Result::<_, ()>::Ok
    - Some
    - Self::lockable_decode_sync_ref
    - Self::Deserializer::end
    - crate::api::opendal_api::Operator::create_dir_sync
    - wrap_sync::<flutter_rust_bridge::for_generated::SseCodec, _>
    - "<RustOpaqueMoi<\n                flutter_rust_bridge::for_generated::RustAutoOpaqueInner<Operator>,\n\
      \            >>::sse_decode"
    linkageType: ''
    returnType: flutter_rust_bridge::for_generated::WireSyncRust2DartSse
    signature: 'fn wire__crate__api__opendal_api__Operator_create_dir_sync_impl(ptr_:
      flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr,rust_vec_len_:
      i32,data_len_: i32,) -> flutter_rust_bridge::for_generated::WireSyncRust2DartSse'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: wrap_async::<flutter_rust_bridge::for_generated::SseCodec, _, _, _>
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:607,1
    - Dst: Some
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:610,1
    - Dst: flutter_rust_bridge::for_generated::Dart2RustMessageSse::from_wire
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:615,1
    - Dst: flutter_rust_bridge::for_generated::SseDeserializer::new
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:622,1
    - Dst: "<RustOpaqueMoi<\n                flutter_rust_bridge::for_generated::RustAutoOpaqueInner<Operator>,\n\
        \            >>::sse_decode"
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:623,1
    - Dst: <String>::sse_decode
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:626,1
    - Dst: Self::Deserializer::end
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:627,1
    - Dst: transform_result_sse::<_, ()>
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:629,1
    - Dst: flutter_rust_bridge::for_generated::lockable_compute_decode_order
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:633,1
    - Dst: Some
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:642,1
    - Dst: Self::lockable_decode_async_ref
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:642,1
    - Dst: T::unwrap
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:647,1
    - Dst: Result::<_, ()>::Ok
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:648,1
    - Dst: crate::api::opendal_api::Operator::delete
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:649,1
    - Dst: Ok
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:652,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 40
    argCount: 4
    argNames:
    - port_
    - ptr_
    - rust_vec_len_
    - data_len_
    argTypes:
    - flutter_rust_bridge::for_generated::MessagePort
    - flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr
    - i32
    - i32
    constantsTouched: []
    func_position:
      end: 659
      start: 601
    functionDepth: 35
    functionLinenumber: 601
    functionLinenumberEnd: 659
    functionName: wire__crate__api__opendal_api__Operator_delete_impl
    functionSourceFile: /src/opendal/bindings/dart/rust/src/frb_generated.rs
    functionUses: 1
    functionsReached:
    - flutter_rust_bridge::for_generated::lockable_compute_decode_order
    - crate::api::opendal_api::Operator::delete
    - Ok
    - T::unwrap
    - flutter_rust_bridge::for_generated::Dart2RustMessageSse::from_wire
    - transform_result_sse::<_, ()>
    - flutter_rust_bridge::for_generated::SseDeserializer::new
    - wrap_async::<flutter_rust_bridge::for_generated::SseCodec, _, _, _>
    - <String>::sse_decode
    - Some
    - Result::<_, ()>::Ok
    - Self::Deserializer::end
    - Self::lockable_decode_async_ref
    - "<RustOpaqueMoi<\n                flutter_rust_bridge::for_generated::RustAutoOpaqueInner<Operator>,\n\
      \            >>::sse_decode"
    linkageType: ''
    returnType: void
    signature: 'fn wire__crate__api__opendal_api__Operator_delete_impl(port_: flutter_rust_bridge::for_generated::MessagePort,ptr_:
      flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr,rust_vec_len_:
      i32,data_len_: i32,)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: wrap_sync::<flutter_rust_bridge::for_generated::SseCodec, _>
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:665,1
    - Dst: flutter_rust_bridge::for_generated::Dart2RustMessageSse::from_wire
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:673,1
    - Dst: flutter_rust_bridge::for_generated::SseDeserializer::new
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:680,1
    - Dst: "<RustOpaqueMoi<\n                flutter_rust_bridge::for_generated::RustAutoOpaqueInner<Operator>,\n\
        \            >>::sse_decode"
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:681,1
    - Dst: <String>::sse_decode
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:684,1
    - Dst: Self::Deserializer::end
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:685,1
    - Dst: transform_result_sse::<_, ()>
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:686,1
    - Dst: flutter_rust_bridge::for_generated::lockable_compute_decode_order
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:689,1
    - Dst: Some
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:696,1
    - Dst: Self::lockable_decode_sync_ref
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:696,1
    - Dst: T::unwrap
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:700,1
    - Dst: Result::<_, ()>::Ok
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:701,1
    - Dst: crate::api::opendal_api::Operator::delete_sync
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:702,1
    - Dst: Ok
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:704,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 35
    argCount: 3
    argNames:
    - ptr_
    - rust_vec_len_
    - data_len_
    argTypes:
    - flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr
    - i32
    - i32
    constantsTouched: []
    func_position:
      end: 708
      start: 660
    functionDepth: 35
    functionLinenumber: 660
    functionLinenumberEnd: 708
    functionName: wire__crate__api__opendal_api__Operator_delete_sync_impl
    functionSourceFile: /src/opendal/bindings/dart/rust/src/frb_generated.rs
    functionUses: 1
    functionsReached:
    - flutter_rust_bridge::for_generated::lockable_compute_decode_order
    - Ok
    - T::unwrap
    - flutter_rust_bridge::for_generated::Dart2RustMessageSse::from_wire
    - transform_result_sse::<_, ()>
    - crate::api::opendal_api::Operator::delete_sync
    - flutter_rust_bridge::for_generated::SseDeserializer::new
    - <String>::sse_decode
    - Result::<_, ()>::Ok
    - Some
    - Self::lockable_decode_sync_ref
    - Self::Deserializer::end
    - wrap_sync::<flutter_rust_bridge::for_generated::SseCodec, _>
    - "<RustOpaqueMoi<\n                flutter_rust_bridge::for_generated::RustAutoOpaqueInner<Operator>,\n\
      \            >>::sse_decode"
    linkageType: ''
    returnType: flutter_rust_bridge::for_generated::WireSyncRust2DartSse
    signature: 'fn wire__crate__api__opendal_api__Operator_delete_sync_impl(ptr_:
      flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr,rust_vec_len_:
      i32,data_len_: i32,) -> flutter_rust_bridge::for_generated::WireSyncRust2DartSse'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: wrap_async::<flutter_rust_bridge::for_generated::SseCodec, _, _, _>
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:715,1
    - Dst: Some
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:718,1
    - Dst: flutter_rust_bridge::for_generated::Dart2RustMessageSse::from_wire
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:723,1
    - Dst: flutter_rust_bridge::for_generated::SseDeserializer::new
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:730,1
    - Dst: "<RustOpaqueMoi<\n                flutter_rust_bridge::for_generated::RustAutoOpaqueInner<Operator>,\n\
        \            >>::sse_decode"
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:731,1
    - Dst: <String>::sse_decode
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:734,1
    - Dst: Self::Deserializer::end
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:735,1
    - Dst: transform_result_sse::<_, ()>
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:737,1
    - Dst: flutter_rust_bridge::for_generated::lockable_compute_decode_order
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:741,1
    - Dst: Some
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:750,1
    - Dst: Self::lockable_decode_async_ref
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:750,1
    - Dst: T::unwrap
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:755,1
    - Dst: Result::<_, ()>::Ok
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:756,1
    - Dst: crate::api::opendal_api::Operator::exists
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:757,1
    - Dst: Ok
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:760,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 39
    argCount: 4
    argNames:
    - port_
    - ptr_
    - rust_vec_len_
    - data_len_
    argTypes:
    - flutter_rust_bridge::for_generated::MessagePort
    - flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr
    - i32
    - i32
    constantsTouched: []
    func_position:
      end: 767
      start: 709
    functionDepth: 35
    functionLinenumber: 709
    functionLinenumberEnd: 767
    functionName: wire__crate__api__opendal_api__Operator_exists_impl
    functionSourceFile: /src/opendal/bindings/dart/rust/src/frb_generated.rs
    functionUses: 1
    functionsReached:
    - flutter_rust_bridge::for_generated::lockable_compute_decode_order
    - Ok
    - T::unwrap
    - flutter_rust_bridge::for_generated::Dart2RustMessageSse::from_wire
    - transform_result_sse::<_, ()>
    - flutter_rust_bridge::for_generated::SseDeserializer::new
    - wrap_async::<flutter_rust_bridge::for_generated::SseCodec, _, _, _>
    - <String>::sse_decode
    - Some
    - Result::<_, ()>::Ok
    - crate::api::opendal_api::Operator::exists
    - Self::Deserializer::end
    - Self::lockable_decode_async_ref
    - "<RustOpaqueMoi<\n                flutter_rust_bridge::for_generated::RustAutoOpaqueInner<Operator>,\n\
      \            >>::sse_decode"
    linkageType: ''
    returnType: void
    signature: 'fn wire__crate__api__opendal_api__Operator_exists_impl(port_: flutter_rust_bridge::for_generated::MessagePort,ptr_:
      flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr,rust_vec_len_:
      i32,data_len_: i32,)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: wrap_sync::<flutter_rust_bridge::for_generated::SseCodec, _>
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:773,1
    - Dst: flutter_rust_bridge::for_generated::Dart2RustMessageSse::from_wire
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:781,1
    - Dst: flutter_rust_bridge::for_generated::SseDeserializer::new
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:788,1
    - Dst: "<RustOpaqueMoi<\n                flutter_rust_bridge::for_generated::RustAutoOpaqueInner<Operator>,\n\
        \            >>::sse_decode"
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:789,1
    - Dst: <String>::sse_decode
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:792,1
    - Dst: Self::Deserializer::end
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:793,1
    - Dst: transform_result_sse::<_, ()>
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:794,1
    - Dst: flutter_rust_bridge::for_generated::lockable_compute_decode_order
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:797,1
    - Dst: Some
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:804,1
    - Dst: Self::lockable_decode_sync_ref
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:804,1
    - Dst: T::unwrap
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:808,1
    - Dst: Result::<_, ()>::Ok
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:809,1
    - Dst: crate::api::opendal_api::Operator::exists_sync
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:810,1
    - Dst: Ok
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:812,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 34
    argCount: 3
    argNames:
    - ptr_
    - rust_vec_len_
    - data_len_
    argTypes:
    - flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr
    - i32
    - i32
    constantsTouched: []
    func_position:
      end: 816
      start: 768
    functionDepth: 35
    functionLinenumber: 768
    functionLinenumberEnd: 816
    functionName: wire__crate__api__opendal_api__Operator_exists_sync_impl
    functionSourceFile: /src/opendal/bindings/dart/rust/src/frb_generated.rs
    functionUses: 1
    functionsReached:
    - flutter_rust_bridge::for_generated::lockable_compute_decode_order
    - crate::api::opendal_api::Operator::exists_sync
    - Ok
    - T::unwrap
    - flutter_rust_bridge::for_generated::Dart2RustMessageSse::from_wire
    - transform_result_sse::<_, ()>
    - flutter_rust_bridge::for_generated::SseDeserializer::new
    - <String>::sse_decode
    - Result::<_, ()>::Ok
    - Some
    - Self::lockable_decode_sync_ref
    - Self::Deserializer::end
    - wrap_sync::<flutter_rust_bridge::for_generated::SseCodec, _>
    - "<RustOpaqueMoi<\n                flutter_rust_bridge::for_generated::RustAutoOpaqueInner<Operator>,\n\
      \            >>::sse_decode"
    linkageType: ''
    returnType: flutter_rust_bridge::for_generated::WireSyncRust2DartSse
    signature: 'fn wire__crate__api__opendal_api__Operator_exists_sync_impl(ptr_:
      flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr,rust_vec_len_:
      i32,data_len_: i32,) -> flutter_rust_bridge::for_generated::WireSyncRust2DartSse'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: wrap_sync::<flutter_rust_bridge::for_generated::SseCodec, _>
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:822,1
    - Dst: flutter_rust_bridge::for_generated::Dart2RustMessageSse::from_wire
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:830,1
    - Dst: flutter_rust_bridge::for_generated::SseDeserializer::new
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:837,1
    - Dst: <String>::sse_decode
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:838,1
    - Dst: <std::collections::HashMap<String, String>>::sse_decode
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:840,1
    - Dst: Self::Deserializer::end
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:841,1
    - Dst: transform_result_sse::<_, ()>
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:842,1
    - Dst: Result::<_, ()>::Ok
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:843,1
    - Dst: crate::api::opendal_api::Operator::new
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:843,1
    - Dst: Ok
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:846,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 21
    argCount: 3
    argNames:
    - ptr_
    - rust_vec_len_
    - data_len_
    argTypes:
    - flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr
    - i32
    - i32
    constantsTouched: []
    func_position:
      end: 850
      start: 817
    functionDepth: 2
    functionLinenumber: 817
    functionLinenumberEnd: 850
    functionName: wire__crate__api__opendal_api__Operator_new_impl
    functionSourceFile: /src/opendal/bindings/dart/rust/src/frb_generated.rs
    functionUses: 1
    functionsReached:
    - Ok
    - flutter_rust_bridge::for_generated::Dart2RustMessageSse::from_wire
    - transform_result_sse::<_, ()>
    - flutter_rust_bridge::for_generated::SseDeserializer::new
    - <String>::sse_decode
    - Result::<_, ()>::Ok
    - crate::api::opendal_api::Operator::new
    - <std::collections::HashMap<String, String>>::sse_decode
    - Self::Deserializer::end
    - wrap_sync::<flutter_rust_bridge::for_generated::SseCodec, _>
    linkageType: ''
    returnType: flutter_rust_bridge::for_generated::WireSyncRust2DartSse
    signature: 'fn wire__crate__api__opendal_api__Operator_new_impl(ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr,rust_vec_len_:
      i32,data_len_: i32,) -> flutter_rust_bridge::for_generated::WireSyncRust2DartSse'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: wrap_async::<flutter_rust_bridge::for_generated::SseCodec, _, _, _>
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:857,1
    - Dst: Some
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:860,1
    - Dst: flutter_rust_bridge::for_generated::Dart2RustMessageSse::from_wire
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:865,1
    - Dst: flutter_rust_bridge::for_generated::SseDeserializer::new
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:872,1
    - Dst: "<RustOpaqueMoi<\n                flutter_rust_bridge::for_generated::RustAutoOpaqueInner<Operator>,\n\
        \            >>::sse_decode"
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:873,1
    - Dst: <String>::sse_decode
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:876,1
    - Dst: Self::Deserializer::end
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:877,1
    - Dst: transform_result_sse::<_, flutter_rust_bridge::for_generated::anyhow::Error>
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:879,1
    - Dst: flutter_rust_bridge::for_generated::lockable_compute_decode_order
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:883,1
    - Dst: Some
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:892,1
    - Dst: Self::lockable_decode_async_ref
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:892,1
    - Dst: T::unwrap
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:897,1
    - Dst: crate::api::opendal_api::Operator::read
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:899,1
    - Dst: Ok
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:901,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 38
    argCount: 4
    argNames:
    - port_
    - ptr_
    - rust_vec_len_
    - data_len_
    argTypes:
    - flutter_rust_bridge::for_generated::MessagePort
    - flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr
    - i32
    - i32
    constantsTouched: []
    func_position:
      end: 908
      start: 851
    functionDepth: 35
    functionLinenumber: 851
    functionLinenumberEnd: 908
    functionName: wire__crate__api__opendal_api__Operator_read_impl
    functionSourceFile: /src/opendal/bindings/dart/rust/src/frb_generated.rs
    functionUses: 1
    functionsReached:
    - crate::api::opendal_api::Operator::read
    - flutter_rust_bridge::for_generated::lockable_compute_decode_order
    - Ok
    - T::unwrap
    - flutter_rust_bridge::for_generated::Dart2RustMessageSse::from_wire
    - flutter_rust_bridge::for_generated::SseDeserializer::new
    - wrap_async::<flutter_rust_bridge::for_generated::SseCodec, _, _, _>
    - <String>::sse_decode
    - Some
    - Self::Deserializer::end
    - Self::lockable_decode_async_ref
    - transform_result_sse::<_, flutter_rust_bridge::for_generated::anyhow::Error>
    - "<RustOpaqueMoi<\n                flutter_rust_bridge::for_generated::RustAutoOpaqueInner<Operator>,\n\
      \            >>::sse_decode"
    linkageType: ''
    returnType: void
    signature: 'fn wire__crate__api__opendal_api__Operator_read_impl(port_: flutter_rust_bridge::for_generated::MessagePort,ptr_:
      flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr,rust_vec_len_:
      i32,data_len_: i32,)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: wrap_sync::<flutter_rust_bridge::for_generated::SseCodec, _>
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:914,1
    - Dst: flutter_rust_bridge::for_generated::Dart2RustMessageSse::from_wire
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:922,1
    - Dst: flutter_rust_bridge::for_generated::SseDeserializer::new
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:929,1
    - Dst: "<RustOpaqueMoi<\n                flutter_rust_bridge::for_generated::RustAutoOpaqueInner<Operator>,\n\
        \            >>::sse_decode"
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:930,1
    - Dst: <String>::sse_decode
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:933,1
    - Dst: Self::Deserializer::end
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:934,1
    - Dst: transform_result_sse::<_, flutter_rust_bridge::for_generated::anyhow::Error>
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:935,1
    - Dst: flutter_rust_bridge::for_generated::lockable_compute_decode_order
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:939,1
    - Dst: Some
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:946,1
    - Dst: Self::lockable_decode_sync_ref
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:946,1
    - Dst: T::unwrap
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:950,1
    - Dst: crate::api::opendal_api::Operator::read_sync
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:952,1
    - Dst: Ok
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:953,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 33
    argCount: 3
    argNames:
    - ptr_
    - rust_vec_len_
    - data_len_
    argTypes:
    - flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr
    - i32
    - i32
    constantsTouched: []
    func_position:
      end: 958
      start: 909
    functionDepth: 35
    functionLinenumber: 909
    functionLinenumberEnd: 958
    functionName: wire__crate__api__opendal_api__Operator_read_sync_impl
    functionSourceFile: /src/opendal/bindings/dart/rust/src/frb_generated.rs
    functionUses: 1
    functionsReached:
    - crate::api::opendal_api::Operator::read_sync
    - flutter_rust_bridge::for_generated::lockable_compute_decode_order
    - Ok
    - T::unwrap
    - flutter_rust_bridge::for_generated::Dart2RustMessageSse::from_wire
    - flutter_rust_bridge::for_generated::SseDeserializer::new
    - <String>::sse_decode
    - Some
    - Self::lockable_decode_sync_ref
    - Self::Deserializer::end
    - transform_result_sse::<_, flutter_rust_bridge::for_generated::anyhow::Error>
    - wrap_sync::<flutter_rust_bridge::for_generated::SseCodec, _>
    - "<RustOpaqueMoi<\n                flutter_rust_bridge::for_generated::RustAutoOpaqueInner<Operator>,\n\
      \            >>::sse_decode"
    linkageType: ''
    returnType: flutter_rust_bridge::for_generated::WireSyncRust2DartSse
    signature: 'fn wire__crate__api__opendal_api__Operator_read_sync_impl(ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr,rust_vec_len_:
      i32,data_len_: i32,) -> flutter_rust_bridge::for_generated::WireSyncRust2DartSse'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: wrap_async::<flutter_rust_bridge::for_generated::SseCodec, _, _, _>
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:965,1
    - Dst: Some
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:968,1
    - Dst: flutter_rust_bridge::for_generated::Dart2RustMessageSse::from_wire
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:973,1
    - Dst: flutter_rust_bridge::for_generated::SseDeserializer::new
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:980,1
    - Dst: "<RustOpaqueMoi<\n                flutter_rust_bridge::for_generated::RustAutoOpaqueInner<Operator>,\n\
        \            >>::sse_decode"
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:981,1
    - Dst: <String>::sse_decode
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:984,1
    - Dst: <String>::sse_decode
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:985,1
    - Dst: Self::Deserializer::end
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:986,1
    - Dst: transform_result_sse::<_, ()>
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:988,1
    - Dst: flutter_rust_bridge::for_generated::lockable_compute_decode_order
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:992,1
    - Dst: Some
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:1001,1
    - Dst: Self::lockable_decode_async_ref
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:1001,1
    - Dst: T::unwrap
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:1006,1
    - Dst: Result::<_, ()>::Ok
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:1007,1
    - Dst: crate::api::opendal_api::Operator::rename
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:1008,1
    - Dst: Ok
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:1015,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 42
    argCount: 4
    argNames:
    - port_
    - ptr_
    - rust_vec_len_
    - data_len_
    argTypes:
    - flutter_rust_bridge::for_generated::MessagePort
    - flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr
    - i32
    - i32
    constantsTouched: []
    func_position:
      end: 1022
      start: 959
    functionDepth: 35
    functionLinenumber: 959
    functionLinenumberEnd: 1022
    functionName: wire__crate__api__opendal_api__Operator_rename_impl
    functionSourceFile: /src/opendal/bindings/dart/rust/src/frb_generated.rs
    functionUses: 1
    functionsReached:
    - flutter_rust_bridge::for_generated::lockable_compute_decode_order
    - Ok
    - T::unwrap
    - flutter_rust_bridge::for_generated::Dart2RustMessageSse::from_wire
    - transform_result_sse::<_, ()>
    - crate::api::opendal_api::Operator::rename
    - flutter_rust_bridge::for_generated::SseDeserializer::new
    - wrap_async::<flutter_rust_bridge::for_generated::SseCodec, _, _, _>
    - <String>::sse_decode
    - Some
    - Result::<_, ()>::Ok
    - Self::Deserializer::end
    - Self::lockable_decode_async_ref
    - "<RustOpaqueMoi<\n                flutter_rust_bridge::for_generated::RustAutoOpaqueInner<Operator>,\n\
      \            >>::sse_decode"
    linkageType: ''
    returnType: void
    signature: 'fn wire__crate__api__opendal_api__Operator_rename_impl(port_: flutter_rust_bridge::for_generated::MessagePort,ptr_:
      flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr,rust_vec_len_:
      i32,data_len_: i32,)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: wrap_sync::<flutter_rust_bridge::for_generated::SseCodec, _>
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:1028,1
    - Dst: flutter_rust_bridge::for_generated::Dart2RustMessageSse::from_wire
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:1036,1
    - Dst: flutter_rust_bridge::for_generated::SseDeserializer::new
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:1043,1
    - Dst: "<RustOpaqueMoi<\n                flutter_rust_bridge::for_generated::RustAutoOpaqueInner<Operator>,\n\
        \            >>::sse_decode"
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:1044,1
    - Dst: <String>::sse_decode
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:1047,1
    - Dst: <String>::sse_decode
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:1048,1
    - Dst: Self::Deserializer::end
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:1049,1
    - Dst: transform_result_sse::<_, ()>
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:1050,1
    - Dst: flutter_rust_bridge::for_generated::lockable_compute_decode_order
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:1053,1
    - Dst: Some
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:1060,1
    - Dst: Self::lockable_decode_sync_ref
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:1060,1
    - Dst: T::unwrap
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:1064,1
    - Dst: Result::<_, ()>::Ok
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:1065,1
    - Dst: crate::api::opendal_api::Operator::rename_sync
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:1066,1
    - Dst: Ok
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:1072,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 37
    argCount: 3
    argNames:
    - ptr_
    - rust_vec_len_
    - data_len_
    argTypes:
    - flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr
    - i32
    - i32
    constantsTouched: []
    func_position:
      end: 1076
      start: 1023
    functionDepth: 35
    functionLinenumber: 1023
    functionLinenumberEnd: 1076
    functionName: wire__crate__api__opendal_api__Operator_rename_sync_impl
    functionSourceFile: /src/opendal/bindings/dart/rust/src/frb_generated.rs
    functionUses: 1
    functionsReached:
    - flutter_rust_bridge::for_generated::lockable_compute_decode_order
    - Ok
    - T::unwrap
    - flutter_rust_bridge::for_generated::Dart2RustMessageSse::from_wire
    - transform_result_sse::<_, ()>
    - flutter_rust_bridge::for_generated::SseDeserializer::new
    - <String>::sse_decode
    - Result::<_, ()>::Ok
    - Some
    - Self::lockable_decode_sync_ref
    - crate::api::opendal_api::Operator::rename_sync
    - Self::Deserializer::end
    - wrap_sync::<flutter_rust_bridge::for_generated::SseCodec, _>
    - "<RustOpaqueMoi<\n                flutter_rust_bridge::for_generated::RustAutoOpaqueInner<Operator>,\n\
      \            >>::sse_decode"
    linkageType: ''
    returnType: flutter_rust_bridge::for_generated::WireSyncRust2DartSse
    signature: 'fn wire__crate__api__opendal_api__Operator_rename_sync_impl(ptr_:
      flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr,rust_vec_len_:
      i32,data_len_: i32,) -> flutter_rust_bridge::for_generated::WireSyncRust2DartSse'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: wrap_async::<flutter_rust_bridge::for_generated::SseCodec, _, _, _>
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:1083,1
    - Dst: Some
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:1086,1
    - Dst: flutter_rust_bridge::for_generated::Dart2RustMessageSse::from_wire
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:1091,1
    - Dst: flutter_rust_bridge::for_generated::SseDeserializer::new
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:1098,1
    - Dst: "<RustOpaqueMoi<\n                flutter_rust_bridge::for_generated::RustAutoOpaqueInner<Operator>,\n\
        \            >>::sse_decode"
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:1099,1
    - Dst: <String>::sse_decode
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:1102,1
    - Dst: Self::Deserializer::end
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:1103,1
    - Dst: transform_result_sse::<_, ()>
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:1105,1
    - Dst: flutter_rust_bridge::for_generated::lockable_compute_decode_order
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:1109,1
    - Dst: Some
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:1118,1
    - Dst: Self::lockable_decode_async_ref
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:1118,1
    - Dst: T::unwrap
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:1123,1
    - Dst: Result::<_, ()>::Ok
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:1124,1
    - Dst: crate::api::opendal_api::Operator::stat
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:1125,1
    - Dst: Ok
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:1128,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 39
    argCount: 4
    argNames:
    - port_
    - ptr_
    - rust_vec_len_
    - data_len_
    argTypes:
    - flutter_rust_bridge::for_generated::MessagePort
    - flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr
    - i32
    - i32
    constantsTouched: []
    func_position:
      end: 1135
      start: 1077
    functionDepth: 35
    functionLinenumber: 1077
    functionLinenumberEnd: 1135
    functionName: wire__crate__api__opendal_api__Operator_stat_impl
    functionSourceFile: /src/opendal/bindings/dart/rust/src/frb_generated.rs
    functionUses: 1
    functionsReached:
    - flutter_rust_bridge::for_generated::lockable_compute_decode_order
    - Ok
    - T::unwrap
    - flutter_rust_bridge::for_generated::Dart2RustMessageSse::from_wire
    - transform_result_sse::<_, ()>
    - crate::api::opendal_api::Operator::stat
    - flutter_rust_bridge::for_generated::SseDeserializer::new
    - wrap_async::<flutter_rust_bridge::for_generated::SseCodec, _, _, _>
    - <String>::sse_decode
    - Some
    - Result::<_, ()>::Ok
    - Self::Deserializer::end
    - Self::lockable_decode_async_ref
    - "<RustOpaqueMoi<\n                flutter_rust_bridge::for_generated::RustAutoOpaqueInner<Operator>,\n\
      \            >>::sse_decode"
    linkageType: ''
    returnType: void
    signature: 'fn wire__crate__api__opendal_api__Operator_stat_impl(port_: flutter_rust_bridge::for_generated::MessagePort,ptr_:
      flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr,rust_vec_len_:
      i32,data_len_: i32,)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: wrap_sync::<flutter_rust_bridge::for_generated::SseCodec, _>
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:1141,1
    - Dst: flutter_rust_bridge::for_generated::Dart2RustMessageSse::from_wire
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:1149,1
    - Dst: flutter_rust_bridge::for_generated::SseDeserializer::new
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:1156,1
    - Dst: "<RustOpaqueMoi<\n                flutter_rust_bridge::for_generated::RustAutoOpaqueInner<Operator>,\n\
        \            >>::sse_decode"
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:1157,1
    - Dst: <String>::sse_decode
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:1160,1
    - Dst: Self::Deserializer::end
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:1161,1
    - Dst: transform_result_sse::<_, ()>
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:1162,1
    - Dst: flutter_rust_bridge::for_generated::lockable_compute_decode_order
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:1165,1
    - Dst: Some
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:1172,1
    - Dst: Self::lockable_decode_sync_ref
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:1172,1
    - Dst: T::unwrap
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:1176,1
    - Dst: Result::<_, ()>::Ok
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:1177,1
    - Dst: crate::api::opendal_api::Operator::stat_sync
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:1177,1
    - Dst: Ok
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:1181,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 34
    argCount: 3
    argNames:
    - ptr_
    - rust_vec_len_
    - data_len_
    argTypes:
    - flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr
    - i32
    - i32
    constantsTouched: []
    func_position:
      end: 1185
      start: 1136
    functionDepth: 35
    functionLinenumber: 1136
    functionLinenumberEnd: 1185
    functionName: wire__crate__api__opendal_api__Operator_stat_sync_impl
    functionSourceFile: /src/opendal/bindings/dart/rust/src/frb_generated.rs
    functionUses: 1
    functionsReached:
    - flutter_rust_bridge::for_generated::lockable_compute_decode_order
    - Ok
    - T::unwrap
    - flutter_rust_bridge::for_generated::Dart2RustMessageSse::from_wire
    - transform_result_sse::<_, ()>
    - flutter_rust_bridge::for_generated::SseDeserializer::new
    - <String>::sse_decode
    - Result::<_, ()>::Ok
    - Some
    - Self::lockable_decode_sync_ref
    - Self::Deserializer::end
    - crate::api::opendal_api::Operator::stat_sync
    - wrap_sync::<flutter_rust_bridge::for_generated::SseCodec, _>
    - "<RustOpaqueMoi<\n                flutter_rust_bridge::for_generated::RustAutoOpaqueInner<Operator>,\n\
      \            >>::sse_decode"
    linkageType: ''
    returnType: flutter_rust_bridge::for_generated::WireSyncRust2DartSse
    signature: 'fn wire__crate__api__opendal_api__Operator_stat_sync_impl(ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr,rust_vec_len_:
      i32,data_len_: i32,) -> flutter_rust_bridge::for_generated::WireSyncRust2DartSse'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: wrap_async::<flutter_rust_bridge::for_generated::SseCodec, _, _, _>
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:1192,1
    - Dst: Some
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:1195,1
    - Dst: flutter_rust_bridge::for_generated::Dart2RustMessageSse::from_wire
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:1200,1
    - Dst: flutter_rust_bridge::for_generated::SseDeserializer::new
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:1207,1
    - Dst: "<RustOpaqueMoi<\n                flutter_rust_bridge::for_generated::RustAutoOpaqueInner<Operator>,\n\
        \            >>::sse_decode"
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:1208,1
    - Dst: <String>::sse_decode
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:1211,1
    - Dst: <Vec<u8>>::sse_decode
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:1212,1
    - Dst: Self::Deserializer::end
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:1213,1
    - Dst: transform_result_sse::<_, flutter_rust_bridge::for_generated::anyhow::Error>
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:1215,1
    - Dst: flutter_rust_bridge::for_generated::lockable_compute_decode_order
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:1219,1
    - Dst: Some
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:1228,1
    - Dst: Self::lockable_decode_async_ref
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:1228,1
    - Dst: T::unwrap
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:1233,1
    - Dst: crate::api::opendal_api::Operator::write
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:1234,1
    - Dst: Ok
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:1240,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 40
    argCount: 4
    argNames:
    - port_
    - ptr_
    - rust_vec_len_
    - data_len_
    argTypes:
    - flutter_rust_bridge::for_generated::MessagePort
    - flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr
    - i32
    - i32
    constantsTouched: []
    func_position:
      end: 1247
      start: 1186
    functionDepth: 35
    functionLinenumber: 1186
    functionLinenumberEnd: 1247
    functionName: wire__crate__api__opendal_api__Operator_write_impl
    functionSourceFile: /src/opendal/bindings/dart/rust/src/frb_generated.rs
    functionUses: 1
    functionsReached:
    - flutter_rust_bridge::for_generated::lockable_compute_decode_order
    - Ok
    - T::unwrap
    - flutter_rust_bridge::for_generated::Dart2RustMessageSse::from_wire
    - flutter_rust_bridge::for_generated::SseDeserializer::new
    - wrap_async::<flutter_rust_bridge::for_generated::SseCodec, _, _, _>
    - <String>::sse_decode
    - Some
    - crate::api::opendal_api::Operator::write
    - Self::Deserializer::end
    - Self::lockable_decode_async_ref
    - transform_result_sse::<_, flutter_rust_bridge::for_generated::anyhow::Error>
    - <Vec<u8>>::sse_decode
    - "<RustOpaqueMoi<\n                flutter_rust_bridge::for_generated::RustAutoOpaqueInner<Operator>,\n\
      \            >>::sse_decode"
    linkageType: ''
    returnType: void
    signature: 'fn wire__crate__api__opendal_api__Operator_write_impl(port_: flutter_rust_bridge::for_generated::MessagePort,ptr_:
      flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr,rust_vec_len_:
      i32,data_len_: i32,)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: wrap_sync::<flutter_rust_bridge::for_generated::SseCodec, _>
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:1253,1
    - Dst: flutter_rust_bridge::for_generated::Dart2RustMessageSse::from_wire
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:1261,1
    - Dst: flutter_rust_bridge::for_generated::SseDeserializer::new
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:1268,1
    - Dst: "<RustOpaqueMoi<\n                flutter_rust_bridge::for_generated::RustAutoOpaqueInner<Operator>,\n\
        \            >>::sse_decode"
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:1269,1
    - Dst: <String>::sse_decode
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:1272,1
    - Dst: <Vec<u8>>::sse_decode
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:1273,1
    - Dst: Self::Deserializer::end
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:1274,1
    - Dst: transform_result_sse::<_, flutter_rust_bridge::for_generated::anyhow::Error>
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:1275,1
    - Dst: flutter_rust_bridge::for_generated::lockable_compute_decode_order
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:1279,1
    - Dst: Some
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:1286,1
    - Dst: Self::lockable_decode_sync_ref
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:1286,1
    - Dst: T::unwrap
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:1290,1
    - Dst: crate::api::opendal_api::Operator::write_sync
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:1291,1
    - Dst: Ok
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:1296,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 35
    argCount: 3
    argNames:
    - ptr_
    - rust_vec_len_
    - data_len_
    argTypes:
    - flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr
    - i32
    - i32
    constantsTouched: []
    func_position:
      end: 1301
      start: 1248
    functionDepth: 35
    functionLinenumber: 1248
    functionLinenumberEnd: 1301
    functionName: wire__crate__api__opendal_api__Operator_write_sync_impl
    functionSourceFile: /src/opendal/bindings/dart/rust/src/frb_generated.rs
    functionUses: 1
    functionsReached:
    - flutter_rust_bridge::for_generated::lockable_compute_decode_order
    - Ok
    - T::unwrap
    - flutter_rust_bridge::for_generated::Dart2RustMessageSse::from_wire
    - <Vec<u8>>::sse_decode
    - flutter_rust_bridge::for_generated::SseDeserializer::new
    - <String>::sse_decode
    - Some
    - Self::lockable_decode_sync_ref
    - Self::Deserializer::end
    - crate::api::opendal_api::Operator::write_sync
    - transform_result_sse::<_, flutter_rust_bridge::for_generated::anyhow::Error>
    - wrap_sync::<flutter_rust_bridge::for_generated::SseCodec, _>
    - "<RustOpaqueMoi<\n                flutter_rust_bridge::for_generated::RustAutoOpaqueInner<Operator>,\n\
      \            >>::sse_decode"
    linkageType: ''
    returnType: flutter_rust_bridge::for_generated::WireSyncRust2DartSse
    signature: 'fn wire__crate__api__opendal_api__Operator_write_sync_impl(ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr,rust_vec_len_:
      i32,data_len_: i32,) -> flutter_rust_bridge::for_generated::WireSyncRust2DartSse'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: <String>::sse_decode
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:1317,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - deserializer
    argTypes:
    - '&mut flutter_rust_bridge::for_generated::SseDeserializer'
    constantsTouched: []
    func_position:
      end: 1319
      start: 1316
    functionDepth: 1
    functionLinenumber: 1316
    functionLinenumberEnd: 1319
    functionName: flutter_rust_bridge::for_generated::anyhow::Error::sse_decode
    functionSourceFile: /src/opendal/bindings/dart/rust/src/frb_generated.rs
    functionUses: 0
    functionsReached:
    - <String>::sse_decode
    linkageType: ''
    returnType: Self
    signature: 'fn sse_decode(deserializer: &mut flutter_rust_bridge::for_generated::SseDeserializer)
      -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: "<RustOpaqueMoi<\n            flutter_rust_bridge::for_generated::RustAutoOpaqueInner<Metadata>,\n\
        \        >>::sse_decode"
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:1325,1
    - Dst: flutter_rust_bridge::for_generated::rust_auto_opaque_decode_owned
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:1328,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - deserializer
    argTypes:
    - '&mut flutter_rust_bridge::for_generated::SseDeserializer'
    constantsTouched: []
    func_position:
      end: 1329
      start: 1324
    functionDepth: 0
    functionLinenumber: 1324
    functionLinenumberEnd: 1329
    functionName: Metadata::sse_decode
    functionSourceFile: /src/opendal/bindings/dart/rust/src/frb_generated.rs
    functionUses: 0
    functionsReached:
    - flutter_rust_bridge::for_generated::rust_auto_opaque_decode_owned
    - "<RustOpaqueMoi<\n            flutter_rust_bridge::for_generated::RustAutoOpaqueInner<Metadata>,\n\
      \        >>::sse_decode"
    linkageType: ''
    returnType: Self
    signature: 'fn sse_decode(deserializer: &mut flutter_rust_bridge::for_generated::SseDeserializer)
      -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: "<RustOpaqueMoi<\n            flutter_rust_bridge::for_generated::RustAutoOpaqueInner<Operator>,\n\
        \        >>::sse_decode"
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:1335,1
    - Dst: flutter_rust_bridge::for_generated::rust_auto_opaque_decode_owned
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:1338,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - deserializer
    argTypes:
    - '&mut flutter_rust_bridge::for_generated::SseDeserializer'
    constantsTouched: []
    func_position:
      end: 1339
      start: 1334
    functionDepth: 0
    functionLinenumber: 1334
    functionLinenumberEnd: 1339
    functionName: Operator::sse_decode
    functionSourceFile: /src/opendal/bindings/dart/rust/src/frb_generated.rs
    functionUses: 0
    functionsReached:
    - flutter_rust_bridge::for_generated::rust_auto_opaque_decode_owned
    - "<RustOpaqueMoi<\n            flutter_rust_bridge::for_generated::RustAutoOpaqueInner<Operator>,\n\
      \        >>::sse_decode"
    linkageType: ''
    returnType: Self
    signature: 'fn sse_decode(deserializer: &mut flutter_rust_bridge::for_generated::SseDeserializer)
      -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: <Vec<(String, String)>>::sse_decode
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:1345,1
    - Dst: Arc::into_iter
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:1346,1
    - Dst: collect
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:1346,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - deserializer
    argTypes:
    - '&mut flutter_rust_bridge::for_generated::SseDeserializer'
    constantsTouched: []
    func_position:
      end: 1347
      start: 1344
    functionDepth: 36
    functionLinenumber: 1344
    functionLinenumberEnd: 1347
    functionName: std::collections::HashMap::sse_decode
    functionSourceFile: /src/opendal/bindings/dart/rust/src/frb_generated.rs
    functionUses: 0
    functionsReached:
    - collect
    - Arc::into_iter
    - <Vec<(String, String)>>::sse_decode
    linkageType: ''
    returnType: Self
    signature: 'fn sse_decode(deserializer: &mut flutter_rust_bridge::for_generated::SseDeserializer)
      -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: <usize>::sse_decode
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:1365,1
    - Dst: decode_rust_opaque_moi
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:1366,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - deserializer
    argTypes:
    - '&mut flutter_rust_bridge::for_generated::SseDeserializer'
    constantsTouched: []
    func_position:
      end: 1367
      start: 1364
    functionDepth: 2
    functionLinenumber: 1364
    functionLinenumberEnd: 1367
    functionName: RustOpaqueMoi::sse_decode
    functionSourceFile: /src/opendal/bindings/dart/rust/src/frb_generated.rs
    functionUses: 0
    functionsReached:
    - decode_rust_opaque_moi
    - <usize>::sse_decode
    linkageType: ''
    returnType: Self
    signature: 'fn sse_decode(deserializer: &mut flutter_rust_bridge::for_generated::SseDeserializer)
      -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: <Vec<u8>>::sse_decode
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:1373,1
    - Dst: String::from_utf8
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:1374,1
    - Dst: unwrap
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:1374,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - deserializer
    argTypes:
    - '&mut flutter_rust_bridge::for_generated::SseDeserializer'
    constantsTouched: []
    func_position:
      end: 1375
      start: 1372
    functionDepth: 35
    functionLinenumber: 1372
    functionLinenumberEnd: 1375
    functionName: String::sse_decode
    functionSourceFile: /src/opendal/bindings/dart/rust/src/frb_generated.rs
    functionUses: 0
    functionsReached:
    - String::from_utf8
    - unwrap
    - <Vec<u8>>::sse_decode
    linkageType: ''
    returnType: Self
    signature: 'fn sse_decode(deserializer: &mut flutter_rust_bridge::for_generated::SseDeserializer)
      -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: read_u8
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:1381,1
    - Dst: unwrap
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:1381,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - deserializer
    argTypes:
    - '&mut flutter_rust_bridge::for_generated::SseDeserializer'
    constantsTouched: []
    func_position:
      end: 1382
      start: 1380
    functionDepth: 35
    functionLinenumber: 1380
    functionLinenumberEnd: 1382
    functionName: bool::sse_decode
    functionSourceFile: /src/opendal/bindings/dart/rust/src/frb_generated.rs
    functionUses: 0
    functionsReached:
    - unwrap
    - read_u8
    linkageType: ''
    returnType: Self
    signature: 'fn sse_decode(deserializer: &mut flutter_rust_bridge::for_generated::SseDeserializer)
      -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: <i32>::sse_decode
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:1400,1
    - Dst: Vec::with_capacity
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:1401,1
    - Dst: push
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:1403,1
    - Dst: <(String, String)>::sse_decode
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:1403,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 1
    argNames:
    - deserializer
    argTypes:
    - '&mut flutter_rust_bridge::for_generated::SseDeserializer'
    constantsTouched: []
    func_position:
      end: 1406
      start: 1399
    functionDepth: 5
    functionLinenumber: 1399
    functionLinenumberEnd: 1406
    functionName: Vec::sse_decode
    functionSourceFile: /src/opendal/bindings/dart/rust/src/frb_generated.rs
    functionUses: 0
    functionsReached:
    - <i32>::sse_decode
    - <(String, String)>::sse_decode
    - Vec::with_capacity
    - push
    linkageType: ''
    returnType: Self
    signature: 'fn sse_decode(deserializer: &mut flutter_rust_bridge::for_generated::SseDeserializer)
      -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: <bool>::sse_decode
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:1423,1
    - Dst: Some
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:1424,1
    - Dst: <u64>::sse_decode
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:1424,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - deserializer
    argTypes:
    - '&mut flutter_rust_bridge::for_generated::SseDeserializer'
    constantsTouched: []
    func_position:
      end: 1428
      start: 1422
    functionDepth: 2
    functionLinenumber: 1422
    functionLinenumberEnd: 1428
    functionName: Option::sse_decode
    functionSourceFile: /src/opendal/bindings/dart/rust/src/frb_generated.rs
    functionUses: 0
    functionsReached:
    - <bool>::sse_decode
    - <u64>::sse_decode
    - Some
    linkageType: ''
    returnType: Self
    signature: 'fn sse_decode(deserializer: &mut flutter_rust_bridge::for_generated::SseDeserializer)
      -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: <String>::sse_decode
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:1434,1
    - Dst: <String>::sse_decode
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:1435,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - deserializer
    argTypes:
    - '&mut flutter_rust_bridge::for_generated::SseDeserializer'
    constantsTouched: []
    func_position:
      end: 1437
      start: 1433
    functionDepth: 2
    functionLinenumber: 1433
    functionLinenumberEnd: 1437
    functionName: (String, String)::sse_decode
    functionSourceFile: /src/opendal/bindings/dart/rust/src/frb_generated.rs
    functionUses: 0
    functionsReached:
    - <String>::sse_decode
    linkageType: ''
    returnType: Self
    signature: 'fn sse_decode(deserializer: &mut flutter_rust_bridge::for_generated::SseDeserializer)
      -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: cursor.read_u64::<NativeEndian>
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:1443,1
    - Dst: unwrap
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:1443,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - deserializer
    argTypes:
    - '&mut flutter_rust_bridge::for_generated::SseDeserializer'
    constantsTouched: []
    func_position:
      end: 1444
      start: 1442
    functionDepth: 35
    functionLinenumber: 1442
    functionLinenumberEnd: 1444
    functionName: u64::sse_decode
    functionSourceFile: /src/opendal/bindings/dart/rust/src/frb_generated.rs
    functionUses: 0
    functionsReached:
    - unwrap
    - cursor.read_u64::<NativeEndian>
    linkageType: ''
    returnType: Self
    signature: 'fn sse_decode(deserializer: &mut flutter_rust_bridge::for_generated::SseDeserializer)
      -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: read_u8
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:1450,1
    - Dst: unwrap
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:1450,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - deserializer
    argTypes:
    - '&mut flutter_rust_bridge::for_generated::SseDeserializer'
    constantsTouched: []
    func_position:
      end: 1451
      start: 1449
    functionDepth: 35
    functionLinenumber: 1449
    functionLinenumberEnd: 1451
    functionName: u8::sse_decode
    functionSourceFile: /src/opendal/bindings/dart/rust/src/frb_generated.rs
    functionUses: 0
    functionsReached:
    - unwrap
    - read_u8
    linkageType: ''
    returnType: Self
    signature: 'fn sse_decode(deserializer: &mut flutter_rust_bridge::for_generated::SseDeserializer)
      -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 1
    argNames:
    - deserializer
    argTypes:
    - '&mut flutter_rust_bridge::for_generated::SseDeserializer'
    constantsTouched: []
    func_position:
      end: 1456
      start: 1456
    functionDepth: 0
    functionLinenumber: 1456
    functionLinenumberEnd: 1456
    functionName: ()::sse_decode
    functionSourceFile: /src/opendal/bindings/dart/rust/src/frb_generated.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: 'fn sse_decode(deserializer: &mut flutter_rust_bridge::for_generated::SseDeserializer)
      -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: cursor.read_u64::<NativeEndian>
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:1462,1
    - Dst: unwrap
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:1462,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - deserializer
    argTypes:
    - '&mut flutter_rust_bridge::for_generated::SseDeserializer'
    constantsTouched: []
    func_position:
      end: 1463
      start: 1461
    functionDepth: 35
    functionLinenumber: 1461
    functionLinenumberEnd: 1463
    functionName: usize::sse_decode
    functionSourceFile: /src/opendal/bindings/dart/rust/src/frb_generated.rs
    functionUses: 0
    functionsReached:
    - unwrap
    - cursor.read_u64::<NativeEndian>
    linkageType: ''
    returnType: Self
    signature: 'fn sse_decode(deserializer: &mut flutter_rust_bridge::for_generated::SseDeserializer)
      -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: cursor.read_i32::<NativeEndian>
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:1469,1
    - Dst: unwrap
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:1469,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - deserializer
    argTypes:
    - '&mut flutter_rust_bridge::for_generated::SseDeserializer'
    constantsTouched: []
    func_position:
      end: 1470
      start: 1468
    functionDepth: 35
    functionLinenumber: 1468
    functionLinenumberEnd: 1470
    functionName: i32::sse_decode
    functionSourceFile: /src/opendal/bindings/dart/rust/src/frb_generated.rs
    functionUses: 0
    functionsReached:
    - unwrap
    - cursor.read_i32::<NativeEndian>
    linkageType: ''
    returnType: Self
    signature: 'fn sse_decode(deserializer: &mut flutter_rust_bridge::for_generated::SseDeserializer)
      -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: wire__crate__api__opendal_api__Operator_check_impl
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:1482,1
    - Dst: wire__crate__api__opendal_api__Operator_create_dir_impl
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:1483,1
    - Dst: wire__crate__api__opendal_api__Operator_delete_impl
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:1490,1
    - Dst: wire__crate__api__opendal_api__Operator_exists_impl
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:1493,1
    - Dst: wire__crate__api__opendal_api__Operator_read_impl
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:1495,1
    - Dst: wire__crate__api__opendal_api__Operator_rename_impl
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:1497,1
    - Dst: wire__crate__api__opendal_api__Operator_stat_impl
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:1499,1
    - Dst: wire__crate__api__opendal_api__Operator_write_impl
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:1500,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 5
    argNames:
    - func_id
    - port
    - ptr
    - rust_vec_len
    - data_len
    argTypes:
    - i32
    - flutter_rust_bridge::for_generated::MessagePort
    - flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr
    - i32
    - i32
    constantsTouched: []
    func_position:
      end: 1503
      start: 1473
    functionDepth: 36
    functionLinenumber: 1473
    functionLinenumberEnd: 1503
    functionName: pde_ffi_dispatcher_primary_impl
    functionSourceFile: /src/opendal/bindings/dart/rust/src/frb_generated.rs
    functionUses: 0
    functionsReached:
    - wire__crate__api__opendal_api__Operator_check_impl
    - wire__crate__api__opendal_api__Operator_exists_impl
    - wire__crate__api__opendal_api__Operator_write_impl
    - wire__crate__api__opendal_api__Operator_stat_impl
    - wire__crate__api__opendal_api__Operator_rename_impl
    - wire__crate__api__opendal_api__Operator_read_impl
    - wire__crate__api__opendal_api__Operator_delete_impl
    - wire__crate__api__opendal_api__Operator_create_dir_impl
    linkageType: ''
    returnType: void
    signature: 'fn pde_ffi_dispatcher_primary_impl(func_id: i32,port: flutter_rust_bridge::for_generated::MessagePort,ptr:
      flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr,rust_vec_len:
      i32,data_len: i32,)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: wire__crate__api__opendal_api__Metadata_content_disposition_impl
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:1513,1
    - Dst: wire__crate__api__opendal_api__Metadata_content_length_impl
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:1519,1
    - Dst: wire__crate__api__opendal_api__Metadata_content_md5_impl
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:1521,1
    - Dst: wire__crate__api__opendal_api__Metadata_content_type_impl
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:1522,1
    - Dst: wire__crate__api__opendal_api__Metadata_etag_impl
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:1523,1
    - Dst: wire__crate__api__opendal_api__Metadata_is_directory_impl
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:1524,1
    - Dst: wire__crate__api__opendal_api__Metadata_is_file_impl
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:1525,1
    - Dst: wire__crate__api__opendal_api__Metadata_last_modified_impl
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:1527,1
    - Dst: wire__crate__api__opendal_api__Operator_create_dir_sync_impl
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:1529,1
    - Dst: wire__crate__api__opendal_api__Operator_delete_sync_impl
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:1534,1
    - Dst: wire__crate__api__opendal_api__Operator_exists_sync_impl
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:1535,1
    - Dst: wire__crate__api__opendal_api__Operator_new_impl
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:1536,1
    - Dst: wire__crate__api__opendal_api__Operator_read_sync_impl
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:1537,1
    - Dst: wire__crate__api__opendal_api__Operator_rename_sync_impl
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:1538,1
    - Dst: wire__crate__api__opendal_api__Operator_stat_sync_impl
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:1539,1
    - Dst: wire__crate__api__opendal_api__Operator_write_sync_impl
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:1540,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 18
    argCount: 4
    argNames:
    - func_id
    - ptr
    - rust_vec_len
    - data_len
    argTypes:
    - i32
    - flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr
    - i32
    - i32
    constantsTouched: []
    func_position:
      end: 1543
      start: 1505
    functionDepth: 36
    functionLinenumber: 1505
    functionLinenumberEnd: 1543
    functionName: pde_ffi_dispatcher_sync_impl
    functionSourceFile: /src/opendal/bindings/dart/rust/src/frb_generated.rs
    functionUses: 0
    functionsReached:
    - wire__crate__api__opendal_api__Metadata_etag_impl
    - wire__crate__api__opendal_api__Metadata_content_length_impl
    - wire__crate__api__opendal_api__Metadata_last_modified_impl
    - wire__crate__api__opendal_api__Operator_create_dir_sync_impl
    - wire__crate__api__opendal_api__Operator_rename_sync_impl
    - wire__crate__api__opendal_api__Operator_write_sync_impl
    - wire__crate__api__opendal_api__Metadata_content_disposition_impl
    - wire__crate__api__opendal_api__Operator_new_impl
    - wire__crate__api__opendal_api__Operator_read_sync_impl
    - wire__crate__api__opendal_api__Operator_delete_sync_impl
    - wire__crate__api__opendal_api__Metadata_content_type_impl
    - wire__crate__api__opendal_api__Operator_exists_sync_impl
    - wire__crate__api__opendal_api__Metadata_is_file_impl
    - wire__crate__api__opendal_api__Operator_stat_sync_impl
    - wire__crate__api__opendal_api__Metadata_content_md5_impl
    - wire__crate__api__opendal_api__Metadata_is_directory_impl
    linkageType: ''
    returnType: flutter_rust_bridge::for_generated::WireSyncRust2DartSse
    signature: 'fn pde_ffi_dispatcher_sync_impl(func_id: i32,ptr: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr,rust_vec_len:
      i32,data_len: i32,) -> flutter_rust_bridge::for_generated::WireSyncRust2DartSse'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: flutter_rust_bridge::for_generated::rust_auto_opaque_encode::<_, MoiArc<_>>
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:1565,1
    - Dst: into_dart
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:1565,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 1567
      start: 1564
    functionDepth: 1
    functionLinenumber: 1564
    functionLinenumberEnd: 1567
    functionName: FrbWrapper::into_dart
    functionSourceFile: /src/opendal/bindings/dart/rust/src/frb_generated.rs
    functionUses: 0
    functionsReached:
    - into_dart
    - flutter_rust_bridge::for_generated::rust_auto_opaque_encode::<_, MoiArc<_>>
    linkageType: ''
    returnType: flutter_rust_bridge::for_generated::DartAbi
    signature: fn into_dart(self) -> flutter_rust_bridge::for_generated::DartAbi
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Metadata::into
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:1558,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 1559
      start: 1557
    functionDepth: 29
    functionLinenumber: 1557
    functionLinenumberEnd: 1559
    functionName: Metadata::into_into_dart
    functionSourceFile: /src/opendal/bindings/dart/rust/src/frb_generated.rs
    functionUses: 0
    functionsReached:
    - Metadata::into
    linkageType: ''
    returnType: FrbWrapper
    signature: fn into_into_dart(self) -> FrbWrapper<Metadata>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Operator::into
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:1573,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 1574
      start: 1572
    functionDepth: 29
    functionLinenumber: 1572
    functionLinenumberEnd: 1574
    functionName: Operator::into_into_dart
    functionSourceFile: /src/opendal/bindings/dart/rust/src/frb_generated.rs
    functionUses: 0
    functionsReached:
    - Operator::into
    linkageType: ''
    returnType: FrbWrapper
    signature: fn into_into_dart(self) -> FrbWrapper<Operator>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: <String>::sse_encode
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:1580,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - serializer
    argTypes:
    - '&mut flutter_rust_bridge::for_generated::SseSerializer'
    constantsTouched: []
    func_position:
      end: 1581
      start: 1579
    functionDepth: 1
    functionLinenumber: 1579
    functionLinenumberEnd: 1581
    functionName: flutter_rust_bridge::for_generated::anyhow::Error::sse_encode
    functionSourceFile: /src/opendal/bindings/dart/rust/src/frb_generated.rs
    functionUses: 0
    functionsReached:
    - <String>::sse_encode
    linkageType: ''
    returnType: void
    signature: 'fn sse_encode(self, serializer: &mut flutter_rust_bridge::for_generated::SseSerializer)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: <RustOpaqueMoi<flutter_rust_bridge::for_generated::RustAutoOpaqueInner<Metadata>>>::sse_encode
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:1587,1
    - Dst: flutter_rust_bridge::for_generated::rust_auto_opaque_encode::<_, MoiArc<_>>
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:1587,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - serializer
    argTypes:
    - '&mut flutter_rust_bridge::for_generated::SseSerializer'
    constantsTouched: []
    func_position:
      end: 1588
      start: 1586
    functionDepth: 0
    functionLinenumber: 1586
    functionLinenumberEnd: 1588
    functionName: Metadata::sse_encode
    functionSourceFile: /src/opendal/bindings/dart/rust/src/frb_generated.rs
    functionUses: 0
    functionsReached:
    - <RustOpaqueMoi<flutter_rust_bridge::for_generated::RustAutoOpaqueInner<Metadata>>>::sse_encode
    - flutter_rust_bridge::for_generated::rust_auto_opaque_encode::<_, MoiArc<_>>
    linkageType: ''
    returnType: void
    signature: 'fn sse_encode(self, serializer: &mut flutter_rust_bridge::for_generated::SseSerializer)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: <RustOpaqueMoi<flutter_rust_bridge::for_generated::RustAutoOpaqueInner<Operator>>>::sse_encode
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:1594,1
    - Dst: flutter_rust_bridge::for_generated::rust_auto_opaque_encode::<_, MoiArc<_>>
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:1594,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - serializer
    argTypes:
    - '&mut flutter_rust_bridge::for_generated::SseSerializer'
    constantsTouched: []
    func_position:
      end: 1595
      start: 1593
    functionDepth: 0
    functionLinenumber: 1593
    functionLinenumberEnd: 1595
    functionName: Operator::sse_encode
    functionSourceFile: /src/opendal/bindings/dart/rust/src/frb_generated.rs
    functionUses: 0
    functionsReached:
    - <RustOpaqueMoi<flutter_rust_bridge::for_generated::RustAutoOpaqueInner<Operator>>>::sse_encode
    - flutter_rust_bridge::for_generated::rust_auto_opaque_encode::<_, MoiArc<_>>
    linkageType: ''
    returnType: void
    signature: 'fn sse_encode(self, serializer: &mut flutter_rust_bridge::for_generated::SseSerializer)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: <Vec<(String, String)>>::sse_encode
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:1601,1
    - Dst: std::collections::HashMap::into_iter
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:1601,1
    - Dst: collect
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:1601,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - serializer
    argTypes:
    - '&mut flutter_rust_bridge::for_generated::SseSerializer'
    constantsTouched: []
    func_position:
      end: 1602
      start: 1600
    functionDepth: 36
    functionLinenumber: 1600
    functionLinenumberEnd: 1602
    functionName: std::collections::HashMap::sse_encode
    functionSourceFile: /src/opendal/bindings/dart/rust/src/frb_generated.rs
    functionUses: 0
    functionsReached:
    - collect
    - std::collections::HashMap::into_iter
    - <Vec<(String, String)>>::sse_encode
    linkageType: ''
    returnType: void
    signature: 'fn sse_encode(self, serializer: &mut flutter_rust_bridge::for_generated::SseSerializer)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: RustOpaqueMoi::sse_encode_raw
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:1621,1
    - Dst: <usize>::sse_encode
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:1622,1
    - Dst: <i32>::sse_encode
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:1623,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - serializer
    argTypes:
    - '&mut flutter_rust_bridge::for_generated::SseSerializer'
    constantsTouched: []
    func_position:
      end: 1624
      start: 1620
    functionDepth: 2
    functionLinenumber: 1620
    functionLinenumberEnd: 1624
    functionName: RustOpaqueMoi::sse_encode
    functionSourceFile: /src/opendal/bindings/dart/rust/src/frb_generated.rs
    functionUses: 0
    functionsReached:
    - <i32>::sse_encode
    - <usize>::sse_encode
    - RustOpaqueMoi::sse_encode_raw
    linkageType: ''
    returnType: void
    signature: 'fn sse_encode(self, serializer: &mut flutter_rust_bridge::for_generated::SseSerializer)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: <Vec<u8>>::sse_encode
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:1630,1
    - Dst: String::into_bytes
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:1630,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - serializer
    argTypes:
    - '&mut flutter_rust_bridge::for_generated::SseSerializer'
    constantsTouched: []
    func_position:
      end: 1631
      start: 1629
    functionDepth: 2
    functionLinenumber: 1629
    functionLinenumberEnd: 1631
    functionName: String::sse_encode
    functionSourceFile: /src/opendal/bindings/dart/rust/src/frb_generated.rs
    functionUses: 0
    functionsReached:
    - <Vec<u8>>::sse_encode
    - String::into_bytes
    linkageType: ''
    returnType: void
    signature: 'fn sse_encode(self, serializer: &mut flutter_rust_bridge::for_generated::SseSerializer)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: write_u8
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:1637,1
    - Dst: unwrap
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:1637,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - serializer
    argTypes:
    - '&mut flutter_rust_bridge::for_generated::SseSerializer'
    constantsTouched: []
    func_position:
      end: 1638
      start: 1636
    functionDepth: 35
    functionLinenumber: 1636
    functionLinenumberEnd: 1638
    functionName: bool::sse_encode
    functionSourceFile: /src/opendal/bindings/dart/rust/src/frb_generated.rs
    functionUses: 0
    functionsReached:
    - unwrap
    - write_u8
    linkageType: ''
    returnType: void
    signature: 'fn sse_encode(self, serializer: &mut flutter_rust_bridge::for_generated::SseSerializer)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: <i32>::sse_encode
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:1654,1
    - Dst: Vec::len
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:1654,1
    - Dst: <(String, String)>::sse_encode
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:1656,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - serializer
    argTypes:
    - '&mut flutter_rust_bridge::for_generated::SseSerializer'
    constantsTouched: []
    func_position:
      end: 1658
      start: 1653
    functionDepth: 3
    functionLinenumber: 1653
    functionLinenumberEnd: 1658
    functionName: Vec::sse_encode
    functionSourceFile: /src/opendal/bindings/dart/rust/src/frb_generated.rs
    functionUses: 0
    functionsReached:
    - <(String, String)>::sse_encode
    - <i32>::sse_encode
    - Vec::len
    linkageType: ''
    returnType: void
    signature: 'fn sse_encode(self, serializer: &mut flutter_rust_bridge::for_generated::SseSerializer)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: <bool>::sse_encode
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:1674,1
    - Dst: Option::is_some
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:1674,1
    - Dst: <u64>::sse_encode
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:1676,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - serializer
    argTypes:
    - '&mut flutter_rust_bridge::for_generated::SseSerializer'
    constantsTouched: []
    func_position:
      end: 1678
      start: 1673
    functionDepth: 2
    functionLinenumber: 1673
    functionLinenumberEnd: 1678
    functionName: Option::sse_encode
    functionSourceFile: /src/opendal/bindings/dart/rust/src/frb_generated.rs
    functionUses: 0
    functionsReached:
    - <bool>::sse_encode
    - Option::is_some
    - <u64>::sse_encode
    linkageType: ''
    returnType: void
    signature: 'fn sse_encode(self, serializer: &mut flutter_rust_bridge::for_generated::SseSerializer)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: <String>::sse_encode
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:1684,1
    - Dst: <String>::sse_encode
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:1685,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - serializer
    argTypes:
    - '&mut flutter_rust_bridge::for_generated::SseSerializer'
    constantsTouched: []
    func_position:
      end: 1686
      start: 1683
    functionDepth: 2
    functionLinenumber: 1683
    functionLinenumberEnd: 1686
    functionName: (String, String)::sse_encode
    functionSourceFile: /src/opendal/bindings/dart/rust/src/frb_generated.rs
    functionUses: 0
    functionsReached:
    - <String>::sse_encode
    linkageType: ''
    returnType: void
    signature: 'fn sse_encode(self, serializer: &mut flutter_rust_bridge::for_generated::SseSerializer)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: cursor.write_u64::<NativeEndian>
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:1692,1
    - Dst: unwrap
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:1692,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - serializer
    argTypes:
    - '&mut flutter_rust_bridge::for_generated::SseSerializer'
    constantsTouched: []
    func_position:
      end: 1693
      start: 1691
    functionDepth: 35
    functionLinenumber: 1691
    functionLinenumberEnd: 1693
    functionName: u64::sse_encode
    functionSourceFile: /src/opendal/bindings/dart/rust/src/frb_generated.rs
    functionUses: 0
    functionsReached:
    - cursor.write_u64::<NativeEndian>
    - unwrap
    linkageType: ''
    returnType: void
    signature: 'fn sse_encode(self, serializer: &mut flutter_rust_bridge::for_generated::SseSerializer)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: write_u8
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:1699,1
    - Dst: unwrap
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:1699,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - serializer
    argTypes:
    - '&mut flutter_rust_bridge::for_generated::SseSerializer'
    constantsTouched: []
    func_position:
      end: 1700
      start: 1698
    functionDepth: 35
    functionLinenumber: 1698
    functionLinenumberEnd: 1700
    functionName: u8::sse_encode
    functionSourceFile: /src/opendal/bindings/dart/rust/src/frb_generated.rs
    functionUses: 0
    functionsReached:
    - unwrap
    - write_u8
    linkageType: ''
    returnType: void
    signature: 'fn sse_encode(self, serializer: &mut flutter_rust_bridge::for_generated::SseSerializer)'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 1
    argNames:
    - serializer
    argTypes:
    - '&mut flutter_rust_bridge::for_generated::SseSerializer'
    constantsTouched: []
    func_position:
      end: 1705
      start: 1705
    functionDepth: 0
    functionLinenumber: 1705
    functionLinenumberEnd: 1705
    functionName: ()::sse_encode
    functionSourceFile: /src/opendal/bindings/dart/rust/src/frb_generated.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: 'fn sse_encode(self, serializer: &mut flutter_rust_bridge::for_generated::SseSerializer)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: "cursor\n            .write_u64::<NativeEndian>"
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:1711,1
    - Dst: unwrap
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:1711,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - serializer
    argTypes:
    - '&mut flutter_rust_bridge::for_generated::SseSerializer'
    constantsTouched: []
    func_position:
      end: 1715
      start: 1710
    functionDepth: 35
    functionLinenumber: 1710
    functionLinenumberEnd: 1715
    functionName: usize::sse_encode
    functionSourceFile: /src/opendal/bindings/dart/rust/src/frb_generated.rs
    functionUses: 0
    functionsReached:
    - unwrap
    - "cursor\n            .write_u64::<NativeEndian>"
    linkageType: ''
    returnType: void
    signature: 'fn sse_encode(self, serializer: &mut flutter_rust_bridge::for_generated::SseSerializer)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: cursor.write_i32::<NativeEndian>
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:1721,1
    - Dst: unwrap
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:1721,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - serializer
    argTypes:
    - '&mut flutter_rust_bridge::for_generated::SseSerializer'
    constantsTouched: []
    func_position:
      end: 1722
      start: 1720
    functionDepth: 35
    functionLinenumber: 1720
    functionLinenumberEnd: 1722
    functionName: i32::sse_encode
    functionSourceFile: /src/opendal/bindings/dart/rust/src/frb_generated.rs
    functionUses: 0
    functionsReached:
    - unwrap
    - cursor.write_i32::<NativeEndian>
    linkageType: ''
    returnType: void
    signature: 'fn sse_encode(self, serializer: &mut flutter_rust_bridge::for_generated::SseSerializer)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: MoiArc::<flutter_rust_bridge::for_generated::RustAutoOpaqueInner<Metadata>>::increment_strong_count
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:1748,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ptr
    argTypes:
    - '*const std::ffi::c_void'
    constantsTouched: []
    func_position:
      end: 1749
      start: 1745
    functionDepth: 0
    functionLinenumber: 1745
    functionLinenumberEnd: 1749
    functionName: io::frbgen_opendal_rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerMetadata
    functionSourceFile: /src/opendal/bindings/dart/rust/src/frb_generated.rs
    functionUses: 0
    functionsReached:
    - MoiArc::<flutter_rust_bridge::for_generated::RustAutoOpaqueInner<Metadata>>::increment_strong_count
    linkageType: ''
    returnType: void
    signature: 'pub extern "C" fn frbgen_opendal_rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerMetadata(ptr:
      *const std::ffi::c_void,)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: MoiArc::<flutter_rust_bridge::for_generated::RustAutoOpaqueInner<Metadata>>::decrement_strong_count
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:1755,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ptr
    argTypes:
    - '*const std::ffi::c_void'
    constantsTouched: []
    func_position:
      end: 1756
      start: 1752
    functionDepth: 0
    functionLinenumber: 1752
    functionLinenumberEnd: 1756
    functionName: io::frbgen_opendal_rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerMetadata
    functionSourceFile: /src/opendal/bindings/dart/rust/src/frb_generated.rs
    functionUses: 0
    functionsReached:
    - MoiArc::<flutter_rust_bridge::for_generated::RustAutoOpaqueInner<Metadata>>::decrement_strong_count
    linkageType: ''
    returnType: void
    signature: 'pub extern "C" fn frbgen_opendal_rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerMetadata(ptr:
      *const std::ffi::c_void,)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: MoiArc::<flutter_rust_bridge::for_generated::RustAutoOpaqueInner<Operator>>::increment_strong_count
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:1762,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ptr
    argTypes:
    - '*const std::ffi::c_void'
    constantsTouched: []
    func_position:
      end: 1763
      start: 1759
    functionDepth: 0
    functionLinenumber: 1759
    functionLinenumberEnd: 1763
    functionName: io::frbgen_opendal_rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerOperator
    functionSourceFile: /src/opendal/bindings/dart/rust/src/frb_generated.rs
    functionUses: 0
    functionsReached:
    - MoiArc::<flutter_rust_bridge::for_generated::RustAutoOpaqueInner<Operator>>::increment_strong_count
    linkageType: ''
    returnType: void
    signature: 'pub extern "C" fn frbgen_opendal_rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerOperator(ptr:
      *const std::ffi::c_void,)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: MoiArc::<flutter_rust_bridge::for_generated::RustAutoOpaqueInner<Operator>>::decrement_strong_count
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:1769,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ptr
    argTypes:
    - '*const std::ffi::c_void'
    constantsTouched: []
    func_position:
      end: 1770
      start: 1766
    functionDepth: 0
    functionLinenumber: 1766
    functionLinenumberEnd: 1770
    functionName: io::frbgen_opendal_rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerOperator
    functionSourceFile: /src/opendal/bindings/dart/rust/src/frb_generated.rs
    functionUses: 0
    functionsReached:
    - MoiArc::<flutter_rust_bridge::for_generated::RustAutoOpaqueInner<Operator>>::decrement_strong_count
    linkageType: ''
    returnType: void
    signature: 'pub extern "C" fn frbgen_opendal_rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerOperator(ptr:
      *const std::ffi::c_void,)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: MoiArc::<flutter_rust_bridge::for_generated::RustAutoOpaqueInner<Metadata>>::increment_strong_count
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:1801,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ptr
    argTypes:
    - '*const std::ffi::c_void'
    constantsTouched: []
    func_position:
      end: 1802
      start: 1798
    functionDepth: 0
    functionLinenumber: 1798
    functionLinenumberEnd: 1802
    functionName: web::rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerMetadata
    functionSourceFile: /src/opendal/bindings/dart/rust/src/frb_generated.rs
    functionUses: 0
    functionsReached:
    - MoiArc::<flutter_rust_bridge::for_generated::RustAutoOpaqueInner<Metadata>>::increment_strong_count
    linkageType: ''
    returnType: void
    signature: 'pub fn rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerMetadata(ptr:
      *const std::ffi::c_void,)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: MoiArc::<flutter_rust_bridge::for_generated::RustAutoOpaqueInner<Metadata>>::decrement_strong_count
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:1808,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ptr
    argTypes:
    - '*const std::ffi::c_void'
    constantsTouched: []
    func_position:
      end: 1809
      start: 1805
    functionDepth: 0
    functionLinenumber: 1805
    functionLinenumberEnd: 1809
    functionName: web::rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerMetadata
    functionSourceFile: /src/opendal/bindings/dart/rust/src/frb_generated.rs
    functionUses: 0
    functionsReached:
    - MoiArc::<flutter_rust_bridge::for_generated::RustAutoOpaqueInner<Metadata>>::decrement_strong_count
    linkageType: ''
    returnType: void
    signature: 'pub fn rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerMetadata(ptr:
      *const std::ffi::c_void,)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: MoiArc::<flutter_rust_bridge::for_generated::RustAutoOpaqueInner<Operator>>::increment_strong_count
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:1815,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ptr
    argTypes:
    - '*const std::ffi::c_void'
    constantsTouched: []
    func_position:
      end: 1816
      start: 1812
    functionDepth: 0
    functionLinenumber: 1812
    functionLinenumberEnd: 1816
    functionName: web::rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerOperator
    functionSourceFile: /src/opendal/bindings/dart/rust/src/frb_generated.rs
    functionUses: 0
    functionsReached:
    - MoiArc::<flutter_rust_bridge::for_generated::RustAutoOpaqueInner<Operator>>::increment_strong_count
    linkageType: ''
    returnType: void
    signature: 'pub fn rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerOperator(ptr:
      *const std::ffi::c_void,)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: MoiArc::<flutter_rust_bridge::for_generated::RustAutoOpaqueInner<Operator>>::decrement_strong_count
      Src: /src/opendal/bindings/dart/rust/src/frb_generated.rs:1822,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ptr
    argTypes:
    - '*const std::ffi::c_void'
    constantsTouched: []
    func_position:
      end: 1823
      start: 1819
    functionDepth: 0
    functionLinenumber: 1819
    functionLinenumberEnd: 1823
    functionName: web::rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerOperator
    functionSourceFile: /src/opendal/bindings/dart/rust/src/frb_generated.rs
    functionUses: 0
    functionsReached:
    - MoiArc::<flutter_rust_bridge::for_generated::RustAutoOpaqueInner<Operator>>::decrement_strong_count
    linkageType: ''
    returnType: void
    signature: 'pub fn rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerOperator(ptr:
      *const std::ffi::c_void,)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::map_or_else
      Src: /src/opendal/bindings/nodejs/src/lib.rs:154,1
    - Dst: stat_options
      Src: /src/opendal/bindings/nodejs/src/lib.rs:155,1
    - Dst: map_err
      Src: /src/opendal/bindings/nodejs/src/lib.rs:155,1
    - Dst: Ok
      Src: /src/opendal/bindings/nodejs/src/lib.rs:160,1
    - Dst: Metadata
      Src: /src/opendal/bindings/nodejs/src/lib.rs:160,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 2
    argNames:
    - path
    - options
    argTypes:
    - String
    - Option<options::StatOptions>
    constantsTouched: []
    func_position:
      end: 161
      start: 149
    functionDepth: 35
    functionLinenumber: 149
    functionLinenumberEnd: 161
    functionName: Operator::stat_sync
    functionSourceFile: /src/opendal/bindings/nodejs/src/lib.rs
    functionUses: 1
    functionsReached:
    - map_err
    - stat_options
    - Ok
    - Result::map_or_else
    - Metadata
    linkageType: ''
    returnType: Result
    signature: 'pub fn stat_sync(&self,path: String,options: Option<options::StatOptions>,)
      -> Result<Metadata>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::map_or_else
      Src: /src/opendal/bindings/nodejs/src/lib.rs:504,1
    - Dst: delete_options
      Src: /src/opendal/bindings/nodejs/src/lib.rs:505,1
    - Dst: map_err
      Src: /src/opendal/bindings/nodejs/src/lib.rs:505,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 2
    argNames:
    - path
    - options
    argTypes:
    - String
    - Option<options::DeleteOptions>
    constantsTouched: []
    func_position:
      end: 508
      start: 503
    functionDepth: 35
    functionLinenumber: 503
    functionLinenumberEnd: 508
    functionName: Operator::delete_sync
    functionSourceFile: /src/opendal/bindings/nodejs/src/lib.rs
    functionUses: 1
    functionsReached:
    - map_err
    - Result::map_or_else
    - delete_options
    linkageType: ''
    returnType: Result
    signature: 'pub fn delete_sync(&self, path: String, options: Option<options::DeleteOptions>)
      -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: exists
      Src: /src/opendal/bindings/nodejs/src/lib.rs:206,1
    - Dst: map_err
      Src: /src/opendal/bindings/nodejs/src/lib.rs:206,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - path
    argTypes:
    - String
    constantsTouched: []
    func_position:
      end: 207
      start: 205
    functionDepth: 31
    functionLinenumber: 205
    functionLinenumberEnd: 207
    functionName: Operator::exists_sync
    functionSourceFile: /src/opendal/bindings/nodejs/src/lib.rs
    functionUses: 1
    functionsReached:
    - exists
    - map_err
    linkageType: ''
    returnType: Result
    signature: 'pub fn exists_sync(&self, path: String) -> Result<bool>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: create_dir
      Src: /src/opendal/bindings/nodejs/src/lib.rs:231,1
    - Dst: map_err
      Src: /src/opendal/bindings/nodejs/src/lib.rs:231,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - path
    argTypes:
    - String
    constantsTouched: []
    func_position:
      end: 234
      start: 230
    functionDepth: 35
    functionLinenumber: 230
    functionLinenumberEnd: 234
    functionName: Operator::create_dir_sync
    functionSourceFile: /src/opendal/bindings/nodejs/src/lib.rs
    functionUses: 1
    functionsReached:
    - map_err
    - create_dir
    linkageType: ''
    returnType: Result
    signature: 'pub fn create_dir_sync(&self, path: String) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: rename
      Src: /src/opendal/bindings/nodejs/src/lib.rs:469,1
    - Dst: map_err
      Src: /src/opendal/bindings/nodejs/src/lib.rs:469,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 2
    argNames:
    - from
    - to
    argTypes:
    - String
    - String
    constantsTouched: []
    func_position:
      end: 472
      start: 468
    functionDepth: 2
    functionLinenumber: 468
    functionLinenumberEnd: 472
    functionName: Operator::rename_sync
    functionSourceFile: /src/opendal/bindings/nodejs/src/lib.rs
    functionUses: 1
    functionsReached:
    - rename
    - map_err
    linkageType: ''
    returnType: Result
    signature: 'pub fn rename_sync(&self, from: String, to: String) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::map_or_else
      Src: /src/opendal/bindings/nodejs/src/lib.rs:289,1
    - Dst: read_options
      Src: /src/opendal/bindings/nodejs/src/lib.rs:290,1
    - Dst: map_err
      Src: /src/opendal/bindings/nodejs/src/lib.rs:290,1
    - Dst: to_vec
      Src: /src/opendal/bindings/nodejs/src/lib.rs:290,1
    - Dst: Ok
      Src: /src/opendal/bindings/nodejs/src/lib.rs:295,1
    - Dst: into
      Src: /src/opendal/bindings/nodejs/src/lib.rs:295,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 14
    argCount: 2
    argNames:
    - path
    - options
    argTypes:
    - String
    - Option<options::ReadOptions>
    constantsTouched: []
    func_position:
      end: 296
      start: 288
    functionDepth: 35
    functionLinenumber: 288
    functionLinenumberEnd: 296
    functionName: Operator::read_sync
    functionSourceFile: /src/opendal/bindings/nodejs/src/lib.rs
    functionUses: 1
    functionsReached:
    - map_err
    - Ok
    - into
    - Result::map_or_else
    - to_vec
    - read_options
    linkageType: ''
    returnType: Result
    signature: 'pub fn read_sync(&self, path: String, options: Option<options::ReadOptions>)
      -> Result<Buffer>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: io::Result::as_ref
      Src: /src/opendal/bindings/nodejs/src/lib.rs:403,1
    - Dst: '&[&''static str]::to_owned'
      Src: /src/opendal/bindings/nodejs/src/lib.rs:403,1
    - Dst: into_bytes
      Src: /src/opendal/bindings/nodejs/src/lib.rs:404,1
    - Dst: Result::map_or_else
      Src: /src/opendal/bindings/nodejs/src/lib.rs:406,1
    - Dst: write_options
      Src: /src/opendal/bindings/nodejs/src/lib.rs:407,1
    - Dst: map_err
      Src: /src/opendal/bindings/nodejs/src/lib.rs:407,1
    - Dst: Ok
      Src: /src/opendal/bindings/nodejs/src/lib.rs:411,1
    - Dst: Metadata
      Src: /src/opendal/bindings/nodejs/src/lib.rs:411,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 18
    argCount: 3
    argNames:
    - path
    - content
    - options
    argTypes:
    - String
    - Either<Buffer, String>
    - Option<options::WriteOptions>
    constantsTouched: []
    func_position:
      end: 412
      start: 396
    functionDepth: 35
    functionLinenumber: 396
    functionLinenumberEnd: 412
    functionName: Operator::write_sync
    functionSourceFile: /src/opendal/bindings/nodejs/src/lib.rs
    functionUses: 1
    functionsReached:
    - map_err
    - write_options
    - Ok
    - '&[&''static str]::to_owned'
    - into_bytes
    - Result::map_or_else
    - io::Result::as_ref
    - Metadata
    linkageType: ''
    returnType: Result
    signature: 'pub fn write_sync(&self,path: String,content: Either<Buffer, String>,options:
      Option<options::WriteOptions>,) -> Result<Metadata>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: is_dir
      Src: /src/opendal/bindings/nodejs/src/lib.rs:912,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 913
      start: 911
    functionDepth: 31
    functionLinenumber: 911
    functionLinenumberEnd: 913
    functionName: Metadata::is_directory
    functionSourceFile: /src/opendal/bindings/nodejs/src/lib.rs
    functionUses: 1
    functionsReached:
    - is_dir
    linkageType: ''
    returnType: bool
    signature: pub fn is_directory(&self) -> bool
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Vec::as_ptr
      Src: /src/opendal/bindings/haskell/src/types.rs:32,1
    - Dst: Vec::len
      Src: /src/opendal/bindings/haskell/src/types.rs:33,1
    - Dst: std::mem::forget
      Src: /src/opendal/bindings/haskell/src/types.rs:36,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - vec
    argTypes:
    - Vec<u8>
    constantsTouched: []
    func_position:
      end: 39
      start: 31
    functionDepth: 3
    functionLinenumber: 31
    functionLinenumberEnd: 39
    functionName: ByteSlice::from_vec
    functionSourceFile: /src/opendal/bindings/haskell/src/types.rs
    functionUses: 1
    functionsReached:
    - std::mem::forget
    - Vec::as_ptr
    - Vec::len
    linkageType: ''
    returnType: Self
    signature: 'pub fn from_vec(vec: Vec<u8>) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: '*mut c_char::is_null'
      Src: /src/opendal/bindings/haskell/src/types.rs:51,1
    - Dst: drop
      Src: /src/opendal/bindings/haskell/src/types.rs:52,1
    - Dst: Vec::from_raw_parts
      Src: /src/opendal/bindings/haskell/src/types.rs:52,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - ptr
    - len
    argTypes:
    - '*mut c_char'
    - usize
    constantsTouched: []
    func_position:
      end: 55
      start: 49
    functionDepth: 33
    functionLinenumber: 49
    functionLinenumberEnd: 55
    functionName: ByteSlice::free_byteslice
    functionSourceFile: /src/opendal/bindings/haskell/src/types.rs
    functionUses: 0
    functionsReached:
    - Vec::from_raw_parts
    - '*mut c_char::is_null'
    - drop
    linkageType: ''
    returnType: void
    signature: 'pub unsafe extern "C" fn free_byteslice(ptr: *mut c_char, len: usize)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Vec::from_raw_parts
      Src: /src/opendal/bindings/haskell/src/types.rs:60,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - val
    argTypes:
    - '&mut ByteSlice'
    constantsTouched: []
    func_position:
      end: 61
      start: 59
    functionDepth: 0
    functionLinenumber: 59
    functionLinenumberEnd: 61
    functionName: Vec::from
    functionSourceFile: /src/opendal/bindings/haskell/src/types.rs
    functionUses: 1
    functionsReached:
    - Vec::from_raw_parts
    linkageType: ''
    returnType: Self
    signature: 'fn from(val: &mut ByteSlice) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Option::mode
      Src: /src/opendal/bindings/haskell/src/types.rs:87,1
    - Dst: Option::cache_control
      Src: /src/opendal/bindings/haskell/src/types.rs:93,1
    - Dst: leak_str
      Src: /src/opendal/bindings/haskell/src/types.rs:94,1
    - Dst: std::ptr::null
      Src: /src/opendal/bindings/haskell/src/types.rs:95,1
    - Dst: Option::content_disposition
      Src: /src/opendal/bindings/haskell/src/types.rs:98,1
    - Dst: leak_str
      Src: /src/opendal/bindings/haskell/src/types.rs:99,1
    - Dst: std::ptr::null
      Src: /src/opendal/bindings/haskell/src/types.rs:100,1
    - Dst: Option::content_length
      Src: /src/opendal/bindings/haskell/src/types.rs:103,1
    - Dst: Option::content_md5
      Src: /src/opendal/bindings/haskell/src/types.rs:105,1
    - Dst: leak_str
      Src: /src/opendal/bindings/haskell/src/types.rs:106,1
    - Dst: std::ptr::null
      Src: /src/opendal/bindings/haskell/src/types.rs:107,1
    - Dst: Option::content_type
      Src: /src/opendal/bindings/haskell/src/types.rs:110,1
    - Dst: leak_str
      Src: /src/opendal/bindings/haskell/src/types.rs:111,1
    - Dst: std::ptr::null
      Src: /src/opendal/bindings/haskell/src/types.rs:112,1
    - Dst: Option::etag
      Src: /src/opendal/bindings/haskell/src/types.rs:115,1
    - Dst: leak_str
      Src: /src/opendal/bindings/haskell/src/types.rs:116,1
    - Dst: std::ptr::null
      Src: /src/opendal/bindings/haskell/src/types.rs:117,1
    - Dst: Option::last_modified
      Src: /src/opendal/bindings/haskell/src/types.rs:120,1
    - Dst: leak_str
      Src: /src/opendal/bindings/haskell/src/types.rs:121,1
    - Dst: to_string
      Src: /src/opendal/bindings/haskell/src/types.rs:121,1
    - Dst: as_str
      Src: /src/opendal/bindings/haskell/src/types.rs:121,1
    - Dst: std::ptr::null
      Src: /src/opendal/bindings/haskell/src/types.rs:122,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 40
    argCount: 1
    argNames:
    - val
    argTypes:
    - od::Metadata
    constantsTouched: []
    func_position:
      end: 135
      start: 86
    functionDepth: 30
    functionLinenumber: 86
    functionLinenumberEnd: 135
    functionName: Metadata::from
    functionSourceFile: /src/opendal/bindings/haskell/src/types.rs
    functionUses: 0
    functionsReached:
    - to_string
    - Option::last_modified
    - Option::content_type
    - Option::etag
    - Option::mode
    - std::ptr::null
    - as_str
    - Option::content_length
    - Option::content_md5
    - Option::content_disposition
    - Option::cache_control
    - leak_str
    linkageType: ''
    returnType: Self
    signature: 'fn from(val: od::Metadata) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: CString::new
      Src: /src/opendal/bindings/haskell/src/types.rs:141,1
    - Dst: std::ptr::null
      Src: /src/opendal/bindings/haskell/src/types.rs:143,1
    - Dst: as_ptr
      Src: /src/opendal/bindings/haskell/src/types.rs:146,1
    - Dst: std::mem::forget
      Src: /src/opendal/bindings/haskell/src/types.rs:147,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - s
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 149
      start: 140
    functionDepth: 2
    functionLinenumber: 140
    functionLinenumberEnd: 149
    functionName: leak_str
    functionSourceFile: /src/opendal/bindings/haskell/src/types.rs
    functionUses: 2
    functionsReached:
    - std::ptr::null
    - CString::new
    - std::mem::forget
    - as_ptr
    linkageType: ''
    returnType: '*const c_char'
    signature: 'pub unsafe fn leak_str(s: &str) -> *const c_char'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Box::into_raw
      Src: /src/opendal/bindings/haskell/src/result.rs:53,1
    - Dst: Box::new
      Src: /src/opendal/bindings/haskell/src/result.rs:53,1
    - Dst: ptr::null_mut
      Src: /src/opendal/bindings/haskell/src/result.rs:54,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - data
    argTypes:
    - T
    constantsTouched: []
    func_position:
      end: 56
      start: 50
    functionDepth: 2
    functionLinenumber: 50
    functionLinenumberEnd: 56
    functionName: FFIResult::ok
    functionSourceFile: /src/opendal/bindings/haskell/src/result.rs
    functionUses: 18
    functionsReached:
    - ptr::null_mut
    - Box::new
    - Box::into_raw
    linkageType: ''
    returnType: Self
    signature: 'pub fn ok(data: T) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: CString::new
      Src: /src/opendal/bindings/haskell/src/result.rs:59,1
    - Dst: Self::unwrap
      Src: /src/opendal/bindings/haskell/src/result.rs:59,1
    - Dst: ptr::null_mut
      Src: /src/opendal/bindings/haskell/src/result.rs:62,1
    - Dst: T::into_raw
      Src: /src/opendal/bindings/haskell/src/result.rs:63,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - error_message
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 65
      start: 58
    functionDepth: 35
    functionLinenumber: 58
    functionLinenumberEnd: 65
    functionName: FFIResult::err
    functionSourceFile: /src/opendal/bindings/haskell/src/result.rs
    functionUses: 18
    functionsReached:
    - ptr::null_mut
    - CString::new
    - T::into_raw
    - Self::unwrap
    linkageType: ''
    returnType: Self
    signature: 'pub fn err(error_message: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: CString::new
      Src: /src/opendal/bindings/haskell/src/result.rs:69,1
    - Dst: Self::unwrap
      Src: /src/opendal/bindings/haskell/src/result.rs:69,1
    - Dst: Result::kind
      Src: /src/opendal/bindings/haskell/src/result.rs:71,1
    - Dst: ErrorKind::into
      Src: /src/opendal/bindings/haskell/src/result.rs:71,1
    - Dst: ptr::null_mut
      Src: /src/opendal/bindings/haskell/src/result.rs:72,1
    - Dst: T::into_raw
      Src: /src/opendal/bindings/haskell/src/result.rs:73,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 2
    argNames:
    - error_message
    - source
    argTypes:
    - '&str'
    - od::Error
    constantsTouched: []
    func_position:
      end: 75
      start: 67
    functionDepth: 35
    functionLinenumber: 67
    functionLinenumberEnd: 75
    functionName: FFIResult::err_with_source
    functionSourceFile: /src/opendal/bindings/haskell/src/result.rs
    functionUses: 17
    functionsReached:
    - Self::unwrap
    - CString::new
    - ptr::null_mut
    - ErrorKind::into
    - Result::kind
    - T::into_raw
    linkageType: ''
    returnType: Self
    signature: 'pub fn err_with_source(error_message: &str, source: od::Error) ->
      Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - kind
    argTypes:
    - od::ErrorKind
    constantsTouched: []
    func_position:
      end: 93
      start: 79
    functionDepth: 0
    functionLinenumber: 79
    functionLinenumberEnd: 93
    functionName: FFIErrorCode::from
    functionSourceFile: /src/opendal/bindings/haskell/src/result.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: 'fn from(kind: od::ErrorKind) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: CStr::from_ptr
      Src: /src/opendal/bindings/haskell/src/lib.rs:70,1
    - Dst: to_str
      Src: /src/opendal/bindings/haskell/src/lib.rs:70,1
    - Dst: FFIResult::err
      Src: /src/opendal/bindings/haskell/src/lib.rs:73,1
    - Dst: std::slice::from_raw_parts
      Src: /src/opendal/bindings/haskell/src/lib.rs:78,1
    - Dst: std::slice::from_raw_parts
      Src: /src/opendal/bindings/haskell/src/lib.rs:79,1
    - Dst: iter
      Src: /src/opendal/bindings/haskell/src/lib.rs:81,1
    - Dst: zip
      Src: /src/opendal/bindings/haskell/src/lib.rs:81,1
    - Dst: iter
      Src: /src/opendal/bindings/haskell/src/lib.rs:83,1
    - Dst: map
      Src: /src/opendal/bindings/haskell/src/lib.rs:81,1
    - Dst: CStr::from_ptr
      Src: /src/opendal/bindings/haskell/src/lib.rs:86,1
    - Dst: to_string_lossy
      Src: /src/opendal/bindings/haskell/src/lib.rs:86,1
    - Dst: into_owned
      Src: /src/opendal/bindings/haskell/src/lib.rs:86,1
    - Dst: CStr::from_ptr
      Src: /src/opendal/bindings/haskell/src/lib.rs:87,1
    - Dst: to_string_lossy
      Src: /src/opendal/bindings/haskell/src/lib.rs:87,1
    - Dst: into_owned
      Src: /src/opendal/bindings/haskell/src/lib.rs:87,1
    - Dst: "iter()\n            .zip(values_vec.iter())\n            .map(|(&k, &v)|\
        \ {\n                (\n                    CStr::from_ptr(k).to_string_lossy().into_owned(),\n\
        \                    CStr::from_ptr(v).to_string_lossy().into_owned(),\n \
        \               )\n            })\n            .collect::<HashMap<String,\
        \ String>>"
      Src: /src/opendal/bindings/haskell/src/lib.rs:81,1
    - Dst: log::set_boxed_logger
      Src: /src/opendal/bindings/haskell/src/lib.rs:93,1
    - Dst: Box::new
      Src: /src/opendal/bindings/haskell/src/lib.rs:93,1
    - Dst: map
      Src: /src/opendal/bindings/haskell/src/lib.rs:93,1
    - Dst: log::set_max_level
      Src: /src/opendal/bindings/haskell/src/lib.rs:94,1
    - Dst: FFIResult::err_with_source
      Src: /src/opendal/bindings/haskell/src/lib.rs:96,1
    - Dst: od::Error::new
      Src: /src/opendal/bindings/haskell/src/lib.rs:98,1
    - Dst: Result::to_string
      Src: /src/opendal/bindings/haskell/src/lib.rs:98,1
    - Dst: as_str
      Src: /src/opendal/bindings/haskell/src/lib.rs:98,1
    - Dst: od::Operator::via_iter
      Src: /src/opendal/bindings/haskell/src/lib.rs:103,1
    - Dst: Result::layer
      Src: /src/opendal/bindings/haskell/src/lib.rs:105,1
    - Dst: RetryLayer::new
      Src: /src/opendal/bindings/haskell/src/lib.rs:105,1
    - Dst: Result::is_some
      Src: /src/opendal/bindings/haskell/src/lib.rs:106,1
    - Dst: Result::layer
      Src: /src/opendal/bindings/haskell/src/lib.rs:107,1
    - Dst: LoggingLayer::default
      Src: /src/opendal/bindings/haskell/src/lib.rs:107,1
    - Dst: handle
      Src: /src/opendal/bindings/haskell/src/lib.rs:110,1
    - Dst: enter
      Src: /src/opendal/bindings/haskell/src/lib.rs:111,1
    - Dst: od::blocking::Operator::new
      Src: /src/opendal/bindings/haskell/src/lib.rs:112,1
    - Dst: Result::unwrap
      Src: /src/opendal/bindings/haskell/src/lib.rs:112,1
    - Dst: FFIResult::ok
      Src: /src/opendal/bindings/haskell/src/lib.rs:113,1
    - Dst: FFIResult::err_with_source
      Src: /src/opendal/bindings/haskell/src/lib.rs:115,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 83
    argCount: 6
    argNames:
    - scheme
    - keys
    - values
    - len
    - callback
    - result
    argTypes:
    - '*const c_char'
    - '*const *const c_char'
    - '*const *const c_char'
    - usize
    - Option<extern "C" fn(u32, *const c_char)>
    - '*mut FFIResult<od::blocking::Operator>'
    constantsTouched: []
    func_position:
      end: 120
      start: 61
    functionDepth: 38
    functionLinenumber: 61
    functionLinenumberEnd: 120
    functionName: via_map_ffi
    functionSourceFile: /src/opendal/bindings/haskell/src/lib.rs
    functionUses: 0
    functionsReached:
    - Box::new
    - map
    - Result::unwrap
    - FFIResult::err_with_source
    - FFIResult::ok
    - iter
    - Result::to_string
    - FFIResult::err
    - as_str
    - log::set_max_level
    - Result::is_some
    - log::set_boxed_logger
    - to_str
    - LoggingLayer::default
    - RetryLayer::new
    - "iter()\n            .zip(values_vec.iter())\n            .map(|(&k, &v)| {\n\
      \                (\n                    CStr::from_ptr(k).to_string_lossy().into_owned(),\n\
      \                    CStr::from_ptr(v).to_string_lossy().into_owned(),\n   \
      \             )\n            })\n            .collect::<HashMap<String, String>>"
    - handle
    - Result::layer
    - enter
    - into_owned
    - od::Operator::via_iter
    - zip
    - CStr::from_ptr
    - od::Error::new
    - od::blocking::Operator::new
    - std::slice::from_raw_parts
    - to_string_lossy
    linkageType: ''
    returnType: void
    signature: 'pub unsafe extern "C" fn via_map_ffi(scheme: *const c_char,keys: *const
      *const c_char,values: *const *const c_char,len: usize,callback: Option<extern
      "C" fn(u32, *const c_char)>,result: *mut FFIResult<od::blocking::Operator>,)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::is_null
      Src: /src/opendal/bindings/haskell/src/lib.rs:132,1
    - Dst: drop
      Src: /src/opendal/bindings/haskell/src/lib.rs:133,1
    - Dst: Box::from_raw
      Src: /src/opendal/bindings/haskell/src/lib.rs:133,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - operator
    argTypes:
    - '*mut od::blocking::Operator'
    constantsTouched: []
    func_position:
      end: 136
      start: 130
    functionDepth: 33
    functionLinenumber: 130
    functionLinenumberEnd: 136
    functionName: free_operator
    functionSourceFile: /src/opendal/bindings/haskell/src/lib.rs
    functionUses: 0
    functionsReached:
    - Box::from_raw
    - Result::is_null
    - drop
    linkageType: ''
    returnType: void
    signature: 'pub unsafe extern "C" fn free_operator(operator: *mut od::blocking::Operator)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: is_null
      Src: /src/opendal/bindings/haskell/src/lib.rs:554,1
    - Dst: FFIResult::err
      Src: /src/opendal/bindings/haskell/src/lib.rs:555,1
    - Dst: CStr::from_ptr
      Src: /src/opendal/bindings/haskell/src/lib.rs:561,1
    - Dst: to_str
      Src: /src/opendal/bindings/haskell/src/lib.rs:561,1
    - Dst: FFIResult::err
      Src: /src/opendal/bindings/haskell/src/lib.rs:564,1
    - Dst: lister_options
      Src: /src/opendal/bindings/haskell/src/lib.rs:569,1
    - Dst: Default::default
      Src: /src/opendal/bindings/haskell/src/lib.rs:573,1
    - Dst: FFIResult::ok
      Src: /src/opendal/bindings/haskell/src/lib.rs:576,1
    - Dst: Box::into_raw
      Src: /src/opendal/bindings/haskell/src/lib.rs:576,1
    - Dst: Box::new
      Src: /src/opendal/bindings/haskell/src/lib.rs:576,1
    - Dst: FFIResult::err_with_source
      Src: /src/opendal/bindings/haskell/src/lib.rs:577,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 34
    argCount: 3
    argNames:
    - op
    - path
    - result
    argTypes:
    - '*mut od::blocking::Operator'
    - '*const c_char'
    - '*mut FFIResult<*mut blocking::Lister>'
    constantsTouched: []
    func_position:
      end: 582
      start: 548
    functionDepth: 36
    functionLinenumber: 548
    functionLinenumberEnd: 582
    functionName: blocking_scan
    functionSourceFile: /src/opendal/bindings/haskell/src/lib.rs
    functionUses: 0
    functionsReached:
    - lister_options
    - to_str
    - Box::new
    - FFIResult::err
    - Default::default
    - CStr::from_ptr
    - FFIResult::err_with_source
    - FFIResult::ok
    - is_null
    - Box::into_raw
    linkageType: ''
    returnType: void
    signature: 'pub unsafe extern "C" fn blocking_scan(op: *mut od::blocking::Operator,path:
      *const c_char,result: *mut FFIResult<*mut blocking::Lister>,)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::is_null
      Src: /src/opendal/bindings/haskell/src/lib.rs:629,1
    - Dst: drop
      Src: /src/opendal/bindings/haskell/src/lib.rs:630,1
    - Dst: Box::from_raw
      Src: /src/opendal/bindings/haskell/src/lib.rs:630,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - lister
    argTypes:
    - '*mut blocking::Lister'
    constantsTouched: []
    func_position:
      end: 633
      start: 627
    functionDepth: 33
    functionLinenumber: 627
    functionLinenumberEnd: 633
    functionName: free_lister
    functionSourceFile: /src/opendal/bindings/haskell/src/lib.rs
    functionUses: 0
    functionsReached:
    - Box::from_raw
    - Result::is_null
    - drop
    linkageType: ''
    returnType: void
    signature: 'pub unsafe extern "C" fn free_lister(lister: *mut blocking::Lister)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: is_null
      Src: /src/opendal/bindings/haskell/src/lib.rs:788,1
    - Dst: FFIResult::err
      Src: /src/opendal/bindings/haskell/src/lib.rs:789,1
    - Dst: CStr::from_ptr
      Src: /src/opendal/bindings/haskell/src/lib.rs:795,1
    - Dst: to_str
      Src: /src/opendal/bindings/haskell/src/lib.rs:795,1
    - Dst: FFIResult::err
      Src: /src/opendal/bindings/haskell/src/lib.rs:798,1
    - Dst: Default::default
      Src: /src/opendal/bindings/haskell/src/lib.rs:806,1
    - Dst: writer_options
      Src: /src/opendal/bindings/haskell/src/lib.rs:809,1
    - Dst: FFIResult::ok
      Src: /src/opendal/bindings/haskell/src/lib.rs:810,1
    - Dst: Box::into_raw
      Src: /src/opendal/bindings/haskell/src/lib.rs:810,1
    - Dst: Box::new
      Src: /src/opendal/bindings/haskell/src/lib.rs:810,1
    - Dst: FFIResult::err_with_source
      Src: /src/opendal/bindings/haskell/src/lib.rs:811,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 34
    argCount: 3
    argNames:
    - op
    - path
    - result
    argTypes:
    - '*mut od::blocking::Operator'
    - '*const c_char'
    - '*mut FFIResult<*mut blocking::Writer>'
    constantsTouched: []
    func_position:
      end: 816
      start: 782
    functionDepth: 36
    functionLinenumber: 782
    functionLinenumberEnd: 816
    functionName: blocking_writer_append
    functionSourceFile: /src/opendal/bindings/haskell/src/lib.rs
    functionUses: 0
    functionsReached:
    - to_str
    - Box::new
    - FFIResult::err
    - Default::default
    - CStr::from_ptr
    - writer_options
    - FFIResult::err_with_source
    - FFIResult::ok
    - is_null
    - Box::into_raw
    linkageType: ''
    returnType: void
    signature: 'pub unsafe extern "C" fn blocking_writer_append(op: *mut od::blocking::Operator,path:
      *const c_char,result: *mut FFIResult<*mut blocking::Writer>,)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::is_null
      Src: /src/opendal/bindings/haskell/src/lib.rs:906,1
    - Dst: drop
      Src: /src/opendal/bindings/haskell/src/lib.rs:907,1
    - Dst: Box::from_raw
      Src: /src/opendal/bindings/haskell/src/lib.rs:907,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - writer
    argTypes:
    - '*mut blocking::Writer'
    constantsTouched: []
    func_position:
      end: 910
      start: 904
    functionDepth: 33
    functionLinenumber: 904
    functionLinenumberEnd: 910
    functionName: free_writer
    functionSourceFile: /src/opendal/bindings/haskell/src/lib.rs
    functionUses: 0
    functionsReached:
    - Box::from_raw
    - Result::is_null
    - drop
    linkageType: ''
    returnType: void
    signature: 'pub unsafe extern "C" fn free_writer(writer: *mut blocking::Writer)'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 1
    argNames: []
    argTypes:
    - '&log::Metadata'
    constantsTouched: []
    func_position:
      end: 28
      start: 26
    functionDepth: 0
    functionLinenumber: 26
    functionLinenumberEnd: 28
    functionName: HsLogger::enabled
    functionSourceFile: /src/opendal/bindings/haskell/src/logger.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: 'fn enabled(&self, _: &log::Metadata) -> bool'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: CString::new
      Src: /src/opendal/bindings/haskell/src/logger.rs:32,1
    - Dst: Self::unwrap
      Src: /src/opendal/bindings/haskell/src/logger.rs:32,1
    - Dst: level
      Src: /src/opendal/bindings/haskell/src/logger.rs:33,1
    - Dst: T::as_ptr
      Src: /src/opendal/bindings/haskell/src/logger.rs:40,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 1
    argNames:
    - record
    argTypes:
    - '&log::Record'
    constantsTouched: []
    func_position:
      end: 41
      start: 30
    functionDepth: 35
    functionLinenumber: 30
    functionLinenumberEnd: 41
    functionName: HsLogger::log
    functionSourceFile: /src/opendal/bindings/haskell/src/logger.rs
    functionUses: 0
    functionsReached:
    - CString::new
    - level
    - T::as_ptr
    - Self::unwrap
    linkageType: ''
    returnType: void
    signature: 'fn log(&self, record: &log::Record)'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 43
      start: 43
    functionDepth: 0
    functionLinenumber: 43
    functionLinenumberEnd: 43
    functionName: HsLogger::flush
    functionSourceFile: /src/opendal/bindings/haskell/src/logger.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: fn flush(&self)
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: od::Operator::via_iter
      Src: /src/opendal/bindings/php/src/lib.rs:44,1
    - Dst: Result::map_err
      Src: /src/opendal/bindings/php/src/lib.rs:44,1
    - Dst: handle
      Src: /src/opendal/bindings/php/src/lib.rs:46,1
    - Dst: enter
      Src: /src/opendal/bindings/php/src/lib.rs:47,1
    - Dst: od::blocking::Operator::new
      Src: /src/opendal/bindings/php/src/lib.rs:48,1
    - Dst: Result::map_err
      Src: /src/opendal/bindings/php/src/lib.rs:48,1
    - Dst: Ok
      Src: /src/opendal/bindings/php/src/lib.rs:50,1
    - Dst: Operator
      Src: /src/opendal/bindings/php/src/lib.rs:50,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 2
    argNames:
    - scheme
    - config
    argTypes:
    - String
    - HashMap<String, String>
    constantsTouched: []
    func_position:
      end: 51
      start: 43
    functionDepth: 38
    functionLinenumber: 43
    functionLinenumberEnd: 51
    functionName: Operator::__construct
    functionSourceFile: /src/opendal/bindings/php/src/lib.rs
    functionUses: 0
    functionsReached:
    - Result::map_err
    - od::Operator::via_iter
    - Ok
    - handle
    - od::blocking::Operator::new
    - Operator
    - enter
    linkageType: ''
    returnType: PhpResult
    signature: 'pub fn __construct(scheme: String, config: HashMap<String, String>)
      -> PhpResult<Self>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: write
      Src: /src/opendal/bindings/php/src/lib.rs:63,1
    - Dst: map
      Src: /src/opendal/bindings/php/src/lib.rs:63,1
    - Dst: map_err
      Src: /src/opendal/bindings/php/src/lib.rs:63,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 2
    argNames:
    - path
    - content
    argTypes:
    - '&str'
    - Vec<u8>
    constantsTouched: []
    func_position:
      end: 67
      start: 62
    functionDepth: 36
    functionLinenumber: 62
    functionLinenumberEnd: 67
    functionName: Operator::write_binary
    functionSourceFile: /src/opendal/bindings/php/src/lib.rs
    functionUses: 0
    functionsReached:
    - map_err
    - map
    - write
    linkageType: ''
    returnType: PhpResult
    signature: 'pub fn write_binary(&self, path: &str, content: Vec<u8>) -> PhpResult<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: exists
      Src: /src/opendal/bindings/php/src/lib.rs:79,1
    - Dst: map_err
      Src: /src/opendal/bindings/php/src/lib.rs:79,1
    - Dst: map
      Src: /src/opendal/bindings/php/src/lib.rs:79,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - path
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 83
      start: 78
    functionDepth: 31
    functionLinenumber: 78
    functionLinenumberEnd: 83
    functionName: Operator::is_exist
    functionSourceFile: /src/opendal/bindings/php/src/lib.rs
    functionUses: 0
    functionsReached:
    - exists
    - map
    - map_err
    linkageType: ''
    returnType: PhpResult
    signature: 'pub fn is_exist(&self, path: &str) -> PhpResult<u8>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Option::object
      Src: /src/opendal/bindings/php/src/lib.rs:174,1
    - Dst: Buffer::and_then
      Src: /src/opendal/bindings/php/src/lib.rs:174,1
    - Dst: get_property
      Src: /src/opendal/bindings/php/src/lib.rs:174,1
    - Dst: ok
      Src: /src/opendal/bindings/php/src/lib.rs:174,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 1
    argNames:
    - zval
    argTypes:
    - '&''b Zval'
    constantsTouched: []
    func_position:
      end: 175
      start: 173
    functionDepth: 5
    functionLinenumber: 173
    functionLinenumberEnd: 175
    functionName: EntryMode::from_zval
    functionSourceFile: /src/opendal/bindings/php/src/lib.rs
    functionUses: 0
    functionsReached:
    - ok
    - get_property
    - Option::object
    - Buffer::and_then
    linkageType: ''
    returnType: Option
    signature: 'fn from_zval(zval: &''b Zval) -> Option<Self>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: PhpException::default
      Src: /src/opendal/bindings/php/src/lib.rs:201,1
    - Dst: Result::to_string
      Src: /src/opendal/bindings/php/src/lib.rs:201,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - e
    argTypes:
    - od::Error
    constantsTouched: []
    func_position:
      end: 202
      start: 198
    functionDepth: 3
    functionLinenumber: 198
    functionLinenumberEnd: 202
    functionName: format_php_err
    functionSourceFile: /src/opendal/bindings/php/src/lib.rs
    functionUses: 0
    functionsReached:
    - PhpException::default
    - Result::to_string
    linkageType: ''
    returnType: PhpException
    signature: 'fn format_php_err(e: od::Error) -> PhpException'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: class::<Operator>
      Src: /src/opendal/bindings/php/src/lib.rs:206,1
    - Dst: "class::<Operator>()\n        .class::<Metadata>"
      Src: /src/opendal/bindings/php/src/lib.rs:206,1
    - Dst: "class::<Operator>()\n        .class::<Metadata>()\n        .class::<EntryMode>"
      Src: /src/opendal/bindings/php/src/lib.rs:206,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - module
    argTypes:
    - ModuleBuilder
    constantsTouched: []
    func_position:
      end: 210
      start: 205
    functionDepth: 0
    functionLinenumber: 205
    functionLinenumberEnd: 210
    functionName: get_module
    functionSourceFile: /src/opendal/bindings/php/src/lib.rs
    functionUses: 0
    functionsReached:
    - "class::<Operator>()\n        .class::<Metadata>"
    - "class::<Operator>()\n        .class::<Metadata>()\n        .class::<EntryMode>"
    - class::<Operator>
    linkageType: ''
    returnType: ModuleBuilder
    signature: 'pub fn get_module(module: ModuleBuilder) -> ModuleBuilder'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: layer
      Src: /src/opendal/bindings/nodejs/src/layer.rs:35,1
    - Dst: opendal::layers::RetryLayer::clone
      Src: /src/opendal/bindings/nodejs/src/layer.rs:35,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - op
    argTypes:
    - opendal::Operator
    constantsTouched: []
    func_position:
      end: 36
      start: 34
    functionDepth: 3
    functionLinenumber: 34
    functionLinenumberEnd: 36
    functionName: opendal::layers::RetryLayer::layer
    functionSourceFile: /src/opendal/bindings/nodejs/src/layer.rs
    functionUses: 0
    functionsReached:
    - layer
    - opendal::layers::RetryLayer::clone
    linkageType: ''
    returnType: opendal::Operator
    signature: 'fn layer(&self, op: opendal::Operator) -> opendal::Operator'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: layer
      Src: /src/opendal/bindings/nodejs/src/layer.rs:41,1
    - Dst: opendal::layers::CapabilityOverrideLayer::clone
      Src: /src/opendal/bindings/nodejs/src/layer.rs:41,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - op
    argTypes:
    - opendal::Operator
    constantsTouched: []
    func_position:
      end: 42
      start: 40
    functionDepth: 3
    functionLinenumber: 40
    functionLinenumberEnd: 42
    functionName: opendal::layers::CapabilityOverrideLayer::layer
    functionSourceFile: /src/opendal/bindings/nodejs/src/layer.rs
    functionUses: 0
    functionsReached:
    - opendal::layers::CapabilityOverrideLayer::clone
    - layer
    linkageType: ''
    returnType: opendal::Operator
    signature: 'fn layer(&self, op: opendal::Operator) -> opendal::Operator'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: opendal::layers::CapabilityOverrideLayer::from_overrides
      Src: /src/opendal/bindings/nodejs/src/layer.rs:63,1
    - Dst: Result::map_err
      Src: /src/opendal/bindings/nodejs/src/layer.rs:63,1
    - Dst: napi::Error::from_reason
      Src: /src/opendal/bindings/nodejs/src/layer.rs:64,1
    - Dst: Ok
      Src: /src/opendal/bindings/nodejs/src/layer.rs:66,1
    - Dst: External::new
      Src: /src/opendal/bindings/nodejs/src/layer.rs:66,1
    - Dst: Box::new
      Src: /src/opendal/bindings/nodejs/src/layer.rs:66,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 67
      start: 62
    functionDepth: 2
    functionLinenumber: 62
    functionLinenumberEnd: 67
    functionName: CapabilityOverrideLayer::build
    functionSourceFile: /src/opendal/bindings/nodejs/src/layer.rs
    functionUses: 0
    functionsReached:
    - Result::map_err
    - Ok
    - opendal::layers::CapabilityOverrideLayer::from_overrides
    - Box::new
    - napi::Error::from_reason
    - External::new
    linkageType: ''
    returnType: Result
    signature: pub fn build(&self) -> Result<External<Layer>>
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - v
    argTypes:
    - bool
    constantsTouched: []
    func_position:
      end: 119
      start: 117
    functionDepth: 0
    functionLinenumber: 117
    functionLinenumberEnd: 119
    functionName: RetryLayer::jitter
    functionSourceFile: /src/opendal/bindings/nodejs/src/layer.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: 'pub fn jitter(&mut self, v: bool)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Some
      Src: /src/opendal/bindings/nodejs/src/layer.rs:126,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - v
    argTypes:
    - u32
    constantsTouched: []
    func_position:
      end: 127
      start: 125
    functionDepth: 0
    functionLinenumber: 125
    functionLinenumberEnd: 127
    functionName: RetryLayer::max_times
    functionSourceFile: /src/opendal/bindings/nodejs/src/layer.rs
    functionUses: 0
    functionsReached:
    - Some
    linkageType: ''
    returnType: void
    signature: 'pub fn max_times(&mut self, v: u32)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Some
      Src: /src/opendal/bindings/nodejs/src/layer.rs:136,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - v
    argTypes:
    - f64
    constantsTouched: []
    func_position:
      end: 137
      start: 135
    functionDepth: 0
    functionLinenumber: 135
    functionLinenumberEnd: 137
    functionName: RetryLayer::factor
    functionSourceFile: /src/opendal/bindings/nodejs/src/layer.rs
    functionUses: 0
    functionsReached:
    - Some
    linkageType: ''
    returnType: void
    signature: 'pub fn factor(&mut self, v: f64)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Some
      Src: /src/opendal/bindings/nodejs/src/layer.rs:148,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - v
    argTypes:
    - f64
    constantsTouched: []
    func_position:
      end: 149
      start: 147
    functionDepth: 0
    functionLinenumber: 147
    functionLinenumberEnd: 149
    functionName: RetryLayer::max_delay
    functionSourceFile: /src/opendal/bindings/nodejs/src/layer.rs
    functionUses: 0
    functionsReached:
    - Some
    linkageType: ''
    returnType: void
    signature: 'pub fn max_delay(&mut self, v: f64)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Some
      Src: /src/opendal/bindings/nodejs/src/layer.rs:158,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - v
    argTypes:
    - f64
    constantsTouched: []
    func_position:
      end: 159
      start: 157
    functionDepth: 0
    functionLinenumber: 157
    functionLinenumberEnd: 159
    functionName: RetryLayer::min_delay
    functionSourceFile: /src/opendal/bindings/nodejs/src/layer.rs
    functionUses: 0
    functionsReached:
    - Some
    linkageType: ''
    returnType: void
    signature: 'pub fn min_delay(&mut self, v: f64)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: opendal::layers::RetryLayer::default
      Src: /src/opendal/bindings/nodejs/src/layer.rs:163,1
    - Dst: Trial::with_jitter
      Src: /src/opendal/bindings/nodejs/src/layer.rs:165,1
    - Dst: Trial::with_max_times
      Src: /src/opendal/bindings/nodejs/src/layer.rs:168,1
    - Dst: Trial::with_factor
      Src: /src/opendal/bindings/nodejs/src/layer.rs:171,1
    - Dst: Trial::with_max_delay
      Src: /src/opendal/bindings/nodejs/src/layer.rs:174,1
    - Dst: Duration::from_millis
      Src: /src/opendal/bindings/nodejs/src/layer.rs:174,1
    - Dst: Trial::with_min_delay
      Src: /src/opendal/bindings/nodejs/src/layer.rs:177,1
    - Dst: Duration::from_millis
      Src: /src/opendal/bindings/nodejs/src/layer.rs:177,1
    - Dst: External::new
      Src: /src/opendal/bindings/nodejs/src/layer.rs:180,1
    - Dst: Box::new
      Src: /src/opendal/bindings/nodejs/src/layer.rs:180,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 45
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 181
      start: 162
    functionDepth: 2
    functionLinenumber: 162
    functionLinenumberEnd: 181
    functionName: RetryLayer::build
    functionSourceFile: /src/opendal/bindings/nodejs/src/layer.rs
    functionUses: 0
    functionsReached:
    - opendal::layers::RetryLayer::default
    - Trial::with_factor
    - Box::new
    - Trial::with_max_times
    - External::new
    - Trial::with_max_delay
    - Trial::with_jitter
    - Trial::with_min_delay
    - Duration::from_millis
    linkageType: ''
    returnType: External
    signature: pub fn build(&self) -> External<Layer>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: layer
      Src: /src/opendal/bindings/nodejs/src/layer.rs:186,1
    - Dst: opendal::layers::ConcurrentLimitLayer::clone
      Src: /src/opendal/bindings/nodejs/src/layer.rs:186,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - op
    argTypes:
    - opendal::Operator
    constantsTouched: []
    func_position:
      end: 187
      start: 185
    functionDepth: 3
    functionLinenumber: 185
    functionLinenumberEnd: 187
    functionName: opendal::layers::ConcurrentLimitLayer::layer
    functionSourceFile: /src/opendal/bindings/nodejs/src/layer.rs
    functionUses: 0
    functionsReached:
    - layer
    - opendal::layers::ConcurrentLimitLayer::clone
    linkageType: ''
    returnType: opendal::Operator
    signature: 'fn layer(&self, op: opendal::Operator) -> opendal::Operator'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Some
      Src: /src/opendal/bindings/nodejs/src/layer.rs:250,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - v
    argTypes:
    - i64
    constantsTouched: []
    func_position:
      end: 251
      start: 249
    functionDepth: 0
    functionLinenumber: 249
    functionLinenumberEnd: 251
    functionName: ConcurrentLimitLayer::http_permits
    functionSourceFile: /src/opendal/bindings/nodejs/src/layer.rs
    functionUses: 0
    functionsReached:
    - Some
    linkageType: ''
    returnType: void
    signature: 'pub fn http_permits(&mut self, v: i64)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: opendal::layers::ConcurrentLimitLayer::new
      Src: /src/opendal/bindings/nodejs/src/layer.rs:259,1
    - Dst: Trial::with_http_concurrent_limit
      Src: /src/opendal/bindings/nodejs/src/layer.rs:262,1
    - Dst: External::new
      Src: /src/opendal/bindings/nodejs/src/layer.rs:265,1
    - Dst: Box::new
      Src: /src/opendal/bindings/nodejs/src/layer.rs:265,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 266
      start: 257
    functionDepth: 3
    functionLinenumber: 257
    functionLinenumberEnd: 266
    functionName: ConcurrentLimitLayer::build
    functionSourceFile: /src/opendal/bindings/nodejs/src/layer.rs
    functionUses: 0
    functionsReached:
    - Box::new
    - Trial::with_http_concurrent_limit
    - opendal::layers::ConcurrentLimitLayer::new
    - External::new
    linkageType: ''
    returnType: External
    signature: pub fn build(&self) -> External<Layer>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: layer
      Src: /src/opendal/bindings/nodejs/src/layer.rs:271,1
    - Dst: opendal::layers::TimeoutLayer::clone
      Src: /src/opendal/bindings/nodejs/src/layer.rs:271,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - op
    argTypes:
    - opendal::Operator
    constantsTouched: []
    func_position:
      end: 272
      start: 270
    functionDepth: 3
    functionLinenumber: 270
    functionLinenumberEnd: 272
    functionName: opendal::layers::TimeoutLayer::layer
    functionSourceFile: /src/opendal/bindings/nodejs/src/layer.rs
    functionUses: 0
    functionsReached:
    - layer
    - opendal::layers::TimeoutLayer::clone
    linkageType: ''
    returnType: opendal::Operator
    signature: 'fn layer(&self, op: opendal::Operator) -> opendal::Operator'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Some
      Src: /src/opendal/bindings/nodejs/src/layer.rs:326,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - v
    argTypes:
    - f64
    constantsTouched: []
    func_position:
      end: 327
      start: 325
    functionDepth: 0
    functionLinenumber: 325
    functionLinenumberEnd: 327
    functionName: TimeoutLayer::timeout
    functionSourceFile: /src/opendal/bindings/nodejs/src/layer.rs
    functionUses: 0
    functionsReached:
    - Some
    linkageType: ''
    returnType: void
    signature: 'pub fn timeout(&mut self, v: f64)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Some
      Src: /src/opendal/bindings/nodejs/src/layer.rs:337,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - v
    argTypes:
    - f64
    constantsTouched: []
    func_position:
      end: 338
      start: 336
    functionDepth: 0
    functionLinenumber: 336
    functionLinenumberEnd: 338
    functionName: TimeoutLayer::io_timeout
    functionSourceFile: /src/opendal/bindings/nodejs/src/layer.rs
    functionUses: 0
    functionsReached:
    - Some
    linkageType: ''
    returnType: void
    signature: 'pub fn io_timeout(&mut self, v: f64)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: opendal::layers::TimeoutLayer::default
      Src: /src/opendal/bindings/nodejs/src/layer.rs:342,1
    - Dst: Trial::with_timeout
      Src: /src/opendal/bindings/nodejs/src/layer.rs:345,1
    - Dst: Duration::from_millis
      Src: /src/opendal/bindings/nodejs/src/layer.rs:345,1
    - Dst: Trial::with_io_timeout
      Src: /src/opendal/bindings/nodejs/src/layer.rs:348,1
    - Dst: Duration::from_millis
      Src: /src/opendal/bindings/nodejs/src/layer.rs:348,1
    - Dst: External::new
      Src: /src/opendal/bindings/nodejs/src/layer.rs:351,1
    - Dst: Box::new
      Src: /src/opendal/bindings/nodejs/src/layer.rs:351,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 22
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 352
      start: 341
    functionDepth: 2
    functionLinenumber: 341
    functionLinenumberEnd: 352
    functionName: TimeoutLayer::build
    functionSourceFile: /src/opendal/bindings/nodejs/src/layer.rs
    functionUses: 0
    functionsReached:
    - Box::new
    - Trial::with_timeout
    - External::new
    - opendal::layers::TimeoutLayer::default
    - Trial::with_io_timeout
    - Duration::from_millis
    linkageType: ''
    returnType: External
    signature: pub fn build(&self) -> External<Layer>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: layer
      Src: /src/opendal/bindings/nodejs/src/layer.rs:357,1
    - Dst: opendal::layers::LoggingLayer::default
      Src: /src/opendal/bindings/nodejs/src/layer.rs:357,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - op
    argTypes:
    - opendal::Operator
    constantsTouched: []
    func_position:
      end: 358
      start: 356
    functionDepth: 3
    functionLinenumber: 356
    functionLinenumberEnd: 358
    functionName: opendal::layers::LoggingLayer::layer
    functionSourceFile: /src/opendal/bindings/nodejs/src/layer.rs
    functionUses: 0
    functionsReached:
    - layer
    - opendal::layers::LoggingLayer::default
    linkageType: ''
    returnType: opendal::Operator
    signature: 'fn layer(&self, op: opendal::Operator) -> opendal::Operator'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: opendal::layers::LoggingLayer::default
      Src: /src/opendal/bindings/nodejs/src/layer.rs:410,1
    - Dst: External::new
      Src: /src/opendal/bindings/nodejs/src/layer.rs:411,1
    - Dst: Box::new
      Src: /src/opendal/bindings/nodejs/src/layer.rs:411,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 412
      start: 409
    functionDepth: 2
    functionLinenumber: 409
    functionLinenumberEnd: 412
    functionName: LoggingLayer::build
    functionSourceFile: /src/opendal/bindings/nodejs/src/layer.rs
    functionUses: 0
    functionsReached:
    - Box::new
    - opendal::layers::LoggingLayer::default
    - External::new
    linkageType: ''
    returnType: External
    signature: pub fn build(&self) -> External<Layer>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: layer
      Src: /src/opendal/bindings/nodejs/src/layer.rs:417,1
    - Dst: opendal::layers::ThrottleLayer::clone
      Src: /src/opendal/bindings/nodejs/src/layer.rs:417,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - op
    argTypes:
    - opendal::Operator
    constantsTouched: []
    func_position:
      end: 418
      start: 416
    functionDepth: 3
    functionLinenumber: 416
    functionLinenumberEnd: 418
    functionName: opendal::layers::ThrottleLayer::layer
    functionSourceFile: /src/opendal/bindings/nodejs/src/layer.rs
    functionUses: 0
    functionsReached:
    - layer
    - opendal::layers::ThrottleLayer::clone
    linkageType: ''
    returnType: opendal::Operator
    signature: 'fn layer(&self, op: opendal::Operator) -> opendal::Operator'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: opendal::layers::ThrottleLayer::new
      Src: /src/opendal/bindings/nodejs/src/layer.rs:471,1
    - Dst: External::new
      Src: /src/opendal/bindings/nodejs/src/layer.rs:472,1
    - Dst: Box::new
      Src: /src/opendal/bindings/nodejs/src/layer.rs:472,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 473
      start: 470
    functionDepth: 2
    functionLinenumber: 470
    functionLinenumberEnd: 473
    functionName: ThrottleLayer::build
    functionSourceFile: /src/opendal/bindings/nodejs/src/layer.rs
    functionUses: 0
    functionsReached:
    - Box::new
    - opendal::layers::ThrottleLayer::new
    - External::new
    linkageType: ''
    returnType: External
    signature: pub fn build(&self) -> External<Layer>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: check
      Src: /src/opendal/bindings/nodejs/src/lib.rs:184,1
    - Dst: map_err
      Src: /src/opendal/bindings/nodejs/src/lib.rs:184,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 185
      start: 183
    functionDepth: 3
    functionLinenumber: 183
    functionLinenumberEnd: 185
    functionName: Operator::check_sync
    functionSourceFile: /src/opendal/bindings/nodejs/src/lib.rs
    functionUses: 0
    functionsReached:
    - map_err
    - check
    linkageType: ''
    returnType: Result
    signature: pub fn check_sync(&self) -> Result<()>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::map_or_else
      Src: /src/opendal/bindings/nodejs/src/lib.rs:307,1
    - Dst: reader_options
      Src: /src/opendal/bindings/nodejs/src/lib.rs:308,1
    - Dst: map_err
      Src: /src/opendal/bindings/nodejs/src/lib.rs:308,1
    - Dst: Ok
      Src: /src/opendal/bindings/nodejs/src/lib.rs:312,1
    - Dst: Result::into_std_read
      Src: /src/opendal/bindings/nodejs/src/lib.rs:313,1
    - Dst: Result::map_err
      Src: /src/opendal/bindings/nodejs/src/lib.rs:313,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 17
    argCount: 2
    argNames:
    - path
    - options
    argTypes:
    - String
    - Option<options::ReaderOptions>
    constantsTouched: []
    func_position:
      end: 315
      start: 302
    functionDepth: 35
    functionLinenumber: 302
    functionLinenumberEnd: 315
    functionName: Operator::reader_sync
    functionSourceFile: /src/opendal/bindings/nodejs/src/lib.rs
    functionUses: 0
    functionsReached:
    - map_err
    - Result::map_err
    - Ok
    - Result::into_std_read
    - reader_options
    - Result::map_or_else
    linkageType: ''
    returnType: Result
    signature: 'pub fn reader_sync(&self,path: String,options: Option<options::ReaderOptions>,)
      -> Result<BlockingReader>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::unwrap_or_default
      Src: /src/opendal/bindings/nodejs/src/lib.rs:376,1
    - Dst: writer_options
      Src: /src/opendal/bindings/nodejs/src/lib.rs:377,1
    - Dst: Result::into
      Src: /src/opendal/bindings/nodejs/src/lib.rs:379,1
    - Dst: map_err
      Src: /src/opendal/bindings/nodejs/src/lib.rs:377,1
    - Dst: Ok
      Src: /src/opendal/bindings/nodejs/src/lib.rs:381,1
    - Dst: BlockingWriter
      Src: /src/opendal/bindings/nodejs/src/lib.rs:381,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 2
    argNames:
    - path
    - options
    argTypes:
    - String
    - Option<options::WriteOptions>
    constantsTouched: []
    func_position:
      end: 382
      start: 371
    functionDepth: 35
    functionLinenumber: 371
    functionLinenumberEnd: 382
    functionName: Operator::writer_sync
    functionSourceFile: /src/opendal/bindings/nodejs/src/lib.rs
    functionUses: 0
    functionsReached:
    - Result::unwrap_or_default
    - map_err
    - BlockingWriter
    - Ok
    - Result::into
    - writer_options
    linkageType: ''
    returnType: Result
    signature: 'pub fn writer_sync(&self,path: String,options: Option<options::WriteOptions>,)
      -> Result<BlockingWriter>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: copy
      Src: /src/opendal/bindings/nodejs/src/lib.rs:437,1
    - Dst: map
      Src: /src/opendal/bindings/nodejs/src/lib.rs:437,1
    - Dst: map_err
      Src: /src/opendal/bindings/nodejs/src/lib.rs:437,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 2
    argNames:
    - from
    - to
    argTypes:
    - String
    - String
    constantsTouched: []
    func_position:
      end: 441
      start: 436
    functionDepth: 34
    functionLinenumber: 436
    functionLinenumberEnd: 441
    functionName: Operator::copy_sync
    functionSourceFile: /src/opendal/bindings/nodejs/src/lib.rs
    functionUses: 0
    functionsReached:
    - map_err
    - map
    - copy
    linkageType: ''
    returnType: Result
    signature: 'pub fn copy_sync(&self, from: String, to: String) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: delete_iter
      Src: /src/opendal/bindings/nodejs/src/lib.rs:538,1
    - Dst: map_err
      Src: /src/opendal/bindings/nodejs/src/lib.rs:538,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - paths
    argTypes:
    - Vec<String>
    constantsTouched: []
    func_position:
      end: 541
      start: 537
    functionDepth: 35
    functionLinenumber: 537
    functionLinenumberEnd: 541
    functionName: Operator::remove_sync
    functionSourceFile: /src/opendal/bindings/nodejs/src/lib.rs
    functionUses: 0
    functionsReached:
    - map_err
    - delete_iter
    linkageType: ''
    returnType: Result
    signature: 'pub fn remove_sync(&self, paths: Vec<String>) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: delete_options
      Src: /src/opendal/bindings/nodejs/src/lib.rs:573,1
    - Dst: Default::default
      Src: /src/opendal/bindings/nodejs/src/lib.rs:578,1
    - Dst: map_err
      Src: /src/opendal/bindings/nodejs/src/lib.rs:573,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - path
    argTypes:
    - String
    constantsTouched: []
    func_position:
      end: 582
      start: 571
    functionDepth: 35
    functionLinenumber: 571
    functionLinenumberEnd: 582
    functionName: Operator::remove_all_sync
    functionSourceFile: /src/opendal/bindings/nodejs/src/lib.rs
    functionUses: 0
    functionsReached:
    - map_err
    - Default::default
    - delete_options
    linkageType: ''
    returnType: Result
    signature: 'pub fn remove_all_sync(&self, path: String) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::map_or
      Src: /src/opendal/bindings/nodejs/src/lib.rs:669,1
    - Dst: ListOptions::default
      Src: /src/opendal/bindings/nodejs/src/lib.rs:669,1
    - Dst: list_options
      Src: /src/opendal/bindings/nodejs/src/lib.rs:670,1
    - Dst: map_err
      Src: /src/opendal/bindings/nodejs/src/lib.rs:670,1
    - Dst: Ok
      Src: /src/opendal/bindings/nodejs/src/lib.rs:675,1
    - Dst: Trial::into_iter
      Src: /src/opendal/bindings/nodejs/src/lib.rs:675,1
    - Dst: map
      Src: /src/opendal/bindings/nodejs/src/lib.rs:675,1
    - Dst: collect
      Src: /src/opendal/bindings/nodejs/src/lib.rs:675,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 17
    argCount: 2
    argNames:
    - path
    - options
    argTypes:
    - String
    - Option<options::ListOptions>
    constantsTouched: []
    func_position:
      end: 676
      start: 664
    functionDepth: 35
    functionLinenumber: 664
    functionLinenumberEnd: 676
    functionName: Operator::list_sync
    functionSourceFile: /src/opendal/bindings/nodejs/src/lib.rs
    functionUses: 0
    functionsReached:
    - ListOptions::default
    - map_err
    - collect
    - Ok
    - map
    - Result::map_or
    - list_options
    - Trial::into_iter
    linkageType: ''
    returnType: Result
    signature: 'pub fn list_sync(&self,path: String,options: Option<options::ListOptions>,)
      -> Result<Vec<Entry>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::map_or
      Src: /src/opendal/bindings/nodejs/src/lib.rs:756,1
    - Dst: ListOptions::default
      Src: /src/opendal/bindings/nodejs/src/lib.rs:756,1
    - Dst: lister_options
      Src: /src/opendal/bindings/nodejs/src/lib.rs:757,1
    - Dst: map_err
      Src: /src/opendal/bindings/nodejs/src/lib.rs:757,1
    - Dst: Ok
      Src: /src/opendal/bindings/nodejs/src/lib.rs:762,1
    - Dst: BlockingLister
      Src: /src/opendal/bindings/nodejs/src/lib.rs:762,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 2
    argNames:
    - path
    - options
    argTypes:
    - String
    - Option<options::ListOptions>
    constantsTouched: []
    func_position:
      end: 763
      start: 751
    functionDepth: 35
    functionLinenumber: 751
    functionLinenumberEnd: 763
    functionName: Operator::lister_sync
    functionSourceFile: /src/opendal/bindings/nodejs/src/lib.rs
    functionUses: 0
    functionsReached:
    - ListOptions::default
    - map_err
    - lister_options
    - Ok
    - BlockingLister
    - Result::map_or
    linkageType: ''
    returnType: Result
    signature: 'pub fn lister_sync(&self,path: String,options: Option<options::ListOptions>,)
      -> Result<BlockingLister>'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - mode
    argTypes:
    - opendal::EntryMode
    constantsTouched: []
    func_position:
      end: 900
      start: 894
    functionDepth: 0
    functionLinenumber: 894
    functionLinenumberEnd: 900
    functionName: EntryMode::from
    functionSourceFile: /src/opendal/bindings/nodejs/src/lib.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: 'fn from(mode: opendal::EntryMode) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: io::Result::as_mut
      Src: /src/opendal/bindings/nodejs/src/lib.rs:1008,1
    - Dst: read
      Src: /src/opendal/bindings/nodejs/src/lib.rs:1009,1
    - Dst: map_err
      Src: /src/opendal/bindings/nodejs/src/lib.rs:1009,1
    - Dst: Ok
      Src: /src/opendal/bindings/nodejs/src/lib.rs:1010,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - buf
    argTypes:
    - Buffer
    constantsTouched: []
    func_position:
      end: 1011
      start: 1007
    functionDepth: 31
    functionLinenumber: 1007
    functionLinenumberEnd: 1011
    functionName: BlockingReader::read
    functionSourceFile: /src/opendal/bindings/nodejs/src/lib.rs
    functionUses: 0
    functionsReached:
    - map_err
    - read
    - io::Result::as_mut
    - Ok
    linkageType: ''
    returnType: Result
    signature: 'pub fn read(&mut self, mut buf: Buffer) -> Result<usize>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: io::Result::as_ref
      Src: /src/opendal/bindings/nodejs/src/lib.rs:1058,1
    - Dst: '&[&''static str]::to_owned'
      Src: /src/opendal/bindings/nodejs/src/lib.rs:1058,1
    - Dst: into_bytes
      Src: /src/opendal/bindings/nodejs/src/lib.rs:1059,1
    - Dst: write
      Src: /src/opendal/bindings/nodejs/src/lib.rs:1061,1
    - Dst: map_err
      Src: /src/opendal/bindings/nodejs/src/lib.rs:1061,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 1
    argNames:
    - content
    argTypes:
    - Either<Buffer, String>
    constantsTouched: []
    func_position:
      end: 1062
      start: 1056
    functionDepth: 36
    functionLinenumber: 1056
    functionLinenumberEnd: 1062
    functionName: BlockingWriter::write
    functionSourceFile: /src/opendal/bindings/nodejs/src/lib.rs
    functionUses: 0
    functionsReached:
    - map_err
    - '&[&''static str]::to_owned'
    - into_bytes
    - io::Result::as_ref
    - write
    linkageType: ''
    returnType: Result
    signature: 'pub unsafe fn write(&mut self, content: Either<Buffer, String>) ->
      Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: close
      Src: /src/opendal/bindings/nodejs/src/lib.rs:1079,1
    - Dst: map
      Src: /src/opendal/bindings/nodejs/src/lib.rs:1079,1
    - Dst: map_err
      Src: /src/opendal/bindings/nodejs/src/lib.rs:1079,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 1080
      start: 1078
    functionDepth: 2
    functionLinenumber: 1078
    functionLinenumberEnd: 1080
    functionName: BlockingWriter::close
    functionSourceFile: /src/opendal/bindings/nodejs/src/lib.rs
    functionUses: 0
    functionsReached:
    - map_err
    - map
    - close
    linkageType: ''
    returnType: Result
    signature: pub unsafe fn close(&mut self) -> Result<()>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: next
      Src: /src/opendal/bindings/nodejs/src/lib.rs:1168,1
    - Dst: Ok
      Src: /src/opendal/bindings/nodejs/src/lib.rs:1169,1
    - Dst: Some
      Src: /src/opendal/bindings/nodejs/src/lib.rs:1169,1
    - Dst: Entry
      Src: /src/opendal/bindings/nodejs/src/lib.rs:1169,1
    - Dst: Err
      Src: /src/opendal/bindings/nodejs/src/lib.rs:1170,1
    - Dst: format_napi_error
      Src: /src/opendal/bindings/nodejs/src/lib.rs:1170,1
    - Dst: Ok
      Src: /src/opendal/bindings/nodejs/src/lib.rs:1171,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 1173
      start: 1167
    functionDepth: 2
    functionLinenumber: 1167
    functionLinenumberEnd: 1173
    functionName: BlockingLister::next
    functionSourceFile: /src/opendal/bindings/nodejs/src/lib.rs
    functionUses: 0
    functionsReached:
    - next
    - Ok
    - Err
    - Some
    - format_napi_error
    - Entry
    linkageType: ''
    returnType: Result
    signature: pub fn next(&mut self) -> Result<Option<Entry>>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Error::from_reason
      Src: /src/opendal/bindings/nodejs/src/lib.rs:1232,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - err
    argTypes:
    - impl Display
    constantsTouched: []
    func_position:
      end: 1233
      start: 1231
    functionDepth: 0
    functionLinenumber: 1231
    functionLinenumberEnd: 1233
    functionName: format_napi_error
    functionSourceFile: /src/opendal/bindings/nodejs/src/lib.rs
    functionUses: 1
    functionsReached:
    - Error::from_reason
    linkageType: ''
    returnType: Error
    signature: 'fn format_napi_error(err: impl Display) -> Error'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: and_then
      Src: /src/opendal/bindings/nodejs/src/options.rs:81,1
    - Dst: parse::<Timestamp>
      Src: /src/opendal/bindings/nodejs/src/options.rs:83,1
    - Dst: ok
      Src: /src/opendal/bindings/nodejs/src/options.rs:83,1
    - Dst: and_then
      Src: /src/opendal/bindings/nodejs/src/options.rs:84,1
    - Dst: parse::<Timestamp>
      Src: /src/opendal/bindings/nodejs/src/options.rs:86,1
    - Dst: ok
      Src: /src/opendal/bindings/nodejs/src/options.rs:86,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 23
    argCount: 1
    argNames:
    - value
    argTypes:
    - StatOptions
    constantsTouched: []
    func_position:
      end: 98
      start: 80
    functionDepth: 3
    functionLinenumber: 80
    functionLinenumberEnd: 98
    functionName: opendal::options::StatOptions::from
    functionSourceFile: /src/opendal/bindings/nodejs/src/options.rs
    functionUses: 0
    functionsReached:
    - ok
    - and_then
    - parse::<Timestamp>
    linkageType: ''
    returnType: Self
    signature: 'fn from(value: StatOptions) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Vec::make_range
      Src: /src/opendal/bindings/nodejs/src/options.rs:216,1
    - Dst: and_then
      Src: /src/opendal/bindings/nodejs/src/options.rs:217,1
    - Dst: parse::<Timestamp>
      Src: /src/opendal/bindings/nodejs/src/options.rs:219,1
    - Dst: ok
      Src: /src/opendal/bindings/nodejs/src/options.rs:219,1
    - Dst: and_then
      Src: /src/opendal/bindings/nodejs/src/options.rs:220,1
    - Dst: parse::<Timestamp>
      Src: /src/opendal/bindings/nodejs/src/options.rs:222,1
    - Dst: ok
      Src: /src/opendal/bindings/nodejs/src/options.rs:222,1
    - Dst: unwrap_or_default
      Src: /src/opendal/bindings/nodejs/src/options.rs:226,1
    - Dst: map
      Src: /src/opendal/bindings/nodejs/src/options.rs:227,1
    - Dst: map
      Src: /src/opendal/bindings/nodejs/src/options.rs:228,1
    - Dst: Self::get_u64
      Src: /src/opendal/bindings/nodejs/src/options.rs:228,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 42
    argCount: 1
    argNames:
    - value
    argTypes:
    - ReadOptions
    constantsTouched: []
    func_position:
      end: 239
      start: 215
    functionDepth: 3
    functionLinenumber: 215
    functionLinenumberEnd: 239
    functionName: opendal::options::ReadOptions::from
    functionSourceFile: /src/opendal/bindings/nodejs/src/options.rs
    functionUses: 0
    functionsReached:
    - and_then
    - parse::<Timestamp>
    - ok
    - Vec::make_range
    - Self::get_u64
    - map
    - unwrap_or_default
    linkageType: ''
    returnType: Self
    signature: 'fn from(value: ReadOptions) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: and_then
      Src: /src/opendal/bindings/nodejs/src/options.rs:332,1
    - Dst: parse::<Timestamp>
      Src: /src/opendal/bindings/nodejs/src/options.rs:334,1
    - Dst: ok
      Src: /src/opendal/bindings/nodejs/src/options.rs:334,1
    - Dst: and_then
      Src: /src/opendal/bindings/nodejs/src/options.rs:335,1
    - Dst: parse::<Timestamp>
      Src: /src/opendal/bindings/nodejs/src/options.rs:337,1
    - Dst: ok
      Src: /src/opendal/bindings/nodejs/src/options.rs:337,1
    - Dst: unwrap_or_default
      Src: /src/opendal/bindings/nodejs/src/options.rs:341,1
    - Dst: map
      Src: /src/opendal/bindings/nodejs/src/options.rs:342,1
    - Dst: map
      Src: /src/opendal/bindings/nodejs/src/options.rs:343,1
    - Dst: Self::get_u64
      Src: /src/opendal/bindings/nodejs/src/options.rs:343,1
    - Dst: unwrap_or_default
      Src: /src/opendal/bindings/nodejs/src/options.rs:344,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 41
    argCount: 1
    argNames:
    - value
    argTypes:
    - ReaderOptions
    constantsTouched: []
    func_position:
      end: 351
      start: 331
    functionDepth: 3
    functionLinenumber: 331
    functionLinenumberEnd: 351
    functionName: opendal::options::ReaderOptions::from
    functionSourceFile: /src/opendal/bindings/nodejs/src/options.rs
    functionUses: 0
    functionsReached:
    - and_then
    - parse::<Timestamp>
    - ok
    - Self::get_u64
    - map
    - unwrap_or_default
    linkageType: ''
    returnType: Self
    signature: 'fn from(value: ReaderOptions) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: map
      Src: /src/opendal/bindings/nodejs/src/options.rs:407,1
    - Dst: unwrap_or_default
      Src: /src/opendal/bindings/nodejs/src/options.rs:409,1
    - Dst: unwrap_or_default
      Src: /src/opendal/bindings/nodejs/src/options.rs:410,1
    - Dst: unwrap_or_default
      Src: /src/opendal/bindings/nodejs/src/options.rs:411,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 16
    argCount: 1
    argNames:
    - value
    argTypes:
    - ListOptions
    constantsTouched: []
    func_position:
      end: 413
      start: 405
    functionDepth: 1
    functionLinenumber: 405
    functionLinenumberEnd: 413
    functionName: opendal::options::ListOptions::from
    functionSourceFile: /src/opendal/bindings/nodejs/src/options.rs
    functionUses: 0
    functionsReached:
    - map
    - unwrap_or_default
    linkageType: ''
    returnType: Self
    signature: 'fn from(value: ListOptions) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: unwrap_or_default
      Src: /src/opendal/bindings/nodejs/src/options.rs:495,1
    - Dst: map
      Src: /src/opendal/bindings/nodejs/src/options.rs:496,1
    - Dst: Result::get_u64
      Src: /src/opendal/bindings/nodejs/src/options.rs:496,1
    - Dst: unwrap_or_default
      Src: /src/opendal/bindings/nodejs/src/options.rs:504,1
    - Dst: unwrap_or_default
      Src: /src/opendal/bindings/nodejs/src/options.rs:505,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 26
    argCount: 1
    argNames:
    - value
    argTypes:
    - WriteOptions
    constantsTouched: []
    func_position:
      end: 507
      start: 493
    functionDepth: 1
    functionLinenumber: 493
    functionLinenumberEnd: 507
    functionName: opendal::options::WriteOptions::from
    functionSourceFile: /src/opendal/bindings/nodejs/src/options.rs
    functionUses: 0
    functionsReached:
    - map
    - unwrap_or_default
    - Result::get_u64
    linkageType: ''
    returnType: Self
    signature: 'fn from(value: WriteOptions) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: unwrap_or_default
      Src: /src/opendal/bindings/nodejs/src/options.rs:522,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - value
    argTypes:
    - DeleteOptions
    constantsTouched: []
    func_position:
      end: 524
      start: 519
    functionDepth: 0
    functionLinenumber: 519
    functionLinenumberEnd: 524
    functionName: opendal::options::DeleteOptions::from
    functionSourceFile: /src/opendal/bindings/nodejs/src/options.rs
    functionUses: 0
    functionsReached:
    - unwrap_or_default
    linkageType: ''
    returnType: Self
    signature: 'fn from(value: DeleteOptions) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 43
      start: 41
    functionDepth: 0
    functionLinenumber: 41
    functionLinenumberEnd: 43
    functionName: Capability::stat
    functionSourceFile: /src/opendal/bindings/nodejs/src/capability.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: pub fn stat(&self) -> bool
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 49
      start: 47
    functionDepth: 0
    functionLinenumber: 47
    functionLinenumberEnd: 49
    functionName: Capability::stat_with_if_match
    functionSourceFile: /src/opendal/bindings/nodejs/src/capability.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: pub fn stat_with_if_match(&self) -> bool
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 55
      start: 53
    functionDepth: 0
    functionLinenumber: 53
    functionLinenumberEnd: 55
    functionName: Capability::stat_with_if_none_match
    functionSourceFile: /src/opendal/bindings/nodejs/src/capability.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: pub fn stat_with_if_none_match(&self) -> bool
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 61
      start: 59
    functionDepth: 0
    functionLinenumber: 59
    functionLinenumberEnd: 61
    functionName: Capability::stat_with_if_modified_since
    functionSourceFile: /src/opendal/bindings/nodejs/src/capability.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: pub fn stat_with_if_modified_since(&self) -> bool
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 67
      start: 65
    functionDepth: 0
    functionLinenumber: 65
    functionLinenumberEnd: 67
    functionName: Capability::stat_with_if_unmodified_since
    functionSourceFile: /src/opendal/bindings/nodejs/src/capability.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: pub fn stat_with_if_unmodified_since(&self) -> bool
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 73
      start: 71
    functionDepth: 0
    functionLinenumber: 71
    functionLinenumberEnd: 73
    functionName: Capability::stat_with_version
    functionSourceFile: /src/opendal/bindings/nodejs/src/capability.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: pub fn stat_with_version(&self) -> bool
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 79
      start: 77
    functionDepth: 0
    functionLinenumber: 77
    functionLinenumberEnd: 79
    functionName: Capability::stat_with_override_content_type
    functionSourceFile: /src/opendal/bindings/nodejs/src/capability.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: pub fn stat_with_override_content_type(&self) -> bool
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 85
      start: 83
    functionDepth: 0
    functionLinenumber: 83
    functionLinenumberEnd: 85
    functionName: Capability::stat_with_override_cache_control
    functionSourceFile: /src/opendal/bindings/nodejs/src/capability.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: pub fn stat_with_override_cache_control(&self) -> bool
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 91
      start: 89
    functionDepth: 0
    functionLinenumber: 89
    functionLinenumberEnd: 91
    functionName: Capability::stat_with_override_content_disposition
    functionSourceFile: /src/opendal/bindings/nodejs/src/capability.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: pub fn stat_with_override_content_disposition(&self) -> bool
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 97
      start: 95
    functionDepth: 0
    functionLinenumber: 95
    functionLinenumberEnd: 97
    functionName: Capability::read
    functionSourceFile: /src/opendal/bindings/nodejs/src/capability.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: pub fn read(&self) -> bool
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 103
      start: 101
    functionDepth: 0
    functionLinenumber: 101
    functionLinenumberEnd: 103
    functionName: Capability::read_with_version
    functionSourceFile: /src/opendal/bindings/nodejs/src/capability.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: pub fn read_with_version(&self) -> bool
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 109
      start: 107
    functionDepth: 0
    functionLinenumber: 107
    functionLinenumberEnd: 109
    functionName: Capability::read_with_if_modified_since
    functionSourceFile: /src/opendal/bindings/nodejs/src/capability.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: pub fn read_with_if_modified_since(&self) -> bool
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 115
      start: 113
    functionDepth: 0
    functionLinenumber: 113
    functionLinenumberEnd: 115
    functionName: Capability::read_with_if_unmodified_since
    functionSourceFile: /src/opendal/bindings/nodejs/src/capability.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: pub fn read_with_if_unmodified_since(&self) -> bool
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 121
      start: 119
    functionDepth: 0
    functionLinenumber: 119
    functionLinenumberEnd: 121
    functionName: Capability::read_with_if_match
    functionSourceFile: /src/opendal/bindings/nodejs/src/capability.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: pub fn read_with_if_match(&self) -> bool
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 127
      start: 125
    functionDepth: 0
    functionLinenumber: 125
    functionLinenumberEnd: 127
    functionName: Capability::read_with_if_none_match
    functionSourceFile: /src/opendal/bindings/nodejs/src/capability.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: pub fn read_with_if_none_match(&self) -> bool
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 133
      start: 131
    functionDepth: 0
    functionLinenumber: 131
    functionLinenumberEnd: 133
    functionName: Capability::read_with_override_cache_control
    functionSourceFile: /src/opendal/bindings/nodejs/src/capability.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: pub fn read_with_override_cache_control(&self) -> bool
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 139
      start: 137
    functionDepth: 0
    functionLinenumber: 137
    functionLinenumberEnd: 139
    functionName: Capability::read_with_override_content_disposition
    functionSourceFile: /src/opendal/bindings/nodejs/src/capability.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: pub fn read_with_override_content_disposition(&self) -> bool
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 145
      start: 143
    functionDepth: 0
    functionLinenumber: 143
    functionLinenumberEnd: 145
    functionName: Capability::read_with_override_content_type
    functionSourceFile: /src/opendal/bindings/nodejs/src/capability.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: pub fn read_with_override_content_type(&self) -> bool
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 151
      start: 149
    functionDepth: 0
    functionLinenumber: 149
    functionLinenumberEnd: 151
    functionName: Capability::write
    functionSourceFile: /src/opendal/bindings/nodejs/src/capability.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: pub fn write(&self) -> bool
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 157
      start: 155
    functionDepth: 0
    functionLinenumber: 155
    functionLinenumberEnd: 157
    functionName: Capability::write_can_multi
    functionSourceFile: /src/opendal/bindings/nodejs/src/capability.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: pub fn write_can_multi(&self) -> bool
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 163
      start: 161
    functionDepth: 0
    functionLinenumber: 161
    functionLinenumberEnd: 163
    functionName: Capability::write_can_empty
    functionSourceFile: /src/opendal/bindings/nodejs/src/capability.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: pub fn write_can_empty(&self) -> bool
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 169
      start: 167
    functionDepth: 0
    functionLinenumber: 167
    functionLinenumberEnd: 169
    functionName: Capability::write_can_append
    functionSourceFile: /src/opendal/bindings/nodejs/src/capability.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: pub fn write_can_append(&self) -> bool
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 175
      start: 173
    functionDepth: 0
    functionLinenumber: 173
    functionLinenumberEnd: 175
    functionName: Capability::write_with_content_type
    functionSourceFile: /src/opendal/bindings/nodejs/src/capability.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: pub fn write_with_content_type(&self) -> bool
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 181
      start: 179
    functionDepth: 0
    functionLinenumber: 179
    functionLinenumberEnd: 181
    functionName: Capability::write_with_content_disposition
    functionSourceFile: /src/opendal/bindings/nodejs/src/capability.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: pub fn write_with_content_disposition(&self) -> bool
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 187
      start: 185
    functionDepth: 0
    functionLinenumber: 185
    functionLinenumberEnd: 187
    functionName: Capability::write_with_cache_control
    functionSourceFile: /src/opendal/bindings/nodejs/src/capability.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: pub fn write_with_cache_control(&self) -> bool
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 193
      start: 191
    functionDepth: 0
    functionLinenumber: 191
    functionLinenumberEnd: 193
    functionName: Capability::write_with_content_encoding
    functionSourceFile: /src/opendal/bindings/nodejs/src/capability.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: pub fn write_with_content_encoding(&self) -> bool
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 199
      start: 197
    functionDepth: 0
    functionLinenumber: 197
    functionLinenumberEnd: 199
    functionName: Capability::write_with_user_metadata
    functionSourceFile: /src/opendal/bindings/nodejs/src/capability.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: pub fn write_with_user_metadata(&self) -> bool
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 205
      start: 203
    functionDepth: 0
    functionLinenumber: 203
    functionLinenumberEnd: 205
    functionName: Capability::write_with_if_match
    functionSourceFile: /src/opendal/bindings/nodejs/src/capability.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: pub fn write_with_if_match(&self) -> bool
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 211
      start: 209
    functionDepth: 0
    functionLinenumber: 209
    functionLinenumberEnd: 211
    functionName: Capability::write_with_if_none_match
    functionSourceFile: /src/opendal/bindings/nodejs/src/capability.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: pub fn write_with_if_none_match(&self) -> bool
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 217
      start: 215
    functionDepth: 0
    functionLinenumber: 215
    functionLinenumberEnd: 217
    functionName: Capability::write_with_if_not_exists
    functionSourceFile: /src/opendal/bindings/nodejs/src/capability.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: pub fn write_with_if_not_exists(&self) -> bool
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 225
      start: 223
    functionDepth: 0
    functionLinenumber: 223
    functionLinenumberEnd: 225
    functionName: Capability::write_multi_max_size
    functionSourceFile: /src/opendal/bindings/nodejs/src/capability.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Option
    signature: pub fn write_multi_max_size(&self) -> Option<usize>
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 233
      start: 231
    functionDepth: 0
    functionLinenumber: 231
    functionLinenumberEnd: 233
    functionName: Capability::write_multi_min_size
    functionSourceFile: /src/opendal/bindings/nodejs/src/capability.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Option
    signature: pub fn write_multi_min_size(&self) -> Option<usize>
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 240
      start: 238
    functionDepth: 0
    functionLinenumber: 238
    functionLinenumberEnd: 240
    functionName: Capability::write_total_max_size
    functionSourceFile: /src/opendal/bindings/nodejs/src/capability.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Option
    signature: pub fn write_total_max_size(&self) -> Option<usize>
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 246
      start: 244
    functionDepth: 0
    functionLinenumber: 244
    functionLinenumberEnd: 246
    functionName: Capability::create_dir
    functionSourceFile: /src/opendal/bindings/nodejs/src/capability.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: pub fn create_dir(&self) -> bool
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 252
      start: 250
    functionDepth: 0
    functionLinenumber: 250
    functionLinenumberEnd: 252
    functionName: Capability::delete
    functionSourceFile: /src/opendal/bindings/nodejs/src/capability.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: pub fn delete(&self) -> bool
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 258
      start: 256
    functionDepth: 0
    functionLinenumber: 256
    functionLinenumberEnd: 258
    functionName: Capability::delete_with_version
    functionSourceFile: /src/opendal/bindings/nodejs/src/capability.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: pub fn delete_with_version(&self) -> bool
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 264
      start: 262
    functionDepth: 0
    functionLinenumber: 262
    functionLinenumberEnd: 264
    functionName: Capability::copy
    functionSourceFile: /src/opendal/bindings/nodejs/src/capability.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: pub fn copy(&self) -> bool
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 270
      start: 268
    functionDepth: 0
    functionLinenumber: 268
    functionLinenumberEnd: 270
    functionName: Capability::rename
    functionSourceFile: /src/opendal/bindings/nodejs/src/capability.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: pub fn rename(&self) -> bool
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 276
      start: 274
    functionDepth: 0
    functionLinenumber: 274
    functionLinenumberEnd: 276
    functionName: Capability::list
    functionSourceFile: /src/opendal/bindings/nodejs/src/capability.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: pub fn list(&self) -> bool
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 282
      start: 280
    functionDepth: 0
    functionLinenumber: 280
    functionLinenumberEnd: 282
    functionName: Capability::list_with_limit
    functionSourceFile: /src/opendal/bindings/nodejs/src/capability.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: pub fn list_with_limit(&self) -> bool
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 288
      start: 286
    functionDepth: 0
    functionLinenumber: 286
    functionLinenumberEnd: 288
    functionName: Capability::list_with_start_after
    functionSourceFile: /src/opendal/bindings/nodejs/src/capability.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: pub fn list_with_start_after(&self) -> bool
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 294
      start: 292
    functionDepth: 0
    functionLinenumber: 292
    functionLinenumberEnd: 294
    functionName: Capability::list_with_recursive
    functionSourceFile: /src/opendal/bindings/nodejs/src/capability.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: pub fn list_with_recursive(&self) -> bool
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 300
      start: 298
    functionDepth: 0
    functionLinenumber: 298
    functionLinenumberEnd: 300
    functionName: Capability::list_with_versions
    functionSourceFile: /src/opendal/bindings/nodejs/src/capability.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: pub fn list_with_versions(&self) -> bool
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 306
      start: 304
    functionDepth: 0
    functionLinenumber: 304
    functionLinenumberEnd: 306
    functionName: Capability::list_with_deleted
    functionSourceFile: /src/opendal/bindings/nodejs/src/capability.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: pub fn list_with_deleted(&self) -> bool
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 312
      start: 310
    functionDepth: 0
    functionLinenumber: 310
    functionLinenumberEnd: 312
    functionName: Capability::presign
    functionSourceFile: /src/opendal/bindings/nodejs/src/capability.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: pub fn presign(&self) -> bool
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 318
      start: 316
    functionDepth: 0
    functionLinenumber: 316
    functionLinenumberEnd: 318
    functionName: Capability::presign_read
    functionSourceFile: /src/opendal/bindings/nodejs/src/capability.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: pub fn presign_read(&self) -> bool
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 324
      start: 322
    functionDepth: 0
    functionLinenumber: 322
    functionLinenumberEnd: 324
    functionName: Capability::presign_stat
    functionSourceFile: /src/opendal/bindings/nodejs/src/capability.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: pub fn presign_stat(&self) -> bool
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 330
      start: 328
    functionDepth: 0
    functionLinenumber: 328
    functionLinenumberEnd: 330
    functionName: Capability::presign_write
    functionSourceFile: /src/opendal/bindings/nodejs/src/capability.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: pub fn presign_write(&self) -> bool
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 336
      start: 334
    functionDepth: 0
    functionLinenumber: 334
    functionLinenumberEnd: 336
    functionName: Capability::presign_delete
    functionSourceFile: /src/opendal/bindings/nodejs/src/capability.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: pub fn presign_delete(&self) -> bool
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 342
      start: 340
    functionDepth: 0
    functionLinenumber: 340
    functionLinenumberEnd: 342
    functionName: Capability::shared
    functionSourceFile: /src/opendal/bindings/nodejs/src/capability.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: pub fn shared(&self) -> bool
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: anyhow::Result::mode
      Src: /src/opendal/bindings/dotnet/src/metadata.rs:41,1
    - Dst: anyhow::Result::last_modified
      Src: /src/opendal/bindings/dotnet/src/metadata.rs:48,1
    - Dst: Option::into_inner
      Src: /src/opendal/bindings/dotnet/src/metadata.rs:51,1
    - Dst: Arc::as_second
      Src: /src/opendal/bindings/dotnet/src/metadata.rs:51,1
    - Dst: Option::into_inner
      Src: /src/opendal/bindings/dotnet/src/metadata.rs:52,1
    - Dst: Arc::subsec_nanosecond
      Src: /src/opendal/bindings/dotnet/src/metadata.rs:52,1
    - Dst: anyhow::Result::content_length
      Src: /src/opendal/bindings/dotnet/src/metadata.rs:60,1
    - Dst: optional_string_to_ptr
      Src: /src/opendal/bindings/dotnet/src/metadata.rs:61,1
    - Dst: anyhow::Result::content_disposition
      Src: /src/opendal/bindings/dotnet/src/metadata.rs:61,1
    - Dst: optional_string_to_ptr
      Src: /src/opendal/bindings/dotnet/src/metadata.rs:62,1
    - Dst: anyhow::Result::content_md5
      Src: /src/opendal/bindings/dotnet/src/metadata.rs:62,1
    - Dst: optional_string_to_ptr
      Src: /src/opendal/bindings/dotnet/src/metadata.rs:63,1
    - Dst: anyhow::Result::content_type
      Src: /src/opendal/bindings/dotnet/src/metadata.rs:63,1
    - Dst: optional_string_to_ptr
      Src: /src/opendal/bindings/dotnet/src/metadata.rs:64,1
    - Dst: anyhow::Result::content_encoding
      Src: /src/opendal/bindings/dotnet/src/metadata.rs:64,1
    - Dst: optional_string_to_ptr
      Src: /src/opendal/bindings/dotnet/src/metadata.rs:65,1
    - Dst: anyhow::Result::cache_control
      Src: /src/opendal/bindings/dotnet/src/metadata.rs:65,1
    - Dst: optional_string_to_ptr
      Src: /src/opendal/bindings/dotnet/src/metadata.rs:66,1
    - Dst: anyhow::Result::etag
      Src: /src/opendal/bindings/dotnet/src/metadata.rs:66,1
    - Dst: optional_string_to_ptr
      Src: /src/opendal/bindings/dotnet/src/metadata.rs:70,1
    - Dst: anyhow::Result::version
      Src: /src/opendal/bindings/dotnet/src/metadata.rs:70,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 40
    argCount: 1
    argNames:
    - metadata
    argTypes:
    - opendal::Metadata
    constantsTouched: []
    func_position:
      end: 72
      start: 40
    functionDepth: 31
    functionLinenumber: 40
    functionLinenumberEnd: 72
    functionName: OpendalMetadata::from_metadata
    functionSourceFile: /src/opendal/bindings/dotnet/src/metadata.rs
    functionUses: 2
    functionsReached:
    - Arc::as_second
    - anyhow::Result::content_md5
    - anyhow::Result::content_length
    - anyhow::Result::content_disposition
    - anyhow::Result::content_encoding
    - anyhow::Result::mode
    - Arc::subsec_nanosecond
    - anyhow::Result::content_type
    - anyhow::Result::version
    - anyhow::Result::etag
    - optional_string_to_ptr
    - anyhow::Result::cache_control
    - Option::into_inner
    - anyhow::Result::last_modified
    linkageType: ''
    returnType: Self
    signature: 'pub fn from_metadata(metadata: opendal::Metadata) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Vec::map
      Src: /src/opendal/bindings/dotnet/src/metadata.rs:79,1
    - Dst: utils::into_string_ptr
      Src: /src/opendal/bindings/dotnet/src/metadata.rs:80,1
    - Dst: Result::to_string
      Src: /src/opendal/bindings/dotnet/src/metadata.rs:80,1
    - Dst: Result::unwrap_or
      Src: /src/opendal/bindings/dotnet/src/metadata.rs:79,1
    - Dst: std::ptr::null_mut
      Src: /src/opendal/bindings/dotnet/src/metadata.rs:81,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 1
    argNames:
    - value
    argTypes:
    - Option<&str>
    constantsTouched: []
    func_position:
      end: 82
      start: 78
    functionDepth: 30
    functionLinenumber: 78
    functionLinenumberEnd: 82
    functionName: optional_string_to_ptr
    functionSourceFile: /src/opendal/bindings/dotnet/src/metadata.rs
    functionUses: 1
    functionsReached:
    - utils::into_string_ptr
    - Result::to_string
    - std::ptr::null_mut
    - Vec::map
    - Result::unwrap_or
    linkageType: ''
    returnType: '*mut c_char'
    signature: 'fn optional_string_to_ptr(value: Option<&str>) -> *mut c_char'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: anyhow::Result::is_null
      Src: /src/opendal/bindings/dotnet/src/metadata.rs:90,1
    - Dst: Box::from_raw
      Src: /src/opendal/bindings/dotnet/src/metadata.rs:95,1
    - Dst: is_null
      Src: /src/opendal/bindings/dotnet/src/metadata.rs:96,1
    - Dst: drop
      Src: /src/opendal/bindings/dotnet/src/metadata.rs:97,1
    - Dst: std::ffi::CString::from_raw
      Src: /src/opendal/bindings/dotnet/src/metadata.rs:97,1
    - Dst: is_null
      Src: /src/opendal/bindings/dotnet/src/metadata.rs:99,1
    - Dst: drop
      Src: /src/opendal/bindings/dotnet/src/metadata.rs:100,1
    - Dst: std::ffi::CString::from_raw
      Src: /src/opendal/bindings/dotnet/src/metadata.rs:100,1
    - Dst: is_null
      Src: /src/opendal/bindings/dotnet/src/metadata.rs:102,1
    - Dst: drop
      Src: /src/opendal/bindings/dotnet/src/metadata.rs:103,1
    - Dst: std::ffi::CString::from_raw
      Src: /src/opendal/bindings/dotnet/src/metadata.rs:103,1
    - Dst: is_null
      Src: /src/opendal/bindings/dotnet/src/metadata.rs:105,1
    - Dst: drop
      Src: /src/opendal/bindings/dotnet/src/metadata.rs:106,1
    - Dst: std::ffi::CString::from_raw
      Src: /src/opendal/bindings/dotnet/src/metadata.rs:106,1
    - Dst: is_null
      Src: /src/opendal/bindings/dotnet/src/metadata.rs:108,1
    - Dst: drop
      Src: /src/opendal/bindings/dotnet/src/metadata.rs:109,1
    - Dst: std::ffi::CString::from_raw
      Src: /src/opendal/bindings/dotnet/src/metadata.rs:109,1
    - Dst: is_null
      Src: /src/opendal/bindings/dotnet/src/metadata.rs:111,1
    - Dst: drop
      Src: /src/opendal/bindings/dotnet/src/metadata.rs:112,1
    - Dst: std::ffi::CString::from_raw
      Src: /src/opendal/bindings/dotnet/src/metadata.rs:112,1
    - Dst: is_null
      Src: /src/opendal/bindings/dotnet/src/metadata.rs:114,1
    - Dst: drop
      Src: /src/opendal/bindings/dotnet/src/metadata.rs:115,1
    - Dst: std::ffi::CString::from_raw
      Src: /src/opendal/bindings/dotnet/src/metadata.rs:115,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 78
    argCount: 1
    argNames:
    - metadata
    argTypes:
    - '*mut OpendalMetadata'
    constantsTouched: []
    func_position:
      end: 118
      start: 89
    functionDepth: 33
    functionLinenumber: 89
    functionLinenumberEnd: 118
    functionName: metadata_free
    functionSourceFile: /src/opendal/bindings/dotnet/src/metadata.rs
    functionUses: 2
    functionsReached:
    - Box::from_raw
    - drop
    - anyhow::Result::is_null
    - std::ffi::CString::from_raw
    - is_null
    linkageType: ''
    returnType: void
    signature: 'pub unsafe extern "C" fn metadata_free(metadata: *mut OpendalMetadata)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: block_on
      Src: /src/opendal/bindings/dotnet/src/executor.rs:66,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - future
    argTypes:
    - F
    constantsTouched: []
    func_position:
      end: 67
      start: 65
    functionDepth: 1
    functionLinenumber: 65
    functionLinenumberEnd: 67
    functionName: Executor::block_on
    functionSourceFile: /src/opendal/bindings/dotnet/src/executor.rs
    functionUses: 0
    functionsReached:
    - block_on
    linkageType: ''
    returnType: F::Output
    signature: 'pub fn block_on<F: Future>(&self, future: F) -> F::Output'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: enter
      Src: /src/opendal/bindings/dotnet/src/executor.rs:78,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 79
      start: 77
    functionDepth: 1
    functionLinenumber: 77
    functionLinenumberEnd: 79
    functionName: Executor::enter
    functionSourceFile: /src/opendal/bindings/dotnet/src/executor.rs
    functionUses: 0
    functionsReached:
    - enter
    linkageType: ''
    returnType: tokio::runtime::EnterGuard
    signature: pub fn enter(&self) -> tokio::runtime::EnterGuard<'_>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Executor::new
      Src: /src/opendal/bindings/dotnet/src/executor.rs:123,1
    - Dst: fetch_add
      Src: /src/opendal/bindings/dotnet/src/executor.rs:125,1
    - Dst: lock
      Src: /src/opendal/bindings/dotnet/src/executor.rs:126,1
    - Dst: insert
      Src: /src/opendal/bindings/dotnet/src/executor.rs:128,1
    - Dst: Arc::new
      Src: /src/opendal/bindings/dotnet/src/executor.rs:128,1
    - Dst: OpendalExecutorResult::ok
      Src: /src/opendal/bindings/dotnet/src/executor.rs:129,1
    - Dst: OpendalExecutorResult::from_error
      Src: /src/opendal/bindings/dotnet/src/executor.rs:131,1
    - Dst: utils::config_invalid_error
      Src: /src/opendal/bindings/dotnet/src/executor.rs:131,1
    - Dst: OpendalExecutorResult::from_error
      Src: /src/opendal/bindings/dotnet/src/executor.rs:136,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 18
    argCount: 1
    argNames:
    - threads
    argTypes:
    - usize
    constantsTouched: []
    func_position:
      end: 138
      start: 122
    functionDepth: 33
    functionLinenumber: 122
    functionLinenumberEnd: 138
    functionName: executor_create
    functionSourceFile: /src/opendal/bindings/dotnet/src/executor.rs
    functionUses: 0
    functionsReached:
    - insert
    - fetch_add
    - lock
    - Arc::new
    - Executor::new
    - utils::config_invalid_error
    - OpendalExecutorResult::from_error
    - OpendalExecutorResult::ok
    linkageType: ''
    returnType: OpendalExecutorResult
    signature: 'pub extern "C" fn executor_create(threads: usize) -> OpendalExecutorResult'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self::is_null
      Src: /src/opendal/bindings/dotnet/src/executor.rs:147,1
    - Dst: lock
      Src: /src/opendal/bindings/dotnet/src/executor.rs:151,1
    - Dst: remove
      Src: /src/opendal/bindings/dotnet/src/executor.rs:152,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 16
    argCount: 1
    argNames:
    - executor
    argTypes:
    - '*mut c_void'
    constantsTouched: []
    func_position:
      end: 154
      start: 146
    functionDepth: 33
    functionLinenumber: 146
    functionLinenumberEnd: 154
    functionName: executor_free
    functionSourceFile: /src/opendal/bindings/dotnet/src/executor.rs
    functionUses: 0
    functionsReached:
    - remove
    - Self::is_null
    - lock
    linkageType: ''
    returnType: void
    signature: 'pub unsafe extern "C" fn executor_free(executor: *mut c_void)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Vec::is_null
      Src: /src/opendal/bindings/dotnet/src/utils.rs:24,1
    - Dst: std::ffi::CStr::from_ptr
      Src: /src/opendal/bindings/dotnet/src/utils.rs:28,1
    - Dst: Option::to_str
      Src: /src/opendal/bindings/dotnet/src/utils.rs:29,1
    - Dst: Result::ok
      Src: /src/opendal/bindings/dotnet/src/utils.rs:29,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 1
    argNames:
    - value
    argTypes:
    - '*const c_char'
    constantsTouched: []
    func_position:
      end: 30
      start: 23
    functionDepth: 38
    functionLinenumber: 23
    functionLinenumberEnd: 30
    functionName: cstr_to_str
    functionSourceFile: /src/opendal/bindings/dotnet/src/utils.rs
    functionUses: 1
    functionsReached:
    - std::ffi::CStr::from_ptr
    - Vec::is_null
    - Result::ok
    - Option::to_str
    linkageType: ''
    returnType: Option
    signature: 'pub fn cstr_to_str<''a>(value: *const c_char) -> Option<&''a str>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: OpenDALError::from_error
      Src: /src/opendal/bindings/dotnet/src/utils.rs:33,1
    - Dst: '&str::into'
      Src: /src/opendal/bindings/dotnet/src/utils.rs:33,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - message
    argTypes:
    - impl Into<String>
    constantsTouched: []
    func_position:
      end: 34
      start: 32
    functionDepth: 31
    functionLinenumber: 32
    functionLinenumberEnd: 34
    functionName: config_invalid_error
    functionSourceFile: /src/opendal/bindings/dotnet/src/utils.rs
    functionUses: 20
    functionsReached:
    - OpenDALError::from_error
    - '&str::into'
    linkageType: ''
    returnType: OpenDALError
    signature: 'pub fn config_invalid_error(message: impl Into<String>) -> OpenDALError'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 1
    argNames:
    - field
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 38
      start: 36
    functionDepth: 0
    functionLinenumber: 36
    functionLinenumberEnd: 38
    functionName: invalid_utf8_message
    functionSourceFile: /src/opendal/bindings/dotnet/src/utils.rs
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: String
    signature: 'pub fn invalid_utf8_message(field: &str) -> String'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 2
    argNames:
    - field
    - index
    argTypes:
    - '&str'
    - usize
    constantsTouched: []
    func_position:
      end: 42
      start: 40
    functionDepth: 0
    functionLinenumber: 40
    functionLinenumberEnd: 42
    functionName: invalid_utf8_message_at
    functionSourceFile: /src/opendal/bindings/dotnet/src/utils.rs
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: String
    signature: 'pub fn invalid_utf8_message_at(field: &str, index: usize) -> String'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: cstr_to_str
      Src: /src/opendal/bindings/dotnet/src/utils.rs:45,1
    - Dst: Option::ok_or_else
      Src: /src/opendal/bindings/dotnet/src/utils.rs:45,1
    - Dst: OpenDALError::from_error
      Src: /src/opendal/bindings/dotnet/src/utils.rs:46,1
    - Dst: invalid_utf8_message
      Src: /src/opendal/bindings/dotnet/src/utils.rs:46,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - value
    - field
    argTypes:
    - '*const c_char'
    - '&str'
    constantsTouched: []
    func_position:
      end: 48
      start: 44
    functionDepth: 39
    functionLinenumber: 44
    functionLinenumberEnd: 48
    functionName: require_cstr
    functionSourceFile: /src/opendal/bindings/dotnet/src/utils.rs
    functionUses: 26
    functionsReached:
    - Option::ok_or_else
    - OpenDALError::from_error
    - invalid_utf8_message
    - cstr_to_str
    linkageType: ''
    returnType: Result
    signature: 'pub fn require_cstr<''a>(value: *const c_char, field: &str) -> Result<&''a
      str, OpenDALError>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: is_null
      Src: /src/opendal/bindings/dotnet/src/utils.rs:53,1
    - Dst: Err
      Src: /src/opendal/bindings/dotnet/src/utils.rs:54,1
    - Dst: config_invalid_error
      Src: /src/opendal/bindings/dotnet/src/utils.rs:54,1
    - Dst: Ok
      Src: /src/opendal/bindings/dotnet/src/utils.rs:57,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 1
    argNames:
    - op
    argTypes:
    - '*const opendal::Operator'
    constantsTouched: []
    func_position:
      end: 58
      start: 50
    functionDepth: 32
    functionLinenumber: 50
    functionLinenumberEnd: 58
    functionName: require_operator
    functionSourceFile: /src/opendal/bindings/dotnet/src/utils.rs
    functionUses: 30
    functionsReached:
    - config_invalid_error
    - is_null
    - Ok
    - Err
    linkageType: ''
    returnType: Result
    signature: 'pub fn require_operator<''a>(op: *const opendal::Operator,) -> Result<&''a
      opendal::Operator, OpenDALError>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::ok_or_else
      Src: /src/opendal/bindings/dotnet/src/utils.rs:61,1
    - Dst: config_invalid_error
      Src: /src/opendal/bindings/dotnet/src/utils.rs:61,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - callback
    argTypes:
    - Option<T>
    constantsTouched: []
    func_position:
      end: 62
      start: 60
    functionDepth: 32
    functionLinenumber: 60
    functionLinenumberEnd: 62
    functionName: require_callback
    functionSourceFile: /src/opendal/bindings/dotnet/src/utils.rs
    functionUses: 13
    functionsReached:
    - config_invalid_error
    - Result::ok_or_else
    linkageType: ''
    returnType: Result
    signature: 'pub fn require_callback<T>(callback: Option<T>) -> Result<T, OpenDALError>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: anyhow::Result::is_null
      Src: /src/opendal/bindings/dotnet/src/utils.rs:65,1
    - Dst: Err
      Src: /src/opendal/bindings/dotnet/src/utils.rs:66,1
    - Dst: config_invalid_error
      Src: /src/opendal/bindings/dotnet/src/utils.rs:66,1
    - Dst: Ok
      Src: /src/opendal/bindings/dotnet/src/utils.rs:69,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 2
    argNames:
    - data
    - len
    argTypes:
    - '*const u8'
    - usize
    constantsTouched: []
    func_position:
      end: 70
      start: 64
    functionDepth: 32
    functionLinenumber: 64
    functionLinenumberEnd: 70
    functionName: require_data_ptr
    functionSourceFile: /src/opendal/bindings/dotnet/src/utils.rs
    functionUses: 3
    functionsReached:
    - config_invalid_error
    - anyhow::Result::is_null
    - Ok
    - Err
    linkageType: ''
    returnType: Result
    signature: 'pub fn require_data_ptr(data: *const u8, len: usize) -> Result<(),
      OpenDALError>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/bindings/dotnet/src/utils.rs:83,1
    - Dst: HashMap::new
      Src: /src/opendal/bindings/dotnet/src/utils.rs:83,1
    - Dst: is_null
      Src: /src/opendal/bindings/dotnet/src/utils.rs:86,1
    - Dst: Err
      Src: /src/opendal/bindings/dotnet/src/utils.rs:87,1
    - Dst: config_invalid_error
      Src: /src/opendal/bindings/dotnet/src/utils.rs:87,1
    - Dst: Vec::is_null
      Src: /src/opendal/bindings/dotnet/src/utils.rs:90,1
    - Dst: Err
      Src: /src/opendal/bindings/dotnet/src/utils.rs:91,1
    - Dst: config_invalid_error
      Src: /src/opendal/bindings/dotnet/src/utils.rs:91,1
    - Dst: HashMap::with_capacity
      Src: /src/opendal/bindings/dotnet/src/utils.rs:94,1
    - Dst: add
      Src: /src/opendal/bindings/dotnet/src/utils.rs:96,1
    - Dst: Vec::add
      Src: /src/opendal/bindings/dotnet/src/utils.rs:97,1
    - Dst: is_null
      Src: /src/opendal/bindings/dotnet/src/utils.rs:99,1
    - Dst: Err
      Src: /src/opendal/bindings/dotnet/src/utils.rs:100,1
    - Dst: config_invalid_error
      Src: /src/opendal/bindings/dotnet/src/utils.rs:100,1
    - Dst: invalid_utf8_message_at
      Src: /src/opendal/bindings/dotnet/src/utils.rs:100,1
    - Dst: is_null
      Src: /src/opendal/bindings/dotnet/src/utils.rs:102,1
    - Dst: Err
      Src: /src/opendal/bindings/dotnet/src/utils.rs:103,1
    - Dst: config_invalid_error
      Src: /src/opendal/bindings/dotnet/src/utils.rs:103,1
    - Dst: invalid_utf8_message_at
      Src: /src/opendal/bindings/dotnet/src/utils.rs:103,1
    - Dst: CStr::from_ptr
      Src: /src/opendal/bindings/dotnet/src/utils.rs:108,1
    - Dst: to_str
      Src: /src/opendal/bindings/dotnet/src/utils.rs:108,1
    - Dst: map_err
      Src: /src/opendal/bindings/dotnet/src/utils.rs:108,1
    - Dst: config_invalid_error
      Src: /src/opendal/bindings/dotnet/src/utils.rs:110,1
    - Dst: invalid_utf8_message_at
      Src: /src/opendal/bindings/dotnet/src/utils.rs:110,1
    - Dst: CStr::from_ptr
      Src: /src/opendal/bindings/dotnet/src/utils.rs:111,1
    - Dst: to_str
      Src: /src/opendal/bindings/dotnet/src/utils.rs:111,1
    - Dst: map_err
      Src: /src/opendal/bindings/dotnet/src/utils.rs:111,1
    - Dst: config_invalid_error
      Src: /src/opendal/bindings/dotnet/src/utils.rs:113,1
    - Dst: invalid_utf8_message_at
      Src: /src/opendal/bindings/dotnet/src/utils.rs:113,1
    - Dst: Result::insert
      Src: /src/opendal/bindings/dotnet/src/utils.rs:115,1
    - Dst: FoyerKey::to_string
      Src: /src/opendal/bindings/dotnet/src/utils.rs:115,1
    - Dst: Vec::to_string
      Src: /src/opendal/bindings/dotnet/src/utils.rs:115,1
    - Dst: Ok
      Src: /src/opendal/bindings/dotnet/src/utils.rs:118,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 77
    argCount: 3
    argNames:
    - keys
    - values
    - len
    argTypes:
    - '*const *const c_char'
    - '*const *const c_char'
    - usize
    constantsTouched: []
    func_position:
      end: 119
      start: 77
    functionDepth: 32
    functionLinenumber: 77
    functionLinenumberEnd: 119
    functionName: collect_options
    functionSourceFile: /src/opendal/bindings/dotnet/src/utils.rs
    functionUses: 5
    functionsReached:
    - map_err
    - config_invalid_error
    - to_str
    - Ok
    - invalid_utf8_message_at
    - Result::insert
    - Err
    - CStr::from_ptr
    - FoyerKey::to_string
    - Vec::is_null
    - Vec::add
    - Vec::to_string
    - HashMap::with_capacity
    - is_null
    - HashMap::new
    - add
    linkageType: ''
    returnType: Result
    signature: 'pub unsafe fn collect_options(keys: *const *const c_char,values: *const
      *const c_char,len: usize,) -> Result<HashMap<String, String>, OpenDALError>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: std::ffi::CString::new
      Src: /src/opendal/bindings/dotnet/src/utils.rs:122,1
    - Dst: '&str::into'
      Src: /src/opendal/bindings/dotnet/src/utils.rs:122,1
    - Dst: Error::into_raw
      Src: /src/opendal/bindings/dotnet/src/utils.rs:123,1
    - Dst: std::ffi::CString::new
      Src: /src/opendal/bindings/dotnet/src/utils.rs:124,1
    - Dst: Self::unwrap
      Src: /src/opendal/bindings/dotnet/src/utils.rs:124,1
    - Dst: T::into_raw
      Src: /src/opendal/bindings/dotnet/src/utils.rs:124,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 1
    argNames:
    - message
    argTypes:
    - impl Into<String>
    constantsTouched: []
    func_position:
      end: 128
      start: 121
    functionDepth: 29
    functionLinenumber: 121
    functionLinenumberEnd: 128
    functionName: into_string_ptr
    functionSourceFile: /src/opendal/bindings/dotnet/src/utils.rs
    functionUses: 5
    functionsReached:
    - Self::unwrap
    - Error::into_raw
    - std::ffi::CString::new
    - T::into_raw
    - '&str::into'
    linkageType: ''
    returnType: '*mut c_char'
    signature: 'pub fn into_string_ptr(message: impl Into<String>) -> *mut c_char'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: OpenDALError::ok
      Src: /src/opendal/bindings/dotnet/src/result.rs:6,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 125
      start: 89
    functionDepth: 1
    functionLinenumber: 89
    functionLinenumberEnd: 125
    functionName: define_result
    functionSourceFile: /src/opendal/bindings/dotnet/src/result.rs
    functionUses: 0
    functionsReached:
    - OpenDALError::ok
    linkageType: ''
    returnType: ''
    signature: ''
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: is_null
      Src: /src/opendal/bindings/dotnet/src/result.rs:178,1
    - Dst: drop
      Src: /src/opendal/bindings/dotnet/src/result.rs:183,1
    - Dst: std::ffi::CString::from_raw
      Src: /src/opendal/bindings/dotnet/src/result.rs:183,1
    - Dst: std::ptr::null_mut
      Src: /src/opendal/bindings/dotnet/src/result.rs:185,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 16
    argCount: 1
    argNames:
    - error
    argTypes:
    - '&mut OpenDALError'
    constantsTouched: []
    func_position:
      end: 186
      start: 177
    functionDepth: 33
    functionLinenumber: 177
    functionLinenumberEnd: 186
    functionName: release_error_message
    functionSourceFile: /src/opendal/bindings/dotnet/src/result.rs
    functionUses: 6
    functionsReached:
    - drop
    - is_null
    - std::ffi::CString::from_raw
    - std::ptr::null_mut
    linkageType: ''
    returnType: void
    signature: 'fn release_error_message(error: &mut OpenDALError)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: release_error_message
      Src: /src/opendal/bindings/dotnet/src/result.rs:194,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - error
    argTypes:
    - OpenDALError
    constantsTouched: []
    func_position:
      end: 195
      start: 193
    functionDepth: 34
    functionLinenumber: 193
    functionLinenumberEnd: 195
    functionName: opendal_error_release
    functionSourceFile: /src/opendal/bindings/dotnet/src/result.rs
    functionUses: 0
    functionsReached:
    - release_error_message
    linkageType: ''
    returnType: void
    signature: 'pub extern "C" fn opendal_error_release(mut error: OpenDALError)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: is_null
      Src: /src/opendal/bindings/dotnet/src/result.rs:206,1
    - Dst: operator::operator_info_free
      Src: /src/opendal/bindings/dotnet/src/result.rs:208,1
    - Dst: cast
      Src: /src/opendal/bindings/dotnet/src/result.rs:208,1
    - Dst: release_error_message
      Src: /src/opendal/bindings/dotnet/src/result.rs:212,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 16
    argCount: 1
    argNames:
    - result
    argTypes:
    - OpendalOperatorInfoResult
    constantsTouched: []
    func_position:
      end: 213
      start: 205
    functionDepth: 34
    functionLinenumber: 205
    functionLinenumberEnd: 213
    functionName: opendal_operator_info_result_release
    functionSourceFile: /src/opendal/bindings/dotnet/src/result.rs
    functionUses: 0
    functionsReached:
    - release_error_message
    - operator::operator_info_free
    - is_null
    - cast
    linkageType: ''
    returnType: void
    signature: 'pub extern "C" fn opendal_operator_info_result_release(mut result:
      OpendalOperatorInfoResult)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: is_null
      Src: /src/opendal/bindings/dotnet/src/result.rs:225,1
    - Dst: metadata::metadata_free
      Src: /src/opendal/bindings/dotnet/src/result.rs:227,1
    - Dst: cast
      Src: /src/opendal/bindings/dotnet/src/result.rs:227,1
    - Dst: release_error_message
      Src: /src/opendal/bindings/dotnet/src/result.rs:231,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 16
    argCount: 1
    argNames:
    - result
    argTypes:
    - OpendalMetadataResult
    constantsTouched: []
    func_position:
      end: 232
      start: 224
    functionDepth: 34
    functionLinenumber: 224
    functionLinenumberEnd: 232
    functionName: opendal_metadata_result_release
    functionSourceFile: /src/opendal/bindings/dotnet/src/result.rs
    functionUses: 0
    functionsReached:
    - release_error_message
    - is_null
    - metadata::metadata_free
    - cast
    linkageType: ''
    returnType: void
    signature: 'pub extern "C" fn opendal_metadata_result_release(mut result: OpendalMetadataResult)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: is_null
      Src: /src/opendal/bindings/dotnet/src/result.rs:244,1
    - Dst: entry::entry_list_free
      Src: /src/opendal/bindings/dotnet/src/result.rs:246,1
    - Dst: cast
      Src: /src/opendal/bindings/dotnet/src/result.rs:246,1
    - Dst: release_error_message
      Src: /src/opendal/bindings/dotnet/src/result.rs:250,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 16
    argCount: 1
    argNames:
    - result
    argTypes:
    - OpendalEntryListResult
    constantsTouched: []
    func_position:
      end: 251
      start: 243
    functionDepth: 35
    functionLinenumber: 243
    functionLinenumberEnd: 251
    functionName: opendal_entry_list_result_release
    functionSourceFile: /src/opendal/bindings/dotnet/src/result.rs
    functionUses: 0
    functionsReached:
    - release_error_message
    - is_null
    - entry::entry_list_free
    - cast
    linkageType: ''
    returnType: void
    signature: 'pub extern "C" fn opendal_entry_list_result_release(mut result: OpendalEntryListResult)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: is_null
      Src: /src/opendal/bindings/dotnet/src/result.rs:262,1
    - Dst: byte_buffer::buffer_free
      Src: /src/opendal/bindings/dotnet/src/result.rs:264,1
    - Dst: release_error_message
      Src: /src/opendal/bindings/dotnet/src/result.rs:272,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 20
    argCount: 1
    argNames:
    - result
    argTypes:
    - OpendalReadResult
    constantsTouched: []
    func_position:
      end: 273
      start: 261
    functionDepth: 34
    functionLinenumber: 261
    functionLinenumberEnd: 273
    functionName: opendal_read_result_release
    functionSourceFile: /src/opendal/bindings/dotnet/src/result.rs
    functionUses: 0
    functionsReached:
    - release_error_message
    - is_null
    - byte_buffer::buffer_free
    linkageType: ''
    returnType: void
    signature: 'pub extern "C" fn opendal_read_result_release(mut result: OpendalReadResult)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: is_null
      Src: /src/opendal/bindings/dotnet/src/result.rs:287,1
    - Dst: presign::presigned_request_free
      Src: /src/opendal/bindings/dotnet/src/result.rs:289,1
    - Dst: cast
      Src: /src/opendal/bindings/dotnet/src/result.rs:289,1
    - Dst: release_error_message
      Src: /src/opendal/bindings/dotnet/src/result.rs:293,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 16
    argCount: 1
    argNames:
    - result
    argTypes:
    - OpendalPresignedRequestResult
    constantsTouched: []
    func_position:
      end: 294
      start: 284
    functionDepth: 34
    functionLinenumber: 284
    functionLinenumberEnd: 294
    functionName: opendal_presigned_request_result_release
    functionSourceFile: /src/opendal/bindings/dotnet/src/result.rs
    functionUses: 0
    functionsReached:
    - presign::presigned_request_free
    - release_error_message
    - is_null
    - cast
    linkageType: ''
    returnType: void
    signature: 'pub extern "C" fn opendal_presigned_request_result_release(mut result:
      OpendalPresignedRequestResult,)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: std::ptr::null_mut
      Src: /src/opendal/bindings/dotnet/src/byte_buffer.rs:36,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 40
      start: 34
    functionDepth: 0
    functionLinenumber: 34
    functionLinenumberEnd: 40
    functionName: ByteBuffer::empty
    functionSourceFile: /src/opendal/bindings/dotnet/src/byte_buffer.rs
    functionUses: 0
    functionsReached:
    - std::ptr::null_mut
    linkageType: ''
    returnType: Self
    signature: pub fn empty() -> Self
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Vec::is_empty
      Src: /src/opendal/bindings/dotnet/src/byte_buffer.rs:47,1
    - Dst: Self::empty
      Src: /src/opendal/bindings/dotnet/src/byte_buffer.rs:48,1
    - Dst: Vec::as_mut_ptr
      Src: /src/opendal/bindings/dotnet/src/byte_buffer.rs:51,1
    - Dst: Vec::len
      Src: /src/opendal/bindings/dotnet/src/byte_buffer.rs:52,1
    - Dst: Vec::capacity
      Src: /src/opendal/bindings/dotnet/src/byte_buffer.rs:53,1
    - Dst: std::mem::forget
      Src: /src/opendal/bindings/dotnet/src/byte_buffer.rs:54,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 16
    argCount: 1
    argNames:
    - value
    argTypes:
    - Vec<u8>
    constantsTouched: []
    func_position:
      end: 61
      start: 46
    functionDepth: 32
    functionLinenumber: 46
    functionLinenumberEnd: 61
    functionName: ByteBuffer::from_vec
    functionSourceFile: /src/opendal/bindings/dotnet/src/byte_buffer.rs
    functionUses: 3
    functionsReached:
    - std::mem::forget
    - Vec::capacity
    - Self::empty
    - Vec::is_empty
    - Vec::as_mut_ptr
    - Vec::len
    linkageType: ''
    returnType: Self
    signature: 'pub fn from_vec(mut value: Vec<u8>) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: anyhow::Result::is_null
      Src: /src/opendal/bindings/dotnet/src/byte_buffer.rs:70,1
    - Dst: drop
      Src: /src/opendal/bindings/dotnet/src/byte_buffer.rs:93,1
    - Dst: Vec::from_raw_parts
      Src: /src/opendal/bindings/dotnet/src/byte_buffer.rs:93,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 24
    argCount: 3
    argNames:
    - data
    - len
    - capacity
    argTypes:
    - '*mut u8'
    - usize
    - usize
    constantsTouched: []
    func_position:
      end: 95
      start: 69
    functionDepth: 33
    functionLinenumber: 69
    functionLinenumberEnd: 95
    functionName: buffer_free
    functionSourceFile: /src/opendal/bindings/dotnet/src/byte_buffer.rs
    functionUses: 1
    functionsReached:
    - Vec::from_raw_parts
    - anyhow::Result::is_null
    - drop
    linkageType: ''
    returnType: void
    signature: 'pub unsafe fn buffer_free(data: *mut u8, len: usize, capacity: usize)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: utils::into_string_ptr
      Src: /src/opendal/bindings/dotnet/src/presign.rs:35,1
    - Dst: http::Request::method
      Src: /src/opendal/bindings/dotnet/src/presign.rs:35,1
    - Dst: '&str::as_str'
      Src: /src/opendal/bindings/dotnet/src/presign.rs:35,1
    - Dst: '&''static str::to_string'
      Src: /src/opendal/bindings/dotnet/src/presign.rs:35,1
    - Dst: utils::into_string_ptr
      Src: /src/opendal/bindings/dotnet/src/presign.rs:36,1
    - Dst: http::Request::uri
      Src: /src/opendal/bindings/dotnet/src/presign.rs:36,1
    - Dst: '&http::Uri::to_string'
      Src: /src/opendal/bindings/dotnet/src/presign.rs:36,1
    - Dst: Vec::new
      Src: /src/opendal/bindings/dotnet/src/presign.rs:38,1
    - Dst: Vec::new
      Src: /src/opendal/bindings/dotnet/src/presign.rs:39,1
    - Dst: http::Request::header
      Src: /src/opendal/bindings/dotnet/src/presign.rs:41,1
    - Dst: Vec::to_str
      Src: /src/opendal/bindings/dotnet/src/presign.rs:42,1
    - Dst: Result::map_err
      Src: /src/opendal/bindings/dotnet/src/presign.rs:42,1
    - Dst: OpenDALError::from_opendal_error
      Src: /src/opendal/bindings/dotnet/src/presign.rs:45,1
    - Dst: opendal::Error::new
      Src: /src/opendal/bindings/dotnet/src/presign.rs:45,1
    - Dst: Error::to_string
      Src: /src/opendal/bindings/dotnet/src/presign.rs:47,1
    - Dst: to_string
      Src: /src/opendal/bindings/dotnet/src/presign.rs:42,1
    - Dst: push
      Src: /src/opendal/bindings/dotnet/src/presign.rs:52,1
    - Dst: utils::into_string_ptr
      Src: /src/opendal/bindings/dotnet/src/presign.rs:52,1
    - Dst: FoyerKey::to_string
      Src: /src/opendal/bindings/dotnet/src/presign.rs:52,1
    - Dst: Vec::push
      Src: /src/opendal/bindings/dotnet/src/presign.rs:53,1
    - Dst: utils::into_string_ptr
      Src: /src/opendal/bindings/dotnet/src/presign.rs:53,1
    - Dst: len
      Src: /src/opendal/bindings/dotnet/src/presign.rs:56,1
    - Dst: std::ptr::null_mut
      Src: /src/opendal/bindings/dotnet/src/presign.rs:58,1
    - Dst: std::ptr::null_mut
      Src: /src/opendal/bindings/dotnet/src/presign.rs:58,1
    - Dst: as_mut_ptr
      Src: /src/opendal/bindings/dotnet/src/presign.rs:62,1
    - Dst: Vec::as_mut_ptr
      Src: /src/opendal/bindings/dotnet/src/presign.rs:63,1
    - Dst: std::mem::forget
      Src: /src/opendal/bindings/dotnet/src/presign.rs:64,1
    - Dst: std::mem::forget
      Src: /src/opendal/bindings/dotnet/src/presign.rs:65,1
    - Dst: Ok
      Src: /src/opendal/bindings/dotnet/src/presign.rs:78,1
    - Dst: Box::into_raw
      Src: /src/opendal/bindings/dotnet/src/presign.rs:78,1
    - Dst: Box::new
      Src: /src/opendal/bindings/dotnet/src/presign.rs:78,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 61
    argCount: 1
    argNames:
    - request
    argTypes:
    - opendal::raw::PresignedRequest
    constantsTouched: []
    func_position:
      end: 79
      start: 32
    functionDepth: 30
    functionLinenumber: 32
    functionLinenumberEnd: 79
    functionName: into_presigned_request_ptr
    functionSourceFile: /src/opendal/bindings/dotnet/src/presign.rs
    functionUses: 0
    functionsReached:
    - utils::into_string_ptr
    - push
    - Vec::to_str
    - Vec::push
    - Box::new
    - Error::to_string
    - http::Request::method
    - Vec::new
    - Ok
    - OpenDALError::from_opendal_error
    - FoyerKey::to_string
    - len
    - Vec::as_mut_ptr
    - '&http::Uri::to_string'
    - Result::map_err
    - http::Request::uri
    - as_mut_ptr
    - to_string
    - std::mem::forget
    - opendal::Error::new
    - std::ptr::null_mut
    - http::Request::header
    - '&str::as_str'
    - '&''static str::to_string'
    - Box::into_raw
    linkageType: ''
    returnType: Result
    signature: 'pub fn into_presigned_request_ptr(request: opendal::raw::PresignedRequest,)
      -> Result<*mut c_void, OpenDALError>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: http::Request::is_null
      Src: /src/opendal/bindings/dotnet/src/presign.rs:87,1
    - Dst: Box::from_raw
      Src: /src/opendal/bindings/dotnet/src/presign.rs:92,1
    - Dst: is_null
      Src: /src/opendal/bindings/dotnet/src/presign.rs:94,1
    - Dst: drop
      Src: /src/opendal/bindings/dotnet/src/presign.rs:95,1
    - Dst: std::ffi::CString::from_raw
      Src: /src/opendal/bindings/dotnet/src/presign.rs:95,1
    - Dst: is_null
      Src: /src/opendal/bindings/dotnet/src/presign.rs:97,1
    - Dst: drop
      Src: /src/opendal/bindings/dotnet/src/presign.rs:98,1
    - Dst: std::ffi::CString::from_raw
      Src: /src/opendal/bindings/dotnet/src/presign.rs:98,1
    - Dst: is_null
      Src: /src/opendal/bindings/dotnet/src/presign.rs:102,1
    - Dst: Vec::from_raw_parts
      Src: /src/opendal/bindings/dotnet/src/presign.rs:103,1
    - Dst: FoyerKey::is_null
      Src: /src/opendal/bindings/dotnet/src/presign.rs:109,1
    - Dst: drop
      Src: /src/opendal/bindings/dotnet/src/presign.rs:110,1
    - Dst: std::ffi::CString::from_raw
      Src: /src/opendal/bindings/dotnet/src/presign.rs:110,1
    - Dst: is_null
      Src: /src/opendal/bindings/dotnet/src/presign.rs:115,1
    - Dst: Vec::from_raw_parts
      Src: /src/opendal/bindings/dotnet/src/presign.rs:116,1
    - Dst: Vec::is_null
      Src: /src/opendal/bindings/dotnet/src/presign.rs:122,1
    - Dst: drop
      Src: /src/opendal/bindings/dotnet/src/presign.rs:123,1
    - Dst: std::ffi::CString::from_raw
      Src: /src/opendal/bindings/dotnet/src/presign.rs:123,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 72
    argCount: 1
    argNames:
    - request
    argTypes:
    - '*mut OpendalPresignedRequest'
    constantsTouched: []
    func_position:
      end: 129
      start: 86
    functionDepth: 33
    functionLinenumber: 86
    functionLinenumberEnd: 129
    functionName: presigned_request_free
    functionSourceFile: /src/opendal/bindings/dotnet/src/presign.rs
    functionUses: 1
    functionsReached:
    - drop
    - Box::from_raw
    - FoyerKey::is_null
    - Vec::from_raw_parts
    - Vec::is_null
    - http::Request::is_null
    - is_null
    - std::ffi::CString::from_raw
    linkageType: ''
    returnType: void
    signature: 'pub unsafe extern "C" fn presigned_request_free(request: *mut OpendalPresignedRequest)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: std::ptr::null_mut
      Src: /src/opendal/bindings/dotnet/src/error.rs:41,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 43
      start: 37
    functionDepth: 0
    functionLinenumber: 37
    functionLinenumberEnd: 43
    functionName: OpenDALError::ok
    functionSourceFile: /src/opendal/bindings/dotnet/src/error.rs
    functionUses: 1
    functionsReached:
    - std::ptr::null_mut
    linkageType: ''
    returnType: Self
    signature: pub fn ok() -> Self
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: utils::into_string_ptr
      Src: /src/opendal/bindings/dotnet/src/error.rs:49,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - code
    - message
    argTypes:
    - ErrorCode
    - impl Into<String>
    constantsTouched: []
    func_position:
      end: 51
      start: 45
    functionDepth: 30
    functionLinenumber: 45
    functionLinenumberEnd: 51
    functionName: OpenDALError::from_error
    functionSourceFile: /src/opendal/bindings/dotnet/src/error.rs
    functionUses: 3
    functionsReached:
    - utils::into_string_ptr
    linkageType: ''
    returnType: Self
    signature: 'pub fn from_error(code: ErrorCode, message: impl Into<String>) ->
      Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: OpenDALError::from_error
      Src: /src/opendal/bindings/dotnet/src/error.rs:54,1
    - Dst: ErrorCode::from_error_kind
      Src: /src/opendal/bindings/dotnet/src/error.rs:54,1
    - Dst: Self::kind
      Src: /src/opendal/bindings/dotnet/src/error.rs:54,1
    - Dst: Self::to_string
      Src: /src/opendal/bindings/dotnet/src/error.rs:54,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - error
    argTypes:
    - opendal::Error
    constantsTouched: []
    func_position:
      end: 55
      start: 53
    functionDepth: 31
    functionLinenumber: 53
    functionLinenumberEnd: 55
    functionName: OpenDALError::from_opendal_error
    functionSourceFile: /src/opendal/bindings/dotnet/src/error.rs
    functionUses: 3
    functionsReached:
    - Self::to_string
    - Self::kind
    - OpenDALError::from_error
    - ErrorCode::from_error_kind
    linkageType: ''
    returnType: OpenDALError
    signature: 'pub fn from_opendal_error(error: opendal::Error) -> OpenDALError'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - kind
    argTypes:
    - ErrorKind
    constantsTouched: []
    func_position:
      end: 96
      start: 80
    functionDepth: 0
    functionLinenumber: 80
    functionLinenumberEnd: 96
    functionName: ErrorCode::from_error_kind
    functionSourceFile: /src/opendal/bindings/dotnet/src/error.rs
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: 'pub fn from_error_kind(kind: ErrorKind) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Vec::get
      Src: /src/opendal/bindings/dotnet/src/options.rs:29,1
    - Dst: Ok
      Src: /src/opendal/bindings/dotnet/src/options.rs:30,1
    - Dst: to_ascii_lowercase
      Src: /src/opendal/bindings/dotnet/src/options.rs:33,1
    - Dst: as_str
      Src: /src/opendal/bindings/dotnet/src/options.rs:33,1
    - Dst: Ok
      Src: /src/opendal/bindings/dotnet/src/options.rs:34,1
    - Dst: Some
      Src: /src/opendal/bindings/dotnet/src/options.rs:34,1
    - Dst: Ok
      Src: /src/opendal/bindings/dotnet/src/options.rs:35,1
    - Dst: Some
      Src: /src/opendal/bindings/dotnet/src/options.rs:35,1
    - Dst: Err
      Src: /src/opendal/bindings/dotnet/src/options.rs:36,1
    - Dst: crate::utils::config_invalid_error
      Src: /src/opendal/bindings/dotnet/src/options.rs:36,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 17
    argCount: 2
    argNames:
    - values
    - key
    argTypes:
    - '&HashMap<String, String>'
    - '&str'
    constantsTouched: []
    func_position:
      end: 40
      start: 28
    functionDepth: 2
    functionLinenumber: 28
    functionLinenumberEnd: 40
    functionName: parse_bool
    functionSourceFile: /src/opendal/bindings/dotnet/src/options.rs
    functionUses: 2
    functionsReached:
    - Vec::get
    - crate::utils::config_invalid_error
    - Ok
    - Some
    - to_ascii_lowercase
    - as_str
    - Err
    linkageType: ''
    returnType: Result
    signature: 'fn parse_bool(values: &HashMap<String, String>, key: &str) -> Result<Option<bool>,
      OpenDALError>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Vec::get
      Src: /src/opendal/bindings/dotnet/src/options.rs:43,1
    - Dst: Ok
      Src: /src/opendal/bindings/dotnet/src/options.rs:44,1
    - Dst: parse::<usize>
      Src: /src/opendal/bindings/dotnet/src/options.rs:47,1
    - Dst: map
      Src: /src/opendal/bindings/dotnet/src/options.rs:47,1
    - Dst: map_err
      Src: /src/opendal/bindings/dotnet/src/options.rs:47,1
    - Dst: crate::utils::config_invalid_error
      Src: /src/opendal/bindings/dotnet/src/options.rs:48,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 13
    argCount: 2
    argNames:
    - values
    - key
    argTypes:
    - '&HashMap<String, String>'
    - '&str'
    constantsTouched: []
    func_position:
      end: 50
      start: 42
    functionDepth: 2
    functionLinenumber: 42
    functionLinenumberEnd: 50
    functionName: parse_usize
    functionSourceFile: /src/opendal/bindings/dotnet/src/options.rs
    functionUses: 3
    functionsReached:
    - map_err
    - Vec::get
    - crate::utils::config_invalid_error
    - Ok
    - map
    - parse::<usize>
    linkageType: ''
    returnType: Result
    signature: 'fn parse_usize(values: &HashMap<String, String>, key: &str) -> Result<Option<usize>,
      OpenDALError>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Vec::get
      Src: /src/opendal/bindings/dotnet/src/options.rs:53,1
    - Dst: Ok
      Src: /src/opendal/bindings/dotnet/src/options.rs:54,1
    - Dst: parse::<u64>
      Src: /src/opendal/bindings/dotnet/src/options.rs:57,1
    - Dst: map
      Src: /src/opendal/bindings/dotnet/src/options.rs:57,1
    - Dst: map_err
      Src: /src/opendal/bindings/dotnet/src/options.rs:57,1
    - Dst: crate::utils::config_invalid_error
      Src: /src/opendal/bindings/dotnet/src/options.rs:58,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 13
    argCount: 2
    argNames:
    - values
    - key
    argTypes:
    - '&HashMap<String, String>'
    - '&str'
    constantsTouched: []
    func_position:
      end: 60
      start: 52
    functionDepth: 2
    functionLinenumber: 52
    functionLinenumberEnd: 60
    functionName: parse_u64
    functionSourceFile: /src/opendal/bindings/dotnet/src/options.rs
    functionUses: 1
    functionsReached:
    - map_err
    - Vec::get
    - crate::utils::config_invalid_error
    - Ok
    - map
    - parse::<u64>
    linkageType: ''
    returnType: Result
    signature: 'fn parse_u64(values: &HashMap<String, String>, key: &str) -> Result<Option<u64>,
      OpenDALError>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Vec::get
      Src: /src/opendal/bindings/dotnet/src/options.rs:66,1
    - Dst: Ok
      Src: /src/opendal/bindings/dotnet/src/options.rs:67,1
    - Dst: parse::<i64>
      Src: /src/opendal/bindings/dotnet/src/options.rs:70,1
    - Dst: map_err
      Src: /src/opendal/bindings/dotnet/src/options.rs:70,1
    - Dst: crate::utils::config_invalid_error
      Src: /src/opendal/bindings/dotnet/src/options.rs:71,1
    - Dst: Timestamp::from_millisecond
      Src: /src/opendal/bindings/dotnet/src/options.rs:76,1
    - Dst: Result::map
      Src: /src/opendal/bindings/dotnet/src/options.rs:76,1
    - Dst: Result::map_err
      Src: /src/opendal/bindings/dotnet/src/options.rs:76,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 17
    argCount: 2
    argNames:
    - values
    - key
    argTypes:
    - '&HashMap<String, String>'
    - '&str'
    constantsTouched: []
    func_position:
      end: 79
      start: 62
    functionDepth: 37
    functionLinenumber: 62
    functionLinenumberEnd: 79
    functionName: parse_timestamp
    functionSourceFile: /src/opendal/bindings/dotnet/src/options.rs
    functionUses: 2
    functionsReached:
    - map_err
    - Result::map_err
    - Vec::get
    - crate::utils::config_invalid_error
    - Ok
    - parse::<i64>
    - Timestamp::from_millisecond
    - Result::map
    linkageType: ''
    returnType: Result
    signature: 'fn parse_timestamp(values: &HashMap<String, String>,key: &str,) ->
      Result<Option<Timestamp>, OpenDALError>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Vec::get
      Src: /src/opendal/bindings/dotnet/src/options.rs:82,1
    - Dst: Option::cloned
      Src: /src/opendal/bindings/dotnet/src/options.rs:82,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - values
    - key
    argTypes:
    - '&HashMap<String, String>'
    - '&str'
    constantsTouched: []
    func_position:
      end: 83
      start: 81
    functionDepth: 2
    functionLinenumber: 81
    functionLinenumberEnd: 83
    functionName: parse_string
    functionSourceFile: /src/opendal/bindings/dotnet/src/options.rs
    functionUses: 4
    functionsReached:
    - Vec::get
    - Option::cloned
    linkageType: ''
    returnType: Option
    signature: 'fn parse_string(values: &HashMap<String, String>, key: &str) -> Option<String>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: opendal::options::ReadOptions::default
      Src: /src/opendal/bindings/dotnet/src/options.rs:88,1
    - Dst: parse_u64
      Src: /src/opendal/bindings/dotnet/src/options.rs:90,1
    - Dst: unwrap_or_default
      Src: /src/opendal/bindings/dotnet/src/options.rs:90,1
    - Dst: parse_u64
      Src: /src/opendal/bindings/dotnet/src/options.rs:91,1
    - Dst: (u64, u64)::is_some
      Src: /src/opendal/bindings/dotnet/src/options.rs:92,1
    - Dst: validate_read_range_end
      Src: /src/opendal/bindings/dotnet/src/options.rs:93,1
    - Dst: into
      Src: /src/opendal/bindings/dotnet/src/options.rs:94,1
    - Dst: into
      Src: /src/opendal/bindings/dotnet/src/options.rs:95,1
    - Dst: parse_string
      Src: /src/opendal/bindings/dotnet/src/options.rs:99,1
    - Dst: parse_string
      Src: /src/opendal/bindings/dotnet/src/options.rs:100,1
    - Dst: parse_string
      Src: /src/opendal/bindings/dotnet/src/options.rs:101,1
    - Dst: parse_timestamp
      Src: /src/opendal/bindings/dotnet/src/options.rs:102,1
    - Dst: parse_timestamp
      Src: /src/opendal/bindings/dotnet/src/options.rs:103,1
    - Dst: parse_usize
      Src: /src/opendal/bindings/dotnet/src/options.rs:105,1
    - Dst: validators::prelude::validate_read_concurrent
      Src: /src/opendal/bindings/dotnet/src/options.rs:106,1
    - Dst: parse_usize
      Src: /src/opendal/bindings/dotnet/src/options.rs:110,1
    - Dst: validators::prelude::validate_read_chunk
      Src: /src/opendal/bindings/dotnet/src/options.rs:111,1
    - Dst: Some
      Src: /src/opendal/bindings/dotnet/src/options.rs:112,1
    - Dst: parse_usize
      Src: /src/opendal/bindings/dotnet/src/options.rs:115,1
    - Dst: validators::prelude::validate_read_gap
      Src: /src/opendal/bindings/dotnet/src/options.rs:116,1
    - Dst: Some
      Src: /src/opendal/bindings/dotnet/src/options.rs:117,1
    - Dst: parse_string
      Src: /src/opendal/bindings/dotnet/src/options.rs:120,1
    - Dst: parse_string
      Src: /src/opendal/bindings/dotnet/src/options.rs:121,1
    - Dst: parse_string
      Src: /src/opendal/bindings/dotnet/src/options.rs:122,1
    - Dst: Ok
      Src: /src/opendal/bindings/dotnet/src/options.rs:124,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 94
    argCount: 1
    argNames:
    - values
    argTypes:
    - '&HashMap<String, String>'
    constantsTouched: []
    func_position:
      end: 125
      start: 85
    functionDepth: 34
    functionLinenumber: 85
    functionLinenumberEnd: 125
    functionName: parse_read_options
    functionSourceFile: /src/opendal/bindings/dotnet/src/options.rs
    functionUses: 1
    functionsReached:
    - (u64, u64)::is_some
    - parse_u64
    - validators::prelude::validate_read_concurrent
    - Ok
    - parse_string
    - validators::prelude::validate_read_chunk
    - into
    - Some
    - validators::prelude::validate_read_gap
    - parse_timestamp
    - parse_usize
    - validate_read_range_end
    - opendal::options::ReadOptions::default
    - unwrap_or_default
    linkageType: ''
    returnType: Result
    signature: 'pub fn parse_read_options(values: &HashMap<String, String>,) -> Result<opendal::options::ReadOptions,
      OpenDALError>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: opendal::options::WriteOptions::default
      Src: /src/opendal/bindings/dotnet/src/options.rs:130,1
    - Dst: parse_bool
      Src: /src/opendal/bindings/dotnet/src/options.rs:132,1
    - Dst: parse_string
      Src: /src/opendal/bindings/dotnet/src/options.rs:136,1
    - Dst: parse_string
      Src: /src/opendal/bindings/dotnet/src/options.rs:137,1
    - Dst: parse_string
      Src: /src/opendal/bindings/dotnet/src/options.rs:138,1
    - Dst: parse_string
      Src: /src/opendal/bindings/dotnet/src/options.rs:139,1
    - Dst: parse_string
      Src: /src/opendal/bindings/dotnet/src/options.rs:140,1
    - Dst: parse_string
      Src: /src/opendal/bindings/dotnet/src/options.rs:141,1
    - Dst: parse_bool
      Src: /src/opendal/bindings/dotnet/src/options.rs:143,1
    - Dst: parse_usize
      Src: /src/opendal/bindings/dotnet/src/options.rs:147,1
    - Dst: validators::prelude::validate_write_concurrent
      Src: /src/opendal/bindings/dotnet/src/options.rs:148,1
    - Dst: parse_usize
      Src: /src/opendal/bindings/dotnet/src/options.rs:152,1
    - Dst: validators::prelude::validate_write_chunk
      Src: /src/opendal/bindings/dotnet/src/options.rs:153,1
    - Dst: Some
      Src: /src/opendal/bindings/dotnet/src/options.rs:154,1
    - Dst: Vec::iter
      Src: /src/opendal/bindings/dotnet/src/options.rs:157,1
    - Dst: filter_map
      Src: /src/opendal/bindings/dotnet/src/options.rs:157,1
    - Dst: FoyerKey::strip_prefix
      Src: /src/opendal/bindings/dotnet/src/options.rs:160,1
    - Dst: map
      Src: /src/opendal/bindings/dotnet/src/options.rs:160,1
    - Dst: Result::to_string
      Src: /src/opendal/bindings/dotnet/src/options.rs:161,1
    - Dst: Vec::to_string
      Src: /src/opendal/bindings/dotnet/src/options.rs:161,1
    - Dst: "iter()\n        .filter_map(|(key, value)| {\n            key.strip_prefix(\"\
        user_metadata.\")\n                .map(|k| (k.to_string(), value.to_string()))\n\
        \        })\n        .collect::<HashMap<_, _>>"
      Src: /src/opendal/bindings/dotnet/src/options.rs:157,1
    - Dst: Result::is_empty
      Src: /src/opendal/bindings/dotnet/src/options.rs:165,1
    - Dst: Some
      Src: /src/opendal/bindings/dotnet/src/options.rs:166,1
    - Dst: Ok
      Src: /src/opendal/bindings/dotnet/src/options.rs:169,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 87
    argCount: 1
    argNames:
    - values
    argTypes:
    - '&HashMap<String, String>'
    constantsTouched: []
    func_position:
      end: 170
      start: 127
    functionDepth: 4
    functionLinenumber: 127
    functionLinenumberEnd: 170
    functionName: parse_write_options
    functionSourceFile: /src/opendal/bindings/dotnet/src/options.rs
    functionUses: 1
    functionsReached:
    - validators::prelude::validate_write_chunk
    - validators::prelude::validate_write_concurrent
    - FoyerKey::strip_prefix
    - Result::to_string
    - Ok
    - parse_string
    - opendal::options::WriteOptions::default
    - Some
    - Vec::iter
    - map
    - Result::is_empty
    - parse_usize
    - filter_map
    - Vec::to_string
    - parse_bool
    - "iter()\n        .filter_map(|(key, value)| {\n            key.strip_prefix(\"\
      user_metadata.\")\n                .map(|k| (k.to_string(), value.to_string()))\n\
      \        })\n        .collect::<HashMap<_, _>>"
    linkageType: ''
    returnType: Result
    signature: 'pub fn parse_write_options(values: &HashMap<String, String>,) -> Result<opendal::options::WriteOptions,
      OpenDALError>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/bindings/dotnet/src/options.rs:175,1
    - Dst: parse_string
      Src: /src/opendal/bindings/dotnet/src/options.rs:176,1
    - Dst: parse_string
      Src: /src/opendal/bindings/dotnet/src/options.rs:177,1
    - Dst: parse_string
      Src: /src/opendal/bindings/dotnet/src/options.rs:178,1
    - Dst: parse_timestamp
      Src: /src/opendal/bindings/dotnet/src/options.rs:179,1
    - Dst: parse_timestamp
      Src: /src/opendal/bindings/dotnet/src/options.rs:180,1
    - Dst: parse_string
      Src: /src/opendal/bindings/dotnet/src/options.rs:181,1
    - Dst: parse_string
      Src: /src/opendal/bindings/dotnet/src/options.rs:182,1
    - Dst: parse_string
      Src: /src/opendal/bindings/dotnet/src/options.rs:183,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 1
    argNames:
    - values
    argTypes:
    - '&HashMap<String, String>'
    constantsTouched: []
    func_position:
      end: 185
      start: 172
    functionDepth: 38
    functionLinenumber: 172
    functionLinenumberEnd: 185
    functionName: parse_stat_options
    functionSourceFile: /src/opendal/bindings/dotnet/src/options.rs
    functionUses: 1
    functionsReached:
    - parse_timestamp
    - Ok
    - parse_string
    linkageType: ''
    returnType: Result
    signature: 'pub fn parse_stat_options(values: &HashMap<String, String>,) -> Result<opendal::options::StatOptions,
      OpenDALError>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: opendal::options::ListOptions::default
      Src: /src/opendal/bindings/dotnet/src/options.rs:190,1
    - Dst: parse_bool
      Src: /src/opendal/bindings/dotnet/src/options.rs:192,1
    - Dst: parse_usize
      Src: /src/opendal/bindings/dotnet/src/options.rs:196,1
    - Dst: validate_list_limit
      Src: /src/opendal/bindings/dotnet/src/options.rs:197,1
    - Dst: Some
      Src: /src/opendal/bindings/dotnet/src/options.rs:198,1
    - Dst: parse_string
      Src: /src/opendal/bindings/dotnet/src/options.rs:201,1
    - Dst: parse_bool
      Src: /src/opendal/bindings/dotnet/src/options.rs:203,1
    - Dst: parse_bool
      Src: /src/opendal/bindings/dotnet/src/options.rs:207,1
    - Dst: Ok
      Src: /src/opendal/bindings/dotnet/src/options.rs:211,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 38
    argCount: 1
    argNames:
    - values
    argTypes:
    - '&HashMap<String, String>'
    constantsTouched: []
    func_position:
      end: 212
      start: 187
    functionDepth: 34
    functionLinenumber: 187
    functionLinenumberEnd: 212
    functionName: parse_list_options
    functionSourceFile: /src/opendal/bindings/dotnet/src/options.rs
    functionUses: 1
    functionsReached:
    - Ok
    - opendal::options::ListOptions::default
    - parse_string
    - Some
    - parse_bool
    - parse_usize
    - validate_list_limit
    linkageType: ''
    returnType: Result
    signature: 'pub fn parse_list_options(values: &HashMap<String, String>,) -> Result<opendal::options::ListOptions,
      OpenDALError>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: into_string_ptr
      Src: /src/opendal/bindings/dotnet/src/operator_info.rs:33,1
    - Dst: ServiceInfo::scheme
      Src: /src/opendal/bindings/dotnet/src/operator_info.rs:33,1
    - Dst: '&''static str::to_string'
      Src: /src/opendal/bindings/dotnet/src/operator_info.rs:33,1
    - Dst: into_string_ptr
      Src: /src/opendal/bindings/dotnet/src/operator_info.rs:34,1
    - Dst: ServiceInfo::root
      Src: /src/opendal/bindings/dotnet/src/operator_info.rs:34,1
    - Dst: into_string_ptr
      Src: /src/opendal/bindings/dotnet/src/operator_info.rs:35,1
    - Dst: ServiceInfo::name
      Src: /src/opendal/bindings/dotnet/src/operator_info.rs:35,1
    - Dst: Capability::new
      Src: /src/opendal/bindings/dotnet/src/operator_info.rs:36,1
    - Dst: ServiceInfo::capability
      Src: /src/opendal/bindings/dotnet/src/operator_info.rs:36,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 15
    argCount: 1
    argNames:
    - info
    argTypes:
    - opendal::OperatorInfo
    constantsTouched: []
    func_position:
      end: 38
      start: 31
    functionDepth: 30
    functionLinenumber: 31
    functionLinenumberEnd: 38
    functionName: into_operator_info
    functionSourceFile: /src/opendal/bindings/dotnet/src/operator_info.rs
    functionUses: 1
    functionsReached:
    - ServiceInfo::root
    - ServiceInfo::capability
    - ServiceInfo::name
    - into_string_ptr
    - Capability::new
    - ServiceInfo::scheme
    - '&''static str::to_string'
    linkageType: ''
    returnType: OpendalOperatorInfo
    signature: 'pub fn into_operator_info(info: opendal::OperatorInfo) -> OpendalOperatorInfo'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: '{

        byte_buffer::ByteBuffer,

        entry::into_entry_list_ptr,

        error::OpenDALError,

        executor::executor_or_default,

        metadata::OpendalMetadata,

        operator_info::

        },

        utils::collect_options'
      Src: /src/opendal/bindings/dotnet/src/operator.rs:68,1
    - Dst: OpendalOptionsResult::ok
      Src: /src/opendal/bindings/dotnet/src/operator.rs:69,1
    - Dst: Box::into_raw
      Src: /src/opendal/bindings/dotnet/src/operator.rs:69,1
    - Dst: Box::new
      Src: /src/opendal/bindings/dotnet/src/operator.rs:69,1
    - Dst: OpendalOptionsResult::from_error
      Src: /src/opendal/bindings/dotnet/src/operator.rs:70,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 3
    argNames:
    - keys
    - values
    - len
    argTypes:
    - '*const *const c_char'
    - '*const *const c_char'
    - usize
    constantsTouched: []
    func_position:
      end: 72
      start: 63
    functionDepth: 3
    functionLinenumber: 63
    functionLinenumberEnd: 72
    functionName: constructor_option_build
    functionSourceFile: /src/opendal/bindings/dotnet/src/operator.rs
    functionUses: 0
    functionsReached:
    - OpendalOptionsResult::ok
    - Box::new
    - OpendalOptionsResult::from_error
    - Box::into_raw
    - '{

      byte_buffer::ByteBuffer,

      entry::into_entry_list_ptr,

      error::OpenDALError,

      executor::executor_or_default,

      metadata::OpendalMetadata,

      operator_info::

      },

      utils::collect_options'
    linkageType: ''
    returnType: OpendalOptionsResult
    signature: 'pub unsafe extern "C" fn constructor_option_build(keys: *const *const
      c_char,values: *const *const c_char,len: usize,) -> OpendalOptionsResult'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::is_null
      Src: /src/opendal/bindings/dotnet/src/operator.rs:81,1
    - Dst: drop
      Src: /src/opendal/bindings/dotnet/src/operator.rs:85,1
    - Dst: Box::from_raw
      Src: /src/opendal/bindings/dotnet/src/operator.rs:85,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - options
    argTypes:
    - '*mut HashMap<String, String>'
    constantsTouched: []
    func_position:
      end: 87
      start: 80
    functionDepth: 33
    functionLinenumber: 80
    functionLinenumberEnd: 87
    functionName: constructor_option_free
    functionSourceFile: /src/opendal/bindings/dotnet/src/operator.rs
    functionUses: 0
    functionsReached:
    - Box::from_raw
    - Result::is_null
    - drop
    linkageType: ''
    returnType: void
    signature: 'pub extern "C" fn constructor_option_free(options: *mut HashMap<String,
      String>)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: '{

        byte_buffer::ByteBuffer,

        entry::into_entry_list_ptr,

        error::OpenDALError,

        executor::executor_or_default,

        metadata::OpendalMetadata,

        operator_info::

        },

        utils::collect_options'
      Src: /src/opendal/bindings/dotnet/src/operator.rs:103,1
    - Dst: and_then
      Src: /src/opendal/bindings/dotnet/src/operator.rs:103,1
    - Dst: '{

        byte_buffer::ByteBuffer,

        entry::into_entry_list_ptr,

        error::OpenDALError,

        executor::executor_or_default,

        metadata::OpendalMetadata,

        operator_info::parse_read_options'
      Src: /src/opendal/bindings/dotnet/src/operator.rs:104,1
    - Dst: OpendalOptionsResult::ok
      Src: /src/opendal/bindings/dotnet/src/operator.rs:106,1
    - Dst: Box::into_raw
      Src: /src/opendal/bindings/dotnet/src/operator.rs:106,1
    - Dst: Box::new
      Src: /src/opendal/bindings/dotnet/src/operator.rs:106,1
    - Dst: OpendalOptionsResult::from_error
      Src: /src/opendal/bindings/dotnet/src/operator.rs:107,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 3
    argNames:
    - keys
    - values
    - len
    argTypes:
    - '*const *const c_char'
    - '*const *const c_char'
    - usize
    constantsTouched: []
    func_position:
      end: 109
      start: 98
    functionDepth: 3
    functionLinenumber: 98
    functionLinenumberEnd: 109
    functionName: read_option_build
    functionSourceFile: /src/opendal/bindings/dotnet/src/operator.rs
    functionUses: 0
    functionsReached:
    - OpendalOptionsResult::ok
    - and_then
    - Box::new
    - OpendalOptionsResult::from_error
    - '{

      byte_buffer::ByteBuffer,

      entry::into_entry_list_ptr,

      error::OpenDALError,

      executor::executor_or_default,

      metadata::OpendalMetadata,

      operator_info::parse_read_options'
    - Box::into_raw
    - '{

      byte_buffer::ByteBuffer,

      entry::into_entry_list_ptr,

      error::OpenDALError,

      executor::executor_or_default,

      metadata::OpendalMetadata,

      operator_info::

      },

      utils::collect_options'
    linkageType: ''
    returnType: OpendalOptionsResult
    signature: 'pub unsafe extern "C" fn read_option_build(keys: *const *const c_char,values:
      *const *const c_char,len: usize,) -> OpendalOptionsResult'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::is_null
      Src: /src/opendal/bindings/dotnet/src/operator.rs:117,1
    - Dst: drop
      Src: /src/opendal/bindings/dotnet/src/operator.rs:121,1
    - Dst: Box::from_raw
      Src: /src/opendal/bindings/dotnet/src/operator.rs:121,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - options
    argTypes:
    - '*mut opendal::options::ReadOptions'
    constantsTouched: []
    func_position:
      end: 123
      start: 116
    functionDepth: 33
    functionLinenumber: 116
    functionLinenumberEnd: 123
    functionName: read_option_free
    functionSourceFile: /src/opendal/bindings/dotnet/src/operator.rs
    functionUses: 0
    functionsReached:
    - Box::from_raw
    - Result::is_null
    - drop
    linkageType: ''
    returnType: void
    signature: 'pub unsafe extern "C" fn read_option_free(options: *mut opendal::options::ReadOptions)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: '{

        byte_buffer::ByteBuffer,

        entry::into_entry_list_ptr,

        error::OpenDALError,

        executor::executor_or_default,

        metadata::OpendalMetadata,

        operator_info::

        },

        utils::collect_options'
      Src: /src/opendal/bindings/dotnet/src/operator.rs:139,1
    - Dst: and_then
      Src: /src/opendal/bindings/dotnet/src/operator.rs:139,1
    - Dst: parse_write_options
      Src: /src/opendal/bindings/dotnet/src/operator.rs:140,1
    - Dst: OpendalOptionsResult::ok
      Src: /src/opendal/bindings/dotnet/src/operator.rs:142,1
    - Dst: Box::into_raw
      Src: /src/opendal/bindings/dotnet/src/operator.rs:142,1
    - Dst: Box::new
      Src: /src/opendal/bindings/dotnet/src/operator.rs:142,1
    - Dst: OpendalOptionsResult::from_error
      Src: /src/opendal/bindings/dotnet/src/operator.rs:143,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 3
    argNames:
    - keys
    - values
    - len
    argTypes:
    - '*const *const c_char'
    - '*const *const c_char'
    - usize
    constantsTouched: []
    func_position:
      end: 145
      start: 134
    functionDepth: 5
    functionLinenumber: 134
    functionLinenumberEnd: 145
    functionName: write_option_build
    functionSourceFile: /src/opendal/bindings/dotnet/src/operator.rs
    functionUses: 0
    functionsReached:
    - OpendalOptionsResult::ok
    - and_then
    - Box::new
    - OpendalOptionsResult::from_error
    - parse_write_options
    - Box::into_raw
    - '{

      byte_buffer::ByteBuffer,

      entry::into_entry_list_ptr,

      error::OpenDALError,

      executor::executor_or_default,

      metadata::OpendalMetadata,

      operator_info::

      },

      utils::collect_options'
    linkageType: ''
    returnType: OpendalOptionsResult
    signature: 'pub unsafe extern "C" fn write_option_build(keys: *const *const c_char,values:
      *const *const c_char,len: usize,) -> OpendalOptionsResult'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::is_null
      Src: /src/opendal/bindings/dotnet/src/operator.rs:153,1
    - Dst: drop
      Src: /src/opendal/bindings/dotnet/src/operator.rs:157,1
    - Dst: Box::from_raw
      Src: /src/opendal/bindings/dotnet/src/operator.rs:157,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - options
    argTypes:
    - '*mut opendal::options::WriteOptions'
    constantsTouched: []
    func_position:
      end: 159
      start: 152
    functionDepth: 33
    functionLinenumber: 152
    functionLinenumberEnd: 159
    functionName: write_option_free
    functionSourceFile: /src/opendal/bindings/dotnet/src/operator.rs
    functionUses: 0
    functionsReached:
    - Box::from_raw
    - Result::is_null
    - drop
    linkageType: ''
    returnType: void
    signature: 'pub unsafe extern "C" fn write_option_free(options: *mut opendal::options::WriteOptions)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: '{

        byte_buffer::ByteBuffer,

        entry::into_entry_list_ptr,

        error::OpenDALError,

        executor::executor_or_default,

        metadata::OpendalMetadata,

        operator_info::

        },

        utils::collect_options'
      Src: /src/opendal/bindings/dotnet/src/operator.rs:175,1
    - Dst: and_then
      Src: /src/opendal/bindings/dotnet/src/operator.rs:175,1
    - Dst: '{

        byte_buffer::ByteBuffer,

        entry::into_entry_list_ptr,

        error::OpenDALError,

        executor::executor_or_default,

        metadata::OpendalMetadata,

        operator_info::parse_stat_options'
      Src: /src/opendal/bindings/dotnet/src/operator.rs:176,1
    - Dst: OpendalOptionsResult::ok
      Src: /src/opendal/bindings/dotnet/src/operator.rs:178,1
    - Dst: Box::into_raw
      Src: /src/opendal/bindings/dotnet/src/operator.rs:178,1
    - Dst: Box::new
      Src: /src/opendal/bindings/dotnet/src/operator.rs:178,1
    - Dst: OpendalOptionsResult::from_error
      Src: /src/opendal/bindings/dotnet/src/operator.rs:179,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 3
    argNames:
    - keys
    - values
    - len
    argTypes:
    - '*const *const c_char'
    - '*const *const c_char'
    - usize
    constantsTouched: []
    func_position:
      end: 181
      start: 170
    functionDepth: 3
    functionLinenumber: 170
    functionLinenumberEnd: 181
    functionName: stat_option_build
    functionSourceFile: /src/opendal/bindings/dotnet/src/operator.rs
    functionUses: 0
    functionsReached:
    - OpendalOptionsResult::ok
    - and_then
    - Box::new
    - OpendalOptionsResult::from_error
    - '{

      byte_buffer::ByteBuffer,

      entry::into_entry_list_ptr,

      error::OpenDALError,

      executor::executor_or_default,

      metadata::OpendalMetadata,

      operator_info::parse_stat_options'
    - Box::into_raw
    - '{

      byte_buffer::ByteBuffer,

      entry::into_entry_list_ptr,

      error::OpenDALError,

      executor::executor_or_default,

      metadata::OpendalMetadata,

      operator_info::

      },

      utils::collect_options'
    linkageType: ''
    returnType: OpendalOptionsResult
    signature: 'pub unsafe extern "C" fn stat_option_build(keys: *const *const c_char,values:
      *const *const c_char,len: usize,) -> OpendalOptionsResult'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::is_null
      Src: /src/opendal/bindings/dotnet/src/operator.rs:189,1
    - Dst: drop
      Src: /src/opendal/bindings/dotnet/src/operator.rs:193,1
    - Dst: Box::from_raw
      Src: /src/opendal/bindings/dotnet/src/operator.rs:193,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - options
    argTypes:
    - '*mut opendal::options::StatOptions'
    constantsTouched: []
    func_position:
      end: 195
      start: 188
    functionDepth: 33
    functionLinenumber: 188
    functionLinenumberEnd: 195
    functionName: stat_option_free
    functionSourceFile: /src/opendal/bindings/dotnet/src/operator.rs
    functionUses: 0
    functionsReached:
    - Box::from_raw
    - Result::is_null
    - drop
    linkageType: ''
    returnType: void
    signature: 'pub unsafe extern "C" fn stat_option_free(options: *mut opendal::options::StatOptions)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: '{

        byte_buffer::ByteBuffer,

        entry::into_entry_list_ptr,

        error::OpenDALError,

        executor::executor_or_default,

        metadata::OpendalMetadata,

        operator_info::

        },

        utils::collect_options'
      Src: /src/opendal/bindings/dotnet/src/operator.rs:211,1
    - Dst: and_then
      Src: /src/opendal/bindings/dotnet/src/operator.rs:211,1
    - Dst: '{

        byte_buffer::ByteBuffer,

        entry::into_entry_list_ptr,

        error::OpenDALError,

        executor::executor_or_default,

        metadata::OpendalMetadata,

        operator_info::into_operator_info},

        options::parse_list_options'
      Src: /src/opendal/bindings/dotnet/src/operator.rs:212,1
    - Dst: OpendalOptionsResult::ok
      Src: /src/opendal/bindings/dotnet/src/operator.rs:214,1
    - Dst: Box::into_raw
      Src: /src/opendal/bindings/dotnet/src/operator.rs:214,1
    - Dst: Box::new
      Src: /src/opendal/bindings/dotnet/src/operator.rs:214,1
    - Dst: OpendalOptionsResult::from_error
      Src: /src/opendal/bindings/dotnet/src/operator.rs:215,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 3
    argNames:
    - keys
    - values
    - len
    argTypes:
    - '*const *const c_char'
    - '*const *const c_char'
    - usize
    constantsTouched: []
    func_position:
      end: 217
      start: 206
    functionDepth: 3
    functionLinenumber: 206
    functionLinenumberEnd: 217
    functionName: list_option_build
    functionSourceFile: /src/opendal/bindings/dotnet/src/operator.rs
    functionUses: 0
    functionsReached:
    - OpendalOptionsResult::ok
    - and_then
    - Box::new
    - OpendalOptionsResult::from_error
    - '{

      byte_buffer::ByteBuffer,

      entry::into_entry_list_ptr,

      error::OpenDALError,

      executor::executor_or_default,

      metadata::OpendalMetadata,

      operator_info::into_operator_info},

      options::parse_list_options'
    - Box::into_raw
    - '{

      byte_buffer::ByteBuffer,

      entry::into_entry_list_ptr,

      error::OpenDALError,

      executor::executor_or_default,

      metadata::OpendalMetadata,

      operator_info::

      },

      utils::collect_options'
    linkageType: ''
    returnType: OpendalOptionsResult
    signature: 'pub unsafe extern "C" fn list_option_build(keys: *const *const c_char,values:
      *const *const c_char,len: usize,) -> OpendalOptionsResult'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::is_null
      Src: /src/opendal/bindings/dotnet/src/operator.rs:225,1
    - Dst: drop
      Src: /src/opendal/bindings/dotnet/src/operator.rs:229,1
    - Dst: Box::from_raw
      Src: /src/opendal/bindings/dotnet/src/operator.rs:229,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - options
    argTypes:
    - '*mut opendal::options::ListOptions'
    constantsTouched: []
    func_position:
      end: 231
      start: 224
    functionDepth: 33
    functionLinenumber: 224
    functionLinenumberEnd: 231
    functionName: list_option_free
    functionSourceFile: /src/opendal/bindings/dotnet/src/operator.rs
    functionUses: 0
    functionsReached:
    - Box::from_raw
    - Result::is_null
    - drop
    linkageType: ''
    returnType: void
    signature: 'pub unsafe extern "C" fn list_option_free(options: *mut opendal::options::ListOptions)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: operator_construct_inner
      Src: /src/opendal/bindings/dotnet/src/operator.rs:248,1
    - Dst: OpendalOperatorResult::ok
      Src: /src/opendal/bindings/dotnet/src/operator.rs:249,1
    - Dst: OpendalOperatorResult::from_error
      Src: /src/opendal/bindings/dotnet/src/operator.rs:250,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - scheme
    - options
    argTypes:
    - '*const c_char'
    - '*const HashMap<String, String>'
    constantsTouched: []
    func_position:
      end: 252
      start: 244
    functionDepth: 7
    functionLinenumber: 244
    functionLinenumberEnd: 252
    functionName: operator_construct
    functionSourceFile: /src/opendal/bindings/dotnet/src/operator.rs
    functionUses: 0
    functionsReached:
    - operator_construct_inner
    - OpendalOperatorResult::from_error
    - OpendalOperatorResult::ok
    linkageType: ''
    returnType: OpendalOperatorResult
    signature: 'pub unsafe extern "C" fn operator_construct(scheme: *const c_char,options:
      *const HashMap<String, String>,) -> OpendalOperatorResult'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: '{

        byte_buffer::ByteBuffer,

        entry::into_entry_list_ptr,

        error::OpenDALError,

        executor::executor_or_default,

        metadata::OpendalMetadata,

        operator_info::require_cstr'
      Src: /src/opendal/bindings/dotnet/src/operator.rs:258,1
    - Dst: Result::is_null
      Src: /src/opendal/bindings/dotnet/src/operator.rs:259,1
    - Dst: HashMap::default
      Src: /src/opendal/bindings/dotnet/src/operator.rs:260,1
    - Dst: clone
      Src: /src/opendal/bindings/dotnet/src/operator.rs:262,1
    - Dst: opendal::Operator::via_iter
      Src: /src/opendal/bindings/dotnet/src/operator.rs:265,1
    - Dst: Result::map_err
      Src: /src/opendal/bindings/dotnet/src/operator.rs:265,1
    - Dst: Ok
      Src: /src/opendal/bindings/dotnet/src/operator.rs:266,1
    - Dst: Box::into_raw
      Src: /src/opendal/bindings/dotnet/src/operator.rs:266,1
    - Dst: Box::new
      Src: /src/opendal/bindings/dotnet/src/operator.rs:266,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 20
    argCount: 2
    argNames:
    - scheme
    - options
    argTypes:
    - '*const c_char'
    - '*const HashMap<String, String>'
    constantsTouched: []
    func_position:
      end: 267
      start: 254
    functionDepth: 6
    functionLinenumber: 254
    functionLinenumberEnd: 267
    functionName: operator_construct_inner
    functionSourceFile: /src/opendal/bindings/dotnet/src/operator.rs
    functionUses: 1
    functionsReached:
    - Result::map_err
    - Result::is_null
    - Ok
    - Box::into_raw
    - Box::new
    - clone
    - '{

      byte_buffer::ByteBuffer,

      entry::into_entry_list_ptr,

      error::OpenDALError,

      executor::executor_or_default,

      metadata::OpendalMetadata,

      operator_info::require_cstr'
    - HashMap::default
    - opendal::Operator::via_iter
    linkageType: ''
    returnType: Result
    signature: 'fn operator_construct_inner(scheme: *const c_char,options: *const
      HashMap<String, String>,) -> Result<*mut c_void, OpenDALError>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: is_null
      Src: /src/opendal/bindings/dotnet/src/operator.rs:276,1
    - Dst: drop
      Src: /src/opendal/bindings/dotnet/src/operator.rs:281,1
    - Dst: Box::from_raw
      Src: /src/opendal/bindings/dotnet/src/operator.rs:281,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - op
    argTypes:
    - '*mut opendal::Operator'
    constantsTouched: []
    func_position:
      end: 283
      start: 275
    functionDepth: 33
    functionLinenumber: 275
    functionLinenumberEnd: 283
    functionName: operator_free
    functionSourceFile: /src/opendal/bindings/dotnet/src/operator.rs
    functionUses: 0
    functionsReached:
    - drop
    - is_null
    - Box::from_raw
    linkageType: ''
    returnType: void
    signature: 'pub unsafe extern "C" fn operator_free(op: *mut opendal::Operator)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: operator_info_get_inner
      Src: /src/opendal/bindings/dotnet/src/operator.rs:295,1
    - Dst: OpendalOperatorInfoResult::ok
      Src: /src/opendal/bindings/dotnet/src/operator.rs:296,1
    - Dst: OpendalOperatorInfoResult::from_error
      Src: /src/opendal/bindings/dotnet/src/operator.rs:297,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - op
    argTypes:
    - '*const opendal::Operator'
    constantsTouched: []
    func_position:
      end: 299
      start: 292
    functionDepth: 34
    functionLinenumber: 292
    functionLinenumberEnd: 299
    functionName: operator_info_get
    functionSourceFile: /src/opendal/bindings/dotnet/src/operator.rs
    functionUses: 0
    functionsReached:
    - OpendalOperatorInfoResult::from_error
    - OpendalOperatorInfoResult::ok
    - operator_info_get_inner
    linkageType: ''
    returnType: OpendalOperatorInfoResult
    signature: 'pub unsafe extern "C" fn operator_info_get(op: *const opendal::Operator,)
      -> OpendalOperatorInfoResult'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: require_operator
      Src: /src/opendal/bindings/dotnet/src/operator.rs:302,1
    - Dst: into_operator_info
      Src: /src/opendal/bindings/dotnet/src/operator.rs:303,1
    - Dst: info
      Src: /src/opendal/bindings/dotnet/src/operator.rs:303,1
    - Dst: Ok
      Src: /src/opendal/bindings/dotnet/src/operator.rs:304,1
    - Dst: Box::into_raw
      Src: /src/opendal/bindings/dotnet/src/operator.rs:304,1
    - Dst: Box::new
      Src: /src/opendal/bindings/dotnet/src/operator.rs:304,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - op
    argTypes:
    - '*const opendal::Operator'
    constantsTouched: []
    func_position:
      end: 305
      start: 301
    functionDepth: 33
    functionLinenumber: 301
    functionLinenumberEnd: 305
    functionName: operator_info_get_inner
    functionSourceFile: /src/opendal/bindings/dotnet/src/operator.rs
    functionUses: 1
    functionsReached:
    - info
    - Ok
    - Box::new
    - into_operator_info
    - require_operator
    - Box::into_raw
    linkageType: ''
    returnType: Result
    signature: 'fn operator_info_get_inner(op: *const opendal::Operator) -> Result<*mut
      c_void, OpenDALError>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: ServiceInfo::is_null
      Src: /src/opendal/bindings/dotnet/src/operator.rs:314,1
    - Dst: Box::from_raw
      Src: /src/opendal/bindings/dotnet/src/operator.rs:319,1
    - Dst: is_null
      Src: /src/opendal/bindings/dotnet/src/operator.rs:320,1
    - Dst: drop
      Src: /src/opendal/bindings/dotnet/src/operator.rs:321,1
    - Dst: std::ffi::CString::from_raw
      Src: /src/opendal/bindings/dotnet/src/operator.rs:321,1
    - Dst: is_null
      Src: /src/opendal/bindings/dotnet/src/operator.rs:323,1
    - Dst: drop
      Src: /src/opendal/bindings/dotnet/src/operator.rs:324,1
    - Dst: std::ffi::CString::from_raw
      Src: /src/opendal/bindings/dotnet/src/operator.rs:324,1
    - Dst: is_null
      Src: /src/opendal/bindings/dotnet/src/operator.rs:326,1
    - Dst: drop
      Src: /src/opendal/bindings/dotnet/src/operator.rs:327,1
    - Dst: std::ffi::CString::from_raw
      Src: /src/opendal/bindings/dotnet/src/operator.rs:327,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 38
    argCount: 1
    argNames:
    - info
    argTypes:
    - '*mut OpendalOperatorInfo'
    constantsTouched: []
    func_position:
      end: 330
      start: 313
    functionDepth: 33
    functionLinenumber: 313
    functionLinenumberEnd: 330
    functionName: operator_info_free
    functionSourceFile: /src/opendal/bindings/dotnet/src/operator.rs
    functionUses: 1
    functionsReached:
    - Box::from_raw
    - drop
    - std::ffi::CString::from_raw
    - is_null
    - ServiceInfo::is_null
    linkageType: ''
    returnType: void
    signature: 'pub unsafe extern "C" fn operator_info_free(info: *mut OpendalOperatorInfo)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: operator_layer_retry_inner
      Src: /src/opendal/bindings/dotnet/src/operator.rs:348,1
    - Dst: OpendalOperatorResult::ok
      Src: /src/opendal/bindings/dotnet/src/operator.rs:356,1
    - Dst: OpendalOperatorResult::from_error
      Src: /src/opendal/bindings/dotnet/src/operator.rs:357,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 6
    argNames:
    - op
    - jitter
    - factor
    - min_delay_nanos
    - max_delay_nanos
    - max_times
    argTypes:
    - '*const opendal::Operator'
    - bool
    - f32
    - u64
    - u64
    - usize
    constantsTouched: []
    func_position:
      end: 359
      start: 340
    functionDepth: 34
    functionLinenumber: 340
    functionLinenumberEnd: 359
    functionName: operator_layer_retry
    functionSourceFile: /src/opendal/bindings/dotnet/src/operator.rs
    functionUses: 0
    functionsReached:
    - operator_layer_retry_inner
    - OpendalOperatorResult::from_error
    - OpendalOperatorResult::ok
    linkageType: ''
    returnType: OpendalOperatorResult
    signature: 'pub extern "C" fn operator_layer_retry(op: *const opendal::Operator,jitter:
      bool,factor: f32,min_delay_nanos: u64,max_delay_nanos: u64,max_times: usize,)
      -> OpendalOperatorResult'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: require_operator
      Src: /src/opendal/bindings/dotnet/src/operator.rs:369,1
    - Dst: '{

        byte_buffer::ByteBuffer,

        entry::into_entry_list_ptr,

        error::OpenDALError,

        executor::executor_or_default,

        metadata::OpendalMetadata,

        operator_info::validate_retry_options'
      Src: /src/opendal/bindings/dotnet/src/operator.rs:370,1
    - Dst: opendal::layers::RetryLayer::new
      Src: /src/opendal/bindings/dotnet/src/operator.rs:372,1
    - Dst: with_factor
      Src: /src/opendal/bindings/dotnet/src/operator.rs:373,1
    - Dst: with_min_delay
      Src: /src/opendal/bindings/dotnet/src/operator.rs:374,1
    - Dst: Duration::from_nanos
      Src: /src/opendal/bindings/dotnet/src/operator.rs:374,1
    - Dst: with_max_delay
      Src: /src/opendal/bindings/dotnet/src/operator.rs:375,1
    - Dst: Duration::from_nanos
      Src: /src/opendal/bindings/dotnet/src/operator.rs:375,1
    - Dst: with_max_times
      Src: /src/opendal/bindings/dotnet/src/operator.rs:376,1
    - Dst: with_jitter
      Src: /src/opendal/bindings/dotnet/src/operator.rs:378,1
    - Dst: Ok
      Src: /src/opendal/bindings/dotnet/src/operator.rs:381,1
    - Dst: Box::into_raw
      Src: /src/opendal/bindings/dotnet/src/operator.rs:381,1
    - Dst: Box::new
      Src: /src/opendal/bindings/dotnet/src/operator.rs:381,1
    - Dst: clone
      Src: /src/opendal/bindings/dotnet/src/operator.rs:381,1
    - Dst: Self::layer
      Src: /src/opendal/bindings/dotnet/src/operator.rs:381,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 38
    argCount: 6
    argNames:
    - op
    - jitter
    - factor
    - min_delay_nanos
    - max_delay_nanos
    - max_times
    argTypes:
    - '*const opendal::Operator'
    - bool
    - f32
    - u64
    - u64
    - usize
    constantsTouched: []
    func_position:
      end: 382
      start: 361
    functionDepth: 33
    functionLinenumber: 361
    functionLinenumberEnd: 382
    functionName: operator_layer_retry_inner
    functionSourceFile: /src/opendal/bindings/dotnet/src/operator.rs
    functionUses: 1
    functionsReached:
    - opendal::layers::RetryLayer::new
    - with_max_times
    - with_jitter
    - with_min_delay
    - Ok
    - Box::into_raw
    - Duration::from_nanos
    - Box::new
    - Self::layer
    - with_max_delay
    - clone
    - '{

      byte_buffer::ByteBuffer,

      entry::into_entry_list_ptr,

      error::OpenDALError,

      executor::executor_or_default,

      metadata::OpendalMetadata,

      operator_info::validate_retry_options'
    - require_operator
    - with_factor
    linkageType: ''
    returnType: Result
    signature: 'fn operator_layer_retry_inner(op: *const opendal::Operator,jitter:
      bool,factor: f32,min_delay_nanos: u64,max_delay_nanos: u64,max_times: usize,)
      -> Result<*mut c_void, OpenDALError>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: operator_layer_concurrent_limit_inner
      Src: /src/opendal/bindings/dotnet/src/operator.rs:396,1
    - Dst: OpendalOperatorResult::ok
      Src: /src/opendal/bindings/dotnet/src/operator.rs:397,1
    - Dst: OpendalOperatorResult::from_error
      Src: /src/opendal/bindings/dotnet/src/operator.rs:398,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - op
    - permits
    argTypes:
    - '*const opendal::Operator'
    - usize
    constantsTouched: []
    func_position:
      end: 400
      start: 392
    functionDepth: 34
    functionLinenumber: 392
    functionLinenumberEnd: 400
    functionName: operator_layer_concurrent_limit
    functionSourceFile: /src/opendal/bindings/dotnet/src/operator.rs
    functionUses: 0
    functionsReached:
    - operator_layer_concurrent_limit_inner
    - OpendalOperatorResult::from_error
    - OpendalOperatorResult::ok
    linkageType: ''
    returnType: OpendalOperatorResult
    signature: 'pub extern "C" fn operator_layer_concurrent_limit(op: *const opendal::Operator,permits:
      usize,) -> OpendalOperatorResult'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: require_operator
      Src: /src/opendal/bindings/dotnet/src/operator.rs:406,1
    - Dst: validate_concurrent_limit_options
      Src: /src/opendal/bindings/dotnet/src/operator.rs:407,1
    - Dst: opendal::layers::ConcurrentLimitLayer::new
      Src: /src/opendal/bindings/dotnet/src/operator.rs:409,1
    - Dst: Ok
      Src: /src/opendal/bindings/dotnet/src/operator.rs:410,1
    - Dst: Box::into_raw
      Src: /src/opendal/bindings/dotnet/src/operator.rs:410,1
    - Dst: Box::new
      Src: /src/opendal/bindings/dotnet/src/operator.rs:410,1
    - Dst: clone
      Src: /src/opendal/bindings/dotnet/src/operator.rs:410,1
    - Dst: Self::layer
      Src: /src/opendal/bindings/dotnet/src/operator.rs:410,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 2
    argNames:
    - op
    - permits
    argTypes:
    - '*const opendal::Operator'
    - usize
    constantsTouched: []
    func_position:
      end: 411
      start: 402
    functionDepth: 33
    functionLinenumber: 402
    functionLinenumberEnd: 411
    functionName: operator_layer_concurrent_limit_inner
    functionSourceFile: /src/opendal/bindings/dotnet/src/operator.rs
    functionUses: 1
    functionsReached:
    - opendal::layers::ConcurrentLimitLayer::new
    - Ok
    - Box::new
    - Self::layer
    - clone
    - require_operator
    - validate_concurrent_limit_options
    - Box::into_raw
    linkageType: ''
    returnType: Result
    signature: 'fn operator_layer_concurrent_limit_inner(op: *const opendal::Operator,permits:
      usize,) -> Result<*mut c_void, OpenDALError>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: operator_layer_capability_override_inner
      Src: /src/opendal/bindings/dotnet/src/operator.rs:426,1
    - Dst: OpendalOperatorResult::ok
      Src: /src/opendal/bindings/dotnet/src/operator.rs:427,1
    - Dst: OpendalOperatorResult::from_error
      Src: /src/opendal/bindings/dotnet/src/operator.rs:428,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - op
    - overrides
    argTypes:
    - '*const opendal::Operator'
    - '*const c_char'
    constantsTouched: []
    func_position:
      end: 430
      start: 422
    functionDepth: 34
    functionLinenumber: 422
    functionLinenumberEnd: 430
    functionName: operator_layer_capability_override
    functionSourceFile: /src/opendal/bindings/dotnet/src/operator.rs
    functionUses: 0
    functionsReached:
    - OpendalOperatorResult::from_error
    - OpendalOperatorResult::ok
    - operator_layer_capability_override_inner
    linkageType: ''
    returnType: OpendalOperatorResult
    signature: 'pub extern "C" fn operator_layer_capability_override(op: *const opendal::Operator,overrides:
      *const c_char,) -> OpendalOperatorResult'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: require_operator
      Src: /src/opendal/bindings/dotnet/src/operator.rs:436,1
    - Dst: '{

        byte_buffer::ByteBuffer,

        entry::into_entry_list_ptr,

        error::OpenDALError,

        executor::executor_or_default,

        metadata::OpendalMetadata,

        operator_info::require_cstr'
      Src: /src/opendal/bindings/dotnet/src/operator.rs:437,1
    - Dst: opendal::layers::CapabilityOverrideLayer::from_overrides
      Src: /src/opendal/bindings/dotnet/src/operator.rs:438,1
    - Dst: Result::map_err
      Src: /src/opendal/bindings/dotnet/src/operator.rs:438,1
    - Dst: Ok
      Src: /src/opendal/bindings/dotnet/src/operator.rs:441,1
    - Dst: Box::into_raw
      Src: /src/opendal/bindings/dotnet/src/operator.rs:441,1
    - Dst: Box::new
      Src: /src/opendal/bindings/dotnet/src/operator.rs:441,1
    - Dst: clone
      Src: /src/opendal/bindings/dotnet/src/operator.rs:441,1
    - Dst: Self::layer
      Src: /src/opendal/bindings/dotnet/src/operator.rs:441,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 2
    argNames:
    - op
    - overrides
    argTypes:
    - '*const opendal::Operator'
    - '*const c_char'
    constantsTouched: []
    func_position:
      end: 442
      start: 432
    functionDepth: 33
    functionLinenumber: 432
    functionLinenumberEnd: 442
    functionName: operator_layer_capability_override_inner
    functionSourceFile: /src/opendal/bindings/dotnet/src/operator.rs
    functionUses: 1
    functionsReached:
    - Result::map_err
    - Ok
    - opendal::layers::CapabilityOverrideLayer::from_overrides
    - Box::new
    - Self::layer
    - '{

      byte_buffer::ByteBuffer,

      entry::into_entry_list_ptr,

      error::OpenDALError,

      executor::executor_or_default,

      metadata::OpendalMetadata,

      operator_info::require_cstr'
    - clone
    - require_operator
    - Box::into_raw
    linkageType: ''
    returnType: Result
    signature: 'fn operator_layer_capability_override_inner(op: *const opendal::Operator,overrides:
      *const c_char,) -> Result<*mut c_void, OpenDALError>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: operator_layer_timeout_inner
      Src: /src/opendal/bindings/dotnet/src/operator.rs:457,1
    - Dst: OpendalOperatorResult::ok
      Src: /src/opendal/bindings/dotnet/src/operator.rs:458,1
    - Dst: OpendalOperatorResult::from_error
      Src: /src/opendal/bindings/dotnet/src/operator.rs:459,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - op
    - timeout_nanos
    - io_timeout_nanos
    argTypes:
    - '*const opendal::Operator'
    - u64
    - u64
    constantsTouched: []
    func_position:
      end: 461
      start: 452
    functionDepth: 34
    functionLinenumber: 452
    functionLinenumberEnd: 461
    functionName: operator_layer_timeout
    functionSourceFile: /src/opendal/bindings/dotnet/src/operator.rs
    functionUses: 0
    functionsReached:
    - operator_layer_timeout_inner
    - OpendalOperatorResult::from_error
    - OpendalOperatorResult::ok
    linkageType: ''
    returnType: OpendalOperatorResult
    signature: 'pub extern "C" fn operator_layer_timeout(op: *const opendal::Operator,timeout_nanos:
      u64,io_timeout_nanos: u64,) -> OpendalOperatorResult'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: require_operator
      Src: /src/opendal/bindings/dotnet/src/operator.rs:468,1
    - Dst: '{

        byte_buffer::ByteBuffer,

        entry::into_entry_list_ptr,

        error::OpenDALError,

        executor::executor_or_default,

        metadata::OpendalMetadata,

        operator_info::validate_timeout_options'
      Src: /src/opendal/bindings/dotnet/src/operator.rs:469,1
    - Dst: opendal::layers::TimeoutLayer::new
      Src: /src/opendal/bindings/dotnet/src/operator.rs:471,1
    - Dst: Self::with_timeout
      Src: /src/opendal/bindings/dotnet/src/operator.rs:471,1
    - Dst: Duration::from_nanos
      Src: /src/opendal/bindings/dotnet/src/operator.rs:472,1
    - Dst: Self::with_io_timeout
      Src: /src/opendal/bindings/dotnet/src/operator.rs:471,1
    - Dst: Duration::from_nanos
      Src: /src/opendal/bindings/dotnet/src/operator.rs:473,1
    - Dst: Ok
      Src: /src/opendal/bindings/dotnet/src/operator.rs:475,1
    - Dst: Box::into_raw
      Src: /src/opendal/bindings/dotnet/src/operator.rs:475,1
    - Dst: Box::new
      Src: /src/opendal/bindings/dotnet/src/operator.rs:475,1
    - Dst: clone
      Src: /src/opendal/bindings/dotnet/src/operator.rs:475,1
    - Dst: Self::layer
      Src: /src/opendal/bindings/dotnet/src/operator.rs:475,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 20
    argCount: 3
    argNames:
    - op
    - timeout_nanos
    - io_timeout_nanos
    argTypes:
    - '*const opendal::Operator'
    - u64
    - u64
    constantsTouched: []
    func_position:
      end: 476
      start: 463
    functionDepth: 33
    functionLinenumber: 463
    functionLinenumberEnd: 476
    functionName: operator_layer_timeout_inner
    functionSourceFile: /src/opendal/bindings/dotnet/src/operator.rs
    functionUses: 1
    functionsReached:
    - Ok
    - Box::into_raw
    - Self::with_timeout
    - Duration::from_nanos
    - Self::with_io_timeout
    - Box::new
    - opendal::layers::TimeoutLayer::new
    - clone
    - Self::layer
    - require_operator
    - '{

      byte_buffer::ByteBuffer,

      entry::into_entry_list_ptr,

      error::OpenDALError,

      executor::executor_or_default,

      metadata::OpendalMetadata,

      operator_info::validate_timeout_options'
    linkageType: ''
    returnType: Result
    signature: 'fn operator_layer_timeout_inner(op: *const opendal::Operator,timeout_nanos:
      u64,io_timeout_nanos: u64,) -> Result<*mut c_void, OpenDALError>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: operator_duplicate_inner
      Src: /src/opendal/bindings/dotnet/src/operator.rs:486,1
    - Dst: OpendalOperatorResult::ok
      Src: /src/opendal/bindings/dotnet/src/operator.rs:487,1
    - Dst: OpendalOperatorResult::from_error
      Src: /src/opendal/bindings/dotnet/src/operator.rs:488,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - op
    argTypes:
    - '*const opendal::Operator'
    constantsTouched: []
    func_position:
      end: 490
      start: 485
    functionDepth: 34
    functionLinenumber: 485
    functionLinenumberEnd: 490
    functionName: operator_duplicate
    functionSourceFile: /src/opendal/bindings/dotnet/src/operator.rs
    functionUses: 0
    functionsReached:
    - OpendalOperatorResult::from_error
    - operator_duplicate_inner
    - OpendalOperatorResult::ok
    linkageType: ''
    returnType: OpendalOperatorResult
    signature: 'pub extern "C" fn operator_duplicate(op: *const opendal::Operator)
      -> OpendalOperatorResult'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: require_operator
      Src: /src/opendal/bindings/dotnet/src/operator.rs:493,1
    - Dst: Ok
      Src: /src/opendal/bindings/dotnet/src/operator.rs:494,1
    - Dst: Box::into_raw
      Src: /src/opendal/bindings/dotnet/src/operator.rs:494,1
    - Dst: Box::new
      Src: /src/opendal/bindings/dotnet/src/operator.rs:494,1
    - Dst: clone
      Src: /src/opendal/bindings/dotnet/src/operator.rs:494,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - op
    argTypes:
    - '*const opendal::Operator'
    constantsTouched: []
    func_position:
      end: 495
      start: 492
    functionDepth: 33
    functionLinenumber: 492
    functionLinenumberEnd: 495
    functionName: operator_duplicate_inner
    functionSourceFile: /src/opendal/bindings/dotnet/src/operator.rs
    functionUses: 1
    functionsReached:
    - Ok
    - Box::new
    - clone
    - require_operator
    - Box::into_raw
    linkageType: ''
    returnType: Result
    signature: 'fn operator_duplicate_inner(op: *const opendal::Operator) -> Result<*mut
      c_void, OpenDALError>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: require_operator
      Src: /src/opendal/bindings/dotnet/src/operator.rs:519,1
    - Dst: executor_or_default
      Src: /src/opendal/bindings/dotnet/src/operator.rs:520,1
    - Dst: '{

        byte_buffer::ByteBuffer,

        entry::into_entry_list_ptr,

        error::OpenDALError,

        executor::executor_or_default,

        metadata::OpendalMetadata,

        operator_info::require_cstr'
      Src: /src/opendal/bindings/dotnet/src/operator.rs:521,1
    - Dst: Self::block_on
      Src: /src/opendal/bindings/dotnet/src/operator.rs:523,1
    - Dst: delete
      Src: /src/opendal/bindings/dotnet/src/operator.rs:524,1
    - Dst: F::Output::map_err
      Src: /src/opendal/bindings/dotnet/src/operator.rs:523,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 3
    argNames:
    - op
    - executor
    - path
    argTypes:
    - '*const opendal::Operator'
    - '*const c_void'
    - '*const c_char'
    constantsTouched: []
    func_position:
      end: 526
      start: 514
    functionDepth: 33
    functionLinenumber: 514
    functionLinenumberEnd: 526
    functionName: operator_delete_inner
    functionSourceFile: /src/opendal/bindings/dotnet/src/operator.rs
    functionUses: 1
    functionsReached:
    - F::Output::map_err
    - delete
    - executor_or_default
    - '{

      byte_buffer::ByteBuffer,

      entry::into_entry_list_ptr,

      error::OpenDALError,

      executor::executor_or_default,

      metadata::OpendalMetadata,

      operator_info::require_cstr'
    - Self::block_on
    - require_operator
    linkageType: ''
    returnType: Result
    signature: 'fn operator_delete_inner(op: *const opendal::Operator,executor: *const
      c_void,path: *const c_char,) -> Result<(), OpenDALError>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: operator_delete_async_inner
      Src: /src/opendal/bindings/dotnet/src/operator.rs:544,1
    - Dst: OpendalResult::ok
      Src: /src/opendal/bindings/dotnet/src/operator.rs:545,1
    - Dst: OpendalResult::from_error
      Src: /src/opendal/bindings/dotnet/src/operator.rs:546,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 5
    argNames:
    - op
    - executor
    - path
    - callback
    - context
    argTypes:
    - '*const opendal::Operator'
    - '*const c_void'
    - '*const c_char'
    - Option<WriteCallback>
    - i64
    constantsTouched: []
    func_position:
      end: 548
      start: 537
    functionDepth: 34
    functionLinenumber: 537
    functionLinenumberEnd: 548
    functionName: operator_delete_async
    functionSourceFile: /src/opendal/bindings/dotnet/src/operator.rs
    functionUses: 0
    functionsReached:
    - OpendalResult::from_error
    - operator_delete_async_inner
    - OpendalResult::ok
    linkageType: ''
    returnType: OpendalResult
    signature: 'pub extern "C" fn operator_delete_async(op: *const opendal::Operator,executor:
      *const c_void,path: *const c_char,callback: Option<WriteCallback>,context: i64,)
      -> OpendalResult'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: require_operator
      Src: /src/opendal/bindings/dotnet/src/operator.rs:557,1
    - Dst: executor_or_default
      Src: /src/opendal/bindings/dotnet/src/operator.rs:558,1
    - Dst: '{

        byte_buffer::ByteBuffer,

        entry::into_entry_list_ptr,

        error::OpenDALError,

        executor::executor_or_default,

        metadata::OpendalMetadata,

        operator_info::require_cstr'
      Src: /src/opendal/bindings/dotnet/src/operator.rs:559,1
    - Dst: to_string
      Src: /src/opendal/bindings/dotnet/src/operator.rs:559,1
    - Dst: '{

        byte_buffer::ByteBuffer,

        entry::into_entry_list_ptr,

        error::OpenDALError,

        executor::executor_or_default,

        metadata::OpendalMetadata,

        operator_info::require_callback'
      Src: /src/opendal/bindings/dotnet/src/operator.rs:560,1
    - Dst: clone
      Src: /src/opendal/bindings/dotnet/src/operator.rs:562,1
    - Dst: Self::spawn
      Src: /src/opendal/bindings/dotnet/src/operator.rs:563,1
    - Dst: delete
      Src: /src/opendal/bindings/dotnet/src/operator.rs:564,1
    - Dst: map_err
      Src: /src/opendal/bindings/dotnet/src/operator.rs:564,1
    - Dst: callback
      Src: /src/opendal/bindings/dotnet/src/operator.rs:569,1
    - Dst: OpendalResult::ok
      Src: /src/opendal/bindings/dotnet/src/operator.rs:572,1
    - Dst: OpendalResult::from_error
      Src: /src/opendal/bindings/dotnet/src/operator.rs:573,1
    - Dst: Ok
      Src: /src/opendal/bindings/dotnet/src/operator.rs:578,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 28
    argCount: 5
    argNames:
    - op
    - executor
    - path
    - callback
    - context
    argTypes:
    - '*const opendal::Operator'
    - '*const c_void'
    - '*const c_char'
    - Option<WriteCallback>
    - i64
    constantsTouched: []
    func_position:
      end: 579
      start: 550
    functionDepth: 33
    functionLinenumber: 550
    functionLinenumberEnd: 579
    functionName: operator_delete_async_inner
    functionSourceFile: /src/opendal/bindings/dotnet/src/operator.rs
    functionUses: 1
    functionsReached:
    - map_err
    - to_string
    - OpendalResult::from_error
    - Ok
    - delete
    - executor_or_default
    - OpendalResult::ok
    - '{

      byte_buffer::ByteBuffer,

      entry::into_entry_list_ptr,

      error::OpenDALError,

      executor::executor_or_default,

      metadata::OpendalMetadata,

      operator_info::require_cstr'
    - clone
    - callback
    - require_operator
    - Self::spawn
    - '{

      byte_buffer::ByteBuffer,

      entry::into_entry_list_ptr,

      error::OpenDALError,

      executor::executor_or_default,

      metadata::OpendalMetadata,

      operator_info::require_callback'
    linkageType: ''
    returnType: Result
    signature: 'fn operator_delete_async_inner(op: *const opendal::Operator,executor:
      *const c_void,path: *const c_char,callback: Option<WriteCallback>,context: i64,)
      -> Result<(), OpenDALError>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: require_operator
      Src: /src/opendal/bindings/dotnet/src/operator.rs:603,1
    - Dst: executor_or_default
      Src: /src/opendal/bindings/dotnet/src/operator.rs:604,1
    - Dst: '{

        byte_buffer::ByteBuffer,

        entry::into_entry_list_ptr,

        error::OpenDALError,

        executor::executor_or_default,

        metadata::OpendalMetadata,

        operator_info::require_cstr'
      Src: /src/opendal/bindings/dotnet/src/operator.rs:605,1
    - Dst: Self::block_on
      Src: /src/opendal/bindings/dotnet/src/operator.rs:607,1
    - Dst: create_dir
      Src: /src/opendal/bindings/dotnet/src/operator.rs:608,1
    - Dst: F::Output::map_err
      Src: /src/opendal/bindings/dotnet/src/operator.rs:607,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 3
    argNames:
    - op
    - executor
    - path
    argTypes:
    - '*const opendal::Operator'
    - '*const c_void'
    - '*const c_char'
    constantsTouched: []
    func_position:
      end: 610
      start: 598
    functionDepth: 33
    functionLinenumber: 598
    functionLinenumberEnd: 610
    functionName: operator_create_dir_inner
    functionSourceFile: /src/opendal/bindings/dotnet/src/operator.rs
    functionUses: 1
    functionsReached:
    - F::Output::map_err
    - executor_or_default
    - '{

      byte_buffer::ByteBuffer,

      entry::into_entry_list_ptr,

      error::OpenDALError,

      executor::executor_or_default,

      metadata::OpendalMetadata,

      operator_info::require_cstr'
    - Self::block_on
    - create_dir
    - require_operator
    linkageType: ''
    returnType: Result
    signature: 'fn operator_create_dir_inner(op: *const opendal::Operator,executor:
      *const c_void,path: *const c_char,) -> Result<(), OpenDALError>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: operator_create_dir_async_inner
      Src: /src/opendal/bindings/dotnet/src/operator.rs:628,1
    - Dst: OpendalResult::ok
      Src: /src/opendal/bindings/dotnet/src/operator.rs:629,1
    - Dst: OpendalResult::from_error
      Src: /src/opendal/bindings/dotnet/src/operator.rs:630,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 5
    argNames:
    - op
    - executor
    - path
    - callback
    - context
    argTypes:
    - '*const opendal::Operator'
    - '*const c_void'
    - '*const c_char'
    - Option<WriteCallback>
    - i64
    constantsTouched: []
    func_position:
      end: 632
      start: 621
    functionDepth: 34
    functionLinenumber: 621
    functionLinenumberEnd: 632
    functionName: operator_create_dir_async
    functionSourceFile: /src/opendal/bindings/dotnet/src/operator.rs
    functionUses: 0
    functionsReached:
    - OpendalResult::from_error
    - operator_create_dir_async_inner
    - OpendalResult::ok
    linkageType: ''
    returnType: OpendalResult
    signature: 'pub extern "C" fn operator_create_dir_async(op: *const opendal::Operator,executor:
      *const c_void,path: *const c_char,callback: Option<WriteCallback>,context: i64,)
      -> OpendalResult'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: require_operator
      Src: /src/opendal/bindings/dotnet/src/operator.rs:641,1
    - Dst: executor_or_default
      Src: /src/opendal/bindings/dotnet/src/operator.rs:642,1
    - Dst: '{

        byte_buffer::ByteBuffer,

        entry::into_entry_list_ptr,

        error::OpenDALError,

        executor::executor_or_default,

        metadata::OpendalMetadata,

        operator_info::require_cstr'
      Src: /src/opendal/bindings/dotnet/src/operator.rs:643,1
    - Dst: to_string
      Src: /src/opendal/bindings/dotnet/src/operator.rs:643,1
    - Dst: '{

        byte_buffer::ByteBuffer,

        entry::into_entry_list_ptr,

        error::OpenDALError,

        executor::executor_or_default,

        metadata::OpendalMetadata,

        operator_info::require_callback'
      Src: /src/opendal/bindings/dotnet/src/operator.rs:644,1
    - Dst: clone
      Src: /src/opendal/bindings/dotnet/src/operator.rs:646,1
    - Dst: Self::spawn
      Src: /src/opendal/bindings/dotnet/src/operator.rs:647,1
    - Dst: create_dir
      Src: /src/opendal/bindings/dotnet/src/operator.rs:648,1
    - Dst: map_err
      Src: /src/opendal/bindings/dotnet/src/operator.rs:648,1
    - Dst: callback
      Src: /src/opendal/bindings/dotnet/src/operator.rs:653,1
    - Dst: OpendalResult::ok
      Src: /src/opendal/bindings/dotnet/src/operator.rs:656,1
    - Dst: OpendalResult::from_error
      Src: /src/opendal/bindings/dotnet/src/operator.rs:657,1
    - Dst: Ok
      Src: /src/opendal/bindings/dotnet/src/operator.rs:662,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 28
    argCount: 5
    argNames:
    - op
    - executor
    - path
    - callback
    - context
    argTypes:
    - '*const opendal::Operator'
    - '*const c_void'
    - '*const c_char'
    - Option<WriteCallback>
    - i64
    constantsTouched: []
    func_position:
      end: 663
      start: 634
    functionDepth: 33
    functionLinenumber: 634
    functionLinenumberEnd: 663
    functionName: operator_create_dir_async_inner
    functionSourceFile: /src/opendal/bindings/dotnet/src/operator.rs
    functionUses: 1
    functionsReached:
    - map_err
    - to_string
    - OpendalResult::from_error
    - Ok
    - executor_or_default
    - OpendalResult::ok
    - '{

      byte_buffer::ByteBuffer,

      entry::into_entry_list_ptr,

      error::OpenDALError,

      executor::executor_or_default,

      metadata::OpendalMetadata,

      operator_info::require_cstr'
    - clone
    - callback
    - create_dir
    - require_operator
    - Self::spawn
    - '{

      byte_buffer::ByteBuffer,

      entry::into_entry_list_ptr,

      error::OpenDALError,

      executor::executor_or_default,

      metadata::OpendalMetadata,

      operator_info::require_callback'
    linkageType: ''
    returnType: Result
    signature: 'fn operator_create_dir_async_inner(op: *const opendal::Operator,executor:
      *const c_void,path: *const c_char,callback: Option<WriteCallback>,context: i64,)
      -> Result<(), OpenDALError>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: require_operator
      Src: /src/opendal/bindings/dotnet/src/operator.rs:689,1
    - Dst: executor_or_default
      Src: /src/opendal/bindings/dotnet/src/operator.rs:690,1
    - Dst: '{

        byte_buffer::ByteBuffer,

        entry::into_entry_list_ptr,

        error::OpenDALError,

        executor::executor_or_default,

        metadata::OpendalMetadata,

        operator_info::require_cstr'
      Src: /src/opendal/bindings/dotnet/src/operator.rs:691,1
    - Dst: '{

        byte_buffer::ByteBuffer,

        entry::into_entry_list_ptr,

        error::OpenDALError,

        executor::executor_or_default,

        metadata::OpendalMetadata,

        operator_info::require_cstr'
      Src: /src/opendal/bindings/dotnet/src/operator.rs:692,1
    - Dst: Self::block_on
      Src: /src/opendal/bindings/dotnet/src/operator.rs:694,1
    - Dst: copy
      Src: /src/opendal/bindings/dotnet/src/operator.rs:695,1
    - Dst: F::Output::map
      Src: /src/opendal/bindings/dotnet/src/operator.rs:694,1
    - Dst: Result::map_err
      Src: /src/opendal/bindings/dotnet/src/operator.rs:694,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 4
    argNames:
    - op
    - executor
    - source_path
    - target_path
    argTypes:
    - '*const opendal::Operator'
    - '*const c_void'
    - '*const c_char'
    - '*const c_char'
    constantsTouched: []
    func_position:
      end: 698
      start: 683
    functionDepth: 33
    functionLinenumber: 683
    functionLinenumberEnd: 698
    functionName: operator_copy_inner
    functionSourceFile: /src/opendal/bindings/dotnet/src/operator.rs
    functionUses: 1
    functionsReached:
    - Result::map_err
    - executor_or_default
    - '{

      byte_buffer::ByteBuffer,

      entry::into_entry_list_ptr,

      error::OpenDALError,

      executor::executor_or_default,

      metadata::OpendalMetadata,

      operator_info::require_cstr'
    - F::Output::map
    - Self::block_on
    - require_operator
    - copy
    linkageType: ''
    returnType: Result
    signature: 'fn operator_copy_inner(op: *const opendal::Operator,executor: *const
      c_void,source_path: *const c_char,target_path: *const c_char,) -> Result<(),
      OpenDALError>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: operator_copy_async_inner
      Src: /src/opendal/bindings/dotnet/src/operator.rs:717,1
    - Dst: OpendalResult::ok
      Src: /src/opendal/bindings/dotnet/src/operator.rs:718,1
    - Dst: OpendalResult::from_error
      Src: /src/opendal/bindings/dotnet/src/operator.rs:719,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 6
    argNames:
    - op
    - executor
    - source_path
    - target_path
    - callback
    - context
    argTypes:
    - '*const opendal::Operator'
    - '*const c_void'
    - '*const c_char'
    - '*const c_char'
    - Option<WriteCallback>
    - i64
    constantsTouched: []
    func_position:
      end: 721
      start: 709
    functionDepth: 34
    functionLinenumber: 709
    functionLinenumberEnd: 721
    functionName: operator_copy_async
    functionSourceFile: /src/opendal/bindings/dotnet/src/operator.rs
    functionUses: 0
    functionsReached:
    - OpendalResult::from_error
    - operator_copy_async_inner
    - OpendalResult::ok
    linkageType: ''
    returnType: OpendalResult
    signature: 'pub extern "C" fn operator_copy_async(op: *const opendal::Operator,executor:
      *const c_void,source_path: *const c_char,target_path: *const c_char,callback:
      Option<WriteCallback>,context: i64,) -> OpendalResult'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: require_operator
      Src: /src/opendal/bindings/dotnet/src/operator.rs:731,1
    - Dst: executor_or_default
      Src: /src/opendal/bindings/dotnet/src/operator.rs:732,1
    - Dst: '{

        byte_buffer::ByteBuffer,

        entry::into_entry_list_ptr,

        error::OpenDALError,

        executor::executor_or_default,

        metadata::OpendalMetadata,

        operator_info::require_cstr'
      Src: /src/opendal/bindings/dotnet/src/operator.rs:733,1
    - Dst: to_string
      Src: /src/opendal/bindings/dotnet/src/operator.rs:733,1
    - Dst: '{

        byte_buffer::ByteBuffer,

        entry::into_entry_list_ptr,

        error::OpenDALError,

        executor::executor_or_default,

        metadata::OpendalMetadata,

        operator_info::require_cstr'
      Src: /src/opendal/bindings/dotnet/src/operator.rs:734,1
    - Dst: to_string
      Src: /src/opendal/bindings/dotnet/src/operator.rs:734,1
    - Dst: '{

        byte_buffer::ByteBuffer,

        entry::into_entry_list_ptr,

        error::OpenDALError,

        executor::executor_or_default,

        metadata::OpendalMetadata,

        operator_info::require_callback'
      Src: /src/opendal/bindings/dotnet/src/operator.rs:735,1
    - Dst: clone
      Src: /src/opendal/bindings/dotnet/src/operator.rs:737,1
    - Dst: Self::spawn
      Src: /src/opendal/bindings/dotnet/src/operator.rs:738,1
    - Dst: copy
      Src: /src/opendal/bindings/dotnet/src/operator.rs:739,1
    - Dst: map
      Src: /src/opendal/bindings/dotnet/src/operator.rs:739,1
    - Dst: map_err
      Src: /src/opendal/bindings/dotnet/src/operator.rs:739,1
    - Dst: callback
      Src: /src/opendal/bindings/dotnet/src/operator.rs:745,1
    - Dst: OpendalResult::ok
      Src: /src/opendal/bindings/dotnet/src/operator.rs:748,1
    - Dst: OpendalResult::from_error
      Src: /src/opendal/bindings/dotnet/src/operator.rs:749,1
    - Dst: Ok
      Src: /src/opendal/bindings/dotnet/src/operator.rs:754,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 37
    argCount: 6
    argNames:
    - op
    - executor
    - source_path
    - target_path
    - callback
    - context
    argTypes:
    - '*const opendal::Operator'
    - '*const c_void'
    - '*const c_char'
    - '*const c_char'
    - Option<WriteCallback>
    - i64
    constantsTouched: []
    func_position:
      end: 755
      start: 723
    functionDepth: 33
    functionLinenumber: 723
    functionLinenumberEnd: 755
    functionName: operator_copy_async_inner
    functionSourceFile: /src/opendal/bindings/dotnet/src/operator.rs
    functionUses: 1
    functionsReached:
    - map_err
    - to_string
    - OpendalResult::from_error
    - Ok
    - executor_or_default
    - OpendalResult::ok
    - '{

      byte_buffer::ByteBuffer,

      entry::into_entry_list_ptr,

      error::OpenDALError,

      executor::executor_or_default,

      metadata::OpendalMetadata,

      operator_info::require_cstr'
    - clone
    - callback
    - map
    - require_operator
    - copy
    - Self::spawn
    - '{

      byte_buffer::ByteBuffer,

      entry::into_entry_list_ptr,

      error::OpenDALError,

      executor::executor_or_default,

      metadata::OpendalMetadata,

      operator_info::require_callback'
    linkageType: ''
    returnType: Result
    signature: 'fn operator_copy_async_inner(op: *const opendal::Operator,executor:
      *const c_void,source_path: *const c_char,target_path: *const c_char,callback:
      Option<WriteCallback>,context: i64,) -> Result<(), OpenDALError>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: require_operator
      Src: /src/opendal/bindings/dotnet/src/operator.rs:781,1
    - Dst: executor_or_default
      Src: /src/opendal/bindings/dotnet/src/operator.rs:782,1
    - Dst: '{

        byte_buffer::ByteBuffer,

        entry::into_entry_list_ptr,

        error::OpenDALError,

        executor::executor_or_default,

        metadata::OpendalMetadata,

        operator_info::require_cstr'
      Src: /src/opendal/bindings/dotnet/src/operator.rs:783,1
    - Dst: '{

        byte_buffer::ByteBuffer,

        entry::into_entry_list_ptr,

        error::OpenDALError,

        executor::executor_or_default,

        metadata::OpendalMetadata,

        operator_info::require_cstr'
      Src: /src/opendal/bindings/dotnet/src/operator.rs:784,1
    - Dst: Self::block_on
      Src: /src/opendal/bindings/dotnet/src/operator.rs:786,1
    - Dst: rename
      Src: /src/opendal/bindings/dotnet/src/operator.rs:787,1
    - Dst: F::Output::map_err
      Src: /src/opendal/bindings/dotnet/src/operator.rs:786,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 4
    argNames:
    - op
    - executor
    - source_path
    - target_path
    argTypes:
    - '*const opendal::Operator'
    - '*const c_void'
    - '*const c_char'
    - '*const c_char'
    constantsTouched: []
    func_position:
      end: 789
      start: 775
    functionDepth: 33
    functionLinenumber: 775
    functionLinenumberEnd: 789
    functionName: operator_rename_inner
    functionSourceFile: /src/opendal/bindings/dotnet/src/operator.rs
    functionUses: 1
    functionsReached:
    - F::Output::map_err
    - executor_or_default
    - '{

      byte_buffer::ByteBuffer,

      entry::into_entry_list_ptr,

      error::OpenDALError,

      executor::executor_or_default,

      metadata::OpendalMetadata,

      operator_info::require_cstr'
    - Self::block_on
    - rename
    - require_operator
    linkageType: ''
    returnType: Result
    signature: 'fn operator_rename_inner(op: *const opendal::Operator,executor: *const
      c_void,source_path: *const c_char,target_path: *const c_char,) -> Result<(),
      OpenDALError>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: operator_rename_async_inner
      Src: /src/opendal/bindings/dotnet/src/operator.rs:808,1
    - Dst: OpendalResult::ok
      Src: /src/opendal/bindings/dotnet/src/operator.rs:809,1
    - Dst: OpendalResult::from_error
      Src: /src/opendal/bindings/dotnet/src/operator.rs:810,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 6
    argNames:
    - op
    - executor
    - source_path
    - target_path
    - callback
    - context
    argTypes:
    - '*const opendal::Operator'
    - '*const c_void'
    - '*const c_char'
    - '*const c_char'
    - Option<WriteCallback>
    - i64
    constantsTouched: []
    func_position:
      end: 812
      start: 800
    functionDepth: 34
    functionLinenumber: 800
    functionLinenumberEnd: 812
    functionName: operator_rename_async
    functionSourceFile: /src/opendal/bindings/dotnet/src/operator.rs
    functionUses: 0
    functionsReached:
    - OpendalResult::from_error
    - operator_rename_async_inner
    - OpendalResult::ok
    linkageType: ''
    returnType: OpendalResult
    signature: 'pub extern "C" fn operator_rename_async(op: *const opendal::Operator,executor:
      *const c_void,source_path: *const c_char,target_path: *const c_char,callback:
      Option<WriteCallback>,context: i64,) -> OpendalResult'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: require_operator
      Src: /src/opendal/bindings/dotnet/src/operator.rs:822,1
    - Dst: executor_or_default
      Src: /src/opendal/bindings/dotnet/src/operator.rs:823,1
    - Dst: '{

        byte_buffer::ByteBuffer,

        entry::into_entry_list_ptr,

        error::OpenDALError,

        executor::executor_or_default,

        metadata::OpendalMetadata,

        operator_info::require_cstr'
      Src: /src/opendal/bindings/dotnet/src/operator.rs:824,1
    - Dst: to_string
      Src: /src/opendal/bindings/dotnet/src/operator.rs:824,1
    - Dst: '{

        byte_buffer::ByteBuffer,

        entry::into_entry_list_ptr,

        error::OpenDALError,

        executor::executor_or_default,

        metadata::OpendalMetadata,

        operator_info::require_cstr'
      Src: /src/opendal/bindings/dotnet/src/operator.rs:825,1
    - Dst: to_string
      Src: /src/opendal/bindings/dotnet/src/operator.rs:825,1
    - Dst: '{

        byte_buffer::ByteBuffer,

        entry::into_entry_list_ptr,

        error::OpenDALError,

        executor::executor_or_default,

        metadata::OpendalMetadata,

        operator_info::require_callback'
      Src: /src/opendal/bindings/dotnet/src/operator.rs:826,1
    - Dst: clone
      Src: /src/opendal/bindings/dotnet/src/operator.rs:828,1
    - Dst: Self::spawn
      Src: /src/opendal/bindings/dotnet/src/operator.rs:829,1
    - Dst: rename
      Src: /src/opendal/bindings/dotnet/src/operator.rs:830,1
    - Dst: map_err
      Src: /src/opendal/bindings/dotnet/src/operator.rs:830,1
    - Dst: callback
      Src: /src/opendal/bindings/dotnet/src/operator.rs:835,1
    - Dst: OpendalResult::ok
      Src: /src/opendal/bindings/dotnet/src/operator.rs:838,1
    - Dst: OpendalResult::from_error
      Src: /src/opendal/bindings/dotnet/src/operator.rs:839,1
    - Dst: Ok
      Src: /src/opendal/bindings/dotnet/src/operator.rs:844,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 33
    argCount: 6
    argNames:
    - op
    - executor
    - source_path
    - target_path
    - callback
    - context
    argTypes:
    - '*const opendal::Operator'
    - '*const c_void'
    - '*const c_char'
    - '*const c_char'
    - Option<WriteCallback>
    - i64
    constantsTouched: []
    func_position:
      end: 845
      start: 814
    functionDepth: 33
    functionLinenumber: 814
    functionLinenumberEnd: 845
    functionName: operator_rename_async_inner
    functionSourceFile: /src/opendal/bindings/dotnet/src/operator.rs
    functionUses: 1
    functionsReached:
    - map_err
    - to_string
    - OpendalResult::from_error
    - Ok
    - executor_or_default
    - OpendalResult::ok
    - '{

      byte_buffer::ByteBuffer,

      entry::into_entry_list_ptr,

      error::OpenDALError,

      executor::executor_or_default,

      metadata::OpendalMetadata,

      operator_info::require_cstr'
    - clone
    - callback
    - rename
    - require_operator
    - Self::spawn
    - '{

      byte_buffer::ByteBuffer,

      entry::into_entry_list_ptr,

      error::OpenDALError,

      executor::executor_or_default,

      metadata::OpendalMetadata,

      operator_info::require_callback'
    linkageType: ''
    returnType: Result
    signature: 'fn operator_rename_async_inner(op: *const opendal::Operator,executor:
      *const c_void,source_path: *const c_char,target_path: *const c_char,callback:
      Option<WriteCallback>,context: i64,) -> Result<(), OpenDALError>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: operator_remove_all_inner
      Src: /src/opendal/bindings/dotnet/src/operator.rs:858,1
    - Dst: OpendalResult::ok
      Src: /src/opendal/bindings/dotnet/src/operator.rs:859,1
    - Dst: OpendalResult::from_error
      Src: /src/opendal/bindings/dotnet/src/operator.rs:860,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - op
    - executor
    - path
    argTypes:
    - '*const opendal::Operator'
    - '*const c_void'
    - '*const c_char'
    constantsTouched: []
    func_position:
      end: 862
      start: 853
    functionDepth: 34
    functionLinenumber: 853
    functionLinenumberEnd: 862
    functionName: operator_remove_all
    functionSourceFile: /src/opendal/bindings/dotnet/src/operator.rs
    functionUses: 0
    functionsReached:
    - OpendalResult::from_error
    - operator_remove_all_inner
    - OpendalResult::ok
    linkageType: ''
    returnType: OpendalResult
    signature: 'pub extern "C" fn operator_remove_all(op: *const opendal::Operator,executor:
      *const c_void,path: *const c_char,) -> OpendalResult'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: require_operator
      Src: /src/opendal/bindings/dotnet/src/operator.rs:869,1
    - Dst: executor_or_default
      Src: /src/opendal/bindings/dotnet/src/operator.rs:870,1
    - Dst: '{

        byte_buffer::ByteBuffer,

        entry::into_entry_list_ptr,

        error::OpenDALError,

        executor::executor_or_default,

        metadata::OpendalMetadata,

        operator_info::require_cstr'
      Src: /src/opendal/bindings/dotnet/src/operator.rs:871,1
    - Dst: Default::default
      Src: /src/opendal/bindings/dotnet/src/operator.rs:875,1
    - Dst: Self::block_on
      Src: /src/opendal/bindings/dotnet/src/operator.rs:878,1
    - Dst: delete_options
      Src: /src/opendal/bindings/dotnet/src/operator.rs:879,1
    - Dst: F::Output::map_err
      Src: /src/opendal/bindings/dotnet/src/operator.rs:878,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 3
    argNames:
    - op
    - executor
    - path
    argTypes:
    - '*const opendal::Operator'
    - '*const c_void'
    - '*const c_char'
    constantsTouched: []
    func_position:
      end: 881
      start: 864
    functionDepth: 33
    functionLinenumber: 864
    functionLinenumberEnd: 881
    functionName: operator_remove_all_inner
    functionSourceFile: /src/opendal/bindings/dotnet/src/operator.rs
    functionUses: 1
    functionsReached:
    - F::Output::map_err
    - delete_options
    - executor_or_default
    - Default::default
    - '{

      byte_buffer::ByteBuffer,

      entry::into_entry_list_ptr,

      error::OpenDALError,

      executor::executor_or_default,

      metadata::OpendalMetadata,

      operator_info::require_cstr'
    - Self::block_on
    - require_operator
    linkageType: ''
    returnType: Result
    signature: 'fn operator_remove_all_inner(op: *const opendal::Operator,executor:
      *const c_void,path: *const c_char,) -> Result<(), OpenDALError>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: operator_remove_all_async_inner
      Src: /src/opendal/bindings/dotnet/src/operator.rs:899,1
    - Dst: OpendalResult::ok
      Src: /src/opendal/bindings/dotnet/src/operator.rs:900,1
    - Dst: OpendalResult::from_error
      Src: /src/opendal/bindings/dotnet/src/operator.rs:901,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 5
    argNames:
    - op
    - executor
    - path
    - callback
    - context
    argTypes:
    - '*const opendal::Operator'
    - '*const c_void'
    - '*const c_char'
    - Option<WriteCallback>
    - i64
    constantsTouched: []
    func_position:
      end: 903
      start: 892
    functionDepth: 34
    functionLinenumber: 892
    functionLinenumberEnd: 903
    functionName: operator_remove_all_async
    functionSourceFile: /src/opendal/bindings/dotnet/src/operator.rs
    functionUses: 0
    functionsReached:
    - OpendalResult::from_error
    - operator_remove_all_async_inner
    - OpendalResult::ok
    linkageType: ''
    returnType: OpendalResult
    signature: 'pub extern "C" fn operator_remove_all_async(op: *const opendal::Operator,executor:
      *const c_void,path: *const c_char,callback: Option<WriteCallback>,context: i64,)
      -> OpendalResult'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: require_operator
      Src: /src/opendal/bindings/dotnet/src/operator.rs:912,1
    - Dst: executor_or_default
      Src: /src/opendal/bindings/dotnet/src/operator.rs:913,1
    - Dst: '{

        byte_buffer::ByteBuffer,

        entry::into_entry_list_ptr,

        error::OpenDALError,

        executor::executor_or_default,

        metadata::OpendalMetadata,

        operator_info::require_cstr'
      Src: /src/opendal/bindings/dotnet/src/operator.rs:914,1
    - Dst: to_string
      Src: /src/opendal/bindings/dotnet/src/operator.rs:914,1
    - Dst: '{

        byte_buffer::ByteBuffer,

        entry::into_entry_list_ptr,

        error::OpenDALError,

        executor::executor_or_default,

        metadata::OpendalMetadata,

        operator_info::require_callback'
      Src: /src/opendal/bindings/dotnet/src/operator.rs:915,1
    - Dst: Default::default
      Src: /src/opendal/bindings/dotnet/src/operator.rs:918,1
    - Dst: clone
      Src: /src/opendal/bindings/dotnet/src/operator.rs:921,1
    - Dst: Self::spawn
      Src: /src/opendal/bindings/dotnet/src/operator.rs:922,1
    - Dst: delete_options
      Src: /src/opendal/bindings/dotnet/src/operator.rs:923,1
    - Dst: map_err
      Src: /src/opendal/bindings/dotnet/src/operator.rs:923,1
    - Dst: callback
      Src: /src/opendal/bindings/dotnet/src/operator.rs:928,1
    - Dst: OpendalResult::ok
      Src: /src/opendal/bindings/dotnet/src/operator.rs:931,1
    - Dst: OpendalResult::from_error
      Src: /src/opendal/bindings/dotnet/src/operator.rs:932,1
    - Dst: Ok
      Src: /src/opendal/bindings/dotnet/src/operator.rs:937,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 30
    argCount: 5
    argNames:
    - op
    - executor
    - path
    - callback
    - context
    argTypes:
    - '*const opendal::Operator'
    - '*const c_void'
    - '*const c_char'
    - Option<WriteCallback>
    - i64
    constantsTouched: []
    func_position:
      end: 938
      start: 905
    functionDepth: 33
    functionLinenumber: 905
    functionLinenumberEnd: 938
    functionName: operator_remove_all_async_inner
    functionSourceFile: /src/opendal/bindings/dotnet/src/operator.rs
    functionUses: 1
    functionsReached:
    - map_err
    - to_string
    - delete_options
    - OpendalResult::from_error
    - Ok
    - executor_or_default
    - Default::default
    - OpendalResult::ok
    - '{

      byte_buffer::ByteBuffer,

      entry::into_entry_list_ptr,

      error::OpenDALError,

      executor::executor_or_default,

      metadata::OpendalMetadata,

      operator_info::require_cstr'
    - clone
    - callback
    - require_operator
    - Self::spawn
    - '{

      byte_buffer::ByteBuffer,

      entry::into_entry_list_ptr,

      error::OpenDALError,

      executor::executor_or_default,

      metadata::OpendalMetadata,

      operator_info::require_callback'
    linkageType: ''
    returnType: Result
    signature: 'fn operator_remove_all_async_inner(op: *const opendal::Operator,executor:
      *const c_void,path: *const c_char,callback: Option<WriteCallback>,context: i64,)
      -> Result<(), OpenDALError>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: operator_presign_read_async_inner
      Src: /src/opendal/bindings/dotnet/src/operator.rs:957,1
    - Dst: OpendalResult::ok
      Src: /src/opendal/bindings/dotnet/src/operator.rs:958,1
    - Dst: OpendalResult::from_error
      Src: /src/opendal/bindings/dotnet/src/operator.rs:959,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 6
    argNames:
    - op
    - executor
    - path
    - expire_nanos
    - callback
    - context
    argTypes:
    - '*const opendal::Operator'
    - '*const c_void'
    - '*const c_char'
    - u64
    - Option<PresignCallback>
    - i64
    constantsTouched: []
    func_position:
      end: 961
      start: 949
    functionDepth: 34
    functionLinenumber: 949
    functionLinenumberEnd: 961
    functionName: operator_presign_read_async
    functionSourceFile: /src/opendal/bindings/dotnet/src/operator.rs
    functionUses: 0
    functionsReached:
    - OpendalResult::from_error
    - OpendalResult::ok
    - operator_presign_read_async_inner
    linkageType: ''
    returnType: OpendalResult
    signature: 'pub extern "C" fn operator_presign_read_async(op: *const opendal::Operator,executor:
      *const c_void,path: *const c_char,expire_nanos: u64,callback: Option<PresignCallback>,context:
      i64,) -> OpendalResult'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: require_operator
      Src: /src/opendal/bindings/dotnet/src/operator.rs:971,1
    - Dst: executor_or_default
      Src: /src/opendal/bindings/dotnet/src/operator.rs:972,1
    - Dst: '{

        byte_buffer::ByteBuffer,

        entry::into_entry_list_ptr,

        error::OpenDALError,

        executor::executor_or_default,

        metadata::OpendalMetadata,

        operator_info::require_cstr'
      Src: /src/opendal/bindings/dotnet/src/operator.rs:973,1
    - Dst: to_string
      Src: /src/opendal/bindings/dotnet/src/operator.rs:973,1
    - Dst: '{

        byte_buffer::ByteBuffer,

        entry::into_entry_list_ptr,

        error::OpenDALError,

        executor::executor_or_default,

        metadata::OpendalMetadata,

        operator_info::require_callback'
      Src: /src/opendal/bindings/dotnet/src/operator.rs:974,1
    - Dst: Duration::from_nanos
      Src: /src/opendal/bindings/dotnet/src/operator.rs:975,1
    - Dst: clone
      Src: /src/opendal/bindings/dotnet/src/operator.rs:977,1
    - Dst: Self::spawn
      Src: /src/opendal/bindings/dotnet/src/operator.rs:978,1
    - Dst: presign_read
      Src: /src/opendal/bindings/dotnet/src/operator.rs:979,1
    - Dst: map_err
      Src: /src/opendal/bindings/dotnet/src/operator.rs:979,1
    - Dst: and_then
      Src: /src/opendal/bindings/dotnet/src/operator.rs:979,1
    - Dst: callback
      Src: /src/opendal/bindings/dotnet/src/operator.rs:985,1
    - Dst: OpendalPresignedRequestResult::ok
      Src: /src/opendal/bindings/dotnet/src/operator.rs:988,1
    - Dst: OpendalPresignedRequestResult::from_error
      Src: /src/opendal/bindings/dotnet/src/operator.rs:989,1
    - Dst: Ok
      Src: /src/opendal/bindings/dotnet/src/operator.rs:994,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 31
    argCount: 6
    argNames:
    - op
    - executor
    - path
    - expire_nanos
    - callback
    - context
    argTypes:
    - '*const opendal::Operator'
    - '*const c_void'
    - '*const c_char'
    - u64
    - Option<PresignCallback>
    - i64
    constantsTouched: []
    func_position:
      end: 995
      start: 963
    functionDepth: 33
    functionLinenumber: 963
    functionLinenumberEnd: 995
    functionName: operator_presign_read_async_inner
    functionSourceFile: /src/opendal/bindings/dotnet/src/operator.rs
    functionUses: 1
    functionsReached:
    - presign_read
    - to_string
    - map_err
    - OpendalPresignedRequestResult::from_error
    - and_then
    - Ok
    - executor_or_default
    - Duration::from_nanos
    - '{

      byte_buffer::ByteBuffer,

      entry::into_entry_list_ptr,

      error::OpenDALError,

      executor::executor_or_default,

      metadata::OpendalMetadata,

      operator_info::require_cstr'
    - clone
    - callback
    - OpendalPresignedRequestResult::ok
    - require_operator
    - Self::spawn
    - '{

      byte_buffer::ByteBuffer,

      entry::into_entry_list_ptr,

      error::OpenDALError,

      executor::executor_or_default,

      metadata::OpendalMetadata,

      operator_info::require_callback'
    linkageType: ''
    returnType: Result
    signature: 'fn operator_presign_read_async_inner(op: *const opendal::Operator,executor:
      *const c_void,path: *const c_char,expire_nanos: u64,callback: Option<PresignCallback>,context:
      i64,) -> Result<(), OpenDALError>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: operator_presign_write_async_inner
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1014,1
    - Dst: OpendalResult::ok
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1015,1
    - Dst: OpendalResult::from_error
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1016,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 6
    argNames:
    - op
    - executor
    - path
    - expire_nanos
    - callback
    - context
    argTypes:
    - '*const opendal::Operator'
    - '*const c_void'
    - '*const c_char'
    - u64
    - Option<PresignCallback>
    - i64
    constantsTouched: []
    func_position:
      end: 1018
      start: 1006
    functionDepth: 34
    functionLinenumber: 1006
    functionLinenumberEnd: 1018
    functionName: operator_presign_write_async
    functionSourceFile: /src/opendal/bindings/dotnet/src/operator.rs
    functionUses: 0
    functionsReached:
    - OpendalResult::from_error
    - operator_presign_write_async_inner
    - OpendalResult::ok
    linkageType: ''
    returnType: OpendalResult
    signature: 'pub extern "C" fn operator_presign_write_async(op: *const opendal::Operator,executor:
      *const c_void,path: *const c_char,expire_nanos: u64,callback: Option<PresignCallback>,context:
      i64,) -> OpendalResult'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: require_operator
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1028,1
    - Dst: executor_or_default
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1029,1
    - Dst: '{

        byte_buffer::ByteBuffer,

        entry::into_entry_list_ptr,

        error::OpenDALError,

        executor::executor_or_default,

        metadata::OpendalMetadata,

        operator_info::require_cstr'
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1030,1
    - Dst: to_string
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1030,1
    - Dst: '{

        byte_buffer::ByteBuffer,

        entry::into_entry_list_ptr,

        error::OpenDALError,

        executor::executor_or_default,

        metadata::OpendalMetadata,

        operator_info::require_callback'
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1031,1
    - Dst: Duration::from_nanos
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1032,1
    - Dst: clone
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1034,1
    - Dst: Self::spawn
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1035,1
    - Dst: presign_write
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1036,1
    - Dst: map_err
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1036,1
    - Dst: and_then
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1036,1
    - Dst: callback
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1042,1
    - Dst: OpendalPresignedRequestResult::ok
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1045,1
    - Dst: OpendalPresignedRequestResult::from_error
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1046,1
    - Dst: Ok
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1051,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 31
    argCount: 6
    argNames:
    - op
    - executor
    - path
    - expire_nanos
    - callback
    - context
    argTypes:
    - '*const opendal::Operator'
    - '*const c_void'
    - '*const c_char'
    - u64
    - Option<PresignCallback>
    - i64
    constantsTouched: []
    func_position:
      end: 1052
      start: 1020
    functionDepth: 33
    functionLinenumber: 1020
    functionLinenumberEnd: 1052
    functionName: operator_presign_write_async_inner
    functionSourceFile: /src/opendal/bindings/dotnet/src/operator.rs
    functionUses: 1
    functionsReached:
    - map_err
    - to_string
    - OpendalPresignedRequestResult::from_error
    - and_then
    - Ok
    - executor_or_default
    - Duration::from_nanos
    - '{

      byte_buffer::ByteBuffer,

      entry::into_entry_list_ptr,

      error::OpenDALError,

      executor::executor_or_default,

      metadata::OpendalMetadata,

      operator_info::require_cstr'
    - clone
    - callback
    - presign_write
    - OpendalPresignedRequestResult::ok
    - require_operator
    - Self::spawn
    - '{

      byte_buffer::ByteBuffer,

      entry::into_entry_list_ptr,

      error::OpenDALError,

      executor::executor_or_default,

      metadata::OpendalMetadata,

      operator_info::require_callback'
    linkageType: ''
    returnType: Result
    signature: 'fn operator_presign_write_async_inner(op: *const opendal::Operator,executor:
      *const c_void,path: *const c_char,expire_nanos: u64,callback: Option<PresignCallback>,context:
      i64,) -> Result<(), OpenDALError>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: operator_presign_stat_async_inner
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1071,1
    - Dst: OpendalResult::ok
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1072,1
    - Dst: OpendalResult::from_error
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1073,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 6
    argNames:
    - op
    - executor
    - path
    - expire_nanos
    - callback
    - context
    argTypes:
    - '*const opendal::Operator'
    - '*const c_void'
    - '*const c_char'
    - u64
    - Option<PresignCallback>
    - i64
    constantsTouched: []
    func_position:
      end: 1075
      start: 1063
    functionDepth: 34
    functionLinenumber: 1063
    functionLinenumberEnd: 1075
    functionName: operator_presign_stat_async
    functionSourceFile: /src/opendal/bindings/dotnet/src/operator.rs
    functionUses: 0
    functionsReached:
    - OpendalResult::from_error
    - OpendalResult::ok
    - operator_presign_stat_async_inner
    linkageType: ''
    returnType: OpendalResult
    signature: 'pub extern "C" fn operator_presign_stat_async(op: *const opendal::Operator,executor:
      *const c_void,path: *const c_char,expire_nanos: u64,callback: Option<PresignCallback>,context:
      i64,) -> OpendalResult'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: require_operator
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1085,1
    - Dst: executor_or_default
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1086,1
    - Dst: '{

        byte_buffer::ByteBuffer,

        entry::into_entry_list_ptr,

        error::OpenDALError,

        executor::executor_or_default,

        metadata::OpendalMetadata,

        operator_info::require_cstr'
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1087,1
    - Dst: to_string
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1087,1
    - Dst: '{

        byte_buffer::ByteBuffer,

        entry::into_entry_list_ptr,

        error::OpenDALError,

        executor::executor_or_default,

        metadata::OpendalMetadata,

        operator_info::require_callback'
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1088,1
    - Dst: Duration::from_nanos
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1089,1
    - Dst: clone
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1091,1
    - Dst: Self::spawn
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1092,1
    - Dst: presign_stat
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1093,1
    - Dst: map_err
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1093,1
    - Dst: and_then
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1093,1
    - Dst: callback
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1099,1
    - Dst: OpendalPresignedRequestResult::ok
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1102,1
    - Dst: OpendalPresignedRequestResult::from_error
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1103,1
    - Dst: Ok
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1108,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 31
    argCount: 6
    argNames:
    - op
    - executor
    - path
    - expire_nanos
    - callback
    - context
    argTypes:
    - '*const opendal::Operator'
    - '*const c_void'
    - '*const c_char'
    - u64
    - Option<PresignCallback>
    - i64
    constantsTouched: []
    func_position:
      end: 1109
      start: 1077
    functionDepth: 33
    functionLinenumber: 1077
    functionLinenumberEnd: 1109
    functionName: operator_presign_stat_async_inner
    functionSourceFile: /src/opendal/bindings/dotnet/src/operator.rs
    functionUses: 1
    functionsReached:
    - map_err
    - to_string
    - OpendalPresignedRequestResult::from_error
    - and_then
    - Ok
    - executor_or_default
    - Duration::from_nanos
    - presign_stat
    - '{

      byte_buffer::ByteBuffer,

      entry::into_entry_list_ptr,

      error::OpenDALError,

      executor::executor_or_default,

      metadata::OpendalMetadata,

      operator_info::require_cstr'
    - clone
    - callback
    - OpendalPresignedRequestResult::ok
    - require_operator
    - Self::spawn
    - '{

      byte_buffer::ByteBuffer,

      entry::into_entry_list_ptr,

      error::OpenDALError,

      executor::executor_or_default,

      metadata::OpendalMetadata,

      operator_info::require_callback'
    linkageType: ''
    returnType: Result
    signature: 'fn operator_presign_stat_async_inner(op: *const opendal::Operator,executor:
      *const c_void,path: *const c_char,expire_nanos: u64,callback: Option<PresignCallback>,context:
      i64,) -> Result<(), OpenDALError>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: operator_presign_delete_async_inner
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1128,1
    - Dst: OpendalResult::ok
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1129,1
    - Dst: OpendalResult::from_error
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1130,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 6
    argNames:
    - op
    - executor
    - path
    - expire_nanos
    - callback
    - context
    argTypes:
    - '*const opendal::Operator'
    - '*const c_void'
    - '*const c_char'
    - u64
    - Option<PresignCallback>
    - i64
    constantsTouched: []
    func_position:
      end: 1132
      start: 1120
    functionDepth: 34
    functionLinenumber: 1120
    functionLinenumberEnd: 1132
    functionName: operator_presign_delete_async
    functionSourceFile: /src/opendal/bindings/dotnet/src/operator.rs
    functionUses: 0
    functionsReached:
    - OpendalResult::from_error
    - OpendalResult::ok
    - operator_presign_delete_async_inner
    linkageType: ''
    returnType: OpendalResult
    signature: 'pub extern "C" fn operator_presign_delete_async(op: *const opendal::Operator,executor:
      *const c_void,path: *const c_char,expire_nanos: u64,callback: Option<PresignCallback>,context:
      i64,) -> OpendalResult'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: require_operator
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1142,1
    - Dst: executor_or_default
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1143,1
    - Dst: '{

        byte_buffer::ByteBuffer,

        entry::into_entry_list_ptr,

        error::OpenDALError,

        executor::executor_or_default,

        metadata::OpendalMetadata,

        operator_info::require_cstr'
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1144,1
    - Dst: to_string
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1144,1
    - Dst: '{

        byte_buffer::ByteBuffer,

        entry::into_entry_list_ptr,

        error::OpenDALError,

        executor::executor_or_default,

        metadata::OpendalMetadata,

        operator_info::require_callback'
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1145,1
    - Dst: Duration::from_nanos
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1146,1
    - Dst: clone
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1148,1
    - Dst: Self::spawn
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1149,1
    - Dst: presign_delete
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1150,1
    - Dst: map_err
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1150,1
    - Dst: and_then
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1150,1
    - Dst: callback
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1156,1
    - Dst: OpendalPresignedRequestResult::ok
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1159,1
    - Dst: OpendalPresignedRequestResult::from_error
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1160,1
    - Dst: Ok
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1165,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 31
    argCount: 6
    argNames:
    - op
    - executor
    - path
    - expire_nanos
    - callback
    - context
    argTypes:
    - '*const opendal::Operator'
    - '*const c_void'
    - '*const c_char'
    - u64
    - Option<PresignCallback>
    - i64
    constantsTouched: []
    func_position:
      end: 1166
      start: 1134
    functionDepth: 33
    functionLinenumber: 1134
    functionLinenumberEnd: 1166
    functionName: operator_presign_delete_async_inner
    functionSourceFile: /src/opendal/bindings/dotnet/src/operator.rs
    functionUses: 1
    functionsReached:
    - map_err
    - to_string
    - OpendalPresignedRequestResult::from_error
    - and_then
    - presign_delete
    - Ok
    - executor_or_default
    - Duration::from_nanos
    - '{

      byte_buffer::ByteBuffer,

      entry::into_entry_list_ptr,

      error::OpenDALError,

      executor::executor_or_default,

      metadata::OpendalMetadata,

      operator_info::require_cstr'
    - clone
    - callback
    - OpendalPresignedRequestResult::ok
    - require_operator
    - Self::spawn
    - '{

      byte_buffer::ByteBuffer,

      entry::into_entry_list_ptr,

      error::OpenDALError,

      executor::executor_or_default,

      metadata::OpendalMetadata,

      operator_info::require_callback'
    linkageType: ''
    returnType: Result
    signature: 'fn operator_presign_delete_async_inner(op: *const opendal::Operator,executor:
      *const c_void,path: *const c_char,expire_nanos: u64,callback: Option<PresignCallback>,context:
      i64,) -> Result<(), OpenDALError>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: operator_input_stream_create_inner
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1182,1
    - Dst: OpendalOperatorResult::ok
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1183,1
    - Dst: OpendalOperatorResult::from_error
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1184,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 4
    argNames:
    - op
    - executor
    - path
    - options
    argTypes:
    - '*const opendal::Operator'
    - '*const c_void'
    - '*const c_char'
    - '*const opendal::options::ReadOptions'
    constantsTouched: []
    func_position:
      end: 1186
      start: 1176
    functionDepth: 34
    functionLinenumber: 1176
    functionLinenumberEnd: 1186
    functionName: operator_input_stream_create
    functionSourceFile: /src/opendal/bindings/dotnet/src/operator.rs
    functionUses: 0
    functionsReached:
    - OpendalOperatorResult::from_error
    - OpendalOperatorResult::ok
    - operator_input_stream_create_inner
    linkageType: ''
    returnType: OpendalOperatorResult
    signature: 'pub extern "C" fn operator_input_stream_create(op: *const opendal::Operator,executor:
      *const c_void,path: *const c_char,options: *const opendal::options::ReadOptions,)
      -> OpendalOperatorResult'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: require_operator
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1194,1
    - Dst: executor_or_default
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1195,1
    - Dst: '{

        byte_buffer::ByteBuffer,

        entry::into_entry_list_ptr,

        error::OpenDALError,

        executor::executor_or_default,

        metadata::OpendalMetadata,

        operator_info::require_cstr'
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1196,1
    - Dst: to_string
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1196,1
    - Dst: Result::is_null
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1197,1
    - Dst: opendal::options::ReadOptions::default
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1198,1
    - Dst: clone
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1200,1
    - Dst: Self::enter
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1203,1
    - Dst: opendal::blocking::Operator::new
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1206,1
    - Dst: clone
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1206,1
    - Dst: Result::map_err
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1206,1
    - Dst: Result::reader_options
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1207,1
    - Dst: opendal::options::ReaderOptions::default
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1208,1
    - Dst: Result::map_err
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1207,1
    - Dst: anyhow::Result::into_bytes_iterator
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1210,1
    - Dst: to_range
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1211,1
    - Dst: Result::map_err
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1210,1
    - Dst: Ok
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1214,1
    - Dst: Box::into_raw
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1214,1
    - Dst: Box::new
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1214,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 45
    argCount: 4
    argNames:
    - op
    - executor
    - path
    - options
    argTypes:
    - '*const opendal::Operator'
    - '*const c_void'
    - '*const c_char'
    - '*const opendal::options::ReadOptions'
    constantsTouched: []
    func_position:
      end: 1215
      start: 1188
    functionDepth: 33
    functionLinenumber: 1188
    functionLinenumberEnd: 1215
    functionName: operator_input_stream_create_inner
    functionSourceFile: /src/opendal/bindings/dotnet/src/operator.rs
    functionUses: 1
    functionsReached:
    - Result::map_err
    - to_string
    - Result::is_null
    - Ok
    - executor_or_default
    - Box::new
    - Result::reader_options
    - to_range
    - '{

      byte_buffer::ByteBuffer,

      entry::into_entry_list_ptr,

      error::OpenDALError,

      executor::executor_or_default,

      metadata::OpendalMetadata,

      operator_info::require_cstr'
    - clone
    - Self::enter
    - require_operator
    - opendal::options::ReaderOptions::default
    - opendal::blocking::Operator::new
    - opendal::options::ReadOptions::default
    - Box::into_raw
    - anyhow::Result::into_bytes_iterator
    linkageType: ''
    returnType: Result
    signature: 'fn operator_input_stream_create_inner(op: *const opendal::Operator,executor:
      *const c_void,path: *const c_char,options: *const opendal::options::ReadOptions,)
      -> Result<*mut c_void, OpenDALError>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: operator_input_stream_read_next_inner
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1227,1
    - Dst: OpendalReadResult::ok
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1228,1
    - Dst: OpendalReadResult::from_error
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1229,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - stream
    argTypes:
    - '*mut opendal::blocking::StdBytesIterator'
    constantsTouched: []
    func_position:
      end: 1231
      start: 1224
    functionDepth: 33
    functionLinenumber: 1224
    functionLinenumberEnd: 1231
    functionName: operator_input_stream_read_next
    functionSourceFile: /src/opendal/bindings/dotnet/src/operator.rs
    functionUses: 0
    functionsReached:
    - operator_input_stream_read_next_inner
    - OpendalReadResult::from_error
    - OpendalReadResult::ok
    linkageType: ''
    returnType: OpendalReadResult
    signature: 'pub extern "C" fn operator_input_stream_read_next(stream: *mut opendal::blocking::StdBytesIterator,)
      -> OpendalReadResult'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::is_null
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1236,1
    - Dst: Err
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1237,1
    - Dst: crate::utils::config_invalid_error
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1237,1
    - Dst: Result::next
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1244,1
    - Dst: Result::transpose
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1244,1
    - Dst: map_err
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1244,1
    - Dst: OpenDALError::from_opendal_error
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1248,1
    - Dst: opendal::Error::new
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1248,1
    - Dst: Error::to_string
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1250,1
    - Dst: map
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1244,1
    - Dst: ByteBuffer::from_vec
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1253,1
    - Dst: Result::to_vec
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1253,1
    - Dst: unwrap_or_else
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1244,1
    - Dst: Ok
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1256,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 31
    argCount: 1
    argNames:
    - stream
    argTypes:
    - '*mut opendal::blocking::StdBytesIterator'
    constantsTouched: []
    func_position:
      end: 1257
      start: 1233
    functionDepth: 32
    functionLinenumber: 1233
    functionLinenumberEnd: 1257
    functionName: operator_input_stream_read_next_inner
    functionSourceFile: /src/opendal/bindings/dotnet/src/operator.rs
    functionUses: 1
    functionsReached:
    - map_err
    - Result::is_null
    - crate::utils::config_invalid_error
    - opendal::Error::new
    - Ok
    - OpenDALError::from_opendal_error
    - Error::to_string
    - Result::to_vec
    - Err
    - map
    - Result::next
    - ByteBuffer::from_vec
    - Result::transpose
    - unwrap_or_else
    linkageType: ''
    returnType: Result
    signature: 'fn operator_input_stream_read_next_inner(stream: *mut opendal::blocking::StdBytesIterator,)
      -> Result<ByteBuffer, OpenDALError>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::is_null
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1267,1
    - Dst: drop
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1272,1
    - Dst: Box::from_raw
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1272,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - stream
    argTypes:
    - '*mut opendal::blocking::StdBytesIterator'
    constantsTouched: []
    func_position:
      end: 1274
      start: 1264
    functionDepth: 33
    functionLinenumber: 1264
    functionLinenumberEnd: 1274
    functionName: operator_input_stream_free
    functionSourceFile: /src/opendal/bindings/dotnet/src/operator.rs
    functionUses: 0
    functionsReached:
    - Box::from_raw
    - Result::is_null
    - drop
    linkageType: ''
    returnType: void
    signature: 'pub unsafe extern "C" fn operator_input_stream_free(stream: *mut opendal::blocking::StdBytesIterator,)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: operator_output_stream_create_inner
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1290,1
    - Dst: OpendalOperatorResult::ok
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1291,1
    - Dst: OpendalOperatorResult::from_error
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1292,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 4
    argNames:
    - op
    - executor
    - path
    - options
    argTypes:
    - '*const opendal::Operator'
    - '*const c_void'
    - '*const c_char'
    - '*const opendal::options::WriteOptions'
    constantsTouched: []
    func_position:
      end: 1294
      start: 1284
    functionDepth: 34
    functionLinenumber: 1284
    functionLinenumberEnd: 1294
    functionName: operator_output_stream_create
    functionSourceFile: /src/opendal/bindings/dotnet/src/operator.rs
    functionUses: 0
    functionsReached:
    - OpendalOperatorResult::from_error
    - operator_output_stream_create_inner
    - OpendalOperatorResult::ok
    linkageType: ''
    returnType: OpendalOperatorResult
    signature: 'pub extern "C" fn operator_output_stream_create(op: *const opendal::Operator,executor:
      *const c_void,path: *const c_char,options: *const opendal::options::WriteOptions,)
      -> OpendalOperatorResult'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: require_operator
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1302,1
    - Dst: executor_or_default
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1303,1
    - Dst: '{

        byte_buffer::ByteBuffer,

        entry::into_entry_list_ptr,

        error::OpenDALError,

        executor::executor_or_default,

        metadata::OpendalMetadata,

        operator_info::require_cstr'
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1304,1
    - Dst: to_string
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1304,1
    - Dst: Result::is_null
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1305,1
    - Dst: opendal::options::WriteOptions::default
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1306,1
    - Dst: clone
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1308,1
    - Dst: Self::enter
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1311,1
    - Dst: opendal::blocking::Operator::new
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1314,1
    - Dst: clone
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1314,1
    - Dst: Result::map_err
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1314,1
    - Dst: Result::writer_options
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1315,1
    - Dst: Result::map_err
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1315,1
    - Dst: Ok
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1319,1
    - Dst: Box::into_raw
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1319,1
    - Dst: Box::new
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1319,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 36
    argCount: 4
    argNames:
    - op
    - executor
    - path
    - options
    argTypes:
    - '*const opendal::Operator'
    - '*const c_void'
    - '*const c_char'
    - '*const opendal::options::WriteOptions'
    constantsTouched: []
    func_position:
      end: 1320
      start: 1296
    functionDepth: 33
    functionLinenumber: 1296
    functionLinenumberEnd: 1320
    functionName: operator_output_stream_create_inner
    functionSourceFile: /src/opendal/bindings/dotnet/src/operator.rs
    functionUses: 1
    functionsReached:
    - Result::map_err
    - to_string
    - Result::is_null
    - Result::writer_options
    - Ok
    - executor_or_default
    - Box::new
    - opendal::options::WriteOptions::default
    - '{

      byte_buffer::ByteBuffer,

      entry::into_entry_list_ptr,

      error::OpenDALError,

      executor::executor_or_default,

      metadata::OpendalMetadata,

      operator_info::require_cstr'
    - clone
    - Self::enter
    - require_operator
    - opendal::blocking::Operator::new
    - Box::into_raw
    linkageType: ''
    returnType: Result
    signature: 'fn operator_output_stream_create_inner(op: *const opendal::Operator,executor:
      *const c_void,path: *const c_char,options: *const opendal::options::WriteOptions,)
      -> Result<*mut c_void, OpenDALError>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: operator_output_stream_write_inner
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1333,1
    - Dst: OpendalResult::ok
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1334,1
    - Dst: OpendalResult::from_error
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1335,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - stream
    - data
    - len
    argTypes:
    - '*mut opendal::blocking::Writer'
    - '*const u8'
    - usize
    constantsTouched: []
    func_position:
      end: 1337
      start: 1328
    functionDepth: 37
    functionLinenumber: 1328
    functionLinenumberEnd: 1337
    functionName: operator_output_stream_write
    functionSourceFile: /src/opendal/bindings/dotnet/src/operator.rs
    functionUses: 0
    functionsReached:
    - operator_output_stream_write_inner
    - OpendalResult::from_error
    - OpendalResult::ok
    linkageType: ''
    returnType: OpendalResult
    signature: 'pub extern "C" fn operator_output_stream_write(stream: *mut opendal::blocking::Writer,data:
      *const u8,len: usize,) -> OpendalResult'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::is_null
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1344,1
    - Dst: Err
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1345,1
    - Dst: crate::utils::config_invalid_error
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1345,1
    - Dst: '{

        byte_buffer::ByteBuffer,

        entry::into_entry_list_ptr,

        error::OpenDALError,

        executor::executor_or_default,

        metadata::OpendalMetadata,

        operator_info::require_data_ptr'
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1349,1
    - Dst: std::slice::from_raw_parts
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1355,1
    - Dst: Result::write
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1358,1
    - Dst: Result::map
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1358,1
    - Dst: Result::map_err
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1358,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 29
    argCount: 3
    argNames:
    - stream
    - data
    - len
    argTypes:
    - '*mut opendal::blocking::Writer'
    - '*const u8'
    - usize
    constantsTouched: []
    func_position:
      end: 1362
      start: 1339
    functionDepth: 36
    functionLinenumber: 1339
    functionLinenumberEnd: 1362
    functionName: operator_output_stream_write_inner
    functionSourceFile: /src/opendal/bindings/dotnet/src/operator.rs
    functionUses: 1
    functionsReached:
    - Result::map_err
    - Result::is_null
    - crate::utils::config_invalid_error
    - Err
    - Result::write
    - std::slice::from_raw_parts
    - Result::map
    - '{

      byte_buffer::ByteBuffer,

      entry::into_entry_list_ptr,

      error::OpenDALError,

      executor::executor_or_default,

      metadata::OpendalMetadata,

      operator_info::require_data_ptr'
    linkageType: ''
    returnType: Result
    signature: 'fn operator_output_stream_write_inner(stream: *mut opendal::blocking::Writer,data:
      *const u8,len: usize,) -> Result<(), OpenDALError>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: operator_output_stream_flush_inner
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1372,1
    - Dst: OpendalResult::ok
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1373,1
    - Dst: OpendalResult::from_error
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1374,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - stream
    argTypes:
    - '*mut opendal::blocking::Writer'
    constantsTouched: []
    func_position:
      end: 1376
      start: 1369
    functionDepth: 3
    functionLinenumber: 1369
    functionLinenumberEnd: 1376
    functionName: operator_output_stream_flush
    functionSourceFile: /src/opendal/bindings/dotnet/src/operator.rs
    functionUses: 0
    functionsReached:
    - OpendalResult::from_error
    - OpendalResult::ok
    - operator_output_stream_flush_inner
    linkageType: ''
    returnType: OpendalResult
    signature: 'pub extern "C" fn operator_output_stream_flush(stream: *mut opendal::blocking::Writer,)
      -> OpendalResult'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::is_null
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1381,1
    - Dst: Err
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1382,1
    - Dst: crate::utils::config_invalid_error
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1382,1
    - Dst: Ok
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1387,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - stream
    argTypes:
    - '*mut opendal::blocking::Writer'
    constantsTouched: []
    func_position:
      end: 1388
      start: 1378
    functionDepth: 0
    functionLinenumber: 1378
    functionLinenumberEnd: 1388
    functionName: operator_output_stream_flush_inner
    functionSourceFile: /src/opendal/bindings/dotnet/src/operator.rs
    functionUses: 1
    functionsReached:
    - Result::is_null
    - crate::utils::config_invalid_error
    - Ok
    - Err
    linkageType: ''
    returnType: Result
    signature: 'fn operator_output_stream_flush_inner(stream: *mut opendal::blocking::Writer,)
      -> Result<(), OpenDALError>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: operator_output_stream_close_inner
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1398,1
    - Dst: OpendalResult::ok
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1399,1
    - Dst: OpendalResult::from_error
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1400,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - stream
    argTypes:
    - '*mut opendal::blocking::Writer'
    constantsTouched: []
    func_position:
      end: 1402
      start: 1395
    functionDepth: 3
    functionLinenumber: 1395
    functionLinenumberEnd: 1402
    functionName: operator_output_stream_close
    functionSourceFile: /src/opendal/bindings/dotnet/src/operator.rs
    functionUses: 0
    functionsReached:
    - operator_output_stream_close_inner
    - OpendalResult::from_error
    - OpendalResult::ok
    linkageType: ''
    returnType: OpendalResult
    signature: 'pub extern "C" fn operator_output_stream_close(stream: *mut opendal::blocking::Writer,)
      -> OpendalResult'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::is_null
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1407,1
    - Dst: Err
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1408,1
    - Dst: crate::utils::config_invalid_error
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1408,1
    - Dst: Result::close
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1414,1
    - Dst: Result::map
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1414,1
    - Dst: Result::map_err
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1414,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 18
    argCount: 1
    argNames:
    - stream
    argTypes:
    - '*mut opendal::blocking::Writer'
    constantsTouched: []
    func_position:
      end: 1418
      start: 1404
    functionDepth: 2
    functionLinenumber: 1404
    functionLinenumberEnd: 1418
    functionName: operator_output_stream_close_inner
    functionSourceFile: /src/opendal/bindings/dotnet/src/operator.rs
    functionUses: 1
    functionsReached:
    - Result::map_err
    - Result::is_null
    - crate::utils::config_invalid_error
    - Err
    - Result::close
    - Result::map
    linkageType: ''
    returnType: Result
    signature: 'fn operator_output_stream_close_inner(stream: *mut opendal::blocking::Writer,)
      -> Result<(), OpenDALError>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::is_null
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1426,1
    - Dst: drop
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1431,1
    - Dst: Box::from_raw
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1431,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - stream
    argTypes:
    - '*mut opendal::blocking::Writer'
    constantsTouched: []
    func_position:
      end: 1433
      start: 1425
    functionDepth: 33
    functionLinenumber: 1425
    functionLinenumberEnd: 1433
    functionName: operator_output_stream_free
    functionSourceFile: /src/opendal/bindings/dotnet/src/operator.rs
    functionUses: 0
    functionsReached:
    - Box::from_raw
    - Result::is_null
    - drop
    linkageType: ''
    returnType: void
    signature: 'pub unsafe extern "C" fn operator_output_stream_free(stream: *mut
      opendal::blocking::Writer)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: operator_write_with_options_inner
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1451,1
    - Dst: OpendalResult::ok
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1452,1
    - Dst: OpendalResult::from_error
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1453,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 6
    argNames:
    - op
    - executor
    - path
    - data
    - len
    - options
    argTypes:
    - '*const opendal::Operator'
    - '*const c_void'
    - '*const c_char'
    - '*const u8'
    - usize
    - '*const opendal::options::WriteOptions'
    constantsTouched: []
    func_position:
      end: 1455
      start: 1443
    functionDepth: 34
    functionLinenumber: 1443
    functionLinenumberEnd: 1455
    functionName: operator_write_with_options
    functionSourceFile: /src/opendal/bindings/dotnet/src/operator.rs
    functionUses: 0
    functionsReached:
    - OpendalResult::from_error
    - operator_write_with_options_inner
    - OpendalResult::ok
    linkageType: ''
    returnType: OpendalResult
    signature: 'pub extern "C" fn operator_write_with_options(op: *const opendal::Operator,executor:
      *const c_void,path: *const c_char,data: *const u8,len: usize,options: *const
      opendal::options::WriteOptions,) -> OpendalResult'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: require_operator
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1465,1
    - Dst: executor_or_default
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1466,1
    - Dst: '{

        byte_buffer::ByteBuffer,

        entry::into_entry_list_ptr,

        error::OpenDALError,

        executor::executor_or_default,

        metadata::OpendalMetadata,

        operator_info::require_cstr'
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1467,1
    - Dst: '{

        byte_buffer::ByteBuffer,

        entry::into_entry_list_ptr,

        error::OpenDALError,

        executor::executor_or_default,

        metadata::OpendalMetadata,

        operator_info::require_data_ptr'
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1468,1
    - Dst: Result::is_null
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1469,1
    - Dst: opendal::options::WriteOptions::default
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1470,1
    - Dst: clone
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1472,1
    - Dst: std::slice::from_raw_parts
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1478,1
    - Dst: Self::block_on
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1481,1
    - Dst: write_options
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1482,1
    - Dst: F::Output::map
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1481,1
    - Dst: Result::map_err
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1481,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 37
    argCount: 6
    argNames:
    - op
    - executor
    - path
    - data
    - len
    - options
    argTypes:
    - '*const opendal::Operator'
    - '*const c_void'
    - '*const c_char'
    - '*const u8'
    - usize
    - '*const opendal::options::WriteOptions'
    constantsTouched: []
    func_position:
      end: 1485
      start: 1457
    functionDepth: 33
    functionLinenumber: 1457
    functionLinenumberEnd: 1485
    functionName: operator_write_with_options_inner
    functionSourceFile: /src/opendal/bindings/dotnet/src/operator.rs
    functionUses: 1
    functionsReached:
    - Result::map_err
    - Result::is_null
    - write_options
    - executor_or_default
    - opendal::options::WriteOptions::default
    - '{

      byte_buffer::ByteBuffer,

      entry::into_entry_list_ptr,

      error::OpenDALError,

      executor::executor_or_default,

      metadata::OpendalMetadata,

      operator_info::require_cstr'
    - clone
    - F::Output::map
    - Self::block_on
    - require_operator
    - std::slice::from_raw_parts
    - '{

      byte_buffer::ByteBuffer,

      entry::into_entry_list_ptr,

      error::OpenDALError,

      executor::executor_or_default,

      metadata::OpendalMetadata,

      operator_info::require_data_ptr'
    linkageType: ''
    returnType: Result
    signature: 'fn operator_write_with_options_inner(op: *const opendal::Operator,executor:
      *const c_void,path: *const c_char,data: *const u8,len: usize,options: *const
      opendal::options::WriteOptions,) -> Result<(), OpenDALError>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: operator_write_with_options_async_inner
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1506,1
    - Dst: OpendalResult::ok
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1509,1
    - Dst: OpendalResult::from_error
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1510,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 7
    argNames:
    - op
    - executor
    - path
    - data
    - options
    - callback
    - context
    argTypes:
    - '*const opendal::Operator'
    - '*const c_void'
    - '*const c_char'
    - ByteBuffer
    - '*const opendal::options::WriteOptions'
    - Option<WriteCallback>
    - i64
    constantsTouched: []
    func_position:
      end: 1512
      start: 1497
    functionDepth: 34
    functionLinenumber: 1497
    functionLinenumberEnd: 1512
    functionName: operator_write_with_options_async
    functionSourceFile: /src/opendal/bindings/dotnet/src/operator.rs
    functionUses: 0
    functionsReached:
    - OpendalResult::from_error
    - operator_write_with_options_async_inner
    - OpendalResult::ok
    linkageType: ''
    returnType: OpendalResult
    signature: 'pub unsafe extern "C" fn operator_write_with_options_async(op: *const
      opendal::Operator,executor: *const c_void,path: *const c_char,data: ByteBuffer,options:
      *const opendal::options::WriteOptions,callback: Option<WriteCallback>,context:
      i64,) -> OpendalResult'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: require_operator
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1523,1
    - Dst: executor_or_default
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1524,1
    - Dst: '{

        byte_buffer::ByteBuffer,

        entry::into_entry_list_ptr,

        error::OpenDALError,

        executor::executor_or_default,

        metadata::OpendalMetadata,

        operator_info::require_cstr'
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1525,1
    - Dst: to_string
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1525,1
    - Dst: '{

        byte_buffer::ByteBuffer,

        entry::into_entry_list_ptr,

        error::OpenDALError,

        executor::executor_or_default,

        metadata::OpendalMetadata,

        operator_info::require_data_ptr'
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1526,1
    - Dst: cast_const
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1526,1
    - Dst: '{

        byte_buffer::ByteBuffer,

        entry::into_entry_list_ptr,

        error::OpenDALError,

        executor::executor_or_default,

        metadata::OpendalMetadata,

        operator_info::require_callback'
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1527,1
    - Dst: Result::is_null
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1528,1
    - Dst: opendal::options::WriteOptions::default
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1529,1
    - Dst: clone
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1531,1
    - Dst: Vec::new
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1535,1
    - Dst: std::slice::from_raw_parts
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1537,1
    - Dst: cast_const
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1537,1
    - Dst: to_vec
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1537,1
    - Dst: clone
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1540,1
    - Dst: Self::spawn
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1541,1
    - Dst: write_options
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1542,1
    - Dst: map
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1542,1
    - Dst: map_err
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1542,1
    - Dst: callback
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1548,1
    - Dst: OpendalResult::ok
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1551,1
    - Dst: OpendalResult::from_error
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1552,1
    - Dst: Ok
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1557,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 60
    argCount: 7
    argNames:
    - op
    - executor
    - path
    - data
    - options
    - callback
    - context
    argTypes:
    - '*const opendal::Operator'
    - '*const c_void'
    - '*const c_char'
    - ByteBuffer
    - '*const opendal::options::WriteOptions'
    - Option<WriteCallback>
    - i64
    constantsTouched: []
    func_position:
      end: 1558
      start: 1514
    functionDepth: 33
    functionLinenumber: 1514
    functionLinenumberEnd: 1558
    functionName: operator_write_with_options_async_inner
    functionSourceFile: /src/opendal/bindings/dotnet/src/operator.rs
    functionUses: 1
    functionsReached:
    - write_options
    - executor_or_default
    - '{

      byte_buffer::ByteBuffer,

      entry::into_entry_list_ptr,

      error::OpenDALError,

      executor::executor_or_default,

      metadata::OpendalMetadata,

      operator_info::require_cstr'
    - clone
    - map
    - to_vec
    - Vec::new
    - Self::spawn
    - '{

      byte_buffer::ByteBuffer,

      entry::into_entry_list_ptr,

      error::OpenDALError,

      executor::executor_or_default,

      metadata::OpendalMetadata,

      operator_info::require_callback'
    - map_err
    - Result::is_null
    - Ok
    - require_operator
    - OpendalResult::ok
    - '{

      byte_buffer::ByteBuffer,

      entry::into_entry_list_ptr,

      error::OpenDALError,

      executor::executor_or_default,

      metadata::OpendalMetadata,

      operator_info::require_data_ptr'
    - callback
    - to_string
    - OpendalResult::from_error
    - cast_const
    - opendal::options::WriteOptions::default
    - std::slice::from_raw_parts
    linkageType: ''
    returnType: Result
    signature: 'fn operator_write_with_options_async_inner(op: *const opendal::Operator,executor:
      *const c_void,path: *const c_char,data: ByteBuffer,options: *const opendal::options::WriteOptions,callback:
      Option<WriteCallback>,context: i64,) -> Result<(), OpenDALError>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: operator_read_with_options_inner
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1575,1
    - Dst: OpendalReadResult::ok
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1576,1
    - Dst: OpendalReadResult::from_error
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1577,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 4
    argNames:
    - op
    - executor
    - path
    - options
    argTypes:
    - '*const opendal::Operator'
    - '*const c_void'
    - '*const c_char'
    - '*const opendal::options::ReadOptions'
    constantsTouched: []
    func_position:
      end: 1579
      start: 1569
    functionDepth: 34
    functionLinenumber: 1569
    functionLinenumberEnd: 1579
    functionName: operator_read_with_options
    functionSourceFile: /src/opendal/bindings/dotnet/src/operator.rs
    functionUses: 0
    functionsReached:
    - operator_read_with_options_inner
    - OpendalReadResult::from_error
    - OpendalReadResult::ok
    linkageType: ''
    returnType: OpendalReadResult
    signature: 'pub unsafe extern "C" fn operator_read_with_options(op: *const opendal::Operator,executor:
      *const c_void,path: *const c_char,options: *const opendal::options::ReadOptions,)
      -> OpendalReadResult'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: require_operator
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1587,1
    - Dst: executor_or_default
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1588,1
    - Dst: '{

        byte_buffer::ByteBuffer,

        entry::into_entry_list_ptr,

        error::OpenDALError,

        executor::executor_or_default,

        metadata::OpendalMetadata,

        operator_info::require_cstr'
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1589,1
    - Dst: Result::is_null
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1590,1
    - Dst: opendal::options::ReadOptions::default
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1591,1
    - Dst: clone
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1593,1
    - Dst: Self::block_on
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1596,1
    - Dst: read_options
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1597,1
    - Dst: F::Output::map
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1596,1
    - Dst: Result::to_vec
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1598,1
    - Dst: Result::map_err
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1596,1
    - Dst: Ok
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1601,1
    - Dst: ByteBuffer::from_vec
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1601,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 30
    argCount: 4
    argNames:
    - op
    - executor
    - path
    - options
    argTypes:
    - '*const opendal::Operator'
    - '*const c_void'
    - '*const c_char'
    - '*const opendal::options::ReadOptions'
    constantsTouched: []
    func_position:
      end: 1602
      start: 1581
    functionDepth: 33
    functionLinenumber: 1581
    functionLinenumberEnd: 1602
    functionName: operator_read_with_options_inner
    functionSourceFile: /src/opendal/bindings/dotnet/src/operator.rs
    functionUses: 1
    functionsReached:
    - Result::map_err
    - Result::is_null
    - Ok
    - executor_or_default
    - '{

      byte_buffer::ByteBuffer,

      entry::into_entry_list_ptr,

      error::OpenDALError,

      executor::executor_or_default,

      metadata::OpendalMetadata,

      operator_info::require_cstr'
    - clone
    - F::Output::map
    - Self::block_on
    - Result::to_vec
    - require_operator
    - ByteBuffer::from_vec
    - read_options
    - opendal::options::ReadOptions::default
    linkageType: ''
    returnType: Result
    signature: 'fn operator_read_with_options_inner(op: *const opendal::Operator,executor:
      *const c_void,path: *const c_char,options: *const opendal::options::ReadOptions,)
      -> Result<ByteBuffer, OpenDALError>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: operator_read_with_options_async_inner
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1623,1
    - Dst: OpendalResult::ok
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1624,1
    - Dst: OpendalResult::from_error
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1625,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 6
    argNames:
    - op
    - executor
    - path
    - options
    - callback
    - context
    argTypes:
    - '*const opendal::Operator'
    - '*const c_void'
    - '*const c_char'
    - '*const opendal::options::ReadOptions'
    - Option<ReadCallback>
    - i64
    constantsTouched: []
    func_position:
      end: 1627
      start: 1615
    functionDepth: 34
    functionLinenumber: 1615
    functionLinenumberEnd: 1627
    functionName: operator_read_with_options_async
    functionSourceFile: /src/opendal/bindings/dotnet/src/operator.rs
    functionUses: 0
    functionsReached:
    - OpendalResult::from_error
    - OpendalResult::ok
    - operator_read_with_options_async_inner
    linkageType: ''
    returnType: OpendalResult
    signature: 'pub extern "C" fn operator_read_with_options_async(op: *const opendal::Operator,executor:
      *const c_void,path: *const c_char,options: *const opendal::options::ReadOptions,callback:
      Option<ReadCallback>,context: i64,) -> OpendalResult'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: require_operator
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1637,1
    - Dst: executor_or_default
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1638,1
    - Dst: '{

        byte_buffer::ByteBuffer,

        entry::into_entry_list_ptr,

        error::OpenDALError,

        executor::executor_or_default,

        metadata::OpendalMetadata,

        operator_info::require_cstr'
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1639,1
    - Dst: to_string
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1639,1
    - Dst: '{

        byte_buffer::ByteBuffer,

        entry::into_entry_list_ptr,

        error::OpenDALError,

        executor::executor_or_default,

        metadata::OpendalMetadata,

        operator_info::require_callback'
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1640,1
    - Dst: Result::is_null
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1641,1
    - Dst: opendal::options::ReadOptions::default
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1642,1
    - Dst: clone
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1644,1
    - Dst: clone
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1647,1
    - Dst: Self::spawn
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1648,1
    - Dst: read_options
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1649,1
    - Dst: map
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1649,1
    - Dst: ByteBuffer::from_vec
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1652,1
    - Dst: Result::to_vec
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1652,1
    - Dst: map_err
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1649,1
    - Dst: callback
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1655,1
    - Dst: OpendalReadResult::ok
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1658,1
    - Dst: OpendalReadResult::from_error
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1659,1
    - Dst: Ok
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1664,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 44
    argCount: 6
    argNames:
    - op
    - executor
    - path
    - options
    - callback
    - context
    argTypes:
    - '*const opendal::Operator'
    - '*const c_void'
    - '*const c_char'
    - '*const opendal::options::ReadOptions'
    - Option<ReadCallback>
    - i64
    constantsTouched: []
    func_position:
      end: 1665
      start: 1629
    functionDepth: 33
    functionLinenumber: 1629
    functionLinenumberEnd: 1665
    functionName: operator_read_with_options_async_inner
    functionSourceFile: /src/opendal/bindings/dotnet/src/operator.rs
    functionUses: 1
    functionsReached:
    - map_err
    - to_string
    - Result::is_null
    - Ok
    - executor_or_default
    - '{

      byte_buffer::ByteBuffer,

      entry::into_entry_list_ptr,

      error::OpenDALError,

      executor::executor_or_default,

      metadata::OpendalMetadata,

      operator_info::require_cstr'
    - clone
    - Result::to_vec
    - callback
    - map
    - OpendalReadResult::from_error
    - require_operator
    - ByteBuffer::from_vec
    - read_options
    - Self::spawn
    - opendal::options::ReadOptions::default
    - '{

      byte_buffer::ByteBuffer,

      entry::into_entry_list_ptr,

      error::OpenDALError,

      executor::executor_or_default,

      metadata::OpendalMetadata,

      operator_info::require_callback'
    - OpendalReadResult::ok
    linkageType: ''
    returnType: Result
    signature: 'fn operator_read_with_options_async_inner(op: *const opendal::Operator,executor:
      *const c_void,path: *const c_char,options: *const opendal::options::ReadOptions,callback:
      Option<ReadCallback>,context: i64,) -> Result<(), OpenDALError>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: operator_stat_with_options_inner
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1682,1
    - Dst: OpendalMetadataResult::ok
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1683,1
    - Dst: OpendalMetadataResult::from_error
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1684,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 4
    argNames:
    - op
    - executor
    - path
    - options
    argTypes:
    - '*const opendal::Operator'
    - '*const c_void'
    - '*const c_char'
    - '*const opendal::options::StatOptions'
    constantsTouched: []
    func_position:
      end: 1686
      start: 1676
    functionDepth: 34
    functionLinenumber: 1676
    functionLinenumberEnd: 1686
    functionName: operator_stat_with_options
    functionSourceFile: /src/opendal/bindings/dotnet/src/operator.rs
    functionUses: 0
    functionsReached:
    - operator_stat_with_options_inner
    - OpendalMetadataResult::ok
    - OpendalMetadataResult::from_error
    linkageType: ''
    returnType: OpendalMetadataResult
    signature: 'pub extern "C" fn operator_stat_with_options(op: *const opendal::Operator,executor:
      *const c_void,path: *const c_char,options: *const opendal::options::StatOptions,)
      -> OpendalMetadataResult'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: require_operator
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1694,1
    - Dst: executor_or_default
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1695,1
    - Dst: '{

        byte_buffer::ByteBuffer,

        entry::into_entry_list_ptr,

        error::OpenDALError,

        executor::executor_or_default,

        metadata::OpendalMetadata,

        operator_info::require_cstr'
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1696,1
    - Dst: Result::is_null
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1697,1
    - Dst: opendal::options::StatOptions::default
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1698,1
    - Dst: clone
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1700,1
    - Dst: Self::block_on
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1703,1
    - Dst: stat_options
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1704,1
    - Dst: F::Output::map_err
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1703,1
    - Dst: Ok
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1706,1
    - Dst: Box::into_raw
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1706,1
    - Dst: Box::new
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1706,1
    - Dst: OpendalMetadata::from_metadata
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1706,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 27
    argCount: 4
    argNames:
    - op
    - executor
    - path
    - options
    argTypes:
    - '*const opendal::Operator'
    - '*const c_void'
    - '*const c_char'
    - '*const opendal::options::StatOptions'
    constantsTouched: []
    func_position:
      end: 1709
      start: 1688
    functionDepth: 33
    functionLinenumber: 1688
    functionLinenumberEnd: 1709
    functionName: operator_stat_with_options_inner
    functionSourceFile: /src/opendal/bindings/dotnet/src/operator.rs
    functionUses: 1
    functionsReached:
    - opendal::options::StatOptions::default
    - F::Output::map_err
    - Result::is_null
    - OpendalMetadata::from_metadata
    - stat_options
    - Ok
    - executor_or_default
    - Box::new
    - '{

      byte_buffer::ByteBuffer,

      entry::into_entry_list_ptr,

      error::OpenDALError,

      executor::executor_or_default,

      metadata::OpendalMetadata,

      operator_info::require_cstr'
    - clone
    - Self::block_on
    - require_operator
    - Box::into_raw
    linkageType: ''
    returnType: Result
    signature: 'fn operator_stat_with_options_inner(op: *const opendal::Operator,executor:
      *const c_void,path: *const c_char,options: *const opendal::options::StatOptions,)
      -> Result<*mut OpendalMetadata, OpenDALError>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: operator_stat_with_options_async_inner
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1730,1
    - Dst: OpendalResult::ok
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1731,1
    - Dst: OpendalResult::from_error
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1732,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 6
    argNames:
    - op
    - executor
    - path
    - options
    - callback
    - context
    argTypes:
    - '*const opendal::Operator'
    - '*const c_void'
    - '*const c_char'
    - '*const opendal::options::StatOptions'
    - Option<StatCallback>
    - i64
    constantsTouched: []
    func_position:
      end: 1734
      start: 1722
    functionDepth: 34
    functionLinenumber: 1722
    functionLinenumberEnd: 1734
    functionName: operator_stat_with_options_async
    functionSourceFile: /src/opendal/bindings/dotnet/src/operator.rs
    functionUses: 0
    functionsReached:
    - OpendalResult::from_error
    - OpendalResult::ok
    - operator_stat_with_options_async_inner
    linkageType: ''
    returnType: OpendalResult
    signature: 'pub extern "C" fn operator_stat_with_options_async(op: *const opendal::Operator,executor:
      *const c_void,path: *const c_char,options: *const opendal::options::StatOptions,callback:
      Option<StatCallback>,context: i64,) -> OpendalResult'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: require_operator
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1744,1
    - Dst: executor_or_default
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1745,1
    - Dst: '{

        byte_buffer::ByteBuffer,

        entry::into_entry_list_ptr,

        error::OpenDALError,

        executor::executor_or_default,

        metadata::OpendalMetadata,

        operator_info::require_cstr'
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1746,1
    - Dst: to_string
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1746,1
    - Dst: '{

        byte_buffer::ByteBuffer,

        entry::into_entry_list_ptr,

        error::OpenDALError,

        executor::executor_or_default,

        metadata::OpendalMetadata,

        operator_info::require_callback'
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1747,1
    - Dst: Result::is_null
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1748,1
    - Dst: opendal::options::StatOptions::default
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1749,1
    - Dst: clone
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1751,1
    - Dst: clone
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1754,1
    - Dst: Self::spawn
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1755,1
    - Dst: stat_options
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1756,1
    - Dst: map
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1756,1
    - Dst: map
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1756,1
    - Dst: Box::into_raw
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1760,1
    - Dst: Box::new
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1760,1
    - Dst: map_err
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1756,1
    - Dst: callback
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1763,1
    - Dst: OpendalMetadataResult::ok
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1766,1
    - Dst: OpendalMetadataResult::from_error
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1767,1
    - Dst: Ok
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1772,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 46
    argCount: 6
    argNames:
    - op
    - executor
    - path
    - options
    - callback
    - context
    argTypes:
    - '*const opendal::Operator'
    - '*const c_void'
    - '*const c_char'
    - '*const opendal::options::StatOptions'
    - Option<StatCallback>
    - i64
    constantsTouched: []
    func_position:
      end: 1773
      start: 1736
    functionDepth: 33
    functionLinenumber: 1736
    functionLinenumberEnd: 1773
    functionName: operator_stat_with_options_async_inner
    functionSourceFile: /src/opendal/bindings/dotnet/src/operator.rs
    functionUses: 1
    functionsReached:
    - opendal::options::StatOptions::default
    - to_string
    - Result::is_null
    - map_err
    - stat_options
    - Ok
    - executor_or_default
    - Box::new
    - '{

      byte_buffer::ByteBuffer,

      entry::into_entry_list_ptr,

      error::OpenDALError,

      executor::executor_or_default,

      metadata::OpendalMetadata,

      operator_info::require_cstr'
    - clone
    - callback
    - OpendalMetadataResult::ok
    - map
    - OpendalMetadataResult::from_error
    - require_operator
    - Self::spawn
    - '{

      byte_buffer::ByteBuffer,

      entry::into_entry_list_ptr,

      error::OpenDALError,

      executor::executor_or_default,

      metadata::OpendalMetadata,

      operator_info::require_callback'
    - Box::into_raw
    linkageType: ''
    returnType: Result
    signature: 'fn operator_stat_with_options_async_inner(op: *const opendal::Operator,executor:
      *const c_void,path: *const c_char,options: *const opendal::options::StatOptions,callback:
      Option<StatCallback>,context: i64,) -> Result<(), OpenDALError>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: operator_list_with_options_inner
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1790,1
    - Dst: OpendalEntryListResult::ok
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1791,1
    - Dst: OpendalEntryListResult::from_error
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1792,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 4
    argNames:
    - op
    - executor
    - path
    - options
    argTypes:
    - '*const opendal::Operator'
    - '*const c_void'
    - '*const c_char'
    - '*const opendal::options::ListOptions'
    constantsTouched: []
    func_position:
      end: 1794
      start: 1784
    functionDepth: 34
    functionLinenumber: 1784
    functionLinenumberEnd: 1794
    functionName: operator_list_with_options
    functionSourceFile: /src/opendal/bindings/dotnet/src/operator.rs
    functionUses: 0
    functionsReached:
    - OpendalEntryListResult::ok
    - OpendalEntryListResult::from_error
    - operator_list_with_options_inner
    linkageType: ''
    returnType: OpendalEntryListResult
    signature: 'pub extern "C" fn operator_list_with_options(op: *const opendal::Operator,executor:
      *const c_void,path: *const c_char,options: *const opendal::options::ListOptions,)
      -> OpendalEntryListResult'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: require_operator
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1802,1
    - Dst: executor_or_default
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1803,1
    - Dst: '{

        byte_buffer::ByteBuffer,

        entry::into_entry_list_ptr,

        error::OpenDALError,

        executor::executor_or_default,

        metadata::OpendalMetadata,

        operator_info::require_cstr'
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1804,1
    - Dst: Result::is_null
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1805,1
    - Dst: opendal::options::ListOptions::default
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1806,1
    - Dst: clone
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1808,1
    - Dst: Self::block_on
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1811,1
    - Dst: list_options
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1812,1
    - Dst: F::Output::map_err
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1811,1
    - Dst: Ok
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1815,1
    - Dst: into_entry_list_ptr
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1815,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 25
    argCount: 4
    argNames:
    - op
    - executor
    - path
    - options
    argTypes:
    - '*const opendal::Operator'
    - '*const c_void'
    - '*const c_char'
    - '*const opendal::options::ListOptions'
    constantsTouched: []
    func_position:
      end: 1816
      start: 1796
    functionDepth: 33
    functionLinenumber: 1796
    functionLinenumberEnd: 1816
    functionName: operator_list_with_options_inner
    functionSourceFile: /src/opendal/bindings/dotnet/src/operator.rs
    functionUses: 1
    functionsReached:
    - F::Output::map_err
    - Result::is_null
    - Ok
    - opendal::options::ListOptions::default
    - executor_or_default
    - '{

      byte_buffer::ByteBuffer,

      entry::into_entry_list_ptr,

      error::OpenDALError,

      executor::executor_or_default,

      metadata::OpendalMetadata,

      operator_info::require_cstr'
    - clone
    - Self::block_on
    - list_options
    - require_operator
    - into_entry_list_ptr
    linkageType: ''
    returnType: Result
    signature: 'fn operator_list_with_options_inner(op: *const opendal::Operator,executor:
      *const c_void,path: *const c_char,options: *const opendal::options::ListOptions,)
      -> Result<*mut c_void, OpenDALError>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: operator_list_with_options_async_inner
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1837,1
    - Dst: OpendalResult::ok
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1838,1
    - Dst: OpendalResult::from_error
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1839,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 6
    argNames:
    - op
    - executor
    - path
    - options
    - callback
    - context
    argTypes:
    - '*const opendal::Operator'
    - '*const c_void'
    - '*const c_char'
    - '*const opendal::options::ListOptions'
    - Option<ListCallback>
    - i64
    constantsTouched: []
    func_position:
      end: 1841
      start: 1829
    functionDepth: 34
    functionLinenumber: 1829
    functionLinenumberEnd: 1841
    functionName: operator_list_with_options_async
    functionSourceFile: /src/opendal/bindings/dotnet/src/operator.rs
    functionUses: 0
    functionsReached:
    - OpendalResult::from_error
    - operator_list_with_options_async_inner
    - OpendalResult::ok
    linkageType: ''
    returnType: OpendalResult
    signature: 'pub extern "C" fn operator_list_with_options_async(op: *const opendal::Operator,executor:
      *const c_void,path: *const c_char,options: *const opendal::options::ListOptions,callback:
      Option<ListCallback>,context: i64,) -> OpendalResult'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: require_operator
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1851,1
    - Dst: executor_or_default
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1852,1
    - Dst: '{

        byte_buffer::ByteBuffer,

        entry::into_entry_list_ptr,

        error::OpenDALError,

        executor::executor_or_default,

        metadata::OpendalMetadata,

        operator_info::require_cstr'
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1853,1
    - Dst: to_string
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1853,1
    - Dst: '{

        byte_buffer::ByteBuffer,

        entry::into_entry_list_ptr,

        error::OpenDALError,

        executor::executor_or_default,

        metadata::OpendalMetadata,

        operator_info::require_callback'
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1854,1
    - Dst: Result::is_null
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1855,1
    - Dst: opendal::options::ListOptions::default
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1856,1
    - Dst: clone
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1858,1
    - Dst: clone
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1861,1
    - Dst: Self::spawn
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1862,1
    - Dst: list_options
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1863,1
    - Dst: map
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1863,1
    - Dst: map_err
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1863,1
    - Dst: callback
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1869,1
    - Dst: OpendalEntryListResult::ok
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1872,1
    - Dst: OpendalEntryListResult::from_error
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1873,1
    - Dst: Ok
      Src: /src/opendal/bindings/dotnet/src/operator.rs:1878,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 40
    argCount: 6
    argNames:
    - op
    - executor
    - path
    - options
    - callback
    - context
    argTypes:
    - '*const opendal::Operator'
    - '*const c_void'
    - '*const c_char'
    - '*const opendal::options::ListOptions'
    - Option<ListCallback>
    - i64
    constantsTouched: []
    func_position:
      end: 1879
      start: 1843
    functionDepth: 33
    functionLinenumber: 1843
    functionLinenumberEnd: 1879
    functionName: operator_list_with_options_async_inner
    functionSourceFile: /src/opendal/bindings/dotnet/src/operator.rs
    functionUses: 1
    functionsReached:
    - map_err
    - to_string
    - Result::is_null
    - Ok
    - opendal::options::ListOptions::default
    - executor_or_default
    - OpendalEntryListResult::ok
    - '{

      byte_buffer::ByteBuffer,

      entry::into_entry_list_ptr,

      error::OpenDALError,

      executor::executor_or_default,

      metadata::OpendalMetadata,

      operator_info::require_cstr'
    - clone
    - callback
    - map
    - OpendalEntryListResult::from_error
    - list_options
    - require_operator
    - Self::spawn
    - '{

      byte_buffer::ByteBuffer,

      entry::into_entry_list_ptr,

      error::OpenDALError,

      executor::executor_or_default,

      metadata::OpendalMetadata,

      operator_info::require_callback'
    linkageType: ''
    returnType: Result
    signature: 'fn operator_list_with_options_async_inner(op: *const opendal::Operator,executor:
      *const c_void,path: *const c_char,options: *const opendal::options::ListOptions,callback:
      Option<ListCallback>,context: i64,) -> Result<(), OpenDALError>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/bindings/dotnet/src/validators.rs:26,1
    - Dst: utils::config_invalid_error
      Src: /src/opendal/bindings/dotnet/src/validators.rs:26,1
    - Dst: Ok
      Src: /src/opendal/bindings/dotnet/src/validators.rs:31,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 2
    argNames:
    - value
    - field
    argTypes:
    - u64
    - '&str'
    constantsTouched: []
    func_position:
      end: 32
      start: 24
    functionDepth: 32
    functionLinenumber: 24
    functionLinenumberEnd: 32
    functionName: validate_non_zero_u64
    functionSourceFile: /src/opendal/bindings/dotnet/src/validators.rs
    functionUses: 1
    functionsReached:
    - Ok
    - utils::config_invalid_error
    - Err
    linkageType: ''
    returnType: Result
    signature: 'pub(crate) fn validate_non_zero_u64(value: u64, field: &str) -> Result<(),
      OpenDALError>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/bindings/dotnet/src/validators.rs:36,1
    - Dst: utils::config_invalid_error
      Src: /src/opendal/bindings/dotnet/src/validators.rs:36,1
    - Dst: Ok
      Src: /src/opendal/bindings/dotnet/src/validators.rs:41,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 2
    argNames:
    - value
    - field
    argTypes:
    - usize
    - '&str'
    constantsTouched: []
    func_position:
      end: 42
      start: 34
    functionDepth: 32
    functionLinenumber: 34
    functionLinenumberEnd: 42
    functionName: validate_non_zero_usize
    functionSourceFile: /src/opendal/bindings/dotnet/src/validators.rs
    functionUses: 7
    functionsReached:
    - Ok
    - utils::config_invalid_error
    - Err
    linkageType: ''
    returnType: Result
    signature: 'pub(crate) fn validate_non_zero_usize(value: usize, field: &str) ->
      Result<(), OpenDALError>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Vec::is_finite
      Src: /src/opendal/bindings/dotnet/src/validators.rs:45,1
    - Dst: Err
      Src: /src/opendal/bindings/dotnet/src/validators.rs:46,1
    - Dst: utils::config_invalid_error
      Src: /src/opendal/bindings/dotnet/src/validators.rs:46,1
    - Dst: Ok
      Src: /src/opendal/bindings/dotnet/src/validators.rs:51,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 2
    argNames:
    - value
    - field
    argTypes:
    - f32
    - '&str'
    constantsTouched: []
    func_position:
      end: 52
      start: 44
    functionDepth: 32
    functionLinenumber: 44
    functionLinenumberEnd: 52
    functionName: validate_positive_finite_f32
    functionSourceFile: /src/opendal/bindings/dotnet/src/validators.rs
    functionUses: 1
    functionsReached:
    - Vec::is_finite
    - Ok
    - utils::config_invalid_error
    - Err
    linkageType: ''
    returnType: Result
    signature: 'pub(crate) fn validate_positive_finite_f32(value: f32, field: &str)
      -> Result<(), OpenDALError>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: u64::checked_add
      Src: /src/opendal/bindings/dotnet/src/validators.rs:59,1
    - Dst: ok_or_else
      Src: /src/opendal/bindings/dotnet/src/validators.rs:59,1
    - Dst: utils::config_invalid_error
      Src: /src/opendal/bindings/dotnet/src/validators.rs:60,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 3
    argNames:
    - left
    - right
    - context
    argTypes:
    - u64
    - u64
    - '&str'
    constantsTouched: []
    func_position:
      end: 61
      start: 54
    functionDepth: 32
    functionLinenumber: 54
    functionLinenumberEnd: 61
    functionName: validate_checked_add_u64
    functionSourceFile: /src/opendal/bindings/dotnet/src/validators.rs
    functionUses: 1
    functionsReached:
    - utils::config_invalid_error
    - u64::checked_add
    - ok_or_else
    linkageType: ''
    returnType: Result
    signature: 'pub(crate) fn validate_checked_add_u64(left: u64,right: u64,context:
      &str,) -> Result<u64, OpenDALError>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: utils::into_string_ptr
      Src: /src/opendal/bindings/dotnet/src/entry.rs:42,1
    - Dst: crate::Entry::path
      Src: /src/opendal/bindings/dotnet/src/entry.rs:42,1
    - Dst: String::to_string
      Src: /src/opendal/bindings/dotnet/src/entry.rs:42,1
    - Dst: Box::into_raw
      Src: /src/opendal/bindings/dotnet/src/entry.rs:43,1
    - Dst: Box::new
      Src: /src/opendal/bindings/dotnet/src/entry.rs:43,1
    - Dst: OpendalMetadata::from_metadata
      Src: /src/opendal/bindings/dotnet/src/entry.rs:43,1
    - Dst: crate::Entry::metadata
      Src: /src/opendal/bindings/dotnet/src/entry.rs:44,1
    - Dst: Metadata::clone
      Src: /src/opendal/bindings/dotnet/src/entry.rs:44,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 13
    argCount: 1
    argNames:
    - entry
    argTypes:
    - opendal::Entry
    constantsTouched: []
    func_position:
      end: 48
      start: 41
    functionDepth: 30
    functionLinenumber: 41
    functionLinenumberEnd: 48
    functionName: OpendalEntry::from_entry
    functionSourceFile: /src/opendal/bindings/dotnet/src/entry.rs
    functionUses: 1
    functionsReached:
    - crate::Entry::path
    - utils::into_string_ptr
    - OpendalMetadata::from_metadata
    - Metadata::clone
    - Box::new
    - crate::Entry::metadata
    - String::to_string
    - Box::into_raw
    linkageType: ''
    returnType: Self
    signature: 'pub fn from_entry(entry: opendal::Entry) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: into_iter
      Src: /src/opendal/bindings/dotnet/src/entry.rs:55,1
    - Dst: map
      Src: /src/opendal/bindings/dotnet/src/entry.rs:55,1
    - Dst: Box::into_raw
      Src: /src/opendal/bindings/dotnet/src/entry.rs:57,1
    - Dst: Box::new
      Src: /src/opendal/bindings/dotnet/src/entry.rs:57,1
    - Dst: OpendalEntry::from_entry
      Src: /src/opendal/bindings/dotnet/src/entry.rs:57,1
    - Dst: collect
      Src: /src/opendal/bindings/dotnet/src/entry.rs:55,1
    - Dst: len
      Src: /src/opendal/bindings/dotnet/src/entry.rs:60,1
    - Dst: as_mut_ptr
      Src: /src/opendal/bindings/dotnet/src/entry.rs:61,1
    - Dst: std::mem::forget
      Src: /src/opendal/bindings/dotnet/src/entry.rs:62,1
    - Dst: Box::into_raw
      Src: /src/opendal/bindings/dotnet/src/entry.rs:64,1
    - Dst: Box::new
      Src: /src/opendal/bindings/dotnet/src/entry.rs:64,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 20
    argCount: 1
    argNames:
    - entries
    argTypes:
    - Vec<opendal::Entry>
    constantsTouched: []
    func_position:
      end: 68
      start: 54
    functionDepth: 31
    functionLinenumber: 54
    functionLinenumberEnd: 68
    functionName: into_entry_list_ptr
    functionSourceFile: /src/opendal/bindings/dotnet/src/entry.rs
    functionUses: 1
    functionsReached:
    - collect
    - std::mem::forget
    - OpendalEntry::from_entry
    - Box::new
    - into_iter
    - map
    - as_mut_ptr
    - len
    - Box::into_raw
    linkageType: ''
    returnType: '*mut c_void'
    signature: 'pub fn into_entry_list_ptr(entries: Vec<opendal::Entry>) -> *mut c_void'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: crate::Entry::is_null
      Src: /src/opendal/bindings/dotnet/src/entry.rs:77,1
    - Dst: Box::from_raw
      Src: /src/opendal/bindings/dotnet/src/entry.rs:82,1
    - Dst: is_null
      Src: /src/opendal/bindings/dotnet/src/entry.rs:83,1
    - Dst: drop
      Src: /src/opendal/bindings/dotnet/src/entry.rs:84,1
    - Dst: std::ffi::CString::from_raw
      Src: /src/opendal/bindings/dotnet/src/entry.rs:84,1
    - Dst: is_null
      Src: /src/opendal/bindings/dotnet/src/entry.rs:86,1
    - Dst: metadata::metadata_free
      Src: /src/opendal/bindings/dotnet/src/entry.rs:87,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 27
    argCount: 1
    argNames:
    - entry
    argTypes:
    - '*mut OpendalEntry'
    constantsTouched: []
    func_position:
      end: 90
      start: 76
    functionDepth: 33
    functionLinenumber: 76
    functionLinenumberEnd: 90
    functionName: free_entry
    functionSourceFile: /src/opendal/bindings/dotnet/src/entry.rs
    functionUses: 1
    functionsReached:
    - Box::from_raw
    - is_null
    - crate::Entry::is_null
    - std::ffi::CString::from_raw
    - drop
    - metadata::metadata_free
    linkageType: ''
    returnType: void
    signature: 'unsafe fn free_entry(entry: *mut OpendalEntry)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::is_null
      Src: /src/opendal/bindings/dotnet/src/entry.rs:98,1
    - Dst: Box::from_raw
      Src: /src/opendal/bindings/dotnet/src/entry.rs:103,1
    - Dst: is_null
      Src: /src/opendal/bindings/dotnet/src/entry.rs:104,1
    - Dst: Vec::from_raw_parts
      Src: /src/opendal/bindings/dotnet/src/entry.rs:105,1
    - Dst: free_entry
      Src: /src/opendal/bindings/dotnet/src/entry.rs:107,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 22
    argCount: 1
    argNames:
    - list
    argTypes:
    - '*mut OpendalEntryList'
    constantsTouched: []
    func_position:
      end: 111
      start: 97
    functionDepth: 34
    functionLinenumber: 97
    functionLinenumberEnd: 111
    functionName: entry_list_free
    functionSourceFile: /src/opendal/bindings/dotnet/src/entry.rs
    functionUses: 1
    functionsReached:
    - Box::from_raw
    - Result::is_null
    - Vec::from_raw_parts
    - free_entry
    - is_null
    linkageType: ''
    returnType: void
    signature: 'pub unsafe extern "C" fn entry_list_free(list: *mut OpendalEntryList)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: validators::validate_positive_finite_f32
      Src: /src/opendal/bindings/dotnet/src/validators/layer.rs:30,1
    - Dst: Err
      Src: /src/opendal/bindings/dotnet/src/validators/layer.rs:33,1
    - Dst: utils::config_invalid_error
      Src: /src/opendal/bindings/dotnet/src/validators/layer.rs:33,1
    - Dst: Ok
      Src: /src/opendal/bindings/dotnet/src/validators/layer.rs:38,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 3
    argNames:
    - factor
    - min_delay_nanos
    - max_delay_nanos
    argTypes:
    - f32
    - u64
    - u64
    constantsTouched: []
    func_position:
      end: 39
      start: 25
    functionDepth: 33
    functionLinenumber: 25
    functionLinenumberEnd: 39
    functionName: validate_retry_options
    functionSourceFile: /src/opendal/bindings/dotnet/src/validators/layer.rs
    functionUses: 1
    functionsReached:
    - Ok
    - validators::validate_positive_finite_f32
    - utils::config_invalid_error
    - Err
    linkageType: ''
    returnType: Result
    signature: 'pub fn validate_retry_options(factor: f32,min_delay_nanos: u64,max_delay_nanos:
      u64,) -> Result<(), OpenDALError>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: validate_non_zero_u64
      Src: /src/opendal/bindings/dotnet/src/validators/layer.rs:46,1
    - Dst: validate_non_zero_u64
      Src: /src/opendal/bindings/dotnet/src/validators/layer.rs:47,1
    - Dst: Ok
      Src: /src/opendal/bindings/dotnet/src/validators/layer.rs:49,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - timeout_nanos
    - io_timeout_nanos
    argTypes:
    - u64
    - u64
    constantsTouched: []
    func_position:
      end: 50
      start: 42
    functionDepth: 33
    functionLinenumber: 42
    functionLinenumberEnd: 50
    functionName: validate_timeout_options
    functionSourceFile: /src/opendal/bindings/dotnet/src/validators/layer.rs
    functionUses: 1
    functionsReached:
    - validate_non_zero_u64
    - Ok
    linkageType: ''
    returnType: Result
    signature: 'pub fn validate_timeout_options(timeout_nanos: u64,io_timeout_nanos:
      u64,) -> Result<(), OpenDALError>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: validators::validate_non_zero_usize
      Src: /src/opendal/bindings/dotnet/src/validators/layer.rs:54,1
    - Dst: Ok
      Src: /src/opendal/bindings/dotnet/src/validators/layer.rs:56,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - permits
    argTypes:
    - usize
    constantsTouched: []
    func_position:
      end: 57
      start: 53
    functionDepth: 33
    functionLinenumber: 53
    functionLinenumberEnd: 57
    functionName: validate_concurrent_limit_options
    functionSourceFile: /src/opendal/bindings/dotnet/src/validators/layer.rs
    functionUses: 1
    functionsReached:
    - Ok
    - validators::validate_non_zero_usize
    linkageType: ''
    returnType: Result
    signature: 'pub fn validate_concurrent_limit_options(permits: usize) -> Result<(),
      OpenDALError>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/bindings/dotnet/src/validators/options.rs:28,1
    - Dst: validators::validate_checked_add_u64
      Src: /src/opendal/bindings/dotnet/src/validators/options.rs:31,1
    - Dst: Ok
      Src: /src/opendal/bindings/dotnet/src/validators/options.rs:33,1
    - Dst: Some
      Src: /src/opendal/bindings/dotnet/src/validators/options.rs:33,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - offset
    - length
    argTypes:
    - u64
    - Option<u64>
    constantsTouched: []
    func_position:
      end: 34
      start: 23
    functionDepth: 33
    functionLinenumber: 23
    functionLinenumberEnd: 34
    functionName: validate_read_range_end
    functionSourceFile: /src/opendal/bindings/dotnet/src/validators/options.rs
    functionUses: 1
    functionsReached:
    - validators::validate_checked_add_u64
    - Ok
    - Some
    linkageType: ''
    returnType: Result
    signature: 'pub fn validate_read_range_end(offset: u64,length: Option<u64>,) ->
      Result<Option<u64>, OpenDALError>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: validators::validate_non_zero_usize
      Src: /src/opendal/bindings/dotnet/src/validators/options.rs:37,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - concurrent
    argTypes:
    - usize
    constantsTouched: []
    func_position:
      end: 38
      start: 36
    functionDepth: 33
    functionLinenumber: 36
    functionLinenumberEnd: 38
    functionName: validate_read_concurrent
    functionSourceFile: /src/opendal/bindings/dotnet/src/validators/options.rs
    functionUses: 1
    functionsReached:
    - validators::validate_non_zero_usize
    linkageType: ''
    returnType: Result
    signature: 'pub fn validate_read_concurrent(concurrent: usize) -> Result<(), OpenDALError>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: validators::validate_non_zero_usize
      Src: /src/opendal/bindings/dotnet/src/validators/options.rs:41,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - chunk
    argTypes:
    - usize
    constantsTouched: []
    func_position:
      end: 42
      start: 40
    functionDepth: 33
    functionLinenumber: 40
    functionLinenumberEnd: 42
    functionName: validate_read_chunk
    functionSourceFile: /src/opendal/bindings/dotnet/src/validators/options.rs
    functionUses: 1
    functionsReached:
    - validators::validate_non_zero_usize
    linkageType: ''
    returnType: Result
    signature: 'pub fn validate_read_chunk(chunk: usize) -> Result<(), OpenDALError>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: validators::validate_non_zero_usize
      Src: /src/opendal/bindings/dotnet/src/validators/options.rs:45,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - gap
    argTypes:
    - usize
    constantsTouched: []
    func_position:
      end: 46
      start: 44
    functionDepth: 33
    functionLinenumber: 44
    functionLinenumberEnd: 46
    functionName: validate_read_gap
    functionSourceFile: /src/opendal/bindings/dotnet/src/validators/options.rs
    functionUses: 1
    functionsReached:
    - validators::validate_non_zero_usize
    linkageType: ''
    returnType: Result
    signature: 'pub fn validate_read_gap(gap: usize) -> Result<(), OpenDALError>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: validators::validate_non_zero_usize
      Src: /src/opendal/bindings/dotnet/src/validators/options.rs:49,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - concurrent
    argTypes:
    - usize
    constantsTouched: []
    func_position:
      end: 50
      start: 48
    functionDepth: 33
    functionLinenumber: 48
    functionLinenumberEnd: 50
    functionName: validate_write_concurrent
    functionSourceFile: /src/opendal/bindings/dotnet/src/validators/options.rs
    functionUses: 1
    functionsReached:
    - validators::validate_non_zero_usize
    linkageType: ''
    returnType: Result
    signature: 'pub fn validate_write_concurrent(concurrent: usize) -> Result<(),
      OpenDALError>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: validators::validate_non_zero_usize
      Src: /src/opendal/bindings/dotnet/src/validators/options.rs:53,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - chunk
    argTypes:
    - usize
    constantsTouched: []
    func_position:
      end: 54
      start: 52
    functionDepth: 33
    functionLinenumber: 52
    functionLinenumberEnd: 54
    functionName: validate_write_chunk
    functionSourceFile: /src/opendal/bindings/dotnet/src/validators/options.rs
    functionUses: 1
    functionsReached:
    - validators::validate_non_zero_usize
    linkageType: ''
    returnType: Result
    signature: 'pub fn validate_write_chunk(chunk: usize) -> Result<(), OpenDALError>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: validators::validate_non_zero_usize
      Src: /src/opendal/bindings/dotnet/src/validators/options.rs:57,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - limit
    argTypes:
    - usize
    constantsTouched: []
    func_position:
      end: 58
      start: 56
    functionDepth: 33
    functionLinenumber: 56
    functionLinenumberEnd: 58
    functionName: validate_list_limit
    functionSourceFile: /src/opendal/bindings/dotnet/src/validators/options.rs
    functionUses: 1
    functionsReached:
    - validators::validate_non_zero_usize
    linkageType: ''
    returnType: Result
    signature: 'pub fn validate_list_limit(limit: usize) -> Result<(), OpenDALError>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: handle
      Src: /src/opendal/integrations/object_store/tests/behavior/utils.rs:29,1
    - Dst: clone
      Src: /src/opendal/integrations/object_store/tests/behavior/utils.rs:29,1
    - Dst: Arc::clone
      Src: /src/opendal/integrations/object_store/tests/behavior/utils.rs:31,1
    - Dst: Trial::test
      Src: /src/opendal/integrations/object_store/tests/behavior/utils.rs:32,1
    - Dst: block_on
      Src: /src/opendal/integrations/object_store/tests/behavior/utils.rs:33,1
    - Dst: f
      Src: /src/opendal/integrations/object_store/tests/behavior/utils.rs:34,1
    - Dst: F::Output::map_err
      Src: /src/opendal/integrations/object_store/tests/behavior/utils.rs:33,1
    - Dst: Failed::from
      Src: /src/opendal/integrations/object_store/tests/behavior/utils.rs:35,1
    - Dst: Error::to_string
      Src: /src/opendal/integrations/object_store/tests/behavior/utils.rs:35,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 17
    argCount: 3
    argNames:
    - name
    - store
    - f
    argTypes:
    - '&str'
    - '&OpendalStore'
    - F
    constantsTouched: []
    func_position:
      end: 37
      start: 24
    functionDepth: 38
    functionLinenumber: 24
    functionLinenumberEnd: 37
    functionName: build_trail
    functionSourceFile: /src/opendal/integrations/object_store/tests/behavior/utils.rs
    functionUses: 1
    functionsReached:
    - f
    - F::Output::map_err
    - Failed::from
    - Trial::test
    - Error::to_string
    - clone
    - handle
    - block_on
    - Arc::clone
    linkageType: ''
    returnType: Trial
    signature: 'pub fn build_trail<F, Fut>(name: &str, store: &OpendalStore, f: F)
      -> TrialwhereF: FnOnce(OpendalStore) -> Fut + MaybeSend + ''static,Fut: Future<Output
      = anyhow::Result<()>>,'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 1
    argNames:
    - dir
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 41
      start: 39
    functionDepth: 0
    functionLinenumber: 39
    functionLinenumberEnd: 41
    functionName: new_file_path
    functionSourceFile: /src/opendal/integrations/object_store/tests/behavior/utils.rs
    functionUses: 35
    functionsReached: []
    linkageType: ''
    returnType: String
    signature: 'pub fn new_file_path(dir: &str) -> String'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: utils::new_file_path
      Src: /src/opendal/integrations/object_store/tests/behavior/get.rs:67,1
    - Dst: String::into
      Src: /src/opendal/integrations/object_store/tests/behavior/get.rs:67,1
    - Dst: Bytes::from_static
      Src: /src/opendal/integrations/object_store/tests/behavior/get.rs:68,1
    - Dst: Arc::put
      Src: /src/opendal/integrations/object_store/tests/behavior/get.rs:70,1
    - Dst: Vec::clone
      Src: /src/opendal/integrations/object_store/tests/behavior/get.rs:70,1
    - Dst: Self::into
      Src: /src/opendal/integrations/object_store/tests/behavior/get.rs:70,1
    - Dst: Arc::get
      Src: /src/opendal/integrations/object_store/tests/behavior/get.rs:72,1
    - Dst: Self::bytes
      Src: /src/opendal/integrations/object_store/tests/behavior/get.rs:75,1
    - Dst: Arc::get
      Src: /src/opendal/integrations/object_store/tests/behavior/get.rs:78,1
    - Dst: '&str::into'
      Src: /src/opendal/integrations/object_store/tests/behavior/get.rs:78,1
    - Dst: Arc::delete
      Src: /src/opendal/integrations/object_store/tests/behavior/get.rs:85,1
    - Dst: Ok
      Src: /src/opendal/integrations/object_store/tests/behavior/get.rs:86,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 41
    argCount: 1
    argNames:
    - store
    argTypes:
    - OpendalStore
    constantsTouched: []
    func_position:
      end: 87
      start: 66
    functionDepth: 34
    functionLinenumber: 66
    functionLinenumberEnd: 87
    functionName: test_basic_get
    functionSourceFile: /src/opendal/integrations/object_store/tests/behavior/get.rs
    functionUses: 0
    functionsReached:
    - Arc::delete
    - Arc::put
    - utils::new_file_path
    - Ok
    - Self::bytes
    - String::into
    - Self::into
    - Arc::get
    - Bytes::from_static
    - Vec::clone
    - '&str::into'
    linkageType: ''
    returnType: Result
    signature: 'pub async fn test_basic_get(store: OpendalStore) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: utils::new_file_path
      Src: /src/opendal/integrations/object_store/tests/behavior/get.rs:90,1
    - Dst: String::into
      Src: /src/opendal/integrations/object_store/tests/behavior/get.rs:90,1
    - Dst: Bytes::from_static
      Src: /src/opendal/integrations/object_store/tests/behavior/get.rs:91,1
    - Dst: Arc::put
      Src: /src/opendal/integrations/object_store/tests/behavior/get.rs:93,1
    - Dst: Vec::clone
      Src: /src/opendal/integrations/object_store/tests/behavior/get.rs:93,1
    - Dst: Self::into
      Src: /src/opendal/integrations/object_store/tests/behavior/get.rs:93,1
    - Dst: Arc::head
      Src: /src/opendal/integrations/object_store/tests/behavior/get.rs:95,1
    - Dst: Arc::delete
      Src: /src/opendal/integrations/object_store/tests/behavior/get.rs:100,1
    - Dst: Ok
      Src: /src/opendal/integrations/object_store/tests/behavior/get.rs:101,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 29
    argCount: 1
    argNames:
    - store
    argTypes:
    - OpendalStore
    constantsTouched: []
    func_position:
      end: 102
      start: 89
    functionDepth: 34
    functionLinenumber: 89
    functionLinenumberEnd: 102
    functionName: test_head
    functionSourceFile: /src/opendal/integrations/object_store/tests/behavior/get.rs
    functionUses: 0
    functionsReached:
    - Arc::delete
    - Arc::put
    - utils::new_file_path
    - Arc::head
    - Ok
    - String::into
    - Self::into
    - Bytes::from_static
    - Vec::clone
    linkageType: ''
    returnType: Result
    signature: 'pub async fn test_head(store: OpendalStore) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: utils::new_file_path
      Src: /src/opendal/integrations/object_store/tests/behavior/get.rs:105,1
    - Dst: String::into
      Src: /src/opendal/integrations/object_store/tests/behavior/get.rs:105,1
    - Dst: Bytes::from_static
      Src: /src/opendal/integrations/object_store/tests/behavior/get.rs:106,1
    - Dst: Arc::put
      Src: /src/opendal/integrations/object_store/tests/behavior/get.rs:108,1
    - Dst: Vec::clone
      Src: /src/opendal/integrations/object_store/tests/behavior/get.rs:108,1
    - Dst: Self::into
      Src: /src/opendal/integrations/object_store/tests/behavior/get.rs:108,1
    - Dst: Arc::get_range
      Src: /src/opendal/integrations/object_store/tests/behavior/get.rs:110,1
    - Dst: Arc::delete
      Src: /src/opendal/integrations/object_store/tests/behavior/get.rs:113,1
    - Dst: Ok
      Src: /src/opendal/integrations/object_store/tests/behavior/get.rs:114,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 29
    argCount: 1
    argNames:
    - store
    argTypes:
    - OpendalStore
    constantsTouched: []
    func_position:
      end: 115
      start: 104
    functionDepth: 34
    functionLinenumber: 104
    functionLinenumberEnd: 115
    functionName: test_get_range
    functionSourceFile: /src/opendal/integrations/object_store/tests/behavior/get.rs
    functionUses: 0
    functionsReached:
    - Arc::delete
    - Arc::put
    - utils::new_file_path
    - Ok
    - Arc::get_range
    - String::into
    - Self::into
    - Bytes::from_static
    - Vec::clone
    linkageType: ''
    returnType: Result
    signature: 'pub async fn test_get_range(store: OpendalStore) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: utils::new_file_path
      Src: /src/opendal/integrations/object_store/tests/behavior/get.rs:118,1
    - Dst: String::into
      Src: /src/opendal/integrations/object_store/tests/behavior/get.rs:118,1
    - Dst: Bytes::from_static
      Src: /src/opendal/integrations/object_store/tests/behavior/get.rs:119,1
    - Dst: Arc::put
      Src: /src/opendal/integrations/object_store/tests/behavior/get.rs:121,1
    - Dst: Vec::clone
      Src: /src/opendal/integrations/object_store/tests/behavior/get.rs:121,1
    - Dst: Self::into
      Src: /src/opendal/integrations/object_store/tests/behavior/get.rs:121,1
    - Dst: Some
      Src: /src/opendal/integrations/object_store/tests/behavior/get.rs:124,1
    - Dst: into
      Src: /src/opendal/integrations/object_store/tests/behavior/get.rs:124,1
    - Dst: Default::default
      Src: /src/opendal/integrations/object_store/tests/behavior/get.rs:125,1
    - Dst: Arc::get_opts
      Src: /src/opendal/integrations/object_store/tests/behavior/get.rs:127,1
    - Dst: Self::bytes
      Src: /src/opendal/integrations/object_store/tests/behavior/get.rs:128,1
    - Dst: Some
      Src: /src/opendal/integrations/object_store/tests/behavior/get.rs:132,1
    - Dst: GetRange::Offset
      Src: /src/opendal/integrations/object_store/tests/behavior/get.rs:132,1
    - Dst: Default::default
      Src: /src/opendal/integrations/object_store/tests/behavior/get.rs:133,1
    - Dst: Arc::get_opts
      Src: /src/opendal/integrations/object_store/tests/behavior/get.rs:135,1
    - Dst: Self::bytes
      Src: /src/opendal/integrations/object_store/tests/behavior/get.rs:136,1
    - Dst: Some
      Src: /src/opendal/integrations/object_store/tests/behavior/get.rs:140,1
    - Dst: GetRange::Suffix
      Src: /src/opendal/integrations/object_store/tests/behavior/get.rs:140,1
    - Dst: Default::default
      Src: /src/opendal/integrations/object_store/tests/behavior/get.rs:141,1
    - Dst: Arc::get_opts
      Src: /src/opendal/integrations/object_store/tests/behavior/get.rs:143,1
    - Dst: Self::bytes
      Src: /src/opendal/integrations/object_store/tests/behavior/get.rs:144,1
    - Dst: Arc::delete
      Src: /src/opendal/integrations/object_store/tests/behavior/get.rs:147,1
    - Dst: Ok
      Src: /src/opendal/integrations/object_store/tests/behavior/get.rs:148,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 67
    argCount: 1
    argNames:
    - store
    argTypes:
    - OpendalStore
    constantsTouched: []
    func_position:
      end: 149
      start: 117
    functionDepth: 34
    functionLinenumber: 117
    functionLinenumberEnd: 149
    functionName: test_get_opts_with_range
    functionSourceFile: /src/opendal/integrations/object_store/tests/behavior/get.rs
    functionUses: 0
    functionsReached:
    - Arc::delete
    - Arc::put
    - utils::new_file_path
    - Ok
    - Default::default
    - into
    - Arc::get_opts
    - Self::bytes
    - GetRange::Offset
    - Some
    - String::into
    - GetRange::Suffix
    - Self::into
    - Bytes::from_static
    - Vec::clone
    linkageType: ''
    returnType: Result
    signature: 'pub async fn test_get_opts_with_range(store: OpendalStore) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: utils::new_file_path
      Src: /src/opendal/integrations/object_store/tests/behavior/get.rs:152,1
    - Dst: String::into
      Src: /src/opendal/integrations/object_store/tests/behavior/get.rs:152,1
    - Dst: Bytes::from_static
      Src: /src/opendal/integrations/object_store/tests/behavior/get.rs:153,1
    - Dst: Arc::put
      Src: /src/opendal/integrations/object_store/tests/behavior/get.rs:155,1
    - Dst: Vec::clone
      Src: /src/opendal/integrations/object_store/tests/behavior/get.rs:155,1
    - Dst: Self::into
      Src: /src/opendal/integrations/object_store/tests/behavior/get.rs:155,1
    - Dst: Some
      Src: /src/opendal/integrations/object_store/tests/behavior/get.rs:159,1
    - Dst: into
      Src: /src/opendal/integrations/object_store/tests/behavior/get.rs:159,1
    - Dst: Default::default
      Src: /src/opendal/integrations/object_store/tests/behavior/get.rs:160,1
    - Dst: Arc::get_opts
      Src: /src/opendal/integrations/object_store/tests/behavior/get.rs:162,1
    - Dst: Some
      Src: /src/opendal/integrations/object_store/tests/behavior/get.rs:168,1
    - Dst: GetRange::Offset
      Src: /src/opendal/integrations/object_store/tests/behavior/get.rs:168,1
    - Dst: Default::default
      Src: /src/opendal/integrations/object_store/tests/behavior/get.rs:169,1
    - Dst: Arc::get_opts
      Src: /src/opendal/integrations/object_store/tests/behavior/get.rs:171,1
    - Dst: Some
      Src: /src/opendal/integrations/object_store/tests/behavior/get.rs:176,1
    - Dst: GetRange::Suffix
      Src: /src/opendal/integrations/object_store/tests/behavior/get.rs:176,1
    - Dst: Default::default
      Src: /src/opendal/integrations/object_store/tests/behavior/get.rs:177,1
    - Dst: Arc::get_opts
      Src: /src/opendal/integrations/object_store/tests/behavior/get.rs:179,1
    - Dst: Arc::delete
      Src: /src/opendal/integrations/object_store/tests/behavior/get.rs:183,1
    - Dst: Ok
      Src: /src/opendal/integrations/object_store/tests/behavior/get.rs:184,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 57
    argCount: 1
    argNames:
    - store
    argTypes:
    - OpendalStore
    constantsTouched: []
    func_position:
      end: 185
      start: 151
    functionDepth: 34
    functionLinenumber: 151
    functionLinenumberEnd: 185
    functionName: test_get_opts_with_invalid_range
    functionSourceFile: /src/opendal/integrations/object_store/tests/behavior/get.rs
    functionUses: 0
    functionsReached:
    - Arc::delete
    - Arc::put
    - utils::new_file_path
    - Ok
    - Default::default
    - into
    - Arc::get_opts
    - GetRange::Offset
    - Some
    - String::into
    - GetRange::Suffix
    - Self::into
    - Bytes::from_static
    - Vec::clone
    linkageType: ''
    returnType: Result
    signature: 'pub async fn test_get_opts_with_invalid_range(store: OpendalStore)
      -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Arc::info
      Src: /src/opendal/integrations/object_store/tests/behavior/get.rs:188,1
    - Dst: ServiceInfo::capability
      Src: /src/opendal/integrations/object_store/tests/behavior/get.rs:188,1
    - Dst: Ok
      Src: /src/opendal/integrations/object_store/tests/behavior/get.rs:189,1
    - Dst: utils::new_file_path
      Src: /src/opendal/integrations/object_store/tests/behavior/get.rs:192,1
    - Dst: String::into
      Src: /src/opendal/integrations/object_store/tests/behavior/get.rs:192,1
    - Dst: Bytes::from_static
      Src: /src/opendal/integrations/object_store/tests/behavior/get.rs:193,1
    - Dst: Arc::put
      Src: /src/opendal/integrations/object_store/tests/behavior/get.rs:194,1
    - Dst: Vec::clone
      Src: /src/opendal/integrations/object_store/tests/behavior/get.rs:194,1
    - Dst: Self::into
      Src: /src/opendal/integrations/object_store/tests/behavior/get.rs:194,1
    - Dst: Arc::head
      Src: /src/opendal/integrations/object_store/tests/behavior/get.rs:195,1
    - Dst: Default::default
      Src: /src/opendal/integrations/object_store/tests/behavior/get.rs:199,1
    - Dst: Arc::get_opts
      Src: /src/opendal/integrations/object_store/tests/behavior/get.rs:201,1
    - Dst: Self::bytes
      Src: /src/opendal/integrations/object_store/tests/behavior/get.rs:202,1
    - Dst: utils::new_file_path
      Src: /src/opendal/integrations/object_store/tests/behavior/get.rs:205,1
    - Dst: String::into
      Src: /src/opendal/integrations/object_store/tests/behavior/get.rs:205,1
    - Dst: Arc::put
      Src: /src/opendal/integrations/object_store/tests/behavior/get.rs:206,1
    - Dst: Bytes::from_static
      Src: /src/opendal/integrations/object_store/tests/behavior/get.rs:209,1
    - Dst: into
      Src: /src/opendal/integrations/object_store/tests/behavior/get.rs:209,1
    - Dst: Arc::head
      Src: /src/opendal/integrations/object_store/tests/behavior/get.rs:212,1
    - Dst: Default::default
      Src: /src/opendal/integrations/object_store/tests/behavior/get.rs:216,1
    - Dst: Arc::get_opts
      Src: /src/opendal/integrations/object_store/tests/behavior/get.rs:218,1
    - Dst: Arc::delete
      Src: /src/opendal/integrations/object_store/tests/behavior/get.rs:225,1
    - Dst: Arc::delete
      Src: /src/opendal/integrations/object_store/tests/behavior/get.rs:226,1
    - Dst: Ok
      Src: /src/opendal/integrations/object_store/tests/behavior/get.rs:227,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 84
    argCount: 1
    argNames:
    - store
    argTypes:
    - OpendalStore
    constantsTouched: []
    func_position:
      end: 228
      start: 187
    functionDepth: 34
    functionLinenumber: 187
    functionLinenumberEnd: 228
    functionName: test_get_opts_with_version
    functionSourceFile: /src/opendal/integrations/object_store/tests/behavior/get.rs
    functionUses: 0
    functionsReached:
    - Arc::info
    - Ok
    - Arc::put
    - utils::new_file_path
    - Arc::head
    - ServiceInfo::capability
    - Default::default
    - Arc::get_opts
    - Self::bytes
    - into
    - Arc::delete
    - String::into
    - Self::into
    - Bytes::from_static
    - Vec::clone
    linkageType: ''
    returnType: Result
    signature: 'pub async fn test_get_opts_with_version(store: OpendalStore) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Arc::info
      Src: /src/opendal/integrations/object_store/tests/behavior/get.rs:231,1
    - Dst: ServiceInfo::capability
      Src: /src/opendal/integrations/object_store/tests/behavior/get.rs:231,1
    - Dst: Ok
      Src: /src/opendal/integrations/object_store/tests/behavior/get.rs:232,1
    - Dst: utils::new_file_path
      Src: /src/opendal/integrations/object_store/tests/behavior/get.rs:235,1
    - Dst: String::into
      Src: /src/opendal/integrations/object_store/tests/behavior/get.rs:235,1
    - Dst: Bytes::from_static
      Src: /src/opendal/integrations/object_store/tests/behavior/get.rs:236,1
    - Dst: Arc::put
      Src: /src/opendal/integrations/object_store/tests/behavior/get.rs:237,1
    - Dst: Vec::clone
      Src: /src/opendal/integrations/object_store/tests/behavior/get.rs:237,1
    - Dst: Self::into
      Src: /src/opendal/integrations/object_store/tests/behavior/get.rs:237,1
    - Dst: Arc::head
      Src: /src/opendal/integrations/object_store/tests/behavior/get.rs:238,1
    - Dst: Some
      Src: /src/opendal/integrations/object_store/tests/behavior/get.rs:241,1
    - Dst: unwrap
      Src: /src/opendal/integrations/object_store/tests/behavior/get.rs:241,1
    - Dst: Default::default
      Src: /src/opendal/integrations/object_store/tests/behavior/get.rs:242,1
    - Dst: Arc::get_opts
      Src: /src/opendal/integrations/object_store/tests/behavior/get.rs:244,1
    - Dst: Self::bytes
      Src: /src/opendal/integrations/object_store/tests/behavior/get.rs:245,1
    - Dst: Some
      Src: /src/opendal/integrations/object_store/tests/behavior/get.rs:249,1
    - Dst: '&str::to_string'
      Src: /src/opendal/integrations/object_store/tests/behavior/get.rs:249,1
    - Dst: Default::default
      Src: /src/opendal/integrations/object_store/tests/behavior/get.rs:250,1
    - Dst: Arc::get_opts
      Src: /src/opendal/integrations/object_store/tests/behavior/get.rs:252,1
    - Dst: Arc::delete
      Src: /src/opendal/integrations/object_store/tests/behavior/get.rs:259,1
    - Dst: Ok
      Src: /src/opendal/integrations/object_store/tests/behavior/get.rs:260,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 66
    argCount: 1
    argNames:
    - store
    argTypes:
    - OpendalStore
    constantsTouched: []
    func_position:
      end: 261
      start: 230
    functionDepth: 34
    functionLinenumber: 230
    functionLinenumberEnd: 261
    functionName: test_get_ops_with_if_match
    functionSourceFile: /src/opendal/integrations/object_store/tests/behavior/get.rs
    functionUses: 0
    functionsReached:
    - Arc::info
    - Ok
    - Arc::put
    - utils::new_file_path
    - Arc::head
    - ServiceInfo::capability
    - unwrap
    - Default::default
    - Arc::get_opts
    - Self::bytes
    - Some
    - Arc::delete
    - String::into
    - '&str::to_string'
    - Self::into
    - Bytes::from_static
    - Vec::clone
    linkageType: ''
    returnType: Result
    signature: 'async fn test_get_ops_with_if_match(store: OpendalStore) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Arc::info
      Src: /src/opendal/integrations/object_store/tests/behavior/get.rs:264,1
    - Dst: ServiceInfo::capability
      Src: /src/opendal/integrations/object_store/tests/behavior/get.rs:264,1
    - Dst: Ok
      Src: /src/opendal/integrations/object_store/tests/behavior/get.rs:265,1
    - Dst: utils::new_file_path
      Src: /src/opendal/integrations/object_store/tests/behavior/get.rs:268,1
    - Dst: String::into
      Src: /src/opendal/integrations/object_store/tests/behavior/get.rs:268,1
    - Dst: Bytes::from_static
      Src: /src/opendal/integrations/object_store/tests/behavior/get.rs:269,1
    - Dst: Arc::put
      Src: /src/opendal/integrations/object_store/tests/behavior/get.rs:270,1
    - Dst: Vec::clone
      Src: /src/opendal/integrations/object_store/tests/behavior/get.rs:270,1
    - Dst: Self::into
      Src: /src/opendal/integrations/object_store/tests/behavior/get.rs:270,1
    - Dst: Arc::head
      Src: /src/opendal/integrations/object_store/tests/behavior/get.rs:271,1
    - Dst: Some
      Src: /src/opendal/integrations/object_store/tests/behavior/get.rs:274,1
    - Dst: '&str::to_string'
      Src: /src/opendal/integrations/object_store/tests/behavior/get.rs:274,1
    - Dst: Default::default
      Src: /src/opendal/integrations/object_store/tests/behavior/get.rs:275,1
    - Dst: Arc::get_opts
      Src: /src/opendal/integrations/object_store/tests/behavior/get.rs:277,1
    - Dst: Self::bytes
      Src: /src/opendal/integrations/object_store/tests/behavior/get.rs:278,1
    - Dst: Some
      Src: /src/opendal/integrations/object_store/tests/behavior/get.rs:282,1
    - Dst: unwrap
      Src: /src/opendal/integrations/object_store/tests/behavior/get.rs:282,1
    - Dst: Default::default
      Src: /src/opendal/integrations/object_store/tests/behavior/get.rs:283,1
    - Dst: Arc::get_opts
      Src: /src/opendal/integrations/object_store/tests/behavior/get.rs:285,1
    - Dst: Arc::delete
      Src: /src/opendal/integrations/object_store/tests/behavior/get.rs:292,1
    - Dst: Ok
      Src: /src/opendal/integrations/object_store/tests/behavior/get.rs:293,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 66
    argCount: 1
    argNames:
    - store
    argTypes:
    - OpendalStore
    constantsTouched: []
    func_position:
      end: 294
      start: 263
    functionDepth: 34
    functionLinenumber: 263
    functionLinenumberEnd: 294
    functionName: test_get_ops_with_if_none_match
    functionSourceFile: /src/opendal/integrations/object_store/tests/behavior/get.rs
    functionUses: 0
    functionsReached:
    - Arc::info
    - Ok
    - Arc::put
    - utils::new_file_path
    - Arc::head
    - ServiceInfo::capability
    - Default::default
    - Arc::get_opts
    - Self::bytes
    - unwrap
    - Some
    - Arc::delete
    - String::into
    - '&str::to_string'
    - Self::into
    - Bytes::from_static
    - Vec::clone
    linkageType: ''
    returnType: Result
    signature: 'async fn test_get_ops_with_if_none_match(store: OpendalStore) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Arc::info
      Src: /src/opendal/integrations/object_store/tests/behavior/get.rs:297,1
    - Dst: ServiceInfo::capability
      Src: /src/opendal/integrations/object_store/tests/behavior/get.rs:297,1
    - Dst: Ok
      Src: /src/opendal/integrations/object_store/tests/behavior/get.rs:298,1
    - Dst: utils::new_file_path
      Src: /src/opendal/integrations/object_store/tests/behavior/get.rs:301,1
    - Dst: String::into
      Src: /src/opendal/integrations/object_store/tests/behavior/get.rs:301,1
    - Dst: Bytes::from_static
      Src: /src/opendal/integrations/object_store/tests/behavior/get.rs:302,1
    - Dst: Arc::put
      Src: /src/opendal/integrations/object_store/tests/behavior/get.rs:303,1
    - Dst: Vec::clone
      Src: /src/opendal/integrations/object_store/tests/behavior/get.rs:303,1
    - Dst: Self::into
      Src: /src/opendal/integrations/object_store/tests/behavior/get.rs:303,1
    - Dst: Arc::head
      Src: /src/opendal/integrations/object_store/tests/behavior/get.rs:304,1
    - Dst: Some
      Src: /src/opendal/integrations/object_store/tests/behavior/get.rs:307,1
    - Dst: std::time::Duration::from_secs
      Src: /src/opendal/integrations/object_store/tests/behavior/get.rs:307,1
    - Dst: Default::default
      Src: /src/opendal/integrations/object_store/tests/behavior/get.rs:308,1
    - Dst: Arc::get_opts
      Src: /src/opendal/integrations/object_store/tests/behavior/get.rs:310,1
    - Dst: Self::bytes
      Src: /src/opendal/integrations/object_store/tests/behavior/get.rs:311,1
    - Dst: Some
      Src: /src/opendal/integrations/object_store/tests/behavior/get.rs:315,1
    - Dst: std::time::Duration::from_secs
      Src: /src/opendal/integrations/object_store/tests/behavior/get.rs:315,1
    - Dst: Default::default
      Src: /src/opendal/integrations/object_store/tests/behavior/get.rs:316,1
    - Dst: Arc::get_opts
      Src: /src/opendal/integrations/object_store/tests/behavior/get.rs:318,1
    - Dst: Arc::delete
      Src: /src/opendal/integrations/object_store/tests/behavior/get.rs:325,1
    - Dst: Ok
      Src: /src/opendal/integrations/object_store/tests/behavior/get.rs:326,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 67
    argCount: 1
    argNames:
    - store
    argTypes:
    - OpendalStore
    constantsTouched: []
    func_position:
      end: 327
      start: 296
    functionDepth: 34
    functionLinenumber: 296
    functionLinenumberEnd: 327
    functionName: test_get_opts_with_if_modified_since
    functionSourceFile: /src/opendal/integrations/object_store/tests/behavior/get.rs
    functionUses: 0
    functionsReached:
    - Arc::info
    - Ok
    - Arc::put
    - utils::new_file_path
    - Arc::head
    - ServiceInfo::capability
    - Default::default
    - Arc::get_opts
    - Self::bytes
    - Arc::delete
    - Some
    - String::into
    - std::time::Duration::from_secs
    - Self::into
    - Bytes::from_static
    - Vec::clone
    linkageType: ''
    returnType: Result
    signature: 'async fn test_get_opts_with_if_modified_since(store: OpendalStore)
      -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Arc::info
      Src: /src/opendal/integrations/object_store/tests/behavior/get.rs:330,1
    - Dst: ServiceInfo::capability
      Src: /src/opendal/integrations/object_store/tests/behavior/get.rs:330,1
    - Dst: Ok
      Src: /src/opendal/integrations/object_store/tests/behavior/get.rs:331,1
    - Dst: utils::new_file_path
      Src: /src/opendal/integrations/object_store/tests/behavior/get.rs:334,1
    - Dst: String::into
      Src: /src/opendal/integrations/object_store/tests/behavior/get.rs:334,1
    - Dst: Bytes::from_static
      Src: /src/opendal/integrations/object_store/tests/behavior/get.rs:335,1
    - Dst: Arc::put
      Src: /src/opendal/integrations/object_store/tests/behavior/get.rs:336,1
    - Dst: Vec::clone
      Src: /src/opendal/integrations/object_store/tests/behavior/get.rs:336,1
    - Dst: Self::into
      Src: /src/opendal/integrations/object_store/tests/behavior/get.rs:336,1
    - Dst: Arc::head
      Src: /src/opendal/integrations/object_store/tests/behavior/get.rs:337,1
    - Dst: Some
      Src: /src/opendal/integrations/object_store/tests/behavior/get.rs:340,1
    - Dst: std::time::Duration::from_secs
      Src: /src/opendal/integrations/object_store/tests/behavior/get.rs:340,1
    - Dst: Default::default
      Src: /src/opendal/integrations/object_store/tests/behavior/get.rs:341,1
    - Dst: Arc::get_opts
      Src: /src/opendal/integrations/object_store/tests/behavior/get.rs:343,1
    - Dst: Self::bytes
      Src: /src/opendal/integrations/object_store/tests/behavior/get.rs:344,1
    - Dst: Some
      Src: /src/opendal/integrations/object_store/tests/behavior/get.rs:348,1
    - Dst: std::time::Duration::from_secs
      Src: /src/opendal/integrations/object_store/tests/behavior/get.rs:348,1
    - Dst: Default::default
      Src: /src/opendal/integrations/object_store/tests/behavior/get.rs:349,1
    - Dst: Arc::get_opts
      Src: /src/opendal/integrations/object_store/tests/behavior/get.rs:351,1
    - Dst: Arc::delete
      Src: /src/opendal/integrations/object_store/tests/behavior/get.rs:358,1
    - Dst: Ok
      Src: /src/opendal/integrations/object_store/tests/behavior/get.rs:359,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 67
    argCount: 1
    argNames:
    - store
    argTypes:
    - OpendalStore
    constantsTouched: []
    func_position:
      end: 360
      start: 329
    functionDepth: 34
    functionLinenumber: 329
    functionLinenumberEnd: 360
    functionName: test_get_opts_with_if_unmodified_since
    functionSourceFile: /src/opendal/integrations/object_store/tests/behavior/get.rs
    functionUses: 0
    functionsReached:
    - Arc::info
    - Ok
    - Arc::put
    - utils::new_file_path
    - Arc::head
    - ServiceInfo::capability
    - Default::default
    - Arc::get_opts
    - Self::bytes
    - Arc::delete
    - Some
    - String::into
    - std::time::Duration::from_secs
    - Self::into
    - Bytes::from_static
    - Vec::clone
    linkageType: ''
    returnType: Result
    signature: 'async fn test_get_opts_with_if_unmodified_since(store: OpendalStore)
      -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: utils::new_file_path
      Src: /src/opendal/integrations/object_store/tests/behavior/put.rs:45,1
    - Dst: String::into
      Src: /src/opendal/integrations/object_store/tests/behavior/put.rs:45,1
    - Dst: Bytes::from
      Src: /src/opendal/integrations/object_store/tests/behavior/put.rs:46,1
    - Dst: Arc::put
      Src: /src/opendal/integrations/object_store/tests/behavior/put.rs:47,1
    - Dst: Vec::clone
      Src: /src/opendal/integrations/object_store/tests/behavior/put.rs:47,1
    - Dst: Self::into
      Src: /src/opendal/integrations/object_store/tests/behavior/put.rs:47,1
    - Dst: Arc::get
      Src: /src/opendal/integrations/object_store/tests/behavior/put.rs:49,1
    - Dst: bytes
      Src: /src/opendal/integrations/object_store/tests/behavior/put.rs:49,1
    - Dst: Arc::delete
      Src: /src/opendal/integrations/object_store/tests/behavior/put.rs:52,1
    - Dst: Ok
      Src: /src/opendal/integrations/object_store/tests/behavior/put.rs:53,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 32
    argCount: 1
    argNames:
    - store
    argTypes:
    - OpendalStore
    constantsTouched: []
    func_position:
      end: 54
      start: 44
    functionDepth: 34
    functionLinenumber: 44
    functionLinenumberEnd: 54
    functionName: test_basic_put
    functionSourceFile: /src/opendal/integrations/object_store/tests/behavior/put.rs
    functionUses: 0
    functionsReached:
    - Arc::delete
    - Arc::put
    - utils::new_file_path
    - Ok
    - bytes
    - Bytes::from
    - String::into
    - Self::into
    - Arc::get
    - Vec::clone
    linkageType: ''
    returnType: Result
    signature: 'pub async fn test_basic_put(store: OpendalStore) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: utils::new_file_path
      Src: /src/opendal/integrations/object_store/tests/behavior/put.rs:57,1
    - Dst: String::into
      Src: /src/opendal/integrations/object_store/tests/behavior/put.rs:57,1
    - Dst: Bytes::from
      Src: /src/opendal/integrations/object_store/tests/behavior/put.rs:58,1
    - Dst: Arc::put
      Src: /src/opendal/integrations/object_store/tests/behavior/put.rs:59,1
    - Dst: Vec::clone
      Src: /src/opendal/integrations/object_store/tests/behavior/put.rs:59,1
    - Dst: Self::into
      Src: /src/opendal/integrations/object_store/tests/behavior/put.rs:59,1
    - Dst: Bytes::from
      Src: /src/opendal/integrations/object_store/tests/behavior/put.rs:61,1
    - Dst: Default::default
      Src: /src/opendal/integrations/object_store/tests/behavior/put.rs:64,1
    - Dst: Arc::put_opts
      Src: /src/opendal/integrations/object_store/tests/behavior/put.rs:66,1
    - Dst: Result::clone
      Src: /src/opendal/integrations/object_store/tests/behavior/put.rs:67,1
    - Dst: Self::into
      Src: /src/opendal/integrations/object_store/tests/behavior/put.rs:67,1
    - Dst: Arc::get
      Src: /src/opendal/integrations/object_store/tests/behavior/put.rs:70,1
    - Dst: bytes
      Src: /src/opendal/integrations/object_store/tests/behavior/put.rs:70,1
    - Dst: Arc::delete
      Src: /src/opendal/integrations/object_store/tests/behavior/put.rs:73,1
    - Dst: Ok
      Src: /src/opendal/integrations/object_store/tests/behavior/put.rs:74,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 45
    argCount: 1
    argNames:
    - store
    argTypes:
    - OpendalStore
    constantsTouched: []
    func_position:
      end: 75
      start: 56
    functionDepth: 34
    functionLinenumber: 56
    functionLinenumberEnd: 75
    functionName: test_put_opts_with_overwrite
    functionSourceFile: /src/opendal/integrations/object_store/tests/behavior/put.rs
    functionUses: 0
    functionsReached:
    - Result::clone
    - Arc::delete
    - Arc::put
    - utils::new_file_path
    - Ok
    - Default::default
    - bytes
    - Arc::put_opts
    - Bytes::from
    - String::into
    - Self::into
    - Arc::get
    - Vec::clone
    linkageType: ''
    returnType: Result
    signature: 'pub async fn test_put_opts_with_overwrite(store: OpendalStore) ->
      Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Arc::info
      Src: /src/opendal/integrations/object_store/tests/behavior/put.rs:78,1
    - Dst: ServiceInfo::capability
      Src: /src/opendal/integrations/object_store/tests/behavior/put.rs:78,1
    - Dst: Ok
      Src: /src/opendal/integrations/object_store/tests/behavior/put.rs:79,1
    - Dst: utils::new_file_path
      Src: /src/opendal/integrations/object_store/tests/behavior/put.rs:82,1
    - Dst: String::into
      Src: /src/opendal/integrations/object_store/tests/behavior/put.rs:82,1
    - Dst: Bytes::from
      Src: /src/opendal/integrations/object_store/tests/behavior/put.rs:83,1
    - Dst: Default::default
      Src: /src/opendal/integrations/object_store/tests/behavior/put.rs:87,1
    - Dst: Arc::put_opts
      Src: /src/opendal/integrations/object_store/tests/behavior/put.rs:89,1
    - Dst: Vec::clone
      Src: /src/opendal/integrations/object_store/tests/behavior/put.rs:90,1
    - Dst: Self::into
      Src: /src/opendal/integrations/object_store/tests/behavior/put.rs:90,1
    - Dst: object_store::Result::clone
      Src: /src/opendal/integrations/object_store/tests/behavior/put.rs:90,1
    - Dst: Arc::put_opts
      Src: /src/opendal/integrations/object_store/tests/behavior/put.rs:94,1
    - Dst: Vec::clone
      Src: /src/opendal/integrations/object_store/tests/behavior/put.rs:94,1
    - Dst: Self::into
      Src: /src/opendal/integrations/object_store/tests/behavior/put.rs:94,1
    - Dst: Arc::delete
      Src: /src/opendal/integrations/object_store/tests/behavior/put.rs:101,1
    - Dst: Ok
      Src: /src/opendal/integrations/object_store/tests/behavior/put.rs:102,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 47
    argCount: 1
    argNames:
    - store
    argTypes:
    - OpendalStore
    constantsTouched: []
    func_position:
      end: 103
      start: 77
    functionDepth: 34
    functionLinenumber: 77
    functionLinenumberEnd: 103
    functionName: test_put_opts_with_create
    functionSourceFile: /src/opendal/integrations/object_store/tests/behavior/put.rs
    functionUses: 0
    functionsReached:
    - Arc::info
    - Ok
    - Arc::delete
    - utils::new_file_path
    - ServiceInfo::capability
    - Default::default
    - Arc::put_opts
    - Bytes::from
    - String::into
    - object_store::Result::clone
    - Self::into
    - Vec::clone
    linkageType: ''
    returnType: Result
    signature: 'pub async fn test_put_opts_with_create(store: OpendalStore) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Arc::info
      Src: /src/opendal/integrations/object_store/tests/behavior/put.rs:106,1
    - Dst: ServiceInfo::capability
      Src: /src/opendal/integrations/object_store/tests/behavior/put.rs:106,1
    - Dst: Ok
      Src: /src/opendal/integrations/object_store/tests/behavior/put.rs:107,1
    - Dst: utils::new_file_path
      Src: /src/opendal/integrations/object_store/tests/behavior/put.rs:110,1
    - Dst: String::into
      Src: /src/opendal/integrations/object_store/tests/behavior/put.rs:110,1
    - Dst: Bytes::from
      Src: /src/opendal/integrations/object_store/tests/behavior/put.rs:111,1
    - Dst: Arc::put
      Src: /src/opendal/integrations/object_store/tests/behavior/put.rs:112,1
    - Dst: Vec::clone
      Src: /src/opendal/integrations/object_store/tests/behavior/put.rs:112,1
    - Dst: Self::into
      Src: /src/opendal/integrations/object_store/tests/behavior/put.rs:112,1
    - Dst: Arc::head
      Src: /src/opendal/integrations/object_store/tests/behavior/put.rs:113,1
    - Dst: Bytes::from
      Src: /src/opendal/integrations/object_store/tests/behavior/put.rs:115,1
    - Dst: PutMode::Update
      Src: /src/opendal/integrations/object_store/tests/behavior/put.rs:117,1
    - Dst: Default::default
      Src: /src/opendal/integrations/object_store/tests/behavior/put.rs:121,1
    - Dst: Arc::put_opts
      Src: /src/opendal/integrations/object_store/tests/behavior/put.rs:123,1
    - Dst: Result::clone
      Src: /src/opendal/integrations/object_store/tests/behavior/put.rs:124,1
    - Dst: Self::into
      Src: /src/opendal/integrations/object_store/tests/behavior/put.rs:124,1
    - Dst: Arc::get
      Src: /src/opendal/integrations/object_store/tests/behavior/put.rs:126,1
    - Dst: bytes
      Src: /src/opendal/integrations/object_store/tests/behavior/put.rs:126,1
    - Dst: PutMode::Update
      Src: /src/opendal/integrations/object_store/tests/behavior/put.rs:130,1
    - Dst: Some
      Src: /src/opendal/integrations/object_store/tests/behavior/put.rs:131,1
    - Dst: '&str::to_string'
      Src: /src/opendal/integrations/object_store/tests/behavior/put.rs:131,1
    - Dst: Default::default
      Src: /src/opendal/integrations/object_store/tests/behavior/put.rs:134,1
    - Dst: Arc::put_opts
      Src: /src/opendal/integrations/object_store/tests/behavior/put.rs:136,1
    - Dst: Vec::clone
      Src: /src/opendal/integrations/object_store/tests/behavior/put.rs:137,1
    - Dst: Self::into
      Src: /src/opendal/integrations/object_store/tests/behavior/put.rs:137,1
    - Dst: Arc::delete
      Src: /src/opendal/integrations/object_store/tests/behavior/put.rs:145,1
    - Dst: Ok
      Src: /src/opendal/integrations/object_store/tests/behavior/put.rs:146,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 82
    argCount: 1
    argNames:
    - store
    argTypes:
    - OpendalStore
    constantsTouched: []
    func_position:
      end: 147
      start: 105
    functionDepth: 34
    functionLinenumber: 105
    functionLinenumberEnd: 147
    functionName: test_put_opts_with_update
    functionSourceFile: /src/opendal/integrations/object_store/tests/behavior/put.rs
    functionUses: 0
    functionsReached:
    - Default::default
    - Arc::put_opts
    - String::into
    - Self::into
    - Result::clone
    - Arc::info
    - Ok
    - Arc::put
    - utils::new_file_path
    - Arc::delete
    - ServiceInfo::capability
    - '&str::to_string'
    - Vec::clone
    - Arc::head
    - Some
    - Bytes::from
    - PutMode::Update
    - Arc::get
    - bytes
    linkageType: ''
    returnType: Result
    signature: 'pub async fn test_put_opts_with_update(store: OpendalStore) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Path::from
      Src: /src/opendal/integrations/object_store/tests/behavior/delete.rs:30,1
    - Dst: Bytes::from
      Src: /src/opendal/integrations/object_store/tests/behavior/delete.rs:31,1
    - Dst: Arc::put
      Src: /src/opendal/integrations/object_store/tests/behavior/delete.rs:32,1
    - Dst: Vec::clone
      Src: /src/opendal/integrations/object_store/tests/behavior/delete.rs:32,1
    - Dst: Self::into
      Src: /src/opendal/integrations/object_store/tests/behavior/delete.rs:32,1
    - Dst: Arc::delete
      Src: /src/opendal/integrations/object_store/tests/behavior/delete.rs:34,1
    - Dst: Arc::get
      Src: /src/opendal/integrations/object_store/tests/behavior/delete.rs:36,1
    - Dst: err
      Src: /src/opendal/integrations/object_store/tests/behavior/delete.rs:36,1
    - Dst: unwrap
      Src: /src/opendal/integrations/object_store/tests/behavior/delete.rs:36,1
    - Dst: Ok
      Src: /src/opendal/integrations/object_store/tests/behavior/delete.rs:39,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 29
    argCount: 1
    argNames:
    - store
    argTypes:
    - OpendalStore
    constantsTouched: []
    func_position:
      end: 40
      start: 29
    functionDepth: 32
    functionLinenumber: 29
    functionLinenumberEnd: 40
    functionName: test_delete
    functionSourceFile: /src/opendal/integrations/object_store/tests/behavior/delete.rs
    functionUses: 0
    functionsReached:
    - Arc::delete
    - Arc::put
    - Ok
    - err
    - unwrap
    - Path::from
    - Bytes::from
    - Self::into
    - Arc::get
    - Vec::clone
    linkageType: ''
    returnType: anyhow::Result
    signature: 'pub async fn test_delete(store: OpendalStore) -> anyhow::Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: S3::default
      Src: /src/opendal/integrations/object_store/src/amazon_s3.rs:27,1
    - Dst: OtelMetricsLayerBuilder::get_config_value
      Src: /src/opendal/integrations/object_store/src/amazon_s3.rs:28,1
    - Dst: object_store::Result::endpoint
      Src: /src/opendal/integrations/object_store/src/amazon_s3.rs:29,1
    - Dst: Self::as_str
      Src: /src/opendal/integrations/object_store/src/amazon_s3.rs:29,1
    - Dst: OtelMetricsLayerBuilder::get_config_value
      Src: /src/opendal/integrations/object_store/src/amazon_s3.rs:31,1
    - Dst: object_store::Result::region
      Src: /src/opendal/integrations/object_store/src/amazon_s3.rs:32,1
    - Dst: Self::as_str
      Src: /src/opendal/integrations/object_store/src/amazon_s3.rs:32,1
    - Dst: OtelMetricsLayerBuilder::get_config_value
      Src: /src/opendal/integrations/object_store/src/amazon_s3.rs:34,1
    - Dst: object_store::Result::bucket
      Src: /src/opendal/integrations/object_store/src/amazon_s3.rs:35,1
    - Dst: as_str
      Src: /src/opendal/integrations/object_store/src/amazon_s3.rs:35,1
    - Dst: OtelMetricsLayerBuilder::get_config_value
      Src: /src/opendal/integrations/object_store/src/amazon_s3.rs:37,1
    - Dst: object_store::Result::access_key_id
      Src: /src/opendal/integrations/object_store/src/amazon_s3.rs:38,1
    - Dst: Self::as_str
      Src: /src/opendal/integrations/object_store/src/amazon_s3.rs:38,1
    - Dst: OtelMetricsLayerBuilder::get_config_value
      Src: /src/opendal/integrations/object_store/src/amazon_s3.rs:41,1
    - Dst: object_store::Result::secret_access_key
      Src: /src/opendal/integrations/object_store/src/amazon_s3.rs:43,1
    - Dst: Self::as_str
      Src: /src/opendal/integrations/object_store/src/amazon_s3.rs:43,1
    - Dst: OtelMetricsLayerBuilder::get_config_value
      Src: /src/opendal/integrations/object_store/src/amazon_s3.rs:45,1
    - Dst: object_store::Result::session_token
      Src: /src/opendal/integrations/object_store/src/amazon_s3.rs:46,1
    - Dst: Self::as_str
      Src: /src/opendal/integrations/object_store/src/amazon_s3.rs:46,1
    - Dst: OtelMetricsLayerBuilder::get_config_value
      Src: /src/opendal/integrations/object_store/src/amazon_s3.rs:49,1
    - Dst: parse::<bool>
      Src: /src/opendal/integrations/object_store/src/amazon_s3.rs:51,1
    - Dst: map_err
      Src: /src/opendal/integrations/object_store/src/amazon_s3.rs:51,1
    - Dst: Box::new
      Src: /src/opendal/integrations/object_store/src/amazon_s3.rs:55,1
    - Dst: object_store::Result::enable_virtual_host_style
      Src: /src/opendal/integrations/object_store/src/amazon_s3.rs:58,1
    - Dst: OtelMetricsLayerBuilder::get_config_value
      Src: /src/opendal/integrations/object_store/src/amazon_s3.rs:61,1
    - Dst: parse::<bool>
      Src: /src/opendal/integrations/object_store/src/amazon_s3.rs:62,1
    - Dst: map_err
      Src: /src/opendal/integrations/object_store/src/amazon_s3.rs:62,1
    - Dst: Box::new
      Src: /src/opendal/integrations/object_store/src/amazon_s3.rs:66,1
    - Dst: object_store::Result::skip_signature
      Src: /src/opendal/integrations/object_store/src/amazon_s3.rs:69,1
    - Dst: Operator::new
      Src: /src/opendal/integrations/object_store/src/amazon_s3.rs:73,1
    - Dst: Result::map_err
      Src: /src/opendal/integrations/object_store/src/amazon_s3.rs:73,1
    - Dst: utils::format_object_store_error
      Src: /src/opendal/integrations/object_store/src/amazon_s3.rs:73,1
    - Dst: Ok
      Src: /src/opendal/integrations/object_store/src/amazon_s3.rs:74,1
    - Dst: OpendalStore::new
      Src: /src/opendal/integrations/object_store/src/amazon_s3.rs:74,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 113
    argCount: 1
    argNames:
    - builder
    argTypes:
    - AmazonS3Builder
    constantsTouched: []
    func_position:
      end: 75
      start: 26
    functionDepth: 31
    functionLinenumber: 26
    functionLinenumberEnd: 75
    functionName: OpendalStore::new_amazon_s3
    functionSourceFile: /src/opendal/integrations/object_store/src/amazon_s3.rs
    functionUses: 0
    functionsReached:
    - OtelMetricsLayerBuilder::get_config_value
    - Box::new
    - utils::format_object_store_error
    - object_store::Result::session_token
    - object_store::Result::secret_access_key
    - Self::as_str
    - object_store::Result::access_key_id
    - map_err
    - Ok
    - object_store::Result::region
    - object_store::Result::endpoint
    - as_str
    - OpendalStore::new
    - S3::default
    - Result::map_err
    - object_store::Result::enable_virtual_host_style
    - Operator::new
    - object_store::Result::bucket
    - parse::<bool>
    - object_store::Result::skip_signature
    linkageType: ''
    returnType: object_store::Result
    signature: 'pub fn new_amazon_s3(builder: AmazonS3Builder) -> object_store::Result<OpendalStore>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Error::kind
      Src: /src/opendal/integrations/object_store/src/utils.rs:34,1
    - Dst: to_string
      Src: /src/opendal/integrations/object_store/src/utils.rs:36,1
    - Dst: Box::new
      Src: /src/opendal/integrations/object_store/src/utils.rs:37,1
    - Dst: Box::new
      Src: /src/opendal/integrations/object_store/src/utils.rs:40,1
    - Dst: to_string
      Src: /src/opendal/integrations/object_store/src/utils.rs:43,1
    - Dst: Box::new
      Src: /src/opendal/integrations/object_store/src/utils.rs:44,1
    - Dst: to_string
      Src: /src/opendal/integrations/object_store/src/utils.rs:47,1
    - Dst: Box::new
      Src: /src/opendal/integrations/object_store/src/utils.rs:48,1
    - Dst: ErrorKind::into_static
      Src: /src/opendal/integrations/object_store/src/utils.rs:51,1
    - Dst: Box::new
      Src: /src/opendal/integrations/object_store/src/utils.rs:52,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 22
    argCount: 2
    argNames:
    - err
    - path
    argTypes:
    - opendal::Error
    - '&str'
    constantsTouched: []
    func_position:
      end: 55
      start: 32
    functionDepth: 30
    functionLinenumber: 32
    functionLinenumberEnd: 55
    functionName: format_object_store_error
    functionSourceFile: /src/opendal/integrations/object_store/src/utils.rs
    functionUses: 15
    functionsReached:
    - to_string
    - Error::kind
    - Box::new
    - ErrorKind::into_static
    linkageType: ''
    returnType: object_store::Error
    signature: 'pub fn format_object_store_error(err: opendal::Error, path: &str)
      -> object_store::Error'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: into
      Src: /src/opendal/integrations/object_store/src/utils.rs:60,1
    - Dst: Result::last_modified
      Src: /src/opendal/integrations/object_store/src/utils.rs:61,1
    - Dst: Option::and_then
      Src: /src/opendal/integrations/object_store/src/utils.rs:61,1
    - Dst: unwrap_or_default
      Src: /src/opendal/integrations/object_store/src/utils.rs:61,1
    - Dst: Result::content_length
      Src: /src/opendal/integrations/object_store/src/utils.rs:65,1
    - Dst: Result::etag
      Src: /src/opendal/integrations/object_store/src/utils.rs:66,1
    - Dst: Option::map
      Src: /src/opendal/integrations/object_store/src/utils.rs:66,1
    - Dst: anyhow::Result::to_string
      Src: /src/opendal/integrations/object_store/src/utils.rs:66,1
    - Dst: Result::version
      Src: /src/opendal/integrations/object_store/src/utils.rs:67,1
    - Dst: Result::map
      Src: /src/opendal/integrations/object_store/src/utils.rs:67,1
    - Dst: anyhow::Result::to_string
      Src: /src/opendal/integrations/object_store/src/utils.rs:67,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 25
    argCount: 2
    argNames:
    - path
    - meta
    argTypes:
    - '&str'
    - '&Metadata'
    constantsTouched: []
    func_position:
      end: 69
      start: 58
    functionDepth: 29
    functionLinenumber: 58
    functionLinenumberEnd: 69
    functionName: format_object_meta
    functionSourceFile: /src/opendal/integrations/object_store/src/utils.rs
    functionUses: 5
    functionsReached:
    - anyhow::Result::to_string
    - Result::last_modified
    - Result::version
    - Option::map
    - into
    - Result::etag
    - Option::and_then
    - Result::map
    - unwrap_or_default
    - Result::content_length
    linkageType: ''
    returnType: ObjectMeta
    signature: 'pub fn format_object_meta(path: &str, meta: &Metadata) -> ObjectMeta'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: SendWrapper::new
      Src: /src/opendal/integrations/object_store/src/utils.rs:102,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 103
      start: 101
    functionDepth: 2
    functionLinenumber: 101
    functionLinenumberEnd: 103
    functionName: T::into_send
    functionSourceFile: /src/opendal/integrations/object_store/src/utils.rs
    functionUses: 0
    functionsReached:
    - SendWrapper::new
    linkageType: ''
    returnType: Self::Output
    signature: fn into_send(self) -> Self::Output
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 1
    argNames: []
    argTypes:
    - T
    constantsTouched: []
    func_position:
      end: 96
      start: 96
    functionDepth: 0
    functionLinenumber: 96
    functionLinenumberEnd: 96
    functionName: assert_send::assert_send
    functionSourceFile: /src/opendal/integrations/object_store/src/lib.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: 'fn assert_send<T: Send>(_: T)'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Operator::new
      Src: /src/opendal/integrations/object_store/src/lib.rs:100,1
    - Dst: opendal::services::Memory::default
      Src: /src/opendal/integrations/object_store/src/lib.rs:100,1
    - Dst: Result::unwrap
      Src: /src/opendal/integrations/object_store/src/lib.rs:100,1
    - Dst: super::OpendalStore::new
      Src: /src/opendal/integrations/object_store/src/lib.rs:101,1
    - Dst: assert_send
      Src: /src/opendal/integrations/object_store/src/lib.rs:102,1
    - Dst: Arc::put
      Src: /src/opendal/integrations/object_store/src/lib.rs:102,1
    - Dst: '&str::into'
      Src: /src/opendal/integrations/object_store/src/lib.rs:102,1
    - Dst: PutPayload::new
      Src: /src/opendal/integrations/object_store/src/lib.rs:102,1
    - Dst: assert_send
      Src: /src/opendal/integrations/object_store/src/lib.rs:103,1
    - Dst: Arc::get
      Src: /src/opendal/integrations/object_store/src/lib.rs:103,1
    - Dst: '&str::into'
      Src: /src/opendal/integrations/object_store/src/lib.rs:103,1
    - Dst: assert_send
      Src: /src/opendal/integrations/object_store/src/lib.rs:104,1
    - Dst: Arc::get_range
      Src: /src/opendal/integrations/object_store/src/lib.rs:104,1
    - Dst: '&str::into'
      Src: /src/opendal/integrations/object_store/src/lib.rs:104,1
    - Dst: assert_send
      Src: /src/opendal/integrations/object_store/src/lib.rs:105,1
    - Dst: Arc::head
      Src: /src/opendal/integrations/object_store/src/lib.rs:105,1
    - Dst: '&str::into'
      Src: /src/opendal/integrations/object_store/src/lib.rs:105,1
    - Dst: assert_send
      Src: /src/opendal/integrations/object_store/src/lib.rs:106,1
    - Dst: Arc::delete
      Src: /src/opendal/integrations/object_store/src/lib.rs:106,1
    - Dst: '&str::into'
      Src: /src/opendal/integrations/object_store/src/lib.rs:106,1
    - Dst: assert_send
      Src: /src/opendal/integrations/object_store/src/lib.rs:107,1
    - Dst: Arc::list
      Src: /src/opendal/integrations/object_store/src/lib.rs:107,1
    - Dst: assert_send
      Src: /src/opendal/integrations/object_store/src/lib.rs:108,1
    - Dst: Arc::list_with_offset
      Src: /src/opendal/integrations/object_store/src/lib.rs:108,1
    - Dst: '&str::into'
      Src: /src/opendal/integrations/object_store/src/lib.rs:108,1
    - Dst: assert_send
      Src: /src/opendal/integrations/object_store/src/lib.rs:109,1
    - Dst: Arc::list_with_delimiter
      Src: /src/opendal/integrations/object_store/src/lib.rs:109,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 57
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 110
      start: 99
    functionDepth: 35
    functionLinenumber: 99
    functionLinenumberEnd: 110
    functionName: assert_send::assertion
    functionSourceFile: /src/opendal/integrations/object_store/src/lib.rs
    functionUses: 0
    functionsReached:
    - super::OpendalStore::new
    - Operator::new
    - PutPayload::new
    - Arc::delete
    - Arc::put
    - assert_send
    - Arc::head
    - Arc::get_range
    - Arc::list_with_offset
    - Arc::list
    - Result::unwrap
    - opendal::services::Memory::default
    - Arc::get
    - Arc::list_with_delimiter
    - '&str::into'
    linkageType: ''
    returnType: void
    signature: fn assertion()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: into_inner
      Src: /src/opendal/integrations/object_store/src/lib.rs:114,1
    - Dst: chrono::DateTime::<chrono::Utc>::from_timestamp
      Src: /src/opendal/integrations/object_store/src/lib.rs:115,1
    - Dst: Arc::as_second
      Src: /src/opendal/integrations/object_store/src/lib.rs:116,1
    - Dst: Arc::subsec_nanosecond
      Src: /src/opendal/integrations/object_store/src/lib.rs:117,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - ts
    argTypes:
    - opendal::raw::Timestamp
    constantsTouched: []
    func_position:
      end: 119
      start: 113
    functionDepth: 1
    functionLinenumber: 113
    functionLinenumberEnd: 119
    functionName: timestamp_to_datetime
    functionSourceFile: /src/opendal/integrations/object_store/src/lib.rs
    functionUses: 2
    functionsReached:
    - Arc::as_second
    - into_inner
    - chrono::DateTime::<chrono::Utc>::from_timestamp
    - Arc::subsec_nanosecond
    linkageType: ''
    returnType: Option
    signature: 'fn timestamp_to_datetime(ts: opendal::raw::Timestamp) -> Option<chrono::DateTime<chrono::Utc>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: opendal::raw::Timestamp::new
      Src: /src/opendal/integrations/object_store/src/lib.rs:122,1
    - Dst: chrono::DateTime<chrono::Utc>::timestamp
      Src: /src/opendal/integrations/object_store/src/lib.rs:122,1
    - Dst: chrono::DateTime<chrono::Utc>::timestamp_subsec_nanos
      Src: /src/opendal/integrations/object_store/src/lib.rs:122,1
    - Dst: Result::ok
      Src: /src/opendal/integrations/object_store/src/lib.rs:122,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - dt
    argTypes:
    - chrono::DateTime<chrono::Utc>
    constantsTouched: []
    func_position:
      end: 123
      start: 121
    functionDepth: 3
    functionLinenumber: 121
    functionLinenumberEnd: 123
    functionName: datetime_to_timestamp
    functionSourceFile: /src/opendal/integrations/object_store/src/lib.rs
    functionUses: 1
    functionsReached:
    - Result::ok
    - chrono::DateTime<chrono::Utc>::timestamp
    - opendal::raw::Timestamp::new
    - chrono::DateTime<chrono::Utc>::timestamp_subsec_nanos
    linkageType: ''
    returnType: Option
    signature: 'fn datetime_to_timestamp(dt: chrono::DateTime<chrono::Utc>) -> Option<opendal::raw::Timestamp>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Attributes::new
      Src: /src/opendal/integrations/object_store/src/store.rs:62,1
    - Dst: Result::user_metadata
      Src: /src/opendal/integrations/object_store/src/store.rs:63,1
    - Dst: Vec::insert
      Src: /src/opendal/integrations/object_store/src/store.rs:65,1
    - Dst: object_store::Attribute::Metadata
      Src: /src/opendal/integrations/object_store/src/store.rs:66,1
    - Dst: FoyerKey::clone
      Src: /src/opendal/integrations/object_store/src/store.rs:66,1
    - Dst: Self::into
      Src: /src/opendal/integrations/object_store/src/store.rs:66,1
    - Dst: Vec::clone
      Src: /src/opendal/integrations/object_store/src/store.rs:67,1
    - Dst: Self::into
      Src: /src/opendal/integrations/object_store/src/store.rs:67,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 19
    argCount: 1
    argNames:
    - meta
    argTypes:
    - '&opendal::Metadata'
    constantsTouched: []
    func_position:
      end: 73
      start: 61
    functionDepth: 32
    functionLinenumber: 61
    functionLinenumberEnd: 73
    functionName: format_object_attributes
    functionSourceFile: /src/opendal/integrations/object_store/src/store.rs
    functionUses: 2
    functionsReached:
    - object_store::Attribute::Metadata
    - Vec::insert
    - Result::user_metadata
    - Self::into
    - Attributes::new
    - FoyerKey::clone
    - Vec::clone
    linkageType: ''
    returnType: Attributes
    signature: 'fn format_object_attributes(meta: &opendal::Metadata) -> Attributes'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: clone
      Src: /src/opendal/integrations/object_store/src/store.rs:77,1
    - Dst: clone
      Src: /src/opendal/integrations/object_store/src/store.rs:78,1
    - Dst: clone
      Src: /src/opendal/integrations/object_store/src/store.rs:79,1
    - Dst: and_then
      Src: /src/opendal/integrations/object_store/src/store.rs:80,1
    - Dst: and_then
      Src: /src/opendal/integrations/object_store/src/store.rs:81,1
    - Dst: Default::default
      Src: /src/opendal/integrations/object_store/src/store.rs:83,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 17
    argCount: 2
    argNames:
    - options
    - content_length_hint
    argTypes:
    - '&GetOptions'
    - Option<u64>
    constantsTouched: []
    func_position:
      end: 85
      start: 75
    functionDepth: 3
    functionLinenumber: 75
    functionLinenumberEnd: 85
    functionName: format_reader_options
    functionSourceFile: /src/opendal/integrations/object_store/src/store.rs
    functionUses: 2
    functionsReached:
    - Default::default
    - clone
    - and_then
    linkageType: ''
    returnType: ReaderOptions
    signature: 'fn format_reader_options(options: &GetOptions, content_length_hint:
      Option<u64>) -> ReaderOptions'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: clone
      Src: /src/opendal/integrations/object_store/src/store.rs:89,1
    - Dst: clone
      Src: /src/opendal/integrations/object_store/src/store.rs:90,1
    - Dst: clone
      Src: /src/opendal/integrations/object_store/src/store.rs:91,1
    - Dst: and_then
      Src: /src/opendal/integrations/object_store/src/store.rs:92,1
    - Dst: and_then
      Src: /src/opendal/integrations/object_store/src/store.rs:93,1
    - Dst: Default::default
      Src: /src/opendal/integrations/object_store/src/store.rs:94,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 17
    argCount: 1
    argNames:
    - options
    argTypes:
    - '&GetOptions'
    constantsTouched: []
    func_position:
      end: 96
      start: 87
    functionDepth: 3
    functionLinenumber: 87
    functionLinenumberEnd: 96
    functionName: format_stat_options
    functionSourceFile: /src/opendal/integrations/object_store/src/store.rs
    functionUses: 1
    functionsReached:
    - Default::default
    - clone
    - and_then
    linkageType: ''
    returnType: StatOptions
    signature: 'fn format_stat_options(options: &GetOptions) -> StatOptions'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: min
      Src: /src/opendal/integrations/object_store/src/store.rs:104,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 30
    argCount: 2
    argNames:
    - range
    - size
    argTypes:
    - Option<&GetRange>
    - u64
    constantsTouched: []
    func_position:
      end: 117
      start: 98
    functionDepth: 0
    functionLinenumber: 98
    functionLinenumberEnd: 117
    functionName: format_read_range
    functionSourceFile: /src/opendal/integrations/object_store/src/store.rs
    functionUses: 2
    functionsReached:
    - min
    linkageType: ''
    returnType: Range
    signature: 'fn format_read_range(range: Option<&GetRange>, size: u64) -> Range<u64>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Error::kind
      Src: /src/opendal/integrations/object_store/src/store.rs:120,1
    - Dst: Box::new
      Src: /src/opendal/integrations/object_store/src/store.rs:125,1
    - Dst: format_object_store_error
      Src: /src/opendal/integrations/object_store/src/store.rs:128,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - err
    - path
    argTypes:
    - opendal::Error
    - '&str'
    constantsTouched: []
    func_position:
      end: 130
      start: 119
    functionDepth: 31
    functionLinenumber: 119
    functionLinenumberEnd: 130
    functionName: format_without_stat_error
    functionSourceFile: /src/opendal/integrations/object_store/src/store.rs
    functionUses: 1
    functionsReached:
    - Box::new
    - Error::kind
    - format_object_store_error
    linkageType: ''
    returnType: object_store::Error
    signature: 'fn format_without_stat_error(err: opendal::Error, path: &str) -> object_store::Error'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: info
      Src: /src/opendal/integrations/object_store/src/store.rs:189,1
    - Dst: ServiceInfo::into
      Src: /src/opendal/integrations/object_store/src/store.rs:189,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - op
    argTypes:
    - Operator
    constantsTouched: []
    func_position:
      end: 192
      start: 187
    functionDepth: 29
    functionLinenumber: 187
    functionLinenumberEnd: 192
    functionName: OpendalStore::new
    functionSourceFile: /src/opendal/integrations/object_store/src/store.rs
    functionUses: 5
    functionsReached:
    - info
    - ServiceInfo::into
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(op: Operator) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: as_ref
      Src: /src/opendal/integrations/object_store/src/store.rs:196,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 197
      start: 195
    functionDepth: 1
    functionLinenumber: 195
    functionLinenumberEnd: 197
    functionName: OpendalStore::info
    functionSourceFile: /src/opendal/integrations/object_store/src/store.rs
    functionUses: 0
    functionsReached:
    - as_ref
    linkageType: ''
    returnType: '&OperatorInfo'
    signature: pub fn info(&self) -> &OperatorInfo
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: reader_options
      Src: /src/opendal/integrations/object_store/src/store.rs:205,1
    - Dst: format_reader_options
      Src: /src/opendal/integrations/object_store/src/store.rs:207,1
    - Dst: into_send
      Src: /src/opendal/integrations/object_store/src/store.rs:205,1
    - Dst: map_err
      Src: /src/opendal/integrations/object_store/src/store.rs:205,1
    - Dst: format_without_stat_error
      Src: /src/opendal/integrations/object_store/src/store.rs:210,1
    - Dst: Result::as_ref
      Src: /src/opendal/integrations/object_store/src/store.rs:210,1
    - Dst: as_ref
      Src: /src/opendal/integrations/object_store/src/store.rs:212,1
    - Dst: anyhow::Result::into_bytes_stream
      Src: /src/opendal/integrations/object_store/src/store.rs:214,1
    - Dst: Result::into_send
      Src: /src/opendal/integrations/object_store/src/store.rs:214,1
    - Dst: anyhow::Result::into_bytes_stream
      Src: /src/opendal/integrations/object_store/src/store.rs:219,1
    - Dst: Result::into_send
      Src: /src/opendal/integrations/object_store/src/store.rs:219,1
    - Dst: anyhow::Result::into_bytes_stream
      Src: /src/opendal/integrations/object_store/src/store.rs:221,1
    - Dst: BytesRange::suffix
      Src: /src/opendal/integrations/object_store/src/store.rs:222,1
    - Dst: Result::into_send
      Src: /src/opendal/integrations/object_store/src/store.rs:221,1
    - Dst: anyhow::Result::into_bytes_stream
      Src: /src/opendal/integrations/object_store/src/store.rs:226,1
    - Dst: Result::into_send
      Src: /src/opendal/integrations/object_store/src/store.rs:226,1
    - Dst: map_err
      Src: /src/opendal/integrations/object_store/src/store.rs:212,1
    - Dst: format_without_stat_error
      Src: /src/opendal/integrations/object_store/src/store.rs:228,1
    - Dst: Result::as_ref
      Src: /src/opendal/integrations/object_store/src/store.rs:228,1
    - Dst: Result::metadata
      Src: /src/opendal/integrations/object_store/src/store.rs:230,1
    - Dst: anyhow::Result::into_send
      Src: /src/opendal/integrations/object_store/src/store.rs:230,1
    - Dst: map_err
      Src: /src/opendal/integrations/object_store/src/store.rs:230,1
    - Dst: format_without_stat_error
      Src: /src/opendal/integrations/object_store/src/store.rs:234,1
    - Dst: Result::as_ref
      Src: /src/opendal/integrations/object_store/src/store.rs:234,1
    - Dst: format_object_attributes
      Src: /src/opendal/integrations/object_store/src/store.rs:235,1
    - Dst: format_object_meta
      Src: /src/opendal/integrations/object_store/src/store.rs:236,1
    - Dst: Result::as_ref
      Src: /src/opendal/integrations/object_store/src/store.rs:236,1
    - Dst: format_read_range
      Src: /src/opendal/integrations/object_store/src/store.rs:237,1
    - Dst: as_ref
      Src: /src/opendal/integrations/object_store/src/store.rs:237,1
    - Dst: Ok
      Src: /src/opendal/integrations/object_store/src/store.rs:240,1
    - Dst: GetResultPayload::Stream
      Src: /src/opendal/integrations/object_store/src/store.rs:241,1
    - Dst: Box::pin
      Src: /src/opendal/integrations/object_store/src/store.rs:241,1
    - Dst: futures::stream::empty
      Src: /src/opendal/integrations/object_store/src/store.rs:241,1
    - Dst: reader_options
      Src: /src/opendal/integrations/object_store/src/store.rs:252,1
    - Dst: format_reader_options
      Src: /src/opendal/integrations/object_store/src/store.rs:256,1
    - Dst: Some
      Src: /src/opendal/integrations/object_store/src/store.rs:256,1
    - Dst: into_send
      Src: /src/opendal/integrations/object_store/src/store.rs:252,1
    - Dst: map_err
      Src: /src/opendal/integrations/object_store/src/store.rs:252,1
    - Dst: format_object_store_error
      Src: /src/opendal/integrations/object_store/src/store.rs:260,1
    - Dst: Result::as_ref
      Src: /src/opendal/integrations/object_store/src/store.rs:260,1
    - Dst: anyhow::Result::into_bytes_stream
      Src: /src/opendal/integrations/object_store/src/store.rs:261,1
    - Dst: Result::into_send
      Src: /src/opendal/integrations/object_store/src/store.rs:261,1
    - Dst: map_err
      Src: /src/opendal/integrations/object_store/src/store.rs:261,1
    - Dst: format_object_store_error
      Src: /src/opendal/integrations/object_store/src/store.rs:265,1
    - Dst: Result::as_ref
      Src: /src/opendal/integrations/object_store/src/store.rs:265,1
    - Dst: Result::into_send
      Src: /src/opendal/integrations/object_store/src/store.rs:268,1
    - Dst: Self::Output::map_err
      Src: /src/opendal/integrations/object_store/src/store.rs:268,1
    - Dst: Box::new
      Src: /src/opendal/integrations/object_store/src/store.rs:272,1
    - Dst: Ok
      Src: /src/opendal/integrations/object_store/src/store.rs:275,1
    - Dst: GetResultPayload::Stream
      Src: /src/opendal/integrations/object_store/src/store.rs:276,1
    - Dst: Box::pin
      Src: /src/opendal/integrations/object_store/src/store.rs:276,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 134
    argCount: 3
    argNames:
    - location
    - raw_location
    - options
    argTypes:
    - '&Path'
    - '&str'
    - '&GetOptions'
    constantsTouched: []
    func_position:
      end: 281
      start: 199
    functionDepth: 35
    functionLinenumber: 199
    functionLinenumberEnd: 281
    functionName: OpendalStore::get_opts_without_stat
    functionSourceFile: /src/opendal/integrations/object_store/src/store.rs
    functionUses: 1
    functionsReached:
    - Box::new
    - Result::into_send
    - format_read_range
    - format_reader_options
    - map_err
    - Result::metadata
    - format_without_stat_error
    - anyhow::Result::into_send
    - Self::Output::map_err
    - Ok
    - reader_options
    - format_object_meta
    - format_object_attributes
    - into_send
    - anyhow::Result::into_bytes_stream
    - GetResultPayload::Stream
    - Some
    - futures::stream::empty
    - format_object_store_error
    - BytesRange::suffix
    - as_ref
    - Box::pin
    - Result::as_ref
    linkageType: ''
    returnType: object_store::Result
    signature: 'async fn get_opts_without_stat(&self,location: &Path,raw_location:
      &str,options: &GetOptions,) -> object_store::Result<GetResult>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: stat_options
      Src: /src/opendal/integrations/object_store/src/store.rs:289,1
    - Dst: format_stat_options
      Src: /src/opendal/integrations/object_store/src/store.rs:291,1
    - Dst: into_send
      Src: /src/opendal/integrations/object_store/src/store.rs:289,1
    - Dst: map_err
      Src: /src/opendal/integrations/object_store/src/store.rs:289,1
    - Dst: format_object_store_error
      Src: /src/opendal/integrations/object_store/src/store.rs:294,1
    - Dst: Result::as_ref
      Src: /src/opendal/integrations/object_store/src/store.rs:294,1
    - Dst: format_object_attributes
      Src: /src/opendal/integrations/object_store/src/store.rs:295,1
    - Dst: format_object_meta
      Src: /src/opendal/integrations/object_store/src/store.rs:296,1
    - Dst: Result::as_ref
      Src: /src/opendal/integrations/object_store/src/store.rs:296,1
    - Dst: Ok
      Src: /src/opendal/integrations/object_store/src/store.rs:299,1
    - Dst: GetResultPayload::Stream
      Src: /src/opendal/integrations/object_store/src/store.rs:300,1
    - Dst: Box::pin
      Src: /src/opendal/integrations/object_store/src/store.rs:300,1
    - Dst: futures::stream::empty
      Src: /src/opendal/integrations/object_store/src/store.rs:300,1
    - Dst: format_read_range
      Src: /src/opendal/integrations/object_store/src/store.rs:307,1
    - Dst: as_ref
      Src: /src/opendal/integrations/object_store/src/store.rs:307,1
    - Dst: Ok
      Src: /src/opendal/integrations/object_store/src/store.rs:309,1
    - Dst: GetResultPayload::Stream
      Src: /src/opendal/integrations/object_store/src/store.rs:310,1
    - Dst: Box::pin
      Src: /src/opendal/integrations/object_store/src/store.rs:310,1
    - Dst: futures::stream::empty
      Src: /src/opendal/integrations/object_store/src/store.rs:310,1
    - Dst: reader_options
      Src: /src/opendal/integrations/object_store/src/store.rs:317,1
    - Dst: format_reader_options
      Src: /src/opendal/integrations/object_store/src/store.rs:321,1
    - Dst: Some
      Src: /src/opendal/integrations/object_store/src/store.rs:321,1
    - Dst: into_send
      Src: /src/opendal/integrations/object_store/src/store.rs:317,1
    - Dst: map_err
      Src: /src/opendal/integrations/object_store/src/store.rs:317,1
    - Dst: format_object_store_error
      Src: /src/opendal/integrations/object_store/src/store.rs:325,1
    - Dst: Result::as_ref
      Src: /src/opendal/integrations/object_store/src/store.rs:325,1
    - Dst: anyhow::Result::into_bytes_stream
      Src: /src/opendal/integrations/object_store/src/store.rs:326,1
    - Dst: Result::into_send
      Src: /src/opendal/integrations/object_store/src/store.rs:326,1
    - Dst: map_err
      Src: /src/opendal/integrations/object_store/src/store.rs:326,1
    - Dst: format_object_store_error
      Src: /src/opendal/integrations/object_store/src/store.rs:330,1
    - Dst: Result::as_ref
      Src: /src/opendal/integrations/object_store/src/store.rs:330,1
    - Dst: into_send
      Src: /src/opendal/integrations/object_store/src/store.rs:326,1
    - Dst: map_err
      Src: /src/opendal/integrations/object_store/src/store.rs:326,1
    - Dst: Box::new
      Src: /src/opendal/integrations/object_store/src/store.rs:334,1
    - Dst: Ok
      Src: /src/opendal/integrations/object_store/src/store.rs:337,1
    - Dst: GetResultPayload::Stream
      Src: /src/opendal/integrations/object_store/src/store.rs:338,1
    - Dst: Box::pin
      Src: /src/opendal/integrations/object_store/src/store.rs:338,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 90
    argCount: 3
    argNames:
    - location
    - raw_location
    - options
    argTypes:
    - '&Path'
    - '&str'
    - '&GetOptions'
    constantsTouched: []
    func_position:
      end: 343
      start: 283
    functionDepth: 35
    functionLinenumber: 283
    functionLinenumberEnd: 343
    functionName: OpendalStore::get_opts_with_stat
    functionSourceFile: /src/opendal/integrations/object_store/src/store.rs
    functionUses: 1
    functionsReached:
    - Box::new
    - Result::into_send
    - format_read_range
    - format_reader_options
    - map_err
    - Ok
    - reader_options
    - format_object_meta
    - format_object_attributes
    - into_send
    - GetResultPayload::Stream
    - anyhow::Result::into_bytes_stream
    - Some
    - futures::stream::empty
    - format_object_store_error
    - stat_options
    - as_ref
    - Box::pin
    - Result::as_ref
    - format_stat_options
    linkageType: ''
    returnType: object_store::Result
    signature: 'async fn get_opts_with_stat(&self,location: &Path,raw_location: &str,options:
      &GetOptions,) -> object_store::Result<GetResult>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: CopyOptions::default
      Src: /src/opendal/integrations/object_store/src/store.rs:352,1
    - Dst: copy_options
      Src: /src/opendal/integrations/object_store/src/store.rs:358,1
    - Dst: opendal::raw::percent_decode_path
      Src: /src/opendal/integrations/object_store/src/store.rs:360,1
    - Dst: Result::as_ref
      Src: /src/opendal/integrations/object_store/src/store.rs:360,1
    - Dst: opendal::raw::percent_decode_path
      Src: /src/opendal/integrations/object_store/src/store.rs:361,1
    - Dst: Result::as_ref
      Src: /src/opendal/integrations/object_store/src/store.rs:361,1
    - Dst: into_send
      Src: /src/opendal/integrations/object_store/src/store.rs:358,1
    - Dst: map_err
      Src: /src/opendal/integrations/object_store/src/store.rs:358,1
    - Dst: Error::kind
      Src: /src/opendal/integrations/object_store/src/store.rs:367,1
    - Dst: Result::to_string
      Src: /src/opendal/integrations/object_store/src/store.rs:369,1
    - Dst: Box::new
      Src: /src/opendal/integrations/object_store/src/store.rs:370,1
    - Dst: format_object_store_error
      Src: /src/opendal/integrations/object_store/src/store.rs:373,1
    - Dst: Result::as_ref
      Src: /src/opendal/integrations/object_store/src/store.rs:373,1
    - Dst: Ok
      Src: /src/opendal/integrations/object_store/src/store.rs:377,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 40
    argCount: 3
    argNames:
    - from
    - to
    - if_not_exists
    argTypes:
    - '&Path'
    - '&Path'
    - bool
    constantsTouched: []
    func_position:
      end: 378
      start: 346
    functionDepth: 35
    functionLinenumber: 346
    functionLinenumberEnd: 378
    functionName: OpendalStore::copy_request
    functionSourceFile: /src/opendal/integrations/object_store/src/store.rs
    functionUses: 1
    functionsReached:
    - map_err
    - Result::to_string
    - Ok
    - copy_options
    - Box::new
    - opendal::raw::percent_decode_path
    - into_send
    - CopyOptions::default
    - Error::kind
    - Result::as_ref
    - format_object_store_error
    linkageType: ''
    returnType: object_store::Result
    signature: 'async fn copy_request(&self,from: &Path,to: &Path,if_not_exists: bool,)
      -> object_store::Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: info
      Src: /src/opendal/integrations/object_store/src/store.rs:394,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - f
    argTypes:
    - '&mut Formatter<''_>'
    constantsTouched: []
    func_position:
      end: 402
      start: 393
    functionDepth: 2
    functionLinenumber: 393
    functionLinenumberEnd: 402
    functionName: OpendalStore::fmt
    functionSourceFile: /src/opendal/integrations/object_store/src/store.rs
    functionUses: 0
    functionsReached:
    - info
    linkageType: ''
    returnType: fmt::Result
    signature: 'fn fmt(&self, f: &mut Formatter<''_>) -> fmt::Result'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Self::new
      Src: /src/opendal/integrations/object_store/src/store.rs:407,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - value
    argTypes:
    - Operator
    constantsTouched: []
    func_position:
      end: 408
      start: 406
    functionDepth: 2
    functionLinenumber: 406
    functionLinenumberEnd: 408
    functionName: OpendalStore::from
    functionSourceFile: /src/opendal/integrations/object_store/src/store.rs
    functionUses: 0
    functionsReached:
    - Self::new
    linkageType: ''
    returnType: Self
    signature: 'fn from(value: Operator) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: opendal::raw::percent_decode_path
      Src: /src/opendal/integrations/object_store/src/store.rs:419,1
    - Dst: Result::as_ref
      Src: /src/opendal/integrations/object_store/src/store.rs:419,1
    - Dst: write_with
      Src: /src/opendal/integrations/object_store/src/store.rs:420,1
    - Dst: Buffer::from_iter
      Src: /src/opendal/integrations/object_store/src/store.rs:422,1
    - Dst: clone
      Src: /src/opendal/integrations/object_store/src/store.rs:423,1
    - Dst: if_not_exists
      Src: /src/opendal/integrations/object_store/src/store.rs:427,1
    - Dst: Err
      Src: /src/opendal/integrations/object_store/src/store.rs:431,1
    - Dst: Box::new
      Src: /src/opendal/integrations/object_store/src/store.rs:432,1
    - Dst: opendal::Error::new
      Src: /src/opendal/integrations/object_store/src/store.rs:432,1
    - Dst: if_match
      Src: /src/opendal/integrations/object_store/src/store.rs:438,1
    - Dst: Option::as_str
      Src: /src/opendal/integrations/object_store/src/store.rs:438,1
    - Dst: into_send
      Src: /src/opendal/integrations/object_store/src/store.rs:441,1
    - Dst: map_err
      Src: /src/opendal/integrations/object_store/src/store.rs:441,1
    - Dst: format_object_store_error
      Src: /src/opendal/integrations/object_store/src/store.rs:442,1
    - Dst: Result::as_ref
      Src: /src/opendal/integrations/object_store/src/store.rs:442,1
    - Dst: RpRead::etag
      Src: /src/opendal/integrations/object_store/src/store.rs:452,1
    - Dst: Option::map
      Src: /src/opendal/integrations/object_store/src/store.rs:452,1
    - Dst: to_string
      Src: /src/opendal/integrations/object_store/src/store.rs:452,1
    - Dst: RpRead::version
      Src: /src/opendal/integrations/object_store/src/store.rs:453,1
    - Dst: Result::map
      Src: /src/opendal/integrations/object_store/src/store.rs:453,1
    - Dst: to_string
      Src: /src/opendal/integrations/object_store/src/store.rs:453,1
    - Dst: Ok
      Src: /src/opendal/integrations/object_store/src/store.rs:455,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 60
    argCount: 3
    argNames:
    - location
    - bytes
    - opts
    argTypes:
    - '&Path'
    - PutPayload
    - PutOptions
    constantsTouched: []
    func_position:
      end: 456
      start: 413
    functionDepth: 32
    functionLinenumber: 413
    functionLinenumberEnd: 456
    functionName: OpendalStore::put_opts
    functionSourceFile: /src/opendal/integrations/object_store/src/store.rs
    functionUses: 0
    functionsReached:
    - Option::as_str
    - Box::new
    - clone
    - if_not_exists
    - write_with
    - map_err
    - Ok
    - RpRead::version
    - Result::map
    - into_send
    - Buffer::from_iter
    - format_object_store_error
    - to_string
    - opendal::Error::new
    - opendal::raw::percent_decode_path
    - Option::map
    - Err
    - RpRead::etag
    - Result::as_ref
    - if_match
    linkageType: ''
    returnType: object_store::Result
    signature: 'async fn put_opts(&self,location: &Path,bytes: PutPayload,opts: PutOptions,)
      -> object_store::Result<PutResult>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Default::default
      Src: /src/opendal/integrations/object_store/src/store.rs:465,1
    - Dst: HashMap::new
      Src: /src/opendal/integrations/object_store/src/store.rs:469,1
    - Dst: iter
      Src: /src/opendal/integrations/object_store/src/store.rs:472,1
    - Dst: Some
      Src: /src/opendal/integrations/object_store/src/store.rs:475,1
    - Dst: Vec::to_string
      Src: /src/opendal/integrations/object_store/src/store.rs:475,1
    - Dst: Some
      Src: /src/opendal/integrations/object_store/src/store.rs:478,1
    - Dst: Vec::to_string
      Src: /src/opendal/integrations/object_store/src/store.rs:478,1
    - Dst: Some
      Src: /src/opendal/integrations/object_store/src/store.rs:481,1
    - Dst: Vec::to_string
      Src: /src/opendal/integrations/object_store/src/store.rs:481,1
    - Dst: Some
      Src: /src/opendal/integrations/object_store/src/store.rs:488,1
    - Dst: Vec::to_string
      Src: /src/opendal/integrations/object_store/src/store.rs:488,1
    - Dst: Result::insert
      Src: /src/opendal/integrations/object_store/src/store.rs:491,1
    - Dst: Result::to_string
      Src: /src/opendal/integrations/object_store/src/store.rs:491,1
    - Dst: Vec::to_string
      Src: /src/opendal/integrations/object_store/src/store.rs:491,1
    - Dst: Result::is_empty
      Src: /src/opendal/integrations/object_store/src/store.rs:498,1
    - Dst: Some
      Src: /src/opendal/integrations/object_store/src/store.rs:499,1
    - Dst: opendal::raw::percent_decode_path
      Src: /src/opendal/integrations/object_store/src/store.rs:502,1
    - Dst: Result::as_ref
      Src: /src/opendal/integrations/object_store/src/store.rs:502,1
    - Dst: writer_options
      Src: /src/opendal/integrations/object_store/src/store.rs:503,1
    - Dst: into_send
      Src: /src/opendal/integrations/object_store/src/store.rs:503,1
    - Dst: map_err
      Src: /src/opendal/integrations/object_store/src/store.rs:503,1
    - Dst: format_object_store_error
      Src: /src/opendal/integrations/object_store/src/store.rs:508,1
    - Dst: Result::as_ref
      Src: /src/opendal/integrations/object_store/src/store.rs:508,1
    - Dst: OpendalMultipartUpload::new
      Src: /src/opendal/integrations/object_store/src/store.rs:509,1
    - Dst: Result::clone
      Src: /src/opendal/integrations/object_store/src/store.rs:509,1
    - Dst: Ok
      Src: /src/opendal/integrations/object_store/src/store.rs:511,1
    - Dst: Box::new
      Src: /src/opendal/integrations/object_store/src/store.rs:511,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 74
    argCount: 2
    argNames:
    - location
    - opts
    argTypes:
    - '&Path'
    - PutMultipartOptions
    constantsTouched: []
    func_position:
      end: 512
      start: 458
    functionDepth: 35
    functionLinenumber: 458
    functionLinenumberEnd: 512
    functionName: OpendalStore::put_multipart_opts
    functionSourceFile: /src/opendal/integrations/object_store/src/store.rs
    functionUses: 0
    functionsReached:
    - map_err
    - OpendalMultipartUpload::new
    - iter
    - Result::clone
    - Result::to_string
    - Ok
    - Box::new
    - Default::default
    - opendal::raw::percent_decode_path
    - into_send
    - Result::insert
    - Some
    - Result::is_empty
    - writer_options
    - Vec::to_string
    - Result::as_ref
    - HashMap::new
    - format_object_store_error
    linkageType: ''
    returnType: object_store::Result
    signature: 'async fn put_multipart_opts(&self,location: &Path,opts: PutMultipartOptions,)
      -> object_store::Result<Box<dyn MultipartUpload>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: opendal::raw::percent_decode_path
      Src: /src/opendal/integrations/object_store/src/store.rs:519,1
    - Dst: Result::as_ref
      Src: /src/opendal/integrations/object_store/src/store.rs:519,1
    - Dst: OpendalStore::get_opts_with_stat
      Src: /src/opendal/integrations/object_store/src/store.rs:522,1
    - Dst: OpendalStore::get_opts_without_stat
      Src: /src/opendal/integrations/object_store/src/store.rs:527,1
    - Dst: Ok
      Src: /src/opendal/integrations/object_store/src/store.rs:531,1
    - Dst: Err
      Src: /src/opendal/integrations/object_store/src/store.rs:533,1
    - Dst: OpendalStore::get_opts_with_stat
      Src: /src/opendal/integrations/object_store/src/store.rs:536,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 29
    argCount: 2
    argNames:
    - location
    - options
    argTypes:
    - '&Path'
    - GetOptions
    constantsTouched: []
    func_position:
      end: 538
      start: 514
    functionDepth: 36
    functionLinenumber: 514
    functionLinenumberEnd: 538
    functionName: OpendalStore::get_opts
    functionSourceFile: /src/opendal/integrations/object_store/src/store.rs
    functionUses: 0
    functionsReached:
    - Ok
    - OpendalStore::get_opts_with_stat
    - opendal::raw::percent_decode_path
    - Err
    - OpendalStore::get_opts_without_stat
    - Result::as_ref
    linkageType: ''
    returnType: object_store::Result
    signature: 'async fn get_opts(&self,location: &Path,options: GetOptions,) -> object_store::Result<GetResult>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: opendal::raw::percent_decode_path
      Src: /src/opendal/integrations/object_store/src/store.rs:545,1
    - Dst: Result::as_ref
      Src: /src/opendal/integrations/object_store/src/store.rs:545,1
    - Dst: reader
      Src: /src/opendal/integrations/object_store/src/store.rs:546,1
    - Dst: into_send
      Src: /src/opendal/integrations/object_store/src/store.rs:546,1
    - Dst: map_err
      Src: /src/opendal/integrations/object_store/src/store.rs:546,1
    - Dst: format_object_store_error
      Src: /src/opendal/integrations/object_store/src/store.rs:551,1
    - Dst: Result::as_ref
      Src: /src/opendal/integrations/object_store/src/store.rs:551,1
    - Dst: Arc::from
      Src: /src/opendal/integrations/object_store/src/store.rs:553,1
    - Dst: Result::as_ref
      Src: /src/opendal/integrations/object_store/src/store.rs:553,1
    - Dst: futures::stream::iter
      Src: /src/opendal/integrations/object_store/src/store.rs:554,1
    - Dst: Result::iter
      Src: /src/opendal/integrations/object_store/src/store.rs:554,1
    - Dst: cloned
      Src: /src/opendal/integrations/object_store/src/store.rs:554,1
    - Dst: map
      Src: /src/opendal/integrations/object_store/src/store.rs:554,1
    - Dst: anyhow::Result::clone
      Src: /src/opendal/integrations/object_store/src/store.rs:556,1
    - Dst: Self::clone
      Src: /src/opendal/integrations/object_store/src/store.rs:557,1
    - Dst: anyhow::Result::read
      Src: /src/opendal/integrations/object_store/src/store.rs:559,1
    - Dst: Result::into_send
      Src: /src/opendal/integrations/object_store/src/store.rs:559,1
    - Dst: map
      Src: /src/opendal/integrations/object_store/src/store.rs:559,1
    - Dst: io::Result::to_bytes
      Src: /src/opendal/integrations/object_store/src/store.rs:563,1
    - Dst: map_err
      Src: /src/opendal/integrations/object_store/src/store.rs:559,1
    - Dst: format_object_store_error
      Src: /src/opendal/integrations/object_store/src/store.rs:564,1
    - Dst: Result::buffered
      Src: /src/opendal/integrations/object_store/src/store.rs:554,1
    - Dst: try_collect
      Src: /src/opendal/integrations/object_store/src/store.rs:554,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 53
    argCount: 2
    argNames:
    - location
    - ranges
    argTypes:
    - '&Path'
    - '&[Range<u64>]'
    constantsTouched: []
    func_position:
      end: 570
      start: 540
    functionDepth: 31
    functionLinenumber: 540
    functionLinenumberEnd: 570
    functionName: OpendalStore::get_ranges
    functionSourceFile: /src/opendal/integrations/object_store/src/store.rs
    functionUses: 0
    functionsReached:
    - map_err
    - reader
    - Result::buffered
    - opendal::raw::percent_decode_path
    - into_send
    - anyhow::Result::read
    - try_collect
    - io::Result::to_bytes
    - futures::stream::iter
    - anyhow::Result::clone
    - Result::iter
    - map
    - Result::into_send
    - cloned
    - Arc::from
    - Self::clone
    - Result::as_ref
    - format_object_store_error
    linkageType: ''
    returnType: object_store::Result
    signature: 'async fn get_ranges(&self,location: &Path,ranges: &[Range<u64>],)
      -> object_store::Result<Vec<Bytes>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: OpendalStore::clone
      Src: /src/opendal/integrations/object_store/src/store.rs:576,1
    - Dst: BoxStream<'static, object_store::Result<Path>>::and_then
      Src: /src/opendal/integrations/object_store/src/store.rs:577,1
    - Dst: Self::clone
      Src: /src/opendal/integrations/object_store/src/store.rs:579,1
    - Dst: opendal::raw::percent_decode_path
      Src: /src/opendal/integrations/object_store/src/store.rs:581,1
    - Dst: Result::as_ref
      Src: /src/opendal/integrations/object_store/src/store.rs:581,1
    - Dst: delete
      Src: /src/opendal/integrations/object_store/src/store.rs:582,1
    - Dst: into_send
      Src: /src/opendal/integrations/object_store/src/store.rs:582,1
    - Dst: map_err
      Src: /src/opendal/integrations/object_store/src/store.rs:582,1
    - Dst: format_object_store_error
      Src: /src/opendal/integrations/object_store/src/store.rs:586,1
    - Dst: Result::as_ref
      Src: /src/opendal/integrations/object_store/src/store.rs:586,1
    - Dst: Ok
      Src: /src/opendal/integrations/object_store/src/store.rs:587,1
    - Dst: into_send
      Src: /src/opendal/integrations/object_store/src/store.rs:580,1
    - Dst: boxed
      Src: /src/opendal/integrations/object_store/src/store.rs:577,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 30
    argCount: 1
    argNames:
    - locations
    argTypes:
    - BoxStream<'static, object_store::Result<Path>>
    constantsTouched: []
    func_position:
      end: 592
      start: 572
    functionDepth: 32
    functionLinenumber: 572
    functionLinenumberEnd: 592
    functionName: OpendalStore::delete_stream
    functionSourceFile: /src/opendal/integrations/object_store/src/store.rs
    functionUses: 0
    functionsReached:
    - map_err
    - BoxStream<'static, object_store::Result<Path>>::and_then
    - Ok
    - delete
    - opendal::raw::percent_decode_path
    - into_send
    - OpendalStore::clone
    - boxed
    - Self::clone
    - Result::as_ref
    - format_object_store_error
    linkageType: ''
    returnType: BoxStream
    signature: 'fn delete_stream(&self,locations: BoxStream<''static, object_store::Result<Path>>,)
      -> BoxStream<''static, object_store::Result<Path>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::map_or
      Src: /src/opendal/integrations/object_store/src/store.rs:597,1
    - Dst: '&str::into'
      Src: /src/opendal/integrations/object_store/src/store.rs:597,1
    - Dst: OpendalStore::clone
      Src: /src/opendal/integrations/object_store/src/store.rs:601,1
    - Dst: lister_with
      Src: /src/opendal/integrations/object_store/src/store.rs:603,1
    - Dst: recursive
      Src: /src/opendal/integrations/object_store/src/store.rs:603,1
    - Dst: map_err
      Src: /src/opendal/integrations/object_store/src/store.rs:603,1
    - Dst: format_object_store_error
      Src: /src/opendal/integrations/object_store/src/store.rs:608,1
    - Dst: Result::then
      Src: /src/opendal/integrations/object_store/src/store.rs:610,1
    - Dst: map_err
      Src: /src/opendal/integrations/object_store/src/store.rs:611,1
    - Dst: format_object_store_error
      Src: /src/opendal/integrations/object_store/src/store.rs:611,1
    - Dst: crate::Entry::metadata
      Src: /src/opendal/integrations/object_store/src/store.rs:612,1
    - Dst: Ok
      Src: /src/opendal/integrations/object_store/src/store.rs:614,1
    - Dst: format_object_meta
      Src: /src/opendal/integrations/object_store/src/store.rs:614,1
    - Dst: crate::Entry::path
      Src: /src/opendal/integrations/object_store/src/store.rs:614,1
    - Dst: Ok::<_, object_store::Error>
      Src: /src/opendal/integrations/object_store/src/store.rs:616,1
    - Dst: into_stream
      Src: /src/opendal/integrations/object_store/src/store.rs:619,1
    - Dst: try_flatten
      Src: /src/opendal/integrations/object_store/src/store.rs:619,1
    - Dst: into_send
      Src: /src/opendal/integrations/object_store/src/store.rs:619,1
    - Dst: boxed
      Src: /src/opendal/integrations/object_store/src/store.rs:619,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 43
    argCount: 1
    argNames:
    - prefix
    argTypes:
    - Option<&Path>
    constantsTouched: []
    func_position:
      end: 620
      start: 594
    functionDepth: 29
    functionLinenumber: 594
    functionLinenumberEnd: 620
    functionName: OpendalStore::list
    functionSourceFile: /src/opendal/integrations/object_store/src/store.rs
    functionUses: 0
    functionsReached:
    - map_err
    - lister_with
    - crate::Entry::path
    - into_stream
    - Ok
    - into_send
    - recursive
    - format_object_store_error
    - crate::Entry::metadata
    - Result::map_or
    - OpendalStore::clone
    - try_flatten
    - boxed
    - format_object_meta
    - Result::then
    - Ok::<_, object_store::Error>
    - '&str::into'
    linkageType: ''
    returnType: BoxStream
    signature: 'fn list(&self, prefix: Option<&Path>) -> BoxStream<''static, object_store::Result<ObjectMeta>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::map_or
      Src: /src/opendal/integrations/object_store/src/store.rs:627,1
    - Dst: '&str::into'
      Src: /src/opendal/integrations/object_store/src/store.rs:627,1
    - Dst: u64::clone
      Src: /src/opendal/integrations/object_store/src/store.rs:630,1
    - Dst: OpendalStore::clone
      Src: /src/opendal/integrations/object_store/src/store.rs:634,1
    - Dst: info
      Src: /src/opendal/integrations/object_store/src/store.rs:637,1
    - Dst: capability
      Src: /src/opendal/integrations/object_store/src/store.rs:637,1
    - Dst: lister_with
      Src: /src/opendal/integrations/object_store/src/store.rs:638,1
    - Dst: recursive
      Src: /src/opendal/integrations/object_store/src/store.rs:638,1
    - Dst: start_after
      Src: /src/opendal/integrations/object_store/src/store.rs:642,1
    - Dst: u64::as_ref
      Src: /src/opendal/integrations/object_store/src/store.rs:642,1
    - Dst: map_err
      Src: /src/opendal/integrations/object_store/src/store.rs:645,1
    - Dst: format_object_store_error
      Src: /src/opendal/integrations/object_store/src/store.rs:647,1
    - Dst: then
      Src: /src/opendal/integrations/object_store/src/store.rs:645,1
    - Dst: clone
      Src: /src/opendal/integrations/object_store/src/store.rs:649,1
    - Dst: Self::clone
      Src: /src/opendal/integrations/object_store/src/store.rs:650,1
    - Dst: crate::Entry::map_err
      Src: /src/opendal/integrations/object_store/src/store.rs:652,1
    - Dst: format_object_store_error
      Src: /src/opendal/integrations/object_store/src/store.rs:652,1
    - Dst: crate::Entry::into_parts
      Src: /src/opendal/integrations/object_store/src/store.rs:653,1
    - Dst: anyhow::Result::is_dir
      Src: /src/opendal/integrations/object_store/src/store.rs:656,1
    - Dst: anyhow::Result::last_modified
      Src: /src/opendal/integrations/object_store/src/store.rs:656,1
    - Dst: Option::is_some
      Src: /src/opendal/integrations/object_store/src/store.rs:656,1
    - Dst: format_object_meta
      Src: /src/opendal/integrations/object_store/src/store.rs:657,1
    - Dst: Ok
      Src: /src/opendal/integrations/object_store/src/store.rs:658,1
    - Dst: stat
      Src: /src/opendal/integrations/object_store/src/store.rs:661,1
    - Dst: map_err
      Src: /src/opendal/integrations/object_store/src/store.rs:661,1
    - Dst: format_object_store_error
      Src: /src/opendal/integrations/object_store/src/store.rs:665,1
    - Dst: format_object_meta
      Src: /src/opendal/integrations/object_store/src/store.rs:666,1
    - Dst: Ok::<_, object_store::Error>
      Src: /src/opendal/integrations/object_store/src/store.rs:667,1
    - Dst: into_send
      Src: /src/opendal/integrations/object_store/src/store.rs:645,1
    - Dst: boxed
      Src: /src/opendal/integrations/object_store/src/store.rs:645,1
    - Dst: Result::try_filter
      Src: /src/opendal/integrations/object_store/src/store.rs:676,1
    - Dst: futures::future::ready
      Src: /src/opendal/integrations/object_store/src/store.rs:677,1
    - Dst: into_send
      Src: /src/opendal/integrations/object_store/src/store.rs:676,1
    - Dst: boxed
      Src: /src/opendal/integrations/object_store/src/store.rs:676,1
    - Dst: Ok::<_, object_store::Error>
      Src: /src/opendal/integrations/object_store/src/store.rs:682,1
    - Dst: into_stream
      Src: /src/opendal/integrations/object_store/src/store.rs:685,1
    - Dst: into_send
      Src: /src/opendal/integrations/object_store/src/store.rs:685,1
    - Dst: try_flatten
      Src: /src/opendal/integrations/object_store/src/store.rs:685,1
    - Dst: boxed
      Src: /src/opendal/integrations/object_store/src/store.rs:685,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 106
    argCount: 2
    argNames:
    - prefix
    - offset
    argTypes:
    - Option<&Path>
    - '&Path'
    constantsTouched: []
    func_position:
      end: 686
      start: 622
    functionDepth: 29
    functionLinenumber: 622
    functionLinenumberEnd: 686
    functionName: OpendalStore::list_with_offset
    functionSourceFile: /src/opendal/integrations/object_store/src/store.rs
    functionUses: 0
    functionsReached:
    - Option::is_some
    - then
    - clone
    - Self::clone
    - map_err
    - lister_with
    - info
    - Ok
    - recursive
    - start_after
    - format_object_meta
    - stat
    - into_stream
    - u64::as_ref
    - into_send
    - crate::Entry::into_parts
    - capability
    - anyhow::Result::is_dir
    - anyhow::Result::last_modified
    - format_object_store_error
    - Result::try_filter
    - Result::map_or
    - OpendalStore::clone
    - crate::Entry::map_err
    - boxed
    - futures::future::ready
    - try_flatten
    - Ok::<_, object_store::Error>
    - u64::clone
    - '&str::into'
    linkageType: ''
    returnType: BoxStream
    signature: 'fn list_with_offset(&self,prefix: Option<&Path>,offset: &Path,) ->
      BoxStream<''static, object_store::Result<ObjectMeta>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::map_or
      Src: /src/opendal/integrations/object_store/src/store.rs:689,1
    - Dst: '&str::into'
      Src: /src/opendal/integrations/object_store/src/store.rs:689,1
    - Dst: lister_with
      Src: /src/opendal/integrations/object_store/src/store.rs:692,1
    - Dst: into_future
      Src: /src/opendal/integrations/object_store/src/store.rs:692,1
    - Dst: into_send
      Src: /src/opendal/integrations/object_store/src/store.rs:692,1
    - Dst: map_err
      Src: /src/opendal/integrations/object_store/src/store.rs:692,1
    - Dst: format_object_store_error
      Src: /src/opendal/integrations/object_store/src/store.rs:698,1
    - Dst: into_send
      Src: /src/opendal/integrations/object_store/src/store.rs:692,1
    - Dst: Vec::new
      Src: /src/opendal/integrations/object_store/src/store.rs:701,1
    - Dst: Vec::new
      Src: /src/opendal/integrations/object_store/src/store.rs:702,1
    - Dst: Result::next
      Src: /src/opendal/integrations/object_store/src/store.rs:704,1
    - Dst: Result::into_send
      Src: /src/opendal/integrations/object_store/src/store.rs:704,1
    - Dst: map_err
      Src: /src/opendal/integrations/object_store/src/store.rs:705,1
    - Dst: format_object_store_error
      Src: /src/opendal/integrations/object_store/src/store.rs:705,1
    - Dst: crate::Entry::metadata
      Src: /src/opendal/integrations/object_store/src/store.rs:706,1
    - Dst: Result::is_dir
      Src: /src/opendal/integrations/object_store/src/store.rs:708,1
    - Dst: Self::push
      Src: /src/opendal/integrations/object_store/src/store.rs:709,1
    - Dst: crate::Entry::path
      Src: /src/opendal/integrations/object_store/src/store.rs:709,1
    - Dst: String::into
      Src: /src/opendal/integrations/object_store/src/store.rs:709,1
    - Dst: Result::last_modified
      Src: /src/opendal/integrations/object_store/src/store.rs:710,1
    - Dst: Option::is_some
      Src: /src/opendal/integrations/object_store/src/store.rs:710,1
    - Dst: Result::push
      Src: /src/opendal/integrations/object_store/src/store.rs:711,1
    - Dst: format_object_meta
      Src: /src/opendal/integrations/object_store/src/store.rs:711,1
    - Dst: crate::Entry::path
      Src: /src/opendal/integrations/object_store/src/store.rs:711,1
    - Dst: stat
      Src: /src/opendal/integrations/object_store/src/store.rs:713,1
    - Dst: crate::Entry::path
      Src: /src/opendal/integrations/object_store/src/store.rs:715,1
    - Dst: into_send
      Src: /src/opendal/integrations/object_store/src/store.rs:713,1
    - Dst: map_err
      Src: /src/opendal/integrations/object_store/src/store.rs:713,1
    - Dst: format_object_store_error
      Src: /src/opendal/integrations/object_store/src/store.rs:718,1
    - Dst: crate::Entry::path
      Src: /src/opendal/integrations/object_store/src/store.rs:718,1
    - Dst: Result::push
      Src: /src/opendal/integrations/object_store/src/store.rs:719,1
    - Dst: format_object_meta
      Src: /src/opendal/integrations/object_store/src/store.rs:719,1
    - Dst: crate::Entry::path
      Src: /src/opendal/integrations/object_store/src/store.rs:719,1
    - Dst: Ok
      Src: /src/opendal/integrations/object_store/src/store.rs:723,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 84
    argCount: 1
    argNames:
    - prefix
    argTypes:
    - Option<&Path>
    constantsTouched: []
    func_position:
      end: 727
      start: 688
    functionDepth: 29
    functionLinenumber: 688
    functionLinenumberEnd: 727
    functionName: OpendalStore::list_with_delimiter
    functionSourceFile: /src/opendal/integrations/object_store/src/store.rs
    functionUses: 0
    functionsReached:
    - crate::Entry::path
    - Option::is_some
    - Result::into_send
    - into_future
    - crate::Entry::metadata
    - String::into
    - Vec::new
    - map_err
    - lister_with
    - Result::last_modified
    - Ok
    - Result::is_dir
    - Result::next
    - Result::push
    - format_object_meta
    - stat
    - Self::push
    - into_send
    - format_object_store_error
    - Result::map_or
    - '&str::into'
    linkageType: ''
    returnType: object_store::Result
    signature: 'async fn list_with_delimiter(&self, prefix: Option<&Path>) -> object_store::Result<ListResult>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: OpendalStore::copy_request
      Src: /src/opendal/integrations/object_store/src/store.rs:736,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 3
    argNames:
    - from
    - to
    - options
    argTypes:
    - '&Path'
    - '&Path'
    - ObjectStoreCopyOptions
    constantsTouched: []
    func_position:
      end: 737
      start: 729
    functionDepth: 36
    functionLinenumber: 729
    functionLinenumberEnd: 737
    functionName: OpendalStore::copy_opts
    functionSourceFile: /src/opendal/integrations/object_store/src/store.rs
    functionUses: 0
    functionsReached:
    - OpendalStore::copy_request
    linkageType: ''
    returnType: object_store::Result
    signature: 'async fn copy_opts(&self,from: &Path,to: &Path,options: ObjectStoreCopyOptions,)
      -> object_store::Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: oneshot::channel
      Src: /src/opendal/integrations/object_store/src/store.rs:757,1
    - Dst: Arc::new
      Src: /src/opendal/integrations/object_store/src/store.rs:760,1
    - Dst: Mutex::new
      Src: /src/opendal/integrations/object_store/src/store.rs:760,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - writer
    - location
    argTypes:
    - Writer
    - Path
    constantsTouched: []
    func_position:
      end: 764
      start: 755
    functionDepth: 2
    functionLinenumber: 755
    functionLinenumberEnd: 764
    functionName: OpendalMultipartUpload::new
    functionSourceFile: /src/opendal/integrations/object_store/src/store.rs
    functionUses: 1
    functionsReached:
    - Arc::new
    - Mutex::new
    - oneshot::channel
    linkageType: ''
    returnType: Self
    signature: 'fn new(writer: Writer, location: Path) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: clone
      Src: /src/opendal/integrations/object_store/src/store.rs:770,1
    - Dst: clone
      Src: /src/opendal/integrations/object_store/src/store.rs:771,1
    - Dst: oneshot::channel
      Src: /src/opendal/integrations/object_store/src/store.rs:774,1
    - Dst: std::mem::replace
      Src: /src/opendal/integrations/object_store/src/store.rs:776,1
    - Dst: Result::lock
      Src: /src/opendal/integrations/object_store/src/store.rs:782,1
    - Dst: Result::write
      Src: /src/opendal/integrations/object_store/src/store.rs:783,1
    - Dst: Buffer::from_iter
      Src: /src/opendal/integrations/object_store/src/store.rs:784,1
    - Dst: map_err
      Src: /src/opendal/integrations/object_store/src/store.rs:783,1
    - Dst: format_object_store_error
      Src: /src/opendal/integrations/object_store/src/store.rs:786,1
    - Dst: Result::as_ref
      Src: /src/opendal/integrations/object_store/src/store.rs:786,1
    - Dst: drop
      Src: /src/opendal/integrations/object_store/src/store.rs:789,1
    - Dst: into_send
      Src: /src/opendal/integrations/object_store/src/store.rs:778,1
    - Dst: boxed
      Src: /src/opendal/integrations/object_store/src/store.rs:778,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 30
    argCount: 1
    argNames:
    - data
    argTypes:
    - PutPayload
    constantsTouched: []
    func_position:
      end: 795
      start: 769
    functionDepth: 33
    functionLinenumber: 769
    functionLinenumberEnd: 795
    functionName: OpendalMultipartUpload::put_part
    functionSourceFile: /src/opendal/integrations/object_store/src/store.rs
    functionUses: 0
    functionsReached:
    - map_err
    - drop
    - into_send
    - Result::lock
    - clone
    - oneshot::channel
    - Result::write
    - Buffer::from_iter
    - boxed
    - std::mem::replace
    - Result::as_ref
    - format_object_store_error
    linkageType: ''
    returnType: UploadPart
    signature: 'fn put_part(&mut self, data: PutPayload) -> UploadPart'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/opendal/integrations/object_store/src/store.rs:798,1
    - Dst: Result::close
      Src: /src/opendal/integrations/object_store/src/store.rs:799,1
    - Dst: Result::into_send
      Src: /src/opendal/integrations/object_store/src/store.rs:799,1
    - Dst: map_err
      Src: /src/opendal/integrations/object_store/src/store.rs:799,1
    - Dst: format_object_store_error
      Src: /src/opendal/integrations/object_store/src/store.rs:803,1
    - Dst: as_ref
      Src: /src/opendal/integrations/object_store/src/store.rs:803,1
    - Dst: anyhow::Result::etag
      Src: /src/opendal/integrations/object_store/src/store.rs:805,1
    - Dst: Option::map
      Src: /src/opendal/integrations/object_store/src/store.rs:805,1
    - Dst: to_string
      Src: /src/opendal/integrations/object_store/src/store.rs:805,1
    - Dst: anyhow::Result::version
      Src: /src/opendal/integrations/object_store/src/store.rs:806,1
    - Dst: Result::map
      Src: /src/opendal/integrations/object_store/src/store.rs:806,1
    - Dst: to_string
      Src: /src/opendal/integrations/object_store/src/store.rs:806,1
    - Dst: Ok
      Src: /src/opendal/integrations/object_store/src/store.rs:808,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 33
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 809
      start: 797
    functionDepth: 33
    functionLinenumber: 797
    functionLinenumberEnd: 809
    functionName: OpendalMultipartUpload::complete
    functionSourceFile: /src/opendal/integrations/object_store/src/store.rs
    functionUses: 0
    functionsReached:
    - map_err
    - to_string
    - Result::map
    - lock
    - Ok
    - Option::map
    - Result::close
    - Result::into_send
    - as_ref
    - anyhow::Result::version
    - anyhow::Result::etag
    - format_object_store_error
    linkageType: ''
    returnType: object_store::Result
    signature: async fn complete(&mut self) -> object_store::Result<PutResult>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/opendal/integrations/object_store/src/store.rs:812,1
    - Dst: Result::abort
      Src: /src/opendal/integrations/object_store/src/store.rs:813,1
    - Dst: Result::into_send
      Src: /src/opendal/integrations/object_store/src/store.rs:813,1
    - Dst: map_err
      Src: /src/opendal/integrations/object_store/src/store.rs:813,1
    - Dst: format_object_store_error
      Src: /src/opendal/integrations/object_store/src/store.rs:817,1
    - Dst: as_ref
      Src: /src/opendal/integrations/object_store/src/store.rs:817,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 16
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 818
      start: 811
    functionDepth: 33
    functionLinenumber: 811
    functionLinenumberEnd: 818
    functionName: OpendalMultipartUpload::abort
    functionSourceFile: /src/opendal/integrations/object_store/src/store.rs
    functionUses: 0
    functionsReached:
    - map_err
    - Result::abort
    - lock
    - Result::into_send
    - as_ref
    - format_object_store_error
    linkageType: ''
    returnType: object_store::Result
    signature: async fn abort(&mut self) -> object_store::Result<()>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::debug_struct
      Src: /src/opendal/integrations/object_store/src/store.rs:823,1
    - Dst: field
      Src: /src/opendal/integrations/object_store/src/store.rs:823,1
    - Dst: finish
      Src: /src/opendal/integrations/object_store/src/store.rs:823,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - f
    argTypes:
    - '&mut Formatter<''_>'
    constantsTouched: []
    func_position:
      end: 826
      start: 822
    functionDepth: 5
    functionLinenumber: 822
    functionLinenumberEnd: 826
    functionName: OpendalMultipartUpload::fmt
    functionSourceFile: /src/opendal/integrations/object_store/src/store.rs
    functionUses: 0
    functionsReached:
    - field
    - finish
    - Result::debug_struct
    linkageType: ''
    returnType: fmt::Result
    signature: 'fn fmt(&self, f: &mut Formatter<''_>) -> fmt::Result'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Operator::new
      Src: /src/opendal/integrations/object_store/src/store.rs:842,1
    - Dst: services::Memory::default
      Src: /src/opendal/integrations/object_store/src/store.rs:842,1
    - Dst: Result::unwrap
      Src: /src/opendal/integrations/object_store/src/store.rs:842,1
    - Dst: Arc::new
      Src: /src/opendal/integrations/object_store/src/store.rs:843,1
    - Dst: OpendalStore::new
      Src: /src/opendal/integrations/object_store/src/store.rs:843,1
    - Dst: '&str::into'
      Src: /src/opendal/integrations/object_store/src/store.rs:845,1
    - Dst: Bytes::from_static
      Src: /src/opendal/integrations/object_store/src/store.rs:846,1
    - Dst: Arc::put
      Src: /src/opendal/integrations/object_store/src/store.rs:847,1
    - Dst: Bytes::into
      Src: /src/opendal/integrations/object_store/src/store.rs:847,1
    - Dst: unwrap
      Src: /src/opendal/integrations/object_store/src/store.rs:847,1
    - Dst: '&str::into'
      Src: /src/opendal/integrations/object_store/src/store.rs:849,1
    - Dst: Bytes::from_static
      Src: /src/opendal/integrations/object_store/src/store.rs:850,1
    - Dst: Arc::put
      Src: /src/opendal/integrations/object_store/src/store.rs:851,1
    - Dst: Bytes::into
      Src: /src/opendal/integrations/object_store/src/store.rs:851,1
    - Dst: unwrap
      Src: /src/opendal/integrations/object_store/src/store.rs:851,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 30
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 854
      start: 841
    functionDepth: 35
    functionLinenumber: 841
    functionLinenumberEnd: 854
    functionName: tests::create_test_object_store
    functionSourceFile: /src/opendal/integrations/object_store/src/store.rs
    functionUses: 0
    functionsReached:
    - Operator::new
    - Arc::put
    - Arc::new
    - unwrap
    - Result::unwrap
    - OpendalStore::new
    - services::Memory::default
    - Bytes::from_static
    - Bytes::into
    - '&str::into'
    linkageType: ''
    returnType: Arc
    signature: async fn create_test_object_store() -> Arc<dyn ObjectStore>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Operator::new
      Src: /src/opendal/integrations/parquet/src/async_writer.rs:117,1
    - Dst: services::Memory::default
      Src: /src/opendal/integrations/parquet/src/async_writer.rs:117,1
    - Dst: Result::unwrap
      Src: /src/opendal/integrations/parquet/src/async_writer.rs:117,1
    - Dst: AsyncWriter::new
      Src: /src/opendal/integrations/parquet/src/async_writer.rs:119,1
    - Dst: writer
      Src: /src/opendal/integrations/parquet/src/async_writer.rs:119,1
    - Dst: unwrap
      Src: /src/opendal/integrations/parquet/src/async_writer.rs:119,1
    - Dst: Bytes::from_static
      Src: /src/opendal/integrations/parquet/src/async_writer.rs:120,1
    - Dst: Result::write
      Src: /src/opendal/integrations/parquet/src/async_writer.rs:121,1
    - Dst: unwrap
      Src: /src/opendal/integrations/parquet/src/async_writer.rs:121,1
    - Dst: Bytes::from_static
      Src: /src/opendal/integrations/parquet/src/async_writer.rs:122,1
    - Dst: Result::write
      Src: /src/opendal/integrations/parquet/src/async_writer.rs:123,1
    - Dst: unwrap
      Src: /src/opendal/integrations/parquet/src/async_writer.rs:123,1
    - Dst: Result::complete
      Src: /src/opendal/integrations/parquet/src/async_writer.rs:124,1
    - Dst: unwrap
      Src: /src/opendal/integrations/parquet/src/async_writer.rs:124,1
    - Dst: read
      Src: /src/opendal/integrations/parquet/src/async_writer.rs:126,1
    - Dst: unwrap
      Src: /src/opendal/integrations/parquet/src/async_writer.rs:126,1
    - Dst: to_vec
      Src: /src/opendal/integrations/parquet/src/async_writer.rs:126,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 38
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 128
      start: 116
    functionDepth: 35
    functionLinenumber: 116
    functionLinenumberEnd: 128
    functionName: tests::test_basic
    functionSourceFile: /src/opendal/integrations/parquet/src/async_writer.rs
    functionUses: 0
    functionsReached:
    - read
    - Operator::new
    - AsyncWriter::new
    - unwrap
    - Result::write
    - Result::unwrap
    - writer
    - Result::complete
    - to_vec
    - services::Memory::default
    - Bytes::from_static
    linkageType: ''
    returnType: void
    signature: async fn test_basic()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Operator::new
      Src: /src/opendal/integrations/object_store/src/store.rs:885,1
    - Dst: services::Memory::default
      Src: /src/opendal/integrations/object_store/src/store.rs:885,1
    - Dst: Result::unwrap
      Src: /src/opendal/integrations/object_store/src/store.rs:885,1
    - Dst: Arc::new
      Src: /src/opendal/integrations/object_store/src/store.rs:886,1
    - Dst: OpendalStore::new
      Src: /src/opendal/integrations/object_store/src/store.rs:886,1
    - Dst: rng
      Src: /src/opendal/integrations/object_store/src/store.rs:888,1
    - Dst: '&str::into'
      Src: /src/opendal/integrations/object_store/src/store.rs:891,1
    - Dst: Arc::put_multipart
      Src: /src/opendal/integrations/object_store/src/store.rs:892,1
    - Dst: unwrap
      Src: /src/opendal/integrations/object_store/src/store.rs:892,1
    - Dst: WriteMultipart::new
      Src: /src/opendal/integrations/object_store/src/store.rs:894,1
    - Dst: random_range
      Src: /src/opendal/integrations/object_store/src/store.rs:897,1
    - Dst: random_range
      Src: /src/opendal/integrations/object_store/src/store.rs:899,1
    - Dst: fill_bytes
      Src: /src/opendal/integrations/object_store/src/store.rs:901,1
    - Dst: extend_from_slice
      Src: /src/opendal/integrations/object_store/src/store.rs:903,1
    - Dst: Result::put
      Src: /src/opendal/integrations/object_store/src/store.rs:904,1
    - Dst: Bytes::into
      Src: /src/opendal/integrations/object_store/src/store.rs:904,1
    - Dst: Result::finish
      Src: /src/opendal/integrations/object_store/src/store.rs:907,1
    - Dst: unwrap
      Src: /src/opendal/integrations/object_store/src/store.rs:907,1
    - Dst: Arc::head
      Src: /src/opendal/integrations/object_store/src/store.rs:909,1
    - Dst: unwrap
      Src: /src/opendal/integrations/object_store/src/store.rs:909,1
    - Dst: '&str::into'
      Src: /src/opendal/integrations/object_store/src/store.rs:925,1
    - Dst: Arc::put_multipart
      Src: /src/opendal/integrations/object_store/src/store.rs:926,1
    - Dst: unwrap
      Src: /src/opendal/integrations/object_store/src/store.rs:926,1
    - Dst: Result::put_part
      Src: /src/opendal/integrations/object_store/src/store.rs:927,1
    - Dst: into
      Src: /src/opendal/integrations/object_store/src/store.rs:927,1
    - Dst: unwrap
      Src: /src/opendal/integrations/object_store/src/store.rs:927,1
    - Dst: Result::abort
      Src: /src/opendal/integrations/object_store/src/store.rs:928,1
    - Dst: unwrap
      Src: /src/opendal/integrations/object_store/src/store.rs:928,1
    - Dst: Arc::head
      Src: /src/opendal/integrations/object_store/src/store.rs:930,1
    - Dst: unwrap_err
      Src: /src/opendal/integrations/object_store/src/store.rs:931,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 79
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 934
      start: 884
    functionDepth: 35
    functionLinenumber: 884
    functionLinenumberEnd: 934
    functionName: tests::test_put_multipart
    functionSourceFile: /src/opendal/integrations/object_store/src/store.rs
    functionUses: 0
    functionsReached:
    - Arc::new
    - into
    - Result::finish
    - Result::unwrap
    - unwrap_err
    - unwrap
    - OpendalStore::new
    - Bytes::into
    - Result::abort
    - Arc::head
    - random_range
    - WriteMultipart::new
    - services::Memory::default
    - fill_bytes
    - rng
    - Operator::new
    - Result::put
    - Arc::put_multipart
    - extend_from_slice
    - Result::put_part
    - '&str::into'
    linkageType: ''
    returnType: void
    signature: async fn test_put_multipart()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: create_test_object_store
      Src: /src/opendal/integrations/object_store/src/store.rs:977,1
    - Dst: '&str::into'
      Src: /src/opendal/integrations/object_store/src/store.rs:978,1
    - Dst: Arc::list_with_delimiter
      Src: /src/opendal/integrations/object_store/src/store.rs:979,1
    - Dst: Some
      Src: /src/opendal/integrations/object_store/src/store.rs:979,1
    - Dst: unwrap
      Src: /src/opendal/integrations/object_store/src/store.rs:979,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 15
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 984
      start: 976
    functionDepth: 36
    functionLinenumber: 976
    functionLinenumberEnd: 984
    functionName: tests::test_list_with_delimiter
    functionSourceFile: /src/opendal/integrations/object_store/src/store.rs
    functionUses: 0
    functionsReached:
    - unwrap
    - Some
    - Arc::list_with_delimiter
    - create_test_object_store
    - '&str::into'
    linkageType: ''
    returnType: void
    signature: async fn test_list_with_delimiter()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: create_test_object_store
      Src: /src/opendal/integrations/object_store/src/store.rs:988,1
    - Dst: '&str::into'
      Src: /src/opendal/integrations/object_store/src/store.rs:989,1
    - Dst: '&str::into'
      Src: /src/opendal/integrations/object_store/src/store.rs:990,1
    - Dst: Arc::list_with_offset
      Src: /src/opendal/integrations/object_store/src/store.rs:991,1
    - Dst: Some
      Src: /src/opendal/integrations/object_store/src/store.rs:992,1
    - Dst: "list_with_offset(Some(&path), &offset)\n            .collect::<Vec<_>>"
      Src: /src/opendal/integrations/object_store/src/store.rs:991,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 16
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 1000
      start: 987
    functionDepth: 36
    functionLinenumber: 987
    functionLinenumberEnd: 1000
    functionName: tests::test_list_with_offset
    functionSourceFile: /src/opendal/integrations/object_store/src/store.rs
    functionUses: 0
    functionsReached:
    - Arc::list_with_offset
    - "list_with_offset(Some(&path), &offset)\n            .collect::<Vec<_>>"
    - Some
    - create_test_object_store
    - '&str::into'
    linkageType: ''
    returnType: void
    signature: async fn test_list_with_offset()
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - count
    argTypes:
    - Arc<AtomicUsize>
    constantsTouched: []
    func_position:
      end: 1015
      start: 1013
    functionDepth: 0
    functionLinenumber: 1013
    functionLinenumberEnd: 1015
    functionName: tests::StatCounterLayer::new
    functionSourceFile: /src/opendal/integrations/object_store/src/store.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(count: Arc<AtomicUsize>) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Arc::new
      Src: /src/opendal/integrations/object_store/src/store.rs:1020,1
    - Dst: clone
      Src: /src/opendal/integrations/object_store/src/store.rs:1022,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - srv
    argTypes:
    - opendal::raw::Servicer
    constantsTouched: []
    func_position:
      end: 1024
      start: 1019
    functionDepth: 2
    functionLinenumber: 1019
    functionLinenumberEnd: 1024
    functionName: tests::StatCounterLayer::apply_service
    functionSourceFile: /src/opendal/integrations/object_store/src/store.rs
    functionUses: 0
    functionsReached:
    - Arc::new
    - clone
    linkageType: ''
    returnType: opendal::raw::Servicer
    signature: 'fn apply_service(&self, srv: opendal::raw::Servicer) -> opendal::raw::Servicer'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: info
      Src: /src/opendal/integrations/object_store/src/store.rs:1041,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 1042
      start: 1040
    functionDepth: 2
    functionLinenumber: 1040
    functionLinenumberEnd: 1042
    functionName: tests::StatCounterService::info
    functionSourceFile: /src/opendal/integrations/object_store/src/store.rs
    functionUses: 0
    functionsReached:
    - info
    linkageType: ''
    returnType: opendal::raw::ServiceInfo
    signature: fn info(&self) -> opendal::raw::ServiceInfo
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: capability
      Src: /src/opendal/integrations/object_store/src/store.rs:1045,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 1046
      start: 1044
    functionDepth: 2
    functionLinenumber: 1044
    functionLinenumberEnd: 1046
    functionName: tests::StatCounterService::capability
    functionSourceFile: /src/opendal/integrations/object_store/src/store.rs
    functionUses: 0
    functionsReached:
    - capability
    linkageType: ''
    returnType: opendal::Capability
    signature: fn capability(&self) -> opendal::Capability
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: create_dir
      Src: /src/opendal/integrations/object_store/src/store.rs:1054,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&opendal::OperationContext'
    - '&str'
    - opendal::raw::OpCreateDir
    constantsTouched: []
    func_position:
      end: 1055
      start: 1048
    functionDepth: 35
    functionLinenumber: 1048
    functionLinenumberEnd: 1055
    functionName: tests::StatCounterService::create_dir
    functionSourceFile: /src/opendal/integrations/object_store/src/store.rs
    functionUses: 0
    functionsReached:
    - create_dir
    linkageType: ''
    returnType: opendal::Result
    signature: 'async fn create_dir(&self,ctx: &opendal::OperationContext,path: &str,args:
      opendal::raw::OpCreateDir,) -> opendal::Result<opendal::raw::RpCreateDir>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: fetch_add
      Src: /src/opendal/integrations/object_store/src/store.rs:1063,1
    - Dst: stat
      Src: /src/opendal/integrations/object_store/src/store.rs:1064,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&opendal::OperationContext'
    - '&str'
    - opendal::raw::OpStat
    constantsTouched: []
    func_position:
      end: 1065
      start: 1057
    functionDepth: 31
    functionLinenumber: 1057
    functionLinenumberEnd: 1065
    functionName: tests::StatCounterService::stat
    functionSourceFile: /src/opendal/integrations/object_store/src/store.rs
    functionUses: 0
    functionsReached:
    - fetch_add
    - stat
    linkageType: ''
    returnType: opendal::Result
    signature: 'async fn stat(&self,ctx: &opendal::OperationContext,path: &str,args:
      opendal::raw::OpStat,) -> opendal::Result<opendal::raw::RpStat>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: read
      Src: /src/opendal/integrations/object_store/src/store.rs:1073,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&opendal::OperationContext'
    - '&str'
    - opendal::raw::OpRead
    constantsTouched: []
    func_position:
      end: 1074
      start: 1067
    functionDepth: 31
    functionLinenumber: 1067
    functionLinenumberEnd: 1074
    functionName: tests::StatCounterService::read
    functionSourceFile: /src/opendal/integrations/object_store/src/store.rs
    functionUses: 0
    functionsReached:
    - read
    linkageType: ''
    returnType: opendal::Result
    signature: 'fn read(&self,ctx: &opendal::OperationContext,path: &str,args: opendal::raw::OpRead,)
      -> opendal::Result<Self::Reader>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: write
      Src: /src/opendal/integrations/object_store/src/store.rs:1082,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&opendal::OperationContext'
    - '&str'
    - opendal::raw::OpWrite
    constantsTouched: []
    func_position:
      end: 1083
      start: 1076
    functionDepth: 36
    functionLinenumber: 1076
    functionLinenumberEnd: 1083
    functionName: tests::StatCounterService::write
    functionSourceFile: /src/opendal/integrations/object_store/src/store.rs
    functionUses: 0
    functionsReached:
    - write
    linkageType: ''
    returnType: opendal::Result
    signature: 'fn write(&self,ctx: &opendal::OperationContext,path: &str,args: opendal::raw::OpWrite,)
      -> opendal::Result<Self::Writer>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: delete
      Src: /src/opendal/integrations/object_store/src/store.rs:1086,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - '&opendal::OperationContext'
    constantsTouched: []
    func_position:
      end: 1087
      start: 1085
    functionDepth: 32
    functionLinenumber: 1085
    functionLinenumberEnd: 1087
    functionName: tests::StatCounterService::delete
    functionSourceFile: /src/opendal/integrations/object_store/src/store.rs
    functionUses: 0
    functionsReached:
    - delete
    linkageType: ''
    returnType: opendal::Result
    signature: 'fn delete(&self, ctx: &opendal::OperationContext) -> opendal::Result<Self::Deleter>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: list
      Src: /src/opendal/integrations/object_store/src/store.rs:1095,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&opendal::OperationContext'
    - '&str'
    - opendal::raw::OpList
    constantsTouched: []
    func_position:
      end: 1096
      start: 1089
    functionDepth: 2
    functionLinenumber: 1089
    functionLinenumberEnd: 1096
    functionName: tests::StatCounterService::list
    functionSourceFile: /src/opendal/integrations/object_store/src/store.rs
    functionUses: 0
    functionsReached:
    - list
    linkageType: ''
    returnType: opendal::Result
    signature: 'fn list(&self,ctx: &opendal::OperationContext,path: &str,args: opendal::raw::OpList,)
      -> opendal::Result<Self::Lister>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: copy
      Src: /src/opendal/integrations/object_store/src/store.rs:1106,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 5
    argNames:
    - ctx
    - from
    - to
    - args
    - opts
    argTypes:
    - '&opendal::OperationContext'
    - '&str'
    - '&str'
    - opendal::raw::OpCopy
    - opendal::raw::OpCopier
    constantsTouched: []
    func_position:
      end: 1107
      start: 1098
    functionDepth: 34
    functionLinenumber: 1098
    functionLinenumberEnd: 1107
    functionName: tests::StatCounterService::copy
    functionSourceFile: /src/opendal/integrations/object_store/src/store.rs
    functionUses: 0
    functionsReached:
    - copy
    linkageType: ''
    returnType: opendal::Result
    signature: 'fn copy(&self,ctx: &opendal::OperationContext,from: &str,to: &str,args:
      opendal::raw::OpCopy,opts: opendal::raw::OpCopier,) -> opendal::Result<Self::Copier>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: rename
      Src: /src/opendal/integrations/object_store/src/store.rs:1116,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 4
    argNames:
    - ctx
    - from
    - to
    - args
    argTypes:
    - '&opendal::OperationContext'
    - '&str'
    - '&str'
    - opendal::raw::OpRename
    constantsTouched: []
    func_position:
      end: 1117
      start: 1109
    functionDepth: 2
    functionLinenumber: 1109
    functionLinenumberEnd: 1117
    functionName: tests::StatCounterService::rename
    functionSourceFile: /src/opendal/integrations/object_store/src/store.rs
    functionUses: 0
    functionsReached:
    - rename
    linkageType: ''
    returnType: opendal::Result
    signature: 'async fn rename(&self,ctx: &opendal::OperationContext,from: &str,to:
      &str,args: opendal::raw::OpRename,) -> opendal::Result<opendal::raw::RpRename>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: presign
      Src: /src/opendal/integrations/object_store/src/store.rs:1125,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&opendal::OperationContext'
    - '&str'
    - opendal::raw::OpPresign
    constantsTouched: []
    func_position:
      end: 1126
      start: 1119
    functionDepth: 2
    functionLinenumber: 1119
    functionLinenumberEnd: 1126
    functionName: tests::StatCounterService::presign
    functionSourceFile: /src/opendal/integrations/object_store/src/store.rs
    functionUses: 0
    functionsReached:
    - presign
    linkageType: ''
    returnType: opendal::Result
    signature: 'async fn presign(&self,ctx: &opendal::OperationContext,path: &str,args:
      opendal::raw::OpPresign,) -> opendal::Result<opendal::raw::RpPresign>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Arc::new
      Src: /src/opendal/integrations/object_store/src/store.rs:1135,1
    - Dst: AtomicUsize::new
      Src: /src/opendal/integrations/object_store/src/store.rs:1135,1
    - Dst: Operator::new
      Src: /src/opendal/integrations/object_store/src/store.rs:1136,1
    - Dst: opendal::services::Memory::default
      Src: /src/opendal/integrations/object_store/src/store.rs:1136,1
    - Dst: Result::unwrap
      Src: /src/opendal/integrations/object_store/src/store.rs:1136,1
    - Dst: T::layer
      Src: /src/opendal/integrations/object_store/src/store.rs:1136,1
    - Dst: stat_counter::StatCounterLayer::new
      Src: /src/opendal/integrations/object_store/src/store.rs:1138,1
    - Dst: Self::clone
      Src: /src/opendal/integrations/object_store/src/store.rs:1138,1
    - Dst: OpendalStore::new
      Src: /src/opendal/integrations/object_store/src/store.rs:1139,1
    - Dst: '&str::into'
      Src: /src/opendal/integrations/object_store/src/store.rs:1142,1
    - Dst: Bytes::from_static
      Src: /src/opendal/integrations/object_store/src/store.rs:1143,1
    - Dst: Arc::put
      Src: /src/opendal/integrations/object_store/src/store.rs:1144,1
    - Dst: Vec::clone
      Src: /src/opendal/integrations/object_store/src/store.rs:1144,1
    - Dst: Self::into
      Src: /src/opendal/integrations/object_store/src/store.rs:1144,1
    - Dst: unwrap
      Src: /src/opendal/integrations/object_store/src/store.rs:1144,1
    - Dst: Self::store
      Src: /src/opendal/integrations/object_store/src/store.rs:1147,1
    - Dst: Arc::get_ranges
      Src: /src/opendal/integrations/object_store/src/store.rs:1152,1
    - Dst: unwrap
      Src: /src/opendal/integrations/object_store/src/store.rs:1152,1
    - Dst: Self::store
      Src: /src/opendal/integrations/object_store/src/store.rs:1161,1
    - Dst: Some
      Src: /src/opendal/integrations/object_store/src/store.rs:1165,1
    - Dst: object_store::GetRange::Bounded
      Src: /src/opendal/integrations/object_store/src/store.rs:1165,1
    - Dst: Default::default
      Src: /src/opendal/integrations/object_store/src/store.rs:1166,1
    - Dst: Arc::get_opts
      Src: /src/opendal/integrations/object_store/src/store.rs:1168,1
    - Dst: unwrap
      Src: /src/opendal/integrations/object_store/src/store.rs:1168,1
    - Dst: Self::bytes
      Src: /src/opendal/integrations/object_store/src/store.rs:1171,1
    - Dst: unwrap
      Src: /src/opendal/integrations/object_store/src/store.rs:1171,1
    - Dst: Self::store
      Src: /src/opendal/integrations/object_store/src/store.rs:1180,1
    - Dst: Some
      Src: /src/opendal/integrations/object_store/src/store.rs:1184,1
    - Dst: object_store::GetRange::Offset
      Src: /src/opendal/integrations/object_store/src/store.rs:1184,1
    - Dst: Default::default
      Src: /src/opendal/integrations/object_store/src/store.rs:1185,1
    - Dst: Arc::get_opts
      Src: /src/opendal/integrations/object_store/src/store.rs:1187,1
    - Dst: unwrap
      Src: /src/opendal/integrations/object_store/src/store.rs:1187,1
    - Dst: Self::bytes
      Src: /src/opendal/integrations/object_store/src/store.rs:1190,1
    - Dst: unwrap
      Src: /src/opendal/integrations/object_store/src/store.rs:1190,1
    - Dst: Self::store
      Src: /src/opendal/integrations/object_store/src/store.rs:1199,1
    - Dst: Arc::get_opts
      Src: /src/opendal/integrations/object_store/src/store.rs:1202,1
    - Dst: object_store::GetOptions::default
      Src: /src/opendal/integrations/object_store/src/store.rs:1203,1
    - Dst: unwrap
      Src: /src/opendal/integrations/object_store/src/store.rs:1202,1
    - Dst: Self::bytes
      Src: /src/opendal/integrations/object_store/src/store.rs:1208,1
    - Dst: unwrap
      Src: /src/opendal/integrations/object_store/src/store.rs:1208,1
    - Dst: Self::store
      Src: /src/opendal/integrations/object_store/src/store.rs:1217,1
    - Dst: Some
      Src: /src/opendal/integrations/object_store/src/store.rs:1221,1
    - Dst: object_store::GetRange::Suffix
      Src: /src/opendal/integrations/object_store/src/store.rs:1221,1
    - Dst: Default::default
      Src: /src/opendal/integrations/object_store/src/store.rs:1222,1
    - Dst: Arc::get_opts
      Src: /src/opendal/integrations/object_store/src/store.rs:1224,1
    - Dst: unwrap
      Src: /src/opendal/integrations/object_store/src/store.rs:1224,1
    - Dst: Self::bytes
      Src: /src/opendal/integrations/object_store/src/store.rs:1227,1
    - Dst: unwrap
      Src: /src/opendal/integrations/object_store/src/store.rs:1227,1
    - Dst: Arc::delete
      Src: /src/opendal/integrations/object_store/src/store.rs:1236,1
    - Dst: unwrap
      Src: /src/opendal/integrations/object_store/src/store.rs:1236,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 133
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 1237
      start: 1131
    functionDepth: 35
    functionLinenumber: 1131
    functionLinenumberEnd: 1237
    functionName: tests::test_get_range_no_stat
    functionSourceFile: /src/opendal/integrations/object_store/src/store.rs
    functionUses: 0
    functionsReached:
    - AtomicUsize::new
    - Arc::new
    - Default::default
    - Result::unwrap
    - Self::clone
    - Self::into
    - Self::store
    - Arc::delete
    - Arc::put
    - object_store::GetRange::Bounded
    - Arc::get_opts
    - unwrap
    - Self::bytes
    - T::layer
    - OpendalStore::new
    - object_store::GetRange::Offset
    - object_store::GetOptions::default
    - Some
    - opendal::services::Memory::default
    - Bytes::from_static
    - Operator::new
    - Arc::get_ranges
    - object_store::GetRange::Suffix
    - stat_counter::StatCounterLayer::new
    - Vec::clone
    - '&str::into'
    linkageType: ''
    returnType: void
    signature: async fn test_get_range_no_stat()
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - store
    argTypes:
    - Arc<dyn ObjectStore + 'static>
    constantsTouched: []
    func_position:
      end: 37
      start: 35
    functionDepth: 0
    functionLinenumber: 35
    functionLinenumberEnd: 37
    functionName: ObjectStoreDeleter::new
    functionSourceFile: /src/opendal/integrations/object_store/src/service/deleter.rs
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: 'pub(crate) fn new(store: Arc<dyn ObjectStore + ''static>) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: ObjectStorePath::from
      Src: /src/opendal/integrations/object_store/src/service/deleter.rs:42,1
    - Dst: delete
      Src: /src/opendal/integrations/object_store/src/service/deleter.rs:43,1
    - Dst: map_err
      Src: /src/opendal/integrations/object_store/src/service/deleter.rs:43,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - path
    argTypes:
    - String
    - OpDelete
    constantsTouched: []
    func_position:
      end: 44
      start: 41
    functionDepth: 32
    functionLinenumber: 41
    functionLinenumberEnd: 44
    functionName: ObjectStoreDeleter::delete_once
    functionSourceFile: /src/opendal/integrations/object_store/src/service/deleter.rs
    functionUses: 0
    functionsReached:
    - map_err
    - ObjectStorePath::from
    - delete
    linkageType: ''
    returnType: Result
    signature: 'async fn delete_once(&self, path: String, _: OpDelete) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::iter
      Src: /src/opendal/integrations/object_store/src/service/deleter.rs:47,1
    - Dst: map
      Src: /src/opendal/integrations/object_store/src/service/deleter.rs:47,1
    - Dst: Ok::<_, object_store::Error>
      Src: /src/opendal/integrations/object_store/src/service/deleter.rs:49,1
    - Dst: ObjectStorePath::from
      Src: /src/opendal/integrations/object_store/src/service/deleter.rs:49,1
    - Dst: as_str
      Src: /src/opendal/integrations/object_store/src/service/deleter.rs:49,1
    - Dst: Result::collect
      Src: /src/opendal/integrations/object_store/src/service/deleter.rs:47,1
    - Dst: stream::iter
      Src: /src/opendal/integrations/object_store/src/service/deleter.rs:51,1
    - Dst: boxed
      Src: /src/opendal/integrations/object_store/src/service/deleter.rs:51,1
    - Dst: delete_stream
      Src: /src/opendal/integrations/object_store/src/service/deleter.rs:52,1
    - Dst: store.delete_stream(stream).collect::<Vec<_>>
      Src: /src/opendal/integrations/object_store/src/service/deleter.rs:52,1
    - Dst: BatchDeleteResult::default
      Src: /src/opendal/integrations/object_store/src/service/deleter.rs:54,1
    - Dst: into_iter
      Src: /src/opendal/integrations/object_store/src/service/deleter.rs:55,1
    - Dst: enumerate
      Src: /src/opendal/integrations/object_store/src/service/deleter.rs:55,1
    - Dst: push
      Src: /src/opendal/integrations/object_store/src/service/deleter.rs:57,1
    - Dst: clone
      Src: /src/opendal/integrations/object_store/src/service/deleter.rs:59,1
    - Dst: clone
      Src: /src/opendal/integrations/object_store/src/service/deleter.rs:59,1
    - Dst: push
      Src: /src/opendal/integrations/object_store/src/service/deleter.rs:60,1
    - Dst: clone
      Src: /src/opendal/integrations/object_store/src/service/deleter.rs:61,1
    - Dst: clone
      Src: /src/opendal/integrations/object_store/src/service/deleter.rs:62,1
    - Dst: super::error::parse_error
      Src: /src/opendal/integrations/object_store/src/service/deleter.rs:63,1
    - Dst: Ok
      Src: /src/opendal/integrations/object_store/src/service/deleter.rs:68,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 55
    argCount: 1
    argNames:
    - paths
    argTypes:
    - Vec<(String, OpDelete)>
    constantsTouched: []
    func_position:
      end: 69
      start: 46
    functionDepth: 32
    functionLinenumber: 46
    functionLinenumberEnd: 69
    functionName: ObjectStoreDeleter::delete_batch
    functionSourceFile: /src/opendal/integrations/object_store/src/service/deleter.rs
    functionUses: 0
    functionsReached:
    - push
    - Ok
    - clone
    - super::error::parse_error
    - into_iter
    - Result::iter
    - ObjectStorePath::from
    - as_str
    - map
    - Result::collect
    - boxed
    - store.delete_stream(stream).collect::<Vec<_>>
    - Ok::<_, object_store::Error>
    - enumerate
    - BatchDeleteResult::default
    - delete_stream
    - stream::iter
    linkageType: ''
    returnType: Result
    signature: 'async fn delete_batch(&self, paths: Vec<(String, OpDelete)>) -> Result<BatchDeleteResult>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: OpStat::start_after
      Src: /src/opendal/integrations/object_store/src/service/lister.rs:40,1
    - Dst: Arc::list_with_offset
      Src: /src/opendal/integrations/object_store/src/service/lister.rs:41,1
    - Dst: Some
      Src: /src/opendal/integrations/object_store/src/service/lister.rs:43,1
    - Dst: ObjectStorePath::from
      Src: /src/opendal/integrations/object_store/src/service/lister.rs:43,1
    - Dst: ObjectStorePath::from
      Src: /src/opendal/integrations/object_store/src/service/lister.rs:44,1
    - Dst: BoxStream::boxed
      Src: /src/opendal/integrations/object_store/src/service/lister.rs:41,1
    - Dst: Arc::list
      Src: /src/opendal/integrations/object_store/src/service/lister.rs:48,1
    - Dst: Some
      Src: /src/opendal/integrations/object_store/src/service/lister.rs:48,1
    - Dst: ObjectStorePath::from
      Src: /src/opendal/integrations/object_store/src/service/lister.rs:48,1
    - Dst: Result::boxed
      Src: /src/opendal/integrations/object_store/src/service/lister.rs:48,1
    - Dst: OpStat::limit
      Src: /src/opendal/integrations/object_store/src/service/lister.rs:52,1
    - Dst: Result::take
      Src: /src/opendal/integrations/object_store/src/service/lister.rs:53,1
    - Dst: QueueBuf::boxed
      Src: /src/opendal/integrations/object_store/src/service/lister.rs:53,1
    - Dst: Ok
      Src: /src/opendal/integrations/object_store/src/service/lister.rs:56,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 31
    argCount: 3
    argNames:
    - store
    - path
    - args
    argTypes:
    - Arc<dyn ObjectStore + 'static>
    - '&str'
    - OpList
    constantsTouched: []
    func_position:
      end: 57
      start: 34
    functionDepth: 36
    functionLinenumber: 34
    functionLinenumberEnd: 57
    functionName: ObjectStoreLister::new
    functionSourceFile: /src/opendal/integrations/object_store/src/service/lister.rs
    functionUses: 1
    functionsReached:
    - BoxStream::boxed
    - Ok
    - Arc::list_with_offset
    - OpStat::start_after
    - Result::boxed
    - Result::take
    - Some
    - Arc::list
    - ObjectStorePath::from
    - OpStat::limit
    - QueueBuf::boxed
    linkageType: ''
    returnType: Result
    signature: 'pub(crate) fn new(store: Arc<dyn ObjectStore + ''static>,path: &str,args:
      OpList,) -> Result<Self>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: next
      Src: /src/opendal/integrations/object_store/src/service/lister.rs:65,1
    - Dst: service::core::format_metadata
      Src: /src/opendal/integrations/object_store/src/service/lister.rs:67,1
    - Dst: oio::Entry::new
      Src: /src/opendal/integrations/object_store/src/service/lister.rs:68,1
    - Dst: as_ref
      Src: /src/opendal/integrations/object_store/src/service/lister.rs:68,1
    - Dst: anyhow::Result::clone
      Src: /src/opendal/integrations/object_store/src/service/lister.rs:68,1
    - Dst: Ok
      Src: /src/opendal/integrations/object_store/src/service/lister.rs:69,1
    - Dst: Some
      Src: /src/opendal/integrations/object_store/src/service/lister.rs:69,1
    - Dst: Err
      Src: /src/opendal/integrations/object_store/src/service/lister.rs:71,1
    - Dst: super::error::parse_error
      Src: /src/opendal/integrations/object_store/src/service/lister.rs:71,1
    - Dst: Ok
      Src: /src/opendal/integrations/object_store/src/service/lister.rs:72,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 19
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 74
      start: 64
    functionDepth: 32
    functionLinenumber: 64
    functionLinenumberEnd: 74
    functionName: ObjectStoreLister::next
    functionSourceFile: /src/opendal/integrations/object_store/src/service/lister.rs
    functionUses: 0
    functionsReached:
    - next
    - service::core::format_metadata
    - oio::Entry::new
    - Ok
    - super::error::parse_error
    - Some
    - anyhow::Result::clone
    - Err
    - as_ref
    linkageType: ''
    returnType: Result
    signature: async fn next(&mut self) -> Result<Option<oio::Entry>>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: to_string
      Src: /src/opendal/integrations/object_store/src/service/reader.rs:44,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - store
    - path
    - args
    argTypes:
    - Arc<dyn ObjectStore + 'static>
    - '&str'
    - OpRead
    constantsTouched: []
    func_position:
      end: 47
      start: 41
    functionDepth: 2
    functionLinenumber: 41
    functionLinenumberEnd: 47
    functionName: ObjectStoreReader::new
    functionSourceFile: /src/opendal/integrations/object_store/src/service/reader.rs
    functionUses: 1
    functionsReached:
    - to_string
    linkageType: ''
    returnType: Self
    signature: 'pub(crate) fn new(store: Arc<dyn ObjectStore + ''static>, path: &str,
      args: OpRead) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: ObjectStorePath::from
      Src: /src/opendal/integrations/object_store/src/service/reader.rs:52,1
    - Dst: as_str
      Src: /src/opendal/integrations/object_store/src/service/reader.rs:52,1
    - Dst: super::core::parse_op_read
      Src: /src/opendal/integrations/object_store/src/service/reader.rs:53,1
    - Dst: get_opts
      Src: /src/opendal/integrations/object_store/src/service/reader.rs:54,1
    - Dst: map_err
      Src: /src/opendal/integrations/object_store/src/service/reader.rs:54,1
    - Dst: RpRead::new
      Src: /src/opendal/integrations/object_store/src/service/reader.rs:59,1
    - Dst: super::core::format_metadata
      Src: /src/opendal/integrations/object_store/src/service/reader.rs:59,1
    - Dst: ObjectStoreReadStream::new
      Src: /src/opendal/integrations/object_store/src/service/reader.rs:60,1
    - Dst: bool::into_stream
      Src: /src/opendal/integrations/object_store/src/service/reader.rs:60,1
    - Dst: Ok
      Src: /src/opendal/integrations/object_store/src/service/reader.rs:62,1
    - Dst: Box::new
      Src: /src/opendal/integrations/object_store/src/service/reader.rs:62,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 27
    argCount: 1
    argNames:
    - range
    argTypes:
    - BytesRange
    constantsTouched: []
    func_position:
      end: 63
      start: 51
    functionDepth: 32
    functionLinenumber: 51
    functionLinenumberEnd: 63
    functionName: ObjectStoreReader::open
    functionSourceFile: /src/opendal/integrations/object_store/src/service/reader.rs
    functionUses: 0
    functionsReached:
    - map_err
    - Ok
    - Box::new
    - get_opts
    - ObjectStoreReadStream::new
    - bool::into_stream
    - as_str
    - ObjectStorePath::from
    - super::core::parse_op_read
    - super::core::format_metadata
    - RpRead::new
    linkageType: ''
    returnType: Result
    signature: 'async fn open(&self, range: BytesRange) -> Result<(RpRead, Box<dyn
      oio::ReadStreamDyn>)>'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - bytes_stream
    argTypes:
    - BoxStream<'static, object_store::Result<Bytes>>
    constantsTouched: []
    func_position:
      end: 74
      start: 72
    functionDepth: 0
    functionLinenumber: 72
    functionLinenumberEnd: 74
    functionName: ObjectStoreReadStream::new
    functionSourceFile: /src/opendal/integrations/object_store/src/service/reader.rs
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: 'fn new(bytes_stream: BoxStream<''static, object_store::Result<Bytes>>)
      -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: try_next
      Src: /src/opendal/integrations/object_store/src/service/reader.rs:83,1
    - Dst: map_err
      Src: /src/opendal/integrations/object_store/src/service/reader.rs:83,1
    - Dst: Ok
      Src: /src/opendal/integrations/object_store/src/service/reader.rs:84,1
    - Dst: Result::map
      Src: /src/opendal/integrations/object_store/src/service/reader.rs:84,1
    - Dst: Result::unwrap_or_default
      Src: /src/opendal/integrations/object_store/src/service/reader.rs:84,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 85
      start: 82
    functionDepth: 1
    functionLinenumber: 82
    functionLinenumberEnd: 85
    functionName: ObjectStoreReadStream::read
    functionSourceFile: /src/opendal/integrations/object_store/src/service/reader.rs
    functionUses: 0
    functionsReached:
    - map_err
    - Result::unwrap_or_default
    - Ok
    - try_next
    - Result::map
    linkageType: ''
    returnType: Result
    signature: async fn read(&mut self) -> Result<Buffer>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Default::default
      Src: /src/opendal/integrations/object_store/src/service/core.rs:30,1
    - Dst: OpStat::version
      Src: /src/opendal/integrations/object_store/src/service/core.rs:33,1
    - Dst: Some
      Src: /src/opendal/integrations/object_store/src/service/core.rs:34,1
    - Dst: Result::to_string
      Src: /src/opendal/integrations/object_store/src/service/core.rs:34,1
    - Dst: OpStat::if_match
      Src: /src/opendal/integrations/object_store/src/service/core.rs:37,1
    - Dst: Some
      Src: /src/opendal/integrations/object_store/src/service/core.rs:38,1
    - Dst: Result::to_string
      Src: /src/opendal/integrations/object_store/src/service/core.rs:38,1
    - Dst: OpStat::if_none_match
      Src: /src/opendal/integrations/object_store/src/service/core.rs:41,1
    - Dst: Some
      Src: /src/opendal/integrations/object_store/src/service/core.rs:42,1
    - Dst: Result::to_string
      Src: /src/opendal/integrations/object_store/src/service/core.rs:42,1
    - Dst: OpStat::if_modified_since
      Src: /src/opendal/integrations/object_store/src/service/core.rs:45,1
    - Dst: timestamp_to_datetime
      Src: /src/opendal/integrations/object_store/src/service/core.rs:46,1
    - Dst: OpStat::if_unmodified_since
      Src: /src/opendal/integrations/object_store/src/service/core.rs:49,1
    - Dst: timestamp_to_datetime
      Src: /src/opendal/integrations/object_store/src/service/core.rs:50,1
    - Dst: Ok
      Src: /src/opendal/integrations/object_store/src/service/core.rs:53,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 49
    argCount: 1
    argNames:
    - args
    argTypes:
    - '&OpStat'
    constantsTouched: []
    func_position:
      end: 54
      start: 27
    functionDepth: 3
    functionLinenumber: 27
    functionLinenumberEnd: 54
    functionName: parse_op_stat
    functionSourceFile: /src/opendal/integrations/object_store/src/service/core.rs
    functionUses: 1
    functionsReached:
    - OpStat::version
    - Result::to_string
    - Ok
    - OpStat::if_modified_since
    - OpStat::if_unmodified_since
    - Default::default
    - Some
    - OpStat::if_none_match
    - timestamp_to_datetime
    - OpStat::if_match
    linkageType: ''
    returnType: Result
    signature: 'pub fn parse_op_stat(args: &OpStat) -> Result<GetOptions>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: GetOptions::default
      Src: /src/opendal/integrations/object_store/src/service/core.rs:58,1
    - Dst: OpStat::version
      Src: /src/opendal/integrations/object_store/src/service/core.rs:60,1
    - Dst: Some
      Src: /src/opendal/integrations/object_store/src/service/core.rs:61,1
    - Dst: Result::to_string
      Src: /src/opendal/integrations/object_store/src/service/core.rs:61,1
    - Dst: OpStat::if_match
      Src: /src/opendal/integrations/object_store/src/service/core.rs:64,1
    - Dst: Some
      Src: /src/opendal/integrations/object_store/src/service/core.rs:65,1
    - Dst: Result::to_string
      Src: /src/opendal/integrations/object_store/src/service/core.rs:65,1
    - Dst: OpStat::if_none_match
      Src: /src/opendal/integrations/object_store/src/service/core.rs:68,1
    - Dst: Some
      Src: /src/opendal/integrations/object_store/src/service/core.rs:69,1
    - Dst: Result::to_string
      Src: /src/opendal/integrations/object_store/src/service/core.rs:69,1
    - Dst: OpStat::if_modified_since
      Src: /src/opendal/integrations/object_store/src/service/core.rs:72,1
    - Dst: timestamp_to_datetime
      Src: /src/opendal/integrations/object_store/src/service/core.rs:73,1
    - Dst: OpStat::if_unmodified_since
      Src: /src/opendal/integrations/object_store/src/service/core.rs:76,1
    - Dst: timestamp_to_datetime
      Src: /src/opendal/integrations/object_store/src/service/core.rs:77,1
    - Dst: u64::checked_add
      Src: /src/opendal/integrations/object_store/src/service/core.rs:87,1
    - Dst: ok_or_else
      Src: /src/opendal/integrations/object_store/src/service/core.rs:87,1
    - Dst: Error::new
      Src: /src/opendal/integrations/object_store/src/service/core.rs:88,1
    - Dst: Self::with_context
      Src: /src/opendal/integrations/object_store/src/service/core.rs:88,1
    - Dst: Self::with_context
      Src: /src/opendal/integrations/object_store/src/service/core.rs:88,1
    - Dst: Some
      Src: /src/opendal/integrations/object_store/src/service/core.rs:92,1
    - Dst: GetRange::Bounded
      Src: /src/opendal/integrations/object_store/src/service/core.rs:92,1
    - Dst: Some
      Src: /src/opendal/integrations/object_store/src/service/core.rs:95,1
    - Dst: GetRange::Offset
      Src: /src/opendal/integrations/object_store/src/service/core.rs:95,1
    - Dst: Some
      Src: /src/opendal/integrations/object_store/src/service/core.rs:99,1
    - Dst: GetRange::Suffix
      Src: /src/opendal/integrations/object_store/src/service/core.rs:99,1
    - Dst: Ok
      Src: /src/opendal/integrations/object_store/src/service/core.rs:103,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 78
    argCount: 2
    argNames:
    - args
    - range
    argTypes:
    - '&OpRead'
    - BytesRange
    constantsTouched: []
    func_position:
      end: 104
      start: 57
    functionDepth: 36
    functionLinenumber: 57
    functionLinenumberEnd: 104
    functionName: parse_op_read
    functionSourceFile: /src/opendal/integrations/object_store/src/service/core.rs
    functionUses: 2
    functionsReached:
    - GetOptions::default
    - OpStat::version
    - Result::to_string
    - Ok
    - OpStat::if_modified_since
    - Self::with_context
    - OpStat::if_unmodified_since
    - u64::checked_add
    - GetRange::Offset
    - Some
    - OpStat::if_none_match
    - Error::new
    - GetRange::Suffix
    - timestamp_to_datetime
    - GetRange::Bounded
    - OpStat::if_match
    - ok_or_else
    linkageType: ''
    returnType: Result
    signature: 'pub fn parse_op_read(args: &OpRead, range: BytesRange) -> Result<GetOptions>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: PutOptions::default
      Src: /src/opendal/integrations/object_store/src/service/core.rs:108,1
    - Dst: OpStat::content_type
      Src: /src/opendal/integrations/object_store/src/service/core.rs:110,1
    - Dst: insert
      Src: /src/opendal/integrations/object_store/src/service/core.rs:111,1
    - Dst: AttributeValue::from
      Src: /src/opendal/integrations/object_store/src/service/core.rs:113,1
    - Dst: Result::to_string
      Src: /src/opendal/integrations/object_store/src/service/core.rs:113,1
    - Dst: OpStat::content_disposition
      Src: /src/opendal/integrations/object_store/src/service/core.rs:117,1
    - Dst: insert
      Src: /src/opendal/integrations/object_store/src/service/core.rs:118,1
    - Dst: AttributeValue::from
      Src: /src/opendal/integrations/object_store/src/service/core.rs:120,1
    - Dst: Result::to_string
      Src: /src/opendal/integrations/object_store/src/service/core.rs:120,1
    - Dst: OpStat::cache_control
      Src: /src/opendal/integrations/object_store/src/service/core.rs:124,1
    - Dst: insert
      Src: /src/opendal/integrations/object_store/src/service/core.rs:125,1
    - Dst: AttributeValue::from
      Src: /src/opendal/integrations/object_store/src/service/core.rs:127,1
    - Dst: Result::to_string
      Src: /src/opendal/integrations/object_store/src/service/core.rs:127,1
    - Dst: OpStat::user_metadata
      Src: /src/opendal/integrations/object_store/src/service/core.rs:131,1
    - Dst: insert
      Src: /src/opendal/integrations/object_store/src/service/core.rs:133,1
    - Dst: Attribute::Metadata
      Src: /src/opendal/integrations/object_store/src/service/core.rs:134,1
    - Dst: Cow::from
      Src: /src/opendal/integrations/object_store/src/service/core.rs:134,1
    - Dst: FoyerKey::to_string
      Src: /src/opendal/integrations/object_store/src/service/core.rs:134,1
    - Dst: AttributeValue::from
      Src: /src/opendal/integrations/object_store/src/service/core.rs:135,1
    - Dst: Vec::to_string
      Src: /src/opendal/integrations/object_store/src/service/core.rs:135,1
    - Dst: Ok
      Src: /src/opendal/integrations/object_store/src/service/core.rs:139,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 52
    argCount: 1
    argNames:
    - args
    argTypes:
    - '&OpWrite'
    constantsTouched: []
    func_position:
      end: 140
      start: 107
    functionDepth: 32
    functionLinenumber: 107
    functionLinenumberEnd: 140
    functionName: parse_op_write
    functionSourceFile: /src/opendal/integrations/object_store/src/service/core.rs
    functionUses: 2
    functionsReached:
    - PutOptions::default
    - insert
    - Result::to_string
    - Attribute::Metadata
    - Ok
    - OpStat::content_disposition
    - AttributeValue::from
    - OpStat::cache_control
    - Cow::from
    - FoyerKey::to_string
    - OpStat::user_metadata
    - Vec::to_string
    - OpStat::content_type
    linkageType: ''
    returnType: Result
    signature: 'pub fn parse_op_write(args: &OpWrite) -> Result<PutOptions>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Default::default
      Src: /src/opendal/integrations/object_store/src/service/core.rs:146,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - opts
    argTypes:
    - PutOptions
    constantsTouched: []
    func_position:
      end: 148
      start: 143
    functionDepth: 3
    functionLinenumber: 143
    functionLinenumberEnd: 148
    functionName: format_put_multipart_options
    functionSourceFile: /src/opendal/integrations/object_store/src/service/core.rs
    functionUses: 1
    functionsReached:
    - Default::default
    linkageType: ''
    returnType: object_store::PutMultipartOptions
    signature: 'pub fn format_put_multipart_options(opts: PutOptions) -> object_store::PutMultipartOptions'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Metadata::new
      Src: /src/opendal/integrations/object_store/src/service/core.rs:152,1
    - Dst: anyhow::Result::set_etag
      Src: /src/opendal/integrations/object_store/src/service/core.rs:154,1
    - Dst: anyhow::Result::set_version
      Src: /src/opendal/integrations/object_store/src/service/core.rs:157,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 15
    argCount: 1
    argNames:
    - result
    argTypes:
    - PutResult
    constantsTouched: []
    func_position:
      end: 160
      start: 151
    functionDepth: 1
    functionLinenumber: 151
    functionLinenumberEnd: 160
    functionName: format_put_result
    functionSourceFile: /src/opendal/integrations/object_store/src/service/core.rs
    functionUses: 1
    functionsReached:
    - Metadata::new
    - anyhow::Result::set_version
    - anyhow::Result::set_etag
    linkageType: ''
    returnType: Metadata
    signature: 'pub fn format_put_result(result: PutResult) -> Metadata'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Metadata::new
      Src: /src/opendal/integrations/object_store/src/service/core.rs:164,1
    - Dst: anyhow::Result::set_content_length
      Src: /src/opendal/integrations/object_store/src/service/core.rs:165,1
    - Dst: datetime_to_timestamp
      Src: /src/opendal/integrations/object_store/src/service/core.rs:166,1
    - Dst: anyhow::Result::set_last_modified
      Src: /src/opendal/integrations/object_store/src/service/core.rs:167,1
    - Dst: anyhow::Result::set_etag
      Src: /src/opendal/integrations/object_store/src/service/core.rs:170,1
    - Dst: anyhow::Result::set_version
      Src: /src/opendal/integrations/object_store/src/service/core.rs:173,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 26
    argCount: 1
    argNames:
    - meta
    argTypes:
    - '&ObjectMeta'
    constantsTouched: []
    func_position:
      end: 176
      start: 163
    functionDepth: 4
    functionLinenumber: 163
    functionLinenumberEnd: 176
    functionName: format_metadata
    functionSourceFile: /src/opendal/integrations/object_store/src/service/core.rs
    functionUses: 2
    functionsReached:
    - Metadata::new
    - anyhow::Result::set_content_length
    - anyhow::Result::set_last_modified
    - datetime_to_timestamp
    - anyhow::Result::set_version
    - anyhow::Result::set_etag
    linkageType: ''
    returnType: Metadata
    signature: 'pub fn format_metadata(meta: &ObjectMeta) -> Metadata'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: parse_op_read
      Src: /src/opendal/integrations/object_store/src/service/core.rs:184,1
    - Dst: OpRead::new
      Src: /src/opendal/integrations/object_store/src/service/core.rs:184,1
    - Dst: BytesRange::suffix
      Src: /src/opendal/integrations/object_store/src/service/core.rs:184,1
    - Dst: Ok
      Src: /src/opendal/integrations/object_store/src/service/core.rs:187,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 188
      start: 183
    functionDepth: 37
    functionLinenumber: 183
    functionLinenumberEnd: 188
    functionName: tests::test_parse_op_read_suffix_range
    functionSourceFile: /src/opendal/integrations/object_store/src/service/core.rs
    functionUses: 0
    functionsReached:
    - parse_op_read
    - BytesRange::suffix
    - OpRead::new
    - Ok
    linkageType: ''
    returnType: Result
    signature: fn test_parse_op_read_suffix_range() -> Result<()>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: ObjectStorePath::from
      Src: /src/opendal/integrations/object_store/src/service/writer.rs:45,1
    - Dst: Mutex::new
      Src: /src/opendal/integrations/object_store/src/service/writer.rs:47,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - store
    - path
    - args
    argTypes:
    - Arc<dyn ObjectStore + 'static>
    - '&str'
    - OpWrite
    constantsTouched: []
    func_position:
      end: 49
      start: 42
    functionDepth: 32
    functionLinenumber: 42
    functionLinenumberEnd: 49
    functionName: ObjectStoreWriter::new
    functionSourceFile: /src/opendal/integrations/object_store/src/service/writer.rs
    functionUses: 1
    functionsReached:
    - ObjectStorePath::from
    - Mutex::new
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(store: Arc<dyn ObjectStore + ''static>, path: &str, args:
      OpWrite) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Buffer::len
      Src: /src/opendal/integrations/object_store/src/service/writer.rs:57,1
    - Dst: Err
      Src: /src/opendal/integrations/object_store/src/service/writer.rs:59,1
    - Dst: Error::new
      Src: /src/opendal/integrations/object_store/src/service/writer.rs:59,1
    - Dst: Buffer::to_bytes
      Src: /src/opendal/integrations/object_store/src/service/writer.rs:65,1
    - Dst: PutPayload::from
      Src: /src/opendal/integrations/object_store/src/service/writer.rs:66,1
    - Dst: super::core::parse_op_write
      Src: /src/opendal/integrations/object_store/src/service/writer.rs:67,1
    - Dst: insert
      Src: /src/opendal/integrations/object_store/src/service/writer.rs:70,1
    - Dst: Attribute::Metadata
      Src: /src/opendal/integrations/object_store/src/service/writer.rs:71,1
    - Dst: '&str::into'
      Src: /src/opendal/integrations/object_store/src/service/writer.rs:71,1
    - Dst: AttributeValue::from
      Src: /src/opendal/integrations/object_store/src/service/writer.rs:72,1
    - Dst: Option::to_string
      Src: /src/opendal/integrations/object_store/src/service/writer.rs:72,1
    - Dst: put_opts
      Src: /src/opendal/integrations/object_store/src/service/writer.rs:75,1
    - Dst: map_err
      Src: /src/opendal/integrations/object_store/src/service/writer.rs:75,1
    - Dst: Metadata::new
      Src: /src/opendal/integrations/object_store/src/service/writer.rs:82,1
    - Dst: anyhow::Result::set_etag
      Src: /src/opendal/integrations/object_store/src/service/writer.rs:84,1
    - Dst: anyhow::Result::set_version
      Src: /src/opendal/integrations/object_store/src/service/writer.rs:87,1
    - Dst: Ok
      Src: /src/opendal/integrations/object_store/src/service/writer.rs:90,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 52
    argCount: 2
    argNames:
    - size
    - body
    argTypes:
    - u64
    - Buffer
    constantsTouched: []
    func_position:
      end: 91
      start: 55
    functionDepth: 36
    functionLinenumber: 55
    functionLinenumberEnd: 91
    functionName: ObjectStoreWriter::write_once
    functionSourceFile: /src/opendal/integrations/object_store/src/service/writer.rs
    functionUses: 0
    functionsReached:
    - map_err
    - insert
    - PutPayload::from
    - Option::to_string
    - Attribute::Metadata
    - Metadata::new
    - Ok
    - AttributeValue::from
    - Err
    - Error::new
    - Buffer::len
    - Buffer::to_bytes
    - super::core::parse_op_write
    - anyhow::Result::set_version
    - put_opts
    - anyhow::Result::set_etag
    - '&str::into'
    linkageType: ''
    returnType: Result
    signature: 'async fn write_once(&self, size: u64, body: Buffer) -> Result<Metadata>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: super::core::parse_op_write
      Src: /src/opendal/integrations/object_store/src/service/writer.rs:96,1
    - Dst: super::core::format_put_multipart_options
      Src: /src/opendal/integrations/object_store/src/service/writer.rs:97,1
    - Dst: put_multipart_opts
      Src: /src/opendal/integrations/object_store/src/service/writer.rs:98,1
    - Dst: map_err
      Src: /src/opendal/integrations/object_store/src/service/writer.rs:98,1
    - Dst: lock
      Src: /src/opendal/integrations/object_store/src/service/writer.rs:105,1
    - Dst: is_some
      Src: /src/opendal/integrations/object_store/src/service/writer.rs:106,1
    - Dst: Err
      Src: /src/opendal/integrations/object_store/src/service/writer.rs:107,1
    - Dst: Error::new
      Src: /src/opendal/integrations/object_store/src/service/writer.rs:107,1
    - Dst: Some
      Src: /src/opendal/integrations/object_store/src/service/writer.rs:112,1
    - Dst: Ok
      Src: /src/opendal/integrations/object_store/src/service/writer.rs:117,1
    - Dst: '&str::to_string'
      Src: /src/opendal/integrations/object_store/src/service/writer.rs:117,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 33
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 118
      start: 94
    functionDepth: 36
    functionLinenumber: 94
    functionLinenumberEnd: 118
    functionName: ObjectStoreWriter::initiate_part
    functionSourceFile: /src/opendal/integrations/object_store/src/service/writer.rs
    functionUses: 0
    functionsReached:
    - map_err
    - super::core::format_put_multipart_options
    - lock
    - Ok
    - put_multipart_opts
    - Err
    - Error::new
    - Some
    - super::core::parse_op_write
    - '&str::to_string'
    - is_some
    linkageType: ''
    returnType: Result
    signature: async fn initiate_part(&self) -> Result<String>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Buffer::len
      Src: /src/opendal/integrations/object_store/src/service/writer.rs:131,1
    - Dst: Err
      Src: /src/opendal/integrations/object_store/src/service/writer.rs:133,1
    - Dst: Error::new
      Src: /src/opendal/integrations/object_store/src/service/writer.rs:133,1
    - Dst: Buffer::to_bytes
      Src: /src/opendal/integrations/object_store/src/service/writer.rs:140,1
    - Dst: String::new
      Src: /src/opendal/integrations/object_store/src/service/writer.rs:143,1
    - Dst: PutPayload::from
      Src: /src/opendal/integrations/object_store/src/service/writer.rs:145,1
    - Dst: lock
      Src: /src/opendal/integrations/object_store/src/service/writer.rs:148,1
    - Dst: as_mut
      Src: /src/opendal/integrations/object_store/src/service/writer.rs:149,1
    - Dst: ok_or_else
      Src: /src/opendal/integrations/object_store/src/service/writer.rs:149,1
    - Dst: Error::new
      Src: /src/opendal/integrations/object_store/src/service/writer.rs:151,1
    - Dst: Result::put_part
      Src: /src/opendal/integrations/object_store/src/service/writer.rs:152,1
    - Dst: map_err
      Src: /src/opendal/integrations/object_store/src/service/writer.rs:152,1
    - Dst: Ok
      Src: /src/opendal/integrations/object_store/src/service/writer.rs:161,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 34
    argCount: 4
    argNames:
    - _upload_id
    - part_number
    - size
    - body
    argTypes:
    - '&str'
    - usize
    - u64
    - Buffer
    constantsTouched: []
    func_position:
      end: 162
      start: 123
    functionDepth: 36
    functionLinenumber: 123
    functionLinenumberEnd: 162
    functionName: ObjectStoreWriter::write_part
    functionSourceFile: /src/opendal/integrations/object_store/src/service/writer.rs
    functionUses: 0
    functionsReached:
    - map_err
    - as_mut
    - PutPayload::from
    - String::new
    - lock
    - Ok
    - Err
    - Error::new
    - Buffer::len
    - Buffer::to_bytes
    - Result::put_part
    - ok_or_else
    linkageType: ''
    returnType: Result
    signature: 'async fn write_part(&self,_upload_id: &str,part_number: usize,size:
      u64,body: Buffer,) -> Result<MultipartPart>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: (String, Metadata)::is_empty
      Src: /src/opendal/integrations/object_store/src/service/writer.rs:166,1
    - Dst: Err
      Src: /src/opendal/integrations/object_store/src/service/writer.rs:167,1
    - Dst: Error::new
      Src: /src/opendal/integrations/object_store/src/service/writer.rs:167,1
    - Dst: lock
      Src: /src/opendal/integrations/object_store/src/service/writer.rs:174,1
    - Dst: as_mut
      Src: /src/opendal/integrations/object_store/src/service/writer.rs:175,1
    - Dst: ok_or_else
      Src: /src/opendal/integrations/object_store/src/service/writer.rs:175,1
    - Dst: Error::new
      Src: /src/opendal/integrations/object_store/src/service/writer.rs:177,1
    - Dst: Result::complete
      Src: /src/opendal/integrations/object_store/src/service/writer.rs:180,1
    - Dst: map_err
      Src: /src/opendal/integrations/object_store/src/service/writer.rs:180,1
    - Dst: super::core::format_put_result
      Src: /src/opendal/integrations/object_store/src/service/writer.rs:184,1
    - Dst: Ok
      Src: /src/opendal/integrations/object_store/src/service/writer.rs:185,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 30
    argCount: 2
    argNames:
    - _upload_id
    - parts
    argTypes:
    - '&str'
    - '&[MultipartPart]'
    constantsTouched: []
    func_position:
      end: 186
      start: 164
    functionDepth: 36
    functionLinenumber: 164
    functionLinenumberEnd: 186
    functionName: ObjectStoreWriter::complete_part
    functionSourceFile: /src/opendal/integrations/object_store/src/service/writer.rs
    functionUses: 0
    functionsReached:
    - map_err
    - as_mut
    - lock
    - Ok
    - Error::new
    - Err
    - (String, Metadata)::is_empty
    - Result::complete
    - super::core::format_put_result
    - ok_or_else
    linkageType: ''
    returnType: Result
    signature: 'async fn complete_part(&self, _upload_id: &str, parts: &[MultipartPart])
      -> Result<Metadata>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: lock
      Src: /src/opendal/integrations/object_store/src/service/writer.rs:190,1
    - Dst: as_mut
      Src: /src/opendal/integrations/object_store/src/service/writer.rs:191,1
    - Dst: ok_or_else
      Src: /src/opendal/integrations/object_store/src/service/writer.rs:191,1
    - Dst: Error::new
      Src: /src/opendal/integrations/object_store/src/service/writer.rs:193,1
    - Dst: Result::abort
      Src: /src/opendal/integrations/object_store/src/service/writer.rs:196,1
    - Dst: map_err
      Src: /src/opendal/integrations/object_store/src/service/writer.rs:196,1
    - Dst: Ok
      Src: /src/opendal/integrations/object_store/src/service/writer.rs:199,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 23
    argCount: 1
    argNames:
    - _upload_id
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 200
      start: 188
    functionDepth: 33
    functionLinenumber: 188
    functionLinenumberEnd: 200
    functionName: ObjectStoreWriter::abort_part
    functionSourceFile: /src/opendal/integrations/object_store/src/service/writer.rs
    functionUses: 0
    functionsReached:
    - map_err
    - as_mut
    - Result::abort
    - lock
    - Ok
    - Error::new
    - ok_or_else
    linkageType: ''
    returnType: Result
    signature: 'async fn abort_part(&self, _upload_id: &str) -> Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::debug_struct
      Src: /src/opendal/integrations/object_store/src/service/mod.rs:56,1
    - Dst: Result::finish_non_exhaustive
      Src: /src/opendal/integrations/object_store/src/service/mod.rs:57,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - f
    argTypes:
    - '&mut std::fmt::Formatter<''_>'
    constantsTouched: []
    func_position:
      end: 58
      start: 55
    functionDepth: 0
    functionLinenumber: 55
    functionLinenumberEnd: 58
    functionName: ObjectStoreBuilder::fmt
    functionSourceFile: /src/opendal/integrations/object_store/src/service/mod.rs
    functionUses: 0
    functionsReached:
    - Result::finish_non_exhaustive
    - Result::debug_struct
    linkageType: ''
    returnType: std::fmt::Result
    signature: 'fn fmt(&self, f: &mut std::fmt::Formatter<''_>) -> std::fmt::Result'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Some
      Src: /src/opendal/integrations/object_store/src/service/mod.rs:64,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - store
    argTypes:
    - Arc<dyn ObjectStore + 'static>
    constantsTouched: []
    func_position:
      end: 65
      start: 63
    functionDepth: 0
    functionLinenumber: 63
    functionLinenumberEnd: 65
    functionName: ObjectStoreBuilder::new
    functionSourceFile: /src/opendal/integrations/object_store/src/service/mod.rs
    functionUses: 7
    functionsReached:
    - Some
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(store: Arc<dyn ObjectStore + ''static>) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: ok_or_else
      Src: /src/opendal/integrations/object_store/src/service/mod.rs:72,1
    - Dst: Error::new
      Src: /src/opendal/integrations/object_store/src/service/mod.rs:73,1
    - Dst: Self::with_context
      Src: /src/opendal/integrations/object_store/src/service/mod.rs:73,1
    - Dst: Ok
      Src: /src/opendal/integrations/object_store/src/service/mod.rs:77,1
    - Dst: ServiceInfo::new
      Src: /src/opendal/integrations/object_store/src/service/mod.rs:79,1
    - Dst: Default::default
      Src: /src/opendal/integrations/object_store/src/service/mod.rs:92,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 95
      start: 71
    functionDepth: 36
    functionLinenumber: 71
    functionLinenumberEnd: 95
    functionName: ObjectStoreBuilder::build
    functionSourceFile: /src/opendal/integrations/object_store/src/service/mod.rs
    functionUses: 0
    functionsReached:
    - ServiceInfo::new
    - Ok
    - Default::default
    - Error::new
    - Self::with_context
    - ok_or_else
    linkageType: ''
    returnType: Result
    signature: fn build(self) -> Result<impl Service>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::debug_struct
      Src: /src/opendal/integrations/object_store/src/service/mod.rs:107,1
    - Dst: Result::finish_non_exhaustive
      Src: /src/opendal/integrations/object_store/src/service/mod.rs:108,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - f
    argTypes:
    - '&mut std::fmt::Formatter<''_>'
    constantsTouched: []
    func_position:
      end: 109
      start: 106
    functionDepth: 0
    functionLinenumber: 106
    functionLinenumberEnd: 109
    functionName: ObjectStoreService::fmt
    functionSourceFile: /src/opendal/integrations/object_store/src/service/mod.rs
    functionUses: 0
    functionsReached:
    - Result::finish_non_exhaustive
    - Result::debug_struct
    linkageType: ''
    returnType: std::fmt::Result
    signature: 'fn fmt(&self, f: &mut std::fmt::Formatter<''_>) -> std::fmt::Result'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: clone
      Src: /src/opendal/integrations/object_store/src/service/mod.rs:120,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 121
      start: 119
    functionDepth: 2
    functionLinenumber: 119
    functionLinenumberEnd: 121
    functionName: ObjectStoreService::info
    functionSourceFile: /src/opendal/integrations/object_store/src/service/mod.rs
    functionUses: 0
    functionsReached:
    - clone
    linkageType: ''
    returnType: ServiceInfo
    signature: fn info(&self) -> ServiceInfo
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 125
      start: 123
    functionDepth: 0
    functionLinenumber: 123
    functionLinenumberEnd: 125
    functionName: ObjectStoreService::capability
    functionSourceFile: /src/opendal/integrations/object_store/src/service/mod.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Capability
    signature: fn capability(&self) -> Capability
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/integrations/object_store/src/service/mod.rs:133,1
    - Dst: Error::new
      Src: /src/opendal/integrations/object_store/src/service/mod.rs:133,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames: []
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpCreateDir
    constantsTouched: []
    func_position:
      end: 137
      start: 127
    functionDepth: 36
    functionLinenumber: 127
    functionLinenumberEnd: 137
    functionName: ObjectStoreService::create_dir
    functionSourceFile: /src/opendal/integrations/object_store/src/service/mod.rs
    functionUses: 0
    functionsReached:
    - Error::new
    - Err
    linkageType: ''
    returnType: Result
    signature: 'async fn create_dir(&self,_: &OperationContext,_: &str,_: OpCreateDir,)
      -> Result<RpCreateDir>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: ObjectStorePath::from
      Src: /src/opendal/integrations/object_store/src/service/mod.rs:140,1
    - Dst: service::core::parse_op_stat
      Src: /src/opendal/integrations/object_store/src/service/mod.rs:141,1
    - Dst: get_opts
      Src: /src/opendal/integrations/object_store/src/service/mod.rs:142,1
    - Dst: map_err
      Src: /src/opendal/integrations/object_store/src/service/mod.rs:142,1
    - Dst: parse_metadata
      Src: /src/opendal/integrations/object_store/src/service/mod.rs:147,1
    - Dst: Ok
      Src: /src/opendal/integrations/object_store/src/service/mod.rs:148,1
    - Dst: RpStat::new
      Src: /src/opendal/integrations/object_store/src/service/mod.rs:148,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 3
    argNames:
    - _ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpStat
    constantsTouched: []
    func_position:
      end: 149
      start: 139
    functionDepth: 32
    functionLinenumber: 139
    functionLinenumberEnd: 149
    functionName: ObjectStoreService::stat
    functionSourceFile: /src/opendal/integrations/object_store/src/service/mod.rs
    functionUses: 0
    functionsReached:
    - map_err
    - Ok
    - service::core::parse_op_stat
    - get_opts
    - RpStat::new
    - ObjectStorePath::from
    - parse_metadata
    linkageType: ''
    returnType: Result
    signature: 'async fn stat(&self, _ctx: &OperationContext, path: &str, args: OpStat)
      -> Result<RpStat>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/integrations/object_store/src/service/mod.rs:152,1
    - Dst: oio::StreamReader::new
      Src: /src/opendal/integrations/object_store/src/service/mod.rs:152,1
    - Dst: ObjectStoreReader::new
      Src: /src/opendal/integrations/object_store/src/service/mod.rs:152,1
    - Dst: clone
      Src: /src/opendal/integrations/object_store/src/service/mod.rs:153,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 3
    argNames:
    - _ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpRead
    constantsTouched: []
    func_position:
      end: 157
      start: 151
    functionDepth: 3
    functionLinenumber: 151
    functionLinenumberEnd: 157
    functionName: ObjectStoreService::read
    functionSourceFile: /src/opendal/integrations/object_store/src/service/mod.rs
    functionUses: 0
    functionsReached:
    - oio::StreamReader::new
    - clone
    - Ok
    - ObjectStoreReader::new
    linkageType: ''
    returnType: Result
    signature: 'fn read(&self, _ctx: &OperationContext, path: &str, args: OpRead)
      -> Result<Self::Reader>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: ObjectStoreWriter::new
      Src: /src/opendal/integrations/object_store/src/service/mod.rs:160,1
    - Dst: clone
      Src: /src/opendal/integrations/object_store/src/service/mod.rs:160,1
    - Dst: Ok
      Src: /src/opendal/integrations/object_store/src/service/mod.rs:161,1
    - Dst: MultipartWriter::new
      Src: /src/opendal/integrations/object_store/src/service/mod.rs:161,1
    - Dst: Result::executor
      Src: /src/opendal/integrations/object_store/src/service/mod.rs:161,1
    - Dst: Self::clone
      Src: /src/opendal/integrations/object_store/src/service/mod.rs:161,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 3
    argNames:
    - ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpWrite
    constantsTouched: []
    func_position:
      end: 162
      start: 159
    functionDepth: 33
    functionLinenumber: 159
    functionLinenumberEnd: 162
    functionName: ObjectStoreService::write
    functionSourceFile: /src/opendal/integrations/object_store/src/service/mod.rs
    functionUses: 0
    functionsReached:
    - MultipartWriter::new
    - Ok
    - Result::executor
    - clone
    - ObjectStoreWriter::new
    - Self::clone
    linkageType: ''
    returnType: Result
    signature: 'fn write(&self, ctx: &OperationContext, path: &str, args: OpWrite)
      -> Result<Self::Writer>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: BatchDeleter::new
      Src: /src/opendal/integrations/object_store/src/service/mod.rs:165,1
    - Dst: ObjectStoreDeleter::new
      Src: /src/opendal/integrations/object_store/src/service/mod.rs:165,1
    - Dst: clone
      Src: /src/opendal/integrations/object_store/src/service/mod.rs:165,1
    - Dst: Some
      Src: /src/opendal/integrations/object_store/src/service/mod.rs:165,1
    - Dst: Ok
      Src: /src/opendal/integrations/object_store/src/service/mod.rs:166,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - _ctx
    argTypes:
    - '&OperationContext'
    constantsTouched: []
    func_position:
      end: 167
      start: 164
    functionDepth: 4
    functionLinenumber: 164
    functionLinenumberEnd: 167
    functionName: ObjectStoreService::delete
    functionSourceFile: /src/opendal/integrations/object_store/src/service/mod.rs
    functionUses: 0
    functionsReached:
    - Ok
    - BatchDeleter::new
    - clone
    - Some
    - ObjectStoreDeleter::new
    linkageType: ''
    returnType: Result
    signature: 'fn delete(&self, _ctx: &OperationContext) -> Result<Self::Deleter>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: ObjectStoreLister::new
      Src: /src/opendal/integrations/object_store/src/service/mod.rs:170,1
    - Dst: clone
      Src: /src/opendal/integrations/object_store/src/service/mod.rs:170,1
    - Dst: Ok
      Src: /src/opendal/integrations/object_store/src/service/mod.rs:171,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - _ctx
    - path
    - args
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpList
    constantsTouched: []
    func_position:
      end: 172
      start: 169
    functionDepth: 37
    functionLinenumber: 169
    functionLinenumberEnd: 172
    functionName: ObjectStoreService::list
    functionSourceFile: /src/opendal/integrations/object_store/src/service/mod.rs
    functionUses: 0
    functionsReached:
    - ObjectStoreLister::new
    - clone
    - Ok
    linkageType: ''
    returnType: Result
    signature: 'fn list(&self, _ctx: &OperationContext, path: &str, args: OpList)
      -> Result<Self::Lister>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/integrations/object_store/src/service/mod.rs:182,1
    - Dst: Error::new
      Src: /src/opendal/integrations/object_store/src/service/mod.rs:182,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 5
    argNames: []
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    - OpCopy
    - OpCopier
    constantsTouched: []
    func_position:
      end: 186
      start: 174
    functionDepth: 36
    functionLinenumber: 174
    functionLinenumberEnd: 186
    functionName: ObjectStoreService::copy
    functionSourceFile: /src/opendal/integrations/object_store/src/service/mod.rs
    functionUses: 0
    functionsReached:
    - Error::new
    - Err
    linkageType: ''
    returnType: Result
    signature: 'fn copy(&self,_: &OperationContext,_: &str,_: &str,_: OpCopy,_: OpCopier,)
      -> Result<Self::Copier>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/integrations/object_store/src/service/mod.rs:195,1
    - Dst: Error::new
      Src: /src/opendal/integrations/object_store/src/service/mod.rs:195,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames: []
    argTypes:
    - '&OperationContext'
    - '&str'
    - '&str'
    - OpRename
    constantsTouched: []
    func_position:
      end: 199
      start: 188
    functionDepth: 36
    functionLinenumber: 188
    functionLinenumberEnd: 199
    functionName: ObjectStoreService::rename
    functionSourceFile: /src/opendal/integrations/object_store/src/service/mod.rs
    functionUses: 0
    functionsReached:
    - Error::new
    - Err
    linkageType: ''
    returnType: Result
    signature: 'async fn rename(&self,_: &OperationContext,_: &str,_: &str,_: OpRename,)
      -> Result<RpRename>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/integrations/object_store/src/service/mod.rs:202,1
    - Dst: Error::new
      Src: /src/opendal/integrations/object_store/src/service/mod.rs:202,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames: []
    argTypes:
    - '&OperationContext'
    - '&str'
    - OpPresign
    constantsTouched: []
    func_position:
      end: 206
      start: 201
    functionDepth: 36
    functionLinenumber: 201
    functionLinenumberEnd: 206
    functionName: ObjectStoreService::presign
    functionSourceFile: /src/opendal/integrations/object_store/src/service/mod.rs
    functionUses: 0
    functionsReached:
    - Error::new
    - Err
    linkageType: ''
    returnType: Result
    signature: 'async fn presign(&self, _: &OperationContext, _: &str, _: OpPresign)
      -> Result<RpPresign>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Arc::new
      Src: /src/opendal/integrations/object_store/src/service/mod.rs:222,1
    - Dst: InMemory::new
      Src: /src/opendal/integrations/object_store/src/service/mod.rs:222,1
    - Dst: ObjectStoreBuilder::new
      Src: /src/opendal/integrations/object_store/src/service/mod.rs:223,1
    - Dst: OtelMetricsLayerBuilder::build
      Src: /src/opendal/integrations/object_store/src/service/mod.rs:225,1
    - Dst: Result::expect
      Src: /src/opendal/integrations/object_store/src/service/mod.rs:225,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 227
      start: 221
    functionDepth: 37
    functionLinenumber: 221
    functionLinenumberEnd: 227
    functionName: tests::test_object_store_backend_builder
    functionSourceFile: /src/opendal/integrations/object_store/src/service/mod.rs
    functionUses: 0
    functionsReached:
    - Result::expect
    - Arc::new
    - ObjectStoreBuilder::new
    - InMemory::new
    - OtelMetricsLayerBuilder::build
    linkageType: ''
    returnType: void
    signature: async fn test_object_store_backend_builder()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Arc::new
      Src: /src/opendal/integrations/object_store/src/service/mod.rs:231,1
    - Dst: InMemory::new
      Src: /src/opendal/integrations/object_store/src/service/mod.rs:231,1
    - Dst: ObjectStoreBuilder::new
      Src: /src/opendal/integrations/object_store/src/service/mod.rs:232,1
    - Dst: Self::build
      Src: /src/opendal/integrations/object_store/src/service/mod.rs:232,1
    - Dst: Result::expect
      Src: /src/opendal/integrations/object_store/src/service/mod.rs:232,1
    - Dst: SqliteBackend::info
      Src: /src/opendal/integrations/object_store/src/service/mod.rs:236,1
    - Dst: SqliteBackend::capability
      Src: /src/opendal/integrations/object_store/src/service/mod.rs:241,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 19
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 247
      start: 230
    functionDepth: 37
    functionLinenumber: 230
    functionLinenumberEnd: 247
    functionName: tests::test_object_store_backend_info
    functionSourceFile: /src/opendal/integrations/object_store/src/service/mod.rs
    functionUses: 0
    functionsReached:
    - Result::expect
    - Arc::new
    - ObjectStoreBuilder::new
    - InMemory::new
    - SqliteBackend::info
    - Self::build
    - SqliteBackend::capability
    linkageType: ''
    returnType: void
    signature: async fn test_object_store_backend_info()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Arc::new
      Src: /src/opendal/integrations/object_store/src/service/mod.rs:251,1
    - Dst: InMemory::new
      Src: /src/opendal/integrations/object_store/src/service/mod.rs:251,1
    - Dst: ObjectStoreBuilder::new
      Src: /src/opendal/integrations/object_store/src/service/mod.rs:252,1
    - Dst: Arc::clone
      Src: /src/opendal/integrations/object_store/src/service/mod.rs:252,1
    - Dst: Self::build
      Src: /src/opendal/integrations/object_store/src/service/mod.rs:252,1
    - Dst: Result::expect
      Src: /src/opendal/integrations/object_store/src/service/mod.rs:252,1
    - Dst: test_ctx
      Src: /src/opendal/integrations/object_store/src/service/mod.rs:255,1
    - Dst: SqliteBackend::write
      Src: /src/opendal/integrations/object_store/src/service/mod.rs:261,1
    - Dst: OpWrite::default
      Src: /src/opendal/integrations/object_store/src/service/mod.rs:262,1
    - Dst: Result::expect
      Src: /src/opendal/integrations/object_store/src/service/mod.rs:261,1
    - Dst: Result::write
      Src: /src/opendal/integrations/object_store/src/service/mod.rs:265,1
    - Dst: Buffer::from
      Src: /src/opendal/integrations/object_store/src/service/mod.rs:266,1
    - Dst: expect
      Src: /src/opendal/integrations/object_store/src/service/mod.rs:265,1
    - Dst: Result::close
      Src: /src/opendal/integrations/object_store/src/service/mod.rs:269,1
    - Dst: expect
      Src: /src/opendal/integrations/object_store/src/service/mod.rs:269,1
    - Dst: SqliteBackend::stat
      Src: /src/opendal/integrations/object_store/src/service/mod.rs:272,1
    - Dst: OpStat::default
      Src: /src/opendal/integrations/object_store/src/service/mod.rs:273,1
    - Dst: expect
      Src: /src/opendal/integrations/object_store/src/service/mod.rs:272,1
    - Dst: SqliteBackend::read
      Src: /src/opendal/integrations/object_store/src/service/mod.rs:283,1
    - Dst: OpRead::default
      Src: /src/opendal/integrations/object_store/src/service/mod.rs:284,1
    - Dst: Result::expect
      Src: /src/opendal/integrations/object_store/src/service/mod.rs:283,1
    - Dst: anyhow::Result::open
      Src: /src/opendal/integrations/object_store/src/service/mod.rs:287,1
    - Dst: BytesRange::default
      Src: /src/opendal/integrations/object_store/src/service/mod.rs:288,1
    - Dst: expect
      Src: /src/opendal/integrations/object_store/src/service/mod.rs:287,1
    - Dst: Result::read
      Src: /src/opendal/integrations/object_store/src/service/mod.rs:291,1
    - Dst: expect
      Src: /src/opendal/integrations/object_store/src/service/mod.rs:291,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 58
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 293
      start: 250
    functionDepth: 37
    functionLinenumber: 250
    functionLinenumberEnd: 293
    functionName: tests::test_object_store_backend_basic_operations
    functionSourceFile: /src/opendal/integrations/object_store/src/service/mod.rs
    functionUses: 0
    functionsReached:
    - SqliteBackend::stat
    - Arc::new
    - ObjectStoreBuilder::new
    - anyhow::Result::open
    - InMemory::new
    - BytesRange::default
    - expect
    - Result::read
    - Result::expect
    - OpWrite::default
    - test_ctx
    - Buffer::from
    - Result::close
    - Result::write
    - OpStat::default
    - Arc::clone
    - SqliteBackend::read
    - SqliteBackend::write
    - Self::build
    - OpRead::default
    linkageType: ''
    returnType: void
    signature: async fn test_object_store_backend_basic_operations()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Arc::new
      Src: /src/opendal/integrations/object_store/src/service/mod.rs:297,1
    - Dst: InMemory::new
      Src: /src/opendal/integrations/object_store/src/service/mod.rs:297,1
    - Dst: ObjectStoreBuilder::new
      Src: /src/opendal/integrations/object_store/src/service/mod.rs:298,1
    - Dst: Arc::clone
      Src: /src/opendal/integrations/object_store/src/service/mod.rs:298,1
    - Dst: Self::build
      Src: /src/opendal/integrations/object_store/src/service/mod.rs:298,1
    - Dst: Result::expect
      Src: /src/opendal/integrations/object_store/src/service/mod.rs:298,1
    - Dst: test_ctx
      Src: /src/opendal/integrations/object_store/src/service/mod.rs:301,1
    - Dst: Result::len
      Src: /src/opendal/integrations/object_store/src/service/mod.rs:306,1
    - Dst: SqliteBackend::write
      Src: /src/opendal/integrations/object_store/src/service/mod.rs:309,1
    - Dst: OpWrite::default
      Src: /src/opendal/integrations/object_store/src/service/mod.rs:310,1
    - Dst: Result::expect
      Src: /src/opendal/integrations/object_store/src/service/mod.rs:309,1
    - Dst: Result::chunks
      Src: /src/opendal/integrations/object_store/src/service/mod.rs:315,1
    - Dst: Result::write
      Src: /src/opendal/integrations/object_store/src/service/mod.rs:316,1
    - Dst: Buffer::from
      Src: /src/opendal/integrations/object_store/src/service/mod.rs:317,1
    - Dst: expect
      Src: /src/opendal/integrations/object_store/src/service/mod.rs:316,1
    - Dst: Result::close
      Src: /src/opendal/integrations/object_store/src/service/mod.rs:322,1
    - Dst: expect
      Src: /src/opendal/integrations/object_store/src/service/mod.rs:322,1
    - Dst: SqliteBackend::stat
      Src: /src/opendal/integrations/object_store/src/service/mod.rs:325,1
    - Dst: OpStat::default
      Src: /src/opendal/integrations/object_store/src/service/mod.rs:326,1
    - Dst: expect
      Src: /src/opendal/integrations/object_store/src/service/mod.rs:325,1
    - Dst: SqliteBackend::read
      Src: /src/opendal/integrations/object_store/src/service/mod.rs:336,1
    - Dst: OpRead::default
      Src: /src/opendal/integrations/object_store/src/service/mod.rs:337,1
    - Dst: Result::expect
      Src: /src/opendal/integrations/object_store/src/service/mod.rs:336,1
    - Dst: anyhow::Result::open
      Src: /src/opendal/integrations/object_store/src/service/mod.rs:340,1
    - Dst: BytesRange::default
      Src: /src/opendal/integrations/object_store/src/service/mod.rs:341,1
    - Dst: expect
      Src: /src/opendal/integrations/object_store/src/service/mod.rs:340,1
    - Dst: Result::read_all
      Src: /src/opendal/integrations/object_store/src/service/mod.rs:344,1
    - Dst: expect
      Src: /src/opendal/integrations/object_store/src/service/mod.rs:344,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 61
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 346
      start: 296
    functionDepth: 37
    functionLinenumber: 296
    functionLinenumberEnd: 346
    functionName: tests::test_object_store_backend_multipart_upload
    functionSourceFile: /src/opendal/integrations/object_store/src/service/mod.rs
    functionUses: 0
    functionsReached:
    - SqliteBackend::stat
    - Arc::new
    - ObjectStoreBuilder::new
    - Result::len
    - anyhow::Result::open
    - InMemory::new
    - BytesRange::default
    - expect
    - Result::expect
    - OpWrite::default
    - test_ctx
    - Result::read_all
    - Buffer::from
    - Result::close
    - Result::write
    - OpStat::default
    - Arc::clone
    - Result::chunks
    - SqliteBackend::read
    - SqliteBackend::write
    - Self::build
    - OpRead::default
    linkageType: ''
    returnType: void
    signature: async fn test_object_store_backend_multipart_upload()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Arc::new
      Src: /src/opendal/integrations/object_store/src/service/mod.rs:350,1
    - Dst: InMemory::new
      Src: /src/opendal/integrations/object_store/src/service/mod.rs:350,1
    - Dst: ObjectStoreBuilder::new
      Src: /src/opendal/integrations/object_store/src/service/mod.rs:351,1
    - Dst: Arc::clone
      Src: /src/opendal/integrations/object_store/src/service/mod.rs:351,1
    - Dst: Self::build
      Src: /src/opendal/integrations/object_store/src/service/mod.rs:351,1
    - Dst: Result::expect
      Src: /src/opendal/integrations/object_store/src/service/mod.rs:351,1
    - Dst: test_ctx
      Src: /src/opendal/integrations/object_store/src/service/mod.rs:354,1
    - Dst: SqliteBackend::write
      Src: /src/opendal/integrations/object_store/src/service/mod.rs:364,1
    - Dst: OpWrite::default
      Src: /src/opendal/integrations/object_store/src/service/mod.rs:365,1
    - Dst: Result::expect
      Src: /src/opendal/integrations/object_store/src/service/mod.rs:364,1
    - Dst: Result::write
      Src: /src/opendal/integrations/object_store/src/service/mod.rs:367,1
    - Dst: Buffer::from
      Src: /src/opendal/integrations/object_store/src/service/mod.rs:368,1
    - Dst: expect
      Src: /src/opendal/integrations/object_store/src/service/mod.rs:367,1
    - Dst: Result::close
      Src: /src/opendal/integrations/object_store/src/service/mod.rs:371,1
    - Dst: expect
      Src: /src/opendal/integrations/object_store/src/service/mod.rs:371,1
    - Dst: SqliteBackend::list
      Src: /src/opendal/integrations/object_store/src/service/mod.rs:375,1
    - Dst: OpList::default
      Src: /src/opendal/integrations/object_store/src/service/mod.rs:376,1
    - Dst: Result::expect
      Src: /src/opendal/integrations/object_store/src/service/mod.rs:375,1
    - Dst: Vec::new
      Src: /src/opendal/integrations/object_store/src/service/mod.rs:379,1
    - Dst: Result::next
      Src: /src/opendal/integrations/object_store/src/service/mod.rs:380,1
    - Dst: expect
      Src: /src/opendal/integrations/object_store/src/service/mod.rs:380,1
    - Dst: push
      Src: /src/opendal/integrations/object_store/src/service/mod.rs:381,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 55
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 387
      start: 349
    functionDepth: 37
    functionLinenumber: 349
    functionLinenumberEnd: 387
    functionName: tests::test_object_store_backend_list
    functionSourceFile: /src/opendal/integrations/object_store/src/service/mod.rs
    functionUses: 0
    functionsReached:
    - SqliteBackend::list
    - expect
    - push
    - Result::expect
    - Arc::new
    - OpWrite::default
    - OpList::default
    - SqliteBackend::write
    - Result::close
    - ObjectStoreBuilder::new
    - Result::write
    - Buffer::from
    - test_ctx
    - Vec::new
    - Result::next
    - InMemory::new
    - Self::build
    - Arc::clone
    linkageType: ''
    returnType: void
    signature: async fn test_object_store_backend_list()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Arc::new
      Src: /src/opendal/integrations/object_store/src/service/mod.rs:391,1
    - Dst: InMemory::new
      Src: /src/opendal/integrations/object_store/src/service/mod.rs:391,1
    - Dst: ObjectStoreBuilder::new
      Src: /src/opendal/integrations/object_store/src/service/mod.rs:392,1
    - Dst: Self::build
      Src: /src/opendal/integrations/object_store/src/service/mod.rs:392,1
    - Dst: Result::expect
      Src: /src/opendal/integrations/object_store/src/service/mod.rs:392,1
    - Dst: test_ctx
      Src: /src/opendal/integrations/object_store/src/service/mod.rs:395,1
    - Dst: SqliteBackend::write
      Src: /src/opendal/integrations/object_store/src/service/mod.rs:401,1
    - Dst: OpWrite::default
      Src: /src/opendal/integrations/object_store/src/service/mod.rs:402,1
    - Dst: Result::expect
      Src: /src/opendal/integrations/object_store/src/service/mod.rs:401,1
    - Dst: Result::write
      Src: /src/opendal/integrations/object_store/src/service/mod.rs:404,1
    - Dst: Buffer::from
      Src: /src/opendal/integrations/object_store/src/service/mod.rs:405,1
    - Dst: expect
      Src: /src/opendal/integrations/object_store/src/service/mod.rs:404,1
    - Dst: Result::close
      Src: /src/opendal/integrations/object_store/src/service/mod.rs:408,1
    - Dst: expect
      Src: /src/opendal/integrations/object_store/src/service/mod.rs:408,1
    - Dst: SqliteBackend::stat
      Src: /src/opendal/integrations/object_store/src/service/mod.rs:411,1
    - Dst: OpStat::default
      Src: /src/opendal/integrations/object_store/src/service/mod.rs:412,1
    - Dst: expect
      Src: /src/opendal/integrations/object_store/src/service/mod.rs:411,1
    - Dst: SqliteBackend::delete
      Src: /src/opendal/integrations/object_store/src/service/mod.rs:417,1
    - Dst: Result::expect
      Src: /src/opendal/integrations/object_store/src/service/mod.rs:417,1
    - Dst: Result::delete
      Src: /src/opendal/integrations/object_store/src/service/mod.rs:418,1
    - Dst: OpDelete::default
      Src: /src/opendal/integrations/object_store/src/service/mod.rs:419,1
    - Dst: expect
      Src: /src/opendal/integrations/object_store/src/service/mod.rs:418,1
    - Dst: Result::close
      Src: /src/opendal/integrations/object_store/src/service/mod.rs:422,1
    - Dst: expect
      Src: /src/opendal/integrations/object_store/src/service/mod.rs:422,1
    - Dst: SqliteBackend::stat
      Src: /src/opendal/integrations/object_store/src/service/mod.rs:425,1
    - Dst: OpStat::default
      Src: /src/opendal/integrations/object_store/src/service/mod.rs:425,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 62
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 427
      start: 390
    functionDepth: 37
    functionLinenumber: 390
    functionLinenumberEnd: 427
    functionName: tests::test_object_store_backend_delete
    functionSourceFile: /src/opendal/integrations/object_store/src/service/mod.rs
    functionUses: 0
    functionsReached:
    - expect
    - SqliteBackend::stat
    - Result::expect
    - OpStat::default
    - Arc::new
    - OpWrite::default
    - SqliteBackend::write
    - Result::close
    - ObjectStoreBuilder::new
    - Result::write
    - SqliteBackend::delete
    - test_ctx
    - InMemory::new
    - OpDelete::default
    - Self::build
    - Result::delete
    - Buffer::from
    linkageType: ''
    returnType: void
    signature: async fn test_object_store_backend_delete()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Arc::new
      Src: /src/opendal/integrations/object_store/src/service/mod.rs:431,1
    - Dst: InMemory::new
      Src: /src/opendal/integrations/object_store/src/service/mod.rs:431,1
    - Dst: ObjectStoreBuilder::new
      Src: /src/opendal/integrations/object_store/src/service/mod.rs:432,1
    - Dst: Self::build
      Src: /src/opendal/integrations/object_store/src/service/mod.rs:432,1
    - Dst: Result::expect
      Src: /src/opendal/integrations/object_store/src/service/mod.rs:432,1
    - Dst: test_ctx
      Src: /src/opendal/integrations/object_store/src/service/mod.rs:435,1
    - Dst: SqliteBackend::stat
      Src: /src/opendal/integrations/object_store/src/service/mod.rs:438,1
    - Dst: OpStat::default
      Src: /src/opendal/integrations/object_store/src/service/mod.rs:439,1
    - Dst: SqliteBackend::read
      Src: /src/opendal/integrations/object_store/src/service/mod.rs:444,1
    - Dst: OpRead::default
      Src: /src/opendal/integrations/object_store/src/service/mod.rs:445,1
    - Dst: Result::expect
      Src: /src/opendal/integrations/object_store/src/service/mod.rs:444,1
    - Dst: anyhow::Result::read
      Src: /src/opendal/integrations/object_store/src/service/mod.rs:447,1
    - Dst: BytesRange::from
      Src: /src/opendal/integrations/object_store/src/service/mod.rs:447,1
    - Dst: SqliteBackend::list
      Src: /src/opendal/integrations/object_store/src/service/mod.rs:451,1
    - Dst: OpList::default
      Src: /src/opendal/integrations/object_store/src/service/mod.rs:451,1
    - Dst: Result::next
      Src: /src/opendal/integrations/object_store/src/service/mod.rs:454,1
    - Dst: expect
      Src: /src/opendal/integrations/object_store/src/service/mod.rs:454,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 38
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 457
      start: 430
    functionDepth: 37
    functionLinenumber: 430
    functionLinenumberEnd: 457
    functionName: tests::test_object_store_backend_error_handling
    functionSourceFile: /src/opendal/integrations/object_store/src/service/mod.rs
    functionUses: 0
    functionsReached:
    - SqliteBackend::list
    - expect
    - SqliteBackend::stat
    - Result::expect
    - BytesRange::from
    - Arc::new
    - SqliteBackend::read
    - anyhow::Result::read
    - OpList::default
    - ObjectStoreBuilder::new
    - Result::next
    - test_ctx
    - InMemory::new
    - Self::build
    - OpRead::default
    - OpStat::default
    linkageType: ''
    returnType: void
    signature: async fn test_object_store_backend_error_handling()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Fs::default
      Src: /src/opendal/integrations/dav-server/tests/test.rs:32,1
    - Dst: Self::root
      Src: /src/opendal/integrations/dav-server/tests/test.rs:32,1
    - Dst: Operator::new
      Src: /src/opendal/integrations/dav-server/tests/test.rs:34,1
    - Dst: OpendalFs::new
      Src: /src/opendal/integrations/dav-server/tests/test.rs:36,1
    - Dst: Box::metadata
      Src: /src/opendal/integrations/dav-server/tests/test.rs:38,1
    - Dst: DavPath::new
      Src: /src/opendal/integrations/dav-server/tests/test.rs:39,1
    - Dst: Self::unwrap
      Src: /src/opendal/integrations/dav-server/tests/test.rs:39,1
    - Dst: unwrap
      Src: /src/opendal/integrations/dav-server/tests/test.rs:38,1
    - Dst: Ok
      Src: /src/opendal/integrations/dav-server/tests/test.rs:44,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 18
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 45
      start: 31
    functionDepth: 32
    functionLinenumber: 31
    functionLinenumberEnd: 45
    functionName: test
    functionSourceFile: /src/opendal/integrations/dav-server/tests/test.rs
    functionUses: 2
    functionsReached:
    - Operator::new
    - OpendalFs::new
    - Self::unwrap
    - Ok
    - unwrap
    - Box::metadata
    - Fs::default
    - Self::root
    - DavPath::new
    linkageType: ''
    returnType: Result
    signature: async fn test() -> Result<()>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: opendal::services::Memory::default
      Src: /src/opendal/integrations/dav-server/tests/test.rs:49,1
    - Dst: Operator::new
      Src: /src/opendal/integrations/dav-server/tests/test.rs:50,1
    - Dst: Result::unwrap
      Src: /src/opendal/integrations/dav-server/tests/test.rs:50,1
    - Dst: OpendalFs::new
      Src: /src/opendal/integrations/dav-server/tests/test.rs:51,1
    - Dst: clone
      Src: /src/opendal/integrations/dav-server/tests/test.rs:51,1
    - Dst: Box::create_dir
      Src: /src/opendal/integrations/dav-server/tests/test.rs:53,1
    - Dst: DavPath::new
      Src: /src/opendal/integrations/dav-server/tests/test.rs:54,1
    - Dst: Self::unwrap
      Src: /src/opendal/integrations/dav-server/tests/test.rs:54,1
    - Dst: unwrap
      Src: /src/opendal/integrations/dav-server/tests/test.rs:53,1
    - Dst: Box::create_dir
      Src: /src/opendal/integrations/dav-server/tests/test.rs:57,1
    - Dst: DavPath::new
      Src: /src/opendal/integrations/dav-server/tests/test.rs:58,1
    - Dst: Self::unwrap
      Src: /src/opendal/integrations/dav-server/tests/test.rs:58,1
    - Dst: unwrap
      Src: /src/opendal/integrations/dav-server/tests/test.rs:57,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 29
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 64
      start: 48
    functionDepth: 35
    functionLinenumber: 48
    functionLinenumberEnd: 64
    functionName: test_create_dir_nested
    functionSourceFile: /src/opendal/integrations/dav-server/tests/test.rs
    functionUses: 0
    functionsReached:
    - Operator::new
    - OpendalFs::new
    - Self::unwrap
    - unwrap
    - clone
    - Box::create_dir
    - Result::unwrap
    - opendal::services::Memory::default
    - DavPath::new
    linkageType: ''
    returnType: void
    signature: async fn test_create_dir_nested()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: fs::remove_dir_all
      Src: /src/opendal/integrations/dav-server/tests/test.rs:67,1
    - Dst: Fs::default
      Src: /src/opendal/integrations/dav-server/tests/test.rs:68,1
    - Dst: Self::root
      Src: /src/opendal/integrations/dav-server/tests/test.rs:68,1
    - Dst: Operator::new
      Src: /src/opendal/integrations/dav-server/tests/test.rs:69,1
    - Dst: Result::unwrap
      Src: /src/opendal/integrations/dav-server/tests/test.rs:69,1
    - Dst: OpendalFs::new
      Src: /src/opendal/integrations/dav-server/tests/test.rs:70,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - path
    argTypes:
    - '&str'
    constantsTouched: []
    func_position:
      end: 71
      start: 66
    functionDepth: 32
    functionLinenumber: 66
    functionLinenumberEnd: 71
    functionName: setup_temp
    functionSourceFile: /src/opendal/integrations/dav-server/tests/test.rs
    functionUses: 4
    functionsReached:
    - fs::remove_dir_all
    - Operator::new
    - OpendalFs::new
    - Fs::default
    - Result::unwrap
    - Self::root
    linkageType: ''
    returnType: Box
    signature: 'fn setup_temp(path: &str) -> Box<OpendalFs>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: setup_temp
      Src: /src/opendal/integrations/dav-server/tests/test.rs:81,1
    - Dst: Box::create_dir
      Src: /src/opendal/integrations/dav-server/tests/test.rs:82,1
    - Dst: DavPath::new
      Src: /src/opendal/integrations/dav-server/tests/test.rs:83,1
    - Dst: Self::unwrap
      Src: /src/opendal/integrations/dav-server/tests/test.rs:83,1
    - Dst: unwrap
      Src: /src/opendal/integrations/dav-server/tests/test.rs:82,1
    - Dst: Box::metadata
      Src: /src/opendal/integrations/dav-server/tests/test.rs:89,1
    - Dst: DavPath::new
      Src: /src/opendal/integrations/dav-server/tests/test.rs:90,1
    - Dst: Self::unwrap
      Src: /src/opendal/integrations/dav-server/tests/test.rs:90,1
    - Dst: unwrap
      Src: /src/opendal/integrations/dav-server/tests/test.rs:89,1
    - Dst: fs::remove_dir_all
      Src: /src/opendal/integrations/dav-server/tests/test.rs:93,1
    - Dst: unwrap
      Src: /src/opendal/integrations/dav-server/tests/test.rs:93,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 29
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 94
      start: 79
    functionDepth: 33
    functionLinenumber: 79
    functionLinenumberEnd: 94
    functionName: test_create_dir_metadata
    functionSourceFile: /src/opendal/integrations/dav-server/tests/test.rs
    functionUses: 0
    functionsReached:
    - fs::remove_dir_all
    - setup_temp
    - Self::unwrap
    - unwrap
    - Box::create_dir
    - Box::metadata
    - DavPath::new
    linkageType: ''
    returnType: void
    signature: async fn test_create_dir_metadata()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: setup_temp
      Src: /src/opendal/integrations/dav-server/tests/test.rs:99,1
    - Dst: Box::create_dir
      Src: /src/opendal/integrations/dav-server/tests/test.rs:100,1
    - Dst: DavPath::new
      Src: /src/opendal/integrations/dav-server/tests/test.rs:101,1
    - Dst: Self::unwrap
      Src: /src/opendal/integrations/dav-server/tests/test.rs:101,1
    - Dst: unwrap
      Src: /src/opendal/integrations/dav-server/tests/test.rs:100,1
    - Dst: Box::remove_dir
      Src: /src/opendal/integrations/dav-server/tests/test.rs:104,1
    - Dst: DavPath::new
      Src: /src/opendal/integrations/dav-server/tests/test.rs:105,1
    - Dst: Self::unwrap
      Src: /src/opendal/integrations/dav-server/tests/test.rs:105,1
    - Dst: unwrap
      Src: /src/opendal/integrations/dav-server/tests/test.rs:104,1
    - Dst: fs::remove_dir_all
      Src: /src/opendal/integrations/dav-server/tests/test.rs:110,1
    - Dst: unwrap
      Src: /src/opendal/integrations/dav-server/tests/test.rs:110,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 29
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 111
      start: 97
    functionDepth: 33
    functionLinenumber: 97
    functionLinenumberEnd: 111
    functionName: test_remove_dir
    functionSourceFile: /src/opendal/integrations/dav-server/tests/test.rs
    functionUses: 0
    functionsReached:
    - fs::remove_dir_all
    - setup_temp
    - Box::remove_dir
    - Self::unwrap
    - unwrap
    - Box::create_dir
    - DavPath::new
    linkageType: ''
    returnType: void
    signature: async fn test_remove_dir()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: setup_temp
      Src: /src/opendal/integrations/dav-server/tests/test.rs:115,1
    - Dst: Box::open
      Src: /src/opendal/integrations/dav-server/tests/test.rs:117,1
    - Dst: DavPath::new
      Src: /src/opendal/integrations/dav-server/tests/test.rs:119,1
    - Dst: Self::unwrap
      Src: /src/opendal/integrations/dav-server/tests/test.rs:119,1
    - Dst: OpenOptions::default
      Src: /src/opendal/integrations/dav-server/tests/test.rs:123,1
    - Dst: unwrap
      Src: /src/opendal/integrations/dav-server/tests/test.rs:117,1
    - Dst: write_buf
      Src: /src/opendal/integrations/dav-server/tests/test.rs:128,1
    - Dst: Box::new
      Src: /src/opendal/integrations/dav-server/tests/test.rs:128,1
    - Dst: Bytes::from
      Src: /src/opendal/integrations/dav-server/tests/test.rs:128,1
    - Dst: unwrap
      Src: /src/opendal/integrations/dav-server/tests/test.rs:128,1
    - Dst: flush
      Src: /src/opendal/integrations/dav-server/tests/test.rs:129,1
    - Dst: unwrap
      Src: /src/opendal/integrations/dav-server/tests/test.rs:129,1
    - Dst: drop
      Src: /src/opendal/integrations/dav-server/tests/test.rs:130,1
    - Dst: Box::open
      Src: /src/opendal/integrations/dav-server/tests/test.rs:133,1
    - Dst: DavPath::new
      Src: /src/opendal/integrations/dav-server/tests/test.rs:135,1
    - Dst: Self::unwrap
      Src: /src/opendal/integrations/dav-server/tests/test.rs:135,1
    - Dst: OpenOptions::default
      Src: /src/opendal/integrations/dav-server/tests/test.rs:138,1
    - Dst: unwrap
      Src: /src/opendal/integrations/dav-server/tests/test.rs:133,1
    - Dst: drop
      Src: /src/opendal/integrations/dav-server/tests/test.rs:144,1
    - Dst: Box::rename
      Src: /src/opendal/integrations/dav-server/tests/test.rs:146,1
    - Dst: DavPath::new
      Src: /src/opendal/integrations/dav-server/tests/test.rs:148,1
    - Dst: Self::unwrap
      Src: /src/opendal/integrations/dav-server/tests/test.rs:148,1
    - Dst: DavPath::new
      Src: /src/opendal/integrations/dav-server/tests/test.rs:149,1
    - Dst: Self::unwrap
      Src: /src/opendal/integrations/dav-server/tests/test.rs:149,1
    - Dst: unwrap
      Src: /src/opendal/integrations/dav-server/tests/test.rs:146,1
    - Dst: Box::copy
      Src: /src/opendal/integrations/dav-server/tests/test.rs:156,1
    - Dst: DavPath::new
      Src: /src/opendal/integrations/dav-server/tests/test.rs:158,1
    - Dst: Self::unwrap
      Src: /src/opendal/integrations/dav-server/tests/test.rs:158,1
    - Dst: DavPath::new
      Src: /src/opendal/integrations/dav-server/tests/test.rs:159,1
    - Dst: Self::unwrap
      Src: /src/opendal/integrations/dav-server/tests/test.rs:159,1
    - Dst: unwrap
      Src: /src/opendal/integrations/dav-server/tests/test.rs:156,1
    - Dst: Box::remove_file
      Src: /src/opendal/integrations/dav-server/tests/test.rs:166,1
    - Dst: DavPath::new
      Src: /src/opendal/integrations/dav-server/tests/test.rs:167,1
    - Dst: Self::unwrap
      Src: /src/opendal/integrations/dav-server/tests/test.rs:167,1
    - Dst: unwrap
      Src: /src/opendal/integrations/dav-server/tests/test.rs:166,1
    - Dst: fs::remove_dir_all
      Src: /src/opendal/integrations/dav-server/tests/test.rs:173,1
    - Dst: unwrap
      Src: /src/opendal/integrations/dav-server/tests/test.rs:173,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 98
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 174
      start: 113
    functionDepth: 33
    functionLinenumber: 113
    functionLinenumberEnd: 174
    functionName: test_file
    functionSourceFile: /src/opendal/integrations/dav-server/tests/test.rs
    functionUses: 0
    functionsReached:
    - fs::remove_dir_all
    - setup_temp
    - Self::unwrap
    - OpenOptions::default
    - Box::new
    - unwrap
    - Box::open
    - write_buf
    - Bytes::from
    - flush
    - drop
    - Box::remove_file
    - Box::copy
    - DavPath::new
    - Box::rename
    linkageType: ''
    returnType: void
    signature: async fn test_file()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: setup_temp
      Src: /src/opendal/integrations/dav-server/tests/test.rs:179,1
    - Dst: Box::create_dir
      Src: /src/opendal/integrations/dav-server/tests/test.rs:180,1
    - Dst: DavPath::new
      Src: /src/opendal/integrations/dav-server/tests/test.rs:181,1
    - Dst: Self::unwrap
      Src: /src/opendal/integrations/dav-server/tests/test.rs:181,1
    - Dst: unwrap
      Src: /src/opendal/integrations/dav-server/tests/test.rs:180,1
    - Dst: Box::create_dir
      Src: /src/opendal/integrations/dav-server/tests/test.rs:184,1
    - Dst: DavPath::new
      Src: /src/opendal/integrations/dav-server/tests/test.rs:186,1
    - Dst: Self::unwrap
      Src: /src/opendal/integrations/dav-server/tests/test.rs:186,1
    - Dst: unwrap
      Src: /src/opendal/integrations/dav-server/tests/test.rs:184,1
    - Dst: Box::create_dir
      Src: /src/opendal/integrations/dav-server/tests/test.rs:190,1
    - Dst: DavPath::new
      Src: /src/opendal/integrations/dav-server/tests/test.rs:192,1
    - Dst: Self::unwrap
      Src: /src/opendal/integrations/dav-server/tests/test.rs:192,1
    - Dst: unwrap
      Src: /src/opendal/integrations/dav-server/tests/test.rs:190,1
    - Dst: Box::read_dir
      Src: /src/opendal/integrations/dav-server/tests/test.rs:196,1
    - Dst: DavPath::new
      Src: /src/opendal/integrations/dav-server/tests/test.rs:198,1
    - Dst: Self::unwrap
      Src: /src/opendal/integrations/dav-server/tests/test.rs:198,1
    - Dst: unwrap
      Src: /src/opendal/integrations/dav-server/tests/test.rs:196,1
    - Dst: collect::<Vec<_>>
      Src: /src/opendal/integrations/dav-server/tests/test.rs:203,1
    - Dst: iter
      Src: /src/opendal/integrations/dav-server/tests/test.rs:203,1
    - Dst: map
      Src: /src/opendal/integrations/dav-server/tests/test.rs:203,1
    - Dst: String::from_utf8
      Src: /src/opendal/integrations/dav-server/tests/test.rs:207,1
    - Dst: crate::Entry::as_ref
      Src: /src/opendal/integrations/dav-server/tests/test.rs:207,1
    - Dst: '&[&''static str]::unwrap'
      Src: /src/opendal/integrations/dav-server/tests/test.rs:207,1
    - Dst: T::name
      Src: /src/opendal/integrations/dav-server/tests/test.rs:207,1
    - Dst: unwrap
      Src: /src/opendal/integrations/dav-server/tests/test.rs:207,1
    - Dst: "collect::<Vec<_>>()\n        .await\n        .iter()\n        .map(|entry|\
        \ String::from_utf8(entry.as_ref().unwrap().name()).unwrap())\n        .collect::<Vec<_>>"
      Src: /src/opendal/integrations/dav-server/tests/test.rs:203,1
    - Dst: fs::remove_dir_all
      Src: /src/opendal/integrations/dav-server/tests/test.rs:214,1
    - Dst: unwrap
      Src: /src/opendal/integrations/dav-server/tests/test.rs:214,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 71
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 215
      start: 177
    functionDepth: 33
    functionLinenumber: 177
    functionLinenumberEnd: 215
    functionName: test_read_dir
    functionSourceFile: /src/opendal/integrations/dav-server/tests/test.rs
    functionUses: 0
    functionsReached:
    - fs::remove_dir_all
    - setup_temp
    - iter
    - String::from_utf8
    - Self::unwrap
    - unwrap
    - '&[&''static str]::unwrap'
    - Box::create_dir
    - collect::<Vec<_>>
    - map
    - T::name
    - "collect::<Vec<_>>()\n        .await\n        .iter()\n        .map(|entry|\
      \ String::from_utf8(entry.as_ref().unwrap().name()).unwrap())\n        .collect::<Vec<_>>"
    - crate::Entry::as_ref
    - Box::read_dir
    - DavPath::new
    linkageType: ''
    returnType: void
    signature: async fn test_read_dir()
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - metadata
    argTypes:
    - Metadata
    constantsTouched: []
    func_position:
      end: 33
      start: 31
    functionDepth: 0
    functionLinenumber: 31
    functionLinenumberEnd: 33
    functionName: OpendalMetaData::new
    functionSourceFile: /src/opendal/integrations/dav-server/src/metadata.rs
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(metadata: Metadata) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: content_length
      Src: /src/opendal/integrations/dav-server/src/metadata.rs:38,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 39
      start: 37
    functionDepth: 36
    functionLinenumber: 37
    functionLinenumberEnd: 39
    functionName: OpendalMetaData::len
    functionSourceFile: /src/opendal/integrations/dav-server/src/metadata.rs
    functionUses: 0
    functionsReached:
    - content_length
    linkageType: ''
    returnType: u64
    signature: fn len(&self) -> u64
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: last_modified
      Src: /src/opendal/integrations/dav-server/src/metadata.rs:42,1
    - Dst: Ok
      Src: /src/opendal/integrations/dav-server/src/metadata.rs:43,1
    - Dst: Result::into
      Src: /src/opendal/integrations/dav-server/src/metadata.rs:43,1
    - Dst: Err
      Src: /src/opendal/integrations/dav-server/src/metadata.rs:44,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 46
      start: 41
    functionDepth: 29
    functionLinenumber: 41
    functionLinenumberEnd: 46
    functionName: OpendalMetaData::modified
    functionSourceFile: /src/opendal/integrations/dav-server/src/metadata.rs
    functionUses: 0
    functionsReached:
    - Result::into
    - last_modified
    - Ok
    - Err
    linkageType: ''
    returnType: FsResult
    signature: fn modified(&self) -> FsResult<SystemTime>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: is_dir
      Src: /src/opendal/integrations/dav-server/src/metadata.rs:49,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 50
      start: 48
    functionDepth: 31
    functionLinenumber: 48
    functionLinenumberEnd: 50
    functionName: OpendalMetaData::is_dir
    functionSourceFile: /src/opendal/integrations/dav-server/src/metadata.rs
    functionUses: 0
    functionsReached:
    - is_dir
    linkageType: ''
    returnType: bool
    signature: fn is_dir(&self) -> bool
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: etag
      Src: /src/opendal/integrations/dav-server/src/metadata.rs:53,1
    - Dst: map
      Src: /src/opendal/integrations/dav-server/src/metadata.rs:53,1
    - Dst: to_string
      Src: /src/opendal/integrations/dav-server/src/metadata.rs:53,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 54
      start: 52
    functionDepth: 3
    functionLinenumber: 52
    functionLinenumberEnd: 54
    functionName: OpendalMetaData::etag
    functionSourceFile: /src/opendal/integrations/dav-server/src/metadata.rs
    functionUses: 0
    functionsReached:
    - map
    - etag
    - to_string
    linkageType: ''
    returnType: Option
    signature: fn etag(&self) -> Option<String>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: is_file
      Src: /src/opendal/integrations/dav-server/src/metadata.rs:57,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 58
      start: 56
    functionDepth: 2
    functionLinenumber: 56
    functionLinenumberEnd: 58
    functionName: OpendalMetaData::is_file
    functionSourceFile: /src/opendal/integrations/dav-server/src/metadata.rs
    functionUses: 0
    functionsReached:
    - is_file
    linkageType: ''
    returnType: bool
    signature: fn is_file(&self) -> bool
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: last_modified
      Src: /src/opendal/integrations/dav-server/src/metadata.rs:61,1
    - Dst: Ok
      Src: /src/opendal/integrations/dav-server/src/metadata.rs:62,1
    - Dst: Result::into
      Src: /src/opendal/integrations/dav-server/src/metadata.rs:62,1
    - Dst: Err
      Src: /src/opendal/integrations/dav-server/src/metadata.rs:63,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 65
      start: 60
    functionDepth: 29
    functionLinenumber: 60
    functionLinenumberEnd: 65
    functionName: OpendalMetaData::status_changed
    functionSourceFile: /src/opendal/integrations/dav-server/src/metadata.rs
    functionUses: 0
    functionsReached:
    - Result::into
    - last_modified
    - Ok
    - Err
    linkageType: ''
    returnType: FsResult
    signature: fn status_changed(&self) -> FsResult<SystemTime>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: OpenDALError::kind
      Src: /src/opendal/integrations/dav-server/src/utils.rs:19,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - opendal_error
    argTypes:
    - opendal_core::Error
    constantsTouched: []
    func_position:
      end: 26
      start: 18
    functionDepth: 1
    functionLinenumber: 18
    functionLinenumberEnd: 26
    functionName: convert_error
    functionSourceFile: /src/opendal/integrations/dav-server/src/utils.rs
    functionUses: 2
    functionsReached:
    - OpenDALError::kind
    linkageType: ''
    returnType: dav_server::fs::FsError
    signature: 'pub fn convert_error(opendal_error: opendal_core::Error) -> dav_server::fs::FsError'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::debug_struct
      Src: /src/opendal/integrations/dav-server/src/file.rs:42,1
    - Dst: field
      Src: /src/opendal/integrations/dav-server/src/file.rs:42,1
    - Dst: field
      Src: /src/opendal/integrations/dav-server/src/file.rs:42,1
    - Dst: finish
      Src: /src/opendal/integrations/dav-server/src/file.rs:42,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 15
    argCount: 1
    argNames:
    - f
    argTypes:
    - '&mut Formatter<''_>'
    constantsTouched: []
    func_position:
      end: 52
      start: 41
    functionDepth: 5
    functionLinenumber: 41
    functionLinenumberEnd: 52
    functionName: OpendalFile::fmt
    functionSourceFile: /src/opendal/integrations/dav-server/src/file.rs
    functionUses: 0
    functionsReached:
    - field
    - finish
    - Result::debug_struct
    linkageType: ''
    returnType: std::fmt::Result
    signature: 'fn fmt(&self, f: &mut Formatter<''_>) -> std::fmt::Result'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: reader
      Src: /src/opendal/integrations/dav-server/src/file.rs:64,1
    - Dst: map_err
      Src: /src/opendal/integrations/dav-server/src/file.rs:64,1
    - Dst: into_futures_async_read
      Src: /src/opendal/integrations/dav-server/src/file.rs:64,1
    - Dst: map_err
      Src: /src/opendal/integrations/dav-server/src/file.rs:64,1
    - Dst: State::Read
      Src: /src/opendal/integrations/dav-server/src/file.rs:71,1
    - Dst: writer_with
      Src: /src/opendal/integrations/dav-server/src/file.rs:73,1
    - Dst: append
      Src: /src/opendal/integrations/dav-server/src/file.rs:73,1
    - Dst: map_err
      Src: /src/opendal/integrations/dav-server/src/file.rs:73,1
    - Dst: into_futures_async_write
      Src: /src/opendal/integrations/dav-server/src/file.rs:73,1
    - Dst: State::Write
      Src: /src/opendal/integrations/dav-server/src/file.rs:79,1
    - Dst: Err
      Src: /src/opendal/integrations/dav-server/src/file.rs:81,1
    - Dst: Ok
      Src: /src/opendal/integrations/dav-server/src/file.rs:84,1
    - Dst: BytesMut::new
      Src: /src/opendal/integrations/dav-server/src/file.rs:88,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 38
    argCount: 3
    argNames:
    - op
    - path
    - options
    argTypes:
    - Operator
    - String
    - OpenOptions
    constantsTouched: []
    func_position:
      end: 90
      start: 62
    functionDepth: 31
    functionLinenumber: 62
    functionLinenumberEnd: 90
    functionName: OpendalFile::open
    functionSourceFile: /src/opendal/integrations/dav-server/src/file.rs
    functionUses: 1
    functionsReached:
    - map_err
    - State::Write
    - into_futures_async_write
    - reader
    - Ok
    - State::Read
    - Err
    - writer_with
    - BytesMut::new
    - append
    - into_futures_async_read
    linkageType: ''
    returnType: FsResult
    signature: 'pub async fn open(op: Operator, path: String, options: OpenOptions)
      -> FsResult<Self>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: stat
      Src: /src/opendal/integrations/dav-server/src/file.rs:96,1
    - Dst: map
      Src: /src/opendal/integrations/dav-server/src/file.rs:96,1
    - Dst: Box::new
      Src: /src/opendal/integrations/dav-server/src/file.rs:100,1
    - Dst: OpendalMetaData::new
      Src: /src/opendal/integrations/dav-server/src/file.rs:100,1
    - Dst: map_err
      Src: /src/opendal/integrations/dav-server/src/file.rs:96,1
    - Dst: boxed
      Src: /src/opendal/integrations/dav-server/src/file.rs:95,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 16
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 105
      start: 94
    functionDepth: 31
    functionLinenumber: 94
    functionLinenumberEnd: 105
    functionName: OpendalFile::metadata
    functionSourceFile: /src/opendal/integrations/dav-server/src/file.rs
    functionUses: 0
    functionsReached:
    - map_err
    - OpendalMetaData::new
    - Box::new
    - map
    - boxed
    - stat
    linkageType: ''
    returnType: FsFuture
    signature: fn metadata(&mut self) -> FsFuture<'_, Box<dyn DavMetaData>>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/integrations/dav-server/src/file.rs:110,1
    - Dst: Self::write_all
      Src: /src/opendal/integrations/dav-server/src/file.rs:113,1
    - Dst: io::Result::copy_to_bytes
      Src: /src/opendal/integrations/dav-server/src/file.rs:113,1
    - Dst: io::Result::remaining
      Src: /src/opendal/integrations/dav-server/src/file.rs:113,1
    - Dst: map_err
      Src: /src/opendal/integrations/dav-server/src/file.rs:113,1
    - Dst: Ok
      Src: /src/opendal/integrations/dav-server/src/file.rs:116,1
    - Dst: boxed
      Src: /src/opendal/integrations/dav-server/src/file.rs:108,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 22
    argCount: 1
    argNames:
    - buf
    argTypes:
    - Box<dyn Buf + Send>
    constantsTouched: []
    func_position:
      end: 119
      start: 107
    functionDepth: 0
    functionLinenumber: 107
    functionLinenumberEnd: 119
    functionName: OpendalFile::write_buf
    functionSourceFile: /src/opendal/integrations/dav-server/src/file.rs
    functionUses: 0
    functionsReached:
    - map_err
    - Self::write_all
    - io::Result::remaining
    - Ok
    - io::Result::copy_to_bytes
    - Err
    - boxed
    linkageType: ''
    returnType: FsFuture
    signature: 'fn write_buf(&mut self, mut buf: Box<dyn Buf + Send>) -> FsFuture<''_,
      ()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/integrations/dav-server/src/file.rs:124,1
    - Dst: Self::write_all
      Src: /src/opendal/integrations/dav-server/src/file.rs:127,1
    - Dst: map_err
      Src: /src/opendal/integrations/dav-server/src/file.rs:127,1
    - Dst: boxed
      Src: /src/opendal/integrations/dav-server/src/file.rs:122,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 1
    argNames:
    - buf
    argTypes:
    - Bytes
    constantsTouched: []
    func_position:
      end: 130
      start: 121
    functionDepth: 0
    functionLinenumber: 121
    functionLinenumberEnd: 130
    functionName: OpendalFile::write_bytes
    functionSourceFile: /src/opendal/integrations/dav-server/src/file.rs
    functionUses: 0
    functionsReached:
    - map_err
    - Self::write_all
    - boxed
    - Err
    linkageType: ''
    returnType: FsFuture
    signature: 'fn write_bytes(&mut self, buf: Bytes) -> FsFuture<''_, ()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/integrations/dav-server/src/file.rs:135,1
    - Dst: resize
      Src: /src/opendal/integrations/dav-server/src/file.rs:138,1
    - Dst: Result::read
      Src: /src/opendal/integrations/dav-server/src/file.rs:139,1
    - Dst: map_err
      Src: /src/opendal/integrations/dav-server/src/file.rs:139,1
    - Dst: Ok
      Src: /src/opendal/integrations/dav-server/src/file.rs:143,1
    - Dst: split_to
      Src: /src/opendal/integrations/dav-server/src/file.rs:143,1
    - Dst: freeze
      Src: /src/opendal/integrations/dav-server/src/file.rs:143,1
    - Dst: boxed
      Src: /src/opendal/integrations/dav-server/src/file.rs:133,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 26
    argCount: 1
    argNames:
    - count
    argTypes:
    - usize
    constantsTouched: []
    func_position:
      end: 146
      start: 132
    functionDepth: 31
    functionLinenumber: 132
    functionLinenumberEnd: 146
    functionName: OpendalFile::read_bytes
    functionSourceFile: /src/opendal/integrations/dav-server/src/file.rs
    functionUses: 0
    functionsReached:
    - map_err
    - Result::read
    - Ok
    - freeze
    - Err
    - split_to
    - boxed
    - resize
    linkageType: ''
    returnType: FsFuture
    signature: 'fn read_bytes(&mut self, count: usize) -> FsFuture<''_, Bytes>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/integrations/dav-server/src/file.rs:151,1
    - Dst: Result::seek
      Src: /src/opendal/integrations/dav-server/src/file.rs:154,1
    - Dst: map_err
      Src: /src/opendal/integrations/dav-server/src/file.rs:154,1
    - Dst: boxed
      Src: /src/opendal/integrations/dav-server/src/file.rs:149,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 1
    argNames:
    - pos
    argTypes:
    - SeekFrom
    constantsTouched: []
    func_position:
      end: 157
      start: 148
    functionDepth: 37
    functionLinenumber: 148
    functionLinenumberEnd: 157
    functionName: OpendalFile::seek
    functionSourceFile: /src/opendal/integrations/dav-server/src/file.rs
    functionUses: 0
    functionsReached:
    - map_err
    - Result::seek
    - boxed
    - Err
    linkageType: ''
    returnType: FsFuture
    signature: 'fn seek(&mut self, pos: SeekFrom) -> FsFuture<''_, u64>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Err
      Src: /src/opendal/integrations/dav-server/src/file.rs:162,1
    - Dst: Self::flush
      Src: /src/opendal/integrations/dav-server/src/file.rs:165,1
    - Dst: map_err
      Src: /src/opendal/integrations/dav-server/src/file.rs:165,1
    - Dst: Self::close
      Src: /src/opendal/integrations/dav-server/src/file.rs:166,1
    - Dst: map_err
      Src: /src/opendal/integrations/dav-server/src/file.rs:166,1
    - Dst: boxed
      Src: /src/opendal/integrations/dav-server/src/file.rs:160,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 21
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 169
      start: 159
    functionDepth: 37
    functionLinenumber: 159
    functionLinenumberEnd: 169
    functionName: OpendalFile::flush
    functionSourceFile: /src/opendal/integrations/dav-server/src/file.rs
    functionUses: 0
    functionsReached:
    - map_err
    - Self::flush
    - Err
    - boxed
    - Self::close
    linkageType: ''
    returnType: FsFuture
    signature: fn flush(&mut self) -> FsFuture<'_, ()>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: opendal_core::raw::normalize_path
      Src: /src/opendal/integrations/dav-server/src/dir.rs:42,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - op
    - lister
    - p
    argTypes:
    - Operator
    - Lister
    - '&str'
    constantsTouched: []
    func_position:
      end: 44
      start: 38
    functionDepth: 0
    functionLinenumber: 38
    functionLinenumberEnd: 44
    functionName: OpendalStream::new
    functionSourceFile: /src/opendal/integrations/dav-server/src/dir.rs
    functionUses: 1
    functionsReached:
    - opendal_core::raw::normalize_path
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(op: Operator, lister: Lister, p: &str) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: OpendalStream::get_mut
      Src: /src/opendal/integrations/dav-server/src/dir.rs:51,1
    - Dst: crate::Entry::map_err
      Src: /src/opendal/integrations/dav-server/src/dir.rs:55,1
    - Dst: crate::Entry::path
      Src: /src/opendal/integrations/dav-server/src/dir.rs:56,1
    - Dst: OpendalDirEntry::new
      Src: /src/opendal/integrations/dav-server/src/dir.rs:59,1
    - Dst: clone
      Src: /src/opendal/integrations/dav-server/src/dir.rs:59,1
    - Dst: std::task::Poll::Ready
      Src: /src/opendal/integrations/dav-server/src/dir.rs:60,1
    - Dst: Some
      Src: /src/opendal/integrations/dav-server/src/dir.rs:60,1
    - Dst: Ok
      Src: /src/opendal/integrations/dav-server/src/dir.rs:60,1
    - Dst: Box::new
      Src: /src/opendal/integrations/dav-server/src/dir.rs:60,1
    - Dst: std::task::Poll::Ready
      Src: /src/opendal/integrations/dav-server/src/dir.rs:62,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 30
    argCount: 2
    argNames:
    - cx
    argTypes:
    - Pin<&mut Self>
    - '&mut Context<''_>'
    constantsTouched: []
    func_position:
      end: 65
      start: 50
    functionDepth: 35
    functionLinenumber: 50
    functionLinenumberEnd: 65
    functionName: OpendalStream::poll_next
    functionSourceFile: /src/opendal/integrations/dav-server/src/dir.rs
    functionUses: 0
    functionsReached:
    - crate::Entry::path
    - Ok
    - OpendalDirEntry::new
    - Box::new
    - clone
    - OpendalStream::get_mut
    - Some
    - crate::Entry::map_err
    - std::task::Poll::Ready
    linkageType: ''
    returnType: Poll
    signature: 'fn poll_next(self: Pin<&mut Self>, cx: &mut Context<''_>) -> Poll<Option<Self::Item>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - op
    - dir_entry
    argTypes:
    - Operator
    - Entry
    constantsTouched: []
    func_position:
      end: 78
      start: 76
    functionDepth: 0
    functionLinenumber: 76
    functionLinenumberEnd: 78
    functionName: OpendalDirEntry::new
    functionSourceFile: /src/opendal/integrations/dav-server/src/dir.rs
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(op: Operator, dir_entry: Entry) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: name
      Src: /src/opendal/integrations/dav-server/src/dir.rs:83,1
    - Dst: as_bytes
      Src: /src/opendal/integrations/dav-server/src/dir.rs:83,1
    - Dst: to_vec
      Src: /src/opendal/integrations/dav-server/src/dir.rs:83,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 84
      start: 82
    functionDepth: 31
    functionLinenumber: 82
    functionLinenumberEnd: 84
    functionName: OpendalDirEntry::name
    functionSourceFile: /src/opendal/integrations/dav-server/src/dir.rs
    functionUses: 0
    functionsReached:
    - name
    - as_bytes
    - to_vec
    linkageType: ''
    returnType: Vec
    signature: fn name(&self) -> Vec<u8>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: stat
      Src: /src/opendal/integrations/dav-server/src/dir.rs:88,1
    - Dst: path
      Src: /src/opendal/integrations/dav-server/src/dir.rs:89,1
    - Dst: map
      Src: /src/opendal/integrations/dav-server/src/dir.rs:88,1
    - Dst: Box::new
      Src: /src/opendal/integrations/dav-server/src/dir.rs:91,1
    - Dst: OpendalMetaData::new
      Src: /src/opendal/integrations/dav-server/src/dir.rs:91,1
    - Dst: map_err
      Src: /src/opendal/integrations/dav-server/src/dir.rs:88,1
    - Dst: boxed
      Src: /src/opendal/integrations/dav-server/src/dir.rs:87,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 17
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 95
      start: 86
    functionDepth: 31
    functionLinenumber: 86
    functionLinenumberEnd: 95
    functionName: OpendalDirEntry::metadata
    functionSourceFile: /src/opendal/integrations/dav-server/src/dir.rs
    functionUses: 0
    functionsReached:
    - map_err
    - OpendalMetaData::new
    - Box::new
    - map
    - boxed
    - path
    - stat
    linkageType: ''
    returnType: dav_server::fs::FsFuture
    signature: fn metadata(&self) -> dav_server::fs::FsFuture<'_, Box<dyn DavMetaData>>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Box::new
      Src: /src/opendal/integrations/dav-server/src/fs.rs:67,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - op
    argTypes:
    - Operator
    constantsTouched: []
    func_position:
      end: 68
      start: 66
    functionDepth: 2
    functionLinenumber: 66
    functionLinenumberEnd: 68
    functionName: OpendalFs::new
    functionSourceFile: /src/opendal/integrations/dav-server/src/fs.rs
    functionUses: 3
    functionsReached:
    - Box::new
    linkageType: ''
    returnType: Box
    signature: 'pub fn new(op: Operator) -> Box<OpendalFs>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: String::from_utf8
      Src: /src/opendal/integrations/dav-server/src/fs.rs:71,1
    - Dst: as_bytes
      Src: /src/opendal/integrations/dav-server/src/fs.rs:71,1
    - Dst: to_vec
      Src: /src/opendal/integrations/dav-server/src/fs.rs:71,1
    - Dst: map_err
      Src: /src/opendal/integrations/dav-server/src/fs.rs:71,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - path
    argTypes:
    - '&DavPath'
    constantsTouched: []
    func_position:
      end: 72
      start: 70
    functionDepth: 4
    functionLinenumber: 70
    functionLinenumberEnd: 72
    functionName: OpendalFs::fs_path
    functionSourceFile: /src/opendal/integrations/dav-server/src/fs.rs
    functionUses: 5
    functionsReached:
    - map_err
    - String::from_utf8
    - as_bytes
    - to_vec
    linkageType: ''
    returnType: Result
    signature: 'fn fs_path(&self, path: &DavPath) -> Result<String, FsError>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: OpendalFs::fs_path
      Src: /src/opendal/integrations/dav-server/src/fs.rs:82,1
    - Dst: OpendalFile::open
      Src: /src/opendal/integrations/dav-server/src/fs.rs:83,1
    - Dst: clone
      Src: /src/opendal/integrations/dav-server/src/fs.rs:83,1
    - Dst: Ok
      Src: /src/opendal/integrations/dav-server/src/fs.rs:84,1
    - Dst: Box::new
      Src: /src/opendal/integrations/dav-server/src/fs.rs:84,1
    - Dst: boxed
      Src: /src/opendal/integrations/dav-server/src/fs.rs:81,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 2
    argNames:
    - path
    - options
    argTypes:
    - '&''a DavPath'
    - dav_server::fs::OpenOptions
    constantsTouched: []
    func_position:
      end: 87
      start: 76
    functionDepth: 32
    functionLinenumber: 76
    functionLinenumberEnd: 87
    functionName: OpendalFs::open
    functionSourceFile: /src/opendal/integrations/dav-server/src/fs.rs
    functionUses: 0
    functionsReached:
    - Ok
    - Box::new
    - clone
    - OpendalFile::open
    - boxed
    - OpendalFs::fs_path
    linkageType: ''
    returnType: FsFuture
    signature: 'fn open<''a>(&''a self,path: &''a DavPath,options: dav_server::fs::OpenOptions,)
      -> FsFuture<''a, Box<dyn DavFile>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: OpendalFs::fs_path
      Src: /src/opendal/integrations/dav-server/src/fs.rs:95,1
    - Dst: lister
      Src: /src/opendal/integrations/dav-server/src/fs.rs:96,1
    - Dst: as_str
      Src: /src/opendal/integrations/dav-server/src/fs.rs:97,1
    - Dst: map
      Src: /src/opendal/integrations/dav-server/src/fs.rs:96,1
    - Dst: OpendalStream::new
      Src: /src/opendal/integrations/dav-server/src/fs.rs:99,1
    - Dst: clone
      Src: /src/opendal/integrations/dav-server/src/fs.rs:99,1
    - Dst: as_str
      Src: /src/opendal/integrations/dav-server/src/fs.rs:99,1
    - Dst: Self::boxed
      Src: /src/opendal/integrations/dav-server/src/fs.rs:99,1
    - Dst: map_err
      Src: /src/opendal/integrations/dav-server/src/fs.rs:96,1
    - Dst: boxed
      Src: /src/opendal/integrations/dav-server/src/fs.rs:94,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 24
    argCount: 2
    argNames:
    - path
    - _meta
    argTypes:
    - '&''a DavPath'
    - ReadDirMeta
    constantsTouched: []
    func_position:
      end: 103
      start: 89
    functionDepth: 36
    functionLinenumber: 89
    functionLinenumberEnd: 103
    functionName: OpendalFs::read_dir
    functionSourceFile: /src/opendal/integrations/dav-server/src/fs.rs
    functionUses: 0
    functionsReached:
    - map_err
    - Self::boxed
    - clone
    - as_str
    - lister
    - map
    - boxed
    - OpendalFs::fs_path
    - OpendalStream::new
    linkageType: ''
    returnType: FsFuture
    signature: 'fn read_dir<''a>(&''a self,path: &''a DavPath,_meta: ReadDirMeta,)
      -> FsFuture<''a, FsStream<Box<dyn DavDirEntry>>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: OpendalFs::fs_path
      Src: /src/opendal/integrations/dav-server/src/fs.rs:107,1
    - Dst: stat
      Src: /src/opendal/integrations/dav-server/src/fs.rs:108,1
    - Dst: as_str
      Src: /src/opendal/integrations/dav-server/src/fs.rs:108,1
    - Dst: OpendalMetaData::new
      Src: /src/opendal/integrations/dav-server/src/fs.rs:111,1
    - Dst: Ok
      Src: /src/opendal/integrations/dav-server/src/fs.rs:112,1
    - Dst: Box::new
      Src: /src/opendal/integrations/dav-server/src/fs.rs:112,1
    - Dst: Err
      Src: /src/opendal/integrations/dav-server/src/fs.rs:114,1
    - Dst: super::utils::convert_error
      Src: /src/opendal/integrations/dav-server/src/fs.rs:114,1
    - Dst: boxed
      Src: /src/opendal/integrations/dav-server/src/fs.rs:106,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 19
    argCount: 1
    argNames:
    - path
    argTypes:
    - '&''a DavPath'
    constantsTouched: []
    func_position:
      end: 118
      start: 105
    functionDepth: 31
    functionLinenumber: 105
    functionLinenumberEnd: 118
    functionName: OpendalFs::metadata
    functionSourceFile: /src/opendal/integrations/dav-server/src/fs.rs
    functionUses: 0
    functionsReached:
    - Ok
    - OpendalMetaData::new
    - Box::new
    - super::utils::convert_error
    - Err
    - as_str
    - boxed
    - OpendalFs::fs_path
    - stat
    linkageType: ''
    returnType: FsFuture
    signature: 'fn metadata<''a>(&''a self, path: &''a DavPath) -> FsFuture<''a, Box<dyn
      DavMetaData>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: OpendalFs::fs_path
      Src: /src/opendal/integrations/dav-server/src/fs.rs:122,1
    - Dst: Path::new
      Src: /src/opendal/integrations/dav-server/src/fs.rs:127,1
    - Dst: Self::parent
      Src: /src/opendal/integrations/dav-server/src/fs.rs:127,1
    - Dst: '&str::unwrap'
      Src: /src/opendal/integrations/dav-server/src/fs.rs:127,1
    - Dst: exists
      Src: /src/opendal/integrations/dav-server/src/fs.rs:128,1
    - Dst: as_str
      Src: /src/opendal/integrations/dav-server/src/fs.rs:130,1
    - Dst: Path::new
      Src: /src/opendal/integrations/dav-server/src/fs.rs:134,1
    - Dst: Err
      Src: /src/opendal/integrations/dav-server/src/fs.rs:135,1
    - Dst: Err
      Src: /src/opendal/integrations/dav-server/src/fs.rs:139,1
    - Dst: super::utils::convert_error
      Src: /src/opendal/integrations/dav-server/src/fs.rs:139,1
    - Dst: as_str
      Src: /src/opendal/integrations/dav-server/src/fs.rs:143,1
    - Dst: exists
      Src: /src/opendal/integrations/dav-server/src/fs.rs:145,1
    - Dst: Err
      Src: /src/opendal/integrations/dav-server/src/fs.rs:148,1
    - Dst: create_dir
      Src: /src/opendal/integrations/dav-server/src/fs.rs:150,1
    - Dst: Ok
      Src: /src/opendal/integrations/dav-server/src/fs.rs:152,1
    - Dst: Err
      Src: /src/opendal/integrations/dav-server/src/fs.rs:153,1
    - Dst: super::utils::convert_error
      Src: /src/opendal/integrations/dav-server/src/fs.rs:153,1
    - Dst: Err
      Src: /src/opendal/integrations/dav-server/src/fs.rs:157,1
    - Dst: super::utils::convert_error
      Src: /src/opendal/integrations/dav-server/src/fs.rs:157,1
    - Dst: boxed
      Src: /src/opendal/integrations/dav-server/src/fs.rs:121,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 54
    argCount: 1
    argNames:
    - path
    argTypes:
    - '&''a DavPath'
    constantsTouched: []
    func_position:
      end: 161
      start: 120
    functionDepth: 35
    functionLinenumber: 120
    functionLinenumberEnd: 161
    functionName: OpendalFs::create_dir
    functionSourceFile: /src/opendal/integrations/dav-server/src/fs.rs
    functionUses: 0
    functionsReached:
    - Ok
    - super::utils::convert_error
    - Err
    - as_str
    - Path::new
    - create_dir
    - boxed
    - OpendalFs::fs_path
    - exists
    - Self::parent
    - '&str::unwrap'
    linkageType: ''
    returnType: FsFuture
    signature: 'fn create_dir<''a>(&''a self, path: &''a DavPath) -> FsFuture<''a,
      ()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: OpendalFs::remove_file
      Src: /src/opendal/integrations/dav-server/src/fs.rs:164,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - path
    argTypes:
    - '&''a DavPath'
    constantsTouched: []
    func_position:
      end: 165
      start: 163
    functionDepth: 33
    functionLinenumber: 163
    functionLinenumberEnd: 165
    functionName: OpendalFs::remove_dir
    functionSourceFile: /src/opendal/integrations/dav-server/src/fs.rs
    functionUses: 0
    functionsReached:
    - OpendalFs::remove_file
    linkageType: ''
    returnType: FsFuture
    signature: 'fn remove_dir<''a>(&''a self, path: &''a DavPath) -> FsFuture<''a,
      ()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: OpendalFs::fs_path
      Src: /src/opendal/integrations/dav-server/src/fs.rs:169,1
    - Dst: delete
      Src: /src/opendal/integrations/dav-server/src/fs.rs:170,1
    - Dst: map_err
      Src: /src/opendal/integrations/dav-server/src/fs.rs:170,1
    - Dst: boxed
      Src: /src/opendal/integrations/dav-server/src/fs.rs:168,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 1
    argNames:
    - path
    argTypes:
    - '&''a DavPath'
    constantsTouched: []
    func_position:
      end: 173
      start: 167
    functionDepth: 32
    functionLinenumber: 167
    functionLinenumberEnd: 173
    functionName: OpendalFs::remove_file
    functionSourceFile: /src/opendal/integrations/dav-server/src/fs.rs
    functionUses: 2
    functionsReached:
    - map_err
    - boxed
    - delete
    - OpendalFs::fs_path
    linkageType: ''
    returnType: FsFuture
    signature: 'fn remove_file<''a>(&''a self, path: &''a DavPath) -> FsFuture<''a,
      ()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::as_rel_ospath
      Src: /src/opendal/integrations/dav-server/src/fs.rs:177,1
    - Dst: to_str
      Src: /src/opendal/integrations/dav-server/src/fs.rs:177,1
    - Dst: ok_or
      Src: /src/opendal/integrations/dav-server/src/fs.rs:177,1
    - Dst: Result::as_rel_ospath
      Src: /src/opendal/integrations/dav-server/src/fs.rs:181,1
    - Dst: to_str
      Src: /src/opendal/integrations/dav-server/src/fs.rs:181,1
    - Dst: ok_or
      Src: /src/opendal/integrations/dav-server/src/fs.rs:181,1
    - Dst: Result::is_collection
      Src: /src/opendal/integrations/dav-server/src/fs.rs:182,1
    - Dst: OpendalFs::remove_file
      Src: /src/opendal/integrations/dav-server/src/fs.rs:183,1
    - Dst: rename
      Src: /src/opendal/integrations/dav-server/src/fs.rs:185,1
    - Dst: map_err
      Src: /src/opendal/integrations/dav-server/src/fs.rs:185,1
    - Dst: boxed
      Src: /src/opendal/integrations/dav-server/src/fs.rs:176,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 29
    argCount: 2
    argNames:
    - from
    - to
    argTypes:
    - '&''a DavPath'
    - '&''a DavPath'
    constantsTouched: []
    func_position:
      end: 191
      start: 175
    functionDepth: 38
    functionLinenumber: 175
    functionLinenumberEnd: 191
    functionName: OpendalFs::rename
    functionSourceFile: /src/opendal/integrations/dav-server/src/fs.rs
    functionUses: 0
    functionsReached:
    - map_err
    - to_str
    - Result::as_rel_ospath
    - OpendalFs::remove_file
    - rename
    - Result::is_collection
    - boxed
    - ok_or
    linkageType: ''
    returnType: FsFuture
    signature: 'fn rename<''a>(&''a self, from: &''a DavPath, to: &''a DavPath) ->
      FsFuture<''a, ()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Result::as_rel_ospath
      Src: /src/opendal/integrations/dav-server/src/fs.rs:195,1
    - Dst: to_str
      Src: /src/opendal/integrations/dav-server/src/fs.rs:195,1
    - Dst: ok_or
      Src: /src/opendal/integrations/dav-server/src/fs.rs:195,1
    - Dst: Result::as_rel_ospath
      Src: /src/opendal/integrations/dav-server/src/fs.rs:199,1
    - Dst: to_str
      Src: /src/opendal/integrations/dav-server/src/fs.rs:199,1
    - Dst: ok_or
      Src: /src/opendal/integrations/dav-server/src/fs.rs:199,1
    - Dst: copy
      Src: /src/opendal/integrations/dav-server/src/fs.rs:200,1
    - Dst: map
      Src: /src/opendal/integrations/dav-server/src/fs.rs:200,1
    - Dst: map_err
      Src: /src/opendal/integrations/dav-server/src/fs.rs:200,1
    - Dst: boxed
      Src: /src/opendal/integrations/dav-server/src/fs.rs:194,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 26
    argCount: 2
    argNames:
    - from
    - to
    argTypes:
    - '&''a DavPath'
    - '&''a DavPath'
    constantsTouched: []
    func_position:
      end: 207
      start: 193
    functionDepth: 38
    functionLinenumber: 193
    functionLinenumberEnd: 207
    functionName: OpendalFs::copy
    functionSourceFile: /src/opendal/integrations/dav-server/src/fs.rs
    functionUses: 0
    functionsReached:
    - map_err
    - to_str
    - Result::as_rel_ospath
    - map
    - boxed
    - copy
    - ok_or
    linkageType: ''
    returnType: FsFuture
    signature: 'fn copy<''a>(&''a self, from: &''a DavPath, to: &''a DavPath) -> FsFuture<''a,
      ()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - op
    argTypes:
    - Operator
    constantsTouched: []
    func_position:
      end: 79
      start: 77
    functionDepth: 0
    functionLinenumber: 77
    functionLinenumberEnd: 79
    functionName: OpendalStorage::new
    functionSourceFile: /src/opendal/integrations/unftp-sbe/src/lib.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(op: Operator) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: content_length
      Src: /src/opendal/integrations/unftp-sbe/src/lib.rs:88,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 89
      start: 87
    functionDepth: 36
    functionLinenumber: 87
    functionLinenumberEnd: 89
    functionName: OpendalMetadata::len
    functionSourceFile: /src/opendal/integrations/unftp-sbe/src/lib.rs
    functionUses: 0
    functionsReached:
    - content_length
    linkageType: ''
    returnType: u64
    signature: fn len(&self) -> u64
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: is_dir
      Src: /src/opendal/integrations/unftp-sbe/src/lib.rs:92,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 93
      start: 91
    functionDepth: 31
    functionLinenumber: 91
    functionLinenumberEnd: 93
    functionName: OpendalMetadata::is_dir
    functionSourceFile: /src/opendal/integrations/unftp-sbe/src/lib.rs
    functionUses: 0
    functionsReached:
    - is_dir
    linkageType: ''
    returnType: bool
    signature: fn is_dir(&self) -> bool
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: is_file
      Src: /src/opendal/integrations/unftp-sbe/src/lib.rs:96,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 97
      start: 95
    functionDepth: 2
    functionLinenumber: 95
    functionLinenumberEnd: 97
    functionName: OpendalMetadata::is_file
    functionSourceFile: /src/opendal/integrations/unftp-sbe/src/lib.rs
    functionUses: 0
    functionsReached:
    - is_file
    linkageType: ''
    returnType: bool
    signature: fn is_file(&self) -> bool
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 101
      start: 99
    functionDepth: 0
    functionLinenumber: 99
    functionLinenumberEnd: 101
    functionName: OpendalMetadata::is_symlink
    functionSourceFile: /src/opendal/integrations/unftp-sbe/src/lib.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: bool
    signature: fn is_symlink(&self) -> bool
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: last_modified
      Src: /src/opendal/integrations/unftp-sbe/src/lib.rs:104,1
    - Dst: Ok
      Src: /src/opendal/integrations/unftp-sbe/src/lib.rs:105,1
    - Dst: into
      Src: /src/opendal/integrations/unftp-sbe/src/lib.rs:105,1
    - Dst: Err
      Src: /src/opendal/integrations/unftp-sbe/src/lib.rs:106,1
    - Dst: Error::new
      Src: /src/opendal/integrations/unftp-sbe/src/lib.rs:106,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 111
      start: 103
    functionDepth: 29
    functionLinenumber: 103
    functionLinenumberEnd: 111
    functionName: OpendalMetadata::modified
    functionSourceFile: /src/opendal/integrations/unftp-sbe/src/lib.rs
    functionUses: 0
    functionsReached:
    - Ok
    - into
    - last_modified
    - Error::new
    - Err
    linkageType: ''
    returnType: storage::Result
    signature: fn modified(&self) -> storage::Result<std::time::SystemTime>
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 115
      start: 113
    functionDepth: 0
    functionLinenumber: 113
    functionLinenumberEnd: 115
    functionName: OpendalMetadata::gid
    functionSourceFile: /src/opendal/integrations/unftp-sbe/src/lib.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: u32
    signature: fn gid(&self) -> u32
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 0
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 119
      start: 117
    functionDepth: 0
    functionLinenumber: 117
    functionLinenumberEnd: 119
    functionName: OpendalMetadata::uid
    functionSourceFile: /src/opendal/integrations/unftp-sbe/src/lib.rs
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: u32
    signature: fn uid(&self) -> u32
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Error::kind
      Src: /src/opendal/integrations/unftp-sbe/src/lib.rs:123,1
    - Dst: Error::new
      Src: /src/opendal/integrations/unftp-sbe/src/lib.rs:129,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - err
    argTypes:
    - opendal::Error
    constantsTouched: []
    func_position:
      end: 130
      start: 122
    functionDepth: 36
    functionLinenumber: 122
    functionLinenumberEnd: 130
    functionName: convert_err
    functionSourceFile: /src/opendal/integrations/unftp-sbe/src/lib.rs
    functionUses: 1
    functionsReached:
    - Error::kind
    - Error::new
    linkageType: ''
    returnType: Error
    signature: 'fn convert_err(err: opendal::Error) -> Error'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: to_str
      Src: /src/opendal/integrations/unftp-sbe/src/lib.rs:133,1
    - Dst: Result::ok_or_else
      Src: /src/opendal/integrations/unftp-sbe/src/lib.rs:133,1
    - Dst: Error::new
      Src: /src/opendal/integrations/unftp-sbe/src/lib.rs:134,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - path
    argTypes:
    - '&Path'
    constantsTouched: []
    func_position:
      end: 139
      start: 132
    functionDepth: 38
    functionLinenumber: 132
    functionLinenumberEnd: 139
    functionName: convert_path
    functionSourceFile: /src/opendal/integrations/unftp-sbe/src/lib.rs
    functionUses: 9
    functionsReached:
    - Result::ok_or_else
    - to_str
    - Error::new
    linkageType: ''
    returnType: storage::Result
    signature: 'fn convert_path(path: &Path) -> storage::Result<&str>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: DeleteInput::read
      Src: /src/opendal/integrations/unftp-sbe/src/lib.rs:150,1
    - Dst: Ok
      Src: /src/opendal/integrations/unftp-sbe/src/lib.rs:152,1
    - Dst: Result::write_all
      Src: /src/opendal/integrations/unftp-sbe/src/lib.rs:155,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 25
    argCount: 2
    argNames:
    - input
    - output
    argTypes:
    - '&mut R'
    - '&mut W'
    constantsTouched: []
    func_position:
      end: 158
      start: 141
    functionDepth: 31
    functionLinenumber: 141
    functionLinenumberEnd: 158
    functionName: copy_read_write_loop
    functionSourceFile: /src/opendal/integrations/unftp-sbe/src/lib.rs
    functionUses: 1
    functionsReached:
    - Result::write_all
    - Ok
    - DeleteInput::read
    linkageType: ''
    returnType: std::io::Result
    signature: 'async fn copy_read_write_loop<R, W>(input: &mut R, output: &mut W)
      -> std::io::Result<u64>whereR: tokio::io::AsyncRead + Unpin + ?Sized,W: tokio::io::AsyncWrite
      + Unpin + ?Sized,'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: stat
      Src: /src/opendal/integrations/unftp-sbe/src/lib.rs:169,1
    - Dst: convert_path
      Src: /src/opendal/integrations/unftp-sbe/src/lib.rs:171,1
    - Dst: as_ref
      Src: /src/opendal/integrations/unftp-sbe/src/lib.rs:171,1
    - Dst: map_err
      Src: /src/opendal/integrations/unftp-sbe/src/lib.rs:169,1
    - Dst: Ok
      Src: /src/opendal/integrations/unftp-sbe/src/lib.rs:174,1
    - Dst: OpendalMetadata
      Src: /src/opendal/integrations/unftp-sbe/src/lib.rs:174,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 2
    argNames:
    - path
    argTypes:
    - '&User'
    - P
    constantsTouched: []
    func_position:
      end: 175
      start: 164
    functionDepth: 31
    functionLinenumber: 164
    functionLinenumberEnd: 175
    functionName: OpendalStorage::metadata
    functionSourceFile: /src/opendal/integrations/unftp-sbe/src/lib.rs
    functionUses: 0
    functionsReached:
    - map_err
    - Ok
    - convert_path
    - as_ref
    - stat
    - OpendalMetadata
    linkageType: ''
    returnType: storage::Result
    signature: 'async fn metadata<P: AsRef<Path> + Send + Debug>(&self,_: &User,path:
      P,) -> storage::Result<Self::Metadata>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: list
      Src: /src/opendal/integrations/unftp-sbe/src/lib.rs:185,1
    - Dst: convert_path
      Src: /src/opendal/integrations/unftp-sbe/src/lib.rs:187,1
    - Dst: as_ref
      Src: /src/opendal/integrations/unftp-sbe/src/lib.rs:187,1
    - Dst: map_err
      Src: /src/opendal/integrations/unftp-sbe/src/lib.rs:185,1
    - Dst: into_iter
      Src: /src/opendal/integrations/unftp-sbe/src/lib.rs:185,1
    - Dst: map
      Src: /src/opendal/integrations/unftp-sbe/src/lib.rs:185,1
    - Dst: anyhow::Result::into_parts
      Src: /src/opendal/integrations/unftp-sbe/src/lib.rs:192,1
    - Dst: into
      Src: /src/opendal/integrations/unftp-sbe/src/lib.rs:194,1
    - Dst: OpendalMetadata
      Src: /src/opendal/integrations/unftp-sbe/src/lib.rs:195,1
    - Dst: collect
      Src: /src/opendal/integrations/unftp-sbe/src/lib.rs:185,1
    - Dst: Ok
      Src: /src/opendal/integrations/unftp-sbe/src/lib.rs:199,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 25
    argCount: 2
    argNames:
    - path
    argTypes:
    - '&User'
    - P
    constantsTouched: []
    func_position:
      end: 200
      start: 177
    functionDepth: 39
    functionLinenumber: 177
    functionLinenumberEnd: 200
    functionName: OpendalStorage::list
    functionSourceFile: /src/opendal/integrations/unftp-sbe/src/lib.rs
    functionUses: 0
    functionsReached:
    - map_err
    - collect
    - convert_path
    - Ok
    - into
    - into_iter
    - list
    - map
    - as_ref
    - anyhow::Result::into_parts
    - OpendalMetadata
    linkageType: ''
    returnType: storage::Result
    signature: 'async fn list<P: AsRef<Path> + Send + Debug>(&self,_: &User,path:
      P,) -> storage::Result<Vec<storage::Fileinfo<PathBuf, Self::Metadata>>>whereSelf::Metadata:
      storage::Metadata,'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: reader
      Src: /src/opendal/integrations/unftp-sbe/src/lib.rs:208,1
    - Dst: convert_path
      Src: /src/opendal/integrations/unftp-sbe/src/lib.rs:210,1
    - Dst: as_ref
      Src: /src/opendal/integrations/unftp-sbe/src/lib.rs:210,1
    - Dst: map_err
      Src: /src/opendal/integrations/unftp-sbe/src/lib.rs:208,1
    - Dst: into_futures_async_read
      Src: /src/opendal/integrations/unftp-sbe/src/lib.rs:208,1
    - Dst: map_err
      Src: /src/opendal/integrations/unftp-sbe/src/lib.rs:208,1
    - Dst: compat
      Src: /src/opendal/integrations/unftp-sbe/src/lib.rs:208,1
    - Dst: Ok
      Src: /src/opendal/integrations/unftp-sbe/src/lib.rs:217,1
    - Dst: Box::new
      Src: /src/opendal/integrations/unftp-sbe/src/lib.rs:217,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 22
    argCount: 3
    argNames:
    - path
    - start_pos
    argTypes:
    - '&User'
    - P
    - u64
    constantsTouched: []
    func_position:
      end: 218
      start: 202
    functionDepth: 31
    functionLinenumber: 202
    functionLinenumberEnd: 218
    functionName: OpendalStorage::get
    functionSourceFile: /src/opendal/integrations/unftp-sbe/src/lib.rs
    functionUses: 0
    functionsReached:
    - map_err
    - reader
    - convert_path
    - Ok
    - Box::new
    - compat
    - as_ref
    - into_futures_async_read
    linkageType: ''
    returnType: storage::Result
    signature: 'async fn get<P: AsRef<Path> + Send + Debug>(&self,_: &User,path: P,start_pos:
      u64,) -> storage::Result<Box<dyn tokio::io::AsyncRead + Send + Sync + Unpin>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: writer
      Src: /src/opendal/integrations/unftp-sbe/src/lib.rs:230,1
    - Dst: convert_path
      Src: /src/opendal/integrations/unftp-sbe/src/lib.rs:232,1
    - Dst: as_ref
      Src: /src/opendal/integrations/unftp-sbe/src/lib.rs:232,1
    - Dst: map_err
      Src: /src/opendal/integrations/unftp-sbe/src/lib.rs:230,1
    - Dst: into_futures_async_write
      Src: /src/opendal/integrations/unftp-sbe/src/lib.rs:230,1
    - Dst: compat_write
      Src: /src/opendal/integrations/unftp-sbe/src/lib.rs:230,1
    - Dst: copy_read_write_loop
      Src: /src/opendal/integrations/unftp-sbe/src/lib.rs:238,1
    - Dst: Self::shutdown
      Src: /src/opendal/integrations/unftp-sbe/src/lib.rs:239,1
    - Dst: Ok
      Src: /src/opendal/integrations/unftp-sbe/src/lib.rs:241,1
    - Dst: Err
      Src: /src/opendal/integrations/unftp-sbe/src/lib.rs:242,1
    - Dst: Error::new
      Src: /src/opendal/integrations/unftp-sbe/src/lib.rs:242,1
    - Dst: Err
      Src: /src/opendal/integrations/unftp-sbe/src/lib.rs:246,1
    - Dst: Error::new
      Src: /src/opendal/integrations/unftp-sbe/src/lib.rs:246,1
    - Dst: Err
      Src: /src/opendal/integrations/unftp-sbe/src/lib.rs:250,1
    - Dst: Error::new
      Src: /src/opendal/integrations/unftp-sbe/src/lib.rs:250,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 32
    argCount: 4
    argNames:
    - input
    - path
    argTypes:
    - '&User'
    - R
    - P
    - u64
    constantsTouched: []
    func_position:
      end: 258
      start: 220
    functionDepth: 36
    functionLinenumber: 220
    functionLinenumberEnd: 258
    functionName: OpendalStorage::put
    functionSourceFile: /src/opendal/integrations/unftp-sbe/src/lib.rs
    functionUses: 0
    functionsReached:
    - map_err
    - into_futures_async_write
    - convert_path
    - Ok
    - Err
    - Error::new
    - as_ref
    - compat_write
    - writer
    - copy_read_write_loop
    - Self::shutdown
    linkageType: ''
    returnType: storage::Result
    signature: 'async fn put<P: AsRef<Path> + Send + Debug,R: tokio::io::AsyncRead
      + Send + Sync + Unpin + ''static,>(&self,_: &User,mut input: R,path: P,_: u64,)
      -> storage::Result<u64>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: delete
      Src: /src/opendal/integrations/unftp-sbe/src/lib.rs:261,1
    - Dst: convert_path
      Src: /src/opendal/integrations/unftp-sbe/src/lib.rs:262,1
    - Dst: as_ref
      Src: /src/opendal/integrations/unftp-sbe/src/lib.rs:262,1
    - Dst: map_err
      Src: /src/opendal/integrations/unftp-sbe/src/lib.rs:261,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - path
    argTypes:
    - '&User'
    - P
    constantsTouched: []
    func_position:
      end: 265
      start: 260
    functionDepth: 32
    functionLinenumber: 260
    functionLinenumberEnd: 265
    functionName: OpendalStorage::del
    functionSourceFile: /src/opendal/integrations/unftp-sbe/src/lib.rs
    functionUses: 0
    functionsReached:
    - map_err
    - as_ref
    - convert_path
    - delete
    linkageType: ''
    returnType: storage::Result
    signature: 'async fn del<P: AsRef<Path> + Send + Debug>(&self, _: &User, path:
      P) -> storage::Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: convert_path
      Src: /src/opendal/integrations/unftp-sbe/src/lib.rs:268,1
    - Dst: as_ref
      Src: /src/opendal/integrations/unftp-sbe/src/lib.rs:268,1
    - Dst: to_string
      Src: /src/opendal/integrations/unftp-sbe/src/lib.rs:268,1
    - Dst: ends_with
      Src: /src/opendal/integrations/unftp-sbe/src/lib.rs:269,1
    - Dst: push
      Src: /src/opendal/integrations/unftp-sbe/src/lib.rs:270,1
    - Dst: create_dir
      Src: /src/opendal/integrations/unftp-sbe/src/lib.rs:272,1
    - Dst: map_err
      Src: /src/opendal/integrations/unftp-sbe/src/lib.rs:272,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 21
    argCount: 2
    argNames:
    - path
    argTypes:
    - '&User'
    - P
    constantsTouched: []
    func_position:
      end: 273
      start: 267
    functionDepth: 39
    functionLinenumber: 267
    functionLinenumberEnd: 273
    functionName: OpendalStorage::mkd
    functionSourceFile: /src/opendal/integrations/unftp-sbe/src/lib.rs
    functionUses: 0
    functionsReached:
    - map_err
    - to_string
    - convert_path
    - push
    - ends_with
    - as_ref
    - create_dir
    linkageType: ''
    returnType: storage::Result
    signature: 'async fn mkd<P: AsRef<Path> + Send + Debug>(&self, _: &User, path:
      P) -> storage::Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: convert_path
      Src: /src/opendal/integrations/unftp-sbe/src/lib.rs:281,1
    - Dst: Result::as_ref
      Src: /src/opendal/integrations/unftp-sbe/src/lib.rs:281,1
    - Dst: convert_path
      Src: /src/opendal/integrations/unftp-sbe/src/lib.rs:281,1
    - Dst: Result::as_ref
      Src: /src/opendal/integrations/unftp-sbe/src/lib.rs:281,1
    - Dst: rename
      Src: /src/opendal/integrations/unftp-sbe/src/lib.rs:282,1
    - Dst: map_err
      Src: /src/opendal/integrations/unftp-sbe/src/lib.rs:282,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 3
    argNames:
    - from
    - to
    argTypes:
    - '&User'
    - P
    - P
    constantsTouched: []
    func_position:
      end: 283
      start: 275
    functionDepth: 39
    functionLinenumber: 275
    functionLinenumberEnd: 283
    functionName: OpendalStorage::rename
    functionSourceFile: /src/opendal/integrations/unftp-sbe/src/lib.rs
    functionUses: 0
    functionsReached:
    - rename
    - map_err
    - Result::as_ref
    - convert_path
    linkageType: ''
    returnType: storage::Result
    signature: 'async fn rename<P: AsRef<Path> + Send + Debug>(&self,_: &User,from:
      P,to: P,) -> storage::Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: delete_with
      Src: /src/opendal/integrations/unftp-sbe/src/lib.rs:286,1
    - Dst: convert_path
      Src: /src/opendal/integrations/unftp-sbe/src/lib.rs:287,1
    - Dst: as_ref
      Src: /src/opendal/integrations/unftp-sbe/src/lib.rs:287,1
    - Dst: recursive
      Src: /src/opendal/integrations/unftp-sbe/src/lib.rs:286,1
    - Dst: map_err
      Src: /src/opendal/integrations/unftp-sbe/src/lib.rs:286,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 2
    argNames:
    - path
    argTypes:
    - '&User'
    - P
    constantsTouched: []
    func_position:
      end: 291
      start: 285
    functionDepth: 35
    functionLinenumber: 285
    functionLinenumberEnd: 291
    functionName: OpendalStorage::rmd
    functionSourceFile: /src/opendal/integrations/unftp-sbe/src/lib.rs
    functionUses: 0
    functionsReached:
    - map_err
    - convert_path
    - recursive
    - delete_with
    - as_ref
    linkageType: ''
    returnType: storage::Result
    signature: 'async fn rmd<P: AsRef<Path> + Send + Debug>(&self, _: &User, path:
      P) -> storage::Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: stat
      Src: /src/opendal/integrations/unftp-sbe/src/lib.rs:296,1
    - Dst: convert_path
      Src: /src/opendal/integrations/unftp-sbe/src/lib.rs:296,1
    - Dst: as_ref
      Src: /src/opendal/integrations/unftp-sbe/src/lib.rs:296,1
    - Dst: Ok
      Src: /src/opendal/integrations/unftp-sbe/src/lib.rs:297,1
    - Dst: Err
      Src: /src/opendal/integrations/unftp-sbe/src/lib.rs:298,1
    - Dst: Error::new
      Src: /src/opendal/integrations/unftp-sbe/src/lib.rs:298,1
    - Dst: Err
      Src: /src/opendal/integrations/unftp-sbe/src/lib.rs:302,1
    - Dst: convert_err
      Src: /src/opendal/integrations/unftp-sbe/src/lib.rs:302,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 2
    argNames:
    - path
    argTypes:
    - '&User'
    - P
    constantsTouched: []
    func_position:
      end: 304
      start: 293
    functionDepth: 31
    functionLinenumber: 293
    functionLinenumberEnd: 304
    functionName: OpendalStorage::cwd
    functionSourceFile: /src/opendal/integrations/unftp-sbe/src/lib.rs
    functionUses: 0
    functionsReached:
    - Ok
    - convert_path
    - Err
    - Error::new
    - convert_err
    - as_ref
    - stat
    linkageType: ''
    returnType: storage::Result
    signature: 'async fn cwd<P: AsRef<Path> + Send + Debug>(&self, _: &User, path:
      P) -> storage::Result<()>'
  - BBCount: 0
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - writer
    argTypes:
    - Writer
    constantsTouched: []
    func_position:
      end: 82
      start: 80
    functionDepth: 0
    functionLinenumber: 80
    functionLinenumberEnd: 82
    functionName: AsyncWriter::new
    functionSourceFile: /src/opendal/integrations/parquet/src/async_writer.rs
    functionUses: 7
    functionsReached: []
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(writer: Writer) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Box::pin
      Src: /src/opendal/integrations/parquet/src/async_writer.rs:87,1
    - Dst: write
      Src: /src/opendal/integrations/parquet/src/async_writer.rs:88,1
    - Dst: map_err
      Src: /src/opendal/integrations/parquet/src/async_writer.rs:88,1
    - Dst: ParquetError::External
      Src: /src/opendal/integrations/parquet/src/async_writer.rs:91,1
    - Dst: Box::new
      Src: /src/opendal/integrations/parquet/src/async_writer.rs:91,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - bs
    argTypes:
    - Bytes
    constantsTouched: []
    func_position:
      end: 93
      start: 86
    functionDepth: 36
    functionLinenumber: 86
    functionLinenumberEnd: 93
    functionName: AsyncWriter::write
    functionSourceFile: /src/opendal/integrations/parquet/src/async_writer.rs
    functionUses: 0
    functionsReached:
    - map_err
    - Box::new
    - ParquetError::External
    - Box::pin
    - write
    linkageType: ''
    returnType: BoxFuture
    signature: 'fn write(&mut self, bs: Bytes) -> BoxFuture<''_, Result<()>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Box::pin
      Src: /src/opendal/integrations/parquet/src/async_writer.rs:96,1
    - Dst: close
      Src: /src/opendal/integrations/parquet/src/async_writer.rs:97,1
    - Dst: map
      Src: /src/opendal/integrations/parquet/src/async_writer.rs:97,1
    - Dst: map_err
      Src: /src/opendal/integrations/parquet/src/async_writer.rs:97,1
    - Dst: ParquetError::External
      Src: /src/opendal/integrations/parquet/src/async_writer.rs:101,1
    - Dst: Box::new
      Src: /src/opendal/integrations/parquet/src/async_writer.rs:101,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 103
      start: 95
    functionDepth: 2
    functionLinenumber: 95
    functionLinenumberEnd: 103
    functionName: AsyncWriter::complete
    functionSourceFile: /src/opendal/integrations/parquet/src/async_writer.rs
    functionUses: 0
    functionsReached:
    - map_err
    - close
    - Box::new
    - map
    - ParquetError::External
    - Box::pin
    linkageType: ''
    returnType: BoxFuture
    signature: fn complete(&mut self) -> BoxFuture<'_, Result<()>>
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Operator::new
      Src: /src/opendal/integrations/parquet/src/async_writer.rs:132,1
    - Dst: services::Memory::default
      Src: /src/opendal/integrations/parquet/src/async_writer.rs:132,1
    - Dst: Result::unwrap
      Src: /src/opendal/integrations/parquet/src/async_writer.rs:132,1
    - Dst: AsyncWriter::new
      Src: /src/opendal/integrations/parquet/src/async_writer.rs:134,1
    - Dst: writer
      Src: /src/opendal/integrations/parquet/src/async_writer.rs:134,1
    - Dst: unwrap
      Src: /src/opendal/integrations/parquet/src/async_writer.rs:134,1
    - Dst: Bytes::from_static
      Src: /src/opendal/integrations/parquet/src/async_writer.rs:135,1
    - Dst: Result::write
      Src: /src/opendal/integrations/parquet/src/async_writer.rs:136,1
    - Dst: unwrap
      Src: /src/opendal/integrations/parquet/src/async_writer.rs:136,1
    - Dst: Bytes::from_static
      Src: /src/opendal/integrations/parquet/src/async_writer.rs:137,1
    - Dst: Result::write
      Src: /src/opendal/integrations/parquet/src/async_writer.rs:138,1
    - Dst: unwrap
      Src: /src/opendal/integrations/parquet/src/async_writer.rs:138,1
    - Dst: drop
      Src: /src/opendal/integrations/parquet/src/async_writer.rs:139,1
    - Dst: exists
      Src: /src/opendal/integrations/parquet/src/async_writer.rs:141,1
    - Dst: unwrap
      Src: /src/opendal/integrations/parquet/src/async_writer.rs:141,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 32
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 143
      start: 131
    functionDepth: 35
    functionLinenumber: 131
    functionLinenumberEnd: 143
    functionName: tests::test_abort
    functionSourceFile: /src/opendal/integrations/parquet/src/async_writer.rs
    functionUses: 0
    functionsReached:
    - Operator::new
    - exists
    - AsyncWriter::new
    - unwrap
    - Result::write
    - Result::unwrap
    - writer
    - services::Memory::default
    - drop
    - Bytes::from_static
    linkageType: ''
    returnType: void
    signature: async fn test_abort()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Operator::new
      Src: /src/opendal/integrations/parquet/src/async_writer.rs:147,1
    - Dst: services::Memory::default
      Src: /src/opendal/integrations/parquet/src/async_writer.rs:147,1
    - Dst: Result::unwrap
      Src: /src/opendal/integrations/parquet/src/async_writer.rs:147,1
    - Dst: AsyncWriter::new
      Src: /src/opendal/integrations/parquet/src/async_writer.rs:150,1
    - Dst: Result::writer_with
      Src: /src/opendal/integrations/parquet/src/async_writer.rs:151,1
    - Dst: chunk
      Src: /src/opendal/integrations/parquet/src/async_writer.rs:151,1
    - Dst: Result::concurrent
      Src: /src/opendal/integrations/parquet/src/async_writer.rs:151,1
    - Dst: unwrap
      Src: /src/opendal/integrations/parquet/src/async_writer.rs:151,1
    - Dst: Arc::new
      Src: /src/opendal/integrations/parquet/src/async_writer.rs:159,1
    - Dst: Int64Array::from_iter_values
      Src: /src/opendal/integrations/parquet/src/async_writer.rs:159,1
    - Dst: RecordBatch::try_from_iter
      Src: /src/opendal/integrations/parquet/src/async_writer.rs:160,1
    - Dst: unwrap
      Src: /src/opendal/integrations/parquet/src/async_writer.rs:160,1
    - Dst: AsyncArrowWriter::try_new
      Src: /src/opendal/integrations/parquet/src/async_writer.rs:161,1
    - Dst: schema
      Src: /src/opendal/integrations/parquet/src/async_writer.rs:161,1
    - Dst: Result::unwrap
      Src: /src/opendal/integrations/parquet/src/async_writer.rs:161,1
    - Dst: Result::write
      Src: /src/opendal/integrations/parquet/src/async_writer.rs:162,1
    - Dst: unwrap
      Src: /src/opendal/integrations/parquet/src/async_writer.rs:162,1
    - Dst: Result::close
      Src: /src/opendal/integrations/parquet/src/async_writer.rs:163,1
    - Dst: unwrap
      Src: /src/opendal/integrations/parquet/src/async_writer.rs:163,1
    - Dst: Result::read
      Src: /src/opendal/integrations/parquet/src/async_writer.rs:165,1
    - Dst: unwrap
      Src: /src/opendal/integrations/parquet/src/async_writer.rs:165,1
    - Dst: to_bytes
      Src: /src/opendal/integrations/parquet/src/async_writer.rs:165,1
    - Dst: ParquetRecordBatchReaderBuilder::try_new
      Src: /src/opendal/integrations/parquet/src/async_writer.rs:166,1
    - Dst: Result::unwrap
      Src: /src/opendal/integrations/parquet/src/async_writer.rs:166,1
    - Dst: T::build
      Src: /src/opendal/integrations/parquet/src/async_writer.rs:166,1
    - Dst: Result::unwrap
      Src: /src/opendal/integrations/parquet/src/async_writer.rs:166,1
    - Dst: anyhow::Result::next
      Src: /src/opendal/integrations/parquet/src/async_writer.rs:170,1
    - Dst: Result::unwrap
      Src: /src/opendal/integrations/parquet/src/async_writer.rs:170,1
    - Dst: T::unwrap
      Src: /src/opendal/integrations/parquet/src/async_writer.rs:170,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 64
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 172
      start: 146
    functionDepth: 35
    functionLinenumber: 146
    functionLinenumberEnd: 172
    functionName: tests::test_async_writer
    functionSourceFile: /src/opendal/integrations/parquet/src/async_writer.rs
    functionUses: 0
    functionsReached:
    - RecordBatch::try_from_iter
    - anyhow::Result::next
    - Arc::new
    - schema
    - Result::unwrap
    - T::build
    - Result::read
    - unwrap
    - Result::writer_with
    - Result::concurrent
    - AsyncArrowWriter::try_new
    - Result::close
    - Result::write
    - services::Memory::default
    - to_bytes
    - Int64Array::from_iter_values
    - Operator::new
    - ParquetRecordBatchReaderBuilder::try_new
    - T::unwrap
    - AsyncWriter::new
    - chunk
    linkageType: ''
    returnType: void
    signature: async fn test_async_writer()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: std::cmp::max
      Src: /src/opendal/integrations/parquet/src/async_reader.rs:102,1
    - Dst: std::cmp::min
      Src: /src/opendal/integrations/parquet/src/async_reader.rs:103,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - footer_size
    - content_size
    argTypes:
    - usize
    - u64
    constantsTouched: []
    func_position:
      end: 104
      start: 101
    functionDepth: 0
    functionLinenumber: 101
    functionLinenumberEnd: 104
    functionName: set_prefetch_footer_size
    functionSourceFile: /src/opendal/integrations/parquet/src/async_reader.rs
    functionUses: 2
    functionsReached:
    - std::cmp::min
    - std::cmp::max
    linkageType: ''
    returnType: usize
    signature: 'fn set_prefetch_footer_size(footer_size: usize, content_size: u64)
      -> usize'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: set_prefetch_footer_size
      Src: /src/opendal/integrations/parquet/src/async_reader.rs:112,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - reader
    - content_length
    argTypes:
    - Reader
    - u64
    constantsTouched: []
    func_position:
      end: 114
      start: 108
    functionDepth: 1
    functionLinenumber: 108
    functionLinenumberEnd: 114
    functionName: AsyncReader::new
    functionSourceFile: /src/opendal/integrations/parquet/src/async_reader.rs
    functionUses: 10
    functionsReached:
    - set_prefetch_footer_size
    linkageType: ''
    returnType: Self
    signature: 'pub fn new(reader: Reader, content_length: u64) -> Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: set_prefetch_footer_size
      Src: /src/opendal/integrations/parquet/src/async_reader.rs:118,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - footer_size
    argTypes:
    - usize
    constantsTouched: []
    func_position:
      end: 120
      start: 117
    functionDepth: 1
    functionLinenumber: 117
    functionLinenumberEnd: 120
    functionName: AsyncReader::with_prefetch_footer_size
    functionSourceFile: /src/opendal/integrations/parquet/src/async_reader.rs
    functionUses: 0
    functionsReached:
    - set_prefetch_footer_size
    linkageType: ''
    returnType: Self
    signature: 'pub fn with_prefetch_footer_size(mut self, footer_size: usize) ->
      Self'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/integrations/parquet/src/async_reader.rs:126,1
    - Dst: read
      Src: /src/opendal/integrations/parquet/src/async_reader.rs:126,1
    - Dst: map_err
      Src: /src/opendal/integrations/parquet/src/async_reader.rs:126,1
    - Dst: ParquetError::External
      Src: /src/opendal/integrations/parquet/src/async_reader.rs:130,1
    - Dst: Box::new
      Src: /src/opendal/integrations/parquet/src/async_reader.rs:130,1
    - Dst: to_bytes
      Src: /src/opendal/integrations/parquet/src/async_reader.rs:126,1
    - Dst: boxed
      Src: /src/opendal/integrations/parquet/src/async_reader.rs:125,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 1
    argNames:
    - range
    argTypes:
    - Range<u64>
    constantsTouched: []
    func_position:
      end: 134
      start: 124
    functionDepth: 31
    functionLinenumber: 124
    functionLinenumberEnd: 134
    functionName: AsyncReader::get_bytes
    functionSourceFile: /src/opendal/integrations/parquet/src/async_reader.rs
    functionUses: 0
    functionsReached:
    - map_err
    - read
    - Ok
    - Box::new
    - boxed
    - ParquetError::External
    - to_bytes
    linkageType: ''
    returnType: BoxFuture
    signature: 'fn get_bytes(&mut self, range: Range<u64>) -> BoxFuture<''_, ParquetResult<bytes::Bytes>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Ok
      Src: /src/opendal/integrations/parquet/src/async_reader.rs:141,1
    - Dst: fetch
      Src: /src/opendal/integrations/parquet/src/async_reader.rs:141,1
    - Dst: map_err
      Src: /src/opendal/integrations/parquet/src/async_reader.rs:141,1
    - Dst: ParquetError::External
      Src: /src/opendal/integrations/parquet/src/async_reader.rs:145,1
    - Dst: Box::new
      Src: /src/opendal/integrations/parquet/src/async_reader.rs:145,1
    - Dst: into_iter
      Src: /src/opendal/integrations/parquet/src/async_reader.rs:141,1
    - Dst: map
      Src: /src/opendal/integrations/parquet/src/async_reader.rs:141,1
    - Dst: io::Result::to_bytes
      Src: /src/opendal/integrations/parquet/src/async_reader.rs:147,1
    - Dst: "inner\n                .fetch(ranges)\n                .await\n      \
        \          .map_err(|err| ParquetError::External(Box::new(err)))?\n      \
        \          .into_iter()\n                .map(|buf| buf.to_bytes())\n    \
        \            .collect::<Vec<_>>"
      Src: /src/opendal/integrations/parquet/src/async_reader.rs:141,1
    - Dst: boxed
      Src: /src/opendal/integrations/parquet/src/async_reader.rs:140,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 22
    argCount: 1
    argNames:
    - ranges
    argTypes:
    - Vec<Range<u64>>
    constantsTouched: []
    func_position:
      end: 151
      start: 136
    functionDepth: 3
    functionLinenumber: 136
    functionLinenumberEnd: 151
    functionName: AsyncReader::get_byte_ranges
    functionSourceFile: /src/opendal/integrations/parquet/src/async_reader.rs
    functionUses: 0
    functionsReached:
    - map_err
    - Ok
    - Box::new
    - fetch
    - io::Result::to_bytes
    - into_iter
    - map
    - boxed
    - ParquetError::External
    - "inner\n                .fetch(ranges)\n                .await\n           \
      \     .map_err(|err| ParquetError::External(Box::new(err)))?\n             \
      \   .into_iter()\n                .map(|buf| buf.to_bytes())\n             \
      \   .collect::<Vec<_>>"
    linkageType: ''
    returnType: BoxFuture
    signature: 'fn get_byte_ranges(&mut self,ranges: Vec<Range<u64>>,) -> BoxFuture<''_,
      ParquetResult<Vec<bytes::Bytes>>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: ParquetMetaDataReader::new
      Src: /src/opendal/integrations/parquet/src/async_reader.rs:161,1
    - Dst: Self::with_prefetch_hint
      Src: /src/opendal/integrations/parquet/src/async_reader.rs:161,1
    - Dst: Some
      Src: /src/opendal/integrations/parquet/src/async_reader.rs:161,1
    - Dst: anyhow::Result::load_and_finish
      Src: /src/opendal/integrations/parquet/src/async_reader.rs:162,1
    - Dst: Ok
      Src: /src/opendal/integrations/parquet/src/async_reader.rs:164,1
    - Dst: Arc::new
      Src: /src/opendal/integrations/parquet/src/async_reader.rs:164,1
    - Dst: boxed
      Src: /src/opendal/integrations/parquet/src/async_reader.rs:159,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 1
    argNames:
    - _options
    argTypes:
    - Option<&'a ArrowReaderOptions>
    constantsTouched: []
    func_position:
      end: 167
      start: 153
    functionDepth: 2
    functionLinenumber: 153
    functionLinenumberEnd: 167
    functionName: AsyncReader::get_metadata
    functionSourceFile: /src/opendal/integrations/parquet/src/async_reader.rs
    functionUses: 0
    functionsReached:
    - Ok
    - ParquetMetaDataReader::new
    - Arc::new
    - Some
    - anyhow::Result::load_and_finish
    - boxed
    - Self::with_prefetch_hint
    linkageType: ''
    returnType: BoxFuture
    signature: 'fn get_metadata<''a>(&''a mut self,_options: Option<&''a ArrowReaderOptions>,)
      -> BoxFuture<''a, ParquetResult<std::sync::Arc<ParquetMetaData>>>'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Operator::new
      Src: /src/opendal/integrations/parquet/src/async_reader.rs:188,1
    - Dst: services::Memory::default
      Src: /src/opendal/integrations/parquet/src/async_reader.rs:188,1
    - Dst: Result::unwrap
      Src: /src/opendal/integrations/parquet/src/async_reader.rs:188,1
    - Dst: AsyncReader::new
      Src: /src/opendal/integrations/parquet/src/async_reader.rs:191,1
    - Dst: Result::reader
      Src: /src/opendal/integrations/parquet/src/async_reader.rs:191,1
    - Dst: unwrap
      Src: /src/opendal/integrations/parquet/src/async_reader.rs:191,1
    - Dst: AsyncReader::new
      Src: /src/opendal/integrations/parquet/src/async_reader.rs:195,1
    - Dst: Result::reader
      Src: /src/opendal/integrations/parquet/src/async_reader.rs:195,1
    - Dst: unwrap
      Src: /src/opendal/integrations/parquet/src/async_reader.rs:195,1
    - Dst: AsyncReader::new
      Src: /src/opendal/integrations/parquet/src/async_reader.rs:199,1
    - Dst: Result::reader
      Src: /src/opendal/integrations/parquet/src/async_reader.rs:199,1
    - Dst: unwrap
      Src: /src/opendal/integrations/parquet/src/async_reader.rs:199,1
    - Dst: Self::with_prefetch_footer_size
      Src: /src/opendal/integrations/parquet/src/async_reader.rs:199,1
    - Dst: AsyncReader::new
      Src: /src/opendal/integrations/parquet/src/async_reader.rs:204,1
    - Dst: Result::reader
      Src: /src/opendal/integrations/parquet/src/async_reader.rs:204,1
    - Dst: unwrap
      Src: /src/opendal/integrations/parquet/src/async_reader.rs:204,1
    - Dst: Self::with_prefetch_footer_size
      Src: /src/opendal/integrations/parquet/src/async_reader.rs:204,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 44
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 208
      start: 187
    functionDepth: 35
    functionLinenumber: 187
    functionLinenumberEnd: 208
    functionName: tests::test_async_reader_with_prefetch_footer_size
    functionSourceFile: /src/opendal/integrations/parquet/src/async_reader.rs
    functionUses: 0
    functionsReached:
    - Operator::new
    - AsyncReader::new
    - unwrap
    - Self::with_prefetch_footer_size
    - Result::unwrap
    - services::Memory::default
    - Result::reader
    linkageType: ''
    returnType: void
    signature: async fn test_async_reader_with_prefetch_footer_size()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: rand::rng
      Src: /src/opendal/integrations/parquet/src/async_reader.rs:211,1
    - Dst: sample_iter
      Src: /src/opendal/integrations/parquet/src/async_reader.rs:211,1
    - Dst: take
      Src: /src/opendal/integrations/parquet/src/async_reader.rs:211,1
    - Dst: map
      Src: /src/opendal/integrations/parquet/src/async_reader.rs:211,1
    - Dst: collect
      Src: /src/opendal/integrations/parquet/src/async_reader.rs:211,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 1
    argNames:
    - size
    argTypes:
    - usize
    constantsTouched: []
    func_position:
      end: 216
      start: 210
    functionDepth: 36
    functionLinenumber: 210
    functionLinenumberEnd: 216
    functionName: tests::gen_fixed_string
    functionSourceFile: /src/opendal/integrations/parquet/src/async_reader.rs
    functionUses: 0
    functionsReached:
    - collect
    - rand::rng
    - sample_iter
    - take
    - map
    linkageType: ''
    returnType: String
    signature: 'fn gen_fixed_string(size: usize) -> String'
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Operator::new
      Src: /src/opendal/integrations/parquet/src/async_reader.rs:220,1
    - Dst: services::Memory::default
      Src: /src/opendal/integrations/parquet/src/async_reader.rs:220,1
    - Dst: Result::unwrap
      Src: /src/opendal/integrations/parquet/src/async_reader.rs:220,1
    - Dst: AsyncWriter::new
      Src: /src/opendal/integrations/parquet/src/async_reader.rs:222,1
    - Dst: Result::writer_with
      Src: /src/opendal/integrations/parquet/src/async_reader.rs:223,1
    - Dst: chunk
      Src: /src/opendal/integrations/parquet/src/async_reader.rs:223,1
    - Dst: Result::concurrent
      Src: /src/opendal/integrations/parquet/src/async_reader.rs:223,1
    - Dst: unwrap
      Src: /src/opendal/integrations/parquet/src/async_reader.rs:223,1
    - Dst: Arc::new
      Src: /src/opendal/integrations/parquet/src/async_reader.rs:231,1
    - Dst: Int64Array::from_iter_values
      Src: /src/opendal/integrations/parquet/src/async_reader.rs:231,1
    - Dst: RecordBatch::try_from_iter
      Src: /src/opendal/integrations/parquet/src/async_reader.rs:232,1
    - Dst: unwrap
      Src: /src/opendal/integrations/parquet/src/async_reader.rs:232,1
    - Dst: AsyncArrowWriter::try_new
      Src: /src/opendal/integrations/parquet/src/async_reader.rs:233,1
    - Dst: schema
      Src: /src/opendal/integrations/parquet/src/async_reader.rs:233,1
    - Dst: Result::unwrap
      Src: /src/opendal/integrations/parquet/src/async_reader.rs:233,1
    - Dst: Result::write
      Src: /src/opendal/integrations/parquet/src/async_reader.rs:234,1
    - Dst: unwrap
      Src: /src/opendal/integrations/parquet/src/async_reader.rs:234,1
    - Dst: Result::close
      Src: /src/opendal/integrations/parquet/src/async_reader.rs:235,1
    - Dst: unwrap
      Src: /src/opendal/integrations/parquet/src/async_reader.rs:235,1
    - Dst: Result::reader
      Src: /src/opendal/integrations/parquet/src/async_reader.rs:237,1
    - Dst: unwrap
      Src: /src/opendal/integrations/parquet/src/async_reader.rs:237,1
    - Dst: Result::stat
      Src: /src/opendal/integrations/parquet/src/async_reader.rs:238,1
    - Dst: unwrap
      Src: /src/opendal/integrations/parquet/src/async_reader.rs:238,1
    - Dst: content_length
      Src: /src/opendal/integrations/parquet/src/async_reader.rs:238,1
    - Dst: AsyncReader::new
      Src: /src/opendal/integrations/parquet/src/async_reader.rs:239,1
    - Dst: ParquetRecordBatchStreamBuilder::new
      Src: /src/opendal/integrations/parquet/src/async_reader.rs:240,1
    - Dst: unwrap
      Src: /src/opendal/integrations/parquet/src/async_reader.rs:240,1
    - Dst: build
      Src: /src/opendal/integrations/parquet/src/async_reader.rs:240,1
    - Dst: unwrap
      Src: /src/opendal/integrations/parquet/src/async_reader.rs:240,1
    - Dst: Result::next
      Src: /src/opendal/integrations/parquet/src/async_reader.rs:245,1
    - Dst: unwrap
      Src: /src/opendal/integrations/parquet/src/async_reader.rs:245,1
    - Dst: unwrap
      Src: /src/opendal/integrations/parquet/src/async_reader.rs:245,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 72
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 247
      start: 219
    functionDepth: 35
    functionLinenumber: 219
    functionLinenumberEnd: 247
    functionName: tests::test_async_reader
    functionSourceFile: /src/opendal/integrations/parquet/src/async_reader.rs
    functionUses: 0
    functionsReached:
    - RecordBatch::try_from_iter
    - Arc::new
    - schema
    - Result::unwrap
    - Result::reader
    - ParquetRecordBatchStreamBuilder::new
    - unwrap
    - Result::stat
    - Result::next
    - Result::writer_with
    - Result::concurrent
    - AsyncArrowWriter::try_new
    - AsyncReader::new
    - content_length
    - Result::close
    - Result::write
    - services::Memory::default
    - Int64Array::from_iter_values
    - Operator::new
    - AsyncWriter::new
    - build
    - chunk
    linkageType: ''
    returnType: void
    signature: async fn test_async_reader()
  - BBCount: 0
    BranchProfiles: []
    Callsites:
    - Dst: Some
      Src: /src/opendal/integrations/parquet/src/async_reader.rs:267,1
    - Dst: Some
      Src: /src/opendal/integrations/parquet/src/async_reader.rs:271,1
    - Dst: Operator::new
      Src: /src/opendal/integrations/parquet/src/async_reader.rs:274,1
    - Dst: services::Memory::default
      Src: /src/opendal/integrations/parquet/src/async_reader.rs:274,1
    - Dst: Result::unwrap
      Src: /src/opendal/integrations/parquet/src/async_reader.rs:274,1
    - Dst: AsyncWriter::new
      Src: /src/opendal/integrations/parquet/src/async_reader.rs:276,1
    - Dst: Result::writer_with
      Src: /src/opendal/integrations/parquet/src/async_reader.rs:277,1
    - Dst: chunk
      Src: /src/opendal/integrations/parquet/src/async_reader.rs:277,1
    - Dst: Result::concurrent
      Src: /src/opendal/integrations/parquet/src/async_reader.rs:277,1
    - Dst: unwrap
      Src: /src/opendal/integrations/parquet/src/async_reader.rs:277,1
    - Dst: Arc::new
      Src: /src/opendal/integrations/parquet/src/async_reader.rs:285,1
    - Dst: Int64Array::from_iter_values
      Src: /src/opendal/integrations/parquet/src/async_reader.rs:285,1
    - Dst: RecordBatch::try_from_iter
      Src: /src/opendal/integrations/parquet/src/async_reader.rs:286,1
    - Dst: unwrap
      Src: /src/opendal/integrations/parquet/src/async_reader.rs:286,1
    - Dst: AsyncArrowWriter::try_new
      Src: /src/opendal/integrations/parquet/src/async_reader.rs:288,1
    - Dst: schema
      Src: /src/opendal/integrations/parquet/src/async_reader.rs:290,1
    - Dst: Some
      Src: /src/opendal/integrations/parquet/src/async_reader.rs:291,1
    - Dst: WriterProperties::builder
      Src: /src/opendal/integrations/parquet/src/async_reader.rs:292,1
    - Dst: OtelMetricsLayerBuilder::set_key_value_metadata
      Src: /src/opendal/integrations/parquet/src/async_reader.rs:292,1
    - Dst: Some
      Src: /src/opendal/integrations/parquet/src/async_reader.rs:293,1
    - Dst: build
      Src: /src/opendal/integrations/parquet/src/async_reader.rs:292,1
    - Dst: Result::unwrap
      Src: /src/opendal/integrations/parquet/src/async_reader.rs:288,1
    - Dst: Result::write
      Src: /src/opendal/integrations/parquet/src/async_reader.rs:301,1
    - Dst: unwrap
      Src: /src/opendal/integrations/parquet/src/async_reader.rs:301,1
    - Dst: Result::close
      Src: /src/opendal/integrations/parquet/src/async_reader.rs:302,1
    - Dst: unwrap
      Src: /src/opendal/integrations/parquet/src/async_reader.rs:302,1
    - Dst: Result::reader
      Src: /src/opendal/integrations/parquet/src/async_reader.rs:304,1
    - Dst: unwrap
      Src: /src/opendal/integrations/parquet/src/async_reader.rs:304,1
    - Dst: Result::stat
      Src: /src/opendal/integrations/parquet/src/async_reader.rs:305,1
    - Dst: unwrap
      Src: /src/opendal/integrations/parquet/src/async_reader.rs:305,1
    - Dst: content_length
      Src: /src/opendal/integrations/parquet/src/async_reader.rs:305,1
    - Dst: AsyncReader::new
      Src: /src/opendal/integrations/parquet/src/async_reader.rs:306,1
    - Dst: anyhow::Result::with_prefetch_footer_size
      Src: /src/opendal/integrations/parquet/src/async_reader.rs:308,1
    - Dst: ParquetRecordBatchStreamBuilder::new
      Src: /src/opendal/integrations/parquet/src/async_reader.rs:310,1
    - Dst: unwrap
      Src: /src/opendal/integrations/parquet/src/async_reader.rs:310,1
    - Dst: build
      Src: /src/opendal/integrations/parquet/src/async_reader.rs:310,1
    - Dst: unwrap
      Src: /src/opendal/integrations/parquet/src/async_reader.rs:310,1
    - Dst: Result::next
      Src: /src/opendal/integrations/parquet/src/async_reader.rs:315,1
    - Dst: unwrap
      Src: /src/opendal/integrations/parquet/src/async_reader.rs:315,1
    - Dst: unwrap
      Src: /src/opendal/integrations/parquet/src/async_reader.rs:315,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 99
    argCount: 0
    argNames: []
    argTypes: []
    constantsTouched: []
    func_position:
      end: 318
      start: 255
    functionDepth: 35
    functionLinenumber: 255
    functionLinenumberEnd: 318
    functionName: tests::test_async_reader_with_large_metadata
    functionSourceFile: /src/opendal/integrations/parquet/src/async_reader.rs
    functionUses: 0
    functionsReached:
    - RecordBatch::try_from_iter
    - Arc::new
    - schema
    - Result::unwrap
    - Result::reader
    - ParquetRecordBatchStreamBuilder::new
    - unwrap
    - Result::stat
    - Result::next
    - anyhow::Result::with_prefetch_footer_size
    - Result::writer_with
    - Result::concurrent
    - AsyncArrowWriter::try_new
    - AsyncReader::new
    - content_length
    - Some
    - Result::close
    - Result::write
    - OtelMetricsLayerBuilder::set_key_value_metadata
    - services::Memory::default
    - Int64Array::from_iter_values
    - WriterProperties::builder
    - Operator::new
    - AsyncWriter::new
    - build
    - chunk
    linkageType: ''
    returnType: void
    signature: async fn test_async_reader_with_large_metadata()
Fuzzer filename: /src/opendal/core/fuzz/fuzz_writer.rs
Fuzzing method: fuzz_target
report: name
sources:
- function_names:
  - tests
  - test_delete_file
  - test_delete_empty_dir
  - test_delete_with_special_chars
  - test_delete_not_existing
  - test_remove_one_file
  - test_delete_stream
  - test_blocking_remove_all_with_objects
  - test_remove_all_basic
  - test_remove_all_with_prefix_exists
  - test_delete_with_version
  - test_delete_with_not_existing_version
  - test_delete_with_recursive_basic
  - test_batch_delete
  - test_batch_delete_with_version
  source_file: /src/opendal/core/tests/behavior/async_delete.rs
- function_names:
  - tests
  - copy_multi_chunk_size
  - test_copy_file_with_ascii_name
  - test_copy_file_with_non_ascii_name
  - test_copy_non_existing_source
  - test_copy_source_dir
  - test_copy_target_dir
  - test_copy_self
  - test_copy_nested
  - test_copy_overwrite
  - test_copy_with_if_not_exists_to_new_file
  - test_copy_with_if_not_exists_to_existing_file
  - test_copy_with_if_match_match
  - test_copy_with_if_match_mismatch
  - test_copy_with_source_version_to_new_file
  - test_copy_with_source_version_to_same_file
  - test_copy_with_chunk
  - test_copier_file
  - test_copy_with_chunk_and_concurrent
  - test_copier_completion
  - test_copier_abort
  - test_copier_with_if_not_exists_to_new_file
  - test_copier_with_if_not_exists_to_existing_file
  source_file: /src/opendal/core/tests/behavior/async_copy.rs
- function_names:
  - tests
  - test_create_dir
  - test_create_dir_existing
  source_file: /src/opendal/core/tests/behavior/async_create_dir.rs
- function_names:
  - sha256_digest
  - gen_bytes_with_range
  - gen_bytes
  - gen_fixed_bytes
  - gen_offset_length
  - build_async_trial
  - async_trials
  - Fixture::default
  - Fixture::new
  - Fixture::add_path
  - Fixture::new_dir_path
  - Fixture::new_file_path
  - Fixture::new_file
  - Fixture::new_file_with_path
  - Fixture::new_file_with_range
  - Fixture::cleanup
  - content_max_size
  source_file: /src/opendal/core/tests/behavior/utils.rs
- function_names:
  - tests
  - test_stat_file
  - test_stat_dir
  - test_stat_nested_parent_dir
  - test_stat_with_special_chars
  - test_stat_not_cleaned_path
  - test_stat_not_exist
  - test_stat_with_if_match
  - test_stat_with_if_none_match
  - test_stat_with_if_modified_since
  - test_stat_with_if_unmodified_since
  - test_stat_with_override_cache_control
  - test_stat_with_override_content_disposition
  - test_stat_with_override_content_type
  - test_stat_root
  - test_read_only_stat_file_and_dir
  - test_read_only_stat_special_chars
  - test_read_only_stat_not_cleaned_path
  - test_read_only_stat_not_exist
  - test_read_only_stat_with_if_match
  - test_read_only_stat_with_if_none_match
  - test_read_only_stat_root
  - test_stat_with_version
  - stat_with_not_existing_version
  source_file: /src/opendal/core/tests/behavior/async_stat.rs
- function_names:
  - tests
  - test_read_full
  - test_read_range
  - test_read_suffix
  - test_read_suffix_larger_than_file
  - test_read_suffix_zero
  - test_reader_suffix_with_chunk
  - test_reader
  - test_buffer_stream_metadata
  - test_buffer_stream_metadata_with_concurrent
  - test_futures_bytes_stream_metadata
  - test_futures_bytes_stream_metadata_with_concurrent
  - test_read_not_exist
  - test_reader_with_if_match
  - test_read_with_if_match
  - test_reader_with_if_none_match
  - test_reader_with_if_modified_since
  - test_reader_with_if_unmodified_since
  - test_read_with_if_none_match
  - test_read_with_dir_path
  - test_read_with_special_chars
  - test_read_with_override_cache_control
  - test_read_with_override_content_disposition
  - test_read_with_override_content_type
  - test_read_with_if_modified_since
  - test_read_with_if_unmodified_since
  - test_read_only_read_full
  - test_read_only_read_full_with_special_chars
  - test_read_only_read_with_range
  - test_read_only_read_with_suffix
  - test_read_only_read_not_exist
  - test_read_only_read_with_dir_path
  - test_reader_only_read_with_if_match
  - test_read_only_read_with_if_match
  - test_reader_only_read_with_if_none_match
  - test_read_only_read_with_if_none_match
  - test_read_with_version
  - test_read_with_not_existing_version
  source_file: /src/opendal/core/tests/behavior/async_read.rs
- function_names:
  - tests
  - test_write_only
  - test_write_with_empty_content
  - test_write_with_dir_path
  - test_write_with_special_chars
  - test_write_with_cache_control
  - test_write_with_content_type
  - test_write_with_content_disposition
  - test_write_with_content_encoding
  - test_write_with_user_metadata
  - test_write_returns_metadata
  - test_writer_abort
  - test_writer_abort_with_concurrent
  - test_writer_write
  - test_writer_write_with_concurrent
  - test_writer_sink
  - test_writer_sink_with_concurrent
  - test_writer_futures_copy
  - test_writer_futures_copy_with_concurrent
  - test_writer_return_metadata
  - test_write_with_append
  - test_write_with_append_returns_metadata
  - assert_metadata
  - test_writer_with_append
  - test_writer_write_with_overwrite
  - test_write_with_if_none_match
  - test_write_with_if_not_exists
  - test_write_with_if_match
  - test_writer_write_non_contiguous_data
  source_file: /src/opendal/core/tests/behavior/async_write.rs
- function_names:
  - tests
  - test_rename_file
  - test_rename_non_existing_source
  - test_rename_source_dir
  - test_rename_target_dir
  - test_rename_self
  - test_rename_nested
  - test_rename_overwrite
  - test_rename_with_if_not_exists
  - test_rename_with_if_not_exists_nested
  - test_rename_with_if_not_exists_returns_condition_not_match
  source_file: /src/opendal/core/tests/behavior/async_rename.rs
- function_names:
  - tests
  - skip_cos_create_dir_list_check
  - test_check
  - test_list_dir
  - test_list_prefix
  - test_list_rich_dir
  - test_list_empty_dir
  - test_list_non_exist_dir
  - test_list_sub_dir
  - test_list_nested_dir
  - test_list_dir_with_file_path
  - test_list_with_start_after
  - test_list_non_exist_dir_with_recursive
  - test_list_root_with_recursive
  - test_list_dir_with_recursive
  - test_list_dir_with_recursive_no_trailing_slash
  - test_list_file_with_recursive
  - test_remove_all
  - test_list_only
  - test_list_files_with_versions
  - test_list_files_with_deleted
  - test_list_with_versions_and_limit
  - test_list_with_versions_and_start_after
  source_file: /src/opendal/core/tests/behavior/async_list.rs
- function_names:
  - main
  source_file: /src/opendal/core/tests/behavior/main.rs
- function_names:
  - tests
  - test_presign_write
  - test_presign_stat
  - test_presign_read
  - test_presign_delete
  source_file: /src/opendal/core/tests/behavior/async_presign.rs
- function_names:
  - ThrottleLayer::new
  - ThrottleLayer::apply_service
  - ThrottleLayer::layer
  - ThrottleAccessor::info
  - ThrottleAccessor::capability
  - ThrottleAccessor::create_dir
  - ThrottleAccessor::stat
  - ThrottleAccessor::read
  - ThrottleAccessor::write
  - ThrottleAccessor::copy
  - ThrottleAccessor::delete
  - ThrottleAccessor::rename
  - ThrottleAccessor::list
  - ThrottleAccessor::presign
  - ThrottleWrapper::new
  - ThrottleWrapper::read
  - ThrottleWrapper::open
  - ThrottleWrapper::read
  - ThrottleWrapper::write
  - ThrottleWrapper::close
  - ThrottleWrapper::abort
  source_file: /src/opendal/core/layers/throttle/src/lib.rs
- function_names:
  - AwaitTreeLayer::new
  - AwaitTreeLayer::apply_service
  - AwaitTreeLayer::layer
  - AwaitTreeAccessor::info
  - AwaitTreeAccessor::capability
  - AwaitTreeAccessor::create_dir
  - AwaitTreeAccessor::read
  - AwaitTreeAccessor::write
  - AwaitTreeAccessor::copy
  - AwaitTreeAccessor::rename
  - AwaitTreeAccessor::stat
  - AwaitTreeAccessor::delete
  - AwaitTreeAccessor::list
  - AwaitTreeAccessor::presign
  - AwaitTreeWrapper::new
  - AwaitTreeWrapper::read
  - AwaitTreeWrapper::open
  - AwaitTreeWrapper::read
  - AwaitTreeWrapper::write
  - AwaitTreeWrapper::abort
  - AwaitTreeWrapper::close
  - AwaitTreeWrapper::next
  - AwaitTreeWrapper::delete
  - AwaitTreeWrapper::close
  - AwaitTreeWrapper::next
  - AwaitTreeWrapper::close
  - AwaitTreeWrapper::abort
  source_file: /src/opendal/core/layers/await-tree/src/lib.rs
- function_names:
  - OtelMetricsLayer::builder
  - OtelMetricsLayerBuilder::default
  - OtelMetricsLayerBuilder::bytes_boundaries
  - OtelMetricsLayerBuilder::bytes_rate_boundaries
  - OtelMetricsLayerBuilder::entries_boundaries
  - OtelMetricsLayerBuilder::entries_rate_boundaries
  - OtelMetricsLayerBuilder::duration_seconds_boundaries
  - OtelMetricsLayerBuilder::ttfb_boundaries
  - OtelMetricsLayerBuilder::register
  - OtelMetricsLayer::apply_service
  - OtelMetricsLayer::apply_context
  - OtelMetricsInterceptor::observe
  - OtelMetricsInterceptor::create_attributes
  - register_u64_histogram_meter
  - register_f64_histogram_meter
  source_file: /src/opendal/core/layers/otelmetrics/src/lib.rs
- function_names:
  - TimeoutLayer::default
  - TimeoutLayer::new
  - TimeoutLayer::with_timeout
  - TimeoutLayer::with_io_timeout
  - TimeoutLayer::apply_service
  - TimeoutLayer::apply_context
  - TimeoutLayer::layer
  - TimeoutService::timeout
  - TimeoutService::info
  - TimeoutService::capability
  - TimeoutService::create_dir
  - TimeoutService::read
  - TimeoutService::write
  - TimeoutService::copy
  - TimeoutService::rename
  - TimeoutService::stat
  - TimeoutService::delete
  - TimeoutService::list
  - TimeoutService::presign
  - TimeoutExecutor::new
  - TimeoutExecutor::execute
  - TimeoutExecutor::timeout
  - TimeoutWrapper::new
  - TimeoutWrapper::io_timeout
  - TimeoutWrapper::read
  - TimeoutWrapper::open
  - TimeoutWrapper::read
  - TimeoutWrapper::write
  - TimeoutWrapper::close
  - TimeoutWrapper::abort
  - TimeoutWrapper::next
  - TimeoutWrapper::delete
  - TimeoutWrapper::close
  - TimeoutWrapper::next
  - TimeoutWrapper::close
  - TimeoutWrapper::abort
  - tests::test_delete_timeout
  - tests::test_io_timeout
  - tests::test_list_timeout
  - tests::test_delete_io_timeout
  - tests::test_copy_io_timeout
  - tests::test_list_timeout_raw
  source_file: /src/opendal/core/layers/timeout/src/lib.rs
- function_names:
  - ChaosLayer::new
  - ChaosLayer::apply_service
  - ChaosLayer::layer
  - ChaosService::info
  - ChaosService::capability
  - ChaosService::create_dir
  - ChaosService::stat
  - ChaosService::read
  - ChaosService::write
  - ChaosService::copy
  - ChaosService::list
  - ChaosService::delete
  - ChaosService::rename
  - ChaosService::presign
  - ChaosReader::new
  - ChaosReader::i_feel_lucky
  - ChaosReader::unexpected_eof
  - ChaosReader::read
  - ChaosReader::open
  - ChaosReader::read
  source_file: /src/opendal/core/layers/chaos/src/lib.rs
- function_names:
  - FastmetricsLayer::builder
  - FastmetricsLayer::apply_service
  - FastmetricsLayer::apply_context
  - FastmetricsLayerBuilder::default
  - FastmetricsLayerBuilder::bytes_buckets
  - FastmetricsLayerBuilder::bytes_rate_buckets
  - FastmetricsLayerBuilder::entries_buckets
  - FastmetricsLayerBuilder::entries_rate_buckets
  - FastmetricsLayerBuilder::duration_seconds_buckets
  - FastmetricsLayerBuilder::ttfb_buckets
  - FastmetricsLayerBuilder::disable_label_root
  - FastmetricsLayerBuilder::register
  - FastmetricsLayerBuilder::register_global
  - FastmetricsInterceptor::register
  - FastmetricsInterceptor::observe
  - OperationLabels::names
  - OperationLabels::encode
  source_file: /src/opendal/core/layers/fastmetrics/src/lib.rs
- function_names:
  - LoggingLayer::default
  - LoggingLayer::new
  - LoggingLayer::apply_service
  - LoggingLayer::layer
  - DefaultLoggingInterceptor::log
  - LoggingContext::fmt
  - LoggingService::fmt
  - LoggingService::log_start
  - LoggingService::log_finish
  - LoggingService::info
  - LoggingService::capability
  - LoggingService::create_dir
  - LoggingService::read
  - LoggingService::write
  - LoggingService::stat
  - LoggingService::delete
  - LoggingService::copy
  - LoggingService::rename
  - LoggingService::list
  - LoggingService::presign
  - LoggingReader::new
  - LoggingReader::with_range
  - LoggingReader::range_label
  - LoggingReader::read
  - LoggingReader::open
  - LoggingReader::read
  - LoggingWriter::new
  - LoggingWriter::write
  - LoggingWriter::abort
  - LoggingWriter::close
  - LoggingLister::new
  - LoggingLister::next
  - LoggingDeleter::new
  - LoggingDeleter::delete
  - LoggingDeleter::close
  - LoggingCopier::new
  - LoggingCopier::next
  - LoggingCopier::close
  - LoggingCopier::abort
  source_file: /src/opendal/core/layers/logging/src/lib.rs
- function_names:
  - FastraceLayer::new
  - FastraceLayer::apply_service
  - FastraceLayer::layer
  - FastraceAccessor::info
  - FastraceAccessor::capability
  - FastraceAccessor::create_dir
  - FastraceAccessor::read
  - FastraceAccessor::write
  - FastraceAccessor::copy
  - FastraceAccessor::rename
  - FastraceAccessor::stat
  - FastraceAccessor::delete
  - FastraceAccessor::list
  - FastraceAccessor::presign
  - FastraceWrapper::new
  - FastraceWrapper::with_span
  - FastraceWrapper::read
  - FastraceWrapper::open
  - FastraceWrapper::read
  - FastraceWrapper::write
  - FastraceWrapper::abort
  - FastraceWrapper::close
  - FastraceWrapper::next
  - FastraceWrapper::delete
  - FastraceWrapper::close
  - FastraceWrapper::next
  - FastraceWrapper::close
  - FastraceWrapper::abort
  source_file: /src/opendal/core/layers/fastrace/src/lib.rs
- function_names:
  - Arc::acquire
  - ConcurrentLimitLayer::fmt
  - ConcurrentLimitLayer::new
  - ConcurrentLimitLayer::with_http_concurrent_limit
  - ConcurrentLimitLayer::with_semaphore
  - ConcurrentLimitLayer::with_http_semaphore
  - ConcurrentLimitLayer::apply_service
  - ConcurrentLimitLayer::apply_context
  - ConcurrentLimitLayer::layer
  - ConcurrentLimitHttpTransport::fetch
  - ConcurrentLimitStream::poll_next
  - ConcurrentLimitService::fmt
  - ConcurrentLimitService::info
  - ConcurrentLimitService::capability
  - ConcurrentLimitService::create_dir
  - ConcurrentLimitService::read
  - ConcurrentLimitService::write
  - ConcurrentLimitService::copy
  - ConcurrentLimitService::rename
  - ConcurrentLimitService::stat
  - ConcurrentLimitService::delete
  - ConcurrentLimitService::list
  - ConcurrentLimitService::presign
  - ConcurrentLimitReader::new
  - ConcurrentLimitReader::open
  - ConcurrentLimitReader::read
  - ConcurrentLimitWrapper::new
  - ConcurrentLimitWrapper::new_with_permit
  - ConcurrentLimitWrapper::acquire
  - ConcurrentLimitWrapper::read
  - ConcurrentLimitWrapper::open
  - ConcurrentLimitWrapper::read
  - ConcurrentLimitWrapper::write
  - ConcurrentLimitWrapper::close
  - ConcurrentLimitWrapper::abort
  - ConcurrentLimitWrapper::next
  - ConcurrentLimitWrapper::delete
  - ConcurrentLimitWrapper::close
  - ConcurrentLimitWrapper::next
  - ConcurrentLimitWrapper::close
  - ConcurrentLimitWrapper::abort
  - tests::operation_semaphore_can_be_shared
  - tests::operation_semaphore_limits_copy_and_rename
  - tests::operation_semaphore_held_until_copier_dropped
  - tests::concurrent_chunked_read_with_http_limit
  - tests::http_semaphore_holds_until_body_dropped
  source_file: /src/opendal/core/layers/concurrent-limit/src/lib.rs
- function_names:
  - MetricsLayer::new
  - MetricsLayer::apply_service
  - MetricsLayer::apply_context
  - MetricsInterceptor::observe
  - OperationLabels::into_labels
  source_file: /src/opendal/core/layers/metrics/src/lib.rs
- function_names:
  - DtraceLayer::new
  - DtraceLayer::apply_service
  - DtraceLayer::layer
  - DTraceService::info
  - DTraceService::capability
  - DTraceService::create_dir
  - DTraceService::read
  - DTraceService::write
  - DTraceService::copy
  - DTraceService::rename
  - DTraceService::stat
  - DTraceService::delete
  - DTraceService::list
  - DTraceService::presign
  - DtraceLayerWrapper::new
  - DtraceLayerWrapper::with_range
  - DtraceLayerWrapper::range_label
  - DtraceLayerWrapper::read
  - DtraceLayerWrapper::open
  - DtraceLayerWrapper::read
  - DtraceLayerWrapper::write
  - DtraceLayerWrapper::abort
  - DtraceLayerWrapper::close
  source_file: /src/opendal/core/layers/dtrace/src/lib.rs
- function_names:
  - PrometheusClientLayer::builder
  - PrometheusClientLayer::apply_service
  - PrometheusClientLayer::apply_context
  - PrometheusClientLayerBuilder::default
  - PrometheusClientLayerBuilder::bytes_buckets
  - PrometheusClientLayerBuilder::bytes_rate_buckets
  - PrometheusClientLayerBuilder::entries_buckets
  - PrometheusClientLayerBuilder::entries_rate_buckets
  - PrometheusClientLayerBuilder::duration_seconds_buckets
  - PrometheusClientLayerBuilder::ttfb_buckets
  - PrometheusClientLayerBuilder::disable_label_root
  - PrometheusClientLayerBuilder::register
  - HistogramConstructor::new_metric
  - PrometheusClientInterceptor::observe
  - OperationLabels::encode
  - register_metric
  source_file: /src/opendal/core/layers/prometheus-client/src/lib.rs
- function_names:
  - Deleter::new
  - Deleter::delete
  - Deleter::close
  source_file: /src/opendal/core/layers/foyer/src/deleter.rs
- function_names:
  - FetchError::from_error
  - FetchError::fmt
  - extract_err
  source_file: /src/opendal/core/layers/foyer/src/error.rs
- function_names:
  - Writer::new
  - Writer::write
  - Writer::close
  - Writer::abort
  source_file: /src/opendal/core/layers/foyer/src/writer.rs
- function_names:
  - FullReader::new
  - FullReader::cache_key
  - FullReader::full_object_rp
  - FullReader::slice_full_object
  - FullReader::is_deleted
  - FullReader::stat_args
  - FullReader::fallback_open
  - FullReader::fallback_read
  - FullReader::read_full_object
  - FullReader::read_range
  - FullReader::open
  - FullReader::read
  source_file: /src/opendal/core/layers/foyer/src/full.rs
- function_names:
  - FoyerKey::encode
  - FoyerKey::decode
  - FoyerKey::estimated_size
  - write_bytes
  - read_string
  - FoyerValue::deref
  - FoyerValue::encode
  - FoyerValue::decode
  - FoyerValue::estimated_size
  - FoyerLayer::new
  - FoyerLayer::with_size_limit
  - FoyerLayer::apply_service
  - FoyerLayer::layer
  - FoyerService::operation_inner
  - FoyerService::info
  - FoyerService::capability
  - FoyerService::read
  - FoyerService::write
  - FoyerService::delete
  - FoyerService::copy
  - FoyerService::list
  - FoyerService::create_dir
  - FoyerService::stat
  - FoyerService::rename
  - FoyerService::presign
  - tests::key
  - tests::value
  - tests::memory_cache
  - tests::service_context
  - tests::test_full_reader_open_fallback_preserves_stream
  - tests::test_full_reader_open_fills_cache
  - tests::test_cache_fill_preserves_read_args
  - tests::test
  - tests::test_size_limit
  - tests::test_error
  - tests::test_foyer_key_version_none_vs_empty
  - tests::test_foyer_key_serde
  source_file: /src/opendal/core/layers/foyer/src/lib.rs
- function_names:
  - AsyncBacktraceLayer::new
  - AsyncBacktraceLayer::apply_service
  - AsyncBacktraceLayer::layer
  - AsyncBacktraceAccessor::info
  - AsyncBacktraceAccessor::capability
  - AsyncBacktraceAccessor::create_dir
  - AsyncBacktraceAccessor::read
  - AsyncBacktraceAccessor::write
  - AsyncBacktraceAccessor::copy
  - AsyncBacktraceAccessor::rename
  - AsyncBacktraceAccessor::stat
  - AsyncBacktraceAccessor::delete
  - AsyncBacktraceAccessor::list
  - AsyncBacktraceAccessor::presign
  - AsyncBacktraceWrapper::new
  - AsyncBacktraceWrapper::read
  - AsyncBacktraceWrapper::open
  - AsyncBacktraceWrapper::read
  - AsyncBacktraceWrapper::write
  - AsyncBacktraceWrapper::close
  - AsyncBacktraceWrapper::abort
  - AsyncBacktraceWrapper::next
  - AsyncBacktraceWrapper::delete
  - AsyncBacktraceWrapper::close
  source_file: /src/opendal/core/layers/async-backtrace/src/lib.rs
- function_names:
  - RouteLayer::builder
  - RouteLayerBuilder::route
  - RouteLayerBuilder::build
  - RouteRouter::match_index
  - RouteRouter::select
  - RouteRouter::target
  - RouteLayer::apply_service
  - RouteLayer::layer
  - RouteAccessor::fmt
  - RouteAccessor::select
  - RouteAccessor::info
  - RouteAccessor::capability
  - RouteAccessor::create_dir
  - RouteAccessor::read
  - RouteAccessor::write
  - RouteAccessor::copy
  - RouteAccessor::rename
  - RouteAccessor::stat
  - RouteAccessor::delete
  - RouteAccessor::list
  - RouteAccessor::presign
  - RouteDeleter::new
  - RouteDeleter::get_deleter
  - RouteDeleter::delete
  - RouteDeleter::close
  - tests::build_memory_operator
  - tests::build_mock_operator
  - tests::build_fs_operator
  - tests::fs_root
  - tests::cleanup_fs_root
  - tests::assert_missing
  - tests::test_first_match_wins
  - tests::test_fallback_to_default
  - tests::test_copy_and_rename_route_by_from
  - tests::test_delete_iter_routes_per_path
  source_file: /src/opendal/core/layers/route/src/lib.rs
- function_names:
  - TailCutLayerBuilder::default
  - TailCutLayerBuilder::new
  - TailCutLayerBuilder::percentile
  - TailCutLayerBuilder::safety_factor
  - TailCutLayerBuilder::window
  - TailCutLayerBuilder::min_samples
  - TailCutLayerBuilder::min_deadline
  - TailCutLayerBuilder::max_deadline
  - TailCutLayerBuilder::build
  - TailCutLayer::fmt
  - TailCutLayer::default
  - TailCutLayer::builder
  - TailCutLayer::new
  - TailCutLayer::apply_service
  - TailCutLayer::layer
  - TailCutService::fmt
  - TailCutService::calculate_deadline
  - TailCutService::with_deadline
  - TailCutService::info
  - TailCutService::capability
  - TailCutService::create_dir
  - TailCutService::read
  - TailCutService::write
  - TailCutService::copy
  - TailCutService::rename
  - TailCutService::stat
  - TailCutService::delete
  - TailCutService::list
  - TailCutService::presign
  - TailCutWrapper::new
  - TailCutWrapper::calculate_deadline
  - TailCutWrapper::calculate_deadline_for
  - TailCutWrapper::with_io_deadline
  - TailCutWrapper::read
  - TailCutWrapper::open
  - TailCutWrapper::read
  - TailCutWrapper::write
  - TailCutWrapper::close
  - TailCutWrapper::abort
  - TailCutWrapper::next
  - TailCutWrapper::delete
  - TailCutWrapper::close
  - TailCutWrapper::next
  - TailCutWrapper::close
  - TailCutWrapper::abort
  - TailCutStats::new
  - TailCutStats::stats_for
  - OperationStats::new
  - OperationStats::bucket_for
  - OperationStats::record
  - OperationStats::quantile
  - OperationStats::total_samples
  - SizeBucket::new
  - SizeBucket::contains
  - WindowedHistogram::new
  - WindowedHistogram::record
  - WindowedHistogram::quantile
  - WindowedHistogram::total_samples
  - WindowedHistogram::snapshot
  - WindowedHistogram::maybe_rotate
  - WindowedHistogram::latency_to_bucket
  - WindowedHistogram::bucket_to_latency
  - WindowedHistogram::now_ms
  - TimeSlice::new
  - tests::test_latency_to_bucket
  - tests::test_size_bucket_contains
  - tests::test_histogram_basic
  - tests::test_tail_cut_layer_build
  - tests::test_layer_clone_shares_stats
  source_file: /src/opendal/core/layers/tail-cut/src/lib.rs
- function_names:
  - OtelTraceLayer::new
  - OtelTraceLayer::apply_service
  - OtelTraceLayer::layer
  - OtelTraceService::info
  - OtelTraceService::capability
  - OtelTraceService::create_dir
  - OtelTraceService::read
  - OtelTraceService::write
  - OtelTraceService::copy
  - OtelTraceService::rename
  - OtelTraceService::stat
  - OtelTraceService::delete
  - OtelTraceService::list
  - OtelTraceService::presign
  - OtelTraceWrapper::new
  - OtelTraceWrapper::child_context
  - OtelTraceWrapper::read
  - OtelTraceWrapper::open
  - OtelTraceWrapper::read
  - OtelTraceWrapper::write
  - OtelTraceWrapper::abort
  - OtelTraceWrapper::close
  - OtelTraceWrapper::next
  source_file: /src/opendal/core/layers/oteltrace/src/lib.rs
- function_names:
  - PrometheusLayer::builder
  - PrometheusLayer::apply_service
  - PrometheusLayer::apply_context
  - PrometheusLayerBuilder::default
  - PrometheusLayerBuilder::bytes_buckets
  - PrometheusLayerBuilder::bytes_rate_buckets
  - PrometheusLayerBuilder::entries_buckets
  - PrometheusLayerBuilder::entries_rate_buckets
  - PrometheusLayerBuilder::duration_seconds_buckets
  - PrometheusLayerBuilder::ttfb_buckets
  - PrometheusLayerBuilder::register
  - PrometheusLayerBuilder::register_default
  - parse_prometheus_error
  - PrometheusInterceptor::observe
  - OperationLabelNames::as_ref
  - OperationLabelNames::with_error
  - OperationLabelNames::with_status_code
  - OperationLabelNames::with_service_operation
  - OperationLabels::names
  - OperationLabels::op_values
  - OperationLabels::http_values
  source_file: /src/opendal/core/layers/prometheus/src/lib.rs
- function_names:
  - ImmutableIndexLayer::new
  - ImmutableIndexLayer::insert
  - ImmutableIndexLayer::extend_iter
  - ImmutableIndexLayer::apply_service
  - ImmutableIndexLayer::layer
  - ImmutableIndexService::children_flat
  - ImmutableIndexService::children_hierarchy
  - ImmutableIndexService::info
  - ImmutableIndexService::capability
  - ImmutableIndexService::create_dir
  - ImmutableIndexService::stat
  - ImmutableIndexService::read
  - ImmutableIndexService::write
  - ImmutableIndexService::copy
  - ImmutableIndexService::list
  - ImmutableIndexService::delete
  - ImmutableIndexService::rename
  - ImmutableIndexService::presign
  - ImmutableDir::new
  - ImmutableDir::inner_next
  - ImmutableDir::next
  - tests::build_operator
  - tests::setup
  - tests::test_list
  - tests::test_scan
  - tests::test_list_dir
  - tests::test_walk_top_down_dir
  source_file: /src/opendal/core/layers/immutable-index/src/lib.rs
- function_names:
  - CapabilityCheckLayer::new
  - CapabilityCheckLayer::apply_service
  - CapabilityCheckLayer::layer
  - new_unsupported_error
  - CapabilityCheckService::info
  - CapabilityCheckService::capability
  - CapabilityCheckService::create_dir
  - CapabilityCheckService::stat
  - CapabilityCheckService::read
  - CapabilityCheckService::write
  - CapabilityCheckService::copy
  - CapabilityCheckService::delete
  - CapabilityCheckService::list
  - CapabilityCheckService::rename
  - CapabilityCheckService::presign
  - tests::new_test_operator
  - tests::test_writer_with
  - tests::test_list_with
  source_file: /src/opendal/core/layers/capability-check/src/lib.rs
- function_names:
  - MimeGuessLayer::new
  - MimeGuessLayer::apply_service
  - MimeGuessLayer::layer
  - mime_from_path
  - opwrite_with_mime
  - rpstat_with_mime
  - MimeGuessAccessor::info
  - MimeGuessAccessor::capability
  - MimeGuessAccessor::create_dir
  - MimeGuessAccessor::read
  - MimeGuessAccessor::write
  - MimeGuessAccessor::copy
  - MimeGuessAccessor::stat
  - MimeGuessAccessor::rename
  - MimeGuessAccessor::delete
  - MimeGuessAccessor::list
  - MimeGuessAccessor::presign
  - tests::test_async
  source_file: /src/opendal/core/layers/mime-guess/src/lib.rs
- function_names:
  - HotpathLayer::new
  - HotpathLayer::apply_service
  - HotpathLayer::apply_context
  - HotpathLayer::layer
  - HotpathAccessor::info
  - HotpathAccessor::capability
  - HotpathAccessor::create_dir
  - HotpathAccessor::read
  - HotpathAccessor::write
  - HotpathAccessor::copy
  - HotpathAccessor::rename
  - HotpathAccessor::stat
  - HotpathAccessor::delete
  - HotpathAccessor::list
  - HotpathAccessor::presign
  - HotpathWrapper::new
  - HotpathWrapper::read
  - HotpathWrapper::open
  - HotpathWrapper::read
  - HotpathWrapper::write
  - HotpathWrapper::close
  - HotpathWrapper::abort
  - HotpathWrapper::next
  - HotpathWrapper::delete
  - HotpathWrapper::close
  - HotpathWrapper::next
  - HotpathWrapper::close
  - HotpathWrapper::abort
  - HotpathHttpTransport::fetch
  - HotpathStream::poll_next
  source_file: /src/opendal/core/layers/hotpath/src/lib.rs
- function_names:
  - TracingLayer::new
  - TracingLayer::apply_service
  - TracingLayer::apply_context
  - TracingLayer::layer
  - TracingHttpTransport::fetch
  - TracingExecutor::execute
  - TracingExecutor::timeout
  - TracingStream::poll_next
  - TracingService::info
  - TracingService::capability
  - TracingService::create_dir
  - TracingService::read
  - TracingService::write
  - TracingService::copy
  - TracingService::rename
  - TracingService::stat
  - TracingService::delete
  - TracingService::list
  - TracingService::presign
  - TracingWrapper::new
  - TracingWrapper::read
  - TracingWrapper::open
  - TracingWrapper::read
  - TracingWrapper::write
  - TracingWrapper::abort
  - TracingWrapper::close
  - TracingWrapper::next
  - TracingWrapper::delete
  - TracingWrapper::close
  source_file: /src/opendal/core/layers/tracing/src/lib.rs
- function_names:
  - MetricLabels::new
  - MetricLabels::with_error
  - MetricLabels::with_status_code
  - MetricValue::name
  - MetricValue::name_with_unit
  - MetricValue::help
  - MetricsIntercept::observe
  - MetricsLayer::new
  - MetricsLayer::apply_service
  - MetricsLayer::apply_context
  - MetricsLayer::layer
  - ExecutingGuard::new_http
  - ExecutingGuard::new_operation
  - ExecutingGuard::complete
  - ExecutingGuard::defuse
  - ExecutingGuard::drop
  - MetricsHttpTransport::fetch
  - MetricsStream::poll_next
  - MetricsStream::drop
  - MetricsAccessor::fmt
  - MetricsAccessor::info
  - MetricsAccessor::capability
  - MetricsAccessor::create_dir
  - MetricsAccessor::read
  - MetricsAccessor::write
  - MetricsAccessor::copy
  - MetricsAccessor::rename
  - MetricsAccessor::stat
  - MetricsAccessor::delete
  - MetricsAccessor::list
  - MetricsAccessor::presign
  - MetricsReader::new
  - MetricsReader::open
  - MetricsReader::read
  - MetricsWrapper::drop
  - MetricsWrapper::new
  - MetricsWrapper::record_error
  - MetricsWrapper::read
  - MetricsWrapper::write
  - MetricsWrapper::close
  - MetricsWrapper::abort
  - MetricsWrapper::next
  - MetricsWrapper::delete
  - MetricsWrapper::close
  - MetricsWrapper::next
  - MetricsWrapper::close
  - MetricsWrapper::abort
  - tests::test_info
  - tests::test_labels
  - tests::build_metrics_http_fetcher
  - tests::build_http_request
  - tests::test_http_transport_error_records_status_error
  - tests::test_http_server_error_records_status_error
  - tests::test_http_success_records_full_metrics
  - tests::test_http_connection_error_records_connection_error
  - tests::test_http_body_read_failure_records_metrics
  - tests::test_stream_completed_records_response_metrics
  - tests::test_stream_dropped_early_records_response_metrics
  - tests::test_stream_error_records_response_metrics
  - tests::test_http_guard_cancelled_records_connection_error
  - tests::test_http_guard_completed_only_decrements_executing
  - tests::test_http_guard_defused_records_nothing
  - tests::test_operation_guard_cancelled_records_operation_error
  - tests::test_operation_guard_completed_only_decrements_executing
  - tests::test_reader_drop_records_no_operation_metrics
  - tests::test_reader_open_stream_records_operation_metrics_on_stream_drop
  - tests::test_reader_read_records_operation_metrics
  - tests::test_list_wrapper_drop_records_operation_entries
  - tests::test_wrapper_cancelled_records_operation_error
  source_file: /src/opendal/core/layers/observe-metrics-common/src/lib.rs
- function_names:
  - RetryLayer::fmt
  - RetryLayer::clone
  - RetryLayer::default
  - RetryLayer::new
  - RetryLayer::with_notify
  - RetryLayer::with_jitter
  - RetryLayer::with_factor
  - RetryLayer::with_min_delay
  - RetryLayer::with_max_delay
  - RetryLayer::with_max_times
  - RetryLayer::apply_service
  - RetryLayer::layer
  - F::intercept
  - DefaultRetryInterceptor::intercept
  - RetryService::fmt
  - RetryService::info
  - RetryService::capability
  - RetryService::create_dir
  - RetryService::read
  - RetryService::write
  - RetryService::stat
  - RetryService::delete
  - RetryService::copy
  - RetryService::rename
  - RetryService::list
  - RetryService::presign
  - RetryReader::new
  - RetryReader::open
  - RetryReader::read
  - RetryReadStream::new
  - RetryReadStream::read
  - RetryWrapper::new
  - RetryWrapper::take_inner
  - RetryWrapper::read
  - RetryWrapper::write
  - RetryWrapper::abort
  - RetryWrapper::close
  - RetryWrapper::next
  - RetryWrapper::delete
  - RetryWrapper::close
  - RetryWrapper::next
  - RetryWrapper::close
  - RetryWrapper::abort
  - tests::setup
  - tests::test_retry_read
  - tests::test_retry_write_fail_on_close
  - tests::test_retry_list
  - tests::test_retry_event_attempt_and_op
  - tests::test_retry_read_stream_error_enters_retry_budget
  - tests::test_retry_batch
  - tests::test_retry_copy
  source_file: /src/opendal/core/layers/retry/src/lib.rs
- function_names:
  - main
  source_file: /src/opendal/core/edge/file_write_on_full_disk/src/main.rs
- function_names:
  - hello_world
  - tests::test_hello_world
  source_file: /src/opendal/core/edge/s3_read_on_wasm/src/lib.rs
- function_names:
  - tests::new_operator
  - tests::test_create_directory_handle
  - tests::test_create_directory_handle_with_root_and_list
  - tests::test_write
  - tests::test_write_read_simple
  - tests::test_write_write_twice_same_file
  - tests::test_write_like_append_three_times
  - tests::test_write_large_file_quota
  - tests::test_write_and_read_with_range
  source_file: /src/opendal/core/edge/opfs_wasm32/src/lib.rs
- function_names:
  - main
  source_file: /src/opendal/core/edge/s3_aws_assume_role_with_web_identity/src/main.rs
- function_names:
  - tests::test_trait
  source_file: /src/opendal/core/core/src/lib.rs
- function_names: []
  source_file: /src/opendal/core/core/src/blocking/mod.rs
- function_names:
  - Lister::new
  - Lister::next
  - Lister::drop
  source_file: /src/opendal/core/core/src/blocking/list.rs
- function_names:
  - Operator::new
  - Operator::spawn_block
  - Operator::from_uri
  - Operator::info
  - Operator::presign_stat
  - Operator::presign_stat_options
  - Operator::presign_read
  - Operator::presign_read_options
  - Operator::presign_write
  - Operator::presign_write_options
  - Operator::presign_delete
  - Operator::presign_delete_options
  - Operator::stat
  - Operator::stat_options
  - Operator::exists
  - Operator::create_dir
  - Operator::read
  - Operator::read_options
  - Operator::reader
  - Operator::reader_options
  - Operator::write
  - Operator::write_options
  - Operator::writer
  - Operator::writer_options
  - Operator::copy
  - Operator::copy_options
  - Operator::copier
  - Operator::copier_options
  - Operator::rename
  - Operator::rename_options
  - Operator::delete
  - Operator::delete_options
  - Operator::delete_iter
  - Operator::delete_try_iter
  - Operator::deleter
  - Operator::remove_all
  - Operator::list
  - Operator::list_options
  - Operator::lister
  - Operator::lister_options
  - Operator::check
  - AsyncOperator::from
  source_file: /src/opendal/core/core/src/blocking/operator.rs
- function_names:
  - Copier::new
  - Copier::abort
  - Copier::next
  - Copier::drop
  source_file: /src/opendal/core/core/src/blocking/copy.rs
- function_names:
  - Deleter::create
  - Deleter::delete
  - Deleter::delete_iter
  - Deleter::delete_try_iter
  - Deleter::close
  source_file: /src/opendal/core/core/src/blocking/delete.rs
- function_names:
  - Writer::new
  - Writer::write
  - Writer::close
  - Writer::into_std_write
  - Writer::drop
  source_file: /src/opendal/core/core/src/blocking/write/writer.rs
- function_names: []
  source_file: /src/opendal/core/core/src/blocking/write/mod.rs
- function_names:
  - StdWriter::new
  - StdWriter::close
  - StdWriter::write
  - StdWriter::flush
  - StdWriter::drop
  source_file: /src/opendal/core/core/src/blocking/write/std_writer.rs
- function_names:
  - Reader::new
  - Reader::read
  - Reader::read_into
  - Reader::into_iterator
  - Reader::into_std_read
  - Reader::into_bytes_iterator
  - Reader::drop
  source_file: /src/opendal/core/core/src/blocking/read/reader.rs
- function_names:
  - StdBytesIterator::new
  - StdBytesIterator::next
  - StdBytesIterator::drop
  source_file: /src/opendal/core/core/src/blocking/read/std_bytes_iterator.rs
- function_names:
  - BufferIterator::new
  - BufferIterator::next
  - BufferIterator::drop
  source_file: /src/opendal/core/core/src/blocking/read/buffer_iterator.rs
- function_names:
  - StdReader::new
  - StdReader::fill_buf
  - StdReader::consume
  - StdReader::read
  - StdReader::seek
  - StdReader::drop
  source_file: /src/opendal/core/core/src/blocking/read/std_reader.rs
- function_names: []
  source_file: /src/opendal/core/core/src/blocking/read/mod.rs
- function_names:
  - CapabilityOverrideLayer::fmt
  - CapabilityOverrideLayer::new
  - CapabilityOverrideLayer::from_overrides
  - CapabilityOverrideLayer::apply_service
  - CapabilityOverrideLayer::layer
  - CapabilityOverrideService::fmt
  - CapabilityOverrideService::info
  - CapabilityOverrideService::capability
  - CapabilityOverrideService::create_dir
  - CapabilityOverrideService::stat
  - CapabilityOverrideService::read
  - CapabilityOverrideService::write
  - CapabilityOverrideService::delete
  - CapabilityOverrideService::list
  - CapabilityOverrideService::copy
  - CapabilityOverrideService::rename
  - CapabilityOverrideService::presign
  - CapabilityOverrides::parse
  - CapabilityOverrides::apply
  - CapabilityOverrides::try_apply
  - parse_capability_override
  - invalid_capability_override
  - parse_capability_value
  - tests::capability_override_updates_capability
  - tests::parse_capability_overrides
  - tests::parse_bool_assignments_and_unset_sizes
  - tests::reject_unknown_capability
  - tests::reject_capability_shorthand
  - tests::reject_invalid_capability_type
  source_file: /src/opendal/core/core/src/layers/capability_override.rs
- function_names:
  - CompleteLayer::fmt
  - CompleteLayer::apply_service
  - CompleteLayer::layer
  - CompleteService::fmt
  - CompleteService::info
  - CompleteService::capability
  - CompleteService::create_dir
  - CompleteService::read
  - CompleteService::write
  - CompleteService::copy
  - CompleteService::rename
  - CompleteService::stat
  - CompleteService::delete
  - CompleteService::list
  - CompleteService::presign
  - CompleteLister::new
  - CompleteLister::ensure_file_content_length
  - CompleteLister::next
  - CompleteReader::new
  - CompleteReader::open
  - CompleteReader::read
  - CompleteReadStream::new
  - CompleteReadStream::check
  - CompleteReadStream::read
  - check_complete
  - CompleteState::transition
  - CompleteWriter::new
  - CompleteWriter::check
  - CompleteWriter::drop
  - CompleteWriter::write
  - CompleteWriter::close
  - CompleteWriter::abort
  - tests::new_test_reader
  - tests::test_read_rejects_short_buffer
  - tests::test_read_rejects_extra_buffer
  source_file: /src/opendal/core/core/src/layers/complete.rs
- function_names: []
  source_file: /src/opendal/core/core/src/layers/mod.rs
- function_names:
  - SimulateLayer::default
  - SimulateLayer::with_read_with_suffix
  - SimulateLayer::with_list_recursive
  - SimulateLayer::with_stat_dir
  - SimulateLayer::with_create_dir
  - SimulateLayer::with_delete_recursive
  - SimulateLayer::apply_service
  - SimulateLayer::layer
  - SimulateService::fmt
  - SimulateService::simulate_capability
  - SimulateService::simulate_create_dir
  - SimulateService::simulate_stat
  - SimulateService::simulate_list
  - SimulateService::simulate_delete_with_recursive
  - SimulateService::info
  - SimulateService::capability
  - SimulateService::create_dir
  - SimulateService::read
  - SimulateService::write
  - SimulateService::copy
  - SimulateService::rename
  - SimulateService::stat
  - SimulateService::delete
  - SimulateService::list
  - SimulateService::presign
  - SimulateReader::new
  - SimulateReader::content_length
  - SimulateReader::resolve_range
  - SimulateReader::open
  - SimulateReader::read
  - ServicerFlatLister::new
  - ServicerFlatLister::next
  - SimulateDeleter::new
  - SimulateDeleter::delete
  - SimulateDeleter::close
  - tests::simulate_layer_exposes_read_with_suffix
  - tests::simulate_layer_can_disable_read_with_suffix
  - tests::simulate_reader_uses_content_length_hint_for_suffix
  source_file: /src/opendal/core/core/src/layers/simulate.rs
- function_names:
  - ErrorContextLayer::fmt
  - ErrorContextLayer::apply_service
  - ErrorContextLayer::layer
  - ErrorContextService::fmt
  - ErrorContextService::info
  - ErrorContextService::capability
  - ErrorContextService::create_dir
  - ErrorContextService::read
  - ErrorContextService::write
  - ErrorContextService::copy
  - ErrorContextService::rename
  - ErrorContextService::stat
  - ErrorContextService::delete
  - ErrorContextService::list
  - ErrorContextService::presign
  - ErrorContextWrapper::new
  - ErrorContextWrapper::with_range
  - ErrorContextWrapper::read_error
  - ErrorContextWrapper::open
  - ErrorContextWrapper::read
  - ErrorContextWrapper::read
  - ErrorContextWrapper::write
  - ErrorContextWrapper::close
  - ErrorContextWrapper::abort
  - ErrorContextWrapper::next
  - ErrorContextWrapper::delete
  - ErrorContextWrapper::close
  - ErrorContextWrapper::next
  - ErrorContextWrapper::close
  - ErrorContextWrapper::abort
  source_file: /src/opendal/core/core/src/layers/error_context.rs
- function_names:
  - CorrectnessCheckLayer::fmt
  - CorrectnessCheckLayer::apply_service
  - CorrectnessCheckLayer::layer
  - new_unsupported_error
  - CorrectnessService::fmt
  - CorrectnessService::info
  - CorrectnessService::capability
  - CorrectnessService::read
  - CorrectnessService::write
  - CorrectnessService::stat
  - CorrectnessService::delete
  - CorrectnessService::copy
  - CorrectnessService::list
  - CorrectnessService::create_dir
  - CorrectnessService::rename
  - CorrectnessService::presign
  - CheckWrapper::new
  - CheckWrapper::check_delete
  - CheckWrapper::delete
  - CheckWrapper::close
  - tests::new_test_operator
  - tests::test_read
  - tests::test_stat
  - tests::test_write_with
  - tests::test_delete
  - tests::test_rename_with_if_not_exists
  source_file: /src/opendal/core/core/src/layers/correctness_check.rs
- function_names: []
  source_file: /src/opendal/core/core/src/services/mod.rs
- function_names:
  - MemoryConfig::from_uri
  - MemoryConfig::into_builder
  - tests::from_uri_extracts_root
  source_file: /src/opendal/core/core/src/services/memory/config.rs
- function_names:
  - MemoryDeleter::new
  - MemoryDeleter::delete_once
  source_file: /src/opendal/core/core/src/services/memory/deleter.rs
- function_names:
  - MemoryLister::new
  - MemoryLister::next
  source_file: /src/opendal/core/core/src/services/memory/lister.rs
- function_names:
  - MemoryCore::fmt
  - MemoryCore::new
  - MemoryCore::get
  - MemoryCore::set
  - MemoryCore::set_if_not_exists
  - MemoryCore::delete
  - MemoryCore::scan
  source_file: /src/opendal/core/core/src/services/memory/core.rs
- function_names:
  - MemoryWriter::new
  - MemoryWriter::write
  - MemoryWriter::close
  - MemoryWriter::abort
  source_file: /src/opendal/core/core/src/services/memory/writer.rs
- function_names:
  - register_memory_service
  source_file: /src/opendal/core/core/src/services/memory/mod.rs
- function_names:
  - MemoryBuilder::root
  - MemoryBuilder::build
  - MemoryBackend::new
  - MemoryBackend::with_normalized_root
  - MemoryBackend::info
  - MemoryBackend::capability
  - MemoryBackend::create_dir
  - MemoryBackend::stat
  - MemoryBackend::read
  - MemoryBackend::write
  - MemoryBackend::delete
  - MemoryBackend::list
  - MemoryBackend::copy
  - MemoryBackend::rename
  - MemoryBackend::presign
  - MemoryReader::new
  - MemoryReader::open
  source_file: /src/opendal/core/core/src/services/memory/backend.rs
- function_names: []
  source_file: /src/opendal/core/core/src/docs/concepts.rs
- function_names: []
  source_file: /src/opendal/core/core/src/docs/mod.rs
- function_names: []
  source_file: /src/opendal/core/core/src/docs/performance/mod.rs
- function_names: []
  source_file: /src/opendal/core/core/src/docs/comparisons/mod.rs
- function_names: []
  source_file: /src/opendal/core/core/src/docs/rfcs/mod.rs
- function_names: []
  source_file: /src/opendal/core/core/src/docs/internals/layer.rs
- function_names: []
  source_file: /src/opendal/core/core/src/docs/internals/mod.rs
- function_names: []
  source_file: /src/opendal/core/core/src/docs/internals/accessor.rs
- function_names:
  - Metadata::fmt
  - Metadata::new
  - Metadata::mode
  - Metadata::set_mode
  - Metadata::with_mode
  - Metadata::is_file
  - Metadata::is_dir
  - Metadata::is_current
  - Metadata::set_is_current
  - Metadata::with_is_current
  - Metadata::is_deleted
  - Metadata::set_is_deleted
  - Metadata::with_is_deleted
  - Metadata::cache_control
  - Metadata::set_cache_control
  - Metadata::with_cache_control
  - Metadata::content_length
  - Metadata::has_content_length
  - Metadata::set_content_length
  - Metadata::with_content_length
  - Metadata::content_md5
  - Metadata::set_content_md5
  - Metadata::with_content_md5
  - Metadata::content_type
  - Metadata::set_content_type
  - Metadata::with_content_type
  - Metadata::content_encoding
  - Metadata::set_content_encoding
  - Metadata::last_modified
  - Metadata::set_last_modified
  - Metadata::with_last_modified
  - Metadata::etag
  - Metadata::set_etag
  - Metadata::with_etag
  - Metadata::content_disposition
  - Metadata::set_content_disposition
  - Metadata::with_content_disposition
  - Metadata::version
  - Metadata::set_version
  - Metadata::with_version
  - Metadata::user_metadata
  - Metadata::with_user_metadata
  - tests::debug_metadata_omits_default_values
  - tests::debug_metadata_keeps_meaningful_values
  source_file: /src/opendal/core/core/src/types/metadata.rs
- function_names:
  - ()::build
  - Configurator::from_uri
  - Configurator::from_iter
  - ()::into_builder
  source_file: /src/opendal/core/core/src/types/builder.rs
- function_names:
  - ErrorKind::into_static
  - ErrorKind::enable_backtrace
  - ErrorKind::fmt
  - '&''static str::from'
  - ErrorStatus::fmt
  - Error::fmt
  - Error::fmt
  - Error::source
  - Error::new
  - Error::with_operation
  - Error::with_context
  - Error::set_source
  - Error::set_permanent
  - Error::set_temporary
  - Error::set_persistent
  - Error::with_permanent
  - Error::with_temporary
  - Error::with_persistent
  - Error::kind
  - Error::is_permanent
  - Error::is_temporary
  - Error::is_persistent
  - Error::message
  - Error::backtrace
  - io::Error::from
  - tests::test_error_display
  - tests::test_error_debug
  source_file: /src/opendal/core/core/src/types/error.rs
- function_names: []
  source_file: /src/opendal/core/core/src/types/mod.rs
- function_names:
  - Lister::create
  - Lister::poll_next
  source_file: /src/opendal/core/core/src/types/list.rs
- function_names:
  - EntryMode::is_file
  - EntryMode::is_dir
  - EntryMode::from_path
  - EntryMode::fmt
  source_file: /src/opendal/core/core/src/types/mode.rs
- function_names:
  - Buffer::fmt
  - Buffer::default
  - Buffer::new
  - Buffer::len
  - Buffer::is_empty
  - Buffer::count
  - Buffer::current
  - Buffer::truncate
  - Buffer::slice
  - Buffer::to_bytes
  - Buffer::to_vec
  - Buffer::to_io_slice
  - Buffer::split_to
  - Buffer::split_off
  - Buffer::chunks
  - Buffer::from
  - Buffer::from
  - Buffer::from
  - Buffer::from
  - Buffer::from
  - Buffer::from_iter
  - Buffer::from
  - Buffer::from
  - Buffer::from
  - Buffer::from_iter
  - Buffer::remaining
  - Buffer::chunk
  - Buffer::chunks_vectored
  - Buffer::advance
  - Buffer::next
  - Buffer::size_hint
  - Buffer::poll_next
  - Buffer::size_hint
  - Buffer::read
  - Buffer::seek
  - Buffer::fill_buf
  - Buffer::consume
  - BufferChunks::next
  - BufferChunks::size_hint
  - BufferChunks::len
  - tests::test_contiguous_buffer
  - tests::test_empty_non_contiguous_buffer
  - tests::test_non_contiguous_buffer_with_empty_chunks
  - tests::test_non_contiguous_buffer_with_next
  - tests::test_buffer_advance
  - tests::test_buffer_truncate
  - tests::test_buffer_chunks_contiguous
  - tests::test_buffer_chunks_non_contiguous
  - tests::test_buffer_chunks_zero_panics
  - tests::setup_buffer
  - tests::fuzz_buffer_advance
  - tests::fuzz_buffer_iter
  - tests::fuzz_buffer_truncate
  - tests::test_read_trait
  - tests::test_seek_trait
  - tests::test_bufread_trait
  - tests::test_read_partial
  - tests::test_seek_and_read
  - tests::test_bufread_consume
  - tests::test_empty_buffer
  - tests::test_seek_out_of_bounds
  - tests::test_split_to_contiguous
  - tests::test_split_to_non_contiguous
  - tests::test_split_to_at_zero
  - tests::test_split_to_at_len
  - tests::test_split_to_out_of_bounds
  - tests::test_split_off_contiguous
  - tests::test_split_off_non_contiguous
  - tests::test_split_off_at_zero
  - tests::test_split_off_at_len
  - tests::test_split_off_out_of_bounds
  - tests::test_split_to_split_off_composition
  - tests::test_split_preserves_underlying_storage
  - tests::fuzz_buffer_split_to
  - tests::fuzz_buffer_split_off
  source_file: /src/opendal/core/core/src/types/buffer.rs
- function_names: []
  source_file: /src/opendal/core/core/src/types/options.rs
- function_names:
  - Copier::fmt
  - Copier::create
  - Copier::next
  - Copier::abort
  - Copier::close
  - Copier::poll_next
  source_file: /src/opendal/core/core/src/types/copy.rs
- function_names:
  - Entry::new
  - Entry::path
  - Entry::name
  - Entry::metadata
  - Entry::into_parts
  source_file: /src/opendal/core/core/src/types/entry.rs
- function_names:
  - BytesRange::default
  - BytesRange::new
  - BytesRange::suffix
  - BytesRange::offset
  - BytesRange::size
  - BytesRange::is_suffix
  - BytesRange::advance
  - BytesRange::is_full
  - BytesRange::to_header
  - BytesRange::to_range
  - BytesRange::to_range_as_usize
  - BytesRange::to_content_range
  - BytesRange::fmt
  - BytesRange::from_str
  - BytesRange::from
  - tests::test_bytes_range_display_zero_size
  - tests::test_bytes_range_to_string
  - tests::test_bytes_range_to_header
  - tests::test_bytes_range_from_range_bounds
  - tests::test_bytes_range_from_str
  - tests::test_bytes_range_from_str_invalid_end_less_than_start
  - tests::test_bytes_range_from_range_bounds_underflow
  - tests::test_bytes_range_from_range_bounds_u64_max
  - tests::test_bytes_range_display_overflow
  - tests::test_bytes_range_to_range_overflow
  - tests::test_bytes_range_to_range_as_usize_overflow
  - tests::test_bytes_range_to_content_range
  - tests::test_bytes_range_advance_offset_overflow
  - tests::test_bytes_range_advance_size_underflow
  - tests::test_bytes_range_advance_suffix
  - tests::test_bytes_range_advance_suffix_underflow
  source_file: /src/opendal/core/core/src/types/bytes_range.rs
- function_names:
  - Capability::fmt
  source_file: /src/opendal/core/core/src/types/capability.rs
- function_names:
  - OperatorRegistry::get
  - OperatorRegistry::register
  - OperatorRegistry::schemes
  - OperatorRegistry::load
  - factory
  - tests::global_registry_exposes_memory_scheme
  - tests::unregistered_scheme_error_lists_available_schemes
  source_file: /src/opendal/core/core/src/types/operator/registry.rs
- function_names:
  - OperatorFuture::new
  - OperatorFuture::into_future
  - FutureStat::if_match
  - FutureStat::if_none_match
  - FutureStat::if_modified_since
  - FutureStat::if_unmodified_since
  - FutureStat::version
  - FuturePresignStat::override_content_disposition
  - FuturePresignStat::override_cache_control
  - FuturePresignStat::override_content_type
  - FuturePresignStat::if_match
  - FuturePresignStat::if_none_match
  - FuturePresignRead::override_content_disposition
  - FuturePresignRead::override_cache_control
  - FuturePresignRead::override_content_type
  - FuturePresignRead::if_match
  - FuturePresignRead::if_none_match
  - FuturePresignWrite::content_type
  - FuturePresignWrite::content_disposition
  - FuturePresignWrite::content_encoding
  - FuturePresignWrite::cache_control
  - FutureRead::range
  - FutureRead::content_length_hint
  - FutureRead::concurrent
  - FutureRead::chunk
  - FutureRead::version
  - FutureRead::if_match
  - FutureRead::if_none_match
  - FutureRead::if_modified_since
  - FutureRead::if_unmodified_since
  - FutureReader::version
  - FutureReader::concurrent
  - FutureReader::chunk
  - FutureReader::content_length_hint
  - FutureReader::gap
  - FutureReader::if_match
  - FutureReader::if_none_match
  - FutureReader::if_modified_since
  - FutureReader::if_unmodified_since
  - FutureWrite::append
  - FutureWrite::chunk
  - FutureWrite::concurrent
  - FutureWrite::cache_control
  - FutureWrite::content_type
  - FutureWrite::content_disposition
  - FutureWrite::content_encoding
  - FutureWrite::if_match
  - FutureWrite::if_none_match
  - FutureWrite::if_not_exists
  - FutureWrite::user_metadata
  - FutureWriter::append
  - FutureWriter::chunk
  - FutureWriter::concurrent
  - FutureWriter::cache_control
  - FutureWriter::content_type
  - FutureWriter::content_disposition
  - FutureWriter::content_encoding
  - FutureWriter::if_match
  - FutureWriter::if_none_match
  - FutureWriter::if_not_exists
  - FutureWriter::user_metadata
  - FutureDelete::version
  - FutureDelete::recursive
  - FutureList::limit
  - FutureList::start_after
  - FutureList::recursive
  - FutureList::versions
  - FutureList::deleted
  - FutureLister::limit
  - FutureLister::start_after
  - FutureLister::recursive
  - FutureLister::versions
  - FutureLister::deleted
  - FutureCopy::if_not_exists
  - FutureCopy::if_match
  - FutureCopy::source_version
  - FutureCopy::concurrent
  - FutureCopy::chunk
  - FutureCopy::source_content_length_hint
  - FutureCopier::if_not_exists
  - FutureCopier::if_match
  - FutureCopier::source_version
  - FutureCopier::source_content_length_hint
  - FutureCopier::concurrent
  - FutureCopier::chunk
  - FutureRename::if_not_exists
  source_file: /src/opendal/core/core/src/types/operator/operator_futures.rs
- function_names:
  - Operator::new
  - Operator::from_config
  - Operator::from_iter
  - Operator::from_uri
  - Operator::via_iter
  - tests::via_iter_delegates_to_registry
  - tests::new_returns_finished_operator
  source_file: /src/opendal/core/core/src/types/operator/builder.rs
- function_names:
  - OperatorInfo::new
  - OperatorInfo::scheme
  - OperatorInfo::root
  - OperatorInfo::name
  - OperatorInfo::capability
  source_file: /src/opendal/core/core/src/types/operator/info.rs
- function_names: []
  source_file: /src/opendal/core/core/src/types/operator/mod.rs
- function_names:
  - Operator::fmt
  - Operator::from_inner
  - Operator::from_parts
  - Operator::into_parts
  - Operator::apply_layers
  - Operator::base_service
  - Operator::base_context
  - Operator::service
  - Operator::context
  - Operator::info
  - Operator::with_context
  - Operator::layer
  - Operator::check
  - Operator::stat
  - Operator::stat_with
  - Operator::stat_options
  - Operator::stat_inner
  - Operator::exists
  - Operator::create_dir
  - Operator::read
  - Operator::read_with
  - Operator::read_options
  - Operator::read_inner
  - Operator::reader
  - Operator::reader_with
  - Operator::reader_options
  - Operator::reader_inner
  - Operator::write
  - Operator::write_with
  - Operator::write_options
  - Operator::write_inner
  - Operator::writer
  - Operator::writer_with
  - Operator::writer_options
  - Operator::writer_inner
  - Operator::copy
  - Operator::copier
  - Operator::copy_with
  - Operator::copier_with
  - Operator::copy_options
  - Operator::copier_options
  - Operator::copy_inner
  - Operator::copier_inner
  - Operator::rename
  - Operator::rename_with
  - Operator::rename_options
  - Operator::rename_inner
  - Operator::delete
  - Operator::delete_with
  - Operator::delete_options
  - Operator::delete_inner
  - Operator::delete_iter
  - Operator::delete_try_iter
  - Operator::delete_stream
  - Operator::delete_try_stream
  - Operator::deleter
  - Operator::remove_all
  - Operator::list
  - Operator::list_with
  - Operator::list_options
  - Operator::list_inner
  - Operator::lister
  - Operator::lister_with
  - Operator::lister_options
  - Operator::lister_inner
  - Operator::presign_stat
  - Operator::presign_stat_with
  - Operator::presign_stat_options
  - Operator::presign_stat_inner
  - Operator::presign_read
  - Operator::presign_read_with
  - Operator::presign_read_options
  - Operator::presign_read_inner
  - Operator::presign_write
  - Operator::presign_write_with
  - Operator::presign_write_options
  - Operator::presign_write_inner
  - Operator::presign_delete
  - Operator::presign_delete_with
  - Operator::presign_delete_options
  - Operator::presign_delete_inner
  source_file: /src/opendal/core/core/src/types/operator/operator.rs
- function_names:
  - OperatorUri::new
  - OperatorUri::scheme
  - OperatorUri::name
  - OperatorUri::authority
  - OperatorUri::username
  - OperatorUri::password
  - OperatorUri::root
  - OperatorUri::options
  - OperatorUri::option
  - OperatorUri::into_operator_uri
  - '&OperatorUri::into_operator_uri'
  - Uri::into_operator_uri
  - '&Uri::into_operator_uri'
  - '&str::into_operator_uri'
  - String::into_operator_uri
  - (Uri, O)::into_operator_uri
  - (&Uri, O)::into_operator_uri
  - (&str, O)::into_operator_uri
  - (String, O)::into_operator_uri
  - tests::parse_uri_with_name_and_root
  - tests::into_operator_uri_merges_extra_options
  - tests::parse_uri_with_port_preserves_authority
  - tests::parse_uri_with_credentials_splits_authority
  source_file: /src/opendal/core/core/src/types/operator/uri.rs
- function_names:
  - DeleteInput::into_delete_input
  - '&str::into_delete_input'
  - String::into_delete_input
  - (String, OpDelete)::into_delete_input
  - Entry::into_delete_input
  source_file: /src/opendal/core/core/src/types/delete/input.rs
- function_names:
  - Deleter::create
  - Deleter::delete
  - Deleter::delete_iter
  - Deleter::delete_try_iter
  - Deleter::delete_stream
  - Deleter::delete_try_stream
  - Deleter::close
  - Deleter::into_sink
  - tests::test_sink_close_must_flush_buffered_deletes
  source_file: /src/opendal/core/core/src/types/delete/deleter.rs
- function_names: []
  source_file: /src/opendal/core/core/src/types/delete/mod.rs
- function_names:
  - FuturesDeleteSink::new
  - FuturesDeleteSink::poll_ready
  - FuturesDeleteSink::start_send
  - FuturesDeleteSink::poll_flush
  - FuturesDeleteSink::poll_close
  source_file: /src/opendal/core/core/src/types/delete/futures_delete_sink.rs
- function_names:
  - OperationContext::new
  - OperationContext::from_parts
  - OperationContext::with_http_transport
  - OperationContext::with_executor
  - OperationContext::into_parts
  - OperationContext::http_transport
  - OperationContext::executor
  - OperationContext::default
  source_file: /src/opendal/core/core/src/types/context/operation.rs
- function_names:
  - ReadContext::new
  - ReadContext::context
  - ReadContext::path
  - ReadContext::args
  - ReadContext::options
  - ReadContext::reader
  - ReadContext::metadata
  - ReadContext::set_metadata
  - ReadContext::observe_read_response
  - ReadContext::content_length
  - ReadContext::parse_into_range
  - ReadGenerator::new
  - ReadGenerator::next_range
  - ReadGenerator::next_reader
  - ReadGenerator::metadata
  - tests::new_read_context
  - tests::new_read_context_with_args
  - tests::test_next_reader
  - tests::test_next_reader_without_size
  - tests::test_parse_into_range_bounded_end_overflow
  - tests::test_parse_into_range_uses_content_length_hint
  - tests::test_parse_into_range_suffix_uses_content_length_hint
  source_file: /src/opendal/core/core/src/types/context/read.rs
- function_names: []
  source_file: /src/opendal/core/core/src/types/context/mod.rs
- function_names:
  - WriteContext::new
  - WriteContext::path
  - WriteContext::args
  - WriteContext::options
  - WriteContext::calculate_chunk_size
  - WriteGenerator::create
  - WriteGenerator::new
  - WriteGenerator::write
  - WriteGenerator::close
  - WriteGenerator::abort
  - tests::sha256_digest
  - tests::setup
  - tests::test_exact_buf_writer_short_write
  - tests::test_inexact_buf_writer_large_write
  - tests::test_inexact_buf_writer_combine_small
  - tests::test_inexact_buf_writer_queue_remaining
  - tests::test_fuzz_exact_buf_writer
  - tests::test_exact_buf_writer_large_buffer_splits_into_chunks
  source_file: /src/opendal/core/core/src/types/context/write.rs
- function_names:
  - Writer::new
  - Writer::write
  - Writer::write_from
  - Writer::abort
  - Writer::close
  - Writer::into_sink
  - Writer::into_futures_async_write
  - Writer::into_bytes_sink
  - tests::gen_random_bytes
  - tests::test_writer_write
  - tests::test_writer_write_from
  - tests::test_writer_write_from_chain
  source_file: /src/opendal/core/core/src/types/write/writer.rs
- function_names: []
  source_file: /src/opendal/core/core/src/types/write/mod.rs
- function_names:
  - BufferSink::new
  - BufferSink::poll_ready
  - BufferSink::start_send
  - BufferSink::poll_flush
  - BufferSink::poll_close
  - tests::test_trait
  source_file: /src/opendal/core/core/src/types/write/buffer_sink.rs
- function_names:
  - FuturesAsyncWriter::new
  - FuturesAsyncWriter::poll_write
  - FuturesAsyncWriter::poll_flush
  - FuturesAsyncWriter::poll_close
  - tests::test_trait
  source_file: /src/opendal/core/core/src/types/write/futures_async_writer.rs
- function_names:
  - FuturesBytesSink::new
  - FuturesBytesSink::poll_ready
  - FuturesBytesSink::start_send
  - FuturesBytesSink::poll_flush
  - FuturesBytesSink::poll_close
  - tests::test_trait
  source_file: /src/opendal/core/core/src/types/write/futures_bytes_sink.rs
- function_names:
  - T::fetch_dyn
  - HttpTransporter::fmt
  - HttpTransporter::default
  - HttpTransporter::new
  - HttpTransporter::install_default
  - HttpTransporter::send
  - HttpTransporter::fetch
  - HttpTransporter::fetch
  - HttpTransporter::fetch
  - HttpTransporter::http_send
  - DefaultHttpTransport::fetch
  - DefaultHttpTransport::fetch
  - fetch_with_default_transport
  source_file: /src/opendal/core/core/src/types/http_transport/mod.rs
- function_names:
  - HttpBody::new
  - HttpBody::new
  - HttpBody::map_inner
  - HttpBody::map_inner
  - HttpBody::to_buffer
  - HttpBody::check
  - HttpBody::read
  source_file: /src/opendal/core/core/src/types/http_transport/body.rs
- function_names:
  - Reader::new
  - Reader::metadata
  - Reader::read
  - Reader::read_into
  - Reader::fetch
  - Reader::fetch_merged_ranges
  - Reader::plan_fetch_reads
  - Reader::push_fetch_output
  - Reader::merge_ranges
  - Reader::into_stream
  - Reader::into_futures_async_read
  - Reader::into_bytes_stream
  - tests::new_read_context
  - tests::new_mock_reader
  - tests::test_trait
  - tests::test_reader_metadata_after_read
  - tests::test_stream_metadata_updates_reader_metadata
  - tests::test_chunked_stream_metadata_updates_reader_metadata
  - tests::gen_random_bytes
  - tests::gen_fixed_bytes
  - tests::test_reader_read
  - tests::test_reader_read_with_chunk
  - tests::test_reader_read_with_concurrent
  - tests::test_reader_read_suffix
  - tests::test_reader_read_suffix_larger_than_content
  - tests::test_reader_read_suffix_zero
  - tests::test_reader_read_suffix_empty_content
  - tests::test_reader_read_suffix_with_chunk_and_concurrent
  - tests::test_reader_into_futures_async_read_suffix
  - tests::test_reader_read_into
  - tests::test_merge_ranges
  - tests::test_fetch
  - tests::test_fetch_empty_ranges
  - tests::test_fetch_skips_zero_length_ranges
  - tests::test_fetch_plans_merged_ranges_with_chunk
  source_file: /src/opendal/core/core/src/types/read/reader.rs
- function_names:
  - StreamingReader::new
  - StreamingReader::prepare_metadata
  - StreamingReader::metadata
  - StreamingReader::read
  - ChunkedReader::new
  - ChunkedReader::prepare_metadata
  - ChunkedReader::metadata
  - ChunkedReader::next_range
  - ChunkedReader::read
  - BufferStream::new
  - BufferStream::create
  - BufferStream::metadata
  - BufferStream::poll_next
  - tests::new_read_context
  - tests::test_trait
  - tests::test_buffer_stream
  source_file: /src/opendal/core/core/src/types/read/buffer_stream.rs
- function_names: []
  source_file: /src/opendal/core/core/src/types/read/mod.rs
- function_names:
  - FuturesBytesStream::new
  - FuturesBytesStream::metadata
  - FuturesBytesStream::poll_next
  - tests::new_read_context
  - tests::test_trait
  - tests::test_futures_bytes_stream
  - tests::test_futures_bytes_stream_with_concurrent
  source_file: /src/opendal/core/core/src/types/read/futures_bytes_stream.rs
- function_names:
  - FuturesAsyncReader::new
  - FuturesAsyncReader::poll_fill_buf
  - FuturesAsyncReader::consume
  - FuturesAsyncReader::poll_read
  - FuturesAsyncReader::poll_seek
  - tests::new_read_context
  - tests::test_trait
  - tests::test_futures_async_read
  - tests::test_futures_async_read_with_concurrent
  - tests::test_futures_async_buf_read
  - tests::test_seek_past_end_returns_error
  source_file: /src/opendal/core/core/src/types/read/futures_async_reader.rs
- function_names:
  - Execute::timeout
  - ()::execute
  - Task::new
  - Task::replace
  - Task::poll
  source_file: /src/opendal/core/core/src/types/execute/api.rs
- function_names:
  - Executor::fmt
  - Executor::default
  - Executor::new
  - Executor::with
  - Executor::into_inner
  - Executor::timeout
  - Executor::execute
  source_file: /src/opendal/core/core/src/types/execute/executor.rs
- function_names: []
  source_file: /src/opendal/core/core/src/types/execute/mod.rs
- function_names:
  - TokioExecutor::execute
  - tests::test_tokio_executor
  source_file: /src/opendal/core/core/src/types/execute/executors/tokio_executor.rs
- function_names: []
  source_file: /src/opendal/core/core/src/types/execute/executors/mod.rs
- function_names:
  - Operation::into_static
  - Operation::fmt
  - '&''static str::from'
  - String::from
  source_file: /src/opendal/core/core/src/raw/operation.rs
- function_names:
  - build_abs_path
  - build_rooted_abs_path
  - build_rel_path
  - normalize_path
  - normalize_root
  - get_basename
  - get_parent
  - build_tmp_path_of
  - validate_path
  - tests::test_normalize_path
  - tests::test_normalize_root
  - tests::test_get_basename
  - tests::test_get_parent
  - tests::test_build_abs_path
  - tests::test_build_rooted_abs_path
  - tests::test_build_rel_path
  - tests::test_validate_path
  - tests::test_build_tmp_path_of
  source_file: /src/opendal/core/core/src/raw/path.rs
- function_names:
  - Layer::apply_service
  - Layer::apply_context
  source_file: /src/opendal/core/core/src/raw/layer.rs
- function_names:
  - Timestamp::from_str
  - Timestamp::fmt
  - Timestamp::now
  - Timestamp::format_http_date
  - Timestamp::new
  - Timestamp::from_millisecond
  - Timestamp::from_second
  - Timestamp::parse_rfc2822
  - Timestamp::into_inner
  - jiff::Timestamp::from
  - Timestamp::from
  - SystemTime::from
  - Timestamp::try_from
  - Timestamp::add
  - Timestamp::add_assign
  - Timestamp::sub
  - Timestamp::sub_assign
  - signed_to_duration
  - tests::test_time
  - tests::test_format_http_date
  - tests::test_parse_rfc3339
  - tests::test_parse_rfc2822
  source_file: /src/opendal/core/core/src/raw/time.rs
- function_names:
  - OpCreateDir::new
  - OpDelete::new
  - OpDelete::with_version
  - OpDelete::with_recursive
  - OpDelete::version
  - OpDelete::recursive
  - OpDelete::from
  - OpDeleter::new
  - OpList::new
  - OpList::with_limit
  - OpList::limit
  - OpList::with_start_after
  - OpList::start_after
  - OpList::with_recursive
  - OpList::recursive
  - OpList::with_concurrent
  - OpList::concurrent
  - OpList::with_versions
  - OpList::versions
  - OpList::with_deleted
  - OpList::deleted
  - OpList::from
  - OpPresign::new
  - OpPresign::operation
  - OpPresign::expire
  - OpPresign::into_parts
  - PresignOperation::from
  - PresignOperation::from
  - PresignOperation::from
  - PresignOperation::from
  - OpRead::new
  - OpRead::with_override_content_disposition
  - OpRead::override_content_disposition
  - OpRead::with_override_cache_control
  - OpRead::override_cache_control
  - OpRead::with_override_content_type
  - OpRead::override_content_type
  - OpRead::with_if_match
  - OpRead::if_match
  - OpRead::with_if_none_match
  - OpRead::if_none_match
  - OpRead::with_if_modified_since
  - OpRead::if_modified_since
  - OpRead::with_if_unmodified_since
  - OpRead::if_unmodified_since
  - OpRead::with_version
  - OpRead::version
  - OpRead::content_length_hint
  - OpReader::default
  - OpReader::new
  - OpReader::with_concurrent
  - OpReader::concurrent
  - OpReader::with_chunk
  - OpReader::chunk
  - OpReader::with_gap
  - OpReader::gap
  - OpReader::with_prefetch
  - OpReader::prefetch
  - (BytesRange, OpRead, OpReader)::from
  - (OpRead, OpReader)::from
  - OpStat::new
  - OpStat::with_if_match
  - OpStat::if_match
  - OpStat::with_if_none_match
  - OpStat::if_none_match
  - OpStat::with_if_modified_since
  - OpStat::if_modified_since
  - OpStat::with_if_unmodified_since
  - OpStat::if_unmodified_since
  - OpStat::with_override_content_disposition
  - OpStat::override_content_disposition
  - OpStat::with_override_cache_control
  - OpStat::override_cache_control
  - OpStat::with_override_content_type
  - OpStat::override_content_type
  - OpStat::with_version
  - OpStat::version
  - OpStat::from
  - OpWrite::new
  - OpWrite::append
  - OpWrite::with_append
  - OpWrite::content_type
  - OpWrite::with_content_type
  - OpWrite::content_disposition
  - OpWrite::with_content_disposition
  - OpWrite::content_encoding
  - OpWrite::with_content_encoding
  - OpWrite::cache_control
  - OpWrite::with_cache_control
  - OpWrite::concurrent
  - OpWrite::with_concurrent
  - OpWrite::with_if_match
  - OpWrite::if_match
  - OpWrite::with_if_none_match
  - OpWrite::if_none_match
  - OpWrite::with_if_not_exists
  - OpWrite::if_not_exists
  - OpWrite::with_user_metadata
  - OpWrite::user_metadata
  - OpWriter::new
  - OpWriter::chunk
  - OpWriter::with_chunk
  - (OpWrite, OpWriter)::from
  - OpCopy::new
  - OpCopy::with_if_not_exists
  - OpCopy::if_not_exists
  - OpCopy::with_if_match
  - OpCopy::if_match
  - OpCopy::with_source_version
  - OpCopy::source_version
  - OpCopier::new
  - OpCopier::with_concurrent
  - OpCopier::concurrent
  - OpCopier::with_chunk
  - OpCopier::chunk
  - OpCopier::with_source_content_length_hint
  - OpCopier::source_content_length_hint
  - (OpCopy, OpCopier)::from
  - OpRename::new
  - OpRename::with_if_not_exists
  - OpRename::if_not_exists
  - OpRename::from
  source_file: /src/opendal/core/core/src/raw/ops.rs
- function_names:
  - RpPresign::new
  - RpPresign::into_presigned_request
  - PresignedRequest::new
  - PresignedRequest::method
  - PresignedRequest::uri
  - PresignedRequest::header
  - Request::from
  - RpRead::new
  - RpRead::metadata
  - RpRead::into_metadata
  - RpStat::new
  - RpStat::map_metadata
  - RpStat::into_metadata
  - RpWrite::new
  - RpCopy::new
  - RpRename::new
  - tests::test_presigned_request_convert
  source_file: /src/opendal/core/core/src/raw/rps.rs
- function_names:
  - new_xml_serialize_error
  - new_xml_deserialize_error
  - new_json_serialize_error
  - new_json_deserialize_error
  - ConfigDeserializer::new
  - ConfigDeserializer::deserialize_any
  - ConfigDeserializer::deserialize_map
  - Pairs::next
  - Pair::into_deserializer
  - Pair::deserialize_any
  - Pair::deserialize_bool
  - Pair::deserialize_i8
  - Pair::deserialize_i16
  - Pair::deserialize_i32
  - Pair::deserialize_i64
  - Pair::deserialize_u8
  - Pair::deserialize_u16
  - Pair::deserialize_u32
  - Pair::deserialize_u64
  - Pair::deserialize_f32
  - Pair::deserialize_f64
  - Pair::deserialize_option
  - Pair::deserialize_seq
  - tests::test_config_deserializer
  - tests::test_part_config_deserializer
  source_file: /src/opendal/core/core/src/raw/serde_util.rs
- function_names:
  - ConcurrentTasks::new
  - ConcurrentTasks::is_concurrent
  - ConcurrentTasks::clear
  - ConcurrentTasks::has_remaining
  - ConcurrentTasks::has_result
  - ConcurrentTasks::create_task
  - ConcurrentTasks::execute
  - ConcurrentTasks::next
  - tests::test_concurrent_tasks
  - tests::test_prefetch_backpressure
  - tests::test_prefetch_zero
  source_file: /src/opendal/core/core/src/raw/futures_util.rs
- function_names: []
  source_file: /src/opendal/core/core/src/raw/mod.rs
- function_names:
  - new_task_join_error
  source_file: /src/opendal/core/core/src/raw/tokio_util.rs
- function_names:
  - new_std_io_error
  - format_std_io_error
  source_file: /src/opendal/core/core/src/raw/std_io_util.rs
- function_names:
  - TwoWays::read
  - TwoWays::write
  - TwoWays::close
  - TwoWays::abort
  - TwoWays::next
  - TwoWays::close
  - TwoWays::abort
  - TwoWays::next
  - ThreeWays::read
  - ThreeWays::write
  - ThreeWays::close
  - ThreeWays::abort
  - ThreeWays::next
  - FourWays::read
  - FourWays::next
  source_file: /src/opendal/core/core/src/raw/enum_utils.rs
- function_names:
  - ServiceInfo::fmt
  - ServiceInfo::new
  - ServiceInfo::with_scheme
  - ServiceInfo::with_root
  - ServiceInfo::scheme
  - ServiceInfo::root
  - ServiceInfo::name
  - S::info_dyn
  - S::capability_dyn
  - S::create_dir_dyn
  - S::stat_dyn
  - S::read_dyn
  - S::write_dyn
  - S::delete_dyn
  - S::list_dyn
  - S::copy_dyn
  - S::rename_dyn
  - S::presign_dyn
  - Arc::info
  - Arc::capability
  - Arc::create_dir
  - Arc::stat
  - Arc::read
  - Arc::write
  - Arc::delete
  - Arc::list
  - Arc::copy
  - Arc::rename
  - Arc::presign
  - ()::info
  - ()::capability
  - ()::create_dir
  - ()::stat
  - ()::read
  - ()::write
  - ()::delete
  - ()::list
  - ()::copy
  - ()::rename
  - ()::presign
  source_file: /src/opendal/core/core/src/raw/accessor.rs
- function_names: []
  source_file: /src/opendal/core/core/src/raw/version.rs
- function_names:
  - parse_location
  - parse_cache_control
  - parse_content_length
  - parse_content_md5
  - parse_content_type
  - parse_content_encoding
  - parse_content_range
  - parse_last_modified
  - parse_etag
  - parse_content_disposition
  - parse_multipart_boundary
  - parse_header_to_str
  - parse_into_metadata
  - parse_prefixed_headers
  - format_content_md5
  - format_content_md5_iter
  - format_authorization_by_basic
  - format_authorization_by_bearer
  - build_header_value
  - tests::test_format_content_md5
  - tests::test_format_authorization_by_basic
  - tests::test_format_authorization_by_bearer
  - tests::test_parse_multipart_boundary
  source_file: /src/opendal/core/core/src/raw/http_util/header.rs
- function_names:
  - new_request_build_error
  - new_request_credential_error
  - new_request_sign_error
  - with_error_response_context
  source_file: /src/opendal/core/core/src/raw/http_util/error.rs
- function_names: []
  source_file: /src/opendal/core/core/src/raw/http_util/mod.rs
- function_names:
  - Multipart::default
  - Multipart::new
  - Multipart::with_boundary
  - Multipart::part
  - Multipart::into_parts
  - Multipart::parse
  - Multipart::build
  - Multipart::apply
  - FormDataPart::new
  - FormDataPart::header
  - FormDataPart::content
  - FormDataPart::format
  - FormDataPart::parse
  - MixedPart::new
  - MixedPart::from_request
  - MixedPart::into_response
  - MixedPart::part_header
  - MixedPart::method
  - MixedPart::version
  - MixedPart::header
  - MixedPart::content
  - MixedPart::format
  - MixedPart::parse
  - RelatedPart::default
  - RelatedPart::new
  - RelatedPart::from_request
  - RelatedPart::into_response
  - RelatedPart::header
  - RelatedPart::content
  - RelatedPart::format
  - RelatedPart::parse
  - tests::test_multipart_formdata_basic
  - tests::test_multipart_formdata_s3_form_upload
  - tests::test_multipart_mixed_gcs_batch_metadata
  - tests::test_multipart_mixed_azblob_batch_delete
  - tests::test_multipart_mixed_gcs_batch_metadata_response
  - tests::test_multipart_related_gcs_simple
  source_file: /src/opendal/core/core/src/raw/http_util/multipart.rs
- function_names:
  - BytesContentRange::with_range
  - BytesContentRange::with_size
  - BytesContentRange::len
  - BytesContentRange::size
  - BytesContentRange::range
  - BytesContentRange::range_inclusive
  - BytesContentRange::to_header
  - BytesContentRange::fmt
  - BytesContentRange::from_str
  - tests::test_bytes_content_range_from_str
  - tests::test_bytes_content_range_to_string
  - tests::test_bytes_content_range_to_header
  - tests::test_bytes_content_range_from_str_invalid_end_less_than_start
  - tests::test_bytes_content_range_len_no_underflow
  source_file: /src/opendal/core/core/src/raw/http_util/bytes_content_range.rs
- function_names:
  - new_http_uri_invalid_error
  - percent_encode_path
  - percent_decode_path
  - QueryPairsWriter::new
  - QueryPairsWriter::push
  - QueryPairsWriter::finish
  - tests::test_percent_encode_path
  - tests::test_percent_decode_path
  source_file: /src/opendal/core/core/src/raw/http_util/uri.rs
- function_names: []
  source_file: /src/opendal/core/core/src/raw/oio/mod.rs
- function_names:
  - Entry::new
  - Entry::with
  - Entry::set_path
  - Entry::path
  - Entry::set_mode
  - Entry::mode
  - Entry::into_entry
  - Entry::metadata
  - Entry::metadata_mut
  - Entry::into_parts
  source_file: /src/opendal/core/core/src/raw/oio/entry.rs
- function_names:
  - HierarchyLister::new
  - HierarchyLister::keep_entry
  - HierarchyLister::next
  source_file: /src/opendal/core/core/src/raw/oio/list/hierarchy_list.rs
- function_names:
  - ()::next
  - Option::next
  - T::next_dyn
  - Box::next
  source_file: /src/opendal/core/core/src/raw/oio/list/api.rs
- function_names:
  - FlatLister::new
  - FlatLister::next
  source_file: /src/opendal/core/core/src/raw/oio/list/flat_list.rs
- function_names:
  - PageLister::new
  - PageLister::next
  source_file: /src/opendal/core/core/src/raw/oio/list/page_list.rs
- function_names:
  - PrefixLister::new
  - PrefixLister::next
  source_file: /src/opendal/core/core/src/raw/oio/list/prefix_list.rs
- function_names: []
  source_file: /src/opendal/core/core/src/raw/oio/list/mod.rs
- function_names:
  - ()::delete
  - ()::close
  - T::delete_dyn
  - T::close_dyn
  - Box::delete
  - Box::close
  source_file: /src/opendal/core/core/src/raw/oio/delete/api.rs
- function_names: []
  source_file: /src/opendal/core/core/src/raw/oio/delete/mod.rs
- function_names:
  - OneShotDeleter::new
  - OneShotDeleter::delete
  - OneShotDeleter::close
  source_file: /src/opendal/core/core/src/raw/oio/delete/one_shot_delete.rs
- function_names:
  - BatchDeleter::new
  - BatchDeleter::flush_buffer
  - BatchDeleter::delete
  - BatchDeleter::close
  source_file: /src/opendal/core/core/src/raw/oio/delete/batch_delete.rs
- function_names:
  - ()::next
  - ()::close
  - ()::abort
  - OneShotCopier::new
  - OneShotCopier::new_with
  - OneShotCopier::completed
  - OneShotCopier::next
  - OneShotCopier::close
  - OneShotCopier::abort
  - T::next_dyn
  - T::close_dyn
  - T::abort_dyn
  - Box::next
  - Box::close
  - Box::abort
  - tests::one_shot_copier_rebuilds_future_after_error
  - tests::one_shot_copier_does_not_succeed_after_consumed_error
  source_file: /src/opendal/core/core/src/raw/oio/copy/api.rs
- function_names: []
  source_file: /src/opendal/core/core/src/raw/oio/copy/mod.rs
- function_names:
  - Executor::into_multipart_copy_context
  - (Executor, Capability)::into_multipart_copy_context
  - CopyInput::clone
  - MultipartCopier::new
  - MultipartCopier::source_size
  - MultipartCopier::validate_part_count
  - MultipartCopier::upload_id
  - MultipartCopier::fill_tasks
  - MultipartCopier::next
  - MultipartCopier::close
  - MultipartCopier::abort
  - tests::test_content_length_hint_skips_source_metadata
  - tests::test_missing_content_length_hint_loads_source_metadata
  - tests::test_validate_part_count_rejects_before_initiate
  source_file: /src/opendal/core/core/src/raw/oio/copy/multipart_copy.rs
- function_names:
  - CopyInput::clone
  - BlockCopier::new
  - BlockCopier::source_size
  - BlockCopier::fill_tasks
  - BlockCopier::next
  - BlockCopier::close
  - BlockCopier::abort
  - tests::test_block_copier_completes_blocks_in_source_order
  source_file: /src/opendal/core/core/src/raw/oio/copy/block_copy.rs
- function_names:
  - ()::write
  - ()::close
  - ()::abort
  - T::write_dyn
  - T::close_dyn
  - T::abort_dyn
  - Box::write
  - Box::close
  - Box::abort
  source_file: /src/opendal/core/core/src/raw/oio/write/api.rs
- function_names:
  - AppendWriter::new
  - AppendWriter::write
  - AppendWriter::close
  - AppendWriter::abort
  source_file: /src/opendal/core/core/src/raw/oio/write/append_write.rs
- function_names:
  - OneShotWriter::new
  - OneShotWriter::write
  - OneShotWriter::close
  - OneShotWriter::abort
  source_file: /src/opendal/core/core/src/raw/oio/write/one_shot_write.rs
- function_names:
  - BlockWriter::new
  - BlockWriter::fill_cache
  - BlockWriter::write
  - BlockWriter::close
  - BlockWriter::abort
  - tests::test_block_writer_with_concurrent_errors
  - tests::test_block_writer_with_retry_when_write_once_error
  source_file: /src/opendal/core/core/src/raw/oio/write/block_write.rs
- function_names:
  - PositionWriter::new
  - PositionWriter::fill_cache
  - PositionWriter::write
  - PositionWriter::close
  - PositionWriter::abort
  - tests::test_position_writer_with_concurrent_errors
  source_file: /src/opendal/core/core/src/raw/oio/write/position_write.rs
- function_names: []
  source_file: /src/opendal/core/core/src/raw/oio/write/mod.rs
- function_names:
  - MultipartWriter::new
  - MultipartWriter::fill_cache
  - MultipartWriter::write
  - MultipartWriter::close
  - MultipartWriter::abort
  - tests::test_multipart_upload_writer_with_concurrent_errors
  - tests::test_multipart_writer_with_retry_when_write_once_error
  source_file: /src/opendal/core/core/src/raw/oio/write/multipart_write.rs
- function_names:
  - FlexBuf::new
  - FlexBuf::put
  - FlexBuf::freeze
  - FlexBuf::get
  - FlexBuf::advance
  - FlexBuf::clean
  source_file: /src/opendal/core/core/src/raw/oio/buf/flex_buf.rs
- function_names: []
  source_file: /src/opendal/core/core/src/raw/oio/buf/mod.rs
- function_names:
  - PooledBuf::fmt
  - PooledBuf::new
  - PooledBuf::with_initial_capacity
  - PooledBuf::get
  - PooledBuf::put
  - tests::test_pooled_buf
  source_file: /src/opendal/core/core/src/raw/oio/buf/pooled_buf.rs
- function_names:
  - QueueBuf::new
  - QueueBuf::push
  - QueueBuf::len
  - QueueBuf::is_empty
  - QueueBuf::take
  - QueueBuf::collect
  - QueueBuf::advance
  - QueueBuf::clear
  source_file: /src/opendal/core/core/src/raw/oio/buf/queue_buf.rs
- function_names:
  - StreamReader::new
  - StreamReader::into_inner
  - StreamReader::open
  - StreamReader::read
  source_file: /src/opendal/core/core/src/raw/oio/read/stream_read.rs
- function_names:
  - ()::open
  - ()::read
  - T::open_dyn
  - T::read_dyn
  - Box::open
  - Box::read
  - ReadStream::read_all
  - ()::read
  - Bytes::read
  - Buffer::read
  - T::read_dyn
  - T::read_all_dyn
  - Box::read
  - Box::read_all
  source_file: /src/opendal/core/core/src/raw/oio/read/api.rs
- function_names:
  - PositionReader::new
  - PositionReader::with_max_buf_size
  - PositionReader::into_inner
  - PositionReader::handle
  - PositionReader::open
  - PositionReader::read
  - PositionReadStream::new
  - PositionReadStream::read
  - check_position_read_size
  - tests::test_position_reader_read_handles_partial_reads
  - tests::test_position_reader_read_reports_early_eof
  - tests::test_position_reader_open_stops_at_eof
  source_file: /src/opendal/core/core/src/raw/oio/read/position_read.rs
- function_names: []
  source_file: /src/opendal/core/core/src/raw/oio/read/mod.rs
- function_names:
  - GhacConfig::fmt
  - GhacConfig::from_uri
  - GhacConfig::into_builder
  - tests::from_uri_sets_endpoint_version_and_root
  - tests::from_uri_respects_version_override
  source_file: /src/opendal/core/services/ghac/src/config.rs
- function_names:
  - GhacReader::new
  - GhacReader::open
  source_file: /src/opendal/core/services/ghac/src/reader.rs
- function_names:
  - GhacCore::fmt
  - GhacCore::ghac_get_download_url
  - GhacCore::ghac_stat
  - GhacCore::ghac_read
  - GhacCore::ghac_get_upload_url
  - GhacCore::ghac_v1_write
  - GhacCore::ghac_finalize_upload
  - build_cache_url
  - is_ghes
  - get_cache_service_version
  - get_cache_service_url
  - new_prost_decode_error
  - tests::test_build_cache_url_handles_trailing_slash
  - tests::test_build_cache_url_handles_leading_slash
  - error::parse_error
  source_file: /src/opendal/core/services/ghac/src/core.rs
- function_names:
  - GhacWriter::new
  - GhacLazyWriter::new
  - GhacLazyWriter::inner
  - GhacLazyWriter::write
  - GhacLazyWriter::abort
  - GhacLazyWriter::close
  - GhacWriter::write
  - GhacWriter::abort
  - GhacWriter::close
  - GhacWriterV1::write
  - GhacWriterV1::abort
  - GhacWriterV1::close
  - GhacWriterV2::write
  - GhacWriterV2::close
  - GhacWriterV2::abort
  source_file: /src/opendal/core/services/ghac/src/writer.rs
- function_names:
  - register_ghac_service
  source_file: /src/opendal/core/services/ghac/src/lib.rs
- function_names:
  - value_or_env
  - GhacBuilder::fmt
  - GhacBuilder::root
  - GhacBuilder::version
  - GhacBuilder::endpoint
  - GhacBuilder::runtime_token
  - GhacBuilder::build
  - format_digest_hex
  - GhacBackend::info
  - GhacBackend::capability
  - GhacBackend::create_dir
  - GhacBackend::stat
  - GhacBackend::read
  - GhacBackend::write
  - GhacBackend::delete
  - GhacBackend::list
  - GhacBackend::copy
  - GhacBackend::rename
  - GhacBackend::presign
  source_file: /src/opendal/core/services/ghac/src/backend.rs
- function_names:
  - CacacheConfig::from_uri
  - CacacheConfig::into_builder
  - tests::from_uri_sets_datadir_from_authority
  - tests::from_uri_falls_back_to_path
  source_file: /src/opendal/core/services/cacache/src/config.rs
- function_names:
  - CacacheDeleter::new
  - CacacheDeleter::delete_once
  source_file: /src/opendal/core/services/cacache/src/deleter.rs
- function_names:
  - CacacheReader::new
  - CacacheReader::open
  source_file: /src/opendal/core/services/cacache/src/reader.rs
- function_names:
  - CacacheCore::fmt
  - CacacheCore::get
  - CacacheCore::set
  - CacacheCore::delete
  - CacacheCore::metadata
  source_file: /src/opendal/core/services/cacache/src/core.rs
- function_names:
  - CacacheWriter::new
  - CacacheWriter::write
  - CacacheWriter::close
  - CacacheWriter::abort
  source_file: /src/opendal/core/services/cacache/src/writer.rs
- function_names:
  - register_cacache_service
  source_file: /src/opendal/core/services/cacache/src/lib.rs
- function_names:
  - CacacheBuilder::datadir
  - CacacheBuilder::build
  - CacacheBackend::info
  - CacacheBackend::capability
  - CacacheBackend::create_dir
  - CacacheBackend::stat
  - CacacheBackend::read
  - CacacheBackend::write
  - CacacheBackend::delete
  - CacacheBackend::list
  - CacacheBackend::copy
  - CacacheBackend::rename
  - CacacheBackend::presign
  source_file: /src/opendal/core/services/cacache/src/backend.rs
- function_names:
  - DashmapConfig::from_uri
  - DashmapConfig::into_builder
  - tests::from_uri_sets_root
  source_file: /src/opendal/core/services/dashmap/src/config.rs
- function_names:
  - DashmapDeleter::new
  - DashmapDeleter::delete_once
  source_file: /src/opendal/core/services/dashmap/src/deleter.rs
- function_names:
  - DashmapLister::new
  - DashmapLister::next
  source_file: /src/opendal/core/services/dashmap/src/lister.rs
- function_names:
  - DashmapReader::new
  - DashmapReader::open
  source_file: /src/opendal/core/services/dashmap/src/reader.rs
- function_names:
  - DashmapCore::fmt
  - DashmapCore::get
  - DashmapCore::set
  - DashmapCore::delete
  source_file: /src/opendal/core/services/dashmap/src/core.rs
- function_names:
  - DashmapWriter::new
  - DashmapWriter::write
  - DashmapWriter::close
  - DashmapWriter::abort
  source_file: /src/opendal/core/services/dashmap/src/writer.rs
- function_names:
  - register_dashmap_service
  source_file: /src/opendal/core/services/dashmap/src/lib.rs
- function_names:
  - DashmapBuilder::root
  - DashmapBuilder::build
  - DashmapBackend::new
  - DashmapBackend::info
  - DashmapBackend::capability
  - DashmapBackend::create_dir
  - DashmapBackend::stat
  - DashmapBackend::read
  - DashmapBackend::write
  - DashmapBackend::delete
  - DashmapBackend::list
  - DashmapBackend::copy
  - DashmapBackend::rename
  - DashmapBackend::presign
  source_file: /src/opendal/core/services/dashmap/src/backend.rs
- function_names:
  - SftpConfig::fmt
  - SftpConfig::from_uri
  - SftpConfig::into_builder
  - tests::from_uri_sets_endpoint_and_root
  - tests::from_uri_applies_connection_overrides
  source_file: /src/opendal/core/services/sftp/src/config.rs
- function_names:
  - SftpDeleter::new
  - SftpDeleter::delete_once
  source_file: /src/opendal/core/services/sftp/src/deleter.rs
- function_names:
  - SftpLister::new
  - SftpLister::next
  - map_entry
  source_file: /src/opendal/core/services/sftp/src/lister.rs
- function_names:
  - SftpReadStream::new
  - SftpReadStream::read
  - SftpReader::new
  - SftpReader::open
  - SftpLazyWriter::new
  - SftpLazyWriter::inner
  - SftpLazyWriter::write
  - SftpLazyWriter::close
  - SftpLazyWriter::abort
  - SftpLazyLister::new
  - SftpLazyLister::next
  source_file: /src/opendal/core/services/sftp/src/reader.rs
- function_names:
  - SftpCore::fmt
  - SftpCore::new
  - SftpCore::connect
  - Manager::create
  - Manager::is_recyclable
  - error::parse_sftp_error
  - error::parse_ssh_error
  - error::is_not_found
  - error::is_sftp_protocol_error
  - error::is_sftp_failure
  - utils::to_metadata
  source_file: /src/opendal/core/services/sftp/src/core.rs
- function_names:
  - SftpWriter::new
  - SftpWriter::write
  - SftpWriter::close
  - SftpWriter::abort
  source_file: /src/opendal/core/services/sftp/src/writer.rs
- function_names:
  - register_sftp_service
  source_file: /src/opendal/core/services/sftp/src/lib.rs
- function_names:
  - SftpBuilder::endpoint
  - SftpBuilder::root
  - SftpBuilder::user
  - SftpBuilder::key
  - SftpBuilder::known_hosts_strategy
  - SftpBuilder::enable_copy
  - SftpBuilder::build
  - SftpBackend::info
  - SftpBackend::capability
  - SftpBackend::create_dir
  - SftpBackend::stat
  - SftpBackend::read
  - SftpBackend::write
  - SftpBackend::delete
  - SftpBackend::list
  - SftpBackend::copy
  - SftpBackend::rename
  - SftpBackend::presign
  source_file: /src/opendal/core/services/sftp/src/backend.rs
- function_names:
  - PcloudConfig::fmt
  - PcloudConfig::from_uri
  - PcloudConfig::into_builder
  - tests::from_uri_sets_endpoint_and_root
  - tests::from_uri_allows_missing_authority
  source_file: /src/opendal/core/services/pcloud/src/config.rs
- function_names:
  - PcloudDeleter::new
  - PcloudDeleter::delete_once
  source_file: /src/opendal/core/services/pcloud/src/deleter.rs
- function_names:
  - PcloudLister::new
  - PcloudLister::next_page
  source_file: /src/opendal/core/services/pcloud/src/lister.rs
- function_names:
  - PcloudReader::new
  - PcloudReader::open
  source_file: /src/opendal/core/services/pcloud/src/reader.rs
- function_names:
  - PcloudCore::fmt
  - PcloudCore::send
  - PcloudCore::get_file_link
  - PcloudCore::download
  - PcloudCore::ensure_dir_exists
  - PcloudCore::create_folder_if_not_exists
  - PcloudCore::rename_file
  - PcloudCore::rename_folder
  - PcloudCore::delete_folder
  - PcloudCore::delete_file
  - PcloudCore::copy_file
  - PcloudCore::copy_folder
  - PcloudCore::stat
  - PcloudCore::upload_file
  - PcloudCore::list_folder
  - parse_stat_metadata
  - parse_list_metadata
  - error::parse_error
  - error::test_parse_error
  source_file: /src/opendal/core/services/pcloud/src/core.rs
- function_names:
  - PcloudWriter::new
  - PcloudWriter::write_once
  source_file: /src/opendal/core/services/pcloud/src/writer.rs
- function_names:
  - register_pcloud_service
  source_file: /src/opendal/core/services/pcloud/src/lib.rs
- function_names:
  - PcloudBuilder::fmt
  - PcloudBuilder::root
  - PcloudBuilder::endpoint
  - PcloudBuilder::username
  - PcloudBuilder::password
  - PcloudBuilder::build
  - PcloudBackend::info
  - PcloudBackend::capability
  - PcloudBackend::create_dir
  - PcloudBackend::stat
  - PcloudBackend::read
  - PcloudBackend::write
  - PcloudBackend::delete
  - PcloudBackend::list
  - PcloudBackend::copy
  - PcloudBackend::rename
  - PcloudBackend::presign
  source_file: /src/opendal/core/services/pcloud/src/backend.rs
- function_names:
  - AzblobConfig::fmt
  - AzblobConfig::from_uri
  - AzblobConfig::into_builder
  - tests::test_container_name_aliases
  - tests::test_account_name_aliases
  - tests::test_account_key_aliases
  - tests::test_sas_token_aliases
  - tests::test_endpoint_aliases
  - tests::from_uri_with_host_container
  - tests::from_uri_with_path_container
  source_file: /src/opendal/core/services/azblob/src/config.rs
- function_names:
  - AzblobDeleter::new
  - AzblobDeleter::delete_once
  - AzblobDeleter::delete_batch
  source_file: /src/opendal/core/services/azblob/src/deleter.rs
- function_names:
  - AzblobLister::new
  - AzblobLister::next_page
  source_file: /src/opendal/core/services/azblob/src/lister.rs
- function_names:
  - AzblobReader::new
  - AzblobReader::open
  source_file: /src/opendal/core/services/azblob/src/reader.rs
- function_names:
  - new_azblob_copier
  - AzblobCopier::source_metadata
  - AzblobCopier::copy_once
  - AzblobCopier::copy_block
  - AzblobCopier::complete_block
  - AzblobCopier::abort_block
  source_file: /src/opendal/core/services/azblob/src/copier.rs
- function_names:
  - AzblobCore::fmt
  - AzblobCore::signer
  - AzblobCore::sign_query
  - AzblobCore::sign
  - AzblobCore::batch_sign
  - AzblobCore::send
  - AzblobCore::insert_sse_headers
  - AzblobCore::build_path_url
  - AzblobCore::azblob_get_blob_request
  - AzblobCore::azblob_get_blob
  - AzblobCore::azblob_put_blob_request
  - AzblobCore::azblob_put_blob
  - AzblobCore::azblob_init_appendable_blob_request
  - AzblobCore::azblob_init_appendable_blob
  - AzblobCore::azblob_append_blob_request
  - AzblobCore::azblob_append_blob
  - AzblobCore::azblob_put_block_request
  - AzblobCore::azblob_put_block
  - AzblobCore::azblob_put_block_from_url_request
  - AzblobCore::azblob_put_block_from_url
  - AzblobCore::azblob_complete_put_block_list_request
  - AzblobCore::azblob_complete_put_block_list
  - AzblobCore::azblob_complete_copy_block_list_request
  - AzblobCore::azblob_complete_copy_block_list
  - AzblobCore::azblob_head_blob_request
  - AzblobCore::azblob_get_blob_properties
  - AzblobCore::azblob_delete_blob_request
  - AzblobCore::azblob_delete_blob
  - AzblobCore::azblob_copy_blob
  - AzblobCore::azblob_list_blobs
  - AzblobCore::azblob_batch_delete
  - tests::test_parse_xml
  - tests::test_parse_overlapped_lists
  - tests::test_serialize_put_block_list_request
  - error::parse_error
  - error::test_parse_error
  - error::test_parse_error_with_reason
  source_file: /src/opendal/core/services/azblob/src/core.rs
- function_names:
  - AzblobWriter::new
  - AzblobWriter::parse_metadata
  - AzblobWriter::offset
  - AzblobWriter::append
  - AzblobWriter::write_once
  - AzblobWriter::write_block
  - AzblobWriter::complete_block
  - AzblobWriter::abort_block
  source_file: /src/opendal/core/services/azblob/src/writer.rs
- function_names:
  - register_azblob_service
  source_file: /src/opendal/core/services/azblob/src/lib.rs
- function_names:
  - AzblobConfig::from
  - AzblobBuilder::fmt
  - AzblobBuilder::root
  - AzblobBuilder::container
  - AzblobBuilder::endpoint
  - AzblobBuilder::account_name
  - AzblobBuilder::account_key
  - AzblobBuilder::encryption_key
  - AzblobBuilder::encryption_key_sha256
  - AzblobBuilder::encryption_algorithm
  - AzblobBuilder::server_side_encryption_with_customer_key
  - AzblobBuilder::sas_token
  - AzblobBuilder::batch_max_operations
  - AzblobBuilder::skip_signature
  - AzblobBuilder::from_connection_string
  - AzblobBuilder::build
  - AzblobBackend::info
  - AzblobBackend::capability
  - AzblobBackend::create_dir
  - AzblobBackend::stat
  - AzblobBackend::read
  - AzblobBackend::write
  - AzblobBackend::delete
  - AzblobBackend::list
  - AzblobBackend::copy
  - AzblobBackend::rename
  - AzblobBackend::presign
  source_file: /src/opendal/core/services/azblob/src/backend.rs
- function_names:
  - CompfsConfig::from_uri
  - CompfsConfig::into_builder
  - tests::from_uri_sets_root
  source_file: /src/opendal/core/services/compfs/src/config.rs
- function_names:
  - CompfsDeleter::new
  - CompfsDeleter::delete_once
  source_file: /src/opendal/core/services/compfs/src/deleter.rs
- function_names:
  - CompfsLister::new
  - normalize
  - next_entry
  - CompfsLister::next
  source_file: /src/opendal/core/services/compfs/src/lister.rs
- function_names:
  - CompfsReader::new
  - CompfsReaderHandle::new
  - CompfsReader::open
  - CompfsReader::read_at
  - CompfsLazyWriter::new
  - CompfsLazyWriter::inner
  - CompfsLazyWriter::write
  - CompfsLazyWriter::close
  - CompfsLazyWriter::abort
  - CompfsLazyLister::new
  - CompfsLazyLister::next
  source_file: /src/opendal/core/services/compfs/src/reader.rs
- function_names:
  - CompfsBuffer::as_init
  - opendal_core::Buffer::from
  - CompfsBuffer::from
  - CompfsBuffer::iter_slice
  - CompfsCore::prepare_path
  - CompfsCore::exec
  - CompfsCore::exec_blocking
  - tests::setup_buffer
  - tests::test_io_buf
  - tests::test_io_vectored_buf
  - tests::new_test_core
  - tests::test_prepare_path_rejects_parent_dir
  - tests::test_prepare_path_allows_normal_keys
  source_file: /src/opendal/core/services/compfs/src/core.rs
- function_names:
  - CompfsWriter::new
  - CompfsWriter::write
  - CompfsWriter::close
  - CompfsWriter::abort
  source_file: /src/opendal/core/services/compfs/src/writer.rs
- function_names:
  - register_compfs_service
  source_file: /src/opendal/core/services/compfs/src/lib.rs
- function_names:
  - CompfsBuilder::root
  - CompfsBuilder::build
  - CompfsBackend::info
  - CompfsBackend::capability
  - CompfsBackend::create_dir
  - CompfsBackend::stat
  - CompfsBackend::delete
  - CompfsBackend::copy
  - CompfsBackend::rename
  - CompfsBackend::read
  - CompfsBackend::write
  - CompfsBackend::list
  - CompfsBackend::presign
  source_file: /src/opendal/core/services/compfs/src/backend.rs
- function_names:
  - OssConfig::fmt
  - OssConfig::from_uri
  - OssConfig::into_builder
  - tests::from_uri_extracts_bucket_and_root
  source_file: /src/opendal/core/services/oss/src/config.rs
- function_names:
  - OssDeleter::new
  - OssDeleter::delete_once
  - OssDeleter::delete_batch
  source_file: /src/opendal/core/services/oss/src/deleter.rs
- function_names:
  - OssLister::new
  - OssLister::next_page
  - OssObjectVersionsLister::new
  - OssObjectVersionsLister::next_page
  source_file: /src/opendal/core/services/oss/src/lister.rs
- function_names:
  - OssReader::new
  - OssReader::open
  source_file: /src/opendal/core/services/oss/src/reader.rs
- function_names:
  - OssCore::fmt
  - OssCore::signer
  - OssCore::sign
  - OssCore::sign_query
  - OssCore::send
  - OssCore::insert_sse_headers
  - OssCore::insert_metadata_headers
  - OssCore::check_user_metadata_key
  - OssCore::parse_metadata
  - OssCore::oss_put_object_request
  - OssCore::oss_append_object_request
  - OssCore::oss_get_object_request
  - OssCore::oss_delete_object_request
  - OssCore::oss_head_object_request
  - OssCore::oss_list_object_request
  - OssCore::oss_get_object
  - OssCore::oss_head_object
  - OssCore::oss_copy_object
  - OssCore::oss_list_object
  - OssCore::oss_list_object_versions
  - OssCore::oss_delete_object
  - OssCore::oss_delete_objects
  - OssCore::get_endpoint
  - OssCore::oss_initiate_upload
  - OssCore::oss_upload_part_request
  - OssCore::oss_complete_multipart_upload_request
  - OssCore::oss_abort_multipart_upload
  - tests::test_serialize_delete_objects_request
  - tests::test_deserialize_delete_objects_result
  - tests::test_deserialize_initiate_multipart_upload_response
  - tests::test_serialize_complete_multipart_upload_request
  - tests::test_parse_list_output
  - error::parse_error
  - error::test_parse_error
  source_file: /src/opendal/core/services/oss/src/core.rs
- function_names:
  - OssWriter::new
  - OssWriter::parse_metadata
  - OssWriter::write_once
  - OssWriter::initiate_part
  - OssWriter::write_part
  - OssWriter::complete_part
  - OssWriter::abort_part
  - OssWriter::offset
  - OssWriter::append
  source_file: /src/opendal/core/services/oss/src/writer.rs
- function_names:
  - register_oss_service
  source_file: /src/opendal/core/services/oss/src/lib.rs
- function_names:
  - OssBuilder::fmt
  - OssBuilder::root
  - OssBuilder::bucket
  - OssBuilder::endpoint
  - OssBuilder::addressing_style
  - OssBuilder::enable_versioning
  - OssBuilder::presign_endpoint
  - OssBuilder::presign_addressing_style
  - OssBuilder::access_key_id
  - OssBuilder::access_key_secret
  - OssBuilder::security_token
  - OssBuilder::parse_endpoint
  - OssBuilder::server_side_encryption
  - OssBuilder::server_side_encryption_key_id
  - OssBuilder::batch_max_operations
  - OssBuilder::delete_max_size
  - OssBuilder::skip_signature
  - OssBuilder::allow_anonymous
  - OssBuilder::role_arn
  - OssBuilder::role_session_name
  - OssBuilder::oidc_provider_arn
  - OssBuilder::oidc_token_file
  - OssBuilder::sts_endpoint
  - OssBuilder::external_id
  - AddressingStyle::try_from
  - OssBuilder::build
  - OssBackend::info
  - OssBackend::capability
  - OssBackend::create_dir
  - OssBackend::stat
  - OssBackend::read
  - OssBackend::write
  - OssBackend::delete
  - OssBackend::list
  - OssBackend::copy
  - OssBackend::rename
  - OssBackend::presign
  source_file: /src/opendal/core/services/oss/src/backend.rs
- function_names:
  - MongodbConfig::fmt
  - MongodbConfig::from_uri
  - MongodbConfig::into_builder
  - tests::from_uri_sets_connection_string_database_collection_and_root
  source_file: /src/opendal/core/services/mongodb/src/config.rs
- function_names:
  - MongodbDeleter::new
  - MongodbDeleter::delete_once
  source_file: /src/opendal/core/services/mongodb/src/deleter.rs
- function_names:
  - MongodbReader::new
  - MongodbReader::open
  source_file: /src/opendal/core/services/mongodb/src/reader.rs
- function_names:
  - MongodbCore::fmt
  - MongodbCore::get_collection
  - MongodbCore::get
  - MongodbCore::get_length
  - MongodbCore::set
  - MongodbCore::delete
  - parse_mongodb_error
  - parse_bson_error
  - parse_bson_usize
  - tests::test_parse_bson_usize
  source_file: /src/opendal/core/services/mongodb/src/core.rs
- function_names:
  - MongodbWriter::new
  - MongodbWriter::write
  - MongodbWriter::close
  - MongodbWriter::abort
  source_file: /src/opendal/core/services/mongodb/src/writer.rs
- function_names:
  - register_mongodb_service
  source_file: /src/opendal/core/services/mongodb/src/lib.rs
- function_names:
  - MongodbBuilder::connection_string
  - MongodbBuilder::root
  - MongodbBuilder::database
  - MongodbBuilder::collection
  - MongodbBuilder::key_field
  - MongodbBuilder::value_field
  - MongodbBuilder::build
  - MongodbBackend::new
  - MongodbBackend::with_normalized_root
  - MongodbBackend::info
  - MongodbBackend::capability
  - MongodbBackend::create_dir
  - MongodbBackend::stat
  - MongodbBackend::read
  - MongodbBackend::write
  - MongodbBackend::delete
  - MongodbBackend::list
  - MongodbBackend::copy
  - MongodbBackend::rename
  - MongodbBackend::presign
  source_file: /src/opendal/core/services/mongodb/src/backend.rs
- function_names:
  - S3Config::fmt
  - S3Config::from_uri
  - S3Config::into_builder
  - tests::test_s3_config_original_field_names
  - tests::test_s3_config_aws_prefixed_aliases
  - tests::test_s3_config_additional_aliases
  - tests::test_s3_config_encryption_aliases
  - tests::from_uri_extracts_bucket_and_root
  - tests::from_uri_extracts_endpoint
  source_file: /src/opendal/core/services/s3/src/config.rs
- function_names:
  - S3Deleter::new
  - S3Deleter::delete_once
  - S3Deleter::delete_batch
  - parse_delete_objects_result_error
  source_file: /src/opendal/core/services/s3/src/deleter.rs
- function_names:
  - S3ListerV1::new
  - S3ListerV1::next_page
  - S3ListerV2::new
  - S3ListerV2::next_page
  - S3ObjectVersionsLister::new
  - S3ObjectVersionsLister::next_page
  source_file: /src/opendal/core/services/s3/src/lister.rs
- function_names:
  - S3Reader::new
  - S3Reader::open
  source_file: /src/opendal/core/services/s3/src/reader.rs
- function_names:
  - new_s3_copier
  - S3Copier::source_metadata
  - S3Copier::copy_once
  - S3Copier::initiate_copy
  - S3Copier::copy_part
  - S3Copier::complete_copy
  - S3Copier::abort_copy
  source_file: /src/opendal/core/services/s3/src/copier.rs
- function_names:
  - format_crc32c_iter
  - S3Core::fmt
  - S3Core::signer
  - S3Core::sign_query
  - S3Core::send
  - S3Core::fetch
  - S3Core::insert_sse_headers
  - S3Core::calculate_checksum
  - S3Core::insert_checksum_header
  - S3Core::insert_checksum_type_header
  - S3Core::insert_metadata_headers
  - S3Core::insert_request_payer_header
  - S3Core::s3_head_object_request
  - S3Core::s3_get_object_request
  - S3Core::s3_get_object
  - S3Core::s3_put_object_request
  - S3Core::s3_append_object_request
  - S3Core::s3_head_object
  - S3Core::s3_delete_object_request
  - S3Core::s3_delete_object
  - S3Core::s3_copy_object
  - S3Core::s3_list_objects_v1
  - S3Core::s3_list_objects_v2
  - S3Core::s3_initiate_multipart_upload
  - S3Core::s3_initiate_multipart_copy
  - S3Core::s3_upload_part_copy_request
  - S3Core::s3_upload_part_request
  - S3Core::s3_complete_multipart_upload
  - S3Core::s3_complete_multipart_copy
  - S3Core::s3_abort_multipart_upload
  - S3Core::s3_abort_multipart_copy
  - S3Core::s3_delete_objects
  - S3Core::s3_list_object_versions
  - ChecksumAlgorithm::to_header_name
  - ChecksumAlgorithm::fmt
  - tests::test_deserialize_initiate_multipart_upload_result
  - tests::test_serialize_complete_multipart_upload_request
  - tests::test_deserialize_complete_multipart_upload_result
  - tests::test_deserialize_complete_multipart_upload_result_when_return_error
  - tests::test_serialize_delete_objects_request
  - tests::test_deserialize_delete_objects_result
  - tests::test_parse_list_output_v1
  - tests::test_parse_list_output_v2
  - tests::test_parse_list_object_versions
  - error::parse_error
  - error::from_s3_error
  - error::parse_s3_error_code
  - error::test_parse_error
  - error::test_parse_error_from_unrelated_input
  - error::test_parse_s3_error_code_invalid_range
  source_file: /src/opendal/core/services/s3/src/core.rs
- function_names:
  - S3Writer::new
  - S3Writer::parse_header_into_meta
  - S3Writer::write_once
  - S3Writer::initiate_part
  - S3Writer::write_part
  - S3Writer::complete_part
  - S3Writer::abort_part
  - S3Writer::offset
  - S3Writer::append
  source_file: /src/opendal/core/services/s3/src/writer.rs
- function_names:
  - register_s3_service
  source_file: /src/opendal/core/services/s3/src/lib.rs
- function_names:
  - S3Builder::fmt
  - S3Builder::root
  - S3Builder::bucket
  - S3Builder::endpoint
  - S3Builder::region
  - S3Builder::access_key_id
  - S3Builder::secret_access_key
  - S3Builder::role_arn
  - S3Builder::external_id
  - S3Builder::role_session_name
  - S3Builder::assume_role_duration_seconds
  - S3Builder::assume_role_session_tags
  - S3Builder::default_storage_class
  - S3Builder::server_side_encryption
  - S3Builder::server_side_encryption_aws_kms_key_id
  - S3Builder::server_side_encryption_customer_algorithm
  - S3Builder::server_side_encryption_customer_key
  - S3Builder::server_side_encryption_customer_key_md5
  - S3Builder::server_side_encryption_with_aws_managed_kms_key
  - S3Builder::server_side_encryption_with_customer_managed_kms_key
  - S3Builder::server_side_encryption_with_s3_key
  - S3Builder::server_side_encryption_with_customer_key
  - S3Builder::session_token
  - S3Builder::disable_config_load
  - S3Builder::disable_list_objects_v2
  - S3Builder::enable_request_payer
  - S3Builder::disable_ec2_metadata
  - S3Builder::skip_signature
  - S3Builder::allow_anonymous
  - S3Builder::enable_virtual_host_style
  - S3Builder::disable_stat_with_override
  - S3Builder::enable_versioning
  - S3Builder::credential_provider_chain
  - S3Builder::is_bucket_valid
  - S3Builder::build_endpoint
  - S3Builder::batch_max_operations
  - S3Builder::delete_max_size
  - S3Builder::checksum_algorithm
  - S3Builder::disable_write_with_if_match
  - S3Builder::enable_write_with_append
  - S3Builder::detect_region
  - S3Builder::default_acl
  - S3Builder::build
  - S3Backend::info
  - S3Backend::capability
  - S3Backend::create_dir
  - S3Backend::stat
  - S3Backend::read
  - S3Backend::write
  - S3Backend::delete
  - S3Backend::list
  - S3Backend::copy
  - S3Backend::rename
  - S3Backend::presign
  - tests::test_is_valid_bucket
  - tests::test_build_endpoint
  - tests::test_detect_region
  - tests::test_presign_write_preserves_content_type
  - tests::test_presign_stat_encodes_version_id
  - tests::test_presign_read_encodes_version_id
  source_file: /src/opendal/core/services/s3/src/backend.rs
- function_names:
  - WebhdfsConfig::fmt
  - WebhdfsConfig::from_uri
  - WebhdfsConfig::into_builder
  - tests::from_uri_sets_endpoint_and_root
  - tests::from_uri_allows_missing_authority
  source_file: /src/opendal/core/services/webhdfs/src/config.rs
- function_names:
  - WebhdfsDeleter::new
  - WebhdfsDeleter::delete_once
  source_file: /src/opendal/core/services/webhdfs/src/deleter.rs
- function_names:
  - WebhdfsLister::new
  - WebhdfsLister::next_page
  source_file: /src/opendal/core/services/webhdfs/src/lister.rs
- function_names:
  - WebhdfsReader::new
  - WebhdfsReader::open
  source_file: /src/opendal/core/services/webhdfs/src/reader.rs
- function_names:
  - WebhdfsCore::fmt
  - WebhdfsCore::webhdfs_create_dir
  - WebhdfsCore::webhdfs_create_object
  - WebhdfsCore::webhdfs_rename_object
  - WebhdfsCore::webhdfs_init_append
  - WebhdfsCore::webhdfs_append
  - WebhdfsCore::webhdfs_concat
  - WebhdfsCore::webhdfs_list_status
  - WebhdfsCore::webhdfs_list_status_batch
  - WebhdfsCore::webhdfs_open_request
  - WebhdfsCore::webhdfs_read_file
  - WebhdfsCore::webhdfs_get_file_status
  - WebhdfsCore::webhdfs_delete
  - error::parse_error
  - error::parse_error_msg
  - error::test_parse_error
  source_file: /src/opendal/core/services/webhdfs/src/core.rs
- function_names:
  - WebhdfsWriter::new
  - WebhdfsWriter::write_once
  - WebhdfsWriter::write_block
  - WebhdfsWriter::complete_block
  - WebhdfsWriter::abort_block
  - WebhdfsWriter::offset
  - WebhdfsWriter::append
  source_file: /src/opendal/core/services/webhdfs/src/writer.rs
- function_names:
  - test::test_file_status
  - test::test_list_empty
  - test::test_list_status
  - test::test_list_status_batch
  source_file: /src/opendal/core/services/webhdfs/src/message.rs
- function_names:
  - register_webhdfs_service
  source_file: /src/opendal/core/services/webhdfs/src/lib.rs
- function_names:
  - WebhdfsBuilder::root
  - WebhdfsBuilder::endpoint
  - WebhdfsBuilder::user_name
  - WebhdfsBuilder::delegation
  - WebhdfsBuilder::disable_list_batch
  - WebhdfsBuilder::atomic_write_dir
  - WebhdfsBuilder::build
  - WebhdfsBackend::check_root
  - WebhdfsBackend::info
  - WebhdfsBackend::capability
  - WebhdfsBackend::create_dir
  - WebhdfsBackend::stat
  - WebhdfsBackend::read
  - WebhdfsBackend::write
  - WebhdfsBackend::delete
  - WebhdfsBackend::list
  - WebhdfsBackend::copy
  - WebhdfsBackend::rename
  - WebhdfsBackend::presign
  source_file: /src/opendal/core/services/webhdfs/src/backend.rs
- function_names:
  - IpfsConfig::from_uri
  - IpfsConfig::into_builder
  - tests::from_uri_sets_endpoint_and_root
  - tests::from_uri_allows_missing_authority
  source_file: /src/opendal/core/services/ipfs/src/config.rs
- function_names:
  - tests::test_message
  source_file: /src/opendal/core/services/ipfs/src/ipld.rs
- function_names:
  - IpfsReader::new
  - IpfsReader::open
  source_file: /src/opendal/core/services/ipfs/src/reader.rs
- function_names:
  - IpfsCore::fmt
  - IpfsCore::ipfs_get
  - IpfsCore::ipfs_head
  - IpfsCore::ipfs_list
  - IpfsCore::ipfs_stat
  - error::parse_error
  source_file: /src/opendal/core/services/ipfs/src/core.rs
- function_names:
  - register_ipfs_service
  source_file: /src/opendal/core/services/ipfs/src/lib.rs
- function_names:
  - IpfsBuilder::fmt
  - IpfsBuilder::root
  - IpfsBuilder::endpoint
  - IpfsBuilder::build
  - IpfsBackend::info
  - IpfsBackend::capability
  - IpfsBackend::create_dir
  - IpfsBackend::stat
  - IpfsBackend::read
  - IpfsBackend::write
  - IpfsBackend::delete
  - IpfsBackend::list
  - IpfsBackend::copy
  - IpfsBackend::rename
  - IpfsBackend::presign
  - DirStream::new
  - DirStream::next_page
  source_file: /src/opendal/core/services/ipfs/src/backend.rs
- function_names:
  - LakefsConfig::fmt
  - LakefsConfig::from_uri
  - LakefsConfig::into_builder
  - tests::from_uri_sets_endpoint_repository_branch_and_root
  - tests::from_uri_requires_repository
  - tests::from_uri_respects_branch_override_and_sets_root
  source_file: /src/opendal/core/services/lakefs/src/config.rs
- function_names:
  - LakefsDeleter::new
  - LakefsDeleter::delete_once
  source_file: /src/opendal/core/services/lakefs/src/deleter.rs
- function_names:
  - LakefsLister::new
  - LakefsLister::next_page
  source_file: /src/opendal/core/services/lakefs/src/lister.rs
- function_names:
  - LakefsReader::new
  - LakefsReader::open
  source_file: /src/opendal/core/services/lakefs/src/reader.rs
- function_names:
  - LakefsCore::fmt
  - LakefsCore::get_object_metadata
  - LakefsCore::get_object_content
  - LakefsCore::list_objects
  - LakefsCore::upload_object
  - LakefsCore::delete_object
  - LakefsCore::copy_object
  - LakefsCore::parse_lakefs_status_into_metadata
  - error::parse_error
  - error::test_parse_error
  source_file: /src/opendal/core/services/lakefs/src/core.rs
- function_names:
  - LakefsWriter::new
  - LakefsWriter::write_once
  source_file: /src/opendal/core/services/lakefs/src/writer.rs
- function_names:
  - register_lakefs_service
  source_file: /src/opendal/core/services/lakefs/src/lib.rs
- function_names:
  - LakefsBuilder::endpoint
  - LakefsBuilder::username
  - LakefsBuilder::password
  - LakefsBuilder::branch
  - LakefsBuilder::root
  - LakefsBuilder::repository
  - LakefsBuilder::build
  - LakefsBackend::info
  - LakefsBackend::capability
  - LakefsBackend::create_dir
  - LakefsBackend::stat
  - LakefsBackend::read
  - LakefsBackend::list
  - LakefsBackend::write
  - LakefsBackend::delete
  - LakefsBackend::copy
  - LakefsBackend::rename
  - LakefsBackend::presign
  source_file: /src/opendal/core/services/lakefs/src/backend.rs
- function_names:
  - RocksdbConfig::from_uri
  - RocksdbConfig::into_builder
  - tests::from_uri_sets_datadir_and_root
  source_file: /src/opendal/core/services/rocksdb/src/config.rs
- function_names:
  - RocksdbDeleter::new
  - RocksdbDeleter::delete_once
  source_file: /src/opendal/core/services/rocksdb/src/deleter.rs
- function_names:
  - RocksdbLister::new
  - RocksdbLister::next
  source_file: /src/opendal/core/services/rocksdb/src/lister.rs
- function_names:
  - RocksdbReader::new
  - RocksdbReader::open
  source_file: /src/opendal/core/services/rocksdb/src/reader.rs
- function_names:
  - RocksdbCore::fmt
  - RocksdbCore::get
  - RocksdbCore::set
  - RocksdbCore::delete
  - RocksdbCore::list
  - parse_rocksdb_error
  source_file: /src/opendal/core/services/rocksdb/src/core.rs
- function_names:
  - RocksdbWriter::new
  - RocksdbWriter::write
  - RocksdbWriter::close
  - RocksdbWriter::abort
  source_file: /src/opendal/core/services/rocksdb/src/writer.rs
- function_names:
  - register_rocksdb_service
  source_file: /src/opendal/core/services/rocksdb/src/lib.rs
- function_names:
  - RocksdbBuilder::datadir
  - RocksdbBuilder::root
  - RocksdbBuilder::build
  - RocksdbBackend::new
  - RocksdbBackend::with_normalized_root
  - RocksdbBackend::info
  - RocksdbBackend::capability
  - RocksdbBackend::create_dir
  - RocksdbBackend::stat
  - RocksdbBackend::read
  - RocksdbBackend::write
  - RocksdbBackend::delete
  - RocksdbBackend::list
  - RocksdbBackend::copy
  - RocksdbBackend::rename
  - RocksdbBackend::presign
  source_file: /src/opendal/core/services/rocksdb/src/backend.rs
- function_names:
  - MiniMokaConfig::from_uri
  - MiniMokaConfig::into_builder
  - tests::from_uri_sets_root_and_preserves_ttl
  source_file: /src/opendal/core/services/mini_moka/src/config.rs
- function_names:
  - MiniMokaDeleter::new
  - MiniMokaDeleter::delete_once
  source_file: /src/opendal/core/services/mini_moka/src/deleter.rs
- function_names:
  - MiniMokaLister::new
  - MiniMokaLister::next
  source_file: /src/opendal/core/services/mini_moka/src/lister.rs
- function_names:
  - MiniMokaReader::new
  - MiniMokaReader::open
  source_file: /src/opendal/core/services/mini_moka/src/reader.rs
- function_names:
  - MiniMokaCore::fmt
  - MiniMokaCore::get
  source_file: /src/opendal/core/services/mini_moka/src/core.rs
- function_names:
  - MiniMokaWriter::new
  - MiniMokaWriter::write
  - MiniMokaWriter::close
  - MiniMokaWriter::abort
  source_file: /src/opendal/core/services/mini_moka/src/writer.rs
- function_names:
  - register_mini_moka_service
  source_file: /src/opendal/core/services/mini_moka/src/lib.rs
- function_names:
  - MiniMokaBuilder::new
  - MiniMokaBuilder::max_capacity
  - MiniMokaBuilder::time_to_live
  - MiniMokaBuilder::time_to_idle
  - MiniMokaBuilder::root
  - MiniMokaBuilder::build
  - MiniMokaBackend::new
  - MiniMokaBackend::info
  - MiniMokaBackend::capability
  - MiniMokaBackend::create_dir
  - MiniMokaBackend::stat
  - MiniMokaBackend::read
  - MiniMokaBackend::write
  - MiniMokaBackend::delete
  - MiniMokaBackend::list
  - MiniMokaBackend::copy
  - MiniMokaBackend::rename
  - MiniMokaBackend::presign
  source_file: /src/opendal/core/services/mini_moka/src/backend.rs
- function_names:
  - EtcdConfig::fmt
  - EtcdConfig::from_uri
  - EtcdConfig::into_builder
  - tests::from_uri_sets_endpoints_and_root
  source_file: /src/opendal/core/services/etcd/src/config.rs
- function_names:
  - EtcdDeleter::new
  - EtcdDeleter::delete_once
  source_file: /src/opendal/core/services/etcd/src/deleter.rs
- function_names:
  - EtcdLister::new
  - EtcdLister::next
  - EtcdLazyLister::new
  - EtcdLazyLister::next
  source_file: /src/opendal/core/services/etcd/src/lister.rs
- function_names:
  - EtcdReader::new
  - EtcdReader::open
  source_file: /src/opendal/core/services/etcd/src/reader.rs
- function_names:
  - Manager::create
  - Manager::is_recyclable
  - EtcdCore::fmt
  - EtcdCore::new
  - EtcdCore::conn
  - EtcdCore::has_prefix
  - EtcdCore::get
  - EtcdCore::set
  - EtcdCore::delete
  - error::format_etcd_error
  source_file: /src/opendal/core/services/etcd/src/core.rs
- function_names:
  - EtcdWriter::new
  - EtcdWriter::write
  - EtcdWriter::close
  - EtcdWriter::abort
  source_file: /src/opendal/core/services/etcd/src/writer.rs
- function_names:
  - register_etcd_service
  source_file: /src/opendal/core/services/etcd/src/lib.rs
- function_names:
  - EtcdBuilder::endpoints
  - EtcdBuilder::username
  - EtcdBuilder::password
  - EtcdBuilder::root
  - EtcdBuilder::ca_path
  - EtcdBuilder::cert_path
  - EtcdBuilder::key_path
  - EtcdBuilder::build
  - EtcdBuilder::load_pem
  - EtcdBackend::new
  - EtcdBackend::info
  - EtcdBackend::capability
  - EtcdBackend::create_dir
  - EtcdBackend::stat
  - EtcdBackend::read
  - EtcdBackend::write
  - EtcdBackend::delete
  - EtcdBackend::list
  - EtcdBackend::copy
  - EtcdBackend::rename
  - EtcdBackend::presign
  source_file: /src/opendal/core/services/etcd/src/backend.rs
- function_names:
  - azure_config_from_connection_string
  - azure_account_name_from_endpoint
  - parse_connection_string
  - collect_blob_development_config
  - collect_endpoint
  - collect_credentials
  - set_credentials
  - collect_or_build_endpoint
  - collect_endpoint_from_parts
  - with_azure_error_response_context
  - censor_sas_uri
  - tests::test_azure_config_from_connection_string
  - tests::test_azure_account_name_from_endpoint
  - tests::test_azure_uri_context_removes_sig
  - tests::assert_azure_storage_config_eq
  source_file: /src/opendal/core/services/azure-common/src/lib.rs
- function_names:
  - PostgresqlConfig::fmt
  - PostgresqlConfig::from_uri
  - PostgresqlConfig::into_builder
  - tests::from_uri_sets_connection_string_table_and_root
  source_file: /src/opendal/core/services/postgresql/src/config.rs
- function_names:
  - PostgresqlDeleter::new
  - PostgresqlDeleter::delete_once
  source_file: /src/opendal/core/services/postgresql/src/deleter.rs
- function_names:
  - PostgresqlReader::new
  - PostgresqlReader::open
  source_file: /src/opendal/core/services/postgresql/src/reader.rs
- function_names:
  - PostgresqlCore::get_client
  - PostgresqlCore::get
  - PostgresqlCore::get_length
  - PostgresqlCore::set
  - PostgresqlCore::delete
  - parse_postgres_error
  source_file: /src/opendal/core/services/postgresql/src/core.rs
- function_names:
  - PostgresqlWriter::new
  - PostgresqlWriter::write
  - PostgresqlWriter::close
  - PostgresqlWriter::abort
  source_file: /src/opendal/core/services/postgresql/src/writer.rs
- function_names:
  - register_postgresql_service
  source_file: /src/opendal/core/services/postgresql/src/lib.rs
- function_names:
  - PostgresqlBuilder::connection_string
  - PostgresqlBuilder::root
  - PostgresqlBuilder::table
  - PostgresqlBuilder::key_field
  - PostgresqlBuilder::value_field
  - PostgresqlBuilder::build
  - PostgresqlBackend::new
  - PostgresqlBackend::with_normalized_root
  - PostgresqlBackend::info
  - PostgresqlBackend::capability
  - PostgresqlBackend::create_dir
  - PostgresqlBackend::stat
  - PostgresqlBackend::read
  - PostgresqlBackend::write
  - PostgresqlBackend::delete
  - PostgresqlBackend::list
  - PostgresqlBackend::copy
  - PostgresqlBackend::rename
  - PostgresqlBackend::presign
  source_file: /src/opendal/core/services/postgresql/src/backend.rs
- function_names:
  - SledConfig::fmt
  - SledConfig::from_uri
  - SledConfig::into_builder
  - tests::from_uri_sets_datadir_tree_and_root
  source_file: /src/opendal/core/services/sled/src/config.rs
- function_names:
  - SledDeleter::new
  - SledDeleter::delete_once
  source_file: /src/opendal/core/services/sled/src/deleter.rs
- function_names:
  - SledLister::new
  - SledLister::next
  source_file: /src/opendal/core/services/sled/src/lister.rs
- function_names:
  - SledReader::new
  - SledReader::open
  source_file: /src/opendal/core/services/sled/src/reader.rs
- function_names:
  - SledCore::fmt
  - SledCore::get
  - SledCore::set
  - SledCore::delete
  - SledCore::list
  - parse_error
  source_file: /src/opendal/core/services/sled/src/core.rs
- function_names:
  - SledWriter::new
  - SledWriter::write
  - SledWriter::close
  - SledWriter::abort
  source_file: /src/opendal/core/services/sled/src/writer.rs
- function_names:
  - register_sled_service
  source_file: /src/opendal/core/services/sled/src/lib.rs
- function_names:
  - SledBuilder::datadir
  - SledBuilder::tree
  - SledBuilder::root
  - SledBuilder::build
  - SledBackend::new
  - SledBackend::with_normalized_root
  - SledBackend::info
  - SledBackend::capability
  - SledBackend::create_dir
  - SledBackend::stat
  - SledBackend::read
  - SledBackend::write
  - SledBackend::delete
  - SledBackend::list
  - SledBackend::copy
  - SledBackend::rename
  - SledBackend::presign
  source_file: /src/opendal/core/services/sled/src/backend.rs
- function_names:
  - HfConfig::fmt
  - HfConfig::from_uri
  - HfConfig::into_builder
  - tests::from_uri_with_all_components
  - tests::from_uri_via_iter_options
  - tests::from_uri_download_mode_http
  - tests::from_uri_download_mode_defaults_to_xet
  source_file: /src/opendal/core/services/hf/src/config.rs
- function_names:
  - HfDeleter::new
  - HfDeleter::delete_paths
  - HfDeleter::delete_once
  - HfDeleter::delete_batch
  - tests::test_git_delete_separates_files_and_folders
  source_file: /src/opendal/core/services/hf/src/deleter.rs
- function_names:
  - parse_next_cursor
  - HfLister::new
  - HfLister::file_tree
  - HfLister::next_page
  - tests::test_parse_next_cursor
  - tests::test_parse_next_cursor_no_next
  - tests::test_list_model_root
  source_file: /src/opendal/core/services/hf/src/lister.rs
- function_names:
  - HfReadStream::try_new
  - HfReadStream::try_new_xet
  - map_session_error
  - HfReadStream::read
  - HfReader::new
  - HfReader::open
  - tests::test_http_read_uses_resolve_url
  - tests::test_http_read_returns_metadata
  - tests::test_read_xet_parquet
  - tests::test_xet_mode_falls_back_to_http_for_non_xet_file
  - tests::test_read_xet_range
  source_file: /src/opendal/core/services/hf/src/reader.rs
- function_names:
  - HfRepoType::parse
  - HfRepoType::as_str
  - HfRepoType::as_plural_str
  - HfDownloadMode::parse
  - PathInfo::entry_mode
  - PathInfo::metadata
  - HfCore::fmt
  - HfCore::new
  - HfCore::build
  - HfCore::xet_token_refresh_headers
  - HfCore::xet_upload_commit
  - HfCore::xet_download_group
  - HfCore::request
  - HfCore::uri
  - HfCore::repo_path
  - HfCore::send
  - HfCore::send_parse
  - HfCore::path_info
  - HfCore::resolve
  - HfCore::commit_git
  - HfCore::commit_bucket
  - test_utils::create_test_core
  - tests::test_hf_path_info_url_model
  - tests::test_hf_path_info_url_dataset
  - tests::test_hf_path_info_url_custom_endpoint
  - tests::test_hf_path_info_url_space
  - error::parse_error
  - error::test_parse_error_branch_update_conflict_is_temporary
  - error::test_parse_error_other_precondition_failed_is_not_temporary
  - uri::percent_encode_revision
  - uri::resolve
  - uri::test_repo_type_parse
  - uri::resolve_with_namespace
  - uri::resolve_with_revision
  - uri::resolve_datasets_prefix
  - uri::resolve_datasets_prefix_and_revision
  - uri::resolve_with_path_in_repo
  - uri::resolve_with_revision_and_path
  - uri::resolve_datasets_revision_and_path
  - uri::resolve_refs_convert_revision
  - uri::resolve_refs_pr_revision
  - uri::resolve_encoded_revision
  - uri::resolve_at_in_path_not_revision
  - uri::resolve_bare_repo_type_fails
  - uri::resolve_bare_repo_no_namespace
  - uri::resolve_bare_repo_with_revision
  - uri::resolve_bare_dataset_no_namespace
  - uri::resolve_bare_dataset_with_revision
  - uri::resolve_models_prefix
  - uri::resolve_spaces_prefix
  - uri::resolve_buckets_prefix
  - uri::resolve_buckets_with_path
  - uri::test_bucket_resolve_url
  - uri::test_bucket_xet_token_urls
  - uri::test_bucket_batch_url
  source_file: /src/opendal/core/services/hf/src/core.rs
- function_names:
  - HfLazyWriter::new
  - HfLazyWriter::inner
  - HfLazyWriter::write
  - HfLazyWriter::close
  - HfLazyWriter::abort
  - HfWriter::try_new
  - HfWriter::commit
  - HfWriter::write
  - HfWriter::close
  - HfWriter::abort
  - tests::test_bucket_write_roundtrip
  source_file: /src/opendal/core/services/hf/src/writer.rs
- function_names:
  - register_hf_service
  - tests::type_aliases_are_interchangeable
  - tests::scheme_constants
  source_file: /src/opendal/core/services/hf/src/lib.rs
- function_names:
  - HfBuilder::repo_type
  - HfBuilder::repo_id
  - HfBuilder::revision
  - HfBuilder::root
  - HfBuilder::token
  - HfBuilder::download_mode
  - HfBuilder::endpoint
  - HfBuilder::hf_endpoint
  - HfBuilder::hf_download_mode
  - HfBuilder::hf_home
  - HfBuilder::hf_token
  - HfBuilder::build
  - HfBackend::info
  - HfBackend::capability
  - HfBackend::create_dir
  - HfBackend::stat
  - HfBackend::read
  - HfBackend::list
  - HfBackend::write
  - HfBackend::delete
  - HfBackend::copy
  - HfBackend::rename
  - HfBackend::presign
  - test_utils::finish_operator
  - test_utils::mbpp_operator
  - test_utils::testing_dataset_core
  - test_utils::testing_bucket_operator
  - tests::builder_with_token
  - tests::builder_no_token
  - tests::hf_token_config_takes_priority_over_env
  - tests::hf_token_reads_hf_token_env_var
  - tests::hf_token_disable_flag_suppresses_discovery
  - tests::hf_token_reads_from_file_via_hf_token_path
  - tests::hf_endpoint_returns_default
  - tests::hf_endpoint_config_takes_priority_over_env
  - tests::hf_endpoint_reads_hf_endpoint_env_var
  - tests::hf_download_mode_defaults_to_xet
  - tests::hf_download_mode_disable_xet_env_forces_http
  - tests::hf_download_mode_config_takes_priority_over_env
  - tests::hf_download_mode_empty_env_keeps_xet
  - tests::build_accepts_datasets_alias
  - tests::build_accepts_space_repo_type
  - tests::test_both_schemes_are_supported
  source_file: /src/opendal/core/services/hf/src/backend.rs
- function_names:
  - MysqlConfig::fmt
  - MysqlConfig::from_uri
  - MysqlConfig::into_builder
  - tests::from_uri_sets_connection_string_table_and_root
  - tests::from_uri_respects_existing_table
  source_file: /src/opendal/core/services/mysql/src/config.rs
- function_names:
  - MysqlDeleter::new
  - MysqlDeleter::delete_once
  source_file: /src/opendal/core/services/mysql/src/deleter.rs
- function_names:
  - MysqlLister::new
  - MysqlLister::next
  - MysqlLazyLister::new
  - MysqlLazyLister::next
  source_file: /src/opendal/core/services/mysql/src/lister.rs
- function_names:
  - MysqlReader::new
  - MysqlReader::open
  source_file: /src/opendal/core/services/mysql/src/reader.rs
- function_names:
  - MysqlCore::get_client
  - MysqlCore::get
  - MysqlCore::get_length
  - MysqlCore::set
  - MysqlCore::delete
  - MysqlCore::list
  - escape_like
  - parse_mysql_error
  - tests::test_escape_like_basic
  - tests::test_escape_like_wildcards
  - tests::test_escape_like_escape_char
  - tests::test_escape_like_mixed
  source_file: /src/opendal/core/services/mysql/src/core.rs
- function_names:
  - MysqlWriter::new
  - MysqlWriter::write
  - MysqlWriter::close
  - MysqlWriter::abort
  source_file: /src/opendal/core/services/mysql/src/writer.rs
- function_names:
  - register_mysql_service
  source_file: /src/opendal/core/services/mysql/src/lib.rs
- function_names:
  - MysqlBuilder::connection_string
  - MysqlBuilder::root
  - MysqlBuilder::table
  - MysqlBuilder::key_field
  - MysqlBuilder::value_field
  - MysqlBuilder::build
  - MysqlBackend::new
  - MysqlBackend::with_normalized_root
  - MysqlBackend::info
  - MysqlBackend::capability
  - MysqlBackend::create_dir
  - MysqlBackend::stat
  - MysqlBackend::read
  - MysqlBackend::write
  - MysqlBackend::delete
  - MysqlBackend::list
  - MysqlBackend::copy
  - MysqlBackend::rename
  - MysqlBackend::presign
  source_file: /src/opendal/core/services/mysql/src/backend.rs
- function_names:
  - IpmfsConfig::from_uri
  - IpmfsConfig::into_builder
  - tests::from_uri_sets_endpoint_and_root
  source_file: /src/opendal/core/services/ipmfs/src/config.rs
- function_names:
  - IpmfsDeleter::new
  - IpmfsDeleter::delete_once
  source_file: /src/opendal/core/services/ipmfs/src/deleter.rs
- function_names:
  - IpmfsLister::new
  - IpmfsLister::next_page
  - IpfsLsResponseEntry::mode
  source_file: /src/opendal/core/services/ipmfs/src/lister.rs
- function_names:
  - IpmfsReader::new
  - IpmfsReader::open
  source_file: /src/opendal/core/services/ipmfs/src/reader.rs
- function_names:
  - IpmfsCore::fmt
  - IpmfsCore::ipmfs_stat
  - IpmfsCore::ipmfs_read
  - IpmfsCore::ipmfs_rm
  - IpmfsCore::ipmfs_ls
  - IpmfsCore::ipmfs_mkdir
  - IpmfsCore::ipmfs_write
  - error::parse_error
  source_file: /src/opendal/core/services/ipmfs/src/core.rs
- function_names:
  - IpmfsWriter::new
  - IpmfsWriter::write_once
  source_file: /src/opendal/core/services/ipmfs/src/writer.rs
- function_names:
  - register_ipmfs_service
  source_file: /src/opendal/core/services/ipmfs/src/lib.rs
- function_names:
  - IpmfsBuilder::fmt
  - IpmfsBuilder::root
  - IpmfsBuilder::endpoint
  - IpmfsBuilder::build
  - IpmfsBackend::info
  - IpmfsBackend::capability
  - IpmfsBackend::create_dir
  - IpmfsBackend::stat
  - IpmfsBackend::read
  - IpmfsBackend::write
  - IpmfsBackend::delete
  - IpmfsBackend::list
  - IpmfsBackend::copy
  - IpmfsBackend::rename
  - IpmfsBackend::presign
  source_file: /src/opendal/core/services/ipmfs/src/backend.rs
- function_names:
  - UpyunConfig::fmt
  - UpyunConfig::from_uri
  - UpyunConfig::into_builder
  - tests::from_uri_extracts_bucket_and_root
  source_file: /src/opendal/core/services/upyun/src/config.rs
- function_names:
  - UpyunDeleter::new
  - UpyunDeleter::delete_once
  source_file: /src/opendal/core/services/upyun/src/deleter.rs
- function_names:
  - UpyunLister::new
  - UpyunLister::next_page
  source_file: /src/opendal/core/services/upyun/src/lister.rs
- function_names:
  - UpyunReader::new
  - UpyunReader::open
  source_file: /src/opendal/core/services/upyun/src/reader.rs
- function_names:
  - UpyunCore::fmt
  - UpyunCore::send
  - UpyunCore::sign
  - UpyunCore::download_file
  - UpyunCore::info
  - UpyunCore::upload
  - UpyunCore::delete
  - UpyunCore::copy
  - UpyunCore::move_object
  - UpyunCore::create_dir
  - UpyunCore::initiate_multipart_upload
  - UpyunCore::upload_part
  - UpyunCore::complete_multipart_upload
  - UpyunCore::list_objects
  - UpyunSigner::authorization
  - parse_info
  - format_md5
  - format_digest_hex
  - error::parse_error
  - error::test_parse_error
  source_file: /src/opendal/core/services/upyun/src/core.rs
- function_names:
  - UpyunWriter::new
  - UpyunWriter::write_once
  - UpyunWriter::initiate_part
  - UpyunWriter::write_part
  - UpyunWriter::complete_part
  - UpyunWriter::abort_part
  source_file: /src/opendal/core/services/upyun/src/writer.rs
- function_names:
  - register_upyun_service
  source_file: /src/opendal/core/services/upyun/src/lib.rs
- function_names:
  - UpyunBuilder::fmt
  - UpyunBuilder::root
  - UpyunBuilder::bucket
  - UpyunBuilder::operator
  - UpyunBuilder::password
  - UpyunBuilder::build
  - UpyunBackend::info
  - UpyunBackend::capability
  - UpyunBackend::create_dir
  - UpyunBackend::stat
  - UpyunBackend::read
  - UpyunBackend::write
  - UpyunBackend::delete
  - UpyunBackend::list
  - UpyunBackend::copy
  - UpyunBackend::rename
  - UpyunBackend::presign
  source_file: /src/opendal/core/services/upyun/src/backend.rs
- function_names:
  - DbfsConfig::fmt
  - DbfsConfig::from_uri
  - DbfsConfig::into_builder
  - tests::from_uri_sets_endpoint_and_root
  source_file: /src/opendal/core/services/dbfs/src/config.rs
- function_names:
  - DbfsDeleter::new
  - DbfsDeleter::delete_once
  source_file: /src/opendal/core/services/dbfs/src/deleter.rs
- function_names:
  - DbfsLister::new
  - DbfsLister::next_page
  source_file: /src/opendal/core/services/dbfs/src/lister.rs
- function_names:
  - DbfsCore::fmt
  - DbfsCore::dbfs_create_dir
  - DbfsCore::dbfs_delete
  - DbfsCore::dbfs_rename
  - DbfsCore::dbfs_list
  - DbfsCore::dbfs_create_file_request
  - DbfsCore::dbfs_get_status
  - DbfsCore::dbfs_ensure_parent_path
  - error::parse_error
  source_file: /src/opendal/core/services/dbfs/src/core.rs
- function_names:
  - DbfsWriter::new
  - DbfsWriter::write_once
  source_file: /src/opendal/core/services/dbfs/src/writer.rs
- function_names:
  - register_dbfs_service
  source_file: /src/opendal/core/services/dbfs/src/lib.rs
- function_names:
  - DbfsBuilder::root
  - DbfsBuilder::endpoint
  - DbfsBuilder::token
  - DbfsBuilder::build
  - DbfsBackend::info
  - DbfsBackend::capability
  - DbfsBackend::create_dir
  - DbfsBackend::stat
  - DbfsBackend::read
  - DbfsBackend::write
  - DbfsBackend::delete
  - DbfsBackend::list
  - DbfsBackend::rename
  - DbfsBackend::copy
  - DbfsBackend::presign
  source_file: /src/opendal/core/services/dbfs/src/backend.rs
- function_names:
  - CloudflareKvConfig::fmt
  - CloudflareKvConfig::from_uri
  - CloudflareKvConfig::into_builder
  - tests::from_uri_extracts_ids_and_root
  - tests::from_uri_requires_namespace
  source_file: /src/opendal/core/services/cloudflare-kv/src/config.rs
- function_names:
  - CloudflareKvDeleter::new
  - CloudflareKvDeleter::delete_once
  - CloudflareKvDeleter::delete_batch
  source_file: /src/opendal/core/services/cloudflare-kv/src/deleter.rs
- function_names:
  - CloudflareKvLister::new
  - CloudflareKvLister::build_entry_for_item
  - CloudflareKvLister::handle_non_recursive_file_list
  - CloudflareKvLister::next_page
  source_file: /src/opendal/core/services/cloudflare-kv/src/lister.rs
- function_names:
  - CloudflareKvReader::new
  - CloudflareKvReader::open
  source_file: /src/opendal/core/services/cloudflare-kv/src/reader.rs
- function_names:
  - CloudflareKvCore::send
  - CloudflareKvCore::sign
  - CloudflareKvCore::url_prefix
  - CloudflareKvCore::metadata
  - CloudflareKvCore::get
  - CloudflareKvCore::set
  - CloudflareKvCore::delete
  - CloudflareKvCore::list
  - error::parse_error
  - error::parse_cfkv_error_code
  source_file: /src/opendal/core/services/cloudflare-kv/src/core.rs
- function_names: []
  source_file: /src/opendal/core/services/cloudflare-kv/src/model.rs
- function_names:
  - CloudflareWriter::new
  - CloudflareWriter::write_once
  source_file: /src/opendal/core/services/cloudflare-kv/src/writer.rs
- function_names:
  - register_cloudflare_kv_service
  source_file: /src/opendal/core/services/cloudflare-kv/src/lib.rs
- function_names:
  - CloudflareKvBuilder::fmt
  - CloudflareKvBuilder::api_token
  - CloudflareKvBuilder::account_id
  - CloudflareKvBuilder::namespace_id
  - CloudflareKvBuilder::default_ttl
  - CloudflareKvBuilder::root
  - CloudflareKvBuilder::build
  - CloudflareKvBackend::info
  - CloudflareKvBackend::capability
  - CloudflareKvBackend::create_dir
  - CloudflareKvBackend::stat
  - CloudflareKvBackend::read
  - CloudflareKvBackend::write
  - CloudflareKvBackend::delete
  - CloudflareKvBackend::list
  - CloudflareKvBackend::copy
  - CloudflareKvBackend::rename
  - CloudflareKvBackend::presign
  source_file: /src/opendal/core/services/cloudflare-kv/src/backend.rs
- function_names:
  - KoofrConfig::fmt
  - KoofrConfig::from_uri
  - KoofrConfig::into_builder
  - tests::from_uri_sets_endpoint_email_and_root
  - tests::from_uri_requires_email_segment
  source_file: /src/opendal/core/services/koofr/src/config.rs
- function_names:
  - KoofrDeleter::new
  - KoofrDeleter::delete_once
  source_file: /src/opendal/core/services/koofr/src/deleter.rs
- function_names:
  - KoofrLister::new
  - KoofrLister::next_page
  source_file: /src/opendal/core/services/koofr/src/lister.rs
- function_names:
  - KoofrReader::new
  - KoofrReader::open
  source_file: /src/opendal/core/services/koofr/src/reader.rs
- function_names:
  - KoofrCore::fmt
  - KoofrCore::send
  - KoofrCore::get_mount_id
  - KoofrCore::sign
  - KoofrCore::ensure_dir_exists
  - KoofrCore::create_dir
  - KoofrCore::info
  - KoofrCore::get
  - KoofrCore::put
  - KoofrCore::remove
  - KoofrCore::copy
  - KoofrCore::move_object
  - KoofrCore::list
  - error::parse_error
  - error::test_parse_error
  source_file: /src/opendal/core/services/koofr/src/core.rs
- function_names:
  - KoofrWriter::new
  - KoofrWriter::parse_metadata
  - KoofrWriter::write_once
  source_file: /src/opendal/core/services/koofr/src/writer.rs
- function_names:
  - register_koofr_service
  source_file: /src/opendal/core/services/koofr/src/lib.rs
- function_names:
  - KoofrBuilder::fmt
  - KoofrBuilder::root
  - KoofrBuilder::endpoint
  - KoofrBuilder::email
  - KoofrBuilder::password
  - KoofrBuilder::build
  - KoofrBackend::info
  - KoofrBackend::capability
  - KoofrBackend::create_dir
  - KoofrBackend::stat
  - KoofrBackend::read
  - KoofrBackend::write
  - KoofrBackend::delete
  - KoofrBackend::list
  - KoofrBackend::copy
  - KoofrBackend::rename
  - KoofrBackend::presign
  source_file: /src/opendal/core/services/koofr/src/backend.rs
- function_names:
  - FoyerConfig::from_uri
  - FoyerConfig::into_builder
  - tests::test_from_uri_sets_memory
  - tests::test_from_uri_sets_name_and_root
  - tests::test_from_uri_sets_disk_config
  - tests::test_from_uri_sets_recovery_and_shards
  source_file: /src/opendal/core/services/foyer/src/config.rs
- function_names:
  - FoyerDeleter::new
  - FoyerDeleter::delete_once
  source_file: /src/opendal/core/services/foyer/src/deleter.rs
- function_names:
  - FoyerReader::new
  - FoyerReader::open
  source_file: /src/opendal/core/services/foyer/src/reader.rs
- function_names:
  - FoyerCore::fmt
  - parse_recover_mode
  - FoyerCore::new
  - FoyerCore::with_cache
  - FoyerCore::get_cache
  - FoyerCore::name
  - FoyerCore::get
  - FoyerCore::insert
  - FoyerCore::remove
  source_file: /src/opendal/core/services/foyer/src/core.rs
- function_names:
  - FoyerWriter::new
  - FoyerWriter::write
  - FoyerWriter::close
  - FoyerWriter::abort
  source_file: /src/opendal/core/services/foyer/src/writer.rs
- function_names:
  - FoyerKey::encode
  - FoyerKey::decode
  - FoyerKey::estimated_size
  - FoyerValue::deref
  - FoyerValue::encode
  - FoyerValue::decode
  - FoyerValue::estimated_size
  - register_foyer_service
  - tests::key
  - tests::value
  - tests::test_basic_operations
  - tests::test_range_read
  - tests::test_hybrid_cache_via_config
  source_file: /src/opendal/core/services/foyer/src/lib.rs
- function_names:
  - FoyerBuilder::fmt
  - FoyerBuilder::new
  - FoyerBuilder::name
  - FoyerBuilder::cache
  - FoyerBuilder::root
  - FoyerBuilder::memory
  - FoyerBuilder::disk_path
  - FoyerBuilder::disk_capacity
  - FoyerBuilder::disk_file_size
  - FoyerBuilder::recover_mode
  - FoyerBuilder::shards
  - FoyerBuilder::build
  - FoyerBackend::new
  - FoyerBackend::with_normalized_root
  - FoyerBackend::info
  - FoyerBackend::capability
  - FoyerBackend::create_dir
  - FoyerBackend::stat
  - FoyerBackend::read
  - FoyerBackend::write
  - FoyerBackend::delete
  - FoyerBackend::list
  - FoyerBackend::copy
  - FoyerBackend::rename
  - FoyerBackend::presign
  source_file: /src/opendal/core/services/foyer/src/backend.rs
- function_names:
  - HttpConfig::fmt
  - HttpConfig::from_uri
  - HttpConfig::into_builder
  - tests::register_http
  - tests::from_uri_sets_endpoint_and_root
  - tests::from_uri_allows_missing_authority
  - tests::from_uri_preserves_query_options
  - tests::from_uri_ignores_endpoint_override
  - tests::operator_from_uri_http
  - tests::operator_from_uri_https
  - tests::from_uri_with_https_scheme
  source_file: /src/opendal/core/services/http/src/config.rs
- function_names:
  - HttpReader::new
  - HttpReader::open
  source_file: /src/opendal/core/services/http/src/reader.rs
- function_names:
  - HttpCore::fmt
  - HttpCore::has_authorization
  - HttpCore::http_get_request
  - HttpCore::http_get
  - HttpCore::http_head_request
  - HttpCore::http_head
  - error::parse_error
  source_file: /src/opendal/core/services/http/src/core.rs
- function_names:
  - register_http_service
  source_file: /src/opendal/core/services/http/src/lib.rs
- function_names:
  - HttpBuilder::fmt
  - HttpBuilder::endpoint
  - HttpBuilder::username
  - HttpBuilder::password
  - HttpBuilder::token
  - HttpBuilder::root
  - HttpBuilder::build
  - HttpBackend::info
  - HttpBackend::capability
  - HttpBackend::create_dir
  - HttpBackend::stat
  - HttpBackend::read
  - HttpBackend::write
  - HttpBackend::delete
  - HttpBackend::list
  - HttpBackend::copy
  - HttpBackend::rename
  - HttpBackend::presign
  source_file: /src/opendal/core/services/http/src/backend.rs
- function_names:
  - GoosefsConfig::fmt
  - GoosefsConfig::from_uri
  - GoosefsConfig::into_builder
  - tests::from_uri_sets_master_addr_and_root
  - tests::from_uri_without_path_leaves_root_none
  - tests::from_uri_authority_overrides_extra_master_addr
  - tests::from_iter_picks_up_every_known_field
  source_file: /src/opendal/core/services/goosefs/src/config.rs
- function_names:
  - GoosefsDeleter::new
  - GoosefsDeleter::delete_once
  source_file: /src/opendal/core/services/goosefs/src/deleter.rs
- function_names:
  - GoosefsLister::new
  - GoosefsLister::next_page
  source_file: /src/opendal/core/services/goosefs/src/lister.rs
- function_names:
  - GoosefsReadStream::new
  - GoosefsReadStream::open
  - GoosefsReadStream::read
  - GoosefsReader::new
  - GoosefsReader::open
  source_file: /src/opendal/core/services/goosefs/src/reader.rs
- function_names:
  - GoosefsCore::fmt
  - GoosefsCore::new
  - GoosefsCore::ctx
  - GoosefsCore::master
  - GoosefsCore::reset_ctx
  - GoosefsCore::full_path
  - GoosefsCore::create_dir
  - GoosefsCore::get_status
  - GoosefsCore::list_status
  - GoosefsCore::delete
  - GoosefsCore::rename
  - GoosefsCore::read_file
  - GoosefsCore::write_file
  - GoosefsCore::create_writer
  - GoosefsCore::open_reader
  - GoosefsCore::open_range_reader
  - GoosefsCore::file_info_to_metadata
  - GoosefsCore::file_info_to_entry
  - parent_of
  - tests::parent_of_root_returns_none
  - tests::parent_of_top_level_entry_returns_none
  - tests::parent_of_nested_entry_returns_parent
  - tests::parent_of_relative_path_returns_none
  - error::parse_error
  - error::run
  - error::not_found_maps_to_not_found_and_is_permanent
  - error::already_exists_maps_to_already_exists
  - error::permission_denied_maps_and_is_permanent
  - error::invalid_argument_and_config_error_both_map_to_config_invalid
  - error::transient_errors_are_marked_temporary
  source_file: /src/opendal/core/services/goosefs/src/core.rs
- function_names:
  - GoosefsWriter::new
  - GoosefsWriter::make_tmp_path
  - GoosefsWriter::ensure_writer
  - GoosefsWriter::finalize_rename
  - GoosefsWriter::write
  - GoosefsWriter::close
  - GoosefsWriter::abort
  source_file: /src/opendal/core/services/goosefs/src/writer.rs
- function_names:
  - register_goosefs_service
  source_file: /src/opendal/core/services/goosefs/src/lib.rs
- function_names:
  - GoosefsBuilder::fmt
  - GoosefsBuilder::root
  - GoosefsBuilder::master_addr
  - GoosefsBuilder::block_size
  - GoosefsBuilder::chunk_size
  - GoosefsBuilder::write_type
  - GoosefsBuilder::auth_type
  - GoosefsBuilder::auth_username
  - GoosefsBuilder::build
  - GoosefsBackend::info
  - GoosefsBackend::capability
  - GoosefsBackend::create_dir
  - GoosefsBackend::stat
  - GoosefsBackend::read
  - GoosefsBackend::write
  - GoosefsBackend::delete
  - GoosefsBackend::list
  - GoosefsBackend::copy
  - GoosefsBackend::rename
  - GoosefsBackend::presign
  - tests::test_builder_build
  - tests::test_builder_ha
  - tests::test_builder_blank_master_addr_fails
  source_file: /src/opendal/core/services/goosefs/src/backend.rs
- function_names:
  - RedbConfig::from_uri
  - RedbConfig::into_builder
  - tests::from_uri_sets_datadir_table_and_root
  source_file: /src/opendal/core/services/redb/src/config.rs
- function_names:
  - RedbDeleter::new
  - RedbDeleter::delete_once
  source_file: /src/opendal/core/services/redb/src/deleter.rs
- function_names:
  - RedbReader::new
  - RedbReader::open
  source_file: /src/opendal/core/services/redb/src/reader.rs
- function_names:
  - RedbCore::fmt
  - RedbCore::get
  - RedbCore::set
  - RedbCore::delete
  - parse_transaction_error
  - parse_table_error
  - parse_storage_error
  - parse_commit_error
  - parse_database_error
  - create_table
  source_file: /src/opendal/core/services/redb/src/core.rs
- function_names:
  - RedbWriter::new
  - RedbWriter::write
  - RedbWriter::close
  - RedbWriter::abort
  source_file: /src/opendal/core/services/redb/src/writer.rs
- function_names:
  - register_redb_service
  source_file: /src/opendal/core/services/redb/src/lib.rs
- function_names:
  - RedbBuilder::fmt
  - RedbBuilder::database
  - RedbBuilder::datadir
  - RedbBuilder::table
  - RedbBuilder::root
  - RedbBuilder::build
  - RedbBackend::new
  - RedbBackend::with_normalized_root
  - RedbBackend::info
  - RedbBackend::capability
  - RedbBackend::create_dir
  - RedbBackend::stat
  - RedbBackend::read
  - RedbBackend::write
  - RedbBackend::delete
  - RedbBackend::list
  - RedbBackend::copy
  - RedbBackend::rename
  - RedbBackend::presign
  source_file: /src/opendal/core/services/redb/src/backend.rs
- function_names:
  - TosConfig::fmt
  - TosConfig::from_uri
  - TosConfig::into_builder
  - tests::test_tos_config_original_field_names
  - tests::test_tos_config_tos_prefixed_aliases
  - tests::test_tos_config_volcengine_prefixed_aliases
  - tests::from_uri_extracts_bucket_and_root
  - tests::from_uri_extracts_endpoint
  source_file: /src/opendal/core/services/tos/src/config.rs
- function_names:
  - TosDeleter::new
  - TosDeleter::delete_once
  - TosDeleter::delete_batch
  - parse_delete_objects_result_error
  source_file: /src/opendal/core/services/tos/src/deleter.rs
- function_names:
  - TosLister::new
  - TosLister::next_page
  - TosObjectVersionsLister::new
  - TosObjectVersionsLister::next_page
  source_file: /src/opendal/core/services/tos/src/lister.rs
- function_names:
  - TosReader::new
  - TosReader::open
  source_file: /src/opendal/core/services/tos/src/reader.rs
- function_names:
  - new_tos_copier
  - TosCopier::source_metadata
  - TosCopier::copy_once
  - TosCopier::initiate_copy
  - TosCopier::copy_part
  - TosCopier::complete_copy
  - TosCopier::abort_copy
  source_file: /src/opendal/core/services/tos/src/copier.rs
- function_names:
  - TosCore::fmt
  - TosCore::signer
  - TosCore::send
  - TosCore::fetch
  - TosCore::insert_metadata_headers
  - TosCore::tos_get_object_request
  - TosCore::tos_get_object
  - TosCore::tos_put_object_request
  - TosCore::tos_head_object_request
  - TosCore::tos_head_object
  - TosCore::tos_delete_object
  - TosCore::tos_delete_objects
  - TosCore::tos_copy_object
  - TosCore::tos_initiate_multipart_copy
  - TosCore::tos_upload_part_copy_request
  - TosCore::tos_complete_multipart_copy
  - TosCore::tos_abort_multipart_copy
  - TosCore::tos_list_objects_v2
  - TosCore::tos_list_object_versions
  - TosCore::tos_initiate_multipart_upload
  - TosCore::tos_upload_part_request
  - TosCore::tos_complete_multipart_upload
  - TosCore::tos_abort_multipart_upload
  - error::parse_error
  - error::parse_tos_error
  - error::parse_tos_error_code
  - error::test_parse_error
  - error::test_parse_json_error
  - error::test_parse_error_from_unrelated_input
  - utils::tos_parse_etag
  - utils::tos_parse_into_metadata
  source_file: /src/opendal/core/services/tos/src/core.rs
- function_names:
  - TosWriter::new
  - TosWriter::parse_header_into_meta
  - TosWriter::write_once
  - TosWriter::initiate_part
  - TosWriter::write_part
  - TosWriter::complete_part
  - TosWriter::abort_part
  source_file: /src/opendal/core/services/tos/src/writer.rs
- function_names:
  - register_tos_service
  source_file: /src/opendal/core/services/tos/src/lib.rs
- function_names:
  - TosBuilder::fmt
  - TosBuilder::root
  - TosBuilder::bucket
  - TosBuilder::endpoint
  - TosBuilder::region
  - TosBuilder::access_key_id
  - TosBuilder::secret_access_key
  - TosBuilder::security_token
  - TosBuilder::skip_signature
  - TosBuilder::build
  - TosBackend::info
  - TosBackend::capability
  - TosBackend::create_dir
  - TosBackend::stat
  - TosBackend::read
  - TosBackend::write
  - TosBackend::delete
  - TosBackend::list
  - TosBackend::copy
  - TosBackend::rename
  - TosBackend::presign
  source_file: /src/opendal/core/services/tos/src/backend.rs
- function_names:
  - AzfileConfig::fmt
  - AzfileConfig::from_uri
  - AzfileConfig::into_builder
  - tests::from_uri_sets_endpoint_share_root_and_account
  - tests::from_uri_accepts_share_from_query
  source_file: /src/opendal/core/services/azfile/src/config.rs
- function_names:
  - AzfileDeleter::new
  - AzfileDeleter::delete_once
  source_file: /src/opendal/core/services/azfile/src/deleter.rs
- function_names:
  - AzfileLister::new
  - AzfileLister::next_page
  - tests::test_parse_list_result
  source_file: /src/opendal/core/services/azfile/src/lister.rs
- function_names:
  - AzfileReader::new
  - AzfileReader::open
  source_file: /src/opendal/core/services/azfile/src/reader.rs
- function_names:
  - AzfileCore::fmt
  - AzfileCore::signer
  - AzfileCore::sign
  - AzfileCore::send
  - AzfileCore::azfile_read
  - AzfileCore::azfile_create_file
  - AzfileCore::azfile_update
  - AzfileCore::azfile_get_file_properties
  - AzfileCore::azfile_get_directory_properties
  - AzfileCore::azfile_rename
  - AzfileCore::azfile_create_dir
  - AzfileCore::azfile_delete_file
  - AzfileCore::azfile_delete_dir
  - AzfileCore::azfile_list
  - AzfileCore::ensure_parent_dir_exists
  - error::parse_error
  source_file: /src/opendal/core/services/azfile/src/core.rs
- function_names:
  - AzfileWriter::new
  - AzfileWriter::ensure_parent_dir_exists
  - AzfileWriter::parse_metadata
  - AzfileWriter::write_once
  - AzfileWriter::offset
  - AzfileWriter::append
  source_file: /src/opendal/core/services/azfile/src/writer.rs
- function_names:
  - register_azfile_service
  source_file: /src/opendal/core/services/azfile/src/lib.rs
- function_names:
  - AzfileConfig::from
  - AzfileBuilder::fmt
  - AzfileBuilder::root
  - AzfileBuilder::endpoint
  - AzfileBuilder::account_name
  - AzfileBuilder::account_key
  - AzfileBuilder::share_name
  - AzfileBuilder::from_connection_string
  - AzfileBuilder::build
  - AzfileBackend::info
  - AzfileBackend::capability
  - AzfileBackend::create_dir
  - AzfileBackend::stat
  - AzfileBackend::read
  - AzfileBackend::write
  - AzfileBackend::delete
  - AzfileBackend::list
  - AzfileBackend::copy
  - AzfileBackend::rename
  - AzfileBackend::presign
  source_file: /src/opendal/core/services/azfile/src/backend.rs
- function_names:
  - GridfsConfig::fmt
  - GridfsConfig::from_uri
  - GridfsConfig::into_builder
  - tests::from_uri_sets_connection_database_bucket_and_root
  source_file: /src/opendal/core/services/gridfs/src/config.rs
- function_names:
  - GridfsDeleter::new
  - GridfsDeleter::delete_once
  source_file: /src/opendal/core/services/gridfs/src/deleter.rs
- function_names:
  - GridfsReader::new
  - GridfsReader::open
  source_file: /src/opendal/core/services/gridfs/src/reader.rs
- function_names:
  - GridfsCore::fmt
  - GridfsCore::get_bucket
  - GridfsCore::get_one_doc
  - GridfsCore::get
  - GridfsCore::get_length
  - GridfsCore::set
  - GridfsCore::delete
  - parse_mongodb_error
  source_file: /src/opendal/core/services/gridfs/src/core.rs
- function_names:
  - GridfsWriter::new
  - GridfsWriter::write
  - GridfsWriter::close
  - GridfsWriter::abort
  source_file: /src/opendal/core/services/gridfs/src/writer.rs
- function_names:
  - register_gridfs_service
  source_file: /src/opendal/core/services/gridfs/src/lib.rs
- function_names:
  - GridfsBuilder::connection_string
  - GridfsBuilder::root
  - GridfsBuilder::database
  - GridfsBuilder::bucket
  - GridfsBuilder::chunk_size
  - GridfsBuilder::build
  - GridfsBackend::new
  - GridfsBackend::with_normalized_root
  - GridfsBackend::info
  - GridfsBackend::capability
  - GridfsBackend::create_dir
  - GridfsBackend::stat
  - GridfsBackend::read
  - GridfsBackend::write
  - GridfsBackend::delete
  - GridfsBackend::list
  - GridfsBackend::copy
  - GridfsBackend::rename
  - GridfsBackend::presign
  source_file: /src/opendal/core/services/gridfs/src/backend.rs
- function_names:
  - SurrealdbConfig::fmt
  - SurrealdbConfig::from_uri
  - SurrealdbConfig::into_builder
  - tests::from_uri_sets_connection_namespace_database_table_and_root
  source_file: /src/opendal/core/services/surrealdb/src/config.rs
- function_names:
  - SurrealdbDeleter::new
  - SurrealdbDeleter::delete_once
  source_file: /src/opendal/core/services/surrealdb/src/deleter.rs
- function_names:
  - SurrealdbReader::new
  - SurrealdbReader::open
  source_file: /src/opendal/core/services/surrealdb/src/reader.rs
- function_names:
  - SurrealdbCore::fmt
  - SurrealdbCore::get_connection
  - SurrealdbCore::get
  - SurrealdbCore::get_length
  - SurrealdbCore::set
  - SurrealdbCore::delete
  - parse_surrealdb_error
  source_file: /src/opendal/core/services/surrealdb/src/core.rs
- function_names:
  - SurrealdbWriter::new
  - SurrealdbWriter::write
  - SurrealdbWriter::close
  - SurrealdbWriter::abort
  source_file: /src/opendal/core/services/surrealdb/src/writer.rs
- function_names:
  - register_surrealdb_service
  source_file: /src/opendal/core/services/surrealdb/src/lib.rs
- function_names:
  - SurrealdbBuilder::connection_string
  - SurrealdbBuilder::root
  - SurrealdbBuilder::table
  - SurrealdbBuilder::username
  - SurrealdbBuilder::password
  - SurrealdbBuilder::namespace
  - SurrealdbBuilder::database
  - SurrealdbBuilder::key_field
  - SurrealdbBuilder::value_field
  - SurrealdbBuilder::build
  - SurrealdbBackend::new
  - SurrealdbBackend::with_normalized_root
  - SurrealdbBackend::info
  - SurrealdbBackend::capability
  - SurrealdbBackend::create_dir
  - SurrealdbBackend::stat
  - SurrealdbBackend::read
  - SurrealdbBackend::write
  - SurrealdbBackend::delete
  - SurrealdbBackend::list
  - SurrealdbBackend::copy
  - SurrealdbBackend::rename
  - SurrealdbBackend::presign
  source_file: /src/opendal/core/services/surrealdb/src/backend.rs
- function_names:
  - CosConfig::fmt
  - CosConfig::from_uri
  - CosConfig::into_builder
  - tests::from_uri_extracts_bucket_and_root
  - tests::from_uri_accepts_cosn_scheme
  - tests::from_uri_extracts_security_token
  - tests::debug_redacts_security_token
  source_file: /src/opendal/core/services/cos/src/config.rs
- function_names:
  - CosDeleter::new
  - CosDeleter::delete_once
  source_file: /src/opendal/core/services/cos/src/deleter.rs
- function_names:
  - CosLister::new
  - CosLister::next_page
  - CosObjectVersionsLister::new
  - CosObjectVersionsLister::next_page
  source_file: /src/opendal/core/services/cos/src/lister.rs
- function_names:
  - CosReader::new
  - CosReader::open
  source_file: /src/opendal/core/services/cos/src/reader.rs
- function_names:
  - CosCore::fmt
  - CosCore::signer
  - CosCore::sign
  - CosCore::sign_query
  - CosCore::send
  - CosCore::cos_get_object
  - CosCore::cos_get_object_request
  - CosCore::cos_put_object_request
  - CosCore::cos_head_object
  - CosCore::cos_head_object_request
  - CosCore::cos_delete_object
  - CosCore::cos_append_object_request
  - CosCore::cos_copy_object
  - CosCore::cos_list_objects
  - CosCore::cos_initiate_multipart_upload
  - CosCore::cos_upload_part_request
  - CosCore::cos_complete_multipart_upload
  - CosCore::cos_abort_multipart_upload
  - CosCore::cos_list_object_versions
  - tests::test_parse_xml
  - error::parse_error
  - error::test_parse_error
  source_file: /src/opendal/core/services/cos/src/core.rs
- function_names:
  - CosWriter::new
  - CosWriter::parse_metadata
  - CosWriter::write_once
  - CosWriter::initiate_part
  - CosWriter::write_part
  - CosWriter::complete_part
  - CosWriter::abort_part
  - CosWriter::offset
  - CosWriter::append
  source_file: /src/opendal/core/services/cos/src/writer.rs
- function_names:
  - register_cos_service
  source_file: /src/opendal/core/services/cos/src/lib.rs
- function_names:
  - CosBuilder::fmt
  - CosBuilder::root
  - CosBuilder::endpoint
  - CosBuilder::secret_id
  - CosBuilder::secret_key
  - CosBuilder::security_token
  - CosBuilder::bucket
  - CosBuilder::enable_versioning
  - CosBuilder::disable_config_load
  - CosBuilder::build
  - CosBackend::info
  - CosBackend::capability
  - CosBackend::create_dir
  - CosBackend::stat
  - CosBackend::read
  - CosBackend::write
  - CosBackend::delete
  - CosBackend::list
  - CosBackend::copy
  - CosBackend::rename
  - CosBackend::presign
  source_file: /src/opendal/core/services/cos/src/backend.rs
- function_names:
  - D1Config::fmt
  - D1Config::from_uri
  - D1Config::into_builder
  - tests::from_uri_sets_account_database_and_root
  source_file: /src/opendal/core/services/d1/src/config.rs
- function_names:
  - D1Deleter::new
  - D1Deleter::delete_once
  source_file: /src/opendal/core/services/d1/src/deleter.rs
- function_names:
  - D1Reader::new
  - D1Reader::open
  source_file: /src/opendal/core/services/d1/src/reader.rs
- function_names:
  - D1Core::fmt
  - D1Core::create_d1_query_request
  - D1Core::get
  - D1Core::get_length
  - D1Core::set
  - D1Core::delete
  - error::parse_error
  - error::parse_d1_error_code
  source_file: /src/opendal/core/services/d1/src/core.rs
- function_names:
  - D1Response::parse
  - D1Response::get_result
  - D1Response::get_usize_result
  - test::test_deserialize_get_object_json_response
  - test::test_get_usize_result
  source_file: /src/opendal/core/services/d1/src/model.rs
- function_names:
  - D1Writer::new
  - D1Writer::write
  - D1Writer::close
  - D1Writer::abort
  source_file: /src/opendal/core/services/d1/src/writer.rs
- function_names:
  - register_d1_service
  source_file: /src/opendal/core/services/d1/src/lib.rs
- function_names:
  - D1Builder::fmt
  - D1Builder::token
  - D1Builder::account_id
  - D1Builder::database_id
  - D1Builder::root
  - D1Builder::table
  - D1Builder::key_field
  - D1Builder::value_field
  - D1Builder::build
  - D1Backend::new
  - D1Backend::with_normalized_root
  - D1Backend::info
  - D1Backend::capability
  - D1Backend::create_dir
  - D1Backend::stat
  - D1Backend::read
  - D1Backend::write
  - D1Backend::delete
  - D1Backend::list
  - D1Backend::copy
  - D1Backend::rename
  - D1Backend::presign
  source_file: /src/opendal/core/services/d1/src/backend.rs
- function_names:
  - AzdlsConfig::fmt
  - AzdlsConfig::from_uri
  - AzdlsConfig::into_builder
  - tests::from_uri_sets_endpoint_filesystem_root_and_account
  - tests::from_uri_accepts_filesystem_from_query
  source_file: /src/opendal/core/services/azdls/src/config.rs
- function_names:
  - AzdlsDeleter::new
  - AzdlsDeleter::delete_once
  source_file: /src/opendal/core/services/azdls/src/deleter.rs
- function_names:
  - AzdlsLister::new
  - AzdlsLister::next_page
  - tests::test_parse_path
  source_file: /src/opendal/core/services/azdls/src/lister.rs
- function_names:
  - AzdlsReader::new
  - AzdlsReader::open
  source_file: /src/opendal/core/services/azdls/src/reader.rs
- function_names:
  - AzdlsCore::fmt
  - AzdlsCore::signer
  - AzdlsCore::sign
  - AzdlsCore::send
  - AzdlsCore::azdls_read
  - AzdlsCore::azdls_create
  - AzdlsCore::azdls_rename
  - AzdlsCore::azdls_append
  - AzdlsCore::azdls_flush
  - AzdlsCore::azdls_get_properties
  - AzdlsCore::azdls_stat_metadata
  - AzdlsCore::azdls_delete
  - AzdlsCore::azdls_recursive_delete
  - AzdlsCore::azdls_list
  - AzdlsCore::azdls_ensure_parent_path
  - encode_user_metadata
  - decode_user_metadata
  - tests::encode_then_decode_roundtrips
  - tests::encoded_value_is_base64_so_special_characters_survive
  - tests::decode_preserves_utf8_multibyte_values
  - tests::decode_silently_skips_malformed_entries_and_keeps_valid_ones
  - error::parse_error
  source_file: /src/opendal/core/services/azdls/src/core.rs
- function_names:
  - AzdlsLazyPositionWriter::new
  - AzdlsLazyPositionWriter::ensure_created
  - AzdlsWriter::new
  - AzdlsWriter::create_if_needed
  - AzdlsWriter::parse_metadata
  - AzdlsWriter::write_all_at
  - AzdlsWriter::close
  - AzdlsWriter::abort
  - AzdlsLazyPositionWriter::write_all_at
  - AzdlsLazyPositionWriter::close
  - AzdlsLazyPositionWriter::abort
  - AzdlsWriter::offset
  - AzdlsWriter::append
  source_file: /src/opendal/core/services/azdls/src/writer.rs
- function_names:
  - register_azdls_service
  source_file: /src/opendal/core/services/azdls/src/lib.rs
- function_names:
  - AzdlsConfig::from
  - AzdlsBuilder::fmt
  - AzdlsBuilder::root
  - AzdlsBuilder::filesystem
  - AzdlsBuilder::endpoint
  - AzdlsBuilder::account_name
  - AzdlsBuilder::account_key
  - AzdlsBuilder::client_secret
  - AzdlsBuilder::tenant_id
  - AzdlsBuilder::client_id
  - AzdlsBuilder::sas_token
  - AzdlsBuilder::authority_host
  - AzdlsBuilder::from_connection_string
  - AzdlsBuilder::enable_hns
  - AzdlsBuilder::build
  - AzdlsBackend::info
  - AzdlsBackend::capability
  - AzdlsBackend::create_dir
  - AzdlsBackend::stat
  - AzdlsBackend::read
  - AzdlsBackend::write
  - AzdlsBackend::delete
  - AzdlsBackend::list
  - AzdlsBackend::copy
  - AzdlsBackend::rename
  - AzdlsBackend::presign
  source_file: /src/opendal/core/services/azdls/src/backend.rs
- function_names:
  - VercelArtifactsConfig::fmt
  - VercelArtifactsConfig::from_uri
  - VercelArtifactsConfig::into_builder
  - tests::from_uri_loads_access_token
  - tests::from_uri_loads_all_options
  - tests::defaults_are_none
  source_file: /src/opendal/core/services/vercel-artifacts/src/config.rs
- function_names:
  - VercelArtifactsReader::new
  - VercelArtifactsReader::open
  source_file: /src/opendal/core/services/vercel-artifacts/src/reader.rs
- function_names:
  - VercelArtifactsCore::fmt
  - VercelArtifactsCore::vercel_artifacts_get
  - VercelArtifactsCore::vercel_artifacts_put
  - VercelArtifactsCore::vercel_artifacts_stat
  - error::parse_error
  source_file: /src/opendal/core/services/vercel-artifacts/src/core.rs
- function_names:
  - VercelArtifactsWriter::new
  - VercelArtifactsWriter::write_once
  source_file: /src/opendal/core/services/vercel-artifacts/src/writer.rs
- function_names:
  - register_vercel_artifacts_service
  source_file: /src/opendal/core/services/vercel-artifacts/src/lib.rs
- function_names:
  - VercelArtifactsBuilder::fmt
  - VercelArtifactsBuilder::access_token
  - VercelArtifactsBuilder::endpoint
  - VercelArtifactsBuilder::team_id
  - VercelArtifactsBuilder::team_slug
  - VercelArtifactsBuilder::build
  - VercelArtifactsBackend::info
  - VercelArtifactsBackend::capability
  - VercelArtifactsBackend::create_dir
  - VercelArtifactsBackend::stat
  - VercelArtifactsBackend::read
  - VercelArtifactsBackend::write
  - VercelArtifactsBackend::delete
  - VercelArtifactsBackend::list
  - VercelArtifactsBackend::copy
  - VercelArtifactsBackend::rename
  - VercelArtifactsBackend::presign
  source_file: /src/opendal/core/services/vercel-artifacts/src/backend.rs
- function_names:
  - B2Config::fmt
  - B2Config::from_uri
  - B2Config::into_builder
  - tests::from_uri_extracts_bucket_and_root
  source_file: /src/opendal/core/services/b2/src/config.rs
- function_names:
  - B2Deleter::new
  - B2Deleter::delete_once
  source_file: /src/opendal/core/services/b2/src/deleter.rs
- function_names:
  - B2Lister::new
  - B2Lister::next_page
  source_file: /src/opendal/core/services/b2/src/lister.rs
- function_names:
  - B2Reader::new
  - B2Reader::open
  source_file: /src/opendal/core/services/b2/src/reader.rs
- function_names:
  - B2Core::fmt
  - B2Core::send
  - B2Core::get_auth_info
  - B2Core::download_file_by_name
  - B2Core::get_upload_url
  - B2Core::get_download_authorization
  - B2Core::upload_file
  - B2Core::start_large_file
  - B2Core::get_upload_part_url
  - B2Core::upload_part
  - B2Core::finish_large_file
  - B2Core::cancel_large_file
  - B2Core::get_file_info
  - B2Core::list_file_names
  - B2Core::list_file_names_raw
  - B2Core::copy_file
  - B2Core::hide_file
  - B2Signer::default
  - parse_file_info
  - error::parse_error
  - error::parse_b2_error_code
  - error::test_parse_b2_error_code
  - error::test_parse_error
  source_file: /src/opendal/core/services/b2/src/core.rs
- function_names:
  - B2Writer::new
  - B2Writer::parse_body_into_meta
  - B2Writer::write_once
  - B2Writer::initiate_part
  - B2Writer::write_part
  - B2Writer::complete_part
  - B2Writer::abort_part
  source_file: /src/opendal/core/services/b2/src/writer.rs
- function_names:
  - register_b2_service
  source_file: /src/opendal/core/services/b2/src/lib.rs
- function_names:
  - B2Builder::fmt
  - B2Builder::root
  - B2Builder::application_key_id
  - B2Builder::application_key
  - B2Builder::bucket
  - B2Builder::bucket_id
  - B2Builder::build
  - B2Backend::info
  - B2Backend::capability
  - B2Backend::create_dir
  - B2Backend::stat
  - B2Backend::read
  - B2Backend::write
  - B2Backend::delete
  - B2Backend::list
  - B2Backend::copy
  - B2Backend::rename
  - B2Backend::presign
  source_file: /src/opendal/core/services/b2/src/backend.rs
- function_names:
  - WebdavConfig::default
  - WebdavConfig::fmt
  - WebdavConfig::from_uri
  - WebdavConfig::into_builder
  - tests::from_uri_sets_endpoint_and_root
  - tests::from_uri_ignores_endpoint_override
  - tests::from_uri_accepts_deprecated_disable_copy
  - tests::from_uri_propagates_disable_create_dir
  source_file: /src/opendal/core/services/webdav/src/config.rs
- function_names:
  - WebdavDeleter::new
  - WebdavDeleter::delete_once
  source_file: /src/opendal/core/services/webdav/src/deleter.rs
- function_names:
  - WebdavLister::new
  - WebdavLister::next_page
  source_file: /src/opendal/core/services/webdav/src/lister.rs
- function_names:
  - WebdavReader::new
  - WebdavReader::open
  source_file: /src/opendal/core/services/webdav/src/reader.rs
- function_names:
  - WebdavCore::fmt
  - WebdavCore::webdav_stat
  - WebdavCore::webdav_stat_rooted_abs_path
  - WebdavCore::webdav_get
  - WebdavCore::webdav_put
  - WebdavCore::webdav_proppatch
  - WebdavCore::webdav_delete
  - WebdavCore::webdav_copy
  - WebdavCore::webdav_move
  - WebdavCore::webdav_list
  - WebdavCore::webdav_mkcol
  - WebdavCore::webdav_mkcol_rooted_abs_path
  - build_proppatch_request
  - parse_user_metadata_from_xml
  - check_proppatch_response
  - deserialize_multistatus
  - parse_propstat
  - parse_propstats
  - tests::new_propstat
  - tests::test_propstat
  - tests::test_parse_propstat_rejects_invalid_status_code
  - tests::test_parse_propstat_rejects_invalid_content_length
  - tests::test_response_simple
  - tests::test_response_file
  - tests::test_response_with_multiple_propstat
  - tests::test_parse_propstats_skips_failed_propstat
  - tests::test_with_multiple_items_simple
  - tests::test_with_multiple_items_mixed
  - tests::test_with_multiple_items_mixed_nginx
  - tests::test_build_proppatch_request
  - tests::test_build_proppatch_request_with_special_chars
  - tests::test_build_proppatch_request_custom_namespace
  - tests::test_parse_user_metadata_from_xml
  - tests::test_parse_user_metadata_from_xml_with_special_chars
  - tests::test_parse_user_metadata_from_xml_empty
  - tests::test_parse_user_metadata_from_xml_dynamic_prefix
  - tests::test_parse_user_metadata_from_xml_namespace_at_root
  - tests::test_parse_user_metadata_from_xml_custom_namespace
  - tests::test_check_proppatch_response_success
  - tests::test_check_proppatch_response_failure
  - tests::test_check_proppatch_response_lowercase
  - error::parse_error
  source_file: /src/opendal/core/services/webdav/src/core.rs
- function_names:
  - WebdavWriter::new
  - WebdavWriter::parse_metadata
  - WebdavWriter::write_once
  source_file: /src/opendal/core/services/webdav/src/writer.rs
- function_names:
  - register_webdav_service
  source_file: /src/opendal/core/services/webdav/src/lib.rs
- function_names:
  - WebdavBuilder::fmt
  - WebdavBuilder::endpoint
  - WebdavBuilder::username
  - WebdavBuilder::password
  - WebdavBuilder::token
  - WebdavBuilder::root
  - WebdavBuilder::disable_create_dir
  - WebdavBuilder::enable_user_metadata
  - WebdavBuilder::user_metadata_prefix
  - WebdavBuilder::user_metadata_uri
  - WebdavBuilder::enable_conditional_read
  - WebdavBuilder::build
  - WebdavBackend::info
  - WebdavBackend::capability
  - WebdavBackend::create_dir
  - WebdavBackend::stat
  - WebdavBackend::read
  - WebdavBackend::write
  - WebdavBackend::delete
  - WebdavBackend::list
  - WebdavBackend::copy
  - WebdavBackend::rename
  - WebdavBackend::presign
  source_file: /src/opendal/core/services/webdav/src/backend.rs
- function_names:
  - VercelBlobConfig::fmt
  - VercelBlobConfig::from_uri
  - VercelBlobConfig::into_builder
  - tests::from_uri_sets_root
  source_file: /src/opendal/core/services/vercel-blob/src/config.rs
- function_names:
  - VercelBlobDeleter::new
  - VercelBlobDeleter::delete_once
  source_file: /src/opendal/core/services/vercel-blob/src/deleter.rs
- function_names:
  - VercelBlobLister::new
  - VercelBlobLister::next_page
  source_file: /src/opendal/core/services/vercel-blob/src/lister.rs
- function_names:
  - VercelBlobReader::new
  - VercelBlobReader::open
  source_file: /src/opendal/core/services/vercel-blob/src/reader.rs
- function_names:
  - VercelBlobCore::fmt
  - VercelBlobCore::send
  - VercelBlobCore::sign
  - VercelBlobCore::download
  - VercelBlobCore::upload
  - VercelBlobCore::head
  - VercelBlobCore::copy
  - VercelBlobCore::list
  - VercelBlobCore::vercel_delete_blob
  - VercelBlobCore::initiate_multipart_upload
  - VercelBlobCore::upload_part
  - VercelBlobCore::complete_multipart_upload
  - parse_blob
  - resolve_blob
  - error::parse_error
  - error::test_parse_error
  source_file: /src/opendal/core/services/vercel-blob/src/core.rs
- function_names:
  - VercelBlobWriter::new
  - VercelBlobWriter::write_once
  - VercelBlobWriter::initiate_part
  - VercelBlobWriter::write_part
  - VercelBlobWriter::complete_part
  - VercelBlobWriter::abort_part
  source_file: /src/opendal/core/services/vercel-blob/src/writer.rs
- function_names:
  - register_vercel_blob_service
  source_file: /src/opendal/core/services/vercel-blob/src/lib.rs
- function_names:
  - VercelBlobBuilder::fmt
  - VercelBlobBuilder::root
  - VercelBlobBuilder::token
  - VercelBlobBuilder::build
  - VercelBlobBackend::info
  - VercelBlobBackend::capability
  - VercelBlobBackend::create_dir
  - VercelBlobBackend::stat
  - VercelBlobBackend::read
  - VercelBlobBackend::write
  - VercelBlobBackend::copy
  - VercelBlobBackend::list
  - VercelBlobBackend::delete
  - VercelBlobBackend::rename
  - VercelBlobBackend::presign
  source_file: /src/opendal/core/services/vercel-blob/src/backend.rs
- function_names:
  - DropboxConfig::fmt
  - DropboxConfig::from_uri
  - DropboxConfig::into_builder
  - tests::from_uri_sets_root
  source_file: /src/opendal/core/services/dropbox/src/config.rs
- function_names:
  - DropboxDeleter::new
  - DropboxDeleter::delete_once
  source_file: /src/opendal/core/services/dropbox/src/deleter.rs
- function_names:
  - DropboxLister::new
  - DropboxLister::next_page
  source_file: /src/opendal/core/services/dropbox/src/lister.rs
- function_names:
  - DropboxReader::new
  - DropboxReader::open
  source_file: /src/opendal/core/services/dropbox/src/reader.rs
- function_names:
  - DropboxCore::fmt
  - DropboxCore::build_path
  - DropboxCore::sign
  - DropboxCore::dropbox_get
  - DropboxCore::dropbox_update
  - DropboxCore::dropbox_delete
  - DropboxCore::dropbox_create_folder
  - DropboxCore::dropbox_list
  - DropboxCore::dropbox_list_continue
  - DropboxCore::dropbox_copy
  - DropboxCore::dropbox_move
  - DropboxCore::dropbox_get_metadata
  - DropboxSigner::default
  - DropboxUploadArgs::default
  - error::parse_error
  - error::parse_dropbox_error_summary
  source_file: /src/opendal/core/services/dropbox/src/core.rs
- function_names:
  - DropboxWriter::new
  - DropboxWriter::parse_metadata
  - DropboxWriter::write_once
  source_file: /src/opendal/core/services/dropbox/src/writer.rs
- function_names:
  - register_dropbox_service
  source_file: /src/opendal/core/services/dropbox/src/lib.rs
- function_names:
  - DropboxBuilder::fmt
  - DropboxBuilder::root
  - DropboxBuilder::access_token
  - DropboxBuilder::refresh_token
  - DropboxBuilder::client_id
  - DropboxBuilder::client_secret
  - DropboxBuilder::build
  - DropboxBackend::info
  - DropboxBackend::capability
  - DropboxBackend::create_dir
  - DropboxBackend::stat
  - DropboxBackend::read
  - DropboxBackend::write
  - DropboxBackend::delete
  - DropboxBackend::list
  - DropboxBackend::copy
  - DropboxBackend::rename
  - DropboxBackend::presign
  source_file: /src/opendal/core/services/dropbox/src/backend.rs
- function_names:
  - GcsConfig::fmt
  - GcsConfig::from_uri
  - GcsConfig::into_builder
  - tests::test_bucket_aliases
  - tests::test_service_account_aliases
  - tests::test_credential_aliases
  - tests::test_credential_path_aliases
  - tests::test_skip_signature_aliases
  - tests::from_uri_extracts_bucket_and_root
  source_file: /src/opendal/core/services/gcs/src/config.rs
- function_names:
  - GcsDeleter::new
  - GcsDeleter::delete_once
  - GcsDeleter::delete_batch
  source_file: /src/opendal/core/services/gcs/src/deleter.rs
- function_names:
  - GcsLister::new
  - GcsLister::next_page
  source_file: /src/opendal/core/services/gcs/src/lister.rs
- function_names:
  - GcsReader::new
  - GcsReader::open
  source_file: /src/opendal/core/services/gcs/src/reader.rs
- function_names:
  - GcsCopier::new
  - GcsCopier::next
  - GcsCopier::close
  - GcsCopier::abort
  source_file: /src/opendal/core/services/gcs/src/copier.rs
- function_names:
  - GcsCore::fmt
  - GcsCore::signer
  - GcsCore::sign
  - GcsCore::sign_query
  - GcsCore::send
  - GcsCore::gcs_get_object_request
  - GcsCore::gcs_get_object_xml_request
  - GcsCore::gcs_get_object
  - GcsCore::gcs_insert_object_request
  - GcsCore::gcs_insert_object_xml_request
  - GcsCore::gcs_head_object_request
  - GcsCore::gcs_head_object_xml_request
  - GcsCore::gcs_get_object_metadata
  - GcsCore::gcs_delete_object
  - GcsCore::gcs_delete_object_request
  - GcsCore::gcs_delete_objects
  - GcsCore::gcs_rewrite_object
  - GcsCore::gcs_list_objects
  - GcsCore::gcs_initiate_multipart_upload
  - GcsCore::gcs_upload_part
  - GcsCore::gcs_complete_multipart_upload
  - GcsCore::gcs_abort_multipart_upload
  - GcsCore::build_metadata_from_object_response
  - GetObjectJsonResponse::into_metadata
  - predefined_acl_to_xml_header
  - InsertRequestMetadata::is_empty
  - RewriteResponse::into_metadata
  - tests::test_deserialize_get_object_json_response
  - tests::test_deserialize_list_response
  - tests::test_deserialize_list_response_with_next_page_token
  - error::parse_error
  - error::test_parse_error
  - uri::gcs_percent_encode_path
  - uri::test_percent_encode_path
  source_file: /src/opendal/core/services/gcs/src/core.rs
- function_names:
  - GcsWriter::new
  - GcsWriter::write_once
  - GcsWriter::initiate_part
  - GcsWriter::write_part
  - GcsWriter::complete_part
  - GcsWriter::abort_part
  source_file: /src/opendal/core/services/gcs/src/writer.rs
- function_names:
  - register_gcs_service
  source_file: /src/opendal/core/services/gcs/src/lib.rs
- function_names:
  - GcsBuilder::fmt
  - GcsBuilder::root
  - GcsBuilder::bucket
  - GcsBuilder::scope
  - GcsBuilder::service_account
  - GcsBuilder::endpoint
  - GcsBuilder::credential
  - GcsBuilder::credential_path
  - GcsBuilder::credential_provider
  - GcsBuilder::credential_provider_chain
  - GcsBuilder::token
  - GcsBuilder::disable_vm_metadata
  - GcsBuilder::disable_config_load
  - GcsBuilder::predefined_acl
  - GcsBuilder::default_storage_class
  - GcsBuilder::skip_signature
  - GcsBuilder::allow_anonymous
  - GcsBuilder::build
  - GcsBackend::info
  - GcsBackend::capability
  - GcsBackend::create_dir
  - GcsBackend::stat
  - GcsBackend::read
  - GcsBackend::write
  - GcsBackend::delete
  - GcsBackend::list
  - GcsBackend::copy
  - GcsBackend::rename
  - GcsBackend::presign
  source_file: /src/opendal/core/services/gcs/src/backend.rs
- function_names:
  - AliyunDriveConfig::fmt
  - AliyunDriveConfig::from_uri
  - AliyunDriveConfig::into_builder
  - tests::from_uri_sets_drive_type_and_root
  - tests::from_uri_allows_missing_drive_type
  source_file: /src/opendal/core/services/aliyun-drive/src/config.rs
- function_names:
  - AliyunDriveDeleter::new
  - AliyunDriveDeleter::delete_once
  source_file: /src/opendal/core/services/aliyun-drive/src/deleter.rs
- function_names:
  - AliyunDriveLister::new_with_path
  - AliyunDriveLister::parent
  - AliyunDriveLister::next_page
  source_file: /src/opendal/core/services/aliyun-drive/src/lister.rs
- function_names:
  - AliyunDriveReader::new
  - AliyunDriveReader::open
  source_file: /src/opendal/core/services/aliyun-drive/src/reader.rs
- function_names:
  - AliyunDriveCore::fmt
  - AliyunDriveCore::send
  - AliyunDriveCore::get_access_token
  - AliyunDriveCore::get_drive_id
  - AliyunDriveCore::get_token_and_drive
  - AliyunDriveCore::build_path
  - AliyunDriveCore::get_by_path
  - AliyunDriveCore::ensure_dir_exists
  - AliyunDriveCore::create_with_rapid_upload
  - AliyunDriveCore::create
  - AliyunDriveCore::get_download_url
  - AliyunDriveCore::download
  - AliyunDriveCore::move_path
  - AliyunDriveCore::update_path
  - AliyunDriveCore::copy_path
  - AliyunDriveCore::delete_path
  - AliyunDriveCore::list
  - AliyunDriveCore::complete
  - AliyunDriveCore::get_upload_url
  - AliyunDriveCore::upload
  - error::parse_error
  source_file: /src/opendal/core/services/aliyun-drive/src/core.rs
- function_names:
  - AliyunDriveLazyWriter::new
  - AliyunDriveLazyWriter::inner
  - AliyunDriveLazyWriter::write
  - AliyunDriveLazyWriter::close
  - AliyunDriveLazyWriter::abort
  - AliyunDriveWriter::new
  - AliyunDriveWriter::write
  - AliyunDriveWriter::close
  - AliyunDriveWriter::abort
  source_file: /src/opendal/core/services/aliyun-drive/src/writer.rs
- function_names:
  - register_aliyun_drive_service
  source_file: /src/opendal/core/services/aliyun-drive/src/lib.rs
- function_names:
  - AliyunDriveBuilder::fmt
  - AliyunDriveBuilder::root
  - AliyunDriveBuilder::access_token
  - AliyunDriveBuilder::client_id
  - AliyunDriveBuilder::client_secret
  - AliyunDriveBuilder::refresh_token
  - AliyunDriveBuilder::drive_type
  - AliyunDriveBuilder::build
  - AliyunDriveBackend::info
  - AliyunDriveBackend::capability
  - AliyunDriveBackend::create_dir
  - AliyunDriveBackend::rename
  - AliyunDriveBackend::copy
  - AliyunDriveBackend::stat
  - AliyunDriveBackend::read
  - AliyunDriveBackend::delete
  - AliyunDriveBackend::list
  - AliyunDriveBackend::write
  - AliyunDriveBackend::presign
  source_file: /src/opendal/core/services/aliyun-drive/src/backend.rs
- function_names:
  - TikvConfig::fmt
  - TikvConfig::from_uri
  - TikvConfig::into_builder
  - tests::from_uri_collects_endpoints
  source_file: /src/opendal/core/services/tikv/src/config.rs
- function_names:
  - TikvDeleter::new
  - TikvDeleter::delete_once
  source_file: /src/opendal/core/services/tikv/src/deleter.rs
- function_names:
  - TikvReader::new
  - TikvReader::open
  source_file: /src/opendal/core/services/tikv/src/reader.rs
- function_names:
  - TikvCore::fmt
  - TikvCore::get_connection
  - TikvCore::get
  - TikvCore::set
  - TikvCore::delete
  - parse_tikv_error
  - parse_tikv_config_error
  source_file: /src/opendal/core/services/tikv/src/core.rs
- function_names:
  - TikvWriter::new
  - TikvWriter::write
  - TikvWriter::close
  - TikvWriter::abort
  source_file: /src/opendal/core/services/tikv/src/writer.rs
- function_names:
  - register_tikv_service
  source_file: /src/opendal/core/services/tikv/src/lib.rs
- function_names:
  - TikvBuilder::endpoints
  - TikvBuilder::insecure
  - TikvBuilder::ca_path
  - TikvBuilder::cert_path
  - TikvBuilder::key_path
  - TikvBuilder::build
  - TikvBackend::new
  - TikvBackend::info
  - TikvBackend::capability
  - TikvBackend::create_dir
  - TikvBackend::stat
  - TikvBackend::read
  - TikvBackend::write
  - TikvBackend::delete
  - TikvBackend::list
  - TikvBackend::copy
  - TikvBackend::rename
  - TikvBackend::presign
  source_file: /src/opendal/core/services/tikv/src/backend.rs
- function_names:
  - SwiftConfig::fmt
  - SwiftConfig::from_uri
  - SwiftConfig::into_builder
  - tests::from_uri_sets_endpoint_container_and_root
  - tests::from_uri_accepts_container_from_query
  source_file: /src/opendal/core/services/swift/src/config.rs
- function_names:
  - SwiftDeleter::new
  - SwiftDeleter::delete_once
  - SwiftDeleter::delete_batch
  source_file: /src/opendal/core/services/swift/src/deleter.rs
- function_names:
  - SwiftLister::new
  - SwiftLister::next_page
  source_file: /src/opendal/core/services/swift/src/lister.rs
- function_names:
  - SwiftReader::new
  - SwiftReader::open
  source_file: /src/opendal/core/services/swift/src/reader.rs
- function_names:
  - TempUrlHashAlgorithm::from_str_opt
  - TempUrlHashAlgorithm::hmac_sign
  - SwiftCore::fmt
  - SwiftCore::swift_delete
  - SwiftCore::swift_bulk_delete
  - SwiftCore::swift_list
  - SwiftCore::swift_create_object
  - SwiftCore::swift_read
  - SwiftCore::swift_copy
  - SwiftCore::swift_get_metadata
  - SwiftCore::slo_segment_path
  - SwiftCore::swift_put_segment
  - SwiftCore::swift_put_slo_manifest
  - SwiftCore::swift_delete_slo
  - SwiftCore::swift_temp_url
  - tests::parse_list_response_test
  - tests::parse_bulk_delete_response_test
  - tests::parse_bulk_delete_response_with_errors_test
  - tests::temp_url_sha1_signature_format
  - tests::temp_url_sha256_signature_format
  - tests::temp_url_sha512_signature_format
  - tests::temp_url_hash_algorithm_from_str
  - error::parse_error
  - error::parse_error_response
  - error::parse_error_response_test
  source_file: /src/opendal/core/services/swift/src/core.rs
- function_names:
  - SwiftWriter::new
  - SwiftWriter::parse_metadata
  - SwiftWriter::write_once
  - SwiftWriter::initiate_part
  - SwiftWriter::write_part
  - SwiftWriter::complete_part
  - SwiftWriter::abort_part
  source_file: /src/opendal/core/services/swift/src/writer.rs
- function_names:
  - register_swift_service
  source_file: /src/opendal/core/services/swift/src/lib.rs
- function_names:
  - SwiftBuilder::endpoint
  - SwiftBuilder::container
  - SwiftBuilder::root
  - SwiftBuilder::token
  - SwiftBuilder::temp_url_key
  - SwiftBuilder::temp_url_hash_algorithm
  - SwiftBuilder::build
  - SwiftBackend::info
  - SwiftBackend::capability
  - SwiftBackend::create_dir
  - SwiftBackend::stat
  - SwiftBackend::read
  - SwiftBackend::write
  - SwiftBackend::delete
  - SwiftBackend::list
  - SwiftBackend::presign
  - SwiftBackend::copy
  - SwiftBackend::rename
  source_file: /src/opendal/core/services/swift/src/backend.rs
- function_names:
  - MokaConfig::from_uri
  - MokaConfig::into_builder
  - tests::from_uri_sets_name_and_root
  source_file: /src/opendal/core/services/moka/src/config.rs
- function_names:
  - MokaDeleter::new
  - MokaDeleter::delete_once
  source_file: /src/opendal/core/services/moka/src/deleter.rs
- function_names:
  - MokaLister::new
  - MokaLister::next
  source_file: /src/opendal/core/services/moka/src/lister.rs
- function_names:
  - MokaReader::new
  - MokaReader::open
  source_file: /src/opendal/core/services/moka/src/reader.rs
- function_names:
  - MokaCore::fmt
  - MokaCore::get
  - MokaCore::set
  - MokaCore::delete
  source_file: /src/opendal/core/services/moka/src/core.rs
- function_names:
  - MokaWriter::new
  - MokaWriter::write
  - MokaWriter::close
  - MokaWriter::abort
  source_file: /src/opendal/core/services/moka/src/writer.rs
- function_names:
  - register_moka_service
  source_file: /src/opendal/core/services/moka/src/lib.rs
- function_names:
  - MokaBuilder::fmt
  - MokaBuilder::new
  - MokaBuilder::name
  - MokaBuilder::max_capacity
  - MokaBuilder::time_to_live
  - MokaBuilder::time_to_idle
  - MokaBuilder::root
  - MokaBuilder::build
  - MokaBackend::new
  - MokaBackend::with_normalized_root
  - MokaBackend::info
  - MokaBackend::capability
  - MokaBackend::create_dir
  - MokaBackend::stat
  - MokaBackend::read
  - MokaBackend::write
  - MokaBackend::delete
  - MokaBackend::list
  - MokaBackend::copy
  - MokaBackend::rename
  - MokaBackend::presign
  source_file: /src/opendal/core/services/moka/src/backend.rs
- function_names:
  - GdriveConfig::fmt
  - GdriveConfig::from_uri
  - GdriveConfig::into_builder
  - tests::from_uri_sets_root
  source_file: /src/opendal/core/services/gdrive/src/config.rs
- function_names:
  - GdriveDeleter::new
  - GdriveDeleter::delete_once
  source_file: /src/opendal/core/services/gdrive/src/deleter.rs
- function_names:
  - GdrivePathIndex::new
  - GdrivePathIndex::root_id
  - GdrivePathIndex::canonical_dir_path
  - GdrivePathIndex::remove_path_candidates
  - GdrivePathIndex::lookup_cached_id
  - GdrivePathIndex::resolution_chain
  - GdrivePathIndex::resolve_from_chain
  - GdrivePathIndex::lookup_resolve_plan
  - GdrivePathIndex::get
  - GdrivePathIndex::upsert_file
  - GdrivePathIndex::upsert_dir
  - GdrivePathIndex::invalidate_file
  - GdrivePathIndex::invalidate_dir
  - GdrivePathIndex::refresh_path
  - GdrivePathIndex::ensure_dir
  - tests::test_upsert_replaces_existing_path
  - tests::test_dir_upsert_replaces_file_mapping
  - tests::test_subtree_invalidation_re_resolves_descendants
  - tests::test_ensure_dir_is_serialized
  - tests::test_ensure_dir_refreshes_stale_ancestor_chain
  source_file: /src/opendal/core/services/gdrive/src/path_index.rs
- function_names:
  - GdriveLister::new
  - GdriveLister::push_entry
  - GdriveLister::apply_recent_entry
  - GdriveLister::inject_recent_entries
  - metadata_from_gdrive_file
  - GdriveLister::next_page
  - GdriveFlatLister::new
  - GdriveFlatLister::push_entry
  - GdriveFlatLister::apply_refreshed_batch
  - GdriveFlatLister::apply_recent_entry
  - GdriveFlatLister::inject_recent_entries
  - GdriveFlatLister::initialize
  - GdriveFlatLister::fill_batch
  - GdriveFlatLister::process_batch
  - GdriveFlatLister::process_file
  - GdriveFlatLister::next
  - tests::mock_gdrive_core
  - tests::mock_operation_context
  - tests::test_process_file_skips_deleted_dirs_for_traversal
  - tests::test_apply_refreshed_batch_clears_page_token
  source_file: /src/opendal/core/services/gdrive/src/lister.rs
- function_names:
  - GdriveReader::new
  - GdriveReader::open
  source_file: /src/opendal/core/services/gdrive/src/reader.rs
- function_names:
  - GdriveCore::fmt
  - GdriveCore::cache_file_id
  - GdriveCore::cache_dir_id
  - GdriveCore::invalidate_file_id
  - GdriveCore::invalidate_dir_id
  - GdriveCore::refresh_path
  - GdriveCore::refresh_dir_path
  - GdriveCore::resolve_path
  - GdriveCore::resolve_path_after_refresh
  - GdriveCore::ensure_dir
  - GdriveCore::trash_path_if_exists
  - GdriveCore::record_recent_upsert
  - GdriveCore::record_recent_delete
  - GdriveCore::recent_entry_for_path
  - GdriveCore::recent_entries_for_list
  - GdriveCore::gdrive_stat_by_id
  - GdriveCore::gdrive_get
  - GdriveCore::gdrive_list
  - GdriveCore::gdrive_list_batch
  - GdriveCore::gdrive_patch_metadata_request
  - GdriveCore::gdrive_trash
  - GdriveCore::gdrive_upload_simple_request
  - GdriveCore::gdrive_upload_overwrite_simple_request
  - GdriveCore::sign
  - GdriveCore::gdrive_copy
  - normalize_dir_path
  - canonical_recent_path
  - prune_recent_entries
  - lookup_recent_entry
  - lookup_recent_tombstone
  - revive_recent_parent_dirs
  - insert_recent_entry
  - recent_path_candidates
  - path_under_tombstone
  - recent_entry_in_scope
  - GdriveSigner::new
  - GdriveSigner::sign
  - GdrivePathQuery::new
  - GdrivePathQuery::root
  - GdrivePathQuery::query
  - GdrivePathQuery::create_dir
  - tests::mock_gdrive_core
  - tests::test_recent_entries_for_direct_list
  - tests::test_recent_entries_for_recursive_prefix_list
  - tests::test_recent_entry_for_dir_alias
  - tests::test_recent_tombstone_hides_descendants_until_recreated
  - error::parse_error
  - error::parse_gdrive_error_code
  source_file: /src/opendal/core/services/gdrive/src/core.rs
- function_names:
  - GdriveWriter::new
  - GdriveWriter::write_once
  source_file: /src/opendal/core/services/gdrive/src/writer.rs
- function_names:
  - register_gdrive_service
  source_file: /src/opendal/core/services/gdrive/src/lib.rs
- function_names:
  - GdriveBuilder::fmt
  - GdriveBuilder::root
  - GdriveBuilder::access_token
  - GdriveBuilder::refresh_token
  - GdriveBuilder::client_id
  - GdriveBuilder::client_secret
  - GdriveBuilder::build
  - GdriveBackend::info
  - GdriveBackend::capability
  - GdriveBackend::create_dir
  - GdriveBackend::stat
  - GdriveBackend::read
  - GdriveBackend::write
  - GdriveBackend::delete
  - GdriveBackend::list
  - GdriveBackend::copy
  - GdriveBackend::rename
  - GdriveBackend::presign
  source_file: /src/opendal/core/services/gdrive/src/backend.rs
- function_names:
  - FsConfig::from_uri
  - FsConfig::into_builder
  - tests::from_uri_extracts_root
  - tests::from_uri_with_file_scheme
  source_file: /src/opendal/core/services/fs/src/config.rs
- function_names:
  - FsDeleter::new
  - FsDeleter::delete_once
  source_file: /src/opendal/core/services/fs/src/deleter.rs
- function_names:
  - FsLister::new
  - FsLister::next
  - tests::list_file_with_backslash_in_name
  source_file: /src/opendal/core/services/fs/src/lister.rs
- function_names:
  - FsReader::new
  - FsReaderHandle::new
  - FsReader::open
  - FsReader::read_at
  - FsLazyWriter::new
  - FsLazyWriter::inner
  - FsLazyWriter::write
  - FsLazyWriter::close
  - FsLazyWriter::abort
  - FsLazyLister::new
  - FsLazyLister::next
  source_file: /src/opendal/core/services/fs/src/reader.rs
- function_names:
  - FsCore::confined_join
  - FsCore::root_join
  - FsCore::ensure_write_abs_path
  - FsCore::fs_create_dir
  - FsCore::fs_stat
  - FsCore::fs_open
  - FsCore::fs_write
  - FsCore::fs_tempfile_write
  - FsCore::fs_list
  - FsCore::fs_copy
  - FsCore::fs_rename
  - FsCore::get_user_metadata
  - FsCore::set_user_metadata
  - error::parse_error
  - tests::test_fs_backend_copy_preserves_user_metadata
  source_file: /src/opendal/core/services/fs/src/core.rs
- function_names:
  - FsWriter::create
  - FsWriter::write
  - FsWriter::close
  - FsWriter::abort
  - FsWriter::write_all_at
  - FsWriter::close
  - FsWriter::abort
  - write_at
  - write_at
  source_file: /src/opendal/core/services/fs/src/writer.rs
- function_names:
  - register_fs_service
  source_file: /src/opendal/core/services/fs/src/lib.rs
- function_names:
  - FsBuilder::root
  - FsBuilder::atomic_write_dir
  - FsBuilder::build
  - FsBackend::info
  - FsBackend::capability
  - FsBackend::create_dir
  - FsBackend::stat
  - FsBackend::read
  - FsBackend::write
  - FsBackend::delete
  - FsBackend::list
  - FsBackend::copy
  - FsBackend::rename
  - FsBackend::presign
  - read_at
  - read_at
  source_file: /src/opendal/core/services/fs/src/backend.rs
- function_names:
  - HdfsNativeConfig::fmt
  - HdfsNativeConfig::from_uri
  - HdfsNativeConfig::into_builder
  - init_hdfs_config
  - tests::from_uri_sets_name_node_and_root
  - tests::from_uri_allows_missing_authority
  - tests::init_hdfs_config_from_single_namenode
  - tests::init_hdfs_config_from_multi_namenodes
  source_file: /src/opendal/core/services/hdfs-native/src/config.rs
- function_names:
  - HdfsNativeDeleter::new
  - HdfsNativeDeleter::delete_once
  source_file: /src/opendal/core/services/hdfs-native/src/deleter.rs
- function_names:
  - HdfsNativeLister::new
  - HdfsNativeLister::next
  source_file: /src/opendal/core/services/hdfs-native/src/lister.rs
- function_names:
  - HdfsNativeReader::new
  - HdfsNativeReaderHandle::new
  - HdfsNativeReader::open
  - HdfsNativeReader::read_at
  - HdfsNativeLazyWriter::new
  - HdfsNativeLazyWriter::inner
  - HdfsNativeLazyWriter::write
  - HdfsNativeLazyWriter::close
  - HdfsNativeLazyWriter::abort
  - HdfsNativeLazyLister::new
  - HdfsNativeLazyLister::next
  source_file: /src/opendal/core/services/hdfs-native/src/reader.rs
- function_names:
  - HdfsNativeCore::fmt
  - HdfsNativeCore::hdfs_create_dir
  - HdfsNativeCore::hdfs_stat
  - HdfsNativeCore::hdfs_open
  - HdfsNativeCore::hdfs_write
  - HdfsNativeCore::hdfs_delete
  - HdfsNativeCore::hdfs_list
  - HdfsNativeCore::hdfs_rename
  - error::parse_hdfs_error
  source_file: /src/opendal/core/services/hdfs-native/src/core.rs
- function_names:
  - HdfsNativeWriter::new
  - HdfsNativeWriter::write
  - HdfsNativeWriter::close
  - HdfsNativeWriter::abort
  source_file: /src/opendal/core/services/hdfs-native/src/writer.rs
- function_names:
  - register_hdfs_native_service
  source_file: /src/opendal/core/services/hdfs-native/src/lib.rs
- function_names:
  - HdfsNativeBuilder::root
  - HdfsNativeBuilder::name_node
  - HdfsNativeBuilder::enable_append
  - HdfsNativeBuilder::options
  - HdfsNativeBuilder::build
  - HdfsNativeBackend::info
  - HdfsNativeBackend::capability
  - HdfsNativeBackend::create_dir
  - HdfsNativeBackend::stat
  - HdfsNativeBackend::read
  - HdfsNativeBackend::write
  - HdfsNativeBackend::delete
  - HdfsNativeBackend::list
  - HdfsNativeBackend::copy
  - HdfsNativeBackend::rename
  - HdfsNativeBackend::presign
  source_file: /src/opendal/core/services/hdfs-native/src/backend.rs
- function_names:
  - MemcachedConfig::fmt
  - MemcachedConfig::from_uri
  - MemcachedConfig::into_builder
  - tests::from_uri_sets_endpoint_and_root
  source_file: /src/opendal/core/services/memcached/src/config.rs
- function_names:
  - MemcachedDeleter::new
  - MemcachedDeleter::delete_once
  source_file: /src/opendal/core/services/memcached/src/deleter.rs
- function_names:
  - MemcachedReader::new
  - MemcachedReader::open
  source_file: /src/opendal/core/services/memcached/src/reader.rs
- function_names:
  - SocketStream::connect_tcp
  - SocketStream::connect_unix
  - SocketStream::poll_read
  - SocketStream::poll_write
  - SocketStream::poll_flush
  - SocketStream::poll_shutdown
  - MemcacheConnectionManager::new
  - MemcacheConnectionManager::create
  - MemcacheConnectionManager::is_recyclable
  - MemcachedCore::new
  - MemcachedCore::conn
  - MemcachedCore::get
  - MemcachedCore::set
  - MemcachedCore::delete
  - tests::connect_tcp_socket
  - tests::connect_unix_socket
  source_file: /src/opendal/core/services/memcached/src/core.rs
- function_names:
  - MemcachedWriter::new
  - MemcachedWriter::write
  - MemcachedWriter::close
  - MemcachedWriter::abort
  source_file: /src/opendal/core/services/memcached/src/writer.rs
- function_names:
  - register_memcached_service
  source_file: /src/opendal/core/services/memcached/src/lib.rs
- function_names:
  - MemcachedBuilder::endpoint
  - MemcachedBuilder::root
  - MemcachedBuilder::username
  - MemcachedBuilder::password
  - MemcachedBuilder::default_ttl
  - MemcachedBuilder::connection_pool_max_size
  - MemcachedBuilder::build
  - MemcachedBackend::new
  - MemcachedBackend::with_normalized_root
  - MemcachedBackend::info
  - MemcachedBackend::capability
  - MemcachedBackend::create_dir
  - MemcachedBackend::stat
  - MemcachedBackend::read
  - MemcachedBackend::write
  - MemcachedBackend::delete
  - MemcachedBackend::list
  - MemcachedBackend::copy
  - MemcachedBackend::rename
  - MemcachedBackend::presign
  source_file: /src/opendal/core/services/memcached/src/backend.rs
- function_names:
  - PacketHeader::write
  - PacketHeader::read
  - Connection::new
  - Connection::auth
  - Connection::version
  - Connection::get
  - Connection::set
  - Connection::delete
  - parse_response
  source_file: /src/opendal/core/services/memcached/src/binary.rs
- function_names:
  - RedisConfig::fmt
  - RedisConfig::from_uri
  - RedisConfig::into_builder
  - tests::from_uri_sets_endpoint_db_and_root
  - tests::from_uri_treats_non_numeric_path_as_root
  - tests::test_redis_builder_interface
  source_file: /src/opendal/core/services/redis/src/config.rs
- function_names:
  - RedisDeleter::new
  - RedisDeleter::delete_once
  source_file: /src/opendal/core/services/redis/src/deleter.rs
- function_names:
  - RedisReader::new
  - RedisReader::open
  source_file: /src/opendal/core/services/redis/src/reader.rs
- function_names:
  - RedisConnection::req_packed_command
  - RedisConnection::req_packed_commands
  - RedisConnection::get_db
  - RedisConnectionManager::create
  - RedisConnectionManager::is_recyclable
  - RedisCore::fmt
  - RedisCore::new
  - RedisCore::addr
  - RedisCore::conn
  - RedisCore::get
  - RedisCore::len
  - RedisCore::get_range
  - RedisCore::set
  - RedisCore::delete
  - format_redis_error
  source_file: /src/opendal/core/services/redis/src/core.rs
- function_names:
  - RedisWriter::new
  - RedisWriter::write
  - RedisWriter::close
  - RedisWriter::abort
  source_file: /src/opendal/core/services/redis/src/writer.rs
- function_names:
  - register_redis_service
  source_file: /src/opendal/core/services/redis/src/lib.rs
- function_names:
  - RedisBuilder::endpoint
  - RedisBuilder::cluster_endpoints
  - RedisBuilder::username
  - RedisBuilder::password
  - RedisBuilder::db
  - RedisBuilder::default_ttl
  - RedisBuilder::root
  - RedisBuilder::connection_pool_max_size
  - RedisBuilder::build
  - RedisBuilder::get_connection_info
  - RedisBackend::new
  - RedisBackend::with_normalized_root
  - RedisBackend::info
  - RedisBackend::capability
  - RedisBackend::create_dir
  - RedisBackend::stat
  - RedisBackend::read
  - RedisBackend::write
  - RedisBackend::delete
  - RedisBackend::list
  - RedisBackend::copy
  - RedisBackend::rename
  - RedisBackend::presign
  source_file: /src/opendal/core/services/redis/src/backend.rs
- function_names:
  - main
  - find_fdb_client_lib_dir_macos
  source_file: /src/opendal/core/services/foundationdb/build.rs
- function_names:
  - FoundationdbConfig::from_uri
  - FoundationdbConfig::into_builder
  - tests::from_uri_sets_config_path_and_root
  source_file: /src/opendal/core/services/foundationdb/src/config.rs
- function_names:
  - FoundationdbDeleter::new
  - FoundationdbDeleter::delete_once
  source_file: /src/opendal/core/services/foundationdb/src/deleter.rs
- function_names:
  - FoundationdbReader::new
  - FoundationdbReader::open
  source_file: /src/opendal/core/services/foundationdb/src/reader.rs
- function_names:
  - FoundationdbCore::fmt
  - FoundationdbCore::get
  - FoundationdbCore::set
  - FoundationdbCore::delete
  - parse_transaction_commit_error
  source_file: /src/opendal/core/services/foundationdb/src/core.rs
- function_names:
  - FoundationdbWriter::new
  - FoundationdbWriter::write
  - FoundationdbWriter::close
  - FoundationdbWriter::abort
  source_file: /src/opendal/core/services/foundationdb/src/writer.rs
- function_names:
  - register_foundationdb_service
  source_file: /src/opendal/core/services/foundationdb/src/lib.rs
- function_names:
  - FoundationdbBuilder::root
  - FoundationdbBuilder::config_path
  - FoundationdbBuilder::build
  - FoundationdbBackend::new
  - FoundationdbBackend::with_normalized_root
  - FoundationdbBackend::info
  - FoundationdbBackend::capability
  - FoundationdbBackend::create_dir
  - FoundationdbBackend::stat
  - FoundationdbBackend::read
  - FoundationdbBackend::write
  - FoundationdbBackend::delete
  - FoundationdbBackend::list
  - FoundationdbBackend::copy
  - FoundationdbBackend::rename
  - FoundationdbBackend::presign
  source_file: /src/opendal/core/services/foundationdb/src/backend.rs
- function_names:
  - AlluxioConfig::fmt
  - AlluxioConfig::from_uri
  - AlluxioConfig::into_builder
  - tests::from_uri_sets_endpoint_and_root
  source_file: /src/opendal/core/services/alluxio/src/config.rs
- function_names:
  - AlluxioDeleter::new
  - AlluxioDeleter::delete_once
  source_file: /src/opendal/core/services/alluxio/src/deleter.rs
- function_names:
  - AlluxioLister::new
  - AlluxioLister::next_page
  source_file: /src/opendal/core/services/alluxio/src/lister.rs
- function_names:
  - AlluxioReader::new
  - AlluxioReader::open
  source_file: /src/opendal/core/services/alluxio/src/reader.rs
- function_names:
  - AlluxioCore::fmt
  - AlluxioCore::create_dir
  - AlluxioCore::create_file
  - AlluxioCore::open_file
  - AlluxioCore::delete
  - AlluxioCore::rename
  - AlluxioCore::get_status
  - AlluxioCore::list_status
  - AlluxioCore::read
  - AlluxioCore::write
  - AlluxioCore::close
  - tests::test_read_rejects_range
  - Metadata::try_from
  - error::parse_error
  - error::test_parse_error
  source_file: /src/opendal/core/services/alluxio/src/core.rs
- function_names:
  - AlluxioWriter::new
  - AlluxioWriter::write
  - AlluxioWriter::close
  - AlluxioWriter::abort
  source_file: /src/opendal/core/services/alluxio/src/writer.rs
- function_names:
  - register_alluxio_service
  source_file: /src/opendal/core/services/alluxio/src/lib.rs
- function_names:
  - AlluxioBuilder::fmt
  - AlluxioBuilder::root
  - AlluxioBuilder::endpoint
  - AlluxioBuilder::build
  - AlluxioBackend::info
  - AlluxioBackend::capability
  - AlluxioBackend::create_dir
  - AlluxioBackend::stat
  - AlluxioBackend::read
  - AlluxioBackend::write
  - AlluxioBackend::delete
  - AlluxioBackend::list
  - AlluxioBackend::copy
  - AlluxioBackend::rename
  - AlluxioBackend::presign
  - test::test_builder_from_map
  - test::test_builder_build
  source_file: /src/opendal/core/services/alluxio/src/backend.rs
- function_names:
  - OnedriveConfig::fmt
  - OnedriveConfig::from_uri
  - OnedriveConfig::into_builder
  - tests::from_uri_sets_root
  source_file: /src/opendal/core/services/onedrive/src/config.rs
- function_names:
  - OneDriveDeleter::new
  - OneDriveDeleter::delete_once
  source_file: /src/opendal/core/services/onedrive/src/deleter.rs
- function_names:
  - OneDriveLister::new
  - OneDriveLister::next_page
  source_file: /src/opendal/core/services/onedrive/src/lister.rs
- function_names:
  - OnedriveReader::new
  - OnedriveReader::open
  source_file: /src/opendal/core/services/onedrive/src/reader.rs
- function_names:
  - OneDriveCore::fmt
  - OneDriveCore::onedrive_item_url
  - OneDriveCore::onedrive_get_stat_plain
  - OneDriveCore::ensure_directory
  - OneDriveCore::sign
  - OneDriveCore::onedrive_stat
  - OneDriveCore::onedrive_list_versions
  - OneDriveCore::onedrive_list_request
  - OneDriveCore::onedrive_list
  - OneDriveCore::onedrive_get_next_list_page
  - OneDriveCore::onedrive_get_content
  - OneDriveCore::onedrive_upload_simple
  - OneDriveCore::onedrive_chunked_upload
  - OneDriveCore::onedrive_create_upload_session
  - OneDriveCore::onedrive_create_dir
  - OneDriveCore::onedrive_delete
  - OneDriveCore::initialize_copy
  - OneDriveCore::wait_until_complete
  - OneDriveCore::onedrive_move
  - OneDriveSigner::new
  - OneDriveSigner::refresh_tokens
  - OneDriveSigner::sign
  - tests::test_ctx
  - tests::test_core
  - tests::list_request_for_root_targets_drive_root_children
  - tests::list_request_for_nested_path_uses_path_addressing
  - tests::list_request_for_root_under_custom_root_uses_path_addressing
  - tests::list_root_returns_entries
  - error::parse_error
  source_file: /src/opendal/core/services/onedrive/src/core.rs
- function_names:
  - OneDriveWriter::new
  - OneDriveWriter::write_once
  - OneDriveWriter::write_simple
  - OneDriveWriter::write_chunked
  - OneDriveWriter::create_upload_session
  source_file: /src/opendal/core/services/onedrive/src/writer.rs
- function_names:
  - register_onedrive_service
  source_file: /src/opendal/core/services/onedrive/src/lib.rs
- function_names:
  - CreateDirPayload::new
  - OneDriveUploadSessionCreationRequestBody::new
  - tests::test_parse_one_drive_list_response_json
  - tests::test_parse_one_drive_list_response_with_next_link_json
  - tests::test_parse_one_drive_file_json
  - tests::test_parse_one_drive_file_with_version_json
  - tests::test_parse_one_drive_monitor_status_json
  - tests::test_parse_one_drive_item_versions_json
  source_file: /src/opendal/core/services/onedrive/src/graph_model.rs
- function_names:
  - OnedriveBuilder::fmt
  - OnedriveBuilder::root
  - OnedriveBuilder::access_token
  - OnedriveBuilder::refresh_token
  - OnedriveBuilder::client_id
  - OnedriveBuilder::client_secret
  - OnedriveBuilder::enable_versioning
  - OnedriveBuilder::build
  - OnedriveBackend::info
  - OnedriveBackend::capability
  - OnedriveBackend::create_dir
  - OnedriveBackend::stat
  - OnedriveBackend::read
  - OnedriveBackend::write
  - OnedriveBackend::delete
  - OnedriveBackend::copy
  - OnedriveBackend::rename
  - OnedriveBackend::list
  - OnedriveBackend::presign
  source_file: /src/opendal/core/services/onedrive/src/backend.rs
- function_names:
  - SeafileConfig::fmt
  - SeafileConfig::from_uri
  - SeafileConfig::into_builder
  - tests::from_uri_sets_endpoint_repo_and_root
  source_file: /src/opendal/core/services/seafile/src/config.rs
- function_names:
  - SeafileDeleter::new
  - SeafileDeleter::delete_once
  source_file: /src/opendal/core/services/seafile/src/deleter.rs
- function_names:
  - SeafileLister::new
  - SeafileLister::next_page
  source_file: /src/opendal/core/services/seafile/src/lister.rs
- function_names:
  - SeafileReader::new
  - SeafileReader::open
  source_file: /src/opendal/core/services/seafile/src/reader.rs
- function_names:
  - SeafileCore::fmt
  - SeafileCore::send
  - SeafileCore::get_auth_info
  - SeafileCore::get_upload_url
  - SeafileCore::upload_file
  - SeafileCore::create_dir
  - SeafileCore::get_download_url
  - SeafileCore::download_file
  - SeafileCore::file_detail
  - SeafileCore::dir_detail
  - SeafileCore::delete
  - SeafileCore::list
  - parse_dir_detail
  - parse_file_detail
  - error::parse_error
  - error::test_parse_error
  source_file: /src/opendal/core/services/seafile/src/core.rs
- function_names:
  - SeafileWriter::new
  - SeafileWriter::write_once
  source_file: /src/opendal/core/services/seafile/src/writer.rs
- function_names:
  - register_seafile_service
  source_file: /src/opendal/core/services/seafile/src/lib.rs
- function_names:
  - SeafileBuilder::fmt
  - SeafileBuilder::root
  - SeafileBuilder::endpoint
  - SeafileBuilder::username
  - SeafileBuilder::password
  - SeafileBuilder::repo_name
  - SeafileBuilder::build
  - SeafileBackend::info
  - SeafileBackend::capability
  - SeafileBackend::create_dir
  - SeafileBackend::stat
  - SeafileBackend::read
  - SeafileBackend::write
  - SeafileBackend::delete
  - SeafileBackend::list
  - SeafileBackend::copy
  - SeafileBackend::rename
  - SeafileBackend::presign
  source_file: /src/opendal/core/services/seafile/src/backend.rs
- function_names:
  - GithubConfig::fmt
  - GithubConfig::from_uri
  - GithubConfig::into_builder
  - tests::from_uri_sets_owner_repo_and_root
  - tests::from_uri_requires_repository
  source_file: /src/opendal/core/services/github/src/config.rs
- function_names:
  - GithubDeleter::new
  - GithubDeleter::delete_once
  source_file: /src/opendal/core/services/github/src/deleter.rs
- function_names:
  - GithubLister::new
  - GithubLister::next_page
  source_file: /src/opendal/core/services/github/src/lister.rs
- function_names:
  - GithubReader::new
  - GithubReader::open
  source_file: /src/opendal/core/services/github/src/reader.rs
- function_names:
  - GithubCore::fmt
  - GithubCore::send
  - GithubCore::sign
  - GithubCore::get_file_sha
  - GithubCore::stat
  - GithubCore::get
  - GithubCore::upload
  - GithubCore::delete
  - GithubCore::list
  - GithubCore::list_with_recursive
  - error::parse_error
  - error::test_parse_error
  source_file: /src/opendal/core/services/github/src/core.rs
- function_names:
  - GithubWriter::new
  - GithubWriter::parse_metadata
  - GithubWriter::write_once
  source_file: /src/opendal/core/services/github/src/writer.rs
- function_names:
  - register_github_service
  source_file: /src/opendal/core/services/github/src/lib.rs
- function_names:
  - GithubBuilder::fmt
  - GithubBuilder::root
  - GithubBuilder::token
  - GithubBuilder::owner
  - GithubBuilder::repo
  - GithubBuilder::build
  - GithubBackend::info
  - GithubBackend::capability
  - GithubBackend::create_dir
  - GithubBackend::stat
  - GithubBackend::read
  - GithubBackend::write
  - GithubBackend::delete
  - GithubBackend::list
  - GithubBackend::copy
  - GithubBackend::rename
  - GithubBackend::presign
  source_file: /src/opendal/core/services/github/src/backend.rs
- function_names:
  - PersyConfig::from_uri
  - PersyConfig::into_builder
  - tests::from_uri_sets_datafile_segment_and_index
  source_file: /src/opendal/core/services/persy/src/config.rs
- function_names:
  - PersyDeleter::new
  - PersyDeleter::delete_once
  source_file: /src/opendal/core/services/persy/src/deleter.rs
- function_names:
  - PersyReader::new
  - PersyReader::open
  source_file: /src/opendal/core/services/persy/src/reader.rs
- function_names:
  - PersyCore::fmt
  - PersyCore::get
  - PersyCore::set
  - PersyCore::delete
  - parse_error
  source_file: /src/opendal/core/services/persy/src/core.rs
- function_names:
  - PersyWriter::new
  - PersyWriter::write
  - PersyWriter::close
  - PersyWriter::abort
  source_file: /src/opendal/core/services/persy/src/writer.rs
- function_names:
  - register_persy_service
  source_file: /src/opendal/core/services/persy/src/lib.rs
- function_names:
  - PersyBuilder::datafile
  - PersyBuilder::segment
  - PersyBuilder::index
  - P::e::r::s::y::B::u::i::l::d::e::r::::::::b::u::i::l::d::init
  - PersyBuilder::build
  - PersyBackend::new
  - PersyBackend::info
  - PersyBackend::capability
  - PersyBackend::create_dir
  - PersyBackend::stat
  - PersyBackend::read
  - PersyBackend::write
  - PersyBackend::delete
  - PersyBackend::list
  - PersyBackend::copy
  - PersyBackend::rename
  - PersyBackend::presign
  source_file: /src/opendal/core/services/persy/src/backend.rs
- function_names:
  - SqliteConfig::fmt
  - SqliteConfig::from_uri
  - SqliteConfig::into_builder
  - tests::from_uri_sets_connection_string_table_and_root
  source_file: /src/opendal/core/services/sqlite/src/config.rs
- function_names:
  - SqliteDeleter::new
  - SqliteDeleter::delete_once
  source_file: /src/opendal/core/services/sqlite/src/deleter.rs
- function_names:
  - SqliteReader::new
  - SqliteReader::open
  source_file: /src/opendal/core/services/sqlite/src/reader.rs
- function_names:
  - SqliteCore::get_client
  - SqliteCore::get
  - SqliteCore::get_length
  - SqliteCore::count_under
  - SqliteCore::get_range
  - SqliteCore::set
  - SqliteCore::delete
  source_file: /src/opendal/core/services/sqlite/src/core.rs
- function_names:
  - SqliteWriter::new
  - SqliteWriter::write
  - SqliteWriter::close
  - SqliteWriter::abort
  source_file: /src/opendal/core/services/sqlite/src/writer.rs
- function_names:
  - register_sqlite_service
  source_file: /src/opendal/core/services/sqlite/src/lib.rs
- function_names:
  - SqliteBuilder::connection_string
  - SqliteBuilder::root
  - SqliteBuilder::table
  - SqliteBuilder::key_field
  - SqliteBuilder::value_field
  - SqliteBuilder::build
  - parse_sqlite_error
  - SqliteBackend::new
  - SqliteBackend::with_normalized_root
  - SqliteBackend::info
  - SqliteBackend::capability
  - SqliteBackend::stat
  - SqliteBackend::read
  - SqliteBackend::write
  - SqliteBackend::delete
  - SqliteBackend::create_dir
  - SqliteBackend::list
  - SqliteBackend::copy
  - SqliteBackend::rename
  - SqliteBackend::presign
  - test::build_client
  - test::build_backend
  - test::test_sqlite_backend_creation
  - test::test_sqlite_backend_with_root
  - test::test_sqlite_read_range_from_offset_reads_to_eof
  - test::test_sqlite_stat_uses_value_length
  - test::test_sqlite_stat_returns_byte_length_for_text_value
  - test::test_sqlite_stat_returns_byte_length_for_text_column
  source_file: /src/opendal/core/services/sqlite/src/backend.rs
- function_names:
  - MonoiofsConfig::from_uri
  - MonoiofsConfig::into_builder
  - tests::from_uri_sets_root
  source_file: /src/opendal/core/services/monoiofs/src/config.rs
- function_names:
  - MonoiofsDeleter::new
  - MonoiofsDeleter::delete_once
  source_file: /src/opendal/core/services/monoiofs/src/deleter.rs
- function_names:
  - MonoiofsReader::new
  - MonoiofsReader::worker_entrypoint
  - MonoiofsReader::read_at
  - MonoiofsPositionReader::new
  - MonoiofsPositionReader::open
  - MonoiofsPositionReader::read_at
  - MonoiofsLazyWriter::new
  - MonoiofsLazyWriter::inner
  - MonoiofsLazyWriter::write
  - MonoiofsLazyWriter::close
  - MonoiofsLazyWriter::abort
  source_file: /src/opendal/core/services/monoiofs/src/reader.rs
- function_names:
  - MonoiofsCore::new
  - MonoiofsCore::prepare_path
  - MonoiofsCore::prepare_write_path
  - MonoiofsCore::worker_entrypoint
  - MonoiofsCore::dispatch
  - MonoiofsCore::spawn
  - MonoiofsCore::propagate_worker_panic
  - MonoiofsCore::unwrap
  - tests::new_core
  - tests::dispatch_simple
  - t::e::s::t::s::::::::d::i::s::p::a::t::c::h::_::c::o::n::c::u::r::r::e::n::t::spawn_task
  - tests::dispatch_concurrent
  - tests::dispatch_panic
  - tests::test_monoio_single_thread_dispatch
  - tests::test_monoio_single_thread_dispatch_concurrent
  - tests::test_monoio_single_thread_dispatch_panic
  - tests::test_monoio_multi_thread_dispatch
  - tests::test_monoio_multi_thread_dispatch_concurrent
  - tests::test_monoio_multi_thread_dispatch_panic
  - tests::test_prepare_path_rejects_parent_dir
  - tests::test_prepare_path_allows_normal_keys
  source_file: /src/opendal/core/services/monoiofs/src/core.rs
- function_names:
  - MonoiofsWriter::new
  - MonoiofsWriter::worker_entrypoint
  - MonoiofsWriter::write
  - MonoiofsWriter::close
  - MonoiofsWriter::abort
  source_file: /src/opendal/core/services/monoiofs/src/writer.rs
- function_names:
  - register_monoiofs_service
  source_file: /src/opendal/core/services/monoiofs/src/lib.rs
- function_names:
  - MonoiofsBuilder::root
  - MonoiofsBuilder::build
  - MonoiofsBackend::info
  - MonoiofsBackend::capability
  - MonoiofsBackend::stat
  - MonoiofsBackend::read
  - MonoiofsBackend::write
  - MonoiofsBackend::delete
  - MonoiofsBackend::list
  - MonoiofsBackend::rename
  - MonoiofsBackend::create_dir
  - MonoiofsBackend::copy
  - MonoiofsBackend::presign
  source_file: /src/opendal/core/services/monoiofs/src/backend.rs
- function_names:
  - FtpConfig::fmt
  - FtpConfig::from_uri
  - FtpConfig::into_builder
  source_file: /src/opendal/core/services/ftp/src/config.rs
- function_names:
  - FtpDeleter::new
  - FtpDeleter::delete_once
  source_file: /src/opendal/core/services/ftp/src/deleter.rs
- function_names:
  - FtpLister::new
  - FtpLister::next
  source_file: /src/opendal/core/services/ftp/src/lister.rs
- function_names:
  - FtpReadStream::new
  - FtpReadStream::read
  - FtpReader::new
  - FtpLazyWriter::new
  - FtpLazyWriter::inner
  - FtpLazyWriter::write
  - FtpLazyWriter::close
  - FtpLazyWriter::abort
  - FtpLazyLister::new
  - FtpLazyLister::inner
  - FtpLazyLister::next
  - FtpReader::open
  source_file: /src/opendal/core/services/ftp/src/reader.rs
- function_names:
  - FtpCore::new
  - FtpCore::info
  - FtpCore::capability
  - FtpCore::ftp_connect
  - Manager::create
  - Manager::is_recyclable
  - err::format_ftp_error
  source_file: /src/opendal/core/services/ftp/src/core.rs
- function_names:
  - FtpWriter::new
  - FtpWriter::write
  - FtpWriter::close
  - FtpWriter::abort
  source_file: /src/opendal/core/services/ftp/src/writer.rs
- function_names:
  - register_ftp_service
  source_file: /src/opendal/core/services/ftp/src/lib.rs
- function_names:
  - FtpBuilder::endpoint
  - FtpBuilder::root
  - FtpBuilder::user
  - FtpBuilder::password
  - FtpBuilder::build
  - FtpBackend::fmt
  - FtpBackend::info
  - FtpBackend::capability
  - FtpBackend::create_dir
  - FtpBackend::stat
  - FtpBackend::read
  - FtpBackend::write
  - FtpBackend::delete
  - FtpBackend::list
  - FtpBackend::copy
  - FtpBackend::rename
  - FtpBackend::presign
  - FtpBackend::ftp_stat
  - build_test::test_build
  - build_test::from_uri_sets_endpoint_and_root
  - build_test::from_uri_applies_credentials_from_query
  source_file: /src/opendal/core/services/ftp/src/backend.rs
- function_names:
  - OpfsConfig::fmt
  - OpfsConfig::into_builder
  source_file: /src/opendal/core/services/opfs/src/config.rs
- function_names:
  - OpfsDeleter::new
  - OpfsDeleter::delete_once
  source_file: /src/opendal/core/services/opfs/src/deleter.rs
- function_names:
  - OpfsLister::new
  - OpfsLister::init_iter
  - OpfsLister::next
  source_file: /src/opendal/core/services/opfs/src/lister.rs
- function_names:
  - OpfsReadStream::new
  - OpfsReadStream::read
  - OpfsReader::new
  - OpfsReader::open
  source_file: /src/opendal/core/services/opfs/src/reader.rs
- function_names:
  - OpfsCore::new
  - error::parse_js_error
  - utils::get_root_directory_handle
  - utils::get_directory_handle
  - utils::get_parent_dir_and_name
  - utils::get_file_handle
  source_file: /src/opendal/core/services/opfs/src/core.rs
- function_names:
  - OpfsWriter::new
  - OpfsWriter::init_stream
  - OpfsWriter::write
  - OpfsWriter::close
  - OpfsWriter::abort
  source_file: /src/opendal/core/services/opfs/src/writer.rs
- function_names:
  - register_opfs_service
  - console_debug
  source_file: /src/opendal/core/services/opfs/src/lib.rs
- function_names:
  - OpfsBuilder::root
  - OpfsBuilder::build
  - OpfsBackend::info
  - OpfsBackend::capability
  - OpfsBackend::stat
  - OpfsBackend::read
  - OpfsBackend::list
  - OpfsBackend::create_dir
  - OpfsBackend::write
  - OpfsBackend::delete
  - OpfsBackend::copy
  - OpfsBackend::rename
  - OpfsBackend::presign
  source_file: /src/opendal/core/services/opfs/src/backend.rs
- function_names:
  - YandexDiskConfig::fmt
  - YandexDiskConfig::from_uri
  - YandexDiskConfig::into_builder
  - tests::from_uri_sets_root_and_preserves_token
  source_file: /src/opendal/core/services/yandex-disk/src/config.rs
- function_names:
  - YandexDiskDeleter::new
  - YandexDiskDeleter::delete_once
  source_file: /src/opendal/core/services/yandex-disk/src/deleter.rs
- function_names:
  - YandexDiskLister::new
  - YandexDiskLister::next_page
  source_file: /src/opendal/core/services/yandex-disk/src/lister.rs
- function_names:
  - YandexDiskReader::new
  - YandexDiskReader::open
  source_file: /src/opendal/core/services/yandex-disk/src/reader.rs
- function_names:
  - YandexDiskCore::fmt
  - YandexDiskCore::send
  - YandexDiskCore::sign
  - YandexDiskCore::get_upload_url
  - YandexDiskCore::upload
  - YandexDiskCore::get_download_url
  - YandexDiskCore::download
  - YandexDiskCore::ensure_dir_exists
  - YandexDiskCore::create_dir
  - YandexDiskCore::copy
  - YandexDiskCore::move_object
  - YandexDiskCore::delete
  - YandexDiskCore::metainformation
  - parse_info
  - error::parse_error
  - error::test_parse_error
  source_file: /src/opendal/core/services/yandex-disk/src/core.rs
- function_names:
  - YandexDiskWriter::new
  - YandexDiskWriter::write_once
  source_file: /src/opendal/core/services/yandex-disk/src/writer.rs
- function_names:
  - register_yandex_disk_service
  source_file: /src/opendal/core/services/yandex-disk/src/lib.rs
- function_names:
  - YandexDiskBuilder::fmt
  - YandexDiskBuilder::root
  - YandexDiskBuilder::access_token
  - YandexDiskBuilder::build
  - YandexDiskBackend::info
  - YandexDiskBackend::capability
  - YandexDiskBackend::create_dir
  - YandexDiskBackend::rename
  - YandexDiskBackend::copy
  - YandexDiskBackend::read
  - YandexDiskBackend::stat
  - YandexDiskBackend::write
  - YandexDiskBackend::delete
  - YandexDiskBackend::list
  - YandexDiskBackend::presign
  source_file: /src/opendal/core/services/yandex-disk/src/backend.rs
- function_names:
  - HdfsConfig::fmt
  - HdfsConfig::from_uri
  - HdfsConfig::into_builder
  - tests::from_uri_sets_name_node_and_root
  - tests::from_uri_allows_missing_authority
  source_file: /src/opendal/core/services/hdfs/src/config.rs
- function_names:
  - HdfsDeleter::new
  - HdfsDeleter::delete_once
  source_file: /src/opendal/core/services/hdfs/src/deleter.rs
- function_names:
  - HdfsLister::new
  - HdfsLister::next
  source_file: /src/opendal/core/services/hdfs/src/lister.rs
- function_names:
  - HdfsReader::new
  - HdfsReaderHandle::new
  - HdfsReader::open
  - HdfsReader::read_at
  - HdfsLazyWriter::new
  - HdfsLazyWriter::inner
  - HdfsLazyWriter::write
  - HdfsLazyWriter::close
  - HdfsLazyWriter::abort
  source_file: /src/opendal/core/services/hdfs/src/reader.rs
- function_names:
  - map_hdfs_rename_error
  - HdfsCore::fmt
  - HdfsCore::hdfs_create_dir
  - HdfsCore::hdfs_stat
  - HdfsCore::hdfs_open
  - HdfsCore::hdfs_write
  - HdfsCore::hdfs_list
  - HdfsCore::hdfs_rename
  - tests::map_existing_target_error_to_condition_not_match
  source_file: /src/opendal/core/services/hdfs/src/core.rs
- function_names:
  - HdfsWriter::new
  - HdfsWriter::write
  - HdfsWriter::close
  - HdfsWriter::abort
  source_file: /src/opendal/core/services/hdfs/src/writer.rs
- function_names:
  - register_hdfs_service
  source_file: /src/opendal/core/services/hdfs/src/lib.rs
- function_names:
  - HdfsBuilder::root
  - HdfsBuilder::name_node
  - HdfsBuilder::kerberos_ticket_cache_path
  - HdfsBuilder::user
  - HdfsBuilder::enable_append
  - HdfsBuilder::atomic_write_dir
  - HdfsBuilder::build
  - HdfsBackend::info
  - HdfsBackend::capability
  - HdfsBackend::create_dir
  - HdfsBackend::stat
  - HdfsBackend::read
  - HdfsBackend::write
  - HdfsBackend::delete
  - HdfsBackend::list
  - HdfsBackend::copy
  - HdfsBackend::rename
  - HdfsBackend::presign
  source_file: /src/opendal/core/services/hdfs/src/backend.rs
- function_names:
  - ObsConfig::fmt
  - ObsConfig::from_uri
  - ObsConfig::into_builder
  - tests::from_uri_extracts_bucket_and_root
  source_file: /src/opendal/core/services/obs/src/config.rs
- function_names:
  - ObsDeleter::new
  - ObsDeleter::delete_once
  source_file: /src/opendal/core/services/obs/src/deleter.rs
- function_names:
  - ObsLister::new
  - ObsLister::next_page
  source_file: /src/opendal/core/services/obs/src/lister.rs
- function_names:
  - ObsReader::new
  - ObsReader::open
  source_file: /src/opendal/core/services/obs/src/reader.rs
- function_names:
  - ObsCore::fmt
  - ObsCore::signer
  - ObsCore::sign
  - ObsCore::sign_query
  - ObsCore::send
  - ObsCore::obs_get_object
  - ObsCore::obs_get_object_request
  - ObsCore::obs_put_object_request
  - ObsCore::obs_head_object
  - ObsCore::obs_head_object_request
  - ObsCore::obs_delete_object
  - ObsCore::obs_append_object_request
  - ObsCore::obs_copy_object
  - ObsCore::obs_list_objects
  - ObsCore::obs_initiate_multipart_upload
  - ObsCore::obs_upload_part_request
  - ObsCore::obs_complete_multipart_upload
  - ObsCore::obs_abort_multipart_upload
  - tests::test_parse_xml
  - error::parse_error
  - error::test_parse_error
  source_file: /src/opendal/core/services/obs/src/core.rs
- function_names:
  - ObsWriter::new
  - ObsWriter::parse_metadata
  - ObsWriter::write_once
  - ObsWriter::initiate_part
  - ObsWriter::write_part
  - ObsWriter::complete_part
  - ObsWriter::abort_part
  - ObsWriter::offset
  - ObsWriter::append
  source_file: /src/opendal/core/services/obs/src/writer.rs
- function_names:
  - register_obs_service
  source_file: /src/opendal/core/services/obs/src/lib.rs
- function_names:
  - ObsBuilder::fmt
  - ObsBuilder::root
  - ObsBuilder::endpoint
  - ObsBuilder::access_key_id
  - ObsBuilder::secret_access_key
  - ObsBuilder::bucket
  - ObsBuilder::enable_versioning
  - ObsBuilder::build
  - ObsBackend::info
  - ObsBackend::capability
  - ObsBackend::create_dir
  - ObsBackend::stat
  - ObsBackend::read
  - ObsBackend::write
  - ObsBackend::delete
  - ObsBackend::list
  - ObsBackend::copy
  - ObsBackend::rename
  - ObsBackend::presign
  source_file: /src/opendal/core/services/obs/src/backend.rs
- function_names:
  - ReadChecker::new
  - ReadChecker::data
  - ReadChecker::check_read
  - ReadChecker::check
  source_file: /src/opendal/core/testkit/src/read.rs
- function_names:
  - sha256_digest
  - init_test_service
  source_file: /src/opendal/core/testkit/src/utils.rs
- function_names: []
  source_file: /src/opendal/core/testkit/src/lib.rs
- function_names:
  - WriteChecker::new
  - WriteChecker::chunks
  - WriteChecker::check
  source_file: /src/opendal/core/testkit/src/write.rs
- function_names:
  - install_default
  - init_default_registry
  - init_default_registry_inner
  - register_default_operator_registry
  source_file: /src/opendal/core/src/lib.rs
- function_names:
  - ReqwestTransport::fmt
  - ReqwestTransport::default
  - ReqwestTransport::from
  - ReqwestTransport::new
  - ReqwestTransport::fetch
  - is_temporary_error
  - HttpBufferBody::poll_frame
  - HttpBufferBody::is_end_stream
  - HttpBufferBody::size_hint
  - tests::test_default_transport_succeeds
  - tests::test_from_reqwest_client
  source_file: /src/opendal/core/http-transports/reqwest/src/lib.rs
- function_names:
  - FuzzInput::fmt
  - FuzzInput::arbitrary
  - fuzz_reader
  - fuzz_target
  source_file: /src/opendal/core/fuzz/fuzz_reader.rs
- function_names:
  - FuzzInput::arbitrary
  - fuzz_writer
  - fuzz_target
  source_file: /src/opendal/core/fuzz/fuzz_writer.rs
- function_names:
  - fuzz_path
  - fuzz_target
  source_file: /src/opendal/core/fuzz/fuzz_path.rs
- function_names:
  - fuzz_target
  source_file: /src/opendal/core/fuzz/fuzz_from_uri.rs
- function_names:
  - main
  source_file: /src/opendal/core/examples/getting-started/src/main.rs
- function_names:
  - example
  - main
  source_file: /src/opendal/core/examples/concurrent-upload/src/main.rs
- function_names:
  - example
  - main
  source_file: /src/opendal/core/examples/multipart-upload/src/main.rs
- function_names:
  - example
  - main
  source_file: /src/opendal/core/examples/basic/src/main.rs
- function_names:
  - main
  - bench_read
  - prepare
  source_file: /src/opendal/core/benches/vs_s3/src/main.rs
- function_names:
  - whole
  - concurrent::baseline
  - concurrent::concurrent
  source_file: /src/opendal/core/benches/ops/read.rs
- function_names:
  - gen_bytes
  - TempData::existing
  - TempData::generate
  - TempData::drop
  source_file: /src/opendal/core/benches/ops/utils.rs
- function_names:
  - whole
  - concurrent::baseline
  - concurrent::concurrent
  source_file: /src/opendal/core/benches/ops/write.rs
- function_names:
  - main
  source_file: /src/opendal/core/benches/ops/main.rs
- function_names:
  - baseline
  - concurrent
  source_file: /src/opendal/core/benches/types/tasks.rs
- function_names:
  - chunk::bytes
  - chunk::contiguous
  - chunk::non_contiguous
  - advance::bytes
  - advance::contiguous
  - advance::non_contiguous
  - truncate::bytes
  - truncate::contiguous
  - truncate::non_contiguous
  - iterator::contiguous
  - iterator::non_contiguous
  source_file: /src/opendal/core/benches/types/buffer.rs
- function_names:
  - main
  source_file: /src/opendal/core/benches/types/main.rs
- function_names:
  - main
  - bench_vs_fs
  - prepare
  source_file: /src/opendal/core/benches/vs_fs/src/main.rs
- function_names:
  - manifest_dir
  - workspace_dir
  - find_command
  - main
  source_file: /src/opendal/dev/src/main.rs
- function_names:
  - Package::dependencies
  - Package::name
  - Package::make_prefix
  - make_package
  - all_packages
  - update_package_version
  - update_cargo_version
  - update_manifest_version
  - update_dependency_version
  - update_dependency_version_in_table
  - update_dependency_version_in_dependencies
  - is_core_workspace_root
  - sync_workspace_internal_dependency_versions
  - sync_workspace_package_version
  - sync_workspace_internal_dependency_versions_in_table
  - sync_workspace_internal_dependency_versions_in_dependencies
  - path_points_to
  - path_points_into
  - normalize_path
  - lexical_normalize
  - Package::crate_name
  - update_maven_version
  - update_nodejs_version
  - update_dotnet_version
  - tests::temp_test_dir
  - tests::release_package
  - tests::cargo_manifest_version
  - tests::dotnet_project_version
  - tests::parquet_release_version_matches_manifest
  - tests::ruby_release_version_matches_manifest
  - tests::dotnet_release_version_matches_project
  - tests::update_manifest_version_supports_workspace_package_version
  - tests::update_dependency_version_only_touches_release_managed_core_constraints
  - tests::update_dotnet_version_updates_version_prefix
  - tests::sync_workspace_internal_dependency_versions_updates_workspace_path_dependencies
  source_file: /src/opendal/dev/src/release/package.rs
- function_names:
  - update_version
  - archive_package
  - archive_and_checksum
  - format_digest_hex
  source_file: /src/opendal/dev/src/release/mod.rs
- function_names:
  - generate
  - supported_schemes
  - Field::from
  - ConfigDoc::from
  - group_fields
  - friendly_type
  - value_of
  - build
  - render_examples
  source_file: /src/opendal/dev/src/generate/docs.rs
- function_names:
  - run
  source_file: /src/opendal/dev/src/generate/mod.rs
- function_names:
  - enabled_service
  - generate
  - case_java_class_name
  - case_java_field_name
  - make_field
  - make_populate_map
  source_file: /src/opendal/dev/src/generate/java.rs
- function_names:
  - sorted_services
  - ConfigType::from_str
  - c::o::l::l::e::c::t::_::c::u::s::t::o::m::_::t::y::p::e::_::n::a::m::e::s::extract_name
  - collect_custom_type_names
  - parse
  - ServiceParser::parse
  - ServiceParser::parse_field
  - ServiceParser::doc_lines
  - ServiceParser::parse_marker
  - ServiceParser::parse_attr_comments
  - ServiceParser::parse_attr_markers
  - ServiceParser::parse_attr_deprecated
  - tests::test_parse_field
  - tests::test_parse_field_comments
  - tests::test_parse_service
  - tests::test_parse_field_markers
  - tests::test_parse
  source_file: /src/opendal/dev/src/generate/parser.rs
- function_names:
  - enabled_service
  - generate
  - snake_to_kebab_case
  - service_to_feature
  - service_to_pascal
  - format_text
  - make_pydoc_param_header
  - make_pydoc_param
  - make_python_type
  source_file: /src/opendal/dev/src/generate/python.rs
- function_names:
  - main
  source_file: /src/opendal/bindings/ocaml/build.rs
- function_names:
  - new_operator
  - map_res_error
  source_file: /src/opendal/bindings/ocaml/src/lib.rs
- function_names:
  - metadata_is_file
  - metadata_is_dir
  - metadata_content_length
  - metadata_content_md5
  - metadata_content_type
  - metadata_content_disposition
  - metadata_etag
  - metadata_last_modified
  source_file: /src/opendal/bindings/ocaml/src/operator/metadata.rs
- function_names:
  - lister_next
  source_file: /src/opendal/bindings/ocaml/src/operator/lister.rs
- function_names:
  - reader_pread
  source_file: /src/opendal/bindings/ocaml/src/operator/reader.rs
- function_names:
  - writer_write
  - writer_close
  source_file: /src/opendal/bindings/ocaml/src/operator/writer.rs
- function_names:
  - operator
  - blocking_list
  - blocking_lister
  - blocking_stat
  - blocking_is_exist
  - blocking_create_dir
  - blocking_read
  - blocking_reader
  - blocking_write
  - blocking_writer
  - blocking_copy
  - blocking_rename
  - blocking_delete
  - blocking_remove
  - blocking_remove_all
  - blocking_check
  - operator_info
  - operator_info_capability
  source_file: /src/opendal/bindings/ocaml/src/operator/mod.rs
- function_names: []
  source_file: /src/opendal/bindings/ocaml/src/operator/_type.rs
- function_names:
  - operator_info_name
  - operator_info_scheme
  - operator_info_root
  source_file: /src/opendal/bindings/ocaml/src/operator/operator_info.rs
- function_names:
  - entry_path
  - entry_name
  - entry_metadata
  source_file: /src/opendal/bindings/ocaml/src/operator/entry.rs
- function_names:
  - capability_stat
  - capability_read
  - capability_write
  - capability_create_dir
  - capability_delete
  - capability_copy
  - capability_rename
  - capability_list
  - capability_list_with_limit
  - capability_list_with_start_after
  - capability_list_with_recursive
  - capability_presign
  - capability_presign_read
  - capability_presign_stat
  - capability_presign_write
  - capability_shared
  source_file: /src/opendal/bindings/ocaml/src/operator/capability.rs
- function_names:
  - io::SeekFrom::from
  source_file: /src/opendal/bindings/ocaml/src/seek_from/mod.rs
- function_names:
  - operator_new
  - operator_is_exist
  - operator_delete
  - operator_write
  - operator_create_dir
  - operator_rename
  - operator_read
  - metadata_content_length
  - metadata_is_file
  - metadata_is_dir
  - operator_stat
  - opendal
  source_file: /src/opendal/bindings/lua/src/lib.rs
- function_names:
  - main
  source_file: /src/opendal/bindings/c/build.rs
- function_names:
  - opendal_string_free
  - opendal_bytes::empty
  - opendal_bytes::new
  - opendal_bytes::opendal_bytes_free
  - opendal_bytes::to_buffer
  - opendal_list_options::opendal_list_options_new
  - opendal_list_options::opendal_list_options_set_recursive
  - opendal_list_options::opendal_list_options_set_limit
  - opendal_list_options::opendal_list_options_set_start_after
  - opendal_list_options::opendal_list_options_set_versions
  - opendal_list_options::opendal_list_options_set_deleted
  - opendal_list_options::opendal_list_options_free
  - opendal_delete_options::opendal_delete_options_new
  - opendal_delete_options::opendal_delete_options_set_version
  - opendal_delete_options::opendal_delete_options_set_recursive
  - opendal_delete_options::opendal_delete_options_free
  - opendal_write_options::opendal_write_options_new
  - opendal_write_options::opendal_write_options_free
  - opendal_write_options::opendal_write_options_set_append
  - opendal_write_options::opendal_write_options_set_cache_control
  - opendal_write_options::opendal_write_options_set_content_type
  - opendal_write_options::opendal_write_options_set_content_disposition
  - opendal_write_options::opendal_write_options_set_content_encoding
  - opendal_write_options::opendal_write_options_set_if_match
  - opendal_write_options::opendal_write_options_set_if_none_match
  - opendal_write_options::opendal_write_options_set_if_not_exists
  - opendal_write_options::opendal_write_options_set_concurrent
  - opendal_write_options::opendal_write_options_set_chunk
  - opendal_write_options::opendal_write_options_set_user_metadata
  - opendal_write_options::default
  - optional_cstr
  - options::WriteOptions::from
  - opendal_stat_options::opendal_stat_options_new
  - opendal_stat_options::opendal_stat_options_free
  - opendal_stat_options::opendal_stat_options_set_version
  - opendal_stat_options::opendal_stat_options_set_if_match
  - opendal_stat_options::opendal_stat_options_set_if_none_match
  - opendal_stat_options::opendal_stat_options_set_if_modified_since
  - opendal_stat_options::opendal_stat_options_set_if_unmodified_since
  - opendal_stat_options::opendal_stat_options_set_override_content_type
  - opendal_stat_options::opendal_stat_options_set_override_cache_control
  - opendal_stat_options::opendal_stat_options_set_override_content_disposition
  - opendal_stat_options::default
  - options::StatOptions::from
  - opendal_read_options::default
  - opendal_read_options::opendal_read_options_new
  - opendal_read_options::opendal_read_options_free
  - opendal_read_options::opendal_read_options_set_range
  - opendal_read_options::opendal_read_options_set_range_from
  - opendal_read_options::opendal_read_options_set_version
  - opendal_read_options::opendal_read_options_set_if_match
  - opendal_read_options::opendal_read_options_set_if_none_match
  - opendal_read_options::opendal_read_options_set_if_modified_since
  - opendal_read_options::opendal_read_options_set_if_unmodified_since
  - opendal_read_options::opendal_read_options_set_concurrent
  - opendal_read_options::opendal_read_options_set_chunk
  - opendal_read_options::opendal_read_options_set_gap
  - opendal_read_options::opendal_read_options_set_content_length_hint
  - opendal_read_options::opendal_read_options_set_override_content_type
  - opendal_read_options::opendal_read_options_set_override_cache_control
  - opendal_read_options::opendal_read_options_set_override_content_disposition
  - options::ReadOptions::from
  - opendal_reader_options::default
  - opendal_reader_options::opendal_reader_options_new
  - opendal_reader_options::opendal_reader_options_free
  - opendal_reader_options::opendal_reader_options_set_version
  - opendal_reader_options::opendal_reader_options_set_if_match
  - opendal_reader_options::opendal_reader_options_set_if_none_match
  - opendal_reader_options::opendal_reader_options_set_if_modified_since
  - opendal_reader_options::opendal_reader_options_set_if_unmodified_since
  - opendal_reader_options::opendal_reader_options_set_content_length_hint
  - opendal_reader_options::opendal_reader_options_set_concurrent
  - opendal_reader_options::opendal_reader_options_set_chunk
  - opendal_reader_options::opendal_reader_options_set_gap
  - opendal_reader_options::opendal_reader_options_set_prefetch
  - options::ReaderOptions::from
  - opendal_copy_options::opendal_copy_options_new
  - opendal_copy_options::opendal_copy_options_free
  - opendal_copy_options::opendal_copy_options_set_if_not_exists
  - opendal_copy_options::opendal_copy_options_set_if_match
  - opendal_copy_options::opendal_copy_options_set_source_version
  - opendal_copy_options::opendal_copy_options_set_source_content_length_hint
  - opendal_copy_options::opendal_copy_options_set_concurrent
  - opendal_copy_options::opendal_copy_options_set_chunk
  - opendal_copy_options::default
  - options::CopyOptions::from
  - opendal_bytes::drop
  - opendal_operator_options::deref
  - opendal_operator_options::deref_mut
  - opendal_operator_options::opendal_operator_options_new
  - opendal_operator_options::opendal_operator_options_set
  - opendal_operator_options::opendal_operator_options_free
  source_file: /src/opendal/bindings/c/src/types.rs
- function_names:
  - opendal_metadata_user_metadata_inner::new
  - opendal_metadata::deref
  - opendal_metadata::new
  - opendal_metadata::opendal_metadata_free
  - opendal_metadata::optional_str
  - opendal_metadata::opendal_metadata_mode
  - opendal_metadata::opendal_metadata_content_length
  - opendal_metadata::opendal_metadata_is_file
  - opendal_metadata::opendal_metadata_is_dir
  - opendal_metadata::opendal_metadata_is_current
  - opendal_metadata::opendal_metadata_is_deleted
  - opendal_metadata::opendal_metadata_cache_control
  - opendal_metadata::opendal_metadata_content_disposition
  - opendal_metadata::opendal_metadata_content_md5
  - opendal_metadata::opendal_metadata_content_type
  - opendal_metadata::opendal_metadata_content_encoding
  - opendal_metadata::opendal_metadata_etag
  - opendal_metadata::opendal_metadata_version
  - opendal_metadata::opendal_metadata_get_user_metadata
  - opendal_metadata::opendal_metadata_last_modified_ms
  - opendal_metadata_user_metadata::opendal_metadata_user_metadata_pairs
  - opendal_metadata_user_metadata::opendal_metadata_user_metadata_len
  - opendal_metadata_user_metadata::opendal_metadata_user_metadata_free
  source_file: /src/opendal/bindings/c/src/metadata.rs
- function_names:
  - OperatorLayer::apply
  - opendal_operator_layers::apply
  - opendal_operator_layers::deref
  - opendal_operator_layers::deref_mut
  - opendal_operator_layers::opendal_operator_layers_new
  - opendal_operator_layers::add_retry
  - opendal_operator_layers::opendal_operator_layers_add_retry
  - opendal_operator_layers::add_timeout
  - opendal_operator_layers::opendal_operator_layers_add_timeout
  - opendal_operator_layers::opendal_operator_layers_free
  source_file: /src/opendal/bindings/c/src/layer.rs
- function_names:
  - opendal_lister::deref_mut
  - opendal_lister::new
  - opendal_lister::opendal_lister_next
  - opendal_lister::opendal_lister_free
  source_file: /src/opendal/bindings/c/src/lister.rs
- function_names:
  - opendal_reader::deref_mut
  - opendal_reader::new
  - opendal_reader::opendal_reader_read
  - opendal_reader::opendal_reader_seek
  - opendal_reader::opendal_reader_free
  source_file: /src/opendal/bindings/c/src/reader.rs
- function_names:
  - opendal_copier::deref_mut
  - opendal_copier::new
  - opendal_copier::opendal_copier_next
  - opendal_copier::opendal_copier_abort
  - opendal_copier::opendal_copier_free
  source_file: /src/opendal/bindings/c/src/copier.rs
- function_names: []
  source_file: /src/opendal/bindings/c/src/result.rs
- function_names:
  - opendal_presigned_request_inner::new
  - make_presign_result
  - opendal_operator_presign_read
  - opendal_operator_presign_read_with
  - opendal_operator_presign_write
  - opendal_operator_presign_write_with
  - opendal_operator_presign_delete
  - opendal_operator_presign_delete_with
  - opendal_operator_presign_stat
  - opendal_operator_presign_stat_with
  - opendal_presigned_request_method
  - opendal_presigned_request_uri
  - opendal_presigned_request_headers
  - opendal_presigned_request_headers_len
  - opendal_presigned_request_free
  source_file: /src/opendal/bindings/c/src/presign.rs
- function_names:
  - opendal_code::from
  - opendal_error::new
  - opendal_error::opendal_error_free
  source_file: /src/opendal/bindings/c/src/error.rs
- function_names:
  - opendal_writer::deref_mut
  - opendal_writer::new
  - opendal_writer::opendal_writer_write
  - opendal_writer::opendal_writer_close
  - opendal_writer::opendal_writer_close_with_metadata
  - opendal_writer::opendal_writer_free
  source_file: /src/opendal/bindings/c/src/writer.rs
- function_names: []
  source_file: /src/opendal/bindings/c/src/lib.rs
- function_names:
  - opendal_operator_info::deref
  - opendal_operator_info::opendal_operator_info_new
  - opendal_operator_info::opendal_operator_info_free
  - opendal_operator_info::opendal_operator_info_get_scheme
  - opendal_operator_info::opendal_operator_info_get_root
  - opendal_operator_info::opendal_operator_info_get_name
  - opendal_operator_info::opendal_operator_info_get_capability
  - opendal_capability::from
  source_file: /src/opendal/bindings/c/src/operator_info.rs
- function_names:
  - opendal_operator::deref
  - opendal_operator::opendal_operator_free
  - build_operator
  - build_operator_with_layers
  - build_blocking_operator
  - parse_operator_options
  - new_operator_result
  - opendal_operator_new
  - opendal_operator_new_with_layers
  - opendal_operator_write
  - opendal_operator_write_with
  - opendal_operator_write_with_metadata
  - opendal_operator_read
  - opendal_operator_read_with
  - opendal_operator_reader
  - opendal_operator_reader_with
  - opendal_operator_writer
  - opendal_operator_writer_with
  - opendal_operator_delete
  - opendal_operator_delete_with
  - opendal_operator_is_exist
  - opendal_operator_exists
  - opendal_operator_stat
  - opendal_operator_stat_with
  - opendal_operator_list
  - opendal_operator_list_with
  - opendal_operator_create_dir
  - opendal_operator_rename
  - opendal_operator_copy
  - opendal_operator_copy_with
  - opendal_operator_check
  - opendal_operator_copier
  - opendal_operator_copier_with
  source_file: /src/opendal/bindings/c/src/operator.rs
- function_names:
  - opendal_entry::deref
  - opendal_entry::new
  - opendal_entry::opendal_entry_path
  - opendal_entry::opendal_entry_name
  - opendal_entry::opendal_entry_metadata
  - opendal_entry::opendal_entry_free
  source_file: /src/opendal/bindings/c/src/entry.rs
- function_names:
  - main
  source_file: /src/opendal/bindings/ruby/build.rs
- function_names:
  - Metadata::new
  - Metadata::mode
  - Metadata::content_disposition
  - Metadata::content_length
  - Metadata::content_md5
  - Metadata::content_type
  - Metadata::etag
  - include
  source_file: /src/opendal/bindings/ruby/src/metadata.rs
- function_names:
  - Entry::path
  - Entry::name
  - Entry::metadata
  - Lister::next
  - Lister::new
  - Lister::each
  - include
  source_file: /src/opendal/bindings/ruby/src/lister.rs
- function_names:
  - format_io_error
  - Io::new
  - Io::binary_mode
  - Io::is_binary_mode
  - Io::close
  - Io::close_read
  - Io::close_write
  - Io::is_closed
  - Io::is_closed_read
  - Io::is_closed_write
  - Io::read
  - Io::readline
  - Io::write
  - Io::seek
  - Io::tell
  - include
  source_file: /src/opendal/bindings/ruby/src/io.rs
- function_names:
  - format_magnus_error
  - init
  source_file: /src/opendal/bindings/ruby/src/lib.rs
- function_names:
  - apply_layer
  - RetryMiddleware::new
  - RetryMiddleware::apply_to
  - ConcurrentLimitMiddleware::new
  - ConcurrentLimitMiddleware::apply_to
  - ThrottleMiddleware::new
  - ThrottleMiddleware::apply_to
  - parse_duration
  - TimeoutMiddleware::new
  - TimeoutMiddleware::apply_to
  - include
  source_file: /src/opendal/bindings/ruby/src/middlewares.rs
- function_names:
  - OperatorInfo::scheme
  - OperatorInfo::root
  - OperatorInfo::name
  - OperatorInfo::capability
  - include
  source_file: /src/opendal/bindings/ruby/src/operator_info.rs
- function_names:
  - Operator::from_operator
  - Operator::new
  - Operator::read
  - Operator::write
  - Operator::stat
  - Operator::capability
  - Operator::create_dir
  - Operator::delete
  - Operator::exists
  - Operator::rename
  - Operator::remove_all
  - Operator::copy
  - Operator::open
  - Operator::list
  - Operator::info
  - include
  source_file: /src/opendal/bindings/ruby/src/operator.rs
- function_names:
  - define_accessors
  - bind_methods_to_ruby
  - Capability::new
  - include
  source_file: /src/opendal/bindings/ruby/src/capability.rs
- function_names:
  - Entry::new
  - Entry::path
  - Entry::name
  - Entry::metadata
  - Entry::__str__
  - Entry::__repr__
  - Metadata::new
  - Metadata::content_disposition
  - Metadata::content_length
  - Metadata::content_md5
  - Metadata::content_type
  - Metadata::content_encoding
  - Metadata::etag
  - Metadata::mode
  - Metadata::is_file
  - Metadata::is_dir
  - Metadata::last_modified
  - Metadata::version
  - Metadata::user_metadata
  - Metadata::__repr__
  - EntryMode::new
  - EntryMode::is_file
  - EntryMode::is_dir
  source_file: /src/opendal/bindings/python/src/metadata.rs
- function_names:
  - BlockingLister::new
  - BlockingLister::__iter__
  - BlockingLister::__next__
  - AsyncLister::new
  - AsyncLister::__aiter__
  - AsyncLister::__anext__
  source_file: /src/opendal/bindings/python/src/lister.rs
- function_names:
  - Buffer::new
  - Buffer::into_bytes
  - Buffer::into_bytes_ref
  - Buffer::__getbuffer__
  - register_submodules
  - add_exceptions
  source_file: /src/opendal/bindings/python/src/utils.rs
- function_names:
  - File::new_reader
  - File::new_writer
  - File::read
  - File::readline
  - File::readinto
  - File::write
  - File::seek
  - File::tell
  - File::close
  - File::__enter__
  - File::__exit__
  - File::flush
  - File::readable
  - File::writable
  - File::seekable
  - File::closed
  - AsyncFile::new_reader
  - AsyncFile::new_writer
  - AsyncFile::read
  - AsyncFile::write
  - AsyncFile::seek
  - AsyncFile::tell
  - AsyncFile::close
  - AsyncFile::__aenter__
  - AsyncFile::__aexit__
  - AsyncFile::readable
  - AsyncFile::writable
  - AsyncFile::seekable
  - AsyncFile::closed
  source_file: /src/opendal/bindings/python/src/file.rs
- function_names:
  - format_pyerr_impl
  - format_pyerr
  - format_pyerr_from_io_error
  source_file: /src/opendal/bindings/python/src/errors.rs
- function_names:
  - _opendal::init
  - _opendal::init
  source_file: /src/opendal/bindings/python/src/lib.rs
- function_names:
  - map_exception
  - extract_optional
  - downcast_kwargs
  - ReadOptions::extract
  - ReadOptions::make_range
  - WriteOptions::extract
  - ocore::options::ReadOptions::from
  - ocore::options::ReaderOptions::from
  - ocore::options::WriteOptions::from
  - ListOptions::extract
  - ocore::options::ListOptions::from
  - StatOptions::extract
  - ocore::options::StatOptions::from
  - DeleteOptions::extract
  - ocore::options::DeleteOptions::from
  source_file: /src/opendal/bindings/python/src/options.rs
- function_names:
  - build_operator
  - build_blocking_operator
  - build_operator_from_uri
  - build_blocking_operator_from_uri
  - normalize_scheme
  - _reconstruct_operator
  - _reconstruct_async_operator
  - Operator::new
  - Operator::from_uri
  - Operator::layer
  - Operator::open
  - Operator::read
  - Operator::write
  - Operator::stat
  - Operator::copy
  - Operator::rename
  - Operator::remove_all
  - Operator::create_dir
  - Operator::delete
  - Operator::exists
  - Operator::list
  - Operator::scan
  - Operator::capability
  - Operator::check
  - Operator::to_async_operator
  - Operator::__repr__
  - Operator::__reduce__
  - AsyncOperator::new
  - AsyncOperator::from_uri
  - AsyncOperator::layer
  - AsyncOperator::open
  - AsyncOperator::read
  - AsyncOperator::write
  - AsyncOperator::stat
  - AsyncOperator::copy
  - AsyncOperator::rename
  - AsyncOperator::remove_all
  - AsyncOperator::check
  - AsyncOperator::create_dir
  - AsyncOperator::delete
  - AsyncOperator::exists
  - AsyncOperator::list
  - AsyncOperator::scan
  - AsyncOperator::presign_stat
  - AsyncOperator::presign_read
  - AsyncOperator::presign_write
  - AsyncOperator::presign_delete
  - AsyncOperator::capability
  - AsyncOperator::to_operator
  - AsyncOperator::__repr__
  - AsyncOperator::__reduce__
  - PresignedRequest::url
  - PresignedRequest::method
  - PresignedRequest::headers
  source_file: /src/opendal/bindings/python/src/operator.rs
- function_names:
  - Scheme::name
  - Scheme::value
  - impl_enum_to_str
  source_file: /src/opendal/bindings/python/src/services.rs
- function_names:
  - Capability::new
  source_file: /src/opendal/bindings/python/src/capability.rs
- function_names:
  - CapabilityOverrideLayer::layer
  - CapabilityOverrideLayer::new
  source_file: /src/opendal/bindings/python/src/layers/capability_override.rs
- function_names:
  - RetryLayer::layer
  - RetryLayer::new
  source_file: /src/opendal/bindings/python/src/layers/retry.rs
- function_names: []
  source_file: /src/opendal/bindings/python/src/layers/mod.rs
- function_names:
  - ConcurrentLimitLayer::layer
  - ConcurrentLimitLayer::new
  source_file: /src/opendal/bindings/python/src/layers/concurrent_limit.rs
- function_names:
  - MimeGuessLayer::layer
  - MimeGuessLayer::new
  source_file: /src/opendal/bindings/python/src/layers/mime_guess.rs
- function_names:
  - build_async::copy_force
  - build_async::symlink_async_includes
  - main
  source_file: /src/opendal/bindings/cpp/build.rs
- function_names:
  - ffi::Metadata::from
  - ffi::Entry::from
  - ffi::EntryMode::from
  - ffi::OptionalString::from
  - ffi::OptionalBool::from
  - ffi::OptionalEntry::from
  source_file: /src/opendal/bindings/cpp/src/types.rs
- function_names:
  - Lister::next
  source_file: /src/opendal/bindings/cpp/src/lister.rs
- function_names:
  - Reader::read
  - Reader::seek
  source_file: /src/opendal/bindings/cpp/src/reader.rs
- function_names:
  - get_reader_storage
  - get_reader_counter
  - get_lister_storage
  - get_lister_counter
  - new_operator
  - ffi::OperatorPtr::deref
  - operator_read
  - operator_write
  - operator_list
  - operator_exists
  - operator_create_dir
  - operator_copy
  - operator_rename
  - operator_delete
  - operator_reader
  - operator_lister
  - reader_read
  - lister_next
  - delete_reader
  - delete_lister
  source_file: /src/opendal/bindings/cpp/src/async.rs
- function_names:
  - new_operator
  - delete_operator
  - delete_reader
  - delete_lister
  - Operator::read
  - Operator::write
  - Operator::exists
  - Operator::create_dir
  - Operator::copy
  - Operator::rename
  - Operator::remove
  - Operator::stat
  - Operator::list
  - Operator::reader
  - Operator::lister
  - Operator::info
  source_file: /src/opendal/bindings/cpp/src/lib.rs
- function_names:
  - Java_org_apache_opendal_layer_RetryLayer_doLayer
  - Java_org_apache_opendal_layer_CapabilityOverrideLayer_doLayer
  - intern_capability_override_layer
  - Java_org_apache_opendal_layer_ConcurrentLimitLayer_doLayer
  source_file: /src/opendal/bindings/java/src/layer.rs
- function_names:
  - Java_org_apache_opendal_AsyncOperator_constructor
  - intern_constructor
  - Java_org_apache_opendal_AsyncOperator_duplicate
  - Java_org_apache_opendal_AsyncOperator_disposeInternal
  - Java_org_apache_opendal_AsyncOperator_write
  - intern_write
  - Java_org_apache_opendal_AsyncOperator_stat
  - intern_stat
  - Java_org_apache_opendal_AsyncOperator_read
  - intern_read
  - Java_org_apache_opendal_AsyncOperator_delete
  - intern_delete
  - Java_org_apache_opendal_AsyncOperator_makeBlockingOp
  - intern_make_blocking_op
  - Java_org_apache_opendal_AsyncOperator_makeOperatorInfo
  - intern_make_operator_info
  - Java_org_apache_opendal_AsyncOperator_createDir
  - intern_create_dir
  - Java_org_apache_opendal_AsyncOperator_copy
  - intern_copy
  - Java_org_apache_opendal_AsyncOperator_rename
  - intern_rename
  - Java_org_apache_opendal_AsyncOperator_removeAll
  - intern_remove_all
  - Java_org_apache_opendal_AsyncOperator_list
  - intern_list
  - make_entries
  - Java_org_apache_opendal_AsyncOperator_presignRead
  - intern_presign_read
  - Java_org_apache_opendal_AsyncOperator_presignWrite
  - intern_presign_write
  - Java_org_apache_opendal_AsyncOperator_presignStat
  - intern_presign_stat
  - complete_future
  - request_id
  - get_future
  source_file: /src/opendal/bindings/java/src/async_operator.rs
- function_names:
  - JNI_OnLoad
  - JNI_OnUnload
  - Executor::enter_with
  - Executor::spawn
  - Java_org_apache_opendal_AsyncExecutor_makeTokioExecutor
  - Java_org_apache_opendal_AsyncExecutor_disposeInternal
  - make_tokio_executor
  - set_current_thread_name
  - executor_or_default
  - default_executor
  source_file: /src/opendal/bindings/java/src/executor.rs
- function_names:
  - Java_org_apache_opendal_OpenDAL_loadEnabledServices
  - intern_load_enabled_services
  source_file: /src/opendal/bindings/java/src/utility.rs
- function_names:
  - Error::throw
  - Error::to_exception
  - Error::do_throw
  - ThrowException::on_error
  - ThrowException::on_panic
  - Error::from
  - Error::from
  - Error::fmt
  - Error::fmt
  - Error::source
  source_file: /src/opendal/bindings/java/src/error.rs
- function_names:
  - Java_org_apache_opendal_OperatorInputStream_constructReader
  - intern_construct_reader
  - Java_org_apache_opendal_OperatorInputStream_disposeReader
  - Java_org_apache_opendal_OperatorInputStream_readNextBytes
  - intern_read_next_bytes
  source_file: /src/opendal/bindings/java/src/operator_input_stream.rs
- function_names:
  - usize_to_jlong
  - jmap_to_hashmap
  - hashmap_to_jmap
  - string_to_jstring
  - read_bool_field
  - read_int64_field
  - read_int_field
  - read_string_field
  - read_map_field
  - read_jlong_field_to_usize
  - read_instant_field_to_timestamp
  - offset_length_to_range
  - bytes_to_jbytearray
  - jstring_to_string
  source_file: /src/opendal/bindings/java/src/convert.rs
- function_names:
  - make_presigned_request
  - make_operator_info
  - make_capability
  - make_metadata
  - make_entry
  - make_write_options
  - make_list_options
  - make_stat_options
  - make_read_options
  - make_reader_options
  source_file: /src/opendal/bindings/java/src/lib.rs
- function_names:
  - Java_org_apache_opendal_OperatorOutputStream_constructWriter
  - intern_construct_write
  - Java_org_apache_opendal_OperatorOutputStream_disposeWriter
  - intern_dispose_write
  - Java_org_apache_opendal_OperatorOutputStream_writeBytes
  - intern_write_bytes
  source_file: /src/opendal/bindings/java/src/operator_output_stream.rs
- function_names:
  - Java_org_apache_opendal_Operator_disposeInternal
  - Java_org_apache_opendal_Operator_duplicate
  - Java_org_apache_opendal_Operator_read
  - intern_read
  - Java_org_apache_opendal_Operator_write
  - intern_write
  - Java_org_apache_opendal_Operator_stat
  - intern_stat
  - Java_org_apache_opendal_Operator_delete
  - intern_delete
  - Java_org_apache_opendal_Operator_createDir
  - intern_create_dir
  - Java_org_apache_opendal_Operator_copy
  - intern_copy
  - Java_org_apache_opendal_Operator_rename
  - intern_rename
  - Java_org_apache_opendal_Operator_removeAll
  - intern_remove_all
  - Java_org_apache_opendal_Operator_list
  - intern_list
  source_file: /src/opendal/bindings/java/src/operator.rs
- function_names: []
  source_file: /src/opendal/bindings/dart/rust/src/lib.rs
- function_names:
  - wire__crate__api__opendal_api__Metadata_content_disposition_impl
  - wire__crate__api__opendal_api__Metadata_content_length_impl
  - wire__crate__api__opendal_api__Metadata_content_md5_impl
  - wire__crate__api__opendal_api__Metadata_content_type_impl
  - wire__crate__api__opendal_api__Metadata_etag_impl
  - wire__crate__api__opendal_api__Metadata_is_directory_impl
  - wire__crate__api__opendal_api__Metadata_is_file_impl
  - wire__crate__api__opendal_api__Metadata_last_modified_impl
  - wire__crate__api__opendal_api__Operator_check_impl
  - wire__crate__api__opendal_api__Operator_create_dir_impl
  - wire__crate__api__opendal_api__Operator_create_dir_sync_impl
  - wire__crate__api__opendal_api__Operator_delete_impl
  - wire__crate__api__opendal_api__Operator_delete_sync_impl
  - wire__crate__api__opendal_api__Operator_exists_impl
  - wire__crate__api__opendal_api__Operator_exists_sync_impl
  - wire__crate__api__opendal_api__Operator_new_impl
  - wire__crate__api__opendal_api__Operator_read_impl
  - wire__crate__api__opendal_api__Operator_read_sync_impl
  - wire__crate__api__opendal_api__Operator_rename_impl
  - wire__crate__api__opendal_api__Operator_rename_sync_impl
  - wire__crate__api__opendal_api__Operator_stat_impl
  - wire__crate__api__opendal_api__Operator_stat_sync_impl
  - wire__crate__api__opendal_api__Operator_write_impl
  - wire__crate__api__opendal_api__Operator_write_sync_impl
  - flutter_rust_bridge::for_generated::anyhow::Error::sse_decode
  - Metadata::sse_decode
  - Operator::sse_decode
  - std::collections::HashMap::sse_decode
  - RustOpaqueMoi::sse_decode
  - RustOpaqueMoi::sse_decode
  - String::sse_decode
  - bool::sse_decode
  - Vec::sse_decode
  - Vec::sse_decode
  - Option::sse_decode
  - Option::sse_decode
  - (String, String)::sse_decode
  - u64::sse_decode
  - u8::sse_decode
  - ()::sse_decode
  - usize::sse_decode
  - i32::sse_decode
  - pde_ffi_dispatcher_primary_impl
  - pde_ffi_dispatcher_sync_impl
  - FrbWrapper::into_dart
  - Metadata::into_into_dart
  - FrbWrapper::into_dart
  - Operator::into_into_dart
  - flutter_rust_bridge::for_generated::anyhow::Error::sse_encode
  - Metadata::sse_encode
  - Operator::sse_encode
  - std::collections::HashMap::sse_encode
  - RustOpaqueMoi::sse_encode
  - RustOpaqueMoi::sse_encode
  - String::sse_encode
  - bool::sse_encode
  - Vec::sse_encode
  - Vec::sse_encode
  - Option::sse_encode
  - Option::sse_encode
  - (String, String)::sse_encode
  - u64::sse_encode
  - u8::sse_encode
  - ()::sse_encode
  - usize::sse_encode
  - i32::sse_encode
  - io::frbgen_opendal_rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerMetadata
  - io::frbgen_opendal_rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerMetadata
  - io::frbgen_opendal_rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerOperator
  - io::frbgen_opendal_rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerOperator
  - web::rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerMetadata
  - web::rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerMetadata
  - web::rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerOperator
  - web::rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerOperator
  source_file: /src/opendal/bindings/dart/rust/src/frb_generated.rs
- function_names:
  - Operator::new
  - Operator::stat
  - Operator::stat_sync
  - Operator::check
  - Operator::exists
  - Operator::delete
  - Operator::delete_sync
  - Operator::exists_sync
  - Operator::create_dir
  - Operator::create_dir_sync
  - Operator::rename
  - Operator::rename_sync
  - Operator::read
  - Operator::read_sync
  - Operator::write
  - Operator::write_sync
  - Metadata::is_directory
  - Metadata::is_file
  - Metadata::content_disposition
  - Metadata::content_length
  - Metadata::content_md5
  - Metadata::content_type
  - Metadata::etag
  - Metadata::last_modified
  source_file: /src/opendal/bindings/dart/rust/src/api/opendal_api.rs
- function_names: []
  source_file: /src/opendal/bindings/dart/rust/src/api/mod.rs
- function_names:
  - ByteSlice::from_vec
  - ByteSlice::free_byteslice
  - Vec::from
  - Metadata::from
  - leak_str
  source_file: /src/opendal/bindings/haskell/src/types.rs
- function_names:
  - FFIResult::ok
  - FFIResult::err
  - FFIResult::err_with_source
  - FFIErrorCode::from
  source_file: /src/opendal/bindings/haskell/src/result.rs
- function_names:
  - via_map_ffi
  - free_operator
  - blocking_read
  - blocking_write
  - blocking_is_exist
  - blocking_create_dir
  - blocking_copy
  - blocking_rename
  - blocking_delete
  - blocking_stat
  - blocking_list
  - blocking_scan
  - lister_next
  - free_lister
  - operator_info
  - blocking_remove_all
  - blocking_writer
  - blocking_writer_append
  - writer_write
  - writer_close
  - free_writer
  source_file: /src/opendal/bindings/haskell/src/lib.rs
- function_names:
  - HsLogger::enabled
  - HsLogger::log
  - HsLogger::flush
  source_file: /src/opendal/bindings/haskell/src/logger.rs
- function_names:
  - Operator::__construct
  - Operator::write
  - Operator::write_binary
  - Operator::read
  - Operator::is_exist
  - Operator::stat
  - Operator::delete
  - Operator::create_dir
  - Metadata::content_disposition
  - Metadata::content_length
  - Metadata::content_md5
  - Metadata::content_type
  - Metadata::etag
  - Metadata::mode
  - EntryMode::from_zval
  - EntryMode::is_dir
  - EntryMode::is_file
  - format_php_err
  - get_module
  source_file: /src/opendal/bindings/php/src/lib.rs
- function_names:
  - main
  source_file: /src/opendal/bindings/nodejs/build.rs
- function_names:
  - opendal::layers::RetryLayer::layer
  - opendal::layers::CapabilityOverrideLayer::layer
  - CapabilityOverrideLayer::new
  - CapabilityOverrideLayer::build
  - RetryLayer::new
  - RetryLayer::jitter
  - RetryLayer::max_times
  - RetryLayer::factor
  - RetryLayer::max_delay
  - RetryLayer::min_delay
  - RetryLayer::build
  - opendal::layers::ConcurrentLimitLayer::layer
  - ConcurrentLimitLayer::new
  - ConcurrentLimitLayer::http_permits
  - ConcurrentLimitLayer::build
  - opendal::layers::TimeoutLayer::layer
  - TimeoutLayer::new
  - TimeoutLayer::timeout
  - TimeoutLayer::io_timeout
  - TimeoutLayer::build
  - opendal::layers::LoggingLayer::layer
  - LoggingLayer::default
  - LoggingLayer::new
  - LoggingLayer::build
  - opendal::layers::ThrottleLayer::layer
  - ThrottleLayer::new
  - ThrottleLayer::build
  source_file: /src/opendal/bindings/nodejs/src/layer.rs
- function_names:
  - Operator::new
  - Operator::from_uri
  - Operator::capability
  - Operator::stat
  - Operator::stat_sync
  - Operator::check
  - Operator::check_sync
  - Operator::exists
  - Operator::exists_sync
  - Operator::create_dir
  - Operator::create_dir_sync
  - Operator::read
  - Operator::reader
  - Operator::read_sync
  - Operator::reader_sync
  - Operator::write
  - Operator::writer
  - Operator::writer_sync
  - Operator::write_sync
  - Operator::copy
  - Operator::copy_sync
  - Operator::rename
  - Operator::rename_sync
  - Operator::delete
  - Operator::delete_sync
  - Operator::remove
  - Operator::remove_sync
  - Operator::remove_all
  - Operator::remove_all_sync
  - Operator::list
  - Operator::list_sync
  - Operator::lister
  - Operator::lister_sync
  - Operator::presign_read
  - Operator::presign_write
  - Operator::presign_stat
  - Operator::presign_delete
  - Entry::path
  - Entry::name
  - Entry::metadata
  - EntryMode::from
  - Metadata::is_directory
  - Metadata::is_file
  - Metadata::is_deleted
  - Metadata::cache_control
  - Metadata::content_disposition
  - Metadata::content_length
  - Metadata::content_encoding
  - Metadata::content_md5
  - Metadata::content_type
  - Metadata::user_metadata
  - Metadata::etag
  - Metadata::last_modified
  - Metadata::mode
  - Metadata::version
  - BlockingReader::read
  - Reader::read
  - BlockingWriter::write
  - BlockingWriter::close
  - Writer::write
  - Writer::close
  - Lister::next
  - BlockingLister::next
  - PresignedRequest::new
  - Operator::layer
  - format_napi_error
  source_file: /src/opendal/bindings/nodejs/src/lib.rs
- function_names:
  - opendal::options::StatOptions::from
  - ReadOptions::make_range
  - opendal::options::ReadOptions::from
  - opendal::options::ReaderOptions::from
  - opendal::options::ListOptions::from
  - opendal::options::WriteOptions::from
  - opendal::options::DeleteOptions::from
  source_file: /src/opendal/bindings/nodejs/src/options.rs
- function_names:
  - Capability::new
  - Capability::stat
  - Capability::stat_with_if_match
  - Capability::stat_with_if_none_match
  - Capability::stat_with_if_modified_since
  - Capability::stat_with_if_unmodified_since
  - Capability::stat_with_version
  - Capability::stat_with_override_content_type
  - Capability::stat_with_override_cache_control
  - Capability::stat_with_override_content_disposition
  - Capability::read
  - Capability::read_with_version
  - Capability::read_with_if_modified_since
  - Capability::read_with_if_unmodified_since
  - Capability::read_with_if_match
  - Capability::read_with_if_none_match
  - Capability::read_with_override_cache_control
  - Capability::read_with_override_content_disposition
  - Capability::read_with_override_content_type
  - Capability::write
  - Capability::write_can_multi
  - Capability::write_can_empty
  - Capability::write_can_append
  - Capability::write_with_content_type
  - Capability::write_with_content_disposition
  - Capability::write_with_cache_control
  - Capability::write_with_content_encoding
  - Capability::write_with_user_metadata
  - Capability::write_with_if_match
  - Capability::write_with_if_none_match
  - Capability::write_with_if_not_exists
  - Capability::write_multi_max_size
  - Capability::write_multi_min_size
  - Capability::write_total_max_size
  - Capability::create_dir
  - Capability::delete
  - Capability::delete_with_version
  - Capability::copy
  - Capability::rename
  - Capability::list
  - Capability::list_with_limit
  - Capability::list_with_start_after
  - Capability::list_with_recursive
  - Capability::list_with_versions
  - Capability::list_with_deleted
  - Capability::presign
  - Capability::presign_read
  - Capability::presign_stat
  - Capability::presign_write
  - Capability::presign_delete
  - Capability::shared
  source_file: /src/opendal/bindings/nodejs/src/capability.rs
- function_names:
  - OpendalMetadata::from_metadata
  - optional_string_to_ptr
  - metadata_free
  source_file: /src/opendal/bindings/dotnet/src/metadata.rs
- function_names:
  - Executor::new
  - Executor::block_on
  - Executor::spawn
  - Executor::enter
  - default_executor
  - executor_or_default
  - executor_create
  - executor_free
  source_file: /src/opendal/bindings/dotnet/src/executor.rs
- function_names:
  - cstr_to_str
  - config_invalid_error
  - invalid_utf8_message
  - invalid_utf8_message_at
  - require_cstr
  - require_operator
  - require_callback
  - require_data_ptr
  - collect_options
  - into_string_ptr
  source_file: /src/opendal/bindings/dotnet/src/utils.rs
- function_names:
  - define_result
  - release_error_message
  - opendal_error_release
  - opendal_operator_info_result_release
  - opendal_metadata_result_release
  - opendal_entry_list_result_release
  - opendal_read_result_release
  - opendal_presigned_request_result_release
  source_file: /src/opendal/bindings/dotnet/src/result.rs
- function_names:
  - ByteBuffer::empty
  - ByteBuffer::from_vec
  - buffer_free
  source_file: /src/opendal/bindings/dotnet/src/byte_buffer.rs
- function_names:
  - into_presigned_request_ptr
  - presigned_request_free
  source_file: /src/opendal/bindings/dotnet/src/presign.rs
- function_names:
  - OpenDALError::ok
  - OpenDALError::from_error
  - OpenDALError::from_opendal_error
  - ErrorCode::from_error_kind
  source_file: /src/opendal/bindings/dotnet/src/error.rs
- function_names: []
  source_file: /src/opendal/bindings/dotnet/src/lib.rs
- function_names:
  - parse_bool
  - parse_usize
  - parse_u64
  - parse_timestamp
  - parse_string
  - parse_read_options
  - parse_write_options
  - parse_stat_options
  - parse_list_options
  source_file: /src/opendal/bindings/dotnet/src/options.rs
- function_names:
  - into_operator_info
  source_file: /src/opendal/bindings/dotnet/src/operator_info.rs
- function_names:
  - constructor_option_build
  - constructor_option_free
  - read_option_build
  - read_option_free
  - write_option_build
  - write_option_free
  - stat_option_build
  - stat_option_free
  - list_option_build
  - list_option_free
  - operator_construct
  - operator_construct_inner
  - operator_free
  - operator_info_get
  - operator_info_get_inner
  - operator_info_free
  - operator_layer_retry
  - operator_layer_retry_inner
  - operator_layer_concurrent_limit
  - operator_layer_concurrent_limit_inner
  - operator_layer_capability_override
  - operator_layer_capability_override_inner
  - operator_layer_timeout
  - operator_layer_timeout_inner
  - operator_duplicate
  - operator_duplicate_inner
  - operator_delete
  - operator_delete_inner
  - operator_delete_async
  - operator_delete_async_inner
  - operator_create_dir
  - operator_create_dir_inner
  - operator_create_dir_async
  - operator_create_dir_async_inner
  - operator_copy
  - operator_copy_inner
  - operator_copy_async
  - operator_copy_async_inner
  - operator_rename
  - operator_rename_inner
  - operator_rename_async
  - operator_rename_async_inner
  - operator_remove_all
  - operator_remove_all_inner
  - operator_remove_all_async
  - operator_remove_all_async_inner
  - operator_presign_read_async
  - operator_presign_read_async_inner
  - operator_presign_write_async
  - operator_presign_write_async_inner
  - operator_presign_stat_async
  - operator_presign_stat_async_inner
  - operator_presign_delete_async
  - operator_presign_delete_async_inner
  - operator_input_stream_create
  - operator_input_stream_create_inner
  - operator_input_stream_read_next
  - operator_input_stream_read_next_inner
  - operator_input_stream_free
  - operator_output_stream_create
  - operator_output_stream_create_inner
  - operator_output_stream_write
  - operator_output_stream_write_inner
  - operator_output_stream_flush
  - operator_output_stream_flush_inner
  - operator_output_stream_close
  - operator_output_stream_close_inner
  - operator_output_stream_free
  - operator_write_with_options
  - operator_write_with_options_inner
  - operator_write_with_options_async
  - operator_write_with_options_async_inner
  - operator_read_with_options
  - operator_read_with_options_inner
  - operator_read_with_options_async
  - operator_read_with_options_async_inner
  - operator_stat_with_options
  - operator_stat_with_options_inner
  - operator_stat_with_options_async
  - operator_stat_with_options_async_inner
  - operator_list_with_options
  - operator_list_with_options_inner
  - operator_list_with_options_async
  - operator_list_with_options_async_inner
  source_file: /src/opendal/bindings/dotnet/src/operator.rs
- function_names:
  - validate_non_zero_u64
  - validate_non_zero_usize
  - validate_positive_finite_f32
  - validate_checked_add_u64
  source_file: /src/opendal/bindings/dotnet/src/validators.rs
- function_names:
  - OpendalEntry::from_entry
  - into_entry_list_ptr
  - free_entry
  - entry_list_free
  source_file: /src/opendal/bindings/dotnet/src/entry.rs
- function_names:
  - Capability::new
  source_file: /src/opendal/bindings/dotnet/src/capability.rs
- function_names:
  - validate_retry_options
  - validate_timeout_options
  - validate_concurrent_limit_options
  source_file: /src/opendal/bindings/dotnet/src/validators/layer.rs
- function_names:
  - validate_read_range_end
  - validate_read_concurrent
  - validate_read_chunk
  - validate_read_gap
  - validate_write_concurrent
  - validate_write_chunk
  - validate_list_limit
  source_file: /src/opendal/bindings/dotnet/src/validators/options.rs
- function_names:
  - build_trail
  - new_file_path
  source_file: /src/opendal/integrations/object_store/tests/behavior/utils.rs
- function_names:
  - tests
  - test_basic_get
  - test_head
  - test_get_range
  - test_get_opts_with_range
  - test_get_opts_with_invalid_range
  - test_get_opts_with_version
  - test_get_ops_with_if_match
  - test_get_ops_with_if_none_match
  - test_get_opts_with_if_modified_since
  - test_get_opts_with_if_unmodified_since
  source_file: /src/opendal/integrations/object_store/tests/behavior/get.rs
- function_names:
  - tests
  - test_basic_put
  - test_put_opts_with_overwrite
  - test_put_opts_with_create
  - test_put_opts_with_update
  source_file: /src/opendal/integrations/object_store/tests/behavior/put.rs
- function_names:
  - tests
  - test_delete
  source_file: /src/opendal/integrations/object_store/tests/behavior/delete.rs
- function_names:
  - main
  source_file: /src/opendal/integrations/object_store/tests/behavior/main.rs
- function_names:
  - OpendalStore::new_amazon_s3
  source_file: /src/opendal/integrations/object_store/src/amazon_s3.rs
- function_names:
  - format_object_store_error
  - format_object_meta
  - T::into_send
  - T::into_send
  source_file: /src/opendal/integrations/object_store/src/utils.rs
- function_names:
  - assert_send::assert_send
  - assert_send::assertion
  - timestamp_to_datetime
  - datetime_to_timestamp
  source_file: /src/opendal/integrations/object_store/src/lib.rs
- function_names:
  - format_object_attributes
  - format_reader_options
  - format_stat_options
  - format_read_range
  - format_without_stat_error
  - OpendalStore::new
  - OpendalStore::info
  - OpendalStore::get_opts_without_stat
  - OpendalStore::get_opts_with_stat
  - OpendalStore::copy_request
  - OpendalStore::fmt
  - OpendalStore::fmt
  - OpendalStore::from
  - OpendalStore::put_opts
  - OpendalStore::put_multipart_opts
  - OpendalStore::get_opts
  - OpendalStore::get_ranges
  - OpendalStore::delete_stream
  - OpendalStore::list
  - OpendalStore::list_with_offset
  - OpendalStore::list_with_delimiter
  - OpendalStore::copy_opts
  - OpendalMultipartUpload::new
  - OpendalMultipartUpload::put_part
  - OpendalMultipartUpload::complete
  - OpendalMultipartUpload::abort
  - OpendalMultipartUpload::fmt
  - tests::create_test_object_store
  - tests::test_basic
  - tests::test_put_multipart
  - tests::test_list
  - tests::test_list_with_delimiter
  - tests::test_list_with_offset
  - tests::StatCounterLayer::new
  - tests::StatCounterLayer::apply_service
  - tests::StatCounterService::info
  - tests::StatCounterService::capability
  - tests::StatCounterService::create_dir
  - tests::StatCounterService::stat
  - tests::StatCounterService::read
  - tests::StatCounterService::write
  - tests::StatCounterService::delete
  - tests::StatCounterService::list
  - tests::StatCounterService::copy
  - tests::StatCounterService::rename
  - tests::StatCounterService::presign
  - tests::test_get_range_no_stat
  source_file: /src/opendal/integrations/object_store/src/store.rs
- function_names:
  - ObjectStoreDeleter::new
  - ObjectStoreDeleter::delete_once
  - ObjectStoreDeleter::delete_batch
  source_file: /src/opendal/integrations/object_store/src/service/deleter.rs
- function_names:
  - ObjectStoreLister::new
  - ObjectStoreLister::next
  source_file: /src/opendal/integrations/object_store/src/service/lister.rs
- function_names:
  - ObjectStoreReader::new
  - ObjectStoreReader::open
  - ObjectStoreReadStream::new
  - ObjectStoreReadStream::read
  source_file: /src/opendal/integrations/object_store/src/service/reader.rs
- function_names:
  - parse_op_stat
  - parse_op_read
  - parse_op_write
  - format_put_multipart_options
  - format_put_result
  - format_metadata
  - tests::test_parse_op_read_suffix_range
  source_file: /src/opendal/integrations/object_store/src/service/core.rs
- function_names:
  - parse_error
  source_file: /src/opendal/integrations/object_store/src/service/error.rs
- function_names:
  - ObjectStoreWriter::new
  - ObjectStoreWriter::write_once
  - ObjectStoreWriter::initiate_part
  - ObjectStoreWriter::write_part
  - ObjectStoreWriter::complete_part
  - ObjectStoreWriter::abort_part
  source_file: /src/opendal/integrations/object_store/src/service/writer.rs
- function_names:
  - ObjectStoreBuilder::fmt
  - ObjectStoreBuilder::new
  - ObjectStoreBuilder::build
  - ObjectStoreService::fmt
  - ObjectStoreService::info
  - ObjectStoreService::capability
  - ObjectStoreService::create_dir
  - ObjectStoreService::stat
  - ObjectStoreService::read
  - ObjectStoreService::write
  - ObjectStoreService::delete
  - ObjectStoreService::list
  - ObjectStoreService::copy
  - ObjectStoreService::rename
  - ObjectStoreService::presign
  - tests::test_ctx
  - tests::test_object_store_backend_builder
  - tests::test_object_store_backend_info
  - tests::test_object_store_backend_basic_operations
  - tests::test_object_store_backend_multipart_upload
  - tests::test_object_store_backend_list
  - tests::test_object_store_backend_delete
  - tests::test_object_store_backend_error_handling
  source_file: /src/opendal/integrations/object_store/src/service/mod.rs
- function_names:
  - main
  source_file: /src/opendal/integrations/object_store/examples/datafusion.rs
- function_names:
  - main
  - main
  source_file: /src/opendal/integrations/object_store/examples/basic.rs
- function_names:
  - test
  - test_create_dir_nested
  - setup_temp
  - test_create_dir_metadata
  - test_remove_dir
  - test_file
  - test_read_dir
  source_file: /src/opendal/integrations/dav-server/tests/test.rs
- function_names:
  - OpendalMetaData::new
  - OpendalMetaData::len
  - OpendalMetaData::modified
  - OpendalMetaData::is_dir
  - OpendalMetaData::etag
  - OpendalMetaData::is_file
  - OpendalMetaData::status_changed
  source_file: /src/opendal/integrations/dav-server/src/metadata.rs
- function_names:
  - convert_error
  source_file: /src/opendal/integrations/dav-server/src/utils.rs
- function_names:
  - OpendalFile::fmt
  - OpendalFile::open
  - OpendalFile::metadata
  - OpendalFile::write_buf
  - OpendalFile::write_bytes
  - OpendalFile::read_bytes
  - OpendalFile::seek
  - OpendalFile::flush
  source_file: /src/opendal/integrations/dav-server/src/file.rs
- function_names:
  - OpendalStream::new
  - OpendalStream::poll_next
  - OpendalDirEntry::new
  - OpendalDirEntry::name
  - OpendalDirEntry::metadata
  source_file: /src/opendal/integrations/dav-server/src/dir.rs
- function_names: []
  source_file: /src/opendal/integrations/dav-server/src/lib.rs
- function_names:
  - OpendalFs::new
  - OpendalFs::fs_path
  - OpendalFs::open
  - OpendalFs::read_dir
  - OpendalFs::metadata
  - OpendalFs::create_dir
  - OpendalFs::remove_dir
  - OpendalFs::remove_file
  - OpendalFs::rename
  - OpendalFs::copy
  source_file: /src/opendal/integrations/dav-server/src/fs.rs
- function_names:
  - OpendalStorage::new
  - OpendalMetadata::len
  - OpendalMetadata::is_dir
  - OpendalMetadata::is_file
  - OpendalMetadata::is_symlink
  - OpendalMetadata::modified
  - OpendalMetadata::gid
  - OpendalMetadata::uid
  - convert_err
  - convert_path
  - copy_read_write_loop
  - OpendalStorage::metadata
  - OpendalStorage::list
  - OpendalStorage::get
  - OpendalStorage::put
  - OpendalStorage::del
  - OpendalStorage::mkd
  - OpendalStorage::rename
  - OpendalStorage::rmd
  - OpendalStorage::cwd
  source_file: /src/opendal/integrations/unftp-sbe/src/lib.rs
- function_names:
  - main
  source_file: /src/opendal/integrations/unftp-sbe/examples/main.rs
- function_names:
  - AsyncWriter::new
  - AsyncWriter::write
  - AsyncWriter::complete
  - tests::test_basic
  - tests::test_abort
  - tests::test_async_writer
  source_file: /src/opendal/integrations/parquet/src/async_writer.rs
- function_names:
  - set_prefetch_footer_size
  - AsyncReader::new
  - AsyncReader::with_prefetch_footer_size
  - AsyncReader::get_bytes
  - AsyncReader::get_byte_ranges
  - AsyncReader::get_metadata
  - tests::test_async_reader_with_prefetch_footer_size
  - tests::gen_fixed_string
  - tests::test_async_reader
  - tests::test_async_reader_with_large_metadata
  source_file: /src/opendal/integrations/parquet/src/async_reader.rs
- function_names: []
  source_file: /src/opendal/integrations/parquet/src/lib.rs
- function_names:
  - main
  source_file: /src/opendal/integrations/parquet/examples/async_writer.rs
- function_names:
  - main
  source_file: /src/opendal/integrations/parquet/examples/async_reader.rs
